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

» SciTE - Open Source Text Editor for Windows & Linux

Автор: vladvro
Дата сообщения: 10.10.2006 13:27
mozers
настало "попозже" вот измененные файлы:
http://scite.ruteam.ru/engine/upfiles/vladvro/SciTE_171_18Ru_src_update_061010.zip

реализована функция OnMenuCommand и функция OnSendEditor в первом приближении (не реализована коррекция записи макроса). OnSendEditor вызывается только для команд доступных для записи в макрос.
реализация смены регистра символов выделенного текста:

Код: function OnSendEditor (msg, wp, lp)
if msg == IFACE_FUNCTIONS["UpperCase"] then
ChangeCase("U")
return ""
elseif msg == IFACE_FUNCTIONS["LowerCase"] then
ChangeCase("L")
return ""
end
end
Автор: codewarlock1101
Дата сообщения: 10.10.2006 14:13
vladvro
изменения только ядра и виндового интерфейса.... линуксовой части в русском патче нет.

...
scope../src/SciTEBase.cxx:2435: error: ‘CF_TEXT’ was not declared in this
scope../src/SciTEBase.cxx:2435: error: ‘GetClipboardData’ was not declared in this scope../src/SciTEBase.cxx:2437: error: ‘GlobalLock’ was not declared in this scope../src/SciTEBase.cxx:2438: error: ‘GlobalUnlock’ was not declared in this scope../src/SciTEBase.cxx:2440: error: ‘CloseClipboard’ was not declared in this scope../src/SciTEBase.cxx:2513: error: ‘GUID’ was not declared in this
...
Этих функций в Линах-то нету....
Автор: vladvro
Дата сообщения: 10.10.2006 14:41
codewarlock1101

Цитата:
изменения только ядра и виндового интерфейса.... линуксовой части в русском патче нет.

ты прав.
я не знал, что все на столько плохо под лиинукс.
просто ру-тим - это скорее термин, а реально - это один человек, на этом форуме он фигурирует под ником mozers, который взял на себя задачу сведения в одну сборку наработок по улучшению редактора как нашими так и зарубежными разработчиками.
И увы видимо человека со знанием Линукса, который бы сумел подправить и дополнить код пока что не нашлось.
Автор: BruceW
Дата сообщения: 10.10.2006 19:26
Посмотрел русскую сборку и странное впечатление оставил данный редактор. С одной стороны - много восторженных отзывов и супер-гибкая архитектура, с другой - ощущение непонятной сырости.
Вроде все в нем устраивает, но как всегда выползают какие-то вещи, от которых портится все впечатление.
Подсказки по коду - как их все-таки заставить работать?
Потратил кучу времени, чтобы понять - и бросил эту затею. Нет, я не спорю разобраться можно, но почему они не работают по умолчанию??? Поправьте, если не так.
Да, кстати, супер-гибкость - не всегда хорошо. Пусть это редактор для программистов, так и что, если так - то нужно тратить кучу времени на доведение его до работоспособного состояния? Зачем мне изучать конфиги и луа, если я хочу с ним начать работать прямо сейчас? Почему не включить все часто используемые настройки по умолчанию?
Вообщем все это лишь первое впечатление, прошу сильно не кричать. Поправьте, где не прав.
И еще - не хочу обидеть ру-боард, но вам не кажется, что стоит все-таки завести отдельный форум поддержки, с норальной разбивкой по темам?
Автор: vladvro
Дата сообщения: 11.10.2006 07:41
BruceW

Цитата:
Посмотрел русскую сборку и странное впечатление оставил данный редактор. С одной стороны - много восторженных отзывов и супер-гибкая архитектура, с другой - ощущение непонятной сырости.

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

Цитата:
Да, кстати, супер-гибкость - не всегда хорошо.

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

Цитата:
И еще - не хочу обидеть ру-боард, но вам не кажется, что стоит все-таки завести отдельный форум поддержки, с норальной разбивкой по темам?

я сам недавно задавал подобный вопрос, и получил ответ, что в этом нет необходимости, с чем сейчас вобщем согласен.
Автор: codewarlock1101
Дата сообщения: 11.10.2006 12:56
vladvro
Над этим кой кто будет стараться.... возможно еще кому пригодится.
ВСЕМ
Что-то совсем все непонятно.
1. Частенько отваливается подсветка синтаксиса, при этом так странно! - часть светит, а часть нет. Скриншот сделал, если кому интересно - http://slil.ru/23233722
2. Постоянно отваливаются хоткеи.... помогает (штоб скайт не перезагружать) открытие/добавление-удаление пробела/сохранение
Автор: BruceW
Дата сообщения: 11.10.2006 17:40
vladvro
Просто не всегда есть время читать 55 страниц обсуждения чтобы найти ответ, на интересующий вопрос
А поиск по руборду, к сожалению, пока еще оставляет желать лучшего

Добавлено:
И все-таки по поводу подсказок - как заставить работать?
И есть ли подобие код-сниппетов, или это связано с abbrev? - можно ли на конкретный сниппет навесить хоткей?

Добавлено:
И есть ли альтернативные подстветки? Понятно что можно настроить самому, но опять же - это все время, хотелось бы готового.
Автор: mozers
Дата сообщения: 11.10.2006 23:09
codewarlock1101

Цитата:
Частенько отваливается подсветка синтаксиса

Цитата:
Постоянно отваливаются хоткеи
Что то никто еще по этому поводу не репортил. Попробуй локализовать проблему - выяснить кто виноват - настройки или ядро. А может система глюкавит?

BruceW

Цитата:
Подсказки по коду - как их все-таки заставить работать?
Потратил кучу времени, чтобы понять - и бросил эту затею. Нет, я не спорю разобраться можно, но почему они не работают по умолчанию??? Поправьте, если не так.
По идее - все должно работать сразу без каких бы то ни было настроек (все настроено). Если не работает - внимательно читаем SciTE Ru-Board.html и , если не помогло - конкретно, максимально подробно - сюда - будем разбираться и выяснять.

Цитата:
Почему не включить все часто используемые настройки по умолчанию?
Они - включены. Вы не согласны с какой то настройкой? - аргументируйте - исправим. Вот если чего то просто нет (например, всплывающих подсказок и автодополнения по Паскалю), то они и не появится пока Вы или кто то другой не составит и не выложит для общего пользования свой API файл.

Цитата:
но вам не кажется, что стоит все-таки завести отдельный форум поддержки, с норальной разбивкой по темам?
При сегодняшнем количестве отвечающих, на таком форуме Ваш вопрос будет висеть без ответа до Нового Пришествия

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

Цитата:
И есть ли подобие код-сниппетов, или это связано с abbrev?
Быстрая ставка сокращений (они берутся из abbrev) работает по Ctrl+B, Ctrl+Shift+R. Можно реализовать (есть и примеры) с помощью скриптов и навесить на любые комбинации клавиш.

Цитата:
И есть ли альтернативные подстветки?
Есть. Из готовых - можно взять в других сборках или из дистрибутивов других редакторов, постороенных на движке Scintilla (например - Notepad+). В сборке Ru-Board - одна альтернативная подсветка - cpp_style_classic_ (с) mimir

vladvro
Цитата:
просто ру-тим - это скорее термин, а реально - это один человек
Ты сам, своими великолепными идеями и точными ответами в этом топике доказал что это - совсем не так Сборку делают ВСЕ посетители форума (даже те, кто не отвечает, а спрашивает). Просто кто то вкладывает - больше, а кто то - поменьше. Вот у меня сейчас - запарка, а я вижу что и без меня создание новой сборки - движется
Вижу, что надо кучу скриптов корректировать - ведь теперь появились более корректные способы добавления обработчиков и функции OnMenuCommand и OnSendEditor

