Utilizando o fasd para abrir um arquivo ou diretório no emacsclient

1

Estou tentando abrir arquivos encontrados com fasd em emacsclient . Estou usando fasd -e emacsclient -c -a '' definido para um alias. Nada acontece quando eu chamo o alias, só recebo um novo prompt. Eu tentei usar o Emacs diretamente com fasd -e emacs , o que funciona bem. Por favor, deixe-me saber se você sabe qual é o problema.

EDITAR : (Conforme solicitado. Não há muito mais para ver embora.)

alias em alias fed="fasd -e emacsclient -c -a ''"

fasd.zsh

#
# only init if installed.
fasd_cache="$HOME/.fasd-init-bash"
if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then
  eval "$(fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wc\
omp-install)" >| "$fasd_cache"
fi
source "$fasd_cache"
unset fasd_cache


# jump to recently used items
alias a='fasd -a' # any
alias s='fasd -si' # show / search / select
alias d='fasd -d' # directory
alias f='fasd -f' # file
alias z='fasd_cd -d' # cd, same functionality as j in autojump
alias zz='fasd_cd -d -i' # interactive directory jump

resultados

Deve abrir ~ / Downloads / em emacsclient , mas não faz nada:

~ » fed downlo                                                                
~ »
    
por domi91c 08.05.2016 / 23:10

3 respostas

1

Eu não entendo como o fasd funciona, mas o seu alias não faz sentido.

alias fed="fasd -e emacsclient -c -a "

Você está passando emacsclient como argumento para a opção -e , em seguida, -c e -a são mais opções passadas para fasd . O espaço final significa que a palavra após o alias sofrerá expansão de alias, por ex. fed a foo se expande para fasd -e emacsclient -c -a fasd -a foo .

Como fasd não entende -c como uma opção, presumo que você queira chamar emacsclient -c -a '' , ou seja, chamar emacsclient com os três argumentos -c , -a e um vazio string.

Dada a maneira como fasd interpreta o argumento para -e :

          e*) o="${o#?}"; if [ "$o" ]; then # there are characters after "-e"
                local exec="$o" # anything after "-e"
(…)
      $exec "$res"

não há como passar uma string vazia como uma das palavras no comando. Defina uma função auxiliar em vez disso (um alias também funcionaria aqui).

emacsclient_c () {
  emacsclient -c -a '' "$@"
}
alias fed='fasd -e emacsclient_c'
    
por 09.05.2016 / 00:40
0

Embora, de acordo com a documentação, um alias tenha funcionado, resolvi o problema criando uma função shell e passando a frase de busca fasd como argumento.

fed() {
    emacsclient -c -a '' 'fasd -f -a $1';
}

Em vez de informar fasd para abrir o arquivo em emacsclient , eu só tenho fasd retornar o caminho para emacsclient .

    
por 09.05.2016 / 00:24
0

Como consegui que funcione é apenas aliassing o seguinte Isso canaliza o arquivo para 'emacsclient -n -c' encontrado com o fasd.

alias e='f -e "emacsclient -n -c"'

Para que eu possa digitar e exam para abrir example.txt em um cliente emacs.

    
por 29.06.2017 / 20:22