Page 10 of 99

Posted: Sun Jul 07, 2013 10:30 am
by opk44
Drugmix
---(1)---
Не указано с каким именно языком "воюете", но, похоже, Вы избрали тупиковый путь.
a) Не следует забывать, что блоки текста вставляются в ответ на "Abbreviations". Следует ли напоминать, что такое аббревиатура (и часто ли Вы встречали в аббревиатурах пробелы)? :)
b) Не следует забывать, что аббревиатура не обязана в точности совпадать с началом подставляемого блока. Т.е. в ответ на "тратата" Вы можете подставить "все равно что".
Здесь могут быть разные подходы, но прежде следует поразмыслить над тем, почему в cpp.coder, например, в дополнение к

Code: Select all

$~if
if ($[])
{
${AutoComplete_Indent}$[]
}
не добавлено еще и

Code: Select all

$~ife
if ($[])
{
${AutoComplete_Indent}$[]
}
else
{
${AutoComplete_Indent}$[]
}

Это будет очень полезное размышление на тему "разумного-достаточного".
c) Не следует забывать, что в выражении "else if", сам "if" является вложенной конструкцией и потому вполне себе самостоятелен. Т.е. сейчас, ничего не меняя, "else" комплитится как отдельное слово, а дописываемый "if" раскрывается в правильную форму и без проблем с умножением скобок. На мой субъективный взгляд такая "спартанская" форма выгодно отличается (от разных добавок в виде ~ife, ~ifei...) тем, что не связывает рук заранее определенным в автокомплитере количеством вложенных "элсе-ифов".
P.S. Кстати, можете еще посмотреть подсветку lss.coder (автор VladSh). В ней применен иной подход к "аббревиатурам" (ИМХО не вполне экономный, хотя и более наглядный).

Posted: Sun Jul 07, 2013 10:50 am
by Lenchik
Не следует забывать, что блоки текста вставляются в ответ на "Abbreviations". Следует ли напоминать, что такое аббревиатура (и часто ли Вы встречали в аббревиатурах пробелы)?
А ещё, когда начинаешь набирать, то выпадает список начинающийся с этой "аббревиатуры", и вот тут уже можно использовать "аббревиатуры" для полноценной иллюстрации вставляемого, как раз с пробелами (см. viewtopic.php?p=22270#p22270).
AVSPmod (редактор файлов Avisynth), к примеру, вставляет по автокомплиту самый расширенный блок записи функции и по мере продвижения между запятыми, отделяющими параметры, пишет какой параметр и какого типа туда вписывать надо. у нас такого нельзя, но в теории можно делать подсказки через выпадающий список автокомплита.

Posted: Sun Jul 07, 2013 11:14 am
by Drugmix
Lenchik
что же Вы сразу не сказали про трюк с неразрывным пробелом-то?
Это же как раз то, что нужно, этого вполне достаточно.

Posted: Tue Jul 09, 2013 2:11 pm
by DrakonHaSh
как можно добавить в Folds строку, начинающуюся с символа ! ?

делаю для навигации по тексту. если бы в качестве конца блока можно было ставить "\n" задача была бы решена. но т.к. "\n" не воспринимается как конец строки, то никак не получается у меня задуманное :(

Posted: Tue Jul 09, 2013 10:39 pm
by opk44
DrakonHaSh
У меня получилось вот так:

Code: Select all

;428=4+8+32+128+256
428	0	0	0	"!"	"!"	" 	"
Образец я "честно украл" из файла coder.coder. Только добавил флаг "4" (т.е. форсированного получения имени справа от начала блока). Есть один эффект (не знаю хорошо это или плохо) - если воскл.знак будет даже не в первой позиции, но перед ним будут стоять только пробелы, то все равно фолдится.

Posted: Wed Jul 10, 2013 3:40 am
by Lenchik
Для Акельпада — нет. Для других редакторов бывает, можете теми темами воспользоваться, чтобы создать тему подсветки для Акеля. Например, https://github.com/ajaxorg/ace/blob/mas ... t_rules.js

Posted: Wed Jul 10, 2013 6:17 am
by Instructor
Lenchik wrote:А с $= непонятно как работать и подсветка синтаксиса самих кодер-файлов тоже не даёт подсказки. :(
$= используется в случае, если есть потребность использовать разделители в аббревиатуре. Но конструкция $= требует полного совпадения (а не частичного как с $~). Например:
$=w.e
while ()
{
}
В данном случае только после полного набора "w.e" и нажатия горячей клавиши дополнения можно развернуть аббревиатуру.

Posted: Wed Jul 10, 2013 8:03 am
by DrakonHaSh
opk44 wrote:DrakonHaSh
У меня получилось вот так:

Code: Select all

;428=4+8+32+128+256
428	0	0	0	"!"	"!"	" 	"
Образец я "честно украл" из файла coder.coder. Только добавил флаг "4" (т.е. форсированного получения имени справа от начала блока). Есть один эффект (не знаю хорошо это или плохо) - если воскл.знак будет даже не в первой позиции, но перед ним будут стоять только пробелы, то все равно фолдится.
Спасибо! именно то, чего хотелось.

ps мне как-то в голову не приходил вариант поставить в качестве окончания блока ! - стереотипность мышления подвела - как единичный символ [в одной и той же позиции] будет и началом и сразу концом блока :)

Posted: Sun Jul 14, 2013 6:00 pm
by die_klaster
Настраиваю подсветку для своего типа файла. В файле нужно подсветить вхождения "4Gb", "4 Gb" (без кавычек). Настраиваю секцию WORDS

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 Гб
Проблема в том, что во вхождениях с пробелом "4 GB" подсвечивается только четвёрка. А также, если есть вхождение типа ROM4Gb, то оно не подсвечивается.
Как бы эти два момента устранить?

Posted: Sun Jul 14, 2013 10:46 pm
by opk44
die_klaster
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)
Пример скрипта раскраски ("storage.js"):

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 Гб");
// ...
При таком подходе Вы вправе оперировать понятием "фрагмент" или "вхождение". Но, конечно, такая раскраска "мертвая", т.е. при добавлении нового текста все каждый раз придется перекрашивать заново.

Posted: Mon Jul 15, 2013 9:18 am
by VladSh
Instructor
Сейчас приходится работать с огромными xml'ями, и очень нехватает функционала сворачивания блоков Ctrl+<цифра-номер уровня>, как есть в Notepad++. Можно ли такое реализовать?

Добавлено 1: Может быть можно как-то сворачивать текущий уровень по всему файлу? Тогда проблему с отсутствием Ctrl+<цифра-номер уровня> можно было бы как-то отодвинуть.

Добавлено 2: Можно ли сделать сворачивание текущего уровня со всеми вложенными подуровнями сразу? Лучше отдельной командой, но можно и параметром в ini.

Posted: Mon Jul 15, 2013 1:45 pm
by die_klaster
opk44
Ну вопрос не в том, какое у меня представление, а в том, что это нужно сделать.
Про ROM4Gb:
Поиск по тексту ведь находит "4Gb" в этом сочетании. Почему бы и Akelpad'у с плагином этого не сделать?
В какую секцию файла .coder мне впихнуть нужные слова, чтобы они всё-таки подсвечивались?

Posted: Mon Jul 15, 2013 6:00 pm
by VladSh
Instructor
Ещё. Можно ли опцию в ini для неотображения завершающей части свёрнутого блока?

Posted: Tue Jul 16, 2013 6:10 pm
by DrakonHaSh
DrakonHaSh wrote:
opk44 wrote:DrakonHaSh
У меня получилось вот так:

Code: Select all

;428=4+8+32+128+256
428	0	0	0	"!"	"!"	" 	"
Образец я "честно украл" из файла coder.coder. Только добавил флаг "4" (т.е. форсированного получения имени справа от начала блока). Есть один эффект (не знаю хорошо это или плохо) - если воскл.знак будет даже не в первой позиции, но перед ним будут стоять только пробелы, то все равно фолдится.
Спасибо! именно то, чего хотелось.

ps мне как-то в голову не приходил вариант поставить в качестве окончания блока ! - стереотипность мышления подвела - как единичный символ [в одной и той же позиции] будет и началом и сразу концом блока :)
рано я обрадовался. подобный фокус нормально не срабатывает :(
мне нужно чтобы блок начинался и заканчивался на одной строке, а так - он заканчивается либо в конце текста либо на следующем ! в начале строки

Instructor
помоги пожалуйста решить это вопрос:
как можно добавить в Folds строку (только ее одну! - чтоб блок начинался и сразу заканчивался в этой строке), начинающуюся с символа ! ?

делаю для навигации по тексту. если бы в качестве конца блока можно было ставить "\n" задача была бы решена. но т.к. "\n" не воспринимается как конец строки, то никак не получается у меня задуманное :(

Posted: Tue Jul 16, 2013 7:18 pm
by Drugmix
Вопрос решён.