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, Titlearmazena 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) emTitleou 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
elseserá executado:-
SendPlay ^{F5}simula pressionando Ctrl + F5 (fallback se precisarmos do atalho fora do Notepad ++).
-
-
-
returntermina a execução do script no ponto atual.
Veja também: