Архив SciTE-форума
Автор: mozers, Отправлено:09:11 01-09-2006
unreal666
Все лексеры перечислены в файле scintilla\include\Scintilla.iface (см. исходники).
Т.е. циферки в моем скрипте можно бы даже заменить SciTE константами:
Код:
|
......, [SCLEX_PYTHON] = "python", [SCLEX_CPP] = "cpp", [SCLEX_HTML] = "hypertext", [SCLEX_XML] = "xml", [SCLEX_PERL] = "perl", ......, |
Автор: gansA, Отправлено:11:57 01-09-2006
mozers
Цитата:
| Поместить пробел и табуляцию в квадратных скобках |
Блин стормозил, но ничего готова новая верися
, тока это уже не "хайку".Что делает: - удаляет все отступы, все позторяющиеся пробельные символы, грохает пустые строки. Где применять уж сами решите ))).
Собсно startup.lua
Цитата:
|
--// trim all space function TrimAllSpace(strCmd) local bF=0; local textOut=''; local text=editor:GetSelText(); if string.len(text)==0 then bF=1; text=editor:GetText(); end; text=text..'\n'; for str in string.gfind(text,'((.-)\r?\n)') do textOut=textOut..FormatString(str,strCmd) end textOut=string.gsub(textOut,'(.+)\n','%1') --//trace(textOut) --// debug if bF==0 then editor:ReplaceSel(textOut); else editor:SetText(textOut); end; return 0; end function FormatString(str, strCmd) if strCmd == 'trim' then str=string.gsub(str,'[ ]+',' '); --// удаление повторяющихся символов str=string.gsub(str,'^ *(.-) *','%1'); --// удаление пробелов в нач. конце строки end str=string.gsub(str,'^(%s*)$',''); --// удаление пустых строк return str; end |
В str=string.gsub(str,'[ ]+',' '); содержатся знак пробела и знак табуляции.
И SciTEGlobal.properties
Цитата:
|
command.name.7.*=Trim all spaces command.7.*=dostring TrimAllSpace('trim') command.mode.7.*=subsystem:lua,savebefore:no command.shortcut.7.*=Shift+Space command.name.8.*=Drop Empty Line command.8.*=dostring TrimAllSpace('drop') command.mode.8.*=subsystem:lua,savebefore:no command.shortcut.8.*=Alt+Space |
Автор: mozers, Отправлено:23:47 01-09-2006
Задачи и вопросы для программистов:
- Как бы увеличить допустимую длину строки в параметре statusbar.text.1 ?
(Хочется видеть сразу и много, поэтому писать в statusbar.text.2 и другие уже не так интересно)
- Мечталось бы модернезировать функцию ParametersDialog(VladVRO) вызова настраиваемого диалога ввода, в которой можно было бы задать кол-во входных полей, надписи к ним (опционально), общую надпись (опционально), список кнопок.
- Реализовать перетаскивание закладок мышью (подробнее...)
- Необходимо добавить новый эвент onClick(keycode), который бы позволил не только отслеживать одинарные клики мыши, но и анализировать код нажатой(нажатых) в данный момент клавиш.
(mimir уже добавил onDoubleClick(Ctrl,Shift,Alt) так что путь известен...)
- Как сделать ВСЕ меню SciTE (а не только Tools) полностью настраиваемым.
Задачи для любителей:
- Необходим полный и корректный перевод HELPа на русский язык. Сделайте малое - переведите хотя бы один абзац. А ваш друг переведет другой. А кто то сможет изложить более грамотно и понятно переведенные ранее части

