diff --git a/HACKING.md b/HACKING.md index 9a1953f6f..c3d89059a 100644 --- a/HACKING.md +++ b/HACKING.md @@ -80,3 +80,10 @@ far2l uses this to resolve symlink destination when user selects plugin's item t * `ECTL_GETTRUECOLOR` - retrieves coloring of editor like ECTL_GETCOLOR does but gets 24 RGB color using EditorTrueColor structure. Note that all true-color capable messages extend but don't replace 'base' 16 palette colors. This is done intentionally as far2l may run in terminal that doesn't support true color palette, and in such case 24bit colors will be ignored and base palette attributes will be used instead. + +### Added new flags: +* Flags to **manage markers** in **panel** from plugins API +(a la global parameters `Opt.ShowFilenameMarks` and `Opt.FilenameMarksAlign`): + - `OPIF_HL_MARKERS_NOSHOW` and `OPIF_HL_MARKERS_NOALIGN` (in `enum OPENPLUGININFO_FLAGS`); + - `PFLAGS_HL_MARKERS_NOSHOW` and `PFLAGS_HL_MARKERS_NOALIGN` (in `enum PANELINFOFLAGS`). + diff --git a/NetRocks/src/PluginImpl.cpp b/NetRocks/src/PluginImpl.cpp index 935715462..477ad1057 100644 --- a/NetRocks/src/PluginImpl.cpp +++ b/NetRocks/src/PluginImpl.cpp @@ -414,9 +414,8 @@ void PluginImpl::GetOpenPluginInfo(struct OpenPluginInfo *Info) // fprintf(stderr, "NetRocks::GetOpenPluginInfo: '%ls' \n", &_cur_dir[0]); // snprintf(_panel_title, ARRAYSIZE(_panel_title), // " Inside: %ls@%s ", _dir.c_str(), _name.c_str()); - Info->Flags = OPIF_SHOWPRESERVECASE; + Info->Flags = OPIF_SHOWPRESERVECASE | OPIF_USEHIGHLIGHTING; if (_remote) { - Info->Flags |= OPIF_USEHIGHLIGHTING; IHost::Identity identity; _remote->GetIdentity(identity); const auto *pi = ProtocolInfoLookup(identity.protocol.c_str()); @@ -425,6 +424,7 @@ void PluginImpl::GetOpenPluginInfo(struct OpenPluginInfo *Info) } } else { + Info->Flags|= OPIF_HL_MARKERS_NOSHOW; // for site connections list always don't show markers // for site connections list don't use current far2l panel modes // - only name column(s) without dependence on panel Align file extensions static struct PanelMode PanelModesArray[10] = { diff --git a/WinPort/src/Backend/WX/wxWinTranslations.cpp b/WinPort/src/Backend/WX/wxWinTranslations.cpp index 46f1408e8..52b222933 100644 --- a/WinPort/src/Backend/WX/wxWinTranslations.cpp +++ b/WinPort/src/Backend/WX/wxWinTranslations.cpp @@ -449,6 +449,9 @@ bool KeyTracker::RightControl() const ////////////////////// static DWORD s_cached_led_state = 0; +#ifdef __WXOSX__ +static bool s_toggle_numlock = false; +#endif #if defined (__WXGTK__) && defined (__HASX11__) static int X11KeyCodeLookupUncached(wxUint32 keyflags) @@ -594,6 +597,11 @@ wx2INPUT_RECORD::wx2INPUT_RECORD(BOOL KeyDown, const wxKeyEvent& event, const Ke Event.KeyEvent.dwControlKeyState|= ENHANCED_KEY; } +#ifdef __WXOSX__ + if (Event.KeyEvent.wVirtualKeyCode == VK_CLEAR && KeyDown) + s_toggle_numlock = !s_toggle_numlock; +#endif + if (KeyDown || WINPORT(GetTickCount)() - key_tracker.LastKeydownTicks() > 500) { s_cached_led_state = WxKeyboardLedsState(); } @@ -649,8 +657,13 @@ DWORD WxKeyboardLedsState() // to use wxGetKeyState with unsupported key causes assert callback // to be invoked several times on each key event thats not good. // Avoid asserts all the time by 'caching' unsupported state. +#ifdef __WXOSX__ + // NumLock emulation with Clear button + if (s_toggle_numlock) { +#else s_wx_assert_cache_bit = 1; if ((s_wx_assert_cached_bits & 1) == 0 && wxGetKeyState(WXK_NUMLOCK)) { +#endif out|= NUMLOCK_ON; } diff --git a/far2l/bootstrap/scripts/FarRus.hlf.m4 b/far2l/bootstrap/scripts/FarRus.hlf.m4 index cb2a1a96f..5d2370d53 100644 --- a/far2l/bootstrap/scripts/FarRus.hlf.m4 +++ b/far2l/bootstrap/scripts/FarRus.hlf.m4 @@ -157,7 +157,7 @@ $ # Особенности FAR2L - начало работы# Эмуляторы терминалов также часто не передают запущенным в них консольным приложениям часть комбинаций клавиш, или не различают нажатие различных комбинаций модификаторов (#Ctrl#, #Alt# и т.п.). Также можно использовать лайфхаки FAR2L: - ~Липкие управляющие кнопки~@MiscCmd@ через #Ctrl-Space# или #Alt-Space#; - - опцию Экслюзивная обработка нажатий в ~параметрах ввода~@InputSettings@ (только в GUI режиме). + - опцию Эксклюзивная обработка нажатий в ~параметрах ввода~@InputSettings@ (только в GUI режиме). #Решение для macOS#, если far2l регулярно запрашивает доступ к папкам @@ -188,16 +188,16 @@ $ # Особенности FAR2L - начало работы# #Специальные возможности конфигурирования FAR2L, запущенного в эмуляторах терминалов# - Меню(#F9#)->Параметры->Настройки интерфейса->#Исп. OSC52 для записи в буфер обмена# (виден в диалоге только если FAR2L запущен в режиме TTY/TTY|X и все остальные варианты поддержки клипборда недоступны). -Вы можете запустить #far2l --tty --nodetect# для принудительного не использования других вариантов взаимодействия с буфером обмена. +Вы можете запустить #far2l --tty --nodetect# для принудительного неиспользования других вариантов взаимодействия с буфером обмена. - Меню(#F9#)->Параметры->Настройки интерфейса->#Исп. свою палитру базовых цветов# (виден в диалоге только если FAR2L запущен в режиме TTY/TTY|X) позволяет far2l настраивать цвета палитры терминала. -Если Ваш терминал не поддерживает последовательности OSC4 выключение данной опции позволяет избежать появления в терминале артефактов после выхода из far2l. +Если Ваш терминал не поддерживает последовательности OSC4, выключение данной опции позволяет избежать появления в терминале артефактов после выхода из far2l. #Полноценная работа с буфером обмена в чистой терминальной версии FAR2L TTY# - Для взаимодействия с буфером обмена необходимо не забыть включить #OSC 52# как в #настройках FAR2L# + Для взаимодействия с буфером обмена необходимо как не забыть включить #OSC 52# в #настройках FAR2L# (см. подробности выше), -так и в #настройках терминалов# необходимо #разрешить OSC 52# +так и #разрешить OSC 52# в #настройках терминалов# (по умолчанию OSC 52 отключен в части терминалов из соображений безопасности; OSC 52 в куче терминалов реализован только для режима copy, а paste из терминала идёт через т.н. bracketed paste mode). @@ -234,7 +234,7 @@ $ # Особенности FAR2L - начало работы# #Расположение персональных настроек FAR2L и истории# - - по умолчанию FAR2L работает с настройками хранящимися в #~~/.config/far2l/# или в #$XDG_CONFIG_HOME/far2l/# + - по умолчанию FAR2L работает с настройками, хранящимися в #~~/.config/far2l/# или в #$XDG_CONFIG_HOME/far2l/# - при запуске ключ #-u# (или переменная окружения #$FARSETTINGS#) позволяет указать путь к произвольному расположению настроек: #-u # - в #path/.config/# (если path или $FARSETTINGS является полным путем) #-u # - в #~~/.config/far2l/custom/identity/# или в #$XDG_CONFIG_HOME/far2l/custom/identity/# @@ -288,18 +288,18 @@ $ # FAR2L: параметры командной строки# Не использовать терминальный режим при невозможности использовать ~GUI режим~@UIBackends@. #--nodetect# - По умолчанию far2l пытается на запуске определить не работает ли он в терминале другого + По умолчанию far2l пытается на запуске определить, не работает ли он в терминале другого far2l. В этом случае far2l автоматически использует режим TTY с расширениями терминала far2l. В -случае отсутствия таких расширений терминала - far2l проверяет наличия доступа к X11 сессии и -использует ее для улучшения возможностей интерфейса, если был собран с опцией TTYX. +случае отсутствия таких расширений терминала - far2l проверяет наличие доступа к X11 сессии и +использует её для улучшения возможностей интерфейса, если был собран с опцией TTYX. Данный ключ выключает всю перечисленную функциональность, предотвращая автоопределение наличия -расширений и разрешает к использованию лишь базовые возможности обычного терминала в TTY режиме. +расширений, и разрешает к использованию лишь базовые возможности обычного терминала в TTY режиме. #--mortal# Этот аргумент применим только для far2l, который работает в режиме TTY. По умолчанию при закрытии терминала far2l продолжает работать 'в фоне' и при последующем запуске другого far2l в режиме TTY будет предложено активировать ушедший в фон far2l вместо запуска новой копии приложения. Этот ключ -командной строки полностью отключает эту функциональность, так что закрытие терминала будет приводить +командной строки полностью отключает данную функциональность, так что закрытие терминала будет приводить к безусловному завершению работы far2l, работающего в нем. #--primary-selection# @@ -371,7 +371,7 @@ far2l, который работает в режиме WX. #-x# [Не поддерживается в far2l] Отключить обработку исключительных ситуаций. Данная опция предназначена для -разработчиков внешних модулей и в нормальной ситуации указывать эту опцию не рекомендуется. +разработчиков внешних модулей, и в нормальной ситуации указывать эту опцию не рекомендуется. #-set:=# Изменение значения конфигурационного параметра. См. ~far:config~@FarConfig@. @@ -413,7 +413,7 @@ $ #Команды управления меню# Зафиксировать фильтр #Ctrl+Alt+L# - Горизотальная прокрутка длинного элемента #Alt-Left#,#Alt-Right# + Горизонтальная прокрутка длинного элемента #Alt-Left#,#Alt-Right# (не работают с клавишами, расположенными #Alt-Home#,#Alt-End# на цифровой клавиатуре) @@ -511,7 +511,7 @@ $ #Команды управления панелями# в Буфер Обмена (без учёта состояния командной строки) - См. так же список ~макроклавиш~@KeyMacroShellList@, доступных в панелях. + См. также список ~макроклавиш~@KeyMacroShellList@, доступных в панелях. Примечания: @@ -554,7 +554,7 @@ $ #Режимы сортировки# Использовать сортировку по группам #Shift-F11# Показывать помеченные файлы первыми #Shift-F12# Использовать числовую сортировку. - Использовать сортировку c учётом регистра. + Использовать сортировку с учётом регистра. #Замечания по числовой сортировке# @@ -601,7 +601,7 @@ $ #Быстрый поиск в панелях# и пытается найти первое совпадение нового имени. Подробнее о назначении клавиш для транслитерации см. TechInfo##10. - См. так же список ~макроклавиш~@KeyMacroSearchList@, доступных в быстром поиске файла. + См. также список ~макроклавиш~@KeyMacroSearchList@, доступных в быстром поиске файла. @CmdLineCmd @@ -1210,8 +1210,8 @@ $ #Панель файлов# Вы можете сами настроить ~режимы просмотра панели файлов~@PanelViewModes@. - Физический размер показывает сколько места файл реально используется для -храния файла. Для обычных файлов этот размер равен логическому размеру файла + Физический размер показывает, сколько места реально используется для +хранения файла. Для обычных файлов этот размер равен логическому размеру файла, округленному вверх согласно размеру кластера файловой системы. Но для сжатых или разреженных файлов этот размер может быть меньше логического размера. @@ -1234,7 +1234,7 @@ $ #Дерево папок# FAR запоминает информацию о структуре папок в файле #tree2.far#, расположенном в корневой папке каждого диска. Если запись на диск невозможна, -то эта информация сохранятся в скрытой папке Tree.Cache, находящейся в той же +то эта информация сохраняется в скрытой папке Tree.Cache, находящейся в той же папке, что и far.exe. По умолчанию файл tree2.far отсутствует, для его создания нужно хотя бы один раз воспользоваться командой #Поиск папки# или режимом панели #Дерево папок#. Если такой файл есть, то при изменении @@ -1252,7 +1252,7 @@ $ #Дерево папок# #Gray +# и #Gray -# используются для быстрого перемещения вверх или вниз по папкам одного уровня. - См. так же список ~макроклавиш~@KeyMacroTreeList@, доступных в панели дерева папок. + См. также список ~макроклавиш~@KeyMacroTreeList@, доступных в панели дерева папок. @InfoPanel $ #Панель информации# @@ -1293,7 +1293,7 @@ $ #Панель информации# !! Наследие Windows закончилось !! - См. так же список ~макроклавиш~@KeyMacroInfoList@, доступных в панели информации. + См. также список ~макроклавиш~@KeyMacroInfoList@, доступных в панели информации. @QViewPanel $ #Панель быстрого просмотра# @@ -1301,7 +1301,7 @@ $ #Панель быстрого просмотра# элементе ~панели файлов~@FilePanel@ или ~дерева папок~@TreePanel@. Если выбранный элемент - файл, то отображается его содержимое. Для файла, -отображаемого в панели доступны многие команды встроенной программы +отображаемого в панели, доступны многие команды встроенной программы ~просмотра~@Viewer@. Для известных ОС типов файлов также выводится название типа. @@ -1321,7 +1321,7 @@ $ #Панель быстрого просмотра# 2. ^Если внутри папки есть несколько жёстких ссылок на один и тот же файл. - См. так же список ~макроклавиш~@KeyMacroQViewList@, доступных в панели быстрого просмотра. + См. также список ~макроклавиш~@KeyMacroQViewList@, доступных в панели быстрого просмотра. @DragAndDrop $ #Копирование: перетаскивание файлов# @@ -1357,7 +1357,7 @@ $ #Меню # ~Меню команд~@CmdMenu@ ~Меню параметров~@OptMenu@ - См. так же список ~макроклавиш~@KeyMacroMainMenuList@, доступных в главном меню. + См. также список ~макроклавиш~@KeyMacroMainMenuList@, доступных в главном меню. @LeftRightMenu $ #Меню левой и правой панелей# @@ -1572,29 +1572,29 @@ $ #Меню параметров# @Terminal $ #Терминал# #FAR2L# содержит встроенный эмулятор терминала, позволяющий исполнять приложения командной строки и управлять ими, наблюдая их вывод. -Для соблюдения привычного пользовательского опыта far2l запускает приложения внутри поддериваемой интерактивной оболочки командной строки. +Для соблюдения привычного пользовательского опыта far2l запускает приложения внутри поддерживаемой интерактивной оболочки командной строки. #Автодополнение# FAR2L имеет два независимых механизма автоматического дополнения командной строки. Первый является механизмом автодополнения, -реализованном в оригинальном FAR и работает предлагая меню вариантов пока вы печатаете команды. Второй работает на основе механизма автодополнения +реализованным в оригинальном FAR, и работает, предлагая меню вариантов, пока вы печатаете команды. Второй работает на основе механизма автодополнения командной оболочки bash и может быть активирован нажатием #SHIFT+двойной-TAB# (быстро дважды нажать TAB при нажатом SHIFT). #Поведение команды 'exit':# ввод команды 'exit' приведет к закрытию оболочки командной строки, но не закроет само приложение far2l, а последующий -запуск другой команды запустит новую оболочку. Это позволяет 'сбросить' окружение оболочки от измененных переменных оболочки и других ее настроек. +запуск другой команды запустит новую оболочку. Это позволяет 'сбросить' окружение оболочки от измененных переменных оболочки и других её настроек. Если же вы хотите закрыть far2l с командной строки: напечатайте ~псевдокоманду~@SpecCmd@ 'exit far' - она будет распознана far2l как команда закрытия. - #Кнопкосочетания и скроллинг во время исполнения команды:# вы можете использовать кнопкосочетание #Ctrl+Shift+F3# чтобы открыть историю -вывода терминала во встроенном просмотрщике или #Ctrl+Shift+F4# - чтобы открыть ее во встроенном редакторе. Это позволяет эффективно исследовать -вывод команд, используя позвожности встроенного просмотрщика и редактора, такие как скроллинг, поиск подстрок и т.п. Вы так же можете открыть -просмотрщик проскроллив мышкой вверх и закрыть его проскроллив затем в самый конец истории. -Кнопкосочетания #Ctrl+C, Ctrl+Z# вызывают стандартные сигналы, кстати в случае полного зависания команды с игнорированием стандартных сигналов -вы можете убить все запущенное в оболочке нажав #Ctrl+Alt+C#. Учтите что не рекомендуется злоупотреблять данным кнопкосочетанием так как оно может -вызвать повреждение или не сохранение данных убитого приложения. Вы так же можете использовать сочетание #Ctrl+Alt+Z# чтобы переключить исполнение команды, освободив терминал. + #Кнопкосочетания и скроллинг во время исполнения команды:# вы можете использовать кнопкосочетание #Ctrl+Shift+F3#, чтобы открыть историю +вывода терминала во встроенном просмотрщике, или #Ctrl+Shift+F4#, чтобы открыть её во встроенном редакторе. Это позволяет эффективно исследовать +вывод команд, используя возможности встроенного просмотрщика и редактора, такие как скроллинг, поиск подстрок и т.п. Вы также можете открыть +просмотрщик, проскроллив мышкой вверх, и закрыть его, проскроллив затем в самый конец истории. +Кнопкосочетания #Ctrl+C, Ctrl+Z# вызывают стандартные сигналы. Кстати, в случае полного зависания команды с игнорированием стандартных сигналов, +вы можете убить все запущенное в оболочке, нажав #Ctrl+Alt+C#. Учтите, что не рекомендуется злоупотреблять данным кнопкосочетанием, так как оно может +вызвать повреждение или несохранение данных убитого приложения. Вы также можете использовать сочетание #Ctrl+Alt+Z#, чтобы переключить исполнение команды, освободив терминал. Вернуться к этой команде можно будет через меню ~Переключение между экранами~@ScrSwitch@ (#F12# в панелях). - #Кнопкосочетания и скроллинг НЕ во время исполнения команды:# хотя вышеописанные #Ctrl+Shift+F3/F4# так же функционируют в таком режиме вы можете -вместо них использовать просто #F3/F4#. Так же вы можете использовать кнопку #F8# чтобы очистить буфер истории и экран. Переключение между терминалом и + #Кнопкосочетания и скроллинг НЕ во время исполнения команды:# хотя вышеописанные #Ctrl+Shift+F3/F4# также функционируют, в таком режиме вы можете +вместо них использовать просто #F3/F4#. Также вы можете использовать кнопку #F8#, чтобы очистить буфер истории и экран. Переключение между терминалом и панелями возможно нажатием сочетания #Ctrl+O# или щелчком по левому верхнему углу окна. - #Расширения терминала FAR2L# хотя FAR2L сам по себе это приложение тeкстового режима, оно может работать в режиме вывода через подсистему -~GUI или TTY (терминал)~@UIBackends@. Хотя TTY режим может функционировать в обычном терминале, как xterm или в терминале клиента SSH сессии, + #Расширения терминала FAR2L#. Несмотря на то, что FAR2L сам по себе это приложение тeкстового режима, он способен работать в режиме вывода через подсистему +~GUI или TTY (терминал)~@UIBackends@. Хотя TTY режим может функционировать в обычном терминале, как xterm, или в терминале клиента SSH сессии, но он так же может работать внутри терминала другого far2l, получая от этого дополнительные возможности, недоступные под 'обычными' терминалами, -такие как распознавание всех кнопок клавиатуры и событий нажатия/отпускания кнопок. Так же 'хостовый' far2l может предоставлять доступ к буферу -обмена хоста и механизм уведомлений рабочего стола. Вы можете использовать эту функциональность запуская TTY far2l на SSH сервере внутри SSH сессии +такие как распознавание всех кнопок клавиатуры и событий нажатия/отпускания кнопок. Также 'хостовый' far2l может предоставлять доступ к буферу +обмена хоста и механизм уведомлений рабочего стола. Вы можете использовать эту функциональность, запуская TTY far2l на SSH сервере внутри SSH сессии клиента, запущенного внутри терминала far2l, работающего в GUI режиме на хосте клиента. Или, что намного проще, используя плагин с возможностью запуска команд на удаленном SSH сервере. Примером такого плагина является NetRocks, а точнее поддерживаемые им SFTP/SCP протоколы. @@ -1603,7 +1603,7 @@ $ #Терминал# Предыдущая команда #Up, Ctrl-E# Следующая команда #Down, Ctrl-X# Очистить командную строку #Ctrl-Y# - (см. также ~Клавиатурные кобинации Командной строки~@CmdLineCmd@) + (см. также ~Клавиатурные комбинации Командной строки~@CmdLineCmd@) Автодополнение (на основе FAR2L) #Tab# Автодополнение (на основе bash) #Shift-Tab-Tab# @@ -1638,7 +1638,7 @@ $ #Терминал# @UIBackends $ #Режимы интерфейса# В зависимости от настроек билда и доступных возможностей платформы #FAR2L# может выводить -свой интерфейс используя следующие режимы: +свой интерфейс, используя следующие режимы: - #Режим GUI:# выводит интерфейс в свое собственное графическое окно, обеспечивая наиболее полную поддержку клавиатурных комбинаций. @@ -1649,17 +1649,17 @@ $ #Режимы интерфейса# комбинации могут не поддерживаться. - #Режим TTY|Xi:# выводит интерфейс в обычный терминал, но использует X11 с расширениями Xi для доступа к буферу обмена и для получения состояний всех клавиш клавиатуры. Это обеспечивает самое удобное использование в обычном терминале. - - #Режим TTY|F:# выводит интерфейс в терминал созданный другим приложением far2l instance. Это обеспечивает уровень -удобства использования аналогичный режиму GUI (если терминал предоставлен GUI версией far2l). + - #Режим TTY|F:# выводит интерфейс в терминал, созданный другим экземпляром far2l. Это обеспечивает уровень +удобства использования, аналогичный режиму GUI (если терминал предоставлен GUI версией far2l). Если вы хотите запустить far2l удаленно с максимальным удобством, то рекомендуется либо запустить его из сессии подключения NetRocks, что позволяет использовать TTY|F режим. Если же это невозможно - рекомендуется запускать far2l -в SSH сессии с включенным доверенным форвардингом протокола X11 и сжатием (ssh -Y -C ...) что позволяет использовать -режим TTY|Xi или хотябы TTY|X. При этом -#крайне не рекомендуется использовать доверенный форвардинг X11 при подключении к не доверенному серверу#, +в SSH сессии с включенным доверенным форвардингом протокола X11 и сжатием (ssh -Y -C ...), что позволяет использовать +режим TTY|Xi или хотя бы TTY|X. При этом +#крайне не рекомендуется использовать доверенный форвардинг X11 при подключении к недоверенному серверу#, поскольку это открывает коду, исполняемому на удаленном сервере, неконтролируемую возможность прослушивания ваших клавиатурных нажатий, копирования содержимого буфера обмена и скриншотов окон. Таким образом, TTY|F режим является -единственным безопасным методом удаленного запуска far2l на не доверенном сервере с поддержкой всех привычных +единственным безопасным методом удаленного запуска far2l на недоверенном сервере с поддержкой всех привычных клавиатурных сочетаний и прочих удобств. - Terminal emulators specific Backends (uses these terminal extensions to get state of all keyboard keys; @@ -1797,7 +1797,7 @@ $ #Поиск файла # - в отмеченных папках. - Параметры поиска сохраняется в конфигурации. + Параметры поиска сохраняются в конфигурации. Для поиска файлов, попадающих под определённые условия, используйте переключатель #Использовать фильтр#. Настройка условий ~фильтра~@FiltersMenu@ осуществляется @@ -1900,7 +1900,7 @@ $ #Дополнительные параметры поиска# одну колонку. Имя файла присутствует всегда - добавляется последней колонкой автоматически. - При указании колонок, отвечающих за показ ссылок и потоков (G, LN, и F) время + При указании колонок, отвечающих за показ ссылок и потоков (G, LN, и F), время поиска увеличивается. Чтобы в результатах поиска отображать только имена файловых объектов без @@ -1961,7 +1961,7 @@ $ #Поиск папки# соответствии с введённой в строке файловой маской. #Ctrl-Shift-Enter# позволяет перемещаться по элементам в обратном направлении. - См. так же список ~макроклавиш~@KeyMacroFindFolderList@, доступных в поиске папок. + См. также список ~макроклавиш~@KeyMacroFindFolderList@, доступных в поиске папок. @Filter $ #Фильтр# @@ -2449,9 +2449,9 @@ $ #Метасимволы# Примечания: - 1. ^FAR2L при обработке метасимволов подставляется только то, что они означают + 1. ^FAR2L при обработке метасимволов подставляет только то, что они означают (имя файла, расширение и т.д.). Никаких дополнительных символов (например, -кавычек или фамилий разработчиков FAR2L) не подставляется и вы должны это сделать +кавычек или фамилий разработчиков FAR2L) не подставляется, и вы должны это сделать сами, если потребуется. Например, если используемая в ассоциациях программа требует, чтобы имя файла было в кавычках, то вы должны писать #program "!.!"#, а не #program !.!#. @@ -2634,7 +2634,7 @@ $ #Настройка ввода# Использовать мышь. #Правила транслитерации:# - Выберите здесь правила транслитерации, которые сооветствуют вашей обычной раскладке клавиатуры. + Выберите здесь правила транслитерации, которые соответствуют вашей обычной раскладке клавиатуры. Доступные правила загружаются из файла #xlats.ini#, который определяет соответствие между латинскими и не латинскими кнопка клавиатуры, что затем используется в #быстром поиске файла по Alt+ФАЙЛ#, #горячих клавишах в диалоговой навигации# и некоторой внутренней функциональности. @@ -2662,7 +2662,7 @@ $ #Настройка интерфейса# #Сохранение экрана# Запуск программы сохранения экрана после заданного в минутах интервала -бездействия. Хранитель экрана так же включается, если подвести указатель +бездействия. Хранитель экрана также включается, если подвести указатель мыши в правый верхний угол окна FAR2L (при выбранной опции). #Показывать общий индикатор копирования# @@ -2737,7 +2737,7 @@ $ #Настройка диалогов# Эта опция позволяет отключать указанную функциональность. - См. так же список ~макроклавиш~@KeyMacroDialogList@, доступных в диалогах. + См. также список ~макроклавиш~@KeyMacroDialogList@, доступных в диалогах. @VMenuSettings $ #Настройка меню# @@ -2952,7 +2952,7 @@ $ #Программа просмотра: клавиши управления# #Ctrl-U# Сбросить выделение, полученное в результате поиска. - См. так же список ~макроклавиш~@KeyMacroViewerList@, доступных в программе просмотра. + См. также список ~макроклавиш~@KeyMacroViewerList@, доступных в программе просмотра. Примечания: @@ -2990,11 +2990,11 @@ $ #Программа просмотра: клавиши управления# при отпускании всех кнопок на продолжительное время или нажатии какой-либо иной кнопки. @GrepFilter - Здесь пользователь может временно отфильтровать содержимое просматриваемого файла используя UNIX-овую утилиту #grep#. - Вы можете указать образец который должен совпать (или несколько образцов разделенных #\|# - как в обычном grep) -и/или образец который будет использован для исключения строк из вывода. - Возможно так же указать #количество строк до/после совпавшей строки#, которые так же будут включены в вывод. - Так же вы можете использовать #регистрозависимое# сравнение и/или учитывать только совпадения, являющиеся + Здесь пользователь может временно отфильтровать содержимое просматриваемого файла, используя UNIX-овую утилиту #grep#. + Вы можете указать образец, который должен совпасть (или несколько образцов разделенных #\|# - как в обычном grep), +и/или образец, который будет использован для исключения строк из вывода. + Возможно также указать #количество строк до/после совпавшей строки#, которые так же будут включены в вывод. + Также вы можете использовать #регистрозависимое# сравнение и/или учитывать только совпадения, являющиеся #полными словами#, то есть с символами-разделителями до и после. @ViewerGotoPos @@ -3004,7 +3004,7 @@ $ #Программа просмотра: изменить текущую поз Вы можете ввести значение в виде десятичного смещения, процентов, или шестнадцатеричного значения. - Так же можете указать относительное значение - просто укажите знак + или - + Также можете указать относительное значение - просто укажите знак + или - перед числом. Шестнадцатеричные значения вводятся в одной из следующих форм: @@ -3164,7 +3164,7 @@ $ #Редактор# #Ctrl-B# ^Спрятать/Показать линейку функциональных клавиш #Ctrl-Shift-B# Спрятать/Показать статусную строку - См. так же список ~макроклавиш~@KeyMacroEditList@, доступных в редакторе. + См. также список ~макроклавиш~@KeyMacroEditList@, доступных в редакторе. Примечания: @@ -3188,7 +3188,7 @@ $ #Редактор: поиск и замена# #Регулярные выражения# - ^использовать регулярные выражения для ~поиска~@RegExp@ и ~замены~@RegExpRepl@. - В режиме поиска так же доступна опция: + В режиме поиска также доступна опция: #Выделять найденное# - ^найденные последовательности будут выделены. @@ -3272,7 +3272,7 @@ $ #Редактор: повторное открытие файла# тому, в какой из копий редактора последний раз сохраняли этот файл. - #Перегрузить# - Текущие изменения не сохраняются и в редактор + #Перегрузить# - Текущие изменения не сохраняются, и в редактор загружается прежнее содержимое файла (с момента последнего сохранения). @@ -3325,8 +3325,8 @@ $ #Меню выбора кодовой страницы# Клавиша #Ins# перемещает кодовую страницу из раздела #Прочие# в раздел #Избранные#. Клавиша #Del# производит обратное действие. Клавиша #F4# позволяет изменять отображаемые -имена для #любимых# и #прочих# кодовых страниц (кодовые страницы для которых было -изменено имя помечаются символом #*# перед именем). +имена для #любимых# и #прочих# кодовых страниц (кодовые страницы, для которых было +изменено имя, помечаются символом #*# перед именем). Диалог ~Изменение имени кодовой страницы~@EditCodePageNameDlg@ @@ -3346,7 +3346,7 @@ $ #Изменение имени кодовой страницы# Примечания: - ^Если ввести пустое имя кодовой страницы, то после подтверждения ввода -отображаемое имя кодовой страницы примет значение по умолчанию, то есть имя полученное +отображаемое имя кодовой страницы примет значение по умолчанию, то есть имя, полученное от системы. - ^Так же отображаемое имя кодовой страницы принимает значение по умолчанию после нажатия кнопки #Сбросить#. @@ -3401,8 +3401,8 @@ $ #Меню перехода# Если первая часть будет представлять собой строку с одним лишь символом '-', то в меню будет добавлен разделитель с опциональным заголовком от последней части. Заметьте что файл favorites может содержать переменные среды окружения, обозначенные -символом $, например $HOME. Кроме того поддерживается так же стандартная подстановка -команд окружения, например $(/path/to/some/script.sh) запустит скрипт script.sh и его +символом $, например $HOME. Кроме того, поддерживается также стандартная подстановка +команд окружения, например $(/path/to/some/script.sh) запустит скрипт script.sh, и его вывод будет вставлен в содержимое favorites файла при построении меню. Это позволяет реализовать дополнительную логику динамического построения списка переходов. @@ -3546,7 +3546,7 @@ $ #Настройка программы просмотра# #Постоянное выделение# Не удалять пометку блока при перемещении курсора. - #Показывать стрелки# Если текст сдвигается влево или справа + #Показывать стрелки# Если текст сдвигается влево, или справа #сдвига# остаётся текст, то окно просмотра будет показывать сбоку стрелки, показывающие это. @@ -3694,7 +3694,7 @@ $ #Настройка редактора# Изменённые настройки не влияют на ранее открытые окна редактора. - Диалог настройки так же можно вызвать из ~редактора~@Editor@, нажав + Диалог настройки также можно вызвать из ~редактора~@Editor@, нажав #Alt-Shift-F9#. Изменения вступят в силу немедленно, но действовать будут только на текущий сеанс работы. @@ -3782,7 +3782,7 @@ $ #Закладки# папкам. Для создания закладки на текущую папку нужно нажать #Ctrl-Shift-0..9#. После этого, чтобы перейти в папку, записанную в ссылке, достаточно нажать #ПравыйCtrl-0..9#. Если #ПравыйCtrl-0..9# нажат в строке редактирования, то -путь ссылки будет вставлен в эту строку. Закладки так же доступны в меню +путь ссылки будет вставлен в эту строку. Закладки также доступны в меню перехода. Пункт #Закладки# в ~Меню команд~@CmdMenu@ позволяет просматривать, @@ -3805,7 +3805,7 @@ $ #Меню фильтров# Меню состоит из двух частей. В верхней части расположены #Фильтры# #пользователя#, в нижней части меню находятся маски всех файлов, содержащихся в данный момент в текущей панели файлов (а также маски файлов выбранные в -текущей области меню даже если файлов подходящим к этим маскам нет в текущей +текущей области меню, даже если файлов подходящих к этим маскам нет в текущей панели). Для #Фильтра пользователя# доступны следующие клавиши: @@ -4125,7 +4125,7 @@ f*.ex?, маска *co* выберет и color.ini, и edit.com, маска [c- @SelectFiles $ #Пометка файлов# - Для обработки файлов и папок ~панели файлов~@FilePanel@ они могут быть + Для обработки файлов и папок ~панели файлов~@FilePanel@, они могут быть выбраны несколькими различными способами. #Ins# помечает файл под курсором и перемещает курсор вниз, #Shift-Клавиши курсора# позволяют перемещать курсор в различных направлениях. @@ -4170,7 +4170,7 @@ $ #Копирование, перенос, переименование и со Переименовать или перенести файл под курсором #Shift-F6# вне зависимости от пометки - Для папки: если путь, который мы задали (относительный или абсолютный) + Для папки: если путь, который мы задали (относительный или абсолютный), соответствует существующей папке, то перемещает в эту папку; иначе изменяет путь на заданный. Например, при перемещении #/folder1/# в #/folder2/#: @@ -4200,23 +4200,23 @@ UNIX режимы доступа как у оригинальных файлов включать в себя поиск заполненных только нулями регионов файлов размером 4КБ и более - на месте таких регионов результирующие разреженные файлы будут содержать 'дырки'. Это позволяет сэкономить место и ускорить копирование если файлы содержат большие области нулевых данных. -Потенциальным минусом является повышенная фрагментация файла если в дальшейшем эти регионы +Потенциальным минусом является повышенная фрагментация файла, если в дальнейшем эти регионы будут перезаписаны обычными данными. Если опция #Использовать копирование-при-записи если возможно# включена, то процедура копирования будет использовать специальный API ядра, который копирует файлы таким образом, что скопированный файл указывает на данные оригинального файла. Данные будут фактически -скопированы лишь в случае когда один из файлов будет модифицирован. Учтите что эта +скопированы лишь в случае когда один из файлов будет модифицирован. Учтите, что эта функциональность требует ядро Linux версии 4.5+ или MacOS v10.12+ и файловую систему, которая поддерживает такие файлы. В противном случае файлы будут скопированы обычным способом. В случае использования эта опция значительно ускоряет копирование и экономит место на диске. -Потенциальным минусом является повышенная фрагментация файла если в дальнейшем этот файл +Потенциальным минусом является повышенная фрагментация файла, если в дальнейшем этот файл или же его первоначальная копия будут перезаписаны. - Выпадающий список #Символические ссылки# позволяет выбрать один мз трех возможных + Выпадающий список #Символические ссылки# позволяет выбрать один из трех возможных способов копирования встреченных символических ссылок: - Либо все символические ссылки будет скопированы как идентичные ссылки. - - Либо far2l будет проверять путь, указываемый каждой ссылкой чтобы понять - + - Либо far2l будет проверять путь, указываемый каждой ссылкой, чтобы понять - он указывает на 'внешний' файл или на один из так же копируемых файлов. В первом случае ссылка будет скопирована как файл, а во втором случае будет создана ссылка, которая будет ссылаться на новый экземпляр файла. @@ -4267,7 +4267,7 @@ UNIX режимы доступа как у оригинальных файлов Для копирования файлов, попадающих под определённые условия, используйте переключатель #Использовать фильтр#. Настройка условий ~фильтра~@FiltersMenu@ осуществляется кнопкой #Фильтр#. Учтите, что если вы копируете каталог с -файлами и ни один из них не попадает под условия фильтра, то пустой каталог в +файлами, и ни один из них не попадает под условия фильтра, то пустой каталог в место назначения скопирован не будет. @@ -4301,7 +4301,7 @@ $ #Копирование: правила# Если включена опция "Копировать содержимое символических ссылок" или источник или приёмник - сетевые диски, то в приёмнике - создаётся папка и в неё копируется содержимое ссылки-источника + создаётся папка, и в неё копируется содержимое ссылки-источника (для вложенных ссылок рекурсивно). Если опция "Копировать содержимое символических ссылок" выключена, @@ -4312,7 +4312,7 @@ $ #Копирование: правила# Если включена опция "Копировать содержимое символических ссылок" или источник или приёмник - сетевые диски, то в приёмнике - создаётся папка и в неё копируется содержимое ссылки-источника + создаётся папка, и в неё копируется содержимое ссылки-источника (для вложенных ссылок рекурсивно). Сама ссылка в источнике удаляется. @@ -4327,7 +4327,7 @@ $ #Копирование: правила# Если источник или приёмник - сетевые диски, то независимо от состояния опции "Копировать содержимое символических ссылок" - в приёмнике создаётся папка и в неё копируется содержимое + в приёмнике создаётся папка, и в неё копируется содержимое ссылки-источника (для вложенных ссылок рекурсивно). Сама ссылка в источнике удаляется. @@ -4781,7 +4781,7 @@ $ #Макросы # Основным применением макросов является определение кнопок для быстрого вызова внешних плагинов и переопределение действий FAR2L. - См. так же: + См. также: ~Области действия макросов~@KeyMacroArea@ ~Кнопки назначения~@KeyMacroAssign@ @@ -4848,28 +4848,28 @@ $ #Макросы: кнопки назначения# @ChangeLocationConfig $ #Настройки меню перехода# - Этот диалог можно вызвать нажав кнопку F9 в меню перехода, открытом по Alt+F1/F2. - Здесь вы можете выбрать какие виды объектов должны быть добавлены в меню + Этот диалог можно вызвать, нажав кнопку F9 в меню перехода, открытом по Alt+F1/F2. + Здесь вы можете выбрать, какие виды объектов должны быть добавлены в меню перехода: #точки монтирования#, #закладки# и #плагины#. - Так же можно настроить список точек монтирования указанием шаблонов исключений -и изменением шаблонов определяющий содержимое дополнительных колонок. + Также можно настроить список точек монтирования указанием шаблонов исключений +и изменением шаблонов, определяющих содержимое дополнительных колонок. Там могут быть использованы следующие сокращения для подстановки значений: #$T# - полный размер диска #$U# - использованное место на диске #$F# - свободное место на диске - #$A# - место доступное не привилегированному пользователю + #$A# - место, доступное не привилегированному пользователю #$u# - проценты использованного места #$f# - проценты свободного места #$a# - проценты доступного места #$N# - название файловой системы - #$D# - устройство на котором расположена файловая система + #$D# - устройство, на котором расположена файловая система #$S# - один символ, обозначающий статус файловой системы: ! - ФС доступна только для чтения ? - ФС недоступна из-за ошибки или таймаута <пробел> - ФС полностью доступна - Так же можно дополнительно выравнивать слова внутри результирующих строк при помощи: - #$<# - дополнить пробелами слово слева так чтобы его длина сравнялась с длиной самого длинного слова в том же месте - #$># - дополнить пробелами слово справа так чтобы его длина сравнялась с длиной самого длинного слова в том же месте + Также можно дополнительно выравнивать слова внутри результирующих строк при помощи: + #$<# - дополнить пробелами слово слева так, чтобы его длина сравнялась с длиной самого длинного слова в том же месте + #$># - дополнить пробелами слово справа так, чтобы его длина сравнялась с длиной самого длинного слова в том же месте @KeyMacroRecPlay $ #Макросы: запись и воспроизведение# @@ -4896,7 +4896,7 @@ $ #Макросы: запись и воспроизведение# #Shift# и клавишу с точкой), для записи макроса в специальном режиме. - После того как FAR2L начал запись макроса в левом верхнем + После того как FAR2L начал запись макроса, в левом верхнем углу экрана будет отображаться символ '\4FR\-'. 2. Текст макроса. diff --git a/far2l/bootstrap/scripts/farlang.templ.m4 b/far2l/bootstrap/scripts/farlang.templ.m4 index 49bebaa04..092472609 100644 --- a/far2l/bootstrap/scripts/farlang.templ.m4 +++ b/far2l/bootstrap/scripts/farlang.templ.m4 @@ -1769,7 +1769,7 @@ upd:"Disable &write cache" "Выключыць кэ&шаванне запісу" CopyXAttr -"Копировать расширенные а&ттрибуты" +"Копировать расширенные а&трибуты" "Copy extended a&ttributes" upd:"Copy extended a&ttributes" upd:"Copy extended a&ttributes" @@ -2432,7 +2432,7 @@ upd:"Override base colors &palette" "Ужываць сваю &палітру колераў" ConfigExclusiveKeys -"&Экслюзивная обработка нажатий, включающих:" +"&Эксклюзивная обработка нажатий, включающих:" "&Exclusively handle hotkeys that include:" upd:"&Exclusively handle hotkeys that include:" upd:"&Exclusively handle hotkeys that include:" @@ -16053,7 +16053,7 @@ upd:"(current target '%ls')" upd:"(current target '%ls')" SetAttrSymlinkWarn4 -"Пропустить или все-равно изменить объект симлинка?" +"Пропустить или все равно изменить объект симлинка?" "Skip or change symlink target anyway?" upd:"Skip or change symlink target anyway?" upd:"Skip or change symlink target anyway?" @@ -26280,7 +26280,7 @@ upd:"In this case user can't change tab style by Ctrl+F5" "У гэтым выпадку карыстач не можа змяніць стыль таба па Ctrl+F5" EditorConfigOrgProblemCharset -"В этом случае пользователь не может изменить кодировку по F8 or Shift+F8" +"В этом случае пользователь не может изменить кодировку по F8 или Shift+F8" "In this case user can't change codepage by F8 or Shift+F8" upd:"In this case user can't change codepage by F8 or Shift+F8" upd:"In this case user can't change codepage by F8 or Shift+F8" diff --git a/far2l/far2sdk/farplug-mb.h b/far2l/far2sdk/farplug-mb.h index 62638d54c..f433aa531 100644 --- a/far2l/far2sdk/farplug-mb.h +++ b/far2l/far2sdk/farplug-mb.h @@ -569,6 +569,8 @@ namespace oldfar PFLAGS_REALNAMES = 0x00000020, PFLAGS_NUMERICSORT = 0x00000040, PFLAGS_PANELLEFT = 0x00000080, + PFLAGS_HL_MARKERS_NOSHOW = 0x00000800, + PFLAGS_HL_MARKERS_NOALIGN = 0x00001000, }; enum PANELINFOTYPE @@ -1755,6 +1757,8 @@ namespace oldfar OPIF_EXTERNALDELETE = 0x00002000, OPIF_EXTERNALMKDIR = 0x00004000, OPIF_USEATTRHIGHLIGHTING = 0x00008000, + OPIF_HL_MARKERS_NOSHOW = 0x00020000, + OPIF_HL_MARKERS_NOALIGN = 0x00040000, }; diff --git a/far2l/far2sdk/farplug-wide.h b/far2l/far2sdk/farplug-wide.h index 3c6290cd5..b59cd3ba8 100644 --- a/far2l/far2sdk/farplug-wide.h +++ b/far2l/far2sdk/farplug-wide.h @@ -776,6 +776,8 @@ enum PANELINFOFLAGS PFLAGS_DIRECTORIESFIRST = 0x00000100, PFLAGS_USECRC32 = 0x00000200, PFLAGS_CASESENSITIVESORT = 0x00000400, + PFLAGS_HL_MARKERS_NOSHOW = 0x00000800, + PFLAGS_HL_MARKERS_NOALIGN = 0x00001000, }; enum PANELINFOTYPE @@ -2244,6 +2246,8 @@ enum OPENPLUGININFO_FLAGS OPIF_EXTERNALMKDIR = 0x00004000, OPIF_USEATTRHIGHLIGHTING = 0x00008000, OPIF_USECRC32 = 0x00010000, + OPIF_HL_MARKERS_NOSHOW = 0x00020000, + OPIF_HL_MARKERS_NOALIGN = 0x00040000, }; diff --git a/far2l/src/console/keyboard.cpp b/far2l/src/console/keyboard.cpp index 6f76e4b24..757c7f8b2 100644 --- a/far2l/src/console/keyboard.cpp +++ b/far2l/src/console/keyboard.cpp @@ -2232,7 +2232,10 @@ FarKey CalcKeyCode(INPUT_RECORD *rec, int RealKey, int *NotMacros) return '9'; return Modif | (Opt.UseNumPad ? KEY_NUMPAD9 : KEY_PGUP); +#ifndef __APPLE__ + // Clear button is used as NumLock emulator on OSX case VK_CLEAR: +#endif case VK_NUMPAD5: if (CtrlState & ENHANCED_KEY) { diff --git a/far2l/src/hilight.cpp b/far2l/src/hilight.cpp index 6a558a4d8..b519c3ba0 100644 --- a/far2l/src/hilight.cpp +++ b/far2l/src/hilight.cpp @@ -145,32 +145,24 @@ static void SetDefaultHighlighting() {L"*", 1, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_CYAN, 0xFFFFFFFD0F, 0x30 | F_DARKGRAY, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, {L"*", 1, FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_DIRECTORY, 0x00, 0x10 | F_CYAN, 0xFFFFFFFD0F, 0x30 | F_DARKGRAY, 0xFFFFFFFD0F, 0xFF002F /*/*/, 0, 0}, {L"*", 1, FILE_ATTRIBUTE_SYSTEM, 0x00, 0x10 | F_CYAN, 0xFFFFFFFD0F, 0x30 | F_DARKGRAY, 0xFFFFFFFD0F, 0xFF263C, 1, 0}, - {L"*|..", 0, FILE_ATTRIBUTE_DIRECTORY, 0x00, 0x10 | F_WHITE, 0xFFFFFFFD0F, 0x30 | F_WHITE, 0xFFFFFFFD0F, 0xFF002F /*/*/, 0, 0}, - {L"..", 0, FILE_ATTRIBUTE_DIRECTORY, 0x00, 0x00, 0xFFFFFFFD0F, 0x00, 0xFFFFFFFD0F, 0x00002F /*/*/, 0, 0}, - {L"*", 1, FILE_ATTRIBUTE_EXECUTABLE, 0, 0x10 | F_GREEN, 0xFFFFFFFD0F, 0x30 | F_GREEN, 0xFFFFFFFD0F, 0xFF002A /***/, 0, 0}, - - {MasksSoundFiles,0, 0x00,0x00, (0xAAFF00ull << 16) | (0x10 | F_LIGHTGREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x005500ull << 16) | (0x30 | F_LIGHTGREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF266A, 0, FFF_DISABLED}, - {MaskSharedObjects,0, 0x00,0x00, (0x00b800ull << 16) | (0x10 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x005500ull << 16) | (0x30 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, - {MaskSourceFiles,0, 0x00,0x00, (0xffbcacull << 16) | (0x10 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x8F0C00ull << 16) | (0x30 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, - {MaskVideoFiles,0, 0x00,0x00, (0x30b8ffull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x006767ull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, - {MaskImageFiles,0, 0x00,0x00, (0x00ffaeull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x00432eull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, - {MaskModelFiles,0, 0x00,0x00, (0x00ffaeull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x00432eull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, - {MaskTextFiles,0, 0x00,0x00, (0xccccccull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x767676ull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, - - {MasksScripts, 0, 0x00,0x00, 0x10 | F_LIGHTGREEN, 0xFFFFFFFD0F, 0x30 | F_LIGHTGREEN, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, - {MasksArchives, 0, 0x00,0x00, 0x10 | F_LIGHTMAGENTA, 0xFFFFFFFD0F, 0x30 | F_LIGHTMAGENTA, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, - {MasksTemporary, 0, 0x00,0x00, 0x10 | F_BROWN, 0xFFFFFFFD0F, 0x30 | F_BROWN, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, - // это настройка для каталогов на тех панелях, которые должны раскрашиваться // без учета масок (например, список хостов в "far navigator") {L"*", 1, FILE_ATTRIBUTE_EXECUTABLE | FILE_ATTRIBUTE_REPARSE_POINT, 0, 0x10 | F_GREEN, 0xFFFFFFFD0F, 0x30 | F_GREEN, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, - {L"*", 1, FILE_ATTRIBUTE_DIRECTORY, 0x00, 0x10 | F_WHITE, 0xFFFFFFFD0F, 0x30 | F_WHITE, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, - {L"*", 1, FILE_ATTRIBUTE_DEVICE_CHAR, 0x00, 0x10 | F_LIGHTBLUE, 0xFFFFFFFD0F, 0x30 | F_BLUE, 0xFFFFFFFD0F, 0, 0, 0}, - {L"*", 1, FILE_ATTRIBUTE_DEVICE_BLOCK, 0x00, 0x10 | F_LIGHTBLUE, 0xFFFFFFFD0F, 0x30 | F_BLUE, 0xFFFFFFFD0F, 0, 0, 0}, - {L"*", 1, FILE_ATTRIBUTE_DEVICE_FIFO, 0x00, 0x10 | F_LIGHTBLUE, 0xFFFFFFFD0F, 0x30 | F_BLUE, 0xFFFFFFFD0F, 0, 0, 0}, - {L"*", 1, FILE_ATTRIBUTE_DEVICE_SOCK, 0x00, 0x10 | F_LIGHTBLUE, 0xFFFFFFFD0F, 0x30 | F_BLUE, 0xFFFFFFFD0F, 0, 0, 0}, -// {L"*.*", 0, 0x00, 0x00, 0x10 | F_LIGHTCYAN, 0xFFFFFFFD0F, 0x30 | F_BLUE, 0xFFFFFFFD0F, 0xFF0000, 0}, // Чтобы не раскрашивало на NTFS все файлы в зеленый - {L"*", 1, FILE_ATTRIBUTE_EXECUTABLE, 0x00, 0x10 | F_LIGHTGREEN, 0xFFFFFFFD0F, 0x30 | F_LIGHTGREEN, 0xFFFFFFFD0F, 0xFF0000, 0, 0} + {L"*|..", 0, FILE_ATTRIBUTE_DIRECTORY, 0x00, 0x10 | F_WHITE, 0xFFFFFFFD0F, 0x30 | F_WHITE, 0xFFFFFFFD0F, 0xFF002F /*/*/, 0, 0}, + {L"..", 0, FILE_ATTRIBUTE_DIRECTORY, 0x00, 0x00, 0xFFFFFFFD0F, 0x00, 0xFFFFFFFD0F, 0x00002F /*/*/, 0, 0}, + {L"*", 1, FILE_ATTRIBUTE_EXECUTABLE, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_GREEN, 0xFFFFFFFD0F, 0x30 | F_GREEN, 0xFFFFFFFD0F, 0xFF002A /***/, 1, 0}, + + {MasksSoundFiles,0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0xAAFF00ull << 16) | (0x10 | F_LIGHTGREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x005500ull << 16) | (0x30 | F_LIGHTGREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF266A, 0, FFF_DISABLED}, + {MaskSharedObjects,0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x00b800ull << 16) | (0x10 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x005500ull << 16) | (0x30 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, + {MaskSourceFiles,0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0xffbcacull << 16) | (0x10 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x8F0C00ull << 16) | (0x30 | F_GREEN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, + {MaskVideoFiles,0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x30b8ffull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x006767ull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, + {MaskImageFiles,0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x00ffaeull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x00432eull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, + {MaskModelFiles,0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0x00ffaeull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x00432eull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, + {MaskTextFiles,0, 0x00, FILE_ATTRIBUTE_DIRECTORY, (0xccccccull << 16) | (0x10 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, (0x767676ull << 16) | (0x30 | F_BROWN) | FOREGROUND_TRUECOLOR, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, + + {MasksScripts, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_LIGHTGREEN, 0xFFFFFFFD0F, 0x30 | F_LIGHTGREEN, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, + {MasksArchives, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_LIGHTMAGENTA, 0xFFFFFFFD0F, 0x30 | F_LIGHTMAGENTA, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, + {MasksTemporary, 0, 0x00, FILE_ATTRIBUTE_DIRECTORY, 0x10 | F_BROWN, 0xFFFFFFFD0F, 0x30 | F_BROWN, 0xFFFFFFFD0F, 0xFF0000, 0, 0}, }; diff --git a/far2l/src/panels/filelist.hpp b/far2l/src/panels/filelist.hpp index 2ce5a8244..c4c0e9cc1 100644 --- a/far2l/src/panels/filelist.hpp +++ b/far2l/src/panels/filelist.hpp @@ -224,7 +224,7 @@ class FileList : public Panel void Scroll(int Count); void CorrectPosition(); void ShowFileList(int Fast); - void ShowList(int ShowStatus, int StartColumn); + void ShowList(int ShowStatus, int StartColumn, OpenPluginInfo &Info); void SetShowColor(int Position, int ColorType = HIGHLIGHTCOLORTYPE_FILE); DWORD64 GetShowColor(int Position, int ColorType); void ShowSelectedSize(); diff --git a/far2l/src/panels/flshow.cpp b/far2l/src/panels/flshow.cpp index a6bf2e030..732777ab3 100644 --- a/far2l/src/panels/flshow.cpp +++ b/far2l/src/panels/flshow.cpp @@ -380,7 +380,7 @@ void FileList::ShowFileList(int Fast) ShowTotalSize(Info); } - ShowList(FALSE, 0); + ShowList(FALSE, 0, Info); ShowSelectedSize(); if (Opt.ShowPanelScrollbar) { @@ -859,7 +859,7 @@ static int MakeCurLeftPos(int ColumnWidth, const wchar_t *Str, int LeftPos, int return out; } -void FileList::ShowList(int ShowStatus, int StartColumn) +void FileList::ShowList(int ShowStatus, int StartColumn, OpenPluginInfo &Info) { int StatusShown = FALSE; int MaxLeftPos = 0, MinLeftPos = FALSE; @@ -909,7 +909,7 @@ void FileList::ShowList(int ShowStatus, int StartColumn) if (ListPos < ListData.Count()) { if (!ShowStatus && !StatusShown && CurFile == ListPos && Opt.ShowPanelStatus) { - ShowList(TRUE, CurColumn); + ShowList(TRUE, CurColumn, Info); GotoXY(CurX, CurY); StatusShown = TRUE; SetShowColor(ListPos); @@ -950,10 +950,15 @@ void FileList::ShowList(int ShowStatus, int StartColumn) { /// Draw mark str size_t prews = std::min(Opt.MinFilenameIndentation, Opt.MaxFilenameIndentation); - if (Opt.ShowFilenameMarks && Opt.Highlight ) { + if (Opt.ShowFilenameMarks && Opt.Highlight + && (PanelMode != PLUGIN_PANEL + || ( !(Info.Flags & OPIF_HL_MARKERS_NOSHOW) && (Info.Flags & OPIF_USEHIGHLIGHTING) )) + ) { const HighlightDataColor *const hl = ListData[ListPos]->ColorsPtr; - if (Opt.FilenameMarksAlign && MarkLM > prews) + if (Opt.FilenameMarksAlign + && (PanelMode != PLUGIN_PANEL || !(Info.Flags & OPIF_HL_MARKERS_NOALIGN)) + && MarkLM > prews) prews = std::min(MarkLM, (size_t)Opt.MaxFilenameIndentation); if (hl->MarkLen && Width > 2) { diff --git a/far2l/src/panels/panel.cpp b/far2l/src/panels/panel.cpp index 36cd066cd..8a0b5150f 100644 --- a/far2l/src/panels/panel.cpp +++ b/far2l/src/panels/panel.cpp @@ -1704,6 +1704,8 @@ int Panel::SetPluginCommand(int Command, int Param1, LONG_PTR Param2) } PFLAGS[] = { {&Opt.ShowHidden, PFLAGS_SHOWHIDDEN}, {&Opt.Highlight, PFLAGS_HIGHLIGHT }, + {&Opt.ShowFilenameMarks, PFLAGS_HL_MARKERS_NOSHOW }, + {&Opt.FilenameMarksAlign, PFLAGS_HL_MARKERS_NOALIGN }, }; DWORD Flags = 0; @@ -1741,6 +1743,12 @@ int Panel::SetPluginCommand(int Command, int Param1, LONG_PTR Param2) if (PInfo.Flags & OPIF_USECRC32) Info->Flags|= PFLAGS_USECRC32; + if (PInfo.Flags & OPIF_HL_MARKERS_NOSHOW) // (?) condition added by analogy: + Info->Flags|= PFLAGS_HL_MARKERS_NOSHOW; // may not be completely correct + + if (PInfo.Flags & OPIF_HL_MARKERS_NOALIGN) // (?) condition added by analogy: + Info->Flags|= PFLAGS_HL_MARKERS_NOALIGN; // may not be completely correct + Reenter--; } diff --git a/far2l/src/vt/vtcompletor.cpp b/far2l/src/vt/vtcompletor.cpp index e8c782402..c59a5e889 100644 --- a/far2l/src/vt/vtcompletor.cpp +++ b/far2l/src/vt/vtcompletor.cpp @@ -169,7 +169,7 @@ bool VTCompletor::TalkWithShell(const std::string &cmd, std::string &reply, cons std::string done = "K2Ld8Gfg"; // another most unique string in Universe AvoidMarkerCollision(done, cmd); // if it still not enough unique AvoidMarkerCollision(begin, cmd); // if it still not enough unique - begin+= '\n'; + //begin+= '\n'; // dont do that: done+= '\n'; otherwise proposed command is executed, see https://github.com/elfmz/far2l/issues/1244 std::string sendline = " PS1=''; PS2=''; PS3=''; PS4=''; PROMPT_COMMAND=''"; @@ -182,6 +182,7 @@ bool VTCompletor::TalkWithShell(const std::string &cmd, std::string &reply, cons sendline+= '\n'; sendline+= begin; + sendline+= '\n'; sendline+= cmd; sendline+= tabs; sendline+= done; @@ -240,9 +241,13 @@ bool VTCompletor::TalkWithShell(const std::string &cmd, std::string &reply, cons fclose(f); } - size_t p = reply.find(begin); + size_t p = reply.find(begin + '\n'); + if (p == std::string::npos) { + p = reply.find(begin + '\r'); + } if (p != std::string::npos) { reply.erase(0, p + begin.size()); + StrTrimLeft(reply, "\r\n"); } for (;;) { p = reply.rfind('\a'); diff --git a/multiarc/src/arccmd.cpp b/multiarc/src/arccmd.cpp index 69b3993b8..570800210 100644 --- a/multiarc/src/arccmd.cpp +++ b/multiarc/src/arccmd.cpp @@ -312,8 +312,10 @@ int ArcCommand::ReplaceVar(std::string &Command) break; } } + /* if (Command.empty() && DefaultCodepage > 0) Command = StrPrintf("CP%u", DefaultCodepage); + */ break;