পেরেডিট মোডে ফর্মটি উপরে এবং নীচে সরান


13

আমি কার্সিভের স্ট্রাকচারাল এডিটিং (ইন্টেলিজ এবং ক্রুসিভের জন্য পেরেডিট-জাতীয় মোড) ব্যবহার করেছি এবং সেখানে একটি দুর্দান্ত কমান্ড পেয়েছি যা মুভ ফর্ম-আপ (এবং ডাউন) বলে।

ফর্ম আপ সরান এটি ( |বিন্দুটি):

(+ 1 |(+ 2 3) 4) => (+ (+ 2 3) 1 4)

এবং নীচে সরানো ফর্মটি সাদৃশ্যপূর্ণ:

(+ 1 |(+ 2 3) 4) => (+ 1 4 (+ 2 3))

এটি কি ইম্যাক্স পেরেডিট-মোডে করা সম্ভব? আমি মনে করি এটি বেসিক পেরেডিট সেটে নেই (অন্তত এটি এই ঠকানো শীটে বর্ণিত নয়)


খুশী হলাম। এখন এটি এমন একটি অপারেশন যা আমি নিজেকে করতে দেখছিলাম।
পাইথননট

2
FWIW, আপনি যে দুটি উদাহরণ দেখান তার জন্য কমপ্লেইন C-M-tএকই জিনিসটি করে। তবে আমি অনুমান করি আপনি কী বোঝাতে চেয়েছিলেন তা হচ্ছে একই ফর্মটি চলতে থাকবে, পরবর্তী যুগের যৌন সম্পর্কের ক্ষেত্রে অদলবদল না করে।
ড্র 3

উত্তর:


13

@ ড্রু যেমন পরামর্শ দিয়েছেন, C-M-tআপনি যা চান তাই করুন। বিধিটি এরকম:

  • দুটি সেক্সের মাঝে পয়েন্ট দিন।
  • টিপুন C-M-t(যা চলমান transpose-sexp)।
  • বাম sexp সবসময় বিন্দু বরাবর ডানদিকে সরিয়ে নেওয়া হয়েছে। এটি খুব গুরুত্বপূর্ণ , অন্যথায় আপনি কোনও শেষ পর্যন্ত বিভ্রান্ত হবেন।

অথবা, আপনি সহজেই ভাবতে পারেন যে এটি ট্রান্সপোসিং হচ্ছে না তবে কেবল এগিয়ে যাওয়ার জন্য আপনাকে যে সেক্সপ সরিয়ে নিতে চান তার পরে আপনাকে পয়েন্ট রাখতে হবে।

যাইহোক, একটি সুবিধাজনক আছে যা হ'ল আপনি যখন বাম সেক্সপ পিছনে স্থানান্তর করতে চান, আপনি একই ব্যবহার করেন C-M-tতবে একটি নেতিবাচক উপসর্গ যুক্তি সরবরাহ করা হয় এবং এটি অসুবিধে হয়। আর একটি বিষয় হ'ল পয়েন্টটি পিছনে স্থানান্তরিত বাম সেক্সপ অনুসরণ করবে না । এই সমস্যাটি সমাধান করার জন্য, আমরা এর বিপরীত সংস্করণ তৈরি করি transpose-sexps:

(defun reverse-transpose-sexps (arg)
  (interactive "*p")
  (transpose-sexps (- arg))
  ;; when transpose-sexps can no longer transpose, it throws an error and code
  ;; below this line won't be executed. So, we don't have to worry about side
  ;; effects of backward-sexp and forward-sexp.
  (backward-sexp (1+ arg))
  (forward-sexp 1))

তারপর, বাঁধাই করা এটি C-M-yযা পরবর্তী C-M-tএবং ডিফল্ট গিয়ে Emacs মধ্যে মুক্ত।

