helm-helm-Mxをhelmソースに追加する


7

このようにヘルムに追加のソースをいくつか追加できます

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

これに追加する必要がある最後のものはhelm-M-xです。すべてのコマンドをデフォルトのソースに追加するだけです。これにより、単一の関数を呼び出すことができ、何にでも行くことができます。または、任意のコマンドを呼び出すことができます。

しかしhelm-M-x、それは関数であり、そのソースコードにはソースがありません。これを達成する方法について何か助けはありますか?


自分でEmacsコマンドソースを作成するのはなぜですか?
xuchunyang 2015年

回答:


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)

このgist.github.com/ChillarAnand/23119413409f00b7e995#file-helm-elのように別のソースをビルドしようとしましたが、期待どおりに動作しませんでしたか?
ChillarAnand、2015

私はあなたを試してみましたが、それはうまくいきますが、Emacsコマンドのhelm-M-x歴史のために、最初にその履歴を構築するためにいくつかのコマンドを実行する必要があります。helmはデフォルトでセッション全体の履歴を保存しないためです。
xuchunyang 2015

4

xuchunyangの回答に基づいてhelm-M-x、ヘルムソースに追加することができました。

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

これは、ファイルのヘルムに非常に役立ちます。
ReneFroger、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.