[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Extending env definitions or introducing new ones?
From: |
Arash Esbati |
Subject: |
Extending env definitions or introducing new ones? |
Date: |
Sat, 05 Nov 2022 13:30:39 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 |
Hi all,
we have the situation that many AUCTeX styles bake their own definitions
for inserting environments; mostly for key-val options and other sort of
arguments. The issue is that latex.el offers only `LaTeX-env-args'.
Suppose you want to insert an environment with `LaTeX-env-label' and
also have some other arguments after \begin{evn-name}, then you copy the
definition of `LaTeX-env-label' and fiddle the rest into it.
I see two solutions for this:
1. Extend the functions we have, e.g. take this current definition:
(defun LaTeX-env-label (environment)
"Insert ENVIRONMENT and prompt for label."
(LaTeX-insert-environment environment)
(when (TeX-active-mark)
;; Point is at the end of the region. Move it back to the
;; beginning of the region.
(exchange-point-and-mark)
(indent-according-to-mode))
(when (LaTeX-label environment 'environment)
(LaTeX-newline)
(indent-according-to-mode))
(when (TeX-active-mark)
(indent-region (point) (mark))
;; Restore the positions of point and mark.
(exchange-point-and-mark)))
And turn it into this:
(defun LaTeX--env-parse-args (args)
(when args
(save-excursion
(LaTeX-find-matching-begin)
(end-of-line)
(let ((TeX-exit-mark (or TeX-exit-mark
(make-marker))))
(TeX-parse-arguments args)))))
(defun LaTeX-env-label (environment &rest args)
"Insert ENVIRONMENT and prompt for label."
(LaTeX-insert-environment environment)
(when (TeX-active-mark)
;; Point is at the end of the region. Move it back to the
;; beginning of the region.
(exchange-point-and-mark)
(indent-according-to-mode))
(when (LaTeX-label environment 'environment)
(LaTeX-newline)
(indent-according-to-mode))
(when (TeX-active-mark)
(indent-region (point) (mark))
;; Restore the positions of point and mark.
(exchange-point-and-mark))
(LaTeX--env-parse-args args))
2. Introduce new function like this:
(defun LaTeX--env-parse-args (args)
(when args
(save-excursion
(LaTeX-find-matching-begin)
(end-of-line)
(let ((TeX-exit-mark (or TeX-exit-mark
(make-marker))))
(TeX-parse-arguments args)))))
(defun LaTeX-env-label-args (environment &rest args)
(LaTeX-env-label environment)
(LaTeX--env-parse-args args))
WDYT?
Best, Arash
- Extending env definitions or introducing new ones?,
Arash Esbati <=