我现在使用notepad ++几个月并经历了所有设置,但是当我关闭最后一个标签时找不到关闭npp的方法。它总是会启动一个新的空文档。
任何想法如何在关闭最后一个文档时关闭npp?
答案 0 :(得分:3)
这完全基于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])
答案 1 :(得分:2)
如果您熟悉Python,可以试用N ++的Python Script插件。 您将为document-closed-event设置回调脚本。在里面它对所有打开的文档做了一些迭代,当剩下只有1个没有文本时,然后终止N ++。
我个人将“Alt + x”键映射到“Exit”Notepad ++,这比通常工作的“Alt + F4”更容易掌握。
<强> /修改
我其实非常喜欢你的想法,所以我很快就自己试了一下。 花了大约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])
答案 2 :(得分:2)
Notepad ++的最新更新包括关闭最后一个选项卡后关闭应用程序的功能。
要更新Notepad ++,请转到?&gt;更新Notepad ++并按照安装向导进行操作。
更新完成后,您可以在设置&gt;首选项菜单中选择“关闭最后一个标签时退出”(在标签栏输入组下)。
答案 3 :(得分:0)
notepad ++是一个MDI表单应用程序,就像MS OFFICE一样,关闭子MDI表单不会影响主要的应用程序,因此,我认为除非你重建nodepad ++的源代码,否则不知道。