Ru-Board.club
← Вернуться в раздел «Программы»

» SciTE - Open Source Text Editor for Windows & Linux

Автор: mozers
Дата сообщения: 13.07.2006 00:21
mimir
Цитата:
В С определение процедуры может быть таким
Мой регсеп для схх работает почти так как ты описал. Что то не нравится?
Я проверял на коде Скайта (других С исходников у меня нет) - находит все процедуры без проблем.

P.S. Код твой у меня не компилится - Выдает ошибки. Я сразу же отписал тебе об этом. См. в ПМ
Абыдна (в нем бездна замечательных идей и решений)
Может кто поможет???
Автор: ALeXkRU
Дата сообщения: 13.07.2006 01:32
mozers
01:21 13-07-2006
Цитата:
Я проверял на коде

тоже проверил правда, в паскале: скрипт таки практически ничего не находит
Надо совсем переписывать паттерн
там используется стандартный регесп? если да, после менеджера проектов составлю-таки (надеюсь)
Автор: mozers
Дата сообщения: 13.07.2006 08:52
ALeXkRU
Я тоже пару файлов на Паскале нашел у себя, по ним и писал регсеп. В них он находит все процедуры. Тот регсеп, что закомментирован выше, так же работает (выводит не одно имя процедуры, а и список ее параметров). Он ошибляется на процедурах заданных одним именем (без последующих круглых скобок).

Цитата:
там используется стандартный регесп?

Неа. Я уже привык что все RegExp похожи по принципу действия но каждый разрабочик старается выпендрится по своему. Вот и в LUA так же.
Описание (на русском) я брал отсюда.
Вкратце, про использованное у меня:

