184 Commits

Author SHA1 Message Date
Don Ho
dc9f58ddac Reduce network file hanging issue due to win32API GetFileAttributes cache (unsynchronized).
STR:
1. Open a network file.
2. Close Notepad++ to have it in the session.
3. Disconnect the network, and launch Notepad++ immediately.
4. Around more than 1 minute's delay, then the "Error" dialog displayed.

The reason for the hanging is that the network file was incorrectly detected by doesFileExist (GetFileAttributesEx) as present, leading Notepad++ to attempt opening a non-existent file with _wfopen. This issue seems to stem from a caching mechanism within the IO function (GetFileAttributesEx). When the network disconnects, the cache is not immediately cleared, causing GetFileAttributesEx to falsely report that the file exists. Consequently, when Notepad++ is launched after a network disconnection, GetFileAttributesEx retains its cache, indicating the file exists, while _wfopen fails to locate the network resource, resulting in a hang.

Unfortunately, there's no efficient solution for this problem. The commit's remedy is to check if the file is on the network and whether its directory still exists. If the directory doesn't exist, we avoid calling _wfopen. We verify the directory's existence instead of the file itself because the cache issue with GetFileAttributesEx occurs before _wfopen is executed. Checking the directory avoids the cache problem due to the identical argument being used.

I've tested this remedy in debug mode, and it works fine. However, the problem persists in release mode. Despite this, I believe it's worth keeping this solution, as it provides some protection in a variable network environment, potentially mitigating the issue when it arises.

Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/pull/15658#issuecomment-2386662974

Improve #4306, #6178, #8055, #11388, #12553, #15540, close #15701
2024-10-15 21:27:44 +02:00
Don Ho
fb11abc5c0 Add TOML configuration file format
Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/pull/15564#issuecomment-2305174561

Fix #5631, close #15576
2024-08-26 05:04:06 +02:00
PeterCJ
9e4290094d Add user-defined keyword ability for some supported programming languages
Add new SubStyles and their available keyword lists to specific languages:
- Enable 8 Scintilla's SubStyles (each), which allow for new keyword lists and styles for the languages with SubStyles available: ActionScript, ASP, Bash, C, C++, C#, GDScript, Go, HTML, Java, JavaScript (standalone and embedded), JSP, Lua, PHP, Python, Resource (RC), Swift, TypeScript, and XML.
- The new SubStyles have been added to `langs.model.xml`, `stylers.model.xml`, and the themes, which means users can just use the StyleConfigurator for the SubStyles, just like they do for the original Styles.

Fix #15520, close #15537
2024-08-14 20:01:36 +02:00
Don Ho
bf72b5ec4a Several enhancements for code - part II 2024-08-05 21:22:45 +02:00
Don Ho
88bd09e67d Remove ambiguous symbols (part 7)
Relace TCHAR, generic_string & TEXT("") par wchar_t, wstring & L"" respectively.
Follow up: 94af271

Close #15381
2024-07-01 16:33:00 +02:00
Don Ho
3c897f892a Remove ambiguous symbols (part 5)
Relace TCHAR, generic_string & TEXT("") par wchar_t, wstring & L"" respectively.
Follow up: 94af271

Close #15379
2024-07-01 00:34:44 +02:00
xomx
3c3e7cdadd Fix Encoding "Convert to..." regression
Fix incorrect Clipboard handling. This commit fixes possibly #9426

Fix #15324, fix #15271, fix #3054, close #15346
2024-06-27 14:54:09 +02:00
Don Ho
6b441b738a Prevent DirectWrite from being ON under Windows Sever (Core) 2024-06-21 00:39:24 +02:00
Alan Kilborn
2e116251e2 Fix the Begin/End Select after deletion problem
Fix #15221, close #15278
2024-06-14 15:38:55 +02:00
Alan Kilborn
7a6768b029 Add Backspace unident option
Fix #15180, close #15277
2024-06-13 15:12:22 +02:00
Don Ho
df4e8f5b73 Fix integer overflow issue in Column Editor
Fix #15167, close #15222
2024-06-05 00:58:56 +02:00
cddiffz
0baac8af59 Fix extra space inserted issue with HEX mode in Column Editor
Fix extra space inserted when inserting hexadecimal numbers with Column Editor:
Remove rounding of odd number of digits.

