-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Переключение кодировок по F8 #16
Comments
Ради интереса переключил язык/локаль системы на русские и поведение стало таким как нужно, но например Windows у меня английская, форматы Russian(Ukraine) и язык FAR’a английский, а кодировки по F8 какие и нужно. Можно ли как-то настроить это поведение? Сейчас у меня язык en_US, а форматы ru_UA |
Не вникал в этот вопрос, у меня 1251/866 (как это получилось уже не помню. |
Вышло починить. Запуск LC_ALL=ru_RU.UTF-8 far2l ожидаемо дал нужное поведение, а потом я поискал в исходниках и нашел нужное место. В файле APIStringCodepages.cpp заменил 221-ю строку на const char *lc = setlocale(LC_NUMERIC, NULL); Выбрал LC_NUMERIC, вроде вполне разумно. После 338-й строки вставил if (IsLocaleMatches(lc, "ru_UA")) { return Codepages{866, 1251}; } А можно добавить условие, что если локаль начинаеться с ru_ ставить страницы 866/1251 |
Мне бы не хотелось иметь в исходниках жёстко-закодированные правила. Лучше такое выносить в конфигурацию. |
Но ведь оно и так есть жестко закодированным и там по строке для каждой локали и куча if-ов, а я просто еще одну добавил. Единственное где меняется поведение это чтобы локаль проверялась не LC_CTYPE, а LC_NUMERIC. «Проблема» возникнет только у тех у кого система на одном языке (чаще всего английский), а форматы от другого (например начало недели с воскресенья как в США явно неудобно). Прошу вас добавить изменение т.к. не хотелось бы менять вручную каждый раз. Windows версия обрабатывает этот момент правильно. У меня вывод команды locale такой: LANG=en_US.UTF-8 |
У нас в Израиле тоже неделя начинается с воскресенья :) |
Когда 2-й параметр==NULL, изменений в текущей локали не делается, это может только повлиять на возвращаемое значение (https://cplusplus.com/reference/clocale/setlocale/). Поэтому смысла в данном изменении нет.
Это можно добавить.
Технически добавить легко, но не хотелось бы умножать в программе куски, заточенные на определённый (в данном случае, русский) язык. |
Увы, но так не работает (я собрал новую версию). Вот если бы в каждой строке команды locale у меня было ru_UA.UTF-8, то это бы сработало, но так по прежнему проверяется LC_CTYPE которая будет иметь значение en_US. Именно и нужно чтобы в переменной lc было значение LC_NUMERIC. Тем у кого язык и форматы одинаковы вообще не важно какую из переменных locale проверять, а вот в таком случае как у меня появляется разница. |
Решение оказалось уже предусмотренным.
Перезапустите Фар. |
Спасибо. Стоит добавить в справку/FAQ |
|
Заметил что F8 в редакторе (и в родителе тоже) переключает между кодировками 1252/437, а не 1251/866 как в Windows версии FAR. Возможно ли сделать поведение аналогично Windows версии или так сделано специально?
The text was updated successfully, but these errors were encountered: