Lenchik / Akelpad-syntax-highlighting

Syntax themes for AkelPad text editor with Coder plugin (AutoHotkey, AviSynth, bash, BibTeX, Grub4Dos, KiXtart, LaTeX, Makefile, nnCron, R, Smarty, plain text and many more other syntax highlighting)
32 stars 3 forks source link

More folds for latex.coder #19

Open Lenchik opened 10 years ago

Lenchik commented 10 years ago

Хотелось бы побольше правил сворачивания latex.coder для конструкций вида

\defbeamertemplate*{block begin}{default}
{
  \par\vskip\medskipamount%
  \begin{beamercolorbox}[colsep*=.75ex]{block title}
    \usebeamerfont*{block title}\insertblocktitle%
  \end{beamercolorbox}%
  {\parskip0pt\par}%
  \ifbeamercolorempty[bg]{block title}
  {}
  {\ifbeamercolorempty[bg]{block body}{}{\nointerlineskip\vskip-0.5pt}}%
  \usebeamerfont{block body}%
  \begin{beamercolorbox}[colsep*=.75ex,vmode]{block body}%
    \ifbeamercolorempty[bg]{block body}{\vskip-.25ex}{\vskip-.75ex}\vbox{}%
}

Похоже, что сделать это можно только регулярными выражениями, и нужно изучать опыт и примеры ahk.coder

Skif-off commented 10 years ago

Почему ahk.coder? Я, честно говоря, пользую старый (2013.08.24 22:40, как-то он в большинстве случаев в целом корректнее отрабатывает), но и в актуальном в фолдинге ничего выдающегося не вижу.

Помимо групп хотел еще математику добавить ($ и $$), но не помню, почему убрал. Надо будет попробовать еще раз, что-то вроде

("^[ \t]*\{$" - "^[ \t]*\}$")

и

("^(\$\$|\$).*" - ".*(\$\$|\$)$")

еще посмотреть исходники Scintilla/SciTE (с группами в Notepad++ фолдинг, кажется, работает) и другие редакторы с подсветкой LaTeX.

Skif-off commented 10 years ago

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

\defbeamertemplate*{block begin}{default}{
 ...
}

Или так ломается

\defbeamertemplate*{block begin}{default}
{% коммент
 ...
}

Тысячи их :)

Skif-off commented 10 years ago

Что-нибудь вроде

;3145728=1048576+2097152
3145728 0   0   0   "^\{$"  "^\}%"  ""
;2097173=1+4+16+2097152
2097173 0   0   0   "{" "^\}%"  ""

?

З.Ы. Подсветка цифр что-то меня несколько напрягает.

Lenchik commented 10 years ago

Опыт ahk.coder потому, что там очень навороченные конструкции регэкспов. Причём ряд из них под всякие сложные ситуации с неравным количеством опций.

Skif-off commented 10 years ago

Но, кажется, для секции Folds допустимы выражения только фиксированной длины?

Lenchik commented 10 years ago

Да. действительно. :( Незадача

Skif-off commented 10 years ago

В Fold end опечатался: вместо "%" должно быть “$". Погоняю на днях.

Заодно о $...$ подумать надо - не уверен как быть: некоторые редакторы внутри всё выделяют одним цветом.

Lenchik commented 10 years ago

Может быть, стоит задуматься и о подсветке \[...\] и \(...\) http://en.wikibooks.org/wiki/LaTeX/Mathematics#Mathematics_environments

Lenchik commented 10 years ago

Ещё может быть отсюда что-то из идей набрать, если осталось? https://github.com/textmate/latex.tmbundle/tree/master/Syntaxes

Skif-off commented 10 years ago

Формулы внутри текста ( (...), $...$) все-таки пока не буду трогать. В отдельной строке ([...], $$...$$) пока сделал так, в расчете на отсутствие бардака в коде :) Или использование WYSIWYG-редакторов. Делать как в ahk.coder не хочу - слишком большой разброс от простеньких до забористых (плюс возможность переноса по знаку умножения *)

$a$
\( c^2=a^2+b^2 \)
$\sqrt{\mathstrut y} + \sqrt{\mathstrut d}$
\( F_n=F_{n-1}+F_{n-2} \)
\( (fg)’’=f’’g+2f’g’+fg’’ \)
\( \int(F_i x_k - F_k x_i)\,dV = \qquad=\oint(u_{il}x_k-u_{kl}x_i)\,df_l \)
\( A = a_{11}\xi_1^2 + 2a_{12}\xi_1\xi_2+\dots + \sum_{i,j=2}^n a_{ij}\xi_i\xi_j \)

Ещё может быть отсюда что-то из идей набрать, если осталось? https://github.com/textmate/latex.tmbundle/tree/master/Syntaxes

Большая часть в общем-то есть. Сохранил на всякий случай, но тот же фолдинг подобно не сделаешь, если Instructor не расширит возможность использования регулярок в фолдинге, Ну а если расширит, то и без TextMate можно для примеров обойтись более распространенными линуксовыми/виндовыми редакторами :)