0

Emacs ESS モードでキーを効率的にプログラミングする方法

"<"     "[less than]"

"<- "   "[less than][dash][space]"   

RのMacOSバージョンが利用するのと同じように。

4

2 に答える 2

2

ファイルに既存の関数があるようですess-s-l.el。これには変数を使用できるようですess-S-assign-key

;; This is by Seth Falcon, modeled after ess-toggle-underscore (see below).
(defun ess-toggle-S-assign-key (force)
  "Possibly bind the key in `ess-S-assign-key' to inserting `ess-S-assign'.
If `ess-S-assign-key' is \"_\", simply use \\[ess-toggle-underscore].
Otherwise, unless the prefix argument FORCE is set,
toggle between the new and the previous assignment."
  (interactive "P")
  (require 'ess-mode)
  (require 'ess-inf)
  (let ((current-action (lookup-key ess-mode-map ess-S-assign-key))
        (insert-S-assign (lambda() (interactive)
                           (delete-horizontal-space) (insert ess-S-assign))))
    (if (and (stringp ess-S-assign-key)
             (string= ess-S-assign-key "_"))
        (ess-toggle-underscore force)
      ;; else "do things here"
      (let* ((current-is-S-assign (eq current-action insert-S-assign))
             (new-action (if force insert-S-assign
                           ;; else "not force" (default):
                           (if (or current-is-S-assign
                                   (eq ess-S-assign-key-last insert-S-assign))
                               ess-S-assign-key-last
                             insert-S-assign))))
        (message "[ess-toggle-S-assign-key:] current: '%s', new: '%s'"
                 current-action new-action)
        (define-key ess-mode-map          ess-S-assign-key new-action)
        (define-key inferior-ess-mode-map ess-S-assign-key new-action)
        (if (not (and force current-is-S-assign))
            (setq ess-S-assign-key-last current-action))))))
于 2012-08-27T18:05:40.343 に答える
1

おそらく、これは ESS のバージョンに依存しています。

私のバージョンの ESS (12.03) では、バインド">"'ess-insert-S-assignて好きなものを取得できるようです。

ess-利用可能なコマンドを調べて (ポップアップしたばかりM-x ess-<TAB><TAB>のバッファを検索して)、どのコマンドにバインドする必要がある可能性が高いかを確認します。*Completions*assign">"

それでもうまくいかない場合は、おそらくアップグレードする必要があります。

于 2012-08-29T10:15:33.837 に答える