Цитата: Вопрос кто нибудь "щупал" вот это: http://www.autoitscript.com/autoit3/scite/ 
    есть парочка инересных скриптиков (правда сама прога старовата будет) переделаные предлагаю для правок и использования   
 неплохой как на меня скриптик автодополнения по нажатии пробела в редакторе после сокращения 
 сразу предупреждаю про маленький глючок: однобуквенные сокращения не проходят   
 [more]  
 добавить в функцию обработки собития добавления символа function OnChar(charAdded) 
 такое: 
 --............................................... 
     ls = editor.StyleAt[editor.CurrentPos-2] 
 --     тут нюансик из editor.StyleAt[editor.CurrentPos-2] для оптимізації робить лише для ідентифікаторів 
 --    11 - для Луа для інших може бути інші ідентифікатори 
     if ls == 11 and charAdded == " "  then 
         Abbreviations()  --see below 
     end 
 --...............................................     
 end       
 --=================================================================================== 
 -- Expand abbreviations and show tooltip when appropriated.  by Jos van der Zande (JdeB) 
 -- changed yumax#301170722  
 function Abbreviations() 
     -- get current word 
     from = editor:WordStartPosition(editor.CurrentPos-2)   
     to = editor:WordEndPosition(editor.CurrentPos-2) 
     curword = editor:textrange(from, to) 
     if string.sub(curword,1,1) == ' ' and string.sub(curword,2,2) == ' ' then  
         curword = string.sub(curword,3,-1) 
         from = from - 2; 
     end 
 --     print(from..' '..to..'-'..curword..'-'..editor.CurrentPos) 
     -- get possible replacement from abbrev.properties 
     local repword = "" 
     ext = props['FileExt'] 
     abbrev_file = props['abbrev.$(file.patterns.'..ext..')']; 
 --     print(abbrev_file) 
     local f = io.open(abbrev_file)       
     if f ~= nil then 
         local Abbrevtxt = f:read('*a') 
         if Abbrevtxt then 
             f:close() 
             local rep_start = string.find(Abbrevtxt,"\n" .. string.lower(curword) .. "=")               
 --             print('-'..Abbrevtxt..'-'..curword..'-',rep_start,"-\n" .. string.lower(curword)..'-') 
             if rep_start ~= nil and rep_start ~= 0 then 
                rep_start = rep_start + string.len(curword) + 2 
                rep_end = string.find(Abbrevtxt .. "\n","\n",rep_start)-1 
                repword = string.sub(Abbrevtxt .. "\n",rep_start,rep_end) 
 --                    _ALERT("rep_start:" ..rep_start.. "rep_end:"..rep_end ) 
             end 
         end 
     end 
     -- if found process it 
 --     _ALERT("abbr:" .. curword .. "  replaced by: " .. repword .. "|" ) 
     if repword ~= nil and repword ~= "" then 
         -- get indent info 
         local s_indent = "" 
          if editor.LineIndentation[editor:LineFromPosition(editor.CurrentPos)] then 
             currentindent =  editor.LineIndentation[editor:LineFromPosition(editor.CurrentPos)] 
 --             _ALERT(currentindent) 
             if editor.UseTabs then 
                 n_idents = editor.LineIndentation[editor:LineFromPosition(editor.CurrentPos)] / editor.TabWidth 
                 s_indent = string.rep("\t",n_idents) 
             else 
                 n_idents = editor.LineIndentation[editor:LineFromPosition(editor.CurrentPos)] 
                 s_indent = string.rep(" ",n_idents) 
             end 
          end 
         --end 
         -- remove current word 
         editor:remove(from, to +1) 
         -- replace text \n for LF plus the indent info  
         repword =  string.gsub(repword, "\\n", "\n" .. s_indent) 
         -- replace text \t for TAB 
         repword =  string.gsub(repword, "\\t", "\t") 
         -- find caret position in the word 
         tcaretpos = string.find(repword,"|")  
         -- when string to insert contains | then calculate the pos and remove it 
         if tcaretpos ~= nil and tcaretpos ~= 0 then 
             caretposword = string.find(repword,"|") -1 
             caretpos = from + string.find(repword,"|") -1 
             repword = string.gsub(repword, "|", "") 
         else 
             -- set caret pos to the end of the inserted string 
             caretposword = 0 
             caretpos = from + string.len(repword) 
         end 
         editor:insert(from,repword) 
         editor:GotoPos(caretpos) 
         -- 
         -- try to create the tooltip() 
         -- get keyword/function name  part infront of the ( 
         braceopenpos = string.find(repword,"%(")  
         braceclosepos = string.find(repword,"%)")  
         -- when string to insert contains | then calculate the pos and remove it 
         --_ALERT(braceclosepos) 
         if braceclosepos ~= nil and braceclosepos < caretposword then 
             -- caret pos not inside the first function  
             repword = "" 
         elseif braceopenpos then 
             -- get keyword/function name  part infront of the | 
             repword = string.sub(repword,1,braceopenpos-1) 
         elseif caretposword ~= 0 then             
             repword = string.sub(repword,1,caretposword) 
         else 
             repword = "" 
         end 
         --_ALERT("repword:" .. repword ) 
         if repword ~= "" and braceopenpos then 
             f = io.open(props['SciteDefaultHome'].."\\api\\au3.api") 
             if f ~= nil then 
                 local apitxt = f:read('*a') 
                 if apitxt then 
                     f:close() 
                     local rep_start = string.find(string.lower(apitxt),"\n" .. string.lower(repword).."[\n ]") 
                     if rep_start ~= nil then 
                         rep_end = string.find(apitxt,"\n",rep_start+2)-1 
                         repword = string.sub(apitxt,rep_start+1,rep_end) 
                         -- put the description on the next line.. 
                         repword =  string.gsub(repword, "%)", "%)\n",1) 
                         editor:CallTipShow(caretpos, repword) 
                     end 
                 end 
             end 
         end 
     end 
 end   
 [/more]