关闭最后一个文档时关闭Notepad ++

时间:2012-04-27 00:11:03

标签: notepad++

我现在使用notepad ++几个月并经历了所有设置,但是当我关闭最后一个标签时找不到关闭npp的方法。它总是会启动一个新的空文档。

任何想法如何在关闭最后一个文档时关闭npp?

4 个答案:

答案 0 :(得分:3)

这完全基于ufo的代码。只有当你关闭最后一个文件时它是否有效,无论它是否是新的,它都不会冻结npp。

为简洁起见,再次按照以下步骤进行操作:

  1. 安装Python Script插件
  2. 插件上> Python脚本>配置将初始化模式从LAZY更改为ATSARTUP
  3. 打开 ... \ Notepad ++ \ plugins \ PythonScript \ scripts \ startup.py 并在其末尾放置以下代码。
  4. 保存并重新启动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分钟才搞清楚。这是一个完整的解决方案:

  1. 安装插件 Python脚本(上面的链接)
  2. 转到插件&gt; Python&gt;配置并将 初始化 模式从 LAZY 更改为 ATSARTUP
  3. 打开“ ... \ Notepad ++ \ plugins \ PythonScript \ scripts \ startup.py ”并在其末尾放置以下代码:Seems like the code tags don't work below a numbered list, so click me to see the code
  4. 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 ++的源代码,否则不知道。