Emacs d-mode cannot handle backquoted backslashe

Atila Neves via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Aug 4 05:25:20 PDT 2014


I took a look and I don't really know if it's possible without 
using the Emacs > 24 only suggestion in the Stack Overflow 
comment to your question.

As far as I can see, before that Emacs syntax tables have a 
notion of what a string is and what an escape character is. The 
d-mode code adds the backtick as an alternative to double and 
single quotes but can't do anything about the backslash. Unless 
it disables backslash as an escape character everywhere.

I tried setting backtick to a function that returns "\"" instead 
of the value to see if I could then tailor the function to depend 
on whether not the point was in a backtick string but that didn't 
work since `modify-syntax-entry` checks to see if the argument is 
a string.

BTW, python-mode has the same problem, I checked with r"\".

Atila

On Thursday, 31 July 2014 at 08:40:12 UTC, Nordlöw wrote:
> Currently Emacs d-mode cannot correctly highlight
>
> `\`
>
> because it doesn't understand that single backslashes are 
> self-contained in back-quoted strings.
>
> I believe this extract from d-mode.el
>
> (defvar d-mode-syntax-table nil
>   "Syntax table used in d-mode buffers.")
> (or d-mode-syntax-table
>     (setq d-mode-syntax-table
> 	 (let ((table (funcall (c-lang-const c-make-mode-syntax-table 
> d))))
> 	   ;; Make it recognize D `backquote strings`
> 	   (modify-syntax-entry ?` "\"" table)
>
> 	   ;; Make it recognize D's nested /+ +/ comments
> 	   (modify-syntax-entry ?+  ". 23n"   table)
> 	   table)))
>
> is highly related to this problem but I don't understand the 
> comment
>
> 	   ;; Make it recognize D `backquote strings`
>
> Ideas on how to fix this anyone?



More information about the Digitalmars-d-learn mailing list