diff --git a/.github/workflows/CI_build.yml b/.github/workflows/CI_build.yml index a87e1c2ae..c1b109769 100644 --- a/.github/workflows/CI_build.yml +++ b/.github/workflows/CI_build.yml @@ -1,85 +1,150 @@ name: CI_build -on: [push, pull_request] +on: + push: + pull_request: -jobs: - build: +permissions: + contents: read +concurrency: + group: ci-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + quality: runs-on: windows-2022 + timeout-minutes: 15 - permissions: - # Give the default GITHUB_TOKEN write permission to commit and push the changed files back to the repository. - contents: write + steps: + - name: Checkout repo + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + with: + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + with: + python-version: "3.12" + cache: pip + cache-dependency-path: requirements.lock + + - name: Install locked Python modules + run: "python -m pip install --disable-pip-version-check --require-hashes --only-binary=:all: -r requirements.lock" + + - name: Run regression tests + run: python -m unittest discover -s tests -v + + - name: Run offline catalog and documentation checks + run: python validator.py all --offline + + build: + needs: quality + runs-on: windows-2022 + timeout-minutes: 90 strategy: fail-fast: false matrix: - build_configuration: [Release] - build_platform: [x64, Win32, arm64] + include: + - build_configuration: Release + build_platform: x64 + validator_arch: x64 + artifact_name: plugin_dll_and_list_x64 + dll_path: bin64\nppPluginList.dll + doc_path: doc\plugin_list_x64.md + - build_configuration: Release + build_platform: Win32 + validator_arch: x86 + artifact_name: plugin_dll_and_list_x86 + dll_path: bin\nppPluginList.dll + doc_path: doc\plugin_list_x86.md + - build_configuration: Release + build_platform: ARM64 + validator_arch: arm64 + artifact_name: plugin_dll_and_list_arm64 + dll_path: binarm64\nppPluginList.dll + doc_path: doc\plugin_list_arm64.md steps: - - name: Checkout repo - uses: actions/checkout@v7 - - - name: Install python modules - working-directory: . - run: pip3 install -r requirements.txt - - - name: check used package versions - working-directory: . - run: pip3 freeze - - - name: Validate json - working-directory: . - run: python validator.py ${{ matrix.build_platform }} + - name: Checkout repo + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + with: + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + with: + python-version: "3.12" + cache: pip + cache-dependency-path: requirements.lock + + - name: Install locked Python modules + run: "python -m pip install --disable-pip-version-check --require-hashes --only-binary=:all: -r requirements.lock" + + - name: Validate package hashes, archives and DLL versions + shell: pwsh + run: | + for ($attempt = 1; $attempt -le 3; $attempt++) { + python validator.py ${{ matrix.validator_arch }} + if ($LASTEXITCODE -eq 0) { + exit 0 + } + if ($attempt -lt 3) { + Start-Sleep -Seconds (15 * $attempt) + } + } + exit 1 + + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@30375c66a4eea26614e0d39710365f22f8b0af57 # v3 + + - name: Build plugin list DLL + working-directory: vcxproj + run: msbuild nppPluginList.vcxproj /m /p:configuration="${{ matrix.build_configuration }}" /p:platform="${{ matrix.build_platform }}" /p:PlatformToolset="v143" + + - name: Archive build artifacts + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: ${{ matrix.artifact_name }} + path: | + ${{ matrix.dll_path }} + ${{ matrix.doc_path }} + if-no-files-found: error + retention-days: 14 - - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v3 + update-plugin-lists: + needs: build + runs-on: windows-2022 + timeout-minutes: 15 + if: github.repository_owner == 'notepad-plus-plus' && github.ref_type == 'tag' - - name: MSBuild of plugin dll - working-directory: vcxproj - run: msbuild nppPluginList.vcxproj /m /p:configuration="${{ matrix.build_configuration }}" /p:platform="${{ matrix.build_platform }}" /p:PlatformToolset="v143" + permissions: + contents: write - - name: Archive artifacts for x64 - if: matrix.build_platform == 'x64' && matrix.build_configuration == 'Release' - uses: actions/upload-artifact@v7 - with: - name: plugin_dll_and_list_x64 - path: | - bin64\nppPluginList.dll - doc\plugin_list_x64.md - - - name: Archive artifacts for Win32 - if: matrix.build_platform == 'Win32' && matrix.build_configuration == 'Release' - uses: actions/upload-artifact@v7 - with: - name: plugin_dll_and_list_x86 - path: | - bin\nppPluginList.dll - doc\plugin_list_x86.md - - - name: Archive artifacts for ARM64 - if: matrix.build_platform == 'ARM64' && matrix.build_configuration == 'Release' - uses: actions/upload-artifact@v7 - with: - name: plugin_dll_and_list_arm64 - path: | - binarm64\nppPluginList.dll - doc\plugin_list_arm64.md - - - name: Checkout main branch if push trigger is a tag - if: github.repository_owner == 'notepad-plus-plus' && github.ref_type == 'tag' && matrix.build_platform == 'ARM64' && matrix.build_configuration == 'Release' - run: | - git fetch --all - git checkout master - - - name: Generate all plugin lists markdown from json on tagging - if: startsWith(github.ref, 'refs/tags/') && matrix.build_platform == 'ARM64' && matrix.build_configuration == 'Release' - working-directory: . - run: python validator.py all_md - - - name: Push markdown changes on tagging - if: startsWith(github.ref, 'refs/tags/') && matrix.build_platform == 'ARM64' && matrix.build_configuration == 'Release' - uses: stefanzweifel/git-auto-commit-action@v7 - with: - file_pattern: 'doc/*.md' + steps: + - name: Checkout repo + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + with: + fetch-depth: 0 + + - name: Set up Python + uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + with: + python-version: "3.12" + cache: pip + cache-dependency-path: requirements.lock + + - name: Install locked Python modules + run: "python -m pip install --disable-pip-version-check --require-hashes --only-binary=:all: -r requirements.lock" + + - name: Checkout main branch + run: git checkout master + + - name: Generate all plugin list documentation + run: python validator.py all_md + + - name: Push generated documentation + uses: stefanzweifel/git-auto-commit-action@04702edda442b2e678b25b537cec683a1493fcb9 # v7 + with: + file_pattern: doc/*.md diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f6dfa8b2b..9a0114448 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,110 +1,180 @@ name: release -on: [workflow_dispatch] +on: + workflow_dispatch: + inputs: + sign_cli_version: + description: Exact NuGet version of the Sign CLI to use + required: true + type: string + +permissions: + contents: read + +concurrency: + group: release-${{ github.ref }} + cancel-in-progress: false jobs: build: - + if: github.repository == 'notepad-plus-plus/nppPluginList' && github.ref == 'refs/heads/master' runs-on: windows-2022 + timeout-minutes: 90 permissions: - id-token: write contents: read - - strategy: fail-fast: false matrix: - build_configuration: [Release] - build_platform: [x64, Win32, arm64] + include: + - build_configuration: Release + build_platform: x64 + validator_arch: x64 + artifact_name: plugin_dll_and_list_x64 + dll_path: bin64\nppPluginList.dll + doc_path: doc\plugin_list_x64.md + - build_configuration: Release + build_platform: Win32 + validator_arch: x86 + artifact_name: plugin_dll_and_list_x86 + dll_path: bin\nppPluginList.dll + doc_path: doc\plugin_list_x86.md + - build_configuration: Release + build_platform: ARM64 + validator_arch: arm64 + artifact_name: plugin_dll_and_list_arm64 + dll_path: binarm64\nppPluginList.dll + doc_path: doc\plugin_list_arm64.md steps: - - name: Checkout repo - uses: actions/checkout@v7 - - - name: Install python modules - working-directory: . - run: pip3 install -r requirements.txt - - - name: check used package versions - working-directory: . - run: pip3 freeze - - - name: Validate json - working-directory: . - run: python validator.py ${{ matrix.build_platform }} - - - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v3 - - - name: MSBuild of plugin dll - working-directory: vcxproj - run: msbuild nppPluginList.vcxproj /m /p:configuration="${{ matrix.build_configuration }}" /p:platform="${{ matrix.build_platform }}" /p:PlatformToolset="v143" - - - - name: Azure CLI login with federated credential - uses: azure/login@v3 - with: - client-id: ${{ secrets.AZURE_CLIENT_ID }} - tenant-id: ${{ secrets.AZURE_TENANT_ID }} - subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - allow-no-subscriptions: true - - - name: Install sign cli - run: dotnet tool install --global sign --prerelease - - - name: Sign executables and libraries - run: sign code trusted-signing ` - --trusted-signing-account ${{ secrets.TRUSTED_SIGNING_ACCOUNT_NAME }} ` - --trusted-signing-certificate-profile ${{ secrets.TRUSTED_SIGNING_CERTIFICATE_PROFILE }} ` - --trusted-signing-endpoint https://weu.codesigning.azure.net ` - --azure-credential-type azure-cli ` - --verbosity information ` - **/*.dll + - name: Checkout repo + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + with: + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + with: + python-version: "3.12" + cache: pip + cache-dependency-path: requirements.lock + + - name: Install locked Python modules + run: "python -m pip install --disable-pip-version-check --require-hashes --only-binary=:all: -r requirements.lock" + + - name: Run regression and offline catalog checks + run: | + python -m unittest discover -s tests -v + python validator.py all --offline + + - name: Validate package hashes, archives and DLL versions + shell: pwsh + run: | + for ($attempt = 1; $attempt -le 3; $attempt++) { + python validator.py ${{ matrix.validator_arch }} + if ($LASTEXITCODE -eq 0) { + exit 0 + } + if ($attempt -lt 3) { + Start-Sleep -Seconds (15 * $attempt) + } + } + exit 1 + + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@30375c66a4eea26614e0d39710365f22f8b0af57 # v3 + + - name: Build plugin list DLL + working-directory: vcxproj + run: msbuild nppPluginList.vcxproj /m /p:configuration="${{ matrix.build_configuration }}" /p:platform="${{ matrix.build_platform }}" /p:PlatformToolset="v143" + + - name: Upload unsigned build for isolated signing + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: unsigned_${{ matrix.artifact_name }} + path: | + ${{ matrix.dll_path }} + ${{ matrix.doc_path }} + if-no-files-found: error + retention-days: 1 + + sign: + needs: build + if: github.repository == 'notepad-plus-plus/nppPluginList' && github.ref == 'refs/heads/master' + runs-on: windows-2022 + timeout-minutes: 30 + permissions: + id-token: write + contents: read + strategy: + fail-fast: false + matrix: + include: + - artifact_name: plugin_dll_and_list_x64 + sign_target: payload\bin64\nppPluginList.dll + doc_path: payload\doc\plugin_list_x64.md + - artifact_name: plugin_dll_and_list_x86 + sign_target: payload\bin\nppPluginList.dll + doc_path: payload\doc\plugin_list_x86.md + - artifact_name: plugin_dll_and_list_arm64 + sign_target: payload\binarm64\nppPluginList.dll + doc_path: payload\doc\plugin_list_arm64.md - - name: Archive artifacts for x64 - if: matrix.build_platform == 'x64' && matrix.build_configuration == 'Release' - uses: actions/upload-artifact@v7 - with: - name: plugin_dll_and_list_x64 - path: | - bin64\nppPluginList.dll - doc\plugin_list_x64.md - - - name: Archive artifacts for Win32 - if: matrix.build_platform == 'Win32' && matrix.build_configuration == 'Release' - uses: actions/upload-artifact@v7 - with: - name: plugin_dll_and_list_x86 - path: | - bin\nppPluginList.dll - doc\plugin_list_x86.md - - - name: Archive artifacts for ARM64 - if: matrix.build_platform == 'ARM64' && matrix.build_configuration == 'Release' - uses: actions/upload-artifact@v7 - with: - name: plugin_dll_and_list_arm64 + steps: + - name: Download isolated unsigned build + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: unsigned_${{ matrix.artifact_name }} + path: payload + + - name: Install exact Sign CLI version + shell: pwsh + env: + SIGN_CLI_VERSION: ${{ inputs.sign_cli_version }} + run: | + if ($env:SIGN_CLI_VERSION -notmatch '^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$') { + throw 'sign_cli_version must be an exact semantic version.' + } + dotnet tool install --global sign --version $env:SIGN_CLI_VERSION + + - name: Azure CLI login with federated credential + uses: azure/login@532459ea530d8321f2fb9bb10d1e0bcf23869a43 # v3 + with: + client-id: ${{ secrets.AZURE_CLIENT_ID }} + tenant-id: ${{ secrets.AZURE_TENANT_ID }} + subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + allow-no-subscriptions: true + + - name: Sign only the built catalog DLL + shell: pwsh + env: + SIGN_TARGET: ${{ matrix.sign_target }} + TRUSTED_SIGNING_ACCOUNT: ${{ secrets.TRUSTED_SIGNING_ACCOUNT_NAME }} + TRUSTED_SIGNING_PROFILE: ${{ secrets.TRUSTED_SIGNING_CERTIFICATE_PROFILE }} + run: | + $target = (Resolve-Path -LiteralPath $env:SIGN_TARGET).Path + sign code trusted-signing ` + --trusted-signing-account $env:TRUSTED_SIGNING_ACCOUNT ` + --trusted-signing-certificate-profile $env:TRUSTED_SIGNING_PROFILE ` + --trusted-signing-endpoint https://weu.codesigning.azure.net ` + --azure-credential-type azure-cli ` + --verbosity information ` + $target + + $signature = Get-AuthenticodeSignature -LiteralPath $target + if ($signature.Status -ne 'Valid') { + throw "Authenticode verification failed: $($signature.Status) $($signature.StatusMessage)" + } + + - name: Archive signed build artifacts + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: ${{ matrix.artifact_name }} path: | - binarm64\nppPluginList.dll - doc\plugin_list_arm64.md - - - name: Checkout main branch if push trigger is a tag - if: github.repository_owner == 'notepad-plus-plus' && github.ref_type == 'tag' && matrix.build_platform == 'ARM64' && matrix.build_configuration == 'Release' - run: | - git fetch --all - git checkout master - - - name: Generate all plugin lists markdown from json on tagging - if: startsWith(github.ref, 'refs/tags/') && matrix.build_platform == 'ARM64' && matrix.build_configuration == 'Release' - working-directory: . - run: python validator.py all_md - - - name: Push markdown changes on tagging - if: startsWith(github.ref, 'refs/tags/') && matrix.build_platform == 'ARM64' && matrix.build_configuration == 'Release' - uses: stefanzweifel/git-auto-commit-action@v7 - with: - file_pattern: 'doc/*.md' + ${{ matrix.sign_target }} + ${{ matrix.doc_path }} + if-no-files-found: error + retention-days: 14 diff --git a/.gitignore b/.gitignore index a649062a1..c48812222 100644 --- a/.gitignore +++ b/.gitignore @@ -17,12 +17,16 @@ Thumbs.db *.sln *.opendb *.db -*.md -obj/ +obj/ [Dd]ebug*/ [Rr]elease*/ _ReSharper*/ -.vs/ -[Bb]in/ +.vs/ +__pycache__/ +*.py[cod] +.coverage +.pytest_cache/ +.ruff_cache/ +[Bb]in/ bin64/ binarm64/ diff --git a/README.md b/README.md index f7758129d..0f6776aec 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,34 @@ https://npp-user-manual.org/docs/plugins/#plugins-admin Please check here if you need any support: https://community.notepad-plus-plus.org/topic/16566/support-for-plugins-admin-npppluginlist +Local validation +---------------- + +The validator supports a deterministic offline mode for pull-request review. It checks the JSON schema, duplicate JSON keys, architecture metadata, case-insensitive plugin duplicates, version ranges, HTTPS package URLs, safe Windows folder names, ordering, and generated documentation without making network requests: + +```powershell +python -m pip install --require-hashes -r requirements.lock +python -m unittest discover -s tests -v +python validator.py all --offline +``` + +Python 3.12 is the version used by CI and by the generated dependency lock. Package URL availability, package contents, SHA-256 hashes, and DLL versions require the architecture-specific online validation used by CI: + +```powershell +python validator.py x86 +python validator.py x64 +python validator.py arm64 +``` + +Remote packages are downloaded with size and time limits. Redirects must remain on public HTTPS endpoints. ZIP files with traversal paths, symbolic links, encryption, duplicate DLL names, excessive expansion, or a non-root plugin DLL are rejected. Only the expected DLL is copied to a temporary directory, which is removed before the validator exits. + +Use `./sort_plugin_lists.ps1` for deterministic catalog ordering. It preserves plugin text verbatim. Regenerate the Markdown views atomically with `python validator.py all_md`, then rerun the offline checks. + +Release safety +-------------- + +The signing workflow is restricted to the upstream `master` branch. A release operator must provide an exact `sign_cli_version`; floating or prerelease tool selection is not accepted. The workflow signs and verifies only the catalog DLL produced by the current matrix job, never downloaded plugin DLLs. + Build Status ------------ diff --git a/doc/plugin_list_arm64.md b/doc/plugin_list_arm64.md index a98056dc7..42851975a 100644 --- a/doc/plugin_list_arm64.md +++ b/doc/plugin_list_arm64.md @@ -6,30 +6,30 @@ version 1.9.7 |---|---|---|---|---| | Auto Detect Indention | Mike Tzou (Chocobo1) | https://github.com/Chocobo1/nppAutoDetectIndent | [2.3 - arm64 bit](https://github.com/Chocobo1/nppAutoDetectIndent/releases/download/2.3/arm64.zip) | Detects indention (tab or spaces) and auto adjust Tab key on-the-fly. | | AutoSave | Franco Stellari | https://github.com/francostellari/NppPlugins | [2.0 - arm64 bit](https://github.com/francostellari/NppPlugins/raw/main/AutoSave/AutoSave_dll_2v00_arm64.zip) |
Automatically save the currently open files based on a timer schedule and/or upon the application losing focus.
The plugin offers several options to save the current (or all the files), selecting only the named ones, accessible through an options dialog box.
| -| Chinese Converter | lkk9898969 | https://github.com/lkk9898969/Npp_ChineseConverter | [1.0.2 - arm64 bit](https://github.com/lkk9898969/Npp_ChineseConverter/releases/download/v1.0.2/NppChineseConverter-ARM64.zip) | Traditional and Simplified conversion plugin for Notepad++ | +| Chinese Converter | lkk9898969 | https://github.com/lkk9898969/Npp_ChineseConverter | [1.0.3 - arm64 bit](https://github.com/lkk9898969/Npp_ChineseConverter/releases/download/v1.0.3/NppChineseConverter-ARM64.zip) | Traditional and Simplified conversion plugin for Notepad++ | | CollectionInterface | pryrt | https://github.com/pryrt/NppPlugin-CollectionInterface | [1.3.0 - arm64 bit](https://github.com/pryrt/NppPlugin-CollectionInterface/releases/download/v1.3.0/CollectionInterface_v1.3.0_ARM64.zip) |
Interface to the official UserDefinedLanguage Collection and nppThemes Collection.

Allows easy download and installation of a UDL (with FunctionList and AutoCompletion definitions, when available) or a Theme
| | ComparePlus | Pavel Nedev | https://github.com/pnedev/comparePlus | [3.0.0 - arm64 bit](https://github.com/pnedev/comparePlus/releases/download/cp_3.0.0/ComparePlus_cp_3.0.0_ARM64.zip) |
Advanced compare tool based on the well-known Compare-plugin by Ty Landercasper and Jean-Sebastien Leroy.
| | Dark Mode C | pullitall | https://github.com/pullitall/Notepadpp-light-dark-switch-and-automatic-switch-based-on-location | [1.0.3 - arm64 bit](https://github.com/pullitall/Notepadpp-light-dark-switch-and-automatic-switch-based-on-location/releases/download/v1.0.3/DARK_MODE_NPP_v1.0.3_ARM64.zip) |
Adds toolbar icons to instantly switch between light and dark mode with no restart required. Features an automatic mode that dynamically toggles your theme based on local sunrise and sunset times.
| | Discord Rich Presence | Zukaritasu | https://github.com/Zukaritasu/notepadpp_rpc | [2.1.711.1 - arm64 bit](https://github.com/Zukaritasu/notepadpp_rpc/releases/download/v2.1.7/DiscordRPC_v2.1.7_arm64.zip) | Shows in discord the file that is currently being edited in Notepad++. | -| Emoji Description | Ruberoid | https://github.com/Ruberoid/npp_emoji_description | [0.2.14 - arm64 bit](https://github.com/Ruberoid/npp_emoji_description/releases/download/v0.2.14/EmojiDescription_arm64_v0.2.14.zip) |
Displays detailed character encoding information in the status bar. Shows Unicode code point, decimal/hexadecimal values, HTML entity, and UTF-8 byte sequence for any character including emoji.
| -| Fixed-width Data Visualizer | Shridhar Kumar | https://github.com/shriprem/FWDataViz | [2.6.7.0 - arm64 bit](https://github.com/shriprem/FWDataViz/releases/download/v2.6.7.0/FWDataViz_arm64.zip) |
Fixed Width Data Visualizer adds Excel-like features for fixed-width data files in Notepad++. Displays cursor position data. Foldable Record Blocks; Hop & Jump to specific fields. Field Copy & Field Paste. Data Extraction. Builtin dialogs to configure file-type, record-type & fields; and themes & colors. Automatic File Type Detection. Handles homogenous, mixed & multi-line records. Full Multi-byte character support. Darkmode enabled.
| -| GotoLineCol | Shridhar Kumar | https://github.com/shriprem/Goto-Line-Col-NPP-Plugin | [2.4.5.1 - arm64 bit](https://github.com/shriprem/Goto-Line-Col-NPP-Plugin/releases/download/v2.4.5.1/GotoLineCol_arm64.zip) |
A plugin to navigate to a specified line and (byte-based or character-based) column position. Will also display character byte code, UTF-8 byte sequence & Unicode code point, name & block at cursor position. Darkmode enabled. Command line options.
| +| Emoji Description | Ruberoid | https://github.com/Ruberoid/npp_emoji_description | [0.3.16 - arm64 bit](https://github.com/Ruberoid/npp_emoji_description/releases/download/v0.3.16/EmojiDescription_arm64_v0.3.16.zip) |
Displays detailed character encoding information in the status bar. Shows Unicode code point, decimal/hexadecimal values, HTML entity, and UTF-8 byte sequence for any character including emoji.
| +| Fixed-width Data Visualizer | Shridhar Kumar | https://github.com/shriprem/FWDataViz | [2.6.7.0 - arm64 bit](https://github.com/shriprem/FWDataViz/releases/download/v2.6.7.0/FWDataViz_arm64.zip) |
Fixed Width Data Visualizer adds Excel-like features for fixed-width data files in Notepad++. Displays cursor position data. Foldable Record Blocks; Hop & Jump to specific fields. Field Copy & Field Paste. Data Extraction. Builtin dialogs to configure file-type, record-type & fields; and themes & colors. Automatic File Type Detection. Handles homogenous, mixed & multi-line records. Full Multi-byte character support. Darkmode enabled.
| +| GotoLineCol | Shridhar Kumar | https://github.com/shriprem/Goto-Line-Col-NPP-Plugin | [2.4.5.1 - arm64 bit](https://github.com/shriprem/Goto-Line-Col-NPP-Plugin/releases/download/v2.4.5.1/GotoLineCol_arm64.zip) |
A plugin to navigate to a specified line and (byte-based or character-based) column position. Will also display character byte code, UTF-8 byte sequence & Unicode code point, name & block at cursor position. Darkmode enabled. Command line options.
| | HEX-Editor | Jens Lorenz | https://github.com/chcg/NPP_HexEditor | [0.9.14.0 - arm64 bit](https://github.com/chcg/NPP_HexEditor/releases/download/0.9.14/HexEditor_0.9.14_ARM64.zip) | Hex editor. Some reported issues, however many bugs fixed in latest release. | -| HTML Tag | Martijn Coppoolse | https://github.com/rdipardo/nppHTMLTag | [1.6.0.0 - arm64 bit](https://github.com/rdipardo/nppHTMLTag/releases/download/v1.6.0/HTMLTag_v1.6.0_arm64.zip) |
Provides three core functions:
- HTML and XML tag jumping, like the built-in brace matching and selection
of tags and/or contents.
- HTML entity encoding/decoding (example: é to é)
- JS character encoding/decoding (example: é to \u00E9)
| +| HTML Tag | Martijn Coppoolse | https://github.com/rdipardo/nppHTMLTag | [1.6.1.0 - arm64 bit](https://github.com/rdipardo/nppHTMLTag/releases/download/v1.6.1/HTMLTag_v1.6.1_arm64.zip) |
Provides three core functions:
- HTML and XML tag jumping, like the built-in brace matching and selection
of tags and/or contents.
- HTML entity encoding/decoding (example: é to é)
- JS character encoding/decoding (example: é to \u00E9)
| | JSON Viewer | Kapil Ratnani, Rajendra Singh | https://github.com/NPP-JSONViewer/JSON-Viewer | [2.2.0.0 - arm64 bit](https://github.com/NPP-JSONViewer/JSON-Viewer/releases/download/v2.2.0.0/NppJSONViewer_ARM64_Release.zip) | JSON viewer that displays the selected JSON string in a tree view. | -| JSTool | Sun Junwen | https://github.com/sunjw/jstoolnpp | [25.11.16 - arm64 bit](https://sourceforge.net/projects/jsminnpp/files/Uni/JSToolNPP.25.11.16.uni.arm64.zip) |
Javascript plugin.
* Douglas Crockford's JSMin algorithm to minimize javascript code.

