b4n requested changes on this pull request.

Otherwise it looks good.
I didn't review the Scintilla lexer properly, but it matches upstream's so I'm 
gonna be happy about it.

> @@ -0,0 +1,72 @@
+# For complete documentation of this file, please see Geany's main 
documentation
+# AutoIt 3.3.14.2
+[styling]
+# Edit these in the colorscheme .conf file instead
+default=default
+comment=comment
+commentblock=comment
+number=number
+function=function
+keyword=type

shouldn't this be `keyword=keyword`?

> @@ -0,0 +1,72 @@
+# For complete documentation of this file, please see Geany's main 
documentation
+# AutoIt 3.3.14.2
+[styling]
+# Edit these in the colorscheme .conf file instead
+default=default
+comment=comment

this should likely be `comment=comment_line`, shouldn't it?

> @@ -0,0 +1,72 @@
+# For complete documentation of this file, please see Geany's main 
documentation
+# AutoIt 3.3.14.2
+[styling]
+# Edit these in the colorscheme .conf file instead
+default=default
+comment=comment
+commentblock=comment
+number=number
+function=function
+keyword=type
+macro=preprocessor
+string=string
+operator=operator
+variable=keyword_2

This is also questionable, but there's not a so obvious expected value, I would 
guess `variable=identifier`

