Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Настройка русской версии SciTE под AutoIt

Ответить
Настройки темы
Настройка русской версии SciTE под AutoIt

Пользователь


Сообщения: 55
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Creat0R
Дата: 06-05-2010
Описание: Переименование темы
При установке русской версии компиляции не выполняются скрипты lua по постановке bookmarks. В Консоле пишет ошибку
Код: Выделить весь код
> Lua: error checking global scope for command
Кто-нибудь пытался запустить эту сборку для работы со скриптами?

Отправлено: 20:32, 26-04-2010

 

Новый участник


Сообщения: 19
Благодарности: 4

Профиль | Отправить PM | Цитировать


Вылез еще один необъяснимый глюк.
если набрать
-1
и ткнуть пробел то оно преобразовывается в "eep(1000)". Я так понял это Sleep(1000) с обрезанными первыми 2мя символами. Похожим образом ведут себя -2, -3, -4 и -5.
-6 работает нормально, а -7 раскрывается в целый кусок из au3.abbrev размером со страницу.

Это я уже себе что-то накрутил, или это в сборку глюк забрался?

Отправлено: 18:56, 27-02-2011 | #41



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата Dm666:
Это я уже себе что-то накрутил, или это в сборку глюк забрался? »
Посмотрел, действительно проблема есть. И она заключается в файле: ...\SciTE\tools\AutoIt3.lua. Все дело в этой строке
Код: Выделить весь код
local rep_start = string.find(Abbrevtxt,"\n" .. string.lower(curword) .. "=")
при поиске функция string.find(), как бы не видит символ "-" (впрочем еще и символ "*") если этот символ стоит первым (видимо эти символы интерпретируются по другому).

Предлагаю самое простое решение: в файле ...\SciTE\tools\AutoIt3.lua нужно после строчки
Код: Выделить весь код
curword = editor:textrange(from, to)
вставить такой код
Код: Выделить весь код
local fs=string.sub (curword, 1 , 1)
if fs == "-" or fs == "*" then
	return 
end
смысл которого в том, что если первый символ в слове будет "-" или "*", то аббревиатура для такого искаться не будет - и соответственно ошибки в SciTE не будет. Дальше нужно сохраниться и перезагрузить SciTE.
P.S. Может кто разбирается в lua и предложит другое рабочее решение?

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:26, 27-02-2011 | #42


Новый участник


Сообщения: 19
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата beve:
P.S. Может кто разбирается в lua и предложит другое рабочее решение? »
А зачем нам другое решение? Нас это устраивает, даже более чем!
В очередной раз респект, работает как часы

Отправлено: 22:53, 27-02-2011 | #43


Новый участник


Сообщения: 19
Благодарности: 4

Профиль | Отправить PM | Цитировать


Подниму-ка я эту тему еще раз...

Сборка супер, пользоваться одно удовольствие. Но есть пара моментов:

1. Автодополнение. При правке au3 - файлов не подхватываются названия самописных функций из редактируемого файла. Например имеем код :
Цитата:
For $i=1 To 5
_MySuperCoolBeepFunction()
Next

Func _MySuperCoolBeepFunction()
Beep(100,100)
EndFunc
По идее (так было в Scite4AutoIt, и так будет и в этой сборке, если сменить расширение файла на, например, txt) при написании далее по тексту одного только _My должно всплывать автодополнение на _MySuperCoolBeepFunction(). А этого нет. Странно, ведь для обычных переменных автодополнение работает. Скажем, достаточно набрать $ и сразу появиться вариант дополнить ее до $i.
Подозреваю, что надо править AutoIt.lua, но я в lua нулем... Может будут у кого-нибудь идеи?

2. В Scite4AutoIt был такая удобная фишка, как "перейти к функции" Прописана была так :
#x 18 Jump to Func quickly
command.name.18.$(au3)=Jump to Function Prod
command.mode.18.$(au3)=subsystem:lua,savebefore
command.shortcut.18.$(au3)=Ctrl+J
command.18.$(au3)=InvokeTool AutoItGotoDefinition.GotoDefinition