Fix #15168, close #15176
2024-05-22 17:39:34 +02:00
Don Ho
382c33e99a Prevent the division by 0 in getNbDigits function
Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/pull/15152#discussion_r1605845654

Close #15157
2024-05-20 20:26:04 +02:00
cddiffz
d0e3a1a210 Fix crash in Column Editor
Avoid division by zero (due to an arithmetic overflow).

Fix #15144, close #15152
2024-05-19 04:39:55 +02:00
Don Ho
1e19719f8f Fix regression of multi-edit cursors placed wrongly issue
Fix #15126, close #15129
2024-05-12 15:58:22 +02:00
PeterCJ
da5f896de6 Language enhancement: allow custom tags in HTML
HTML Lexer, TAG Style: enable user-defined keywords
Implement and verify @mpheath solution from https://community.notepad-plus-plus.org/topic/25741/html-user-defined-keywords

Fix #15093, close #15094
2024-05-11 03:36:14 +02:00
PeterCJ
161bb41425 Add syntax highlighting for Raku
Based on SciTE, Go/Golang can use cpp lexer.
Use the Perl color scheme from each theme as the basis for the Raku color scheme.

Fix #4465, close #15000
2024-04-16 01:33:40 +02:00
xomx
18815de8ac Fix multi-edit resists escape after typing issue
Add Multi-Edit mode canceling by Esc possibility

Fix #14649, close #14956
2024-04-13 10:31:04 +02:00
PeterCJ
8f24e89824 Add syntax highlighting for Go/Golang
(as done in SciTE, Go/Golang can use cpp lexer)

Fix #8090, close #14966
2024-04-11 17:58:43 +02:00
Don Ho
9251955d10 Support template literal (template strings) in JavaScript
Fix #3822
2024-03-12 04:12:52 +01:00
Don Ho
aa0be9973b Add support for Change History in the text
This commit follows the commit:
fd1f785b89

Close #14838
2024-03-10 05:17:08 +01:00
ozone10
9d92b0a869 Fix some gcc warnings
Fix #14845, close #14846
2024-03-09 03:40:04 +01:00
Christian Grasser
9d09ee818a Fix a potential undefined behaviour & improve some codes
- init grabSize
- optimize WcharMbcsConvertor instance set
- remove unused var in TreeView::searchLeafRecusivelyAndBuildTree()
- missing nullpointer check in ScintillaEditView::init()

Close #14844
2024-03-08 21:00:17 +01:00
mpheath
fd1f785b89 Add Change History colour configuration
Fix #12321, fix #13915, close #14819
2024-03-06 15:48:15 +01:00
Don Ho
35deb8a303 Make "Prevent C0 input" feature optional 2024-02-29 17:51:27 +01:00
Alan Kilborn
40adc38201 Prevent typing control characters into document
Fix #13279, close #14766
2024-02-28 17:01:23 +01:00
Don Ho
d83d4c9239 Fix plugins not recieving some Scintilla notification types regression
Remove the restriction for Scintilla notification types for plugins.

Ref: https://community.notepad-plus-plus.org/topic/25497/notepad-release-8-6-4/9
2024-02-22 17:22:54 +01:00
Don Ho
827b08f6ff Fix regression that the view cannot be activated by mouse clicking
SCI_SETCOMMANDEVENTS cannot be set to false, because SCEN_SETFOCUS is being used by Notepad++

The regression was introduced by commit: 044296eea1

