Coder plugin (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Site Admin
Posts: 6405
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Infocatcher
Замучил уже с этими регэкспами :) Придумай ченить :)

Offline
Site Admin
Posts: 6405
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Изменено: при сохранении файла, подсветка обновляется только, если было изменено расширение (Coder::HighLight).

Changed: when saving a file, the highlighting is updated only if the extension was changed (Coder::HighLight).


Coder plugin v6.3

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

Post by Infocatcher »

Instructor
Я уже придумал адскую регулярку регулярок. :D
Сейчас там вот так (сама регулярка не менялась):

Code: Select all

			// Remove strings ("..." and '...')
			.replace(/"(\\.|[^"\\\n\r])*"/g, escaper)
			.replace(/'(\\.|[^'\\\n\r])*'/g, escaper)
			// Try remove simple regular expressions like /x*/ and /\/*x/
			// We search for invalid divisions:
			// x = /./;            -> =
			// if(/a/.test(b))     -> (
			// a = [/a/, /b/]      -> [ ,
			// x = a && /b/test(c) -> & |
			// x = a ? /b/ : /c/   -> ? :
			// x = !/a/.test(b)    -> !

			.replace(
				/([=(\[,&|?:!]\s*((\/\/[^\n\r]*[\n\r]+|\/\*[\s\S]*?\*\/)\s*)*)\/([^*\\\/\n\r]|\\[^\n\r])(\\\/|[^\/\n\r])*\//g,
				// special chars   line comments       block comments         regexp begin                       regexp end
				function(s, prefix) {
					return prefix + escaper(s.substr(prefix.length));
				}
			);
То есть сначала исключаются строки, потом ищутся некорректные операции деления.
Так что если есть символ из набора + пробелы или комментарии + «/», то это начало регулярного выражения.
Причем внутри все «/» должны экранироваться и не должно быть экранирования завершающего «/». Ну, и там еще учитывается, что «*» не может быть первым символом. Впрочем, там еще и не должно быть «?» и «+», надо будет добавить.

А еще в том примере не должно быть «\» перед «//» в комментарии.

Offline
Site Admin
Posts: 6405
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Infocatcher wrote:js.coder:
<pre>.replace(/\/\/qwe\//g, "//asd/")</pre>и<pre>.replace(/\/\/qwe\//g, "/asd/")</pre>
Комментарии изнутри строк вылезают. :)
Есть такая идея:

Code: Select all

;--RegExp--
;16517=1+4+128+16384
16517	0	0	0	"/"	"//"	""	""	"/"
;16517=1+4+128+16384
16517	0	0	0	"/"	"/*"	""	""	"/"
;5=1+4
5	0	${AREA}	0	"/"	"/"	""	""	""

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

Post by Infocatcher »

Instructor wrote:Есть такая идея:
Вроде, вылечилось, спасибо.

Offline
Site Admin
Posts: 6405
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Исправлено: обновление кэша с подсвеченными тэгами (Coder::CodeFold).

Fixed: cache updating with highlighted tags (Coder::CodeFold).


Coder plugin v6.4

Offline
Posts: 2
Joined: Thu Jun 30, 2011 6:29 am

Post by Bingo »

Помогите пожалуйста сделать подсветку имён ф-ций {вида FuncName()}, имена которых не заданы в секции "Words:". Добавил в "Quotes:"

Code: Select all

;392=8+128+256
392     2       ${TAG} 0       ""      "("     ""      "0123456789_abcdefghijklmnopqrstuvwxyz"  ""
но тогда по этому правилу подсвечивается и то что задано в "Words:".
Есть ли решение?

Offline
Site Admin
Posts: 6405
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Bingo

Code: Select all

Quotes:
;======================================================================
;Flags  Font    Color   Color   Quote   Quote   Escape  Quote   Quote
;       style   text    bkgrnd  start   end     char    include exclude
;======================================================================
;397=1+4+8+128+256
397	2	${TAG}	0	""	"("	""	""	""
Приоритет у "Quotes:" выше, чем у "Words:", поэтому секция "Words:" не может исключить "Quotes:".

Может приведете конкретный пример?

Offline
Posts: 2
Joined: Thu Jun 30, 2011 6:29 am

Post by Bingo »

Приоритет у "Quotes:" выше, чем у "Words:"
Я так и подумал. Просто хотел для AutoIt-а замутить подсветку встроенных ф-ций одним цветом, ф-ций из идущих в дистрибутиве библиотек - другим, а пользовательских - третьим, чтоб сразу было видно откуда у них ноги растут. :roll: Ну ладно, тогда HighLight_BasicTextColor под эту задачу поменяю.

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

Post by Infocatcher »

В php.coder надо добавить «%» в разделители: http://www.php.net/manual/en/language.o ... hmetic.php.

Offline
Site Admin
Posts: 6405
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Infocatcher
Добавлено.

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

Post by Infocatcher »

Может, добавить вот это в cpp.coder?

Code: Select all

    switch (Count & 0x3)
    {
    case 0x3:
        *A++ += *B++;
        __fallthrough;
    case 0x2:
        *A++ += *B++;
        __fallthrough;
    case 0x1:
        *A++ += *B++;
        break;
    }
имеют место быть вот тут.

Offline
Posts: 4
Joined: Sat Jul 16, 2011 9:27 pm

Post by ~uname »

Faulting application name: AkelPad.exe, version: 4.6.3.0,
Faulting module name: Coder.dll, version: 6.4.0.0,
Exception code: 0xc0000005
Падает при нажатии Tab в MDI окне без вкладок.

Упоминания бага в теме не нашел.

Offline
Site Admin
Posts: 6405
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

~uname
Исправлено, но будет требоваться версия AkelPad'а 4.6.4 и новая версия плагина.

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Возможно ли поддержка в секции "Extensions:" расширений в виде
txt*
(где * - любое количество символов)
Locked