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

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

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

Widok (09-10-2007 14:48): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

mozers



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

Код:
-- Автодополнение объектов их методами и свойствами
-- Точка после имени объекта вызывает список его методов/свойств (берутся из соответствующего api файла)
-- Пробел, скобка или точка изменяют регистр символов в имени объекта в соответствии с записью в api файле
-- (например "ucase" при вводе автоматически заменяется на "UCase")
-- mozers™ icq#256106175
-- version 0.8
 
function AutocompleteObject(char)
    if not (char == "." or char == ":" or char == " " or char == "(") then
        return false
    end
 
    -- get api file (not use pattern in prop!
    local api_filename = props['api.*.'..props['FileExt']]
    local api_file = io.open(api_filename)
    if not api_file then
        return false
    end
 
    -- get object name
    local object = GetWordLeft()
    local len_obj = string.len(object)
    if len_obj == 0 then
        return false
    end
 
    -- find methods and properties object's in api file (create UserList)
    local object_api = ''
    local user_list = {}
    for line in api_file:lines() do
        local api_object = string.sub(line,1,len_obj+1)
        if string.upper(api_object) == string.upper(object)..char then
            object_api = string.sub(api_object,1,len_obj)
            if not (char == " " or char == "(") then
                local str_method = string.sub(line,len_obj+2)
                local end_str = string.find(str_method,'[^a-zA-Z]')
                if end_str ~= nil then
                    str_method = string.sub(str_method, 1, end_str-1)
                end
                table.insert (user_list,str_method)
            end
        end
    end
    api_file:close()
 
    -- correct register of symbols (sample: wscript -> WScript)
    if object_api ~= '' then
        local s = pos - 1 - len_obj
        editor:SetSel(s, pos - 1)
        editor:ReplaceSel(object_api)
        editor:CharRight()
    end  
 
    -- show UserList
    local list_count = table.getn(user_list)
    if list_count > 0 then
        table.sort(user_list)
        local s = table.concat(user_list, " ")
        editor:UserListShow(10, s)
        return true
    else
        return false
    end
end
 
function GetWordLeft()
    pos = editor.CurrentPos
    editor:CharLeft()
    editor:WordLeftExtend()
    local sel_text = editor:GetSelText()
    editor:CharRight()
    editor:CharRight()
    sel_text = string.gsub(sel_text, ".*[.:]", '')
    return sel_text
end
 
function InsertProp(tp,sel_value)
    if tp == 10 then
        local pos_new = editor.CurrentPos
        if pos_new ~= pos then
            editor:SetSel(pos, pos_new)
            editor:DeleteBack()
        end
        editor:InsertText(-1, sel_value)
        pos = pos + string.len(sel_value)
        editor.CurrentPos = pos
        editor:CharRight()
        return true
    else
        return false
    end
end
 
-- ======================================================
-- Стандартные события SciTE, обработку которых выполняют расположенные выше скрипты  
 
function OnChar(charAdded)
    local ret = AutocompleteObject(charAdded)
    return ret
end
 
function OnUserListSelection(tp,sel_value)
    InsertProp(tp,sel_value)
end
 

Для обеспечения работоспособности надо добавить в соответствующие .properties строку типа:
Код:
api.*.vbs=$(SciteDefaultHome)\api\vbscript.api
 

Паттерны скрипт не понимает поэтому для каждого расширения надо создавать отдельную строку:
Код:
api.*.js=$(SciteDefaultHome)\api\jscript.api
api.*.lua=$(SciteDefaultHome)\api\lualib5_annot_scite.api

Естественно, соответствующие api файлы должны у вас быть (если нет - скачайте нашу сборку).
Ну а теперь создайте пустой файл test.vbs и поробуйте написать в нем что нибудь типа:
Код:
wscript.arguments.count
Ну как - понравилось?
Кстати, и прежний способ автодополнения (по Ctrl+Enter) так же работает

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 23:08 01-07-2006 | Исправлено: mozers, 21:35 09-07-2006
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум 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