PDA

Показать полную графическую версию : Настройка русской версии SciTE под AutoIt


Страниц : 1 2 [3]

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

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

beve
27-02-2011, 22:26
Это я уже себе что-то накрутил, или это в сборку глюк забрался? »

Посмотрел, действительно проблема есть. И она заключается в файле: ...\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 и предложит другое рабочее решение?

Dm666
27-02-2011, 22:53
P.S. Может кто разбирается в lua и предложит другое рабочее решение? »

А зачем нам другое решение? Нас это устраивает, даже более чем!
В очередной раз респект, работает как часы :up:

Dm666
08-04-2011, 19:00
Подниму-ка я эту тему еще раз... :flag:

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

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:yes
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:yes
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?

asdf8
08-04-2011, 19:45
Dm666

В этой (http://autoit-script.ru/index.php?topic=3602.msg34216#msg34216) сборке делал аналог "Jump to Function Prod" на автоите (исходники присутствуют).

Dm666
09-04-2011, 00:30
В этой сборке делал аналог "Jump to Function Prod" на автоите (исходники присутствуют). »

Хм. Интересная сборочка, спасибо. Посижу на ней пару дней, посмотрю чего да как. Jump реализован, факт. Будем пользоваться.
А названия самописных функций эта сборка тоже не подхватывает, жаль.

asdf8
09-04-2011, 00:47
А названия самописных функций эта сборка тоже не подхватывает, жаль. »

У меня подхватывает, может дело в чем-то другом

http://s58.radikal.ru/i162/1104/3d/8770277a5aba.png

beve
09-04-2011, 15:03
У меня подхватывает, может дело в чем-то другом
У тебя тоже не подхватывает, и дело тут не столько в настройках, сколько в другом. Во всех новых версиях 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 файла), будет производится поиск в поле редактора на совпадения...

Dm666
09-04-2011, 22:03
Чтоб лучше понять, замените параметр autocomplete.au3.start.characters=... этим:
Код:
# Символы, после ввода которых, возникает список автодополнения
autocomplete.au3.start.characters=ABCDEFGHIJKLMNOPQRSTUVWXYZ@_# »

Работает.
В который раз уже респект тебе и уважуха. Спасибо. :Beer:

beve
10-04-2011, 00:12
В 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
может и не ты спрашивал, уже не помню, тогда комуто пригодится...

Dm666
10-04-2011, 14:18
Можно сделать и такое.
1.Открываем файл ...\SciTE\tools\AutoIt3.lua ...
»
Ну вот. Оно самое! :rupor:
Я уже говорил "спасибо", да? В таком случае повторюсь. :) Спасибо!
А говорил, что с Lua не дружишь... :smirk:

P.S. Dm666, кажеться ты меня раньше спрашивал, как изменить шрифт в всплывающих подсказках по синтаксису в SciTe. »
Ага, было дело. Но я это в конце концов сам нашел. Но кому-нибудь, безусловно, сэкономит время.

Dm666
01-05-2011, 14:46
Дорабатывая одно - ломаем другое... :unsure:
Перестала работать фича "Сохранить аббревиатуру". Ругается на > Lua: error checking global scope for command

Я так понимаю, поломалось после правки функции GotoDefinition() из предыдущего поста. Как бы починить?

beve
01-05-2011, 16:12
Дорабатывая одно - ломаем другое... »
Скорее учимся..., так сказать вникаем в работу SciTE.
Я так понимаю, поломалось после правки функции GotoDefinition() из предыдущего поста. Как бы починить? »
Не, там все впорядке, переменные имеют уникальные имена - конфликтов быть не должно. Тут дело скорее в файле ...SciTE\languages\au3.properties и каких то ограничениях SciTE по длинне обрабатываемых даннных, или че то того.
Посмотрел у себя, решение такое:
1).В файл ...SciTE\tools\SciTEStartup.lua дописываем строчку:
dofile (props["SciteDefaultHome"].."\\tools\\MakeAbbrev.lua")
2.)Ищем в файле ...SciTE\languages\au3.properties блок
extension.*.au3=$(SciteDefaultHome)\tools\MakeAbbrev.lua
command.name.14.*.au3=Save abbreviation
command.14.*.au3=SaveAbbr
#command.shortcut.14.*.au3=Ctrl+Shift+
command.subsystem.14.*.au3=3
command.save.before.14.*.au3=2
и убираем из него строчку extension.*.au3=$(SciteDefaultHome)\tools\MakeAbbrev.lua
Так же из файла ...SciTE\languages\au3.properties убираем в командах все строчки extension.*.au3="$(SciteDefaultHome)\tools\AutoIt3.lua", потому что оказывается не нужно повторно вызывать на обработку этот файл, ибо он обрабатывается единожды при запуске SciTE (в файле ...SciTE\tools\SciTEStartup.lua прописан), а в нашем случае нам нужно вызывать только нужную функцию.

Dm666
01-05-2011, 20:29
Скорее учимся..., так сказать вникаем в работу SciTE. »

Спасибо, заработало.
Оперативность и качество ответов, как всегда, на высоте! :clapping:

beve
03-11-2012, 00:28
Выкладываю (http://moemesto.ru/beve/file/14369693/display/SciTE3.0.2%20.95Ru.7z) настроенную для Autoit новую версию редактора SciTE 3.0.2 .95Ru.
Все настройки сделанные с учетом всего того, что обговаривалось в этой теме выше. Особенно хочу обратить ваше внимание, что для появления всплывающих подсказок-автодополнений, нужно начинать печатать команды языка Autoit c большой буквы (почему так, описание в посте #48 этой темы).

По умолчанию при открытии файлов, все блоки текста свернуты. Развернуть все можно сделав ПКМ в редакторе и выбрать пункт Свернуть/Развернуть=>Все блоки текста. Отключить вобще можно в файле глобальных настроек (SciTEGlobal.properties) в этом месте (вместо 1 поставить 0):
# Сворачивать при открытии файла (0/1)
fold.on.open=1

# Автоматическая свёртка всех секций при открытии файлов заданного типа (RestoreRecent.lua)
fold.on.open.ext=properties,ini,au3

В файл (au3.properties) можно добавить до 5 своих команд, горячие клавиши для которых будут Ctrl+5...Ctrl+9. Куда добавлять, есть закоментированные пояснения в этом файле.

Mancoffee
20-01-2016, 23:17
Как включить подстановку (после ввода нескольких символов или символа @) функций AutoIt в SciTE?




© OSzone.net 2001-2012