More random thoughts.
This might not be complete yet, but I saw in the past that you have a good sense of spotting corner cases and unspecified areas.
The information provided should contain
A) a hierarchical structure of all the files involved (include and lib files)
- with absolute or relative path to the main script
B) for a tool that would help to tidy the indentation
- for each line of each file the level of indentation based on code not on real/current indentation
- nice to have
-- the position at which position a comment starts
-- an indication of what type the line is, e.g. pure comment, block comment, continuation line, func def, class def, etc.
C) for a too that would help to eliminate “bad code”
- for each warning and the one error the file and line number and a description on what is wrong.
- nice to have
-- the position in the line
D) for a tool to support auto completion
- a list of all variables Names of all files (built in variables could be maintained within the tool)
-- an indication if they are super global, global or local
-- an indication if they are a class
- a list of functions with their parameters of all files (built in functions could be maintained within the tool)
- a list of classes and their hierarchy of methods (with parameters) and properties
- Nice to have
-- For each the file and line number (and position) they occur
-- For each variable in which labels, functions, classes, methoden they are used
E) for a tool to provide calltips / intellisence
in all cases the word tool, means a tool (e.g. an ahk script) that uses AHK.exe to get the information on the file and that does the job for the user or interacts with the user)
B) Tidy: user selects some lines of code in its editor and asks a tool to do the indentation. Since the tool knows for each line the level of indention it can add indentation according to the indentation type defined by the user. If it knows the type of line, it should be able to also create different styles of indentation.
C) Bad Code:
-- 1) a tool provides a list of warning and the error. User selects one and the cursor jumps in their editor to the right location in their code and if possible selects the portion of the code that creates the issue.
-- 2) an editor shows with custom highlighting the portion of code with issues and provides a tooltip on them on what the warning is.
-- 1) User types part of a function name, the tool provides a list of functions available with their parameters, and since the tool knows on which line the functions are defined, it could check if the lines above or below the definition are comments (see B) and check them if they contain additional information for the function.
-- 2) User types part of a variable name, the tool provides a list of variables available including where they are defined and if they are super global/global/local. Then the user might spot that he needs to set a variable global to be able to access it.
-- 3) User has selected a variable that contains a class. The tool provides a list of methods and properties of that class.