- Необходимы полные откорректированные, удобные и отлаженные файлы API и сокращений (abbrev) для различных языков программирования.
- Необходимы удобные и полезные скрипты. На lua, vbs, js или другом каком языке они будут написаны - это уже не важно.
- Необходимо снабдить подробными и понятными комментариями все файлы настроек
- Есть задача обновления материала, размещенного на сайте. Например, многие скрипты там размещенные, уже давно обновились и обрели новые возможности...
В общем - творите, делитесь результатом, и ваше имя навсегда останется в памяти благодарных пользователей
Автор: Moon_aka_Sun, Отправлено:04:32 02-09-2006
mozers
Цитата:
| Да и вообще как выполнить любую команду меню? |
Я так понимаю, что и сам SciTE, и расширение (Луа), являются как бы надстройкой над Scintilla. И тот и другой имеют доступ к функциям редактирования и т.п. В редакторе можно контролировать расширение (подключать/отключать, запускать и т.д.), но сам редактор не выдаёт никакого API для доступа к себе. Или выдаёт, но очень ограниченный (ххххх: команды?). Может это всё и не так - я всей документации не читал и не пытался во всём разобраться. Я бы предложил спросить об этом у Hodgson'а.
mozers
Цитата:
| В меню Tools отсутствует возможность вставлять разделители и делать подменю. |
Тот же Mitchell Foral это сделал. При вызове команды из Тулз, показывается новое меню - из Луа, по-моему. Разделители - да, этого нет. Это надо код SciTE править. Если у меня число пунктов перевалит за 30, то можно было бы и посмотреть, должно быть не сложно сделать пустую команду с именем '-' и превращать её в разделитель.
mozers
Цитата:
| Необходим единый список всех клавиатурных комманд SciTE |
У меня есть мой список, но я немного поменял и KeyMap.cxx в Scintill'e, и SciTEProps.cxx и SciTERes.rc в SciTE. Лучше, конечно, собрать было изменения в одном-двух местах, но так уж исторически вышло - зачем опряделять какие-то команды внизу, когда всё равно я их буду переопределять, и всё равно всё перекомпилировать. В общем, своё могу доработать и облагородить, а оригинальные - нет. Работы там, кстати, для энтузиастов немного, практически все файлы я уже назвал.
Цитата:
| макросы? |
Если включить при компиляции (или можно из расширения), то в меню появятся 4 команды, привязанные к F9, но они вызывают функции из расширения. Т.о. если их просто включить в исходнике, то без реального обработчика они ничего не делают. Есть filerx или как он там назывался - организатор сессий, но и макро в нём есть. Довольно неудобное и чужеродное средство по-моему, в общем, у меня не пошло. А делать макро на С - работы там довольно много, за вечер не сделаешь.

