{"id":25255080,"url":"https://github.com/blu3mania/npp-papyrus","last_synced_at":"2025-10-17T04:38:08.433Z","repository":{"id":39317840,"uuid":"340916729","full_name":"blu3mania/npp-papyrus","owner":"blu3mania","description":"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.","archived":false,"fork":false,"pushed_at":"2025-07-03T02:31:45.000Z","size":874,"stargazers_count":30,"open_issues_count":2,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-03T03:29:52.931Z","etag":null,"topics":["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"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blu3mania.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-02-21T14:09:05.000Z","updated_at":"2025-07-03T02:31:41.000Z","dependencies_parsed_at":"2023-10-01T18:27:54.866Z","dependency_job_id":"ba1a279e-fc0e-4f6a-b137-50f3dac68123","html_url":"https://github.com/blu3mania/npp-papyrus","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/blu3mania/npp-papyrus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blu3mania%2Fnpp-papyrus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blu3mania%2Fnpp-papyrus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blu3mania%2Fnpp-papyrus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blu3mania%2Fnpp-papyrus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blu3mania","download_url":"https://codeload.github.com/blu3mania/npp-papyrus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blu3mania%2Fnpp-papyrus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278903017,"owners_count":26065786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2025-02-12T05:52:02.131Z","updated_at":"2025-10-08T06:43:03.563Z","avatar_url":"https://github.com/blu3mania.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Papyrus Plugin for Notepad++\n[![GPL v3 License](https://img.shields.io/badge/License-GPL%20v3-blue)](https://raw.githubusercontent.com/blu3mania/npp-papyrus/main/LICENSE)\n[![Notepad++ Plugin](https://img.shields.io/badge/Notepad++-Plugin-blue.svg?\u0026logo=notepad%2B%2B)](https://notepad-plus-plus.org/)\n[![Visual Studio 2022](https://img.shields.io/badge/Visual%20Studio-2022-blue?logo=visual-studio)](https://visualstudio.microsoft.com/downloads/)\n[![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-grey?logo=visual-studio-code)](https://code.visualstudio.com/)\n[![C++](https://img.shields.io/badge/c++-blue.svg?\u0026logo=c%2B%2B)](https://www.open-std.org/jtc1/sc22/wg21/docs/standards)\n\n[![Build Status](https://github.com/blu3mania/npp-papyrus/workflows/Build/badge.svg?branch=main)](https://github.com/blu3mania/npp-papyrus/actions/workflows/build.yml)\n[![CodeQL Status](https://github.com/blu3mania/npp-papyrus/workflows/CodeQL/badge.svg?branch=main)](https://github.com/blu3mania/npp-papyrus/actions/workflows/codeql-analysis.yml)\n[![Microsoft C++ Code Analysis Status](https://github.com/blu3mania/npp-papyrus/workflows/Microsoft%20C++%20Code%20Analysis/badge.svg?branch=main)](https://github.com/blu3mania/npp-papyrus/actions/workflows/msvc-analysis.yml)\n[![Latest Release](https://img.shields.io/github/v/release/blu3mania/npp-papyrus)](https://github.com/blu3mania/npp-papyrus/releases/latest)\n\nThis plugin adds support for [Bethesda](https://bethesdagamestudios.com/)'s *Papyrus* scripting language to\n[Notepad++](https://notepad-plus-plus.org/).\nIt provides syntax highlighting with automatic recognition of ***class names/functions/properties***,\nsupports ***keywords matching*** and ***hyperlinks to referenced scripts***.\nIt also comes with a compiler that can provide ***compilation errors*** in a separate list window, as well\nas ***inline annotation*** and ***indication*** where errors are reported, plus ***anonymization*** of\ncompiled *.pex* files.\n\nThis plugin is derived from the original [PapyrusPlusPlus](https://github.com/tschilkroete/PapyrusPlusPlus)\nplugin created by [tschilkroete](https://www.nexusmods.com/skyrim/users/20418429), with many bug fixes,\nenhancements, and made to work with the latest Notepad++ release.\n\n\n## Changes from original work\n### Bug fixes\n- **[Lexer]** Syntax highlighting with lexer now properly works with the latest Notepad++ version, so you no\n  longer need to use a separate user-defined language XML, which defeats the purpose of a *lexer*.\n- **[Compiler]** Can now handle huge compilation error list (this usually happens when a referenced script\n  has errors or referenced script source does not exist), so that status message no longer gets stuck at\n  *\"Compiling...\"*.\n- **[Compiler]** In error list window, clicking on an error from a file that has not been opened yet will now\n  correctly move cursor to the error line.\n- **[Compiler]** Any exceptions while trying to compile the script are now properly shown to user (exceptions\n  likely won't happen anyway).\n- **[Lexer]** Operators are now correctly styled with defined *Operator* style, instead of the wrong *Type*\n  style.\n- **[Lexer]** Proper syntax highlighting with strings that contain double quote escapes.\n- **[Lexer]** Proper syntax highlighting with integer literals that start with minus sign.\n- **[Lexer]** Proper syntax highlighting with float literals that contain decimal point.\n- **[Lexer]** Proper syntax highlighting with comments where \"/\" appears before/after \";\" with spaces in\n  between.\n- **[Lexer]** Word *\"property\"* in comments is now correctly excluded from property handling.\n- **[Lexer]** Correctly detect properties in edge cases like copying property lines and then editing.\n- **[Lexer]** White spaces are now styled correctly.\n- **[Compiler]** Only run compiler if active file is using Papyrus Script lexer. Configurable behavior,\n  default on.\n- **[Compiler]** Properly release process handle after compilation.\n\n### Improvements\n- **[Lexer]** Upgrade to support Scintilla's *ILexer5*.\n- **[Lexer]** Support folding on properties. Original plugin likely omitted properties from folding since it\n  could not exclude those that have definitions done in a single line.\n- **[Lexer]** Support *\"folding in code, middle\"* so that *Else* and *ElseIf* can be folded as well.\n  Configurable behavior, default on.\n- **[Compiler]** Compilation error list window will be hidden when starting a new compilation.\n- **[Compiler]** Compilation error list window will not contain duplicate error messages.\n- **[Compiler]** Support more compilation flags:\n  - -optimize (all games)\n  - -release and -final (*Fallout 4*)\n- **[Compiler]** Handle the rare compilation error cases with \"-op\" flag when errors are reported on *.pas*\n  files.\n- **[Compiler]** Handle generic compilation errors that are not reported on source files or *.pas* files, e.g.\n  when one of the import directories is invalid.\n- **[Lexer]** Separate the list of Papyrus language defined keywords into 2, so *Parent/Self/True/False/None*\n  can be styled differently.\n- **[Compiler]** Status bar shows the game name for current Papyrus script file.\n- **[Compiler]** Status bar shows compiling status if switching to another file and back while compiling.\n- **[Compiler]** When compilation succeeds or fails, status bar shows the file name alongside result message,\n  if current file window is not the same as the one that got compiled.\n- **[Lexer]** Slightly better performance in syntax highlighting with property name caching, especially with\n  big script files.\n- **[Lexer]** In addition, class name caching can be turned on in Settings menu. However, there is a caveat.\n  See [configuration guide](Configuration.md#class-names-caching) for details. Configurable behavior, default\n  off.\n- **[Settings]** No more forced setup on startup.\n- **[Settings]** Revamped UI with many more settings now configurable.\n\n### New features\n- **[Compiler]** Anonymize compiled *.pex* file. In case you are not aware, when you use PapyrusCompiler to\n  compile any script your user account and machine name are stored inside the generated *.pex* file, so it's\n  a big **privacy concern**.\n- **[Annotator]** Show annotation below error lines, and/or show indications where errors are. Configurable\n  behavior, default on.\n- **[Compiler]** *Skyrim SE/AE* and *Fallout 4* support.\n- **[Compiler]** Auto detection of game/compiler settings to be used based on source script file location.\n- **[Lexer]** Support of new Papyrus syntax/keywords of *Fallout 4*.\n- **[Lexer]** Syntax highlighting of function names.\n- **[Lexer]** Class names can be styled as links to open the script files. FO4's namespace support is included.\n  Configurable behavior, default on (Ctrl + double click).\n- **[Lexer]** Hover support on properties.\n- **[Matcher]** Highlight on matching keywords.\n- **[Matcher]** Go to matching keyword.\n- **[UI]** A new *Advanced* submenu with:\n  - *Show langID* - can be used to find out internal langID assigned to Papyrus Script lexer, which is useful\n    if you need to manually configure Notepad++'s functionList feature.\n  - *Install auto completion support* - provides auto-completion support for functions defined in base game,\n    *SKSE*, and even *SkyUI*.\n  - *Install function list support* - allows using *View -\u003e Function List* menu to show all defined functions\n    in a Papyrus script file.\n- **[UI]** Dark mode support.\n\n\n## Download\nGet the latest release from [here](https://github.com/blu3mania/npp-papyrus/releases/latest).\n\n\n## Installation\nPlease find [installation guide here](Installation.md).\n\n**WARNING:**\n- Do not install versions prior to v0.3.0 if you are using Notepad++ v8.3+.\n- Do not install v0.3.0+ if you are using a Notepad++ version prior to v8.3.\n\n\n## Configuration\nPlease find [configuration guide here](Configuration.md).\n\n\n## Building\nThe project comes with the needed Scintilla/Lexilla and Notepad++ files for building. It also references\n[GSL](https://github.com/microsoft/GSL) and [TinyXML2](https://github.com/leethomason/tinyxml2) as submodules,\nwhich means if you clone the repository, you should specify *--recurse-submodules* to also get these modules\nin your local repository.\n\n- To build the project in *Visual Studio 2022*, just open the solution file in VS2022 and build.\n- For those who use *Visual Studio Code*, a *.vscode* folder is provided at top level, with tasks defined and\n  the default build task uses MSBuild to generate the *Release|x64* output. **Note**, you need to download and\n  install *Build Tools for Visual Studio 2022* from [this page](https://visualstudio.microsoft.com/downloads/).\n  Make sure to include *Desktop development with C++* workload during installation.\n\n  Launch VSCode from *Developer Command Prompt for VS 2022* by running *\"code .\"* from src directory, so that\n  environment needed by *MSBuild* is set up properly.\n- The third option is cmake. A *CMakeLists.txt* file is provided in src directory. It is recommended to use a\n  separate build directory at top level. For example, \"cmake -S src -B build\" creates a build directory at top\n  level and prepares the build environment, then, \"cmake --build build --config Release\" builds the project in\n  release mode.\n\n\n## Code Structure\n```\n├── .github - GitHub related files\n│   └── workflows - GitHub action workflows\n├── .vscode - configuration files for VS Code\n├── dist - output folder, used by build script to create the release package\n│   ├── extras - extra configuration files that can be used in Notepad++\n│   │   ├── autoCompletion - auto completion configuration file for Papyrus scripts\n│   │   ├── functionList - function list configuration file for Papyrus scripts\n│   │   └── userDefineLangs - user-defined Papyrus language instead of this plugin's lexer\n│   └── themes - lexer configuration files for specific themes\n│       └── DarkModeDefault - lexer configuration file for Dark Mode\n└── src - source code\n    ├── external - source files from external projects (may be modified)\n    │   ├── gsl - references GSL as submodule\n    │   ├── lexilla - Lexilla source files\n    │   ├── npp - Notepad++ source files\n    │   ├── scintilla - Scintilla source files\n    │   ├── tinyxml2 - references TinyXML2 as submodule\n    │   └── XMessageBox - adopted and modified XMessageBox to provide dark mode support\n    └── Plugin - source files of this plugin\n        ├── Common - common definitions and utilities shared by all modules\n        ├── CompilationErrorHandling - show/annotate compilation errors\n        ├── Compiler - invoke Papyrus compiler in a separate thread\n        ├── Lexer - Papyrus script lexer that provides syntax highlighting\n        ├── KeywordMatcher - matching keywords highlighter\n        ├── Settings - read/write Papyrus.ini and provide configuration support to other modules\n        └── UI - other UI dialogs, such as About dialog\n```\n\n\n## Disclaimer\nBoth original work and this plugin are licensed under GPL v3, so make sure you read and understand it if you\nare creating derived work. Most importantly, you **cannot** modify the code and only publish binary output\nwithout making the modified code also publicly available.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblu3mania%2Fnpp-papyrus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblu3mania%2Fnpp-papyrus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblu3mania%2Fnpp-papyrus/lists"}