Skip to content

Commit

Permalink
Use extension from Coder plugin:
Browse files Browse the repository at this point in the history
- if file not saved
- if file extension is unknown
- if -searchRegions=false and file may contains regions
  • Loading branch information
Infocatcher committed Jan 14, 2014
1 parent 397a1c3 commit 2cbc4bc
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions toggleComments.js
Expand Up @@ -1167,6 +1167,11 @@ function getCurrentExt() {
if(ext && !commentsSets[ext])
ext = null;
}
if(!ext || !searchRegions && commentsRegions[ext]) {
var coderExt = getCoderExt();
if(coderExt)
ext = coderExt;
}
var read, write;
if(saveLastExt && (read = oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/))) {
var extCacheId = "processId:" + oSys.Call("kernel32::GetCurrentProcessId")
Expand Down Expand Up @@ -1224,6 +1229,30 @@ function getCurrentExt() {
write && oSet.End();
return [ext, cmmSet];
}
function getCoderExt() {
var alias = getCoderAlias();
if(/^\.[^.]+$/.test(alias)) {
var ext = alias.substr(1).toLowerCase();
if(commentsSets[ext])
return ext;
}
return "";
}
function getCoderAlias() {
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=19363#19363
var hWndEdit = AkelPad.GetEditWnd();
var hDocEdit = AkelPad.GetEditDoc();
var pAlias = "";
if(hWndEdit && hDocEdit) {
var lpAlias = AkelPad.MemAlloc(256 * 2 /*sizeof(wchar_t)*/);
if(lpAlias) {
AkelPad.CallW("Coder::Settings", 18 /*DLLA_CODER_GETALIAS*/, hWndEdit, hDocEdit, lpAlias, 0);
pAlias = AkelPad.MemRead(lpAlias, 1 /*DT_UNICODE*/);
AkelPad.MemFree(lpAlias);
}
}
return pAlias;
}

function getArg(argName, defaultVal) {
var args = {};
Expand Down

8 comments on commit 2cbc4bc

@Drugoy
Copy link

@Drugoy Drugoy commented on 2cbc4bc Jan 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я правильно понимаю, что ты этим коммитом научил скрипт определять тип комментирования (скажем, ; … против /* … */) для текущего документа?
У меня вот он и раньше как-то это умел делать: в .ahk файле комментировал ; …, а в .css /* … */.

@Drugoy
Copy link

@Drugoy Drugoy commented on 2cbc4bc Jan 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@Drugoy
Copy link

@Drugoy Drugoy commented on 2cbc4bc Jan 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

и если это так, то не нужно ли вычистить всё заранее заданное содержимое переменной commentsSets?

@Infocatcher
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нет, от встроенного перечня типов комментирования (commentsSets), никуда не деться.
Если скрипт не знает, как обрабатывать файл (расширение файла), выдается запрос, чтобы пользователь ввел расширение вручную, выбор запоминается для текущего окна редактирования.
А с запросом к Coder'у можно обойтись без запроса для несохраненного файла (если для него выставлена подсветка, и скрипт знает такое расширение) и для какого-нибудь notes.txt (а для txt нет настроек), если для него вручную выставлена подсветка кода.

По поводу определения типа комментирования.
При использовании -searchRegions=true (и если текущее расширение найдено в commentsRegions), производится проверка, не находится каретка внутри чего-нибудь типа <script>...</script> в *.html. И если находится, то используются настройки для js.
Если выключить -searchRegions, внутри *.html всегда будут использоваться комментирование для HTML. Теперь в этом случае спрашивается расширение у Coder'а: если включить подсветку js, то и комментировать будет соответствующим образом.
Далее, когда определен тип текущего «региона», берутся настройки из commentsSets.

@Drugoy
Copy link

@Drugoy Drugoy commented on 2cbc4bc Jan 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нет, от встроенного перечня типов комментирования (commentsSets), никуда не деться.

А раз есть возможность обращаться с запросами к Coder'у - разве не проще ли и для этих случаев обращаться к нему?

@Infocatcher
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А раз есть возможность обращаться с запросами к Coder'у - разве не проще ли и для этих случаев обращаться к нему?

Есть, но ограниченная. По большей части, потенциальная польза есть только в упрощении поиска существующих комментариев для их удаления. И в любом случае Coder не поддерживает несколько разных типов подсветки в рамках одного документа, так что еще и функциональность меньше станет. Плюс Coder вряд ли сообщит что-нибудь полезное о многострочных комментариях, если отключен фолдинг.

Скажем, есть

Call("Coder::Settings", 22, WINDOW, DOCUMENT, "VARNAME", *VARVALUE, *VARVALUELENGTH)

Можно узнать цвет для COMM и дальше как в CodePoster.js. Только это все весьма криво, сломается от использования подсветки, плохо совместимо с возможным желанием раскрасить разные комментарии разными цветами (строчные, блоковые и штуки типа Javadoc) и надо будет как-то обрабатывать ссылки.

В общем, судя по документации Coder'а, его для таких целей нужно будет дорабатывать, а раз так, то не проще ли это все сразу и встроить? Впрочем, тут я обеими руками за. :)

@Drugoy
Copy link

@Drugoy Drugoy commented on 2cbc4bc Jan 14, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И в любом случае Coder не поддерживает несколько разных типов подсветки в рамках одного документа, так что еще и функциональность меньше станет.

Что ты имеешь в виду? Насколько я знаю - ещё как поддерживает.

Плюс Coder вряд ли сообщит что-нибудь полезное о многострочных комментариях, если отключен фолдинг.

Ага, я и забыл, что за многострочные комменты в ahk.coder отвечает

Folds:
262145  3   ${COMM} 0   "/*"    "*/"    ""

а не

Quotes:
5   3   ${COMM} 0   "/*"    "*/"    ""  ""  ""

В общем, судя по документации Coder'а, его для таких целей нужно будет дорабатывать, а раз так, то не проще ли это все сразу и встроить? Впрочем, тут я обеими руками за. :)

Увы, но Instructor очень неохотно принимает feature request'ы и, на мой взгляд, самый важный плагин, coder - развивается медленней, чем хотелось бы. :(

@Infocatcher
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Что ты имеешь в виду? Насколько я знаю - ещё как поддерживает.

Имеется в виду, например, раскраска JavaScript и CSS внутри HTML, сейчас можно только переключить подсветку на нужную в данный момент.

Please sign in to comment.