Coder plugin (3)

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 18
Joined: Fri Mar 20, 2020 9:51 am

Post by VerTus »

opk44 wrote:
VerTus wrote:А как же сворачивание секций, переходы по хоткею и пр. Этого нет?
Нетрудно убедиться, что в официальном файле секции "Folds:" и "Blocks:" пустые.
Нетрудно тому кто понимает архитектуру, структуру и пр :)
А раз нет "фолдсов", то и переходов нет.
Тогда непонятно какой вообще смысл в этом аддоне... Я-то надеялся на реактор json с функциями получше простого блокнота
Поскольку для вас это критично, то осмелюсь посоветовать скопировать свертку из "js.coder". Достаточно (наверное) будет только первой строки для фигурных скобок.
Спасибо большое за помощь. Смысл понятен, только похоже толку от этого не много. В том смысле что это не даст нужного функционала для работа с json. :(

Offline
Posts: 382
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

По поводу обратных ссылок в секции Folds: при использовании регулярок.

Есть простой вариант фолда

Code: Select all

Folds:
;====================================================================================
;Flags  Font    Color   Color   Fold      Fold      Delimiters   Parent  Rule    Rule
;       style   text    bkgrnd  start     end                    ID      ID      file
;====================================================================================
;3145729=1+1048576+2097152
3145729	0	${OP}	0	"^(\t*)ab"    "^\101cd"    ""    0	0
Почему он ловит блок в таком случае

Code: Select all

	ab
		Привет, братец Лис.
		cd
и не ловит в другом?:

Code: Select all

	ab
		Привет, братец Лис.
	cd
Хотя, по идее, только второй вариант и должен обрабатываться.

Offline
Posts: 12
Joined: Tue May 05, 2020 11:39 pm

Post by Arhaall »

Господа, может кто обновлял для себя файл js.coder? А то он порядком устарел судя по всему. И еще... Подскажите, плиз, можно ли как-то в css.coder добавить подсветку любого слова начинающегося с двух дефисов подряд (--)? Желательно отдельным цветом.

Offline
Posts: 2
Joined: Wed Oct 27, 2021 6:21 am
Location: Stockholm
Contact:

thankl

Post by bart231 »

Oh, thank you for this plug, I was looking for so many forums and I couldn't find it, but finally I found what I was looking for, thank you very much people

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Infocatcher
Очередная порция для log.coder. :)

Code: Select all

0	2	${OK}	0	completed

0	2	${WARN}	0	deadlock
0	2	${WARN}	0	erroneously
0	2	${WARN}	0	fault
0	2	${WARN}	0	mistake
0	2	${WARN}	0	unknown
0	2	${WARN}	0	неизвестен
0	2	${WARN}	0	неизвестено
0	2	${WARN}	0	ошибочно

0	2	${INFO}	0	badly
0	0	${INFO}	0	inconsistency
0	0	${INFO}	0	retry
0	0	${INFO}	0	несоответствие
0	0	${INFO}	0	плохой
Ещё добавил:

Code: Select all

0	2	${ERR}	0	systhrow
но оно не подсвечивается, т.к. "systhrow" чаще всего идёт в кавычках. Можно ли как-то без регулярок, флагами, настроить его подсветку?

Что здорово было бы подсвечивать даже регулярками - это вхождения exception.

Ещё хотелось бы добавить новую переменную ${DBG} для отладки:

Code: Select all

0	0	${INFO}	0	load
0	0	${INFO}	0	loaded
0	0	${INFO}	0	restart
0	0	${INFO}	0	restarted
0	0	${INFO}	0	run
0	0	${INFO}	0	shutdown
0	0	${INFO}	0	start
0	0	${INFO}	0	started
0	0	${INFO}	0	terminate
0	0	${INFO}	0	terminated
Сейчас я всё это засунул в ${INFO}, но уже по опыту использования вижу, что это неудобно - смешивается разнородная информация.
Есть ли перспективы для добавления ${DBG}? )

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

VladSh wrote:Очередная порция для log.coder. :)
Спасибо, обновил и подправил: https://github.com/Infocatcher/AkelPad_ ... ...1821ab7

С кавычками была ошибка, кавычки в «Delimiters» должны быть обрамлены другими кавычками:

Code: Select all

Delimiters:
…
1	0	0	0	`"`
1	0	0	0	`'`
1	0	0	0	"`"

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Infocatcher
Здорово, спасибо!

У меня ещё такое:

Code: Select all

0	2	${ERR}	0	died

0	2	${WARN}	0	misstep

0	0	${DBG}	0	перезапущен
0	0	${DBG}	0	перезапущена

0	2	${DBG}	0	dbg          ; сам dbg тоже лучше сделать подсветкой DBG, сейчас он идёт как WARN, хотя не принципиально)

0	0	${INFO}	0	обработано
0	0	${INFO}	0	удается      ; c буквой 'е', некоторые проги так пишут
:)

И если можно, то хотелось бы сделать подсветку всех слов, в которых входит "exception"; кому не надо, будет просто коментить эту регулярку и всё.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Ребята, а кто-нибудь помнит, как задать новую переменную (хочу добавить DBG) во встроенные темы? Не могу это сделать...

Ну или если невозможно это сделать, как в окне настроек избавиться от списка встроенных тем? А то люди могут начать переключать темы на встроенные в моей сборке и наткнутся на вал ошибок об отсутствующей переменной...

Или может можно как-то игнорировать нестандартные переменные без вывода ошибок?

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

VladSh
Могу ошибаться, но переменные вроде бы на уровне хедеров определены (AkelFiles\Plugs\Coder\Source\Coder.h) и "пользовательского" добавления новых сущностей не предусматривают.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

opk44
Спасибо!

Печаль... Просто добавлять в глобальные переменные - такое себе... Я так раньше и делал, но переключившись на светлые темы, в которых я никогда не работаю, понял, что это жуть жуткая. Хотел для каждой темя настроить своё, но видать не судьба.

Решение хранить темы в самой dll, по моему, не очень. Лучше бы их вынести в ini или тут опубликовать. А пользователи, да хотя бы даже и ручками, покопировали себе в ini то, что им нужно, или вырезали ненужные.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

VladSh wrote:У меня ещё такое:

Code: Select all

0	2	${ERR}	0	died

0	2	${WARN}	0	misstep

0	0	${DBG}	0	перезапущен
0	0	${DBG}	0	перезапущена

0	2	${DBG}	0	dbg          ; сам dbg тоже лучше сделать подсветкой DBG, сейчас он идёт как WARN, хотя не принципиально)

0	0	${INFO}	0	обработано
0	0	${INFO}	0	удается      ; c буквой 'е', некоторые проги так пишут
:)

И если можно, то хотелось бы сделать подсветку всех слов, в которых входит "exception"; кому не надо, будет просто коментить эту регулярку и всё.
Вроде, все учел: https://github.com/Infocatcher/AkelPad_ ... ...b89beb0

Offline
Posts: 17
Joined: Wed Feb 16, 2022 2:25 pm

Post by AlexeyB »

Выкладываю некоторые дополнения и исправления синтаксических файлов для HTML, CSS, JavaScript и PHP.



Добавил атрибуты событий:
oncontextmenu
onmouseenter
onmouseleave
onmousemove
onwheel

Добавил подсветку знаков вопроса в тегах начала и конца php-кода <? и ?>:
QuotesRE:

Code: Select all

1	"\?(?=>)"				"\0=(0,${TAG},0)"
Words:

Code: Select all

0	0	${TAG}	0	?                              3





Сетки:

Свойства:
grid
grid-area
grid-auto-columns
grid-auto-flow
grid-auto-rows
grid-column
grid-column-end
grid-column-gap
grid-column-start
grid-gap
grid-row
grid-row-end
grid-row-gap
grid-row-start
grid-template
grid-template-areas
grid-template-columns
grid-template-rows

Значения:
display: grid, inline-grid
grid-auto-flow: row, column, dense

Свойства выравнивания элементов (Box Alignment Module), которые работают с Grid, но не работают с Flexbox:

justify-items
justify-self
place-content
place-items
place-self

Другое:

Свойства:
user-select

Значения:
Значения свойства display для flexbox: flex, inline-flex





Сделал 2 варианта файлов подсветки JavaScript: ECMAScript 3 для скриптов AkelPad, Windows Script Host и каких-старых браузерных, а ECMAScript 6 для новых браузерных и прочих скриптов. Если оставить только ES6, то новые ключевые слова и методы будут мешать при написании первых. Но в html.coder стоит подключать ES6.

Меню выбора синтаксиса у меня оформлено так:

Image
(именно "JavaScript", т.к. это общее название языка, тогда как "JScript" - его определенной реализации или диалекта)

Исправления:
- Предотвращение выделения свойств объекта (после точки) как ключевых слов. Например, delete в выражении myObject.delete() выделялся как оператор.
- В группировочных комментариях секции Words:
- - Группа, содержащая true, false, null, undefined, NaN, Infinity именовалась "Types", хотя это не типы, а значения (за исключением null и undefined, которые действительно представлены отдельными типами, но все же и они выражают особые значения).
- - Группа "Common properties" содержала как свойство length (которое есть и у строк, и у массивов), так и методы объекта Object.

Стандартные свойства для ES3:
+ prototype
+ constructor

ES5:
+ Ключевые слова get и set

ES6:
+ Поддержка строк в обратных кавычках.
+ Ключевые слова let и const
+ Оператор of для цикла for .. of
+ Ключевые слова для классов: class, extends, super, static
+ Объекты Symbol, Set и Map

Свойства и методы для ES6:

Code: Select all

