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

» SciTE - Open Source Text Editor for Windows & Linux

Автор: mozers
Дата сообщения: 03.10.2006 12:00
unreal666
Раз циферка поменялась - значит сменилось
(добавил доработку VladVRO использовать запись вида scite.MenuCommand("IDM_COMMAND") где "IDM_COMMAND" имя константы)
Автор: unreal666
Дата сообщения: 03.10.2006 12:16
mozers
Выложи тогда еще и исходники для этой версии. Как для других версий выкладывал.
Автор: vladvro
Дата сообщения: 03.10.2006 12:39
mozers

Цитата:
SciTE 1.71 .18Ru-Board Edition [Сборка 03.10.2006]

О-о-о, эт оч хорошо
ток я чуток припоздал, у меня еще один баг-фикс в скрипте
http://scite.ruteam.ru/scite/realizaciya-zapisi-makrosov-s-pomoschyu-lua

и я полностью согласен с unreal666, нужны исходники.
Автор: unreal666
Дата сообщения: 03.10.2006 13:20
mozers
Блин. Вся структура SciTEStartup.lua изменена.
И куда мне теперь воткнуть функцию GetLexerName() и как ее теперь подключить к обработчику OnUpdateUI() ?
Автор: mozers
Дата сообщения: 03.10.2006 13:37
http://scite.ruteam.ru/engine/upfiles/mozers/SciTE_171_18Ru_src.rar

Цитата:
у меня еще один баг-фикс в скрипте
Отлично Я уже включил его в сборку (только что тихо обновил дистрибутив).

Цитата:
Блин. Вся структура SciTEStartup.lua изменена
Круто, правда?

Цитата:
И куда мне теперь воткнуть функцию GetLexerName() и как ее теперь подключить к обработчику OnUpdateUI() ?
Да без проблем!
Весь скрипт помещаешь в отдельный файл. В конце его не забудь добавить scite_OnUpdateUI(MyFunction), где MyFunction - имя твоей функции что переключает название лексера в статусной строке.
Ну и добавляешь лишнюю строчку в SciTEStartup.lua типа:
require (props["SciteDefaultHome"].."\\tools\\LexerInfo.lua")
Автор: unreal666
Дата сообщения: 03.10.2006 15:31
mozers

А куда мне вствлять строчку props["lexer.name"] = GetLexerName() ?
Раньше-то она была в функции OnUpdateUI.
Или можно просто вставить scite_OnUpdateUI(props["lexer.name"] = GetLexerName()) ?

Или нужно создавать отдельную функцию вида

Код: function SetPropLexerName()
props["lexer.name"] = GetLexerName()
end
Автор: mozers
Дата сообщения: 03.10.2006 16:44
unreal666
Цитата:
Я в LUA ни бум-бум
Ты сам себе противоречишь - видишь как ты все правильно и без всякой подсказки сделал

Цитата:
Хоть бы предупредил, что такая функция уже есть
Ей Богу - запамятовал Извини...

DEVELOPERS
Подскажите, pls, (уже который раз спрашиваю): Галки в меню Lexer сложно организовать??? Если сложно - то я это скриптовое решение с которым unreal666 борется в сборку включу.


Цитата:
И раскомментирую по умолчанию поддержку лексера nncron tab
Наверное, "закомментирую"? Если скрипты для nnCron не пишешь - то абсолютно правильно.
Автор: unreal666
Дата сообщения: 03.10.2006 17:01

Цитата:
Ты сам себе противоречишь - видишь как ты все правильно и без всякой подсказки сделал

В Lua то я бум-бум, но немного логики то есть. Частично могу определить, что надо писать, по прототипам.
Автор: mozers
Дата сообщения: 03.10.2006 18:12
unreal666
Ну так и я - так же То, что делают методы SciTE Lua Extension можно по названию догадаться да и примеров - навалом. Если встречается какой нить чиста Lua-шный операнд - ищу ответ тута. В принципе, того из Lua что может работать в SciTE не так уж и много. Все перечислено в api\SciTELua.api.
Автор: unreal666
Дата сообщения: 03.10.2006 18:20
mozers
А чего tree.lua и TodoList.lua валяются в папке без дела? Они нигде не прописаны.
Автор: Jus
Дата сообщения: 04.10.2006 10:10
Народ, подскажите как сделать выранивание(сдвиг) выделенного блока редактируемого текста (вправо/влево). Похоже стандартной возможности нет... а жаль Может есть готовы скрипт для этого?
Автор: dB6
Дата сообщения: 04.10.2006 11:57
Jus

Цитата:
Народ, подскажите как сделать выранивание(сдвиг) выделенного блока редактируемого текста (вправо/влево).

Выделяем текст. Нажимаем Tab - вправо.
Shift+Tab - влево.
Можно так.

Добавлено:
Если 1 строка выделена - курсор должен быть вначале текста.
Если несколько строк выделено - то все равно где.
Автор: Jus
Дата сообщения: 04.10.2006 12:31
dB6
Премного благодарен за подсказку!
Автор: vladvro
Дата сообщения: 04.10.2006 14:30
mozers

Цитата:
Весь скрипт помещаешь в отдельный файл. В конце его не забудь добавить scite_OnUpdateUI(MyFunction), где MyFunction - имя твоей функции ...

замечание по работе этой функции:
ее нельзя (!) использовать в скриптах подключеных в качестве дополнения для лексера.
пример определения такого дополнения:
extension.$(file.patterns.html)=$(SciteDefaultHome)\tools\html_functions.lua
т.к. при этом происходит многократное добавление функции и последующий многократный ее вызов.
Автор: mozers
Дата сообщения: 05.10.2006 08:11
vladvro
Цитата:
т.к. при этом происходит многократное добавление функции и последующий многократный ее вызов

Да, именно так будет если не позаботиться о удалении этой функции после ее использования. Такой пример есть в сборке Ru-Board (InsertSpecialChar.lua).
А вообще у меня была мысль подкорректировать этот скрипт (я про append_handler.lua) просто запретив добавление нового обработчика если его имя совпадает с уже имеющимся (тогда можно будет вообще не заботится об удалении), но что то не допетрил как это сделать.
Автор: LASC
Дата сообщения: 05.10.2006 08:15
а какой нибуть скрипт для автоформата c-like языков есть?
Автор: vladvro
Дата сообщения: 05.10.2006 08:48
mozers

Цитата:
Да, именно так будет если не позаботиться о удалении этой функции после ее использования.

далеко не всегда есть возможность удалять функцию после использования, например ее нет, если мы вешаем функцию на прерывание OnChar.

Цитата:
А вообще у меня была мысль подкорректировать этот скрипт (я про append_handler.lua) просто запретив добавление нового обработчика если его имя совпадает с уже имеющимся (тогда можно будет вообще не заботится об удалении), но что то не допетрил как это сделать.

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

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

Код: old_OnChar = OnChar
function OnChar (c)
if old_OnChar then old_OnChar(c) end
...
end
Автор: unreal666
Дата сообщения: 05.10.2006 23:06
Чего-то команда "Выбрать цвет" у меня не работает.
Выдает такое:

Код: Сценарий:    C:\Program Files\Текстовые редакторы\SciTE\tools\ColorSet.js
Строка:    34
Символ:    1
Ошибка:    Класс не лицензирован для использования
Код:    80040112
Источник:     (null)
Автор: dB6
Дата сообщения: 06.10.2006 13:40
LASC

Цитата:
а какой нибуть скрипт для автоформата c-like языков есть?


Для этих целей можно юзать astyle.

Free. http://astyle.sourceforge.net/

Если надо пример подключения - пиши.
Автор: mozers
Дата сообщения: 06.10.2006 16:46
unreal666
Цитата:
Ошибка: Класс не лицензирован для использования
Смотри в комментах тут

Цитата:
C:\Program Files\Текстовые редакторы\SciTE\tools\Helper\SciTE.dll") - Не найден указанный модуль
Очевидно виноваты русские символы в пути.
И зачем вы русские имена каталогам даете??? Сразу на кучу разных проблем нарываетесь (эта - далеко не единственная).
Или переименуй "Текстовые редакторы" в "Text Editors"
или скопируй SciTE.dll в каталог %WINDIR%\SYSTEM32 и зарегистрируй вручную, выполнив из ком.строки:
Код: Regsvr32 SciTE.dll
Автор: unreal666
Дата сообщения: 07.10.2006 20:47
mozers

Цитата:
Очевидно виноваты русские символы в пути.

Это тут ни причем. Он у меня даже из корня диска не хочет регистрироваться (из system32 тоже).

Цитата:
зарегистрируй вручную, выполнив из ком.строки:

Я для этого не использую командную строку. У меня на dll-км давно уже внесены пункты меню для регистрации и дерегистрации (в реестре добавлял).
Автор: mozers
Дата сообщения: 08.10.2006 15:25
unreal666
Я так понял что с лицензией на COMCTL32.OCX ты разобрался?
Тогда по поводу регистрации SciTE.dll - возможно у тебя в системе отсутствует файлик msvbvm50.dll. Он имееется во всех виндах, и только в ХР SP2 гады мелкософтовцы его заменили на msvbvm60.dll ("гады" - потому что не добавили, а заменили, обеспечив тем самым неработоспособность многих прог, написанных на VB5). Найти и поставить его, конечно, не проблема, но зачем лишний раз напрягать пользователей?

Цитата:
У меня на dll-км давно уже внесены пункты меню для регистрации и дерегистрации (в реестре добавлял)
На OCX - еще понимаю, а на DLL?... Большинство никакой регистрации не требуют, поскольку являются обычными библиотеками...

vladvro
Цитата:
короче есть простое решение, на примере OnChar
Извини, но я чой то туплю... И как это работает? (Если можно - какой нить простенький практический пример)

ALL
Тут как то звучало пожелание о скрипте, чтоб двигал не одну строку, а несколько выделенных строк вверх/вниз. Ну вот я тут изобразил:
[more]
Код: command.name.23.*=• Lines -> upwards
#~ command.23.*=dostring editor:LineTranspose() editor:LineUp()
command.23.*=dostring d=-1 dofile(props["SciteDefaultHome"].."\\tools\\LinesUpDown.lua")
command.mode.23.*=subsystem:lua,savebefore:no
command.shortcut.23.*=Ctrl+Up

command.name.24.*=• Lines -> downwards
#~ command.24.*=dostring editor:LineDown() editor:LineTranspose()
command.24.*=dostring d=1 dofile(props["SciteDefaultHome"].."\\tools\\LinesUpDown.lua")
command.mode.24.*=subsystem:lua,savebefore:no
command.shortcut.24.*=Ctrl+Down
Автор: unreal666
Дата сообщения: 09.10.2006 05:19

Цитата:
Я так понял что с лицензией на COMCTL32.OCX ты разобрался?

Я с ней даже не разбирался.
Я поставил Visual FoxPro 9 (мне нужно было) и вместе с ней установился этот COMCTL32.OCX.

Цитата:
На OCX - еще понимаю, а на DLL?... Большинство никакой регистрации не требуют, поскольку являются обычными библиотеками...

А мне так удобнее. У меня эти пункты меню и на ocx и на dll.

Цитата:
Тогда по поводу регистрации SciTE.dll - возможно у тебя в системе отсутствует файлик msvbvm50.dll.

Правильно думаешь. Как видно из моей подписи, у меня Win2k3 R2. Нашел у себя на винте этот файлик в папке маткада, скопировал в папку system32 и SciTE.dll нормально зарегался.
Сенкс.
Автор: vladvro
Дата сообщения: 09.10.2006 08:32
mozers

Цитата:
И как это работает? (Если можно - какой нить простенький практический пример)

для перехвата события в скрипте подключаемом для конкретного лексера, например так:
extension.$(file.patterns.html)=$(SciteDefaultHome)\tools\html_functions.lua
рекомендуется использовать следующие описание функции например OnChar:

