[ESS] change font-lock-string-face for back ticks
Peter Meilstrup
peter.meilstrup at gmail.com
Mon Feb 17 22:06:04 CET 2014
Here's some elisp I have to correct some things with ESS's syntax
highlighting, including how to highlight backticks.
(add-hook 'R-mode-hook 'pbm-fix-R-syntax-highlighting)
(defun pbm-fix-R-syntax-highlighting ()
;; ESS classes % as punctuation, but it's
;; really a sort of quote delimiter -- but since it doesn't
;; escape with \, there's a slight hole
(modify-syntax-entry ?% "\"")
;; On the other hand ESS classes $ @ and : as word characters but they
;; are really punctuation
(modify-syntax-entry ?$ ".")
(modify-syntax-entry ?@ ".")
(modify-syntax-entry ?: ".")
(setq font-lock-syntactic-face-function 'pbm-R-syntactic-face-function)
(font-lock-fontify-buffer))
(defun pbm-R-syntactic-face-function (state)
(cond
((nth 3 state) ;strings and stringlike elements
(case (nth 3 state)
;R has four things that are to be tokenized like quotes: single
;and double quoted strings, backtick symbols (which are names,
;not strings, so they shouldn't be in string face) and %custom%
;infix operators which shouldn't either
(?\" font-lock-string-face)
(?' font-lock-string-face)
(?` font-lock-variable-name-face)
(?% font-lock-constant-face)))
(t font-lock-comment-face)))
On Mon, Feb 17, 2014 at 10:22 AM, Munawar Cheema <mcheema at btinternet.com> wrote:
> On 17/02/2014 18:08, Vitalie Spinu wrote:
>>
>> >>> Munawar Cheema on Mon, 17 Feb 2014 15:35:59 +0000 wrote:
>>
>> [...]
>>
>> > In my emacs statements such as:
>> > `%weirdly-named-function` <- function(){}
>> > `var-name` <- "djsf"
>>
>> > The face of the function is the string-face and not the face for
>> > functions and similarly for the var-name face.
>>
>> For me the function is highlighted with
>> font-lock-function-name-face. The `var-name` is indeed highlighted as a
>> string. It kind of makes sense for it not to be.
>>
>> Vitalie
>>
>>
>>
>
> Vitalie,
> I just tried again without my customizations and you are right the function
> does indeed get the font-lock-function-name-face.
> I tried to figure out where Emacs sets the delimiters for strings but my
> Emacs lisp foo fails me. There must be a way to tell it not to use back
> ticks for strings in ESS-mode.
>
>
> --
> *Munawar Cheema *
>
>
> ______________________________________________
> ESS-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/ess-help
More information about the ESS-help
mailing list