LINUX.ORG.RU

неправильное дополнение в LaTeX

 ,


0

2

Имеем: такую ситуацию, т.е. вместе с дополнением оператора математического символа дополняется и сам символ, чего не хотелось бы.

~ % cat .emacs | grep -i tex
; xelatex
(eval-after-load "tex"
  '(add-to-list 'TeX-command-list
                '("XeLaTeX" "xelatex -interaction=nonstopmode %s"
                  TeX-run-command t t :help "Run xelatex") t))
(setq TeX-engine-alist
      '((xelatex "XeLaTeX" "xetex" "xelatex" "xelatex")))
;(add-hook 'LaTeX-mode-hook
;             (setq TeX-engine 'xelatex)))
(setq TeX-PDF-mode t)
 '(TeX-command-list (quote (("TeX" "%(PDF)%(tex) %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (plain-tex-mode texinfo-mode ams-tex-mode) :help "Run plain TeX") ("LaTeX" "%`%l%(mode)%' %t" TeX-run-TeX nil (latex-mode doctex-mode) :help "Run LaTeX") ("Makeinfo" "makeinfo %t" TeX-run-compile nil (texinfo-mode) :help "Run Makeinfo with Info output") ("Makeinfo HTML" "makeinfo --html %t" TeX-run-compile nil (texinfo-mode) :help "Run Makeinfo with HTML output") ("AmSTeX" "%(PDF)amstex %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (ams-tex-mode) :help "Run AMSTeX") ("ConTeXt" "texexec --once --texutil %(execopts)%t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt once") ("ConTeXt Full" "texexec %(execopts)%t" TeX-run-TeX nil (context-mode) :help "Run ConTeXt until completion") ("BibTeX" "bibtex %s" TeX-run-BibTeX nil t :help "Run BibTeX") ("Biber" "biber %s" TeX-run-Biber nil t :help "Run Biber") ("View" "open %o" TeX-run-discard-or-function t t :help "Run Viewer") ("Print" "%p" TeX-run-command t t :help "Print the file") ("Queue" "%q" TeX-run-background nil t :help "View the printer queue" :visible TeX-queue-command) ("File" "%(o?)dvips %d -o %f " TeX-run-command t t :help "Generate PostScript file") ("Index" "makeindex %s" TeX-run-command nil t :help "Create index file") ("Check" "lacheck %s" TeX-run-compile nil (latex-mode) :help "Check LaTeX file for correctness") ("Spell" "(TeX-ispell-document \"\")" TeX-run-function nil t :help "Spell-check the document") ("Clean" "TeX-clean" TeX-run-function nil t :help "Delete generated intermediate files") ("Clean All" "(TeX-clean t)" TeX-run-function nil t :help "Delete generated intermediate and output files") ("Other" "" TeX-run-command t t :help "Run an arbitrary command") ("XeLaTeX" "xelatex -interaction=nonstopmode -shell-escape %s" TeX-run-command t t :help "Run xelatex") ("XeLaTeX" "xelatex -interaction=nonstopmode %s" TeX-run-command t t :help "Run xelatex"))))
 '(TeX-output-view-style nil)
 '(TeX-source-correlate-method (quote synctex))
 '(TeX-source-correlate-mode t)
 '(TeX-source-correlate-start-server t)
