emacs यदि "xyz" नाम की फ़्रेम मौजूद है, तो उस फ्रेम पर स्विच करें




elisp (2)

क्या कोई मुझे फ़ंक्शन के साथ हाथ दे सकता है जो पता लगाता है कि क्या "xyz" नाम की फ़्रेम मौजूद है, और यदि ऐसा है, तो उस फ्रेम पर स्विच करें मैं प्रत्येक फ्रेम को एक उपयोगकर्ता-परिभाषित नाम देने के लिए frame-cmds का उपयोग कर रहा हूं: http://www.emacswiki.org/emacs/frame-cmds.el

मुझे लगता है कि यह एक बफर के समान है, लेकिन मुझे Google पर कुछ नहीं मिल रहा है यहां बफर फ़ंक्शन है:

(defun buffer-exists (bufname)
    (not (eq nil (get-buffer bufname))))

(defun lawlist-switch-to-buffer-xyz ()
(interactive)
    (if (buffer-exists "xyz")
        (switch-to-buffer "xyz") ))

यहां एक अर्ध संबंधित पोस्ट है: https://superuser.com/questions/358037/emacsclient-create-a-frame-if-a-frame-does-not-exist

संपादित करें (15 सितंबर 2014): frame-to -बाउंड वैरिएबल बनाने के लिए फ़ंक्शन ido-switch-frame को संशोधित किया गया, और message हटा दिया। get-a-frame get-frame-name get-a-frame और ड्रॉ एडम्स द्वारा लिखी गई get-frame-name रूप में पिछला संपादन को हटा दिया गया है, जब select-frame-set-input-focus के साथ संयोजन के रूप में उपयोग किया जाता है - नीचे उसका उत्तर देखें।

(defun ido-switch-frame ()
(interactive)
  (when (not (minibufferp))
    (let* (
        (frames (frame-list))
        (frame-to (ido-completing-read "Select Frame:  "
          (mapcar (lambda (frame) (frame-parameter frame 'name)) frames))))
      (catch 'break
        (while frames
          (let ((frame (car frames)))
            (if (equal (frame-parameter frame 'name) frame-to)
              (throw 'break (select-frame-set-input-focus frame))
              (setq frames (cdr frames)))))))))

अधिक सुरुचिपूर्ण समाधान हो सकते हैं लेकिन यह काम पूरा हो जाता है:

(defun switch-to-frame (frame-name)
  (interactive "sFrame name:")
  (let ((frames (frame-list)))
    (catch 'break
      (while frames
        (let ((frame (car frames)))
          (if (equal (frame-parameter frame 'name) frame-name)
              (throw 'break (select-frame-set-input-focus frame))
            (setq frames (cdr frames))))))))

  1. "एक फ़ंक्शन" के लिए आपका अनुरोध लिखें जो "xyz" नाम की फ़्रेम मौजूद है या नहीं: आपके पास पहले से ही ऐसा है, क्योंकि आप कहते हैं कि आप फ्रेम-सीएमडी.एल. का उपयोग कर रहे हैं, जिसके लिए फ़्रेम- fns.el --- फ़ंक्शन की आवश्यकता get-a-frame सिर्फ यही है

  2. Icicles मल्टी-कमांड icicle-select-frame प्रदान करता है, जिससे आपको पूरा होने के आधार पर नाम से फ्रेम चुनने पड़ते हैं।





elisp