[ESS] polymode indents everything when editing Rmd file?

Paul Johnson p@u|john32 @end|ng |rom gm@||@com
Tue Feb 6 21:08:17 CET 2018


On Tue, Feb 6, 2018 at 11:31 AM, Ista Zahn <istazahn using gmail.com> wrote:
> Hi Paul,
>
> Why do you expect polymode to provide an indention benefit? "All" it
> does in the .Rmd case is give you a buffer with markdown-mode parts
> and R-mode parts. Indentation in the R-mode parts is handled by ESS,
> and indentation in markdown-mode parts is handled by markdown-mode.
>
> Or are you trying to say that indentation in the markdown portion of a
> polymode buffer is different than indentation in a plain markdown-mode
> buffer?
>

Ugh. I see.  It is not a polymode problem.  I just don't like
markdown-mode so much.

If anybody has tips for working with Rmd files, I'm all ears at this point.

Best
pj
> Best,
> Ista
>
> On Tue, Feb 6, 2018 at 11:24 AM, Paul Johnson <pauljohn32 using gmail.com> wrote:
>> 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
>>
>> or
>>
>> ```{r}
>>
>> 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)
>>   (package-initialize)
>>   (add-to-list 'package-archives
>>                '("melpa" . "http://melpa.milkbox.net/packages/") t)
>>   (add-to-list 'package-archives
>>                '("melpa-stable" . "https://stable.melpa.org/packages/")))
>>
>> (package-initialize)
>> (elpy-enable)
>>
>>
>> ;; 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
>>  ;; 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.
>>  '(ansi-color-names-vector
>>    ["#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"
>>  '(progn
>>    (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
>>           (lambda()
>>             ;; 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."
>>   (interactive)
>>   (let* ((mustmatch (not (and (fboundp 'x-uses-old-gtk-dialog)
>>                               (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
>> menu-updating-frame)))))
>>
>>
>>
>>
>> ;; 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)
>>
>>
>> PJ
>>
>> --
>> 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.
>>
>> ______________________________________________
>> ESS-help using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/ess-help



-- 
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