2012-10-10 9 views
8

Chciałbym szukać wyrażeń regularnych w buforze c/C++, ale chcę uniknąć wyrażenia pasującego do regionu komentarza. Czy istnieje sposób używania trybu c do sprawdzenia, czy fragment tekstu znajduje się w obszarze komentarza (lub czy punkt znajduje się w obszarze komentarza)?Emacs LISP i c-mode: kiedy jestem w regionie komentarza

Odpowiedz

10

Sposobem na postać, która obecnie jest z syntax-ppss która działa w C/C++ i większości głównych trybach. Na przykład. (null (nth 8 (syntax-ppss))) będzie liczbą zerową wtedy i tylko wtedy, gdy nie jesteś w ciągu znaków lub komentarza.

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

Podaj więcej niż tylko link. – skolima

+4

Możesz naprawić swoją odpowiedź, wklejając tutaj kod. W ten sposób odpowiedź będzie nadal przydatna po zniszczeniu łącza. –

+0

Jeśli Ci się spodoba, dlaczego nie skopiować, to nic nie kosztuje. –

Powiązane problemy