-
Notifications
You must be signed in to change notification settings - Fork 1
Для тех, кто коммитит
-
https://github.com/elfmz/far2l/issues/802#issuecomment-711093913
Вот зачем фигак фигак и в продакшен, этож не энтерпрайз, тут можно по-человечески.
-
https://github.com/elfmz/far2l/issues/802#issuecomment-1726311209
far2l - это проектик для души, а не для гонки. Который хочется чтоб работал стабильно и был удобен, а постоянное внедрение новых фич - это второстепенная задача. Такой вот дауншифт от тенденций софтостроения)
-
https://github.com/elfmz/far2l/issues/2230#issuecomment-2230572396
самая большая разница между программирвоанием под винду и под юникс вовсе не в том что в винде CreateFile(), а в юниксе open(), а в том, что под виндой у тебя уютный компилятор любимой версии и унифицированное окружение, а юниксы - зоопарк окружений, причем твой проект собирают вооще другие люди с большинством из которых ты ваще никак не знаком, под железо которое ты никогда не брал в свои руки...
-
Wiki от elfmz: https://github.com/elfmz/far2l/wiki
-
far 2 encyclopedia (от виндовой версии, но много полезного, например, там про макро язык, разметку языка помощи и т.п.):
- CHM: https://github.com/elfmz/far2l/issues/1135
- Оригинальный CHM лежит внутри MSI-пакетов far2.x86.msi/far2.x64.msi, которые можно скачать из https://farmanager.com/history.php (две самые последние ссылки)
- Online (раздел по макросам по far3, часть информации не совместима с far2l): https://api.farmanager.com/ru/macro/
- области действия макросов: https://api.farmanager.com/ru/macro/about/macroarea.html
- Online (раздел по языку разметки помощи): https://api.farmanager.com/ru/language/
Note: смотреть CHM в Linux, например, через xCHM (наиболее корректно) или через Okular — просмотр CHM как подряд идущих страниц, но возможны сбои рендеринга текста ссылок и области щелчка по ним.
-
Описание различий/дополнительных возможностей far2l API: https://github.com/elfmz/far2l/blob/master/HACKING.md
-
О форматировании кода
- https://github.com/elfmz/far2l/blob/master/CODESTYLE.md
-
https://github.com/elfmz/far2l/pull/1864#issuecomment-1738077196
В новом коде (новые функции) переменные - snake_case, функции - CamelCase. Если изменение в старом коде - то лучше подстраиваться под то что есть. Старый код надо будет когда нибудь в светлом будущем автоматически переформатировать (clang-tidy как я понимаю это умеет). Но тут с отступами была целая эпопея, включавшая в себя кастомный clang-format, так что передеделывать имена переменных чета вообще боязно) Но придется..
-
Про исторически сложившиеся разные строковые типы (
FARString
,std::wstring
,TCHAR
,...) и их использование: https://github.com/elfmz/far2l/issues/802#issuecomment-1694758391 -
String encoding functions in far2l code: https://github.com/elfmz/far2l/discussions/1063
-
включение вывода логгирования и выбор куда: https://github.com/elfmz/far2l/wiki/Running-far2l-with-debug-logging-enabled
- в терминале
export FAR2L_STD=/path/to/log
для лога в файл илиexport FAR2L_STD=-
для лога в stdout терминала, также по необходимостиexport NETROCKS_VERBOSE=9
и затем в этом же терминале запустить far2l-
export FAR2L_STD=
перенаправление сразу иstdout
иstderr
(см.SetupStdHandles()
в /WinPort/src/Backend/WinPortMain.cpp) -
export FAR2L_STDOUT=
перенаправление отдельноstdout
-
export FAR2L_STDERR=
перенаправление отдельноstderr
- внутри far2l обычно отладочный вывод в
stderr
-
- отладочный вывод Colorer: https://github.com/elfmz/far2l/pull/2385 (начиная с сентября 2024)
export FAR2L_STDERR=somefile.log export COLORER_VERBOSE=debug # colorer verbose levels: off (default), error, warn or warning, info, debug far2l
- в терминале
-
отладочная печать в коде:
fprintf(stderr, "муа-ха-ха %i", 42);
и т.п.-
шпаргалка по выводу в консоль всего зоопарка строковых типов far2l (спасибо unxed: https://github.com/elfmz/far2l/issues/801 )
// null-terminated strings (c-strings) made of chars // (examples below should also work with LPSTR/LPCSTR/CHAR) char *sample; fprintf(stderr, "%s\n", sample); char sample[fixed_length_in_bytes_plus_one_for_terminating_zero]; fprintf(stderr, "%s\n", sample); // null-terminated strings (c-strings) made of wide chars // (examples below should also work with LPWSTR/LPCWSTR/LPTSTR/LPCTSTR/WCHAR/TCHAR) wchar_t *sample; fprintf(stderr, "%ls\n", sample); wchar_t sample[fixed_length_in_wide_chars_plus_one_for_terminating_zero]; fprintf(stderr, "%ls\n", sample); // standard C++ classes for strings // for accessing class methods via pointer to object of that class replace "." with "->" std::string sample; fprintf(stderr, "%s\n", sample.c_str()); std::wstring sample; fprintf(stderr, "%ls\n", sample.c_str()); // Far internal string class FARString sample; fprintf(stderr, "%s\n", sample.GetMB().c_str()); fprintf(stderr, "%ls\n", sample.CPtr()); UnicodeString sample; fprintf(stderr, "%s\n", sample.GetMB().c_str()); // string classes used in Colorer // (examples below should also work with CString and DString classes) String sample; fprintf(stderr, "%ls\n", sample.getWChars()); SString sample; fprintf(stderr, "%ls\n", sample.getWChars()); // wxString wxString sample; fprintf(stderr, "%s\n", sample.ToStdString().c_str()); //or fprintf(stderr, "%s\n", sample.mb_str().data()); //or fprintf(stderr, "%ls\n", static_cast<const wchar_t*>(sample.wc_str()));
Про wxString: https://docs.wxwidgets.org/3.0/classwx_string.html#string_vararg
-
-
https://github.com/elfmz/far2l/issues/856#issuecomment-742854104
- запустите графический вариант под дебаггером:
gdb far2l
и далееrun
- дождитесь падения
bt
- напишите результат сюда
- запустите графический вариант под дебаггером:
-
https://github.com/elfmz/far2l/issues/557#issuecomment-506029522
gdb far2l
- type
run
in gdb console -> far2l will be launched - repro issue
- return back to gdb console, hit ctrl+c then type
thread apply all bt
and send what will be printed out there
-
другие подробности по работе с gdb [нажмите, чтобы развернуть/скрыть]
-
https://github.com/elfmz/far2l/issues/1003#issuecomment-869060945
откройте терминал, в нем запустите
gdb far2l
, когда откроется far2l - воспроизведите зависон, когда зависнет - перейдите в терминал с gdb, ткните там Ctrl+C, потом в появившейся ком строке дебаггера напишитеthread apply all bt
, после чего - полную распечатку результата выложите здесь -
https://github.com/elfmz/far2l/issues/1257#issuecomment-1044606817
запустите far2l под gdb - в терминале напишите:
gdb far2l
после того как gdb раздуплится - напишите в его консоли командуrun
... в консоли gdb нажмите Ctrl+C и после того как там появится ком строка - напишите в нееthread apply all bt
и результат расшарьте если не жалко -
https://github.com/elfmz/far2l/issues/1248#issuecomment-1039176746
запустить far2l под gdb написать в gdb
run
, спровоцировать крэш, и когда в gdb появится чтото типа поймали SIGSEGV за хвост - то надо там (в gdb) написать командуbt
-
https://github.com/elfmz/far2l/issues/567#issuecomment-510202714
please run far2l under gdb by executing in terminal:
gdb far2l
then type in gdb console:
run
After that reproduce issue in opened far2l window, and once far2l hang, switch back to terminal with gdb, then hit Ctrl+C there and type following command:
thread apply all bt
..and report its output
-