Często zdarza się, że przeglądam dokumentację polecenia C-h f
, a następnie M-x
natychmiast ją wywołuję.
W tej chwili najkrótszym sposobem, w jaki znalazłem „wywołanie ostatniego polecenia widoku”, jest skopiowanie jego nazwy (z bufora pomocy lub z historii) i przeciągnięcie go do M-x
monitu bufora minibuforów.
Naprawdę chciałbym, aby nazwy poleceń
describe-function
były częścią historii
execute-extended-command
. Więc mógłbym po prostu zrobić M-x M-p RET
.
Jak najłatwiej to zrobić?
documentation
m-x
history-variables
Malabarba
źródło
źródło
smex
ihelm-M-x
? pierwsza z nich znajduje się w MELPA, druga jest zawartahelm
w MELPA.Odpowiedzi:
„Najłatwiejszym sposobem” jest zdefiniowanie własnej wersji
describe-function
i powiązanie jejC-h f
.Weź kod waniliowy i zmień tylko wywołanie na,
completing-read
aby używało tej samej listy historii , której używaM-x
(execute-extended-command
)extended-command-history
.Jak znalazłem oryginalny kod?
C-h f describe-function
,C-h k M-x
,C-h f execute-extended-command
. W kodzie dlaexecute-extended-command
widziałem, że czyta nazwę polecenia za pomocąread-extended-command
i że wywołujecompleting-read
przekazywanieextended-command-history
jakoHISTORY
argument.źródło
Nie mogę podać dokładnej odpowiedzi na twoje pytanie, ale przepływ pracy, który eliminuje potrzebę tego pytania.
Używam
smex
zamiastexecute-extended-command
. Raz w minibuforzesmex
:execute-extended-command
smex-describe-function
smex-find-function
Nie lubię domyślnych powiązań, więc dostosowałem je:
źródło
Pamiętaj, że bardzo łatwo jest wywołać polecenie z bufora Pomocy. Po wpisaniu
C-h f
wystarczy wpisaćM-x M-n RET
. Działa to, ponieważ w nowym buforze Pomocy nazwa polecenia znajduje się na górze bufora pod kursorem iM-n
pobiera ją do minibufora.Jeśli jednak chcesz dodać polecenie do
extended-command-history
każdej wizyty w jego dokumentacji, możesz to zrobić z małą radą:lub używając nowego makra
define-advice
dodanego właśnie w 25.0.50:źródło
(interactive)
?(commandp function)
sprawdza, czy funkcja wyszukana jest interaktywna, ponieważ należy do niej dodawać tylko poleceniaextended-command-history
. Więc jeśli funkcja wyszukiwania nie jest interaktywna, nie jest dodawana doextended-command-history
.Jeśli używasz
helm-M-x
, nie musisz pisać,C-h f
aby sprawdzić dokumentacji poleceń, po prostu użyjC-j
lubC-z
podczas uruchamiania,helm-M-x
aby przełączyć wyświetlanie dokumentacji.Zobacz także funkcje Helm Mx .
źródło