Как остановить emacs от замены Underbar с помощью <- in ess-mode
ess-mode
: "Emacs говорит статистику". Этот режим полезен для редактирования программ для R или Splus (два отдельных пакета статистики).
В моем буфере, когда я набираю _
, символ заменяется на <-
, что очень расстраивает. Есть ли инструкция emacs lisp, чтобы отключить это поведение?
emacs: 22.1.1
освобождение ess-mode (неизвестно)
Ответы
Ответ 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)))