#x 20 Jump Back to original spot
command.name.20.$(au3)=Jump Back
command.mode.20.$(au3)=subsystem:lua,savebefore
command.shortcut.20.$(au3)=Ctrl+Shift+J
command.20.$(au3)=InvokeTool AutoItGotoDefinition.JumpBack

Было удобно при ручной отладке скрипта. Ползешь себе курсором по тексту, представляешь что там в электронных мозгах происходит. И тут попадается строка вида _MySuperCoolBeepFunction(). Ставишь на нее курсор, жмешь Ctrl+J - и он прыгает на текст этой функции. Посмотрел что она делает, жмешь Ctrl+Shift+J - и курсор прыгает обратно...
Я понимаю, что можно поставить метку, найти функцию в сайд-баре, а потом к метке вернуться, но столько телодвижений... Было удобнее.
Пытался прикрутить этот самый AutoItGotoDefinition к текущей сборке, не выходит. Получаю
> Lua: error checking global scope for command
Уж как только с бубном не плясал - не работает. Без знания Lua никак.
Any ideas?

Отправлено: 19:00, 08-04-2011 | #44


Новый участник


Сообщения: 27
Благодарности: 11

Профиль | Отправить PM | Цитировать


Dm666

В этой сборке делал аналог "Jump to Function Prod" на автоите (исходники присутствуют).
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:45, 08-04-2011 | #45


Новый участник


Сообщения: 19
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата asdf8:
В этой сборке делал аналог "Jump to Function Prod" на автоите (исходники присутствуют). »
Хм. Интересная сборочка, спасибо. Посижу на ней пару дней, посмотрю чего да как. Jump реализован, факт. Будем пользоваться.
А названия самописных функций эта сборка тоже не подхватывает, жаль.

Отправлено: 00:30, 09-04-2011 | #46


Новый участник


Сообщения: 27
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата Dm666:
А названия самописных функций эта сборка тоже не подхватывает, жаль. »
У меня подхватывает, может дело в чем-то другом


