Add some extra bibtex stuff
This commit is contained in:
parent
cf50a7c5b7
commit
93ed2b9e39
78
init.el
78
init.el
@ -136,7 +136,8 @@
|
|||||||
tab-width 4
|
tab-width 4
|
||||||
fill-column 80
|
fill-column 80
|
||||||
comment-multi-line t
|
comment-multi-line t
|
||||||
comment-empty-lines 'eol)
|
comment-empty-lines 'eol
|
||||||
|
show-trailing-whitespace t)
|
||||||
|
|
||||||
;; Tree sitter download locations
|
;; Tree sitter download locations
|
||||||
(setq treesit-language-source-alist
|
(setq treesit-language-source-alist
|
||||||
@ -917,6 +918,81 @@ COMMAND and COMINT are like `compile'."
|
|||||||
`(,(concat
|
`(,(concat
|
||||||
(regexp-opt '("gschema" "gresource" "ui")) "\\'") . nxml-mode)))
|
(regexp-opt '("gschema" "gresource" "ui")) "\\'") . nxml-mode)))
|
||||||
|
|
||||||
|
;; Bibtex (built in)
|
||||||
|
(use-package bibtex
|
||||||
|
:ensure nil
|
||||||
|
:defer nil
|
||||||
|
:config
|
||||||
|
(defun my/bibtex-in-entry-p (&optional exclude-braces)
|
||||||
|
"Return t is point is inside a BibTeX entry.
|
||||||
|
When EXCLUDE-BRACES is non-nil, don't count the first and last brace of the
|
||||||
|
entry as in the entry. That is, if the point is on the first { or last } of the
|
||||||
|
entry, return nil."
|
||||||
|
(save-excursion
|
||||||
|
;; go to top level and check if the character at point is {
|
||||||
|
(when (and (not exclude-braces) (= ?{ (char-after)))
|
||||||
|
(forward-char))
|
||||||
|
(let ((start-pos (point))
|
||||||
|
(last-valid (point)))
|
||||||
|
(condition-case _
|
||||||
|
(while t
|
||||||
|
(up-list 1 t t)
|
||||||
|
(setq last-valid (point)))
|
||||||
|
(error
|
||||||
|
(and
|
||||||
|
(= ?\} (char-before last-valid))
|
||||||
|
;; up-point moves to the char after the last brace, so if the point
|
||||||
|
;; started there, we aren't in the entry
|
||||||
|
(not (= start-pos last-valid))
|
||||||
|
(or (not exclude-braces)
|
||||||
|
(not (= start-pos (1- last-valid))))))))))
|
||||||
|
(defvar my/bibtex-indent-width 4
|
||||||
|
"Width to indent for `my/bibtex-calculate-indentation'.")
|
||||||
|
(defun my/bibtex-calculate-indentation ()
|
||||||
|
"Calculate the column to indent to on the current line."
|
||||||
|
(save-excursion
|
||||||
|
(back-to-indentation)
|
||||||
|
(if (my/bibtex-in-entry-p t)
|
||||||
|
my/bibtex-indent-width
|
||||||
|
0)))
|
||||||
|
(defun my/bibtex-empty-line-p ()
|
||||||
|
"Return t if the current line is only blank characters."
|
||||||
|
(save-excursion
|
||||||
|
(beginning-of-line)
|
||||||
|
(looking-at (rx (* blank) eol))))
|
||||||
|
(defun my/bibtex-indent-line ()
|
||||||
|
"Indent the current line."
|
||||||
|
(interactive)
|
||||||
|
(save-excursion
|
||||||
|
(beginning-of-line)
|
||||||
|
(when (my/bibtex-empty-line-p)
|
||||||
|
(delete-region (point) (match-end 0)))
|
||||||
|
(indent-to (my/bibtex-calculate-indentation)))
|
||||||
|
(when (looking-at (rx (+ blank) eol))
|
||||||
|
(end-of-line)))
|
||||||
|
(defun my/bibtex-indent-or-find-text ()
|
||||||
|
"Either indent the current line or jump to the current fields text.
|
||||||
|
If the current line is only whitespace call `my/bibtex-calculate-indentation',
|
||||||
|
otherwise, call `bibtex-find-text'."
|
||||||
|
(interactive)
|
||||||
|
(if (my/bibtex-empty-line-p)
|
||||||
|
(my/bibtex-indent-line)
|
||||||
|
(bibtex-find-text)))
|
||||||
|
(defun my/bibtex-indent-or-find-text-and-insert ()
|
||||||
|
"Like `my/bibtex-indent-or-find-text', but enter insert mode after."
|
||||||
|
(interactive)
|
||||||
|
(my/bibtex-indent-or-find-text)
|
||||||
|
(if (my/bibtex-empty-line-p)
|
||||||
|
(evil-append 1)
|
||||||
|
(evil-insert 1)))
|
||||||
|
(defun my/-bibtex-setup-indent ()
|
||||||
|
(setq-local indent-line-function 'my/bibtex-indent-line))
|
||||||
|
(add-hook 'bibtex-mode-hook 'my/-bibtex-setup-indent)
|
||||||
|
(define-key bibtex-mode-map (kbd "RET") 'newline-and-indent)
|
||||||
|
(define-key bibtex-mode-map (kbd "TAB") 'my/bibtex-indent-or-find-text)
|
||||||
|
(evil-define-key 'normal bibtex-mode-map
|
||||||
|
(kbd "TAB") 'my/bibtex-indent-or-find-text-and-insert))
|
||||||
|
|
||||||
;; AUCTeX
|
;; AUCTeX
|
||||||
(use-package auctex
|
(use-package auctex
|
||||||
:hook ((LaTeX-mode . turn-on-reftex)
|
:hook ((LaTeX-mode . turn-on-reftex)
|
||||||
|
Loading…
Reference in New Issue
Block a user