我正在使用记事本++几个月,并通过了所有设置,但无法找到一种方法在关闭最后一个选项卡时关闭npp。它总是会启动一个新的空文档。当关闭最后一个文档时关闭记事本++
任何想法如何使npp在关闭最后一个文档时关闭?
我正在使用记事本++几个月,并通过了所有设置,但无法找到一种方法在关闭最后一个选项卡时关闭npp。它总是会启动一个新的空文档。当关闭最后一个文档时关闭记事本++
任何想法如何使npp在关闭最后一个文档时关闭?
notepad ++是一个MDI表单应用程序,就像MS OFFICE一样,关闭子MDI表单不会影响主应用程序,所以,除非重建nodepad ++的源代码,否则我认为这是不知道的。
如果您熟悉Python,则可以尝试使用Python Script插件进行N ++。 您将为文档关闭事件设置回调脚本。在它内部对所有打开的文档进行一些迭代,当剩下的只剩下1个文本时,则终止N ++。
就我个人而言,我将按键“Alt + x”映射到“退出”记事本++,这更容易抓图,然后通常工作的“Alt + F4”。
/EDIT
其实我挺喜欢你的想法,所以我赶紧尝试过自己。 花了20分钟才弄明白。下面是一个完整的解决方案:
def shutdownNppOnLastFileClosed(args):
import os
files = notepad.getFiles()
# there are always at least 2 'buffers' open in N++
if len(files) == 2:
currentBufferID = notepad.getCurrentBufferID()
for (filename, bufferID, index, view) in files:
if os.path.exists(filename):
break
notepad.activateBufferID(bufferID)
if editor.getLength() > 0:
break
# TODO: just to be on the safe side - if we
# reached here, we actually should also check
# if the 2 left empty buffers are not unsaved,
# but I couldn't find a way to do that.
else:
# following 'menuCommand' looks cleaner than
# the 'sys.exit' but it currently deadlocks N++:
#notepad.menuCommand(MENUCOMMAND.FILE_EXIT)
sys.exit(0)
notepad.activateBufferID(currentBufferID)
notepad.callback(shutdownNppOnLastFileClosed, [NOTIFICATION.FILECLOSED])
这完全是基于UFO的代码。只有当你关闭最后一个文档时它才起作用,不管它是否新建,它都不会冻结npp。
为了简洁起见,这里如下再次步骤:
保存并重新启动Npp以加载脚本。
from threading import Timer
def shutdownNppOnLastFileClosed(args):
def closeNpp():
notepad.menuCommand(MENUCOMMAND.FILE_EXIT)
files = notepad.getFiles()
if len(files) == 2:
t = Timer(0.1, closeNpp)
t.start()
notepad.callback(shutdownNppOnLastFileClosed, [NOTIFICATION.FILEBEFORECLOSE])
记事本++最新的更新包括关闭最后一个标签后关闭应用程序的功能。
要更新Notepad ++,请进入?>更新Notepad ++并遵循安装向导。
更新完成后,您可以在设置>首选项菜单中选择“退出关闭最后一个选项卡”(在选项卡栏输入组下)。
从Notepad ++ v7.5.3起,使用startup.py和PythonScript有一些问题用作Git编辑器。如果一个文件通过PythonScript关闭,那么它似乎挂起了Git进程。记事本++实例在外观上看起来是封闭的,但根据Process Explorer保持不变。 使用@ Sebastian的建议为我工作。 – blitzvergnugen 2018-01-02 19:02:34
它有一个错误 - 当没有保存的文档打开 - 只打开(一个&&空&&没有改变)文档 - 它不工作 – msangel 2013-05-20 00:52:44