> +function=function
+keyword=type
+macro=preprocessor
+string=string
+operator=operator
+variable=keyword_2
+sent=other
+preprocessor=preprocessor
+special=type
+expand=default
+comobj=keyword_1
+udf=class
+
+[keywords]
+keywords=and byref case const continuecase continueloop default dim do else 
elseif endfunc endif endselect endswitch endwith enum exit exitloop false for 
func global if in local next not null or redim return select static step switch 
then to true until volatile wend while with
+functions=abs acos adlibregister adlibunregister asc ascw asin assign atan 
autoitsetoption autoitwingettitle autoitwinsettitle beep binary binarylen 
binarymid binarytostring bitand bitnot bitor bitrotate bitshift bitxor 
blockinput break call cdtray ceiling chr chrw clipget clipput consoleread 
consolewrite consolewriteerror controlclick controlcommand controldisable 
controlenable controlfocus controlgetfocus controlgethandle controlgetpos 
controlgettext controlhide controllistview controlmove controlsend 
controlsettext controlshow controltreeview cos dec dircopy dircreate dirgetsize 
dirmove dirremove dllcall dllcalladdress dllcallbackfree dllcallbackgetptr 
dllcallbackregister dllclose dllopen dllstructcreate dllstructgetdata 
dllstructgetptr dllstructgetsize dllstructsetdata drivegetdrive 
drivegetfilesystem drivegetlabel drivegetserial drivegettype drivemapadd 
drivemapdel drivemapget drivesetlabel drivespacefree drivespacetotal 
drivestatus envget envset envupdate eval execute exp filechangedir fileclose 
filecopy filecreatentfslink filecreateshortcut filedelete fileexists 
filefindfirstfile filefindnextfile fileflush filegetattrib filegetencoding 
filegetlongname filegetpos filegetshortcut filegetshortname filegetsize 
filegettime filegetversion fileinstall filemove fileopen fileopendialog 
fileread filereadline filereadtoarray filerecycle filerecycleempty 
filesavedialog fileselectfolder filesetattrib filesetend filesetpos filesettime 
filewrite filewriteline floor ftpsetproxy funcname guicreate guictrlcreateavi 
guictrlcreatebutton guictrlcreatecheckbox guictrlcreatecombo 
guictrlcreatecontextmenu guictrlcreatedate guictrlcreatedummy guictrlcreateedit 
guictrlcreategraphic guictrlcreategroup guictrlcreateicon guictrlcreateinput 
guictrlcreatelabel guictrlcreatelist guictrlcreatelistview 
guictrlcreatelistviewitem guictrlcreatemenu guictrlcreatemenuitem 
guictrlcreatemonthcal guictrlcreateobj guictrlcreatepic guictrlcreateprogress 
guictrlcreateradio guictrlcreateslider guictrlcreatetab guictrlcreatetabitem 
guictrlcreatetreeview guictrlcreatetreeviewitem guictrlcreateupdown 
guictrldelete guictrlgethandle guictrlgetstate guictrlread guictrlrecvmsg 
guictrlregisterlistviewsort guictrlsendmsg guictrlsendtodummy guictrlsetbkcolor 
guictrlsetcolor guictrlsetcursor guictrlsetdata guictrlsetdefbkcolor 
guictrlsetdefcolor guictrlsetfont guictrlsetgraphic guictrlsetimage 
guictrlsetlimit guictrlsetonevent guictrlsetpos guictrlsetresizing 
guictrlsetstate guictrlsetstyle guictrlsettip guidelete guigetcursorinfo 
guigetmsg guigetstyle guiregistermsg guisetaccelerators guisetbkcolor 
guisetcoord guisetcursor guisetfont guisethelp guiseticon guisetonevent 
guisetstate guisetstyle guistartgroup guiswitch hex hotkeyset httpsetproxy 
httpsetuseragent hwnd inetclose inetget inetgetinfo inetgetsize inetread 
inidelete iniread inireadsection inireadsectionnames inirenamesection iniwrite 
iniwritesection inputbox int isadmin isarray isbinary isbool isdeclared 
isdllstruct isfloat isfunc ishwnd isint iskeyword isnumber isobj isptr isstring 
log memgetstats mod mouseclick mouseclickdrag mousedown mousegetcursor 
mousegetpos mousemove mouseup mousewheel msgbox number objcreate 
objcreateinterface objevent objevent objget objname onautoitexitregister 
onautoitexitunregister opt ping pixelchecksum pixelgetcolor pixelsearch 
processclose processexists processgetstats processlist processsetpriority 
processwait processwaitclose progressoff progresson progressset ptr random 
regdelete regenumkey regenumval regread regwrite round run runas runaswait 
runwait send sendkeepactive seterror setextended shellexecute shellexecutewait 
shutdown sin sleep soundplay soundsetwavevolume splashimageon splashoff 
splashtexton sqrt srandom statusbargettext stderrread stdinwrite stdioclose 
stdoutread string stringaddcr stringcompare stringformat stringfromasciiarray 
stringinstr stringisalnum stringisalpha stringisascii stringisdigit 
stringisfloat stringisint stringislower stringisspace stringisupper 
stringisxdigit stringleft stringlen stringlower stringmid stringregexp 
stringregexpreplace stringreplace stringreverse stringright stringsplit 
stringstripcr stringstripws stringtoasciiarray stringtobinary stringtrimleft 
stringtrimright stringupper tan tcpaccept tcpclosesocket tcpconnect tcplisten 
tcpnametoip tcprecv tcpsend tcpshutdown tcpstartup timerdiff timerinit tooltip 
traycreateitem traycreatemenu traygetmsg trayitemdelete trayitemgethandle 
trayitemgetstate trayitemgettext trayitemsetonevent trayitemsetstate 
trayitemsettext traysetclick trayseticon traysetonevent traysetpauseicon 
traysetstate traysettooltip traytip ubound udpbind udpclosesocket udpopen 
udprecv udpsend udpshutdown udpstartup vargettype winactivate winactive 
winclose winexists winflash wingetcaretpos wingetclasslist wingetclientsize 
wingethandle wingetpos wingetprocess wingetstate wingettext wingettitle winkill 
winlist winmenuselectitem winminimizeall winminimizeallundo winmove winsetontop 
winsetstate winsettitle winsettrans winwait winwaitactive winwaitclose 
winwaitnotactive

do we need this?  I don't think any other language has that, and better fit for 
a tag file, doesn't it?
If we want different highlighting for known function names, we probably should 
rather play with Scintilla's rainbow identifiers or simply set this dynamically 
from a tags file (which is indeed not currently possible and has performance 
questions, but well).

Not a blocker, but it looks a bit odd.