* My own algorithm to format javascript code.
* A JSON data viewer. This JSON data viewer can handle >10MB JSON file easily.
* Support 64bit Notepad++ (from version 1.20.0).
Really helpful to javascript coder on Notepad++ and really easy to use it.
Made in China.
| +| JSTool | Sun Junwen | https://github.com/sunjw/jstoolnpp | [25.11.16 - arm64 bit](https://sourceforge.net/projects/jsminnpp/files/Uni/JSToolNPP.25.11.16.uni.arm64.zip) |
Javascript plugin.
* Douglas Crockford's JSMin algorithm to minimize javascript code.

* My own algorithm to format javascript code.
* A JSON data viewer. This JSON data viewer can handle >10MB JSON file easily.
* Support 64bit Notepad++ (from version 1.20.0).
Really helpful to javascript coder on Notepad++ and really easy to use it.
Made in China.
| | Language Selector | Abdellah Hassaine | https://github.com/hassaine-abdellah/npp-language-selector | [1.2.0.0 - arm64 bit](https://github.com/hassaine-abdellah/npp-language-selector/releases/download/v1.2/plugin_dll_arm64.zip) |
Set the programming language and see the syntax highlighting on new files without the need to save them, or to go each time to the menu to choose the language.
You can also pin your favourite languages for quick access.
| | LanguageHelp | Franco Stellari | https://github.com/francostellari/NppPlugins | [1.7.5.0 - arm64 bit](https://github.com/francostellari/NppPlugins/raw/main/LanguageHelp/LanguageHelp_dll_1v75_arm64.zip) |
Allows loading a language specific help file (CHM, HLP, PDF) and search for the keyword under the cursor.
The latest version allows showing the help files as menu entries or in the context menu.
| | Linter++ | Tom Tanner | https://github.com/thosrtanner/notepad-pp-linter | [1.0.3.0 - arm64 bit](https://github.com/ThosRTanner/notepad-pp-linter/releases/download/1.0.3/plugin_dll_ARM64.zip) |
Allows realtime code check against any checkstyle-compatible linter: jshint, eslint, jscs, phpcs, csslint, and many others.
| -| Markdown Table Editor | Kreout | https://github.com/krotname/NppMarkdownTableEditor | [11.0.2 - arm64 bit](https://github.com/krotname/NppMarkdownTableEditor/releases/download/v11.0.2/MarkdownTableEditor-11.0.2-arm64-pluginadmin.zip) |
Edits Markdown pipe tables as aligned text. Align, fit width, narrow or widen columns, navigate, insert, delete, move and sort rows or columns, convert CSV/TSV blocks, and insert new tables from Notepad++.
| +| Markdown Table Editor | Kreout | https://github.com/krotname/NppMarkdownTableEditor | [11.1.0 - arm64 bit](https://github.com/krotname/NppMarkdownTableEditor/releases/download/v11.1.0/MarkdownTableEditor-11.1.0-arm64-pluginadmin.zip) |
Edits Markdown pipe tables as aligned text. Align, fit width, narrow or widen columns, navigate, insert, delete, move and sort rows or columns, convert CSV/TSV blocks, and insert new tables from Notepad++.
| | MenuIcons | Franco Stellari | https://github.com/francostellari/NppPlugins | [2.0.7 - arm64 bit](https://github.com/francostellari/NppPlugins/raw/main/MenuIcons/MenuIcons_dll_2v07_arm64.zip) | Adds icons to the main menu, tab menu, context menu, and the tabs themselves. | | Mime tools | Don HO | https://github.com/npp-plugins/mimetools | [3.1 - arm64 bit](https://github.com/npp-plugins/mimetools/releases/download/v3.1/mimetools.v3.1.arm64.zip) |
Implements several main functionalities defined in MIME (Multipurpose Internet Mail Extensions): Base64, Quoted-printable and URL encode/decode
| -| MultiReplace | Thomas Knoefel | https://github.com/daddel80/notepadpp-multireplace | [6.0.0.36 - arm64 bit](https://github.com/daddel80/notepadpp-multireplace/releases/download/6.0.0.36/MultiReplace-v6.0.0.36-ARM64.zip) |
Multi-pattern search & replace across single or multiple files; reusable search & replace lists; CSV column operations (sort, delete, deduplicate); FlowTabs for visual column alignment; dockable search results; rectangular selection support; Lua/ExprTk formula engine with conditional and math logic.
| -| NestedDSV Data Visualizer | Shridhar Kumar | https://github.com/shriprem/NestedDSV | [1.1.0.1 - arm64 bit](https://github.com/shriprem/NestedDSV/releases/download/v1.1.0.1/NestedDSV_arm64.zip) |
Plugin for visualizing hierarchical (nested) delimiter-separated values (DSV) data in Notepad++. Displays cursor position data. Jumps to specific fields. Folding Record Blocks. Extracts Data. Builtin dialogs to configure file-type, record-type & fields; Themes & Colors; and Folding.
| +| MultiReplace | Thomas Knoefel | https://github.com/daddel80/notepadpp-multireplace | [6.0.0.36 - arm64 bit](https://github.com/daddel80/notepadpp-multireplace/releases/download/6.0.0.36/MultiReplace-v6.0.0.36-ARM64.zip) |
Multi-pattern search & replace across single or multiple files; reusable search & replace lists; CSV column operations (sort, delete, deduplicate); FlowTabs for visual column alignment; dockable search results; rectangular selection support; Lua/ExprTk formula engine with conditional and math logic.
| +| NestedDSV Data Visualizer | Shridhar Kumar | https://github.com/shriprem/NestedDSV | [1.1.0.1 - arm64 bit](https://github.com/shriprem/NestedDSV/releases/download/v1.1.0.1/NestedDSV_arm64.zip) |
Plugin for visualizing hierarchical (nested) delimiter-separated values (DSV) data in Notepad++. Displays cursor position data. Jumps to specific fields. Folding Record Blocks. Extracts Data. Builtin dialogs to configure file-type, record-type & fields; Themes & Colors; and Folding.
| | Notepad++ bplist plugin | Sergiy Azarovsky | https://github.com/azerg/NppBplistPlugin | [3.0.0.0 - arm64 bit](https://github.com/azerg/NppBplistPlugin/releases/download/3.0.0.0/NppBplistPlugin_arm64.zip) |
Supports viewing/editing binary plist files. Due to the fact that ordinary plist files have XML format, this plugin does not support them. It only loads binary plist files (bplist).
| | Notepad++ Plugin Demo | Don HO | https://github.com/npp-plugins/plugindemo | [4.5 - arm64 bit](https://github.com/npp-plugins/plugindemo/releases/download/v4.5/pluginDemo.v4.5.bin.arm64.zip) |
Notepad++ Plugin Demo is written from Notepad++ Plugin Template to demonstrate the usage of plugin API.
| | Notepad++ Plugin Template | Don HO | https://github.com/npp-plugins/plugintemplate | [4.4 - arm64 bit](https://github.com/npp-plugins/plugintemplate/releases/download/v4.4/pluginTemplate.v4.4.bin.arm64.zip) | Template for making plugin development as easy and simple as possible. Four steps and it's done. | -| Npp Converter | Don HO | https://github.com/npp-plugins/converter/ | [4.7 - arm64 bit](https://github.com/npp-plugins/converter/releases/download/v4.7/nppConvert.v4.7.arm64.zip) | ASCII<->Hex converter. | +| Npp Converter | Don HO | https://github.com/npp-plugins/converter/ | [4.7 - arm64 bit](https://github.com/npp-plugins/converter/releases/download/v4.7/nppConvert.v4.7.arm64.zip) | ASCII<->Hex converter. | | NppCrossCheck | Pablo Lopez | https://github.com/pablo-code14/NppCrossCheck | [1.2.0.0 - arm64 bit](https://github.com/pablo-code14/NppCrossCheck/releases/download/v1.2.0/NppCrossCheck_arm64.zip) |
Compare two lists in the current document.
Place the two lists separated by one or more blank lines and run the plugin to cross-check their contents.
| | NppExport | | https://github.com/chcg/NPP_ExportPlugin | [0.4.0.0 - arm64 bit](https://github.com/chcg/NPP_ExportPlugin/releases/download/0.4.0/NppExport_0.4.0_arm64.zip) |
True WYSIWYG exporter. Allows you not only to save your source code as an HTML/RTF file, but also to copy your source code in the clipboard in RTF/HTML format, so you can paste it into your word processor (Openoffice.org Writer, LibreOffice Writer, Abiword, MS Word) to get the same visual effect.
| | NppFTP | ashish_kulz | https://ashkulz.github.io/NppFTP/ | [0.29.15 - arm64 bit](https://github.com/ashkulz/NppFTP/releases/download/v0.29.15/NppFTP-arm64.zip) | Allows FTP, FTPS, FTPES, and SFTP communications. Very useful for web development. | @@ -51,10 +51,10 @@ version 1.9.7 | StayAwake | Shridhar Kumar | https://github.com/shriprem/StayAwake_NPP_Plugin | [1.1.0.0 - arm64 bit](https://github.com/shriprem/StayAwake_NPP_Plugin/releases/download/v1.1.0.0/StayAwake_NPP_arm64.zip) |
StayAwake enables you to maintain an Active status on Microsoft Teams by simulating key presses of unused or low side-effect buttons at specified intervals. StayAwake also prevents screen saver activation, screen blanking, and Windows session lockouts.
| | TakeNotes | Franco Stellari | https://github.com/francostellari/NppPlugins | [1.2.7.0 - arm64 bit](https://github.com/francostellari/NppPlugins/raw/main/TakeNotes/TakeNotes_dll_1v27_arm64.zip) |
Helps people who like to use Notepad++ for jotting quick notes. Instead of using unnamed 'new ?' files, this plugins allows to quickly create new empty files in a folder of choice. The file names may be custom generated using a mask and may contain details such as the user name, date, and time of creation so that unique files may be generated. Additionally, the plugin allows to load exiting notes in the folder of choice, save existing files as a note, and open the last saved note quickly. Please refer to the Options dialog box for more details. It is strongly recommended to use this plugin in combination with AutoSave to make sure that you never loose a note.
| | Task List | blitowitz | https://github.com/Megabyteceer/npp-task-list | [2.7 - arm64 bit](https://github.com/Megabyteceer/npp-task-list/releases/download/v2.7.0/NppTaskList_v2.7.0_arm64.zip) |
Automatically scans the open document and adds all "TODO:*" items to your task list, a window pane docked on the right. Double-clicking an item in the list will take you to that line in the code.
| -| TC Syslog Finder | bsagarzazu | https://github.com/bsagarzazu/npp-tc-syslog-finder | [1.0.0.0 - arm64 bit](https://github.com/bsagarzazu/npp-tc-syslog-finder/releases/download/v1.0.0/TCSyslogFinder_v1.0.0_arm64.zip) | Instantly find and open the latest Teamcenter syslog in Notepad++. | +| TC Syslog Finder | bsagarzazu | https://github.com/bsagarzazu/npp-tc-syslog-finder | [1.1.0 - arm64 bit](https://github.com/bsagarzazu/npp-tc-syslog-finder/releases/download/v1.1.0/TCSyslogFinder_v1.1.0_arm64.zip) | Instantly find and open the latest Teamcenter syslog in Notepad++. | | TopMost | Franco Stellari | https://github.com/francostellari/NppPlugins | [1.4.2.0 - arm64 bit](https://github.com/francostellari/NppPlugins/raw/main/TopMost/TopMost_dll_1v42_arm64.zip) |
Allows setting the main Notepad++ window as a topmost window so it can stay on top of other windows even when it is not active. Syncs with Notepad++'s own stay on top functionality and allows to remember the setting between restarts as well as to show a toolbar button.
| -| TreeSitter | Tuomas Hietanen | https://github.com/Thorium/NppTreeSitter/ | [1.4.1 - arm64 bit](https://github.com/Thorium/NppTreeSitter/releases/download/1.4.1/NppTreeSitter_1.4.1_ARM64.zip) |
Integrate Tree-sitter to Notepad++. AST-based syntax highlighting and code folding for many languages.
| -| URL Encode/Decode Plugin | Rajendra Singh | https://github.com/SinghRajenM/nppURLPlugin | [1.2.0.0 - arm64 bit](https://github.com/SinghRajenM/nppURLPlugin/releases/download/1.2.0.0/urlPlugin_arm64.zip) |
Hopefully a decent URL Encoder and Decoder plug-in for Notepad++ which helps to make developer's life easier by providing facility to encode/decode the URL within Notepad++.

