0

I would like to customize the key bindings so that "n" and "p" run 'ess-rdired-next-line and 'ess-rdired-previous-line automatically by editing my .emacs

It doesn't recognize the variable ess-rdired-mode-map until I call ess-rdired from a buffer with an ESS process. I tried putting (ess-rdired) earlier in my .emacs and get the error

No ESS process is associated with this buffer now

When I call ess-rdired from an ESS buffer before using define-key as below, they key bindings work as expected.

(define-key ess-rdired-mode-map "P" 'ess-rdired-plot)
(define-key ess-rdired-mode-map "n" 'ess-rdired-next-line)
(define-key ess-rdired-mode-map "p" 'ess-rdired-previous-line)

Debugger entered--Lisp error: (void-variable ess-rdired-mode-map)
Rorschach
  • 31,301
  • 5
  • 78
  • 129
Jay
  • 1
  • Possible duplicate: https://stackoverflow.com/questions/13930713/ess-rdired-i-get-this-error-no-ess-process-is-associated-with-this-buffer-now – Oddmar Dam Jun 13 '19 at 15:52

1 Answers1

0

The variable isn't defined until the package is loaded, so you can just wrap your key definitions to be loaded after ess-rdired,

(with-eval-after-load 'ess-rdired
  ;; (define-key ...)
  )
Rorschach
  • 31,301
  • 5
  • 78
  • 129
  • This doesn't change the behavior (i.e. the keybindings still don't work until I manual evaluate the elisp following calling an R process) : `(with-eval-after-load 'ess-rdired (define-key ess-rdired-mode-map "P" 'ess-rdired-plot) (define-key ess-rdired-mode-map "n" 'ess-rdired-next-line) (define-key ess-rdired-mode-map "p" 'ess-rdired-previous-line) )` – Jay Jun 18 '19 at 19:30
  • @Jay no, this solves the error you showed, ess doesn't start processes by default for most commands. It should work whether you evaluate the elisp before or after starting the R process however – Rorschach Jun 18 '19 at 21:16