এলিস্প কোড ফর্ম্যাট (prettifies) কমান্ড


21

ধরা যাক আমার একটি ফাংশন রয়েছে যা নীচের মত দেখাচ্ছে (যেমন এলিসপ আউটপুট প্রিন্ট করার সময় প্রায়শই ঘটে থাকে)।

(defun my-example-function () (let ((a (do-something)) (b (do-something))) (setq someone me) (with-current-buffer b (do-that (or this (and that those))) (format "%s" a))))

আমি একটি কমান্ড চাই যা একটি মানবকে কিছু লিখতে পারে, যেমন নীচের মত করে।

(defun my-example-function ()
  (let ((a (do-something))
        (b (do-something)))
    (setq someone me)
    (with-current-buffer b
      (do-that (or this (and that those)))
      (format "%s" a))))

আমি বুঝতে পারি যে এলিসপ কোডের একটি টুকরোটি ফর্ম্যাট করার একাধিক উপায় রয়েছে এবং বিভিন্ন মানুষ বিভিন্নভাবে এটি করে। তদুপরি, আমি বুঝতে পারি এটি কিছুটা সাবজেক্টিভ। তবে নিয়মগুলির একটি সেট নিয়ে আসা মোটামুটি সহজ হওয়া উচিত যা কোডের ফলাফল দেয় যা কমপক্ষে শালীন।

আমি আসলে কিছুক্ষণ আগে নিজেই এটি করার চেষ্টা করেছি, তবে আমি বুঝতে পেরেছিলাম যে চাকাটি পুনঃস্থাপনের আগে জিজ্ঞাসা করা ভাল।

দ্রষ্টব্য, আমি পিপি ফাংশন সম্পর্কে সচেতন , তবে এটি সেখানে যথেষ্টভাবে আসে না:

(defun my-example-function nil
  (let
      ((a
        (do-something))
       (b
        (do-something)))
    (setq someone me)
    (with-current-buffer b
      (do-that
       (or this
           (and that those)))
      (format "%s" a))))

4
এটা কি সাহায্য করে? এলিস্প ফর্ম্যাটিং
লুক

বিন্যাস অগত্যা সাবজেক্টিভ। আমি নিশ্চিত না যে আপনি এর চেয়ে ভাল সংস্করণের চেয়ে আরও ভাল কিছু করতে পারবেন pp
shosti

@ কিঙ্ক ধন্যবাদ, এটি অবশ্যই প্রাসঙ্গিক।
মালবারবা

উত্তর:


10

এখানে লিপি কীভাবে আমার জন্য পুনরায় ফর্ম্যাট করেছেন ( Mএক্সপ্রেশনটির উভয় প্রান্তে টিপে ):

(defun my-example-function ()
  (let ((a (do-something))
        (b (do-something)))
    (setq someone me)
    (with-current-buffer b (do-that (or this (and that those)))
                         (format "%s" a))))

এ থেকে আপনি যে ফর্ম্যাটটি নির্দিষ্ট করেছেন সেটি পেতে, টিপুন qk C-m [


(local-set-key (kbd "s-8") #'lispy-multiline) (local-set-key (kbd "s-*") #'lispy-oneline)
গ্রেটকে

8

অন্যরা যেমন মন্তব্যে পরামর্শ দিয়েছেন, "ফর্ম্যাট করা" বলতে বিভিন্ন জিনিস বোঝাতে পারে।

প্রচলিত প্রচলিত ইন্ডেন্টেশনের জন্য , শীর্ষ স্তরের সেক্সপটির অভ্যন্তরে কোথাও কার্সারটি ব্যবহার করে C-M-q( indent-pp-sexpলিস্প মোডে কমান্ড ) ব্যবহার করে চেষ্টা করুন যা আপনি পুনরায় ইনডেন্ট করতে চান (যেমন defunসেক্সপ)।

না, এটি "স্বয়ংক্রিয়" ইন্ডেন্টেশন নয়, এটি এটি ব্যবহার করার অভ্যাসে পরিণত হতে পারে। ;-)

ইন্ডেন্টেশন ব্যতীত অন্যান্য জিনিসগুলির জন্য আপনাকে নিজে এটি করতে হবে বা আপনার নিজের "ফরম্যাটিং" কমান্ড (গুলি) রোল করতে হবে বা বিদ্যমান কিছু সন্ধান করতে হবে।

ইমাকস ম্যানুয়াল, নোড মাল্টি-লাইন ইন্ডেন্ট এবং এলিসপ ম্যানুয়াল, নোডও দেখুন Mode-Specific Indent


3
ধন্যবাদ, আমি এলিস্প ইন্ডেন্টেশন দিয়ে বেশ খুশি, আমি এমন কিছু সন্ধান করছি যা কখন লাইনগুলি ভাঙবে তা জানে। :-) এবং হ্যাঁ আমি বুঝতে পারি এটি বিষয়ভিত্তিক। :-(
মালবারবা

M-q( fill-paragraph) প্রসঙ্গের উপর নির্ভর করে কখনও কখনও ইমাস-লিস্প মোডে লাইন-ব্রেকিংয়ের জন্য দরকারী হতে পারে। পাশাপাশি কিন্তু আপনি সম্ভবত প্রান্তিককরণ খুঁজছেন ...
ড্রিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.