ВСЕМ КОДЕРАМ
Есть идея: добавить в abbrev-lang (на уровне ядра SciTE) два параметра - выделенный текст и буфер клип боарда (например %selected_text% и %clipboard_text%).
Это даст определенную гибкость:
(допустим у нас в буфере обмена: State In [dsEdit,dsInsert])
например если выделить следующий текст, и нажать ctrl+B произойдет следующее:
if with dxDBInspector.DataSource.DataSet do
begin
dxDBInspector.DataSource.DataSet := Nil;
RxRichEdit1.Text := '';
end;
SciTE должен (его нужно научить ) выделить первое слово (if), определить что оно - аббревиатура, убить ее из выделенного текста и вставить все с соответствующими правилами...
например pascal.abbrev:
if=if (%clipboard_text%|) then \nbegin%selected_text%\nend;
тогда получим следующую штуку:
if (State In [dsEdit,dsInsert]) then
begin
with dxDBInspector.DataSource.DataSet do
begin
dxDBInspector.DataSource.DataSet := Nil;
RxRichEdit1.Text := '';
end;
end;
если же выделенного текста нет - сработать "по-старому"
Удобно...
У меня есть старая, немного кривая реализация всего этого дела на lua, я ее подправлю и выложу, если вдруг кому интересно, там еще то время было, когда аббревиатуры нельзя было хранить для разных языков, поэтому пришлось извращаться и делать псевдо-abbrev, которые динамически подгружались. Еще для оргомных файлов сильно тормозило..
Есть идея: добавить в abbrev-lang (на уровне ядра SciTE) два параметра - выделенный текст и буфер клип боарда (например %selected_text% и %clipboard_text%).
Это даст определенную гибкость:
(допустим у нас в буфере обмена: State In [dsEdit,dsInsert])
например если выделить следующий текст, и нажать ctrl+B произойдет следующее:
if with dxDBInspector.DataSource.DataSet do
begin
dxDBInspector.DataSource.DataSet := Nil;
RxRichEdit1.Text := '';
end;
SciTE должен (его нужно научить ) выделить первое слово (if), определить что оно - аббревиатура, убить ее из выделенного текста и вставить все с соответствующими правилами...
например pascal.abbrev:
if=if (%clipboard_text%|) then \nbegin%selected_text%\nend;
тогда получим следующую штуку:
if (State In [dsEdit,dsInsert]) then
begin
with dxDBInspector.DataSource.DataSet do
begin
dxDBInspector.DataSource.DataSet := Nil;
RxRichEdit1.Text := '';
end;
end;
если же выделенного текста нет - сработать "по-старому"
Удобно...
У меня есть старая, немного кривая реализация всего этого дела на lua, я ее подправлю и выложу, если вдруг кому интересно, там еще то время было, когда аббревиатуры нельзя было хранить для разных языков, поэтому пришлось извращаться и делать псевдо-abbrev, которые динамически подгружались. Еще для оргомных файлов сильно тормозило..