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

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

Архив SciTE-форума


Автор: mozers, Отправлено:15:16 06-09-2006

Цитата:
а как же подсветка jscript, vbscript, php, phyton и т.п. в html?
Да возьмем тот же JS. Погляди внимательно разницу как он подсвечен при выборе лексера HTML и лексера JavaScript (точнее тут - cpp lexer) - не совсем одно и то же, правда?
Опять же ни автодополнение ни всплывающие подсказки не работают...

Цитата:
или лексер под это заточен?
Думаю, что - да, поскольку многое из синтаксиса JS он вполне понимает. Насколько хорошо он понимает perl - х.з.

Цитата:
если переключаться на подсветку perl синтаксиса, то все остальное становится ужасно страшных цветов и жутко напрягает
неужели все таки ни как нельзя настросить?
Кто сказал что "нельзя"? Можно. Только мучится долго и все равно такого сервиса какой тебе предоставляет специализированный лексер, html lexer все равно обеспечить не cможет.
Может проще в perl.properties задать какие нить серенькие и не "ужасные" цвета для html ?

Насчет того, что SciTE не может одновременно работать с двумя или более лексерами я нигде не прочитал. Просто опыт подсказывает...
Старшие товарищи - отзовитесь -
Я ПРАВ ???
Автор: jona, Отправлено:11:56 12-09-2006
Подскажите, пожалуйста, как добавить в меню File->Encoding пункт cp1251, если в системе (Ubuntu-Linux) установлена локаль utf-8?

В SciTEUser.propertiers у меня прописано
code.page=65001
LC_CTYPE=en_US.UTF-8
Для отображения кирилицы.

Спасибо
Автор: Moon_aka_Sun, Отправлено:02:01 13-09-2006
Если вдруг кому-то интересно, я расшарил свой билд:

http://moon.aka.sun.googlepages.com/SciTE.htm

Если вкратце, то оставлено только то, чем я пользуюсь и так, как мне удобно.

SciTE построен в VC++ 6.0.

На lua написаны функции back_up, calculate_total, capitalize, current_word, exec_lua, exec_python_and_replace, fill_rectangle, find_next_function, find_prev_function, mark_text_*, move_word_left, move_word_right, pop_mark, push_mark, replace_version, sort_text, tabs_to_spaces, toggle_bool. Enjoy!

Моношрифт (Ctrl+F11) - по умолчанию.

Клавишные комбинации - не всегда стандартные (см. kmap.txt)

Немного "оптимизированы" пункты меню.

В диалоге Replace клавиша по умолчанию - Replace All. Если выделен блок, то Replace in Selection. И то и другое можно вкл./выкл. в настройках.

Если во множественном поиске (Find in Files) задать пустую строку Files, то ищет в текущем файле.

Файловая история - 20 файлов. Изменён показ файлов в меню (а также в заголовке программы и в меню Buffers): file --- directory.

Про сепараторы в меню Tools и клавишные комбинации без меню уже писалось. Максимальное число дополнительных команд - 80 в Tools и 100 без названий (что, конечно, излишне).

Api файлы - c.api, lua5.api, python.api, scite.api. Над ними можно бы ещё поработать.

Многострочные calltips в api (от М.Форала).

Возможно игнорирование USERPROFILE при поиске конфигурационных файлов.

Никаких макро; никакого интерфейса DirectorExtension.

Оставлены только лексеры LexAsm, LexBash, LexConf, LexCPP, LexCSS, LexForth, LexFortran, LexHTML, LexInno, LexLisp, LexLua, LexNsis, LexOthers, LexPascal, LexPerl, LexPython, LexRuby, LexSQL, LexTCL, LexVB, LexYAML.

Естественно, бета. Замечания, предложения и дополнения приветствуются.
Автор: mirk, Отправлено:09:32 13-09-2006
Moon_aka_Sun
Клевый билд
Может быть тогда его выложить на сайт?

По идее можно вести несколько сборок, думаю, что в этом ничего страшного не будет.
Автор: Moon_aka_Sun, Отправлено:11:02 13-09-2006
mirk

Цитата:
Может быть тогда его выложить на сайт?
Ох и запутано там. Но справился.

Автор: mirk, Отправлено:11:14 13-09-2006
Moon_aka_Sun

Цитата:
На lua написаны функции back_up, calculate_total, capitalize, current_word, exec_lua, exec_python_and_replace, fill_rectangle, find_next_function, find_prev_function, mark_text_*, move_word_left, move_word_right, pop_mark, push_mark, replace_version, sort_text, tabs_to_spaces, toggle_bool. Enjoy!

