Open sasumner opened 4 years ago
Seems no interface is available for renaming in https://npp-user-manual.org/docs/plugin-communication/#notepad-messages.
Checkin was https://github.com/notepad-plus-plus/notepad-plus-plus/commit/3546268c235780a6ba15266e7685aab7f6d6ce7f.
So currently just the MENUCOMMAND.FILE_RENAME would be an option.
Request for support in Notepad++ made here: https://github.com/notepad-plus-plus/notepad-plus-plus/issues/8916
It looks like the "N++ extension needed" part isn't going to be fulfilled (see https://github.com/notepad-plus-plus/notepad-plus-plus/issues/8916#issuecomment-1002661861) so I suppose it is appropriate to close this issue. :-(
OP said:
WHAT I'D LIKE: A way to do this programmatically, say with a notepad.rename('My new name') function call.
@chcg replied:
So currently just the MENUCOMMAND.FILE_RENAME would be an option.
My comment to that:
That doesn't fulfill the goal. What that does is pop-up a box and waits for the script user to "fill in the blank", and that's for a file that is going to be actually on disk.
What is wanted is a way to rename an unsaved tab, e.g. new 5
, to something else (but still an unsaved tab, not on disk), without any user involvement.
@chcg
This could be achieved using:
SendMessage(NPPM_INTERNAL_SETFILENAME, intptr_t bufferId, const char * newName);
Reopen?
Should pythonscript really rely on internal npp messages? Are they not called internal because they should not be used by plugins?
Should pythonscript really rely on internal npp messages?
No, I was just documenting it as a possible means. Since that time, the author of N++ has decided that the internal message itself should be removed, as it is unused (internally).
Are they not called internal because they should not be used by plugins?
Oddly enough, the internal message in question seems to have been create for a plugin's usage.
Oh, I see, I was late for the party :-)
Impl of
#define NPPM_SETUNTITLEDNAME (NPPMSG + 115)
// int NPPM_SETUNTITLEDNAME(BufferID id, const wchar_t* newName)
// Rename the tab name for an untitled tab.
// wParam[in]: id - BufferID of the tab. -1 for currently active tab
// lParam[in]: newName - the desired new name of the tab
// Return TRUE upon success; FALSE upon failure
needed for this.
This is a FEATURE REQUEST.
Notepad++ version 7.6.4 (I think) brought the capability to rename an unsaved tab.
For example, a tab with the title "new 2" can be right-clicked upon, "Rename" chosen from the resulting popup menu, and the following box presents:
Entering a value changes the current tab's title to the specified name.
WHAT I'D LIKE: A way to do this programmatically, say with a
notepad.rename('My new name')
function call.Perhaps there are dependency problems with supporting this; for instance, does the Notepad++ plugin interface currently permit plugins to rename an unsaved tab?
There also might be logistical problems in uniquely identifying tabs with the same name (yes, Notepad++'s implementation currently allows this) for purposes of, say
notepad.getFiles()
calls. But, I suppose this is a Notepad++ "problem" (don't allow it), or a user "problem" (don't name two tabs with the same name).