WikidPad support in CudaText + Tree view & find + Markdown

mix-7
Posts: 1041
Joined: 11.05.2018 11:02

Re: WikidPad support in CudaText + Tree view & find + Markdown

Post by mix-7 »

"Стянул" уже готовый в лексере WikidPad. (Примерно (очень примерно) ясно, но посмотрю потом пояснение на https://regex101.com/
~/.config/cudatext/data/lexlib/WikidPad.lcf

Code: Select all

item
      DisplayName = 'CamelCaseWords'
      StyleName = 'Link'
      TokenType = 5
      Expression = '(?-i)[A-Z][a-z]\w*[A-Z][a-z]\w* (!\w+)?'
      ColumnFrom = 0
      ColumnTo = 0
    end
~/.config/cudatext/data/lexliblite/WikidPad.cuda-litelexer

Code: Select all

{
  "about": "WikidPad lite lexer",
//"about": "tst lexer",
  "files": "*.wiki",
  "case_sens": false,
  "consider_spaces": true,
  "rules": {
    "success": {
      "regex": "^\\++.*",
      "style": "LightBG3"
    }
  }
}

Попробую завтра подставить по примеру ~/.config/cudatext/data/lexliblite/SQL.cuda-litelexer
main Alexey
Posts: 2807
Joined: 25.08.2021 18:15

Re: WikidPad support in CudaText + Tree view & find + Markdown

Post by main Alexey »

ну да,примерно так надо делать. готовый в лексере. он должен заработать (хотя в лайт-лексер юзается не тот же самый regex engine, а TRegExpr, но наверно заработает если assertions не сильно хитрые).
mix-7
Posts: 1041
Joined: 11.05.2018 11:02

Re: WikidPad support in CudaText + Tree view & find + Markdown

Post by mix-7 »

С помощью ИИ такой WikidPad ^ lite lexer

Code: Select all

{
  "about": "WikidPad lite lexer",
  "files": "*.wiki",
  "case_sens": true,
  "consider_spaces": true,
  "rules": {
    "success": {
      "regex": "^\\++.*",
      "style": "LightBG3"
    },
    "camelcase": {
      "regex": "\\b(?:[A-ZА-ЯЁ][a-zа-яё0-9]*[A-ZА-ЯЁ][a-zа-яё0-9]*)+(!\\w+)?\\b",
      "style": "Keyword"
    }
  }
}
не работает
Нужно: подсветка и обработку клика
Нет ли инструкции?
main Alexey
Posts: 2807
Joined: 25.08.2021 18:15

Re: WikidPad support in CudaText + Tree view & find + Markdown

Post by main Alexey »

инструкция по ключам lite lexer? и так все понятно. или инструкция по TRegExpr engine? она тут- ой, ошибка 404, страница пока лежит.

попробуйте сделать regex без Рус-букв. и когда он сработает на инглише, то потом уже задайте вопрос как добавить Рус.
mix-7
Posts: 1041
Joined: 11.05.2018 11:02

Re: WikidPad support in CudaText + Tree view & find + Markdown

Post by mix-7 »

> инструкция по ключам lite lexer? и так все понятно.

Нет, не совсем, нужен хотя бы текстовый Lite-лексер с описанием полей.
Как, например, вызвать обработчик двойного клика по CamelCase или по заголовку "^\\++.*" ?
Как подсветить CamelCase?
main Alexey
Posts: 2807
Joined: 25.08.2021 18:15

Re: WikidPad support in CudaText + Tree view & find + Markdown

Post by main Alexey »

1. Как подсветить CamelCase--- нужен regex ловящий именно camelcase. вам ИИ дал почти то что нужно но видимо из-за Рус букв не работает в Куде. дайте ему задачу дать regex только для инглиша. потом погоняйте этот regex на regex-tester-site https://regex101.com

2. вызвать обработчик двойного клика по CamelCase или по заголовку--- посмотрите как это делает плагин WikidPad_Helper.
mix-7
Posts: 1041
Joined: 11.05.2018 11:02

Re: WikidPad support in CudaText + Tree view & find + Markdown

Post by mix-7 »

1,2 - спасибо!

Нашел для Camel Case (оказывается, это Pascal Case, но мне название Camel Case привычнее)
информацию в Google и с помощью https://regex101.com/ отладил такое регулярное выражение
[А-ЯA-Z]([а-яa-z0-9]+[А-ЯA-Z]+[а-яa-z0-9]+)
Но в лайт лексере оно не работало.
Тогда решил убать латински символы:
"regex": "[А-Я]([а-я0-9]+[А-Я]+[а-z0-9]+)",
удивительно, что оно ловит и латинские символы.
Непонятно только, почему выделяет только первые две группы:
ГруПпа из ГруПпаПаПа, например.
В общем, с этим пока решено.

У меня в лайт лексере не работал двойной клик по CamelCase word,
хотя в ~/.config/cudatext/py/cuda_wikidpad_helper/install.inf
его указал:
lexers=WikidPad,WikidPad^
Думал, из-за того, что нет выделения.
Но в лексере WikidPad не описана эта реакция, она в функции
~/.config/cudatext/py/cuda_wikidpad_helper/__init__.py
Потом в с Statusbar обратил внимание на пробел перед ^:
lexers=WikidPad,WikidPad ^
ЗАРАБОТАЛО! Какое щастье!

В общем, пора переходить к обработке линков (переходу по ссылке).
Линки (ссылки) делаю пока с помщью макро.
Они имеют такой формат:
ИмяФайла.wiki ++ Заголовок ноды [timestamp]
[timestamp] - необязательны штамп времени

Ну какие еще функции, какие напридумываю.

Вопрос.
1. Helper лексера может создавать в Меню новый пункт с подпунктами?
2. Когда инициализируется лексер?
Например, я внес изменения в лайт лексер, как их применить без перезапуска CudaText?
3. Где найти значения для "style": лайт лексера?
4. Лайт лексер на Python'е. Не будет ли тормозов от многих стилей на больших файлах?
main Alexey
Posts: 2807
Joined: 25.08.2021 18:15

Re: WikidPad support in CudaText + Tree view & find + Markdown

Post by main Alexey »

>Непонятно только, почему выделяет только первые две группы: ГруПпа из ГруПпаПаПа, например.

надо добавить в конец regex: \w*
то есть все ворд-символы.


>Helper лексера может создавать в Меню новый пункт с подпунктами?

что такое helper лексера? плагин с именем *helper*? плагин может создавать.
есть menu_proc() и ему можно дать хендл right-click-menu, AFAIR этот хендл "text".

====menu_proc - Menu id====
Value of "id_menu" can be:
* number, str(number): all menu items can be specified by unique int value
* "top": top menu
* "top-file": top menu "File" submenu
* "top-edit": top menu "Edit" submenu
* "top-sel": top menu "Selection" submenu
* "top-sr": top menu "Search" submenu
* "top-view": top menu "View" submenu
* "top-op": top menu "Options" submenu
* "top-help": top menu "Help" submenu
* "text": editor context menu
* "tab": tab header context menu
* "toolmenu:"+name: dropdown submenu of toolbar button


>я внес изменения в лайт лексер, как их применить без перезапуска CudaText?

lexer_proc(LEXER_REREAD_LIB) есть, но я не помню работает ли оно для лайт лексеров. если не работает то никак.


>3. Где найти значения для "style": лайт лексера?

dialog "Options / Themes / Settings-theme-syntax".


>4. Лайт лексер на Python'е. Не будет ли тормозов

а что такое лайт-лексер на питоне? лайт-лексеры это json файлы.
Post Reply