Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
fml2
Posts: 550
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 5 times
Been thanked: 8 times

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by fml2 »

Здравствуйте.

Хочу поделиться одной назойливой проблемкой -- может кто подскажет, как от нее избавиться.

Я настроил Фар (3.0.6389 х86, но это было и в более ранних версиях) так, что при вызове альтернативного редактора вызывается Notepad++ (далее NP++). Командная строка у меня такая: C:\Programs\Notepad++\notepad++.exe !.!.

NP++ у меня настроен так, что эта программа выполняется только в одном экземпляре, т.е. когда открывается новый файл, то он добавляется как еще одна вкладка в NP++.

Моя мускульная память уже такова, что я нажимаю Alt+F4 (это открывает файл в NP++ и делает его активным окном), вижу перед собой окно NP++ и начинаю нажимать кнопки, чтобы дойти до нужного места в файле. Но иногда кнопки не работают!

Я сначала удивлялся, но теперь уже знаю, что это происходит тогда, когда после того, как NP++ стал активным окном, фокус ввода там оказывается не в редактируемом тексте, а в меню "File". Тогда нужно нажать Esc (уже в NP++) -- и можно работать дальше.

Это происходит довольно редко, но все же нервирует. Я не могу понять, что нужно сделать, чтобы эту ситуацию воспроизвести. Я не помню, происходит ли это, если на момент нажатия Alt+F4 NP++ вообще еще не был запущен (NP++, как и Фар, у меня запущен практически всегда).

У кого-нибудь есть предположения, почему такое происходит и "кто виноват"? Я допускаю, что тут дело может быть как в Фаре, так и в NP++, но скорее всего в том, как одно вызавается из другого.

Спасибо всем, кто даст полезные советы.
Yegor
Posts: 1506
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by Yegor »

Все очень просто, в Windows нажатие Alt вызывает меню. Когда вы нажимаете AltF4 открывается NP++, а когда отпускаете Alt вы уже в окне NP и вызывается его меню.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
fml2
Posts: 550
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 5 times
Been thanked: 8 times

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by fml2 »

Ваше объяснение звучит вроде логично, но, по-моему, не все так просто. Я сейчас специально попробовал подольше подержать нажатой кнопку Alt, чтобы надежно воспроизвести ситуацию. При долгом удержании кнопки Alt эффект не воспроизводится. Но при довольно коротком (но не слишком коротком) -- вполне. Тут, похоже, все зависит от десятых долей секунды. Попробую спросить в форуме Notepad++, можно ли с этим как-то справиться.

Спасибо за наводку!
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by buniak_a_h »

А попробуйте перед вызовом NP++ сделать паузу в полсекунды :-)
fml2
Posts: 550
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 5 times
Been thanked: 8 times

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by fml2 »

Пока что я поменял конфигурацию Фар так, чтобы внешний редактор запускался по F4, а не Alt+F4 (внутренним я почти никогда не пользуюсь). Буду переучиваться...
2useven10
Posts: 5498
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by 2useven10 »

Можно win.GetKeyState(VK_MEMU), win.GtKeyState(VK_RMENU) проверять перед запуском.
fml2
Posts: 550
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 5 times
Been thanked: 8 times

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by fml2 »

Я не понял вашу мысль. Что даст такая проверка? Как ее использовать?
2useven10
Posts: 5498
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by 2useven10 »

Например:
Макрос на Alt+F4 в панелях.
Там ждёте пока Alt будет отпущен - (win.GetKeyState(VK_MENU) & 0x8000) == 0, (win.GetKeyState(VK_RMENU) & 0x8000) == 0
Потом Keys "AltF4" ...
PS:
Это просто мысли вслух, работает ли не проверял.
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by buniak_a_h »

Ну или, например, так:

Code: Select all

lua:while win.GetKeyState(18) or win.GetKeyState(165) do win.Sleep(100) end; win.ShellExecute(nil, nil, 'notepad++.exe', '!.!', APanel.Path)

P/S.Проверил, у меня работает. НО!
  1. Notepad++ находит по path
  2. У меня и без ожидания работало, так что проверить, исправилась ли именно Ваша проблема, проверить не смог.
Last edited by buniak_a_h on Tue 25 Mar, 2025 13:31, edited 1 time in total.
2useven10
Posts: 5498
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by 2useven10 »

Code: Select all

local VK_MENU, VK_RMENU = 0x12, 0xA5

Macro {
  area="Shell"; key="AltF4"; description="Pause Action till ALT released";
  action = function()
    while win.GetKeyState(VK_MENU) or win.GetKeyState(VK_RMENU) do
      win.Sleep(10)
    end
    Keys 'AltF4'
  end;
}
Last edited by 2useven10 on Tue 25 Mar, 2025 19:46, edited 3 times in total.
User avatar
Alecsis
Posts: 46
Joined: Wed 29 May, 2013 09:12
Location: Нерезиновск
Has thanked: 4 times
Been thanked: 1 time

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by Alecsis »

Как вариант, попробуйте обновить NP++ до актуальной версии (на данный момент 8.7.8 )
ЕМНИП, нечто похожее на Вашу ситуацию как-то засветилось то ли на оф/форуме, то ли в changelog'е NP++. И без всякой привязки к FAR'у.
Last edited by Alecsis on Wed 26 Mar, 2025 21:11, edited 1 time in total.
fml2
Posts: 550
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 5 times
Been thanked: 8 times

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by fml2 »

@buniak_a_h, @2useven10: Спасибо, с вашими макро проблема не воспроизводится. Правда, немного непривычно, что NP++ окрывается не сразу, а только при отпускании кнопки Alt. Я посмотрю, что мне приятнее (точнее, менее неприятно): такая задержка или немного переучиться и открывать редактор по F4 (без Alt).

@Alecsis: У меня как раз и установлен NP++ v. 8.7.8. И проблема все равно была.
2useven10
Posts: 5498
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by 2useven10 »

Вот что-то похожее 3 года назад -- https://github.com/notepad-plus-plus/no ... sues/10922 (Closed)
Может быть всё-таки есть смысл задать вопрос на трекере notepad++.
User avatar
buniak_a_h
Posts: 4565
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 242 times
Been thanked: 674 times
Contact:

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by buniak_a_h »

2useven10, это немного странное описание проблемы (или я неправильно для себя перевёл).
Насколько я понял, там Alt передаётся в NPP при переключении в неё по Alt+Tab из другого приложения. НО! У меня переключения не происходит, пока я не отпущу Alt. И это естественно: если активно несколько приложений, то, пока не отпущен Alt, можно выбрать целевое приложение. Т.е., описанная проблема не может быть воспроизведена в принципе! Или я что-то не понял?
Last edited by buniak_a_h on Thu 27 Mar, 2025 09:28, edited 1 time in total.
2useven10
Posts: 5498
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 21 times
Been thanked: 353 times

Notepad++ после вызова из Фар иногда оказывается в меню, а не в тексте

Post by 2useven10 »

Не знаю, не следил.
Может у окошек поведение менялось.
Здесь же проблема проявляется похожим образом, фактически при активации уже работающего приложения шорткатом.
Post Reply

Return to “Нужна помощь”