emacs/code/elpa/auctex-13.2.1/context-en.el

230 lines
8.1 KiB
EmacsLisp

;;; context-en.el --- Support for the ConTeXt english interface. -*- lexical-binding: t; -*-
;; Copyright (C) 2003-2004, 2006, 2008
;; 2010, 2014, 2020-2023 Free Software Foundation, Inc.
;; Maintainer: Berend de Boer <berend@pobox.com>
;; Keywords: tex
;; This file is part of AUCTeX.
;; AUCTeX is free software; you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;; AUCTeX is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with AUCTeX; see the file COPYING. If not, write to the Free
;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
;; 02110-1301, USA.
;;; Commentary:
;; This file is loaded by context.el when required.
;;; Code:
;; Build upon ConTeXt
(require 'context)
;;; ConText macro names
;;; Code:
(defvar ConTeXt-environment-list-en
'("alignment" "appendices"
"background" "backmatter" "bodymatter" "bodypart" "buffer"
"code" "color" "columns" "combination"
"encoding" "extroductions"
"fact" "formula" "framedcode" "framedtext" "frontmatter"
"helptext" "hiding"
"itemize"
"legend" "line" "linecorrection" "linenumbering" "lines"
"localenvironment" "localfootnotes"
"makeup" "mapping" "marginblock" "marginedge" "marginrule" "mode"
"narrower" "notmode"
"opposite"
"packed" "pagecomment" "pagefigure" "positioning" "postponing"
"quotation"
"raster" "register"
"standardmakeup"
"table" "tabulate" "TEXpage" "text" "textbackground" "typing"
"unpacked"
;; project structure
"component" "environment" "product" "project"
;; flowcharts, if you have loaded this module
"FLOWcell" "FLOWchart"
;; typesetting computer languages
"EIFFEL" "JAVA" "JAVASCRIPT" "MP" "PASCAL" "PERL" "SQL" "TEX" "XML"
;; some metapost environments
"MPpositiongraphic" "useMPgraphic" "MPcode" "reusableMPgraphic"
"uniqueMPgraphic")
"List of the ConTeXt en interface start/stop pairs.")
(defvar ConTeXt-define-list-en
'("accent"
"background" "blank" "block" "blocks" "bodyfont" "bodyfontenvironment"
"buffer"
"casemap" "character" "color" "colorgroup" "combinedlist" "command"
"description" "enumeration"
"float" "font" "fontsynonym" "framedtext" "head"
"indenting" "label"
"logo" "overlay"
"palet" "program" "startstop" "type" "typing")
"List of the names of ConTeXt en interface macro's that define things.")
(defvar ConTeXt-setup-list-en
'("align" "arranging" "background" "backgrounds" "blackrules"
"blank" "block" "bodyfont" "bodyfontenvironment" "bottom"
"bottomtexts" "buffer" "capitals" "caption" "captions" "color"
"colors" "columns" "combinations" "combinedlist" "descriptions"
"enumerations" "externalfigures" "fillinlines" "fillinrules" "float"
"floats" "footer" "footertexts" "footnodedefinition" "footnotes"
"framed" "framedtexts" "head" "header" "headertexts" "headnumber"
"heads" "headtext" "hyphenmark" "indentations" "indenting" "inmargin"
"interlinespace" "itemize" "items" "labeltext" "language" "layout"
"linenumbering" "lines" "list" "makeup" "marginblocks"
"marginrules" "marking" "narrower" "oppositeplacing"
"pagecomment" "pagenumber" "pagenumbering" "palet" "papersize" "paragraphs"
"quote" "referencing" "register"
"screens" "section" "sectionblock" "sorting" "spacing"
"subpagenumber" "synonyms" "text" "textrules" "texttexts" "thinrules"
"tolerance" "top" "toptexts" "type" "typing" "underbar" "whitespace")
"List of the names of ConTeXt en interface macro's that setup things.")
;; referencing in ConTeXt
(defvar ConTeXt-referencing-list-en
'("in" "at" "about" "pagereference" "textreference" "reference")
"List of ConTeXt en macro's that are used for referencing."
)
;; lists some place macro's as well, should perhaps be under separate menu
(defvar ConTeXt-other-macro-list-en
'("abbreviation" "adaptlayout" "at" "combinepages" "copypages"
"externalfigure" "framed" "from" "input" "insertpages" "filterpages"
"getbuffer" "goto"
"hideblocks" "keepblocks"
"leftaligned" "midaligned"
"obeyspaces"
"page"
"placecontent" "placeexternalfigure" "placefigure" "placelogos" "placetable"
"processblocks" "protect"
"raggedcenter" "rightaligned" "rotate"
"scale" "selectblocks" "showexternalfigures" "slicepages"
"useexternalfigure" "unprotect" "url" "useblocks" "usemodule" "useURL"
"version")
"List of ConTeXt en interface macro's that are not an environment nor a setup.")
(defun ConTeXt-define-command-en (what)
"The ConTeXt en interface way of creating a define command."
(concat "define" what))
(defun ConTeXt-setup-command-en (what)
"The ConTeXt en interface way of creating a setup command."
(concat "setup" what))
(defvar ConTeXt-project-structure-list-en
'("project" "environment" "product" "component")
"List of ConTeXt project structure elements for its en interface.
List should be in logical order.")
(defvar ConTeXt-section-block-list-en
'("frontmatter" "bodymatter" "appendices" "backmatter")
"List of ConTeXt section block names for its en interface.
List should be in logical order.")
;; TODO:
;; ConTeXt has alternative sections like title and subject. Currently
;; the level is used to find the section name, so the alternative
;; names are never found. Have to start using the section name instead
;; of the number.
(defvar ConTeXt-numbered-section-list-en
'(("part" 0)
("chapter" 1)
("section" 2)
("subsection" 3)
("subsubsection" 4))
"List of the names of ConTeXt numbered sections for its en interface.")
(defvar ConTeXt-unnumbered-section-list-en
'(("title" 1)
("subject" 2)
("subsubject" 3)
("subsubsubject" 4))
"List of the names of ConTeXt unnumbered sections for its en interface.")
(defvar ConTeXt-section-list-en
(append ConTeXt-numbered-section-list-en ConTeXt-unnumbered-section-list-en)
)
(defvar ConTeXt-text-en "text"
"The ConTeXt en interface body text group.")
(defvar ConTeXt-item-list-en
'("item" "its" "mar" "ran" "sub" "sym")
"The ConTeXt macro's that are variants of item.")
(defcustom ConTeXt-default-environment-en "itemize"
"The default environment when creating new ones with `ConTeXt-environment'."
:group 'ConTeXt-en-environment
:type 'string)
(defvar ConTeXt-extra-paragraph-commands-en
'("crlf" "par" "place[A-Za-z]+")
"List of ConTeXt macros that should have their own line.
That is, besides the section(-block) commands.")
;; Emacs en menu names and labels should go here
;; to be done
;;; Mode
(defun ConTeXt-en-mode-initialization ()
"ConTeXt english interface specific initialization."
;; FIXME: Move to `ConTeXt-mode-common-initialization' replacing
;; `ConTeXt-environment-list-en' with `ConTeXt-environment-list'?
(mapc #'ConTeXt-add-environments (reverse ConTeXt-environment-list-en))
(TeX-add-symbols
'("but" ConTeXt-arg-define-ref (TeX-arg-literal " "))
'("item" ConTeXt-arg-define-ref (TeX-arg-literal " "))
'("items" [ConTeXt-arg-setup] (TeX-arg-string "Comma separated list"))
'("its" ConTeXt-arg-define-ref (TeX-arg-literal " "))
'("nop" (TeX-arg-literal " "))
'("ran" TeX-arg-string (TeX-arg-literal " "))
'("sub" ConTeXt-arg-define-ref (TeX-arg-literal " "))
'("sym" (TeX-arg-string "Symbol") (TeX-arg-literal " "))))
;;;###autoload
(defun context-en-mode ()
"Major mode for editing files for ConTeXt using its english interface.
Special commands:
\\{ConTeXt-mode-map}
Entering `context-mode' calls the value of `text-mode-hook',
then the value of `TeX-mode-hook', and then the value
of `ConTeXt-mode-hook'."
(interactive)
;; set the ConTeXt interface
(setq ConTeXt-current-interface "en")
;; initialization
(ConTeXt-mode-common-initialization)
(ConTeXt-en-mode-initialization)
;; set mode line
(setq TeX-base-mode-name "ConTeXt-en")
(TeX-set-mode-name))
(provide 'context-en)
;;; context-en.el ends here