AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1324
- Репутация:127[+] [-]
|
73657Подсветка для PureBasic Заметил что код подсвечивается как AutoIt3. Посмотрел внутри, там не удалены #comments-start и т.д. Заметил что SynWrite похож на CudaText, но в CudaText шрифт Arial делается моноширинным, как и любой не моноширинный. И автор как я понял продвигает CudaText как новую разработку.
|
nikzzzz
- Стаж: 9 лет
- Сообщений: 3114
- Репутация:127[+] [-]
|
avalat, 73657Подсветка для PureBasic Сыровата пока, дерево практически не работает. Да и шаблон Autoit выбран не совсем удачно, я обычно не пользуюсь готовым лексером, редактируя его под свои нужды, а таскаю отдельные элементы из других лексеров, и их правлю. Ты бы выложил свою версию PeCmd, в выложенном мной моя старенькая версия, сделанная на скорую руку. AZJIO,73658Заметил что SynWrite похож на CudaText Не похож, CudaText это его продолжение, с моей точки зрения не совсем удачное. Автор слишком переувлекся плагинами, выкинув значительную часть возможностей, доступных в SynEdit, но плагин есть плагин, о нем надо знать, его надо ставить и настраивать, да и не все реализовано. Особенно это коснулось настроек, да, все можно сделать, правя файлы конфигурации, но это настолько муторно, в SynWrite все было значительно удобнее и проще. Выброшен редактор лексеров - одна из основных фишек, из-за чего я в свое время и подсел на него, инструменты могут быть добавлены специальным плагином, но опять же с урезанными возможностями. Короче, заказывайте - сделаю, а инструментов не дам.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1324
- Репутация:127[+] [-]
|
nikzzzz, что-то лексер замудрёный, в AkelPad обычная регулярка и понимаешь, что она будет искать от начала до конца, то есть как если бы прописывал поиск текста в диалоговом окне, а группы выделенные скобками их номера справа указываются цвета и стиль шрифта. Правила удобны - то что подсвечено помечается видимо флагом, поэтому второй проход следующей регулярки не затронет подсвеченное, кроме случая, если указать подсвеченное как родитель, то есть подсветить в подсвеченном, но не пересекать частично. В общем прозрачные правила. И там ещё куча флагов, которые не всегда понятны, но удобно подсматривать такие же в других лексерах. В общем GUI в SynWrite не проливает свет. И к тому же в AkelPad есть возможность создать переменные и указывать их в качестве цвета. Например взял список функций, заменил пробел, таки образом что получился форматированный столбец типа0 0 ${IF} 0 False 0 0 ${IF} 0 True вставил список в раздел ключевых слов, всё. вот пример я подсветил параметры в лексерах SynWrite, то есть в файле lcf1 "^(.+?)(=[ ]?)(?:(-?\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 с любыми текстовыми манипуляциями.
|
Отправлено: 03-Фев-2020 00:10
(спустя 1 час 2 минуты)
nikzzzz
- Стаж: 9 лет
- Сообщений: 3114
- Репутация:127[+] [-]
|
AZJIO Для меня редактор не самоцель, просто инструмент для работы. Править все ручками конечно полезно, но времени много требует и сильно отвлекает. Я не хочу сравнивать разные редакторы, это бессмысленно, каждый имеет преимущества и недостатки. Та-же подсветка, к примеру, для меня не так важна, как дерево и сворачивание кода, кому-то эти функции вообще не нужны. А вот отсутствие некоторых функций заставляет поставить крест на таком редакторе, как-бы он не был хорош. SynWrite чем мне нравится - если чего-то недостает, несложно добавить это своими руками, в большинстве редакторов эта возможность отсутствует (не совсем точно, она в принципе есть почти везде, но слишком трудоемко). К примеру, у меня есть какой то консольный обработчик текста, требуется создать команду, которая позволить заменить исходный текст на новоиспеченный. В SynWrite это делается элементарно и напрямую без копирования текста в буфер и прочих шаманских танцев. При этом не нарушается работа редактора, работает откат. Не знаю, возможно ли это например в Notepad++ или AkelPad без написания специального плагина.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1324
- Репутация:127[+] [-]
|
nikzzzz, в AkelPad это делается скриптом, консоль это всего лишь окно, есть пример как переназначить/перенаправить окно, получить его дескриптор и взять код в переменную обработать любыми функциями и вставить обратно. Я писал отдельный скрипт-пример обработки, можно в любой скрипт, который делает вывод в консоль поправить вывод, например скрипт поиска я сделал, что когда он выводит текст, подсвечивается искомое. Можно к консоли применить тему оформления, при чём её можно применить на лету, сделав несколько тем для разных случаев, например для вывода AutoIt3 и сделать свою подсветку вывода, удалить ненужные строки, когда AutoIt3 не позволяет заменять стандартный вывод или от PureBasic идёт в консоль лишняя инфа. Строки ошибки подсветить и т.д.
|
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1324
- Репутация:127[+] [-]
|
73662подсветка, к примеру, для меня не так важна, как дерево В Notepad++ там линейный список, нет дерева. Там пишешь что надо выловить и оно выводится одним списком. В AkelPad есть похожесть с SynWrite, выводится дерево. В AkelPad дерево выводится на основе свёрток, то что указано в разделе Folds: то автоматом добавляется той же структурой в дерево. Не знаю насколько удобно, но я привык прыгать к функции, а уж условия в дереве мне не нужны, я и так их вижу в функции. По поводу обработки вывода в консоли посмотри мой скрипт-пример (открывается как спойлер) и подсветки. А если интересно список скриптов которые я уже сделал, то здесь (со ссылками для просмотра)
|
nikzzzz
- Стаж: 9 лет
- Сообщений: 3114
- Репутация:127[+] [-]
|
avalat,73685В SinWrite с деревом для PECMD открыть все пункты что-то никак..
73685Скудный выбор, только первая строка, переноса не нашел. Не понял. И поправь SinWrite на SynWrite.
|
Отправлено: 04-Фев-2020 18:21
(спустя 1 час 24 минуты)
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1324
- Репутация:127[+] [-]
|
Для меня редактор не самоцель, просто инструмент для работы Взаимосвязано, если редактор ограничивает, то и производительность маленькая, а значит в хорошем редакторе легче делать масштабные проекты. У PureBasic старая версия Scintilla из-за чего даже внешнюю обработку текста сделать сложнее, типа получить дескриптор Scintilla и внешними командами что-то сделать.
|
Отправлено: 07-Фев-2020 18:30
(спустя 2 дня 18 часов)
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1324
- Репутация:127[+] [-]
|
Сообщение от Alextp через личку:Взял лексер для SynWrite из этой темы, сильно переделал (добавил правила, поменял старые, сделал новые стили и тд). Получился лексер для SynWrite + CudaText. Для CudaText поддержка всех тем (и темных тоже). Лексер назван как "PECmd script". Установка в CudaText: Plugins / Addon Manager / Install, найти пункт PECmd, установить. https://ibb.co/6s4cF6Z
|
puhpol
- Стаж: 10 лет
- Сообщений: 892
- Репутация:75[+] [-]
|
avalat, Приветствую! Еще раз спасибо! Очень удобно.
|
Отправлено: 19-Мар-2020 19:45
(спустя 1 месяц 7 дней)
avalat
- Стаж: 9 лет 10 месяцев
- Сообщений: 466
- Репутация:127[+] [-]
|
Добавил в оба редактора прожку "Создать приложение"
. Открыть в редакторе скрипт (.wcs или .wsc ) Вызвать: В Notepad++ клавиша F6 или в меню "Макросы" В SynWrite - в контекстном меню (правый клик) или в меню "Инструменты\Внешние инструменты" - "Создать приложение" Вставить путь и имя приложения, выбрать иконку - "Выполнить". Проверить результат, вставить по надобности ResHacker-ом ресурс - (картинку и пр.) Сохраняет последний путь к приложению и к иконке. Сохраняет последний скрипт (в папке ...\Res.1.wcs). Проверьте на работоспособность,проверял не на всех ...
Последний раз редактировалось: avalat (2020-11-01 22:26), всего редактировалось 1 раз
|
puhpol
- Стаж: 10 лет
- Сообщений: 892
- Репутация:75[+] [-]
|
avalat, Приветствую! Спасибо. Попробую могет сегодня, отпишу.
|
Отправлено: 22-Май-2020 05:47
(спустя 2 месяца 1 день)
AZJIO
- Стаж: 6 лет 9 месяцев
- Сообщений: 1324
- Репутация: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
Текущее время: 03-Дек 20:12
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|