[sisyphus] I: mc 4.7.0-pre3

Vladislav Zavjalov slazav на altlinux.org
Пн Окт 12 08:05:38 UTC 2009


On Sun, Oct 04, 2009 at 08:21:38PM +0600, Andrey Rahmatullin wrote:
> On Sun, Oct 04, 2009 at 06:12:07PM +0400, Vladislav Zavjalov wrote:
> > У меня при копировании мышью (и в linux-консоли и в xterm) исчезают
> > все символы перевода строк
> Копировании откуда куда? 
> 
> >, а вставленная строчка не показывается, пока не нажмешь любую кнопку.
> А это всю жизнь так было :(

Покопался на эту тему (иначе жить совсем плохо :))

Похоже, дело в том, что при копировании с шифтом, символы перевода
строки приходят как shift-enter (можно смотреть, например, в
src/tty/key.c/tty_getch()).

Причем иногда (при каких-то настройках терминала?) и shift-enter и
control-enter ловятся как просто enter -- и тогда все работает.
У меня это происходит, например, если из-под mc вызвать mcedit (не через
f3, а просто как команду).

В остальных же случаях этот shift-enter куда-то проваливается, не
вызывая никакого действия... То же происходит не только при копировании
мышью, но и если просто нажимать shift/control-enter.

Определить shift-enter через mc.keymap у меня почему-то не выходит.

Далее, в src/widget.c/input_callback() обнаружена такая совершенно
недвусмысленная штука:

  /* When pasting multiline text, insert literal Enter */
  if ((parm & ~KEY_M_MASK) == '\n') {
     quote = 1;
     v = handle_char (in, '\n');
     quote = 0;
     return v;
  }

Только вот в editor'e-то используется вовсе не input_callback(),
а edit/editwidget.c/edit_callback(). И там аналогичной штуки нет...

Ну и при добавлении туда аналогичной штуки все начинает работать (и
переводы строк появляются, и вставленное сразу показывается)...

Как-то так:
http://git.altlinux.org/people/slazav/packages/mc.git?p=mc.git;a=commit;h=1269cfe65698ff0293a698849e9dcb1a6b12687d

Слава


Подробная информация о списке рассылки Sisyphus