টাইপ করার সময় কীভাবে স্বয়ংক্রিয়ভাবে ঝরঝরে সি কমেন্ট ব্লক তৈরি করবেন?


17

আপনি যখন কোনও বহু-লাইনের মন্তব্য টাইপ করতে শুরু করেন তখন কিছু কোড সম্পাদক যেমন গ্রহন স্বয়ংক্রিয়ভাবে ঝরঝরে ব্লক তৈরি করে:

এখানে চিত্র বর্ণনা লিখুন

ইমাকগুলিতেও এটি করার কোনও প্যাকেজ বা অন্য কোনও উপায় আছে?

সম্পাদনা: স্পষ্ট করার জন্য: আমি এমন একটি কী-সংমিশ্রণ চাই না যা একটি মন্তব্য ব্লক সন্নিবেশ করিয়েছে। আমি চাইলে কোনও মন্তব্য ব্লকটি স্বয়ংক্রিয়ভাবে তৈরি করা হোক যখন আমি RETপরে টিপব /*


আপনি কি এই একই প্রশ্নটি পরীক্ষা করেছেন? stackoverflow.com/a/6578421/4780877
ইমাস ব্যবহারকারী

@ ইম্যাক্স ব্যবহারকারী: হ্যাঁ তবে তা আমি চাই না। আমি ইতিমধ্যে একটি লিখিত অঞ্চলে মন্তব্য করার জন্য কেবল একটি স্নিপেট বা বৈশিষ্ট্যটি চাই না।
জিয়ার

মন্তব্যের একাধিক লাইনের জন্য ম্যানুয়ালটি দেখুন ।
ড্যান

@ ড্যান: এটি বেশ কাছাকাছি, তবে এটি স্বয়ংক্রিয়ভাবে ক্লোজিংটি সন্নিবেশ করে না*/
জিয়ের

2
@ নামগুলি *লক্ষণগুলি কঠোরভাবে প্রয়োজন হয় না তবে তা খুব সুন্দর।
জিয়ার 21 ই

উত্তর:


7

নীচের কোডটি আমার c-modeবাফারে সংক্ষিপ্ত পরীক্ষার থেকে সূক্ষ্মভাবে কাজ করে :

  • পরে টাইপিং /*, আঘাত M-j, ডিফল্ট জন্য বাঁধাই indent-new-comment-line(এবং ডিফল্ট জন্য বাঁধাই c-indent-new-comment-lineমধ্যে c-mode)। এটি যদি প্রথম মন্তব্যের লাইন হয় তবে সমাপনীকরণের অক্ষরগুলি */স্বয়ংক্রিয়ভাবে inোকানো হবে।
  • উপসর্গটির M-jসাথে আরও কমেন্ট লাইন সন্নিবেশ করিয়ে আরও বেশি বার আঘাত করা *। এটি c-indent-new-comment-line/ indent-new-comment-lineফাংশনগুলির অন্তর্নির্মিত আচরণ । পরীক্ষা করে দেখুন মন্তব্যের একাধিক লাইন ডকুমেন্টেশন।
  • নীচের কোডে একটি অতিরিক্ত নাগেট নিশ্চিত করে যে *প্রতিটি মন্তব্য লাইনের ও মন্তব্যের মধ্যে কমপক্ষে একটি জায়গা রয়েছে is
(defun my-prettify-c-block-comment (orig-fun &rest args)
  (let* ((first-comment-line (looking-back "/\\*\\s-*.*"))
         (star-col-num (when first-comment-line
                         (save-excursion
                           (re-search-backward "/\\*")
                           (1+ (current-column))))))
    (apply orig-fun args)
    (when first-comment-line
      (save-excursion
        (newline)
        (dotimes (cnt star-col-num)
          (insert " "))
        (move-to-column star-col-num)
        (insert "*/"))
      (move-to-column star-col-num) ; comment this line if using bsd style
      (insert "*") ; comment this line if using bsd style
     ))
  ;; Ensure one space between the asterisk and the comment
  (when (not (looking-back " "))
    (insert " ")))
(advice-add 'c-indent-new-comment-line :around #'my-prettify-c-block-comment)
;; (advice-remove 'c-indent-new-comment-line #'my-prettify-c-block-comment)

উদাহরণস্বরূপ, উপরের কোড মূল্যায়নের পর, আমি টাইপিং নিচের পাবেন: /* M-j First comment line M-j Second comment line▮ টাইপিংয়ের শেষে কার্সারের অবস্থান নির্দেশ করে।

/*
 * First comment line
 * Second comment line▮
 */ 

অফসেট মন্তব্য ব্লক পরীক্ষা করা হচ্ছে ..

সেমিকোলনের পরে কার্সার দিয়ে, টাইপিং: /* M-j Test offset commentনীচে দেয়। ▮ টাইপিংয়ের শেষে কার্সারের অবস্থান নির্দেশ করে।

#include<stdio.h>
main() {
  printf("Hello World"); /*
                          * Test offset comment▮  
                          */                                 
}

ধন্যবাদ! কাজ, যে কিন্তু আমি যদি আছে (setq c-default-style "bsd" c-basic-offset 4)আমার মধ্যে init.el, এই ঘটনার: i.imgur.com/KMLx6Ll.gif কোন ধারণা?
জিয়ার

1
(move-to-column star-col-num) (insert "*")উপরের সমাধান থেকে সরানো আপনার জন্য এটি ঠিক করবে। আমি সি তে কোড করি না, তাই কোন ভেরিয়েবলগুলি "bsd"স্টাইল অনুসারে সেট করা হয়েছে তা আমি তদন্ত করে দেখিনি ।
দক্ষ মোদী

Github.com/boogie-org/boogie- Friendss থেকে ড্যাফনি মোডের সাথে এই কোডটি ব্যবহার করে , আমি প্রতিটি নিউলাইনের জন্য `* * than এর পরিবর্তে` / * get পাই `
জ্যাব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.