Notepad++ v5.1.3 new feature and fixed bugs (from v5.1.2) :
1. Add PostIt feature (F12 to toggle it).
2. Fix the bug that Unicode path file opened in the previous session doesn't be restored.
3. Fix nativeLang loading problem if Notepad++ location path contains Unicode characters.
4. Make shell extension context menu Unicode compliant.
5. Fix "Go to/Open in another instance" bug.
6. Process WM_IME_REQUEST message to support Windows IME.
7. Fix "Go to another view" translation coding error.
8. Adding search text on the top of combo box.
9. Fix Tidy installation problem for TextFX plugin.
10. Change the N++ recovery directory from c:\N++RECOV to %temp%\N++RECOV.
According to the PluginsManager.h :
typedef void (EXT_LEXER_DECL *GetLexerNameFn)(unsigned int Index, TCHAR *name, int buflength);
So in both lines :
GetLexerNameFn GetLexerName = (GetLexerNameFn)::GetProcAddress(pi->_hLib, "GetLexerName");
GetLexerStatusTextFn GetLexerStatusText = (GetLexerStatusTextFn)::GetProcAddress(pi->_hLib, "GetLexerStatusText");
"GetLexerName" and "GetLexerStatusText" on the lexer side should be always the same.
Please let me know what you think, so I can reply the rest of correction.
Don
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
"GetLexerStatusText" is a NPP construct. It doesn't exist in the scintilla source.
"GetLexerName" returns the lexer name like "C++", "Makefile" and so on. "GetLexerStatusText" returns "C++ source file", the text which will get displayed in the status bar when having the lexer active.
Therefore they return different strings.
Please note that scintilla also uses those two functions but defined with char instead of TChar (widechar). Therefore my patch requires two additional functions in the unicode external lexer: "GetLexerNameW" and "GetLexerStatusTextW" which returns the same string as their nonW equivalents but as widechar.
Thanks for working on this problem.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
> Therefore my patch requires two additional functions in the unicode external lexer:
> "GetLexerNameW" and "GetLexerStatusTextW" which returns the same string as
> their nonW equivalents but as widechar.
That's what I want to discuss :
In your lexer, you should keep the same name for both ANSI / Unicode version, since this function uses the generic type variable "TCHAR" as out result.
Define/non define "UNICODE" symbol let you compile your lexer as ANSI/Unicode compliant binary.
So in the code of Notepad++, "GetLexerName" and "GetLexerStatusText" won't be change.
The rest things to do is (in the case of Unicode mode) convert these 2 variables to char * in order to pass to scintilla (just like in your patch, but I'll use internal existing functions).
If you are ok with that, I'll do the modification, then send you the binary to test.
Let me know if you have any question.
Don
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Don, Im not sure if I follow correctly, but wouldnt it be wise just to have Notepad++ do the ANSI->Unicode conversion jsut liek any other Scintilla text function (like getting the current line etc since Scintilla is all char).
So No TCHAR in the function definition whatsoever, just have Notepad++ convert it to TCHAR (which only means somethign in Unicode build).
That way the least amount of change is required for ANSI lexers, and compatibility with Scintilla is guaranteed.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Harry is right.
Scintilla also reads "GetLexerName" from the dll but expects ANSI independent if Npp is compiled as unicode or ansi.
Therefor they has to be ANSI.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
> Scintilla also reads "GetLexerName" from the dll but expects ANSI independent
> if Npp is compiled as unicode or ansi. Therefor they has to be ANSI.
True. At least we have a conclusion for 2 uniq symbols "GetLexerName" and
"GetLexerStatusText".
Lexer Name is needed not only by Scintilla, but by Notepad++ as well.
This part will be converted by Notepad++ (char* -> wchar_t).
Lexer description is needed only by Notepad++, it's on the lexer side to do the necessary switch (TCHAR).
So external lexer functions prototype should be :
int GetLexerCount();
void GetLexerName(unsigned int Index, char *name, int buflength);
void GetLexerStatusText(unsigned int Index, TCHAR *desc, int buflength);
I don't know if it's documented on wiki page. If not, I'll try to work on it
(if I have time).
I'll send you the fixed binary ASAIC.
Don
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm not seeing some of my posts shwing up in the forum (via gmane with mail client) so I thought I'd post this one again and solicit a response:
----------------------------------------
Great to see some more external lexer plugin lovin'. If this patch is going to be included in an upcoming release (5.1.4?) would it be possible to also add in two other changes for external lexers to handle indicators without the need to patch either the scintilla or notepad++ source?
The two changes are needed to ensure that indicators can be handled in the same fashion (from a users perspective) as any other style. When switching languages the indicators would be removed and when changing colors of a incidicator's style in the Style Preferences dialog they would be reflected as the user makes the selection.
> If this patch is going to be included in an upcoming release (5.1.4?)
The patch itself will not be included, but the bug will be fixed in v5.1.4.
Just keep these API prototypes in mind :
void GetLexerName(unsigned int Index, char *name, int buflength);
void GetLexerStatusText(unsigned int Index, TCHAR *desc, int buflength);
> The two changes are needed to ensure that indicators can be handled
> in the same fashion (from a users perspective)
OK, I'll add them if your lexer needs - For the notification name, I prefer to
NPPN_WORDSTYLESUPDATED rather than NPPN_STYLEXMLCHANGE.
> I'm very interested in testing out a fixed external lexer binary
> and sent you an at d o n . h @ f r e e . f r
Feel free to contact me to get the newest binary to test with your plugin.
Don
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Tested with our lexer plugin and it works great! Having the ClearDocumentStyle and new NPPN_WORDSTYLESUPDATED message puts our external lexers scintilla and notepad code back in line with what will be official!
We are looking forward to having auto updates on again. :D
almostautomated
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I've noticed that if you use multiple instances, the session.xml file saves only the data about the last one that you close. Is it possible to have N++ store all the sessions? Because if you have a "big" one with many files open and a "small" one with just one file, you have to remember to close the small one first, and the big one afterwards, or else you'll lose your precious session (including, for example, bookmarks). It would be great if Notepad++ could automatically load different sessions when multiple instances are used, or if it asked you which one you want to load when you run it.
I'm not sure it's VERY useful, but it would be at least a bit.
Anyway, as always, thank you for your work!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Indeed. Due to the Windows File Protection system, the Unicode compliant nppcm.dll can not be override by installation procedure.
In order to update nppcm.dll by using Installer, you have to uninstall Notepad++, reboot your PC then install the newest version.
Otherwise, you should update manually :
1. Go to your Notepad++ installed directory.
2. Execute unreg.bat
3. Reboot your system or
kill Explorer process then relaunch it
4. Download newest nppCM from : http://notepad-plus.sourceforge.net/commun/misc/nppCM.zip
Make sure you copy Unicode version into Notepad++ directory.
5. Execute reg.bat
I don't want to make installer reboot system, so blame to Microsoft to have such WFP system, not to Notepad++.
Don
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
(wrong HTML highlighting when cursor in the tag)
<input type="checkbox" name="iAdditionalAddress" value="1" checked onclick="unhideAdditional( this )"/>
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I remember the Horizontal Scroll-bar will automatically resize when the vertical scroll-bar is moved in the previous of Notepad++, but why this feature is gone now?
Its a quite good feature. I hope it will be back again, or be an option to enable it.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2008-12-31
Hi Don
I have sent you newer version of translation.
There 5 new lines are translated. V a lot of corrected which varied during updating Notepad ++.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Download newest release here :
https://sourceforge.net/project/showfiles.php?group_id=95717
Notepad++ v5.1.3 new feature and fixed bugs (from v5.1.2) :
1. Add PostIt feature (F12 to toggle it).
2. Fix the bug that Unicode path file opened in the previous session doesn't be restored.
3. Fix nativeLang loading problem if Notepad++ location path contains Unicode characters.
4. Make shell extension context menu Unicode compliant.
5. Fix "Go to/Open in another instance" bug.
6. Process WM_IME_REQUEST message to support Windows IME.
7. Fix "Go to another view" translation coding error.
8. Adding search text on the top of combo box.
9. Fix Tidy installation problem for TextFX plugin.
10. Change the N++ recovery directory from c:\N++RECOV to %temp%\N++RECOV.
Included plugins (Unicode):
1. TextFX v0.25
2. NppExec 0.3 beta1
3. Spell Checker v1.3.2
4. MIME Tools v1.5
5. FTP_synchronize v0.9.6
6. NppExport v0.2.8
7. Doc Monitor v2.2
8. NppNetNote v0.1
9. Compare plugin v1.5.2
Included plugins (ANSI):
1. TextFX v0.25
2. NppExec v0.25R2
3. Spell Checker v1.3.1
4. MIME Tools v1.5
5. FTP_synchronize v0.9.6
6. NppExport v0.2.8
7. Compare plugin v1.5.1
8. Light Explorer v1.5
9. Doc Monitor v2.2
10. NppNetNote v0.1
Don
I don't find an exe file on here. Am I missing something?
Unfortunately, this bug:
https://sourceforge.net/forum/forum.php?thread_id=2716226&forum_id=331753
is still there. I'm able to reproduce it on my system and thus can help fix it.
Bug fixed.
May I send you the fixed binary to test?
If so, please contact me at d o n . h @ f r e e . f r
Don
External lexer are still broken in the unicode release:
https://sourceforge.net/tracker/index.php?func=detail&aid=2201065&group_id=95717&atid=612382
Please note that there is a _working_patch_ attached to that bug report.
If additional informations are missing, please feel free to ask those questions.
Regarding your patch, I have a remark.
According to the PluginsManager.h :
typedef void (EXT_LEXER_DECL *GetLexerNameFn)(unsigned int Index, TCHAR *name, int buflength);
So in both lines :
GetLexerNameFn GetLexerName = (GetLexerNameFn)::GetProcAddress(pi->_hLib, "GetLexerName");
GetLexerStatusTextFn GetLexerStatusText = (GetLexerStatusTextFn)::GetProcAddress(pi->_hLib, "GetLexerStatusText");
"GetLexerName" and "GetLexerStatusText" on the lexer side should be always the same.
Please let me know what you think, so I can reply the rest of correction.
Don
"GetLexerStatusText" is a NPP construct. It doesn't exist in the scintilla source.
"GetLexerName" returns the lexer name like "C++", "Makefile" and so on. "GetLexerStatusText" returns "C++ source file", the text which will get displayed in the status bar when having the lexer active.
Therefore they return different strings.
Please note that scintilla also uses those two functions but defined with char instead of TChar (widechar). Therefore my patch requires two additional functions in the unicode external lexer: "GetLexerNameW" and "GetLexerStatusTextW" which returns the same string as their nonW equivalents but as widechar.
Thanks for working on this problem.
> Therefore my patch requires two additional functions in the unicode external lexer:
> "GetLexerNameW" and "GetLexerStatusTextW" which returns the same string as
> their nonW equivalents but as widechar.
That's what I want to discuss :
In your lexer, you should keep the same name for both ANSI / Unicode version, since this function uses the generic type variable "TCHAR" as out result.
Define/non define "UNICODE" symbol let you compile your lexer as ANSI/Unicode compliant binary.
So in the code of Notepad++, "GetLexerName" and "GetLexerStatusText" won't be change.
The rest things to do is (in the case of Unicode mode) convert these 2 variables to char * in order to pass to scintilla (just like in your patch, but I'll use internal existing functions).
If you are ok with that, I'll do the modification, then send you the binary to test.
Let me know if you have any question.
Don
Don, Im not sure if I follow correctly, but wouldnt it be wise just to have Notepad++ do the ANSI->Unicode conversion jsut liek any other Scintilla text function (like getting the current line etc since Scintilla is all char).
So No TCHAR in the function definition whatsoever, just have Notepad++ convert it to TCHAR (which only means somethign in Unicode build).
That way the least amount of change is required for ANSI lexers, and compatibility with Scintilla is guaranteed.
Harry is right.
Scintilla also reads "GetLexerName" from the dll but expects ANSI independent if Npp is compiled as unicode or ansi.
Therefor they has to be ANSI.
> Scintilla also reads "GetLexerName" from the dll but expects ANSI independent
> if Npp is compiled as unicode or ansi. Therefor they has to be ANSI.
True. At least we have a conclusion for 2 uniq symbols "GetLexerName" and
"GetLexerStatusText".
Lexer Name is needed not only by Scintilla, but by Notepad++ as well.
This part will be converted by Notepad++ (char* -> wchar_t).
Lexer description is needed only by Notepad++, it's on the lexer side to do the necessary switch (TCHAR).
So external lexer functions prototype should be :
int GetLexerCount();
void GetLexerName(unsigned int Index, char *name, int buflength);
void GetLexerStatusText(unsigned int Index, TCHAR *desc, int buflength);
I don't know if it's documented on wiki page. If not, I'll try to work on it
(if I have time).
I'll send you the fixed binary ASAIC.
Don
Don,
I'm not seeing some of my posts shwing up in the forum (via gmane with mail client) so I thought I'd post this one again and solicit a response:
----------------------------------------
Great to see some more external lexer plugin lovin'. If this patch is going to be included in an upcoming release (5.1.4?) would it be possible to also add in two other changes for external lexers to handle indicators without the need to patch either the scintilla or notepad++ source?
The two changes are needed to ensure that indicators can be handled in the same fashion (from a users perspective) as any other style. When switching languages the indicators would be removed and when changing colors of a incidicator's style in the Style Preferences dialog they would be reflected as the user makes the selection.
The changes are outlined in two feature requests:
Clearing the document style on language change (which is now a part of Scintilla):
https://sourceforge.net/tracker2/?func=detail&aid=2454982&group_id=95717&atid=612385
Notification of change to the style.xml to plugins:
https://sourceforge.net/tracker2/?func=detail&aid=2475348&group_id=95717&atid=612385
It would be great not to be forked. What do you think?
almostautomated
BTW: I'm very interested in testing out a fixed external lexer binary and sent you an at d o n . h @ f r e e . f r
> If this patch is going to be included in an upcoming release (5.1.4?)
The patch itself will not be included, but the bug will be fixed in v5.1.4.
Just keep these API prototypes in mind :
void GetLexerName(unsigned int Index, char *name, int buflength);
void GetLexerStatusText(unsigned int Index, TCHAR *desc, int buflength);
> The two changes are needed to ensure that indicators can be handled
> in the same fashion (from a users perspective)
OK, I'll add them if your lexer needs - For the notification name, I prefer to
NPPN_WORDSTYLESUPDATED rather than NPPN_STYLEXMLCHANGE.
> I'm very interested in testing out a fixed external lexer binary
> and sent you an at d o n . h @ f r e e . f r
Feel free to contact me to get the newest binary to test with your plugin.
Don
Don,
Excellent, that's great news! Thank you very much!
I've sent another email regarding the fixed binary.
almostautomated
Thanks for forwarding the fixed binary.
Tested with our lexer plugin and it works great! Having the ClearDocumentStyle and new NPPN_WORDSTYLESUPDATED message puts our external lexers scintilla and notepad code back in line with what will be official!
We are looking forward to having auto updates on again. :D
almostautomated
I've noticed that if you use multiple instances, the session.xml file saves only the data about the last one that you close. Is it possible to have N++ store all the sessions? Because if you have a "big" one with many files open and a "small" one with just one file, you have to remember to close the small one first, and the big one afterwards, or else you'll lose your precious session (including, for example, bookmarks). It would be great if Notepad++ could automatically load different sessions when multiple instances are used, or if it asked you which one you want to load when you run it.
I'm not sure it's VERY useful, but it would be at least a bit.
Anyway, as always, thank you for your work!
It'll be a nice feature that your ask.
However, since each instance will read its configuration, it's hard to implement this feature w/o breaking the current architecture.
Don
once the explorer + favorites are plugged in, once you through them out…
notepad++ looses one + for this!
I wonder why I still can't open file with unicode name or path using "open with notepad++" from right click menu.
Still get the "file doesn't exist" message or just no file opened.
I use Win Xp sp3 with additional language installed.
ah, problem solved after fully uninstall notepad++ and reinstall with v5.1.3.
Indeed. Due to the Windows File Protection system, the Unicode compliant nppcm.dll can not be override by installation procedure.
In order to update nppcm.dll by using Installer, you have to uninstall Notepad++, reboot your PC then install the newest version.
Otherwise, you should update manually :
1. Go to your Notepad++ installed directory.
2. Execute unreg.bat
3. Reboot your system or
kill Explorer process then relaunch it
4. Download newest nppCM from :
http://notepad-plus.sourceforge.net/commun/misc/nppCM.zip
Make sure you copy Unicode version into Notepad++ directory.
5. Execute reg.bat
I don't want to make installer reboot system, so blame to Microsoft to have such WFP system, not to Notepad++.
Don
Hi Don, these bugs found their way to NPP 5.1.3:
(caret disappears, text viewport jumps up)
https://sourceforge.net/forum/message.php?msg_id=5641943
(wrong HTML highlighting when cursor in the tag)
<input type="checkbox" name="iAdditionalAddress" value="1" checked onclick="unhideAdditional( this )"/>
I remember the Horizontal Scroll-bar will automatically resize when the vertical scroll-bar is moved in the previous of Notepad++, but why this feature is gone now?
Its a quite good feature. I hope it will be back again, or be an option to enable it.
Hi Don
I have sent you newer version of translation.
There 5 new lines are translated. V a lot of corrected which varied during updating Notepad ++.
Confirmation.
It'll be included in the next release.
Thank you
Don