The script collects the functions and display in the usertable.
It works with php file. There is no oop-design. I hope having time to
develop this script.
function UserListShow(list)
   local s = ''
   local sep = ';'
   local n = table.getn(list)
   for i = 1,n-1 do
      s = s..list[i]..sep
   end
   s = s..list[n]
   editor.AutoCSeparator = string.byte(sep)
   editor:UserListShow(12,s)
   editor.AutoCSeparator = string.byte(' ')
 end
function AllLinesWithText(txt,flags)
    if not flags then flags = 0 end
    local s,e = editor:findtext(txt,flags,0)
    local result = {}
    while s do 
      local l = editor:LineFromPosition(s)
      
      func = strip(editor:GetLine(l))
      table.insert(result,func)
      s,e = editor:findtext(txt,flags,e+1)
    end    
    return result
end
function strip(str)
	str=string.gsub(str, "^%s+","")
	if string.find(str, "\r\n") then
	return string.gsub(str, "\r\n", "")
	else
	return string.gsub(str, "\n", "")
	end
end
function charAt(n)
	return string.char(editor.CharAt[n])
end
function getCurrentWord()
		
	_curpos = editor.CurrentPos
	regexp = "[a-zA-Z_]" 
	curpos = _curpos
	char=charAt(curpos)
	right=''
	while string.find(char,regexp)  do
		right=right..char
		curpos = curpos + 1
		char=charAt(curpos)
		
	end
	regexp = "[a-zA-Z_]"
	curpos = _curpos-1
	char=charAt(curpos)
	left=''
	while string.find(char,regexp) do
		left=char..left
		curpos = curpos - 1
		char=charAt(curpos)
	end
	result = left..right
	if result == '' then
		return false
	else
		return result
	end
end
function isInFunctionTable(table,value)
	indicator = false
	for k,v in pairs(table) do
		if string.find(v,("^function "..value)) then indicator = true end
	end
	return indicator
end
function DisplayFunctions()
	function_catch = '^[ |\t]*function [a-zA-Z0-9_:&]*([a-zA-Z0-9,_ \$\=\&]*)' 
	ki = AllLinesWithText(function_catch,SCFIND_REGEXP)
	current_word = getCurrentWord()
	if  (current_word) and (isInFunctionTable(ki,current_word)) then
		local s,e = editor:findtext("^[ |\t]*function "..current_word,SCFIND_REGEXP,0)
		editor:GotoPos(s)
		
	else
		if ( table.getn(ki) > 0 ) then
			UserListShow(ki)
		end
	end
	return 0
end
function OnUserListSelection(listID, s)
  local s,e = editor:findtext(s,SCFIND_REGEXP,0)
  editor:GotoPos(s)
  return 0
end
RecentChanges · preferences
edit · history
Last edited February 27, 2017 6:52 am GMT (diff)