[Quote]

    AZJIO
  • 17953
  • Longevity: 7 years 3 months
  • Posts: 1322
  • REPUTATION:127

    [+] [-]
73657Подсветка для PureBasic
Заметил что код подсвечивается как AutoIt3. Посмотрел внутри, там не удалены #comments-start и т.д.
Заметил что SynWrite похож на CudaText, но в CudaText шрифт Arial делается моноширинным, как и любой не моноширинный. И автор как я понял продвигает CudaText как новую разработку.

[Quote]

    nikzzzz
  • 215
  • Longevity: 10 years
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
avalat, aa
73657Подсветка для PureBasic
Сыровата пока, дерево практически не работает.
Да и шаблон Autoit выбран не совсем удачно, я обычно не пользуюсь готовым лексером, редактируя его под свои нужды, а таскаю отдельные элементы из других лексеров, и их правлю.
Ты бы выложил свою версию PeCmd, в выложенном мной моя старенькая версия, сделанная на скорую руку.
AZJIO,
73658Заметил что SynWrite похож на CudaText
Не похож, CudaText это его продолжение, с моей точки зрения не совсем удачное.
Автор слишком переувлекся плагинами, выкинув значительную часть возможностей, доступных в SynEdit, но плагин есть плагин, о нем надо знать, его надо ставить и настраивать, да и не все реализовано.
Особенно это коснулось настроек, да, все можно сделать, правя файлы конфигурации, но это настолько муторно, в SynWrite все было значительно удобнее и проще.
Выброшен редактор лексеров - одна из основных фишек, из-за чего я в свое время и подсел на него, инструменты могут быть добавлены специальным плагином, но опять же с урезанными возможностями.
Короче, заказывайте - сделаю, а инструментов не дам.

[Quote]

    AZJIO
  • 17953
  • Longevity: 7 years 3 months
  • Posts: 1322
  • REPUTATION:127

    [+] [-]
nikzzzz, что-то лексер замудрёный, в AkelPad обычная регулярка и понимаешь, что она будет искать от начала до конца, то есть как если бы прописывал поиск текста в диалоговом окне, а группы выделенные скобками их номера справа указываются цвета и стиль шрифта. Правила удобны - то что подсвечено помечается видимо флагом, поэтому второй проход следующей регулярки не затронет подсвеченное, кроме случая, если указать подсвеченное как родитель, то есть подсветить в подсвеченном, но не пересекать частично. В общем прозрачные правила. И там ещё куча флагов, которые не всегда понятны, но удобно подсматривать такие же в других лексерах. В общем GUI в SynWrite не проливает свет. И к тому же в AkelPad есть возможность создать переменные и указывать их в качестве цвета. Например взял список функций, заменил пробел, таки образом что получился форматированный столбец типа
0  0  ${IF}  0  False
0  0  ${IF}  0  True
вставил список в раздел ключевых слов, всё.
вот пример я подсветил параметры в лексерах SynWrite, то есть в файле lcf
1  "^(.+?)(=[ ]?)(?:(-?\d+$)|(True$|False$)|('[^\r\n]+'$)|([^\r\n]+$))"  "\1=(0,#AAAAAA,0)  \2=(0,#FF8080,0)  \3=(0,#F666FF,0)  \4=(0,#6588F7,0)  \5=(0,#BB8080,0)  \6=(0,#C0AD72,0)"
здесь в зависимости от значений параметров могут быть числа, логические True|False, текст в кавычках и остальной текст. Группами задал цвет.
Свёртки так
;513=1+512
513  0  0  0  "item"           "end"          "   "       0  0

пример PECMD регулярки для подсветки

