As an example, I want to trigger my action wehn saving a file with the extension .special. When I open a file log.txt and select saveAs and enter log.special, then I still get the Filename log.txt from NPPN_FILEBEFORESAVE, hence my action will not trigger
As @Coises said, NPPN_FILESAVED should be used to listen for when a file is finished saving. As the name implies, NPPN_FILEBEFORESAVE fires before the file is saved, so you should not be too surprised that you get the old name of the buffer when you respond to this notification.
To respond to a file being renamed, use NPPN_FILEBEFORERENAME, NPPN_FILERENAMED and NPPN_FILERENAMECANCEL.
You need a global variable, the name of a file that is being renamed. Let’s call it fileToRename.
When you receive an scNotification with code NPPN_FILEBEFORERENAME, set fileToRename, to the name of the buffer to be renamed (use NPPM_GETFULLPATHFROMBUFFERID with WPARAM = scNotification->Header.idFrom) When you receive an scNotification with code NPPN_FILERENAMECANCEL, set fileToRename to NULL, because the file rename operation was cancelled. When you receive an scNotification with code NPPN_FILERENAMED, you can set fileToRename to the name of the file after being renamed (use NPPM_GETFULLPATHFROMBUFFERID with WPARAM = scNotification->Header.idFrom)If you don’t care about what the name of the file was before after it was renamed, you can also only listen to NPPN_FILERENAMED.