Fix https://community.notepad-plus-plus.org/topic/25490/notepad-release-8-6-3/7?_=1708380779619
2024-02-19 23:27:48 +01:00
Don Ho
f2d66170fc Restore multi-editing option on GUI
Make also Column To Multi-editing optional on GUI and cancel the usage of noColumnToMultiSelect.xml file.
For users who have added "noColumnToMultiSelect.xml" for disabling "Column To Multi-editing" feature,
please go to "Editing 2" section of Preferences to disable this feature.

Ref: https://community.notepad-plus-plus.org/topic/25364/notepad-v8-6-2-release/11?_=1707952609907
Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/14611#issuecomment-1937487607

Fix #14645, close #14734
2024-02-15 18:27:48 +01:00
Don Ho
044296eea1 Fix Replace All crash & performance issue
Fix  #14630, close #14685
2024-02-08 02:20:57 +01:00
Don Ho
f7c44b4413 Restore Shift-DEL, Ctrl-INS and Shift-INS & fix Ctrl+V can't paste into the text fields of forms for certain plugins
This PR restores shortcuts Shift-DEL, Ctrl-INS and Shift-INS for Cut / Copy / Paste respectively.
the action to delete entire line without selection is removed in this PR due to its shortcut Shift-DEL has triggered several critical issues.

To delete entire line, the users are encouraged to use Scintilla default shortcuts set in Shortcut Mapper: Ctrl-Shift-L (SCI_LINEDELETE). User can remap it to another shortcut via Shortcut mapper.

Fix #14568, fix #14470, fix #14571, close #14557, close #14569
2024-01-11 05:34:55 +01:00
Don Ho
dc6f6d1103 Fix deleting in column mode also delete an unexpected EOL
Fix #14426, close #14536
2024-01-03 06:16:54 +01:00
Don Ho
4bde0d4b53 Fix incorrect code
ref: 8ae049afbc (r135905629)

And also add new entries to tabContextMenu_example.xml
2023-12-30 03:53:47 +01:00
Don Ho
8ae049afbc Use 64-bit positions instead of 32-bit obsolete ones
ref: https://github.com/notepad-plus-plus/notepad-plus-plus/pull/14359/files#r1437502252
2023-12-29 02:56:37 +01:00
Don Ho
3c4f0f9cb2 Make line copy/cut/delete while no selection optional
By adding disableLineCopyCutDelete.xml in "%APPDATA%\Notepad++\" directory (or in the Notepad++ installed directory in portable mode) to:
1. prevent hard coded Shift-DEL shortcut deletes whole line while no selection.
2. prevent Copy command (Ctrl-C) copies whole line (without selection).
3. prevent Cut command (Ctrl-X) cuts whole line (without selection).
4. add SCI_CUT (Shift-DEL), SCI_COPY (Ctrl-INS) & SCI_PASTE (Shift-INS) shortcuts

Note: the old disableHardCodedShiftDelete.xml (of 53b5055118caa5934b535c5521f04f991c13143b) is canceled, the new disableLineCopyCutDelete.xml is used instead.

Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/14296#issuecomment-1866679990
Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/14401#issuecomment-1833326429

Close #14513
2023-12-23 04:45:09 +01:00
Don Ho
53b5055118 Make hard-coded shortcut "Shift-DEL" be abled to be disabled
In order to disable the hard-coded shortcut "Shift-DEL" ability (new feature introduced in v8.6) which delete current line while no selection, users must add an empty file named "disableHardCodedShiftDelete.xml", in "%APPDATA%\Notepad++\" directory (or in the Notepad++ installed directory in portable mode) to prevent this behaviour.

Fix #14470, close #14481
2023-12-14 16:58:12 +01:00
Don Ho
aef0438180 Make column to multi-select be abled to be disabled
In order to disable the "Column to multi-select" ability (new feature introduced in v8.6), users must add an empty file named "noColumnToMultiSelect.xml", in "%APPDATA%\Notepad++\" directory (or in the Notepad++ installed directory in portable mode) to prevent this behaviour.

