वहाँ एक yasnippet एक prepopulated doxygen टिप्पणी का उत्पादन कर रहा है?


10

निम्नलिखित C ++ फ़ंक्शन के लिए:

bool importantStuff(double a, double b);

यह निम्नलिखित स्निपेट का उत्पादन करना चाहिए, शायद टैग के बिना:

/**
 * <Insert description of importantStuff>
 *
 * @param a <Insert description of a>
 * @param b <Insert description of b>
 * @return <Insert description of the return value>
 */

मैंने नेट के चारों ओर देखा है, लेकिन मैं एक उत्तर के लिए निकटतम हो गया हूं यह पुराना एसओ प्रश्न है जहां जवाब अब लंबे समय तक बनाए रखने वाले डॉक्सिमाक्स मोड पर निर्भर करता है।


मुझे लगता c-sharp-modeहै कि ऐसा कुछ है जो ऐसा करता है।
erikstokes

क्या आप नए कार्यों या मौजूदा लोगों के लिए ऐसा करना चाहते हैं?
itsjeyd

सवाल पूछने के दौरान मैं फ़ंक्शन के हस्ताक्षर से उत्पन्न होने वाली डॉक्सीजन टिप्पणी के बारे में सोच रहा था।
रोवेनियन

जवाबों:


4

मैं निम्नलिखित का उपयोग करता हूं जो मानक डॉक्सिमेक का एक मैशअप है जो एक और एबो-अबो के शब्दार्थ आधारित है जो पहले से ही एक उत्तर के रूप में उल्लिखित है - इसके लिए केवल शब्दार्थ और यस्नीपेट की आवश्यकता होती है। यह पूर्व जानकारी के साथ-साथ अबो-एबो के संस्करण की तुलना में कुछ अधिक यस्नीपेट प्लेसहोल्डर्स को पहले से आबाद करता है।


# -*- mode: snippet -*-
# name: dox
# key: dox
# type: command
# --
(unless (and (fboundp 'semantic-current-tag)
             semantic-mode)
  (error "Semantic required to use dox snippet"))
(let ((tag (senator-next-tag)))
  (while (or (null tag)
             (not (semantic-tag-of-class-p tag 'function)))
    (setq tag (senator-next-tag)))
  (let* ((name (semantic-tag-name tag))
         (attrs (semantic-tag-attributes tag))
         (args (plist-get attrs :arguments))
         (return-name (plist-get attrs :type))
         (idx 1))
    (if (listp return-name)
      (setq return-name (car return-name)))
    (yas/expand-snippet
     (format
      "/**
* @brief ${1:%s}
*
%s
%s*/
"
      name
      (mapconcat
       (lambda (x)
         (format "* @param %s ${%d:Description of %s}"
                 (car x) (incf idx) (car x)))
       args
       "\n")
      (if (and return-name (not (string-equal "void" return-name)))
          (format " * @return ${%d:%s}\n" (incf idx) return-name)
        "")))))


यह समाधान पूरी तरह से काम करता है, लेकिन सभी आवश्यक कोड के माध्यम से चुगली करने के लिए सिमेंटिक मोड का इंतजार करना पड़ता है। मैं भी अंतहीन लूप में अटक गया है अगर मैं एक चर के बजाय dox <टैब> लिख रहा हूँ। लेकिन इस दुनिया में सब कुछ नहीं हो सकता: D
Rovanion

यह ऊपर से अधिक मतदान किया जाना चाहिए, क्योंकि यह मू-डॉक्सीजेन से अधिक समृद्ध है
एलेजांद्रो एरिकसन

3

बस इस सुविधा को फ़ंक्शन-आर्ग में जोड़ा गया है ।

यदि आपकी रुचि है, तो यहां कोड है। यह CEDET का उपयोग कर रहा है:

(defun moo-doxygen ()
  "Generate a doxygen yasnippet and expand it with `aya-expand'.
The point should be on the top-level function name."
  (interactive)
  (move-beginning-of-line nil)
  (let ((tag (semantic-current-tag)))
    (unless (semantic-tag-of-class-p tag 'function)
      (error "Expected function, got %S" tag))
    (let* ((name (semantic-tag-name tag))
           (attrs (semantic-tag-attributes tag))
           (args (plist-get attrs :arguments))
           (ord 1))
      (setq aya-current
            (format
             "/**
* $1
*
%s
* @return $%d
*/
"
             (mapconcat
              (lambda (x)
                (format "* @param %s $%d"
                        (car x) (incf ord)))
              args
              "\n")
             (incf ord)))
      (aya-expand))))

आपको ऑटो-यस्नीपेट की भी आवश्यकता है । दोनों पैकेज MELPA में उपलब्ध हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.