Release 0.1
This plugin adds support of Bethesda's Papyrus scripting language to Notepad++. It provides syntax highlighting with automatic recognition of class names, function names, and defined properties. It also comes with a compiler that can provide compilation errors in a separate list window, as well as inline annotation and indication where errors are reported, plus support anonymization of compiled .pex files.
This plugin is derived from the original PapyrusPlusPlus plugin created by tschilkroete, with many bug fixes, enhancements, and made to work with the latest Notepad++ release.
Changes from original work
Bug fixes
- [Lexer] Syntax highlighting with lexer now properly works with the latest Notepad++ version, so you no longer need to use a separate user-defined language XML, which defeats the purpose of a lexer.
- [Compiler] Can handle huge compilation error list (this usually happens when a referenced script has errors or referenced script source does not exist), so that status message no longer gets stuck at "Compiling...".
- [Compiler] In error list window, clicking on an error from a file that has not been opened yet will now correctly move cursor to the error line.
- [Compiler] Any exceptions while trying to compile the script are now properly shown to user (exceptions likely won't happen anyway).
- [Lexer] Operators are now correctly styled with defined OPERATOR style, instead of the wrong TYPE style.
- [Lexer] Proper syntax highlighting with strings that contain double quote escapes.
- [Lexer] Proper syntax highlighting with integers literals that start with minus sign.
- [Lexer] Proper syntax highlighting with float literals that contain decimal point.
- [Compiler] Only run compiler if active file is using Papyrus Script lexer (configurable behavior).
Improvements
- {Lexer] Upgrade to support Scintilla's ILexer5.
- [Lexer] Support folding on properties. Original plugin likely omitted properties from folding since it could not exclude those that have definitions done in a single line.
- [Lexer] Support "folding in code, middle" so that Else and ElseIf can be folded as well.. Configurable behavior, default on.
- [Compiler] Compilation error list window will be hidden when starting a new compilation.
- [Compiler] Compilation error list window will not contain duplicate error messages.
- [Compiler] Support more compilation flags:
- -optimize (all games)
- -release and -final (Fallout 4)
- [Lexer] Separate the list of Papyrus language defined keywords into 2, so Parent/Self/True/False/None can be styled differently.
- [Compiler] Status bar shows the game name for current Papyrus script file.
- [Compiler] Status bar shows compiling status if switching to another file and back while compiling.
- [Compiler] When compilation succeeds or fails, status bar shows the file name alongside result message, if current file window is not the same as the one that got compiled.
- [Lexer] Slightly better performance in syntax highlighting with property name caching, especially with big script files. In addition, class name caching can be turned on in Settings menu. However, there is a caveat. See configuration guide for details. Configurable behavior, default off.
- [Settings] No more forced setup on startup.
- [Settings] Revamped UI with many more settings now configurable.
New features
- [Compiler] Anonymize compiled .pex file. In case you are not aware, when you use PapyrusCompiler to compile any script your user account and machine name are stored inside the generated .pex file, so it's a big privacy concern.
- [Annotator] Show annotation below error lines, and/or show indications where errors are (configurable behavior).
- [Compiler] Skyrim SE and Fallout 4 support.
- [Compiler] Auto detection of game/compiler settings to be used based on source script file location.
- [Lexer] Syntax highlighting of function names.
- [Lexer] Class names can be styled as links to open the script files. Configurable behavior, default on (with double click).
- [Lexer] A new "Advanced" submenu with:
- Show langID - can be used to find out internal langID assigned to Papyrus Script lexer, which is useful if you need to manually configure Notepad++'s functionList feature.
- Install auto completion support - provides auto-completion support for functions defined in base game, SKSE, and even SkyUI.
- Install function list support - allows using "View" -> "Function List" menu to show all defined functions in a Papyrus script file.