如何在Emacs Lisp中创建列视图?
我正在用Elisp编写自己的模式。它基本上是一个简单的crud应用程序,显示可以通过minibuffer操作的数据行。我想为这些行创建一个类似于emacs包管理器的视图:数据列很好地对齐。实现这种观点的最佳方式是什么 如果您查看您提到的软件包列表函数的代码,您会发现它采用了如何在Emacs Lisp中创建列视图?,emacs,lisp,elisp,Emacs,Lisp,Elisp,我正在用Elisp编写自己的模式。它基本上是一个简单的crud应用程序,显示可以通过minibuffer操作的数据行。我想为这些行创建一个类似于emacs包管理器的视图:数据列很好地对齐。实现这种观点的最佳方式是什么 如果您查看您提到的软件包列表函数的代码,您会发现它采用了软件包菜单模式,该模式源自列表模式 M-xfind功能RETpackage菜单模式RET C-hf列表模式RET 费城人的回答让我走上了正轨。虽然没有教程或简单的示例,但我还是创建了一个。以下是列表模式衍生工具的示例,该衍生
软件包菜单模式
,该模式源自列表模式
- M-x
RETfind功能
RETpackage菜单模式
- C-hf
RET列表模式
- 费城人的回答让我走上了正轨。虽然没有教程或简单的示例,但我还是创建了一个。以下是列表模式衍生工具的示例,该衍生工具具有静态数据,并且可以打印当前列的ID:
(define-derived-mode mymode tabulated-list-mode "mymode" "Major mode My Mode, just a test"
(setq tabulated-list-format [("Col1" 18 t)
("Col2" 12 nil)
("Col3" 10 t)
("Col4" 0 nil)])
(setq tabulated-list-padding 2)
(setq tabulated-list-sort-key (cons "Col3" nil))
(tabulated-list-init-header))
(defun print-current-line-id ()
(interactive)
(message (concat "current line ID is: " (tabulated-list-get-id))))
(defun my-listing-command ()
(interactive)
(pop-to-buffer "*MY MODE*" nil)
(mymode)
(setq tabulated-list-entries (list
(list "1" ["1" "2" "3" "4"])
(list "2" ["a" "b" "c" "d"])))
(tabulated-list-print t))
我一直使用组织模式来完成这类任务 这应该是您开发的起点,因为您已经有了很好的表