আপনি যদি পুরো ইমাস জুড়ে এই আচরণটি চান, তবে এটি ব্যবহার করে এটি অর্জন করা তুচ্ছ হবে key-translation-map
, এই উদ্দেশ্যে বিশেষত প্রদত্ত একটি কীম্যাপ ব্যবহার করে । এটি কেবলমাত্র কয়েকটি নির্দিষ্ট মোডে ব্যবহার করতে চাইলে কিছুটা জটিল হয়। আমি এখন পর্যন্ত এটির সবচেয়ে ভাল উপায়টি খুঁজে পেয়েছি একটি সংক্ষিপ্ত মোড সংজ্ঞায়িত করা যা কোনও প্রদত্ত কীম্যাপ অনুসারে অনুবাদ সম্পাদন করে এবং তারপরে প্রতিটি বড় মোডের সাথে আপনি যে ছোট্ট মোডটি প্রয়োগ করতে চান এটি সক্রিয় করতে একটি হুক যুক্ত করুন ।
এখানে ছোটখাটো মোড সংজ্ঞা দেওয়া আছে। swap-braces.el
এটি আপনার লোডের পথে কোথাও একটি ফাইলের মধ্যে ফেলে দিন।
;;; swap-braces.el - a minor mode to swap square and curly braces
;;; Installation:
;; Drop it in your load path and (require 'swap-braces).
;; Possibly also (add-hook 'foo-mode-hook 'swap-braces-mode).
;;; Commentary:
;; The swap function explicitly instructs Linum to schedule an update,
;; if Linum mode is enabled; otherwise, Linum does not automatically
;; update while Swap-Braces mode is enabled.
;; This seems like it should not be necessary, and I'm uncertain whether
;; it has greater implications regarding interaction between this mode
;; and others.
;; (That is, it makes me worry that something about how I've implemented
;; this makes it screw up other modes using post-command-hook. Caveat user!)
;;; Author
;; Aaron Miller (me@aaron-miller.me)
(setq swap-braces-map (make-sparse-keymap))
(define-key swap-braces-map (kbd "{") "[")
(define-key swap-braces-map (kbd "}") "]")
(define-key swap-braces-map (kbd "[") "{")
(define-key swap-braces-map (kbd "]") "}")
(define-minor-mode swap-braces-mode
"When active, swap square braces and curly braces, so that e.g. pressing [
elicits '{', and S-[ elicits '['.
The keymap `swap-braces-map' defines this mode's behavior. It is strongly
recommended that you do not define keys in this map which are not self-
inserting characters; the resulting behavior is indeterminate, but almost
certainly not what you intended."
:init-value nil
:lighter " [{"
(if swap-braces-mode
(add-hook 'post-command-hook
'swap-braces-mode-swap)
(remove-hook 'post-command-hook
'swap-braces-mode-swap)))
(defun swap-braces-mode-swap ()
;; this worries me
(if (and (boundp 'linum-mode)
(not (eq nil linum-mode)))
(linum-schedule))
(when (and (eq (char-before) last-command-event)
(not (window-minibuffer-p (selected-window))))
(let* ((translation (lookup-key swap-braces-map (string (char-before)))))
(if (stringp translation)
(progn
(backward-delete-char 1)
(insert translation))))))
(provide 'swap-braces)
এটি নিখুঁত নয়; লিনাম-মোড সম্পর্কিত সাবধানবাণীগুলি নোট করুন, এবং এই অদ্ভুত আচরণটি অন্যদের উপর এই মোডের প্রভাব সম্পর্কে বোঝাতে পারে যা পোস্ট-কমান্ড-হুক ব্যবহার করে। আমি এই জাতীয় বেশ কয়েকটি মোড ব্যবহার করি এবং পরীক্ষার সময় কোনও সমস্যা দেখিনি (লিনাম আপডেট না করে) তবে আপনার মাইলেজটি ভিন্ন হতে পারে, তাই সচেতন হন। (অদ্ভুতভাবে যথেষ্ট, পোস্ট-স্ব-sertোকানো-হুক ব্যবহারের পরিবর্তে এখানে কোনও পার্থক্য নেই; আমি পোস্ট-কমান্ড-হুক স্থির করেছি কারণ পোস্ট-স্ব-sertোকানো হুকটি ইমাস 24 এর সাথে দৃশ্যত নতুন, এবং এটি আচরণে কোনও পার্থক্য দেয় না behavior পিছনে সামঞ্জস্যতা ত্যাগ মূল্য।)
তারপরে, আপনার সূচনা কোডের কোথাও (require 'swap-braces)
; এখন থেকে, আপনি এর সাথে অদলবদল আচরণ সক্রিয় করতে পারেন M-x swap-braces-mode
।
অবশেষে, একটি প্রধান মোডের সাথে গৌণ মোডটি সক্রিয় করতে, এটি প্রধান মোডের লোড হুকের সাথে যুক্ত করুন। আপনি যে প্রধান মোডটি ব্যবহার করছেন তার নাম যদি 'ফু-মোড' হয়, তবে আপনি নিম্নলিখিতটি আপনার প্রারম্ভিককরণের কোডটিতে যুক্ত করতে চান:
(add-hook 'foo-mode-hook 'swap-braces-mode)
স্বাদে সামঞ্জস্য করুন; আপনার ক্ষেত্রে, এটি সম্ভবত বলা হবে latex-mode-hook
, তবে এটি নিশ্চিত করার জন্য মোডের ডকুমেন্টেশন পরীক্ষা করুন।
শুধুমাত্র নির্বাচিত উইন্ডোটি মিনিফার না হলে অনুবাদ প্রয়োগ করতে 2013-10-09-এ সম্পাদিত; মন্তব্য দেখুন।
linum-mode
?