Код: old_OnChar = OnChar
function OnChar (c)
-- вызов исходного обработчика если он был
if old_OnChar then old_OnChar(c) end
-- тело функции
if c == "=" then
local nStyle = editor.StyleAt[editor.CurrentPos - 2]
if nStyle == 3 or nStyle == 4 then
editor:InsertText(editor.CurrentPos, "\"\"")
editor:GotoPos(editor.CurrentPos + 1)
end
end
end
Автор: codewarlock1101
Дата сообщения: 09.10.2006 16:19
Добрый день!
Скажите с почему в последней версии комбинации Ctrl+Tab и Ctrl+Shift+Tab поменялись местами(рулят по буферу файлов наоборот)??? Отвыкать очень хреново

Сорри... ступил... идею понял
Автор: mozers
Дата сообщения: 09.10.2006 17:18
vladvro
Что то я не врублюсь, как твой вариант ликвидирует многократную загрузку обработчика. Имхо сколько раз вызвал твою конструкцию - столько дублей скриптов загрузилось...
Код: -- вызов исходного обработчика если он был
Автор: Moon_aka_Sun
Дата сообщения: 10.10.2006 07:18
mozers
Цитата:
Тут как то звучало пожелание о скрипте, чтоб двигал не одну строку, а несколько выделенных строк вверх/вниз.
Хм. Как альтернатива, можно использовать отметку строк (по Ctrl+F2) а потом Copy/Move их в одно место.

Ещё идея - несколько буферов (0-9 или a-z) и отдельные клавиши для Copy/Paste с параметром. (То, что М.Ф. сделал кольцо буферов я знаю, это немного не то.)

А вопрос вот такой - в меню Language есть Text, Наверное, настроенный на *.txt и т.п. Как бы сделать в простых текстовых файлах выделение цветом http и email адесов, и можно ещё, чисел, некоторых знаков препинания. Это сканер надо текстовый? Или есть уже какой-то подходящий? Не хочется копать, задача не очень важная, но может кто-то что-то знает про это?

Автор: vladvro
Дата сообщения: 10.10.2006 07:28
mozers

Цитата:
Что то я не врублюсь, как твой вариант ликвидирует многократную загрузку обработчика. Имхо сколько раз вызвал твою конструкцию - столько дублей скриптов загрузилось...
после 1 запуска функция ниже и станет этим "исходным обработчиком"... ну и т.д.

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


Цитата:
но перехватом onMenuSelect мы например не решим проблему с командами смены регистра в макросах
Почему? Я то думал что событие onMenuSelect будет возникать не только при выборе пункта меню, но и при вызове этого пункта меню с помощью шортката. Т.е. правильнее ее было бы назвать OnRunIDM_COMMAND

правильнее назвать OnMenuCommand. т.к. в коде будет перехватываться работа функции MenuCommand. точнее я ее так и назвал и реализовал, код будет чуток по позже, хочу сперва доделать событие OnSendEditor, от перевого варианта я отказался, перекидываться событиями с ядром то еще занятие, но и со вторым вариантом есть серьезные проблемы, видимо прийдется фильтровать поток событий, скажем до списка макросных.
про меню верно, при вызове через шорткат будет вызываться функция MenuCommand, а вот из макроса - нет,
т.к. там записываются команды уже другого уровня, уровня самого редактора, ну или иначе говоря ядра scintilla. и отправляются они напрямую через вызов функции SendEditor.
и это еще не все проблемы с макросами, основная - это возникающая при переопределении внутренних функций путаница с тем, какие команды надо писать в макрос, а какие являются результатом работы переопределения. в результате надо это отслеживать и корректно обрабатывать.
Автор: HSolo
Дата сообщения: 10.10.2006 07:40
Ребята здорово поработали за что вам большое спасибо.
Есть одна идейка, которую собственными силами реализовать вряд ли смогу, по крайней мере быстро. Очень хотелось бы чтобы меню TOOLS можно было конфигурить в подменю.
Когда очень много скриптов (которые конечно можно разделить separator'ом) зачастую все не влазит на экран, да и глаза разбегаются. Вот если бы можно было реализовать подменю все стало бы просто замечательно.
Автор: codewarlock1101
Дата сообщения: 10.10.2006 12:00
Привет! Еще вопрос.
Будут ли ру-тим изменения наследоваться для Линух-версий... потому что други, которым ОЧЕНЬ понравился редактор сидят именно в нем...
Простой запуск с эмуляцие win32 нормально работает, но хочеца родной скомпиленый

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

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


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