Coder plugin (2)
- Author
- Message
-
Offline
- Posts: 874
- Joined: Sat Jan 16, 2010 2:03 pm
Drugmix
---(1)---
Не указано с каким именно языком "воюете", но, похоже, Вы избрали тупиковый путь.
a) Не следует забывать, что блоки текста вставляются в ответ на "Abbreviations". Следует ли напоминать, что такое аббревиатура (и часто ли Вы встречали в аббревиатурах пробелы)?
b) Не следует забывать, что аббревиатура не обязана в точности совпадать с началом подставляемого блока. Т.е. в ответ на "тратата" Вы можете подставить "все равно что".
Здесь могут быть разные подходы, но прежде следует поразмыслить над тем, почему в cpp.coder, например, в дополнение к не добавлено еще и
Это будет очень полезное размышление на тему "разумного-достаточного".
c) Не следует забывать, что в выражении "else if", сам "if" является вложенной конструкцией и потому вполне себе самостоятелен. Т.е. сейчас, ничего не меняя, "else" комплитится как отдельное слово, а дописываемый "if" раскрывается в правильную форму и без проблем с умножением скобок. На мой субъективный взгляд такая "спартанская" форма выгодно отличается (от разных добавок в виде ~ife, ~ifei...) тем, что не связывает рук заранее определенным в автокомплитере количеством вложенных "элсе-ифов".
P.S. Кстати, можете еще посмотреть подсветку lss.coder (автор VladSh). В ней применен иной подход к "аббревиатурам" (ИМХО не вполне экономный, хотя и более наглядный).
---(1)---
Не указано с каким именно языком "воюете", но, похоже, Вы избрали тупиковый путь.
a) Не следует забывать, что блоки текста вставляются в ответ на "Abbreviations". Следует ли напоминать, что такое аббревиатура (и часто ли Вы встречали в аббревиатурах пробелы)?
b) Не следует забывать, что аббревиатура не обязана в точности совпадать с началом подставляемого блока. Т.е. в ответ на "тратата" Вы можете подставить "все равно что".
Здесь могут быть разные подходы, но прежде следует поразмыслить над тем, почему в cpp.coder, например, в дополнение к не добавлено еще и
Это будет очень полезное размышление на тему "разумного-достаточного".
c) Не следует забывать, что в выражении "else if", сам "if" является вложенной конструкцией и потому вполне себе самостоятелен. Т.е. сейчас, ничего не меняя, "else" комплитится как отдельное слово, а дописываемый "if" раскрывается в правильную форму и без проблем с умножением скобок. На мой субъективный взгляд такая "спартанская" форма выгодно отличается (от разных добавок в виде ~ife, ~ifei...) тем, что не связывает рук заранее определенным в автокомплитере количеством вложенных "элсе-ифов".
P.S. Кстати, можете еще посмотреть подсветку lss.coder (автор VladSh). В ней применен иной подход к "аббревиатурам" (ИМХО не вполне экономный, хотя и более наглядный).
-
Offline
- Posts: 366
- Joined: Mon Jan 10, 2011 5:28 pm
- Contact:
А ещё, когда начинаешь набирать, то выпадает список начинающийся с этой "аббревиатуры", и вот тут уже можно использовать "аббревиатуры" для полноценной иллюстрации вставляемого, как раз с пробелами (см. viewtopic.php?p=22270#p22270).Не следует забывать, что блоки текста вставляются в ответ на "Abbreviations". Следует ли напоминать, что такое аббревиатура (и часто ли Вы встречали в аббревиатурах пробелы)?
AVSPmod (редактор файлов Avisynth), к примеру, вставляет по автокомплиту самый расширенный блок записи функции и по мере продвижения между запятыми, отделяющими параметры, пишет какой параметр и какого типа туда вписывать надо. у нас такого нельзя, но в теории можно делать подсказки через выпадающий список автокомплита.
-
Offline
- Posts: 122
- Joined: Sat Mar 19, 2011 10:20 pm
-
Offline
- Posts: 874
- Joined: Sat Jan 16, 2010 2:03 pm
DrakonHaSh
У меня получилось вот так:Образец я "честно украл" из файла coder.coder. Только добавил флаг "4" (т.е. форсированного получения имени справа от начала блока). Есть один эффект (не знаю хорошо это или плохо) - если воскл.знак будет даже не в первой позиции, но перед ним будут стоять только пробелы, то все равно фолдится.
У меня получилось вот так:
Code: Select all
;428=4+8+32+128+256
428 0 0 0 "!" "!" " "
-
Offline
- Posts: 366
- Joined: Mon Jan 10, 2011 5:28 pm
- Contact:
Для Акельпада — нет. Для других редакторов бывает, можете теми темами воспользоваться, чтобы создать тему подсветки для Акеля. Например, https://github.com/ajaxorg/ace/blob/mas ... t_rules.js
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
$= используется в случае, если есть потребность использовать разделители в аббревиатуре. Но конструкция $= требует полного совпадения (а не частичного как с $~). Например:Lenchik wrote:А с $= непонятно как работать и подсветка синтаксиса самих кодер-файлов тоже не даёт подсказки.
В данном случае только после полного набора "w.e" и нажатия горячей клавиши дополнения можно развернуть аббревиатуру.$=w.e
while ()
{
}
-
Offline
- Posts: 122
- Joined: Sat Mar 19, 2011 10:20 pm
Спасибо! именно то, чего хотелось.opk44 wrote:DrakonHaSh
У меня получилось вот так:Образец я "честно украл" из файла coder.coder. Только добавил флаг "4" (т.е. форсированного получения имени справа от начала блока). Есть один эффект (не знаю хорошо это или плохо) - если воскл.знак будет даже не в первой позиции, но перед ним будут стоять только пробелы, то все равно фолдится.Code: Select all
;428=4+8+32+128+256 428 0 0 0 "!" "!" " "
ps мне как-то в голову не приходил вариант поставить в качестве окончания блока ! - стереотипность мышления подвела - как единичный символ [в одной и той же позиции] будет и началом и сразу концом блока
-
Offline
- Posts: 5
- Joined: Sun Jul 14, 2013 5:53 pm
Настраиваю подсветку для своего типа файла. В файле нужно подсветить вхождения "4Gb", "4 Gb" (без кавычек). Настраиваю секцию WORDS
Проблема в том, что во вхождениях с пробелом "4 GB" подсвечивается только четвёрка. А также, если есть вхождение типа ROM4Gb, то оно не подсвечивается.
Как бы эти два момента устранить?
Code: Select all
;--Storage--
0 0 ${OP} 0 4Gb
0 0 ${OP} 0 4 Gb
0 0 ${OP} 0 4Гб
0 0 ${OP} 0 4 Гб
Как бы эти два момента устранить?
-
Offline
- Posts: 874
- Joined: Sat Jan 16, 2010 2:03 pm
die_klaster
1. Проблема не в этом, а в том что у Вас престранное представление (или отсутствие такового) о словах и разделителях. Во фрагменте "4 GB" я насчитал аж 2 слова. AkelPad, похоже, тоже. И кому придет в голову в слове "ROM4Gb" искать еще какие-то "слова"... Это ж не шарада.
2. Как Вы собираетесь, например, красить накопители 64Гб, особенно в ситуациях схожих с ROM4Gb?
3. Пока Вы четко не осмыслили, что именно Вам требуется от файла-подсветки и как он работает, можете попробовать раскрашивать "вручную", т.е. скриптом. Делаете, например, на тулбаре две кнопочки. На первую вешаете вызов скрипта-раскраски, на вторую - снятие всех отметок.Пример скрипта раскраски ("storage.js"):
При таком подходе Вы вправе оперировать понятием "фрагмент" или "вхождение". Но, конечно, такая раскраска "мертвая", т.е. при добавлении нового текста все каждый раз придется перекрашивать заново.
1. Проблема не в этом, а в том что у Вас престранное представление (или отсутствие такового) о словах и разделителях. Во фрагменте "4 GB" я насчитал аж 2 слова. AkelPad, похоже, тоже. И кому придет в голову в слове "ROM4Gb" искать еще какие-то "слова"... Это ж не шарада.
2. Как Вы собираетесь, например, красить накопители 64Гб, особенно в ситуациях схожих с ROM4Gb?
3. Пока Вы четко не осмыслили, что именно Вам требуется от файла-подсветки и как он работает, можете попробовать раскрашивать "вручную", т.е. скриптом. Делаете, например, на тулбаре две кнопочки. На первую вешаете вызов скрипта-раскраски, на вторую - снятие всех отметок.
Code: Select all
-"Красим" Call("Scripts::Main", 1, "storage.js") Icon("%a\AkelFiles\Plugs\Coder.dll", 6)
-"Отмываем" Call("Coder::HighLight", 3, 0) Icon("%a\AkelFiles\Plugs\Coder.dll", 11)
Code: Select all
// файл "storage.js" -"отметить в тексте емкость накопителей в 4Гб"
AkelPad.Call("Coder::HighLight", 2, "#000000", "#9BFF9B", 0, 3, 1, "4Gb");
AkelPad.Call("Coder::HighLight", 2, "#000000", "#9BFF9B", 0, 3, 2, "4 Gb");
AkelPad.Call("Coder::HighLight", 2, "#000000", "#9BFF9B", 0, 3, 3, "4Гб");
AkelPad.Call("Coder::HighLight", 2, "#000000", "#9BFF9B", 0, 3, 4, "4 Гб");
// ...
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Instructor
Сейчас приходится работать с огромными xml'ями, и очень нехватает функционала сворачивания блоков Ctrl+<цифра-номер уровня>, как есть в Notepad++. Можно ли такое реализовать?
Добавлено 1: Может быть можно как-то сворачивать текущий уровень по всему файлу? Тогда проблему с отсутствием Ctrl+<цифра-номер уровня> можно было бы как-то отодвинуть.
Добавлено 2: Можно ли сделать сворачивание текущего уровня со всеми вложенными подуровнями сразу? Лучше отдельной командой, но можно и параметром в ini.
Сейчас приходится работать с огромными xml'ями, и очень нехватает функционала сворачивания блоков Ctrl+<цифра-номер уровня>, как есть в Notepad++. Можно ли такое реализовать?
Добавлено 1: Может быть можно как-то сворачивать текущий уровень по всему файлу? Тогда проблему с отсутствием Ctrl+<цифра-номер уровня> можно было бы как-то отодвинуть.
Добавлено 2: Можно ли сделать сворачивание текущего уровня со всеми вложенными подуровнями сразу? Лучше отдельной командой, но можно и параметром в ini.
Last edited by VladSh on Tue Jul 16, 2013 3:24 pm, edited 2 times in total.
-
Offline
- Posts: 5
- Joined: Sun Jul 14, 2013 5:53 pm
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
-
Offline
- Posts: 122
- Joined: Sat Mar 19, 2011 10:20 pm
рано я обрадовался. подобный фокус нормально не срабатываетDrakonHaSh wrote:Спасибо! именно то, чего хотелось.opk44 wrote:DrakonHaSh
У меня получилось вот так:Образец я "честно украл" из файла coder.coder. Только добавил флаг "4" (т.е. форсированного получения имени справа от начала блока). Есть один эффект (не знаю хорошо это или плохо) - если воскл.знак будет даже не в первой позиции, но перед ним будут стоять только пробелы, то все равно фолдится.Code: Select all
;428=4+8+32+128+256 428 0 0 0 "!" "!" " "
ps мне как-то в голову не приходил вариант поставить в качестве окончания блока ! - стереотипность мышления подвела - как единичный символ [в одной и той же позиции] будет и началом и сразу концом блока
мне нужно чтобы блок начинался и заканчивался на одной строке, а так - он заканчивается либо в конце текста либо на следующем ! в начале строки
Instructor
помоги пожалуйста решить это вопрос:
как можно добавить в Folds строку (только ее одну! - чтоб блок начинался и сразу заканчивался в этой строке), начинающуюся с символа ! ?
делаю для навигации по тексту. если бы в качестве конца блока можно было ставить "\n" задача была бы решена. но т.к. "\n" не воспринимается как конец строки, то никак не получается у меня задуманное