; Функции
0  "(?:ITEM|EDIT|LABE|RADI)[ \t]+\K(\w+?)"  "\1=(0,${VAR},0)"
; Функции
0  "_SUB[ \t]+\K(\w+?)"  "\1=(0,#AAA6DB,0)"
; Вызов функции
0  "CALL[ \t]+\K(\w+?)"  "\1=(0,#AAA6DB,0)"
; Объявление переменных, объекты
0  "ENVI[ \t]+\K(\w+?)(\.\w++)+(?==)"  "\1=(0,${VAR},0)  \2=(0,#D9DD22,0)"
; Объявление переменных
0  "(?:ENVI|SET)[ \t]+\K(\w+?)(?==)"  "\1=(0,${VAR},0)  "
; Переменные, объекты
1  "([%&#$@]+\w++)(\.\w++)+"  "\1=(0,${VAR},0)  \2=(0,#D9DD22,0)"
; Переменные
1  "([%&#$@]+\w++%?)"  "\1=(0,${VAR},0)  "
; Шестнадцатеричные числа
1  "(-?0x[\dA-Fa-f]++)"  "\1=(0,#FF46FF,0)  "
; Координаты
1  "(L-?\d+T-?\d+W-?\d+H-?\d+)"  "\1=(0,#D997DE,0)  "
; Параметры
1  "(-\d++)(?!\w)"  "\1=(0,#FF46FF,0)  "
1  "(\$?-\w++)"  "\1=(0,#B7C46A,0)  "
Folds:
; свёртки
1  0  0  0  "{"       "}"       ""          0  0
;40=8+32
40  0  0  0  "_SUB"           "_END"          "   "       0  0
nikzzzz, в AkelPad можно плаги писать самому, это проще чем в Notepad++, несмотря на то что я начал писать при наличии примера-шаблона на PureBasic, а если бы не было то и задача была бы трудно достижимая. В AkelPad язык js, если поковыряться, то многое что можно написать, полноценный GUI с любыми текстовыми манипуляциями.

[Quote]

    nikzzzz
  • 215
  • Longevity: 10 years
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
AZJIO
Для меня редактор не самоцель, просто инструмент для работы.
Править все ручками конечно полезно, но времени много требует и сильно отвлекает.
Я не хочу сравнивать разные редакторы, это бессмысленно, каждый имеет преимущества и недостатки.
Та-же подсветка, к примеру, для меня не так важна, как дерево и сворачивание кода, кому-то эти функции вообще не нужны.
А вот отсутствие некоторых функций заставляет поставить крест на таком редакторе, как-бы он не был хорош.
SynWrite чем мне нравится - если чего-то недостает, несложно добавить это своими руками, в большинстве редакторов эта возможность отсутствует (не совсем точно, она в принципе есть почти везде, но слишком трудоемко).
К примеру, у меня есть какой то консольный обработчик текста, требуется создать команду, которая позволить заменить исходный текст на новоиспеченный.
В SynWrite это делается элементарно и напрямую без копирования текста в буфер и прочих шаманских танцев.
При этом не нарушается работа редактора, работает откат.
Не знаю, возможно ли это например в Notepad++ или AkelPad без написания специального плагина.

[Quote]

    AZJIO
  • 17953
  • Longevity: 7 years 3 months
  • Posts: 1322
  • REPUTATION:127

    [+] [-]
nikzzzz, в AkelPad это делается скриптом, консоль это всего лишь окно, есть пример как переназначить/перенаправить окно, получить его дескриптор и взять код в переменную обработать любыми функциями и вставить обратно. Я писал отдельный скрипт-пример обработки, можно в любой скрипт, который делает вывод в консоль поправить вывод, например скрипт поиска я сделал, что когда он выводит текст, подсвечивается искомое. Можно к консоли применить тему оформления, при чём её можно применить на лету, сделав несколько тем для разных случаев, например для вывода AutoIt3 и сделать свою подсветку вывода, удалить ненужные строки, когда AutoIt3 не позволяет заменять стандартный вывод или от PureBasic идёт в консоль лишняя инфа. Строки ошибки подсветить и т.д.

[Quote]

    AZJIO
  • 17953
  • Longevity: 7 years 3 months
  • Posts: 1322
  • REPUTATION:127

    [+] [-]
73662подсветка, к примеру, для меня не так важна, как дерево
В Notepad++ там линейный список, нет дерева. Там пишешь что надо выловить и оно выводится одним списком. В AkelPad есть похожесть с SynWrite, выводится дерево. В AkelPad дерево выводится на основе свёрток, то что указано в разделе Folds: то автоматом добавляется той же структурой в дерево. Не знаю насколько удобно, но я привык прыгать к функции, а уж условия в дереве мне не нужны, я и так их вижу в функции.
По поводу обработки вывода в консоли посмотри мой скрипт-пример (открывается как спойлер) и подсветки. А если интересно список скриптов которые я уже сделал, то здесь (со ссылками для просмотра)

[Quote]

    avalat
  • 222
  • Longevity: 10 years
  • Posts: 504
  • REPUTATION:127

    [+] [-]
Изменил название темы, добавил SynWrite
-------------------------------------------------------
nikzzzz, AZJIO,
В SynWrite с деревом для PECMD открыть все пункты что-то никак... Да, думаю, и не надо. Скудный выбор, только первая строка, переноса не нашел.
Разукрасил только слегка (для PB)


Last edited by avalat on 2020-02-04 18:09; edited 1 time in total

[Quote]

    nikzzzz
  • 215
  • Longevity: 10 years
  • Posts: 3114
  • REPUTATION:127

    [+] [-]
avalat,
73685В SinWrite с деревом для PECMD открыть все пункты что-то никак..
73685Скудный выбор, только первая строка, переноса не нашел.
Не понял.
И поправь SinWrite на SynWrite.

[Quote]

    avalat
  • 222
  • Longevity: 10 years
  • Posts: 504
  • REPUTATION:127

    [+] [-]
nikzzzz, Спасибо, поправил.
Я хотел в дереве сделать так
...       .
а ниже строку не вышло...           а вышло пока так


Last edited by avalat on 2020-02-07 22:08; edited 1 time in total

[Quote]

    AZJIO
  • 17953
  • Longevity: 7 years 3 months
  • Posts: 1322
  • REPUTATION:127

    [+] [-]
Для меня редактор не самоцель, просто инструмент для работы
Взаимосвязано, если редактор ограничивает, то и производительность маленькая, а значит в хорошем редакторе легче делать масштабные проекты. У PureBasic старая версия Scintilla из-за чего даже внешнюю обработку текста сделать сложнее, типа получить дескриптор Scintilla и внешними командами что-то сделать.

[Quote]

    AZJIO
  • 17953
  • Longevity: 7 years 3 months
  • Posts: 1322
  • REPUTATION:127

    [+] [-]
Сообщение от Alextp через личку:
Взял лексер для SynWrite из этой темы, сильно переделал (добавил правила, поменял старые, сделал новые стили и тд). Получился лексер для SynWrite + CudaText.
Для CudaText поддержка всех тем (и темных тоже).
Лексер назван как "PECmd script".
Установка в CudaText: Plugins / Addon Manager / Install, найти пункт PECmd, установить.
https://ibb.co/6s4cF6Z

[Quote]

    puhpol
  • 2
  • Longevity: 10 years
  • Posts: 891
  • REPUTATION:75

    [+] [-]
avalat, Приветствую! aa
Еще раз спасибо! Очень удобно. ay

[Quote]

    avalat
  • 222
  • Longevity: 10 years
  • Posts: 504
  • REPUTATION:127

    [+] [-]
Добавил в оба редактора прожку "Создать приложение"
.
Открыть в редакторе скрипт (.wcs или .wsc )
Вызвать:
В Notepad++ клавиша F6 или в меню "Макросы"
В SynWrite - в контекстном меню (правый клик) или в меню "Инструменты\Внешние инструменты" - "Создать приложение"
Вставить путь и имя приложения, выбрать иконку - "Выполнить". Проверить результат, вставить по надобности ResHacker-ом ресурс - (картинку и пр.)
Сохраняет последний путь к приложению и к иконке. Сохраняет последний скрипт (в папке ...\Res.1.wcs).
Проверьте на работоспособность,проверял не на всех ...


Last edited by avalat on 2020-11-01 22:26; edited 1 time in total

[Quote]

    puhpol
  • 2
  • Longevity: 10 years
  • Posts: 891
  • REPUTATION:75

    [+] [-]
avalat, Приветствую! aa
Спасибо. Попробую могет сегодня, отпишу.

[Quote]

    AZJIO
  • 17953
  • Longevity: 7 years 3 months
  • Posts: 1322
  • REPUTATION:127

    [+] [-]
nikzzzz, оказывается у AkelPad есть удобная фишка автозавершения - можно указать два имени, например
$(2)~Delay $(2)~задержка $(2)~пауза
Delay($[Time])
вводишь любое из слов для вставки конкретной функции. Вот pb.coder и список русифицированных строк
для PECMD это выглядело бы так:
$(2)~MESS $(2)~сообщение $(2)~мессага
MESS $[текст] $[@заголовок] $[#Кнопка] $[*Время] $[$$Кнопка по-умолчанию]
$(2)~WAIT $(2)~задержка $(2)~пауза
WAIT $[time]

Page 3 of 4


Display posts:    

Current time is: 22-Jun 21:49

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum