Don Ho a84cbe8f69 Add new ability for filtering incompatible plugins
In commit f9118dd13c **"npp-compatible-versions"** has been added in plugin list for helping not only Plugin Admin, but also Plugin Manager (Plugin Loader) to check the compatibility with the latest version of plugin (if the version of installed plugin is the latest one).
However, if the version of installed plugin is the previous one, there's no info to know if this plugin with old version is compatible with running Notepad++. In order to filter better old version plugins, **"old-versions-compatibility"** is added in plugin list, so Plugin Manager can use it to check the compatibility to decide load it or not.

The value of "old-versions-compatibility" is a string made by 2 interval versions as following:
`"old-versions-compatibility": "[,2.6][,8.2.1]"`

The first interval versions are for old plugin versions: [,2.6] means from all the versions to v2.6 included.
The second interval versions are for Notepad++ versions: [,8.2.1] means from all the versions to v8.2.1 included.
Both interval versions together means: the plugin in question from the 1st version to v2.6 is compatible with Notepad++ v8.2.1 and all Notepad++ previous versions.

Here is the sample:
```json
{
	"folder-name": "mimeTools",
	"display-name": "Mime tools",
	"version": "2.7",
	"npp-compatible-versions": "[8.3,]",
	"old-versions-compatibility": "[,2.6][,8.2.1]",
	"id": "b65fbfaa15b443131eb69188069cacbff04eca66e0cb84130631303a1d3895f8",
	"repository": "https://github.com/npp-plugins/mimetools/releases/download/v2.7/mimetools.v2.7.zip",
	"description": "Implements several main functionalities defined in MIME.",
	"author": "Don HO",
	"homepage": "https://github.com/npp-plugins/mimetools"
},
```
Considering these 2 scenarios:
1. The current distributed plugin version is v2.7 (the latest one normally), and it is compatible with all Notepad++ version from v8.3. If installed MineTools plugin is v2.7 and running Notepad++ is v8.3.3 then it's OK, and MineTools v2.7 will be loaded.

2. If installed MineTools plugin is v2.6 and running Notepad++ is v8.3.3 then Plugin Manager learns it's a previous version (v2.6 < v2.7), so it will check "old-versions-compatibility" - it will find v2.6 is in the 1st interval [,2.6] - it's matched, then Plugin Manager keep checking the running Notepad++'s compatibility: v8.3.3 is not in the 2nd interval [,8.2.1] - it's not compatible, then MineTools plugin v2.6 won't be loaded.

Here are the test instructions for this PR:
1.  download x64 debug binary here:
https://ci.appveyor.com/api/buildjobs/5ba501ecu21k28i7/artifacts/Notepad%2B%2B.x64.Debug.exe
2. Create an empty file "nppPluginList.json" in your `npp\plugins\Config\`
and copy the following content
5e23fce868/src/pl.x64.json
and paste into `npp\plugins\Config\nppPluginList.json`
You have to copy "updater" folder (which contains GUP.exe) to enable plugin list.
3. Download DSpellCheck plugin v1.4.22 which is not compatible with Notepad++ from v8.3 and later version here:
https://github.com/Predelnik/DSpellCheck/releases/download/v1.4.22/DSpellCheck_x64.zip
Install it into plugin folder manually.
4. Now launch Notepad++ x64 debug binary and watch it crash.
5. Edit "nppPluginList.json" by adding `"old-versions-compatibility": "[,1.4.22][,8.2.1]",` into DSpellCheck section.
6. Startup Notepad++. Notepad++ doesn't crash. and now you can check DSpellCheck plugin is not loaded on the startup.

Fix  #11358, fix #11349, close  #11356
2022-03-09 19:26:01 +01:00
2022-01-31 03:55:28 +01:00
2021-11-13 19:02:22 +01:00
2022-01-04 22:34:59 +01:00
2022-02-17 14:02:00 +01:00
2021-03-10 20:33:16 +01:00

What is Notepad++ ?

GitHub release     Appveyor build status     Join the disscussions at https://community.notepad-plus-plus.org/

Notepad++ is a free (free as in both "free speech" and "free beer") source code editor and Notepad replacement that supports several programming languages and natural languages. Running in the MS Windows environment, its use is governed by GPL License.

See the Notepad++ official site for more information.

Notepad++ Release Key

Since the release of version 7.6.5 Notepad++ is signed using GPG with the following key:

  • Signer: Notepad++
  • E-mail: don.h@free.fr
  • Key ID: 0x8D84F46E
  • Key fingerprint: 14BC E436 2749 B2B5 1F8C 7122 6C42 9F1D 8D84 F46E
  • Key type: RSA 4096/4096
  • Created: 2019-03-11
  • Expires: 2024-03-11

https://github.com/notepad-plus-plus/notepad-plus-plus/blob/master/nppGpgPub.asc

Supported OS

All the Windows systems still supported by Microsoft are supported by Notepad++. However, not all Notepad++ users can or want to use the newest system. Here is the Supported systems information you may need in case you are one of them.

Build Notepad++

Please follow build guide to build Notepad++ from source.

Contribution

Contributions are welcome. Be mindful of our Contribution Rules to increase the likelihood of your contribution getting accepted.

Notepad++ Contributors

Description
Notepad++ official repository
Readme GPL-3.0 406 MiB
Languages
C++ 79.4%
HTML 11%
C 2.8%
Objective-C++ 1.8%
Python 1.7%
Other 2.6%