私は数か月間notepad ++を使用しており、すべての設定を行っていますが、最後のタブを閉じたときにnppを閉じる方法が見つかりません。常に新しい空のドキュメントを開始します。
最後のドキュメントを閉じたときに npp を閉じるにはどうすればよいですか?
私は数か月間notepad ++を使用しており、すべての設定を行っていますが、最後のタブを閉じたときにnppを閉じる方法が見つかりません。常に新しい空のドキュメントを開始します。
最後のドキュメントを閉じたときに npp を閉じるにはどうすればよいですか?
これは完全に 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])
Python に精通している場合は、N++ 用のPython スクリプトプラグインを試すことができます。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])
notepad++はMS OFFICEのようなMDI形式のアプリなので、子MDIフォームを閉じてもメインアプリには影響しないので、nodepad++のソースを作り直さないとだめだと思います。