ref: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/14296#issuecomment-1848076816

Fix #14464, close #14476
2023-12-13 03:25:33 +01:00
Don Ho
2724e0ddbb Make RTL per document & remembered across the sessions
This commit adds the ability of RTL/LTR per document (tab), and memorizes RTL setting of each file in the session.xml.

It also adds an attribute "editZoneRTL" in localization XML file. if "RTL" attribute is present and its value is "yes", then user can add  "editZoneRTL" attribute beside, and set the value of the attribute in question to "no", so Notepad++ GUI will be RTL, but Scintilla zone will be LTR by opening files.  Of course, user can set any direction they want afterward, and what they have set on document will be remembered across the sessions.

Fix #9665, fix #9950, fix #14385, close #14431
2023-12-02 17:49:09 +01:00
Don Ho
0978b2e29f Fix visual glichy on multi-paste
This PR removes Shift-DEL Ctrl-INS & Shift-INS shortcut from Scintilla.
Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/14401#issuecomment-1830302635

Now for Copy/Cut/Paste commands and their shortcut are coherent. ie. if user remaps the shortcuts of these 3 commands, both single/multiple selection operation with the commands in question will follow the changed shortcuts.

It also fixes 2 bugs:
1. visual glitch problem of read-only while multi-pasting.
2. the shortcut **Ctrl-C** in Search results works now.

Fix #14410, close #14423
2023-11-29 23:21:11 +01:00
Don Ho
7deb12aeed Enable Copy & Cut commands on menu all the time
Before the implementation of e9c50ed967,
Copy & Cut command were disabled when there were no selection, which makes sense because there was nothing to be copied & cut.
Now users can copy/cut current line without selection.

Fix #14401, close #14415
2023-11-28 15:10:51 +01:00
Don Ho
9bc790b014 Prevent Direct Write being set if user uses RTL
Ref: 975d29b30b (commitcomment-132946815)

Close #14374
2023-11-22 02:06:01 +01:00
Don Ho
c62e222985 Fix Multi-edit DEL keystroke delete part of Unicode character
Fix https://community.notepad-plus-plus.org/topic/25150/notepad-v8-6-release-candidate/5?_=1700578401627
2023-11-22 00:17:26 +01:00
Don Ho
0917875034 Make all SCI_SETELEMENTCOLOUR message use 32 bits color 2023-11-20 04:59:40 +01:00
Don Ho
b24734df8f Fix backspace keystroke not working for multi-editing
Fix https://github.com/notepad-plus-plus/notepad-plus-plus/pull/14359#issuecomment-1815898951
2023-11-18 20:24:20 +01:00
Don Ho
975d29b30b Enable Direct Write Technology in Scintilla by default
And disable Direct Write under WINE, due to the performance issue.
Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/8510
2023-11-18 19:22:59 +01:00
Don Ho
c517985beb Fix DELETE key not working in multi-editing for EOL
Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/pull/14338#issuecomment-1813006657

Close #14359
2023-11-16 18:31:00 +01:00
Don Ho
3e7425f6b1 Fix a typo 2023-11-16 05:29:24 +01:00
Don Ho
1764758669 Enhance multi-edit paste and Enter key type
Also disable auto-indent during multi-editing.

Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/pull/14338#issuecomment-1809045648

Close #14355
2023-11-15 15:37:34 +01:00
Don Ho
812745d850 Make multi-select background & caret colour customizable
Fix #14302, close #14350
2023-11-14 05:40:08 +01:00
Don Ho
4ff9d77d2b Make multi-select Copy/Paste behaviour as same as column edit's one
Copy some multi-select texts and paste them make all text glued all together.
This commit makes pasted texts separated by EOL, as column selection's Copy/Paste behaviour.

Ref: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/14266#issuecomment-1799203336

Close #14338
2023-11-11 00:04:36 +01:00