Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » SciTE - Open Source Text Editor for Windows & Linux

Модерирует : gyra, Maz

Widok (09-10-2007 14:48): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Spab



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

A free source code editor for Win32 and X
Русскоязычный форум поддержки

  • Один из самых настраиваемых текстовых редакторов из ныне существующих. Настраивается практически все.
  • Индивидуальная подсветка для разных языков програмирования, фолдинг для классов, функций и структур, авто-дополнение, и т.д. и т.п. ...
     
  • Scite-interest -- Discussion of the SciTE editor
  • Русский сайт SciTE (документация, FAQ, снимки экрана, утилиты, скрипты и т.д. и т.п....)
  • Мечта кодера. статья
  • Burgaud.com - US.SciTE
  • SciTE: Scintilla Text Editor with Extensions
  • Filerx, SideWinder
  • ......
     
       
  • Project file releases
  • Project summary (including basic statistics)
  • Новости со SciTE.ru
     
    Последняя версия редактора - SciTE 1.74
     
    SciTE 1.74 .52Ru-Board Edition [Сборка 20.09.2007]
    Oписание: сборки ядра  
     
    Дружественная тема: Доработка исходного кода и компилирование сборки Ru-Board Edition
     
    Нерешенные задачи и вопросы ( Для умных и талантливых форумчан )
     
    P.S. Если вы используете SciTE для своих нужд, таких как: написание HTML, CSS, Java Script, PHP и др. кода для сайта, или просто вам нравится этот редактор, поставьте пожалуйста ссылку или баннер на сайт - http://scite.ruteam.ru, благодаря этому у сайта повышается индекс цитирования, соответственно увеличивается количество пользователей редактора.

  • Всего записей: 64 | Зарегистр. 02-09-2001 | Отправлено: 03:05 04-06-2002 | Исправлено: mozers, 13:45 04-10-2007
    mozers



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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

    Не понял зачем вообще нужно OnMenuCommand когда есть OnSendEditor ?
     
    Пытался повесить собственный обработчик на ZoomIn и ZoomOut - жестоко обломался
    Эти события не ловят ни OnMenuCommand ни OnSendEditor
     
    Сейчас пытаюсь повесить на эти эвенты и другие скрипты из сборки...
     
    Написал тебе в ПМ - ответа не дождался - запостил тут.

    Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 18:25 16-10-2006
    mozers



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Насилу додумался как подключить твой вариант перехвата событий.
    Постоянно выдавало:
    Код:
    stack overflow
     
    Оказалось, опущена существенная мелочь - local :
    SciTEStartup.lua
    Код:
    require (props["SciteDefaultHome"].."\\test\\my_OnChar1.lua")
    require (props["SciteDefaultHome"].."\\test\\my_OnChar2.lua")
     
     
    my_OnChar1.lua
    Код:
    function test1(char)
        print("my_OnChar1: "..char)
    end
     
    -- Добавляем свой обработчик события OnChar(char)
    local old_OnChar = OnChar
    function OnChar(char)
        -- вызов исходного обработчика если он был
        if old_OnChar then old_OnChar(char) end
        test1(char)
    end

    my_OnChar2.lua
    Код:
    function test2(char)
        print("my_OnChar2: "..char)
    end
     
    -- Добавляем свой обработчик события OnChar(char)
    local old_OnChar = OnChar
    function OnChar(char)
        -- вызов исходного обработчика если он был  
        if old_OnChar then old_OnChar(char) end
        test2(char)
    end
     

     
    Добавлено:
    А вот то, что обработчик, дублируется столько раз, сколько был запущен скрипт - факт (теперь уже проверенный). Для теста можно, к примеру, загрузить скрипт my_OnChar1.lua не из SciTEStartup.lua, а из меню:
    Код:
    command.name.58.*=my_OnChar
    command.58.*=dofile $(SciteDefaultHome)\test\my_OnChar1.lua
    command.mode.58.*=subsystem:lua,savebefore:no
     
    Чем большее количество раз выполнить такую команду - тем больше строк будет рождать событие OnChar, поскольку функция test1 будет выполнятся многократно.  
    И если уж никак не придумывается способ как избежать многократной загрузки, то может быть можно как то принудительно удалять ненужный обработчик?
     
    А вообще, при всех его недостатках, мне способ vladvro нравится больше, чем вырезанный из extman.lua. Почему? Потому что - понятнее. ИМХО конечно...

    Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 23:31 16-10-2006 | Исправлено: mozers, 23:54 16-10-2006
    vladvro



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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

    Всего записей: 281 | Зарегистр. 05-04-2006 | Отправлено: 10:02 17-10-2006 | Исправлено: vladvro, 10:42 17-10-2006
    mozers



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vladvro
    Цитата:
    я думаю можно их добавить в список, в функции isMacroableMessage, и переименовать ее на скажем isInterruptableMessage.
    Из сказанного понял одно - без тебя не сделаю

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

    Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 00:01 18-10-2006
    gansA

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mozers и vladvro
     
    Ребят я все понимаю, но не увлеклись ли вы уж слишком сильно. Как бы это не переросло в проект ради проекта.
     
    Эт я к тому, что последние пару - тройку страниц, вааще ниче непонятно, эт я про себя говорю..

    Всего записей: 51 | Зарегистр. 07-12-2004 | Отправлено: 09:50 18-10-2006
    vladvro



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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*

    c GUID не очень понятно - тоже вырезать его или просто доопределить?
    я не в курсе, есть ли под линуксом функция CoCreateGuid

    Всего записей: 281 | Зарегистр. 05-04-2006 | Отправлено: 11:14 18-10-2006
    mozers



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gansA
    Цитата:
    вааще ниче непонятно
    Просто помимо обычных скриптов, стартующих из меню Tools по dofile или dostring, есть возможность заменять события(эвенты) SciTE своими собственными обработчиками.
    Такие скрипты в достатке имеются в сборке Ru-Board.
    Но если кто то попытается их перенести в свой SciTE, то сделать это будет достаточно мурено.
    Вся цель нашего базара с vladvro состоит в том, чтобы сделать этот перенос максимально простым и доступным любому пользователю.
    А поскольку мы сами до конца все не знаем, то и беседуем тут, надеясь что в нашу беседу вмешаются более грамотные товарищи. Или просто кого то заинтересует сама метода обработки эвентов и он решит написать свой какой то более интересный скрипт.

    Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 00:26 19-10-2006
    codewarlock1101



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vladvro
    Это решает проблему, но режет функцию ((( Я вижу выходом дописать этот код  
    #else
    .....
    , чтобы он под линами тоже cplBuffer заполнял (там с клипбоадром намного проще работается, если мне память не изменяет)

    Всего записей: 92 | Зарегистр. 12-03-2005 | Отправлено: 10:34 19-10-2006
    Grisper

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Почему-то с новым exe не работает дополнение Ctrl-B в луа (
    кроме ехе-шника и dll ничего не менял
     
    подключено так:
     
    # подключаем API для LUA и игры
    api.$(file.patterns.lua)=$(SciteDefaultHome)/api/lualib5_annot.api;...

    Всего записей: 52 | Зарегистр. 21-01-2006 | Отправлено: 10:45 20-10-2006 | Исправлено: Grisper, 17:07 20-10-2006
    codewarlock1101



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grisper
    Ctrl+B - Это для раскрытия аббревиатуры, а ты пишешь как ты подключил АПИ файлы.
    Аббревы подключаются что-то вроде:
    abbreviations.$(file.patterns.lua)=$(SciteDefaultHome)/abbrev/lua.abbrev

    Всего записей: 92 | Зарегистр. 12-03-2005 | Отправлено: 16:57 20-10-2006
    Grisper

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    codewarlock1101

    Код:
     
    abbrev=$(SciteUserHome)\abbrev\abbrev.properties
    abbrev.$(file.patterns.lua)=$(SciteDefaultHome)\abbrev\abbrev.lua.properties
    abbrev.lua=$(SciteDefaultHome)\abbrev\abbrev.lua.properties
     

    не оттуда скопировал...
    api работают. не работает Ctrl-Shift-R и Ctrl-B
     
    причем в сборке всё ок. дело в конфиге

    Всего записей: 52 | Зарегистр. 21-01-2006 | Отправлено: 17:06 20-10-2006 | Исправлено: Grisper, 17:13 20-10-2006
    mozers



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grisper
    Цитата:
    не работает Ctrl-Shift-R и Ctrl-B
    И не будут. Откуда такой экзотический синтаксис? Странно что API работают... (работают ли...)
    Надо
    Код:
    abbreviations.$(file.patterns.lua)=$(SciteDefaultHome)\abbrev\lua.abbrev
    естественно файл lua.abbrev должен существовать по указанному пути, а file.patterns.lua быть задан.

    Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 19:03 20-10-2006
    HSolo



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Представляю всем добавку (правда только в WIN версию) которая позволяет настраивать иерархию в меню Tools. Лично мне это очень надо (и я был просто крайне удивлен что такую простую добавку так долго не сделали). Надеюсь что она приживется и войдет в официальную версию SciTE.
    Кстати на форум я выложить ничего не могу, поэтому залил на rapidshare.com
    Вот ссылка: http://rapidshare.com/files/136919/WSciTE.rar.html    
     
    Regards HSolo.
     
    Как пользоваться:
    В файле SciTEGlobal.properties (или например в locale.properties) делаем что либо подобное  
    в соответствии со вкусами и требованиями (я еще не проработал как мне удобно, поэтому пока только пример):
     
    [User Submenu]       Настройки иерархии подменюшек для меню "Tools"
    # ----------------------------------------------
    user.menu.name.1.*=Работа с текстом
    user.menu.name.2.*=ASCII
    user.menu.parent.2=1
    user.menu.name.3.*=Полезные утилитки
    # ----------------------------------------------
     
    Это означает что подменю Работа с текстом имеет номер 1, подменю ASCII - 2 и вложено в подменю 1 и т.д.
     
    Далее добавляем строки формата command.menu.x.y для тех инструментов x которые желаете разместить в меню y
    Если ничего не добавлять то поведение меню останется без изменений, итак например:
     
    [Tools Menu]         Пользовательские команды меню "Tools"
    # ----------------------------------------------
    command.menu.10=1
    command.name.10.*=Make Selection Uppercase
    command.10.*=dostring case="U" dofile(props["SciteDefaultHome"].."\\tools\\ChangeCase.lua")
    command.mode.10.*=subsystem:lua,savebefore:no
    command.shortcut.10.*=Ctrl+Shift+U
     
    command.menu.11=2
    command.name.11.*=Make Selection Lowercase
    command.11.*=dostring case="L" dofile(props["SciteDefaultHome"].."\\tools\\ChangeCase.lua")
    command.mode.11.*=subsystem:lua,savebefore:no
    command.shortcut.11.*=Ctrl+U
     
    command.menu.12=3
    command.name.12.*=Make Selection Invertcase
    command.12.*=dostring case="I" dofile(props["SciteDefaultHome"].."\\tools\\ChangeCase.lua")
    command.mode.12.*=subsystem:lua,savebefore:no
    # ----------------------------------------------
     
    Чтобы все это работало были внесены изменения в 3 файла:
    PlatWin.cxx
    SciTEWinBar.cxx
    SciTEBuffers.cxx
     
    По поводу оформления претензий не принимаю, т.к. это только рабочий образец и если его сделать по уму то надо внести в соответствующие классы (которые я пока трогать не стал) ну и для PLAT_GTK надо написать что-либо подобное (к сожалению тут помочь не могу).
    Измененные файлы и скомпилированный рабочий модуль прилагаются, сами изменения смотрите в папке DiFF.
     
    Добавлено:
    Кстати совсем забыл, чтобы в подменю действовали keycode's
    надо например создать копию функции void SciTEWin::SetMenuItem(int menuNumber, int position, ...
    т.е. в файл SciTEWinBar.cxx надо добавить что то типа
     
    //~ Добавлено HSolo
    void SciTEWin::AppendMenuItem(HMENU hmenu, int itemID,
                               const char *text, const char *mnemonic) {
        SString sTextMnemonic = text;
        long keycode;
        if (mnemonic && *mnemonic) {
            keycode = SciTEKeys::ParseKeyCode(mnemonic);
            if (keycode) {
                sTextMnemonic += "\t";
                sTextMnemonic += LocaliseAccelerator(mnemonic, itemID);
            }
            // the keycode could be used to make a custom accelerator table
            // but for now, the menu's item data is used instead for command
            // tools, and for other menu entries it is just discarded.
        } else {
            keycode = 0; //I don't think this is needed in ANSI C++.
        }
     
        if (::GetMenuState(hmenu, itemID, MF_BYCOMMAND) == 0xffffffff) {
            if (text[0])
                ::AppendMenu(hmenu, MF_STRING, itemID, sTextMnemonic.c_str());
            else
                ::AppendMenu(hmenu, MF_STRING | MF_SEPARATOR, itemID, sTextMnemonic.c_str());
        }
        
        if (itemID >= IDM_TOOLS && itemID < IDM_TOOLS + toolMax) {
            // Stow the keycode for later retrieval.
            // Do this even if 0, in case the menu already existed (e.g. ModifyMenu)
            MENUITEMINFO mii;
            mii.cbSize = sizeof(MENUITEMINFO);
            mii.fMask = MIIM_DATA;
            mii.dwItemData = reinterpret_cast<DWORD&>(keycode);
            ::SetMenuItemInfo(hmenu, itemID, FALSE, &mii);
        }
    }
     
    Ну и естественно (не хотел этого делать но пришлось) прописать ее в классах SciTEBase.h и SciTEWin.h, т.е добавить строчки:
        virtual void AppendMenuItem(HMENU hmenu, int itemID,
                                 const char *text, const char *mnemonic = 0) = 0;
     
    И последнее в SciTEBuffers.cxx меняем блок:
     
                //~ HSolo ~ start
                // Ну и наконец-то добавляем команды в указанные "command.menu." меню (по умолчанию как раньше)
                prefix = "command.menu.";
                prefix += SString(item);
                int toMenu = props.GetInt(prefix.c_str());
                if(toMenu && toMenu < toolMax && UMenu[toMenu].hMenu) {
                    SString localised = LocaliseString(sMenuItem.c_str());
                    
                    //~ HSolo ~ new
                    AppendMenuItem(UMenu[toMenu].hMenu, itemID, localised.c_str(), sMnemonic[0] ? sMnemonic.c_str() : NULL);
                }
                else {
                    //*mozers*/-start
                    // SetMenuItem(menuTools, menuPos, itemID, sMenuItem.c_str(), sMnemonic[0] ? sMnemonic.c_str() : NULL);
                    SetMenuItemLocalised(menuTools, menuPos, itemID, sMenuItem.c_str(), sMnemonic[0] ? sMnemonic.c_str() : NULL);
                    //*mozers*/-end
                    menuPos++;
                }
                //~ HSolo ~ end

    Всего записей: 13 | Зарегистр. 13-04-2006 | Отправлено: 19:33 21-10-2006
    mozers



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HSolo
    КЛАСС    
    Свершилось то, о чем давно мечталось
    И создание подменю, на мой взгляд, достаточно логично и не рушит общую картину.
     
    Я так понял что подменю создаются всегда в начале меню Tools. А если заголовки подменю создавать не с помощью user.menu.name, а обычным образом (command.name), то может тогда их можно будет разместить в произвольном месте? Ну, в общем, что то типа:
    Код:
    command.name.17.*=Работа с текстом
     
      command.name.18.*=ASCII
      command.parent.18=17
     
      command.parent.19=18
      command.name.19.*=ASCII Table
      command.19.*=dofile $(SciteDefaultHome)\tools\ASCIITable.lua
      command.mode.19.*=subsystem:lua,savebefore:no
     
      command.parent.20=18
      command.name.20.*=ASCII code of selected text
      command.20.*=dofile $(SciteDefaultHome)\tools\ascii.lua
      command.mode.20.*=subsystem:lua,savebefore:no
     
    command.parent.21=17
    command.name.21.*=Make Selection Uppercase
    command.21.*=dostring case="U" dofile(props["SciteDefaultHome"].."\\tools\\ChangeCase.lua")
    command.mode.21.*=subsystem:lua,savebefore:no
    command.shortcut.21.*=Ctrl+Shift+U
     
    command.parent.22=17
    command.name.22.*=Make Selection Lowercase
    command.22.*=dostring case="L" dofile(props["SciteDefaultHome"].."\\tools\\ChangeCase.lua")
    command.mode.22.*=subsystem:lua,savebefore:no
    command.shortcut.22.*=Ctrl+U
     
    command.parent.23=17
    command.name.23.*=Make Selection Invertcase
    command.23.*=dostring case="I" dofile(props["SciteDefaultHome"].."\\tools\\ChangeCase.lua")
    command.mode.23.*=subsystem:lua,savebefore:no
     
    Или тогда придется все переписывать заново?

    Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 01:33 22-10-2006
    HSolo



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как обычно бывает после выхода альфа версии сам же вылавливаеш кучу багов.
    Здесь я выложил последнюю скомпиленную версию (для тех кто не любит компилять сам): http://rapidshare.com/files/249534/WSciTE.rar.html
    А здесь лежат файлы с изменениями: http://rapidshare.com/files/249093/Changes.rar.html    
    --
    Старую ссылку : http://rapidshare.com/files/136919/WSciTE.rar.html удалил.
     
    К сожалению как писал mozers сделать не получится иначе пришлось бы каждый раз писать что то типа
    command.menu.10=ASCII
    command.menu.45=ASCII
    и т.п. что в корне неверно и к тому же было бы трудно реализуемо
     
    В общем кто хочет меню, должен описать его структуру.
    Т.к. меню создаются в порядке их номеров (id), то если написать так
    user.menu.name.1.*=Меню 1
    user.menu.parent.1=2
    user.menu.name.2.*=Меню 2
    то в результате меню 1 и меню 2 будут не вложенными как вы бы ожидали
    вместо этого пишите:
    user.menu.name.1.*=Меню 2
    user.menu.name.2.*=Меню 1
    user.menu.parent.2=1
     
    В последней добавке сделал проверку на существование меню,  
    если его не существует вывод будет вестись в корень (меню Tools)
     
    Regards. HSolo

    Всего записей: 13 | Зарегистр. 13-04-2006 | Отправлено: 19:02 22-10-2006
    gansA

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет всем
    Прошу потестить, скрипт перемещения как строк, так и выделения в редакторе (up/down). Салют неутомимому mozers-су
     
    SciTEGlobal.properties

    Цитата:
     
    command.name.5.*=Line||Selection up
    command.5.*=dostring cmd='up' dofile(props["SciteDefaultHome"].."\\lua\\move.lua")
    command.mode.5.*=subsystem:lua,savebefore:no
    command.shortcut.5.*=Ctrl+Up
     
    command.name.6.*=Line||Selection down
    command.6.*=dostring cmd='down' dofile(props["SciteDefaultHome"].."\\lua\\move.lua")
    command.mode.6.*=subsystem:lua,savebefore:no
    command.shortcut.6.*=Ctrl+Down
     

     
    Собсно сам скрипт

    Цитата:
     
    --//============================================================================
    --// v-000 [23.10.06 09:12:49] C:\Program Files\Far\wscite\lua\move.lua
    --// скрипт для перемещения строки или выделеного блока по тексту
    --//============================================================================
    local sel_start_line = editor:LineFromPosition(editor.SelectionStart)
    local sel_end_line = editor:LineFromPosition(editor.SelectionEnd)
     
    if (sel_start_line==sel_end_line) then
        if cmd=='up' then
            editor:LineTranspose();
            editor:LineUp();
        else
            editor:LineDown();
            editor:LineTranspose();
        end
    else
        local nLine=0
        local sel_start=editor:PositionFromLine(sel_start_line)
        local sel_end=editor:PositionFromLine(sel_end_line)
     
        if cmd=='up' then
            if sel_end_line==editor.LineCount-1 then
                nLine=1
                editor:AppendText('\n')
                editor:SetSel(sel_start,sel_end)
            end
     
            editor:LineCut()
            editor:LineUp()
            editor:Paste()
     
            sel_start=editor:PositionFromLine(sel_start_line-1)
            sel_end=editor:PositionFromLine(sel_end_line-1)
            sel_end=sel_end+editor:LineLength(sel_end_line-1)-2
        else
            if sel_end_line==editor.LineCount-2 then
                nLine=1
                editor:AppendText('\n')
                editor:SetSel(sel_start,sel_end)
            end
     
            editor:LineCut()
            editor:LineDown()
            editor:Paste()
     
            sel_start=editor:PositionFromLine(sel_start_line+1)
            sel_end=editor:PositionFromLine(sel_end_line+1)
            sel_end=sel_end+editor:LineLength(sel_end_line+1)-2
        end
     
        if nLine~=0 then
            editor:DeleteBack(editor:DocumentEnd())
        end
     
        editor:SetSel(sel_start,sel_end)
    end
     


    Всего записей: 51 | Зарегистр. 07-12-2004 | Отправлено: 10:53 23-10-2006
    pete

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо за отличную сборку. Правда есть один вопрос, пользовался Scite 1.68, там когда работаешь с cpp/h при вводе русских символов не в комментариях и не в строковых константах, они серым подсвечивались, а в 1.71 .18Ru черным. Не подскажите как настроить, чтоб снова серыми были.

    Всего записей: 7 | Зарегистр. 20-01-2006 | Отправлено: 14:19 23-10-2006
    mozers



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    HSolo
    Подменю никак нельзя перенести? Они всегда будут только в начале меню Tools?
    Качаю новую версию.....
    mirk сделай HSolo аккаунт на scite.ruteam.ru! - пусть там выкладывает свои произведения
     
    gansA
    Ты меня опередил
    LinesUpDown.lua
    Код:
    if editor:GetSelText() == "" then
        local cur_line = editor:LineFromPosition(editor.CurrentPos)
        local pos_start_cur_line = editor:PositionFromLine(cur_line)
        local pos_end_cur_line = editor:PositionFromLine(cur_line + 1)
        editor:SetSel(pos_start_cur_line, pos_end_cur_line)
    end
     
    local sel_start_line = editor:LineFromPosition(editor.SelectionStart)
    local sel_end_line = editor:LineFromPosition(editor.SelectionEnd)
     
    if (sel_start_line>0 and d==-1) or (sel_end_line<editor.LineCount and d==1) then
        editor:BeginUndoAction()
        if d==1 then
        -- Down
            editor:GotoLine(sel_end_line)
            for i = sel_end_line-1, sel_start_line, -1 do
                editor:LineTranspose()
                editor:LineUp()
            end
        else
        -- Up
            editor:GotoLine(sel_start_line)
            for i = sel_start_line, sel_end_line-1 do
                editor:LineTranspose()
                editor:LineDown()
            end
        end
     
        local sel_start = editor:PositionFromLine(sel_start_line+d)
        local sel_end = editor:PositionFromLine(sel_end_line+d)
        editor:SetSel(sel_start,sel_end)
        editor:EndUndoAction()
    end
     

    Код:
    command.name.23.*=• Lines -> upwards
    command.23.*=dostring d=-1 dofile(props["SciteDefaultHome"].."\\tools\\LinesUpDown.lua")
    command.mode.23.*=subsystem:lua,savebefore:no
    command.shortcut.23.*=Alt+Up
     
    command.name.24.*=• Lines -> downwards
    command.24.*=dostring d=1 dofile(props["SciteDefaultHome"].."\\tools\\LinesUpDown.lua")
    command.mode.24.*=subsystem:lua,savebefore:no
    command.shortcut.24.*=Alt+Down
     

    Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 14:48 23-10-2006
    mozers



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    pete
    Кусок своего кода покажи, выделив то что подсвечивалось. Что то я в первый раз слышу чтобы цвет русских букв отличался от цвета латинских....
    Кстати - С первым постом!

    Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 23:37 23-10-2006
    HSolo



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    По поводу положения подменю принимаются любые конструктивные идеи, вернее их реализации . Сейчас все это находится вначале меню из-за того что меню надо сначала создать а потом согласно конфигу решать куда запихнуть функцию. Теоретически их можно расположить как хочешь, но не могу придумать строгого правила такого расположения. С моей точки зрения наиболее логично все-таки располагать их сверху, тогда взгляд железно отличает их от комманд (собственно для чего это и нужно).
     
    Кстати я тут немного доработал организацию меню (до версии RC1). Теперь возможно создавать любые меню в любом конфиге и с любой последовательностью вложенности без разницы в каком месте они описаны, кроме того проверяется на цикличность,
    т.е. если написать так:
    user.menu.name.1.*=Меню 1  
    user.menu.parent.1=2  
    user.menu.name.2.*=Меню 2
    user.menu.parent.2=1
     
    то Меню 1 поместится в Меню 2, но будет игнорирована попытка поместить Меню 2 в Меню 1.
     
    Собственно вот обновление (если вас еще не достало их качать ), но это скорее всего последнее. Работа дошла до финальной точки.
    http://rapidshare.com/files/440158/WSciTE.rar.html

    Всего записей: 13 | Зарегистр. 13-04-2006 | Отправлено: 06:44 24-10-2006
       

    Страницы: 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

    Компьютерный форум Ru.Board » Компьютеры » Программы » SciTE - Open Source Text Editor for Windows & Linux
    Widok (09-10-2007 14:48): лимит страниц. продолжаем здесь


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru