diff options
author | Eli Zaretskii <eliz@gnu.org> | 2013-05-01 20:47:50 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2013-05-01 20:47:50 +0300 |
commit | b1cb82edff21abfefd68af18370dddfd8cc1fec0 (patch) | |
tree | fd8d8a1e1d99af024b52158a471457fc796238bc /lisp | |
parent | 10f81f3ac90f98160f611787e20dcad96bb500e9 (diff) | |
parent | 2640d52e4e7873e41b0f0f1144177f84c345917e (diff) | |
download | emacs-b1cb82edff21abfefd68af18370dddfd8cc1fec0.tar.gz |
Merge from trunk.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ChangeLog | 204 | ||||
-rw-r--r-- | lisp/Makefile.in | 2 | ||||
-rw-r--r-- | lisp/calc/calc.el | 2 | ||||
-rw-r--r-- | lisp/cedet/ChangeLog | 8 | ||||
-rw-r--r-- | lisp/cedet/semantic/complete.el | 7 | ||||
-rw-r--r-- | lisp/comint.el | 10 | ||||
-rw-r--r-- | lisp/desktop.el | 69 | ||||
-rw-r--r-- | lisp/emacs-lisp/package.el | 6 | ||||
-rw-r--r-- | lisp/emacs-lisp/shadow.el | 128 | ||||
-rw-r--r-- | lisp/emacs-lisp/syntax.el | 2 | ||||
-rw-r--r-- | lisp/emacs-lisp/tabulated-list.el | 11 | ||||
-rw-r--r-- | lisp/faces.el | 57 | ||||
-rw-r--r-- | lisp/files.el | 3 | ||||
-rw-r--r-- | lisp/gnus/ChangeLog | 29 | ||||
-rw-r--r-- | lisp/gnus/gnus-msg.el | 4 | ||||
-rw-r--r-- | lisp/gnus/gnus-util.el | 9 | ||||
-rw-r--r-- | lisp/gnus/gnus.el | 7 | ||||
-rw-r--r-- | lisp/gnus/mail-source.el | 12 | ||||
-rw-r--r-- | lisp/gnus/message.el | 8 | ||||
-rw-r--r-- | lisp/gnus/sieve-manage.el | 5 | ||||
-rw-r--r-- | lisp/isearch.el | 28 | ||||
-rw-r--r-- | lisp/ldefs-boot.el | 361 | ||||
-rw-r--r-- | lisp/ls-lisp.el | 7 | ||||
-rw-r--r-- | lisp/progmodes/cc-engine.el | 78 | ||||
-rw-r--r-- | lisp/progmodes/octave.el | 611 | ||||
-rw-r--r-- | lisp/subr.el | 6 | ||||
-rw-r--r-- | lisp/textmodes/reftex-vars.el | 1 | ||||
-rw-r--r-- | lisp/textmodes/remember.el | 9 | ||||
-rw-r--r-- | lisp/vc/log-view.el | 4 |
29 files changed, 1002 insertions, 686 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 62424265d96..be8329a856c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,7 +1,205 @@ +2013-05-01 Leo Liu <sdl.web@gmail.com> + + * progmodes/octave.el: Compatible with older emacs-24 releases. + (inferior-octave-has-built-in-variables): Remove. Buil-in + variables were removed from Octave in 2007. + (inferior-octave-startup): Fix uses. + (comint-line-beginning-position): Remove compatibility code for + emacs 21. + +2013-05-01 Juri Linkov <juri@jurta.org> + + * isearch.el (isearch-forward, isearch-mode): Doc fix. (Bug#13923) + +2013-05-01 Juri Linkov <juri@jurta.org> + + * comint.el (comint-previous-matching-input): Don't print message + "History item: %d" when `isearch-mode' is active. + (comint-history-isearch-message): Print message "History item: %d" + when `comint-input-ring-index' is not empty and this function is + called from `isearch-update' with a nil `ellipsis'. (Bug#13223) + +2013-05-01 Leo Liu <sdl.web@gmail.com> + + * progmodes/octave.el (octave-abbrev-table): Remove abbrev + definitions. Use completion-at-point to insert keywords. + (octave-abbrev-start): Remove. + (inferior-octave-mode, octave-mode): Use :abbrev-table instead. + +2013-04-30 Leo Liu <sdl.web@gmail.com> + + * progmodes/octave.el (inferior-octave-prompt-read-only): Fix last + change. + +2013-04-30 Alan Mackenzie <acm@muc.de> + + Handle arbitrarily long C++ member initialisation lists. + * progmodes/cc-engine.el (c-back-over-member-initializers): new + function. + (c-guess-basic-syntax): New CASE 5R (extracted from 5B) to handle + (most) member init lists. + +2013-04-30 RĂ¼diger Sonderfeld <ruediger@c-plusplus.de> + + * progmodes/octave.el (inferior-octave-prompt-read-only): New user + variable. + +2013-04-30 Leo Liu <sdl.web@gmail.com> + + * progmodes/octave.el (octave-variables): Remove. No builtin + variables any more. All converted to functions. + (octave-font-lock-keywords, octave-completion-at-point-function): + Fix uses. + (octave-font-lock-texinfo-comment): New user variable. + (octave-texinfo-font-lock-keywords): New variable for texinfo + comment block. + (octave-function-comment-block): New face. + (octave-font-lock-texinfo-comment): New function. + (octave-mode): Font lock texinfo comment block. + +2013-04-29 Leo Liu <sdl.web@gmail.com> + + * progmodes/octave.el (octave-font-lock-keywords): Handle 'end' in + indexing expression. + (octave-continuation-string): Do not use \. + (inferior-octave-complete-impossible): Remove. + (inferior-octave-completion-table) + (inferior-octave-completion-at-point): Remove its uses. + (inferior-octave-startup): completion_matches was introduced to + Octave in 1996 so safe to assume it. + (octave-function-file-comment): Improve to follow how Octave does it. + (octave-update-function-file-comment): Tweak. + +2013-04-29 Leo Liu <sdl.web@gmail.com> + + * progmodes/octave.el (inferior-octave-startup-hook): Obsolete. + (inferior-octave-startup): Remove inferior-octave-startup-hook. + (octave-function-file-comment): Fix typo. + (octave-sync-function-file-names): Use read-char-choice. + +2013-04-28 Jay Belanger <jay.p.belanger@gmail.com> + + * calc/calc.el (math-normalize): Don't set `math-normalize-error' + to t for the less important warnings. + +2013-04-27 Darren Hoo <darren.hoo@gmail.com> (tiny change) + + * isearch.el (isearch-fail-pos): Check for empty `cmds'. (Bug#14268) + +2013-04-27 Glenn Morris <rgm@gnu.org> + + * vc/log-view.el (log-view-current-entry): + Treat "---" separator lines as part of the following rev. (Bug#14169) + +2013-04-27 Juri Linkov <juri@jurta.org> + + * subr.el (read-number): Doc fix about using it by interactive + code letter `n'. (Bug#14254) + +2013-04-27 Juri Linkov <juri@jurta.org> + + * desktop.el (desktop-auto-save-timeout): New option. + (desktop-file-checksum): New variable. + (desktop-save): Add optional arg `auto-save' and don't auto-save + if nothing changed. + (desktop-auto-save-timer): New variable. + (desktop-auto-save, desktop-auto-save-set-timer): New functions. + (after-init-hook): Call `desktop-auto-save-set-timer'. + Suggested by Reuben Thomas <rrt@sc3d.org> in + <http://lists.gnu.org/archive/html/emacs-devel/2013-04/msg00327.html>. + +2013-04-27 Leo Liu <sdl.web@gmail.com> + + * progmodes/octave.el (octave-function-file-p) + (octave-skip-comment-forward, octave-function-file-comment) + (octave-update-function-file-comment): New functions. + (octave-mode-map): Bind C-c ; to + octave-update-function-file-comment. + (octave-mode-menu): Add octave-update-function-file-comment. + (octave-mode, inferior-octave-mode): Fix doc-string. + (octave-insert-defun): Conform to Octave's coding convention. + (Bug#14285) + + * files.el (basic-save-buffer): Don't let errors in + before-save-hook prevent saving buffer. + +2013-04-20 Roland Winkler <winkler@gnu.org> + + * faces.el (read-face-name): Use completing-read if arg multiple + is nil. + +2013-04-27 Ingo Lohmar <i.lohmar@gmail.com> (tiny change) + + * ls-lisp.el (ls-lisp-insert-directory): If no files are + displayed, move point to after the totals line. See + http://lists.gnu.org/archive/html/emacs-devel/2013-04/msg00677.html + for the details. + +2013-04-27 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/package.el (package-autoload-ensure-default-file): + Add current dir to the load-path. + (package-generate-autoloads): Don't rely on + autoload-ensure-default-file. + +2013-04-26 Reuben Thomas <rrt@sc3d.org> + + * textmodes/remember.el (remember-store-in-files): Document that + the file name format is passed to `format-time-string'. + +2013-04-26 Leo Liu <sdl.web@gmail.com> + + * progmodes/octave.el (octave-sync-function-file-names): New function. + (octave-mode): Use it in before-save-hook. + +2013-04-26 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/tabulated-list.el (tabulated-list-mode): Disable undo + (bug#14274). + + * progmodes/octave.el (octave-smie-forward-token): Properly skip + \n and comment, even if it's not an implicit ; (bug#14218). + +2013-04-26 Glenn Morris <rgm@gnu.org> + + * subr.el (read-number): Once more use `read' rather than + `string-to-number', to trap non-numeric input. (Bug#14254) + +2013-04-26 Erik Charlebois <erikcharlebois@gmail.com> + + * emacs-lisp/syntax.el (syntax-propertize-multiline): + Use `syntax-multiline' text property consistently instead of + `font-lock-multiline'. (bug#14237). + +2013-04-26 Glenn Morris <rgm@gnu.org> + + * emacs-lisp/shadow.el (list-load-path-shadows): + No longer necessary to check for duplicate simple.el, since + 2012-07-07 change to init_lread to not include installation lisp + directories in load-path when running uninstalled. (Bug#14270) + +2013-04-26 Leo Liu <sdl.web@gmail.com> + + * progmodes/octave.el (octave-submit-bug-report): Obsolete. + (octave-mode, inferior-octave-mode): Use setq-local. + (octave-not-in-string-or-comment-p): Rename to + octave-in-string-or-comment-p. + (octave-in-comment-p, octave-in-string-p) + (octave-in-string-or-comment-p): Replace defsubst with defun. + +2013-04-25 Paul Eggert <eggert@cs.ucla.edu> + + * Makefile.in (distclean): Remove $(lisp)/loaddefs.el~. + +2013-04-25 Bastien Guerry <bzg@gnu.org> + + * textmodes/remember.el (remember-data-directory) + (remember-directory-file-name-format): Fix custom types. + 2013-04-25 Leo Liu <sdl.web@gmail.com> - * progmodes/octave.el (octave-completion-at-point-function): Make - use of inferior octave process. + * progmodes/octave.el (octave-completion-at-point-function): + Make use of inferior octave process. (octave-initialize-completions): Remove. (inferior-octave-completion-table): New function. (inferior-octave-completion-at-point): Use it. @@ -72,7 +270,7 @@ (opascal-parse-next-literal, opascal-debug-unparse-buffer): Adjust callers. -2013-04-24 Reuben Thomas <rrt@sc3d.org> +2013-04-24 Reuben Thomas <rrt@sc3d.org> * textmodes/remember.el (remember-handler-functions): Add an option for a new handler `remember-store-in-files'. diff --git a/lisp/Makefile.in b/lisp/Makefile.in index 9e56d835b6d..138ad5abfa6 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -437,7 +437,7 @@ bootstrap-clean: cd $(lisp); rm -f *.elc */*.elc */*/*.elc */*/*/*.elc $(AUTOGENEL) distclean: - -rm -f ./Makefile + -rm -f ./Makefile $(lisp)/loaddefs.el~ maintainer-clean: distclean bootstrap-clean diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el index c35e7650254..bd5c9089bcc 100644 --- a/lisp/calc/calc.el +++ b/lisp/calc/calc.el @@ -2701,7 +2701,6 @@ largest Emacs integer.") (cons (car math-normalize-a) args)) nil) (wrong-type-argument - (setq math-normalize-error t) (or calc-next-why (calc-record-why "Wrong type of argument" (cons (car math-normalize-a) args))) @@ -2712,7 +2711,6 @@ largest Emacs integer.") (cons (car math-normalize-a) args)) nil) (inexact-result - (setq math-normalize-error t) (calc-record-why "No exact representation for result" (cons (car math-normalize-a) args)) nil) diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog index 8b914e8843e..944a9e1a02a 100644 --- a/lisp/cedet/ChangeLog +++ b/lisp/cedet/ChangeLog @@ -1,3 +1,11 @@ +2013-04-27 David Engster <deng@randomsample.de> + + * semantic/complete.el + (semantic-collector-calculate-completions-raw): If + `completionslist' is not set, refresh the cache if necessary and + use it for completions. This fixes the + `semantic-collector-buffer-deep' collector (bug#14265). + 2013-03-26 Leo Liu <sdl.web@gmail.com> * semantic/senator.el (senator-copy-tag-to-register): Move diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el index 1c2ddf45c9d..6c2b97a677a 100644 --- a/lisp/cedet/semantic/complete.el +++ b/lisp/cedet/semantic/complete.el @@ -988,14 +988,17 @@ Calculate the cache if there isn't one." "Calculate the completions for prefix from completionlist. Output must be in semanticdb Find result format." ;; Must output in semanticdb format + (unless completionlist + (setq completionlist + (or (oref obj cache) + (semantic-collector-calculate-cache obj)))) (let ((table (with-current-buffer (oref obj buffer) semanticdb-current-table)) (result (semantic-find-tags-for-completion prefix ;; To do this kind of search with a pre-built completion ;; list, we need to strip it first. - (semanticdb-strip-find-results completionlist))) - ) + (semanticdb-strip-find-results completionlist)))) (if result (list (cons table result))))) diff --git a/lisp/comint.el b/lisp/comint.el index d5d95f8cbc0..d0c2e477d5a 100644 --- a/lisp/comint.el +++ b/lisp/comint.el @@ -1191,7 +1191,8 @@ If N is negative, find the next or Nth next match." (setq comint-stored-incomplete-input (funcall comint-get-old-input))) (setq comint-input-ring-index pos) - (message "History item: %d" (1+ pos)) + (unless isearch-mode + (message "History item: %d" (1+ pos))) (comint-delete-input) (insert (ring-ref comint-input-ring pos))))) @@ -1540,8 +1541,11 @@ the function `isearch-message'." (overlay-put comint-history-isearch-message-overlay 'evaporate t)) (overlay-put comint-history-isearch-message-overlay 'display (isearch-message-prefix c-q-hack ellipsis)) - ;; And clear any previous isearch message. - (message ""))) + (if (and comint-input-ring-index (not ellipsis)) + ;; Display the current history index. + (message "History item: %d" (1+ comint-input-ring-index)) + ;; Or clear a previous isearch message. + (message "")))) (defun comint-history-isearch-wrap () "Wrap the input history search when search fails. diff --git a/lisp/desktop.el b/lisp/desktop.el index 9c95f597fff..e9a839c4cf7 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el @@ -189,6 +189,19 @@ determine where the desktop is saved." :group 'desktop :version "22.1") +(defcustom desktop-auto-save-timeout nil + "Number of seconds between auto-saves of the desktop. +Zero or nil means disable timer-based auto-saving." + :type '(choice (const :tag "Off" nil) + (integer :tag "Seconds")) + :set (lambda (symbol value) + (set-default symbol value) + (condition-case nil + (desktop-auto-save-set-timer) + (error nil))) + :group 'desktop + :version "24.4") + (defcustom desktop-load-locked-desktop 'ask "Specifies whether the desktop should be loaded if locked. Possible values are: @@ -539,6 +552,10 @@ DIRNAME omitted or nil means use `desktop-dirname'." (defvar desktop-delay-hook nil "Hooks run after all buffers are loaded; intended for internal use.") +(defvar desktop-file-checksum nil + "Checksum of the last auto-saved contents of the desktop file. +Used to avoid writing contents unchanged between auto-saves.") + ;; ---------------------------------------------------------------------------- ;; Desktop file conflict detection (defvar desktop-file-modtime nil @@ -842,11 +859,12 @@ DIRNAME must be the directory in which the desktop file will be saved." ;; ---------------------------------------------------------------------------- ;;;###autoload -(defun desktop-save (dirname &optional release) +(defun desktop-save (dirname &optional release auto-save) "Save the desktop in a desktop file. Parameter DIRNAME specifies where to save the desktop file. Optional parameter RELEASE says whether we're done with this desktop. -See also `desktop-base-file-name'." +If AUTO-SAVE is non-nil, compare the saved contents to the one last saved, +and don't save the buffer if they are the same." (interactive "DDirectory to save desktop file in: ") (setq desktop-dirname (file-name-as-directory (expand-file-name dirname))) (save-excursion @@ -906,10 +924,17 @@ See also `desktop-base-file-name'." (insert ")\n\n")))) (setq default-directory desktop-dirname) - (let ((coding-system-for-write 'emacs-mule)) - (write-region (point-min) (point-max) (desktop-full-file-name) nil 'nomessage)) - ;; We remember when it was modified (which is presumably just now). - (setq desktop-file-modtime (nth 5 (file-attributes (desktop-full-file-name))))))))) + ;; If auto-saving, avoid writing if nothing has changed since the last write. + ;; Don't check 300 characters of the header that contains the timestamp. + (let ((checksum (and auto-save (md5 (current-buffer) + (+ (point-min) 300) (point-max) + 'emacs-mule)))) + (unless (and auto-save (equal checksum desktop-file-checksum)) + (let ((coding-system-for-write 'emacs-mule)) + (write-region (point-min) (point-max) (desktop-full-file-name) nil 'nomessage)) + (setq desktop-file-checksum checksum) + ;; We remember when it was modified (which is presumably just now). + (setq desktop-file-modtime (nth 5 (file-attributes (desktop-full-file-name))))))))))) ;; ---------------------------------------------------------------------------- ;;;###autoload @@ -1063,6 +1088,37 @@ directory DIRNAME." (message "Desktop saved in %s" (abbreviate-file-name desktop-dirname))) ;; ---------------------------------------------------------------------------- +;; Auto-Saving. +(defvar desktop-auto-save-timer nil) + +(defun desktop-auto-save () + "Save the desktop periodically. +Called by the timer created in `desktop-auto-save-set-timer'." + (when (and desktop-save-mode + (integerp desktop-auto-save-timeout) + (> desktop-auto-save-timeout 0) + ;; Avoid desktop saving during lazy loading. + (not desktop-lazy-timer) + ;; Save only to own desktop file. + (eq (emacs-pid) (desktop-owner)) + desktop-dirname) + (desktop-save desktop-dirname nil t)) + (desktop-auto-save-set-timer)) + +(defun desktop-auto-save-set-timer () + "Reset the auto-save timer. +Cancel any previous timer. When `desktop-auto-save-timeout' is a positive +integer, start a new timer to call `desktop-auto-save' in that many seconds." + (when desktop-auto-save-timer + (cancel-timer desktop-auto-save-timer) + (setq desktop-auto-save-timer nil)) + (when (and (integerp desktop-auto-save-timeout) + (> desktop-auto-save-timeout 0)) + (setq desktop-auto-save-timer + (run-with-timer desktop-auto-save-timeout nil + 'desktop-auto-save)))) + +;; ---------------------------------------------------------------------------- ;;;###autoload (defun desktop-revert () "Revert to the last loaded desktop." @@ -1315,6 +1371,7 @@ If there are no buffers left to create, kill the timer." (setq desktop-save-mode nil))) (when desktop-save-mode (desktop-read) + (desktop-auto-save-set-timer) (setq inhibit-startup-screen t)))) (provide 'desktop) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 605d1cf375c..c80b8d970dc 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -588,7 +588,8 @@ EXTRA-PROPERTIES is currently unused." (concat ";;; " (file-name-nondirectory file) " --- automatically extracted autoloads\n" ";;\n" - ";;; Code:\n\n" + ";;; Code:\n" + "(add-to-list 'load-path (or (file-name-directory #$) (car load-path)))\n" "\n;; Local Variables:\n" ";; version-control: never\n" ";; no-byte-compile: t\n" @@ -605,8 +606,7 @@ EXTRA-PROPERTIES is currently unused." ;;(ignore-name (concat name "-pkg.el")) (generated-autoload-file (expand-file-name auto-name pkg-dir)) (version-control 'never)) - (unless (fboundp 'autoload-ensure-default-file) - (package-autoload-ensure-default-file generated-autoload-file)) + (package-autoload-ensure-default-file generated-autoload-file) (update-directory-autoloads pkg-dir) (let ((buf (find-buffer-visiting generated-autoload-file))) (when buf (kill-buffer buf))))) diff --git a/lisp/emacs-lisp/shadow.el b/lisp/emacs-lisp/shadow.el index b12fba17027..d0e3c5763b5 100644 --- a/lisp/emacs-lisp/shadow.el +++ b/lisp/emacs-lisp/shadow.el @@ -207,101 +207,79 @@ the earlier. For example, suppose `load-path' is set to -\(\"/usr/gnu/emacs/site-lisp\" \"/usr/gnu/emacs/share/emacs/19.30/lisp\"\) +\(\"/usr/share/emacs/site-lisp\" \"/usr/share/emacs/24.3/lisp\") and that each of these directories contains a file called XXX.el. Then XXX.el in the site-lisp directory is referred to by all of: -\(require 'XXX\), \(autoload .... \"XXX\"\), \(load-library \"XXX\"\) etc. +\(require 'XXX), (autoload .... \"XXX\"), (load-library \"XXX\") etc. -The first XXX.el file prevents Emacs from seeing the second \(unless -the second is loaded explicitly via `load-file'\). +The first XXX.el file prevents Emacs from seeing the second (unless +the second is loaded explicitly via `load-file'). When not intended, such shadowings can be the source of subtle problems. For example, the above situation may have arisen because the XXX package was not distributed with versions of Emacs prior to -19.30. An Emacs maintainer downloaded XXX from elsewhere and installed +24.3. A system administrator downloaded XXX from elsewhere and installed it. Later, XXX was updated and included in the Emacs distribution. -Unless the Emacs maintainer checks for this, the new version of XXX -will be hidden behind the old \(which may no longer work with the new -Emacs version\). +Unless the system administrator checks for this, the new version of XXX +will be hidden behind the old (which may no longer work with the new +Emacs version). This function performs these checks and flags all possible shadowings. Because a .el file may exist without a corresponding .elc -\(or vice-versa\), these suffixes are essentially ignored. A file -XXX.elc in an early directory \(that does not contain XXX.el\) is +\(or vice-versa), these suffixes are essentially ignored. A file +XXX.elc in an early directory (that does not contain XXX.el) is considered to shadow a later file XXX.el, and vice-versa. Shadowings are located by calling the (non-interactive) companion function, `load-path-shadows-find'." (interactive) - (let* ((path (copy-sequence load-path)) - (tem path) - toplevs) - ;; If we can find simple.el in two places, - (dolist (tt tem) - (if (or (file-exists-p (expand-file-name "simple.el" tt)) - (file-exists-p (expand-file-name "simple.el.gz" tt))) - (setq toplevs (cons tt toplevs)))) - (if (> (length toplevs) 1) - ;; Cut off our copy of load-path right before - ;; the last directory which has simple.el in it. - ;; This avoids loads of duplications between the source dir - ;; and the dir where these files were copied by installation. - (let ((break (car toplevs))) - (setq tem path) - (while tem - (if (eq (nth 1 tem) break) - (progn - (setcdr tem nil) - (setq tem nil))) - (setq tem (cdr tem))))) - - (let* ((shadows (load-path-shadows-find path)) - (n (/ (length shadows) 2)) - (msg (format "%s Emacs Lisp load-path shadowing%s found" - (if (zerop n) "No" (concat "\n" (number-to-string n))) - (if (= n 1) " was" "s were")))) - (with-temp-buffer - (while shadows - (insert (format "%s hides %s\n" (car shadows) - (car (cdr shadows)))) - (setq shadows (cdr (cdr shadows)))) - (if stringp - (buffer-string) - (if (called-interactively-p 'interactive) - ;; We are interactive. - ;; Create the *Shadows* buffer and display shadowings there. - (let ((string (buffer-string))) - (with-current-buffer (get-buffer-create "*Shadows*") - (display-buffer (current-buffer)) - (load-path-shadows-mode) ; run after-change-major-mode-hook - (let ((inhibit-read-only t)) - (erase-buffer) - (insert string) - (insert msg "\n") - (while (re-search-backward "\\(^.*\\) hides \\(.*$\\)" - nil t) - (dotimes (i 2) - (make-button (match-beginning (1+ i)) - (match-end (1+ i)) - 'type 'load-path-shadows-find-file - 'shadow-file - (match-string (1+ i))))) - (goto-char (point-max))))) - ;; We are non-interactive, print shadows via message. - (unless (zerop n) - (message "This site has duplicate Lisp libraries with the same name. + (let* ((shadows (load-path-shadows-find load-path)) + (n (/ (length shadows) 2)) + (msg (format "%s Emacs Lisp load-path shadowing%s found" + (if (zerop n) "No" (concat "\n" (number-to-string n))) + (if (= n 1) " was" "s were")))) + (with-temp-buffer + (while shadows + (insert (format "%s hides %s\n" (car shadows) + (car (cdr shadows)))) + (setq shadows (cdr (cdr shadows)))) + (if stringp + (buffer-string) + (if (called-interactively-p 'interactive) + ;; We are interactive. + ;; Create the *Shadows* buffer and display shadowings there. + (let ((string (buffer-string))) + (with-current-buffer (get-buffer-create "*Shadows*") + (display-buffer (current-buffer)) + (load-path-shadows-mode) ; run after-change-major-mode-hook + (let ((inhibit-read-only t)) + (erase-buffer) + (insert string) + (insert msg "\n") + (while (re-search-backward "\\(^.*\\) hides \\(.*$\\)" + nil t) + (dotimes (i 2) + (make-button (match-beginning (1+ i)) + (match-end (1+ i)) + 'type 'load-path-shadows-find-file + 'shadow-file + (match-string (1+ i))))) + (goto-char (point-max))))) + ;; We are non-interactive, print shadows via message. + (unless (zerop n) + (message "This site has duplicate Lisp libraries with the same name. If a locally-installed Lisp library overrides a library in the Emacs release, that can cause trouble, and you should probably remove the locally-installed version unless you know what you are doing.\n") - (goto-char (point-min)) - ;; Mimic the previous behavior of using lots of messages. - ;; I think one single message would look better... - (while (not (eobp)) - (message "%s" (buffer-substring (line-beginning-position) - (line-end-position))) - (forward-line 1)) - (message "%s" msg)))))))) + (goto-char (point-min)) + ;; Mimic the previous behavior of using lots of messages. + ;; I think one single message would look better... + (while (not (eobp)) + (message "%s" (buffer-substring (line-beginning-position) + (line-end-position))) + (forward-line 1)) + (message "%s" msg))))))) (provide 'shadow) diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el index bf2c8308bb5..0a4758a9ccd 100644 --- a/lisp/emacs-lisp/syntax.el +++ b/lisp/emacs-lisp/syntax.el @@ -99,7 +99,7 @@ Put first the functions more likely to cause a change and cheaper to compute.") (setq beg (or (previous-single-property-change beg 'syntax-multiline) (point-min)))) ;; - (when (get-text-property end 'font-lock-multiline) + (when (get-text-property end 'syntax-multiline) (setq end (or (text-property-any end (point-max) 'syntax-multiline nil) (point-max)))) diff --git a/lisp/emacs-lisp/tabulated-list.el b/lisp/emacs-lisp/tabulated-list.el index da487e463e2..6dba423010f 100644 --- a/lisp/emacs-lisp/tabulated-list.el +++ b/lisp/emacs-lisp/tabulated-list.el @@ -519,12 +519,11 @@ printer is `tabulated-list-print-entry', but a mode that keeps data in an ewoc may instead specify a printer function (e.g., one that calls `ewoc-enter-last'), with `tabulated-list-print-entry' as the ewoc pretty-printer." - (setq truncate-lines t) - (setq buffer-read-only t) - (set (make-local-variable 'revert-buffer-function) - 'tabulated-list-revert) - (set (make-local-variable 'glyphless-char-display) - tabulated-list-glyphless-char-display)) + (setq-local truncate-lines t) + (setq-local buffer-read-only t) + (setq-local buffer-undo-list t) + (setq-local revert-buffer-function #'tabulated-list-revert) + (setq-local glyphless-char-display tabulated-list-glyphless-char-display)) (put 'tabulated-list-mode 'mode-class 'special) diff --git a/lisp/faces.el b/lisp/faces.el index 6179ed7dfa7..80f34d4569a 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -938,19 +938,14 @@ of the default face. Value is FACE." PROMPT should not end in a space or a colon. Return DEFAULT if the user enters the empty string. -If DEFAULT is non-nil, it should be a list of face names (symbols or strings). -In that case, return the `car' of DEFAULT (if MULTIPLE is non-nil), -or DEFAULT (if MULTIPLE is nil). See below for the meaning of MULTIPLE. -DEFAULT can also be a single face. - -This function uses `completing-read-multiple' with \"[ \\t]*,[ \\t]*\" -as the separator regexp. Thus, the user may enter multiple face names, -separated by commas. - -MULTIPLE specifies the form of the return value. If MULTIPLE is non-nil, -return a list of face names; if the user entered just one face name, -return a list of one face name. Otherwise, return a single face name; -if the user entered more than one face name, return only the first one." +If DEFAULT is non-nil, it should be a single face or a list of face names +\(symbols or strings). In the latter case, return the `car' of DEFAULT +\(if MULTIPLE is nil, see below), or DEFAULT (if MULTIPLE is non-nil). + +If MULTIPLE is non-nil, this function uses `completing-read-multiple' +to read multiple faces with \"[ \\t]*,[ \\t]*\" as the separator regexp +and it returns a list of face names. Otherwise, it reads and returns +a single face name." (if (and default (not (stringp default))) (setq default (cond ((symbolp default) @@ -961,26 +956,36 @@ if the user entered more than one face name, return only the first one." ;; If we only want one, and the default is more than one, ;; discard the unwanted ones. (t (symbol-name (car default)))))) - - (let (aliasfaces nonaliasfaces faces) + (if (and default (not multiple)) + ;; For compatibility with `completing-read-multiple' use `crm-separator' + ;; to define DEFAULT if MULTIPLE is nil. + (setq default (car (split-string default crm-separator t)))) + + (let ((prompt (if default + (format "%s (default `%s'): " prompt default) + (format "%s: " prompt))) + aliasfaces nonaliasfaces faces) ;; Build up the completion tables. (mapatoms (lambda (s) (if (facep s) (if (get s 'face-alias) (push (symbol-name s) aliasfaces) (push (symbol-name s) nonaliasfaces))))) - (dolist (face (completing-read-multiple - (if default - (format "%s (default `%s'): " prompt default) - (format "%s: " prompt)) + (if multiple + (progn + (dolist (face (completing-read-multiple + prompt + (completion-table-in-turn nonaliasfaces aliasfaces) + nil t nil 'face-name-history default)) + ;; Ignore elements that are not faces + ;; (for example, because DEFAULT was "all faces") + (if (facep face) (push (intern face) faces))) + (nreverse faces)) + (let ((face (completing-read + prompt (completion-table-in-turn nonaliasfaces aliasfaces) - nil t nil 'face-name-history default)) - ;; Ignore elements that are not faces - ;; (for example, because DEFAULT was "all faces") - (if (facep face) (push (intern face) faces))) - ;; Return either a list of faces or just one face. - (setq faces (nreverse faces)) - (if multiple faces (car faces)))) + nil t nil 'face-name-history default))) + (if (facep face) (intern face)))))) ;; Not defined without X, but behind window-system test. (defvar x-bitmap-file-path) diff --git a/lisp/files.el b/lisp/files.el index ae5e5a23161..eebbf15e02e 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -4617,7 +4617,8 @@ Before and after saving the buffer, this function runs (insert ?\n)))) ;; Support VC version backups. (vc-before-save) - (run-hooks 'before-save-hook) + ;; Don't let errors prevent saving the buffer. + (with-demoted-errors (run-hooks 'before-save-hook)) (or (run-hook-with-args-until-success 'write-contents-functions) (run-hook-with-args-until-success 'local-write-file-hooks) (run-hook-with-args-until-success 'write-file-functions) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 4cdc8a103bd..1221f163cba 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,32 @@ +2013-05-01 Katsumi Yamaoka <yamaoka@jpl.org> + + * gnus-util.el (gnus-emacs-completing-read): Fix a filter for XEmacs. + (Bug#14304) + +2013-04-27 Glenn Morris <rgm@gnu.org> + + * gnus.el (gnus-list-debbugs): + Use require rather than autoload. (Bug#14262) + +2013-04-27 Julien Danjou <julien@danjou.info> + + * sieve-manage.el (sieve-manage-authenticator-alist): Update the sieve + port to "sieve" now that it has an official IANA port assigned. + +2013-04-26 Katsumi Yamaoka <yamaoka@jpl.org> + + * mail-source.el (mail-source-fetch-pop, mail-source-check-pop): + Don't set the MAILHOST environment variable permanently (Bug#14271). + +2013-04-26 Glenn Morris <rgm@gnu.org> + + * message.el (message-bury): Revert 2013-03-18 change. (Bug#14117) + +2013-04-25 Andrew Cohen <cohen@bu.edu> + + * gnus-msg.el (gnus-inews-insert-gcc): Re-order conditional to work for + string values of 'gcc-self. Thanks to Saroj Thirumalai. + 2013-04-24 Andrew Cohen <cohen@bu.edu> * nnir.el (nnir-close-group): Make sure we are in the right group. diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el index 362dd3ea7f0..fce9a3633c2 100644 --- a/lisp/gnus/gnus-msg.el +++ b/lisp/gnus/gnus-msg.el @@ -1719,8 +1719,8 @@ this is a reply." (group (when group (gnus-group-decoded-name group))) (var (or gnus-outgoing-message-group gnus-message-archive-group)) (gcc-self-val - (and group (gnus-group-find-parameter group 'gcc-self) - (not (gnus-virtual-group-p group)))) + (and group (not (gnus-virtual-group-p group)) + (gnus-group-find-parameter group 'gcc-self))) result (groups (cond diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el index 331f9556710..a121c27b547 100644 --- a/lisp/gnus/gnus-util.el +++ b/lisp/gnus/gnus-util.el @@ -1549,9 +1549,12 @@ SPEC is a predicate specifier that contains stuff like `or', `and', "Call standard `completing-read-function'." (let ((completion-styles gnus-completion-styles)) (completing-read prompt - ;; Old XEmacs (at least 21.4) expect an alist for - ;; collection. - (mapcar 'list collection) + ;; Old XEmacs (at least 21.4) expect an alist, + ;; in which the car of each element is a string, + ;; for collection. + (mapcar (lambda (elem) + (list (format "%s" (or (car-safe elem) elem)))) + collection) nil require-match initial-input history def))) (autoload 'ido-completing-read "ido") diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el index ffb4694f4a8..f6c1327c78c 100644 --- a/lisp/gnus/gnus.el +++ b/lisp/gnus/gnus.el @@ -4433,12 +4433,13 @@ prompt the user for the name of an NNTP server to use." (gnus-1 arg dont-connect slave) (gnus-final-warning))) -(eval-and-compile - (unless (fboundp 'debbugs-gnu) - (autoload 'debbugs-gnu "debbugs-gnu" "List all outstanding Emacs bugs." t))) +(declare-function debbugs-gnu "ext:debbugs-gnu" + (severities &optional packages archivedp suppress tags)) + (defun gnus-list-debbugs () "List all open Gnus bug reports." (interactive) + (require 'debbugs-gnu) (debbugs-gnu nil "gnus")) ;; Allow redefinition of Gnus functions. diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el index 9cc2e6ac09c..7da2a0a441d 100644 --- a/lisp/gnus/mail-source.el +++ b/lisp/gnus/mail-source.el @@ -809,6 +809,10 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile) prescript-delay) (let ((from (format "%s:%s:%s" server user port)) (mail-source-string (format "pop:%s@%s" user server)) + (process-environment (if server + (cons (concat "MAILHOST=" server) + process-environment) + process-environment)) result) (when (eq authentication 'password) (setq password @@ -816,8 +820,6 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile) (cdr (assoc from mail-source-password-cache)) (read-passwd (format "Password for %s at %s: " user server))))) - (when server - (setenv "MAILHOST" server)) (setq result (cond (program @@ -877,6 +879,10 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile) (mail-source-bind (pop source) (let ((from (format "%s:%s:%s" server user port)) (mail-source-string (format "pop:%s@%s" user server)) + (process-environment (if server + (cons (concat "MAILHOST=" server) + process-environment) + process-environment)) result) (when (eq authentication 'password) (setq password @@ -886,8 +892,6 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile) (format "Password for %s at %s: " user server)))) (unless (assoc from mail-source-password-cache) (push (cons from password) mail-source-password-cache))) - (when server - (setenv "MAILHOST" server)) (setq result (cond ;; No easy way to check whether mail is waiting for these. diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 2b2a0a94413..a6638097b47 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -4097,9 +4097,11 @@ Instead, just auto-save the buffer and then bury it." (defun message-bury (buffer) "Bury this mail BUFFER." - (bury-buffer buffer) - (when message-return-action - (apply (car message-return-action) (cdr message-return-action)))) + (if message-return-action + (progn + (bury-buffer buffer) + (apply (car message-return-action) (cdr message-return-action))) + (with-current-buffer buffer (bury-buffer)))) (defun message-send (&optional arg) "Send the message in the current buffer. diff --git a/lisp/gnus/sieve-manage.el b/lisp/gnus/sieve-manage.el index 22c1f7036bf..b96261764e5 100644 --- a/lisp/gnus/sieve-manage.el +++ b/lisp/gnus/sieve-manage.el @@ -149,9 +149,10 @@ the server support the authenticator and AUTHENTICATE is a function for doing the actual authentication." :group 'sieve-manage) -(defcustom sieve-manage-default-port 2000 +(defcustom sieve-manage-default-port "sieve" "Default port number or service name for managesieve protocol." - :type 'integer + :type '(choice integer string) + :version "24.4" :group 'sieve-manage) (defcustom sieve-manage-default-stream 'network diff --git a/lisp/isearch.el b/lisp/isearch.el index b36b250738a..72a125fcecb 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -735,8 +735,9 @@ Other control and meta characters terminate the search and are then executed normally (depending on `search-exit-option'). Likewise for function keys and mouse button events. -If this function is called non-interactively, it does not return to -the calling function until the search is done." +If this function is called non-interactively with a nil NO-RECURSIVE-EDIT, +it does not return to the calling function until the search is done. +See the function `isearch-mode' for more information." (interactive "P\np") (isearch-mode t (not (null regexp-p)) nil (not no-recursive-edit))) @@ -799,7 +800,23 @@ as a regexp. See the command `isearch-forward' for more information." (defun isearch-mode (forward &optional regexp op-fun recursive-edit word) "Start Isearch minor mode. -It is called by the function `isearch-forward' and other related functions." +It is called by the function `isearch-forward' and other related functions. + +The non-nil arg FORWARD means searching in the forward direction. + +The non-nil arg REGEXP does an incremental regular expression search. + +The arg OP-FUN is a function to be called after each input character +is processed. (It is not called after characters that exit the search.) + +When the arg RECURSIVE-EDIT is non-nil, this function behaves modally and +does not return to the calling function until the search is completed. +To behave this way it enters a recursive-edit and exits it when done +isearching. + +The arg WORD, if t, does incremental search for a sequence of words, +ignoring punctuation. If the value is a function, it is called to +convert the search string to a regexp used by regexp search functions." ;; Initialize global vars. (setq isearch-forward forward @@ -1106,8 +1123,9 @@ If MSG is non-nil, use variable `isearch-message', otherwise `isearch-string'." (curr-msg (if msg isearch-message isearch-string)) succ-msg) (when (or (not isearch-success) isearch-error) - (while (or (not (isearch--state-success (car cmds))) - (isearch--state-error (car cmds))) + (while (and cmds + (or (not (isearch--state-success (car cmds))) + (isearch--state-error (car cmds)))) (pop cmds)) (setq succ-msg (and cmds (if msg (isearch--state-message (car cmds)) (isearch--state-string (car cmds))))) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 2e05d6b02fb..d2b97986581 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -895,7 +895,7 @@ outline hot-spot navigation (see `allout-mode'). ;;;*** ;;;### (autoloads (ange-ftp-hook-function ange-ftp-reread-dir) "ange-ftp" -;;;;;; "net/ange-ftp.el" (20763 30266 231060 0)) +;;;;;; "net/ange-ftp.el" (20843 54187 671468 0)) ;;; Generated autoloads from net/ange-ftp.el (defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir) @@ -1656,7 +1656,7 @@ should be non-nil). ;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode ;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode) -;;;;;; "autorevert" "autorevert.el" (20767 27320 533690 0)) +;;;;;; "autorevert" "autorevert.el" (20831 63016 738579 0)) ;;; Generated autoloads from autorevert.el (autoload 'auto-revert-mode "autorevert" "\ @@ -1860,7 +1860,7 @@ For non-interactive use see also `benchmark-run' and ;;;*** ;;;### (autoloads (bibtex-search-entry bibtex-mode bibtex-initialize) -;;;;;; "bibtex" "textmodes/bibtex.el" (20709 26818 907104 0)) +;;;;;; "bibtex" "textmodes/bibtex.el" (20842 33318 816618 0)) ;;; Generated autoloads from textmodes/bibtex.el (autoload 'bibtex-initialize "bibtex" "\ @@ -1868,11 +1868,14 @@ For non-interactive use see also `benchmark-run' and Visit the BibTeX files defined by `bibtex-files' and return a list of corresponding buffers. Initialize in these buffers `bibtex-reference-keys' if not yet set. -List of BibTeX buffers includes current buffer if CURRENT is non-nil. +List of BibTeX buffers includes current buffer if CURRENT is non-nil +and the current buffer visits a file using `bibtex-mode'. If FORCE is non-nil, (re)initialize `bibtex-reference-keys' even if already set. If SELECT is non-nil interactively select a BibTeX buffer. -When called interactively, FORCE is t, CURRENT is t if current buffer uses -`bibtex-mode', and SELECT is t if current buffer does not use `bibtex-mode', + +When called interactively, FORCE is t, CURRENT is t if current buffer +visits a file using `bibtex-mode', and SELECT is t if current buffer +does not use `bibtex-mode', \(fn &optional CURRENT FORCE SELECT)" t nil) @@ -2109,7 +2112,7 @@ a reflection. ;;;;;; bookmark-save bookmark-write bookmark-delete bookmark-insert ;;;;;; bookmark-rename bookmark-insert-location bookmark-relocate ;;;;;; bookmark-jump-other-window bookmark-jump bookmark-set) "bookmark" -;;;;;; "bookmark.el" (20793 51383 764318 0)) +;;;;;; "bookmark.el" (20849 6570 598687 0)) ;;; Generated autoloads from bookmark.el (define-key ctl-x-r-map "b" 'bookmark-jump) (define-key ctl-x-r-map "m" 'bookmark-set) @@ -2713,7 +2716,7 @@ Like `bug-reference-mode', but only buttonize in comments and strings. ;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile ;;;;;; compile-defun byte-compile-file byte-recompile-directory ;;;;;; byte-force-recompile byte-compile-enable-warning byte-compile-disable-warning) -;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20780 39352 990623 0)) +;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20851 48294 960738 0)) ;;; Generated autoloads from emacs-lisp/bytecomp.el (put 'byte-compile-dynamic 'safe-local-variable 'booleanp) (put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) @@ -2872,8 +2875,8 @@ from the cursor position. ;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle ;;;;;; calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc -;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (20759 -;;;;;; 33211 414988 0)) +;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (20863 +;;;;;; 39461 835648 0)) ;;; Generated autoloads from calc/calc.el (define-key ctl-x-map "*" 'calc-dispatch) @@ -3090,7 +3093,7 @@ Obsoletes `c-forward-into-nomenclature'. ;;;*** ;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el" -;;;;;; (20791 9657 561026 0)) +;;;;;; (20864 28934 62335 0)) ;;; Generated autoloads from progmodes/cc-engine.el (autoload 'c-guess-basic-syntax "cc-engine" "\ @@ -3203,7 +3206,7 @@ the absolute file name of the file if STYLE-NAME is nil. ;;;### (autoloads (awk-mode pike-mode idl-mode java-mode objc-mode ;;;;;; c++-mode c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el" -;;;;;; (20709 26818 907104 0)) +;;;;;; (20845 9511 656701 0)) ;;; Generated autoloads from progmodes/cc-mode.el (autoload 'c-initialize-cc-mode "cc-mode" "\ @@ -4218,7 +4221,7 @@ If FRAME cannot display COLOR, return nil. ;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list ;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command ;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el" -;;;;;; (20797 44848 327754 0)) +;;;;;; (20864 60326 774861 0)) ;;; Generated autoloads from comint.el (defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\ @@ -4355,8 +4358,8 @@ on third call it again advances points to the next difference and so on. ;;;;;; compilation-shell-minor-mode compilation-mode compilation-start ;;;;;; compile compilation-disable-input compile-command compilation-search-path ;;;;;; compilation-ask-about-save compilation-window-height compilation-start-hook -;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20808 -;;;;;; 15152 87827 0)) +;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20856 +;;;;;; 32301 830403 0)) ;;; Generated autoloads from progmodes/compile.el (defvar compilation-mode-hook nil "\ @@ -5142,7 +5145,7 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings. ;;;;;; customize-mode customize customize-push-and-save customize-save-variable ;;;;;; customize-set-variable customize-set-value custom-menu-sort-alphabetically ;;;;;; custom-buffer-sort-alphabetically custom-browse-sort-alphabetically) -;;;;;; "cus-edit" "cus-edit.el" (20762 9398 526093 0)) +;;;;;; "cus-edit" "cus-edit.el" (20841 12463 538770 0)) ;;; Generated autoloads from cus-edit.el (defvar custom-browse-sort-alphabetically nil "\ @@ -5454,8 +5457,8 @@ The format is suitable for use with `easy-menu-define'. ;;;*** ;;;### (autoloads (customize-themes describe-theme custom-theme-visit-theme -;;;;;; customize-create-theme) "cus-theme" "cus-theme.el" (20709 -;;;;;; 26818 907104 0)) +;;;;;; customize-create-theme) "cus-theme" "cus-theme.el" (20841 +;;;;;; 12463 538770 0)) ;;; Generated autoloads from cus-theme.el (autoload 'customize-create-theme "cus-theme" "\ @@ -5545,7 +5548,7 @@ See `cwarn-mode' for more information on Cwarn mode. ;;;### (autoloads (standard-display-cyrillic-translit cyrillic-encode-alternativnyj-char ;;;;;; cyrillic-encode-koi8-r-char) "cyril-util" "language/cyril-util.el" -;;;;;; (20709 26818 907104 0)) +;;;;;; (20826 45095 436233 0)) ;;; Generated autoloads from language/cyril-util.el (autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\ @@ -6006,7 +6009,7 @@ relevant to POS. ;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir ;;;;;; desktop-load-default desktop-read desktop-remove desktop-save ;;;;;; desktop-clear desktop-locals-to-save desktop-save-mode) "desktop" -;;;;;; "desktop.el" (20817 30120 173418 0)) +;;;;;; "desktop.el" (20860 63270 684173 0)) ;;; Generated autoloads from desktop.el (defvar desktop-save-mode nil "\ @@ -6144,9 +6147,10 @@ Furthermore, it clears the variables listed in `desktop-globals-to-clear'. Save the desktop in a desktop file. Parameter DIRNAME specifies where to save the desktop file. Optional parameter RELEASE says whether we're done with this desktop. -See also `desktop-base-file-name'. +If AUTO-SAVE is non-nil, compare the saved contents to the one last saved, +and don't save the buffer if they are the same. -\(fn DIRNAME &optional RELEASE)" t nil) +\(fn DIRNAME &optional RELEASE AUTO-SAVE)" t nil) (autoload 'desktop-remove "desktop" "\ Delete desktop file in `desktop-dirname'. @@ -6726,8 +6730,8 @@ Locate SOA record and increment the serial field. ;;;*** ;;;### (autoloads (doc-view-bookmark-jump doc-view-minor-mode doc-view-mode-maybe -;;;;;; doc-view-mode doc-view-mode-p) "doc-view" "doc-view.el" (20806 -;;;;;; 59818 347907 0)) +;;;;;; doc-view-mode doc-view-mode-p) "doc-view" "doc-view.el" (20845 +;;;;;; 9511 656701 0)) ;;; Generated autoloads from doc-view.el (autoload 'doc-view-mode-p "doc-view" "\ @@ -7607,7 +7611,7 @@ an EDE controlled project. ;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form ;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug" -;;;;;; "emacs-lisp/edebug.el" (20825 24233 991089 0)) +;;;;;; "emacs-lisp/edebug.el" (20834 39208 838628 0)) ;;; Generated autoloads from emacs-lisp/edebug.el (defvar edebug-all-defs nil "\ @@ -8166,7 +8170,7 @@ Emacs Lisp mode) that support ElDoc.") ;;;*** ;;;### (autoloads (electric-layout-mode electric-pair-mode electric-indent-mode) -;;;;;; "electric" "electric.el" (20709 26818 907104 0)) +;;;;;; "electric" "electric.el" (20829 21286 719109 0)) ;;; Generated autoloads from electric.el (defvar electric-indent-chars '(10) "\ @@ -8768,7 +8772,7 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads (epg-make-context) "epg" "epg.el" (20712 3008 596088 +;;;### (autoloads (epg-make-context) "epg" "epg.el" (20853 3623 384273 ;;;;;; 0)) ;;; Generated autoloads from epg.el @@ -9316,7 +9320,7 @@ Add a file to `erc-xdcc-files'. ;;;### (autoloads (ert-describe-test ert-run-tests-interactively ;;;;;; ert-run-tests-batch-and-exit ert-run-tests-batch ert-deftest) -;;;;;; "ert" "emacs-lisp/ert.el" (20751 39094 700824 0)) +;;;;;; "ert" "emacs-lisp/ert.el" (20834 39208 838628 0)) ;;; Generated autoloads from emacs-lisp/ert.el (autoload 'ert-deftest "ert" "\ @@ -10246,8 +10250,8 @@ with no args, if that value is non-nil. ;;;### (autoloads (variable-pitch-mode buffer-face-toggle buffer-face-set ;;;;;; buffer-face-mode text-scale-adjust text-scale-decrease text-scale-increase ;;;;;; text-scale-set face-remap-set-base face-remap-reset-base -;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (20709 -;;;;;; 26818 907104 0)) +;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (20841 +;;;;;; 12463 538770 0)) ;;; Generated autoloads from face-remap.el (autoload 'face-remap-add-relative "face-remap" "\ @@ -11100,7 +11104,7 @@ Turn flymake mode off. ;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off ;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode) -;;;;;; "flyspell" "textmodes/flyspell.el" (20721 17977 14204 0)) +;;;;;; "flyspell" "textmodes/flyspell.el" (20847 51240 240216 0)) ;;; Generated autoloads from textmodes/flyspell.el (autoload 'flyspell-prog-mode "flyspell" "\ @@ -11425,7 +11429,7 @@ and choose the directory as the fortune-file. ;;;*** ;;;### (autoloads (gdb gdb-enable-debug) "gdb-mi" "progmodes/gdb-mi.el" -;;;;;; (20799 169 640767 0)) +;;;;;; (20851 48294 960738 0)) ;;; Generated autoloads from progmodes/gdb-mi.el (defvar gdb-enable-debug nil "\ @@ -11654,8 +11658,8 @@ DEFAULT-MAP specifies the default key map for ICON-LIST. ;;;*** ;;;### (autoloads (gnus gnus-other-frame gnus-slave gnus-no-server -;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (20709 26818 -;;;;;; 907104 0)) +;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (20860 63270 +;;;;;; 684173 0)) ;;; Generated autoloads from gnus/gnus.el (when (fboundp 'custom-autoload) (custom-autoload 'gnus-select-method "gnus")) @@ -12195,7 +12199,7 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns: ;;;*** ;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail) -;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20820 6311 856169 0)) +;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20858 21542 723007 0)) ;;; Generated autoloads from gnus/gnus-msg.el (autoload 'gnus-msg-mail "gnus-msg" "\ @@ -12403,7 +12407,7 @@ Declare back end NAME with ABILITIES as a Gnus back end. ;;;*** ;;;### (autoloads (gnus-summary-bookmark-jump) "gnus-sum" "gnus/gnus-sum.el" -;;;;;; (20791 9657 561026 0)) +;;;;;; (20856 32301 830403 0)) ;;; Generated autoloads from gnus/gnus-sum.el (autoload 'gnus-summary-bookmark-jump "gnus-sum" "\ @@ -12726,8 +12730,8 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful. ;;;*** ;;;### (autoloads (gud-tooltip-mode gdb-script-mode jdb pdb perldb -;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20709 26818 -;;;;;; 907104 0)) +;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20851 48294 +;;;;;; 960738 0)) ;;; Generated autoloads from progmodes/gud.el (autoload 'gud-gdb "gud" "\ @@ -14532,8 +14536,8 @@ The main features of this mode are ;;;;;; ido-find-alternate-file ido-find-file-other-window ido-find-file ;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer ;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window -;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (20809 -;;;;;; 36008 682209 0)) +;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (20831 +;;;;;; 63016 738579 0)) ;;; Generated autoloads from ido.el (defvar ido-mode nil "\ @@ -15413,7 +15417,7 @@ for more information. ;;;### (autoloads (indian-2-column-to-ucs-region in-is13194-pre-write-conversion ;;;;;; in-is13194-post-read-conversion indian-compose-string indian-compose-region) -;;;;;; "ind-util" "language/ind-util.el" (20709 26818 907104 0)) +;;;;;; "ind-util" "language/ind-util.el" (20826 45095 436233 0)) ;;; Generated autoloads from language/ind-util.el (autoload 'indian-compose-region "ind-util" "\ @@ -15466,7 +15470,7 @@ of `inferior-lisp-program'). Runs the hooks from ;;;;;; Info-goto-emacs-key-command-node Info-goto-emacs-command-node ;;;;;; Info-mode info-finder info-apropos Info-index Info-directory ;;;;;; Info-on-current-buffer info-standalone info-emacs-bug info-emacs-manual -;;;;;; info info-other-window) "info" "info.el" (20813 33065 721081 +;;;;;; info info-other-window) "info" "info.el" (20841 12463 538770 ;;;;;; 0)) ;;; Generated autoloads from info.el @@ -15680,7 +15684,7 @@ Otherwise, visit the manual in a new Info buffer. ;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file ;;;;;; info-lookup-symbol info-lookup-reset) "info-look" "info-look.el" -;;;;;; (20771 24374 643644 0)) +;;;;;; (20854 24486 190633 0)) ;;; Generated autoloads from info-look.el (autoload 'info-lookup-reset "info-look" "\ @@ -16011,7 +16015,7 @@ Add submenus to the File menu, to convert to and from various formats. ;;;;;; ispell-buffer ispell-comments-and-strings ispell-region ispell-change-dictionary ;;;;;; ispell-kill-ispell ispell-help ispell-pdict-save ispell-word ;;;;;; ispell-personal-dictionary) "ispell" "textmodes/ispell.el" -;;;;;; (20787 12616 976036 0)) +;;;;;; (20847 51240 240216 0)) ;;; Generated autoloads from textmodes/ispell.el (put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive)))) @@ -16492,7 +16496,7 @@ and the return value is the length of the conversion. ;;;### (autoloads (kmacro-end-call-mouse kmacro-end-and-call-macro ;;;;;; kmacro-end-or-call-macro kmacro-start-macro-or-insert-counter ;;;;;; kmacro-call-macro kmacro-end-macro kmacro-start-macro kmacro-exec-ring-item) -;;;;;; "kmacro" "kmacro.el" (20824 3367 300658 0)) +;;;;;; "kmacro" "kmacro.el" (20830 42150 757296 0)) ;;; Generated autoloads from kmacro.el (global-set-key "\C-x(" 'kmacro-start-macro) (global-set-key "\C-x)" 'kmacro-end-macro) @@ -16651,7 +16655,7 @@ Use \\[describe-mode] for more info. ;;;### (autoloads (lao-compose-region lao-composition-function lao-transcribe-roman-to-lao-string ;;;;;; lao-transcribe-single-roman-syllable-to-lao lao-compose-string) -;;;;;; "lao-util" "language/lao-util.el" (20709 26818 907104 0)) +;;;;;; "lao-util" "language/lao-util.el" (20826 45095 436233 0)) ;;; Generated autoloads from language/lao-util.el (autoload 'lao-compose-string "lao-util" "\ @@ -16723,8 +16727,8 @@ coding system names is determined from `latex-inputenc-coding-alist'. ;;;*** ;;;### (autoloads (latin1-display-ucs-per-lynx latin1-display latin1-display) -;;;;;; "latin1-disp" "international/latin1-disp.el" (20709 26818 -;;;;;; 907104 0)) +;;;;;; "latin1-disp" "international/latin1-disp.el" (20826 45095 +;;;;;; 436233 0)) ;;; Generated autoloads from international/latin1-disp.el (defvar latin1-display nil "\ @@ -16944,8 +16948,8 @@ done. Otherwise, it uses the current buffer. ;;;*** -;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20709 -;;;;;; 26818 907104 0)) +;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20860 +;;;;;; 63270 684173 0)) ;;; Generated autoloads from vc/log-view.el (autoload 'log-view-mode "log-view" "\ @@ -17053,7 +17057,7 @@ for further customization of the printer command. ;;;*** ;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el" -;;;;;; (20709 26818 907104 0)) +;;;;;; (20860 63270 684173 0)) ;;; Generated autoloads from ls-lisp.el (defvar ls-lisp-support-shell-wildcards t "\ @@ -17320,8 +17324,8 @@ matches may be returned from the message body. ;;;*** ;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup -;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (20709 -;;;;;; 26818 907104 0)) +;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (20847 +;;;;;; 51240 240216 0)) ;;; Generated autoloads from mail/mailabbrev.el (defvar mail-abbrevs-mode nil "\ @@ -17682,7 +17686,7 @@ recursion depth in the minibuffer prompt. This is only useful if ;;;;;; message-forward-make-body message-forward message-recover ;;;;;; message-supersede message-cancel-news message-followup message-wide-reply ;;;;;; message-reply message-news message-mail message-mode) "message" -;;;;;; "gnus/message.el" (20808 15152 87827 0)) +;;;;;; "gnus/message.el" (20858 21542 723007 0)) ;;; Generated autoloads from gnus/message.el (define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook) @@ -18361,7 +18365,7 @@ Assume text has been decoded if DECODED is non-nil. ;;;*** ;;;### (autoloads (mml-attach-file mml-to-mime) "mml" "gnus/mml.el" -;;;;;; (20745 310 425822 0)) +;;;;;; (20829 21286 719109 0)) ;;; Generated autoloads from gnus/mml.el (autoload 'mml-to-mime "mml" "\ @@ -18560,7 +18564,7 @@ To test this function, evaluate: ;;;*** -;;;### (autoloads (mpc) "mpc" "mpc.el" (20822 48073 524485 0)) +;;;### (autoloads (mpc) "mpc" "mpc.el" (20838 36262 626321 0)) ;;; Generated autoloads from mpc.el (autoload 'mpc "mpc" "\ @@ -18748,7 +18752,7 @@ The default is 20. If LIMIT is negative, do not limit the listing. ;;;;;; coding-system-translation-table-for-decode coding-system-pre-write-conversion ;;;;;; coding-system-post-read-conversion lookup-nested-alist set-nested-alist ;;;;;; truncate-string-to-width store-substring) "mule-util" "international/mule-util.el" -;;;;;; (20709 26818 907104 0)) +;;;;;; (20826 45095 436233 0)) ;;; Generated autoloads from international/mule-util.el (defsubst string-to-list (string) "\ @@ -18879,9 +18883,9 @@ per-character basis, this may not be accurate. ;;;*** -;;;### (autoloads (advice-member-p advice-remove advice-add advice--add-function -;;;;;; add-function advice--buffer-local advice--remove-function) -;;;;;; "nadvice" "emacs-lisp/nadvice.el" (20785 57270 519804 0)) +;;;### (autoloads (advice-member-p advice-remove advice-add remove-function +;;;;;; advice--add-function add-function advice--buffer-local advice--remove-function) +;;;;;; "nadvice" "emacs-lisp/nadvice.el" (20851 48294 960738 0)) ;;; Generated autoloads from emacs-lisp/nadvice.el (autoload 'advice--remove-function "nadvice" "\ @@ -18903,18 +18907,20 @@ call OLDFUN here: `:before' (lambda (&rest r) (apply FUNCTION r) (apply OLDFUN r)) `:after' (lambda (&rest r) (prog1 (apply OLDFUN r) (apply FUNCTION r))) `:around' (lambda (&rest r) (apply FUNCTION OLDFUN r)) +`:override' (lambda (&rest r) (apply FUNCTION r)) `:before-while' (lambda (&rest r) (and (apply FUNCTION r) (apply OLDFUN r))) `:before-until' (lambda (&rest r) (or (apply FUNCTION r) (apply OLDFUN r))) `:after-while' (lambda (&rest r) (and (apply OLDFUN r) (apply FUNCTION r))) `:after-until' (lambda (&rest r) (or (apply OLDFUN r) (apply FUNCTION r))) +`:filter-args' (lambda (&rest r) (apply OLDFUN (funcall FUNCTION r))) +`:filter-return'(lambda (&rest r) (funcall FUNCTION (apply OLDFUN r))) If FUNCTION was already added, do nothing. PROPS is an alist of additional properties, among which the following have a special meaning: - `name': a string or symbol. It can be used to refer to this piece of advice. -PLACE cannot be a simple variable. Instead it should either be -\(default-value 'VAR) or (local 'VAR) depending on whether FUNCTION -should be applied to VAR buffer-locally or globally. +If PLACE is a simple variable, only its global value will be affected. +Use (local 'VAR) if you want to apply FUNCTION to VAR buffer-locally. If one of FUNCTION or OLDFUN is interactive, then the resulting function is also interactive. There are 3 cases: @@ -18931,6 +18937,14 @@ is also interactive. There are 3 cases: \(fn WHERE REF FUNCTION PROPS)" nil nil) +(autoload 'remove-function "nadvice" "\ +Remove the FUNCTION piece of advice from PLACE. +If FUNCTION was not added to PLACE, do nothing. +Instead of FUNCTION being the actual function, it can also be the `name' +of the piece of advice. + +\(fn PLACE FUNCTION)" nil t) + (autoload 'advice-add "nadvice" "\ Like `add-function' but for the function named SYMBOL. Contrary to `add-function', this will properly handle the cases where SYMBOL @@ -19420,11 +19434,21 @@ the variable `nxml-enabled-unicode-blocks'. ;;;*** -;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el" -;;;;;; (20709 26818 907104 0)) -;;; Generated autoloads from progmodes/octave-inf.el +;;;### (autoloads (inferior-octave octave-mode) "octave" "progmodes/octave.el" +;;;;;; (20864 60326 774861 0)) +;;; Generated autoloads from progmodes/octave.el + +(autoload 'octave-mode "octave" "\ +Major mode for editing Octave code. -(autoload 'inferior-octave "octave-inf" "\ +Octave is a high-level language, primarily intended for numerical +computations. It provides a convenient command line interface +for solving linear and nonlinear problems numerically. Function +definitions can also be stored in files and used in batch mode. + +\(fn)" t nil) + +(autoload 'inferior-octave "octave" "\ Run an inferior Octave process, I/O via `inferior-octave-buffer'. This buffer is put in Inferior Octave mode. See `inferior-octave-mode'. @@ -19443,91 +19467,8 @@ startup file, `~/.emacs-octave'. ;;;*** -;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el" -;;;;;; (20709 26818 907104 0)) -;;; Generated autoloads from progmodes/octave-mod.el - -(autoload 'octave-mode "octave-mod" "\ -Major mode for editing Octave code. - -This mode makes it easier to write Octave code by helping with -indentation, doing some of the typing for you (with Abbrev mode) and by -showing keywords, comments, strings, etc. in different faces (with -Font Lock mode on terminals that support it). - -Octave itself is a high-level language, primarily intended for numerical -computations. It provides a convenient command line interface for -solving linear and nonlinear problems numerically. Function definitions -can also be stored in files, and it can be used in a batch mode (which -is why you need this mode!). - -The latest released version of Octave is always available via anonymous -ftp from ftp.octave.org in the directory `/pub/octave'. Complete -source and binaries for several popular systems are available. - -Type \\[list-abbrevs] to display the built-in abbrevs for Octave keywords. - -Keybindings -=========== - -\\{octave-mode-map} - -Variables you can use to customize Octave mode -============================================== - -`octave-blink-matching-block' - Non-nil means show matching begin of block when inserting a space, - newline or semicolon after an else or end keyword. Default is t. - -`octave-block-offset' - Extra indentation applied to statements in block structures. - Default is 2. - -`octave-continuation-offset' - Extra indentation applied to Octave continuation lines. - Default is 4. - -`octave-continuation-string' - String used for Octave continuation lines. - Default is a backslash. - -`octave-send-echo-input' - Non-nil means always display `inferior-octave-buffer' after sending a - command to the inferior Octave process. - -`octave-send-line-auto-forward' - Non-nil means always go to the next unsent line of Octave code after - sending a line to the inferior Octave process. - -`octave-send-echo-input' - Non-nil means echo input sent to the inferior Octave process. - -Turning on Octave mode runs the hook `octave-mode-hook'. - -To begin using this mode for all `.m' files that you edit, add the -following lines to your init file: - - (add-to-list 'auto-mode-alist '(\"\\\\.m\\\\'\" . octave-mode)) - -To automatically turn on the abbrev and auto-fill features, -add the following lines to your init file as well: - - (add-hook 'octave-mode-hook - (lambda () - (abbrev-mode 1) - (auto-fill-mode 1))) - -To submit a problem report, enter \\[octave-submit-bug-report] from an Octave mode buffer. -This automatically sets up a mail buffer with version information -already added. You just need to add a description of the problem, -including a reproducible test case and send the message. - -\(fn)" t nil) - -;;;*** - ;;;### (autoloads (opascal-mode) "opascal" "progmodes/opascal.el" -;;;;;; (20746 21181 635406 0)) +;;;;;; (20858 21542 723007 0)) ;;; Generated autoloads from progmodes/opascal.el (define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4") @@ -19558,14 +19499,8 @@ Customization: Coloring: - `opascal-comment-face' (default font-lock-comment-face) - Face used to color OPascal comments. - `opascal-string-face' (default font-lock-string-face) - Face used to color OPascal strings. `opascal-keyword-face' (default font-lock-keyword-face) Face used to color OPascal keywords. - `opascal-other-face' (default nil) - Face used to color everything else. Turning on OPascal mode calls the value of the variable `opascal-mode-hook' with no args, if that value is non-nil. @@ -19806,7 +19741,7 @@ Call the customize function with org as argument. ;;;;;; org-search-view org-agenda-list org-batch-store-agenda-views ;;;;;; org-store-agenda-views org-batch-agenda-csv org-batch-agenda ;;;;;; org-agenda org-toggle-sticky-agenda) "org-agenda" "org/org-agenda.el" -;;;;;; (20783 15545 430927 0)) +;;;;;; (20847 51240 240216 0)) ;;; Generated autoloads from org/org-agenda.el (autoload 'org-toggle-sticky-agenda "org-agenda" "\ @@ -20268,7 +20203,7 @@ See the command `outline-mode' for more information on this mode. ;;;### (autoloads (list-packages describe-package package-initialize ;;;;;; package-refresh-contents package-install-file package-install-from-buffer ;;;;;; package-install package-enable-at-startup) "package" "emacs-lisp/package.el" -;;;;;; (20764 51137 83502 0)) +;;;;;; (20860 63270 684173 0)) ;;; Generated autoloads from emacs-lisp/package.el (defvar package-enable-at-startup t "\ @@ -20646,6 +20581,26 @@ Includes files as well as host names followed by a colon. ;;;*** +;;;### (autoloads (pcomplete/ack pcomplete/tlmgr) "pcmpl-x" "pcmpl-x.el" +;;;;;; (20837 15398 184639 0)) +;;; Generated autoloads from pcmpl-x.el + +(autoload 'pcomplete/tlmgr "pcmpl-x" "\ +Completion for the `tlmgr' command. + +\(fn)" nil nil) + +(autoload 'pcomplete/ack "pcmpl-x" "\ +Completion for the `ack' command. +Start an argument with '-' to complete short options and '--' for +long options. + +\(fn)" nil nil) + +(defalias 'pcomplete/ack-grep 'pcomplete/ack) + +;;;*** + ;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list ;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete ;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20709 @@ -21699,7 +21654,7 @@ Open profile FILENAME. ;;;*** ;;;### (autoloads (run-prolog mercury-mode prolog-mode) "prolog" -;;;;;; "progmodes/prolog.el" (20791 9657 561026 0)) +;;;;;; "progmodes/prolog.el" (20851 48294 960738 0)) ;;; Generated autoloads from progmodes/prolog.el (autoload 'prolog-mode "prolog" "\ @@ -21996,7 +21951,7 @@ If EXTENSION is any other symbol, it is ignored. ;;;*** ;;;### (autoloads (python-mode run-python) "python" "progmodes/python.el" -;;;;;; (20824 3367 300658 0)) +;;;;;; (20850 27430 515630 0)) ;;; Generated autoloads from progmodes/python.el (add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode)) @@ -22615,8 +22570,8 @@ For true \"word wrap\" behavior, use `visual-line-mode' instead. ;;;*** ;;;### (autoloads (reftex-reset-scanning-information reftex-mode -;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20777 63161 -;;;;;; 848428 0)) +;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20843 54187 +;;;;;; 671468 0)) ;;; Generated autoloads from textmodes/reftex.el (autoload 'turn-on-reftex "reftex" "\ @@ -22666,7 +22621,7 @@ This enforces rescanning the buffer on next use. ;;;*** ;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el" -;;;;;; (20734 30007 218637 0)) +;;;;;; (20838 36262 626321 0)) ;;; Generated autoloads from textmodes/reftex-cite.el (autoload 'reftex-citation "reftex-cite" "\ @@ -22746,7 +22701,7 @@ Here are all local bindings. ;;;*** ;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el" -;;;;;; (20709 26818 907104 0)) +;;;;;; (20858 21542 723007 0)) ;;; Generated autoloads from textmodes/reftex-parse.el (autoload 'reftex-all-document-files "reftex-parse" "\ @@ -22758,8 +22713,8 @@ of master file. ;;;*** -;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20734 -;;;;;; 30007 218637 0)) +;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20858 +;;;;;; 21542 723007 0)) ;;; Generated autoloads from textmodes/reftex-vars.el (put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) (put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) @@ -22800,7 +22755,7 @@ This means the number of non-shy regexp grouping constructs ;;;### (autoloads (remember-diary-extract-entries remember-clipboard ;;;;;; remember-other-frame remember) "remember" "textmodes/remember.el" -;;;;;; (20799 169 640767 0)) +;;;;;; (20859 42406 744769 0)) ;;; Generated autoloads from textmodes/remember.el (autoload 'remember "remember" "\ @@ -23466,7 +23421,7 @@ for modes derived from Text mode, like Mail mode. ;;;*** ;;;### (autoloads (ruby-mode) "ruby-mode" "progmodes/ruby-mode.el" -;;;;;; (20792 30519 8548 0)) +;;;;;; (20845 9511 656701 0)) ;;; Generated autoloads from progmodes/ruby-mode.el (autoload 'ruby-mode "ruby-mode" "\ @@ -24482,7 +24437,7 @@ To work around that, do: ;;;*** ;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el" -;;;;;; (20791 9657 561026 0)) +;;;;;; (20850 27430 515630 0)) ;;; Generated autoloads from progmodes/sh-script.el (put 'sh-shell 'safe-local-variable 'symbolp) @@ -24546,7 +24501,7 @@ with your script for an edit-interpret-debug cycle. ;;;*** ;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el" -;;;;;; (20709 26818 907104 0)) +;;;;;; (20858 21542 723007 0)) ;;; Generated autoloads from emacs-lisp/shadow.el (autoload 'list-load-path-shadows "shadow" "\ @@ -24564,7 +24519,7 @@ the earlier. For example, suppose `load-path' is set to -\(\"/usr/gnu/emacs/site-lisp\" \"/usr/gnu/emacs/share/emacs/19.30/lisp\") +\(\"/usr/share/emacs/site-lisp\" \"/usr/share/emacs/24.3/lisp\") and that each of these directories contains a file called XXX.el. Then XXX.el in the site-lisp directory is referred to by all of: @@ -24576,9 +24531,9 @@ the second is loaded explicitly via `load-file'). When not intended, such shadowings can be the source of subtle problems. For example, the above situation may have arisen because the XXX package was not distributed with versions of Emacs prior to -19.30. An Emacs maintainer downloaded XXX from elsewhere and installed +24.3. A system administrator downloaded XXX from elsewhere and installed it. Later, XXX was updated and included in the Emacs distribution. -Unless the Emacs maintainer checks for this, the new version of XXX +Unless the system administrator checks for this, the new version of XXX will be hidden behind the old (which may no longer work with the new Emacs version). @@ -24684,8 +24639,8 @@ Otherwise, one argument `-i' is passed to the shell. ;;;*** -;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20791 -;;;;;; 9657 561026 0)) +;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20845 +;;;;;; 9511 656701 0)) ;;; Generated autoloads from gnus/shr.el (autoload 'shr-insert-document "shr" "\ @@ -27574,8 +27529,8 @@ In dired, call the setroot program on the image at point. ;;;;;; tibetan-post-read-conversion tibetan-compose-buffer tibetan-decompose-buffer ;;;;;; tibetan-decompose-string tibetan-decompose-region tibetan-compose-region ;;;;;; tibetan-compose-string tibetan-transcription-to-tibetan tibetan-tibetan-to-transcription -;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (20709 -;;;;;; 26818 907104 0)) +;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (20826 +;;;;;; 45095 436233 0)) ;;; Generated autoloads from language/tibet-util.el (autoload 'tibetan-char-p "tibet-util" "\ @@ -28269,8 +28224,8 @@ to a tcp server on another machine. ;;;*** ;;;### (autoloads (trace-function-background trace-function-foreground -;;;;;; trace-buffer) "trace" "emacs-lisp/trace.el" (20727 56759 -;;;;;; 628211 0)) +;;;;;; trace-values trace-buffer) "trace" "emacs-lisp/trace.el" +;;;;;; (20842 33318 816618 0)) ;;; Generated autoloads from emacs-lisp/trace.el (defvar trace-buffer "*trace-output*" "\ @@ -28278,6 +28233,12 @@ Trace output will by default go to that buffer.") (custom-autoload 'trace-buffer "trace" t) +(autoload 'trace-values "trace" "\ +Helper function to get internal values. +You can call this function to add internal values in the trace buffer. + +\(fn &rest VALUES)" nil nil) + (autoload 'trace-function-foreground "trace" "\ Traces FUNCTION with trace output going to BUFFER. For every call of FUNCTION Lisp-style trace messages that display argument @@ -28305,7 +28266,7 @@ changing the window configuration. ;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion ;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers ;;;;;; tramp-file-name-handler tramp-syntax tramp-mode) "tramp" -;;;;;; "net/tramp.el" (20824 3367 300658 0)) +;;;;;; "net/tramp.el" (20854 24486 190633 0)) ;;; Generated autoloads from net/tramp.el (defvar tramp-mode t "\ @@ -29551,8 +29512,8 @@ If FILE-NAME is non-nil, save the result to FILE-NAME. ;;;;;; vc-print-log vc-retrieve-tag vc-create-tag vc-merge vc-insert-headers ;;;;;; vc-revision-other-window vc-root-diff vc-ediff vc-version-ediff ;;;;;; vc-diff vc-version-diff vc-register vc-next-action vc-before-checkin-hook -;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20752 -;;;;;; 26669 524456 0)) +;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20855 +;;;;;; 45357 683214 0)) ;;; Generated autoloads from vc/vc.el (defvar vc-checkout-hook nil "\ @@ -29882,8 +29843,8 @@ mode-specific menu. `vc-annotate-color-map' and ;;;*** -;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20820 6311 856169 -;;;;;; 0)) +;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20856 32310 242920 +;;;;;; 705000)) ;;; Generated autoloads from vc/vc-bzr.el (defconst vc-bzr-admin-dirname ".bzr" "\ @@ -29899,7 +29860,7 @@ Name of the format file in a .bzr directory.") ;;;*** -;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20748 62911 684442 +;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20855 45357 683214 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-cvs.el (defun vc-cvs-registered (f) @@ -29976,7 +29937,7 @@ These are the commands available for use in the file status buffer: ;;;*** ;;;### (autoloads (vc-do-command) "vc-dispatcher" "vc/vc-dispatcher.el" -;;;;;; (20709 26818 907104 0)) +;;;;;; (20851 48294 960738 0)) ;;; Generated autoloads from vc/vc-dispatcher.el (autoload 'vc-do-command "vc-dispatcher" "\ @@ -29999,7 +29960,7 @@ case, and the process object in the asynchronous case. ;;;*** -;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20748 62911 684442 +;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20855 45357 683214 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-git.el (defun vc-git-registered (file) @@ -30011,7 +29972,7 @@ case, and the process object in the asynchronous case. ;;;*** -;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20748 62911 684442 0)) +;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20855 45357 683214 0)) ;;; Generated autoloads from vc/vc-hg.el (defun vc-hg-registered (file) "Return non-nil if FILE is registered with hg." @@ -30022,7 +29983,7 @@ case, and the process object in the asynchronous case. ;;;*** -;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20748 62911 684442 +;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20855 45357 683214 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-mtn.el @@ -30040,7 +30001,7 @@ Name of the monotone directory's format file.") ;;;*** ;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc/vc-rcs.el" -;;;;;; (20709 26818 907104 0)) +;;;;;; (20855 45357 683214 0)) ;;; Generated autoloads from vc/vc-rcs.el (defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\ @@ -30054,7 +30015,7 @@ For a description of possible values, see `vc-check-master-templates'.") ;;;*** ;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc/vc-sccs.el" -;;;;;; (20709 26818 907104 0)) +;;;;;; (20855 45357 683214 0)) ;;; Generated autoloads from vc/vc-sccs.el (defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\ @@ -30072,7 +30033,7 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir) ;;;*** -;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20760 54070 584283 +;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20855 45357 683214 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-svn.el (defun vc-svn-registered (f) @@ -30894,7 +30855,7 @@ Syntax table and abbrevs while in vi mode remain as they were in Emacs. ;;;### (autoloads (viqr-pre-write-conversion viqr-post-read-conversion ;;;;;; viet-encode-viqr-buffer viet-encode-viqr-region viet-decode-viqr-buffer ;;;;;; viet-decode-viqr-region viet-encode-viscii-char) "viet-util" -;;;;;; "language/viet-util.el" (20709 26818 907104 0)) +;;;;;; "language/viet-util.el" (20826 45095 436233 0)) ;;; Generated autoloads from language/viet-util.el (autoload 'viet-encode-viscii-char "viet-util" "\ @@ -31390,8 +31351,8 @@ in certain major modes. ;;;### (autoloads (whitespace-report-region whitespace-report whitespace-cleanup-region ;;;;;; whitespace-cleanup global-whitespace-toggle-options whitespace-toggle-options ;;;;;; global-whitespace-newline-mode global-whitespace-mode whitespace-newline-mode -;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20809 36008 -;;;;;; 682209 0)) +;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20831 63016 +;;;;;; 738579 0)) ;;; Generated autoloads from whitespace.el (autoload 'whitespace-mode "whitespace" "\ @@ -31917,8 +31878,8 @@ Default MODIFIER is 'shift. ;;;*** -;;;### (autoloads (winner-mode) "winner" "winner.el" (20709 26818 -;;;;;; 907104 0)) +;;;### (autoloads (winner-mode) "winner" "winner.el" (20849 6570 +;;;;;; 598687 0)) ;;; Generated autoloads from winner.el (defvar winner-mode nil "\ @@ -32466,8 +32427,8 @@ Zone out, completely. ;;;;;; "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el" ;;;;;; "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el" ;;;;;; "vcursor.el" "vt-control.el" "vt100-led.el" "w32-common-fns.el" -;;;;;; "w32-fns.el" "w32-vars.el" "x-dnd.el") (20825 24458 310780 -;;;;;; 797000)) +;;;;;; "w32-fns.el" "w32-vars.el" "x-dnd.el") (20864 60345 274595 +;;;;;; 113000)) ;;;*** diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el index 70ee4394b88..60d6b7b7ba5 100644 --- a/lisp/ls-lisp.el +++ b/lisp/ls-lisp.el @@ -404,6 +404,13 @@ not contain `d', so that a full listing is expected." ;; the wildcard; let's say something similar. (insert "(No match)\n")) (insert (format "total %.0f\n" (fceiling (/ sum 1024.0)))))) + ;; dired-insert-directory exprects to find point after the + ;; text. But if the listinmg is empty, as e.g. in empty + ;; directories with -a removed from switches, point will be + ;; before the inserted text, and dired-insert-directory will + ;; not indent the listing correctly. Going to the end of the + ;; buffer fixes that. + (unless files (goto-char (point-max))) (if (memq ?R switches) ;; List the contents of all directories recursively. ;; cadr of each element of `file-alist' is t for diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 4fc270792fc..6a23da1f2cd 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -6475,6 +6475,52 @@ comment at the start of cc-engine.el for more info." (c-go-list-forward) t))) +(defun c-back-over-member-initializers () + ;; Test whether we are in a C++ member initializer list, and if so, go back + ;; to the introducing ":", returning the position of the opening paren of + ;; the function's arglist. Otherwise return nil, leaving point unchanged. + (let ((here (point)) + (paren-state (c-parse-state)) + res) + + (setq res + (catch 'done + (if (not (c-at-toplevel-p)) + (progn + (while (not (c-at-toplevel-p)) + (goto-char (c-pull-open-brace paren-state))) + (c-backward-syntactic-ws) + (when (not (c-simple-skip-symbol-backward)) + (throw 'done nil)) + (c-backward-syntactic-ws)) + (c-backward-syntactic-ws) + (when (memq (char-before) '(?\) ?})) + (when (not (c-go-list-backward)) + (throw 'done nil)) + (c-backward-syntactic-ws)) + (when (c-simple-skip-symbol-backward) + (c-backward-syntactic-ws))) + + (while (eq (char-before) ?,) + (backward-char) + (c-backward-syntactic-ws) + + (when (not (memq (char-before) '(?\) ?}))) + (throw 'done nil)) + (when (not (c-go-list-backward)) + (throw 'done nil)) + (c-backward-syntactic-ws) + (when (not (c-simple-skip-symbol-backward)) + (throw 'done nil)) + (c-backward-syntactic-ws)) + + (and + (eq (char-before) ?:) + (c-just-after-func-arglist-p)))) + + (or res (goto-char here)) + res)) + ;; Handling of large scale constructs like statements and declarations. @@ -9677,18 +9723,13 @@ comment at the start of cc-engine.el for more info." ;; 2007-11-09) )))) - ;; CASE 5B: After a function header but before the body (or - ;; the ending semicolon if there's no body). + ;; CASE 5R: Member init list. (Used to be part of CASE 5B.1) + ;; Note there is no limit on the backward search here, since member + ;; init lists can, in practice, be very large. ((save-excursion - (when (setq placeholder (c-just-after-func-arglist-p - (max lim (c-determine-limit 500)))) + (when (setq placeholder (c-back-over-member-initializers)) (setq tmp-pos (point)))) - (cond - - ;; CASE 5B.1: Member init list. - ((eq (char-after tmp-pos) ?:) - (if (or (>= tmp-pos indent-point) - (= (c-point 'bosws) (1+ tmp-pos))) + (if (= (c-point 'bosws) (1+ tmp-pos)) (progn ;; There is no preceding member init clause. ;; Indent relative to the beginning of indentation @@ -9701,6 +9742,23 @@ comment at the start of cc-engine.el for more info." (c-forward-syntactic-ws) (c-add-syntax 'member-init-cont (point)))) + ;; CASE 5B: After a function header but before the body (or + ;; the ending semicolon if there's no body). + ((save-excursion + (when (setq placeholder (c-just-after-func-arglist-p + (max lim (c-determine-limit 500)))) + (setq tmp-pos (point)))) + (cond + + ;; CASE 5B.1: Member init list. + ((eq (char-after tmp-pos) ?:) + ;; There is no preceding member init clause. + ;; Indent relative to the beginning of indentation + ;; for the topmost-intro line that contains the + ;; prototype's open paren. + (goto-char placeholder) + (c-add-syntax 'member-init-intro (c-point 'boi))) + ;; CASE 5B.2: K&R arg decl intro ((and c-recognize-knr-p (c-in-knr-argdecl lim)) diff --git a/lisp/progmodes/octave.el b/lisp/progmodes/octave.el index 0e540ea348a..4b02645e463 100644 --- a/lisp/progmodes/octave.el +++ b/lisp/progmodes/octave.el @@ -1,4 +1,4 @@ -;;; octave.el --- editing octave source files under emacs +;;; octave.el --- editing octave source files under emacs -*- lexical-binding: t; -*- ;; Copyright (C) 1997, 2001-2013 Free Software Foundation, Inc. @@ -34,63 +34,42 @@ ;;; Code: (require 'comint) +;;; For emacs < 24.3. +(require 'newcomment) +(eval-when-compile + (unless (fboundp 'setq-local) + (defmacro setq-local (var val) + "Set variable VAR to value VAL in current buffer." + (list 'set (list 'make-local-variable (list 'quote var)) val)))) + (defgroup octave nil "Editing Octave code." :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces) :group 'languages) -(defconst octave-maintainer-address - "Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>, bug-gnu-emacs@gnu.org" - "Current maintainer of the Emacs Octave package.") - -(define-abbrev-table 'octave-abbrev-table - (mapcar (lambda (e) (append e '(nil 0 t))) - '(("`a" "all_va_args") - ("`b" "break") - ("`cs" "case") - ("`ca" "catch") - ("`c" "continue") - ("`el" "else") - ("`eli" "elseif") - ("`et" "end_try_catch") - ("`eu" "end_unwind_protect") - ("`ef" "endfor") - ("`efu" "endfunction") - ("`ei" "endif") - ("`es" "endswitch") - ("`ew" "endwhile") - ("`f" "for") - ("`fu" "function") - ("`gl" "global") - ("`gp" "gplot") - ("`gs" "gsplot") - ("`if" "if ()") - ("`o" "otherwise") - ("`rp" "replot") - ("`r" "return") - ("`s" "switch") - ("`t" "try") - ("`u" "until ()") - ("`up" "unwind_protect") - ("`upc" "unwind_protect_cleanup") - ("`w" "while ()"))) +(define-obsolete-function-alias 'octave-submit-bug-report + 'report-emacs-bug "24.4") + +(define-abbrev-table 'octave-abbrev-table nil "Abbrev table for Octave's reserved words. -Used in `octave-mode' and `inferior-octave-mode' buffers. -All Octave abbrevs start with a grave accent (`)." - :regexp "\\(?:[^`]\\|^\\)\\(\\(?:\\<\\|`\\)\\w+\\)\\W*") +Used in `octave-mode' and `inferior-octave-mode' buffers.") (defvar octave-comment-char ?# "Character to start an Octave comment.") + (defvar octave-comment-start (string octave-comment-char ?\s) "String to insert to start a new Octave in-line comment.") + (defvar octave-comment-start-skip "\\s<+\\s-*" "Regexp to match the start of an Octave comment up to its body.") (defvar octave-begin-keywords '("do" "for" "function" "if" "switch" "try" "unwind_protect" "while")) + (defvar octave-else-keywords '("case" "catch" "else" "elseif" "otherwise" "unwind_protect_cleanup")) + (defvar octave-end-keywords '("endfor" "endfunction" "endif" "endswitch" "end_try_catch" "end_unwind_protect" "endwhile" "until" "end")) @@ -109,37 +88,6 @@ All Octave abbrevs start with a grave accent (`)." "which" "who" "whos") "Text functions in Octave.") -(defvar octave-variables - '("DEFAULT_EXEC_PATH" "DEFAULT_LOADPATH" - "EDITOR" "EXEC_PATH" "F_DUPFD" "F_GETFD" "F_GETFL" "F_SETFD" - "F_SETFL" "I" "IMAGE_PATH" "Inf" "J" - "NaN" "OCTAVE_VERSION" "O_APPEND" "O_CREAT" "O_EXCL" - "O_NONBLOCK" "O_RDONLY" "O_RDWR" "O_TRUNC" "O_WRONLY" "PAGER" "PS1" - "PS2" "PS4" "PWD" "SEEK_CUR" "SEEK_END" "SEEK_SET" "__F_DUPFD__" - "__F_GETFD__" "__F_GETFL__" "__F_SETFD__" "__F_SETFL__" "__I__" - "__Inf__" "__J__" "__NaN__" "__OCTAVE_VERSION__" "__O_APPEND__" - "__O_CREAT__" "__O_EXCL__" "__O_NONBLOCK__" "__O_RDONLY__" - "__O_RDWR__" "__O_TRUNC__" "__O_WRONLY__" "__PWD__" "__SEEK_CUR__" - "__SEEK_END__" "__SEEK_SET__" "__argv__" "__e__" "__eps__" - "__i__" "__inf__" "__j__" "__nan__" "__pi__" - "__program_invocation_name__" "__program_name__" "__realmax__" - "__realmin__" "__stderr__" "__stdin__" "__stdout__" "ans" "argv" - "beep_on_error" "completion_append_char" - "crash_dumps_octave_core" "default_save_format" - "e" "echo_executing_commands" "eps" - "error_text" "gnuplot_binary" "history_file" - "history_size" "ignore_function_time_stamp" - "inf" "nan" "nargin" "output_max_field_width" "output_precision" - "page_output_immediately" "page_screen_output" "pi" - "print_answer_id_name" "print_empty_dimensions" - "program_invocation_name" "program_name" - "realmax" "realmin" "return_last_computed_value" "save_precision" - "saving_history" "sighup_dumps_octave_core" "sigterm_dumps_octave_core" - "silent_functions" "split_long_rows" "stderr" "stdin" "stdout" - "string_fill_char" "struct_levels_to_print" - "suppress_verbose_help_message") - "Builtin variables in Octave.") - (defvar octave-function-header-regexp (concat "^\\s-*\\_<\\(function\\)\\_>" "\\([^=;\n]*=[ \t]*\\|[ \t]*\\)\\(\\(?:\\w\\|\\s_\\)+\\)\\_>") @@ -156,14 +104,22 @@ parenthetical grouping.") octave-text-functions)) "\\)\\_>") 'font-lock-keyword-face) + ;; Note: 'end' also serves as the last index in an indexing expression. + ;; Ref: http://www.mathworks.com/help/matlab/ref/end.html + '("\\_<end\\_>" (0 (save-excursion + (condition-case nil + (progn + (goto-char (match-beginning 0)) + (backward-up-list) + (unless (eq (char-after) ?\() + font-lock-keyword-face)) + (error font-lock-keyword-face))) + t)) ;; Fontify all builtin operators. (cons "\\(&\\||\\|<=\\|>=\\|==\\|<\\|>\\|!=\\|!\\)" (if (boundp 'font-lock-builtin-face) 'font-lock-builtin-face 'font-lock-preprocessor-face)) - ;; Fontify all builtin variables. - (cons (concat "\\_<" (regexp-opt octave-variables) "\\_>") - 'font-lock-variable-name-face) ;; Fontify all function declarations. (list octave-function-header-regexp '(1 font-lock-keyword-face) @@ -196,10 +152,8 @@ parenthetical grouping.") (defvar octave-mode-map (let ((map (make-sparse-keymap))) - (define-key map "`" 'octave-abbrev-start) (define-key map "\e\n" 'octave-indent-new-comment-line) (define-key map "\M-\C-q" 'octave-indent-defun) - (define-key map "\C-c\C-b" 'octave-submit-bug-report) (define-key map "\C-c\C-p" 'octave-previous-code-line) (define-key map "\C-c\C-n" 'octave-next-code-line) (define-key map "\C-c\C-a" 'octave-beginning-of-line) @@ -208,6 +162,7 @@ parenthetical grouping.") (define-key map "\C-c\M-\C-h" 'octave-mark-block) (define-key map "\C-c]" 'smie-close-block) (define-key map "\C-c/" 'smie-close-block) + (define-key map "\C-c;" 'octave-update-function-file-comment) (define-key map "\C-c\C-f" 'octave-insert-defun) (define-key map "\C-c\C-il" 'octave-send-line) (define-key map "\C-c\C-ib" 'octave-send-block) @@ -242,7 +197,8 @@ parenthetical grouping.") ["Close Block" smie-close-block t]) ("Functions" ["Indent Function" octave-indent-defun t] - ["Insert Function" octave-insert-defun t]) + ["Insert Function" octave-insert-defun t] + ["Update function file comment" octave-update-function-file-comment t]) "-" ("Debug" ["Send Current Line" octave-send-line t] @@ -255,16 +211,14 @@ parenthetical grouping.") "-" ["Indent Line" indent-according-to-mode t] ["Complete Symbol" completion-at-point t] - "-" - ["Toggle Abbrev Mode" abbrev-mode - :style toggle :selected abbrev-mode] ["Toggle Auto-Fill Mode" auto-fill-mode :style toggle :selected auto-fill-function] "-" - ["Submit Bug Report" octave-submit-bug-report t] - "-" ["Describe Octave Mode" describe-mode t] - ["Lookup Octave Index" info-lookup-symbol t])) + ["Lookup Octave Index" info-lookup-symbol t] + ["Customize Octave" (customize-group 'octave) t] + "-" + ["Submit Bug Report" report-emacs-bug t])) (defvar octave-mode-syntax-table (let ((table (make-syntax-table))) @@ -300,6 +254,12 @@ parenthetical grouping.") table) "Syntax table in use in `octave-mode' buffers.") +(defcustom octave-font-lock-texinfo-comment t + "Control whether to highlight the texinfo comment block." + :type 'boolean + :group 'octave + :version "24.4") + (defcustom octave-blink-matching-block t "Control the blinking of matching Octave block keywords. Non-nil means show matching begin of block when inserting a space, @@ -320,15 +280,17 @@ newline or semicolon after an else or end keyword." "Extra indentation applied to Octave continuation lines." :type 'integer :group 'octave) + (eval-and-compile (defconst octave-continuation-marker-regexp "\\\\\\|\\.\\.\\.")) + (defvar octave-continuation-regexp (concat "[^#%\n]*\\(" octave-continuation-marker-regexp "\\)\\s-*\\(\\s<.*\\)?$")) -(defcustom octave-continuation-string "\\" - "Character string used for Octave continuation lines. Normally \\." - :type 'string - :group 'octave) + +;; Char \ is considered a bad decision for continuing a line. +(defconst octave-continuation-string "..." + "Character string used for Octave continuation lines.") (defvar octave-mode-imenu-generic-expression (list @@ -345,11 +307,13 @@ newline or semicolon after an else or end keyword." "Non-nil means display `inferior-octave-buffer' after sending to it." :type 'boolean :group 'octave) + (defcustom octave-send-line-auto-forward t "Control auto-forward after sending to the inferior Octave process. Non-nil means always go to the next Octave code line after sending." :type 'boolean :group 'octave) + (defcustom octave-send-echo-input t "Non-nil means echo input sent to the inferior Octave process." :type 'boolean @@ -462,11 +426,12 @@ Non-nil means always go to the next Octave code line after sending." (forward-comment 1)) (cond ((and (looking-at "$\\|[%#]") - (not (smie-rule-bolp)) - ;; Ignore it if it's within parentheses. - (prog1 (let ((ppss (syntax-ppss))) - (not (and (nth 1 ppss) - (eq ?\( (char-after (nth 1 ppss)))))) + ;; Ignore it if it's within parentheses or if the newline does not end + ;; some preceding text. + (prog1 (and (not (smie-rule-bolp)) + (let ((ppss (syntax-ppss))) + (not (and (nth 1 ppss) + (eq ?\( (char-after (nth 1 ppss))))))) (forward-comment (point-max)))) ;; Why bother distinguishing \n and ;? ";") ;;"\n" @@ -508,130 +473,59 @@ Non-nil means always go to the next Octave code line after sending." (define-derived-mode octave-mode prog-mode "Octave" "Major mode for editing Octave code. -This mode makes it easier to write Octave code by helping with -indentation, doing some of the typing for you (with Abbrev mode) and by -showing keywords, comments, strings, etc. in different faces (with -Font Lock mode on terminals that support it). - -Octave itself is a high-level language, primarily intended for numerical -computations. It provides a convenient command line interface for -solving linear and nonlinear problems numerically. Function definitions -can also be stored in files, and it can be used in a batch mode (which -is why you need this mode!). - -The latest released version of Octave is always available via anonymous -ftp from ftp.octave.org in the directory `/pub/octave'. Complete -source and binaries for several popular systems are available. - -Type \\[list-abbrevs] to display the built-in abbrevs for Octave keywords. - -Keybindings -=========== - -\\{octave-mode-map} - -Variables you can use to customize Octave mode -============================================== - -`octave-blink-matching-block' - Non-nil means show matching begin of block when inserting a space, - newline or semicolon after an else or end keyword. Default is t. - -`octave-block-offset' - Extra indentation applied to statements in block structures. - Default is 2. - -`octave-continuation-offset' - Extra indentation applied to Octave continuation lines. - Default is 4. - -`octave-continuation-string' - String used for Octave continuation lines. - Default is a backslash. - -`octave-send-echo-input' - Non-nil means always display `inferior-octave-buffer' after sending a - command to the inferior Octave process. - -`octave-send-line-auto-forward' - Non-nil means always go to the next unsent line of Octave code after - sending a line to the inferior Octave process. - -`octave-send-echo-input' - Non-nil means echo input sent to the inferior Octave process. - -Turning on Octave mode runs the hook `octave-mode-hook'. - -To begin using this mode for all `.m' files that you edit, add the -following lines to your init file: - - (add-to-list 'auto-mode-alist '(\"\\\\.m\\\\'\" . octave-mode)) - -To automatically turn on the abbrev and auto-fill features, -add the following lines to your init file as well: - - (add-hook 'octave-mode-hook - (lambda () - (abbrev-mode 1) - (auto-fill-mode 1))) - -To submit a problem report, enter \\[octave-submit-bug-report] from \ -an Octave mode buffer. -This automatically sets up a mail buffer with version information -already added. You just need to add a description of the problem, -including a reproducible test case and send the message." - (setq local-abbrev-table octave-abbrev-table) +Octave is a high-level language, primarily intended for numerical +computations. It provides a convenient command line interface +for solving linear and nonlinear problems numerically. Function +definitions can also be stored in files and used in batch mode." + :abbrev-table octave-abbrev-table (smie-setup octave-smie-grammar #'octave-smie-rules :forward-token #'octave-smie-forward-token :backward-token #'octave-smie-backward-token) - (set (make-local-variable 'smie-indent-basic) 'octave-block-offset) + (setq-local smie-indent-basic 'octave-block-offset) - (set (make-local-variable 'smie-blink-matching-triggers) - (cons ?\; smie-blink-matching-triggers)) + (setq-local smie-blink-matching-triggers + (cons ?\; smie-blink-matching-triggers)) (unless octave-blink-matching-block (remove-hook 'post-self-insert-hook #'smie-blink-matching-open 'local)) - (set (make-local-variable 'electric-indent-chars) - (cons ?\; electric-indent-chars)) + (setq-local electric-indent-chars + (cons ?\; electric-indent-chars)) ;; IIUC matlab-mode takes the opposite approach: it makes RET insert ;; a ";" at those places where it's correct (i.e. outside of parens). - (set (make-local-variable 'electric-layout-rules) '((?\; . after))) + (setq-local electric-layout-rules '((?\; . after))) - (set (make-local-variable 'comment-start) octave-comment-start) - (set (make-local-variable 'comment-end) "") + (setq-local comment-start octave-comment-start) + (setq-local comment-end "") ;; Don't set it here: it's not really a property of the language, ;; just a personal preference of the author. - ;; (set (make-local-variable 'comment-column) 32) - (set (make-local-variable 'comment-start-skip) "\\s<+\\s-*") - (set (make-local-variable 'comment-add) 1) - - (set (make-local-variable 'parse-sexp-ignore-comments) t) - (set (make-local-variable 'paragraph-start) - (concat "\\s-*$\\|" page-delimiter)) - (set (make-local-variable 'paragraph-separate) paragraph-start) - (set (make-local-variable 'paragraph-ignore-fill-prefix) t) - (set (make-local-variable 'fill-paragraph-function) 'octave-fill-paragraph) + ;; (setq-local comment-column 32) + (setq-local comment-start-skip "\\s<+\\s-*") + (setq-local comment-add 1) + + (setq-local parse-sexp-ignore-comments t) + (setq-local paragraph-start (concat "\\s-*$\\|" page-delimiter)) + (setq-local paragraph-separate paragraph-start) + (setq-local paragraph-ignore-fill-prefix t) + (setq-local fill-paragraph-function 'octave-fill-paragraph) ;; FIXME: Why disable it? - ;; (set (make-local-variable 'adaptive-fill-regexp) nil) + ;; (setq-local adaptive-fill-regexp nil) ;; Again, this is not a property of the language, don't set it here. - ;; (set (make-local-variable 'fill-column) 72) - (set (make-local-variable 'normal-auto-fill-function) 'octave-auto-fill) + ;; (setq fill-column 72) + (setq-local normal-auto-fill-function 'octave-auto-fill) - (set (make-local-variable 'font-lock-defaults) - '(octave-font-lock-keywords)) + (setq font-lock-defaults '(octave-font-lock-keywords)) - (set (make-local-variable 'syntax-propertize-function) - #'octave-syntax-propertize-function) + (setq-local syntax-propertize-function #'octave-syntax-propertize-function) - (set (make-local-variable 'imenu-generic-expression) - octave-mode-imenu-generic-expression) - (set (make-local-variable 'imenu-case-fold-search) nil) + (setq imenu-generic-expression octave-mode-imenu-generic-expression) + (setq imenu-case-fold-search nil) (add-hook 'completion-at-point-functions 'octave-completion-at-point-function nil t) - (set (make-local-variable 'beginning-of-defun-function) - 'octave-beginning-of-defun) + (add-hook 'before-save-hook 'octave-sync-function-file-names nil t) + (setq-local beginning-of-defun-function 'octave-beginning-of-defun) + (and octave-font-lock-texinfo-comment (octave-font-lock-texinfo-comment)) (easy-menu-add octave-mode-menu)) @@ -652,6 +546,13 @@ including a reproducible test case and send the message." :type 'regexp :group 'octave) +(defcustom inferior-octave-prompt-read-only comint-prompt-read-only + "If non-nil, the Octave prompt is read only. +See `comint-prompt-read-only' for details." + :type 'boolean + :group 'octave + :version "24.4") + (defcustom inferior-octave-startup-file nil "Name of the inferior Octave startup file. The contents of this file are sent to the inferior Octave process on @@ -696,28 +597,12 @@ mode, set this to (\"-q\" \"--traditional\")." ;; Could certainly do more font locking in inferior Octave ... "Additional expressions to highlight in Inferior Octave mode.") - -;;; Compatibility functions -(if (not (fboundp 'comint-line-beginning-position)) - ;; comint-line-beginning-position is defined in Emacs 21 - (defun comint-line-beginning-position () - "Returns the buffer position of the beginning of the line, after any prompt. -The prompt is assumed to be any text at the beginning of the line matching -the regular expression `comint-prompt-regexp', a buffer local variable." - (save-excursion (comint-bol nil) (point)))) - - (defvar inferior-octave-output-list nil) (defvar inferior-octave-output-string nil) (defvar inferior-octave-receive-in-progress nil) -(defvar inferior-octave-startup-hook nil) - -(defvar inferior-octave-complete-impossible nil - "Non-nil means that `inferior-octave-complete' is impossible.") - -(defvar inferior-octave-has-built-in-variables nil - "Non-nil means that Octave has built-in variables.") +(define-obsolete-variable-alias 'inferior-octave-startup-hook + 'inferior-octave-mode-hook "24.4") (defvar inferior-octave-dynamic-complete-functions '(inferior-octave-completion-at-point comint-filename-completion) @@ -728,31 +613,25 @@ in the Inferior Octave buffer.") (defvar info-lookup-mode) (define-derived-mode inferior-octave-mode comint-mode "Inferior Octave" - "Major mode for interacting with an inferior Octave process. -Runs Octave as a subprocess of Emacs, with Octave I/O through an Emacs -buffer. + "Major mode for interacting with an inferior Octave process." + :abbrev-table octave-abbrev-table + (setq comint-prompt-regexp inferior-octave-prompt) -Entry to this mode successively runs the hooks `comint-mode-hook' and -`inferior-octave-mode-hook'." - (setq comint-prompt-regexp inferior-octave-prompt - mode-line-process '(":%s") - local-abbrev-table octave-abbrev-table) + (setq-local comment-start octave-comment-start) + (setq-local comment-end "") + (setq comment-column 32) + (setq-local comment-start-skip octave-comment-start-skip) - (set (make-local-variable 'comment-start) octave-comment-start) - (set (make-local-variable 'comment-end) "") - (set (make-local-variable 'comment-column) 32) - (set (make-local-variable 'comment-start-skip) octave-comment-start-skip) + (setq font-lock-defaults '(inferior-octave-font-lock-keywords nil nil)) - (set (make-local-variable 'font-lock-defaults) - '(inferior-octave-font-lock-keywords nil nil)) - - (set (make-local-variable 'info-lookup-mode) 'octave-mode) + (setq info-lookup-mode 'octave-mode) (setq comint-input-ring-file-name (or (getenv "OCTAVE_HISTFILE") "~/.octave_hist") comint-input-ring-size (or (getenv "OCTAVE_HISTSIZE") 1024)) - (set (make-local-variable 'comint-dynamic-complete-functions) - inferior-octave-dynamic-complete-functions) + (setq-local comint-dynamic-complete-functions + inferior-octave-dynamic-complete-functions) + (setq-local comint-prompt-read-only inferior-octave-prompt-read-only) (add-hook 'comint-input-filter-functions 'inferior-octave-directory-tracker nil t) (comint-read-input-ring t)) @@ -816,20 +695,11 @@ startup file, `~/.emacs-octave'." 'identity inferior-octave-output-list "\n") "\n")))) - ;; Find out whether Octave has built-in variables. - (inferior-octave-send-list-and-digest - (list "exist \"LOADPATH\"\n")) - (setq inferior-octave-has-built-in-variables - (string-match "101$" (car inferior-octave-output-list))) - ;; An empty secondary prompt, as e.g. obtained by '--braindead', ;; means trouble. (inferior-octave-send-list-and-digest (list "PS2\n")) (if (string-match "\\(PS2\\|ans\\) = *$" (car inferior-octave-output-list)) - (inferior-octave-send-list-and-digest - (list (if inferior-octave-has-built-in-variables - "PS2 = \"> \"\n" - "PS2 (\"> \");\n")))) + (inferior-octave-send-list-and-digest (list "PS2 (\"> \");\n"))) ;; O.k., now we are ready for the Inferior Octave startup commands. (let* (commands @@ -840,9 +710,7 @@ startup file, `~/.emacs-octave'." (list "more off;\n" (if (not (string-equal inferior-octave-output-string ">> ")) - (if inferior-octave-has-built-in-variables - "PS1=\"\\\\s> \";\n" - "PS1 (\"\\\\s> \");\n")) + "PS1 (\"\\\\s> \");\n") (if (file-exists-p file) (format "source (\"%s\");\n" file)))) (inferior-octave-send-list-and-digest commands)) @@ -853,28 +721,20 @@ startup file, `~/.emacs-octave'." 'identity inferior-octave-output-list "\n") "\n")) inferior-octave-output-string)) - ;; Next, we check whether Octave supports `completion_matches' ... - (inferior-octave-send-list-and-digest - (list "exist \"completion_matches\"\n")) - (setq inferior-octave-complete-impossible - (not (string-match "5$" (car inferior-octave-output-list)))) ;; And finally, everything is back to normal. (set-process-filter proc 'inferior-octave-output-filter) - (run-hooks 'inferior-octave-startup-hook) - (run-hooks 'inferior-octave-startup-hook) ;; Just in case, to be sure a cd in the startup file ;; won't have detrimental effects. (inferior-octave-resync-dirs))) (defun inferior-octave-completion-table () - (unless inferior-octave-complete-impossible - (completion-table-dynamic - (lambda (command) - (inferior-octave-send-list-and-digest - (list (concat "completion_matches (\"" command "\");\n"))) - (sort (delete-dups inferior-octave-output-list) - 'string-lessp))))) + (completion-table-dynamic + (lambda (command) + (inferior-octave-send-list-and-digest + (list (concat "completion_matches (\"" command "\");\n"))) + (sort (delete-dups inferior-octave-output-list) + 'string-lessp)))) (defun inferior-octave-completion-at-point () "Return the data to complete the Octave symbol at point." @@ -883,13 +743,8 @@ startup file, `~/.emacs-octave'." (save-excursion (skip-syntax-backward "w_" (comint-line-beginning-position)) (point)))) - (cond ((eq start end) nil) - (inferior-octave-complete-impossible - (message (concat - "Your Octave does not have `completion_matches'. " - "Please upgrade to version 2.X.")) - nil) - (t (list start end (inferior-octave-completion-table)))))) + (when (> end start) + (list start end (inferior-octave-completion-table))))) (define-obsolete-function-alias 'inferior-octave-complete 'completion-at-point "24.1") @@ -989,19 +844,17 @@ directory and makes this the current buffer's default directory." ;;; Miscellaneous useful functions -(defsubst octave-in-comment-p () - "Return t if point is inside an Octave comment." +(defun octave-in-comment-p () + "Return non-nil if point is inside an Octave comment." (nth 4 (syntax-ppss))) -(defsubst octave-in-string-p () - "Return t if point is inside an Octave string." +(defun octave-in-string-p () + "Return non-nil if point is inside an Octave string." (nth 3 (syntax-ppss))) -(defsubst octave-not-in-string-or-comment-p () - "Return t if point is not inside an Octave string or comment." - (let ((pps (syntax-ppss))) - (not (or (nth 3 pps) (nth 4 pps))))) - +(defun octave-in-string-or-comment-p () + "Return non-nil if point is inside an Octave string or comment." + (nth 8 (syntax-ppss))) (defun octave-looking-at-kw (regexp) "Like `looking-at', but sets `case-fold-search' nil." @@ -1016,6 +869,163 @@ directory and makes this the current buffer's default directory." nil (delete-horizontal-space) (insert (concat " " octave-continuation-string)))) + +(defun octave-function-file-p () + "Return non-nil if the first token is \"function\". +The value is (START END NAME-START NAME-END) of the function." + (save-excursion + (goto-char (point-min)) + (when (equal (funcall smie-forward-token-function) "function") + (forward-word -1) + (let* ((start (point)) + (end (progn (forward-sexp 1) (point))) + (name (when (progn + (goto-char start) + (re-search-forward octave-function-header-regexp + end t)) + (list (match-beginning 3) (match-end 3))))) + (cons start (cons end name)))))) + +;; Like forward-comment but stop at non-comment blank +(defun octave-skip-comment-forward (limit) + (let ((ppss (syntax-ppss))) + (if (nth 4 ppss) + (goto-char (nth 8 ppss)) + (goto-char (or (comment-search-forward limit t) (point))))) + (while (and (< (point) limit) (looking-at-p "\\s<")) + (forward-comment 1))) + +;;; First non-copyright comment block +(defun octave-function-file-comment () + "Beginning and end positions of the function file comment." + (save-excursion + (goto-char (point-min)) + ;; Copyright block: octave/libinterp/parse-tree/lex.ll around line 1634 + (while (save-excursion + (when (comment-search-forward (point-max) t) + (when (eq (char-after) ?\{) ; case of block comment + (forward-char 1)) + (skip-syntax-forward "-") + (let ((case-fold-search t)) + (looking-at-p "\\(?:copyright\\|author\\)\\_>")))) + (octave-skip-comment-forward (point-max))) + (let ((beg (comment-search-forward (point-max) t))) + (when beg + (goto-char beg) + (octave-skip-comment-forward (point-max)) + (list beg (point)))))) + +(defun octave-sync-function-file-names () + "Ensure function name agree with function file name. +See Info node `(octave)Function Files'." + (interactive) + (when buffer-file-name + (pcase-let ((`(,start ,_end ,name-start ,name-end) + (octave-function-file-p))) + (when (and start name-start) + (let* ((func (buffer-substring name-start name-end)) + (file (file-name-sans-extension + (file-name-nondirectory buffer-file-name))) + (help-form (format "\ +a: Use function name `%s' +b: Use file name `%s' +q: Don't fix\n" func file)) + (c (unless (equal file func) + (save-window-excursion + (help-form-show) + (read-char-choice + "Which name to use? (a/b/q) " '(?a ?b ?q)))))) + (pcase c + (`?a (let ((newname (expand-file-name + (concat func (file-name-extension + buffer-file-name t))))) + (when (or (not (file-exists-p newname)) + (yes-or-no-p + (format "Target file %s exists; proceed? " newname))) + (when (file-exists-p buffer-file-name) + (rename-file buffer-file-name newname t)) + (set-visited-file-name newname)))) + (`?b (save-excursion + (goto-char name-start) + (delete-region name-start name-end) + (insert file))))))))) + +(defun octave-update-function-file-comment (beg end) + "Query replace function names in function file comment." + (interactive + (progn + (barf-if-buffer-read-only) + (if (use-region-p) + (list (region-beginning) (region-end)) + (or (octave-function-file-comment) + (error "No function file comment found"))))) + (save-excursion + (let* ((bounds (or (octave-function-file-p) + (error "Not in a function file buffer"))) + (func (if (cddr bounds) + (apply #'buffer-substring (cddr bounds)) + (error "Function name not found"))) + (old-func (progn + (goto-char beg) + (when (re-search-forward + "[=}]\\s-*\\(\\(?:\\sw\\|\\s_\\)+\\)\\_>" + (min (line-end-position 4) end) + t) + (match-string 1)))) + (old-func (read-string (format (if old-func + "Name to replace (default %s): " + "Name to replace: ") + old-func) + nil nil old-func))) + (if (and func old-func (not (equal func old-func))) + (perform-replace old-func func 'query + nil 'delimited nil nil beg end) + (message "Function names match"))))) + +;; Adapted from texinfo-font-lock-keywords +(defvar octave-texinfo-font-lock-keywords + `(("@\\([a-zA-Z]+\\|[^ \t\n]\\)" 1 font-lock-keyword-face prepend) ;commands + ("^\\*\\([^\n:]*\\)" 1 font-lock-function-name-face prepend) ;menu items + ("@\\(emph\\|i\\|sc\\){\\([^}]+\\)" 2 'italic prepend) + ("@\\(strong\\|b\\){\\([^}]+\\)" 2 'bold prepend) + ("@\\(kbd\\|key\\|url\\|uref\\){\\([^}]+\\)" + 2 font-lock-string-face prepend) + ("@\\(file\\|email\\){\\([^}]+\\)" 2 font-lock-string-face prepend) + ("@\\(samp\\|code\\|var\\|math\\|env\\|command\\|option\\){\\([^}]+\\)" + 2 font-lock-variable-name-face prepend) + ("@\\(cite\\|x?ref\\|pxref\\|dfn\\|inforef\\){\\([^}]+\\)" + 2 font-lock-constant-face prepend) + ("@\\(anchor\\){\\([^}]+\\)" 2 font-lock-type-face prepend) + ("@\\(dmn\\|acronym\\|value\\){\\([^}]+\\)" + 2 font-lock-builtin-face prepend) + ("@\\(end\\|itemx?\\) +\\(.+\\)" 2 font-lock-keyword-face prepend)) + "Additional keywords to highlight in texinfo comment block.") + +(defface octave-function-comment-block + '((t (:inherit font-lock-doc-face))) + "Face used to highlight function comment block." + :group 'octave) + +(defun octave-font-lock-texinfo-comment () + (font-lock-add-keywords + nil + '(((lambda (limit) + (while (and (search-forward "-*- texinfo -*-" limit t) + (octave-in-comment-p)) + (let ((beg (nth 8 (syntax-ppss))) + (end (progn + (octave-skip-comment-forward (point-max)) + (point)))) + (put-text-property beg end 'font-lock-multiline t) + (font-lock-prepend-text-property + beg end 'face 'octave-function-comment-block) + (dolist (kw octave-texinfo-font-lock-keywords) + (goto-char beg) + (while (re-search-forward (car kw) end 'move) + (font-lock-apply-highlight (cdr kw)))))) + nil))) + 'append)) + ;;; Indentation @@ -1149,8 +1159,8 @@ Returns t unless search stops at the beginning or end of the buffer." (while (and (/= arg 0) (setq found (re-search-backward "\\_<function\\_>" inc))) - (if (octave-not-in-string-or-comment-p) - (setq arg (- arg inc)))) + (unless (octave-in-string-or-comment-p) + (setq arg (- arg inc)))) (if found (progn (and (< inc 0) (goto-char (match-beginning 0))) @@ -1303,34 +1313,17 @@ otherwise." (process-live-p inferior-octave-process) (inferior-octave-completion-table)) (append octave-reserved-words - octave-text-functions - octave-variables))))) + octave-text-functions))))) (define-obsolete-function-alias 'octave-complete-symbol 'completion-at-point "24.1") ;;; Electric characters && friends - -(defun octave-abbrev-start () - "Start entering an Octave abbreviation. -If Abbrev mode is turned on, typing ` (grave accent) followed by ? or -\\[help-command] lists all Octave abbrevs. Any other key combination is -executed normally. -Note that all Octave mode abbrevs start with a grave accent." - (interactive) - (self-insert-command 1) - (when abbrev-mode - (set-temporary-overlay-map - (let ((map (make-sparse-keymap))) - (define-key map [??] 'list-abbrevs) - (define-key map (vector help-char) 'list-abbrevs) - map)))) - (define-skeleton octave-insert-defun "Insert an Octave function skeleton. Prompt for the function's name, arguments and return values (to be entered without parens)." - (let* ((defname (substring (buffer-name) 0 -2)) + (let* ((defname (file-name-sans-extension (buffer-name))) (name (read-string (format "Function name (default %s): " defname) nil nil defname)) (args (read-string "Arguments: ")) @@ -1342,10 +1335,11 @@ entered without parens)." (t (concat vals " = "))) name args)) - \n "function " > str \n \n - octave-block-comment-start "usage: " str \n - octave-block-comment-start \n octave-block-comment-start - \n _ \n + \n octave-block-comment-start "usage: " str \n + octave-block-comment-start '(delete-horizontal-space) \n + octave-block-comment-start '(delete-horizontal-space) \n + "function " > str \n + _ \n "endfunction" > \n) ;;; Communication with the inferior Octave process @@ -1450,26 +1444,7 @@ code line." "\n"))) (mapconcat 'identity inferior-octave-output-list "\n"))) (terpri))) - -;;; Bug reporting -(defun octave-submit-bug-report () - "Submit a bug report on the Emacs Octave package via mail." - (interactive) - (require 'reporter) - (and - (y-or-n-p "Do you want to submit a bug report? ") - (reporter-submit-bug-report - octave-maintainer-address - (concat "Emacs version " emacs-version) - (list - 'octave-blink-matching-block - 'octave-block-offset - 'octave-comment-char - 'octave-continuation-offset - 'octave-continuation-string - 'octave-send-echo-input - 'octave-send-line-auto-forward - 'octave-send-show-buffer)))) + (provide 'octave) ;;; octave.el ends here diff --git a/lisp/subr.el b/lisp/subr.el index dc968542cd0..802fee4ee65 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -2200,11 +2200,11 @@ by doing (clear-string STRING)." ;; And of course, don't keep the sensitive data around. (erase-buffer)))))))) -;; This should be used by `call-interactively' for `n' specs. (defun read-number (prompt &optional default) "Read a numeric value in the minibuffer, prompting with PROMPT. DEFAULT specifies a default value to return if the user just types RET. -The value of DEFAULT is inserted into PROMPT." +The value of DEFAULT is inserted into PROMPT. +This function is used by the `interactive' code letter `n'." (let ((n nil) (default1 (if (consp default) (car default) default))) (when default1 @@ -2225,7 +2225,7 @@ The value of DEFAULT is inserted into PROMPT." (condition-case nil (setq n (cond ((zerop (length str)) default1) - ((stringp str) (string-to-number str)))) + ((stringp str) (read str)))) (error nil))) (unless (numberp n) (message "Please enter a number.") diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el index ab085a3085a..a68a27bb07e 100644 --- a/lisp/textmodes/reftex-vars.el +++ b/lisp/textmodes/reftex-vars.el @@ -901,6 +901,7 @@ and the functions `TeX-current-macro' and `LaTeX-current-environment' are bound. Also note that this feature might slow down the reftex parsing process for large TeX files." + :version "24.4" :group 'reftex-defining-label-environments :type '(repeat string)) diff --git a/lisp/textmodes/remember.el b/lisp/textmodes/remember.el index 1286e5d803e..c8bafd8176a 100644 --- a/lisp/textmodes/remember.el +++ b/lisp/textmodes/remember.el @@ -432,17 +432,20 @@ If you want to remember a region, supply a universal prefix to (defcustom remember-data-directory "~/remember" "The directory in which to store remember data as files." - :type 'file + :type 'directory + :version "24.4" :group 'remember) (defcustom remember-directory-file-name-format "%Y-%m-%d_%T-%z" "Format string for the file name in which to store unprocessed data." - :type 'file + :type 'string + :version "24.4" :group 'remember) (defun remember-store-in-files () "Store remember data in a file in `remember-data-directory'. -The file is named after `remember-directory-file-name-format'." +The file is named after `remember-directory-file-name-format' fed through +`format-time-string'." (let ((name (format-time-string remember-directory-file-name-format (current-time))) (text (buffer-string))) diff --git a/lisp/vc/log-view.el b/lisp/vc/log-view.el index b74ff77bc41..b633b7be403 100644 --- a/lisp/vc/log-view.el +++ b/lisp/vc/log-view.el @@ -317,7 +317,9 @@ Otherwise, don't move point." result) (save-excursion (when pos (goto-char pos)) - (forward-line 1) + (forward-line 0) + ;; Treat "---" separator lines as part of the following revision. + (forward-line (if (looking-at "-\\{20,\\}$") 2 1)) (while looping (setq pos (re-search-backward log-view-message-re nil 'move) looping (and pos (log-view-inside-comment-p (point))))) |