[far2] Макросы для циклического переключения кодировок

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13068
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 42 times
Been thanked: 319 times

[far2] Макросы для циклического переключения кодировок

Post by John Doe »

Макросы для циклического переключения "любимых" кодировок в юникодном редакторе и вьювере (FAR 2)

Вьювер:
  • F8: циклическое переключение однобайтных кодировок.
  • F9: циклическое переключение кодировок Unicode.
Во вьювере всё просто, и можно свободно переключаться между однобайтными кодировками и Unicode.

Редактор:
  • F8: циклическое переключение однобайтных кодировок.
В отличии от вьювера, в редакторе запрещено переключение из однобайтных кодировок в Unicode или наоборот.
Обойти это ограничение можно с помощью следующего макроса:
  • F9: переключение OEM/UTF-16.
Из любой однобайтной кодировки фар позволяет свободное переключение в UTF-8.
Однако, это действие с высокой степенью вероятности может оказаться деструктивно и при этом необратимо.
Поэтому предлагается делать это макросом:
  • Shift-F9: безопасное переключение в UTF-8.


Старые версии:
Last edited by John Doe on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Внимание: новые версии (пока) не выложены, т.к. частично утеряны
glad1ator
Posts: 7
Joined: Fri 07 Apr, 2006 11:42

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by glad1ator »

John Doe wrote:В редакторе из цикла переключения исключается юникод (во избежание необратимых изменений)
в большинстве случаев надо переключение между cp1251 и utf-8. в баге задан очень правильный вопрос! изменение кодировки должно, просто обязано отменяться через Ctrl-z - взять хотя бы тот же notepad++, там чересчур удобно сделана работа с кодировками.
User avatar
Александр Кряжев
Posts: 882
Joined: Sun 03 Dec, 2006 10:09
Location: Москва
Has thanked: 2 times
Contact:

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by Александр Кряжев »

glad1ator wrote:взять хотя бы тот же notepad++, там чересчур удобно сделана работа с кодировками.
А почему Вы им не пользуетесь?

Фар - маргинальный продукт. (c) zg
glad1ator
Posts: 7
Joined: Fri 07 Apr, 2006 11:42

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by glad1ator »

Александр Кряжев wrote:
glad1ator wrote:взять хотя бы тот же notepad++, там чересчур удобно сделана работа с кодировками.
А почему Вы им не пользуетесь?
очень-очень активно пользуюсь. но есть одна задачка, которую проще сделать в фаре: например, я залил файлики в utf-8 без BOM на фтп (скажем сайт). мне надо изменить один из файликов с русскими буквами. сейчас я редактирую этот файл в ноутпад++ и перезаливаю его на фтп, а насколько было бы удобнее открыть этот файл на фтп, нажать f8 (или даже не нажимать, сделая utf-8 кодировкой по-умолчанию) и отредактировать файл :)
про Shift+F4 я знаю. это не самое удачное решение, так как иногда вместе с файлами utf-8 попадают файлы в cp1251 (например, сторонние библиотеки) и тогда вообще каламбур получится
User avatar
Александр Кряжев
Posts: 882
Joined: Sun 03 Dec, 2006 10:09
Location: Москва
Has thanked: 2 times
Contact:

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by Александр Кряжев »

glad1ator
Я лично тоже регулярно редактирую файлики своего сайта по фтп в юникоде, меня сейчас этот процесс в Far устраивает полностью (особенно после того, как я успел намучаться в своё время с неюникодным Far'ом). Хотя, конечно, всё, что касается удобства в работе - сугубо индивидуально.
про Shift+F4 я знаю. это не самое удачное решение, так как иногда вместе с файлами utf-8 попадают файлы в cp1251 (например, сторонние библиотеки) и тогда вообще каламбур получится
Вот тут не совсем понятно вообще-то, какая связь. Ну да ладно.

Фар - маргинальный продукт. (c) zg
glad1ator
Posts: 7
Joined: Fri 07 Apr, 2006 11:42

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by glad1ator »

Александр Кряжев wrote:glad1ator
Я лично тоже регулярно редактирую файлики своего сайта по фтп в юникоде, меня сейчас этот процесс в Far устраивает полностью (особенно после того, как я успел намучаться в своё время с неюникодным Far'ом). Хотя, конечно, всё, что касается удобства в работе - сугубо индивидуально.
про Shift+F4 я знаю. это не самое удачное решение, так как иногда вместе с файлами utf-8 попадают файлы в cp1251 (например, сторонние библиотеки) и тогда вообще каламбур получится
Вот тут не совсем понятно вообще-то, какая связь. Ну да ладно.
по поводу удобства - у меня мания делать всё в минимум кликов :)
по поводу Shift+F4 - если навести курсор на файл и нажать Shift+F4, то откроется окно с предложением выбора кодировки для открытия файла - достаточно полезная штука :)
User avatar
Александр Кряжев
Posts: 882
Joined: Sun 03 Dec, 2006 10:09
Location: Москва
Has thanked: 2 times
Contact:

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by Александр Кряжев »

