>From 06d63ae0b497a652413b44ddcd24a72e931e364d Mon Sep 17 00:00:00 2001 From: Arash Esbati Date: Sat, 18 Jul 2015 09:25:42 +0200 Subject: [PATCH 1/7] Parse user-defined new column types. --- ChangeLog | 5 +++++ style/array.el | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2813370..148c741 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-07-18 Arash Esbati + + * style/array.el: Parse user-defined new column types and add them + to `LaTeX-array-column-letters'. + 2015-07-09 Mosè Giordano * latex/README: restore file deleted by mistake when preview/ diff --git a/style/array.el b/style/array.el index 51a27e8..058eb92 100644 --- a/style/array.el +++ b/style/array.el @@ -1,6 +1,6 @@ ;;; array.el --- AUCTeX style for `array.sty' -;; Copyright (C) 2013 Free Software Foundation, Inc. +;; Copyright (C) 2013, 2015 Free Software Foundation, Inc. ;; Author: Mads Jensen ;; Maintainer: address@hidden @@ -29,11 +29,57 @@ ;;; Code: +(require 'tex) + +(TeX-auto-add-type "array-newcolumntype" "LaTeX") + +(defvar LaTeX-array-newcolumntype-regexp + '("\\\\newcolumntype{\\([a-zA-Z]+\\)}" + 1 LaTeX-auto-array-newcolumntype) + "Matches the argument of `\\newcolumntype' from `array' +package.") + +(defun LaTeX-array-auto-prepare () + "Clear `LaTeX-auto-array-newcolumntype' before parsing." + (setq LaTeX-auto-array-newcolumntype nil)) + +(defun LaTeX-array-auto-cleanup () + "Move parsed column specification from +`LaTeX-auto-array-newcolumntype' to `LaTeX-array-column-letters'." + (when (LaTeX-array-newcolumntype-list) + (LaTeX-array-update-column-letters))) + +(defun LaTeX-array-update-column-letters () + "Update and uniquify the value of `LaTeX-array-column-letters' +and make it buffer local. " + (set (make-local-variable 'LaTeX-array-column-letters) + (mapconcat 'identity + (TeX-delete-duplicate-strings + (split-string + (concat LaTeX-array-column-letters + (mapconcat 'car (LaTeX-array-newcolumntype-list) "")) + "" t)) + ""))) + +(add-hook 'TeX-auto-prepare-hook #'LaTeX-array-auto-prepare t) +(add-hook 'TeX-auto-cleanup-hook #'LaTeX-array-auto-cleanup t) +(add-hook 'TeX-update-style-hook #'TeX-auto-parse t) + (TeX-add-style-hook "array" (lambda () + + (TeX-auto-add-regexp LaTeX-array-newcolumntype-regexp) + (TeX-add-symbols - '("newcolumntype" "Column type" [ "Number of arguments" ] t) + '("newcolumntype" + (TeX-arg-eval + (lambda () + (let ((col (TeX-read-string "Column type: "))) + (LaTeX-add-array-newcolumntypes col) + (LaTeX-array-update-column-letters) + (format "%s" col)))) + [ "Number of arguments" ] t) '("showcols" 0) '("firsthline" 0) '("lasthline" 0)) @@ -43,7 +89,8 @@ (LaTeX-add-lengths "extratabsurround" "extrarowheight") ;; `array.sty' adds some new column specification letters. - (set (make-local-variable 'LaTeX-array-column-letters) "clrpmb")) + (set (make-local-variable 'LaTeX-array-column-letters) + (concat LaTeX-array-column-letters "m" "b"))) LaTeX-dialect) (defvar LaTeX-array-package-options nil -- 2.4.5