Код: \nprocedure ([^(;]-)[;(].-\n%bb;
Автор: Grisper
Дата сообщения: 13.07.2006 09:53
mirk, screencast'ы действительно впечатляют.
особенно mlines.lua порадовал.
только как их подключить я не понял нифига
Автор: mimir
Дата сообщения: 13.07.2006 10:30

Цитата:
Мой регсеп для схх работает почти так как ты описал. Что то не нравится?

Функция может только объявляться соот. нодо проверять в конце и ';', т.е. ; или {}, а так действительно впечатляет.
Удачи.
Автор: mozers
Дата сообщения: 13.07.2006 10:49
Grisper
Я так понял что исходники своего "чуда" этот товарищ положил сюда в неупакованном виде т.е. пофайлово (это ж надо - додумался!).
А кое чего можно имхо и без перекомпиляции кода на LUA сляпать...
Автор: Grisper
Дата сообщения: 13.07.2006 11:00
mozers, я их скачал и посмотрел. правда бегло достаточно...
пример как подключить тот же mlines.lua можешь привести?
Автор: mozers
Дата сообщения: 13.07.2006 11:10
Не будет он работать
Цитата:
API (see functions for descriptions):
- MLines.add
- MLines.add_multiple
- MLines.clear
- MLines.update
Т.е. надо перекомпилировать Скайт чтобы он эти ф-ции понимал.
Я просто думаю может свой скрипт сочинить чтобы он делал то же самое, но без привлечения дополнительных API-шных ресурсов?
Но смотрю уже который раз на этот screencast и врубится не могу че он там делает вообще...

Добавлено:
Очередное маленькое lua-открытие (простите те, кто об этом знал и без меня):
.properties
Код: command.name.49.*=Test
command.49.*=dostring val="Love LUA" dofile(props["SciteDefaultHome"].."\\tools\\test.lua")
command.mode.49.*=subsystem:lua,savebefore:no
Автор: albertabd
Дата сообщения: 17.07.2006 18:35
А есть какой нить плагин перекодировать koi8<->win<->mac<->iso<->utf-8<->translit?
Автор: mozers
Дата сообщения: 18.07.2006 08:07
albertabd
xcode
Автор: ALeXkRU
Дата сообщения: 18.07.2006 11:33
тогда уж Штирлица лучше

Добавлено:
mozers
не подскажешь, почему при установке значения

Код: # Russian code.page
code.page=1251
# character.set=204
character.set=1251
Автор: mozers
Дата сообщения: 18.07.2006 12:19
ALeXkRU

Цитата:
тогда уж Штирлица лучше

Мы говорим про утилиту, вызов которой можно добавить в меню "Tools" дабы она перекодировала текст открываемого файла в кодировку win1251. Потом этот текст будет редактироваться в SciTE, а затем, при сохранении, та же утила должна будет перекодировать этот текст вновь в исходную кодировку.
Как подключить xcode [45kB] - расписано достаточно подробно.
Со Shtirlitz-ем [750kB] из ком.строки не работал не разу - он вообще может, да?
(ты бы, если не в лом, привел примерчик как его присобачить)


Цитата:
почему стоит KOI8 а не WIN (это в сборке)?

В сборке стоит все правильно:
Код: code.page=1251
character.set=204
Автор: ALeXkRU
Дата сообщения: 18.07.2006 13:40

Цитата:
шрифт (моношинный или какой другой) задается тут

это-то понятно... это я и сам знаю
поэтому и спрашиваю - при задании

Код: character.set=1251
Автор: mozers
Дата сообщения: 18.07.2006 14:34
ALeXkRU

Цитата:
при задании character.set=1251 теряется моноширинный шрифт
Вообще то character.set - должен соответствовать 204 (этот набор соответствует русским символам при использовании unicode шрифтов). 1251 - кодовая страница русского шрифта для windows (code.page=1251).
character.set=1251 - вообще бред какой то (по моему такого набора вообще нет в природе)...

Цитата:
просто интересно, почему KOI8 ?
ГДЕ ???
Автор: ALeXkRU
Дата сообщения: 18.07.2006 15:41
mozers
это я изHelp'а (c GTK перепутал) :

Цитата:
character.set
This setting allows changing the character set that is asked for when setting up fonts... To use Cyrillic characters on Windows, set character.set=204 (CP1251 encoding). To use Cyrillic characters on GTK+, set character.set=204 (KOI8-R encoding) or character.set=1251 (CP1251 encoding). Please send email if you use one of these settings and it works or doesn't or if you have information on how to support other languages
Автор: mozers
Дата сообщения: 18.07.2006 16:18
ALeXkRU
На GTK+ может и так (Линуксоиды должны знать правда это или нет), а Виндах charset KOI-8 в стандартных шрифтах отсутствует
Можно, конечно, какой нить свой шрифт KOI-8 поставить (могу дать если надо) и назначить в SciTE отображение символов через него.
Тогда тексты в KOI-8 можно будет смотреть в SciTE без перекодировки.
Смотреть, но не редактировать. Чтобы редактировать придется еще какой нить keyboard mapper писать (как для DOS когда то YuriNB сочинил)...
Это я так плавно перешел на другую тему "Как в SciTE редактировать KOI-8 файлы без перекодировки внешними утилитами"...
Автор: mozers
Дата сообщения: 19.07.2006 09:40
ALL
Когда то я обошел заслуженным вниманием эту тулзу...
Даже позволил себе несколько пренебрежительных слов в ее адрес...
Сейчас, исправляя свою ошибку, я дополнил статью mirk-а о ней.
Получился не обзор, а скорее - мольба о помощи ко всей пишущей братии...
Почитайте, pls...
Автор: mirk
Дата сообщения: 19.07.2006 12:19

Цитата:

1. Убрать из кода дурацкую строчку SetForegroundWindow(w); которая переключает SciTE на последний открытый буфер при выполнении любой команды (дико раздражает).

2. Научить утилу читать $(WindowID) из коммандной строки и не искать его самостоятельно, если прочесть удалось.

3. Научить утилу читать данные, отдаваемые ей SciTE (например, по команде askproperty

4. Можно научить утилу читать команды (их же может быть и много) не только с ком.строки, а и из файла

5. Можно грохнуть все остальные команды, кроме -с за ненужностью


1 - Ну это не проблема
2 - хз даже что это такое
3 - ты имеешь ввиду текст, или какие то внутренние команды?
4 - А вот это уже интеерсно, получаются своеобразные bat файлы....
5 - пускай висят, простые команды никогда не помешают.

А так в общем задумка клевая, часть я смогу сделать, со своим корявым "знанием" C++
Автор: mozers
Дата сообщения: 19.07.2006 13:01
mirk
2 - В винде каждое окно имеет свой уникальный индефикатор. SciTE может сообщить вызываемой программе индефикатор своего окна (ну чтобы ей не пришлось его искать самостоятельно).
3 - значения внутрених параметров SciTE (например askproperty возвращает значение любой переменной из конфига т.е. текстовое значение).
5 - тогда можно добавить вызов простых команд из меню Тут не надо использовать SciTE Director Interface, просто окну SciTE с помощью WM_COMMAND тупо посылается номер менюшной команды.
Автор: gansA
Дата сообщения: 21.07.2006 10:25
mozers
Смотрю последнюю сборку круто ))), што имею сказать:
1. у меня есть в наличии asp.api, куда кидать?
2. файл nncrontab_.properties можно добавить следующее:

Цитата:

# help command
command.help.$(file.patterns.nncron)=$(CurrentWord)!$(SciteDefaultHome)\help\nncron.chm
command.help.subsystem.$(file.patterns.nncron)=4

# exec command
command.build.*.tab="D:\Program Files\nnCron\nncron.exe" -reload
command.go.*.tab="D:\Program Files\nnCron\nncron.exe" -run $(CurrentWord)

3. файл sql.properties для MS SQL (у мну есть более подробный чем в сборке)

Цитата:

# execute
command.go.$(file.patterns.mssql)=osql.exe -E -S(local) -i"$(FilePath)" -n -w1000 -h-1


Автор: mozers
Дата сообщения: 21.07.2006 10:56
gansA
Предложения хорошие Добавлю в новую сборку. Мыло мое - mozers(собака)mail.ru - шли api туда.
только наверное лучше указать вместо $(CurrentWord)!$(SciteDefaultHome)\help\nncron.chm
стандартное местоположение - "С:\Program Files\nnCron\nncron.chm"

ALL
При активной помощи mimir довел до ума скрипт поиска функций и процедур в коде. Куда там scitepm-у до него


Добавлено:
Выкладываю новое ядро SciTE_170_9Ru_beta

Помимо ставшими стандартными доработок, mimir внес в код очень много нового:
Цитата:
В списки сокращений (abbrev) можно добавлять пользовательские переменные:
- %SEL% - выделенный текст
- %CLP% - текст из буфера обмена
- %GUID% - уникальный GUID нового объекта (идея принадлежит codewarlock1101)
Так, например, забив в файл abbrev такую строку:
<a =<a href="|" alt="" target=_blank>%SEL%</a>
пишем '<a Привет' и выделяем 'Привет' (Ctrl+Shift+Left). Затем нажимаем Сtrl+B - получаем готовую конструкцию.
Единственная тонкость заключается в том, что курсор при этом должен распологаться на конце сокращения (после '<a ' пробелы тоже
учитываються). Я пишу так: все сокращения у меня заканчиваються пробелом; ввожу сокращение, через пробел параметр, и нажимаю
Ctrl+Shift+left;Сtrl+B.

Добавлено событие OnDoubleClickEx(key), где key это строка вида "Ctrl;Alt;Shift;"
т.е. теперь можно написать например так:
local ctrl = string.find(key,'Ctrl', 1)
if(ctrl~=nil)then ....

Поправил ошибку при которой нельзя задавать CommentKeyWord* заглавными буквами.
*В Scite есть возможность создания комментариев для некоторых лексеров (например сpp, sql).
Они начинаються с //! /*! /** .
Их отличительная особенность заключается в том, что в них можно подсвечивать отдельные ключевые слова, начинающиеся с "@". Например
@todo. В стандартной версии можно использовать только строчные буквы.