HSolo
Даавно внесено в список пожеланий
(шапку то хотя бы прочтите для начала

Moon_aka_Sun
Вижу много нестандартных решений в твоей сборке. Думаю что в сборке Ru-Board тебе многое не нравится. Очень бы хотелось услышать критику. Вон dB6 столько уже толковых замечаний навставлял - я замучился исправлять

Новый HexEditor (сам еще не смотрел)
Автор: gansA
Дата сообщения: 12.10.2006 08:38

Цитата:
Цитата: Постоянно отваливаются хоткеи Что то никто еще по этому поводу не репортил.
Попробуй локализовать проблему - выяснить кто виноват - настройки или ядро. А может система глюкавит?

Есть такое дело, причем есть давно, по крайней мере у меня .
Как не работает: запускаем Scite, переключаем раскладку на русский, открываем любой файл и вуаля клавиатурные команды не работают (те что повешены на буквы), обатное переключение раскладки уже не помогает . Работают команды только из меню.


Цитата:
Частенько отваливается подсветка синтаксиса

И такое заметил, в последней сборке от Нейла, причину появления бага пока не локализовал.
Автор: vladvro
Дата сообщения: 12.10.2006 09:11
codewarlock1101

Цитата:
Над этим кой кто будет стараться.... возможно еще кому пригодится.

это просто замечательно, пригодится "все непременно, дорогой друг, все непременно..."
mozers

Цитата:
Постоянно отваливаются хоткеи
Что то никто еще по этому поводу не репортил.

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

Цитата:
Сборку делают ВСЕ

идеи и наработки для нее делаю все, а вот саму сборку... ну никто другой же ее не делает.
кста, немного в сторону, на главной странице сайта http://scite.ruteam.ru/ до сих пор стоит версия 1.70 для русской сборки и статья SciTE 1.71 Ru-Board Edition датирована 10.07.2006, неправильно это как-то, кого надо "пинать" чтобы исправили?
Автор: Moon_aka_Sun
Дата сообщения: 12.10.2006 11:12
mozers

Цитата:
Вижу много нестандартных решений в твоей сборке. Думаю что в сборке Ru-Board тебе многое не нравится. Очень бы хотелось услышать критику.
Нравится, не нравится, зачем критиковать? Я уж лучше конструктивно - сделаю так, как мне удобно. Если кому-то что-то подойдёт, то тоже хорошо.
Автор: codewarlock1101
Дата сообщения: 12.10.2006 14:52
vladvro
С подстветкой у меня глюкан в виндухах был..... ели еще будет (+ и что очень важно -будет свобод время). Может чего расковыряю
Вопрос ВСЕМ
С помощью какого хоткея можно показывать следующий хинт к функции? (чтобы не лезть мышой и не жать на стрелки..) [[это в случае, если функции одноименные, но имеют разные параметы]]
Автор: mozers
Дата сообщения: 12.10.2006 18:29
codewarlock1101
Цитата:
С помощью какого хоткея можно показывать следующий хинт к функции?
Если пользовать мой скрипт автодополнения - то можно выбирать вводя нужную букву.
Если оригинальным - то имхо - нельзя никак.

Moon_aka_Sun
Просто если бы совместно пытались довести до ума один проект, споря и не соглашаясь друг с другом, то толку было бы больше. А в спорах рождается истина. Банально, но - факт.

vladvro
Цитата:
кого надо "пинать" чтобы исправили?
mirk
Автор: codewarlock1101
Дата сообщения: 13.10.2006 10:03
mozers
Наверное я некорректно оформил мысль (или ты ее некорректно обработал)
Я имел ввиду хинты - это когда ты функу уже написал, и вылазит окно с подсказкой к функции (из апи файла).
Например есть
funcX(s: pchar; x:integer);
funcX(str:string);
(то есть с одинаковыми именами). Тогда в хинте слева появляются стрелки для прокрутки, чтобы выбрать одну из подсказок. Вопрос в том - можно ли "прокручивать" хинты хоткеем какимнидь?
Автор: vladvro
Дата сообщения: 13.10.2006 10:52
mozers
я дописал функционал для события OnSendEditor - коррекцию для записи макроса,
полагаю что ты уже скачивал предыдущий апдейт, т.ч. я закинул в новый апдейт только измененый файл, качай:
http://scite.ruteam.ru/engine/upfiles/vladvro/SciTE_171_18Ru_src_update_061012.zip

всем кто использует макросы
в скрипт внесены исправления (комментарий здесь)
обновленый скрипт для скачивания macro_support.lua
Автор: KaptainN
Дата сообщения: 13.10.2006 16:16
Скрипт для выделения htm-тега

-----------------------------------------------
-- html_seltag.html
-----------------------------------------------
-- Ввделяет тэг в html-файле
-- Leonid, ICQ - 418-078-835
-- version 1.0


function SelectTag(tagOpen, tagClose, init)

    -- рекурсивная функция
    function ffen(start)
        local a,b = string.find(html, tagClose, start)
        -- если нет закрывающего тега
        if b == nil then
            _, b = string.find(html, '>', start)
            return a, b
        end    
        
        local s = string.sub(html, start, b-1)
        local _s,_e = string.find(s,tagOpen)
        while _s ~= nil do
            a,b = ffen(b) -- рекурсия
            _s,_e = string.find(s, tagOpen, _e)
        end
        return a,b
    end

    -- ищу начало
    local st, a = string.find(html, tagOpen, init)
    -- ищу конец
    local _, en = ffen(a+1)
    return st-1, en
end

-- возвращает:
--    открывающий тэг, закрывающий тэг, позицию начала поиска
function GetTags()
    -- ищу начало тега
    local i = editor.CurrentPos
    while (1) do
        local ch = string.sub(html, i, i)
        if ch == '<' or i == 1 then break end
        i = i-1
    end

    -- ищу конец тега
    local j = i+1 --sel_start
    while (1) do
        local ch = string.sub(html, j, j)
        if ch == '>' or ch == ' ' or ch == 0 then break end
        j = j+1
    end
    
    local tag = string.lower(string.sub(html, i+1, j-1))
    
    return '<'..tag, '</'..tag..'>', i
end

--==========================================

html = string.lower(editor:GetText())

if string.len(html)==0 then
    return 0,0
end

editor:SetSel( SelectTag(GetTags()) )
Автор: mozers
Дата сообщения: 13.10.2006 17:50
KaptainN
Поздравляю с первым постом
Спасибо за скрипт - возможно кто то на его базе сделает очередное средство автоматизации. Правда, мне кажется, что задействовав регулярные выражения код можно изрядно сократить...

vladvro
Цитата:
дописал функционал для события OnSendEditor
Ты - силен
А я - хронически не успеваю

codewarlock1101
Дошло... "хинты" = "всплывающие подсказки". А я те парю про перемещение по раскрывающемуся списоку с дополнениями...
Автор: Kvartirus
Дата сообщения: 14.10.2006 07:01
Привет!
Скажите, пожалуйста, как избавится от мерцания?
В оригинальном SciTE ничего не мерцает, а поставил вашу сборку – всё дико мерцает при редактировании/скролировании.
Я уже убрал все альфы в настройках, но тем не менее всё равно мерцает.
Что нибудь подскажете?
Автор: vladvro
Дата сообщения: 16.10.2006 09:10
Kvartirus

Цитата:
Скажите, пожалуйста, как избавится от мерцания?

попробуй поставить:
buffered.draw=1
Автор: Kvartirus
Дата сообщения: 16.10.2006 10:22

Цитата:
попробуй поставить:
buffered.draw=1

Про это забыл. Спасибо.
Автор: mozers
Дата сообщения: 16.10.2006 17:25
vladvro
Наконец то добрался до внедрения OnMenuCommand и OnSendEditor в жизнь.
Не понял, зачем нужно было делать IFACE_FUNCTIONS ? Без нее код выглядит более правильным :
Код: -- Добавляем свой обработчик событий, возникающих при вызове пунктов меню "UpperCase" и "LowerCase"
old_OnSendEditor = OnSendEditor
function OnSendEditor (msg, wp, lp)
    -- вызов исходного обработчика если он был
    if old_OnSendEditor then old_OnSendEditor (msg, wp, lp) end
    if msg == SCI_UPPERCASE then
        ChangeCase("U")
    elseif msg == SCI_LOWERCASE then
        ChangeCase("L")
    end
end
Автор: mozers
Дата сообщения: 16.10.2006 22:31
Насилу додумался как подключить твой вариант перехвата событий.
Постоянно выдавало:
Код: stack overflow
Автор: vladvro
Дата сообщения: 17.10.2006 09:02
mozers

Цитата:
Не понял, зачем нужно было делать IFACE_FUNCTIONS ? Без нее код выглядит более правильным :

согласен, забыл
пошел по уже проторенному пути - эта таблица забита в коде поддержки макросов.

Цитата:
Не понял зачем вообще нужно OnMenuCommand когда есть OnSendEditor ?

затем что они только частично перекрываются, например событие IDM_MONOFONT никак не ловится в OnSendEditor.

Цитата:
Пытался повесить собственный обработчик на ZoomIn и ZoomOut - жестоко обломался
Эти события не ловят ни OnMenuCommand ни OnSendEditor

м... я думаю можно их добавить в список, в функции isMacroableMessage, и переименовать ее на скажем isInterruptableMessage.

Цитата:
Написал тебе в ПМ - ответа не дождался - запостил тут.

оказывается у меня никакого оповещения о ПМ не было
кроме того мне кажется что эти вопросы могут быть интересны не талько нам двоим

Цитата:
Насилу додумался как подключить твой вариант перехвата событий.
...
Оказалось, опущена существенная мелочь - local :
SciTEStartup.lua
Код:
require (props["SciteDefaultHome"].."\\test\\my_OnChar1.lua")
require (props["SciteDefaultHome"].."\\test\\my_OnChar2.lua")

да нет опущенна другая "мелоч" - я писал:

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

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

Цитата:
И если уж никак не придумывается способ как избежать многократной загрузки, то может быть можно как то принудительно удалять ненужный обработчик?

конечно можно, для этого надо обратно повесить на событие старый обработчик:

Код: OnChar = old_OnChar
Автор: mozers
Дата сообщения: 17.10.2006 23:01
vladvro
Цитата:
я думаю можно их добавить в список, в функции isMacroableMessage, и переименовать ее на скажем isInterruptableMessage.
Из сказанного понял одно - без тебя не сделаю

Цитата:
для подключения в стартовом скрипте как раз идеально подходит вариант из extman.
и в случае с запуском по команде тоже
НЕТ. Я уже все переделал. Практически все отлично работает. Есть небольшие ньюансы в случае с запуском по команде (почему то обработчик начинает работать только со 2 раза) но я думаю, что это - решаемо.
Твой вариант - прозрачней и понятней extman.
Он позволяет моментально подключить любой из скриптов сборки к другому SciTE независимо от наличия/отсутствия extman.
Вывод - надо пользовать твой вариант.
Автор: gansA
Дата сообщения: 18.10.2006 08:50
mozers и vladvro

Ребят я все понимаю, но не увлеклись ли вы уж слишком сильно. Как бы это не переросло в проект ради проекта.

Эт я к тому, что последние пару - тройку страниц, вааще ниче непонятно, эт я про себя говорю..
Автор: vladvro
Дата сообщения: 18.10.2006 10:14
mozers

Цитата:
НЕТ. Я уже все переделал. Практически все отлично работает.
а жаль. как архитектор тебе говорю, что вариант в exman более правильный.
а прозрачность и понятность - понятия относительные

Цитата:
Он позволяет моментально подключить любой из скриптов сборки к другому SciTE независимо от наличия/отсутствия extman.
ты же делаешь готовую сборку, а не отдельные модули.

codewarlock1101

Цитата:
изменения только ядра и виндового интерфейса.... линуксовой части в русском патче нет.
...
scope../src/SciTEBase.cxx:2435: error: ‘CF_TEXT’ was not declared in this
scope../src/SciTEBase.cxx:2435: error: ‘GetClipboardData’ was not declared in this scope../src/SciTEBase.cxx:2437: error: ‘GlobalLock’ was not declared in this scope../src/SciTEBase.cxx:2438: error: ‘GlobalUnlock’ was not declared in this scope../src/SciTEBase.cxx:2440: error: ‘CloseClipboard’ was not declared in this scope../src/SciTEBase.cxx:2513: error: ‘GUID’ was not declared in this
...
Этих функций в Линах-то нету....
покопался тут в коде добавленом mimir - первые 5 ошибок устраняются вставкой условий для компилятора:

Код: //{ start - *mimir*
    char *pPerc=NULL;
    SString currentSelection = EncodeString(SelectionExtend(0, false));
    SString clpBuffer;
    bool UseSel = false;
#if PLAT_WIN || PLAT_GTK_WIN32
    BOOL IsOpen=OpenClipboard(0);
    if(IsOpen){
        HANDLE Data;
        Data = GetClipboardData(CF_TEXT);
        if(Data != 0){
            clpBuffer = static_cast<char*>(GlobalLock(Data));
            GlobalUnlock(Data);
        }
        CloseClipboard();
    }
#endif
    SendEditorString(SCI_REPLACESEL, 0, "");
//} end - *mimir*
Автор: mozers
Дата сообщения: 18.10.2006 23:26
gansA
Цитата:
вааще ниче непонятно
Просто помимо обычных скриптов, стартующих из меню Tools по dofile или dostring, есть возможность заменять события(эвенты) SciTE своими собственными обработчиками.
Такие скрипты в достатке имеются в сборке Ru-Board.
Но если кто то попытается их перенести в свой SciTE, то сделать это будет достаточно мурено.
Вся цель нашего базара с vladvro состоит в том, чтобы сделать этот перенос максимально простым и доступным любому пользователю.
А поскольку мы сами до конца все не знаем, то и беседуем тут, надеясь что в нашу беседу вмешаются более грамотные товарищи. Или просто кого то заинтересует сама метода обработки эвентов и он решит написать свой какой то более интересный скрипт.
Автор: codewarlock1101
Дата сообщения: 19.10.2006 09:34
vladvro
Это решает проблему, но режет функцию ((( Я вижу выходом дописать этот код
#else
.....
, чтобы он под линами тоже cplBuffer заполнял (там с клипбоадром намного проще работается, если мне память не изменяет)
Автор: Grisper
Дата сообщения: 20.10.2006 09:45
Почему-то с новым exe не работает дополнение Ctrl-B в луа (
кроме ехе-шника и dll ничего не менял

подключено так:

# подключаем API для LUA и игры
api.$(file.patterns.lua)=$(SciteDefaultHome)/api/lualib5_annot.api;...
Автор: codewarlock1101
Дата сообщения: 20.10.2006 15:57
Grisper
Ctrl+B - Это для раскрытия аббревиатуры, а ты пишешь как ты подключил АПИ файлы.
Аббревы подключаются что-то вроде:
abbreviations.$(file.patterns.lua)=$(SciteDefaultHome)/abbrev/lua.abbrev

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

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


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