blu3mania / npp-papyrus

Notepad++ plugin to provide Papyrus scripting language support to Notepad++, such as syntax highlighting with automatic recognition of class names/functions/properties, keywords matching, and hyperlinks to referenced scripts. 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.
GNU General Public License v3.0
24 stars 7 forks source link
fallout4 fallout4-modding notepad-plus-plus notepad-plusplus-plugin notepadplusplus papyrus papyrus-language papyrus-script skyrim skyrim-ae skyrim-modding skyrim-se skyrim-special-edition

Papyrus Plugin for Notepad++

GPL v3 License Notepad++ Plugin Visual Studio 2022 Visual Studio Code C++

Build Status CodeQL Status Microsoft C++ Code Analysis Status Latest Release

This plugin adds support for Bethesda's Papyrus scripting language to Notepad++. It provides syntax highlighting with automatic recognition of class names/functions/properties, supports keywords matching and hyperlinks to referenced scripts. 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 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

Improvements

New features

Download

Get the latest release from here.

Installation

Please find installation guide here.

WARNING:

Configuration

Please find configuration guide here.

Building

The project comes with the needed Scintilla/Lexilla and Notepad++ files for building. It also references GSL and TinyXML2 as submodules, which means if you clone the repository, you should specify --recurse-submodules to also get these modules in your local repository.

Code Structure

├── .github - GitHub related files
│   └── workflows - GitHub action workflows
├── .vscode - configuration files for VS Code
├── dist - output folder, used by build script to create the release package
│   ├── extras - extra configuration files that can be used in Notepad++
│   │   ├── autoCompletion - auto completion configuration file for Papyrus scripts
│   │   ├── functionList - function list configuration file for Papyrus scripts
│   │   └── userDefineLangs - user-defined Papyrus language instead of this plugin's lexer
│   └── themes - lexer configuration files for specific themes
│       └── DarkModeDefault - lexer configuration file for Dark Mode
└── src - source code
    ├── external - source files from external projects (may be modified)
    │   ├── gsl - references GSL as submodule
    │   ├── lexilla - Lexilla source files
    │   ├── npp - Notepad++ source files
    │   ├── scintilla - Scintilla source files
    │   ├── tinyxml2 - references TinyXML2 as submodule
    │   └── XMessageBox - adopted and modified XMessageBox to provide dark mode support
    └── Plugin - source files of this plugin
        ├── Common - common definitions and utilities shared by all modules
        ├── CompilationErrorHandling - show/annotate compilation errors
        ├── Compiler - invoke Papyrus compiler in a separate thread
        ├── Lexer - Papyrus script lexer that provides syntax highlighting
        ├── KeywordMatcher - matching keywords highlighter
        ├── Settings - read/write Papyrus.ini and provide configuration support to other modules
        └── UI - other UI dialogs, such as About dialog

Disclaimer

Both original work and this plugin are licensed under GPL v3, so make sure you read and understand it if you are creating derived work. Most importantly, you cannot modify the code and only publish binary output without making the modified code also publicly available.