> +
+[keywords]
+keywords=and byref case const continuecase continueloop default dim do else 
elseif endfunc endif endselect endswitch endwith enum exit exitloop false for 
func global if in local next not null or redim return select static step switch 
then to true until volatile wend while with
+functions=abs acos adlibregister adlibunregister asc ascw asin assign atan 
autoitsetoption autoitwingettitle autoitwinsettitle beep binary binarylen 
binarymid binarytostring bitand bitnot bitor bitrotate bitshift bitxor 
blockinput break call cdtray ceiling chr chrw clipget clipput consoleread 
consolewrite consolewriteerror controlclick controlcommand controldisable 
controlenable controlfocus controlgetfocus controlgethandle controlgetpos 
controlgettext controlhide controllistview controlmove controlsend 
controlsettext controlshow controltreeview cos dec dircopy dircreate dirgetsize 
dirmove dirremove dllcall dllcalladdress dllcallbackfree dllcallbackgetptr 
dllcallbackregister dllclose dllopen dllstructcreate dllstructgetdata 
dllstructgetptr dllstructgetsize dllstructsetdata drivegetdrive 
drivegetfilesystem drivegetlabel drivegetserial drivegettype drivemapadd 
drivemapdel drivemapget drivesetlabel drivespacefree drivespacetotal 
drivestatus envget envset envupdate eval execute exp filechangedir fileclose 
filecopy filecreatentfslink filecreateshortcut filedelete fileexists 
filefindfirstfile filefindnextfile fileflush filegetattrib filegetencoding 
filegetlongname filegetpos filegetshortcut filegetshortname filegetsize 
filegettime filegetversion fileinstall filemove fileopen fileopendialog 
fileread filereadline filereadtoarray filerecycle filerecycleempty 
filesavedialog fileselectfolder filesetattrib filesetend filesetpos filesettime 
filewrite filewriteline floor ftpsetproxy funcname guicreate guictrlcreateavi 
guictrlcreatebutton guictrlcreatecheckbox guictrlcreatecombo 
guictrlcreatecontextmenu guictrlcreatedate guictrlcreatedummy guictrlcreateedit 
guictrlcreategraphic guictrlcreategroup guictrlcreateicon guictrlcreateinput 
guictrlcreatelabel guictrlcreatelist guictrlcreatelistview 
guictrlcreatelistviewitem guictrlcreatemenu guictrlcreatemenuitem 
guictrlcreatemonthcal guictrlcreateobj guictrlcreatepic guictrlcreateprogress 
guictrlcreateradio guictrlcreateslider guictrlcreatetab guictrlcreatetabitem 
guictrlcreatetreeview guictrlcreatetreeviewitem guictrlcreateupdown 
guictrldelete guictrlgethandle guictrlgetstate guictrlread guictrlrecvmsg 
guictrlregisterlistviewsort guictrlsendmsg guictrlsendtodummy guictrlsetbkcolor 
guictrlsetcolor guictrlsetcursor guictrlsetdata guictrlsetdefbkcolor 
guictrlsetdefcolor guictrlsetfont guictrlsetgraphic guictrlsetimage 
guictrlsetlimit guictrlsetonevent guictrlsetpos guictrlsetresizing 
guictrlsetstate guictrlsetstyle guictrlsettip guidelete guigetcursorinfo 
guigetmsg guigetstyle guiregistermsg guisetaccelerators guisetbkcolor 
guisetcoord guisetcursor guisetfont guisethelp guiseticon guisetonevent 
guisetstate guisetstyle guistartgroup guiswitch hex hotkeyset httpsetproxy 
httpsetuseragent hwnd inetclose inetget inetgetinfo inetgetsize inetread 
inidelete iniread inireadsection inireadsectionnames inirenamesection iniwrite 
iniwritesection inputbox int isadmin isarray isbinary isbool isdeclared 
isdllstruct isfloat isfunc ishwnd isint iskeyword isnumber isobj isptr isstring 
log memgetstats mod mouseclick mouseclickdrag mousedown mousegetcursor 
mousegetpos mousemove mouseup mousewheel msgbox number objcreate 
objcreateinterface objevent objevent objget objname onautoitexitregister 
onautoitexitunregister opt ping pixelchecksum pixelgetcolor pixelsearch 
processclose processexists processgetstats processlist processsetpriority 
processwait processwaitclose progressoff progresson progressset ptr random 
regdelete regenumkey regenumval regread regwrite round run runas runaswait 
runwait send sendkeepactive seterror setextended shellexecute shellexecutewait 
shutdown sin sleep soundplay soundsetwavevolume splashimageon splashoff 
splashtexton sqrt srandom statusbargettext stderrread stdinwrite stdioclose 
stdoutread string stringaddcr stringcompare stringformat stringfromasciiarray 
stringinstr stringisalnum stringisalpha stringisascii stringisdigit 
stringisfloat stringisint stringislower stringisspace stringisupper 
stringisxdigit stringleft stringlen stringlower stringmid stringregexp 
stringregexpreplace stringreplace stringreverse stringright stringsplit 
stringstripcr stringstripws stringtoasciiarray stringtobinary stringtrimleft 
stringtrimright stringupper tan tcpaccept tcpclosesocket tcpconnect tcplisten 
tcpnametoip tcprecv tcpsend tcpshutdown tcpstartup timerdiff timerinit tooltip 
traycreateitem traycreatemenu traygetmsg trayitemdelete trayitemgethandle 
trayitemgetstate trayitemgettext trayitemsetonevent trayitemsetstate 
trayitemsettext traysetclick trayseticon traysetonevent traysetpauseicon 
traysetstate traysettooltip traytip ubound udpbind udpclosesocket udpopen 
udprecv udpsend udpshutdown udpstartup vargettype winactivate winactive 
winclose winexists winflash wingetcaretpos wingetclasslist wingetclientsize 
wingethandle wingetpos wingetprocess wingetstate wingettext wingettitle winkill 
winlist winmenuselectitem winminimizeall winminimizeallundo winmove winsetontop 
winsetstate winsettitle winsettrans winwait winwaitactive winwaitclose 
winwaitnotactive
+macros=@appdatacommondir @appdatadir @autoitexe @autoitpid @autoitversion 
@autoitx64 @com_eventobj @commonfilesdir @compiled @computername @comspec 
@cpuarch @cr @crlf @desktopcommondir @desktopdepth @desktopdir @desktopheight 
@desktoprefresh @desktopwidth @documentscommondir @error @exitcode @exitmethod 
@extended @favoritescommondir @favoritesdir @gui_ctrlhandle @gui_ctrlid 
@gui_dragfile @gui_dragid @gui_dropid @gui_winhandle @homedrive @homepath 
@homeshare @hotkeypressed @hour @ipaddress1 @ipaddress2 @ipaddress3 @ipaddress4 
@kblayout @lf @localappdatadir @logondnsdomain @logondomain @logonserver @mday 
@min @mon @msec @muilang @mydocumentsdir @numparams @osarch @osbuild @oslang 
@osservicepack @ostype @osversion @programfilesdir @programscommondir 
@programsdir @scriptdir @scriptfullpath @scriptlinenumber @scriptname @sec 
@startmenucommondir @startmenudir @startupcommondir @startupdir @sw_disable 
@sw_enable @sw_hide @sw_lock @sw_maximize @sw_minimize @sw_restore @sw_show 
@sw_showdefault @sw_showmaximized @sw_showminimized @sw_showminnoactive 
@sw_showna @sw_shownoactivate @sw_shownormal @sw_unlock @systemdir @tab 
@tempdir @tray_id @trayiconflashing @trayiconvisible @username @userprofiledir 
@wday @windowsdir @workingdir @yday @year
+sent={!} {#} {^} {{} {}} {+} {alt} {altdown} {altup} {appskey} {asc} 
{backspace} {break} {browser_back} {browser_favorites} {browser_forward} 
{browser_home} {browser_refresh} {browser_search} {browser_stop} {bs} 
{capslock} {ctrldown} {ctrlup} {del} {delete} {down} {end} {enter} {esc} 
{escape} {f1} {f10} {f11} {f12} {f2} {f3} {f4} {f5} {f6} {f7} {f8} {f9} {home} 
{ins} {insert} {lalt} {launch_app1} {launch_app2} {launch_mail} {launch_media} 
{lctrl} {left} {lshift} {lwin} {lwindown} {lwinup} {media_next} 
{media_play_pause} {media_prev} {media_stop} {numlock} {numpad0} {numpad1} 
{numpad2} {numpad3} {numpad4} {numpad5} {numpad6} {numpad7} {numpad8} {numpad9} 
{numpadadd} {numpaddiv} {numpaddot} {numpadenter} {numpadmult} {numpadsub} 
{oem_102} {pause} {pgdn} {pgup} {printscreen} {ralt} {rctrl} {right} {rshift} 
{rwin} {rwindown} {rwinup} {scrolllock} {shiftdown} {shiftup} {sleep} {space} 
{tab} {up} {volume_down} {volume_mute} {volume_up}
+preprocessor=#ce #comments-end #comments-start #cs #include #include-once 
#notrayicon #onautoitstartregister #requireadmin
+special=#endregion #forcedef #forceref #ignorefunc #pragma #region
+expand=
+udf=
+
+[lexer_properties]
+#settings for folding comment blocks and preprocessor lines
+fold.comment=1
+fold.compact=0
+fold.preprocessor=1

You shouldn't be setting those here, they are not lexer-specific and we set 
them unconditionally (to the same values, even).
If there is *really* a compelling reason to set them for this filetype, comment 
them out for them to be easy to find, but don't set them in case we wanna 
change Geany's default one day.

> @@ -0,0 +1,121 @@
+/*

All comments on this file are optional, as it's UCTags' upstream. I just take 
this opportunity to make comment on this, but anything here should be changed 
upstream first -- or at the same time.

> +/*
+*   FUNCTION DEFINITIONS
+*/
+static void findAutoItTags (void)
+{
+       vString *name = vStringNew ();
+       const unsigned char *line;
+
+       while ((line = readLineFromInputFile ()) != NULL)
+       {
+               const unsigned char* p = line;
+               if (p [0] == '#')
+               {
+                       /* min. string "#region" > 7 */
+                       if ((p [1] == 'R' || p [1] == 'r') &&
+                               strlen ((const char *) p) > 8 &&

Why `strlen()` here?  It'll highly likely be slower than manually checking the 
characters, and as a C string always ends with a `NUL` byte, it's safe to drop 
it, the character checks would catch a premature end.

> +     vString *name = vStringNew ();
+       const unsigned char *line;
+
+       while ((line = readLineFromInputFile ()) != NULL)
+       {
+               const unsigned char* p = line;
+               if (p [0] == '#')
+               {
+                       /* min. string "#region" > 7 */
+                       if ((p [1] == 'R' || p [1] == 'r') &&
+                               strlen ((const char *) p) > 8 &&
+                               (p [2] == 'E' || p [2] == 'e') &&
+                               (p [3] == 'G' || p [3] == 'g') &&
+                               (p [4] == 'I' || p [4] == 'i') &&
+                               (p [5] == 'O' || p [5] == 'o') &&
+                               (p [6] == 'N' || p [6] == 'n'))

Doesn't the syntax require a whitespace after the `#region`? This would catch 
`#regionfoobar something` as a region named `foobar something`

> +     vString *name = vStringNew ();
+       const unsigned char *line;
+
+       while ((line = readLineFromInputFile ()) != NULL)
+       {
+               const unsigned char* p = line;
+               if (p [0] == '#')
+               {
+                       /* min. string "#region" > 7 */
+                       if ((p [1] == 'R' || p [1] == 'r') &&
+                               strlen ((const char *) p) > 8 &&
+                               (p [2] == 'E' || p [2] == 'e') &&
+                               (p [3] == 'G' || p [3] == 'g') &&
+                               (p [4] == 'I' || p [4] == 'i') &&
+                               (p [5] == 'O' || p [5] == 'o') &&
+                               (p [6] == 'N' || p [6] == 'n'))

Depending on the syntax limitation, you could also want to restrict the set of 
characters allowed for the region's name, but that might be less of a problem.

> +
+                               if (vStringLength(name) > 0)
+                               {
+                                       makeSimpleTag (name, AutoItKinds, 
K_REGION);
+                                       vStringClear (name);
+                               }
+                       }
+               }
+               else
+               {
+                       /* skip white space */
+                       while (isspace ((int) *p))
+                               ++p;
+                       /* min. string "func a()" == 8 */
+                       if ((p [0] == 'F' || p [0] == 'f') &&
+                               strlen ((const char *) p) >= 8 &&

again, the `strlen()` check doesn't seem very useful.

> @@ -74,7 +74,7 @@ index ed47aa8..e58f1ab 100644
        LINK_LEXER(lmAsm);
 -      LINK_LEXER(lmAsn1);
 -      LINK_LEXER(lmASY);
--      LINK_LEXER(lmAU3);
+       LINK_LEXER(lmAU3);

You also need to change the diff section header to match (`-77,123 +77,51`) as 
you're changing the final line count.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/1752#pullrequestreview-143377776

Reply via email to