Merge pull request #332 from UndeadKernel/latex_module
Latex module revamped
This commit is contained in:
commit
e571060063
5 changed files with 373 additions and 47 deletions
89
modules/lang/latex/+fontification.el
Normal file
89
modules/lang/latex/+fontification.el
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
;;; lang/latex/+fontification.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; Fontification taken from https://tex.stackexchange.com/a/86119/81279
|
||||||
|
(setq font-latex-match-reference-keywords
|
||||||
|
'(
|
||||||
|
;; biblatex
|
||||||
|
("printbibliography" "[{")
|
||||||
|
("addbibresource" "[{")
|
||||||
|
;; Standard commands
|
||||||
|
("cite" "[{")
|
||||||
|
("Cite" "[{")
|
||||||
|
("parencite" "[{")
|
||||||
|
("Parencite" "[{")
|
||||||
|
("footcite" "[{")
|
||||||
|
("footcitetext" "[{")
|
||||||
|
;; Style-specific commands
|
||||||
|
("textcite" "[{")
|
||||||
|
("Textcite" "[{")
|
||||||
|
("smartcite" "[{")
|
||||||
|
("Smartcite" "[{")
|
||||||
|
("cite*" "[{")
|
||||||
|
("parencite*" "[{")
|
||||||
|
("supercite" "[{")
|
||||||
|
;; Qualified citation lists
|
||||||
|
("cites" "[{")
|
||||||
|
("Cites" "[{")
|
||||||
|
("parencites" "[{")
|
||||||
|
("Parencites" "[{")
|
||||||
|
("footcites" "[{")
|
||||||
|
("footcitetexts" "[{")
|
||||||
|
("smartcites" "[{")
|
||||||
|
("Smartcites" "[{")
|
||||||
|
("textcites" "[{")
|
||||||
|
("Textcites" "[{")
|
||||||
|
("supercites" "[{")
|
||||||
|
;; Style-independent commands
|
||||||
|
("autocite" "[{")
|
||||||
|
("Autocite" "[{")
|
||||||
|
("autocite*" "[{")
|
||||||
|
("Autocite*" "[{")
|
||||||
|
("autocites" "[{")
|
||||||
|
("Autocites" "[{")
|
||||||
|
;; Text commands
|
||||||
|
("citeauthor" "[{")
|
||||||
|
("Citeauthor" "[{")
|
||||||
|
("citetitle" "[{")
|
||||||
|
("citetitle*" "[{")
|
||||||
|
("citeyear" "[{")
|
||||||
|
("citedate" "[{")
|
||||||
|
("citeurl" "[{")
|
||||||
|
;; Special commands
|
||||||
|
("fullcite" "[{")
|
||||||
|
;; cleveref
|
||||||
|
("cref" "{")
|
||||||
|
("Cref" "{")
|
||||||
|
("cpageref" "{")
|
||||||
|
("Cpageref" "{")
|
||||||
|
("cpagerefrange" "{")
|
||||||
|
("Cpagerefrange" "{")
|
||||||
|
("crefrange" "{")
|
||||||
|
("Crefrange" "{")
|
||||||
|
("labelcref" "{")))
|
||||||
|
|
||||||
|
(setq font-latex-match-textual-keywords
|
||||||
|
'(
|
||||||
|
;; biblatex brackets
|
||||||
|
("parentext" "{")
|
||||||
|
("brackettext" "{")
|
||||||
|
("hybridblockquote" "[{")
|
||||||
|
;; Auxiliary Commands
|
||||||
|
("textelp" "{")
|
||||||
|
("textelp*" "{")
|
||||||
|
("textins" "{")
|
||||||
|
("textins*" "{")
|
||||||
|
;; subcaption
|
||||||
|
("subcaption" "[{")))
|
||||||
|
|
||||||
|
(setq font-latex-match-variable-keywords
|
||||||
|
'(
|
||||||
|
;; amsmath
|
||||||
|
("numberwithin" "{")
|
||||||
|
;; enumitem
|
||||||
|
("setlist" "[{")
|
||||||
|
("setlist*" "[{")
|
||||||
|
("newlist" "{")
|
||||||
|
("renewlist" "{")
|
||||||
|
("setlistdepth" "{")
|
||||||
|
("restartlist" "{")
|
||||||
|
("crefname" "{")))
|
53
modules/lang/latex/README.org
Normal file
53
modules/lang/latex/README.org
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
#+TITLE: :lang latex
|
||||||
|
|
||||||
|
* Module Description
|
||||||
|
Provide a helping hand when working with LaTeX documents.
|
||||||
|
|
||||||
|
** Feature:
|
||||||
|
+ Sane defaults
|
||||||
|
+ Fontification of many popular commands
|
||||||
|
+ Pretty indentation of wrapped lines using the ~adaptive-wrap~ package
|
||||||
|
+ Spell checking with ~flyschek~
|
||||||
|
+ Change PDF viewer to Okular or ~latex-preview-pane~
|
||||||
|
+ Bibtex editor
|
||||||
|
+ Autocompletion using ~company-mode~
|
||||||
|
+ Ivy or Helm for selecting bibliography
|
||||||
|
+ Compile your .tex code only once using LatexMk
|
||||||
|
|
||||||
|
|
||||||
|
* Customization
|
||||||
|
|
||||||
|
** Custom Variables
|
||||||
|
Two custom variables state where AUCTeX will search for bibliography files and their corresponding PDFs.
|
||||||
|
Set these variables in your private configuration with:
|
||||||
|
#+BEGIN_SRC emacs_lisp
|
||||||
|
(set! :latex-bibtex-file "./your/bib/file.bib")
|
||||||
|
(set! :latex-bibtex-pdfs-dir "./dir/with/bib/pdfs/")
|
||||||
|
#+END_SRC
|
||||||
|
If the variables are not set, they are ignored.
|
||||||
|
|
||||||
|
** LatexMk
|
||||||
|
Use LatexMk instead of normal LaTeX to compile documents. LatexMk only needs to run once to get all references, bibliography and other things right.
|
||||||
|
|
||||||
|
Activate with the flag '+latexmk' of the latex module in init.el.
|
||||||
|
#+BEGIN_SRC emacs_lisp
|
||||||
|
(latex +latexmk)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Okular
|
||||||
|
Use Okular as default PDF viewer.
|
||||||
|
|
||||||
|
Activate with the flag '+okular' of the latex module in init.el.
|
||||||
|
#+BEGIN_SRC emacs_lisp
|
||||||
|
(latex +okular)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Preivew-Pane
|
||||||
|
Instead of using an external program to display rendered .tex files, use an emacs window to display the rendered file.
|
||||||
|
|
||||||
|
This flag is incompatible with the ~+okular~ flag.
|
||||||
|
|
||||||
|
Activate with the flag '+preview-pane' of the latex module in init.el.
|
||||||
|
#+BEGIN_SRC emacs_lisp
|
||||||
|
(latex +preview-pane)
|
||||||
|
#+END_SRC
|
43
modules/lang/latex/autoload.el
Normal file
43
modules/lang/latex/autoload.el
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
;;; lang/latex/autoload.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +latex/LaTeX-indent-item ()
|
||||||
|
"Provide proper indentation for LaTeX \"itemize\",\"enumerate\", and \"description\" environments.
|
||||||
|
|
||||||
|
\"\\item\" is indented `LaTeX-indent-level' spaces relative to
|
||||||
|
the the beginning of the environment.
|
||||||
|
|
||||||
|
Continuation lines are indented either twice
|
||||||
|
`LaTeX-indent-level', or `LaTeX-indent-level-item-continuation'
|
||||||
|
if the latter is bound."
|
||||||
|
(save-match-data
|
||||||
|
(let* ((offset LaTeX-indent-level)
|
||||||
|
(contin (or (and (boundp '+latex-indent-level-item-continuation)
|
||||||
|
+latex-indent-level-item-continuation)
|
||||||
|
(* 4 LaTeX-indent-level)))
|
||||||
|
(re-beg "\\\\begin{")
|
||||||
|
(re-end "\\\\end{")
|
||||||
|
(re-env "\\(itemize\\|\\enumerate\\|description\\)")
|
||||||
|
(indent (save-excursion
|
||||||
|
(when (looking-at (concat re-beg re-env "}"))
|
||||||
|
(end-of-line))
|
||||||
|
(LaTeX-find-matching-begin)
|
||||||
|
(current-column))))
|
||||||
|
(cond ((looking-at (concat re-beg re-env "}"))
|
||||||
|
(or (save-excursion
|
||||||
|
(beginning-of-line)
|
||||||
|
(ignore-errors
|
||||||
|
(LaTeX-find-matching-begin)
|
||||||
|
(+ (current-column)
|
||||||
|
(if (looking-at (concat re-beg re-env "}"))
|
||||||
|
contin
|
||||||
|
offset))))
|
||||||
|
indent))
|
||||||
|
((looking-at (concat re-end re-env "}"))
|
||||||
|
indent)
|
||||||
|
((looking-at "\\\\item")
|
||||||
|
(+ offset indent))
|
||||||
|
(t
|
||||||
|
(+ contin indent))))))
|
||||||
|
|
||||||
|
|
|
@ -1,96 +1,225 @@
|
||||||
;;; lang/latex/config.el -*- lexical-binding: t; -*-
|
;;; lang/latex/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
(defvar +latex-bibtex-dir "~/work/writing/biblio/"
|
(defvar +latex-bibtex-file ""
|
||||||
|
"File AUCTeX (specifically RefTeX) uses to search for citations.")
|
||||||
|
|
||||||
|
(defvar +latex-bibtex-dir ""
|
||||||
"Where bibtex files are kept.")
|
"Where bibtex files are kept.")
|
||||||
|
|
||||||
(defvar +latex-bibtex-default-file "default.bib"
|
(defvar +latex-indent-level-item-continuation 8
|
||||||
"TODO")
|
"Custom indentation level for items in enumeration-type environments")
|
||||||
|
|
||||||
|
|
||||||
;;
|
(def-setting! :latex-bibtex-file (file)
|
||||||
;; AucTex/LaTeX bootstrap
|
"Sets the default file RefTeX uses to search for citations."
|
||||||
;;
|
`(setq +latex-bibtex-file ,file))
|
||||||
|
|
||||||
;; Because tex-mode is built-in and AucTex has conflicting components, we need
|
(def-setting! :latex-bibtex-dir (dir)
|
||||||
;; to ensure that auctex gets loaded instead of tex-mode.
|
"Sets the directory where AUCTeX will search for PDFs associated to BibTeX references."
|
||||||
(load "auctex" nil t)
|
`(setq +latex-bibtex-dir ,dir))
|
||||||
(load "auctex-autoloads" nil t)
|
|
||||||
(push '("\\.[tT]e[xX]\\'" . TeX-latex-mode) auto-mode-alist)
|
|
||||||
|
|
||||||
(add-hook! (latex-mode LaTeX-mode) #'turn-on-auto-fill)
|
|
||||||
(add-hook! 'LaTeX-mode-hook #'(LaTeX-math-mode TeX-source-correlate-mode))
|
|
||||||
|
|
||||||
(add-transient-hook! 'LaTeX-mode-hook
|
(def-package! tex-site
|
||||||
(setq TeX-auto-save t
|
:init
|
||||||
|
;; Manually load the AUCTEX autoloads. This is normally done by package-initialize,
|
||||||
|
;; ... which we do not use.
|
||||||
|
(load "auctex.el" nil t t)
|
||||||
|
(load "auctex-autoloads.el" nil t t)
|
||||||
|
:config
|
||||||
|
;; Set some varibles to fontify common LaTeX commands.
|
||||||
|
(load! +fontification)
|
||||||
|
(setq
|
||||||
|
;; Enable parse on load.
|
||||||
TeX-parse-self t
|
TeX-parse-self t
|
||||||
|
;; When running TeX, just save, don't ask
|
||||||
TeX-save-query nil
|
TeX-save-query nil
|
||||||
|
;; Enable parse on save.
|
||||||
|
TeX-auto-save t
|
||||||
|
;; Use hidden directories for AUCTeX files.
|
||||||
|
TeX-auto-local ".auctex-auto"
|
||||||
|
TeX-style-local ".auctex-style"
|
||||||
|
;; When correlating sources to rendered PDFs, don't start the emacs server
|
||||||
TeX-source-correlate-start-server nil
|
TeX-source-correlate-start-server nil
|
||||||
LaTeX-fill-break-at-separators nil
|
TeX-source-correlate-mode t
|
||||||
LaTeX-section-hook
|
TeX-source-correlate-method 'synctex
|
||||||
'(LaTeX-section-heading
|
;; Fonts for section, subsection, etc
|
||||||
LaTeX-section-title
|
font-latex-fontify-sectioning 1.15)
|
||||||
LaTeX-section-toc
|
(setq-default TeX-master nil)
|
||||||
LaTeX-section-section
|
;; Display the output of the latex commands in a popup.
|
||||||
LaTeX-section-label))
|
|
||||||
|
|
||||||
(set! :popup " output\\*$" '((size . 15)))
|
(set! :popup " output\\*$" '((size . 15)))
|
||||||
(map! :map LaTeX-mode-map "C-j" nil))
|
|
||||||
|
|
||||||
|
;; TeX Font Styling
|
||||||
|
(def-package! tex-style
|
||||||
|
:defer t)
|
||||||
|
|
||||||
;;
|
;; TeX Folding
|
||||||
;; Plugins
|
(def-package! tex-fold
|
||||||
;;
|
:defer t
|
||||||
|
:init
|
||||||
|
(add-hook! 'TeX-mode-hook 'TeX-fold-mode))
|
||||||
|
|
||||||
(def-package! reftex ; built-in
|
(def-package! latex
|
||||||
:commands (turn-on-reftex reftex-mode)
|
:defer t
|
||||||
|
:init
|
||||||
|
(setq
|
||||||
|
;; Add the toc entry to the sectioning hooks.
|
||||||
|
LaTeX-section-hook
|
||||||
|
'(LaTeX-section-heading
|
||||||
|
LaTeX-section-title
|
||||||
|
LaTeX-section-toc
|
||||||
|
LaTeX-section-section
|
||||||
|
LaTeX-section-label)
|
||||||
|
LaTeX-fill-break-at-separators nil
|
||||||
|
;; Item indentation.
|
||||||
|
LaTeX-item-indent 0)
|
||||||
|
:config
|
||||||
|
(map! :map LaTeX-mode-map "C-j" nil)
|
||||||
|
;; Do not prompt for Master files, this allows auto-insert to add templates to .tex files
|
||||||
|
(add-hook! '(LaTeX-mode TeX-mode) '(lambda () (remove-hook 'find-file-hooks (car find-file-hooks) 'local)))
|
||||||
|
;; Adding useful things for latex
|
||||||
|
(add-hook! LaTeX-mode (LaTeX-math-mode) (TeX-source-correlate-mode)(TeX-global-PDF-mode t)
|
||||||
|
(TeX-PDF-mode t) (visual-line-mode +1))
|
||||||
|
(when (featurep! :feature spellcheck)
|
||||||
|
(add-hook! LaTeX-mode (flyspell-mode t)))
|
||||||
|
;; Default language setting.
|
||||||
|
(setq ispell-dictionary "english")
|
||||||
|
;; Use chktex to search for errors in a latex file.
|
||||||
|
(setcar (cdr (assoc "Check" TeX-command-list)) "chktex -v6 %s")
|
||||||
|
;; Set a custom item indentation
|
||||||
|
(setq LaTeX-indent-environment-list
|
||||||
|
(nconc '(("itemize" +latex/LaTeX-indent-item)
|
||||||
|
("enumerate" +latex/LaTeX-indent-item)
|
||||||
|
("description" +latex/LaTeX-indent-item))
|
||||||
|
LaTeX-indent-environment-list))))
|
||||||
|
|
||||||
|
(after! latex
|
||||||
|
;; Use Okular is the user says so.
|
||||||
|
(when (featurep! +okular)
|
||||||
|
;; Configure Okular as viewer. Including a bug fix (https://bugs.kde.org/show_bug.cgi?id=373855)
|
||||||
|
(add-to-list 'TeX-view-program-list
|
||||||
|
'("Okular" ("okular --unique file:%o" (mode-io-correlate "#src:%n%a"))))
|
||||||
|
(add-to-list 'TeX-view-program-selection
|
||||||
|
'(output-pdf "Okular"))))
|
||||||
|
|
||||||
|
(def-package! preview
|
||||||
|
;; The preview package is currently broken with the latest AUCTeX version ("11.90.2.2017-07-25)
|
||||||
|
;; ... and Ghostscript 9.22. It's now fixed in AUCTeX master, so we just have to wait.
|
||||||
|
:init
|
||||||
|
(progn
|
||||||
|
(setq-default preview-scale 1.4
|
||||||
|
preview-scale-function '(lambda () (* (/ 10.0 (preview-document-pt)) preview-scale))))
|
||||||
|
(add-hook! LaTeX-mode #'LaTeX-preview-setup))
|
||||||
|
|
||||||
|
(def-package! reftex
|
||||||
|
:commands turn-on-reftex
|
||||||
:init
|
:init
|
||||||
(setq reftex-plug-into-AUCTeX t
|
(setq reftex-plug-into-AUCTeX t
|
||||||
reftex-default-bibliography (list +latex-bibtex-default-file)
|
reftex-toc-split-windows-fraction 0.3)
|
||||||
reftex-toc-split-windows-fraction 0.2)
|
(unless (string-empty-p +latex-bibtex-file)
|
||||||
|
(setq reftex-default-bibliography (list (expand-file-name +latex-bibtex-file))))
|
||||||
|
; Get ReTeX working with biblatex
|
||||||
|
; http://tex.stackexchange.com/questions/31966/setting-up-reftex-with-biblatex-citation-commands/31992#31992
|
||||||
|
(setq reftex-cite-format
|
||||||
|
'((?t . "\\textcite[]{%l}")
|
||||||
|
(?a . "\\autocite[]{%l}")
|
||||||
|
(?c . "\\cite[]{%l}")
|
||||||
|
(?s . "\\smartcite[]{%l}")
|
||||||
|
(?f . "\\footcite[]{%l}")
|
||||||
|
(?n . "\\nocite{%l}")
|
||||||
|
(?b . "\\blockcquote[]{%l}{}")))
|
||||||
(add-hook! (latex-mode LaTeX-mode) #'turn-on-reftex)
|
(add-hook! (latex-mode LaTeX-mode) #'turn-on-reftex)
|
||||||
|
|
||||||
:config
|
:config
|
||||||
(map! :map reftex-mode-map
|
(map! :map reftex-mode-map
|
||||||
:localleader :n ";" 'reftex-toc)
|
:localleader :n ";" 'reftex-toc)
|
||||||
|
|
||||||
(add-hook! 'reftex-toc-mode-hook
|
(add-hook! 'reftex-toc-mode-hook
|
||||||
(reftex-toc-rescan)
|
(reftex-toc-rescan)
|
||||||
(map! :local
|
(map! :local
|
||||||
:e "j" #'next-line
|
:e "j" #'next-line
|
||||||
:e "k" #'previous-line
|
:e "k" #'previous-line
|
||||||
:e "q" #'kill-buffer-and-window
|
:e "q" #'kill-buffer-and-window
|
||||||
:e "ESC" #'kill-buffer-and-window)))
|
:e "ESC" #'kill-buffer-and-window
|
||||||
|
"C-g" #'reftex-toc-quit)))
|
||||||
|
|
||||||
|
(def-package! bibtex
|
||||||
(def-package! bibtex ; built-in
|
|
||||||
:defer t
|
:defer t
|
||||||
|
:mode ("\\.bib" . bibtex-mode)
|
||||||
:config
|
:config
|
||||||
(setq bibtex-dialect 'biblatex
|
(setq bibtex-dialect 'biblatex
|
||||||
bibtex-align-at-equal-sign t
|
bibtex-align-at-equal-sign t
|
||||||
bibtex-text-indentation 20
|
bibtex-text-indentation 20
|
||||||
bibtex-completion-bibliography (list +latex-bibtex-default-file))
|
bibtex-completion-bibliography (list (expand-file-name +latex-bibtex-file)))
|
||||||
|
|
||||||
(map! :map bibtex-mode-map "C-c \\" #'bibtex-fill-entry))
|
(map! :map bibtex-mode-map "C-c \\" #'bibtex-fill-entry))
|
||||||
|
|
||||||
|
(def-package! latex-preview-pane
|
||||||
|
:when (featurep! +preview-pane)
|
||||||
|
:commands latex-preview-pane-enable
|
||||||
|
:init
|
||||||
|
(setq latex-preview-pane-multifile-mode 'auctex)
|
||||||
|
(add-hook! (latex-mode LaTeX-mode) #'latex-preview-pane-enable)
|
||||||
|
(add-to-list 'TeX-view-program-list
|
||||||
|
'("preview-pane"
|
||||||
|
latex-preview-pane-mode))
|
||||||
|
(add-to-list 'TeX-view-program-selection
|
||||||
|
'(output-pdf "preview-pane"))
|
||||||
|
:config
|
||||||
|
(map! :map doc-view-mode-map
|
||||||
|
"ESC" #'delete-window
|
||||||
|
"q" #'delete-window
|
||||||
|
"k" (λ! (quit-window) (delete-window))))
|
||||||
|
|
||||||
|
;; Enable latexmk only if the user explicitly says so with the module flag '+latexmk'.
|
||||||
|
(def-package! auctex-latexmk
|
||||||
|
:when (featurep! +latexmk)
|
||||||
|
:init
|
||||||
|
;; Pass the -pdf flag when TeX-PDF-mode is active
|
||||||
|
(setq auctex-latexmk-inherit-TeX-PDF-mode t)
|
||||||
|
;; Set LatexMk as the default
|
||||||
|
(add-hook 'LaTeX-mode-hook '(lambda () (setq TeX-command-default "LatexMk")))
|
||||||
|
:config
|
||||||
|
;; Add latexmk as a TeX target
|
||||||
|
(auctex-latexmk-setup))
|
||||||
|
|
||||||
(def-package! ivy-bibtex
|
(def-package! ivy-bibtex
|
||||||
:when (featurep! :completion ivy)
|
:when (featurep! :completion ivy)
|
||||||
:commands ivy-bibtex)
|
:commands ivy-bibtex
|
||||||
|
:config
|
||||||
|
(setq ivy-bibtex-default-action 'ivy-bibtex-insert-key)
|
||||||
|
(unless (string-empty-p +latex-bibtex-file)
|
||||||
|
(setq bibtex-completion-bibliography (list (expand-file-name +latex-bibtex-file))))
|
||||||
|
(unless (string-empty-p +latex-bibtex-dir)
|
||||||
|
(setq bibtex-completion-library-path (list +latex-bibtex-dir)
|
||||||
|
bibtex-completion-pdf-field "file"
|
||||||
|
bibtex-completion-notes-path (f-expand "notes.org" +latex-bibtex-dir)
|
||||||
|
bibtex-completion-pdf-open-function
|
||||||
|
(lambda (fpath) (async-start-process "open-pdf" "/usr/bin/xdg-open" nil fpath)))))
|
||||||
|
|
||||||
(def-package! helm-bibtex
|
(def-package! helm-bibtex
|
||||||
:when (featurep! :completion helm)
|
:when (featurep! :completion helm)
|
||||||
:commands helm-bibtex)
|
:commands helm-bibtex
|
||||||
|
:config
|
||||||
|
(unless (string-empty-p +latex-bibtex-file)
|
||||||
|
(setq bibtex-completion-bibliography (list (expand-file-name +latex-bibtex-file))))
|
||||||
|
(unless (string-empty-p +latex-bibtex-dir)
|
||||||
|
(setq bibtex-completion-library-path (list +latex-bibtex-dir)
|
||||||
|
bibtex-completion-pdf-field "file"
|
||||||
|
bibtex-completion-notes-path (f-expand "notes.org" +latex-bibtex-dir)
|
||||||
|
bibtex-completion-pdf-open-function
|
||||||
|
(lambda (fpath) (async-start-process "open-pdf" "/usr/bin/xdg-open" nil fpath)))))
|
||||||
|
|
||||||
(def-package! company-auctex
|
(def-package! company-auctex
|
||||||
:when (featurep! :completion company)
|
:when (featurep! :completion company)
|
||||||
:commands company-auctex-init
|
:commands (company-auctex-init)
|
||||||
:init
|
:init
|
||||||
;; We can't use the (set! :company-backend ...) because Auctex reports its
|
;; We can't use the (set! :company-backend ...) because Auctex reports its
|
||||||
;; major-mode as `latex-mode', but uses LaTeX-mode-hook for its mode, which is
|
;; major-mode as `latex-mode', but uses LaTeX-mode-hook for its mode, which
|
||||||
;; :company-backend doesn't anticipate (and shouldn't have to!)
|
;; is not anticipated by :company-backend (and shouldn't have to!)
|
||||||
(add-hook! LaTeX-mode
|
(add-hook! LaTeX-mode
|
||||||
(make-variable-buffer-local 'company-backends)
|
(make-variable-buffer-local 'company-backends)
|
||||||
(company-auctex-init)))
|
(company-auctex-init)))
|
||||||
|
|
||||||
|
;; Nicely indent lines that have wrapped when visual line mode is activated
|
||||||
|
(def-package! adaptive-wrap
|
||||||
|
:commands (adaptive-wrap-prefix-mode)
|
||||||
|
:init
|
||||||
|
(add-hook! LaTeX-mode 'adaptive-wrap-prefix-mode)
|
||||||
|
(setq-default adaptive-wrap-extra-indent 0))
|
||||||
|
|
|
@ -2,7 +2,18 @@
|
||||||
;;; lang/latex/packages.el
|
;;; lang/latex/packages.el
|
||||||
|
|
||||||
(package! auctex)
|
(package! auctex)
|
||||||
;; (package! auctex-latexmk)
|
(package! flyspell)
|
||||||
|
(package! adaptive-wrap)
|
||||||
|
|
||||||
|
;; Optional module features:
|
||||||
|
|
||||||
|
(when (featurep! +latexmk)
|
||||||
|
(package! auctex-latexmk))
|
||||||
|
|
||||||
|
(when (featurep! +preview-pane)
|
||||||
|
(package! latex-preview-pane))
|
||||||
|
|
||||||
|
;; Features according to other user selected options
|
||||||
|
|
||||||
(when (featurep! :completion company)
|
(when (featurep! :completion company)
|
||||||
(package! company-auctex))
|
(package! company-auctex))
|
||||||
|
@ -10,3 +21,4 @@
|
||||||
(package! ivy-bibtex))
|
(package! ivy-bibtex))
|
||||||
(when (featurep! :completion helm)
|
(when (featurep! :completion helm)
|
||||||
(package! helm-bibtex))
|
(package! helm-bibtex))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue