【问题标题】:Emacs list file buffers in clickable textEmacs 以可点击文本列出文件缓冲区
【发布时间】:2014-12-08 23:41:06
【问题描述】:

我是 emacs lisp 的新手。今天我想写一个emacs lisp函数来列出我打开的文件 (即与文件相关的缓冲区)并使它们可点击,但我在理解插入按钮功能时遇到问题。

这是我的代码。

(require 'dash)
(require 'button)
(defun insert-button-for-buffer (buf)
 (insert-button (buffer-name buf)
            'action  (lambda (x) (display-buffer (get-buffer buf)))))
(-map 'insert-button-for-buffer
  (-filter (lambda (buf) (buffer-file-name buf))
           (buffer-list)))

这段代码不起作用。我猜(显示缓冲区(get-buffer buf))。 lambda 函数中的变量只是没有得到正确的值。我知道 Overlay 中 lambda 中的 x 参数。但是如何从 x 变量中获取缓冲区名称?或者有没有更好的方法来实现这个目标?这个问题可能看起来很愚蠢。希望大家帮忙。

【问题讨论】:

    标签: emacs lambda elisp


    【解决方案1】:

    你中了一个好的 ol' 词法绑定陷阱。 这是一个修复:

    (require 'button)
    (defun insert-button-for-buffer (buf)
      (insert-button
       (buffer-name buf)
       'action
       `(lambda (x) (display-buffer ,(get-buffer buf))))
      (insert "\n"))
    (mapc #'insert-button-for-buffer
          (cl-remove-if-not
           #'buffer-file-name
           (buffer-list)))
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多