কোড মন্তব্যের জন্য কি স্বয়ংক্রিয়ভাবে পূর্ণ-অনুচ্ছেদের মোড রয়েছে?


18

আমি টাইপ করার সময় সর্বদা প্যারাগ্রাফগুলি পূরণ করার জন্য একটি ছোটখাটো মোডের সন্ধান করছি ( aggressive-indent-modeইনডেন্টেশনের জন্য যা হয় তার অনুরূপ )। কেবল মন্তব্যগুলি পূরণ করার জন্য এটি যথেষ্ট স্মার্ট হওয়া দরকার (এবং ভাষার উপর নির্ভর করে স্ট্রিং)।

কিছু জিনিস যা আমি চেষ্টা করেছি তা হ'ল:

  • auto-fill-mode আপনি নতুন অনুচ্ছেদ টাইপ করার সময় স্বয়ংক্রিয়ভাবে পূরণ হয় তবে আপনি অনুচ্ছেদ সম্পাদনা করার সময় পুনরায় পূরণ করবেন না।

  • refill-mode অনুচ্ছেদে ক্রমাগত পুনরায় ভর্তি করে তবে কোডটি অনুচ্ছেদে পাশাপাশি মন্তব্যে মুড়িয়ে দেওয়ার চেষ্টা করে।

  • আমি হুকটি যুক্ত fill-paragraphকরার চেষ্টা করেছি after-change-functionsতবে এটি পূর্বাবস্থায় ফিরে আসে এবং প্রচুর পরিমাণে অন্যান্য জিনিস রয়েছে (এটি সম্ভবত সমস্ত স্থিরযোগ্য তবে কিছু প্রচেষ্টা নিবে)।

আরও ভাল ধারণা?


6
অন্যদিকে: গ্লিক্সটাইন রাইটিং জিএনইউ ইমাক্স এক্সটেনশনের chapter অধ্যায়ে আপনি কীভাবে কার্যকারিতা কার্যকর করতে পারবেন তা চালিয়ে যায়। এলিসপ সহ শিখতে / অনুশীলনের দুর্দান্ত সুযোগ হতে পারে।
ড্যান

আমি স্বতঃপূর্ণ-অনুচ্ছেদে (স্বতঃপূর্ণ সক্ষম সহ) সন্ধান করছি org-mode, তবে আপনি পুনরায়
বাক্স

উত্তর:


4

আমি এই কার্যকারিতাটি প্রয়োগের একটি ন্যূনতম উপায় নিয়ে এসেছি: কেবল স্পেস বারকেও কল করুন (fill-paragraph)ind

(defun fill-then-insert-space ()
  (interactive)
  (fill-paragraph)
  (insert " "))
