2012-06-30 33 views
13

Tôi đang viết chế độ của riêng mình trong Elisp. Về cơ bản nó là một ứng dụng crud đơn giản hiển thị các hàng dữ liệu có thể được điều khiển thông qua minibuffer. Tôi muốn tạo chế độ xem cho các hàng này trông giống như trình quản lý gói emacs: các cột dữ liệu được căn chỉnh độc đáo. Cách tốt nhất để thực hiện chế độ xem như vậy là gì?Cách tạo chế độ xem cột trong Emacs Lisp?

Trả lời

18

Câu trả lời từ Phils đã cho tôi đi đúng hướng. Không có hướng dẫn hoặc ví dụ đơn giản ở bất cứ nơi nào mặc dù, vì vậy tôi tạo ra một. Dưới đây là một ví dụ về một phái sinh lập bảng danh sách chế độ trong đó có dữ liệu tĩnh và có thể in ID của cột hiện tại:

(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)) 
1

Nếu bạn xem mã cho hàm liệt kê gói mà bạn đề cập, bạn sẽ thấy mã đó sử dụng package-menu-mode có nguồn gốc từ tabulated-list-mode.

  • M-xfind-functionRETpackage-menu-modeRET
  • C-hftabulated-list-modeRET
0

tôi sử dụng org-mode cho các loại hình công việc mọi lúc.

Đây phải là điểm khởi đầu cho sự phát triển của bạn, bởi vì bạn đã có bảng đẹp.

Các vấn đề liên quan