Cлушай, а можно на русский перевести? Например: push_mark, toggle_bool и др.


Цитата:
Ох и запутано там. Но справился.

Сенкс...
Автор: Moon_aka_Sun, Отправлено:11:27 13-09-2006
mirk

Цитата:
Cлушай, а можно на русский перевести?

Да было б что переводить. Push_mark и pop_mark реализуют стек "закладок", как было когда-то в Brief'e и МЕ чуть ли не 15 лет назад. Пуш запоминает текущую позицию на верхушке стека закладок, а поп, соответственно, снимает и переходит на запомненное место. Сделано в основном для просмотра т.к. используются позиции, не привязанные к содержимому файла, т.е. при редактировании файла всё "полезет". Основное назначение сейчас - запомнить, где редактировал, сходить в другое место посмотреть или скопировать и вернуться к редактированию.

Toggle bool - с сайта Lua, по-моему, немного модифицированное. Если курсор стоит на true или false (в различных написаниях), то просто данное булевское значение меняется на противоположное. Перебить, конечно, тоже просто, но использование специальной функции экономит полсекунды и поднимает самооценку в собственных глазах.

Автор: mirk, Отправлено:00:27 14-09-2006

Цитата:
функции экономит полсекунды и поднимает самооценку в собственных глазах.

ггг

В общем криво я написал, я хотел что-бы ты перевел названия скриптов на сайте, так как мне понятна большая часть, тебе все, комуто еще какая то часть, а вот многим пользователям, особенно начинающим, непонятно ничего

Автор: Moon_aka_Sun, Отправлено:06:30 14-09-2006
ОК, основные функции в SciTEStartup.lua:

back_up - сохраняет текущий файл в каталоге c:\temp\backup с именем имя-файла.####.bak, где #### - некий более-менее уникальный буквенно-цифровой код (увеличивается на единицу каждые 5 секунд, соотв. период - больше 3 месяцев), полезно навесить на OnOpen или OnBeforeSave.

calculate_total - подсчитывает количество, сумму и среднее для всех чисел, найденных в блоке.

capitalize - Даже Не Знаю, Что Тут Объяснять.

current_word - просто выделяет текущее слово.

double_backslashes - удваивает обратные косые.

exec_lua - выполняет выделенный фрагмент как операторы Lua. Если фрагмент начинается с '=', то вычисляет его как выражение и выводит результат через print.

exec_python_and_replace - выполняет блок текста как операторы Python. Заменяет текст результатом выполнения. Если фрагмент содержит '#a', то добавляет результаты в конец блока.

fill_rectangle - навеяно UltraEdit'ом, хоть и не так удобно. Заполняет вертикальный блок заданным текстом или последовательной нумерацией. При вызове позволяет задать один или два параметра - при одном параметре вставляет заданную строку в каждую строку в вертикальном блоке, при двух параметрах - первый должен быть начальным числом, а второй - шагом. Блок заполняется последовательностью чисел с заданным инкрементом.

