Helm - Hinzufügen von Helm-Mx zu Steuerquellen

7

Ich bin in der Lage, ein paar zusätzliche Quellen zu diesem Ruder hinzuzufügen

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

Das Letzte, was ich hinzufügen muss, ist helm-M-x. Ich muss nur alle Befehle zu Standardquellen hinzufügen. Auf diese Weise kann ich eine einzelne Funktion aufrufen und zu allem gehen oder einen beliebigen Befehl aufrufen.

Ist helm-M-xaber eine Funktion und ihr Quellcode hat keine Quellen. Hilfe, wie dies erreicht werden kann?

ChillarAnand
quelle
Warum sollten Sie die Emacs-Befehlsquelle selbst erstellen?
Xuchunyang

Antworten:

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)
Xuchunyang
quelle
Ich habe versucht, eine andere Quelle wie diese zu erstellen. gist.github.com/ChillarAnand/23119413409f00b7e995#file-helm-el, aber es hat nicht wie erwartet funktioniert?
ChillarAnand
Ich habe es bei Ihnen versucht, es funktioniert einwandfrei, aber nur für die Histroy von Emacs-Befehlen. Sie müssen also helm-M-xeinige Befehle ausführen, um diese Historie zuerst zu erstellen, da das Ruder die Historie standardmäßig nicht sitzungsübergreifend speichert.
Xuchunyang
4

Basierend auf der Antwort von xuchunyang konnte ich Steuerquellen hinzufügen 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))
ChillarAnand
quelle
Großartig, das hilft mir sehr bei der Bearbeitung von Dateien.
ReneFroger