summaryrefslogtreecommitdiff
path: root/lisp/textmodes
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2013-07-06 23:18:58 -0600
committerTom Tromey <tromey@redhat.com>2013-07-06 23:18:58 -0600
commit6dacdad5fcb278e5a16b38bb81786aac9ca27be4 (patch)
treef5f331ea361ba0f99e0f9b638d183ad492a7da31 /lisp/textmodes
parent0a6f2ff0c8ceb29703e76cddd46ea3f176dd873a (diff)
parent219afb88d9d484393418820d1c08dc93299110ec (diff)
downloademacs-6dacdad5fcb278e5a16b38bb81786aac9ca27be4.tar.gz
merge from trunk
this merges frmo trunk and fixes various build issues. this needed a few ugly tweaks. this hangs in "make check" now
Diffstat (limited to 'lisp/textmodes')
-rw-r--r--lisp/textmodes/bibtex.el14
-rw-r--r--lisp/textmodes/reftex.el2
-rw-r--r--lisp/textmodes/remember.el133
-rw-r--r--lisp/textmodes/rst.el4
4 files changed, 130 insertions, 23 deletions
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 01a126eb381..171f373317a 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -1224,7 +1224,10 @@ Used by `bibtex-complete-crossref-cleanup' and `bibtex-copy-summary-as-kill'."
(function :tag "Personalized function")))
(defcustom bibtex-generate-url-list
- '((("url" . ".*:.*")))
+ '((("url" . ".*:.*"))
+ (("doi" . "10\\.[0-9]+/.+")
+ "http://dx.doi.org/%s"
+ ("doi" ".*" 0)))
"List of schemes for generating the URL of a BibTeX entry.
These schemes are used by `bibtex-url'.
@@ -1261,6 +1264,7 @@ The following is a complex example, see URL `http://link.aps.org/'.
(\"volume\" \".*\" 0)
(\"pages\" \"\\`[A-Z]?[0-9]+\" 0)))"
:group 'bibtex
+ :version "24.4"
:type '(repeat
(cons :tag "Scheme"
(cons :tag "Matcher" :extra-offset 4
@@ -3400,9 +3404,6 @@ if that value is non-nil.
(set (make-local-variable 'syntax-propertize-function)
(syntax-propertize-via-font-lock
bibtex-font-lock-syntactic-keywords))
- (setq imenu-generic-expression
- (list (list nil bibtex-entry-head bibtex-key-in-head))
- imenu-case-fold-search t)
;; Allow `bibtex-dialect' as a file-local variable.
(add-hook 'hack-local-variables-hook 'bibtex-set-dialect nil t))
@@ -3479,7 +3480,10 @@ LOCAL is t for interactive calls."
(concat "^[ \t]*@[ \t]*\\(?:"
(regexp-opt
(append '("String" "Preamble")
- (mapcar 'car bibtex-entry-alist))) "\\)"))))
+ (mapcar 'car bibtex-entry-alist))) "\\)"))
+ (setq imenu-generic-expression
+ (list (list nil bibtex-entry-head bibtex-key-in-head))
+ imenu-case-fold-search t)))
;; Entry commands and menus for BibTeX dialects
;; We do not use `easy-menu-define' here because this gets confused
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index 7fed4d0d021..ae8f94fd063 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -2256,6 +2256,8 @@ IGNORE-WORDS List of words which should be removed from the string."
(define-key reftex-mode-map [(shift mouse-2)]
'reftex-mouse-view-crossref)))
+(defvar bibtex-mode-map)
+
;; Bind `reftex-view-crossref-from-bibtex' in BibTeX mode map
(eval-after-load
"bibtex"
diff --git a/lisp/textmodes/remember.el b/lisp/textmodes/remember.el
index 5782f25e48d..39f3acd2c4c 100644
--- a/lisp/textmodes/remember.el
+++ b/lisp/textmodes/remember.el
@@ -382,8 +382,18 @@ Subject: %s\n\n"
;; Remembering to plain files
(defcustom remember-data-file (locate-user-emacs-file "notes" ".notes")
- "The file in which to store unprocessed data."
+ "The file in which to store unprocessed data.
+When set via customize, visited file of the notes buffer (if it
+exists) might be changed."
:type 'file
+ :set (lambda (symbol value)
+ (let ((buf (find-buffer-visiting (default-value symbol))))
+ (set-default symbol value)
+ (when (buffer-live-p buf)
+ (with-current-buffer buf
+ (set-visited-file-name
+ (expand-file-name remember-data-file))))))
+ :initialize 'custom-initialize-default
:group 'remember)
(defcustom remember-leader-text "** "
@@ -393,21 +403,20 @@ Subject: %s\n\n"
(defun remember-append-to-file ()
"Remember, with description DESC, the given TEXT."
- (let ((text (buffer-string))
- (desc (remember-buffer-desc)))
- (with-temp-buffer
- (insert "\n" remember-leader-text (current-time-string)
- " (" desc ")\n\n" text)
- (if (not (bolp))
- (insert "\n"))
- (if (find-buffer-visiting remember-data-file)
- (let ((remember-text (buffer-string)))
- (set-buffer (get-file-buffer remember-data-file))
- (save-excursion
- (goto-char (point-max))
- (insert remember-text)
- (when remember-save-after-remembering (save-buffer))))
- (append-to-file (point-min) (point-max) remember-data-file)))))
+ (let* ((text (buffer-string))
+ (desc (remember-buffer-desc))
+ (remember-text (concat "\n" remember-leader-text (current-time-string)
+ " (" desc ")\n\n" text
+ (save-excursion (goto-char (point-max))
+ (if (bolp) nil "\n"))))
+ (buf (find-buffer-visiting remember-data-file)))
+ (if buf
+ (with-current-buffer buf
+ (save-excursion
+ (goto-char (point-max))
+ (insert remember-text))
+ (if remember-save-after-remembering (save-buffer)))
+ (append-to-file remember-text nil remember-data-file))))
(defun remember-region (&optional beg end)
"Remember the data from BEG to END.
@@ -551,4 +560,96 @@ the data away for latter retrieval, and possible indexing.
\\{remember-mode-map}"
(set-keymap-parent remember-mode-map nil))
+;; Notes buffer showing the notes:
+
+(defcustom remember-notes-buffer-name "*notes*"
+ "Name of the notes buffer.
+Setting it to *scratch* will hijack the *scratch* buffer for the
+purpose of storing notes."
+ :type 'string
+ :version "24.4")
+
+(defcustom remember-notes-initial-major-mode nil
+ "Major mode to set to notes buffer when it's created.
+If set to nil will use the same mode as `initial-major-mode'."
+ :type '(choice (const :tag "Same as `initial-major-mode'" nil)
+ (function :tag "Major mode" text-mode))
+ :version "24.4")
+
+(defcustom remember-notes-bury-on-kill t
+ "Whether to bury notes buffer instead of killing."
+ :type 'boolean
+ :version "24.4")
+
+(defun remember-notes-save-and-bury-buffer ()
+ "Saves and buries current buffer.
+Buffer is saved only if `buffer-modified-p' returns non-nil."
+ (interactive)
+ (when (buffer-modified-p)
+ (save-buffer))
+ (bury-buffer))
+
+
+
+(defvar remember-notes-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "\C-c\C-c" 'remember-notes-save-and-bury-buffer)
+ map)
+ "Keymap used in remember-notes mode.")
+
+(define-minor-mode remember-notes-mode
+ "Minor mode for the `remember-notes' buffer."
+ nil nil nil
+ (cond
+ (remember-notes-mode
+ (add-hook 'kill-buffer-query-functions
+ #'remember-notes--kill-buffer-query nil t)
+ (setq buffer-save-without-query t))))
+
+;;;###autoload
+(defun remember-notes (&optional switch-to)
+ "Creates notes buffer and switches to it if called interactively.
+
+If a notes buffer created by a previous invocation of this
+function already exist, it will be returned. Otherwise a new
+buffer will be created whose content will be read from file
+pointed by `remember-data-file'. If a buffer visiting this file
+already exist, that buffer will be used instead of creating a new
+one (see `find-file-noselect' function for more details).
+
+Name of the created buffer is taken from `remember-notes-buffer-name'
+variable and if a buffer with that name already exist (but was not
+created by this function), it will be first killed.
+\\<remember-notes-mode-map>
+`remember-notes-mode' is active in the notes buffer which by default
+contains only one \\[save-and-bury-buffer] binding which saves and
+buries the buffer.
+
+Function returns notes buffer. When called interactively,
+switches to it as well.
+
+Notes buffer is meant for keeping random notes which you'd like to
+preserve across Emacs restarts. The notes will be stored in the
+`remember-data-file'."
+ (interactive "p")
+ (let ((buf (or (find-buffer-visiting remember-data-file)
+ (with-current-buffer (find-file-noselect remember-data-file)
+ (and remember-notes-buffer-name
+ (not (get-buffer remember-notes-buffer-name))
+ (rename-buffer remember-notes-buffer-name))
+ (funcall (or remember-notes-initial-major-mode
+ initial-major-mode))
+ (remember-notes-mode 1)
+ (current-buffer)))))
+ (when switch-to
+ (switch-to-buffer buf))
+ buf))
+
+(defun remember-notes--kill-buffer-query ()
+ (when (buffer-modified-p)
+ (save-buffer))
+ (if remember-notes-bury-on-kill
+ (bury-buffer)
+ t))
+
;;; remember.el ends here
diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el
index 01981175e1d..a841ec39314 100644
--- a/lisp/textmodes/rst.el
+++ b/lisp/textmodes/rst.el
@@ -2419,8 +2419,8 @@ level to align."
;; for the numbers.
(if (cdr node)
(setq fmt (format "%%-%dd"
- (1+ (floor (log10 (length
- (cdr node))))))))))
+ (1+ (floor (log (length (cdr node))
+ 10))))))))
(dolist (child (cdr node))
(rst-toc-insert-node child