find_next_function, find_prev_function - перемещаются к следующей/предыдущей функции. Работает для Lua, JavaScript, Python, Ruby. (В других языках можно перемещаться по параграфам - Ctrl+PgUp/PgDn или (в С/С++) по #... конструкциям - Ctrl+K/Ctrl+Shift+K. Ну и до кучи - перемещение к соответствующей скобке - Ctrl+E, перемещение по частям составных слов - Ctrl+[, Ctrl+] (с Shift - выделение))

mark_text_* - позволяет отметить выделенный текст одной из трёх маркировок. mark_text_0 отменяет маркировку выделенного текста. Цвета (жёлтый, синий, красный) заданы в lua файле. Для выбора вида маркировки надо вызвать функцию при невыделенном блоке.

move_word_left, move_word_right - меняет текущее слово и предыдущее/следующее слово местами. Ну и перемещается, соответственно, влево/вправо. (Повешены на Alt+Left/Right. Вертикальный аналог - Alt+Up/Down - переместить текущую строку вверх/вниз.)

pop_mark, push_mark - реализуют стек "закладок". Пуш запоминает текущую позицию на верхушке стека закладок, а поп, соответственно, снимает и переходит на запомненное место.

replace_version - ищет в текущем файле управляющую последовательность $@{...} и меняет в соответствии с тамошними командами дату/время в нужных местах в тексте, или увеличивает число на единицу (например, номер версии). Подробнее - в комментариях в самой функции.

sort_text - сортирует текст в блоке по возрастанию/убыванию, с учётом/без учёта регистра букв (английских, русские заглавные всегда идут раньше строчных).

tabs_to_spaces - преобразует символы табуляции в пробелы в соответствии с текущими установками (Options->Indentation Settings, Ctrl+F12).

toggle_bool - Если курсор стоит на true или false (в различных написаниях), то просто данное булевское значение меняется на противоположное.
Автор: mozers, Отправлено:11:39 14-09-2006
Moon_aka_Sun
Цитата:
Если вдруг кому-то интересно, я расшарил свой билд

Конечно интересно
Много че хотелось бы перетащить в сборку Ru-Board (после соответствующей правки). Ты не против? Правда уже сейчас сборка очень сильно отличается от той, что лежит на scite.ruteam.ru - много доработок и принципиально новых решений.
Выложить щас, увы, не могу - очень много недоделок...
К тому же обнаружил баг, возникающий при компиляции в Borland C++ Compiler 5.5
Все хорошо, до той поры пока не начинаешь пользовать хитрые скрипты, типа этого - (просто вылетает, гад, с сообщением об ошибке).
И дело - не в тех изменениях, которые мы вносим в код, а именно - в компиляторе. Имхо - надо "спеца" чтоб подсказал правильные опции... Или компилить в чем нить другом...

Добавлено:
Мужики, вы че товарищу jona не поможете?
Я ведь под Виндами сижу - могу и наплести...
jona
Цитата:
как добавить в меню File->Encoding пункт cp1251
Никак. Это меню не настраивается. Только если перекомпилять...
Русские буквы нормально отображаются при пункте этого меню "8 Bit"

Цитата:
В SciTEUser.propertiers у меня прописано
code.page=65001
LC_CTYPE=en_US.UTF-8
Для отображения кирилицы.
Это - настройки для уникода в GTK+ и судя по записям - не для русской кодовой страницы.
А вообще - почитай...

Автор: mozers, Отправлено:18:14 14-09-2006
Реализация записи макросов с помощью LUA
Ну, че, народ? Начинаем жить!

А со мной поделился кодом Мишель Форал. Теперь из встроенного LUA можно выполнять команды вида
scite.MenuCommand(IDM_WHATEVER)

C удовольствием убираю оба пункта из списка Нерешенные задачи и вопросы
Автор: Moon_aka_Sun, Отправлено:00:48 15-09-2006

Цитата:
Ты не против?
Да чего ж возражать?

Я ещё придумал, как можно запрашивать ввод от пользователя - через виндовс скрипт. [more=Таким примерно макаром]Таким примерно макаром:

function input_box(prompt,default,title)
local txt = 'WScript.Echo InputBox("'..prompt..'","'..title..'","'..default..'")'
local tmp = "C:\\TMP\\"
local tmp1, tmp2 = tmp.."SCRPT.VBS", tmp.."RESLT.TMP"
local f = io.open(tmp1, 'wb') f:write(txt) f:close()
os.execute("cscript //Nologo "..tmp1.." > "..tmp2)
f = io.open(tmp2) local out = f:read('*all') f:close()
return out
end

Правда, os.execute вываливает консольное окно и легко это не побороть.[/more]

Автор: mozers, Отправлено:10:59 15-09-2006
Moon_aka_Sun
Думал я о таком способе... Если HTA пользовать, то не только InputBox, а вообще любую форму ввода можно выводить. Только способ передачи данных из формы в скрипт с помощью временного файла мне не нравится. С помощью COM-сервера все делается более элегануто

Цитата:
os.execute вываливает консольное окно и легко это не побороть
Ага, противная вещь. Достало не только тебя. Тут группа товарищей придумала метод io.popen (cmd) который выполняет команду без этого окна. Я пытался использовать этот код да что то не получилось Глянь - может у тебя получится? (Посмотри личный ящик)

Автор: mozers, Отправлено:17:24 15-09-2006
Сборка Мишеля Форала
mirk уже как то восхищался этим чудом...
Так вот я взял Offline Explorer и тупо выкачал все файло с его SVN Репозитария.
Потом разделил на 2 части и запаковал RAR-ом.
Получились исходники и откомпилированный пакет.
Над кодом Мишель поиздевался немало. Есть весьма интересные решения.
Думаю что некоторые из его ходов будут использованы нашими специалистами
Автор: Moon_aka_Sun, Отправлено:00:17 16-09-2006
mozers

Цитата:
io.popen (cmd)
Да, через попен лучше должно быть. Или длл прикрутить (в Луа 5.1 у меня это работает, в 5.0.2, который в SciTE - нет). Или Луу саму модифицировать

Автор: vladvro, Отправлено:09:40 19-09-2006
2 mozers

Цитата:
Очень бы хотелось задать несколько вопросов...
(В форуме это было бы удобнее

с удовольствием пообщаюсь и отвечу по возможности на все вопросы,
хотя меня и смутил этот форум своим единственным топиком для всех вопросов по редактору

Автор: mozers, Отправлено:15:15 19-09-2006
vladvro
Во-первых - поздравляю с регистрацией!
Не Скайтом единым жив человек и когда понадобится тебе найти свежую версию какой то софтины (со всеми делами, конечно) или получить толковую консультацию по какой то важной теме то ты поймешь что Ru-Board - самый толковый форум в рунете. Такого обилия совершенно уникальной информации нет нигде.

Теперь что касается единственного топика по SciTE.
Попытки сделать большой и ветвистый форум предпринимались не раз. Mirk и сейчас подумывает об этом.
Лично я - против. Во-первых, нас (не тех, кто качает, а кто делает и обсуждает) - слишком мало.
Во-вторых здесь все обсуждаемые темы на виду, а не разбросаны по тредам и "держать руку на пульсе" гораздо проще. Ну а почтовое оповещение с полным текстом всех сообщений - это вообще - песня

Теперь - о тебе
Очень хотелось увидеть здесь, в нашем сборочном цеху, еще одного умного человека. Просто порой бывает очень сложно найти ответ на тот или иной вопрос... Если мы будем держаться вместе, то мы сможем решать такие задачи.
Народ! Это - тот гений, что запустил таки макросы в SciTE! Сколько разговоров было, только вот сделал - только он
Может быть тебя заинтересуют какие то из еще нерешенных вопросов? (в шапке)

А насчет макросов я, честно говоря, до конца не въехал...
Где же они хранятся? С именами - ясно, а сами команды? Можно ли их выудить из памяти и записать в файл?

Автор: unreal666, Отправлено:21:41 19-09-2006
mozers
Я как-то спрашивал

Цитата:
Есть в SciTE переменная, содержащая имя активного в данный момент лексера?
Хочу добавить отображение активного лексера в строку состояния.

Ты дал код какой-то функции GetLexerName() .
И что мне с ней делать? Как сделать, чтобы в строке состояния показывался текущий лексер (тот код вставил в SciTEStartup.lua)?
Автор: Jus, Отправлено:12:06 20-09-2006
Сборка Moon_aka_Sun порадовала тем что нормально работает calltips (проверял при работе со скриптами Python) в отличии от SciTE 1.70 Ru-Board Edition где список подсказок почему-то не появляется после ввода точки и его приходится специально вызывать по Ctrl+Space. А также большое спасибо Moon_aka_Sun за достаточно полный python.api
Пробовал просто скопировать python.api из сборки Moon_aka_Sun в Ru-Board Edition - результат не важный - не все подсказки из файла python.api попадают в список (например sys.api_version).

Подскажите как подлечить эти проблемки в Ru-Board Edition?
Автор: mozers, Отправлено:12:47 20-09-2006
unreal666
Цитата:
И что мне с ней делать?
Вставить ее вызов в стандартный эвент, например так:
Код:
function OnUpdateUI()
props["lexer.name"] = GetLexerName()
end
Т.е. теперь, при наступлении события OnUpdateUI значение переменной lexer.name будет изменятся в соответствии с текущим лексером.
Ну а чтобы увидеть это значение в строке состояния надо добавить эту переменную в него:
Код:
statusbar.text.1=\
Строка: $(LineNumber) Колонка: $(ColumnNumber)\
| Выделено: $(SelHeight) строк, $(SelLength) байт\
| [$(OverType)]\
| [$(font.current.size)px]\
| [$(code.page.name)]\
| [$(lexer.name)]
Я вообще думал что сам догадаешся...

Jus
Есть calltips - всплывающие подсказки по синтаксису (Ctrl+Shift+Space).
Они могут показыватся и автоматом после того как вставили один из символов, заданных тут:
Код:
calltip.pyton.parameters.start= (

Есть раскрывающиеся списки для автодополнения. (Ctrl+I и Ctrl+Enter).
Они тоже могут показыватся и автоматом после того как вставили один из символов, заданных тут:
Код:
autocomplete.pyton.start.characters=.

В сборке Ru-Board подключен скрипт, который использует свой алгоритм для автодополнения. Для pyton я его не затачивал. Возможно он тебе мешает. Отключи его. А еще лучше - напиши на личный mozers(собака)mail.ru - попробуем вместе заточить его под Питона (со скриптом то - гораздо удобнее)...



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