Mercurial > emacs
view lisp/textmodes/bib-mode.el @ 57856:df80d19d7a2e
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-660
Merge from gnus--rel--5.10
Patches applied:
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-65
Update from CVS
2004-11-01 Reiner Steib <Reiner.Steib@gmx.de>
* lisp/gnus/gnus-msg.el (gnus-summary-resend-default-address): Add :version.
* lisp/gnus/tls.el (tls-process-connection-type, tls-success)
(tls-certtool-program): Add :version.
* lisp/gnus/starttls.el (starttls-gnutls-program, starttls-use-gnutls)
(starttls-extra-arguments, starttls-process-connection-type)
(starttls-connect, starttls-failure, starttls-success):
* lisp/gnus/spam-stat.el (spam-stat): Add :version.
* lisp/gnus/sieve.el (sieve): Add :version.
* lisp/gnus/sha1.el (sha1): Added :version.
(sha1-use-external): Removed redundant version.
* lisp/gnus/nnmail.el (nnmail-split-fancy-with-parent-ignore-groups)
(nnmail-cache-ignore-groups, nnmail-spool-hook)
(nnmail-split-fancy-match-partial-words)
(nnmail-split-lowercase-expanded):
* lisp/gnus/nndiary.el (nndiary): Add :version.
* lisp/gnus/mml2015.el (mml2015-unabbrev-trust-alist): Add :version.
* lisp/gnus/mml-sec.el (mml-default-sign-method)
(mml-default-encrypt-method, mml-signencrypt-style-alist): Add
:version.
* lisp/gnus/mm-uu.el (mm-uu-diff-groups-regexp): Add :version.
* lisp/gnus/mm-url.el (mm-url-use-external, mm-url-program)
(mm-url-arguments): Add :version.
* lisp/gnus/mm-decode.el (mm-inline-text-html-with-w3m-keymap)
(mm-attachment-file-modes, mm-decrypt-option)
(mm-w3m-safe-url-regexp): Add :version.
* lisp/gnus/message.el (message-cite-prefix-regexp)
(message-sendmail-envelope-from, message-minibuffer-local-map)
(message-user-fqdn, message-completion-alist): Add :version.
* lisp/gnus/gnus-win.el (gnus-configure-windows-hook)
(gnus-use-frames-on-any-display): Add :version.
* lisp/gnus/gnus-art.el (gnus-article-address-banner-alist)
(gnus-treat-unsplit-urls, gnus-treat-unfold-headers)
(gnus-treat-from-picon, gnus-treat-mail-picon)
(gnus-treat-x-pgp-sig): Add :version.
* lisp/gnus/gnus-sum.el (gnus-spam-mark, gnus-recent-mark)
(gnus-undownloaded-mark, gnus-summary-article-move-hook)
(gnus-summary-article-delete-hook)
(gnus-summary-display-while-building): Add :version.
* lisp/gnus/gnus-start.el (gnus-subscribe-newsgroup-hooks)
(gnus-get-top-new-news-hook):Add :version.
* lisp/gnus/gnus-srvr.el (gnus-server-agent-face, gnus-server-opened-face)
(gnus-server-closed-face, gnus-server-denied-face): Add :version.
* lisp/gnus/gnus-registry.el (gnus-registry): Add :version.
* lisp/gnus/gnus-spec.el (gnus-use-correct-string-widths)
(gnus-make-format-preserve-properties): Add :version.
* lisp/gnus/gnus.el (gnus-group-charter-alist)
(gnus-group-fetch-control-use-browse-url)
(gnus-install-group-spam-parameters): Add :version.
* lisp/gnus/gnus-diary.el (gnus-diary): Add :version.
* lisp/gnus/gnus-delay.el (gnus-delay): Add :version.
* lisp/gnus/gnus-cite.el (gnus-cite-unsightly-citation-regexp)
(gnus-cite-ignore-quoted-from, gnus-cite-attribution-face)
(gnus-cite-blank-line-after-header, gnus-article-boring-faces):
Add :version.
* lisp/gnus/gnus-agent.el (gnus-agent-max-fetch-size)
(gnus-agent-enable-expiration, gnus-agent-queue-mail)
(gnus-agent-prompt-send-queue): Add :version.
* lisp/gnus/deuglify.el (gnus-outlook-deuglify): Add :version.
* lisp/gnus/html2text.el: Beautify code. Improve doc strings. Some checkdoc
cleanup.
(html2text-get-attr, html2text-fix-paragraph): Simplify code.
(html2text-format-tag-list): Added "strong" and "em". From
"Alfred M. Szmidt" <ams@kemisten.nu> (tiny change).
author | Miles Bader <miles@gnu.org> |
---|---|
date | Mon, 01 Nov 2004 23:06:36 +0000 |
parents | 695cf19ef79e |
children | a8fa7c632ee4 375f2633d815 |
line wrap: on
line source
;;; bib-mode.el --- major mode for editing bib files ;; Copyright (C) 1989 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: bib ;; 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: ;; GNU Emacs code to help maintain databases compatible with (troff) ;; refer and lookbib. The file bib-file should be set to your ;; bibliography file. Keys are automagically inserted as you type, ;; and appropriate keys are presented for various kinds of entries. ;;; Code: (defgroup bib nil "Major mode for editing bib files." :prefix "bib-" :group 'external :group 'wp) (defcustom bib-file "~/my-bibliography.bib" "Default name of file used by `addbib'." :type 'file :group 'bib) (defcustom unread-bib-file "~/to-be-read.bib" "Default name of file used by `unread-bib' in Bib mode." :type 'file :group 'bib) (defvar bib-mode-map (copy-keymap text-mode-map)) (define-key bib-mode-map "\C-M" 'return-key-bib) (define-key bib-mode-map "\C-c\C-u" 'unread-bib) (define-key bib-mode-map "\C-c\C-@" 'mark-bib) (define-key bib-mode-map "\e`" 'abbrev-mode) (defun addbib () "Set up editor to add to troff bibliography file specified by global variable `bib-file'. See description of `bib-mode'." (interactive) (find-file bib-file) (goto-char (point-max)) (bib-mode) ) (define-derived-mode bib-mode text-mode "Bib" "Mode for editing `lookbib' style bibliographies. Hit RETURN to get next % field key. If you want to ignore this field, just hit RETURN again. Use `text-mode' to turn this feature off. journal papers: A* T D J V N P K W X articles in books & proceedings: A* T D B E* I C P K W X tech reports: A* T D R I C K W X books: A* T D I C K W X Fields: A uthor T itle D ate J ournal V olume N umber P age K eywords B in book or proceedings E ditor C ity & state I nstitution, school, or publisher R eport number or 'phd thesis' or 'masters thesis' or 'draft' or 'unnumbered' or 'unpublished' W here can be found locally (login name, or ailib, etc.) X comments (not used in indexing) \\[unread-bib] appends current entry to a different file (for example, a file of papers to be read in the future), given by the value of the variable `unread-bib-file'. \\[mark-bib] marks current or previous entry. Abbreviations are saved in `bib-mode-abbrev-table'. Hook can be stored in `bib-mode-hook'. Field keys given by variable `bib-assoc'. Commands: \\{bib-mode-map}" (abbrev-mode 1)) (defconst bib-assoc '((" *$" . "%A ") ("%A ." . "%A ") ("%A $" . "%T ") ("%T " . "%D ") ("%D " . "%J ") ("%J ." . "%V ") ("%V " . "%N ") ("%N " . "%P ") ("%P " . "%K ") ("%K " . "%W ") ("%W " . "%X ") ("%X " . "") ("%J $" . "%B ") ("%B ." . "%E ") ("%E ." . "%E ") ("%E $" . "%I ") ("%I " . "%C ") ("%C " . "%P ") ("%B $" . "%R ") ("%R " . "%I ")) "Describes bibliographic database format. A line beginning with the car of an entry is followed by one beginning with the cdr.") (defun bib-find-key (slots) (cond ((null slots) (if (bobp) "" (progn (previous-line 1) (bib-find-key bib-assoc)))) ((looking-at (car (car slots))) (cdr (car slots))) (t (bib-find-key (cdr slots))) )) (defcustom bib-auto-capitalize t "*True to automatically capitalize appropriate fields in Bib mode." :type 'boolean :group 'bib) (defconst bib-capitalized-fields "%[AETCBIJR]") (defun return-key-bib () "Magic when user hits return, used by `bib-mode'." (interactive) (if (eolp) (let (empty new-key beg-current end-current) (beginning-of-line) (setq empty (looking-at "%. $")) (if (not empty) (progn (end-of-line) (newline) (forward-line -1) )) (end-of-line) (setq end-current (point)) (beginning-of-line) (setq beg-current (point)) (setq new-key (bib-find-key bib-assoc)) (if (and (not empty) bib-auto-capitalize (looking-at bib-capitalized-fields)) (save-excursion (bib-capitalize-title-region (+ (point) 3) end-current))) (goto-char beg-current) (if empty (kill-line nil) (forward-line 1) ) (insert new-key)) (newline))) (defun mark-bib () "Set mark at beginning of current or previous bib entry, point at end." (interactive) (beginning-of-line nil) (if (looking-at "^ *$") (re-search-backward "[^ \n]" nil 2)) (re-search-backward "^ *$" nil 2) (re-search-forward "^%") (beginning-of-line nil) (push-mark (point)) (re-search-forward "^ *$" nil 2) (next-line 1) (beginning-of-line nil)) (defun unread-bib () "Append current or previous entry to file of unread papers named by variable `unread-bib-file'." (interactive) (mark-bib) (if (get-file-buffer unread-bib-file) (append-to-buffer (get-file-buffer unread-bib-file) (mark) (point)) (append-to-file (mark) (point) unread-bib-file))) (defvar bib-capitalize-title-stop-words (concat "the\\|and\\|of\\|is\\|a\\|an\\|of\\|for\\|in\\|to\\|in\\|on\\|at\\|" "by\\|with\\|that\\|its") "Words not to be capitalized in a title (unless the first word).") (defvar bib-capitalize-title-stop-regexp (concat "\\(" bib-capitalize-title-stop-words "\\)\\(\\b\\|'\\)")) (defun bib-capitalize-title-region (begin end) "Like `capitalize-region', but don't capitalize stop words, except the first." (interactive "r") (let ((case-fold-search nil) (orig-syntax-table (syntax-table))) (unwind-protect (save-restriction (set-syntax-table text-mode-syntax-table) (narrow-to-region begin end) (goto-char (point-min)) (if (looking-at "[A-Z][a-z]*[A-Z]") (forward-word 1) (capitalize-word 1)) (while (re-search-forward "\\<" nil t) (if (looking-at "[A-Z][a-z]*[A-Z]") (forward-word 1) (if (let ((case-fold-search t)) (looking-at bib-capitalize-title-stop-regexp)) (downcase-word 1) (capitalize-word 1))) )) (set-syntax-table orig-syntax-table)))) (defun bib-capitalize-title (s) "Like `capitalize', but don't capitalize stop words, except the first." (save-excursion (set-buffer (get-buffer-create "$$$Scratch$$$")) (erase-buffer) (insert s) (bib-capitalize-title-region (point-min) (point-max)) (buffer-string))) (provide 'bib-mode) ;;; arch-tag: e3a97958-3c2c-487f-9557-fafc3c98452d ;;; bib-mode.el ends here