Не работает что-то у меня этот ключик в правилах подсветки. Так что пока оставил ретроспективную проверку.
Ну, собственно, там выигрыш может быть и незначительным... но оба варианта от этого не перестают быть верными, а мой может ещё и привнести некорректную подсветку, если будут пересекающиеся шаблоны, в том смысле, что использование ключа \K надо проверять на захват символов (пусть даже этот ключ и отбрасывает найденное), в отличие от lookbehind - он точно их не захватывает.
Но работоспособность метасимвола \K вполне проверена, он работает - возможно Вам необходимо обновить AP и/или плагин.
yozhic wrote:
А может проще (и эффективней) сделать три пары скобок и только одну из них подсветить?
Прошу прощения за большой текст этого поста и за слишком подробное и педантичное описание. Возможно все происходит из-за моих собственных ошибок. Пост лучше удалить в таком случаи.
Итак.
1.
панель CodeFold открыта; открыт файл.js;
// *** Открыть выделенный или весь текст в новой вкладке. ***
// Call("Scripts::Main", 1, "OpenTextInNewTab.js")
var hWndEdit = AkelPad.GetEditWnd();
var hWndEditNew = 0;
var pText;
if (hWndEdit) {
if (pText = AkelPad.GetSelText() || AkelPad.GetTextRange(0, -1)) {
if (hWndEditNew = CreateNewTab(hWndEdit)) {
AkelPad.ReplaceSel(pText);
AkelPad.SetSel(0, 0);
if (AkelPad.IsPluginRunning("Coder::HighLight"))
AkelPad.CallW("Coder::Settings", 6, GetAlias(hWndEdit, 0));
}
}
}
function CreateNewTab(hWndEdit) {
var hWndMain = AkelPad.GetMainWnd();
var nNewLine = AkelPad.GetEditNewLine(hWndEdit);
var nCodePage = AkelPad.GetEditCodePage(hWndEdit);
var nBOM = AkelPad.GetEditBOM(hWndEdit);
var hWndEditNew = 0;
AkelPad.SendMessage(hWndMain, 273 /*WM_COMMAND*/, 4101 /*IDM_FILE_NEW*/, 1);
AkelPad.SaveFile(0, "", nCodePage, nBOM);
AkelPad.SendMessage(hWndMain, 1230 /*AKD_SETNEWLINE*/, 0, nNewLine);
if (hWndEditNew = AkelPad.GetEditWnd()) {
if (hWndEditNew != hWndEdit)
return hWndEditNew;
}
return hWndEditNew;
}
function GetAlias(hWndEdit, hDocEdit) {
var pAlias = "";
var lpAlias;
if (lpAlias = AkelPad.MemAlloc(256 * 2 /*sizeof(wchar_t)*/)) {
AkelPad.CallW("Coder::Settings", 18, hWndEdit, hDocEdit, lpAlias, 0);
pAlias = AkelPad.MemRead(lpAlias, 1 /*DT_UNICODE*/);
AkelPad.MemFree(lpAlias);
}
return pAlias;
}
открывается новая вкладка с текстом;
в CodeFold щелкаю два раза по имени любой функции - открывается предыдущая вкладка с этой функцией;
правой кнопкой мыши на новой вкладке - Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.SendMessage(AkelPad.GetMainWnd(),1229,0,false);AkelPad.Command(4318);`).
AkelPad падает.
2.
панель CodeFold открыта; открыт файл.js;
выделяем весь текст, копируем;
открываем новую вкладку - Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Command(4101);AkelPad.Call("Coder::Settings", 1, "js");`);
вставляем текст - панель CodeFold пуста. Возвращаемся в файл.js - пусто (если вернуться, скажем в файл.vbs (другое имя), то все нормально).
3.
панель CodeFold открыта; открыт файл.js;
выделяем пару функций (обязательно больше одной), вырезаем в буфер, вставляем в другом месте текста (потом можно попробовать отменить)...
Щелкайте в панели по старым и новым именам. Если файл сохранен, то его можно "переоткрыть" и панель обновится.
Исправлено: удаление нескольких блоков могло оставлять один в списке CodeFold. Исправлено: возможный сброс указателя на активный документ при использовании внешних вызовов с кодом 1 и 6 (Coder::Settings).
Fixed: deleting several blocks could leave one in CodeFold list. Fixed: possible active document pointer reset when using external calls with code 1 and 6 (Coder::Settings).
Каким образом для правой границы фолдинга указать пустую строку, т.е. когда в тексте попадается строка вообще без содержимого, даже без пробелов?
Хочу удобно отображать файлы логов, скрывая кучу технических деталей после слов Exception. Пример файла логов
Jun 29, 2015 9:23:07 AM hudson.model.Executor run
java.lang.IllegalStateException:
at hudson.model.RunMap.put(RunMap.java:189)
at jenkins.model.lazy.LazyBuildMixIn.newBuild(LazyBuildMixIn.java:178)
at hudson.model.Queue.withLock(Queue.java:1218)
at hudson.model.Executor.run(Executor.java:310)
SEVERE: Unexpected executor death
java.lang.InterruptedException
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:639)
at hudson.model.Executor.run(Executor.java:374)
Caused by: java.io.InterruptedIOException
at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:979)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:610)
... 6 more
Caused by: java.lang.InterruptedException
at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:122)
at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:972)
... 14 more
Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: E200015: ISVNAuthentication provider did not provide credentials; HTTP authorization cancelled.
svn: E200015: ISVNAuthentication provider did not provide credentials; HTTP authorization cancelled.
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:60)
at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:115)
... 17 more
Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: ISVNAuthentication provider did not provide credentials; HTTP authorization cancelled.
at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:689)
... 35 more
Jun 30, 2015 2:34:22 AM hudson.scm.SubversionSCM buildEnvVars
WARNING: no revision found
Jun 29, 2015 9:23:07 AM hudson.model.Executor run
+ java.lang.IllegalStateException:
SEVERE: Unexpected executor death
+ java.lang.InterruptedException
Jun 30, 2015 2:34:22 AM hudson.scm.SubversionSCM buildEnvVars
WARNING: no revision found
Такие настройки худо-бедно работают. Худо потому что три точки бывают не всегда, и если не нашлось трех точек, как перед строкой SEVERE: Unexpected executor death, тогда сворачивается все до конца файла. И такое поведение для всех случаев, когда после слова Exception три точки не попали в лог. А в панели Coder::CodeFold в результате отображается список безумной вложенности - файл лога довольно длинный. Если в правилах фолдинга заменяю три точки "..." на пустую строку "", тогда вообще любой фолдинг в качестве правой границы использует конец файла.
Такие настройки абсолютно бесполезны, правая граница всегда в конце файла
- Jun 29, 2015 9:23:07 AM hudson.model.Executor run
...java.lang.IllegalStateException:
...SEVERE: Unexpected executor death
...java.lang.InterruptedException
...Caused by: java.io.InterruptedIOException
...Caused by: java.lang.InterruptedException
...Caused by: org.tmatesoft.svn.core.SVNCancelException: svn: E200015: E200015: ISVNAuthentication provider did not provide credentials; HTTP authorization cancelled.
+ Jun 30, 2015 2:34:22 AM hudson.scm.SubversionSCM buildEnvVars
- переход по дате и вложенным предупреждениям внутри.
Upd2: Хотя получается скорее удобство навигации, чем сворачивание.
Last edited by Skif_off on Thu Jul 02, 2015 6:22 am, edited 2 times in total.
Folds:
;===============================================================
;Flags Font Color Color Fold Fold Delimiters
; style text bkgrnd start end
;===============================================================
;2097664=512+2097152
2097664 0 0 0 "Exception" ".\n\n" ""