Recentemente, R
testemunhei a introdução inteligente do operador de tubulação %>%
ou then
operador no código que eu uso com bastante frequência atualmente. Gostaria de saber se isso já foi implementado na versão mais recente do ESS . Caso contrário, não deve ser um problema criar elisp
código para escrever uma função para ele. Preciso implementar isso para que ele imprima esse operador %>%
e salte para uma nova linha recuada.
MWE
library(ggplot2)
library(dplyr)
diamonds %>%
filter(cut=="Ideal") %>%
ggplot(aes(price)) +
geom_histogram() +
facet_wrap (~ color)
Meu teste elisp - no .init.el
ou .emacs
arquivo:
(defun then_R_operator ()
"%>% operator or 'then' pipe operator"
(interactive)
(insert " %>%") ; note the space before the first %
(reindent-then-newline-and-indent))
(global-set-key (kbd "C-%") 'then_R_operator)
Funciona, mas quero verificar se há algo errado com ela ou se há alguma sugestão para melhorá-la (ser um novato no elisp). Como restringir isso apenas ao ESS
modo?
Observe
que percebi que o bloqueio de fontes %>%
pode ser feito ativando ess-fl-keyword:operators
no menu ESS.
(just-one-space 1)
antes do tubo. Você deseja usar oess-mode-map
(e provavelmente oinferior-ess-mode-map
) para definir a chave(define-key ess-mode-map (kbd "C-%") 'then_R_operator)
.inferior...
eess-mode...
?ess-mode
ativa-se ao editar, por exemplo,.R
arquivos.inferior-ess-mode
é ativado ao executar umR
processo interativo no Emacs (ou seja, através doR
comando ou com oC-c C-z
qual chamaess-switch-to-inferior-or-script-buffer
).inferior...
Isso permitirá que eu a use no console R interativo, que está dentro do Emacs? se sim, então acho que seria melhor definir chaves para ambosess-mode
einferior
, certo?Respostas:
obrigado a mutbuerger pelos comentários úteis. Atualmente, eu uso isso para este operador trabalhar apenas com ESS.
fonte