Архив SciTE-форума
Автор: BioInfo, Отправлено:11:26 15-10-2007
mozers
Цитата:
| добавим кучу обязательных параметров... |
Дык почему обязательных? Не устанавливай их вообще и не будет блочного комментария.
Цитата:
| А вот с этим - согласен. |
По моему те не понял всей фишки.
Первые два нужны чтобы закоментить код, т.е. чтобы код больше не исполнялся. А последний чисто для написания описания кода.
Лично я подобным образом не описываю код, в С++ я делаю комментарий всегда с помощью //
Примерно это выглядит так:
Код:
|
// супер-пупер функция void foo() {}; |
Я привык к этому, но предложенный в SciTE блочный комментарий на мой взгляд довольно таки удобный, так как позволяет сходу отличить описание от закомменченного кода, пример с той же функцией:
Код:
|
/* * супер-пупер функция * делает то-то то-то */ void foo() { code; //code; code; code= /* code */ code + code; }; |
Я возможно использовал бы его если бы мой редактор С++ поддерживал такой вид комментария, а так придется такую штуку вручную делать, ну или использовать навесные скрипты.
Автор: Nagual, Отправлено:12:06 15-10-2007
спорить не буду, выскажу лишь предположение насчет блочного комментария
например, имеется код, который представлен свернутыми блоками (со значками +)
как то попробововав закомментить такой блок, в надежде, что SkiTE это удастся, потерпел неудачу, хотя очень, имхо, удобно
предположение связано как раз с комменированием такого (свернутого) блока
Автор: mozers, Отправлено:13:19 15-10-2007
BioInfo
Цитата:
| Дык почему обязательных? |
Оригинальный SciTE, кстати, об этом говорит полностью, а SciTE-Ru говорит об отсутствии только comment.box.start.lexer (хотя он может быть и задан) чем вводит пользователя в заблуждение.
Ладно, оставим споры о нужности/бестолковости этой команды, поскольку каждая из сторон может привести доводы ЗА и ПРОТИВ.
Формулирую вопрос по другому: Назовите пожалуйста хоть один язык программирования в котором есть описанные в официальной документации правила организации блочного комментария.
Только не надо, пожалуйста, приводить примеры различных вариантов оформления строкового или потокового комментария, коих существует великое множество, а придумать можно еще больше.
Оттого что потоковый комментарий расположили как то иначе он же не превратился в другой!
Nagual
Ща как раз сочиняю скрипт, который на мой взгляд позволит навсегда забыть про эту "муру" с добавлением/удалением комментариев. Хочу сделать полный автомат, который сам определяет нужные символы комментария, поток или блок выделен и ставит/убирает комментарий на всем чем угодно.
Автор: dB6, Отправлено:14:04 15-10-2007
mozers
Цитата:
|
Формулирую вопрос по другому: Назовите пожалуйста хоть один язык программирования в котором есть описанные в официальной документации правила организации блочного комментария. |
Да без проблем - Perl.
Добавлено:
а в том же PHP можно (если часто используются here-doc) задать начало и конец блочного комментария как
Код:
| <<<end_delimiter |
Автор: BioInfo, Отправлено:14:33 15-10-2007
mozers
Цитата:
| А потому что надо обязательно задавать все 3 параметра |
Ну так этож очевидно, или я чего-то не догоняю... Сам блочный комментарий состоит из трех частей, в чем смыл задать его не полностью?
У тебя же не возникает подобных чувств при задании комментария /* */ - тут обязательно нужно задать два параметра.
Кстати, а чего не запустится если не задать comment.box.middle.lexer ?
Автор: dB6, Отправлено:14:57 15-10-2007
Кхм.. Хочу немного имправиться. В Perl есть тип комментария, который должен начинаться с новой строки и заканчиваться на новой строке.
Только там не нужен comment.box.middle.lexer. А в SciTE он требуется.. Что есть не правильно, имхо. Он должен отрабатывать и без задания comment.box.middle.lexer, опять же имхо.
Автор: mozers, Отправлено:16:00 15-10-2007
BioInfo
Цитата:
| а чего не запустится если не задать comment.box.middle.lexer |

А в общем то вопрос можно закрыть, поскольку нету в природе такого понятия как блок кода. Есть строка (одна или несколько) и поток и все.
А то что некоторые слишком умные придумывают свои стили оформления закомментированного линейным или потоковым комментом текста - это их личные извращения и нехрена было всем голову запудривать.
Добавлено:
Ладно, сам бузу начал, сам и закончу:
Умные вы ребята и грамотные, но объяснять так, чтобы понятно было простому народу не можете.
Насилу въехал я в потаенный смысл ваших слов.
Объясню как понял. (#,@,* - условные символы комментария - в разных языках разные)
Строковый:
текст
# закомментированный текст
# закомментированный текст
текст
Потоковый:
текст
текст # закомментированный текст
закомментированный текст @ текст
текст
Блочный:
текст
# закомментированный текст
* закомментированный текст
@
текст
Во многих языках символ * (что в примере блочного комментария) необязателен (он обязателен только для SciTE).
Автор: dB6, Отправлено:17:36 15-10-2007
Цитата:
|
Блочный: текст # закомментированный текст * закомментированный текст @ текст |
Добавлю - чаще встречается такой формат:
Код:
|
Блочный: текст # * закомментированный текст * закомментированный текст @ |
где # - начало комментария
и @ - конец
и эти символы должны быть единственными в строке
Автор: BioInfo, Отправлено:21:15 15-10-2007
mozers
Цитата:
| Во многих языках символ * (что в примере блочного комментария) необязателен (он обязателен только для SciTE) |
Ну так запости в баглист, поправим это недоразумение
Автор: ALeXkRU, Отправлено:22:44 15-10-2007
mozers
10:12 15-10-2007
Цитата:
| ссылку на официальную документацию по языку программирования |
вот - довольно подробно про разные типы комментариев рассказано..
а вообще, как раз, чаще упоминается блочный комментарий (примерчик), другое дело, что в это понятие вкладывают..
Автор: mozers, Отправлено:23:14 17-10-2007
Новый скрипт
Цитата:
|
-- xComment -- Version: 1.0 beta --------------------------------------------------- -- C блеском заменяет стандартную комбинацию Ctrl+Q (комментирование/снятие комментария) -- В зависимости от того что выделено, комментируются (снимается комментарий) со строки или с потока текста -- И забудьте навсегда про этот атваизм "~". Тильда вам больше никогда не понадобится! |

Если идея понравилась - давайте дошлифуем вместе!
Автор: BioInfo, Отправлено:23:49 17-10-2007
2mozers
Цитата:
| C блеском заменяет стандартную комбинацию Ctrl+Q (комментирование/снятие комментария) |
А можно его интегрировать в smartcomment? Вроде логично, это же smartcomment
Автор: frs, Отправлено:09:16 18-10-2007
Когда-то захотелось переписать code-poster, но терпения не хватило, и я его забросил, а сейчас решил выложить этот полуфабрикат, авось кому пригодится и он его доведёт до ума.
code-poster.lua
[more]
Код:
|
-- Alternative Code Poster -- Version: 1 -- Autor: VladVRO, frs --------------------------------------------------- -- Description: -- конвертирует выделенный текст или весь файл в форматированный текст форума, используя -- синтаксическую подсветку самого редактора (номер стиля) и таблицу цветов STYLES. -- корректно работает для: C/C++, CSS, JavaScript, Lua, VB, VBscript, Properties -- Для подключения добавьте в свой файл .properties следующие строки: -- command.name.125.*=Преобразовать в код для форума -- command.125.*=dofile $(SciteDefaultHome)\tools\code-poster.lua -- command.mode.125.*=subsystem:lua,savebefore:no -- ремарки по использованию: -- - в скрипте используется функция editor.LexerLanguage (сборка Ru-Board, -- http://scite.ruteam.ru/scite/sborki/scite-ru-board) --------------------------------------------------- -- todo -- -- добавить наклон и жирность -- считывать цвета из лексеров -- Output to console toconsole=true -- Output to file tofile=true -- Output to clipboard toclipboard=true addcodetag=true local lang="bbcode" -- local lang="html" -- добавить наклон и жирность local STYLES = { comment = {color="008000", no=false}, number = {color="AC00A9"}, string = {color="9999CC", no=false}, preproc = {color="7F7F00"}, operator = {color="FF0000"}, keyword = {color="0000DF"}, keyword2 = {color="0080C0"}, keyword3 = {color="8000FF"}, keyword4 = {color="FF8000"}, keyword5 = {color="660000"}, keyword6 = {color="004080"}, keyword7 = {color="408080"}, keyword8 = {color="AAAA00"}, } local LFSTYLES = { comment = {start="[I]", endd="",no=false}, number = {start="",endd=""}, string = {start="", endd="", no=false}, preproc = {start="",endd=""}, operator = {start="",endd=""}, keyword = {start="",endd=""}, keyword2 = {start="",endd=""}, keyword3 = {start="",endd=""}, keyword4 = {start="",endd=""}, keyword5 = {start="",endd=""}, keyword6 = {start="",endd=""}, keyword7 = {start="",endd=""}, keyword8 = {start="",endd=""}, } STYLES.default = { [1] = STYLES.comment, [2] = STYLES.comment, [3] = STYLES.comment, [4] = STYLES.number, [5] = STYLES.keyword, [6] = STYLES.string, [7] = STYLES.string, [8] = STYLES.string, [9] = STYLES.preproc, [10] = STYLES.operator, [13] = STYLES.keyword2, [14] = STYLES.keyword3, [15] = STYLES.keyword4, [16] = STYLES.keyword5, [17] = STYLES.keyword6, [18] = STYLES.keyword7, [19] = STYLES.keyword8, } STYLES.others = { [1] = STYLES.comment, [2] = {color="0080C0", no=false},--true}, [3] = STYLES.operator, [4] = STYLES.preproc, [5] = STYLES.keyword, } STYLES.props = STYLES.others STYLES.vb = { [1] = STYLES.comment, [2] = STYLES.number, [3] = STYLES.keyword, [4] = STYLES.string, [5] = STYLES.preproc, [6] = STYLES.operator, [8] = STYLES.number, [10] = STYLES.keyword2, [11] = STYLES.keyword3, [12] = STYLES.keyword4, } STYLES.vbscript = STYLES.vb STYLES.css = { [1] = STYLES.keyword, [3] = STYLES.keyword2, [5] = STYLES.operator, [6] = STYLES.keyword3, [8] = STYLES.string, [9] = STYLES.comment, [10] = STYLES.number, [12] = STYLES.preproc, [13] = STYLES.string, [14] = STYLES.string, [15] = STYLES.keyword4, [16] = STYLES.keyword5, } STYLES.cpp = { [1] = STYLES.comment, [2] = STYLES.comment, [3] = STYLES.comment, [4] = STYLES.number, [5] = STYLES.keyword, [6] = STYLES.string, [7] = STYLES.string, [8] = STYLES.string, [9] = STYLES.preproc, [10] = STYLES.operator, [13] = STYLES.keyword4, [14] = STYLES.keyword3, [15] = STYLES.comment, [16] = STYLES.keyword2, [17] = STYLES.comment, [18] = STYLES.comment, } STYLES.cppnocase = STYLES.cpp local LEXSTYLES local lex = editor.LexerLanguage if lex == nil then LEXSTYLES = STYLES.others else LEXSTYLES = STYLES[lex] if LEXSTYLES == nil then LEXSTYLES = STYLES.default end end if lang=="bbcode" then col="[color=#" op="[" cl="]" ecol="" [/color]nl="\n" -- при выводе в clipboard ставить "\r\n" ext=".bbcode" else col="<font color=" op="<" cl=">" ecol="</font>" nl="<br />\r\n" ext=".htm" end local function clean(txt) if lang=="html" then txt = string.gsub(txt, "\t", " ") else end txt = string.gsub(txt, "\r\n", nl) return txt end local ccode="" local function fill(txt,nstyle,tstart) txt=clean(txt) style = LEXSTYLES[nstyle] if style ~= nil then if lang=="bbcode" and style.no then ccode=ccode.."[no]"..string.gsub(txt,"%[(/*)no%]","[%1n[/no][no]o]").."[/no]" end if style.color then ccode=ccode..col..style.color..cl..txt..ecol end else ccode=ccode..txt end end local text = editor:GetSelText() if text == "" then editor:SelectAll() text = editor:GetSelText() elseif string.len(text) ~= editor.Length then line = scite.SendEditor(SCI_LINEFROMPOSITION, editor.SelectionStart) + 1 end local pos = editor.SelectionStart local ln=editor:LineFromPosition(pos) + 1 local header = "" if props["FileNameExt"] ~= "" then header =op.."b"..cl..col.."Blue"..cl..props["FileNameExt"]..ecol..op.."/b"..cl.." " if ln ~= nil then header = header..op.."b"..cl..op.."u"..cl.." строка "..ln..op.."/u"..cl..op.."/b"..cl..nl end end curstyle=editor.StyleAt[pos] local nstyle local tstyle local txt="" local tstart=true for str in string.gfind(text, "%S?%s*") do local len = string.len(str) tstyle=nstyle nstyle = editor.StyleAt[pos] if nstyle ~= curstyle then if txt~="" then fill(txt,curstyle,tstart) tstart=false end txt=str else txt=txt..str end fin=curstyle curstyle=nstyle pos=pos+len end if txt~="" then fill(txt,fin) end if lang=="bbcode" and addcodetag then local scode=op.."code"..cl local ecode=op.."/code"..cl ccode=header..scode..ccode..ecode else ccode=header..ccode end -- Output to console -- вывод на консоль if toconsole then trace(ccode) end -- Output to file -- запись в файл if tofile then local path=props["SciteDefaultHome"].."\\tools\\"..props["FileNameExt"]..ext io.output(path) io.write(ccode) io.close() scite.Open (path) end -- Output to clipboard -- вывод в клипборд if toclipboard then editor:CopyText(ccode, string.len(ccode)) end |
[/more]
Теги раскраски сгенерированы им самим
Автор: Smitis, Отправлено:10:27 18-10-2007
Хочу доработать файл kix.properties для языка KiXtart. Не могу разобраться, можно ли настроить сворачивание блоков (функций, структурных операторов) через файл properties?
Автор: mozers, Отправлено:11:37 18-10-2007
BioInfo
Цитата:
| А можно его интегрировать в smartcomment? |
Нет (Слишком они разные и работают совершенно по другому).
По поводу smartcomment:
Во-первых название твоего скрипта не отражает все выполняемые им функции (комментирование текста, заключение в кавычки и скобки, автозакрытие скобок и кавычек).
Я бы сильно советовал разбить этот скрипт на несколько или (если это невозможно) обеспечить возможность гибкого отключения некоторых, слишком назойливых, его возможностей.
Во-вторых мне не нравится сама идея комментирования выделенного текста посредством ввода первого символа комментирования.
Ну, а в-третьих можно сказать, что твой smartcomment окрылил меня на создание xComment

frs
На мой взгляд переделку этого скрипта надо начинать с того, чтобы все оформление (цвет, жирность, курсив) он брал не из своих внутренностей, а из .properties соответствующего языка.
Smitis
Свертка кода заложена (или нет) в лексере. Правка .properties тут не поможет

Однако можно написать lua-скрипт, который будет обеспечивать такую свертку (см. пример для текстовых файлов).
ALL
xComment поправил маленько...
Нахожу такие перлы в коде, как целая конструкция для сравнения длины 2х строк...
Думаю что те, для кого LUA - родной язык, многие функции смогут оформить более аккуратно... 
Автор: dB6, Отправлено:12:35 18-10-2007
mozers
Цитата:
| -- И забудьте навсегда про этот атваизм "~". Тильда вам больше никогда не понадобится! |
Объясни, плиз, что это значит?
Автор: BioInfo, Отправлено:12:54 18-10-2007
mozers
Цитата:
|
По поводу smartcomment: Во-первых название твоего скрипта не отражает все выполняемые им функции (комментирование текста, заключение в кавычки и скобки, автозакрытие скобок и кавычек). |
Предлагай другое название, переименовать не проблема, я же его не продаю

Предлагаю такое название для двух скриптов:
"mozers_auto_braces_kovichki_comment"

Цитата:
| Я бы сильно советовал разбить этот скрипт на несколько |
Например?
Цитата:
| или (если это невозможно) обеспечить возможность гибкого отключения некоторых, слишком назойливых, его возможностей. |
Какие возможности там слишком назойливы? Очевидно они работают не верно в таком случае, т.к. смысл скрипта именно в том чтобы помогать а не наоборот. Пиши подробнее все поправимо

Цитата:
| Во-вторых мне не нравится сама идея комментирования выделенного текста посредством ввода первого символа комментирования. |
Одно другому не мешает, кто-то будет комментировать так, кто-то сочетанием клавиш (лучше кстати сделать настраиваемым).
Вот мне понравилась например такая штука "забудьте навсегда про этот атваизм '~'", классно бы это интегрировать в smartcomment, сейчас там используется стандартное комментирование - я просто парится не захотел, а ты решил эту проблему.
Цитата:
| Ну, а в-третьих можно сказать, что твой smartcomment окрылил меня на создание xComment |
Если весь вопрос в авторстве, то просто поставь себя а меня убери, я не тщеславный.
Автор: frs, Отправлено:13:30 18-10-2007
mozers
Цитата:
| На мой взгляд переделку этого скрипта надо начинать с того, чтобы все оформление (цвет, жирность, курсив) он брал не из своих внутренностей, а из .properties соответствующего языка. |
cм. комментарий todo в скрипте

Сравните работу и выдаваемый результат старого и нового. Переделка была затеяна для упрощения, и откуда брать оформление - дело второстепенное. На этом моменте я его и отложил в долгий ящик.
Автор: mozers, Отправлено:15:16 18-10-2007
dB6
Раньше (до исторического материализма, начавшегося с xComment) в конце параметра comment.block.lua надо было обязательно вставлять какой то символ (обычно вставляли "~" тильду) - иначе Ctrl+Q просто не работал (комментарии не снимались).
Сейчас это дурацкое требование приказало долго жить

BioInfo
Если скрипт критикуют (я - про smartcomment)- значит им пользуются
- поэтому не стоит обижаться на замечания, я лишь изложил сугубо свое видение...frs
Цитата:
| cм. комментарий todo в скрипте |
Цитата:
|
-- добавить наклон и жирность -- считывать цвета из лексеров |

Автор: BioInfo, Отправлено:16:34 18-10-2007
mozers
Цитата:
| не стоит обижаться на замечания, я лишь изложил сугубо свое видение... |
Блин, какие обиды? Я говорю про объединение скриптов.
Скрипт усовершенствующий комментарий - smartcomment и скрипт усовершенствующий комментарий - xComment. Они ведь не пересекаются, а дополняют друг друга!
Обид нет никаких, я лишь говорю о том что я не телепат и не знаю с какими трудностями ты сталкиваешься при работе со скриптом, напиши их.
В общем так, я как выдастся свободное время, попробую их сам объединить, а потом вышлю тебе приватом для заценить и вынести вердикт

А "слишком назойливые особенности" все таки напиши! Прошу понять меня правильно, я не защищаю smartcomment, он не совершенен и я рад любым предложениям по его модернизации. Это же для всех хорошо. Пока о косяках сообщили только Влад и Чупакабра, эти косяки уже подправлены.
Всем
Если что-то не устраивает в smartcomment (да и вообще во всех скриптах) - пишите, не нужно стесняться
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
76 /
77 /
78 /
79 /
80 /
81 /
82 /
83 /
84 /
85 /
86 /
87 /
88 /
89 /
90 /
91 /
92 /
93 /
94 /
95 /
96 /
97 /
98 /
99 /
100 /
101 /
102 /
103 /
104 /
105 /
106 /
107 /
108 /
109 /
110 /
111 /
112 /
113 /
114 /
115 /
116 /
117 /
118 /
119 /
120 /
121 /
122 /
123 /
124 /
125 /
126 /
127 /
128 /
129 /
130 /
131 /
132 /
133 /
134 /
135 /
136 /
137 /
138 /
139 /
140 /
141 /
142 /
143 /
144 /
145 /
146 /
147 /
148 /
149 /
150 /
151 /
152 /
153 /
154 /
155 /
156 /
157 /
158 /
159 /
160 /
161 /
162 /
163 /
164 /
165 /
166 /
167 /
168 /
169 /
170 /
171 /
172 /
173 /
174 /
175 /
176 /
177 /
178 /
179 /
180 /
181 /
182 /
183 /
184 /
185 /
186 /
187 /
188 /
189 /
190 /
191 /
192 /
193 /
194 /
195 /
196 /
197 /
198 /
199 /
200 /
201 /
202 /
203 /
204 /
205 /
206 /
207 /
208 /
209 /
210 /
211 /
212 /
213 /

