AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Coder plugin (2)
Goto page Previous  1, 2, 3 ... 18, 19, 20 ... 61, 62, 63  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
Skif_off



Joined: 20 Oct 2013
Posts: 374

PostPosted: Wed Nov 20, 2013 11:36 am    Post subject: Reply with quote

Instructor wrote:
Чтобы помочь с правилом, необходимо понять назначение символа "@" и увидеть конечные примеры подсветки.

Не удается нагуглить пример с подсветкой, но выглядело приблизительно так:

\if@twocolumn
\ifdim\@tempdima>2\@tempdimb\relax
\setlength\textwidth{2\@tempdimb}
\else
\setlength\textwidth{\@tempdima}
\fi
\else
\ifdim\@tempdima>\@tempdimb\relax
\setlength\textwidth{\@tempdimb}
\else
\setlength\textwidth{\@tempdima}
\fi
\fi
\@settopoint\textwidth


С назначением @ не совсем понятно, так понимаю - это тоже команды, но преимущественно вижу их в файлах стиля (*.sty). Кажется это что-то временное, вроде текстового или цифрового шаблона.
Нагуглил, что есть еще команда "\@", но, как понял, она ставится только перед знаком пунктуации и тогда не помеха.
Кстати:
SynWrite - не подсвечивает "\\[@a-z]*" вообще никак
Notepad++ - и "\\[a-z]*", и "\\[@a-z]*" подсвечивает одинаково
PSPad - не подсвечивает "\\[@a-z]*", но подсвечивает "\@"
не знаю, стоит ли заморачиваться? По логике - стоило бы и хотелось бы понять, почему не работает.

Попутно обнаружил "\\" - принудительнывй разрыв строки и фолдинг:
- группы LaTeX (может быть вложенным, не знаю - добавлять или нет?)
Quote:
{
...
}

- здесь увидел такую конструкцию:

