AUCTeX 打开不需要的编译缓冲区

AUCTeX 打开不需要的编译缓冲区

我跟着另一个帖子设置一些命名命令,然后确保命令等。一切都很完美,除了当我输入时C-c C-c Nomenclature,编译缓冲区会弹出并将原始缓冲区分成两部分,就好像我通过添加打开了编译缓冲区(setq TeX-show-compilation nil)(但我没有)。如果我输入通常的内容,如C-c C-c latexC-c C-c biber,一切都很正常,并且消息会保留在迷你缓冲区内而不会弹出,当然,除非有错误需要报告。

我尝试通过(delete-other-windows)手动添加来解决此问题,如下所示,

(eval-after-load "tex"
 '(add-to-list 'TeX-command-list
            '("Nomenclature" "makeindex %s.nlo -s nomencl.ist -o %s.nls"
              (lambda (name command file)
                (TeX-run-compile name command file)
                (TeX-process-set-variable file 'TeX-command-next TeX-command-default)
                (delete-other-windows) %<-- manually delete other buffer
)
              nil t :help "Create nomenclature file")))

确实可以工作,但看起来不自然而且很愚蠢。此外,有时这会盲目关闭另一个不是编译缓冲区的缓冲区,这很麻烦。

我的问题是,有没有正式的有什么办法可以解决这个问题?非常感谢!


更新

经过一番挖掘,我意识到这不是 AUCTeX 或一般 TeX 的问题,而是 emacs 编译问题。以下此篇文章来自 zdav,我设法(delete-other-windows)

(delete-window (get-buffer-window (get-buffer "*compilation*"))))

对我来说这似乎更有针对性。

如果我只是添加什么兹达夫提议的,它仍然有效,但我会看到窗口裂开,下部缓冲区被摧毁。这不是一个令人愉快的景象。


更新

经过进一步挖掘,我想我会坚持提供的解决方案堆栈溢出复制如下

(defun brian-compile-finish (buffer outstr)
  (unless (string-match "finished" outstr)
    (switch-to-buffer-other-window buffer))
  t)

(setq compilation-finish-functions 'brian-compile-finish)

(require 'cl)

(defadvice compilation-start
  (around inhibit-display
      (command &optional mode name-function highlight-regexp)) 
  (if (not (string-match "^\\(find\\|grep\\)" command))
      (flet ((display-buffer)
         (set-window-point)
         (goto-char)) 
    (fset 'display-buffer 'ignore)
    (fset 'goto-char 'ignore)
    (fset 'set-window-point 'ignore)
    (save-window-excursion 
      ad-do-it))
    ad-do-it))

(ad-activate 'compilation-start)

相关内容