dolist frame-list - 访问每个帧并执行不依赖于帧的内容

时间:2013-08-12 03:26:08

标签: emacs elisp

请访问现有的每一帧并执行不一定与帧本身相关的功能的最佳方法是什么?

(dolist (unrelated-function (frame-list)

  (setq unrelated-function (sound))

  (if (frame-parameter (selected-frame) 'name)

    unrelated-function))) 

我只看到了依赖于帧的示例,例如修改参数等。


编辑:这是一个更新的工作示例:

(defun dolist-test ()
(interactive)
  (dolist (frame (frame-list))
    (switch-to-frame (frame-parameter frame 'name))
    ;; insert additional functions -- e.g., update the frame  
    (message "Frame Visited:  %s"  (frame-parameter frame 'name)) ))

(defun switch-to-frame (frame-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))))))))

2 个答案:

答案 0 :(得分:1)

我会说你做了什么。你的问题是如何做一些与那个框架中的框架无关的东西?如果是,那么是,迭代所有帧。

或者,如果你只想迭代可见帧或可见帧而不是图标化帧,那么就这样做。

我觉得我错过了你真正需要做的事情,但是当需要表达时,是的,迭代帧迭代帧。 ; - )

答案 1 :(得分:1)

(mapc f (frame-list))

E.g。

(mapc (lambda (f) (message "%d" (frame-width f))) (frame-list))

如果你不关心lambda的主体,你可以忽略它。