(global-set-key (kbd "C-M-y") 'reverse-tranpose-sexps)

এখানে একটি ডেমো রয়েছে; আপনি লক্ষ্য করবেন যে (MY-SEXP1)সমস্ত সময় এগিয়ে / পিছনে সরানোর জন্য বাম পাশে রয়েছে:

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


5

এটি লম্পি দিয়ে করা সম্ভব , যা এটির একটি উন্নত রূপ paredit-mode

আপনার ব্যবহারের ক্ষেত্রে:

  • w উপরে সরানো
  • s নীচে সরানো

কেবলমাত্র এটি হ'ল কার্সার প্যারেনে থাকতে হবে যা এটি আপনার উদাহরণে রয়েছে:

(+ 1 |(+ 2 3) 4)

এছাড়াও আপনি সঙ্গে একবারে অনেক sexps স্থানান্তর করতে পারেন wএবং sযদি আপনি তাদের একটি অঞ্চলের সাথে চিহ্নিত করুন। আরও তথ্যের জন্য ডকুমেন্টেশন দেখুন ।


;; কেবলমাত্র এই দুটি কমান্ড ব্যবহার করার কোনও উপায় আছে? ;; এমনটি করার সময় আমি "এম-বাম" এবং "এম-ডান" আলগা মনে হচ্ছে: `(অ্যাড-হুক 'ক্লোজার-মোড-হুক (ল্যাম্বদা () (লিসি-মোড 1) (স্থানীয়-সেট-কী (কেবিডি" এম - <আপ> ") 'lispy-পদক্ষেপ-আপ) (স্থানীয় সেট কী (kbd" এম <নিচে> ")' lispy-পদক্ষেপ-ডাউন)))`
Nha

1

এখানে আরও একটি কমান্ড রয়েছে (গ্রন্থাগার থেকে misc-cmds.el) যা আপনি অনুরোধ করেছেন তার থেকে অনেক বেশি কাজ করে। এটি কেবল একটি একক কী ( C-M-tবা যাই হোক না কেন) সাথে আবদ্ধ করুন । উভয় বার এবং পিছনে একটি sexp সরানোর জন্য এটি ব্যবহার করুন।

একটি নেতিবাচক উপসর্গটি পিছন দিকে যেমন স্থানান্তরিত করে transpose-sexpতবে এটি অন্য পশ্চাৎ স্থানান্তর করার জন্য প্রস্তুত পয়েন্টও ছেড়ে দেয়। এবং পুনরাবৃত্তি করার সময়, একটি নেতিবাচক উপসর্গটি কেবল দিকটি সরিয়ে দেয়।

সুতরাং আপনি যদি আদেশটি বাঁধেন , বলুন, C-oতারপরে পয়েন্টের বাম দিকে যে লিঙ্গপথটি ডানদিকে ডানদিকে সরান, তারপরে দুবার ডানদিকে, তারপরে একবার ডানদিকে নিয়ে যান।C-o C-o C-o C-- C-o C-o C-- C-o

একটি সংখ্যাসূচক উপসর্গের আর্গুমেন্টটির প্রভাব কেবল প্রথম ব্যবহারের জন্য, যেমন, পুনরাবৃত্তি করার সময় নয় - পুনরাবৃত্তি করার সময়, চলনটি সর্বদা একটি সময়ে একটি যৌনতা হয়।

(defun reversible-transpose-sexps (arg)
  "Reversible and repeatable `transpose-sexp'.
Like `transpose-sexps', but:
 1. Leaves point after the moved sexp.
 2. When repeated, a negative prefix arg flips the direction."
  (interactive "p")
  (when (eq last-command 'rev-transp-sexps-back) (setq arg  (- arg)))
  (transpose-sexps arg)
  (unless (natnump arg)
    (when (or (> emacs-major-version 24)
              (and (= emacs-major-version 24)  (> emacs-minor-version 3)))
      (backward-sexp (abs arg)) (skip-syntax-backward " ."))
    (setq this-command  'rev-transp-sexps-back)))

(দ্রষ্টব্য: transpose-sexps২৪.৪-এ পরিবর্তিত আচরণ , অতএব সংস্করণ পরীক্ষাটি এখানে। একটি রিগ্রেশন বা একটি দরকারী বৈশিষ্ট্য যুক্ত করে বা সংশোধন করে অন্য কিছু বাগ সম্ভবত দর্শকের চোখে রয়েছে; ;-) আমি এর জন্য ইমাক্স বাগ # 20698 দায়ের করেছি , এখনই)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.