Difference between revisions of "SciTE4AutoIt3"

From AutoIt Wiki
Jump to navigation Jump to search
m (Stripping Excess Code)
 
(25 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:SciTE]]
+
__TOC__
=SciTE4AutoIt3=
 
SciTE4AutoIt3 is a specialist editor package based on the excellent [http://www.scintilla.org/SciTE.html SciTE] editor.  SciTE has been set up to compile AutoIt scripts and has been extended with a multitude of Lua scripts.  SciTE4AutoIt3 may be downloaded here: [http://www.autoitscript.com/site/autoit-script-editor/ SciTE4AutoIt3]
 
  
SciTE4AutoIt3 provides:
+
== Introduction ==
* Syntax highlighting
 
* Calltips (also known as IntelliSense)
 
* Code AutoComplete
 
* Auto Indentation
 
* AutoIt Script help integration
 
* SciTE help integration
 
* Abbreviations
 
* Editing macros
 
* Debugging support
 
* Tools for AutoIt scripting
 
* A toolbar that enables easy access to an array of community created tools
 
* Various other features
 
  
 +
'''SciTE4AutoIt3''' is a specialist editor package based on the excellent [http://www.scintilla.org/SciTE.html SciTE] editor. 
 +
SciTE has been set up to compile AutoIt scripts and has been extended with a multitude of Lua scripts. 
 +
SciTE4AutoIt3 may be downloaded here: [http://www.AutoItscript.com/site/AutoIt-script-editor/ SciTE4AutoIt3].
 +
Keep in mind that SciTE4AutoIt3 is not an official package.
 +
Direct any bug reports or feature requests to the AutoIt3 forum and not the bug tracker.
  
Keep in mind that SciTE4AutoIt3 is not an official package.  Direct any bug reports or feature requests to the AutoIt3 forum and not the bug tracker.
+
== Syntax Highlighting ==
  
=Syntax Highlighting=
+
[[File:Syntax_Highlighting.JPG|right|A demonstration of syntax highlighting using the default theme.]]
[[File:Syntax_Highlight.png|457px|thumb|right|A demonstration of syntax highlighting using the default theme.]]
 
SciTE4AutoIt3 comes with a customized AutoIt3 lexer which enables syntax highlighting.  Syntax highlighting enables the colorization of various code elements such as variables, strings, operators, comments, etc.  This allows one to differentiate the various code elements at a glance without having to specifically read everything.  To load a custom theme a user may press [Ctrl] + [1] to bring up ''SciTEConfig''.  The options are located under the ''Color Settings'' tab.
 
  
Some options that are available for customization include:
+
SciTE4AutoIt3 comes with a customized AutoIt3 lexer which enables syntax highlighting.
* White Space
+
Syntax highlighting enables the colorization of various code elements such as variables, strings, operators, comments etc.
* Comment Line
+
Syntax highlighting allows one to differentiate the various code elements such as keywords, variables, strings, control flow structures etc. quickly without having to specifically identify the element.
* Comment Block
+
To load a custom theme a user may press [Ctrl] + [1] to bring up [[SciTEConfig]].
* Number
+
When the ''Color Settings'' tab is selected a button labeled 'New Scheme' will appear at the bottom.
* Function
+
Alternatively, the colors may be customized individually.
* Keyword
 
* Macro
 
* String
 
  
=Quick Tips=
+
Some options that are available for customization include: White Space, Comment Line, Comment Block, Number, Function, Keyword, Macro and String.
To access the helpfile the user may press [Alt] + [F1].
 
To quickly access help information on a specific function/statement, simply click/highlight the function/statement in question and press the [F1] key to bring up the help file on the relevant page.
 
  
For SciTE related help, use the key combination [Ctrl] + [F1] to bring up a help file detailing SciTE related help documentation. ''It's recommended that you read it.''
+
== Quick Tips ==
  
For anyone not familiar with SciTE, here are a few tips and tricks to help you easily modify the installation to suit your needs. For any "truly" advanced info, you should visit the [[http://www.scintilla.org/SciTEDoc.html SciTE home page]].
+
For anyone not familiar with SciTE, here are a few tips and tricks to help easily customize the installation.  
 +
For any advanced info, visit the [http://www.scintilla.org/SciTEDoc.html SciTE home page].
  
With the information below, you will be doing some minor editing to SciTE's configuration files.
+
=== Help Files ===
It is imperative that you know the hierarchy of SciTE's configuration files. The main files we will be dealing with here are listed below.
 
  
Remember there are four properties files used:
+
To access the AutoIt3 helpfile the user may press [F1].  For the full article see: [[Documentation]]
 +
To quickly access help information on a specific function, simply click or highlight the desired function and press the [F1] key to bring up the help file on the relevant page.
 +
To access the SciTE4AutoIt3 helpfile the user may press [ctrl] + [F1].
  
# ''SciTE.properties''
+
=== Properties Files ===
# ''SciTEDirectory.properties''
 
# ''SciTEUser.properties''
 
# ''SciTEGlobal.properties''
 
  
<table border="1">
+
Minor editing of SciTE's configuration files will be required to make use of the information in this section.
<tr><td>SciTE.properties</td><td>Local properties file which may be present in the same directory as the file being edited. This file overrides any other properties files settings below. This file is user created.</td></tr>
+
It is important to be familiar with the hierarchy of SciTE's configuration files.
<tr><td>SciTEDirectory.properties</td><td>Directory properties file which may be present in the same or in a parent directory as the file being edited. This file overrides all properties setting of the files below, but not the local properties settings aka ''SciTE.properties''. This file is user created.</td></tr>
 
<tr><td>SciTEUser.properties</td><td>User properties file, this files settings override only the Global properties settings aka ''SciTEGlobal.properties''. This file is found under the current logged on users profile directory.</td></tr>
 
<tr><td>SciTEGlobal.properties</td><td>All settings in this file can be overridden by any of the above files. Typically you shouldn't mess with this file and use any of the above methods to implement a setting change. This file can be found in SciTE's installation directory.</td></tr>
 
</table>
 
  
''If you have any trouble finding any of the previously mentioned files then I recommend that you do ''not'' continue further.''
+
There are four properties files used:
  
==Inline Errors==
+
{| border="1" class="wikitable"
[[File:InlineError.JPG‎‎|234px|thumb|right|Intentional error prone code used to display the "Inline Error" feature.]]
+
| SciTE.properties || Local properties file which may be present in the same directory as the file being edited. This file overrides any other properties files settings below. This file is user created.
In the latest version of SciTE, there exists a new feature called "Inline Errors", some users find them annoying. Inline Error marks are error messages that will appear in the source code within the Scintilla window. While helpful, some users prefer to disable this feature.
+
|-
You can quickly disable/enable them using the '''SciTEUser.properties'''.
+
| SciTEDirectory.properties || Directory properties file which may be present in the same or in a parent directory as the file being edited.
 +
This file overrides all properties setting of the files below, but not the local properties settings aka ''SciTE.properties''.
 +
This file is user created.
 +
|-
 +
| SciTEUser.properties || User properties file, this file's settings override only the global properties settings aka ''SciTEGlobal.properties''.
 +
This file is found under the current logged on users profile directory.
 +
|-
 +
| SciTEGlobal.properties || All settings in this file can be overridden by any of the above files.  
 +
Typically this file should not be edited.  
 +
Use any of the above methods to implement a setting change.
 +
This file can be found in SciTE's installation directory.
 +
|}
  
Open the SciTE user properties file in a text editor by selecting from the AutoIt menu Options, Open User Options File and add the following code to the file.
+
=== Inline Errors ===
  
To disable Inline Errors, add the following.
+
[[File:InlineError.JPG|234px|thumb|right|Intentional error prone code used to display the "Inline Error" feature.]]
<syntaxhighlight lang="properties">
 
# Display settings for inline errors on the source
 
error.inline=0
 
</syntaxhighlight>
 
To enable Inline Errors, add the following.
 
<syntaxhighlight lang="properties">
 
# Display settings for inline errors on the source
 
error.inline=1
 
</syntaxhighlight>
 
  
==Selection Highlighting==
+
In the latest version of SciTE, there exists a new feature called "Inline Errors".
In the latest SciTE4AutoIt3, there is a new feature which highlights other instances of the currently highlighted word or string. Due to the colors, sometimes it's hard to tell the selection apart.
+
Inline Error marks are error messages that will appear in the source code within the Scintilla window.
  
If you'd like, you can do either of two things using the ''SciTEUser.properties''.
+
The feature may be toggled and customized by using SciTEConfig.
# Disable it
 
# Change the color scheme
 
  
To disable it
+
=== Selection Highlighting ===
<syntaxhighlight lang="properties">
 
highlight.current.word=0
 
</syntaxhighlight>
 
To re-enable it, just delete it and save.
 
  
To change the color scheme, add the following to your SciTEUser.properties file.
+
Selection highlighting is a new feature which highlights other instances of the currently highlighted word or string.
<syntaxhighlight lang="properties">
+
Due to the colors, sometimes it is hard to tell the selection apart.
highlight.current.word.colour=#000040
+
The default colors may be changed.
selection.alpha=50
 
selection.back=#F025A8
 
</syntaxhighlight>
 
  
The user should try adjusting the ''#COLOR'' values to come to a preferred color.
+
The feature may be toggled and customized by using SciTEConfig.
  
==More Language Highlighting Options==
+
=== Colors in the Output Pane ===
In the SciTEUser.properties file, add the following code.
 
  
<syntaxhighlight lang="properties">
+
SciTE has a console window which can be used to output information from running scripts.
# Language Highlighting Options
+
The function {{Help File|ConsoleWrite}} may be used in an AutoIt script to output text to the console.
menu.language=\
+
The colors of the text may be altered by prepending a string with special characters.
#FreeBasic|bas||\
 
Text|txt|Shift+F11|\
 
#Ada|ads||\
 
AutoIt3|au3|Shift+F12|\
 
#Apache Confi&g|conf||\
 
#Assembler|asm||\
 
#ASN.1|asn1||\
 
#Avenue|ave||\
 
#Baan|bc||\
 
#&Batch|bat||\
 
#Bullant|ant||\
 
#&C / C++|cpp||\
 
#CMake|cmake||\
 
#C&#|cs||\
 
#COBOL|cob||\
 
#Csound|orc||\
 
#CSS|css||\
 
#D|d||\
 
#&Difference|diff||\
 
#&Eiffel|e||\
 
#Erlang|erl||\
 
#&Errorlist|err||\
 
#FlagShip|prg||\
 
#&Fortran|f90||\
 
#&Fortran|f90||\
 
#Gap|g||\
 
#Haskell|hs||\
 
#H&ypertext|html|$(keyHTML)|\
 
#&InnoSetup|iss||\
 
#&Java|java||\
 
#Java&Script|js||\
 
#&Kix|kix||\
 
#Lisp|lisp||\
 
#Lot|lot||\
 
#Lout|lt||\
 
#Lu&a|lua||\
 
#Matlab|m.matlab||\
 
#&Makefile|mak||\
 
#MetaPost|mp||\
 
#MMIXAL|mms||\
 
#Modula-3|m3||\
 
#&nnCron crontab|tab||\
 
#NSIS|nsis||\
 
#Objective Caml|ml||\
 
#Octave|m.octave||\
 
#Opal|impl||\
 
#Pascal|pas||\
 
#Pe&rl|pl||\
 
#P&HP|php||\
 
#P&LSQL|spec||\
 
#P&ostScript|ps||\
 
#P&OV-Ray SDL|pov||\
 
#PowerShell|ps1||\
 
#PowerPro|powerpro||\
 
#&Properties|properties||\
 
#Pytho&n|py||\
 
#R|R||\
 
#Reso&urce|rc||\
 
#Ruby|rb||\
 
#Shell|sh||\
 
#S&QL|sql||\
 
#Specman|e||\
 
#&TCL|tcl||\
 
#TeX|tex||\
 
#&txt2tags|t2t||\
 
#&VB|vb||\
 
#VBScr&ipt|vbs||\
 
#Verilog|v||\
 
#VHDL|vhd||\
 
#&XML|xml||\
 
#&YAML|yaml||
 
</syntaxhighlight>
 
  
For whatever language you wish to have an option appear under the ''Language'' menu option, uncomment the language.  Say you want to SciTE to give you the option to highlight batch script code, change the following string in the above list from
+
For example:
  
<syntaxhighlight lang="properties">
+
<syntaxhighlight lang="AutoIt">
#&Batch|bat||\
+
ConsoleWrite("This is plain text" & @LF)
 +
ConsoleWrite("> This text will have a different color." & @LF)
 +
ConsoleWrite("+ This text will have a different color." & @LF)
 +
ConsoleWrite("- This text will have a different color." & @LF)
 +
ConsoleWrite("! This text will have a different color." & @LF)
 
</syntaxhighlight>
 
</syntaxhighlight>
to
 
<syntaxhighlight lang="properties">
 
&Batch|bat||\
 
</syntaxhighlight>
 
Restart SciTE and if done correctly, the option should be present!  Do this for any language listed in the above example list.
 
  
In the case that you uncommented a language and you notice that it's not being highlighted correctly, then we will have to edit some things in the '''SciTEGlobal.properties''' file.
+
== AutoIt3Wrapper ==
 +
 
 +
AutoIt3Wrapper directives allow for in depth control of the compilation and interpretation of AutoIt scripts. 
 +
Some of these can be very useful under different circumstances.
 +
See [[AutoIt3Wrapper Directives]] for a full list of directives and their descriptions.
  
Open the '''SciTEGlobal.properties''' file in a text editor and find the section
+
== Au3Stripper ==
<syntaxhighlight lang="properties">
 
# import properties\all the language specific properties files
 
</syntaxhighlight>
 
Below that section there will be a few strings that look like
 
<syntaxhighlight lang="properties">
 
#import properties\[syntax]
 
</syntaxhighlight>
 
Uncomment the syntax related property you wish to have support for.
 
  
Say you wanted support for ruby, just locate the one that says ''ruby'' where ''[syntax]'' is written.
+
[[Au3Stripper]] may be used to strip away unused [[Function|functions]] and [[Global|global]] [[Variable|variables]] from the script prior to compilation. 
 +
Functions and variables may be renamed to shorter three character names to save space and to provide some measure of obscurity.
  
==Colors in the Output Pane==
+
=== Stripping Excess Code ===
When you use SciTE as your AutoIt script editor it is a simple matter to get color in the output pane while you test run your code. Try this:
 
<syntaxhighlight lang="AutoIt">
 
ConsoleWrite("This is plain text" & @LF)
 
ConsoleWrite(">Make it have some color" & @LF)
 
ConsoleWrite("+Make it have some other color" & @LF)
 
ConsoleWrite("-Make it have some other color" & @LF)
 
ConsoleWrite("!Make it have some other color" & @LF)
 
</syntaxhighlight>
 
  
==Debugging Code Easily==
+
For instance, in a script that has several includes Au3Stripper can often strip thousands of lines from the script.
This is one of my (@uten's) favorites.
 
<syntaxhighlight lang="autoit">
 
dbg("This is a test")
 
dbg("Jump to this line")
 
dbg("just by clicking my output line")
 
  
Func dbg($msg, $error = @error, $extended = @extended, $erl = @ScriptLineNumber)
+
<syntaxhighlight lang="AutoIt">
    ConsoleWrite("(" & $erl & ") : = (" & $error & ")(" & $extended & ") " & $msg & @LF)
+
#AutoIt3Wrapper_Run_Au3Stripper=y
    If $error <> 0 Then SetError($error, $extended, $error)
+
#Au3Stripper_Parameters=/sf /sv /rm
    Return $error
 
EndFunc  ;==>dbg
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 
=AutoIt3Wrapper=
 
AutoIt3Wrapper directives allow much greater and in depth control of your resulting programs. Some of these can be very useful under different circumstances.
 
 
==Stripping Excess Code==
 
For instance, if you have several includes, then you can often strip thousands of lines from your program using obfuscator:
 
 
#AutoIt3Wrapper_Run_Obfuscator=y
 
#Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
 
  
 
On a medium sized script, results are often like this:
 
On a medium sized script, results are often like this:
  
  >Running Obfuscator (1.0.27.0)  from:C:\Program Files\AutoIt3\SciTE cmdline:
+
  >Running Au3Stripper (1.2.0.6)  from:C:\Program Files\AutoIt3\SciTE cmdline:
 
  - Iteration 1 Strip Functions result: Output  2580 lines and stripped 6741 lines
 
  - Iteration 1 Strip Functions result: Output  2580 lines and stripped 6741 lines
 
  - Iteration 2 Strip Variables result: Output  1585 lines and stripped 950 lines
 
  - Iteration 2 Strip Variables result: Output  1585 lines and stripped 950 lines
Line 248: Line 119:
 
  +> Stripped  7710 Func/Var lines and  16862 comment lines, Total 1373871 Characters.
 
  +> Stripped  7710 Func/Var lines and  16862 comment lines, Total 1373871 Characters.
 
  +> Saved    93% lines 94% Characters.
 
  +> Saved    93% lines 94% Characters.
  +> Obfuscator v1.0.27.0 finished obfuscating 1566 lines, created:C:\MyScript_Obfuscated.au3
+
  +> Au3Stripper v1.0.27.0 finished obfuscating 1566 lines, created:C:\MyScript_stripped.au3
  
==Using ResHacker==
+
== Run_After and Run_Before Commands ==
ResHacker is a very important programming tool for extracting and adding resources into executables. It has a very simple command line interface that allows it to be used easily using the "Run_After" directive. Adding a picture to an executable could be done like this:
 
  
#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, MyPicture.bmp, BITMAP, RESOURCENAME, 0
+
=== Running the exe On Build ===
  
*NB:* Reshacker.exe ''must'' be copied into the script directory for this to work!
+
Often a build is performed as a testing procedure and so to have to continually open up Windows Explorer to find the exe is repetitive.  
 +
Furthermore, if the script writes to the console using the function {{Help File|ConsoleWrite}} then the messages will not be written to SciTE's console pane.  The solution is simple:
  
If you then want to use the resources in your code, there is an excellent [http://www.autoitscript.com/forum/index.php?showtopic=51103 Resources UDF] which will allow you to access the resources from within the exe.
+
#AutoIt3Wrapper_Run_After="%out%"
  
==Adding Original Source Code==
+
This will run the program and read the console output to the SciTE debug frame.
When using the above tip on stripping excess code, the new source is not readable. As a result, using the standard directive for saving the source:
 
 
 
#AutoIt3Wrapper_Res_SaveSource=y
 
 
 
Would add the obfuscated code to the exe, which is not the desired result. The solution is to add it in manually. This code does not require any editing, so you can just copy and paste it in:
 
  
#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, %scriptfile%.au3, RCDATA, SOURCE, 0
+
=== Creating a Version Directory ===
  
==Creating a Version Directory==
+
When compiling, it is very possible that you want to go back to a previous version.  
When compiling, it is very possible that you want to go back to a previous version. If so, then it is neat to have a directory which will store all previous builds, without the need for you to manually copy and paste every time! Make sure you add these directives in last (after adding resources) as they might not be included in the copied result.
+
If so, then it is neat to have a directory which will store all previous builds, without the need for you to manually copy and paste every time.
 +
Make sure you add these directives in last (after adding resources) as they might not be included in the copied result.
  
 
  #AutoIt3Wrapper_Run_After=md "%scriptdir%\Versions\%fileversion%"
 
  #AutoIt3Wrapper_Run_After=md "%scriptdir%\Versions\%fileversion%"
Line 275: Line 142:
 
  #AutoIt3Wrapper_Run_After=copy "%out%" "%scriptdir%\Versions\%fileversion%\%scriptfile%%fileversion%.exe"
 
  #AutoIt3Wrapper_Run_After=copy "%out%" "%scriptdir%\Versions\%fileversion%\%scriptfile%%fileversion%.exe"
  
==Running the exe on Build==
+
=== Using ResHacker ===
Often you are building as a test, so to have to open up Windows Explorer to get the exe is a pain, furthermore, unless you have a program to do it (or it's a console program) you will not be able to read console info such as the debug messages you put in the exe. The solution is simple:
+
 
 +
ResHacker is a very important programming tool for extracting and adding resources into executables.
 +
It has a very simple command line interface that allows it to be used easily using the "Run_After" directive.
 +
Adding a picture to an executable could be done like this:
 +
 
 +
#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, MyPicture.bmp, BITMAP, RESOURCENAME, 0
 +
 
 +
NB: Reshacker.exe ''must'' be copied into the script directory for this to work.
 +
 
 +
If you then want to use the resources in your code, there is an excellent [http://www.AutoItscript.com/forum/index.php?showtopic=51103 Resources UDF] which will allow you to access the resources from within the exe.
 +
 
 +
==== Adding Original Source Code ====
 +
 
 +
When using the above tip on stripping excess code, the new source is not readable.
 +
As a result, using the standard directive for saving the source:
 +
 
 +
#AutoIt3Wrapper_Res_SaveSource=y
  
#AutoIt3Wrapper_Run_After="%out%"
+
Would add the obfuscated code to the exe, which is not the desired result.
 +
The solution is to add it in manually.
 +
This code does not require any editing, so you can just copy and paste it in:
  
This will run the program and read the console output to the SciTE debug frame.
+
#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, %scriptfile%.au3, RCDATA, SOURCE, 0
 +
 +
==== Extended Reshacker Info ====
  
==Extended Reshacker Info==
 
 
ResHacker doesn't always return with a return code (rc) of not 0 if it fails, to get that info you need to read the ResHacker.log file that is created. This is also pretty simple to do:
 
ResHacker doesn't always return with a return code (rc) of not 0 if it fails, to get that info you need to read the ResHacker.log file that is created. This is also pretty simple to do:
  
Line 311: Line 197:
 
As you can see, Reshacker on its own returns rc: 0, usually indicating no error. This would have gone completely unnoticed except for the log file, which shows the error and an explanation.
 
As you can see, Reshacker on its own returns rc: 0, usually indicating no error. This would have gone completely unnoticed except for the log file, which shows the error and an explanation.
  
==Other Run_After and Run_Before Commands==
+
=== Other Run_After and Run_Before Commands ===
 +
 
 
You can use any commands you like in the Run_After and Run_Before directives. Examples such as "TYPE" have been shown above.  
 
You can use any commands you like in the Run_After and Run_Before directives. Examples such as "TYPE" have been shown above.  
  
 
For a more complete list the following website is very useful: [http://ss64.com/nt An A-Z Index of the Windows CMD Line]
 
For a more complete list the following website is very useful: [http://ss64.com/nt An A-Z Index of the Windows CMD Line]
  
=Other Wiki Pages=
+
== Other Wiki Pages ==
 +
 
 
[[Adding_utilities_to_the_SciTE_Tools_menu|Adding Utilities to the SciTE Tools Menu]]
 
[[Adding_utilities_to_the_SciTE_Tools_menu|Adding Utilities to the SciTE Tools Menu]]
  
 
[[Adding_UDFs_to_AutoIt_and_SciTE|Adding UDFs to AutoIt and SciTE]]
 
[[Adding_UDFs_to_AutoIt_and_SciTE|Adding UDFs to AutoIt and SciTE]]
  
=Useful Lua links and scripts=
+
== Useful Lua links and scripts ==
  
[http://www.lua.org/ http://www.lua.org/]
+
[http://www.scintilla.org/SciTELua.html SciTELua]
  
[http://www.lua.org/pil/1.html/ Programming in Lua]
+
[http://www.lua.org Lua Website]
  
[http://lua-users.org/wiki/ http://lua-users.org/wiki/]
+
[http://www.lua.org/pil/1.html Programming in Lua]
  
[http://lua-users.org/wiki/SciteScripts/ http://lua-users.org/wiki/SciteScripts]
+
[http://lua-users.org/wiki/ lua-users wiki]
  
[http://lua-users.org/wiki/SampleCode http://lua-users.org/wiki/SampleCode]
+
[http://lua-users.org/wiki/SciTEScripts SciTEScripts]
  
[http://www.autoitscript.com/forum/topic/140881-mouse-hover-call-tips-update-03182013/ AU3Forum: mouse-hover-call-tips]
+
[http://lua-users.org/wiki/SampleCode SampleCode]
  
[http://www.autoitscript.com/forum/topic/152960-scite-lua-tool-to-make-string-variable-from-selected-text/ AU3Forum: scite-lua-tool-to-make-string-variable-from-selected-text]
+
[http://www.AutoItscript.com/forum/topic/140881-mouse-hover-call-tips-update-03182013/ AutoIt3 Forum: MouseHoverCallTips]
 +
 
 +
[http://www.AutoItscript.com/forum/topic/152960-SciTE-lua-tool-to-make-string-variable-from-selected-text/ AutoIt3 Forum: SciTE lua Tool To Make String Variable From Selected Text]
 +
 
 +
[https://www.autoitscript.com/forum/topic/174110-scite-show-hex-color-value-in-the-script/ AutoIt3 Forum: SciTE - show hex color value in the script]
 +
[[Category:SciTE]]
 +
 
 +
[https://www.autoitscript.com/forum/topic/186123-scite-fold-within-regions/ AutoIt3 Forum: Scite fold within Regions]
 +
[[Category:SciTE]]

Latest revision as of 22:49, 2 September 2018

Introduction

SciTE4AutoIt3 is a specialist editor package based on the excellent SciTE editor. SciTE has been set up to compile AutoIt scripts and has been extended with a multitude of Lua scripts. SciTE4AutoIt3 may be downloaded here: SciTE4AutoIt3. Keep in mind that SciTE4AutoIt3 is not an official package. Direct any bug reports or feature requests to the AutoIt3 forum and not the bug tracker.

Syntax Highlighting

A demonstration of syntax highlighting using the default theme.

SciTE4AutoIt3 comes with a customized AutoIt3 lexer which enables syntax highlighting. Syntax highlighting enables the colorization of various code elements such as variables, strings, operators, comments etc. Syntax highlighting allows one to differentiate the various code elements such as keywords, variables, strings, control flow structures etc. quickly without having to specifically identify the element. To load a custom theme a user may press [Ctrl] + [1] to bring up SciTEConfig. When the Color Settings tab is selected a button labeled 'New Scheme' will appear at the bottom. Alternatively, the colors may be customized individually.

Some options that are available for customization include: White Space, Comment Line, Comment Block, Number, Function, Keyword, Macro and String.

Quick Tips

For anyone not familiar with SciTE, here are a few tips and tricks to help easily customize the installation. For any advanced info, visit the SciTE home page.

Help Files

To access the AutoIt3 helpfile the user may press [F1]. For the full article see: Documentation To quickly access help information on a specific function, simply click or highlight the desired function and press the [F1] key to bring up the help file on the relevant page. To access the SciTE4AutoIt3 helpfile the user may press [ctrl] + [F1].

Properties Files

Minor editing of SciTE's configuration files will be required to make use of the information in this section. It is important to be familiar with the hierarchy of SciTE's configuration files.

There are four properties files used:

SciTE.properties Local properties file which may be present in the same directory as the file being edited. This file overrides any other properties files settings below. This file is user created.
SciTEDirectory.properties Directory properties file which may be present in the same or in a parent directory as the file being edited.

This file overrides all properties setting of the files below, but not the local properties settings aka SciTE.properties. This file is user created.

SciTEUser.properties User properties file, this file's settings override only the global properties settings aka SciTEGlobal.properties.

This file is found under the current logged on users profile directory.

SciTEGlobal.properties All settings in this file can be overridden by any of the above files.

Typically this file should not be edited. Use any of the above methods to implement a setting change. This file can be found in SciTE's installation directory.

Inline Errors

Intentional error prone code used to display the "Inline Error" feature.

In the latest version of SciTE, there exists a new feature called "Inline Errors". Inline Error marks are error messages that will appear in the source code within the Scintilla window.

The feature may be toggled and customized by using SciTEConfig.

Selection Highlighting

Selection highlighting is a new feature which highlights other instances of the currently highlighted word or string. Due to the colors, sometimes it is hard to tell the selection apart. The default colors may be changed.

The feature may be toggled and customized by using SciTEConfig.

Colors in the Output Pane

SciTE has a console window which can be used to output information from running scripts. The function ConsoleWrite may be used in an AutoIt script to output text to the console. The colors of the text may be altered by prepending a string with special characters.

For example:

ConsoleWrite("This is plain text" & @LF)
ConsoleWrite("> This text will have a different color." & @LF)
ConsoleWrite("+ This text will have a different color." & @LF)
ConsoleWrite("- This text will have a different color." & @LF)
ConsoleWrite("! This text will have a different color." & @LF)

AutoIt3Wrapper

AutoIt3Wrapper directives allow for in depth control of the compilation and interpretation of AutoIt scripts. Some of these can be very useful under different circumstances. See AutoIt3Wrapper Directives for a full list of directives and their descriptions.

Au3Stripper

Au3Stripper may be used to strip away unused functions and global variables from the script prior to compilation. Functions and variables may be renamed to shorter three character names to save space and to provide some measure of obscurity.

Stripping Excess Code

For instance, in a script that has several includes Au3Stripper can often strip thousands of lines from the script.

#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/sf /sv /rm

On a medium sized script, results are often like this:

>Running Au3Stripper (1.2.0.6)  from:C:\Program Files\AutoIt3\SciTE cmdline:
- Iteration 1 Strip Functions result: Output  2580 lines and stripped 6741 lines
- Iteration 2 Strip Variables result: Output  1585 lines and stripped 950 lines
- Iteration 3 Strip Variables result: Output  1566 lines and stripped 19 lines
- Iteration 4 Start the actual Obfuscation.
+> Source    26190 lines 1447980 Characters.
+> Stripped  7710 Func/Var lines and  16862 comment lines, Total 1373871 Characters.
+> Saved     93% lines 94% Characters.
+> Au3Stripper v1.0.27.0 finished obfuscating 1566 lines, created:C:\MyScript_stripped.au3

Run_After and Run_Before Commands

Running the exe On Build

Often a build is performed as a testing procedure and so to have to continually open up Windows Explorer to find the exe is repetitive. Furthermore, if the script writes to the console using the function ConsoleWrite then the messages will not be written to SciTE's console pane. The solution is simple:

#AutoIt3Wrapper_Run_After="%out%"

This will run the program and read the console output to the SciTE debug frame.

Creating a Version Directory

When compiling, it is very possible that you want to go back to a previous version. If so, then it is neat to have a directory which will store all previous builds, without the need for you to manually copy and paste every time. Make sure you add these directives in last (after adding resources) as they might not be included in the copied result.

#AutoIt3Wrapper_Run_After=md "%scriptdir%\Versions\%fileversion%"
#AutoIt3Wrapper_Run_After=copy "%in%" "%scriptdir%\Versions\%fileversion%\%scriptfile%%fileversion%.au3"
#AutoIt3Wrapper_Run_After=copy "%out%" "%scriptdir%\Versions\%fileversion%\%scriptfile%%fileversion%.exe"

Using ResHacker

ResHacker is a very important programming tool for extracting and adding resources into executables. It has a very simple command line interface that allows it to be used easily using the "Run_After" directive. Adding a picture to an executable could be done like this:

#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, MyPicture.bmp, BITMAP, RESOURCENAME, 0

NB: Reshacker.exe must be copied into the script directory for this to work.

If you then want to use the resources in your code, there is an excellent Resources UDF which will allow you to access the resources from within the exe.

Adding Original Source Code

When using the above tip on stripping excess code, the new source is not readable. As a result, using the standard directive for saving the source:

#AutoIt3Wrapper_Res_SaveSource=y

Would add the obfuscated code to the exe, which is not the desired result. The solution is to add it in manually. This code does not require any editing, so you can just copy and paste it in:

#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, %scriptfile%.au3, RCDATA, SOURCE, 0

Extended Reshacker Info

ResHacker doesn't always return with a return code (rc) of not 0 if it fails, to get that info you need to read the ResHacker.log file that is created. This is also pretty simple to do:

#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, MyPicture.bmp, BITMAP, RESOURCENAME, 0
#AutoIt3Wrapper_Run_After=TYPE ResHacker.log

The new output now looks like this:

>Running:ResHacker.exe -add C:\MyScript.exe, C:\MyScript.exe, MyPicture.bmp, BITMAP, RESOURCENAME, 0
>ResHacker.exe -add C:\MyScript.exe, C:\MyScript.exe, MyPicture.bmp, BITMAP, RESOURCENAME, 0 Ended   rc:0
>Running:TYPE ResHacker.log
[19 Jan 2010, 21:26:22]
ResHacker.exe  -add C:\MyScript.exe, C:\MyScript.exe, MyPicture.bmp, BITMAP, RESOURCENAME, 0
 Added: BITMAP,RESOURCENAME,0

Commands completed
>TYPE ResHacker.log Ended   rc:0

And an example of it showing an error:

>ResHacker.exe -add C:\MyScript.exe, C:\MyScript.exe, MyPicture.bmp, BITMAP, RESOURCENAME, 0 Ended   rc:0
>Running:TYPE ResHacker.log
[19 Jan 2010, 21:32:10]
ResHacker.exe  -add C:\MyScript.exe, C:\MyScript.exe, MyPicture.bmp, BITMAP, RESOURCENAME, 0
Error: "MyPicture.bmp" does not exist
>TYPE ResHacker.log Ended   rc:0

As you can see, Reshacker on its own returns rc: 0, usually indicating no error. This would have gone completely unnoticed except for the log file, which shows the error and an explanation.

Other Run_After and Run_Before Commands

You can use any commands you like in the Run_After and Run_Before directives. Examples such as "TYPE" have been shown above.

For a more complete list the following website is very useful: An A-Z Index of the Windows CMD Line

Other Wiki Pages

Adding Utilities to the SciTE Tools Menu

Adding UDFs to AutoIt and SciTE

Useful Lua links and scripts

SciTELua

Lua Website

Programming in Lua

lua-users wiki

SciTEScripts

SampleCode

AutoIt3 Forum: MouseHoverCallTips

AutoIt3 Forum: SciTE lua Tool To Make String Variable From Selected Text

AutoIt3 Forum: SciTE - show hex color value in the script

AutoIt3 Forum: Scite fold within Regions