Skip to content

Commit ad11247

Browse files
committed
Some Macros Added
1 parent afbc686 commit ad11247

22 files changed

Lines changed: 1101 additions & 4 deletions

Addon/EMenu.fml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
macro Descr="EMenu: Key Activation" Area="Shell" Key="Apps:Release"
2+
{{
3+
F11
4+
$if (Menu.Select("EMenu") > 0)
5+
Enter c 1
6+
$end
7+
}}
8+
9+
macro Descr="EMenu: Mouse Activation" Area="Shell" Key="MSRClick" EatOnRun=0
10+
{{
11+
MSRClick
12+
}}
13+
14+
macro Descr="EMenu: Mouse Activation" Area="Shell" Key="MSRClick:Release" EatOnRun=0
15+
{{
16+
F11
17+
$if (Menu.Select("EMenu") > 0)
18+
Enter c 1
19+
$end
20+
}}

Addon/EditFindAutoCompl.fml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
//Макрос автозавершения слов. (с) SimSU
2+
//Используется плагин EditFind Максима Русова.
3+
4+
// Просто набирайте текст в редакторе и набираемое слово будет автоматически
5+
// дополняться до ближайшего ранее набранного слова, чтобы подтвердить дополнение
6+
// нажмите CtrlSpace (Контрол + Пробел).
7+
const EditFind = 0x444E4645
8+
9+
macro
10+
Name="SimSU_EdtFndACompl"
11+
Descr="Editor: Автозавершение слов. (c) SimSU"
12+
Key="Q W E R T Y U I O P [ ]"
13+
Key="A S D F G H J K L ; '"
14+
Key="Z X C V B N M , ."
15+
Key="1 2 3 4 5 6 7 8 9 0 _"
16+
Key="ShiftQ ShiftW ShiftE ShiftR ShiftT ShiftY ShiftU ShiftI ShiftO ShiftP Shift[ Shift]"
17+
Key="ShiftA ShiftS ShiftD ShiftF ShiftG ShiftH ShiftJ ShiftK ShiftL Shift; Shift'"
18+
Key="ShiftZ ShiftX ShiftC ShiftV ShiftB ShiftN ShiftM Shift, Shift."
19+
EatOnRun=0
20+
Area="Editor"
21+
{{
22+
$if (!callplugin(#%EditFind, ""))
23+
// MsgBox("Error", "EdtFind plugin not installed")
24+
$exit
25+
$end
26+
$IF (%%SimSU_EdtFndACompl) // Удалим предыдущее дополнение вручную, а то могут постоянные блоки и т.п.
27+
CtrlD
28+
%%SimSU_EdtFndACompl=0;
29+
$END
30+
// $Akey
31+
// Eval(Key(#Akey)) //EatOnRun=0
32+
bm.push()
33+
CtrlShiftLeft
34+
%BegWord=Editor.SelValue; //Начало слова.
35+
$IF (!CallPlugin(#%EditFind,"Highlight:0 Loop:0 Error:0 Reverse:1 RegExp:1 Find (^|\\W)"+%BegWord+"\\w+"))
36+
//Не нашли к началу, попытаемся к концу файла.
37+
CallPlugin(#%EditFind,"Highlight:0 Loop:0 Error:0 Reverse:0 RegExp:1 Find (^|\\W)"+%BegWord+"\\w+")
38+
$END
39+
%FindTxt=Editor.SelValue;
40+
%AddTxt=substr(%FindTxt,index(%FindTxt,%BegWord)+Len(%BegWord)); //Окончание слова.
41+
bm.pop()
42+
$IF (Len(%AddTxt)>0)
43+
print(%AddTxt)
44+
$REP (len(%AddTxt)) ShiftLeft $END //Выделим что дописали.
45+
%%SimSU_EdtFndACompl=1;
46+
$ELSE
47+
%%SimSU_EdtFndACompl=0;
48+
$END
49+
}}
50+
51+
//Зададим клавиши принятие автозавершения.
52+
macro
53+
Name="SimSU_EdtFndAComplOk"
54+
Descr="Editor: Автозавершение слов (Принять). (c) SimSU"
55+
Key="CtrlSpace"
56+
Area="Editor"
57+
{{
58+
$IF (%%SimSU_EdtFndACompl)
59+
Editor.Sel(1,1)
60+
CtrlU
61+
%%SimSU_EdtFndACompl=0;
62+
$END
63+
}}
64+
65+
//Зададим клавиши удаляющие автозавершение.
66+
macro
67+
Name="SimSU_EdtFndAComplCncl"
68+
Descr="Editor: Автозавершение слов (Отменить). (c) SimSU"
69+
Key="Left Right Up Down BS"
70+
Area="Editor"
71+
{{
72+
$IF (%%SimSU_EdtFndACompl)
73+
CtrlD
74+
%%SimSU_EdtFndACompl=0;
75+
$END
76+
// $Akey
77+
Eval(Key(#Akey))
78+
}}
79+
;; http://code.google.com/p/simsufar/

Addon/EditFindAutoCompl.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Макрос автозавершения слов. (с) SimSU
2+
Используется плагин EditFind Максима Русова.
3+
EdtFind - Поиск/Замена в текстовом редакторе FAR
4+
Последние версии и исходные тексты:
5+
http://code.google.com/p/far-plugins
6+
(c) 2010, Максим Русов
7+
Max.Rusov@gmail.com
8+
9+
Просто набирайте текст в редакторе и набираемое слово будет автоматически
10+
дополняться до ближайшего ранее набранного слова, чтобы подтвердить дополнение
11+
нажмите CtrlSpace (Контрол + Пробел).
12+
13+
;; http://code.google.com/p/simsufar/

Addon/EditFindLeap.fml

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+

2+
// Собранный на скорую руку "Leap" для EditFind. (с) Maximus5
3+
// Поиск идет одновременно по двум языкам через xlat.
4+
//
5+
// Как пользоваться:
6+
// нажать RAlt и не отпуская набирать текст
7+
// при отпускании RAlt буфер поиска сбрасывается
8+
//
9+
// Чего хочется от EditFind
10+
// - установку флажков хорошо бы через callplugin сделать, например
11+
// callplugin(#%EditFind,"Case:0;Mode:Substring;Reverse:0")
12+
// - возможность звать поиск плагина напрямую (с установленными флажками), через callplugin, например
13+
// callplugin(#%EditFind,"FindText:"+%%EditFindLeap)
14+
15+
const EditFind = 0x444e4645
16+
// Set to 0 to disable xlat(two language) search with RegExp
17+
const UseXLat = 1
18+
19+
macro
20+
Descr="Leap search for EditFind"
21+
Area="Editor"
22+
Bind="RAltA RAltB RAltC RAltD RAltE RAltF RAltG RAltH RAltI RAltJ RAltK RAltL RAltM RAltN RAltO RAltP RAltQ RAltR RAltS RAltT RAltU RAltV RAltW RAltX RAltY RAltZ"
23+
Bind="RAlt[ RAlt] RAlt; RAlt' RAlt` RAlt, RAlt."
24+
Bind="RAlt1 RAlt2 RAlt3 RAlt4 RAlt5 RAlt6 RAlt7 RAlt8 RAlt9 RAlt0"
25+
Bind="RAlt- RAltShift- RAltSpace"
26+
DisableOutput=1
27+
{{
28+
%s = substr(Key(#AKey), 4);
29+
$if (%s=="Shift-") %s = "_"; $end
30+
$if (%s=="Space") %s = " "; $end
31+
%%EditFindLeap=%%EditFindLeap+%s;
32+
F11
33+
$if (menu.Select("Editor Find",2)<=0)
34+
%%EditFindLeap="";
35+
MsgBox("Editor Find","Plugin was not found in list!",1)
36+
$Exit
37+
$end
38+
Enter Enter // Find...
39+
// Enter current search text
40+
$if (#%UseXLat==1)
41+
%x=xlat("Z"+%%EditFindLeap); //магия: xlat лучше если строка начинается с буквы.
42+
%x=substr(%x,1); //избавляемся от фиктивной буквы.
43+
$if (%x==%%EditFindLeap)
44+
%find=%%EditFindLeap;
45+
$else
46+
%find="(\\Q"+%%EditFindLeap+"\\E)|(\\Q"+%x+"\\E)";
47+
$end
48+
$else
49+
%find=%%EditFindLeap;
50+
$end
51+
print(%find)
52+
// Default search options
53+
$if (len(%%EditFindLeap)==1)
54+
Tab $IF (!%%EditFindSave) %%EditFindCase=dlg.getvalue(dlg.getvalue(0,6),0); $END Subtract // и запоминаем настройки.
55+
$if (#%UseXLat==1)
56+
Down $IF (!%%EditFindSave) %%EditFindType=dlg.getvalue(dlg.getvalue(0,6),0); $END Down Down Space
57+
$else
58+
Down $IF (!%%EditFindSave) %%EditFindType=dlg.getvalue(dlg.getvalue(0,6),0); $END Space
59+
$end
60+
Tab $IF (!%%EditFindSave) %%EditFindRevr=dlg.getvalue(dlg.getvalue(0,6),0); $END Subtract
61+
%%EditFindSave=1;
62+
$end
63+
//Enter // Execute find from current pos
64+
Tab Tab Enter
65+
// When string not found
66+
$if (Dialog)
67+
%%EditFindLeap=""; // reset leap search string
68+
$WHILE (Dialog) %mm=mmode(1,0); %VK=waitkey(0,0); eval(%VK) mmode(1,%mm) $END //Ждем закрытия диалога.
69+
$end
70+
F11 menu.select("Editor Find",2) Enter Enter CtrlY CtrlDown $IF (ItemCount>1) ShiftDel Esc $Else ShiftDel $End //чистим историю.
71+
Esc
72+
}}
73+
74+
macro
75+
Descr="Leap search for EditFind - reset search buffer/clear marks"
76+
Area="Editor"
77+
key="RAltBS"
78+
{{
79+
%%EditFindLeap="";
80+
callplugin(#%EditFind,10)
81+
CtrlU
82+
$IF (%%EditFindSave) //Восстанавливаем настройки.
83+
F11 menu.select("Editor Find",2) Enter Enter
84+
CtrlY
85+
Tab $IF (%%EditFindCase) Add $ELSE Subtract $END
86+
Down $REP(%%EditFindType-1) Down $END Space
87+
Tab $IF (%%EditFindRevr) Add $ELSE Subtract $END
88+
Enter
89+
%%EditFindSave=0;
90+
$END
91+
}}
92+
93+
macro
94+
Descr="Leap search for EditFind - reset search buffer"
95+
Area="Editor"
96+
key="RAlt:Up"
97+
{{
98+
%%EditFindLeap="";
99+
//callplugin(#%EditFind,10)
100+
//CtrlU
101+
}}

Addon/EditFindLeap.txt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
 Собранный на скорую руку "Leap" для EditFind. (с) Maximus5
2+
Поиск идет одновременно по двум языкам через xlat.
3+
4+
Как пользоваться:
5+
нажать RAlt и не отпуская набирать текст
6+
при отпускании RAlt буфер поиска сбрасывается
7+
8+
Чего пока нет
9+
- некоторые русские буквы игнорируются (хъжэю)
10+
- расчитан на английский интерфейс
11+
12+
Чего хочется от EditFind
13+
- установку флажков хорошо бы через callplugin сделать, например
14+
callplugin(#%EditFind,"Case:0;Mode:Substring;Reverse:0")
15+
- возможность звать поиск плагина напрямую (с установленными флажками), через callplugin, например
16+
callplugin(#%EditFind,"FindText:"+%%EditFindLeap)
17+
18+
2010.02.17
19+
Исправлено
20+
+ работают все русские буквы и даже "Ё" //SimSU
21+
+ развяано с языком интерфейса //SimSU
22+
Добавлено
23+
+ очистка истории - а то вся очередь набора сохранялась в истории и пользоваться ей становилось невозможно //+SimSU
24+
+ запоминание и восстановление пользовательских настроек поиска //+SimSU
25+
26+
2010.02.18
27+
Исправлено
28+
+ забыли про букву "Б" //SimSU
29+
+ немного магии для работы xlat с текстом начинающимся не с буквы //+SimSU (наткнулся при написании аналогичного макроса "EDITOR IncrementSearch").

Addon/EditFindLeap.v2.fml

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
//
2+
// ��������������� ����� ��� ������� EditFind. (�) Maximus5, SimSU, Max Rusov
3+
//
4+
// ��� ������������:
5+
//
6+
// ������ RAlt � �� �������� �������� �����. ����� ���� ������������ �� ���� ������ ����� xlat.
7+
// RAltBS - ������� ��������� ��������� ������.
8+
// RAlt - �������� ��������� �����
9+
// ��� ����������� ������ ������/����� ������������ ��������������� ������� ������� EdtFind
10+
//
11+
// ��������� EdtFind v.8+
12+
// http://code.google.com/p/far-plugins/wiki/EdtFind
13+
//
14+
15+
16+
const EdtFind = 0x444E4645
17+
const RemoveHilight = 8
18+
19+
;; Set to 0 to disable xlat(two language) search with RegExp
20+
const UseXLat = 1
21+
;;
22+
const HilightFrom = 2
23+
24+
25+
macro Descr = "Edt Find: Leap search begin" Area = "Editor" Key = "RAlt:Down"
26+
{{
27+
%%EditFindLeap = "";
28+
}}
29+
30+
31+
macro
32+
Descr="Edt Find: Leap search continue"
33+
Area="Editor"
34+
Bind="RAltA RAltB RAltC RAltD RAltE RAltF RAltG RAltH RAltI RAltJ RAltK RAltL RAltM RAltN RAltO RAltP RAltQ RAltR RAltS RAltT RAltU RAltV RAltW RAltX RAltY RAltZ"
35+
Bind="RAlt1 RAlt2 RAlt3 RAlt4 RAlt5 RAlt6 RAlt7 RAlt8 RAlt9 RAlt0"
36+
Bind="RAlt[ RAlt] RAlt; RAlt' RAlt` RAlt. RAlt, RAlt- RAltShift- RAlt= RAltShift= RAltShift`"
37+
Bind="RAltShift1 RAltShift2 RAltShift3 RAltShift4 RAltShift5 RAltShift6 RAltShift7 RAltShift8 RAltShift9 RAltShift0"
38+
Bind="RAltBS"
39+
{{
40+
$if (!callplugin(#%EdtFind, ""))
41+
// MsgBox("Error", "EdtFind plugin not installed")
42+
$exit
43+
$end
44+
45+
%s = substr(Key(#AKey), 4);
46+
47+
%Opt = "Loop:0 Error:0 ";
48+
49+
$if (%s == "BS")
50+
%%EditFindLeap = substr(%%EditFindLeap, 0, len(%%EditFindLeap)-1); //��� �� � 1803 ��������.
51+
$if (%%EditFindLeap == "")
52+
CallPlugin(#%EdtFind, #%RemoveHilight)
53+
$exit
54+
$end
55+
$else
56+
$if (%%EditFindLeap == "")
57+
%Opt = %Opt + "Entire:1 ";
58+
$end
59+
60+
$IF (%s == "Shift-") %s = "_"; $END
61+
$IF (%s == "Shift=") %s = "+"; $END
62+
$IF (%s == "Shift0") %s = ")"; $END
63+
$IF (%s == "Shift9") %s = "("; $END
64+
$IF (%s == "Shift8") %s = "*"; $END
65+
$IF (%s == "Shift7") %s = "&"; $END
66+
$IF (%s == "Shift6") %s = "^"; $END
67+
$IF (%s == "Shift5") %s = "%"; $END
68+
$IF (%s == "Shift4") %s = "$"; $END
69+
$IF (%s == "Shift3") %s = "#"; $END
70+
$IF (%s == "Shift2") %s = "@"; $END
71+
$IF (%s == "Shift1") %s = "!"; $END
72+
$IF (%s == "Shift`") %s = "~"; $END
73+
74+
%%EditFindLeap = %%EditFindLeap + %s;
75+
$end
76+
77+
$if (len(%%EditFindLeap) < #%HilightFrom)
78+
%Opt = %Opt + "Highlight:0 ";
79+
$end
80+
81+
%Find = %%EditFindLeap;
82+
$if (#%UseXLat == 1)
83+
%XFind = xlat("Z"+%Find); // �������� ������������ xlat,
84+
%XFind = substr(%XFind,1); // � �� �� ������� ����� ������������ � ������
85+
$if (%XFind != %Find)
86+
%Find = "(\\Q" + %Find + "\\E)|(\\Q" + %XFind + "\\E)";
87+
%Opt = %Opt + "RegExp:1 ";
88+
$end
89+
$end
90+
91+
$if (!callplugin(#%EdtFind, %Opt + "Find " + %Find))
92+
%%EditFindLeap = substr(%%EditFindLeap, 0, -1);
93+
94+
%Find = %%EditFindLeap;
95+
%Opt = "";
96+
$if (#%UseXLat == 1)
97+
%XFind = xlat(%Find);
98+
$if (%XFind != %Find)
99+
%Find = "(\\Q" + %Find + "\\E)|(\\Q" + %XFind + "\\E)";
100+
%Opt = %Opt + "RegExp:1 ";
101+
$end
102+
$end
103+
callplugin(#%EdtFind, %Opt + "Mark " + %Find)
104+
105+
Beep(0x10)
106+
$end
107+
}}
108+
109+
110+
macro Descr="Edt Find: Leap search cancel" Area="Editor" key="RAlt:Release"
111+
{{
112+
CallPlugin(#%EdtFind, #%RemoveHilight)
113+
//CtrlU
114+
}}

0 commit comments

Comments
 (0)