Executando o Emacs na barra de tarefas do Windows

8

Quando quero alternar entre programas no Windows, normalmente uso a tecla windows e uma tecla numérica para executar um programa na minha barra de tarefas. A maioria dos programas iniciará a execução ou, se já houver uma instância, trará para o primeiro plano e se concentrará nela. Mas o Emacs (iniciado com runemacs.exe) criará uma nova entrada na barra de tarefas, e usar o atalho novamente criará uma nova instância. Até onde eu sei, nem consigo alternar entre os diferentes quadros usando os comandos do Emacs (tentei Cx 5 o).

Existe uma maneira de fazê-lo para que os usos subsequentes das teclas de atalho do Windows usem apenas a instância existente do Emacs e, se não, posso pelo menos fazê-lo para que eu possa navegar facilmente entre os diferentes quadros? Eu tentei este trecho:

(require 'server)
(unless (server-running-p)
  (start-server)) 

da resposta a esta pergunta , mas não fez diferença.

resueman
fonte
Você pode especificar a qual snippet você está se referindo?
Nispio 15/10
Esse trecho garante que um servidor de edição seja criado na primeira vez em que o Emacs é executado. Chamadas subseqüentes para Emacs que desejem se conectar ao mesmo servidor de edição deve usaremacsclientw.exe
nispio
@nispio Ah, isso explica por que não estava funcionando. Existe uma maneira de executar tudo no mesmo servidor de edição sem precisar executar a partir de diferentes executáveis?
Resenhador 15/10
Esta resposta provavelmente funcionará: emacs.stackexchange.com/a/158/93 . Quando você fornece runemacs.execomo editor alternativo, pode ligar emacsclientw.exemesmo quando não há um servidor de edição em execução.
Nispio 15/10
1
Veja meu comentário na resposta da nispio sobre como evitar a criação de um novo quadro.
Vamsi

Respostas:

5

Adicione isso ao seu arquivo init para garantir que um servidor de edição seja criado quando o emacs iniciar

(require 'server)
(unless (server-running-p)
  (server-start)) 

Agora faça o atalho do Windows apontar para emacsclientw.exeo seguinte:

C:\path\to\emacsclientw.exe -n -e "(raise-frame)" -a "C:\path\to\runemacs.exe"

Isso deve focar um quadro Emacs existente (se houver), ou então chamar de runemacs.exeoutra forma. (Obrigado a Vamsi pela ajuda com o ajuste dos parâmetros de comando)

nispio
fonte
Isso funciona como desejo se eu passar um arquivo para execução, mas se eu apenas usar o comando como está, ele exibirá um erro dizendo "nome do arquivo ou argumento necessário".
Resueman
@resueman Uma -cbandeira corrige esse problema?
Nispio 16/10/2014
2
@nispio Pode-se usar C:\path\to\emacsclientw.exe -n -e "(raise-frame)" -a "C:\path\to\runemacs.exe"para evitar a criação de um novo quadro e aumentar o quadro anterior.
Vamsi
@Vamsi, mas sem a -cvontade de esperar também um arquivo para visitar? (Se você não pode dizer que eu não estou em uma máquina Windows agora.)
nispio
@Vamsi Isso funciona perfeitamente. @nispio parece funcionar bem sem -cter a -eexpressão.
Resueman
7

Encontrei outra resposta para o problema no SuperUser hoje. Parece mais hackish, mas o resultado é mais consistente com outros programas no Windows.

  1. Execute o runemacs.exe sem ícone pré-existente na barra de tarefas.
  2. Clique com o botão direito do mouse no ícone do Emacs em execução na barra de tarefas e clique em "fixar este programa na barra de tarefas".
  3. Fechar Emacs
  4. Clique com o botão direito do mouse no ícone fixado do Emacs na barra de tarefas, clique em Propriedades e altere o destino de emacs.exe para runemacs.exe.
resueman
fonte
1
FWIW, é isso que eu faço. Não entendi que era isso que você queria, da sua pergunta. Eu pensei que você queria usar o emacsclient, entre outras coisas. BTW, Propertiesvocê também pode definir o Start indiretório e abrir o Emacs para um arquivo ou diretório específico. (I começar Emacs com Dired no Start indiretório IOW, eu passo o mesmo dir (. "-Quoted) como argumento para runemacs.)
de Drew
@ Drew Eu provavelmente não expliquei o que queria muito bem. Eu ainda sou novo o suficiente para que seja difícil manter tudo em ordem. Obrigado pelas dicas.
Resueman