Как запретить emacs заменять подчеркивание на ‹- в режиме ess

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

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

emacs: 22.1.1 выпуск ess-mode (неизвестно)


person Setjmp    schedule 27.03.2010    source источник
comment
Дубликат - см. stackoverflow.com/questions/1816238/   -  person csgillespie    schedule 10.06.2010
comment
Если вы используете underscore_case в сочетании соглашений об именах в R (см. journal.r-project.org/archive/2012/RJ-2012-018/RJ-2012-018.pdf) это довольно раздражает.   -  person Dave X    schedule 01.11.2017


Ответы (6)


Из руководства ESS (см. Раздел «Изменения / новые функции в 5.2.0») :

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

person Michał Marczyk    schedule 28.03.2010
comment
Чтобы быть точным, (require 'ess-site) должен предшествовать (ess-toggle-underscore nil) в .emacs или .emacs.d / init.el. - person jthetzel; 25.09.2015

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

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

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

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

Изменить. В emacs 25.2 выше не работает, вместо этого добавьте следующее в файл .emacs

(setq ess-smart-S-assign-key ";")
(ess-toggle-S-assign nil)
(ess-toggle-S-assign nil)
person Kushdesh    schedule 29.03.2015
comment
Это решило проблему замены подчеркивания, но когда я нажимаю; это не делает ‹-...? - person maia; 18.05.2015
comment
Это делает <- в моей версии emacs для Windows 7. А у вас что-то другое? - person Kushdesh; 30.05.2015
comment
За прошедшие годы было значительное ... обсуждение ... в результате commit ed048d3, с изменением имени и некоторым новым поведением по умолчанию. Большинство *-smart-* vars / funs устарели / удалены, теперь есть ess-insert-S-assign и, возможно, ess-cycle-assignment. - person r2evans; 14.08.2018

С 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!
person WMash    schedule 12.12.2014
comment
было бы полезно объяснить, почему необходима повторяющаяся строка. - person Jacob Lee; 20.03.2019

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

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

Вставьте комбинацию клавиш вместо C-;.

person Drummermean    schedule 21.05.2017

Как Michał Marczyk и эта ветка списка рассылки 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).

person miguelmorin    schedule 25.04.2018

В продолжение ответа @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)))

person den2042    schedule 30.07.2019