Поступово вивчайте зв'язки клавіш, надані AUCTeX


11

Якщо я це роблю M-x forward-char, Emacs дає дуже корисне повідомлення

You can run the command "forward-char" with C-f.

З огляду на той факт , що Emacs може знайти все LaTeX поєднання клавіш в файлі latex.elпри LaTeX-math-defaultумови , за AucTeX, можливо , що в режимі LaTeX (AucTeX) Emacs нагадує мені комбінацій клавіш? Наприклад, після введення \sigmaEmacs з'являється повідомлення, яке

You can insert "\sigma" by `s .

Це було б дуже корисно, оскільки дозволяє поступово вивчати в'язки клавіш у режимі LaTeX.


2
Не відповідь на ваше запитання, але меню повинно показувати комбінації клавіш, якщо вони визначені. І те ж саме можна з спливаючих меню (яке показує ярлики) - наприклад, (global-set-key [C-down-mouse-3] 'mouse-popup-menubar). Таким чином, у вас немає повідомлень про нудоту.
законник

@lawlist Я збирався прокоментувати, що символів математичного режиму немає в меню, але вони насправді мають ціле власне меню! Навіть ті, у яких немає визначеного скорочення, відображаються з кодом, необхідним для їх створення. Дуже зручно!
Тайлер

Відповіді:


9

Змінюючи мою відповідь звідси, ми можемо просто витягнути ці дані з цього LaTeX-math-defaultсписку - це список із 4-х кортежів

(CHARACTER MACRO MENU UNICODE)

де CHARACTERсимвол, який використовується для його прив'язки (я знаю, він схожий на ціле число, але це символ, використовуйте, (string CHARACTER)щоб побачити), MACROце макрос Латекс без косої риски, MENUце назва меню та UNICODEє символом унікоду, який використовується для відображення в меню. Ми хочемо перевірити перший і другий елементи:

(defun show-latex-symbol-at-point ()
  (interactive)
  (let* ((sym (symbol-at-point))
         (latex-symbol (TeX-member sym LaTeX-math-default
                                   (lambda (a b)
                                     (string= a (nth 1 b)))))
         (shortcut (nth 0 latex-symbol))
         )
    (if (and latex-symbol shortcut)
        (message "You can insert \\%s with `%s"
                 (nth 1 latex-symbol)
                 (key-description (string shortcut))))))

Напевно, є кращі способи постійно показувати вихід, але один спосіб використовувати post-command-hookдля запуску вищевказаної функції після кожної команди. Ми будемо використовувати if, щоб переконатися, що це працює лишеlatex-mode

(add-hook 'post-command-hook
          (lambda ()
            (if (bound-and-true-p LaTeX-math-mode)
                (show-latex-symbol-at-point)
              )
            ))

Велике спасибі за цю відповідь. Ваш код працює. Після введення $ \ sigma $ з'являється повідомлення з повідомленням You can insert \sigma with s. Дозвольте мені повідомити про можливу помилку, якщо я набираю $ \ oplus $ m, є повідомлення про помилку Error in post-command-hook ((lambda nil (if (eq major-mode (quote latex-mode)) (show-latex-symbol-at-point)))): (wrong-type-argument characterp nil). Я думаю, що це викликано тим, що auctexне встановлено ярлик для oplus( oplusможна знайти під ним LaTeX-math-default). І з цієї помилки код, здається, не працює, наприклад, ввівши $ \ sigma $ нічого не відбувається.
Ім'я

@Name Я виправив це, щоб не намагатися надрукувати, коли CHARACTERцеnil
erikstokes

Ідеально. Кілька незначних пропозицій: (1) Я думаю, що повідомлення You can insert \sigma with `sкраще, ніж You can insert sigma with s. (2) Наразі після введення \rightarrowповідомлення You can insert rightarrow with ^Fз’являється повідомлення . Я думаю, що повідомлення You can insert \rightarrow with `C-f, можливо, краще.
Ім'я

І, зафіксовано знову.
erikstokes
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.