а зачем тогда sfx архив, когда можно просто зазиповать?
» SciTE - Open Source Text Editor for Windows & Linux
Bonart
Спасибо за подробности! С их помощью мне удалось стабильно воспроизвести баг.
Запостил тут. Ждем, когда умный программист сможет поправить...
Nagual
Цитата:
Как нехорошо ты про наш любимый форум (недостатки движка конечно есть, но...)
Победить - легко. Вставляем в SciTE и заменяем " $" (без кавычек) на "" (пусто) по всему тексту (не забываем поставить галку "Регулярные выражения").
xternalx
Можно. Оригинальный дистрибутив просто зазаипован. А иностранцы, не знающие как распаковать RAR мне уже высказывали свое "фи"...
Спасибо за подробности! С их помощью мне удалось стабильно воспроизвести баг.
Запостил тут. Ждем, когда умный программист сможет поправить...
Nagual
Цитата:
этот кривой форум при копировании кода обладает уникальной способностью добавлять пробелы в конец строк
есть ли возможность побеждать это с помощью SciTE?
Как нехорошо ты про наш любимый форум (недостатки движка конечно есть, но...)
Победить - легко. Вставляем в SciTE и заменяем " $" (без кавычек) на "" (пусто) по всему тексту (не забываем поставить галку "Регулярные выражения").
xternalx
Можно. Оригинальный дистрибутив просто зазаипован. А иностранцы, не знающие как распаковать RAR мне уже высказывали свое "фи"...
У меня локальные html странички начали открываться по двойному щелчку не в браузере, а Scite. В контекстном меню на html-файлав добавилась запись Edit и она стала действием по умолчанию. Я, естественно, полез в свойства папки - расширения. Там у файлов html вообще нет действия Edit. Есть действие "Изменить", но оно присвоено какому-то майкрософтовсому приложению. Я сделал действие "Открыть" (в браузере) действием по умолчанию, но ничего не изменилось. HTML-файлы как открывались в Scite, так и открываются. В контекстном меню действие Edit на самом верхнем месте и выделено жирным, то есть по-прежнему является действием по-умолчанию.
Теперь собственно вопрос: как в Scite все это поправить, потому что я не нашел в настройках где там у него ассоциаци файлов. Я, конечно, могу открыть редактор реестра и сделать все как мне надо, но хотелось бы сделать это красиво через Scite - раз он чего-то поменял, то пусть вернет обратно
Теперь собственно вопрос: как в Scite все это поправить, потому что я не нашел в настройках где там у него ассоциаци файлов. Я, конечно, могу открыть редактор реестра и сделать все как мне надо, но хотелось бы сделать это красиво через Scite - раз он чего-то поменял, то пусть вернет обратно
Petrik Pyatochkin
Откровенно говоря сейчас мне даже жалко время, потраченное на создание SciTE_WinIntegrator.hta - штучки одноразового применения (кликнул и забыл), которую с успехом может заменить обычный reg-файл. Недостатки тут - налицо: При загрузке не видно текущее состояние (т.е. если SciTE уже интегрирован в систему, то это никак не видно), нельзя отменить проведенную регистрацию (об этом ты и говорил).
Запости в Issue - может кто то и доработает апликуху (а может, сам, как заинтересованная личность?)...
Откровенно говоря сейчас мне даже жалко время, потраченное на создание SciTE_WinIntegrator.hta - штучки одноразового применения (кликнул и забыл), которую с успехом может заменить обычный reg-файл. Недостатки тут - налицо: При загрузке не видно текущее состояние (т.е. если SciTE уже интегрирован в систему, то это никак не видно), нельзя отменить проведенную регистрацию (об этом ты и говорил).
Запости в Issue - может кто то и доработает апликуху (а может, сам, как заинтересованная личность?)...
mozers
Цитата:
Да, да, да, вот ее я и запускал
Цитата:
Не, не умею я такие шктуки делать, лучше покромсаю реестр
Цитата:
SciTE_WinIntegrator.hta - штучки одноразового применения (кликнул и забыл)
Да, да, да, вот ее я и запускал
Цитата:
Запости в Issue - может кто то и доработает апликуху (а может, сам, как заинтересованная личность?)
Не, не умею я такие шктуки делать, лучше покромсаю реестр
ALL
Комментирование строки или потока - тут все ясно.
А может кто нибудь внятно объяснить что такое "блочный комментарий" (box comment) ?
Чем он отличается от комментирования подряд нескольких строк?
А если это - одно и то же, то зачем вообще нужны обязательные параметры
comment.box.middle.lexer
comment.box.end.lexer
И нахрена SciTE после выполнения этой команды (Ctrl+Shift+B) вставляет вниз еще одну, пустую, но закомментированную строку
Комментирование строки или потока - тут все ясно.
А может кто нибудь внятно объяснить что такое "блочный комментарий" (box comment) ?
Чем он отличается от комментирования подряд нескольких строк?
А если это - одно и то же, то зачем вообще нужны обязательные параметры
comment.box.middle.lexer
comment.box.end.lexer
И нахрена SciTE после выполнения этой команды (Ctrl+Shift+B) вставляет вниз еще одну, пустую, но закомментированную строку
Тут какая то хитрость связанная с разными языками, а точнее способов комментирование в них, наверное в некоторых языках три вида комментирования а не 1 или 2 как обычно.
1. Потоковый комментарий это когда комментируется поток %)
Т.е в С++ так: пишем пишем /* комментарий в лению */ пишем дальше.
2. Простое комментирование, это когда комментим все после знака комментирования %)
Т.е. в С++ так пишем // дальше идет комментарий
3. Как такого блочного комментария в С++ нет, я так понимаю это нужно чтобы написать текст комментария в несколько строк, такими особенностями обладает комментарий /* */ при определенных условиях: комментарий всегда начинается с начала строки и заканчивается в конце последней строки, таким образом комментируется блок строк.
Лично мне такие (№3) особенности комментирования не нужны, но очевидно они очень распространены...
Ну и мое личное предположение такое - первые два чаще используются для того чтобы написанный код не исполнялся, а третий для описания кода, функции, исполняемого блока, библиотеки, файла и прочее.
Что касаются параметров которыми задают блочный комментарий:
comment.box.begin.lexer - начало комментария
comment.box.end.lexer - конец комментария
Собственно в разных языках начало и конец комментария в большинстве различны.
comment.box.middle.lexer - а это параметр для красоты, чтобы комментарий имел выровненный вид.
Пример:
Код: /*
* описание
*/
1. Потоковый комментарий это когда комментируется поток %)
Т.е в С++ так: пишем пишем /* комментарий в лению */ пишем дальше.
2. Простое комментирование, это когда комментим все после знака комментирования %)
Т.е. в С++ так пишем // дальше идет комментарий
3. Как такого блочного комментария в С++ нет, я так понимаю это нужно чтобы написать текст комментария в несколько строк, такими особенностями обладает комментарий /* */ при определенных условиях: комментарий всегда начинается с начала строки и заканчивается в конце последней строки, таким образом комментируется блок строк.
Лично мне такие (№3) особенности комментирования не нужны, но очевидно они очень распространены...
Ну и мое личное предположение такое - первые два чаще используются для того чтобы написанный код не исполнялся, а третий для описания кода, функции, исполняемого блока, библиотеки, файла и прочее.
Что касаются параметров которыми задают блочный комментарий:
comment.box.begin.lexer - начало комментария
comment.box.end.lexer - конец комментария
Собственно в разных языках начало и конец комментария в большинстве различны.
comment.box.middle.lexer - а это параметр для красоты, чтобы комментарий имел выровненный вид.
Пример:
Код: /*
* описание
*/
BioInfo
Цитата:
Цитата:
Цитата:
А давайте еще делать рамочки из звездочек вокруг выделенного текста? Сочиним код, внедрим его в SciTE, добавим кучу обязательных параметров, внесем все в документацию... A???
Такое впечатление что этот блочный комментарий выдумали сами авторы SciTE с большого перепоя и ни в одном из языков программирования он не существует.
Цитата:
такими особенностями обладает комментарий /* */ при определенных условияхЧет я не въехал чем эта конструкция отличается от потокового комментария ??? Каие еще, нахрен, "определенные условия"??? Это же - самый обычный потоковый коммент!!!
Цитата:
это нужно чтобы написать текст комментария в несколько строкА че, разве потоковым комментарием нельзя несколько строк закомментировать???
Цитата:
Ну и мое личное предположение такоеА вот с этим - согласен.
А давайте еще делать рамочки из звездочек вокруг выделенного текста? Сочиним код, внедрим его в SciTE, добавим кучу обязательных параметров, внесем все в документацию... A???
Такое впечатление что этот блочный комментарий выдумали сами авторы SciTE с большого перепоя и ни в одном из языков программирования он не существует.
mozers
Цитата:
Существует... ЕМНИП в некоторых ассемблерах и скриптовых языках.
Цитата:
Значит инсталлятор таки нужен
Цитата:
Такое впечатление что этот блочный комментарий выдумали сами авторы SciTE с большого перепоя и ни в одном из языков программирования он не существует.
Существует... ЕМНИП в некоторых ассемблерах и скриптовых языках.
Цитата:
Недостатки тут - налицо: При загрузке не видно текущее состояние (т.е. если SciTE уже интегрирован в систему, то это никак не видно), нельзя отменить проведенную регистрацию (об этом ты и говорил).
Значит инсталлятор таки нужен
Bonart
Цитата:
Добавлено:
А еще лучше - ссылку на официальную документацию по языку программирования, где дано определение блочного комментария.
Цитата:
Существует... ЕМНИП в некоторых ассемблерах и скриптовых языках.Пожалуйста, приведите реальный пример и объясните чем этот блочный комментарий принципиально отличается от строкового или потокового ???
Добавлено:
А еще лучше - ссылку на официальную документацию по языку программирования, где дано определение блочного комментария.
mozers
Цитата:
Дык почему обязательных? Не устанавливай их вообще и не будет блочного комментария.
Цитата:
По моему те не понял всей фишки.
Первые два нужны чтобы закоментить код, т.е. чтобы код больше не исполнялся. А последний чисто для написания описания кода.
Лично я подобным образом не описываю код, в С++ я делаю комментарий всегда с помощью //
Примерно это выглядит так:
Код: // супер-пупер функция
void foo() {};
Цитата:
добавим кучу обязательных параметров...
Дык почему обязательных? Не устанавливай их вообще и не будет блочного комментария.
Цитата:
А вот с этим - согласен.
По моему те не понял всей фишки.
Первые два нужны чтобы закоментить код, т.е. чтобы код больше не исполнялся. А последний чисто для написания описания кода.
Лично я подобным образом не описываю код, в С++ я делаю комментарий всегда с помощью //
Примерно это выглядит так:
Код: // супер-пупер функция
void foo() {};
спорить не буду, выскажу лишь предположение насчет блочного комментария
например, имеется код, который представлен свернутыми блоками (со значками +)
как то попробововав закомментить такой блок, в надежде, что SkiTE это удастся, потерпел неудачу, хотя очень, имхо, удобно
предположение связано как раз с комменированием такого (свернутого) блока
например, имеется код, который представлен свернутыми блоками (со значками +)
как то попробововав закомментить такой блок, в надежде, что SkiTE это удастся, потерпел неудачу, хотя очень, имхо, удобно
предположение связано как раз с комменированием такого (свернутого) блока
BioInfo
Цитата:
Оригинальный SciTE, кстати, об этом говорит полностью, а SciTE-Ru говорит об отсутствии только comment.box.start.lexer (хотя он может быть и задан) чем вводит пользователя в заблуждение.
Ладно, оставим споры о нужности/бестолковости этой команды, поскольку каждая из сторон может привести доводы ЗА и ПРОТИВ.
Формулирую вопрос по другому: Назовите пожалуйста хоть один язык программирования в котором есть описанные в официальной документации правила организации блочного комментария.
Только не надо, пожалуйста, приводить примеры различных вариантов оформления строкового или потокового комментария, коих существует великое множество, а придумать можно еще больше.
Оттого что потоковый комментарий расположили как то иначе он же не превратился в другой!
Nagual
Ща как раз сочиняю скрипт, который на мой взгляд позволит навсегда забыть про эту "муру" с добавлением/удалением комментариев. Хочу сделать полный автомат, который сам определяет нужные символы комментария, поток или блок выделен и ставит/убирает комментарий на всем чем угодно.
Цитата:
Дык почему обязательных?А потому что надо обязательно задавать все 3 параметра comment.box.start.lexer, comment.box.middle.lexer, comment.box.end.lexer иначе ctrl+shift+B вообще работать не будет.
Оригинальный SciTE, кстати, об этом говорит полностью, а SciTE-Ru говорит об отсутствии только comment.box.start.lexer (хотя он может быть и задан) чем вводит пользователя в заблуждение.
Ладно, оставим споры о нужности/бестолковости этой команды, поскольку каждая из сторон может привести доводы ЗА и ПРОТИВ.
Формулирую вопрос по другому: Назовите пожалуйста хоть один язык программирования в котором есть описанные в официальной документации правила организации блочного комментария.
Только не надо, пожалуйста, приводить примеры различных вариантов оформления строкового или потокового комментария, коих существует великое множество, а придумать можно еще больше.
Оттого что потоковый комментарий расположили как то иначе он же не превратился в другой!
Nagual
Ща как раз сочиняю скрипт, который на мой взгляд позволит навсегда забыть про эту "муру" с добавлением/удалением комментариев. Хочу сделать полный автомат, который сам определяет нужные символы комментария, поток или блок выделен и ставит/убирает комментарий на всем чем угодно.
mozers
Цитата:
Да без проблем - Perl.
Добавлено:
а в том же PHP можно (если часто используются here-doc) задать начало и конец блочного комментария как
Код: <<<end_delimiter
Цитата:
Формулирую вопрос по другому: Назовите пожалуйста хоть один язык программирования в котором есть описанные в официальной документации правила организации блочного комментария.
Да без проблем - Perl.
Добавлено:
а в том же PHP можно (если часто используются here-doc) задать начало и конец блочного комментария как
Код: <<<end_delimiter
mozers
Цитата:
Ну так этож очевидно, или я чего-то не догоняю... Сам блочный комментарий состоит из трех частей, в чем смыл задать его не полностью?
У тебя же не возникает подобных чувств при задании комментария /* */ - тут обязательно нужно задать два параметра.
Кстати, а чего не запустится если не задать comment.box.middle.lexer ?
Цитата:
А потому что надо обязательно задавать все 3 параметра
Ну так этож очевидно, или я чего-то не догоняю... Сам блочный комментарий состоит из трех частей, в чем смыл задать его не полностью?
У тебя же не возникает подобных чувств при задании комментария /* */ - тут обязательно нужно задать два параметра.
Кстати, а чего не запустится если не задать comment.box.middle.lexer ?
Кхм.. Хочу немного имправиться. В Perl есть тип комментария, который должен начинаться с новой строки и заканчиваться на новой строке.
Только там не нужен comment.box.middle.lexer. А в SciTE он требуется.. Что есть не правильно, имхо. Он должен отрабатывать и без задания comment.box.middle.lexer, опять же имхо.
Только там не нужен comment.box.middle.lexer. А в SciTE он требуется.. Что есть не правильно, имхо. Он должен отрабатывать и без задания comment.box.middle.lexer, опять же имхо.
BioInfo
Цитата:
А в общем то вопрос можно закрыть, поскольку нету в природе такого понятия как блок кода. Есть строка (одна или несколько) и поток и все.
А то что некоторые слишком умные придумывают свои стили оформления закомментированного линейным или потоковым комментом текста - это их личные извращения и нехрена было всем голову запудривать.
Добавлено:
Ладно, сам бузу начал, сам и закончу:
Умные вы ребята и грамотные, но объяснять так, чтобы понятно было простому народу не можете.
Насилу въехал я в потаенный смысл ваших слов.
Объясню как понял. (#,@,* - условные символы комментария - в разных языках разные)
Строковый:
текст
# закомментированный текст
# закомментированный текст
текст
Потоковый:
текст
текст # закомментированный текст
закомментированный текст @ текст
текст
Блочный:
текст
# закомментированный текст
* закомментированный текст
@
текст
Во многих языках символ * (что в примере блочного комментария) необязателен (он обязателен только для SciTE).
Цитата:
а чего не запустится если не задать comment.box.middle.lexerЕсли не задать, то этот comment.box вообще использовать не получится. Попробуй сам... (не опциональные эти параметры, а обязательные
А в общем то вопрос можно закрыть, поскольку нету в природе такого понятия как блок кода. Есть строка (одна или несколько) и поток и все.
А то что некоторые слишком умные придумывают свои стили оформления закомментированного линейным или потоковым комментом текста - это их личные извращения и нехрена было всем голову запудривать.
Добавлено:
Ладно, сам бузу начал, сам и закончу:
Умные вы ребята и грамотные, но объяснять так, чтобы понятно было простому народу не можете.
Насилу въехал я в потаенный смысл ваших слов.
Объясню как понял. (#,@,* - условные символы комментария - в разных языках разные)
Строковый:
текст
# закомментированный текст
# закомментированный текст
текст
Потоковый:
текст
текст # закомментированный текст
закомментированный текст @ текст
текст
Блочный:
текст
# закомментированный текст
* закомментированный текст
@
текст
Во многих языках символ * (что в примере блочного комментария) необязателен (он обязателен только для SciTE).
Цитата:
Блочный:
текст
# закомментированный текст
* закомментированный текст
@
текст
Добавлю - чаще встречается такой формат:
Код:
Блочный:
текст
#
* закомментированный текст
* закомментированный текст
@
mozers
Цитата:
Ну так запости в баглист, поправим это недоразумение
Цитата:
Во многих языках символ * (что в примере блочного комментария) необязателен (он обязателен только для SciTE)
Ну так запости в баглист, поправим это недоразумение
mozers
10:12 15-10-2007
Цитата:
вот - довольно подробно про разные типы комментариев рассказано..
а вообще, как раз, чаще упоминается блочный комментарий (примерчик), другое дело, что в это понятие вкладывают..
10:12 15-10-2007
Цитата:
ссылку на официальную документацию по языку программирования
вот - довольно подробно про разные типы комментариев рассказано..
а вообще, как раз, чаще упоминается блочный комментарий (примерчик), другое дело, что в это понятие вкладывают..
Новый скрипт
Цитата:
Если идея понравилась - давайте дошлифуем вместе!
Цитата:
-- xCommentНе все еще сделано до конца. Есть и неисправленные ошибки. Но задумка уже работает
-- Version: 1.0 beta
---------------------------------------------------
-- C блеском заменяет стандартную комбинацию Ctrl+Q (комментирование/снятие комментария)
-- В зависимости от того что выделено, комментируются (снимается комментарий) со строки или с потока текста
-- И забудьте навсегда про этот атваизм "~". Тильда вам больше никогда не понадобится!
Если идея понравилась - давайте дошлифуем вместе!
2mozers
Цитата:
А можно его интегрировать в smartcomment? Вроде логично, это же smartcomment
Цитата:
C блеском заменяет стандартную комбинацию Ctrl+Q (комментирование/снятие комментария)
А можно его интегрировать в smartcomment? Вроде логично, это же smartcomment
Когда-то захотелось переписать 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
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
Хочу доработать файл kix.properties для языка KiXtart. Не могу разобраться, можно ли настроить сворачивание блоков (функций, структурных операторов) через файл properties?
BioInfo
Цитата:
Нет (Слишком они разные и работают совершенно по другому).
По поводу smartcomment:
Во-первых название твоего скрипта не отражает все выполняемые им функции (комментирование текста, заключение в кавычки и скобки, автозакрытие скобок и кавычек).
Я бы сильно советовал разбить этот скрипт на несколько или (если это невозможно) обеспечить возможность гибкого отключения некоторых, слишком назойливых, его возможностей.
Во-вторых мне не нравится сама идея комментирования выделенного текста посредством ввода первого символа комментирования.
Ну, а в-третьих можно сказать, что твой smartcomment окрылил меня на создание xComment
frs
На мой взгляд переделку этого скрипта надо начинать с того, чтобы все оформление (цвет, жирность, курсив) он брал не из своих внутренностей, а из .properties соответствующего языка.
Smitis
Свертка кода заложена (или нет) в лексере. Правка .properties тут не поможет
Однако можно написать lua-скрипт, который будет обеспечивать такую свертку (см. пример для текстовых файлов).
ALL
xComment поправил маленько...
Нахожу такие перлы в коде, как целая конструкция для сравнения длины 2х строк... Думаю что те, для кого LUA - родной язык, многие функции смогут оформить более аккуратно...
Цитата:
А можно его интегрировать в smartcomment?
Нет (Слишком они разные и работают совершенно по другому).
По поводу smartcomment:
Во-первых название твоего скрипта не отражает все выполняемые им функции (комментирование текста, заключение в кавычки и скобки, автозакрытие скобок и кавычек).
Я бы сильно советовал разбить этот скрипт на несколько или (если это невозможно) обеспечить возможность гибкого отключения некоторых, слишком назойливых, его возможностей.
Во-вторых мне не нравится сама идея комментирования выделенного текста посредством ввода первого символа комментирования.
Ну, а в-третьих можно сказать, что твой smartcomment окрылил меня на создание xComment
frs
На мой взгляд переделку этого скрипта надо начинать с того, чтобы все оформление (цвет, жирность, курсив) он брал не из своих внутренностей, а из .properties соответствующего языка.
Smitis
Свертка кода заложена (или нет) в лексере. Правка .properties тут не поможет
Однако можно написать lua-скрипт, который будет обеспечивать такую свертку (см. пример для текстовых файлов).
ALL
xComment поправил маленько...
Нахожу такие перлы в коде, как целая конструкция для сравнения длины 2х строк... Думаю что те, для кого LUA - родной язык, многие функции смогут оформить более аккуратно...
mozers
Цитата:
Объясни, плиз, что это значит?
Цитата:
-- И забудьте навсегда про этот атваизм "~". Тильда вам больше никогда не понадобится!
Объясни, плиз, что это значит?
mozers
Цитата:
Предлагай другое название, переименовать не проблема, я же его не продаю
Предлагаю такое название для двух скриптов:
"mozers_auto_braces_kovichki_comment"
Цитата:
Например?
Цитата:
Какие возможности там слишком назойливы? Очевидно они работают не верно в таком случае, т.к. смысл скрипта именно в том чтобы помогать а не наоборот. Пиши подробнее все поправимо
Цитата:
Одно другому не мешает, кто-то будет комментировать так, кто-то сочетанием клавиш (лучше кстати сделать настраиваемым).
Вот мне понравилась например такая штука "забудьте навсегда про этот атваизм '~'", классно бы это интегрировать в smartcomment, сейчас там используется стандартное комментирование - я просто парится не захотел, а ты решил эту проблему.
Цитата:
Если весь вопрос в авторстве, то просто поставь себя а меня убери, я не тщеславный.
Цитата:
По поводу smartcomment:
Во-первых название твоего скрипта не отражает все выполняемые им функции (комментирование текста, заключение в кавычки и скобки, автозакрытие скобок и кавычек).
Предлагай другое название, переименовать не проблема, я же его не продаю
Предлагаю такое название для двух скриптов:
"mozers_auto_braces_kovichki_comment"
Цитата:
Я бы сильно советовал разбить этот скрипт на несколько
Например?
Цитата:
или (если это невозможно) обеспечить возможность гибкого отключения некоторых, слишком назойливых, его возможностей.
Какие возможности там слишком назойливы? Очевидно они работают не верно в таком случае, т.к. смысл скрипта именно в том чтобы помогать а не наоборот. Пиши подробнее все поправимо
Цитата:
Во-вторых мне не нравится сама идея комментирования выделенного текста посредством ввода первого символа комментирования.
Одно другому не мешает, кто-то будет комментировать так, кто-то сочетанием клавиш (лучше кстати сделать настраиваемым).
Вот мне понравилась например такая штука "забудьте навсегда про этот атваизм '~'", классно бы это интегрировать в smartcomment, сейчас там используется стандартное комментирование - я просто парится не захотел, а ты решил эту проблему.
Цитата:
Ну, а в-третьих можно сказать, что твой smartcomment окрылил меня на создание xComment
Если весь вопрос в авторстве, то просто поставь себя а меня убери, я не тщеславный.
mozers
Цитата:
cм. комментарий todo в скрипте
Сравните работу и выдаваемый результат старого и нового. Переделка была затеяна для упрощения, и откуда брать оформление - дело второстепенное. На этом моменте я его и отложил в долгий ящик.
Цитата:
На мой взгляд переделку этого скрипта надо начинать с того, чтобы все оформление (цвет, жирность, курсив) он брал не из своих внутренностей, а из .properties соответствующего языка.
cм. комментарий todo в скрипте
Сравните работу и выдаваемый результат старого и нового. Переделка была затеяна для упрощения, и откуда брать оформление - дело второстепенное. На этом моменте я его и отложил в долгий ящик.
dB6
Раньше (до исторического материализма, начавшегося с xComment) в конце параметра comment.block.lua надо было обязательно вставлять какой то символ (обычно вставляли "~" тильду) - иначе Ctrl+Q просто не работал (комментарии не снимались).
Сейчас это дурацкое требование приказало долго жить
BioInfo
Если скрипт критикуют (я - про smartcomment)- значит им пользуются - поэтому не стоит обижаться на замечания, я лишь изложил сугубо свое видение...
frs
Цитата:
Цитата:
Раньше (до исторического материализма, начавшегося с xComment) в конце параметра comment.block.lua надо было обязательно вставлять какой то символ (обычно вставляли "~" тильду) - иначе Ctrl+Q просто не работал (комментарии не снимались).
Сейчас это дурацкое требование приказало долго жить
BioInfo
Если скрипт критикуют (я - про smartcomment)- значит им пользуются - поэтому не стоит обижаться на замечания, я лишь изложил сугубо свое видение...
frs
Цитата:
cм. комментарий todo в скриптеЯ сразу на него обратил внимание и меня как то напрягло что
Цитата:
-- добавить наклон и жирностьразбито на 2 задачи
-- считывать цвета из лексеров
mozers
Цитата:
Блин, какие обиды? Я говорю про объединение скриптов.
Скрипт усовершенствующий комментарий - smartcomment и скрипт усовершенствующий комментарий - xComment. Они ведь не пересекаются, а дополняют друг друга!
Обид нет никаких, я лишь говорю о том что я не телепат и не знаю с какими трудностями ты сталкиваешься при работе со скриптом, напиши их.
В общем так, я как выдастся свободное время, попробую их сам объединить, а потом вышлю тебе приватом для заценить и вынести вердикт
А "слишком назойливые особенности" все таки напиши! Прошу понять меня правильно, я не защищаю smartcomment, он не совершенен и я рад любым предложениям по его модернизации. Это же для всех хорошо. Пока о косяках сообщили только Влад и Чупакабра, эти косяки уже подправлены.
Всем
Если что-то не устраивает в smartcomment (да и вообще во всех скриптах) - пишите, не нужно стесняться
Цитата:
не стоит обижаться на замечания, я лишь изложил сугубо свое видение...
Блин, какие обиды? Я говорю про объединение скриптов.
Скрипт усовершенствующий комментарий - smartcomment и скрипт усовершенствующий комментарий - xComment. Они ведь не пересекаются, а дополняют друг друга!
Обид нет никаких, я лишь говорю о том что я не телепат и не знаю с какими трудностями ты сталкиваешься при работе со скриптом, напиши их.
В общем так, я как выдастся свободное время, попробую их сам объединить, а потом вышлю тебе приватом для заценить и вынести вердикт
А "слишком назойливые особенности" все таки напиши! Прошу понять меня правильно, я не защищаю smartcomment, он не совершенен и я рад любым предложениям по его модернизации. Это же для всех хорошо. Пока о косяках сообщили только Влад и Чупакабра, эти косяки уже подправлены.
Всем
Если что-то не устраивает в smartcomment (да и вообще во всех скриптах) - пишите, не нужно стесняться
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
Предыдущая тема: Universal Share Downloader
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.