From 57366f385a2f1f35bbe741d7542096db81368c72 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Thu, 17 Mar 2011 11:23:07 +0100 Subject: Big changes, last one before I wipe it all. * Added muse * Added graphviz-dot-mode * Remove all trailing whitespace on save. This is the last commit I'm going to do before throwing it all away again. --- emacs.d/elisp/muse/muse-regexps.el | 270 +++++++++++++++++++++++++++++++++++++ 1 file changed, 270 insertions(+) create mode 100644 emacs.d/elisp/muse/muse-regexps.el (limited to 'emacs.d/elisp/muse/muse-regexps.el') diff --git a/emacs.d/elisp/muse/muse-regexps.el b/emacs.d/elisp/muse/muse-regexps.el new file mode 100644 index 0000000..ad3ce3f --- /dev/null +++ b/emacs.d/elisp/muse/muse-regexps.el @@ -0,0 +1,270 @@ +;;; muse-regexps.el --- define regexps used by Muse + +;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 +;; Free Software Foundation, Inc. + +;; This file is part of Emacs Muse. It is not part of GNU Emacs. + +;; Emacs Muse 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. + +;; Emacs Muse 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 Emacs Muse; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: + +;; This file is the part of the Muse project that describes regexps +;; that are used throughout the project. + +;;; Contributors: + +;;; Code: + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Muse Regular Expressions +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defgroup muse-regexp nil + "Regular expressions used in publishing and syntax highlighting." + :group 'muse) + +;;; Deal with the lack of character classes for regexps in Emacs21 and +;;; XEmacs + +(defcustom muse-regexp-use-character-classes 'undecided + "Indicate whether to use extended character classes like [:space:]. +If 'undecided, Muse will use them if your emacs is known to support them. + +Emacs 22 and Emacs 21.3.50 are known to support them. XEmacs +does not support them. + +Emacs 21.2 or higher support them, but with enough annoying edge +cases that the sanest default is to leave them disabled." + :type '(choice (const :tag "Yes" t) + (const :tag "No" nil) + (const :tag "Let Muse decide" undecided)) + :group 'muse-regexp) + +(defvar muse-regexp-emacs-revision + (save-match-data + (and (string-match "^[0-9]+\\.[0-9]+\\.\\([0-9]+\\)" + emacs-version) + (match-string 1 emacs-version) + (string-to-number (match-string 1 emacs-version)))) + "The revision number of this version of Emacs.") + +(defun muse-extreg-usable-p () + "Return non-nil if extended character classes can be used, +nil otherwise. + +This is used when deciding the initial values of the muse-regexp +options." + (cond + ((eq muse-regexp-use-character-classes t) + t) + ((eq muse-regexp-use-character-classes nil) + nil) + ((featurep 'xemacs) nil) ; unusable on XEmacs + ((> emacs-major-version 21) t) ; usable if > 21 + ((< emacs-major-version 21) nil) + ((< emacs-minor-version 3) nil) + ;; don't use if version is of format 21.x + ((null muse-regexp-emacs-revision) nil) + ;; only trust 21.3.50 or higher + ((>= muse-regexp-emacs-revision 50) t) + (t nil))) + +(defcustom muse-regexp-blank + (if (muse-extreg-usable-p) + "[:blank:]" + " \t") + "Regexp to use in place of \"[:blank:]\". +This should be something that matches spaces and tabs. + +It is like a regexp, but should be embeddable inside brackets. +Muse will detect the appropriate value correctly most of +the time." + :type 'string + :options '("[:blank:]" " \t") + :group 'muse-regexp) + +(defcustom muse-regexp-alnum + (if (muse-extreg-usable-p) + "[:alnum:]" + "A-Za-z0-9") + "Regexp to use in place of \"[:alnum:]\". +This should be something that matches all letters and numbers. + +It is like a regexp, but should be embeddable inside brackets. +muse will detect the appropriate value correctly most of +the time." + :type 'string + :options '("[:alnum:]" "A-Za-z0-9") + :group 'muse-regexp) + +(defcustom muse-regexp-lower + (if (muse-extreg-usable-p) + "[:lower:]" + "a-z") + "Regexp to use in place of \"[:lower:]\". +This should match all lowercase characters. + +It is like a regexp, but should be embeddable inside brackets. +muse will detect the appropriate value correctly most of +the time." + :type 'string + :options '("[:lower:]" "a-z") + :group 'muse-regexp) + +(defcustom muse-regexp-upper + (if (muse-extreg-usable-p) + "[:upper:]" + "A-Z") + "Regexp to use in place of \"[:upper:]\". +This should match all uppercase characters. + +It is like a regexp, but should be embeddable inside brackets. +muse will detect the appropriate value correctly most of +the time." + :type 'string + :options '("[:upper:]" "A-Z") + :group 'muse-regexp) + +;;; Regexps used to define Muse publishing syntax + +(defcustom muse-list-item-regexp + (concat "^%s\\(\\([^\n" muse-regexp-blank "].*?\\)?::" + "\\(?:[" muse-regexp-blank "]+\\|$\\)" + "\\|[" muse-regexp-blank "]-[" muse-regexp-blank "]*" + "\\|[" muse-regexp-blank "][0-9]+\\.[" muse-regexp-blank "]*\\)") + "Regexp used to match the beginning of a list item. +The '%s' will be replaced with a whitespace regexp when publishing." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-ol-item-regexp (concat "\\`[" muse-regexp-blank "]+[0-9]+\\.") + "Regexp used to match an ordered list item." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-ul-item-regexp (concat "\\`[" muse-regexp-blank "]+-") + "Regexp used to match an unordered list item." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-dl-term-regexp + (concat "[" muse-regexp-blank "]*\\(.+?\\)[" + muse-regexp-blank "]+::\\(?:[" muse-regexp-blank "]+\\|$\\)") + "Regexp used to match a definition list term. +The first match string must contain the term." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-dl-entry-regexp (concat "\\`[" muse-regexp-blank "]*::") + "Regexp used to match a definition list entry." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-table-field-regexp + (concat "[" muse-regexp-blank "]+\\(|+\\)\\(?:[" + muse-regexp-blank "]\\|$\\)") + "Regexp used to match table separators when publishing." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-table-line-regexp (concat ".*" muse-table-field-regexp ".*") + "Regexp used to match a table line when publishing." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-table-hline-regexp (concat "[" muse-regexp-blank + "]*|[-+]+|[" muse-regexp-blank + "]*") + "Regexp used to match a horizontal separator line in a table." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-table-el-border-regexp (concat "[" muse-regexp-blank "]*" + "\\+\\(-*\\+\\)+" + "[" muse-regexp-blank "]*") + "Regexp used to match the beginning and end of a table.el-style table." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-table-el-line-regexp (concat "[" muse-regexp-blank "]*" + "|\\(.*|\\)*" + "[" muse-regexp-blank "]*") + "Regexp used to match a table line of a table.el-style table." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-tag-regexp + (concat "<\\([^/" muse-regexp-blank "\n][^" muse-regexp-blank + "\n]*\\)\\(\\s-+[^<>]+[^\n]\\)?\\(/\\)?>") + "A regexp used to find XML-style tags within a buffer when publishing. +Group 1 should be the tag name, group 2 the properties, and group +3 the optional immediate ending slash." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-explicit-link-regexp + "\\[\\[\\([^][\n]+\\)\\]\\(?:\\[\\([^][\n]+\\)\\]\\)?\\]" + "Regexp used to match [[target][description]] links. +Paren group 1 must match the URL, and paren group 2 the description." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-implicit-link-regexp + (concat "\\([^" muse-regexp-blank "\n]+\\)") + "Regexp used to match an implicit link. +An implicit link is the largest block of text to be checked for +URLs and bare WikiNames by the `muse-link-at-point' function. +Paren group 1 is the text to be checked. + +URLs are checked by default. To get WikiNames, load +muse-wiki.el. + +This is only used when you are using muse-mode.el, but not +muse-colors.el. + +If the above applies, and you want to match things with spaces in +them, you will have to modify this." + :type 'regexp + :group 'muse-regexp) + +;;; Regexps used to determine file types + +(defcustom muse-file-regexp + (concat "\\`[~/]\\|\\?\\|/\\'\\|\\." + "\\(html?\\|pdf\\|mp3\\|el\\|zip\\|txt\\|tar\\)" + "\\(\\.\\(gz\\|bz2\\)\\)?\\'") + "A link matching this regexp will be regarded as a link to a file." + :type 'regexp + :group 'muse-regexp) + +(defcustom muse-image-regexp + "\\.\\(eps\\|gif\\|jp\\(e?g\\)\\|p\\(bm\\|ng\\)\\|tiff\\|x\\([bp]m\\)\\)\\'" + "A link matching this regexp will be published inline as an image. +For example: + + [[./wife.jpg][A picture of my wife]] + +If you omit the description, the alt tag of the resulting HTML +buffer will be the name of the file." + :type 'regexp + :group 'muse-regexp) + +(provide 'muse-regexps) + +;;; muse-regexps.el ends here -- cgit v1.2.3-54-g00ecf