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

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

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


Автор: mozers, Отправлено:18:25 16-10-2006
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

Сейчас пытаюсь повесить на эти эвенты и другие скрипты из сборки...

Написал тебе в ПМ - ответа не дождался - запостил тут.
Автор: mozers, Отправлено:23:31 16-10-2006
Насилу додумался как подключить твой вариант перехвата событий.
Постоянно выдавало:
Код:
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. Почему? Потому что - понятнее. ИМХО конечно...
Автор: vladvro, Отправлено:10:02 17-10-2006
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, Отправлено:00:01 18-10-2006
vladvro
Цитата:
я думаю можно их добавить в список, в функции isMacroableMessage, и переименовать ее на скажем isInterruptableMessage.
Из сказанного понял одно - без тебя не сделаю

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

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

Эт я к тому, что последние пару - тройку страниц, вааще ниче непонятно, эт я про себя говорю..
Автор: vladvro, Отправлено:11:14 18-10-2006
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
Автор: mozers, Отправлено:00:26 19-10-2006
gansA
Цитата:
вааще ниче непонятно
Просто помимо обычных скриптов, стартующих из меню Tools по dofile или dostring, есть возможность заменять события(эвенты) SciTE своими собственными обработчиками.
Такие скрипты в достатке имеются в сборке Ru-Board.
Но если кто то попытается их перенести в свой SciTE, то сделать это будет достаточно мурено.
Вся цель нашего базара с vladvro состоит в том, чтобы сделать этот перенос максимально простым и доступным любому пользователю.
А поскольку мы сами до конца все не знаем, то и беседуем тут, надеясь что в нашу беседу вмешаются более грамотные товарищи. Или просто кого то заинтересует сама метода обработки эвентов и он решит написать свой какой то более интересный скрипт.
Автор: codewarlock1101, Отправлено:10:34 19-10-2006
vladvro
Это решает проблему, но режет функцию ((( Я вижу выходом дописать этот код
#else
.....
, чтобы он под линами тоже cplBuffer заполнял (там с клипбоадром намного проще работается, если мне память не изменяет)
Автор: Grisper, Отправлено:10:45 20-10-2006
Почему-то с новым exe не работает дополнение Ctrl-B в луа (
кроме ехе-шника и dll ничего не менял

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

# подключаем API для LUA и игры
api.$(file.patterns.lua)=$(SciteDefaultHome)/api/lualib5_annot.api;...
Автор: codewarlock1101, Отправлено:16:57 20-10-2006
Grisper
Ctrl+B - Это для раскрытия аббревиатуры, а ты пишешь как ты подключил АПИ файлы.
Аббревы подключаются что-то вроде:
abbreviations.$(file.patterns.lua)=$(SciteDefaultHome)/abbrev/lua.abbrev
Автор: Grisper, Отправлено:17:06 20-10-2006
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

причем в сборке всё ок. дело в конфиге
Автор: mozers, Отправлено:19:03 20-10-2006
Grisper
Цитата:
не работает Ctrl-Shift-R и Ctrl-B
И не будут. Откуда такой экзотический синтаксис? Странно что API работают... (работают ли...)
Надо
Код:
abbreviations.$(file.patterns.lua)=$(SciteDefaultHome)\abbrev\lua.abbrev
естественно файл lua.abbrev должен существовать по указанному пути, а file.patterns.lua быть задан.

Автор: HSolo, Отправлено:19:33 21-10-2006
Представляю всем добавку (правда только в 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

Автор: mozers, Отправлено:01:33 22-10-2006
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

Или тогда придется все переписывать заново?
Автор: HSolo, Отправлено:19:02 22-10-2006
Как обычно бывает после выхода альфа версии сам же вылавливаеш кучу багов.
Здесь я выложил последнюю скомпиленную версию (для тех кто не любит компилять сам): 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
Автор: gansA, Отправлено:10:53 23-10-2006
Привет всем
Прошу потестить, скрипт перемещения как строк, так и выделения в редакторе (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


Автор: pete, Отправлено:14:19 23-10-2006
Спасибо за отличную сборку. Правда есть один вопрос, пользовался Scite 1.68, там когда работаешь с cpp/h при вводе русских символов не в комментариях и не в строковых константах, они серым подсвечивались, а в 1.71 .18Ru черным. Не подскажите как настроить, чтоб снова серыми были.
Автор: mozers, Отправлено:14:48 23-10-2006
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

Автор: mozers, Отправлено:23:37 23-10-2006
pete
Кусок своего кода покажи, выделив то что подсвечивалось. Что то я в первый раз слышу чтобы цвет русских букв отличался от цвета латинских....
Кстати - С первым постом!
Автор: HSolo, Отправлено:06:44 24-10-2006
По поводу положения подменю принимаются любые конструктивные идеи, вернее их реализации . Сейчас все это находится вначале меню из-за того что меню надо сначала создать а потом согласно конфигу решать куда запихнуть функцию. Теоретически их можно расположить как хочешь, но не могу придумать строгого правила такого расположения. С моей точки зрения наиболее логично все-таки располагать их сверху, тогда взгляд железно отличает их от комманд (собственно для чего это и нужно).

Кстати я тут немного доработал организацию меню (до версии 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



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