helm - thêm helm-Mx vào nguồn helm


7

Tôi có thể thêm một vài nguồn bổ sung để trợ giúp như thế này

(setq helm-mini-default-sources '(helm-source-buffers-list
                                  helm-source-recentf
                                  helm-source-dired-recent-dirs
                                  helm-chrome-source
                                  hgs/helm-c-source-stars
                                  hgs/helm-c-source-repos
                                  hgs/helm-c-source-search
                                  helm-source-buffer-not-found))

Điều cuối cùng tôi cần thêm vào đây là helm-M-x. Tôi chỉ cần thêm tất cả các lệnh vào các nguồn mặc định. Bằng cách này, tôi có thể gọi một hàm duy nhất và tôi có thể đi đến bất cứ thứ gì hoặc tôi có thể gọi bất kỳ lệnh nào.

Nhưng helm-M-xlà một chức năng và mã nguồn của nó không có bất kỳ nguồn nào. Bất kỳ trợ giúp về làm thế nào để đạt được điều này?


Tại sao về việc tạo nguồn lệnh Emacs một mình?
xuchunyang

Câu trả lời:


4
(defvar helm-source-emacs-commands
  (helm-build-sync-source "Emacs commands"
    :candidates (lambda ()
                  (let ((cmds))
                    (mapatoms
                     (lambda (elt) (when (commandp elt) (push elt cmds))))
                    cmds))
    :coerce #'intern-soft
    :action #'command-execute)
  "A simple helm source for Emacs commands.")

;; Try it
(helm :sources helm-source-emacs-commands)

tôi đã cố gắng xây dựng một nguồn khác giống như gist.github.com/ChillarAnand/23119413409f00b7e995#file-mus-el này nhưng nó không hoạt động như mong đợi?
ChillarAnand

Tôi đã thử của bạn, nó hoạt động tốt, nhưng chỉ với histroy của các lệnh Emacs, vì vậy bạn phải sử dụng helm-M-xđể chạy một số lệnh để xây dựng lịch sử đó trước tiên, bởi vì helm không lưu lịch sử qua phiên theo mặc định.
xuchunyang

4

Dựa trên câu trả lời của xuchunyang, tôi đã có thể thêm helm-M-xvào các nguồn trợ giúp.

(defvar helm-source-emacs-commands
  (helm-build-sync-source "Emacs commands"
    :candidates (lambda ()
                  (let ((cmds))
                    (mapatoms
                     (lambda (elt) (when (commandp elt) (push elt cmds))))
                    cmds))
    :coerce #'intern-soft
    :action #'command-execute)
  "A simple helm source for Emacs commands.")

(defvar helm-source-emacs-commands-history
  (helm-build-sync-source "Emacs commands history"
    :candidates (lambda ()
                  (let ((cmds))
                    (dolist (elem extended-command-history)
                      (push (intern elem) cmds))
                    cmds))
    :coerce #'intern-soft
    :action #'command-execute)
  "Emacs commands history")

(setq helm-mini-default-sources '(helm-source-emacs-commands-history
                                  helm-source-emacs-commands))

Tuyệt vời, điều này giúp tôi rất nhiều cho helm-for-files.
ReneFroger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.