;--Общие свойства--
; ES6
1	0	0	0	size
;--Общие методы--
; ES5
1	0	0	0	forEach
; ES6
1	0	0	0	entries
1	0	0	0	keys
1	0	0	0	values
1	0	0	0	has
1	0	0	0	clear
;--Объект Object--
; ES5
1	0	0	0	create
1	0	0	0	keys
1	0	0	0	getOwnPropertyNames
1	0	0	0	getOwnPropertyDescriptor
1	0	0	0	getOwnPropertyDescriptors
1	0	0	0	defineProperty
1	0	0	0	defineProperties
1	0	0	0	preventExtensions
1	0	0	0	seal
1	0	0	0	freeze
1	0	0	0	isExtensible
1	0	0	0	isSealed
1	0	0	0	isFrozen
; ES6
1	0	0	0	assign
1	0	0	0	getOwnPropertySymbols
;--Объект Math--
; ES6
1	0	0	0	sinh
1	0	0	0	cosh
1	0	0	0	tanh
1	0	0	0	asinh
1	0	0	0	acosh
1	0	0	0	atanh
1	0	0	0	hypot
1	0	0	0	log2
1	0	0	0	log10
1	0	0	0	log1p
1	0	0	0	expm1
1	0	0	0	cbrt
1	0	0	0	trunc
1	0	0	0	sign
;--Объект Number--
; ES6
1	0	0	0	EPSILON
1	0	0	0	MAX_SAFE_INTEGER
1	0	0	0	MIN_SAFE_INTEGER
1	0	0	0	isInteger
1	0	0	0	isSafeInteger
;--Объект String--
; ES5
1	0	0	0	trim
; ES6
1	0	0	0	startsWith
1	0	0	0	endsWith
1	0	0	0	includes
1	0	0	0	repeat
;--Объект Array--
; ES6
1	0	0	0	from
1	0	0	0	fill
1	0	0	0	find
1	0	0	0	findIndex
;--Объект Set (ES6) --
1	0	0	0	add
;--Объект Function--
; ES6
1	0	0	0	bind





+ Типы: callable, iterable, mixed
+ Ключевое слово fn для стрелочных функций
+ Ключевое слово finally (блок try - catch - finally)
+ Ключевые слова для трейтов: trait, insteadof
* Изменил подсветку оператора as с IF на OP, т.к. он используется не только с foreach, но и с use, и в целом имеет следующую семантику: какой доступ (public, protected или private) и под каким именем (псевдонимом) можно получить к тому или иному элементу (это относится и к foreach: определяется способ доступа к текущему элементу перебираемого массива).

Функции:
+ mysqli_connect_error

Фиксы:
Предотвращение выделения имен переменных (после $) как встроенных функций.



Измененные файлы:
html.coder
css.coder
js.coder
js-es6.coder
php.coder

Offline
Posts: 165
Joined: Fri Aug 15, 2008 8:58 am

Post by Diamen »

edit
Last edited by Diamen on Tue Feb 22, 2022 8:39 pm, edited 1 time in total.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

AlexeyB
Здорово!

Я ещё в Delimiters использую:

Code: Select all

1	0	${DEL1}	0	===
1	0	${DEL1}	0	==
1	0	${DEL2}	0	=
1	0	${DEL1}	0	!==
1	0	${DEL1}	0	!=
1	0	${DEL2}	0	!
Сразу видно, если в условиях поставил одинарное "=" - оно не подсвечивается или подсвечивается не так. Работаю в разных языках, и в некоторых = как знак сравнения одинарное, как и присваивания. Прыгая между языками иногда путаешься, а так очень наглядно.

Offline
Posts: 17
Joined: Wed Feb 16, 2022 2:25 pm

Post by AlexeyB »

В обоих синтаксических файлах JavaScript изменил правила, предотвращающие выделение свойств объекта как ключевых слов:
  • Убрал дублирующиеся буквы латинского алфавита [a-zA-Z], поскольку при флаге 0 регистр не учитывается, и это излишне.
  • После точки допускаются пробелы и символы табуляции.
  • Также не выделяются слова перед двоеточием.
  • Нормально работает и на отличном от черного основном цвете шрифта.
    В секции QuotesRE диапазон, видимо, считается захваченным только при установки одному из параметров (стиль шрифта, цвет шрифта, цвет фона) значения, отличного от нуля. В данном варианте стиль шрифта устанавливается пустой подстроке.

Code: Select all

QuotesRE:
;===========================================================================================
;Flags  Pattern         \BackRef=(FontStyle,ColorText,ColorBk) \BackRef=...  ParentID RuleID
;===========================================================================================
; Prevents to highlight objects properties as keywords:
; - after dot
0       `\.[ \t]*\K[a-z_]\w*(\b)`               `\1=(1,0,0)`                 0        0
; - before colon
0       `(\b)[a-z_]\w*[ \t]*(?=:)`              `\1=(1,0,0)`                 0        0
Post Reply