56 votes

Comment empêcher emacs de remplacer underbar par <- en mode ess ?

ess-mode est "Emacs parle statistiques". Ce mode est utile pour éditer des programmes pour R ou Splus (deux packages statistiques distincts).

Dans ma mémoire tampon, lorsque je tape _ le caractère est remplacé par <- ce qui est très frustrant. Existe-t-il une instruction emacs lisp pour désactiver ce comportement ?

emacs : 22.1.1 version ess-mode (inconnue)

65voto

Michał Marczyk Points 54179

De Manuel de l'ESS (voir sous "Changements/Nouvelles fonctionnalités dans la version 5.2.0") :

ESS[S] : En appuyant une fois sur le trait de soulignement ("_"), on insère " <- " (comme précédemment) ; en appuyant deux fois sur le trait de soulagement, on insère un trait de soulignement littéral. Pour arrêter ce comportement intelligent, ajoutez "(ess-toggle-underscore nil)" à votre .emacs après que le site ess ait été chargé

5voto

Kushdesh Points 474

Puisque la fonction est utile. Vous pouvez l'assigner à une autre touche que vous utilisez moins dans R qui la désassignera automatiquement de l'underscore. Personnellement, je l'attribue à ";" en ajoutant la ligne suivante dans le fichier .emacs.

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

Ma version d'emacs est le fichier d'installation 24.3 All-in-one de Vincent Goulet (installé sur Windows 7).

J'espère que cela vous aidera

Editer Dans emacs 25.2, ce qui précède ne fonctionne pas, mais ajoutez ce qui suit dans le fichier .emacs

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

3voto

WMash Points 277

De http://www.r-bloggers.com/a-small-customization-of-ess/ y Comment modifier la liaison de la touche d'affectation intelligente ("_" à "<-") dans ESS ?

Pour assigner " :" à "<-" et pour arrêter l'assignation de l'underscore (underbar) "_" à "<-", mettez ce qui suit dans .emacs (oui, la ligne répétée est correcte)

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

3voto

Drummermean Points 200

Une version plus récente qui semble fonctionner pour moi, et qui est beaucoup moins verbeuse (vous gardez essentiellement les underscores normaux, mais vous pouvez définir votre propre clé pour ce comportement intelligent !)

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

Insérez votre choix de raccourci clavier à la place de C-; .

2voto

mmorin Points 371

Comme Michał Marczyk et ce fil de discussion sur la liste de diffusion R Il est suggéré d'ajouter cette ligne à ~/.emacs :

(ess-toggle-underscore nil)

Ensuite, il faut le recharger avec M-x load-file et tapez ~/.emacs .

Mais si vous chargez à nouveau le fichier, par exemple si vous ajoutez une autre personnalisation, il revient à l'état d'origine. Il faut donc l'activer deux fois, la première forçant le retour à l'état par défaut :

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

Ceci étant dit, je préfère la solution de Drummermean, mais elle revient également à la valeur par défaut si vous l'ajoutez à ~/.emacs et le charger deux fois. Il faut donc forcer le basculement vers la valeur par défaut avant :

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

J'ai lié l'affectation intelligente à Opt-[minus] comme RStudio (sur un Mac).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X