Как остановить emacs от замены Underbar с помощью <- in ess-mode - программирование
Подтвердить что ты не робот

Как остановить emacs от замены Underbar с помощью <- in ess-mode

ess-mode: "Emacs говорит статистику". Этот режим полезен для редактирования программ для R или Splus (два отдельных пакета статистики).

В моем буфере, когда я набираю _, символ заменяется на <-, что очень расстраивает. Есть ли инструкция emacs lisp, чтобы отключить это поведение?

emacs: 22.1.1 освобождение ess-mode (неизвестно)

4b9b3361

Ответ 1

Из Руководство ESS (см. "Изменения/Новые функции в 5.2.0" ):

ESS [S]: нажатие подчеркивания ( "_" ) однажды вставляет "< -" (как и раньше); нажатие подчеркивания дважды вставляет буквальное подчеркивание. Чтобы остановить это умное поведение, добавьте "(ess-toggle-underscore noil" ) в ваш .emacs после загрузки ess-сайта

Ответ 2

Так как функция полезна. Вы можете назначить его другому ключу, который меньше используется вами в R, он автоматически отменяет его из подчеркивания. Я лично назначаю его ";", добавляя следующую строку в файл .emacs.

(setq ess-smart-S-assign-key ";")

Моя версия emacs - это 24.3 установочный файл "все-в-одном" Винсента Гуле (установлен на Windows 7)

надеюсь, что это поможет

Edit В emacs 25.2 выше не работают, а добавьте следующее в файл .emacs

(setq ess-smart-S-assign-key ";")
(ess-toggle-S-assign nil)
(ess-toggle-S-assign nil)

Ответ 3

Из http://www.r-bloggers.com/a-small-customization-of-ess/ и Как изменить ключ интеллектуального назначения ( "_" "< -" ) в ESS

Чтобы назначить ":" на "< -" и прекратить выделение подчеркивания (подстрока) "_" на "< -", поместите следующее в .emacs(да, повторяющаяся строка верна)

(setq ess-smart-S-assign-key ":")
(ess-toggle-S-assign nil)
(ess-toggle-S-assign nil)
(ess-toggle-underscore nil) ; leave underscore key alone!

Ответ 4

Более новая версия, которая, казалось, работает для меня, и намного менее подробна (вы, по существу, сохраняете нормальные подчеркивания, но можете установить свой собственный ключ для этого умного поведения!):

(global-set-key (kbd "C-;")  (lambda () (interactive) (insert " <- ")))
(ess-toggle-underscore nil)

Вставьте свой выбор для коротких клавиш вместо C-;.

Ответ 5

Как Михаэль Марчик и эта ветка списка рассылки R предложили добавить эту строку в ~/.emacs:

(ess-toggle-underscore nil)

Затем перезагрузите его с помощью M-x load-file и введите ~/.emacs.

Но если вы загрузите файл снова, например, если вы добавите другую настройку, она вернет ее в исходное состояние. Так что переключите его дважды, первый из которых принудительно установит его по умолчанию:

(ess-toggle-underscore t)
(ess-toggle-underscore nil)

При этом мне больше нравится решение Drummermean, но оно также возвращается к значению по умолчанию, если вы добавите его в ~/.emacs и загрузите его дважды. Поэтому перед переключением по умолчанию принудительно переключите:

(ess-toggle-underscore t)
(global-set-key (kbd "M--")  (lambda () (interactive) (insert " <- ")))
(ess-toggle-underscore nil)

Я связал умное назначение с Opt-[minus], как RStudio (на Mac).

Ответ 6

Как продолжение ответа @mmorin. Чтобы установить привязку клавиш для оператора назначения так же, как в Rstudio, добавьте следующее в файл .emacs

(ess-toggle-underscore t)
(ess-toggle-underscore nil)
(define-key ess-mode-map (kbd "M--") (lambda () (interactive) (just-one-space 1) (insert "<-") (just-one-space 1)))
(define-key inferior-ess-mode-map (kbd "M--") (lambda () (interactive) (just-one-space 1) (insert "<-") (just-one-space 1)))