[ESS] Emacs, ESS and Rmarkdown: Is this the way compile is supposed to work?

Manuel Teodoro teoten @end|ng |rom gm@||@com
Fri May 5 16:50:07 CEST 2023


Hi Kevin,

First of all, sorry for the late reply, I was OOO for a couple of weeks and
I didn't have my laptop with me.

Anyway, I was trying to follow up with your init file but it has a couple
of things that, in my opinion, might be redundant or not necessary, and I
am not sure if silly mistakes there could not be conflicting with the
proper function of poly-R and markdown.

For starters, could you comment all the part of the init file that relates
to RMarkdown (what you shared above) and add instead the following few
lines:

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

 ;; MARKDOWN
 (add-to-list 'auto-mode-alist '("\\.md" . poly-markdown-mode))

  ;; R modes
 (add-to-list 'auto-mode-alist '("\\.Rnw" . poly-noweb+r-mode))
 (add-to-list 'auto-mode-alist '("\\.Rmd" . poly-markdown+r-mode))
===

Then, try opening and working with an ".Rmd" file but please, also test
with an ".md" file, plain markdown. If both work, congratulations.
Otherwise, let me know what kind of errors you get with each type of file.
We want to identify first if the problem is Rmd or markdown as a whole.
Long time ago I got the problem that one of my Linux systems did not have
any markdown parser installed and that was giving me problems, of course
external to emacs but hard to identify.

Let me know and, since I'm back in the office, I'll try to reply faster
this time.

All the best
Manuel

On Thu, Apr 27, 2023 at 7:32 PM Kevin Zembower <kevin using zembower.org> wrote:

> Hi, Manuel, thanks for your advice and help.
>
> Here's the section of my ~/.emacs.d/init.el file that I think pertains
> to R and Rmarkdown:
> ===========================================================
> ;; Next two sections for editing manpages in markdown (duplicates
> ;; sections below it, regarding RMarkdown in ESS?)
> (autoload 'markdown-mode "markdown-mode"
>     "Major mode for editing Markdown files" t)
> (add-to-list 'auto-mode-alist
>
> '("\\.\\(?:md\\|markdown\\|mkd\\|mdown\\|mkdn\\|mdwn\\)\\'" .
> markdown-mode))
>
> (autoload 'gfm-mode "markdown-mode"
>     "Major mode for editing GitHub Flavored Markdown files" t)
> (add-to-list 'auto-mode-alist '("README\\.md\\'" . gfm-mode))
>
> ;; For working in Markdown (RMarkdown in ESS):
> (setq load-path (append load-path (list
> "/usr/share/emacs23/site-lisp/emacs-goodies-el")))
> ;; (autoload 'markdown-mode "markdown-mode"
> ;;    "Major mode for editing Markdown files" t)
> ;; (add-to-list 'auto-mode-alist '("\\.text\\'" . markdown-mode))
> ;; (add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
> ;; (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
>
> ;; For working with RMarkdown (polymode):
> ;; Commented out, to update to poly-R
> (setq load-path (append '("~/.emacs.d/polymode/"
> "~/.emacs.d/polymode/modes") load-path))
> (require 'poly-R)
> ;; Below from email at
> https://stat.ethz.ch/pipermail/ess-help/2023-April/013190.html
> (define-polymode poly-gfm+r-mode poly-markdown+r-mode
>    :lighter " PM-Rmd(gfm)"
>    :hostmode 'poly-gfm-hostmode)
> (require 'poly-markdown)
> (add-to-list 'auto-mode-alist '("\\.Rmd" . poly-markdown+r-mode))
> ;; associate the new polymode to Rmd files:
> (add-to-list 'auto-mode-alist
>                '("\\.[rR]md\\'" . poly-gfm+r-mode))
> ;; uses braces around code block language strings:
> ;; (setq markdown-code-block-braces t)
> =========================================================
>
> I've also attached the whole file to this message.
>
> Thanks, again, for any advice or guidance you can offer.
>
> -Kevin
>
>
> On 4/24/23 02:45, Manuel Teodoro wrote:
> > Hi Kevin,
> >
> > I also get sometimes the problem with "cl" library but it is never a
> > critical error that stops me from using Rmd.
> >
> > I think the main question is, what is in your emacs configuration file?
> > Probably the problem comes from there.
> >
> > For example, for R markdown I have simply the following lines, maybe you
> > can try them and see if the error persist.
> >
> > ;; R markdown
> > (use-package polymode)
> > (use-package poly-R)
> > (use-package poly-markdown)
> >
> > ;; MARKDOWN
> > (add-to-list 'auto-mode-alist '("\\.md" . poly-markdown-mode))
> >
> >   ;; R modes
> > (add-to-list 'auto-mode-alist '("\\.Snw" . poly-noweb+r-mode))
> > (add-to-list 'auto-mode-alist '("\\.Rnw" . poly-noweb+r-mode))
> > (add-to-list 'auto-mode-alist '("\\.Rmd" . poly-markdown+r-mode))
> >   ;
> >
> > I just noticed, this is just in case you have installed use-package. If
> > not, change the first 3 lines for something like
> >
> > (require 'polymode)
> > (require 'poly-R)
> > (require 'poly-markdown)
> >
> > Although probably require could also give you trouble, in which case
> > simply remove the 3 lines. The most important are the following lines
> > that are telling emacs to recognize *.Rmd files as markdown.
> >
> > If you already have this lines then it would be helpful to see your
>
> > whole config file because maybe something there is conflicting with
>
> > markdown or with r markdown.
> >
> > Cheers
> > Manuel
> >
> > On Sun, Apr 23, 2023, 20:11 Kevin Zembower via ESS-help
> > <ess-help using r-project.org <mailto:ess-help using r-project.org>> wrote:
> >
> >     Jacob, thanks for your help.
> >
> >     Here's the output. I don't understand much of it, but the first
> mention
> >     of anything which seems germane is of "poly-markdown-+r-mode":
> >     ===============================================
>
> >     Debugger entered--Lisp error: "Package cl is deprecated"
> >         message("%s" "Package cl is deprecated")
> >         #f(compiled-function (msg) #<bytecode 0x1fd0c5464193>)("Package
> >     cl is
> >     deprecated")
> >         apply(#f(compiled-function (msg) #<bytecode 0x1fd0c5464193>)
> >     "Package
> >     cl is deprecated")
> >         timer-event-handler([t 0 0 0 nil #f(compiled-function (msg)
> >     #<bytecode 0x1fd0c5464193>) ("Package cl is deprecated") idle 0])
> >         recursive-edit()
> >         debug(error (cl-no-applicable-method clone nil))
> >         signal(cl-no-applicable-method (clone nil))
> >         cl-no-applicable-method(#s(cl--generic :name clone :dispatches
> ((0
> >     #s(cl--generic-generalizer :name eieio--generic-generalizer
> >     :priority 50
> >     :tagcode-function cl--generic-struct-tag :specializers-function
> >     #f(compiled-function (tag &rest _) #<bytecode 0x155db7511469>))
> >     #s(cl--generic-generalizer :name cl--generic-t-generalizer :priority
> 0
> >     :tagcode-function #f(compiled-function (name &rest _) #<bytecode
> >     0x1fd0c5305c27>) :specializers-function #f(compiled-function (tag
> &rest
> >     _) #<bytecode 0x1fd0c5305c17>)))) :method-table
> (#s(cl--generic-method
> >     :specializers (eieio-named) :qualifiers nil :uses-cnm t :function
> >     #f(compiled-function (obj &rest params) "Clone OBJ, initializing
> >     `:parent' to OBJ.\nAll slots are unbound, except those initialized
> with
> >     PARAMS." #<bytecode 0x155db755ec35>)) #s(cl--generic-method
> >     :specializers (eieio-instance-inheritor) :qualifiers nil :uses-cnm t
> >     :function #f(compiled-function (obj &rest params) "Clone OBJ,
> >     initializing `:parent' to OBJ.\nAll slots are unbound, except those
> >     initialized with PARAMS." #<bytecode 0x155db74f9af1>))
> >     #s(cl--generic-method :specializers (eieio-default-superclass)
> >     :qualifiers nil :uses-cnm nil :function #f(compiled-function (obj
> &rest
> >     params) "Make a copy of OBJ, and then apply PARAMS." #<bytecode
> >     0x155db7503511>))) :options nil) nil)
> >         apply(cl-no-applicable-method #s(cl--generic :name clone
> >     :dispatches
> >     ((0 #s(cl--generic-generalizer :name eieio--generic-generalizer
> >     :priority 50 :tagcode-function cl--generic-struct-tag
> >     :specializers-function #f(compiled-function (tag &rest _) #<bytecode
> >     0x155db7511469>)) #s(cl--generic-generalizer :name
> >     cl--generic-t-generalizer :priority 0 :tagcode-function
> >     #f(compiled-function (name &rest _) #<bytecode 0x1fd0c5305c27>)
> >     :specializers-function #f(compiled-function (tag &rest _) #<bytecode
> >     0x1fd0c5305c17>)))) :method-table (#s(cl--generic-method
> :specializers
> >     (eieio-named) :qualifiers nil :uses-cnm t :function
> >     #f(compiled-function
> >     (obj &rest params) "Clone OBJ, initializing `:parent' to OBJ.\nAll
>
> >     slots
> >     are unbound, except those initialized with PARAMS." #<bytecode
> >     0x155db755ec35>)) #s(cl--generic-method :specializers
> >     (eieio-instance-inheritor) :qualifiers nil :uses-cnm t :function
> >     #f(compiled-function (obj &rest params) "Clone OBJ, initializing
> >     `:parent' to OBJ.\nAll slots are unbound, except those initialized
> with
> >     PARAMS." #<bytecode 0x155db74f9af1>)) #s(cl--generic-method
> >     :specializers (eieio-default-superclass) :qualifiers nil :uses-cnm
> nil
> >     :function #f(compiled-function (obj &rest params) "Make a copy of
> OBJ,
> >     and then apply PARAMS." #<bytecode 0x155db7503511>))) :options nil)
> nil)
> >         #f(compiled-function (&rest args) #<bytecode
> 0x155db79c1179>)(nil)
> >         apply(#f(compiled-function (&rest args) #<bytecode
> 0x155db79c1179>)
> >     nil nil)
> >         clone(nil)
> >         (let ((config (clone poly-markdown+r-mode))) (eieio-oset config
> >     ':minor-mode 'poly-gfm+r-mode) (pm-initialize config))
> >         (if pm/polymode nil (let ((config (clone poly-markdown+r-mode)))
> >     (eieio-oset config ':minor-mode 'poly-gfm+r-mode) (pm-initialize
> >     config)))
> >         (let ((last-message (current-message))) (if pm/polymode nil (let
> >     ((config (clone poly-markdown+r-mode))) (eieio-oset config
> ':minor-mode
> >     'poly-gfm+r-mode) (pm-initialize config))) (setq poly-gfm+r-mode t)
> >     (run-hooks 'poly-gfm+r-mode-hook) (if (and (called-interactively-p
>
> >     'any)
> >     (or (null (current-message)) (not (equal last-message
> >     (current-message))))) (progn (message "gfm+r polymode enabled")))
> >     (force-mode-line-update))
> >         (if poly-gfm+r-mode nil (let ((last-message (current-message)))
> (if
> >     pm/polymode nil (let ((config (clone poly-markdown+r-mode)))
> >     (eieio-oset
> >     config ':minor-mode 'poly-gfm+r-mode) (pm-initialize config))) (setq
> >     poly-gfm+r-mode t) (run-hooks 'poly-gfm+r-mode-hook) (if (and
> >     (called-interactively-p 'any) (or (null (current-message)) (not
> (equal
> >     last-message (current-message))))) (progn (message "gfm+r polymode
>
> >     enabled"))) (force-mode-line-update)))
> >         poly-gfm+r-mode()
> >         set-auto-mode-0(poly-gfm+r-mode nil)
> >         set-auto-mode()
> >         normal-mode(t)
> >         after-find-file(nil t)
> >         find-file-noselect-1(#<buffer Prob_17_Page_295.Rmd>
> >     "~/Documents/Dan/Math_Stats/Prob_17_Page_295.Rmd" nil nil
> >     "~/Documents/Dan/Math_Stats/Prob_17_Page_295.Rmd" (69338481 2067))
>
> >
> >
>  find-file-noselect("/home/kevin/Documents/Dan/Math_Stats/Prob_17_Page_...")
> >         #f(compiled-function (displayable-buffers dir line column name)
> >     #<bytecode 0x1fd0c5450cb9>)((nil) "~/Documents/Dan/Math_Stats/" (0)
> (0)
> >     "Prob_17_Page_295.Rmd")
> >         command-line-1(("Prob_17_Page_295.Rmd"))
> >         command-line()
> >         normal-top-level()
> >     ========================================
> >
> >     Thanks for any ongoing advice.
> >
> >     -Kevin
> >
> >     On 4/23/23 13:34, Jacob Kasper wrote:
> >      > For package cl is depreciated you can read this thread. I don't
>
> >     think
> >      > this is causing any issues with markdown.
> >      >
> >
> https://www.reddit.com/r/emacs/comments/zslyem/package_cl_is_deprecated_debugging/
> <
> https://www.reddit.com/r/emacs/comments/zslyem/package_cl_is_deprecated_debugging/>
> <
> https://www.reddit.com/r/emacs/comments/zslyem/package_cl_is_deprecated_debugging/
> <
> https://www.reddit.com/r/emacs/comments/zslyem/package_cl_is_deprecated_debugging/
> >>
> >      >
> >      > On Sun, Apr 23, 2023, 17:16 Kevin Zembower via ESS-help
> >      > <ess-help using r-project.org <mailto:ess-help using r-project.org>
> >     <mailto:ess-help using r-project.org <mailto:ess-help using r-project.org>>>
> wrote:
> >      >
> >      >     Tyler, thanks again for your help.
> >      >
> >      >     I'm sorry to burden you with my problems, but I'm stuck again.
> >      >
> >      >     I think I have everything installed and up to date. Here's an
> >     excerpt
> >      >     from M-x package-list-packages:
> >      >         markdown-mode      20220212.728  installed
>  Major
> >      >     mode for
> >      >     Markdown-formatted text
> >      >         poly-R             20230416.1454 installed
> >       Various
> >      >     polymodes for R language
> >      >         poly-markdown      20230202.1210 installed
> >       Polymode for
> >      >     markdown-mode
> >      >         poly-noweb         20200316.1315 installed
> >       Polymode
> >      >     for noweb
> >      >         polymode           20230317.1218 installed
> >       Extensible
> >      >     framework for multiple major modes
> >      >
> >      >     With the exception of poly-noweb, they're all 2023 packages.
> >      >
> >      >     Yet, when I open an *.Rmd file, I get this in the Messages
> >     buffer:
> >      >
> >      >     File mode specification error: (error Autoloading file
> >      >     /home/kevin/.emacs.d/polymode/modes/poly-R.el failed to
> >     define function
> >      >     poly-gfm+r-mode)
> >      >     Package cl is deprecated
> >      >
> >      >     I then added your alternative define-polymode section, and
> >     the error
> >      >     about poly-gfm+r-mode went away, but I still have this
> >     message in the
> >      >     Messages buffer when I start Emacs with an *.Rmd file:
> >      >
> >      >     File mode specification error: (cl-no-applicable-method clone
> >     nil)
> >      >     Package cl is deprecated
> >      >
> >      >     I can't find a reference to a 'cl' package in my init.el. In
> >     addition,
> >      >     the *.Rmd file is in Fundamental mode, and not ESS or poly-R
> >     mode.
> >      >
> >      >     When I try to manually invoke the poly mode, with 'M-x
> >      >     poly-gfm+r-mode',
> >      >     I get the message:
> >      >
> >      >     cl-no-applicable-method: No applicable method: clone, nil
> >      >
> >      >     Any ideas what's going on with my system? I'm so worried I'm
> just
> >      >     making
> >      >     a hash of things with these changes.
> >      >
> >      >     Thanks for any advice or guidance.
> >      >
> >      >     -Kevin
> >      >
> >      >     On 4/22/23 06:00, ess-help-request using r-project.org
> >     <mailto:ess-help-request using r-project.org>
> >      >     <mailto:ess-help-request using r-project.org
> >     <mailto:ess-help-request using r-project.org>> wrote:
> >      >      > ------------------------------
> >      >      >
> >      >      > Message: 2
> >      >      > Date: Fri, 21 Apr 2023 11:09:43 -0400
> >      >      > From: "Tyler Smith"<tyler using plantarum.ca
> >     <mailto:tyler using plantarum.ca> <mailto:tyler using plantarum.ca
> >     <mailto:tyler using plantarum.ca>>>
> >      >      > To: ESS-help<ess-help using r-project.org
> >     <mailto:ess-help using r-project.org> <mailto:ess-help using r-project.org
> >     <mailto:ess-help using r-project.org>>>
> >      >      > Subject: Re: [ESS] Emacs, ESS and Rmarkdown: Is this the
> >     way compile
> >      >      >       is supposed to work?
> >      >      >
> >     Message-ID:<a2b88f26-7760-41c2-8e9d-e4ea5de4bf21 using app.fastmail.com
> >     <mailto:a2b88f26-7760-41c2-8e9d-e4ea5de4bf21 using app.fastmail.com>
> >      >     <mailto:a2b88f26-7760-41c2-8e9d-e4ea5de4bf21 using app.fastmail.com
> >     <mailto:a2b88f26-7760-41c2-8e9d-e4ea5de4bf21 using app.fastmail.com>>>
> >      >      > Content-Type: text/plain; charset="us-ascii"
> >      >      >
> >      >      > Hi Kevin,
> >      >      >
> >      >      > If you have an older version of `poly-R`, the function
> >      >     `poly-gfm+r-mode` might not be present. This was added to
> >     `poly-R`
> >      >     dev in July 2021, I'm not sure exactly when it would have
> >     been added
> >      >     to the released version.
> >      >      >
> >      >      > If that's the case, updating to the current version of
> >     `poly-R`
> >      >     should fix the problem.
> >      >      >
> >      >      > Alternatively, you need the following code evaluated*after*
> >      >     `(require 'poly-R)` and*before*  `(add-to-list ...)`:
> >      >      >
> >      >      > ```
> >      >      > (define-polymode poly-gfm+r-mode poly-markdown+r-mode
> >      >      >    :lighter " PM-Rmd(gfm)"
> >      >      >    :hostmode 'poly-gfm-hostmode)
> >      >      > ```
> >      >      >
> >      >      > But that really shouldn't be necessary.
> >      >      >
> >      >      > Best,
> >      >      >
> >      >      > Tyler
> >      >      > -- plantarum.ca <http://plantarum.ca> <http://plantarum.ca
> >     <http://plantarum.ca>>
> >      >
> >      >
> >      >     ______________________________________________
> >      > ESS-help using r-project.org <mailto:ESS-help using r-project.org>
> >     <mailto:ESS-help using r-project.org <mailto:ESS-help using r-project.org>>
> >     mailing list
> >      > https://stat.ethz.ch/mailman/listinfo/ess-help
> >     <https://stat.ethz.ch/mailman/listinfo/ess-help>
> >      >     <https://stat.ethz.ch/mailman/listinfo/ess-help
> >     <https://stat.ethz.ch/mailman/listinfo/ess-help>>
> >      >
> >
> >
> >     ______________________________________________
> >     ESS-help using r-project.org <mailto:ESS-help using r-project.org> mailing list
> >     https://stat.ethz.ch/mailman/listinfo/ess-help
> >     <https://stat.ethz.ch/mailman/listinfo/ess-help>
> >

	[[alternative HTML version deleted]]



More information about the ESS-help mailing list