سؤال

في GNU emacs ، هل هناك طريقة جيدة لتغيير أمر التعليقات في وضع C

/* This is a comment which extends  */
/* over more than one line in C. */

ل

/* This is a comment which extends
   over more than one line in C. */

؟ لقد حاولت

(setq comment-multi-line t)

لكن هذا لا يساعد. هناك قسم عن التعليقات متعددة الخطوط في دليل EMACS, ، لكنه لا يذكر أي شيء.

هل كانت مفيدة؟

المحلول

منذ Emacs 21 ، كانت هناك وحدة تسمى 'newcomment, ، التي لها أنماط تعليقات مختلفة (انظر المتغير 'comment-styles. يقترب هذا الإعداد مما تريد:

(setq comment-style 'multi-line)

(ملاحظة: ربما يجب عليك إجراء هذا الإعداد 'c-mode-hook).

ومع ذلك ، فإن أيا من الإعدادات تجعل التعليقات تبدو مثل ما تريد.

أسهل طريقة رأيتها للحصول على ما تريد هي إضافة هذا الاختراق:

(defadvice comment-region-internal (before comment-region-internal-hack-ccs activate)
  "override 4th argument to be just spaces"
  (when (eq major-mode 'c-mode)  ; some condition here
    (let ((arg (ad-get-arg 4)))
      (when arg
        (ad-set-arg 4 (make-string (length arg) ?\ ))))))

الإعدادات الحالية ل comment-style بادئة دائمًا خطوط التعليق مع " *" (إن لم يكن الكامل " / *").

إذا لم يكن لديك emacs 21 ، أفترض أنه يمكنك ببساطة التنزيل newcomment.el من المستودع. لا أعرف ما إذا كان يعمل كما هو في الإصدارات السابقة من EMAC ، ولكن قد يكون الأمر يستحق اللقطة ، على الرغم من أن ترقية EMACs سيكون حلاً أفضل.

اختراق بلدي يكسر 'uncomment-region. سيكون الإصلاح المناسب هو التغيير 'comment-padright. سيستغرق ذلك المزيد من البحث حتى لا يكسر أشياء أخرى. الاختراق أعلاه يغير فقط السلوك في 'c-mode (اضبط الشرط حسب رغبتك).

نصائح أخرى

الأقرب الذي يمكن أن أجده مع دعم التعليق المدمج هو إذا قمت بتعيين comment-style ل multi-line, ، والتي ستنتج هذا:

/* This is a comment which extends
 * over more than one line in C. */

إذا لم يكن ذلك قريبًا بما فيه الكفاية ، ألق نظرة على newcomment.el وتحديد وظائف التعليق الخاصة بك حسب الاقتضاء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top