6

私は数か月間notepad ++を使用しており、すべての設定を行っていますが、最後のタブを閉じたときにnppを閉じる方法が見つかりません。常に新しい空のドキュメントを開始します。

最後のドキュメントを閉じたときに npp を閉じるにはどうすればよいですか?

4

4 に答える 4

3

これは完全に ufo のコードに基づいています。新しいかどうかに関係なく、最後のドキュメントを閉じたときに機能し、npp がフリーズしないということだけです。

簡潔にするために、ここでもう一度手順に従います。

  1. Python スクリプト プラグインをインストールする
  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])
    
于 2014-09-15T01:16:56.553 に答える
2

Python に精通している場合は、N++ 用のPython スクリプトプラグインを試すことができます。document-closed-event のコールバック スクリプトを設定します。その内部で、開いているすべてのドキュメントを繰り返し処理し、テキストのないドキュメントが 1 つしか残っていない場合は、N++ を終了します。

個人的には、キー "Alt + x" を "Exit" Notepad++ にマップしました。これは、通常動作する "Alt + F4" よりも簡単に把握できます。

/編集

私は実際にあなたのアイデアがとても気に入ったので、すぐに自分で試してみました。それを理解するのに約20分かかりました。完全な解決策は次のとおりです。

  1. プラグインのPython スクリプトをインストールします(上記のリンク) 。
  2. Plugins > Python > Configurationに移動し、初期化モードをLAZYからATSARTUPに変更します。
  3. " ...\Notepad++\plugins\PythonScript\scripts\startup.py " を開き、その末尾に次のコードを配置します。番号付きリストの下ではコード タグが機能しないようです。コードを表示するには、私をクリックしてください。
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])
于 2012-05-22T09:58:58.867 に答える
0

notepad++はMS OFFICEのようなMDI形式のアプリなので、子MDIフォームを閉じてもメインアプリには影響しないので、nodepad++のソースを作り直さないとだめだと思います。

于 2012-04-27T00:53:18.943 に答える