How it works:
1. Configure setting from menu (Plugins->URL Plugin->URL Plugin Settings). It is not mandatory, but recommended.
2. Select text/URL which you want to encode/decode.
3. Perform your task via Plugins->URL Plugin->Encode/Decode URL.

| +| TreeSitter | Tuomas Hietanen | https://github.com/Thorium/NppTreeSitter/ | [1.4.2 - arm64 bit](https://github.com/Thorium/NppTreeSitter/releases/download/1.4.2/NppTreeSitter_1.4.2_ARM64.zip) |
Integrate Tree-sitter to Notepad++. AST-based syntax highlighting and code folding for many languages.
| +| URL Encode/Decode Plugin | Rajendra Singh | https://github.com/SinghRajenM/nppURLPlugin | [1.2.0.0 - arm64 bit](https://github.com/SinghRajenM/nppURLPlugin/releases/download/1.2.0.0/urlPlugin_arm64.zip) |
Hopefully a decent URL Encoder and Decoder plug-in for Notepad++ which helps to make developer's life easier by providing facility to encode/decode the URL within Notepad++.

How it works:
1. Configure setting from menu (Plugins->URL Plugin->URL Plugin Settings). It is not mandatory, but recommended.
2. Select text/URL which you want to encode/decode.
3. Perform your task via Plugins->URL Plugin->Encode/Decode URL.

| | Virtual Folders | Fatih Coşkun | https://github.com/FatihC/VirtualFolders | [1.0.3 - arm64 bit](https://github.com/FatihC/VirtualFolders/releases/download/v1.0.3/VirtualFolders-v1.0.3-arm64.zip) |
This plugin adds a dockable tree panel where you can create your own virtual folder structure. Group files from different paths, reorder them freely, and keep related resources together without touching the actual filesystem.
| | VSCode Keymap NPP | philip | https://github.com/14ag/vscode-to-notepadpp | [0.2.0 - arm64 bit](https://github.com/14ag/vscode-to-notepadpp/releases/download/v0.2.0/VSCodeKeymapNpp-0.2.0-arm64.zip) |
Ports the stock Windows VS Code shortcuts to Notepad++ as far as Notepad++ can reasonably follow them.
Maps clean Notepad++ or Scintilla equivalents, blocks conflicting fallthrough in strict mode, and keeps the rest documented in the coverage report.
| | WebEdit | Alexander Iljin | https://github.com/Krazal/WebEdit | [2.9.0.1 - arm64 bit](https://github.com/Krazal/WebEdit/releases/download/v2.9.0.1/WebEdit.2.9.0.1.arm64.zip) |
Speed up your code editing! Enter an abbreviation (tag), press Alt + Enter, and expand the tag into a full code snippet. You can also wrap (surround) a selection e.g. with HTML tags.
- More than 1000 preset tags: HTML (elements, attributes, BootStrap, Smarty, etc.), JavaScript (jQuery), CSS, PHP, SQL (MySQL, Eloquent ORM), etc.
- Automatic or custom caret (cursor) positioning
- Handling new lines, indents, etc.
- Variables: clipboard content, current file name, custom date/time, etc.
- Customizable tags in the plugin menu; assign tags to shortcuts
- Customizable tags in the toolbar
- Tag suggestions (similar tags)
- Easy tag addition
- Multiselect support
- Unicode support
- Over 17 years with Notepad++, now in 64-bit version!
| diff --git a/doc/plugin_list_x64.md b/doc/plugin_list_x64.md index b69ce5c71..74d6542cf 100644 --- a/doc/plugin_list_x64.md +++ b/doc/plugin_list_x64.md @@ -21,7 +21,7 @@ version 1.9.7 | BracketsCheck | niccord | https://github.com/niccord/BracketsCheck/ | [1.2.2 - 64 bit](https://github.com/niccord/BracketsCheck/releases/download/v1.2.3/BracketsCheck_1-2-3_x64.zip) |
Helps to check if brackets in your file are balanced.
You can check all text in a file or only the part you selected.
| | Bunyan Log Viewer | Jayapal B | https://github.com/jayapalb/nodepaddplus_bunyan-plugin | [1.0.0 - 64 bit](https://github.com/jayapalb/notepad-bunyan-plugin/releases/download/1.0.0/BunyanLogViewer_x64.zip) |
Docked Bunyan log viewer for Notepad++ with Bunyan-style short formatting, in-pane search, and inline DEBUG/INFO/WARN/ERROR filters.
| | CADdyTools | Mario Rosenbohm | https://github.com/MarioRosi/CADdyTools | [1.1.3.7 - 64 bit](https://github.com/MarioRosi/CADdyTools/releases/download/1.1.3.7/CADdyTools_v1137_x64.zip) | Notepad++-Plugin for manipulate CADdy-formated coordinate- and measure-textfiles | -| Chinese Converter | lkk9898969 | https://github.com/lkk9898969/Npp_ChineseConverter | [1.0.2 - 64 bit](https://github.com/lkk9898969/Npp_ChineseConverter/releases/download/v1.0.2/NppChineseConverter-x64.zip) | Traditional and Simplified conversion plugin for Notepad++ | +| Chinese Converter | lkk9898969 | https://github.com/lkk9898969/Npp_ChineseConverter | [1.0.3 - 64 bit](https://github.com/lkk9898969/Npp_ChineseConverter/releases/download/v1.0.3/NppChineseConverter-x64.zip) | Traditional and Simplified conversion plugin for Notepad++ | | Code Alignment | Chris McGrath | https://github.com/cpmcgrath/codealignment | [14.1.107 - 64 bit](https://github.com/cpmcgrath/codealignment/releases/download/v14.1/CodeAlignmentNpp_v14.1_x64.zip) |
Code alignment helps you present your code beautifully, enhancing clarity and readability.
Align your code by any character. Fast logical shortcuts to perform common alignments such as equals and period.
| | Code::Stats | p0358 | https://github.com/p0358/notepadpp-CodeStats | [1.1.1 - 64 bit](https://github.com/p0358/notepadpp-CodeStats/releases/download/v1.1.1/notepadpp-CodeStats_x64.zip) |
Write code, level up, show off! A free stats tracking service for programmers. Enables XP tracking in Notepad++.
Requires a codestats.net account for its functionality.

Anonymous usage statistics:
On the next Notepad++ launches, after API token has been provided, this plugin is making HTTPS request to analytics server containing plugin version and unique randomly generated ID. This is because the author would like to see the amount of people using this. The usage statistic collection is not related to the Code::Stats service itself. If you really do not want to be included, you can opt-out in plugin settings.
| | CollectionInterface | pryrt | https://github.com/pryrt/NppPlugin-CollectionInterface | [1.3.0 - 64 bit](https://github.com/pryrt/NppPlugin-CollectionInterface/releases/download/v1.3.0/CollectionInterface_v1.3.0_x64.zip) |
Interface to the official UserDefinedLanguage Collection and nppThemes Collection.

Allows easy download and installation of a UDL (with FunctionList and AutoCompletion definitions, when available) or a Theme
| @@ -39,6 +39,7 @@ version 1.9.7 | Customize Toolbar | dw-dev@gmx.com | https://sourceforge.net/projects/npp-customize | [5.3 - 64 bit](https://sourceforge.net/projects/npp-customize/files/Customize%20Toolbar%20v5.3/CustomizeToolbar_5_3_x64_UNI.zip) |
Allows the toolbar to be fully customised by the user, and includes twenty-six additional buttons for frequently used menu commands. All buttons on the toolbar can be customized, whether Notepad++ buttons, additional buttons, or other plugin buttons.

Custom buttons for Notepad++ menu commands or other plugin menu commands can be created using a configuration file. It is possible to replace the icons of existing Notepad++ buttons or other plugin buttons.
| | CustomLineNumbers | Andreas Heim | https://sourceforge.net/projects/customlinenumbers | [1.1.10 - 64 bit](https://sourceforge.net/projects/customlinenumbers/files/v1.1.10/plugin/x64/CustomLineNumbers_v1.1.10_x64.zip) |
Displays line numbers as hex numbers or as relative numbers. You can also configure the starting line number.
| | Dark Mode C | pullitall | https://github.com/pullitall/Notepadpp-light-dark-switch-and-automatic-switch-based-on-location | [1.0.3 - 64 bit](https://github.com/pullitall/Notepadpp-light-dark-switch-and-automatic-switch-based-on-location/releases/download/v1.0.3/DARK_MODE_NPP_v1.0.3_x64.zip) |
Adds toolbar icons to instantly switch between light and dark mode with no restart required. Features an automatic mode that dynamically toggles your theme based on local sunrise and sunset times.
| +| Datamodder SQL Formatter | Datamodder | https://github.com/dm-utils/formatsql | [1.3.1.2 - 64 bit](https://github.com/dm-utils/formatsql/releases/download/v1.3.1.2/FormatSQL.zip) |
Formats, minifies and converts SQL directly in Notepad++.
Features:

- Format / minify SQL, format-on-save, format-and-copy
- Multi-dialect conversion (ANSI, Snowflake, MS SQL, PostgreSQL, MySQL, Databricks)
- Quote, comment-style, boolean and number-format conversion
- Configurable casing, alignment, structure and spacing rules with saved profiles
| | DBGp | Damjan Zobo Cvetko | https://github.com/rdipardo/dbgpPlugin | [0.14.2.1 - 64 bit](https://github.com/rdipardo/dbgpPlugin/releases/download/v0.14.2.1/dbgpPlugin_v0.14.2.1_x64.zip) | PHP debugger (XDebug) which talks with the DBGP protocol. Transforms Notepad++ into a PHP IDE. | | Discord Rich Presence | Zukaritasu | https://github.com/Zukaritasu/notepadpp_rpc | [2.1.711.1 - 64 bit](https://github.com/Zukaritasu/notepadpp_rpc/releases/download/v2.1.7/DiscordRPC_v2.1.7_x64.zip) | Shows in discord the file that is currently being edited in Notepad++. | | DoxyIt | Justin Dailey | https://github.com/dail8859/DoxyIt | [0.4.4 - 64 bit](https://github.com/dail8859/DoxyIt/releases/download/v0.4.4/DoxyIt_v0.4.4_x64.zip) | Supports creating Doxygen comments. | @@ -46,7 +47,7 @@ version 1.9.7 | DSpellCheck | Sergey Semushin | https://github.com/Predelnik/DSpellCheck | [1.5.0 - 64 bit](https://github.com/Predelnik/DSpellCheck/releases/download/v1.5.0/DSpellCheck_x64.zip) |
Spell-checking with these main features:
-Underlining spelling mistakes

