Gần đây, R
chứng kiến sự giới thiệu thông minh của toán tử %>%
hoặc toán tử đường ống then
trong mã mà tôi sử dụng khá thường xuyên hiện nay. Tôi tự hỏi nếu điều này đã được thực hiện trong phiên bản mới nhất của ESS . Nếu không, sẽ không có vấn đề gì khi đưa ra elisp
mã để viết hàm cho nó. Tôi cần phải thực hiện điều này để nó sẽ in toán tử %>%
đó và sau đó nhảy sang một dòng thụt lề mới.
MWE
library(ggplot2)
library(dplyr)
diamonds %>%
filter(cut=="Ideal") %>%
ggplot(aes(price)) +
geom_histogram() +
facet_wrap (~ color)
Thử nghiệm elisp của tôi - trong .init.el
hoặc .emacs
tập tin:
(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)
Nó hoạt động, nhưng tôi muốn kiểm tra xem có gì sai với nó hay có bất kỳ đề xuất nào để cải thiện nó (là một người mới trong elisp). Làm thế nào để hạn chế điều này chỉ với ESS
chế độ?
Lưu ý
Tôi nhận ra rằng việc khóa phông chữ %>%
có thể được thực hiện bằng cách bật ess-fl-keyword:operators
từ menu ESS.
inferior...
và là ess-mode...
gì?
ess-mode
kích hoạt chính nó khi chỉnh sửa, ví dụ, .R
các tập tin. inferior-ess-mode
kích hoạt khi chạy một R
quá trình tương tác bên trong Emacs (tức là thông qua R
lệnh hoặc với lệnh C-c C-z
gọi nào ess-switch-to-inferior-or-script-buffer
).
inferior...
này thì điều này sẽ cho phép tôi sử dụng nó trong bảng điều khiển R tương tác, nằm trong Emacs? Nếu có thì tôi nghĩ sẽ tốt hơn nếu xác định khóa cho cả hai ess-mode
và inferior
, phải không?
(just-one-space 1)
trước ống. Bạn muốn sử dụngess-mode-map
(và có thể làinferior-ess-mode-map
) để đặt khóa(define-key ess-mode-map (kbd "C-%") 'then_R_operator)
.