2012-10-10 3 views
8

मैं एक सी/सी ++ बफर के भीतर नियमित अभिव्यक्तियों की खोज करना चाहता हूं, लेकिन मैं एक टिप्पणी क्षेत्र से मेल खाने वाली अभिव्यक्ति से बचना चाहता हूं। क्या सी मोड का उपयोग करने का कोई तरीका है यह जानने के लिए कि पाठ का एक समूह एक टिप्पणी क्षेत्र में है (या एक बिंदु एक टिप्पणी क्षेत्र के भीतर है)?emacs lisp और c-mode: जब मैं एक टिप्पणी क्षेत्र में हूं

उत्तर

10

तरह से है कि यह पता लगाने की syntax-ppss जो C/C++ और सबसे प्रमुख मोड में काम करता है के साथ है। जैसे (null (nth 8 (syntax-ppss))) गैर-शून्य होगा यदि केवल तभी आप स्ट्रिंग-या-टिप्पणी में नहीं हैं।

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

कृपया केवल एक लिंक से अधिक प्रदान करें। – skolima

+4

आप यहां कोड चिपकाकर अपना जवाब ठीक कर सकते हैं। इस तरह लिंक अभी भी उपयोगी होने के बाद उत्तर उपयोगी होगा। –

+0

यदि आपको यह पसंद है, तो इसे कॉपी क्यों न करें, यह मुफ़्त है। –

संबंधित मुद्दे