В свою очередь, тоже хочу спросить. Я видел где-то упоминание, что можно открыть две панели (или два таба?) и редактировать в них один и тот же файл в разных местах. Это было, по-моему, в общем описании принципиальных возможностей Scintill'ы, но точно уже не помню. Никто не владеет вопросом?
Автор: Moon_aka_Sun, Отправлено:11:05 02-09-2006
Цитата:
| В меню Tools отсутствует возможность вставлять разделители |
Это оказалось проще всего, если мы условимся, что те пункты, которые должны идти после (ниже) разделителя, начинаются с минуса (который не показывается, конечно). Такое соглашение не позволит поставить черту перед (выше) Stop Executing/Ctrl+Break, но он всё равно обычно засерен и после него идёт черта, так что это как раз не страшно.
Итак, в SciTE.h надо вставить новый ид, например,
Код:
|
#define IDM_PREVMSG 307 #define IDM_TOOLS_SEP 308 #define IDM_MACRO_SEP 310 |
В SciTEBuffers.cxx надо добавить код вместо строки 1062 (тоже выделено жирным)
Код:
|
if (commandName.length()) { //G-: +++ add separator if command.name starts with '-' int skip_1st_char = 0; if( commandName[0] == '-' ) { SetMenuItem(menuTools, menuPos++, IDM_TOOLS_SEP, ""); skip_1st_char = 1; } SString sMenuItem = commandName.c_str() + skip_1st_char; //G-: --- prefix = "command.shortcut."; |
И перекомпилировать

Тогда можно писать в главных пропертиз:
Код:
|
command.name.1.*=-&Fill Rectangle command.1.*=*fill_rectangle text:$(1) incr:$(2) command.mode.1.*=subsystem:lua,savebefore:no |
Будет отделено от находящегося выше Go/F5.
Upd.: Добавляет корректно только два сепаратора. Больше - почему-то не хочет.
Автор: mozers, Отправлено:21:07 02-09-2006
Moon_aka_Sun
Цитата:
| но сам редактор не выдаёт никакого API для доступа к себе |
Код:
| scite.SendEditor(SCI_constant, ...) - sends a message to the editor pane |

Спрашивать у Нейла для меня - все равно что идти на прием к зубному врачу...

Цитата:
| При вызове команды из Тулз, показывается новое меню - из Луа, по-моему |

Цитата:
| Разделители - да, этого нет |
В Windows, мол, работать будет, а в GTK - нет. (вариант что это можно сделать только для пользователей Виндов ему как то в голову не пришел 
Цитата:
| Если у меня число пунктов перевалит за 30 |
Надо добавить в "пожелания" увеличить это число хотя бы до 100.Цитата:
| У меня есть мой список |
Все никак не дойдут руки причесать... Наверное надо убрать это из пожеланий - сам займусь...Цитата:
| то в меню появятся 4 команды, привязанные к F9, но они вызывают функции из расширения. Т.о. если их просто включить в исходнике, то без реального обработчика они ничего не делают. |
Делать кнопки для магнитофона которого нет??? Очень странно это...
Цитата:
| Я видел где-то упоминание, что можно открыть две панели (или два таба?) и редактировать в них один и тот же файл в разных местах |
Могу прислать весь архив официальной эхи в формате TheBat! - может поможет?Цитата:
| Это оказалось проще всего, если мы условимся, что те пункты, которые должны идти после (ниже) разделителя, начинаются с минуса |
УРА!!! - сбылась мечта!

Гениальная идея - не делать лишний пункт меню, а писать - в существующих
(а то и так нумеров не хватает).Главное - начать, а ошибки, я думаю, ты найдешь и исправишь (или кто другой поможет).
Пока, будем честны, все выглядит достаточно сыро... 2 разделителя, Ctrl+Break у меня вдруг улетел наверх и встал 5м пунктом...
В общем, с нетерпением жду исправленный вариант

Автор: Moon_aka_Sun, Отправлено:00:50 03-09-2006
Цитата:
| Не видел такого. Ссылочку можно? |
Да у того же Форала (http://caladbolg.net/scite.php)
Например, http://caladbolg.net/tools/sc/scite_file_browser.html
Цитата:
| Ctrl+Break у меня вдруг улетел наверх и встал 5м пунктом... |
У меня это происходит, когда вставляешь третью полоску - вместо неё подхватывается Ctrl+Break. Но разбираться с этим не буду - пусть "настоящие" виндовс-программисты займутся. Наверняка там что-то очень простое, но надо знать виндовс GUI API и его тонкости и заскоки. Буду как Нейл говорить, что "это очень сложно"

Цитата:
| scite.SendEditor(SCI_constant, ...) |
А может туда можно и IDM_command пихнуть? Хотя вряд ли, конечно.
Есть ещё Director Interface. Туда точно можно любую менюшную команду подать - с помощью menucommand:...
Автор: ALeXkRU, Отправлено:01:21 03-09-2006
mozers
21:07 02-09-2006
Цитата:
|
Не понимаю тогда зачем они вообще... Командой из меню Tools нельзя что ли внешний "магнитофон" для записи нажатий на клавиши запустить? Делать кнопки для магнитофона которого нет??? Очень странно это... |
может он это на будущее делал... а довести - руки не дошли...
В принципе, в Notepad++ макросы работают... а он же на том же движке.. можно попробовать портировать...
Автор: Moon_aka_Sun, Отправлено:01:38 03-09-2006
Цитата:
| На меня уже давно давит ограничение в 50 пунктов Надо добавить в "пожелания" увеличить это число хотя бы до 100. |
File scite\src\SciTEBase.h, Line 488:
Код:
| enum { toolMax = 50 }; |
Moжно увеличить, но должно оставаться не более 100, т.к. в другом месте зашито ограничение на число элементов в меню, вернее, со 101-го элемента начнутся пункты из другого меню.
Добавлено 20060902-2040:
mozers
Цитата:
| В SciTE нет возможности создать невидимую в меню Tools команду. |
Там довольно глупая система. Для каждого(!) нажатия клавиши просматриваются список user.shortcuts и меню Tools и Language, все их элементы, ищутся определения клавиш, парсятся(!) каждый раз их текстовые описания (кроме Tools, там уже разобранные значения клавиш) и сравниваются с нажатой клавишей. Другого хранилища клавиш нет. Поэтому если элемента не будет в меню, то и определения binding'a как бы и нет. В user.shortcuts можно хранить только команды IDM_ и SCI_.
Проще, наверное, добавить возможность вызова луа-фунций из user.shortcuts, но тогда надо добавить туда хоть чуть-чуть из системы savebefore:no и т.п. Другой путь - добавлять в меню Tools, но не показывать. Но, насколько я помню, в Виндовс нет такого. Третий путь - создать отдельную структуру.
ПС. Я сейчас третьим и занимаюсь
Upd. Даже работает 
ППС. Ёлки, команды, вызываемые из Tools, получают уже готовые
props.CurrentWord
props.CurrentSelection
props.SelectionStartLine
props.SelectionStartColumn
props.SelectionEndLine
props.SelectionEndColumn
Нигде не описано, поэтому каждый в каждой своей функции добывает их заново

Автор: mozers, Отправлено:12:35 03-09-2006
Moon_aka_Sun
Цитата:
| Например, http://caladbolg.net/tools/sc/scite_file_browser.html |
Цитата:
|
> Ctrl+Break у меня вдруг улетел наверх и встал 5м пунктом... У меня это происходит, когда вставляешь третью полоску - вместо неё подхватывается Ctrl+Break. Но разбираться с этим не буду - пусть "настоящие" виндовс-программисты займутся. |

Цитата:
| enum { toolMax = 50 }; |

Цитата:
| В user.shortcuts можно хранить только команды IDM_ и SCI_ |
Цитата:
| добавить возможность вызова луа-фунций из user.shortcuts |
Делать это напрямую "добавляя туда хоть чуть-чуть из системы savebefore:no и т.п." мне кажется - некрасиво.
Цитата:
| Третий путь - создать отдельную структуру. |
Поэтому структура, на мой взгляд, должна выглядеть приблизительно так:
Код:
|
userproc.IDM.10.*=IDM_UPRCASE userproc.10.*=dostring case="U" dofile(props["SciteDefaultHome"].."\\tools\\ChangeCase.lua") userproc.mode.10.*=subsystem:lua,savebefore:no userproc.IDM.11.*=IDM_LWRCASE userproc.11.*=dostring case="L" dofile(props["SciteDefaultHome"].."\\tools\\ChangeCase.lua") userproc.mode.11.*=subsystem:lua,savebefore:no |
Запрос к ней должен идти при вызове соответствующих команд (IDM_UPRCASE, IDM_LWRCASE).
ALeXkRU
Цитата:
| В принципе, в Notepad++ макросы работают... а он же на том же движке.. можно попробовать портировать... |
В общем, если записывать макро сразу в виде кода lua - очень сложно, то поддерживаю идею о портировании

Автор: Moon_aka_Sun, Отправлено:14:02 03-09-2006
Цитата:
| Да ну???. Приведи рабочий пример с SCI_ |
Где-то в коде есть анализ на больше-меньше, т.е. попадает в SCI_ или в IDM_. Или я это где-то краем глаза прочёл. А что, SCI_ там не работают? А надо?
Всё, что есть в SCI_, по-моему, доступно из Lua. Значит, скрипач не нужен (С).Цитата:
| Поэтому структура, на мой взгляд, должна выглядеть приблизительно так |
Это кому как. У меня она выглядит внутри как просто массив строк - определений кнопок, а снаружи - точно как command-структура, только называется shortcut. Естественно, name нет, вместо него key, а shortcut который прилагался к command, естественно, не нужен.
shortcut.key.0.*=Ctrl+0
shortcut.0.*=hello
shortcut.mode.0.*=subsystem:lua,savebefore:no
Таким макаром можно ещё 100 клавиш определить.
Кстати, оказалось, что чтобы определить обратную косую, надо 1) повторить её дважды, 2) следующая строка должна быть пустой. Т.е.
shortcut.key.99.*=Ctrl+\\
shortcut.99.*=duplicate_backslashes_in_selection
shortcut.mode.99.*=subsystem:lua,savebefore:no
Цитата:
| Запрос к ней должен идти при вызове соответствующих команд (IDM_UPRCASE, IDM_LWRCASE). |
Так это ж совсем другое - ты хочешь стандартные команды, вызываемые из меню, заменить на свои. А зачем этом может быть (действительно) нужно? В общем, с таким размахом надо в MultiEdit или Emacs переползать

Цитата:
| у Скайта |
Хм. Уж скорее SciTE похож на сцыте
Англичане читают скорее как сити или сайти.
Автор: mozers, Отправлено:14:51 03-09-2006
Цитата:
| SCI_ там не работают? |
Цитата:
| А надо? |

Дописываю потихоньку... IDM_ - числовое значение - шорткат - название в меню. Надо еще команды окна редактирования добивать - а они то не на IDM_ вешаются...
Цитата:
| ты хочешь стандартные команды, вызываемые из меню, заменить на свои. А зачем этом может быть (действительно) нужно? |
А зачем дублировать команды? У меня в меню "Правка" уже есть "Перевести в верхний/нижний регистр". Зачем мне видеть эту же команду в "Tools"? (а у меня там - улучшенный вариант, понимающий кирилицу).
Поэтому идеальный случай, чтобы при вызове соответствующей команды из меню "Правка" просто молча выполнялась не встроенная IDM_UPRCASE или IDM_LWRCASE а мой скрипт.
А вот скрыть из меню Tools какую то уникальную команду ни в каком другом меню не видимую... Не понимаю кому это может понадобится

Цитата:
| В общем, с таким размахом надо в MultiEdit или Emacs переползать |
Не... SciTE - гибче имхо...
Вот тут мне сегодня Shura здорово помог. Так что и пункт про утилу "позволяющую не только подавать команды в активное окно SciTE но и получать с него необходимые данные" можно будет скоро убрать

Таких плагинов с ее помощью понаделаем!!!...

Добавлено:
Moon_aka_Sun
Сейчас пришла мысль. Можно же сделать событие onMenuSelect(int itemID)!
Тогда подключать свои обработчики будет совсем просто

А, кстати, че такое OnExecute(const char *s); ???
Автор: Moon_aka_Sun, Отправлено:16:00 03-09-2006
Цитата:
| Не... SciTE - гибче имхо... |
О, нет. Это совершенно не так! Как сейчас говрят, даже рядом не стоял.
Автор: mozers, Отправлено:16:54 03-09-2006
Ладно, не будем спорить о том какой из редакторов лучше

Просто я "кинул идею". Если кому то она показалась интересной то он ее реализует. Нет - будем мучиться дальше

Вот, сейчас, причесывая список команд обнаружил ужасную несправедливость
(почему это раньше никогда в голову не приходило?):
На любой пункт меню можно с легкостью повесить свой шорткат (user.shortcuts=...)
Однако есть солидный список шорткатов редактора, охватывающие далеко не все доступные команды, которые и переназназначить то нельзя и дополнить довольно проблематично...
Ведь несправедливо же!
Ты сам сказал, что судя по коду, в user.shortcuts=... можно использовать не только IDM_ но и SCI_ команды. И это - логично и правильно. Так почему ни одна из SCI_ команд из user.shortcuts=... не работает???
Может Нейл просто лопухнулся маленько, а никто и не заметил?
Автор: Moon_aka_Sun, Отправлено:22:19 03-09-2006
mozers
Цитата:
| На любой пункт меню можно с легкостью повесить свой шорткат (user.shortcuts=...) |
По-моему, именно для этого user.shortcuts и делался. Кроме того, для посылки SCI_ команд Синтилле. Если оно теперь не работает, значит, где-то что-то сломалось. В коде проверка и ветвление есть (и память моя, значит, ещё помнит
).А для простой коррекции меню и шорткатов на нём достаточно любого редактора ресурсов
Автор: gansA, Отправлено:12:42 05-09-2006
Только сейчас заметил, что Scite стал хранить SciTE.recent и SciTE.ses в директории пользователя, ох как мне это не нравится
, после использования на машине остается следы, в случае работы с флешки.Пришлось опять изобретать константу.
Автор: mozers, Отправлено:15:38 05-09-2006
gansA
Угу. Сделать это новшество опциональным - верное решение. Поделись кодом?

Автор: g0re, Отправлено:22:57 05-09-2006
помогите ламеру

ни как не получается прикрутить перловую подсветку для файлов HTA
для скриптов в тегах
Код:
|
<script language="PerlScript"> ... </script> |
в файле html.properties прописал
keywords7.$(file.patterns.html)=$(keywordclass.perl)
в perl.properties
Код:
|
perl_keywords=\ NULL __FILE__ __LINE__ __PACKAGE__ __DATA__ __END__ AUTOLOAD \ BEGIN CORE DESTROY END EQ GE GT INIT LE LT NE CHECK abs accept \ ........ keywords.$(file.patterns.perl)=$(perl_keywords) keywordclass.perl=$(perl_keywords) |
ни чего не работает...
но если в html.properties
удалить все keywords*.$(file.patterns.html)=*
и оставить
keywords2.$(file.patterns.html)=$(keywordclass.perl)
то работает...
не понимаю ни чего.
как правильно прикрутить все это дело?
Автор: mozers, Отправлено:09:12 06-09-2006
g0re
Во-первых: не надо себя принижать

Во-вторых: Можно, конечно, помучиться и как то заставить лексер html посвечивать отдельные перловые слова.
Можно... Но зачем??? Ради того, чтобы одновременно видеть подсвеченным и html и perl код? Все равно или тот или другой не будут подсвечены путью.
Да и всякие фичи обычно привязаны к конкретному лексеру.
SciTE в любой момент времени работает только с одним лексером.
Т.е. что я предлагаю:
Не мучайся, а просто когда редактируешь перл код в своем файле, переключи лексер на Perl, а когда надумаешь тут же редактировать html - нажми F12 (если шорткат сам не переназначил) и все будет в шоколаде

Добавлено:
Не помню пробегала тут или нет ссылочка на еще одну сборку:
http://www.fw-web.de/download/scite-ide.zip [4089KB]
Немецкий товарищ Frank Wunderlich не равнодушен к Delphi (много настроек для этого языка).
В дистрибутив включены несколько его и не его утилит и даже HEX-редактор.
Скрипты кой какие имеются, api-файлы...
В общем, можно наковырять кой чего и для себя

ALL
Как заставить SciTE редактировать read-only файлы?
(точнее - сохранять в них отредактированный текст)
Автор: g0re, Отправлено:13:14 06-09-2006
mozers
а как же подсветка jscript, vbscript, php, phyton и т.п. в html?
или лексер под это заточен?
PS: если переключаться на подсветку perl синтаксиса, то все остальное становится ужасно страшных цветов и жутко напрягает
неужели все таки ни как нельзя настросить?
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
76 /
77 /
78 /
79 /
80 /
81 /
82 /
83 /
84 /
85 /
86 /
87 /
88 /
89 /
90 /
91 /
92 /
93 /
94 /
95 /
96 /
97 /
98 /
99 /
100 /
101 /
102 /
103 /
104 /
105 /
106 /
107 /
108 /
109 /
110 /
111 /
112 /
113 /
114 /
115 /
116 /
117 /
118 /
119 /
120 /
121 /
122 /
123 /
124 /
125 /
126 /
127 /
128 /
129 /
130 /
131 /
132 /
133 /
134 /
135 /
136 /
137 /
138 /
139 /
140 /
141 /
142 /
143 /
144 /
145 /
146 /
147 /
148 /
149 /
150 /
151 /
152 /
153 /
154 /
155 /
156 /
157 /
158 /
159 /
160 /
161 /
162 /
163 /
164 /
165 /
166 /
167 /
168 /
169 /
170 /
171 /
172 /
173 /
174 /
175 /
176 /
177 /
178 /
179 /
180 /
181 /
182 /
183 /
184 /
185 /
186 /
187 /
188 /
189 /
190 /
191 /
192 /
193 /
194 /
195 /
196 /
197 /
198 /
199 /
200 /
201 /
202 /
203 /
204 /
205 /
206 /
207 /
208 /
209 /
210 /
211 /
212 /
213 /

