- Offizieller Beitrag
Servus.
Ich benutze in Scite ein Luascript um den Funktionsheader zu erstellen, und denke es könnte für andere auch nützlich sein.
1. Schritt.
Den Code des Spoilers als InsertFunctonHeader.Lua im Unetrverzeichnis LUA von Scite speichern.
Spoiler anzeigen
function InsertFunctionHeader()
local line, pos = editor:GetCurLine()
local pos = editor.CurrentPos - pos
local lineNum = editor:LineFromPosition(pos)
-- "()([Ff][Uu][Nn][Cc][%s]*([%w_]*)%(.-%))([^\r\n]*)"
-- local from, to, name = string.find(line, "Func ([%w_]*)")
local from, to, name = string.find(line, "[Ff][Uu][Nn][Cc][%s]*([%w_]*)")
if to ~= nil then
-- local pfrom, pto, pname = string.find(line, "(%([%w%s\"_,$%=@-%.]*[%)_])")
local pfrom, pto, pname = string.find(line, "(%(.-%))")
local i = 0
while string.find(pname, "_%s*$") do -- Found an underscore, so need to get the next line, too
i = i + 1
local tmp = editor:GetLine(lineNum+i)
local wfrom = string.find(pname, "_%s*$")
local nfrom = string.find(tmp, "[^%s]")
pname = string.sub(pname, 1, wfrom-1) .. string.sub(tmp, nfrom, -1)
pname = string.gsub(pname, "[\n\r]", "")
end
editor:Home()
editor:AddText(_CreateFunctionHeader(name,pname))
else
local ws = editor:WordStartPosition(editor.CurrentPos)
local we = editor:WordEndPosition(editor.CurrentPos)
local word = editor:textrange(ws, we)
-- Must strip the new lines for this to work.
line = string.gsub(line, "[\n\r]", "")
word = string.gsub(word, "[\n\r]", "")
if word == "" then
editor:AddText(_CreateFunctionHeader("Name", ""))
elseif word == line then
editor:LineEnd()
local lend = editor.CurrentPos
editor:Home()
local lstart = editor.CurrentPos
editor:SetSel(lstart, lend)
editor:ReplaceSel(_CreateFunctionHeader(word, "") .. "Func " .. word .. "()\r\nEndFunc; " .. word)
end
end
end -- InsertFunctionheader()
function _CreateFunctionHeader(s, p)
local res = ";#Function# " .. string.rep("=", 140) .. "\r\n; Name............: " .. s .. "\r\n; Description.....:\r\n; Syntax..........: ".. s .. p .."\r\n; Parameters......:"
local len = nil
local params = false
for byref, parameter, optional in string.gfind(p, "(%w-)%s*($[%w_]+)%s*([=]?)") do
if parameter ~= "" and parameter ~= nil then
params = true
if byref ~= "" and byref ~= nil then
len = string.len(parameter)
res = res .. "\r\n;" .. string.rep(" ", 19) .. parameter .. string.rep(" ", 13-len).. "\ IN/OUT - "
elseif optional ~= "" and optional ~= nil then
len = string.len(parameter)
res = res .. "\r\n;" .. string.rep(" ", 19) .. parameter .. string.rep(" ", 13-len).."- [optional] "
else
len = string.len(parameter)
res = res .. "\r\n;" .. string.rep(" ", 19) .. parameter .. string.rep(" ", 13-len).."- "
end
end
end
if params == false then
res = res .. "\r\n;\tNone."
end
res = res .. "\r\n; Return values .:\r\n; Success\t\t -\r\n; Failure\t\t -\r\n\; Author ........: Raupi@Autoit.de\r\n; Modified.......:\r\n"
res = res .. "; Remarks .......:\r\n; Related .......:\r\n; Link ..........;\r\n; Example .......;\r\n" .. "; " .. string.rep("=", 150) .. "\r\n"
return res
end -- _CreateFunctionH
Alles anzeigen
Zeile 64 müßt ihr editieren und euren eigenen Namen einsetzen !
2.Schritt:
Die Datei SciteStartup.Lua editieren und
direkt nach der Zeile
einfügen.
3.Schritt die Datei SciTEUser.propertie aus dem Eigene Dateien Ordner öffnen.
Vor dem Abschnitt
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# START: DO NOT CHANGE ANYTHING AFTER THIS LINE #-#-#-#-#
# Created by SciTEConfig
#--------------------------
folgendes einfügen:
# 38 Insert AutoIt3 Function Header as per UDF guidlines
command.name.38.*.au3=InsertFunctionHeader
command.subsystem.38.*au3=3
command.38.*.au3=InsertFunctionHeader
command.save.before.38.*.au3=2
command.shortcut.38.*.au3=Ctrl+Shift+Alt+C
Die Nummer 38 müßt ihr eventuell anpassen, jenachdem welcher Eintrag bei euch der letzte ist.
Das Tastenkürzel kann natürlich geändert werden.
Scite neu starten ...
Cursor auf eine Zeile in der Func steht setzen, Ctrl+Shift+Alt+C drücken und schon habt ihr euren Header.
Edit: Das LuaScript habe ich mal angehängt.