2012-10-10 22 views
8

me gustaría buscar expresiones regulares dentro de un/C++ tampón C, pero quieren evitar la expresión que coincide con una región comentario. ¿Hay alguna manera de usar el modo c para saber si un grupo de texto está dentro de una región de comentario (o un punto está dentro de una región de comentario)?Emacs Lisp y C-Mode: cuando estoy en una región comentario

Respuesta

10

La forma de averiguarlo es con syntax-ppss que trabaja en C/C++ y la mayoría de los modos principales. P.ej. (null (nth 8 (syntax-ppss))) será no-nil si y solo si no está dentro de una cadena-o-comentario.

0
(defun re-search-forward-not-in-comment (regexp) 
    "Search forward first regexp not inside a comment. " 
    (interactive 
    (list (read-from-minibuffer "Regexp: "))) 
    (while (and (re-search-forward regexp nil t 1) 
      (and (nth 8 (syntax-ppss))(nth 4 (syntax-ppss)))))) 
+3

Sírvanse proporcionar más que un simple enlace. – skolima

+4

Puede corregir su respuesta pegando el código aquí. De esta manera, la respuesta seguirá siendo útil después de que el enlace se haya podrido. –

+0

Si te gusta, por qué no copiarlo, es gratis. –