Отправлено: 00:47, 09-04-2011 | #47


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата:
У меня подхватывает, может дело в чем-то другом
У тебя тоже не подхватывает, и дело тут не столько в настройках, сколько в другом. Во всех новых версиях SciTe изменен исходный код (по видимому), поэтому это уже "работает" по другому. Попытаюсь объяснить что к чему.
Итак в файле настроек для языка autoit - au3.properties имеется такой параметр: autocomplete.au3.start.characters=.... Что он задает? Если в этом параметре задан какой то символ, то при вводе в SciTe этого символа будет производится поиск слова для автодополнения сейчас только из соответствующего api файла (au3.api) (в предыдущих версиях Scite производился поиск слов начинающихся с этого символа и из api файла и из текущего поля редактора SciTe ).
Чтоб лучше понять, замените параметр autocomplete.au3.start.characters=... этим:
Код: Выделить весь код
# Символы, после ввода которых, возникает список автодополнения
autocomplete.au3.start.characters=ABCDEFGHIJKLMNOPQRSTUVWXYZ@_#
Теперь, если мы будем вводить только заглавные латинские символы, то поиск для автодополнения у нас будет идти в api файле-файлах, но стоит нам ввести прописной символ, как сразу начнется обработка текущего поля редактора (если не будет подсказок из api файла), и если имеются слова-совпадения, нам будет предложен вариант для автодополнения.
Вот такое решение я пока нашел для себя. Но есть еще такое замечание. Нам нужно всегда начинать писать функцию с заглавной буквы, думаю вы поняли почему. Например, нужно написать Msgbox(). Если мы начнем запись буквы M с заглавной, то нам предложиться варианты автодополнения из api файла (вылезет слово Msgbox(), если же из прописной,то варианты будут предложены только из текущего поля редактора (если они есть.). В случаи же "самописной" функции, с какой буквы вы начнете запись, не имеет значения, ибо как только будет написан прописной символ (и не будет подсказок из api файла), будет производится поиск в поле редактора на совпадения...

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:03, 09-04-2011 | #48


Новый участник


Сообщения: 19
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата beve:
Чтоб лучше понять, замените параметр autocomplete.au3.start.characters=... этим:
Код:
# Символы, после ввода которых, возникает список автодополнения
autocomplete.au3.start.characters=ABCDEFGHIJKLMNOPQRSTUVWXYZ@_# »
Работает.
В который раз уже респект тебе и уважуха. Спасибо.

Отправлено: 22:03, 09-04-2011 | #49


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата:
В Scite4AutoIt был такая удобная фишка, как "перейти к функции" Прописана была так :
Цитата:
Было удобно при ручной отладке скрипта. Ползешь себе курсором по тексту, представляешь что там в электронных мозгах происходит. И тут попадается строка вида _MySuperCoolBeepFunction(). Ставишь на нее курсор, жмешь Ctrl+J - и он прыгает на текст этой функции. Посмотрел что она делает, жмешь Ctrl+Shift+J - и курсор прыгает обратно...
Можно сделать и такое.
1.Открываем файл ...\SciTE\tools\AutoIt3.lua
2.В начале файла объявляем переменные, пишем
Код: Выделить весь код
local current_line = 0
local current_pos = 0
local current_word = 0
3.Ищем функцию GotoDefinition() и удаляем ее вместо нее пишем 2 функции:
Код: Выделить весь код
function GotoDefinition()
    local word = _GetWord()
    if word == nil then
        print("No word selected.")
        return
    end
    text = editor:GetText()
    place = string.find(text, "[Ff][Uu][Nn][Cc] " .. word)
    if place then 
        current_line = editor:LineFromPosition(editor.CurrentPos)
        current_word = word
        current_pos = editor.CurrentPos
        editor:GotoLine(editor:LineFromPosition(place)) 
    else
        print("Unable to find function definition.")
    end
end    -- GotoDefinition()

function JumpBack()
    if current_pos ~= 0 then
        local frompos = editor:WordStartPosition(current_pos)   
        local topos = editor:WordEndPosition(current_pos)
        local last_word = editor:textrange(frompos, topos)
        if current_line and last_word == current_word then
            editor:GotoLine(current_line) 
            current_pos = 0
            current_line = 0
        else
            print("Unable to find definition")
            return
        end
    else
        return
    end
end --JumpBack()
4. В файле ...\SciTE\languages\au3.properties прописываем
Код: Выделить весь код
# 15 GotoDefinition (перейти к указанной функции))
extension.*.au3="$(SciteDefaultHome)\tools\AutoIt3.lua"
command.name.15.*.au3=GotoDefinition
command.15.*.au3=GotoDefinition
command.subsystem.15.*.au3=3
command.shortcut.15.*.au3=Ctrl+J
command.save.before.15.*.au3=2

# 16 JumpBack (возвратиться в прежнее место, используется после вызова GotoDefinition)
extension.*.au3="$(SciteDefaultHome)\tools\AutoIt3.lua"
command.name.16.*.au3=JumpBack
command.16.*.au3=JumpBack
command.subsystem.16.*.au3=3
command.shortcut.16.*.au3=Ctrl+Shift+J
command.save.before.16.*.au3=2
если имеются команды под аналогичными (15 и 16) номерами то удаляем, или меняем номера в этих (главное правильно).
5. Сохраняемся. Перезапускаемся. Пользуемся.

P.S. Dm666, кажеться ты меня раньше спрашивал, как изменить шрифт в всплывающих подсказках по синтаксису в SciTe. Тут случайно нашел. В файле ...\SciTE\SciTEGlobal.properties, шрифт меняется сдесь:
Код: Выделить весь код
# Стиль всплывающих подсказок по синтаксису (берутся из API файлов)
style.*.38=font:MS Sans Serif,size:9
может и не ты спрашивал, уже не помню, тогда комуто пригодится...

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Последний раз редактировалось beve, 10-04-2011 в 00:44.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:12, 10-04-2011 | #50



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Настройка русской версии SciTE под AutoIt

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Lua-скрипт для SciTE добавляющий заголовок к функции (UDF) Creat0R AutoIt 5 30-05-2009 16:34




 
Переход