Code:
\begin{frame}
\frametitle{Формулы}
$$
\left\{
\begin{array}{rl}
\dot x = & \sigma (y-x) \\
\dot y = & x (r - z) - y \\
\dot z = & xy - bz
\end{array}
\right.
$$
\end{frame}

блок между $$ и $$ подсвечен иначе, но, наверное, можно забить, ведь в структуре файла по идее будет видно \begin{frame}?


Заодно по sh.coder:
Code:
; ;2176=128+2048
2176   3   ${STR}   0   "echo"   ""   ""   ""   ""

Если строка заканчивается комментарием, то комментарий не будет выглядить как комментарий, а все после # не изменит стиля, предварительно исправил на
Code:
;2432=128+256+2048
2432   3   ${STR}   0   "echo"   "#"   ""   ""   ""

Или не нужно этого делать? В bat.coder получается так же.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5404

PostPosted: Wed Nov 20, 2013 12:38 pm    Post subject: Reply with quote

Skif_off wrote:
приблизительно так:

Например так:
Code:
QuotesRE:
0   "\\[a-z]*@[a-z]+"   "\0=(0,${OP},0)"
0   "\\[a-z]+"          "\0=(0,${VAR},0)"
Back to top
View user's profile Send private message Send e-mail
Skif_off



Joined: 20 Oct 2013
Posts: 374

PostPosted: Wed Nov 20, 2013 1:53 pm    Post subject: Reply with quote

Instructor
Спасибо, работает. Элегантно, даже в голову не пришло, извиняет только уровень знаний Smile
"\\[@a-z]*" в принципе верное выражение, но имеют значение нюансы работы регулярных выражений AkelPad и/или плагина?

Прошу прощения за любопытство, а кому принадлежит https://github.com/lexazloy/akelpad ?

Добавлено:
Если кому-нибудь интересно: пока окончательный вариант latex.coder,
дополнительно к вышеизложенному добавлена подсветка команды разрыва строки "\\" и фолдинг групп LaTeX "{"..."}", т.к.
Quote:
Как правило, группа определяется как часть документа, заключённая между двумя фигурными скобками. Все команды действуют только в пределах той группы, где они были применены. Кроме открывающей и закрывающей фигурных скобок в качестве ограничителей могут быть использованы команды \begingroup и \endgroup.
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 374

PostPosted: Wed Nov 20, 2013 10:40 pm    Post subject: Reply with quote

Столкнулся со странностью:
командой
Code:
"KiXtart" Call("Coder::Settings", 1, "kixtart")

не удается переключиться с другой темы в открытом или создаваемом документе, хотя файл *.kix открывается с правильной темой.
Проблема решается сокращением kixtart.coder до kix.coder и команды до
Code:
"KiXtart" Call("Coder::Settings", 1, "kix")
Back to top
View user's profile Send private message
opk44



Joined: 16 Jan 2010
Posts: 345

PostPosted: Thu Nov 21, 2013 2:07 am    Post subject: Reply with quote

Skif_off wrote:
Столкнулся со странностью...
Проблема решается сокращением kixtart.coder до kix.coder и ...
1. Эта "странность" существует исключительно в вашей голове по причине не желания чтения документации к плагину (стр. 125-132)
Code:
*** Внешний вызов Coder::Settings ***

Call("Coder::Settings", 1, "EXTENSION")
  Параметры:
    1
      Установить синтаксическую тему вручную, используя расширение.
    "EXTENSION"
      Расширение, например: "html". Ручная установка темы отменяется, если параметр расширения отсутствует.
      Если параметр расширения равен "?", то документ определяется, как не имеющий темы.

2. Усечение ИМЕНИ файла "kixtart.coder" совершенно бессмысленно. Важно лишь то, что в этом файле прописано вот тут:
Code:
Files:
;==========
;File types
;==========
*.kix
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 374

PostPosted: Thu Nov 21, 2013 10:32 am    Post subject: Reply with quote

opk44
Спасибо, протупил, посыпаю голову пеплом Smile Сначала добавлял пункты для открытия, а включения уже с помощью Найти/Заменить и с latex.coder это сработало (Files: *.tex, *.latex, *.sty).

З.Ы. Или у меня дежавю, или действительно так уже лажал, но тогда разобрался сам...
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2615
Location: Киев, Русь

PostPosted: Fri Nov 22, 2013 10:27 am    Post subject: Reply with quote

Instructor
В vbs.coder ещё добавьте пожалуйста подсветку MsgBox, MessageBox, Stop, True, False и Null.
Back to top
View user's profile Send private message Visit poster's website
opk44



Joined: 16 Jan 2010
Posts: 345

PostPosted: Fri Nov 22, 2013 8:49 pm    Post subject: Reply with quote

VladSh
4 последних уже предлагались, но безуспешно.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5404

PostPosted: Sun Nov 24, 2013 7:24 am    Post subject: Re: Кеш плагина Reply with quote

Quote:
"\\[@a-z]*" в принципе верное выражение, но имеют значение нюансы работы регулярных выражений AkelPad и/или плагина?
В данном случае только логика захвата диапазона. Можно проанализировать ваши правила на примере текста:
Quote:
\if@twocolumn
\textwidth

Code:
0   "\\[a-z]*"   "\0=(0,${VAR},0)"
0   "\\[@a-z]*"   "\0=(0,${OP},0)"

\if@twocolumn: "\\[a-z]*" найдет и захватит "\if", остальную часть "@twocolumn" никто не найдет.
\textwidth: "\\[a-z]*" найдет и захватит весь "\textwidth".
Т.е. правило "\\[@a-z]*" в данном случае никогда не сработает.

melky wrote:
По-моему, не самая лучшая идея хранить кеш Program Files:
Cannot open file "C:\Program Files\AkelPad\AkelFiles\Plugs\Coder\cache"

Если есть где поменять, ткните носом, пожалуйста.
Ответ добавлен в FAQ.
Back to top
View user's profile Send private message Send e-mail
Drugmix



Joined: 08 Apr 2013
Posts: 444

PostPosted: Sun Nov 24, 2013 10:43 am    Post subject: Re: Кеш плагина Reply with quote

Instructor wrote:
Quote:
"\\[@a-z]*" в принципе верное выражение, но имеют значение нюансы работы регулярных выражений AkelPad и/или плагина?
В данном случае только логика захвата диапазона. Можно проанализировать ваши правила на примере текста:
Quote:
\if@twocolumn
\textwidth

Code:
0   "\\[a-z]*"   "\0=(0,${VAR},0)"
0   "\\[@a-z]*"   "\0=(0,${OP},0)"

\if@twocolumn: "\\[a-z]*" найдет и захватит "\if", остальную часть "@twocolumn" никто не найдет.
\textwidth: "\\[a-z]*" найдет и захватит весь "\textwidth".
Т.е. правило "\\[@a-z]*" в данном случае никогда не сработает.

А почему так сделано, что не сработает-то? Это же не по канонам PCRE.

Instructor wrote:
melky wrote:
По-моему, не самая лучшая идея хранить кеш Program Files:
Cannot open file "C:\Program Files\AkelPad\AkelFiles\Plugs\Coder\cache"

Если есть где поменять, ткните носом, пожалуйста.
Ответ добавлен в FAQ.

Это не ответ, а лишь рецепт как избежать ошибки.
Т.е. AkelPad не совместим с дефолтными установками:
1. по дефолту, при установке винды, UAC - включён.
2. по дефолту, установка программ происходит в системную папку Program Files.

На мой взгляд, это баг и вместо его исправления даются рекомендации о том, как его избежать.
Лично я не использую UAC и сижу из-под админа, поэтому этот лично меня даже не трогает и никогда не тронет, так что лично мне всё равно будет ли он исправлен или нет, но по отношению к остальным пользователям - было бы справедливо всё-таки его исправить.
Многие программы тоже хранят какие-то свои личные данные, но не имеют конфликтов, подобных этому акелпадовоскому, потому что это нормальная практика использовать %user%\AppData, как место для записи.
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 374

PostPosted: Sun Dec 01, 2013 11:14 pm    Post subject: Reply with quote

Потихоньку допиливаю sh.coder, разобрался с комментариями, если кому интересно:
в Quotes выпилил строки

Code:
;1=1
1   3   ${COMM}   0   "#"   ""   ""   ""   ""
;2176=128+2048
2176   3   ${STR}   0   "echo"   ""   ""   ""   ""

в QuotesRE добавил

Code:
0   "^#.*|(?<!\S)#.*|(?<=\[)#.*"   "\0=(3,${COMM},0)"

Регулярное выражение подсмотрел в Vim и немного изменил, картинка (верхняя половина - как было, нижняя - как стало).

Такой вопрос возник попутно (не знаю, насколько часто такое встречается, но как минимум один раз подобное видел с AutoIt): есть пара строк

echo ""$1" "$BASE" o p" | dc
echo "Все аргументы командной строки: "$*""

по идее

Code:
;5=1+4
5   3   ${STR}   0   `"`   `"`   "\"   ""   ""
они должны выглядеть так

echo ""$1" "$BASE" o p" | dc
echo "Все аргументы командной строки: "$*""

но реально выглядят так

echo ""$1" "$BASE" o p" | dc
echo "Все аргументы командной строки: "$*""

Как-то можно исправить? Или особенности парсера coder-файлов и проще забить? Перепробовал кучу вариантов, не получилось. Склонился к мысли забить, но продержался всего три дня Smile
Back to top
View user's profile Send private message
DV



Joined: 16 Nov 2006
Posts: 852
Location: Kyiv, Ukraine

PostPosted: Mon Dec 02, 2013 8:25 am    Post subject: Re: Кеш плагина Reply with quote

Drugmix wrote:
1. по дефолту, при установке винды, UAC - включён.
2. по дефолту, установка программ происходит в системную папку Program Files.

На мой взгляд, это баг и вместо его исправления даются рекомендации о том, как его избежать.

Я тоже считаю это багом - багом Windows.
Какой смысл по умолчанию предлагать для установки папку, в которую устанавливаемое приложение не имеет прав на запись? Где логика? Если приложению нужно изменять файлы в своей папке, то это дело только самого приложения, и не система должна решать, можно это делать или нет - и уж точно не запрещать этого по умолчанию.
Лично мне очень нравится, когда приложение хранит всё своё рядом с собой (за исключением настроек, привязанных к специфике конкретного компьютера, системы или пользователя) - в этом случае приложение запросто и безболезненно можно перенести как в любую другую папку, так и на другой компьютер.
А некоторые старые программы, кстати говоря, вообще хранили настройки даже не в ini-файлах, а путём записи (модификации) непосредственно в исполняемый файл.
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 444

PostPosted: Mon Dec 02, 2013 9:46 am    Post subject: Re: Кеш плагина Reply with quote

DV wrote:
Я тоже считаю это багом - багом Windows.
Какой смысл по умолчанию предлагать для установки папку, в которую устанавливаемое приложение не имеет прав на запись? Где логика?

Логика в сепарации исполняемых файлов от файлов личных данных и настроек.
Винда - многопользовательская система. Если бы программа писали свои данные в свою папку в Program Files - то другой бы пользователь имел бы доступ к этим данным, а это нарушает секурность.
Я уж не говорю про то, что их надо бы ещё и организовать так, чтобы для каждого пользователя использовался свой набор этих данных.
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 374

PostPosted: Mon Dec 02, 2013 7:45 pm    Post subject: Reply with quote

Можно делать как хромообразные - ставить в %APPDATA% (еще скайп под ограниченной учеткой, ЕМНИП, так делает)
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 444

PostPosted: Mon Dec 02, 2013 8:22 pm    Post subject: Reply with quote

Skif_off
так делает большинство программ и так должны бы делать все программы, которые не спрашивают путь куда сохранять пользовательские настройки программы (что, было бы ещё лучше, особенно, если программа умеет понимать относительные пути).
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page Previous  1, 2, 3 ... 18, 19, 20 ... 61, 62, 63  Next
Page 19 of 63

 
Jump to:  
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


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group