-Iterating through all mistakes in document
-Finding mistakes only in comments and strings (For files with standard programming language syntax e.g. C++)
-Possible usage of multiple languages (dictionaries) simultaneously to do spell-checking.
-Getting suggestions for words by either using default Notepad++ menu or separate context menu called by special button appearing under word.
-Able to add words to user dictionary or ignore them for current session of Notepad++
-Using either Hunspell library (included in plugin) or Aspell library (needs to be installed).
-A lot of customizing available from Plugin settings (Ignoring/Allowing only specific files, Choosing delimiters for words, Maximum number of suggestions etc)
-Support for downloading and removing Hunspell dictionaries through user friendly GUI interface
-Ability to quickly change current language through the nice menu.
| | EditorConfig | EditorConfig Team | https://github.com/editorconfig/editorconfig-notepad-plus-plus | [0.4.0 - 64 bit](https://github.com/editorconfig/editorconfig-notepad-plus-plus/releases/download/v0.4.0/NppEditorConfig-040-x64.zip) |
EditorConfig is a text file that defines coding conventions for a project to help maintain them consistent no matter which text editor you use. This plugin adds support for .editorconfig files to Notepad++. It will automatically discover and apply matching .editorconfig settings to the files that you open for editing. For the EditorConfig recommended use, file format and samples, visit https://editorconfig.org/.
| | ElasticTabstops | Marius Vasiliu, Justin Dailey | https://github.com/mariusv-github/ElasticTabstops | [1.5.0 - 64 bit](https://github.com/mariusv-github/ElasticTabstops/releases/download/v1.5.0/ElasticTabstops_x64_1.5.0.zip) | Support for Elastic Tabstops. | -| Emoji Description | Ruberoid | https://github.com/Ruberoid/npp_emoji_description | [0.2.14 - 64 bit](https://github.com/Ruberoid/npp_emoji_description/releases/download/v0.2.14/EmojiDescription_x64_v0.2.14.zip) |
Displays detailed character encoding information in the status bar. Shows Unicode code point, decimal/hexadecimal values, HTML entity, and UTF-8 byte sequence for any character including emoji.
| +| Emoji Description | Ruberoid | https://github.com/Ruberoid/npp_emoji_description | [0.3.16 - 64 bit](https://github.com/Ruberoid/npp_emoji_description/releases/download/v0.3.16/EmojiDescription_x64_v0.3.16.zip) |
Displays detailed character encoding information in the status bar. Shows Unicode code point, decimal/hexadecimal values, HTML entity, and UTF-8 byte sequence for any character including emoji.
| | EnhanceAnyLexer | Ekopalypse | https://github.com/Ekopalypse/EnhanceAnyLexer | [1.4.1 - 64 bit](https://github.com/Ekopalypse/EnhanceAnyLexer/releases/download/v.1.4.1/EnhanceAnyLexer_x64_PluginAdmin.zip) | Adds more styling, colors only, options to any Lexer | | ERP Helper | Whitley Media | https://github.com/swhitley/erphelper | [1.1.2 - 64 bit](https://github.com/swhitley/ERPHelper/releases/download/v1.1.2/ERPHelper_x64.zip) |
A set of utilities for developing ERP integrations, includes XSL transformation and Workday API SOAP calls.
| | Explorer | Jens Lorenz | https://github.com/oviradoi/npp-explorer-plugin | [1.9.9.0 - 64 bit](https://github.com/oviradoi/npp-explorer-plugin/releases/download/v1.9.9/Explorer_x64.zip) | File browser. You can open files from your local drives in Notepad++, just double click! | @@ -55,49 +56,50 @@ version 1.9.7 | F# Interactive | Prapin Peethambaran | https://github.com/rdipardo/nppFSIPlugin | [0.2.3.4 - 64 bit](https://github.com/rdipardo/nppFSIPlugin/releases/download/v0.2.3.4/NPPFSIPlugin_v0.2.3.4_x64.zip) |
F# source code lexer and IPC client for F# Interactive.
Note: the .NET SDK must be installed separately.
| | FileFinder | UFO-Pu55y | https://github.com/ufo/filefinder | [0.3 - 64 bit](https://github.com/ufo/filefinder/releases/download/v0.3.0/FileFinder.v0.3.0.x64.bin.zip) | Quickly and comfortably find files by name, both in folders and in N++'s file history. | | FingerText2 | Jimmy Pautz | https://github.com/ultimatejimmy/FingerText2 | [26.6.15 - 64 bit](https://github.com/ultimatejimmy/FingerText2/releases/download/26.6.15/FingerText2_26.6.15_64bit.zip) | Tab-triggered snippet plugin with hotspot navigation, dynamic hotspots, and a snippet dock. | -| Fixed-width Data Visualizer | Shridhar Kumar | https://github.com/shriprem/FWDataViz | [2.6.7.0 - 64 bit](https://github.com/shriprem/FWDataViz/releases/download/v2.6.7.0/FWDataViz_x64.zip) |
Fixed Width Data Visualizer adds Excel-like features for fixed-width data files in Notepad++. Displays cursor position data. Foldable Record Blocks; Hop & Jump to specific fields. Field Copy & Field Paste. Data Extraction. Builtin dialogs to configure file-type, record-type & fields; and themes & colors. Automatic File Type Detection. Handles homogenous, mixed & multi-line records. Full Multi-byte character support. Darkmode enabled.
| +| Fixed-width Data Visualizer | Shridhar Kumar | https://github.com/shriprem/FWDataViz | [2.6.7.0 - 64 bit](https://github.com/shriprem/FWDataViz/releases/download/v2.6.7.0/FWDataViz_x64.zip) |
Fixed Width Data Visualizer adds Excel-like features for fixed-width data files in Notepad++. Displays cursor position data. Foldable Record Blocks; Hop & Jump to specific fields. Field Copy & Field Paste. Data Extraction. Builtin dialogs to configure file-type, record-type & fields; and themes & colors. Automatic File Type Detection. Handles homogenous, mixed & multi-line records. Full Multi-byte character support. Darkmode enabled.
| | FixParser | Chris Taylor | https://github.com/chtaylo3/fix-parser | [0.1.3 - 64 bit](https://github.com/chtaylo3/fix-parser/releases/download/v0.1.3/FixParser_0.1.3_x64.zip) |
Pretty-print and inspect FIX protocol logs: field/value decoding, hover quickview, and a dockable message inspector.
| | Folding Line Hider | leonardchai@gmail.com | https://github.com/leonardchai/FoldingLineHider | [1.1 - 64 bit](https://github.com/leonardchai/FoldingLineHider/releases/download/v1.1/FoldingLineHider1.1.x64.zip) |
This Notepad++ plugin can hide the unsightly folding lines, and for convenience, you can fold and unfold the current level using the Alt + Left/Right keys.
| | GEDCOM Lexer | Stan Mitchell | https://sourceforge.net/projects/gedcomlexer/ | [0.5.0.170 - 64 bit](https://sourceforge.net/projects/gedcomlexer/files/GedcomLexer-0.5.0-r170/GedcomLexer-0.5.0-r170-x64.zip) |
View and edit GEDCOM files with syntax highlighting of: level, xref id, tag, pointer, value and escape tokens. Customize coloration and font styles. Grammar errors are also highlighted. View GEDCOM files in outline mode by folding sections based on line level.
| | GitSCM | Michael J. Vincent | https://github.com/vinsworldcom/nppGitSCM | [1.4.10.1 - 64 bit](https://github.com/vinsworldcom/nppGitSCM/releases/download/1.4.10.1/GitSCM-v1.4.10.1-x64.zip) | N++ Gui for already installed Git SCM for Windows. Optionally TortoiseGit. | -| GotoLineCol | Shridhar Kumar | https://github.com/shriprem/Goto-Line-Col-NPP-Plugin | [2.4.5.1 - 64 bit](https://github.com/shriprem/Goto-Line-Col-NPP-Plugin/releases/download/v2.4.5.1/GotoLineCol_x64.zip) |
A plugin to navigate to a specified line and (byte-based or character-based) column position. Will also display character byte code, UTF-8 byte sequence & Unicode code point, name & block at cursor position. Darkmode enabled. Command line options.
| +| GotoLineCol | Shridhar Kumar | https://github.com/shriprem/Goto-Line-Col-NPP-Plugin | [2.4.5.1 - 64 bit](https://github.com/shriprem/Goto-Line-Col-NPP-Plugin/releases/download/v2.4.5.1/GotoLineCol_x64.zip) |
A plugin to navigate to a specified line and (byte-based or character-based) column position. Will also display character byte code, UTF-8 byte sequence & Unicode code point, name & block at cursor position. Darkmode enabled. Command line options.
| | HEX-Editor | Jens Lorenz | https://github.com/chcg/NPP_HexEditor | [0.9.14.0 - 64 bit](https://github.com/chcg/NPP_HexEditor/releases/download/0.9.14/HexEditor_0.9.14_x64.zip) | Hex editor. Some reported issues, however many bugs fixed in latest release. | | HLASM Lexer - Column-Aware Syntax Highlighting | Zane Hambly | https://github.com/Zaneham/hlasm-npp | [1.1.0 - 64 bit](https://github.com/Zaneham/hlasm-npp/releases/download/v1.1.0/HLASMLexer_x64.zip) |
Column-aware syntax highlighting for IBM HLASM. Understands the 80-column punch card layout — labels, operations, operands, continuation markers and sequence numbers are each highlighted by their column position, not just keywords.
| -| HTML Tag | Martijn Coppoolse | https://github.com/rdipardo/nppHTMLTag | [1.6.0.0 - 64 bit](https://github.com/rdipardo/nppHTMLTag/releases/download/v1.6.0/HTMLTag_v1.6.0_x64.zip) |
Provides three core functions:
- HTML and XML tag jumping, like the built-in brace matching and selection
of tags and/or contents.
- HTML entity encoding/decoding (example: é to é)
- JS character encoding/decoding (example: é to \u00E9)
| +| HTML Tag | Martijn Coppoolse | https://github.com/rdipardo/nppHTMLTag | [1.6.1.0 - 64 bit](https://github.com/rdipardo/nppHTMLTag/releases/download/v1.6.1/HTMLTag_v1.6.1_x64.zip) |
Provides three core functions:
- HTML and XML tag jumping, like the built-in brace matching and selection
of tags and/or contents.
- HTML entity encoding/decoding (example: é to é)
- JS character encoding/decoding (example: é to \u00E9)
| | HugeFiles | Mark Johnston Olson | https://github.com/molsonkiko/HugeFiles/ | [0.4.1 - 64 bit](https://github.com/molsonkiko/HugeFiles/releases/download/v0.4.1/Release_x64.zip) |
Reads very large files one chunk at a time, ensuring that each chunk breaks at the end of a line.
Can also break JSON files into syntactically valid JSON chunks.
Can find/replace text in big files without huge memory consumption.
Find/replace form for editing the big file without reading it all into memory.
| | ImgTag | salvom | https://sourceforge.net/projects/imgtag/ | [2.0.1 - 64 bit](https://github.com/chcg/ImgTag/releases/download/2.0.1.8/ImgTag_2.0.1.8_x64.zip) | Insert IMG tags, in your HTML document, using the Open File dialog box to select image files. | | Indent By Fold | Ben Bluemel, Frank Fesevur | https://github.com/ffes/indentbyfold/ | [0.7.3 - 64 bit](https://github.com/ffes/indentbyfold/releases/download/v0.7.3/IndentByFold-073-x64.zip) |
Indent using Fold points
Note: Disable Notepad++'s Auto Indent in Settings - Preferences - MISC - Untick Auto Indent.
| | Java Plugin | Dominik Cebula | https://github.com/dominikcebula/npp-java-plugin | [0.4.1 - 64 bit](https://github.com/dominikcebula/npp-java-plugin/releases/download/v0.4.1/NppJavaPlugin_v0.4.1_x64.zip) | Allows Java Code Compilation and Execution directly from Notepad++. | | JavaScript Map Parser | Oleksandr Boiko | https://github.com/megaboich/js-map-parser/ | [4.2 - 64 bit](https://github.com/megaboich/js-map-parser/releases/download/4.2/JsMapParser_NppPlugin_4_2_x64.zip) |
Provides better JavaScript support. Provides a panel with hierarchy structure of functions in your js file.
| | jN Notepad++ Plugin | Eugen Kremer | https://github.com/sieukrem/jn-npp-plugin/wiki | [2.2.190.21986 - 64 bit](https://github.com/sieukrem/jn-npp-plugin/releases/download/2.2.190/jN_2.2.190_x64.zip) |
Allows you to extend Notepad++ by using JavaScript.
- You can create new menu elements which execute JavaScript
- You can use manu ActiveX components available on your PC
- You can add shortcuts executing JavaScript
- You can create HTML-based dialogs and docking windows
- You can write JavaScript wrappers around Win32 API
- Since version 2.0.116 you can debug your automating scripts
- Selection highlighting and navigation bar
- Integrated Zen Coding v0.7
- You can catch context menu request and create your own
| -| JSFunctionViewer | Sover David | https://github.com/davidsover/nppJSFunctionViewer | [1.1.0 - 64 bit](https://github.com/davidsover/nppJSFunctionViewer/releases/download/v1.1.0/JSFunctionViewer_x64.zip) |
Provides an easier way to view and/or navigate to functions from function calls. Also works with external files if the src attribute is the last attribute of the | still text", + } + ) + ) + markdown = validator.gen_pl_table_from_catalog(catalog) + self.assertIn("Unsafe | Name", markdown) + self.assertIn( + "<script>alert(1)</script> | still text", markdown + ) + self.assertNotIn("