20

emacs ess でインデントを変更する方法を知りたいです。私は一般的にデフォルトのもの(ess-set-style 'C++'quiet)が好きですが、時々それは本当に奇妙にフォーマットされます。たとえば、これは私が望んでいるものであり、関数の一部でない場合、これはデフォルトのフォーマットになります:

  ggplot(data = overtime.by.month,
         aes(x="",
             y=Percent,
             fill = Overtime)) +
  geom_bar(width = 1) +
  xlab('') +
  ylab(sub.txt) +
  labs(title = title.txt) +
  facet_wrap(~Year.Month) +
  geom_text(aes(y = txt.pos, label = Per.txt)) +
  coord_polar(theta = "y") +
  scale_fill_manual(values = c('green', 'red')) +
  theme(axis.ticks = element_blank(),
        axis.text.y = element_blank(),
        axis.text.x = element_blank())

これは、関数内に配置すると、現在のインデント スタイルで得られるものです。

a <- function(){

    a <- ggplot(data = overtime.by.month,
                aes(x="",
                    y=Percent,
                    fill = Overtime)) +
                        geom_bar(width = 1) +
                            xlab('') +
                                ylab(sub.txt) +
                                    labs(title = title.txt) +
                                        facet_wrap(~Year.Month) +
                                            geom_text(aes(y = txt.pos, label = Per.txt)) +
                                                coord_polar(theta = "y") +
                                                    scale_fill_manual(values = c('green', 'red')) +
                                                        theme(axis.ticks = element_blank(),
                                                              axis.text.y = element_blank(),
                                                              axis.text.x = element_blank())
}

更新:再インストール後、VitoshKaとDirkの両方の提案に従い、.emacsの問題を更新すると解決しました。君たちありがとう

UPDATE2: 問題が再発しました。今ではすべての人に再現可能になると思います。私は2つの異なるマシンで試しました。関数内にコードを入れると発生します。変更を反映するために投稿を更新しました。

4

2 に答える 2

10

私は得る

ggplot(data = overtime.by.month,
       aes(x="",
           y=Percent,
           fill = Overtime)) +
    geom_bar(width = 1) +
    xlab('') +
    ylab(sub.txt) +
    labs(title = title.txt) +
    facet_wrap(~Year.Month) +
    geom_text(aes(y = txt.pos, label = Per.txt)) +
    coord_polar(theta = "y") +
    scale_fill_manual(values = c('green', 'red')) +
    theme(axis.ticks = element_blank(),
          axis.text.y = element_blank(),
          axis.text.x = element_blank())

また、R のマニュアルからそのままデフォルトを使用しています。

;; R-internals manual
;;; ESS
(add-hook 'ess-mode-hook
      (lambda ()
        (ess-set-style 'C++ 'quiet)
        ;; Because
        ;;                                 DEF GNU BSD K&R C++
        ;; ess-indent-level                  2   2   8   5   4
        ;; ess-continued-statement-offset    2   2   8   5   4
        ;; ess-brace-offset                  0   0  -8  -5  -4
        ;; ess-arg-function-offset           2   4   0   0   0
        ;; ess-expression-offset             4   2   8   5   4
        ;; ess-else-offset                   0   0   0   0   0
        ;; ess-close-brace-offset            0   0   0   0   0
        (add-hook 'local-write-file-hooks
              (lambda ()
            (ess-nuke-trailing-whitespace)))))
;;(setq ess-nuke-trailing-whitespace-p 'ask)
;; or even
(setq ess-nuke-trailing-whitespace-p t)
;; Perl
(add-hook 'perl-mode-hook
      (lambda () (setq perl-indent-level 4)))

コメントでこれらの値を変更できます。

于 2012-10-09T18:22:08.827 に答える
9

私もあなたの問題を見ていません。更新してみてください。古いバグである可能性があります。

いずれの場合でもC-c C-e s、インデント スタイルをオンザフライで変更できます。おすすめはRRRです。

于 2012-10-09T18:43:58.797 に答える