сделать стартовой  |  добавить в избранное

   SciTE - редактор кода для программистов

Архив 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
Цитата:
Дык почему обязательных?
А потому что надо обязательно задавать все 3 параметра comment.box.start.lexer, comment.box.middle.lexer, comment.box.end.lexer иначе ctrl+shift+B вообще работать не будет.
Оригинальный SciTE, кстати, об этом говорит полностью, а SciTE-Ru говорит об отсутствии только comment.box.start.lexer (хотя он может быть и задан) чем вводит пользователя в заблуждение.

Ладно, оставим споры о нужности/бестолковости этой команды, поскольку каждая из сторон может привести доводы ЗА и ПРОТИВ.

Формулирую вопрос по другому: Назовите пожалуйста хоть один язык программирования в котором есть описанные в официальной документации правила организации блочного комментария.
Только не надо, пожалуйста, приводить примеры различных вариантов оформления строкового или потокового комментария, коих существует великое множество, а придумать можно еще больше.
Оттого что потоковый комментарий расположили как то иначе он же не превратился в другой!

Nagual
Ща как раз сочиняю скрипт, который на мой взгляд позволит навсегда забыть про эту "муру" с добавлением/удалением комментариев. Хочу сделать полный автомат, который сам определяет нужные символы комментария, поток или блок выделен и ставит/убирает комментарий на всем чем угодно.
Автор: dB6, Отправлено:14:04 15-10-2007
mozers

Цитата:

Формулирую вопрос по другому: Назовите пожалуйста хоть один язык программирования в котором есть описанные в официальной документации правила организации блочного комментария.


Да без проблем - Perl.

Добавлено:
а в том же PHP можно (если часто используются here-doc) задать начало и конец блочного комментария как
Код:
<<<end_delimiter
и [code]end_delimiter;[code] соответственно.

Автор: 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
Если не задать, то этот comment.box вообще использовать не получится. Попробуй сам... (не опциональные эти параметры, а обязательные

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

Добавлено:
Ладно, сам бузу начал, сам и закончу:
Умные вы ребята и грамотные, но объяснять так, чтобы понятно было простому народу не можете.
Насилу въехал я в потаенный смысл ваших слов.
Объясню как понял. (#,@,* - условные символы комментария - в разных языках разные)
Строковый:
текст
# закомментированный текст
# закомментированный текст

текст

Потоковый:
текст
текст # закомментированный текст
закомментированный текст @
текст
текст

Блочный:
текст
# закомментированный текст
* закомментированный текст
@

текст

Во многих языках символ * (что в примере блочного комментария) необязателен (он обязателен только для 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", "&nbsp;&nbsp;")
        
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 в скрипте
Я сразу на него обратил внимание и меня как то напрягло что
Цитата:
-- добавить наклон и жирность
-- считывать цвета из лексеров
разбито на 2 задачи

Автор: 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 /
SciTE © 2004 - 2011