- Offizieller Beitrag
Ihr kennt das von Tidy her: Hinter EndFunc wird eingefügt " ;==>FUNKTIONSNAME".
Ich nutze Tidy gar nicht mehr - Einrückungen mache ich sowieso beim Schreiben und zudem auch richtig bei Select und Switch (das wird in Tidy immer versemmelt).
Das Anhängen der Funktionsnamen finde ich aber recht praktisch und habe dafür jetzt ein Lua-Skript erstellt.
FuncNameAtEnd.lua
-- TIME_STAMP 2013-05-04 14:32:52 v 0.1
----------------------------------------------------------------------------------------------------------------------------------
-- Beschreibung..: Ermittlung der im Skript deklarierten Funktionen
-- ..............: In der EndFunc-Zeile wird " ;==>FUNKTIONSNAME" angehängt
-- ..............: Nicht wirksam in auskommentierten Zeilen
----------------------------------------------------------------------------------------------------------------------------------
local IsComment = function(_pos) local tComment = {1,2} if tComment[editor.StyleAt[_pos]] == nil then return false else return true end end
local InSense = function(_s) _s = _s:gsub("%a", function(_c) return string.format("[%s%s]", _c:upper(),_c:lower()) end) return _s end
local pattFunc = '()('..InSense('func')..'%s+([%w_]+)%s-%b().-'..InSense('endfunc')..')'
local t, s, firstVisible, a, f, fname, iLines, pos, e = {}, editor:GetText(), editor.FirstVisibleLine
for a, f, fname in s:gmatch(pattFunc) do
_, iLines = f:gsub('\n', '\n')
table.insert(t, {editor:LineFromPosition(a) + iLines, fname})
end
editor:BeginUndoAction()
for i = 1, #t, 1 do
editor:GotoLine(t[i][1])
pos = editor:PositionFromLine(t[i][1])
if not IsComment(pos) then
_, e = editor:GetCurLine():find(InSense('endfunc'))
editor:SetSel(pos + e, pos + e)
editor:DelLineRight()
editor:InsertText(pos + e, ' ;==>'..t[i][2])
end
end
editor:EndUndoAction()
editor.FirstVisibleLine = firstVisible
scite.MenuCommand(IDM_SAVE)
Alles anzeigen
Zum Einbinden in das Menü folgenden Eintrag in SciTEUser.properties erstellen (Command-Nr an vorhandene freie anpassen):
# 30 Add FuncName
command.name.30.$(au3)= Add FuncName to EndFunc
command.30.*.au3=dofile $(Lua.User.Scripts.Path)\FuncNameAtEnd.lua
command.mode.30.*=subsystem:lua,savebefore:yes
command.shortcut.30.*.au3=Ctrl+Shift+V
Den Pfad hinter dofile an euren Speicherort der Datei anpassen.
Eigene Lua-Skripte sollte man keinesfalls im Standard Lua-Ordner von SciTE ablegen. Falls ihr SciTE für eine neue Version mal deinstalliert wäre das alles futsch.
Ich habe dafür einen eigenen Ordner angelegt und diesen als Property in den Benutzereinstellungen hinterlegt:
Lua.User.Scripts.Path=C:\Code_AutoIt\LUA
Diese Property kann dann als Variable angesprochen werden: $(Lua.User.Scripts.Path)
Wichtig: Es darf niemals ein abschließender Backslash verwendet werden, SciTE verwendet diesen in .properties analog zum _ in au3-Skripten.