Запустите TeX-command-master без запроса в emacs

Комбинация клавиш C-c C-c в Emacs/AucTeX запускает функцию TeX-command-master, которая решает, какую команду следует запустить (latex, bibtex, view или другие), а затем запрашивает у пользователя подтверждение перед выполнением команды.

Я хотел бы привязать это к клавише (скажем, F9), кроме без запроса подтверждения. Таким образом, я просто нажимал F9, и запускалась наиболее подходящая команда. Как я могу это сделать?


person Malabarba    schedule 12.04.2012    source источник
comment
Какая версия AUCTeX?   -  person Thomas    schedule 13.04.2012
comment
@ Томас Я думаю, что это 11.86-3. Имеет ли это смысл?]   -  person Malabarba    schedule 13.04.2012


Ответы (2)


У меня есть этот фрагмент (взято из ссылки Emacswiki ниже), который делает все, не беспокоя меня, что делать сейчас. Я привязан к C-c C-a

;;; http://www.emacswiki.org/emacs/TN
(require 'tex-buf)
(defun TeX-command-default (name)
  "Next TeX command to use. Most of the code is stolen from `TeX-command-query'."
  (cond ((if (string-equal name TeX-region)
             (TeX-check-files (concat name "." (TeX-output-extension))
                              (list name)
                              TeX-file-extensions)
           (TeX-save-document (TeX-master-file)))
         TeX-command-default)
        ((and (memq major-mode '(doctex-mode latex-mode))
              (TeX-check-files (concat name ".bbl")
                               (mapcar 'car
                                       (LaTeX-bibliography-list))
                               BibTeX-file-extensions))
         ;; We should check for bst files here as well.
         TeX-command-BibTeX)
        ((TeX-process-get-variable name
                                   'TeX-command-next
                                   TeX-command-Show))
        (TeX-command-Show)))

;;;  from wiki
(defcustom TeX-texify-Show t
  "Start view-command at end of TeX-texify?"
  :type 'boolean
  :group 'TeX-command)

(defcustom TeX-texify-max-runs-same-command 5
  "Maximal run number of the same command"
  :type 'integer
  :group 'TeX-command)

(defun TeX-texify-sentinel (&optional proc sentinel)
  "Non-interactive! Call the standard-sentinel of the current LaTeX-process.
If there is still something left do do start the next latex-command."
  (set-buffer (process-buffer proc))
  (funcall TeX-texify-sentinel proc sentinel)
  (let ((case-fold-search nil))
    (when (string-match "\\(finished\\|exited\\)" sentinel)
      (set-buffer TeX-command-buffer)
      (unless (plist-get TeX-error-report-switches (intern (TeX-master-file)))
        (TeX-texify)))))

(defun TeX-texify ()
  "Get everything done."
  (interactive)
  (let ((nextCmd (TeX-command-default (TeX-master-file)))
        proc)
    (if (and (null TeX-texify-Show)
             (equal nextCmd TeX-command-Show))
        (when  (called-interactively-p 'any)
          (message "TeX-texify: Nothing to be done."))
      (TeX-command nextCmd 'TeX-master-file)
      (when (or (called-interactively-p 'any)
                (null (boundp 'TeX-texify-count-same-command))
                (null (boundp 'TeX-texify-last-command))
                (null (equal nextCmd TeX-texify-last-command)))
        (mapc 'make-local-variable '(TeX-texify-sentinel TeX-texify-count-same-command TeX-texify-last-command))
        (setq TeX-texify-count-same-command 1))
      (if (>= TeX-texify-count-same-command TeX-texify-max-runs-same-command)
          (message "TeX-texify: Did %S already %d times. Don't want to do it anymore." TeX-texify-last-command TeX-texify-count-same-command)
        (setq TeX-texify-count-same-command (1+ TeX-texify-count-same-command))
        (setq TeX-texify-last-command nextCmd)
        (and (null (equal nextCmd TeX-command-Show))
             (setq proc (get-buffer-process (current-buffer)))
             (setq TeX-texify-sentinel (process-sentinel proc))
             (set-process-sentinel proc 'TeX-texify-sentinel))))))

(add-hook 'LaTeX-mode-hook
          '(lambda ()
             (define-key LaTeX-mode-map (kbd "C-c C-a") 'TeX-texify)))

У меня есть еще несколько настроек AUCTeX/RefTeX здесь , скопируйте, если хотите.

person kindahero    schedule 13.04.2012
comment
Я получаю сообщение об ошибке let: Symbol's function definition is void: TeX-command-default, как только пытаюсь C-c C-a (или запускаю функцию вручную). Выполнение C-h v TeX-command-default описывает его как переменную. - person Malabarba; 13.04.2012
comment
@BruceConnor Извините за это. добавлен общий фрагмент сейчас. - person kindahero; 13.04.2012
comment
Отлично! Однако мне интересно, возможно ли заставить TeX-command-show вместо этого вызывать TeX-view, команда, которая открывает средство просмотра PDF в точном положении, открытом в данный момент в редакторе. - person metakermit; 09.03.2016
comment
Это все еще просит меня сохранить файл - person alper; 14.01.2021

Не самое элегантное решение, но вы можете определить макрос клавиатуры, содержащий следующие команды:

  • C-x C-s, чтобы сохранить файл
  • M-x TeX-command-master <RET> для запуска предварительно выбранной (AucTeX) команды.

После определения M-x insert-kbd-macro вставит определение макроса в текущий буфер (как код Lisp). Затем вы можете добавить его в свой .emacs и привязать к F9.

person phimuemue    schedule 13.04.2012
comment
Могу ли я объединить C-x C-s с M-x TeX-command-master для одной привязки клавиш? - person alper; 14.01.2021