Como executar um programa externo do Notepad ++ , nem a documentação de o plugin NppExec menciona uma variável de ambiente contendo a linha atual.
Da mesma forma, as macros só podem executar mensagens Scintilla ( lista ), pesquisa e substitui gravações e alguns comandos definidos do Notepad ++ (não documentados?), portanto não há como conseguir isso com macros.
Além de escrever seu próprio plug-in, apenas a I sabe como fazer isso usando um programa externo. Um script AutoHotkey fará o que você quiser.
Script do AutoHotkey:
^F5::
WinGetActiveTitle, Title
if RegExMatch(Title, "- Notepad\+\+$")
{
SendPlay {Home}+{End}{F5}
SendPlay cmd /D "%windir%/system32" /K "$(CURRENT_WORD)"
SendPlay {Enter}
}
else
SendPlay ^{F5}
return
O que faz:
-
Se o Notepad ++ for a janela ativa, a combinação de teclas Ctrl + F5 selecionará a linha atual e executará o comando externo
cmd /D "%windir%/system32" /K ""$(CURRENT_WORD)""
$(CURRENT_WORD)
agora contém toda a linha, desde que foi selecionada. A única desvantagem é que você perderá a posição atual do cursor, pois o script deixará a linha atual selecionada. -
Se o Notepad ++ não for a janela ativa, a combinação de teclas Ctrl + F5 se comportará normalmente.
Como usar:
-
Faça o download e instale a versão mais recente.
-
Salve o script acima como
npp_runline.ahk
, usando seu editor de texto favorito. -
Clique duas vezes no arquivo para executar o script.
-
Se desejar, copie o script (ou um link para ele) na pasta
Startup
.
Como funciona:
-
^F5::
especifica a tecla de atalho usada ( Ctrl + F5 ). -
WinGetActiveTitle, Title
armazena o título da janela ativa na variávelTitle
. -
RegExMatch(Title, "- Notepad\+\+$")
retorna a posição da ocorrência mais à esquerda da expressão regular- Notepad\+\+$
(onde\+
é um literal+
e$
no final da sequência) emTitle
ou zero se não há correspondência.-
Se houver uma correspondência, o bloco seguinte
if...
será executado:-
SendPlay {Home}+{End}{F5}
simula pressionando Início e Deslocamento + Fim (selecionando a linha atual sem espaços em branco iniciais) e então F5 (abrindo o diálogoRun...
). -
SendPlay cmd /D "%windir%/system32" /K "$(CURRENT_WORD)"
insere exatamente isso no diálogoRun...
. -
SendPlay {Enter}
simula pressionando Enter (finalizando o diálogoRun...
).
-
-
Se não houver correspondência, o bloco após
else
será executado:-
SendPlay ^{F5}
simula pressionando Ctrl + F5 (fallback se precisarmos do atalho fora do Notepad ++).
-
-
-
return
termina a execução do script no ponto atual.
Veja também: