I edit some files that are mostly C code but include a few special extension tokens. The tokens that give c-mode a problem are @' and @".

I essentially want c-mode to ignore these two bigrams. The current behavior is that the quote (single or double) is interpreted as the beginning of a quoted string.

I reckon this is childs play for anyone well versed in elisp syntax tables but I am not hence my appeal for your help.

  • I don't really care how @' and @" are colorized by font-lock, as long as they do not make c-mode think the quote is the beginning of a string – Jonathan Cano Jul 28 '16 at 22:05
  • Also, perhaps this is more of a font-lock issue than a c-mode issue. I'm not sure. – Jonathan Cano Jul 28 '16 at 22:09
  • 1
    Is @ used anywhere else? I wonder if @ set to be “escape” in the syntax table would work: (modify-syntax-entry ?@ "/") – amitp Jul 28 '16 at 23:15
  • no, @ is not used anywhere else. I'll investigate this option – Jonathan Cano Aug 2 '16 at 16:31

You have to put a syntax-table property on the ' and " characters, e.g.:

(defun c-propertize-@ ()
    (goto-char (point-min))
    (while (re-search-forward "@\\(\"\\|'\\)" nil t)
      (put-text-property (match-beginning 1)
                         (match-end 1)
                         '(1))))) ;;= punctuation

Take a look at syntax-propertize-function, if you also want to edit these tokens.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.