(global-set-key (kbd "SPC") #'fill-then-insert-space)

বেশ কয়েকটা ক্যাভেট রয়েছে যা আমি এতক্ষণ পেরিয়ে গিয়েছি:

  1. elisp-mode(সম্ভবত অন্যরা) কল করার সময় কিছু অভিনব কোড পূরণ করে fill-paragraph, এটি আপনি যা চান তা হতে পারে বা নাও পারে। কোনও মন্তব্য বা ডক্ট্রিংয়ে পয়েন্ট থাকলে পরীক্ষার মাধ্যমে সম্ভবত এটি সংশোধন করা যেতে পারে তবে আমি কীভাবে এটি করব তা নিশ্চিত নই।

  2. আপনি কখনও কখনও সহজেই একাধিক স্পেস প্রবেশ করতে পারবেন না (কারণ fill-paragraphকোনও পেছনের জায়গাগুলি হরণ করে)। যেহেতু স্পেস-বারটি এখন এমনভাবে কাজ just-one-spaceকরে যা সম্ভবত এই বাঁধাইটির সাথে প্রতিস্থাপন করা ঠিক আছে (insert " ")

আমি এই কার্যকারিতা ধারণকারী একটি ছোটখাট-মোড, এটা উপলব্ধ প্রণীত GitHub Melpa বা প্যাকেজের মধ্যে aggressive-fill-paragraph


আমি এটাকে ব্যঙ্গাত্মক বলে মনে করি যা aggressive-fill-paragraphতুলনায় কম আক্রমণাত্মক refill-mode, যা বেশ অকেজো হয়ে উঠার জন্য আক্রমণাত্মক (যেমন আপনি > রিফিল-মোড পুনরায় সাজানোর সামগ্রী ছাড়া কাউকে উদ্ধৃতিও দিতে পারবেন না : এমনকি আপনি প্রতিস্থাপনের জন্য রিজেক্সপস ব্যবহার করলেও)
হাই-অ্যাঞ্জেল

1

আপনি যদি রিফিল-মোডটি কীভাবে আচরণ করে তা পছন্দ করেন (আমি এটি করি না: পি) তবে এটি যখন আচরণ করে তা নয়, যখন আপনি সঠিক পরিস্থিতিতে না থাকেন তখন এটিকে প্রতিরোধ করে তুলনামূলকভাবে সহজ হওয়া উচিত

উদাহরণ স্বরূপ

(defvar plop/refill-enabler-function nil)

(defun plop/region-in-comment (beg end)
  ;; should really be comment-only-p, but that seems really broken for me
  (not
   (loop for c from beg to end
      if (not (eq 'font-lock-comment-face (get-char-property c 'face)))
      return t)))

(defun plop/refill-after-change-function (beg end len)
  (unless undo-in-progress
    (when (and plop/refill-enabler-function
               (funcall plop/refill-enabler-function beg end))
      (setq refill-doit end))))

(defun plop/install-refill-hack ()
  (if refill-mode
      (progn
        (add-hook 'after-change-functions 'plop/refill-after-change-function nil t)
        (remove-hook 'after-change-functions 'refill-after-change-function t))
    (progn
      (remove-hook 'after-change-functions 'plop/refill-after-change-function t))))

(defun plop/refill-hook ()
  (set (make-local-variable 'plop/refill-enabler-function)
       #'plop/region-in-comment)
  (add-hook 'refill-mode-hook 'plop/install-refill-hack t t)
  (refill-mode))

(add-hook 'some-hook 'plop/refill-hook)

মূলত এটি সেই ফাংশনটি সরিয়ে দেয় যা থেকে রিফিলটি ট্রিগার করে after-change-functionsএবং এটির সাথে এটি প্রতিস্থাপন করে যা এটি একই জিনিসটি করার আগে আমরা একটি মন্তব্যে রয়েছি কিনা তা পরীক্ষা করে দেখবে।


দেখতে শুরু করার মতো মনে হচ্ছে, তবে এখনও ঠিক সঠিক নয়: কোনও মন্তব্য সম্পাদনার সময় যদি কোনও রিফিল ট্রিগার করা হয় তবে এটি পার্শ্ববর্তী কোড সহ পুরো অনুচ্ছেদটিকে পুনরায় পূরণ করে। অনুচ্ছেদের সীমাটি যথাযথভাবে সংজ্ঞায়িত না করার জন্য এটি পার্শ্ববর্তী মোডের দোষ হতে পারে, তবে আমি সন্দেহ করি: আমি ইমাস লিস্প মোডে চেষ্টা করেছি, যা আমি অনুমান করি যে বইটি জিনিসগুলি করেছে।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

ভাল, সে কারণেই আমি বলেছিলাম যে আমি পছন্দ করি না refill-mode:) সমস্যাটি এর পরিবর্তে refill-modeব্যবহার fill-regionকরে fill-paragraph, এভাবে সম্মানের ক্ষমতা হারাতে fill-paragraph-functionএবং জিনিসগুলিকে সম্ভাব্য অগোছালো করে তোলা
সিগমা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.