NppExec can't call python script through shortcut?
-
I tried to invoke a python script through NppExec plugin with these 2 lines below.
npp_save "D:\Notepad++_7.5.8\plugins\Config\PythonScript\scripts\someScript.py"
npp_menucommand "Plugins\Python Script\Scripts\someScript"
It worked fine.
But when I invoke this NppExec script by pressing Ctrl+F6, the script could not invoke the python script. Butnpp_save
was successfully processed.
However, if I use mouse to click on Direct Execute Previous, instead of using shortcut, the python script was run successfully.Then I tried to put that NppExec script under **Macro **menu and assigned it a shortcut. I was all the same. When I click it, it can invoke the python script. But when I call the NppExec script via shortcut, the python script doesn’t run.
Is it a bug of NppExec plug-in?
-
it is expected that the format for npp_menucommand is <menu\item\name>
This doesn’t fit with the layout Plugins\Python Script\Scripts\someScript",
so I assume it is needed to bring the python script into the main pythonscript menu level.May I ask you what your ultimate goal is?
Eko
-
@Eko-palypse
The NppExec script is alright. It runs OK both in command line and when I click on Direct Execute Previous(Ctrl+F6). The problem is when I run the NppExec script by pressing shortcut, the second line(npp_menucommand "Plugins\Python Script\Scripts\someScript"
) of that NppExec script doesn’t run. Only the first line(npp_save "D:\Notepad++_7.5.8\plugins\Config\PythonScript\scripts\someScript.py"
) is run. -
Since you ask, my goal is just to save the python script file and run it within 1 shortcut.
-
@古旮 said:
npp_menucommand “Plugins\Python Script\Scripts\someScript”
To be honest, this does not work for me but if someScript is located one folder up like
“Plugins\Python Script\someScript” then it works.Nevertheless I’m still unsure what you try to do.
If you want to run python scripts with a locally installed python interpreter,
then I guess you should do it differently if using NppExecDefine something like this
NPP_SAVE cd $(CURRENT_DIRECTORY) python.exe $(FULL_CURRENT_PATH)
Assuming that python can be found otherwise replace with full path to python.exe
This gives you also the benefit of being able to test different python interpreters
and you don’t need to hard code the path of the python script.But if you want to execute python script via PythonScript plugin then I would say
do either import it or use exec/execfile with something likefrom Npp import editor, notepad def run(selectedCode): _file = notepad.getCurrentFilename() if selectedCode: print "running content from", _file exec(editor.getTextRange(*editor.getUserCharSelection())) else: if editor.getLine(0).startswith("#NEW_NAMESPACE"): print "running in own namespace", _file ns = {} ns["__name__"] = "__main__" exec(editor.getText(), ns, ns) else: print "running in current namespace", _file exec(editor.getText()) run(not editor.getSelectionEmpty())
and if you still want to save it before executing it, put a
notepad.save()
beforerun(not editor.getSelectionEmpty())
Eko
-
@Eko-palypse
Thank you for the reply. I tested again and still found the code works for me.
But there is one thing I forgot to mention in my original post.
When I call the NppExec script through shortcut(as opposed to mouse click), the commandnpp_menucommand "Plugins\Python Script\Scripts\someScript"
still runs, but it doesn’t invoke the python script. Instead, it opens that *.py file in notepad++.
Only if I call the same NppExec script by mouse clicking on its menu item, or through NppExec console, will that line of NppExec command invoke the specified python script, as expected.
So, from my point of view, that must be a bug of NppExec. To be more specific, thenpp_menucommand
command’s bug.Here’s my versions below, in case anyone with the same versions as mine can reproduce the same peoblem:
My Npp version: Notepad++ v7.5.8
My NppExec version: ver. 0.6 RC2 Unicode for Notepad++
My python script version: 1.0.8.0NppExec 0.6 RC2 seems to be the newest version, so maybe I will upgrate my python script to 1.3 , to see if that’ll fix the problem, or still have the problem.
And thank you again for the info and solution you provided. I’ll look into that later.
-