นี่คือคำสั่งอื่น (จากไลบรารีmisc-cmds.el
) ที่ทำสิ่งที่คุณร้องขอ เพียงแค่ผูกมันไว้กับคีย์เดียว ( C-M-t
หรืออะไรก็ตาม) ใช้เพื่อย้าย sexp ทั้งไปข้างหน้าและข้างหลังซ้ำ ๆ
คำนำหน้าเชิงลบแย้ง transwards ย้อนหลังเช่นtranspose-sexp
แต่ก็ยังปล่อยให้จุดพร้อมที่จะทำอีกขนย้ายย้อนหลัง และเมื่อทำซ้ำคำนำหน้าเชิงลบแย้งเพียงแค่พลิกทิศทาง
ดังนั้นหากคุณผูกคำสั่งให้พูดC-o
แล้วย้าย sexp ที่อยู่ทางซ้ายของจุดไปทางขวาสามครั้งจากนั้นไปทางซ้ายสองครั้งจากนั้นไปทางขวาหนึ่งครั้งC-o C-o C-o
C--
C-o C-o
C--
C-o
คำนำหน้าตัวเลข arg มีผลเฉพาะกับการใช้งานครั้งแรกเท่านั้นคือไม่ใช่เมื่อทำซ้ำ - เมื่อทำซ้ำการเคลื่อนไหวจะเป็น sexp ครั้งละหนึ่งครั้ง
(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
เปลี่ยนแปลงใน 24.4 ดังนั้นการทดสอบเวอร์ชันที่นี่ก่อนหน้า 24.4 จุดสิ้นสุดลงในตำแหน่งที่ถูกต้องเพื่อดำเนินการต่อ (เช่นทำซ้ำ) เริ่มต้นด้วย 24.4 จุดอยู่ในตำแหน่งที่ไม่ถูกต้องสำหรับสิ่งนั้น การถดถอยหรือเพิ่มคุณสมบัติที่มีประโยชน์หรือแก้ไขข้อผิดพลาดบางอย่างน่าจะอยู่ในสายตาของคนดู ;-) ฉันได้ยื่นข้อผิดพลาด Emacs # 20698เพียงแค่ตอนนี้)