Добавлено 3 новых класса ключевых слов для LexCpp (т.е. теперь можно задавать до 4х дополнительных наборов слов с разной подсветкой)

Добавлена возможность настраивать ширину и цвет курсора индивидуально для каждого лексера, например, так:
caret.fore.$(file.patterns.cpp)=#FF0000
caret.width.$(file.patterns.cpp)=3
А то получаеться не удобно если у тебя для разных языков и имеется различные цветовые решения и разным светлым и темным фоном, а курсор - лишь одного цвета).

Добавлена возможность использовать ":" в обозначениях операторов (для LexCpp и LexSQL). Ранее аналогичная правка коснулась лишь LUA.

Автор: mirk
Дата сообщения: 21.07.2006 14:57

Цитата:
Поправил ошибку при которой нельзя задавать CommentKeyWord* заглавными буквами.
*В Scite есть возможность создания комментариев для некоторых лексеров (например сpp, sql).
Они начинаються с //! /*! /** .
Их отличительная особенность заключается в том, что в них можно подсвечивать отдельные ключевые слова, начинающиеся с "@". Например
@todo. В стандартной версии можно использовать только строчные буквы.

слава мимиру Если я не ошибаюсь это его работа...
Автор: mozers
Дата сообщения: 21.07.2006 15:46
Ну ДА, я же написал! Все доработки кода делал mimir (мне на такое мозгов не хватает
Жаль, конечно, что другие С программисты не помогают
А то некоторыми идеями мне mimir-а увлечь так и не удалось
А жаль (( Очень жаль...
Автор: mimir
Дата сообщения: 21.07.2006 16:08
Вот сдесь не совсем точно.

Цитата:
Добавлена возможность использовать ":" в обозначениях операторов (для LexCpp и LexSQL). Ранее аналогичная правка коснулась лишь LUA.

":" - Можно использовать в DocCommentKeyword ( @TODO: - сдесь ":" будет считаться частью слова)
И еще добавил в LexSQL слово "case" для начала фолдинга.
Автор: codewarlock1101
Дата сообщения: 24.07.2006 23:30
ВСЕМ привет!
Предлагаю скрипт для извращенцев: "множественное позиционирование" в коде.

function GoToMark(Xcom)
local s,e
if (Xcom=='N') then
s,e = editor:findtext(string.char(14),0,editor.CurrentPos);
end
if (Xcom=='P') then
s,e = editor:findtext(string.char(14),0,editor.CurrentPos-1,0);
end
if s~=nil and e~=nil then
editor:SetSel(s,e)
end
end

Подключение:

#---------------------------------------------------------------
command.name.35.*=GoTo Prev MARK
command.35.*=GoToMark P
command.mode.35.*=subsystem:lua,savebefore:no
command.shortcut.35.*=Alt+O


command.name.36.*=GoTo Next MARK
command.36.*=GoToMark N
command.mode.36.*=subsystem:lua,savebefore:no
command.shortcut.36.*=Alt+P
#---------------------------------------------------------------
Смысл простой: если нужно вставить в текущее место (где каретка) не мальенький кусок кода из места, которое находится очень далеко, поросто нажимаем Crtl+Shift+N (вставляет спец символ <SO>) идем в то место, копирум что надо, нажимает Alt+O (или Alt+P) и попадаем в нужное место. Так же полезно использовать в abbrev'ах, например

select | from <SO> where <SO>
(примет плоховат, потому что маленькое расстояние между словам (которые лапками писать-то 3 сек), но если говорить о "стандартах" некоторых фирм, например при написании новой процедуры, со всеми описаниями и тому подобными вещами, то беглая пробежка по "козырным" местам очень удобна).
Можно перенастроить на любой "удобный" символ.

ВСЕМ ВОПРОС
Подскажите поджалуйста, что есть макросы для Scite, и какую пользу можно выловить при их использовании
Автор: mozers
Дата сообщения: 25.07.2006 09:24
codewarlock1101
Цитата:
Предлагаю скрипт для извращенцев
Наверное я поизвращаюсь...

Цитата:
что есть макросы для Scite
Задавал подобный вопрос на офф-форуме - никто не ответил dB6 тоже пытался что то прояснить ковырянием исходников - так же ничего конкретного
Поэтому - присоединяюсь к вопросу - жутко интересно как пользоватся этим секретным оружием...


Добавлено:
Задам еще пару вопросов по LUA (а вдруг кто поможет?):
1. Как сохранить текущий буфер? (scite.Save() - нет такой команды
2. Как закрыть текущий буфер? (scite.Close() - нет такой команды
3. Как заставить SciTE перечитать настройки, после того как я их изменил с помощью скрипта? (scite.ReReadProperties() - нет такой команды
(Если файл .properties изменять непосредственным редактированием из SciTE, то при его сохранении все настройки будут мгновенно применены. Т.е. он, гад, их тут перечитывает все таки...)

В общем то задача состоит в том, чтобы динамически из меню менять настройки (не 2-3 штуки, а подключать/отключать к имеющимся .properties с помощью import целый файл(ы)). Эту задачу я решил. Все поключается/отключается. Только для того, чтобы SciTE увидел эти новые настройки, приходится его вручную закрывать, а потом запускать вновь. Не слишком это хорошо ((
Любые идеи???
Автор: mimir
Дата сообщения: 25.07.2006 09:47
Если мне не изменяет память то настройки считываються каждый раз при переключении буферов. Поэтому после того как сохроняешь настройки и переключаешься на нужный документ, то они и считываються. Вроде так. А на счет сохранения я не знаю.
Автор: mozers
Дата сообщения: 25.07.2006 11:07
mimir
Цитата:
настройки считываються каждый раз при переключении буферов

Откуда взялось это заблуждение? (Просто в офф-форуме ответили точно так же).
На деле - не фига - ни переключение буферов ни переключение лексеров горю не помогают А вот, сам попробуй:
Код: local file = props["SciteDefaultHome"].."\\languages\\cpp_.properties"
local classic = 'import languages\\cpp_style_classic_'
io.input(file)
local text = io.read('*a')
local find = string.find(text, '#'..classic)
if find == nil then
    text = string.gsub(text, classic, '#'..classic)
else
    text = string.gsub(text, '#'..classic, classic)
end
io.output(file)
io.write (text)
io.close()
Автор: mimir
Дата сообщения: 25.07.2006 12:06

Цитата:
Откуда взялось это заблуждение?

Из опыта и сдравого смысла
Переключение буферов-это смена активной закладки. В скайте нет отдельного набора параметров для каждой закладки, а есть только глобальные переменные, которые заполняються в зависимости от активного файла. Там может быть для некоторых параметров стоять признак что если ты переключаешься с одного файла на другой с одним расширением (патерном), то параметр не перечитываетьмся заново (так сделаны api файлы). А вот как инициировать перечитывание параметров без смены текущего буфера, я сказать затрудняюсь. При повторном открытии того же файла параметры не перечитываються.
Автор: mozers
Дата сообщения: 25.07.2006 14:38

Цитата:
Из опыта и сдравого смысла

Только не работает твой "сдравый смысл" ни хрена
Не перечитывает SciTE файл .properties хоть что хошь с ним делай. Токма перезагрузка
Вот если ты открыл файл .properties в SciTE - то совсем другое дело. При его сохранении все настройки тут же вступают в силу.
Я даже сделал такую попытку:
Код: local file = props["SciteDefaultHome"].."\\languages\\cpp_.properties"
local classic = 'import languages\\cpp_style_classic_'
scite.Open(file)
local text = editor:GetText()
local find = string.find(text, '#'..classic)
if find == nil then
    text = string.gsub(text, classic, '#'..classic)
else
    text = string.gsub(text, '#'..classic, classic)
end
editor:SelectAll()
editor:ReplaceSel(text)
scite.SaveBuffer()
scite.CloseBuffer()

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: LeechGet


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.