我使用Emacs / ESS已经有一段时间了,并且我对Hadley's R style recommendations很熟悉。我想在ESS中遵循这些约定,例如运算符周围的空格,逗号和if
语句后,花括号前的空格等。
有人甚至根本不愿意遵循此样式指南吗?恕我直言,官方的风格建议相当谦虚,他们对风格一无所知。 Google R style guide与我用JavaScript编写代码时使用的太相似了,所以这是不可以的。
长话短说:有没有具备(e)LISP技能的人愿意为ESS实施(Hadley's)风格指南?
最佳答案
Hadley指南的优点是在运算符之间留有间隔(可能在/周围)
有一个smart-operator包,几乎每个操作员都可以实现它。
这是我的设置(您要使用不常用的运算符):
(setq smart-operator-mode-map
(let ((keymap (make-sparse-keymap)))
(define-key keymap "=" 'smart-operator-self-insert-command)
;; (define-key keymap "<" 'smart-operator-<)
;; (define-key keymap ">" 'smart-operator->)
;; (define-key keymap "%" 'smart-operator-%)
(define-key keymap "+" 'smart-operator-+)
;; (define-key keymap "-" 'smart-operator--)
;; (define-key keymap "*" 'smart-operator-*)
;; (define-key keymap "/" 'smart-operator-self-insert-command)
(define-key keymap "&" 'smart-operator-&)
(define-key keymap "|" 'smart-operator-self-insert-command)
;; (define-key keymap "!" 'smart-operator-self-insert-command)
;; (define-key keymap ":" 'smart-operator-:)
;; (define-key keymap "?" 'smart-operator-?)
(define-key keymap "," 'smart-operator-,)
;; (define-key keymap "." 'smart-operator-.)
keymap)
"Keymap used my `smart-operator-mode'.")
另请参见有关R样式here的精彩讨论。
[编辑]我也正在使用全局代码的defacto camelCase风格的R代码。下划线分隔的局部变量名称-易于区分。
emacs中有一个特殊的
subword
模式,它重新定义了所有用于大写子词的编辑和导航命令(global-subword-mode)