[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

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

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

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

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация: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 с любыми текстовыми манипуляциями.

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

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

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

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

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

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

[Цитировать]

    avalat
  • 222
  • Стаж: 9 лет 2 месяца
  • Сообщений: 449
  • Репутация:127

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


Последний раз редактировалось: avalat (2020-02-04 18:09), всего редактировалось 1 раз

[Цитировать]

    nikzzzz
  • 215
  • Стаж: 9 лет 2 месяца
  • Сообщений: 3114
  • Репутация:127

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

[Цитировать]

    avalat
  • 222
  • Стаж: 9 лет 2 месяца
  • Сообщений: 449
  • Репутация:127

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


Последний раз редактировалось: avalat (2020-02-07 22:08), всего редактировалось 1 раз

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

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

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

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

[Цитировать]

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

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

[Цитировать]

    avalat
  • 222
  • Стаж: 9 лет 2 месяца
  • Сообщений: 449
  • Репутация:127

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


Последний раз редактировалось: avalat (2020-11-01 22:26), всего редактировалось 1 раз

[Цитировать]

    puhpol
  • 2
  • Стаж: 9 лет 4 месяца
  • Сообщений: 888
  • Репутация:73

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

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

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

Страница 3 из 4


Показать сообщения:    

Текущее время: 28-Мар 14:30

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы