[ESS] trouble with the colored string in R chunk
Naresh Gurbuxani
n@re@h_gurbux@n| @end|ng |rom hotm@||@com
Fri Feb 6 15:50:51 CET 2026
With my default setup, I see character strings rendered in different colour. Some keywords like “library” and “function” are also shown in different colour.
Sent from my iPhone
> On Feb 2, 2026, at 12:06 PM, LaurentEss via ESS-help <ess-help using r-project.org> wrote:
>
> Dear Ess-Help list,
>
> I work with noweb files .Rnw and polymode. I can’t get the string coloring in the R chunks of my files. And yet I searched for a while with the help of chatGPT. Is it possible ? How do we get the string colored in the R chunk ? I succeed to have the string coloring in the .R files but not in the R chunk. When I do M-: major-mode in a R chunk of my .Rnw file I have the answer ess-r-mode but the strings are not colored.
>
> Thank you very much for your help.
>
> Laurent
>
>
> ----o<--------------------------------------------------------------------------->o-----------------
>
> Here below is what I put in my init.el file.
>
> ;; -*- lexical-binding: t; -*-
> ;;
> ;; highlighting R code for ESS in R chunk in .
> ;;
> (with-eval-after-load 'ess-r-mode
>
> ;; 🔹 Catégories officielles ESS
> (setq ess-R-font-lock-keywords
> '((ess-R-fl-keyword:keywords . t)
> (ess-R-fl-keyword:constants . t)
> (ess-R-fl-keyword:modifiers . t)
> (ess-R-fl-keyword:fun-defs . t)
> (ess-R-fl-keyword:assign-ops . t)
> (ess-R-fl-keyword:%op% . t)
> (ess-fl-keyword:fun-calls . t)
> (ess-fl-keyword:numbers . t)
> (ess-fl-keyword:operators . t)
> (ess-fl-keyword:delimiters . t)
> (ess-fl-keyword:= . t)
> (ess-R-fl-keyword:F&T . t)))
>
> ;; 🔹 Ajouter fonctions R et builtins supplémentaires
> (setq ess-R-font-lock-keywords
> (append ess-R-font-lock-keywords
> '(("\\<\\(library\\|require\\|source\\|setwd\\|read\\.csv\\|readRDS\\)\\>"
> . font-lock-builtin-face))))
>
>
> ;; 🔹 Coloration des chaînes
> (font-lock-add-keywords
> 'ess-r-mode
> '(("\"[^\"]*\"" . font-lock-string-face)
> ("'[^']*'" . font-lock-string-face)))
>
>
> ;; 🔹 Ajouter toutes les règles supplémentaires avec font-lock-add-keywords
> (font-lock-add-keywords
> 'ess-r-mode
> '(
> ;; Arguments nommés : x = ...
> ("\\(\\_<[[:alpha:].]+\\_>\\)[[:space:]]*="
> 1 font-lock-variable-name-face)
>
> ;; Pipes : %>% %<>% %$%
> ("%>%\\|%<>%\\|%\\$%" . font-lock-keyword-face)
>
> ;; Fonctions builtins classiques
> ("\\<\\(library\\|require\\|source\\|return\\|stop\\|warning\\|message\\)\\>"
> . font-lock-builtin-face)
>
> ;; Nombres
> ("\\<\\([0-9]+\\(\\.[0-9]*\\)?\\)\\>" . font-lock-constant-face)
> ))
>
> ;; 🔹 Pretty symbols pour <- etc.
> (setq ess-r-prettify-symbols t)
>
> ;; 🔹 Outils utiles
> (add-hook 'ess-r-mode-hook #'outline-minor-mode)
> (add-hook 'ess-r-mode-hook #'hl-todo-mode))
>
>
> ;; Recoloration automatique des chunks R polymode
> (with-eval-after-load 'poly-noweb
> (add-hook 'poly-noweb+r-mode-hook
> (lambda ()
> ;; activer font-lock si ce n'est pas déjà fait
> (font-lock-mode 1)
> (font-lock-ensure))))
>
>
>
> ;; Wrapper interactif pour recoloration
> (defun my/ess-r-font-lock-ensure ()
> "Recolorer le buffer ESS-R courant."
> (interactive)
> (font-lock-ensure))
>
> ;; Raccourci dans tous les chunks R de polymode
> (with-eval-after-load 'poly-noweb
> (define-key poly-noweb+r-mode-map (kbd "C-c C-l") #'my/ess-r-font-lock-ensure))
>
>
>
> (with-eval-after-load 'poly-noweb
> ;; Hook pour tous les chunks R à l'ouverture
> (add-hook 'poly-noweb+r-mode-hook
> (lambda ()
> ;; activer font-lock si ce n'est pas déjà fait
> (font-lock-mode 1)
>
> ;; Coloration personnalisée
> (font-lock-add-keywords
> nil
> '(("\"[^\"]*\"" . font-lock-string-face)
> ("'[^']*'" . font-lock-string-face)))
>
> ;; Recoloration immédiate
> (font-lock-ensure)
>
> ;; Outline et TODO
> (outline-minor-mode 1)
> (hl-todo-mode 1))))
>
> ;; 🔹 Recolorer tous les chunks R déjà ouverts
> (dolist (buf (buffer-list))
> (with-current-buffer buf
> (when (derived-mode-p 'poly-noweb+r-mode)
> ;; s'assurer que font-lock est actif
> (font-lock-mode 1)
> ;; appliquer les couleurs de chaînes
> (font-lock-add-keywords
> nil
> '(("\"[^\"]*\"" . font-lock-string-face)
> ("'[^']*'" . font-lock-string-face)))
> (font-lock-ensure))))
>
> ______________________________________________
> ESS-help using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/ess-help
More information about the ESS-help
mailing list