1) O Emacs provavelmente inicia no modo de console porque nenhuma variável DISPLAY está configurada; defina essa variável de ambiente, com um valor que aponte para um servidor X capaz de aceitar clientes e você deverá encontrar melhores resultados. Você também pode passar um identificador de exibição por meio da opção de linha de comando --display
ou -d
para o Emacs, o que farei no exemplo a seguir porque não sei como definir env vars em arquivos em lotes do Windows:
@echo off
chdir c:\LocalApp\cygwin\bin
start mintty.exe /usr/bin/emacs-X11.exe --display 127.0.0.1:0 %1
Se necessário, o que provavelmente não é, substitua o valor --display
dado aqui por algo mais adequado para a configuração do seu servidor X.
Isso provavelmente ainda exibirá uma janela do console, já que você está usando o comando start do Windows para gerar um processo que pede para iniciar o Emacs. O que você pode fazer é usar o comando Cygwin, que lança um dado binário sem uma janela de console, e elimina o processo de menta redundante:
@echo off
chdir c:\LocalApp\cygwin\bin
run /usr/bin/emacs-X11.exe --display 127.0.0.1:0 %1
2) Finalmente, você precisa encontrar uma maneira de passar o caminho do arquivo para o Emacs de uma forma que ele possa entender. Infelizmente, tenho certeza de que a interpolação de comando é impossível na linguagem de lote do Windows, portanto, você não pode fazer o equivalente a, por exemplo, Bash $(cygpath -au %1)
. Talvez sua melhor opção seja fazer com que o arquivo de lote do Windows execute o Cygwin Bash, passando o argumento filename para um script que o traduza e inicie o Emacs. Por exemplo, seu arquivo de lote pode ser
@echo off
chdir C:\LocalApp\cygwin\bin
run sh /path/to/launch-emacs.sh %1
E, em launch-emacs.sh, você pode ter algo como:
#!/bin/sh
cd /cygdrive/c/LocalApp/cygwin/bin
/usr/bin/emacs-X11 --display 127.0.0.1:0 'cygpath -au $1'
, que traduz o caminho via cygpath
, e passa para o Emacs, junto com um identificador de exibição, conforme descrito acima.
Minha única caixa do Windows é em casa, então não tive oportunidade de testar esses scripts exatos, mas faço algumas coisas parecidas com o Emacs nessa máquina; supondo que o seu servidor X esteja configurado corretamente, o material em 1) quase certamente funcionará, e o resto deve ser OK modulo uma janela de console supérflua sobre a qual você pode ou não se importar. Deixe-me saber como é, e vou ver que ajuda adicional posso oferecer.