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

» SciTE - Open Source Text Editor for Windows & Linux

Автор: Grisper
Дата сообщения: 20.10.2006 16:06
codewarlock1101

Код:
abbrev=$(SciteUserHome)\abbrev\abbrev.properties
abbrev.$(file.patterns.lua)=$(SciteDefaultHome)\abbrev\abbrev.lua.properties
abbrev.lua=$(SciteDefaultHome)\abbrev\abbrev.lua.properties
Автор: mozers
Дата сообщения: 20.10.2006 18:03
Grisper
Цитата:
не работает Ctrl-Shift-R и Ctrl-B
И не будут. Откуда такой экзотический синтаксис? Странно что API работают... (работают ли...)
Надо
Код: abbreviations.$(file.patterns.lua)=$(SciteDefaultHome)\abbrev\lua.abbrev
Автор: HSolo
Дата сообщения: 21.10.2006 18:33
Представляю всем добавку (правда только в 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
Дата сообщения: 22.10.2006 00:33
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
Дата сообщения: 22.10.2006 18:02
Как обычно бывает после выхода альфа версии сам же вылавливаеш кучу багов.
Здесь я выложил последнюю скомпиленную версию (для тех кто не любит компилять сам): 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
Дата сообщения: 23.10.2006 09:53
Привет всем
Прошу потестить, скрипт перемещения как строк, так и выделения в редакторе (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
Дата сообщения: 23.10.2006 13:19
Спасибо за отличную сборку. Правда есть один вопрос, пользовался Scite 1.68, там когда работаешь с cpp/h при вводе русских символов не в комментариях и не в строковых константах, они серым подсвечивались, а в 1.71 .18Ru черным. Не подскажите как настроить, чтоб снова серыми были.
Автор: mozers
Дата сообщения: 23.10.2006 13:48
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
Автор: mozers
Дата сообщения: 23.10.2006 22:37
pete
Кусок своего кода покажи, выделив то что подсвечивалось. Что то я в первый раз слышу чтобы цвет русских букв отличался от цвета латинских....
Кстати - С первым постом!
Автор: HSolo
Дата сообщения: 24.10.2006 05:44
По поводу положения подменю принимаются любые конструктивные идеи, вернее их реализации . Сейчас все это находится вначале меню из-за того что меню надо сначала создать а потом согласно конфигу решать куда запихнуть функцию. Теоретически их можно расположить как хочешь, но не могу придумать строгого правила такого расположения. С моей точки зрения наиболее логично все-таки располагать их сверху, тогда взгляд железно отличает их от комманд (собственно для чего это и нужно).

Кстати я тут немного доработал организацию меню (до версии 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
Автор: pete
Дата сообщения: 24.10.2006 08:08
mozers
Спасибо.


Код:
СProgressionNetChecker::CProgressionNetChecker()
{
}пропропрпр
Автор: gansA
Дата сообщения: 24.10.2006 08:32
mozers
Твой скрипт не катит , сравни работу наших скриптов и убедись )))
Перемести 2 и 3 в такой последовательности, 3 последня строка, после неё нет ентера.

Цитата:
1
2
3


Автор: TheUniqueNickname
Дата сообщения: 24.10.2006 15:42
Здравствуйте. Сегодня скачал sciTE, первый раз поюзал. Билд 1.71 русский. Что хочу сказать: подсветка у пхп по-дефолту ужасная. Поэтому обращаюсь к веб-мастерам которые работают на скайте, дайте примеры конфигов и если можно скриншоты как это у вас все выглядит. Лично мне понравилось как все выглядит вот здесь http://scite.ruteam.ru/scite/primery-nastroek-podsvetki-sintaksisa-so-skrinshotami но аффтар сказал что конфиги мне не помогут и вообще "по этому вопросу вам будет лучше обратиться на форум или в справку". Общаться со справкой мне влом, так что обращаюсь к вам. Помогите, а? :)
Автор: mirk
Дата сообщения: 24.10.2006 18:00
TheUniqueNickname
Тугаринов Сергей, это я если что


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

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

Как я понял, вы скачали ruBoard сборку, коли в ней была моя подсветка PHP, если хотите я сегодня ближе к ночи ее установлю, и настрою вам подсветку.
Автор: codewarlock1101
Дата сообщения: 24.10.2006 18:28
HSolo
М-а-л-а-д-ц-а! Спасибо большое.

ВСЕМ
Думаю, так удобнее настраивать

Код:
[User Submenu] Настройки иерархии подменюшек для меню "Tools"
user.menu.name.2.*=Char Case
command.menu.10=2 //Make Selection Uppercase
command.menu.11=2 //Make Selection Lowercase
command.menu.12=2 //Make Selection Invertcase
user.menu.name.3.*=Font
command.menu.6=3 //Magnify text size
command.menu.7=3 //Reduce text size
command.menu.8=3 //Restore text size to normal
command.menu.50=3 //Change Fonts
command.menu.51=3 //dos866 <-> win1251
user.menu.name.4.*=Utils
user.menu.name.1.*=ASCII
user.menu.parent.1=4
command.menu.19=1 //ASCII Table
command.menu.20=1 //ASCII code of selected text
command.menu.17=4 //Spelling
command.menu.18=4 //List of Functions / Procedures
command.menu.32=4 //Calculator
command.menu.34=4 //HEX Editor
command.menu.35=4 //Value of variable SciTE
user.menu.name.5.*=Mscros
command.menu.90=5 //Macro Load From Selection
command.menu.91=5 //Macro Fill To Buffer
command.menu.92=5 //Macro Fill To Buffer (LUA code)
user.menu.name.6.*=Special Paste
command.menu.25=6 //Insert marked (on Ctrl+F2) lines
command.menu.26=6 //Insert DATE TIME
command.menu.27=6 //Insert Filename
command.menu.28=6 //Insert Special Char (©, ®, §, ±,…)
command.menu.29=6 //Selected text (possible in Output Pane) -> In a file
command.menu.30=6 //Choice Color
command.menu.31=6 //Choice Color from a Palette
Автор: TheUniqueNickname
Дата сообщения: 24.10.2006 19:14
mirk
Скажу честно, прямо страшно от такого редактора :) И разбираться времени нет совершенно. Прямо даже не пойму почему нет готовых схем подсветки и горячих клавиш эмулирующих популярные редакторы. Спасибо Сергей что откликнулись, не хочу вас загружать там настройками подсветки своими, если вам будет проще, то пошлите мне целиком редактор каким сами пользуетесь. Глядишь поюзаю, да может и сам разберусь, а может и вообще ниче не понравится. :)
Автор: mirk
Дата сообщения: 24.10.2006 20:55

Цитата:
если вам будет проще, то пошлите мне целиком редактор каким сами пользуетесь.

Ок, счас вышлю.


P.S. На самом деле не так страшен SciTE как его малюют, там все просто... и даже очень, пару часов посидишь, почитаешь хелп... почитаешь статьи мозерса на сайте, и все встанет на свои места.
Автор: mozers
Дата сообщения: 24.10.2006 23:29
HSolo
Цитата:
Собственно вот обновление (если вас еще не достало их качать ), но это скорее всего последнее. Работа дошла до финальной точки.
Разрешаешь добавить в сборку Ru-Board ?

pete
Поглядел. Такое дело имеет место быть в SciTE до версии 1.70.
В 1.71 Нейл что то поменял и этой фичи (о которой он сам вряд ли догадывался - поскольку это, имхо - побочный эффект) не стало. Что именно изменено можно выяснить, сравнив исходники 1.70 и 1.71. Ты, как пишущий на С можешь, я так думаю, сделать это самостоятельно. Заодно и нам расскажешь от какого именно изменения русские буквы перестали отличаться по цвету от латинских и стоило ли так делать

gansA
Цитата:
Твой скрипт не катит
Именно из за этой фигни с последней строкой я, написав этот скрипт уже больше недели назад, все не выкладывал - думал поправлю... ан мозгов не хватило
А с твоим тоже не слишком удобно. Я выделяю строки, нажимая Shift и Down. Чтобы воспользоваться твоим скриптом приходится еще совершать лишние телодвижения, убирая выделение с последнего невидимого символа перевода строки, иначе скрипт тащит еще одну лишнюю строку. В общем - нет идеала...

mirk
Если ты работаешь с PHP и настроил его лучшим образом. Если людям нравится твоя настройка. ТО ПОЧЕМУ ЕЕ НЕТ В СБОРКЕ ???
Автор: mirk
Дата сообщения: 24.10.2006 23:51

Цитата:
Если людям нравится твоя настройка. ТО ПОЧЕМУ ЕЕ НЕТ В СБОРКЕ ???

Блина, mozers:


Цитата:

[07.06.2006] Сборка (ядро 1.69 .07Ru)
Новый html.api и модернизированная подсветка синтаксиса PHP (Автор: Сергей
Тугаринов)

Источник



Твои слова?

P.S. Я сборку давно уже не скачивал, не до этого было... А тут время свободное появилось так что...
Автор: HSolo
Дата сообщения: 25.10.2006 06:36
mozers
Цитата:
Разрешаешь добавить в сборку Ru-Board ?

Собственно для того и выкладывал чтобы все пользовались.
Автор: gansA
Дата сообщения: 25.10.2006 08:42
mozers

Цитата:
А с твоим тоже не слишком удобно. Я выделяю строки, нажимая Shift и Down

Ну тут уж действительно дело вкуса...

Автор: codewarlock1101
Дата сообщения: 25.10.2006 10:50
gansA
mozers
Подправил траблу.

Код:

local sel_start_line = editor:LineFromPosition(editor.SelectionStart)
local sel_end_line = editor:LineFromPosition(editor.SelectionEnd)

if (editor:GetSelText() == "") or (sel_start_line==sel_end_line) then

if d==1 then
editor:LineDown()
editor:LineTranspose()
else
editor:LineTranspose()
editor:LineUp()
end

else

local slend=editor:GetLineSelEndPosition(sel_end_line)
local slend2=editor:GetLineSelEndPosition(sel_end_line-1)

local nap=0
if slend==slend2 then
nap=1
end


if (sel_start_line>0 and d==-1) or (sel_end_line-nap<editor.LineCount-1 and d==1) then
editor:BeginUndoAction()
if d==1 then
-- Down
editor:GotoLine(sel_end_line)
for i = sel_end_line-nap, 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-nap do
editor:LineTranspose()
editor:LineDown()
end
end
local sel_start = editor:PositionFromLine(sel_start_line+d)

nap=math.abs(nap-1)

local sel_end = editor:PositionFromLine(sel_end_line+d+nap)
editor:SetSel(sel_start,sel_end)
editor:EndUndoAction()
end
end
Автор: vladvro
Дата сообщения: 25.10.2006 12:16
codewarlock1101
О-о-о, замечательно, молодец!
то что вертелось в голове, но реализовать не было времени.
а скрипт предложенный gansA затирает буфер обмена, что мне например совсем не подходит.
Автор: gansA
Дата сообщения: 25.10.2006 14:11
codewarlock1101
Скрестил скрипты
Автор: codewarlock1101
Дата сообщения: 25.10.2006 16:28
ВСЕМ
Еще в скрипте следал влево-вправо текст таскать..... опять же, если это востребовано еще кем - положу. (Преимущества перед табом/ шифт-табом - перемещается по одному символу, а не по индент.сайз)
Автор: mozers
Дата сообщения: 25.10.2006 16:40
codewarlock1101
Тоже не могу удержатся И строки как выделяешь - разницы не имеет!!!
Тока я же - вредный Попробуй 1 (только одну!) строчку протащить вниз... Отлично. А теперь - еще ниже
(Не думаю, правда, что это кому то может помешать, так что решать разве что затем, чтоб мозги потренировать...)

Добавлено:
mirk
Раз написано - значит должно быть.
Цитата:
Я сборку давно уже не скачивал
Ты этих слов под пытками говорить не должен
Проверяй - ты же автор!
Автор: codewarlock1101
Дата сообщения: 25.10.2006 17:29
mozers
Не думал что это касяк Исправил...
Заодно и выкладываю "новую версию" (где горизонтально тоже двигать можно)

Код:
local sel_start_line = editor:LineFromPosition(editor.SelectionStart)
local sel_end_line = editor:LineFromPosition(editor.SelectionEnd)
local slend=editor:GetLineSelEndPosition(sel_end_line)
local slend2=editor:GetLineSelEndPosition(sel_end_line-1)
local nap=0
if slend==slend2 then
nap=1
end
if gorizont==1 then
for i = sel_start_line, sel_end_line-nap do
editor.LineIndentation [i]=editor.LineIndentation [i]+-1*d
end
else
if (editor:GetSelText() == "") or (sel_start_line==sel_end_line) then
if d==1 then
if sel_end_line-nap<editor.LineCount-1 then
editor:LineDown()
editor:LineTranspose()
end
else
editor:LineTranspose()
editor:LineUp()
end
else

if (sel_start_line>0 and d==-1) or (sel_end_line-nap<editor.LineCount-1 and d==1) then
editor:BeginUndoAction()
if d==1 then
-- Down
editor:GotoLine(sel_end_line)
for i = sel_end_line-nap, 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-nap do
editor:LineTranspose()
editor:LineDown()
end
end
local sel_start = editor:PositionFromLine(sel_start_line+d)
nap=math.abs(nap-1)
local sel_end = editor:PositionFromLine(sel_end_line+d+nap)
editor:SetSel(sel_start,sel_end)
editor:EndUndoAction()
end
end
end
Автор: mozers
Дата сообщения: 25.10.2006 22:58
codewarlock1101
Цитата:
Не думал что это касяк
А я разве назвал это косяком?
Но поделка получилась - КЛАСС! И работает как часы

gansA
Какие волны разума ты всколыхнул своим скриптом...
Дай ка и я попробую... Может кто модифицирует поинтереснее....

Код: command.name.48.$(file.patterns.html)=• Copy Format
command.48.$(file.patterns.html)=dostring f="get" dofile(props["SciteDefaultHome"].."\\tools\\HTMLFormatPainter.lua")
command.mode.48.$(file.patterns.html)=subsystem:lua,savebefore:no
command.shortcut.48.$(file.patterns.html)=Alt+C

command.name.49.$(file.patterns.html)=• Insert Format
command.49.$(file.patterns.html)=dostring f="ins" dofile(props["SciteDefaultHome"].."\\tools\\HTMLFormatPainter.lua")
command.mode.49.$(file.patterns.html)=subsystem:lua,savebefore:no
command.shortcut.49.$(file.patterns.html)=Alt+P
Автор: HSolo
Дата сообщения: 26.10.2006 07:37
Мне по работе приходится часто считать, а калькулятор терпеть не могу.
Переработал (под себя) скрипт exec.lua, возможно кому пригодится

Вот текст:
------------------------------------------------------------------------------------------------------
local str = props['CurrentSelection']
if (str == '') then
str = editor:GetSelText()
end
if (str == '') then
str = editor:GetCurLine()
end

if (string.len(str) > 2) then
if string.find(str,'http://(.*)') then
local browser = ('explorer ' .. str .. ' &')
os.execute(browser)
else
if string.find(str, "(math\.%w+)") then --~ В случае сложных математических выражений форматирование оставляем на пользователя
str = string.gsub(str,"[=]",'')
else
str = string.gsub(str,"[^%d\n\*\+\/\.\(\)\-]",'') --~ Иначе ... удаляем все не числа, т.е. то что может помешать пересчету
end

str = string.gsub(str,"[\n%s]",'+') --~ Замена перевода строки на знак прибавить
str = string.gsub(str,"([\+\*\/\-])([\+\*\/\-]+)",'%1') --~ Удаляем сдвоенные знаки
str = string.gsub(str,"^[\+\*\/\-]+",'') --~ Удаляем знаки в начале и конце
str = string.gsub(str,"[\+\*\/\-]+$",'')

str = string.gsub(str,"([\+\*\/\-]+)",' %1 ') --~ Разделяем группы пробелами

print('\n> Расчитываем выражение: '..str)
local res = assert(loadstring('return '..str),str)()
editor:CharRight()
editor:LineEnd()
editor:AddText('\n= '..res)
print('> Результат: '..res)
end
end
------------------------------------------------------------------------------------------------------
Автор: gansA
Дата сообщения: 26.10.2006 08:22
Во поперли     

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

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


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