Режим Emacs ESS - Табулиране за регион на коментар

Използвам режима Emacs-Speaks-Statistics (ESS) за Emacs. Когато редактирам R код, всички редове за коментари (тези, които започват с #) автоматично се поставят в табулатори най-вдясно, когато създам нов ред над тях. Как трябва да променя своя .emacs.el файл, за да поправя това?

Например имам:

# Comment

Сега, след като поставих курсора си в началото на реда и натиснах Enter, получавам:

                                # Comment

Благодаря за всякакви съвети.


person Christopher DuBois    schedule 23.04.2009    source източник


Отговори (4)


Използвайте '###', ако не искате коментарите да са с отстъп. Според ръководството,

По подразбиране коментарите, започващи с „###“, са подравнени към началото на реда. Коментарите, започващи с „##“, се подравняват спрямо текущото ниво на отстъп за блока, съдържащ коментара. И накрая, коментарите, започващи с '#', се подравняват към колона отдясно (40-та колона по подразбиране, но тази стойност се контролира от променливата comment-column,) или точно след израза на реда, съдържащ коментара, ако се разширява извън колоната за отстъп.

person huaiyuan    schedule 23.04.2009
comment
Радвам се, че погледнах, преди да задам същия въпрос. Маркирах този отговор, защото мисля, че наистина е по-добро решение от отговора по-горе. Отдавна смятах, че това е грешка/проблем с режима ESS, но след като промених синтаксиса си, всичките ми проблеми изчезнаха. - person Choens; 03.02.2012
comment
Тази конвенция може да изглежда странна, ако не използвате много Emacs. Тази конвенция обаче идва от lisp и emacs-lisp, където броят на точките и запетаята обозначава вида на коментара и следователно как трябва да бъде отстъпен. - person Stephen Eglen; 15.08.2014

Или

(setq ess-fancy-comments nil)

ако никога не искате да правите отстъп с единичен # коментар, или

(add-hook 'ess-mode-hook 
          (lambda () 
            (local-set-key (kbd "RET") 'newline)))

ако искате да промените поведението на Enter, така че да няма отстъп.

person Jouni K. Seppänen    schedule 23.04.2009
comment
По-скоро смятам, че трябва да използвате # за коментари в края на реда и те са добре отстъпени към същата колона нарочно --› хубав списък с кодове. За другите коментари, наистина придобийте навика да използвате ## (много повече от ###): Те се отстъпват като други изрази в този блок от код - person Martin Mächler; 20.07.2010
comment
Все още съм за това да реша колко #s трябва да използвам. Един обикновено е достатъчен, така че този отговор се оценява много, тъй като коментарът ми не се премества на място, което не искам да бъде... - person user989762; 29.01.2016

Задаването на ess-indent-with-fancy-comments на нула ще премахне странното вдлъбване single-#, но то трябва да бъде зададено или буферно локално в кука (както в отговора на Роб), ИЛИ преди да се зареди ESS:

(setq ess-indent-with-fancy-comments nil)
(require 'ess)

Други начини да се уверите, че е зададено, преди да се зареди ESS, е да го зададете в M-x configure или да го зададете в раздела :init на use-package.

Това, което се случва, е, че ESS дефинира стилове при инициализация в ess-style-alist и след това прилага стила по подразбиране във всеки буфер. Така че, за да сте сигурни, че тези стилове спазват ess-indent-with-fancy-comment, трябва да се уверите, че сте го задали, преди стиловете да бъдат дефинирани.

person jackkamm    schedule 24.11.2018
comment
След моето надграждане до ESS 18.10.3, методът за закачане вече не работи за мен. setq преди require ess да работи. - person Yin Zhu; 27.02.2020

Отговорът на Джуни не ми свърши работа. Но намерих подход тук, който го прави: https://stat.ethz.ch/pipermail/ess-help/2016-May/010970.html

   (defun my-ess-settings ()
     (setq ess-indent-with-fancy-comments nil))
   (add-hook 'ess-mode-hook #'my-ess-settings)
person Rob Donnelly    schedule 19.10.2017
comment
Да, трябваше да направя и това, за да работи, в противен случай щеше да бъде отменено локално. - person Palace Chan; 05.03.2018