(add-to-list 'ac-modes 'latex-mode)   ; make auto-complete aware of `latex-mode`
(defun ac-latex-mode-setup ()         ; add ac-sources to default ac-sources
 (append '(ac-source-math-unicode ac-source-math-latex ac-source-latex-commands)
(add-hook 'LaTeX-mode-hook 'ac-latex-mode-setup)
;;Auctex a/c
(add-hook 'LaTeX-mode-hook
        (local-set-key [M-tab] 'TeX-complete-symbol)))
;; Auctex math
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
(add-hook 'LaTeX-mode-hook 'TeX-fold-mode)
(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(add-hook 'LaTeX-mode-hook 'visual-line-mode)

p.s. я знаю, что давно надо привести .emacs в порядок, но пока руки не доходят

★★★★

Последнее исправление: pashazz (всего исправлений: 1)

Не уверен, что сразу врублюсь, в чем поблема. А какое значение ac-sources в буфере с LaTeX-mode? (C-h v ac-sources)

Все, что показывает auto-complete-mode, идет из подключенных источников. Если что-то нежелательное, то, может быть, убрать из списка некоторые.

Ты в хуке добавляешь эти: '(ac-source-math-unicode ac-source-math-latex ac-source-latex-commands). Если больше никаких нет источников, кроме этих, то это значит, что кто-то из них тебе эту хрень прописывает.

UPD. Можно вместо append в ac-sources вписать setq. Тогда он умолчательные сотрет и оставит только твои три, которые ты явно добавляешь.

UPD2. Мне кажется, что у тебя срабатывает стандартный источник дополнений ac-source-words-in-all-buffer или ac-source-words-in-same-mode-buffers. Эти источники определены в самом auto-complete-mode, но не знаю, подключены ли они. Тогда если в буферах встречается inf..., то он может подставить обнаруженное в тексте ранее значение.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 6)
Ответ на: комментарий от Zubok

Не. Стандартный источник срабатывает, но это точно не он. Этот дополняет вообще все математические символы, но после и вставляет их.

pashazz ★★★★
() автор топика
Ответ на: комментарий от pashazz

Можно методом исключения выяснить, какой именно источник из трех так делает? А дальше уже глянем подробнее.

UPD. А, все, ты нашел уже. Ссылка не открывается - 404

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Zubok

да там я так и не смог запилить нормально скриншот... кривая маковская скриншотилка

Не суть. Другие источники вообще не дополняют эту математику, а этот после команд вставляет символы

pashazz ★★★★
() автор топика
Последнее исправление: pashazz (всего исправлений: 1)
Ответ на: комментарий от pashazz

Еще один вопрос. Вот твой листинг. Я не пойму, куда ты append источникам делаешь? Надо же в ac-sources, а у тебя в пустоту.

(defun ac-latex-mode-setup ()         ; add ac-sources to default ac-sources
 (append '(ac-source-math-unicode ac-source-math-latex ac-source-latex-commands)
(add-hook 'LaTeX-mode-hook 'ac-latex-mode-setup)

Надо хотя бы так:


(defun ac-latex-mode-setup ()        ; add ac-sources to default ac-sources
  (setq ac-sources
        (append '(ac-source-math-unicode ac-source-math-latex ac-source-latex-commands)
                ac-sources))
Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

У меня там setq есть, его просто grep не показал Факт в том что источник кривой, а другого нет

pashazz ★★★★
() автор топика
Ответ на: комментарий от pashazz

Странно. Вот я смотрю в исходники и вроде все должно быть нормально. Насколько я понимаю, он должен по умолчанию вставить уникодный символ. Но если ты сказал, что уникода не надо, то он не символ, а команду вставит. См. функцию ac-math--make-candidates и комментарий к ней.

https://raw.githubusercontent.com/vitoshka/ac-math/master/ac-math.el

Для того, чтобы разобраться, надо ставить мне мне этот автокомплит. Но ты же вроде должен разбираться в emacs lisp?

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Я разбираюсь, но у меня совсем нет времени копаться в исходниках. Поэтому пока что я поставил predictive-mode

pashazz ★★★★
() автор топика
Ответ на: комментарий от pashazz

Я разбираюсь, но у меня совсем нет времени копаться в исходниках. Поэтому пока что я поставил predictive-mode

Ну, понятно. Просто там нет больше ничег, чему можно customize делать. Могу только предположить и ты можешь это попробовать. Найди в исходнике вот эти строчки:

(defvar ac-math-symbols-unicode
  (delete-dups
   (append (ac-math--make-candidates ac-latex-math-default-alist t)
           (ac-math--make-candidates ac-latex-math-extended-alist t)))
  "List of math completion candidates.")

и поменяй на эти:

(defvar ac-math-symbols-unicode
  (delete-dups
   (append (ac-math--make-candidates ac-latex-math-default-alist)
           (ac-math--make-candidates ac-latex-math-extended-alist)))
  "List of math completion candidates.")

По идее уникодный символ пропадет, а дополняться будет /infty

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.