Czy istnieje tryb przeglądania utraty naciśnięcia klawisza w czasie rzeczywistym?

17

C-h lpokazuje bufor pomocy na wypadek utraty, który pokazuje ostatnie naciśnięcia klawiszy. Naciśnięcie przycisku powoduje gjego cofnięcie, powodując aktualizację. Niestety włączenie auto-revert-modenie powoduje ciągłej aktualizacji.

Byłoby miło, gdybym mógł otworzyć inne okno lub ramę i wyświetlić straty w czasie rzeczywistym, aby pokazać widzom, co piszę. Można to również wykorzystać do parowania w sesji tmux / tmate. Niektóre filmy online mają coś takiego, ale wydają się być aplikacjami zewnętrznymi i specyficznymi dla systemu operacyjnego.

Czy istnieje fajny sposób, aby wyświetlać naciśnięcia klawiszy w czasie rzeczywistym, gdy pojawiają się one w Emacsie?

zdeterminowany
źródło

Odpowiedzi:

19

Odpowiadając na ostatnie pytanie w poście: możesz uzyskać dziennik automatycznych aktualizacji poleceń i naciśnięć klawiszy, korzystając z https://github.com/lewang/command-log-mode, który jest również dostępny w MELPA - domyślnie pokazuje tylko nietrywialne polecenia (więc nie można wstawiać ani przesuwać kursorów). To wygląda tak:

wprowadź opis zdjęcia tutaj

Joost Diepenmaat
źródło
9

Tak. Istnieje pakiet o nazwie mwe-log-commands, który jest dostępny w MELPA .

Wystarczy uruchomić, M-x mwe:log-keyboard-commandsaby rozpocząć nagrywanie, a następnie M-x mwe:open-command-log-bufferotworzy bufor, który pokazuje wpisane polecenia w czasie rzeczywistym.

Command-Log-Mode jest nowszym i bardziej aktywnie rozwijanym rozwidleniem mwe-log-commands, więc może być lepiej w dzisiejszych czasach.

sanityinc
źródło
7

Do zaktualizowania bufora strat można użyć haka po wydaniu polecenia. Poniższy fragment kodu robi to za Ciebie (lokalnie w buforze), ale zakłada, że ​​zmieniłeś nazwę bufora strat na „Lossage” (więc w ten sposób możesz nadal otwierać inne bufory pomocy).

(defun update-lossage-buffer ()
  "Update the \"Lossage\" buffer.
For this to work, visit the lossage buffer, and call
M-x rename-buffer Lossage RET"
  (save-excursion
    (let ((b (get-buffer "Lossage")))
      (when (buffer-live-p b)
        (with-current-buffer b
          (revert-buffer nil 'noconfirm))))))
(add-hook 'post-command-hook #'update-lossage-buffer nil 'local)
Malabarba
źródło
3

Bufor pomocy na wypadek utraty nie jest powiązany z plikiem na dysku. Dlatego tryb automatycznego przywracania nie działa. Można użyć pseudo-alternatywy w czasie rzeczywistym, (open-dribble-file "FILE")która zapisuje wszystkie naciśnięcia klawiszy do PLIKU. Użycie auto-revert-tail-modebuforu PLIK może odzwierciedlać naciśnięcia klawiszy.

Innym sposobem byłoby porada self-insert-command(i niektóre klucze prefiksów), aby echo w buforze.

Vamsi
źródło