glad1ator wrote:по поводу Shift+F4 - если навести курсор на файл и нажать Shift+F4, то откроется окно с предложением выбора кодировки для открытия файла - достаточно полезная штука :)
Это-то я в курсе. ;) Только, при открытом файле можно ещё нажать Shift+F8 и выбрать что угодно. Более того, в следующий раз оно этот файл откроет в том же, т.к. запомнит. Как-то так.
Upd: А ещё автоопределение кодировки есть.

Фар - маргинальный продукт. (c) zg
glad1ator
Posts: 7
Joined: Fri 07 Apr, 2006 11:42

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by glad1ator »

Александр Кряжев wrote:Только, при открытом файле можно ещё нажать Shift+F8 и выбрать что угодно. Более того, в следующий раз оно этот файл откроет в том же, т.к. запомнит. Как-то так.
Много действий + нету отмены перекодирования, как написано в баге
Александр Кряжев wrote:Upd: А ещё автоопределение кодировки есть.
Не факт, что это автоопределение шарит файлы без BOM
User avatar
t-rex
Страшный и ужасный
Posts: 4907
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 6 times
Contact:

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by t-rex »

glad1ator wrote:Не факт, что это автоопределение шарит файлы без BOM
У нас принято демагогией не заниматься.
User avatar
Александр Кряжев
Posts: 882
Joined: Sun 03 Dec, 2006 10:09
Location: Москва
Has thanked: 2 times
Contact:

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by Александр Кряжев »

glad1ator wrote:...Много действий...
Тогда можно продолжать "грызть кактус".

Фар - маргинальный продукт. (c) zg
ccaid
Posts: 869
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 19 times
Been thanked: 5 times

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by ccaid »

John Doe wrote:Макросы для циклического переключения "любимых" кодировок в юникодном редакторе и вьювере (FAR 2)
хорошая идея. я себе сделал так
в редакторе делается малый круг по таблицам, а во вьюере - большой
Фар делают добрые люди
User avatar
John Doe
Бюрократ
Posts: 13068
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 42 times
Been thanked: 319 times

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by John Doe »

Для комплекта предлагается макрос, решающий проблему отсутствия переключения между Unicode и однобайтными кодировками.
У меня повешен на F9. Переключает UTF-16/OEM.

Code: Select all

$If (Editor.State & (EDITORSTATE_MODAL+EDITORSTATE_IN_MEMORY+EDITORSTATE_TEMPORARY))
	$AKey $Exit
$End

$If (Editor.State & EDITORSTATE_UNSAVED)
	msgbox("Warning","There are unsaved changes",MSGBOX_WARNING)
	$Exit
$End

ShiftF8
$If(Menu)
	%TargetCP= "UTF-16"; Esc
$Else
	%TargetCP= "OEM";
$End

%File=Editor.FileName;
ShiftF4 print(%File)
Tab CtrlDown
Menu.Select(%TargetCP,MENUSELECT_MATCH_SUBSTR) Enter
Enter
ShiftTab Enter
User avatar
John Doe
Бюрократ
Posts: 13068
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 42 times
Been thanked: 319 times

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by John Doe »

Для полного комплекта предлагается макрос на Shift-F9, для "безопасного" переключение в UTF-8:

Code: Select all

$If (Editor.State & EDITORSTATE_UNSAVED)
	msgbox("Warning","There are unsaved changes",MSGBOX_WARNING)
	$Exit
$End
%Modal=Editor.State & (EDITORSTATE_MODAL+EDITORSTATE_IN_MEMORY+EDITORSTATE_TEMPORARY);
ShiftF8
%CP=Menu.Value;
$If(Menu.Select("UTF-8",MENUSELECT_MATCH_SUBSTR)<0) $Exit $End
Enter
$If(Dialog && !%Modal)
	MMode(1,0) sleep(700) MMode(1,1)
	$If(1==msgbox("","Try to undo?",MSGBOX_MB_OKCANCEL))
		Esc
		%File=Editor.FileName;
		ShiftF4 print(%File)
		Tab CtrlDown
		Menu.Select(%CP) Enter
		Enter
		ShiftTab Enter
	$Else
		Esc
	$End
$End
Безопасность достигается за счёт того, что переключение производится только при сохранённом файле.
Если переключение приводит к ошибке, то файл автоматически переоткрывается заново, в исходной кодировке.
User avatar
John Doe
Бюрократ
Posts: 13068
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 42 times
Been thanked: 319 times

Re: Макросы для циклического переключения кодировок (FAR 2)

Post by John Doe »

Предыдущие 2 макроса подкорректированы, учитывая возможности, открывшиеся после 1713:
А для окончательного комплекта ещё несколько макросов:
  • F5: "Перезагрузка" файла: Если возникает уже при открытии файла — достаточно поменять кодировку (F8 или Shift-F8) и нажать F5 для перегрузки файла.

  • Alt-Shift-F4: пере-открытие текущего файла с выбором кодовой страницы.
    Позволяет поменять кодировку даже если посредством Shift-F8 это невозможно (переключение между одно- / многобайтными кодировкими).

  • Alt-Shift-F4 (в панели): открытие файла под курсором с выбором кодовой страницы.
Post Reply

Return to “Обсуждение макросов”