Eu acho que criei uma solução de prova de conceito, mas é um pouco complicado e (atualmente) provoca uma falha no Notepad ++, então provavelmente ainda não é viável. Eu pensei que eu iria postar de qualquer maneira, como outros podem estar olhando para resolver problemas semelhantes.
O plugin beta O Notepad ++ Python Script adiciona suporte a scripts no Notepad ++, incluindo a conexão com as notificações existentes do Notepad ++. O plug-in inclui um script de inicialização que é sempre executado, desde que "ATSTARTUP" esteja selecionado nas opções de configuração do plug-in.
- Iniciar um arquivo de lote da ferramenta legada (pode ser minimizado na inicialização)
- Altere o título das janelas de comando para algo conhecido pelo Notepad ++ e exclusivo (provavelmente, o nome do arquivo) para que possa ser eliminado posteriormente
- Inicie o Notepad ++ a partir do arquivo em lote com o arquivo como um argumento de linha de comando
- Registra automaticamente uma função python como um retorno de chamada na notificação FILEBEFORECLOSE na inicialização
- Quando um arquivo é fechado, use o nome do arquivo para reconstruir o título da janela do prompt de comando e use-o para eliminá-lo.
Isso faz com que a janela de comando feche, mas o Notepad ++ é bloqueado. Eu acho que isso é um problema com o plugin python. Parece que chamar o console.run () de um retorno de chamada de notificação causa problemas. Eu sei que o comando é bem formatado porque funciona sem uma falha quando executado a partir de um script acionado pelo usuário. Esse script é executado toda vez que um arquivo é fechado e faz com que o Notepad ++ seja interrompido, por isso não recomendo que você use essa solução em seu estado atual
Comando para executar a partir da ferramenta legada:
start /min nppblock.bat
notepadpp_blocker.bat:
@echo off
FOR %%i IN (%1) DO (
set filename=%~nx1
)
title=nppblock_%filename%
echo Waiting for %filename% to be closed in Notepad++
"C:\Program Files (x86)\Notepad++\notepad++.exe" %1
pause
Adicionado a C: \ Arquivos de programas (x86) \ Notepad ++ \ plugins \ PythonScript \ scripts \ startup.py:
import os.path
def fileBeforeCloseCallback(args):
filename = os.path.basename(notepad.getBufferFilename(args["bufferID"]));
killcmd = 'taskkill /f /fi "WINDOWTITLE eq nppblock_' + filename + '" /im cmd.exe'
console.run(killcmd)
notepad.callback(fileBeforeCloseCallback, [NOTIFICATION.FILEBEFORECLOSE])