[ESS] polymode indents everything when editing Rmd file?

Paul Johnson pauljohn32 at gmail.com
Tue Feb 6 17:24:51 CET 2018

I wonder if I've got polymode set up correctly. I have Ubuntu 17.10
Emacs 25.2 Ess 17.11, it works well to edit R files. Today I installed
polymode from melpa,

When I open an Rmd file, I can visually see a difference.  The code
chunks are likely shaded areas. Also, some keywords within the R
chunks are highlighted.  "library" appears as light green, and the
quoted arguments within function calls are different colors.

However, while editing the file, it seems like editing features don't
work correctly.  In the chunks that are R code, indentation works as
expected. However, outside the chunks, polymode has no indentation
benefit. I expect things that should be flush left should stay there,
but tabbing causes indentation. For example, where a line starts with

# R data import



A tab in either line, at any point within the line, causes 4 spaces before ```.

Lately, I've been trying to get Emacs to work with python and that has
been a massive pain.  Its possible I broke polymode by fiddingly with
that. So here's the init.el:

(when (>= emacs-major-version 24)
  (require 'package)
  (add-to-list 'package-archives
               '("melpa" . "http://melpa.milkbox.net/packages/") t)
  (add-to-list 'package-archives
               '("melpa-stable" . "https://stable.melpa.org/packages/")))


;; Org-mode with R doesn't work without this
;; http://orgmode.org/worg/org-contrib/babel/how-to-use-Org-Babel-for-R.html
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
   ["#2e3436" "#a40000" "#4e9a06" "#c4a000" "#204a87" "#5c3566"
"#729fcf" "#eeeeec"])
 '(column-number-mode t)
 '(cua-auto-tabify-rectangles nil)
 '(cua-mode t nil (cua-base))
 '(custom-enabled-themes (quote (whiteboard)))
 '(inferior-R-args "--no-restore-history --no-save")
 '(org-babel-load-languages (quote ((emacs-lisp . t) (R . t))))
 '(org-confirm-babel-evaluate nil)
 '(package-selected-packages (quote (polymode elpygen elpy)))
 '(show-paren-mode t))

(setq default-tab-width 4)

;; Section II. Keyboard and mouse customization
;; Mouse and cursor in the usual Mac/Windows way
(delete-selection-mode t)
;; http://stackoverflow.com/questions/13036155/how-to-to-combine-emacs-primary-clipboard-copy-and-paste-behavior-on-ms-windows
(setq select-active-regions t)
;; Trying to make mouse middle-click only paste from primary
;; X11 selection, not clipboard and kill ring:
(global-set-key [mouse-2] 'mouse-yank-primary)
;; highlight does not alter Kill ring:
(setq mouse-drag-copy-region nil)
;; windows style binding C-x, C-v, C-c, C-z:
(cua-mode t)
;; Don't tabify after rectangle commands:
(setq cua-auto-tabify-rectangles nil)

;; Section III. Programming conveniences:
;; light-up matching parens:
(show-paren-mode t)
;; turn on syntax highlighting:
(global-font-lock-mode t)
;; Auto fill is TRUE in text modes:
(setq text-mode-hook (quote (turn-on-auto-fill text-mode-hook-identify)))

;; Section IV. ESS Emacs Statistics

(require 'ess-site)
;; soft require: no error if package not found
(require 'ess-smart-underscore nil 'noerror)

(require 'poly-R)
(require 'poly-markdown)

(add-to-list 'auto-mode-alist '("\\.Rmd" . poly-markdown+r-mode))
;; start R in current working directory, don't let R ask user:
(setq ess-ask-for-ess-directory nil)

;; Change shortcut "run this line" to use Shift-Return
;; Suggested by Vitalie Spinu 2013-09-30 to co-exist with Windows Emacs
(eval-after-load "ess-mode"
   (define-key ess-mode-map [(control return)] nil)
   (define-key ess-mode-map [(shift return)] 'ess-eval-region-or-line-and-step))

;; Help in frames?
(setq ess-help-own-frame 'one)

;; I want the *R* process in its own frame
(setq inferior-ess-own-frame t)
(setq inferior-ess-same-window nil)

;; Problem in Windows about menus not displaying
;; https://stat.ethz.ch/pipermail/ess-help/2012-September/008207.html
;;(if (eq system-type 'windows-nt)
     (defun my-R-execute-options ()
    (ess-command "options(menu.graphics = FALSE)\n"))
    (add-hook 'ess-R-post-run-hook 'my-R-execute-options)

;; Put # flush left
;; See gmail thread in ESS group, this from Ista
(add-hook 'ess-mode-hook
            ;; don't indent comments
            (setq ess-indent-with-fancy-comments nil)
            ;; turn on outline mode
            (setq-local outline-regexp "[# ]+")
            (outline-minor-mode t)))

;; Section V. Frames oriented Emacs

;; Make files opened from the menu bar appear in their own
;; frames. Adapted from Emacs menu-bar.el
(defun menu-find-existing ()
  "Edit the existing file FILENAME."
  (let* ((mustmatch (not (and (fboundp 'x-uses-old-gtk-dialog)
         (filename (car (find-file-read-args "Find file: " mustmatch))))
    (if mustmatch
        (find-file-other-frame filename)
      (find-file filename))))
(define-key menu-bar-file-menu [new-file]
  '(menu-item "Open/Create" find-file-other-frame
              :enable (menu-bar-non-minibuffer-window-p)
              :help "Create a new file"))
(define-key menu-bar-file-menu [open-file]
  '(menu-item ,(purecopy "Open File...") menu-find-existing
              :enable (menu-bar-non-minibuffer-window-p)
              :help ,(purecopy "Read an existing file into an Emacs buffer")))

;; Open directory list in new frame.
(define-key menu-bar-file-menu [dired]
  '(menu-item "Open Directory..." dired-other-frame
          :help "Read a directory; operate on its files (Dired)"
          :enable (not (window-minibuffer-p (frame-selected-window

;; Section VI: Miscellaneous convenience
;; Remove Emacs "splash screen" http://fuhm.livejournal.com/
(defadvice command-line-normalize-file-name
    (before kill-stupid-startup-screen activate)
  (setq inhibit-startup-screen t))
(setq inhibit-splash-screen t)

;; Show file name in title bar
;; http://www.thetechrepo.com/main-articles/549
(setq frame-title-format "%b - Emacs")

;; Make Emacs scroll smoothly with down arrow key.
;; faq 5.45 http://www.gnu.org/s/emacs/emacs-faq.html#Modifying-pull_002ddown-menus
(setq scroll-conservatively most-positive-fixnum)

;; Remember password when connected to remote sites via Tramp
;; http://stackoverflow.com/questions/840279/passwords-in-emacs-tramp-mode-editing
;; Emacs "tramp" service (ssh connection) constantly
;; asks for the log in password without this
(setq password-cache-expiry nil)

;; Emacs shells work better
;; http://snarfed.org/why_i_run_shells_inside_emacs
(setq ansi-color-for-comint-mode 'filter)
(setq comint-prompt-read-only t)
(setq comint-scroll-to-bottom-on-input t)
(setq comint-scroll-to-bottom-on-output t)
(setq comint-move-point-for-output t)


Paul E. Johnson   http://pj.freefaculty.org
Director, Center for Research Methods and Data Analysis http://crmda.ku.edu

To write to me directly, please address me at pauljohn at ku.edu.

More information about the ESS-help mailing list