Mercurial > emacs
view lisp/case-table.el @ 14789:d68b71228abd
(bibtex-pop): New generic function which unifies the
functionality of bibtex-pop-previous and bibtex-pop-next. Now,
bibtex-pop moves to the end of field after the pop. Concatenated
strings are now handled correctly. Delimiters are not added to
non-delimited entries. Changed occurences of
bibtex-text-in-cfield to bibtex-text-in-field.
(bibtex-pop-previous, bibtex-pop-next): Call bibtex-pop.
(bibtex-complete-string): Fixed bug that removed delimiters
around the following field if current field is already
undelimited on completion.
(bibtex-complete-string, bibtex-remove-double-quotes-or-braces):
Only remove delimiters if field text is not concatenated.
(bibtex-font-lock-keywords): Use the same regexps used
in all other places of bibtex.el to parse the buffer.
(bibtex-mode): Changed the definition of font-lock-defaults,
so that quote-delimited entries aren't fontified as strings anymore.
(bibtex-parse-keys): Changed the regexp used for finding crossref entries.
(bibtex-field-const, bibtex-reference-key): Fixed the regexp
to match more of the characters allowed here by BibTeX/LaTeX.
(bibtex-field-name): Made it less restrictive.
(bibtex-field-string): Changed so that quote-delimited entries
with quotes inside aren't a problem anymore. Changed nesting
level of braces in entries to support three inner braces.
(bibtex-validate-buffer): By giving an optional argument, the
user can now let it not validate the whole buffer, but only
the portion starting at point. Small modification in strategy
used to find next entry.
(bibtex-print-help-message): Ignore case in field name when
searching for help text.
(bibtex-submit-bug-report): New function.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 08 Mar 1996 17:42:30 +0000 |
parents | 83f275dcd93a |
children | 249fdb84dd26 |
line wrap: on
line source
;;; case-table.el --- code to extend the character set and support case tables. ;; Copyright (C) 1988, 1994 Free Software Foundation, Inc. ;; Author: Howard Gayle ;; Maintainer: FSF ;; Keywords: i18n ;; This file is part of GNU Emacs. ;; GNU Emacs 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 2, or (at your option) ;; any later version. ;; GNU Emacs 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 GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; Written by: ;; TN/ETX/TX/UMG Howard Gayle UUCP : seismo!enea!erix!howard ;; Telefonaktiebolaget L M Ericsson Phone: +46 8 719 55 65 ;; Ericsson Telecom Telex: 14910 ERIC S ;; S-126 25 Stockholm FAX : +46 8 719 64 82 ;; Sweden ;;; Code: ;;;###autoload (defun describe-buffer-case-table () "Describe the case table of the current buffer." (interactive) (let ((description (make-char-table 'case-table))) (map-char-table (function (lambda (key value) (set-char-table-range description key (cond ((null key) "case-invariant") ((/= key (downcase key)) (concat "uppercase, matches " (char-to-string (downcase key)))) ((/= key (upcase key)) (concat "lowercase, matches " (char-to-string (upcase key)))) (t "case-invariant"))))) (current-case-table)) (save-excursion (with-output-to-temp-buffer "*Help*" (set-buffer standard-output) (describe-vector description) (help-mode))))) ;;;###autoload (defun copy-case-table (case-table) (let ((copy (copy-sequence case-table))) ;; Clear out the extra slots so that they will be ;; recomputed from the main (downcase) table. (set-char-table-extra-slot copy 0 nil) (set-char-table-extra-slot copy 1 nil) (set-char-table-extra-slot copy 2 nil) copy)) ;;;###autoload (defun set-case-syntax-delims (l r table) "Make characters L and R a matching pair of non-case-converting delimiters. This sets the entries for L and R in TABLE, which is a string that will be used as the downcase part of a case table. It also modifies `standard-syntax-table' to indicate left and right delimiters." (aset table l l) (aset table r r) ;; Clear out the extra slots so that they will be ;; recomputed from the main (downcase) table. (set-char-table-extra-slot table 0 nil) (set-char-table-extra-slot table 1 nil) (set-char-table-extra-slot table 2 nil) (modify-syntax-entry l (concat "(" (char-to-string r) " ") (standard-syntax-table)) (modify-syntax-entry r (concat ")" (char-to-string l) " ") (standard-syntax-table))) ;;;###autoload (defun set-case-syntax-pair (uc lc table) "Make characters UC and LC a pair of inter-case-converting letters. This sets the entries for characters UC and LC in TABLE, which is a string that will be used as the downcase part of a case table. It also modifies `standard-syntax-table' to give them the syntax of word constituents." (aset table uc lc) (aset table lc lc) (set-char-table-extra-slot table 0 nil) (set-char-table-extra-slot table 1 nil) (set-char-table-extra-slot table 2 nil) (modify-syntax-entry lc "w " (standard-syntax-table)) (modify-syntax-entry uc "w " (standard-syntax-table))) ;;;###autoload (defun set-case-syntax (c syntax table) "Make characters C case-invariant with syntax SYNTAX. This sets the entries for character C in TABLE, which is a string that will be used as the downcase part of a case table. It also modifies `standard-syntax-table'. SYNTAX should be \" \", \"w\", \".\" or \"_\"." (aset table c c) (set-char-table-extra-slot table 0 nil) (set-char-table-extra-slot table 1 nil) (set-char-table-extra-slot table 2 nil) (modify-syntax-entry c syntax (standard-syntax-table))) (provide 'case-table) ;;; case-table.el ends here