我使用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)

09-10 00:32
查看更多