From 3f2a848dbeb297cdadfc9dd3cff71bab24679b92 Mon Sep 17 00:00:00 2001 From: David Engster Date: Thu, 25 Oct 2012 22:13:16 +0200 Subject: [PATCH 001/165] Merge CEDET upstream. * emacs-lisp/eieio.el (eieio-update-lisp-imenu-expression): Removed. This feature is already integrated in imenu. * emacs-lisp/eieio-opt.el: Remove require for `button' since it is always loaded. Require `speedbar' unconditionally. * semantic/analyze.el (semantic-analyze-dereference-alias): New function to dereference aliases. (semantic-analyze-current-context-default): Use it. * semantic/grammar.el (semantic-grammar-create-package): * srecode/compile.el (srecode-compile-templates): Throw a proper error if semantic-mode is not enabled (bug#9968). Compiler warning fixes: * semantic.el (semantic-elapsed-time): Make it a defsubst. * srecode/dictionary.el (srecode-adebug-dictionary): Remove require for `semantic'. * srecode/map.el: * srecode/insert.el: Declare functions from `data-debug'. * semantic/grammar.el: Require `help-fns'. Declare functions from `eldoc', which is required in function body. * srecode/java.el: * semantic/texi.el: * semantic/grammar-wy.el: * semantic/db-file.el: * semantic/db-el.el: * semantic/chart.el: Fix requires. * ede/locate.el: Remove useless requires. Declare functions instead and require in functions when needed. --- lisp/ChangeLog | 8 ++++++++ lisp/cedet/ChangeLog | 33 ++++++++++++++++++++++++++++++ lisp/cedet/ede/locate.el | 30 ++++++++++++++++++++------- lisp/cedet/semantic.el | 2 +- lisp/cedet/semantic/analyze.el | 34 ++++++++++++++++++++++++++----- lisp/cedet/semantic/chart.el | 5 +---- lisp/cedet/semantic/db-el.el | 7 +------ lisp/cedet/semantic/db-file.el | 5 +---- lisp/cedet/semantic/grammar-wy.el | 5 ++--- lisp/cedet/semantic/grammar.el | 12 +++++++++++ lisp/cedet/semantic/texi.el | 10 ++------- lisp/cedet/srecode/compile.el | 2 ++ lisp/cedet/srecode/dictionary.el | 1 - lisp/cedet/srecode/insert.el | 4 ++++ lisp/cedet/srecode/java.el | 5 +---- lisp/cedet/srecode/map.el | 3 ++- lisp/emacs-lisp/eieio-opt.el | 8 ++------ lisp/emacs-lisp/eieio.el | 23 --------------------- 18 files changed, 124 insertions(+), 73 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ea75d3774a1..188cd9ce941 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2012-10-25 David Engster + + * emacs-lisp/eieio.el (eieio-update-lisp-imenu-expression): + Removed. This feature is already integrated in imenu. + + * emacs-lisp/eieio-opt.el: Remove require for `button' since it is + always loaded. Require `speedbar' unconditionally. + 2012-10-25 Stefan Monnier * dired.el (dired-get-marked-files): Allow ! on . and .. (bug#12725). diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog index 7656248cac5..6f2669e9fee 100644 --- a/lisp/cedet/ChangeLog +++ b/lisp/cedet/ChangeLog @@ -1,3 +1,36 @@ +2012-10-25 David Engster + + * semantic/analyze.el (semantic-analyze-dereference-alias): New + function to dereference aliases. + (semantic-analyze-current-context-default): Use it. + + * semantic/grammar.el (semantic-grammar-create-package): + * srecode/compile.el (srecode-compile-templates): Throw a proper + error if semantic-mode is not enabled (bug#9968). + + Compiler warning fixes: + + * semantic.el (semantic-elapsed-time): Make it a defsubst. + + * srecode/dictionary.el (srecode-adebug-dictionary): Remove + require for `semantic'. + + * srecode/map.el: + * srecode/insert.el: Declare functions from `data-debug'. + + * semantic/grammar.el: Require `help-fns'. Declare functions from + `eldoc', which is required in function body. + + * srecode/java.el: + * semantic/texi.el: + * semantic/grammar-wy.el: + * semantic/db-file.el: + * semantic/db-el.el: + * semantic/chart.el: Fix requires. + + * ede/locate.el: Remove useless requires. Declare functions + instead and require in functions when needed. + 2012-10-23 Stefan Monnier * semantic/db-file.el (semanticdb-save-database-functions): diff --git a/lisp/cedet/ede/locate.el b/lisp/cedet/ede/locate.el index c008f5fb945..03227907af4 100644 --- a/lisp/cedet/ede/locate.el +++ b/lisp/cedet/ede/locate.el @@ -49,13 +49,7 @@ ;; when it is available. (require 'ede) -(eval-when-compile (require 'data-debug) - (require 'eieio-datadebug) - (require 'cedet-global) - (require 'cedet-idutils) - (require 'cedet-cscope)) - -(require 'locate) +(eval-when-compile (require 'locate)) ;;; Code: (defcustom ede-locate-setup-options @@ -214,6 +208,12 @@ that created this EDE locate object." ;;; GLOBAL ;; + +(declare-function cedet-gnu-global-version-check "cedet-global") +(declare-function cedet-gnu-global-root "cedet-global") +(declare-function cedet-gnu-global-expand-filename "cedet-global") +(declare-function cedet-gnu-global-create/update-database "cedet-global") + (defclass ede-locate-global (ede-locate-base) () "EDE Locator using GNU Global. @@ -260,6 +260,12 @@ that created this EDE locate object." ;;; IDUTILS ;; + +(declare-function cedet-idutils-version-check "cedet-idutils") +(declare-function cedet-idutils-support-for-directory "cedet-idutils") +(declare-function cedet-idutils-expand-filename "cedet-idutils") +(declare-function cedet-idutils-create/update-database "cedet-idutils") + (defclass ede-locate-idutils (ede-locate-base) () "EDE Locator using IDUtils. @@ -303,6 +309,12 @@ that created this EDE locate object." ;;; CSCOPE ;; + +(declare-function cedet-cscope-version-check "cedet-scope") +(declare-function cedet-cscope-support-for-directory "cedet-scope") +(declare-function cedet-cscope-expand-filename "cedet-cscope") +(declare-function cedet-cscope-create/update-database "cedet-cscope") + (defclass ede-locate-cscope (ede-locate-base) () "EDE Locator using Cscope. @@ -315,6 +327,7 @@ file name searching variable `cedet-cscope-file-command'.") ;; Get ourselves initialized. (call-next-method) ;; Do the checks. + (require 'cedet-cscope) (cedet-cscope-version-check) (when (not (cedet-cscope-support-for-directory (oref loc root))) (error "Cannot use Cscope in %s" @@ -324,6 +337,7 @@ file name searching variable `cedet-cscope-file-command'.") (defmethod ede-locate-ok-in-project :static ((loc ede-locate-cscope) root) "Is it ok to use this project type under ROOT." + (require 'cedet-cscope) (cedet-cscope-version-check) (when (cedet-cscope-support-for-directory root) root)) @@ -334,11 +348,13 @@ file name searching variable `cedet-cscope-file-command'.") Searches are done under the current root of the EDE project that created this EDE locate object." (let ((default-directory (oref loc root))) + (require 'cedet-cscope) (cedet-cscope-expand-filename filesubstring))) (defmethod ede-locate-create/update-root-database :STATIC ((loc ede-locate-cscope) root) "Create or update the GNU Global database for the current project." + (require 'cedet-cscope) (cedet-cscope-create/update-database root)) (provide 'ede/locate) diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el index 373864a43d5..01d3206f662 100644 --- a/lisp/cedet/semantic.el +++ b/lisp/cedet/semantic.el @@ -382,7 +382,7 @@ to use Semantic, and `semantic-init-hook' is run." "When non-nil, activate the interactive parsing debugger. Do not set this yourself. Call `semantic-debug'.") -(defun semantic-elapsed-time (start end) +(defsubst semantic-elapsed-time (start end) "Copied from elp.el. Was `elp-elapsed-time'. Arguments START and END bound the time being calculated." (float-time (time-subtract end start))) diff --git a/lisp/cedet/semantic/analyze.el b/lisp/cedet/semantic/analyze.el index 63acc555343..d03c72a5983 100644 --- a/lisp/cedet/semantic/analyze.el +++ b/lisp/cedet/semantic/analyze.el @@ -527,7 +527,7 @@ Returns an object based on symbol `semantic-analyze-context'." (function nil) (fntag nil) arg fntagend argtag - assign asstag + assign asstag newseq ) ;; Pattern for Analysis: @@ -601,16 +601,26 @@ Returns an object based on symbol `semantic-analyze-context'." (if debug-on-error (catch 'unfindable - ;; If debug on error is on, allow debugging in this fcn. (setq prefix (semantic-analyze-find-tag-sequence - prefix scope 'prefixtypes 'unfindable))) + prefix scope 'prefixtypes 'unfindable)) + ;; If there's an alias, dereference it and analyze + ;; sequence again. + (when (setq newseq + (semantic-analyze-dereference-alias prefix)) + (setq prefix (semantic-analyze-find-tag-sequence + newseq scope 'prefixtypes 'unfindable)))) ;; Debug on error is off. Capture errors and move on (condition-case err ;; NOTE: This line is duplicated in ;; semantic-analyzer-debug-global-symbol ;; You will need to update both places. - (setq prefix (semantic-analyze-find-tag-sequence - prefix scope 'prefixtypes)) + (progn + (setq prefix (semantic-analyze-find-tag-sequence + prefix scope 'prefixtypes)) + (when (setq newseq + (semantic-analyze-dereference-alias prefix)) + (setq prefix (semantic-analyze-find-tag-sequence + newseq scope 'prefixtypes)))) (error (semantic-analyze-push-error err)))) ) @@ -679,6 +689,20 @@ Returns an object based on symbol `semantic-analyze-context'." ;; Return our context. context-return)) +(defun semantic-analyze-dereference-alias (taglist) + "Dereference first tag in TAGLIST if it is an alias. +Returns a sequence of names which can then be fed again into +`semantic-analyze-find-tag-sequence'. +Returns nil if no alias was found." + (when (eq (semantic-tag-get-attribute (car taglist) :kind) 'alias) + (let ((tagname + (semantic-analyze-split-name + (semantic-tag-name + (car (semantic-tag-get-attribute (car taglist) :members)))))) + (append (if (listp tagname) + tagname + (list tagname)) + (cdr taglist))))) (defun semantic-adebug-analyze (&optional ctxt) "Perform `semantic-analyze-current-context'. diff --git a/lisp/cedet/semantic/chart.el b/lisp/cedet/semantic/chart.el index c6b13475862..2c6f7344acf 100644 --- a/lisp/cedet/semantic/chart.el +++ b/lisp/cedet/semantic/chart.el @@ -26,12 +26,9 @@ ;; the output of the semantic parser. ;; -(require 'semantic) (require 'chart) (require 'semantic/db) -(require 'semantic/tag) - -(eval-when-compile (require 'semantic/find)) +(require 'semantic/find) ;;; Code: diff --git a/lisp/cedet/semantic/db-el.el b/lisp/cedet/semantic/db-el.el index 281479045ea..dbb3bfae34d 100644 --- a/lisp/cedet/semantic/db-el.el +++ b/lisp/cedet/semantic/db-el.el @@ -31,12 +31,7 @@ ;; (require 'semantic/db) - -(eval-when-compile - ;; For generic function searching. - (require 'eieio) - (require 'eieio-opt) - (require 'eieio-base)) +(require 'eieio-opt) (declare-function semantic-elisp-desymbolify "semantic/bovine/el") (declare-function semantic-tag-similar-p "semantic/tag-ls") diff --git a/lisp/cedet/semantic/db-file.el b/lisp/cedet/semantic/db-file.el index 4f8e93dc391..905c62a89dd 100644 --- a/lisp/cedet/semantic/db-file.el +++ b/lisp/cedet/semantic/db-file.el @@ -25,12 +25,9 @@ ;; A set of semanticdb classes for persistently saving caches on disk. ;; -(require 'semantic) (require 'semantic/db) (require 'cedet-files) - -(eval-when-compile - (require 'data-debug)) +(require 'data-debug) (defvar semanticdb-file-version semantic-version "Version of semanticdb we are writing files to disk with.") diff --git a/lisp/cedet/semantic/grammar-wy.el b/lisp/cedet/semantic/grammar-wy.el index 8a33c8c8a1a..a926f636b4b 100644 --- a/lisp/cedet/semantic/grammar-wy.el +++ b/lisp/cedet/semantic/grammar-wy.el @@ -23,9 +23,8 @@ ;;; Code: -(require 'semantic/lex) -(eval-when-compile (require 'semantic/bovine)) - +(require 'semantic) + ;;; Prologue ;; (defvar semantic-grammar-lex-c-char-re) diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el index b85396a79ae..c0e7b8f9038 100644 --- a/lisp/cedet/semantic/grammar.el +++ b/lisp/cedet/semantic/grammar.el @@ -35,6 +35,7 @@ (require 'semantic/format) (require 'semantic/grammar-wy) (require 'semantic/idle) +(require 'help-fns) (declare-function semantic-momentary-highlight-tag "semantic/decorate") (declare-function semantic-analyze-context "semantic/analyze") @@ -47,6 +48,9 @@ (require 'semantic/find) (require 'semantic/db)) +(declare-function semantic-grammar-wy--install-parser + "semantic/gram-wy-fallback") + ;;;; ;;;; Set up lexer @@ -825,6 +829,8 @@ Does nothing if the Lisp code seems up to date. If optional argument FORCE is non-nil, unconditionally re-generate the Lisp code." (interactive "P") + (unless (semantic-active-p) + (error "You have to activate semantic-mode to create a package.")) (setq force (or force current-prefix-arg)) (semantic-fetch-tags) (let* ( @@ -1636,6 +1642,12 @@ Select the buffer containing the tag's definition, and move point there." ) "Association of syntax elements, and the corresponding help.") +(declare-function eldoc-function-argstring "eldoc") +(declare-function eldoc-docstring-format-sym-doc "eldoc") +(declare-function eldoc-last-data-store "eldoc") +(declare-function eldoc-get-fnsym-args-string "eldoc") +(declare-function eldoc-get-var-docstring "eldoc") + (defun semantic-grammar-eldoc-get-macro-docstring (macro expander) "Return a one-line docstring for the given grammar MACRO. EXPANDER is the name of the function that expands MACRO." diff --git a/lisp/cedet/semantic/texi.el b/lisp/cedet/semantic/texi.el index 9380940282f..d79e71bb265 100644 --- a/lisp/cedet/semantic/texi.el +++ b/lisp/cedet/semantic/texi.el @@ -26,17 +26,11 @@ ;; parser plug-in is the function `semantic-texi-parse-region' that ;; overrides `semantic-parse-region'. -(require 'semantic) +(require 'semantic/db-find) (require 'semantic/format) +(require 'semantic/ctxt) (require 'texinfo) -(eval-when-compile - (require 'semantic/db) - (require 'semantic/db-find) - (require 'semantic/ctxt) - (require 'semantic/find) - (require 'semantic/doc)) - (defvar ede-minor-mode) (declare-function lookup-words "ispell") (declare-function ede-current-project "ede") diff --git a/lisp/cedet/srecode/compile.el b/lisp/cedet/srecode/compile.el index 8a1291f8d72..8457e35abe5 100644 --- a/lisp/cedet/srecode/compile.el +++ b/lisp/cedet/srecode/compile.el @@ -199,6 +199,8 @@ Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use." (defun srecode-compile-templates () "Compile a semantic recode template file into a mode-local variable." (interactive) + (unless (semantic-active-p) + (error "You have to activate semantic-mode to compile SRecode templates.")) (require 'srecode/insert) (message "Compiling template %s..." (file-name-nondirectory (buffer-file-name))) diff --git a/lisp/cedet/srecode/dictionary.el b/lisp/cedet/srecode/dictionary.el index 6262383c397..2b6bbb51eaa 100644 --- a/lisp/cedet/srecode/dictionary.el +++ b/lisp/cedet/srecode/dictionary.el @@ -604,7 +604,6 @@ STATE is the current compiler state." "Run data-debug on this mode's dictionary." (interactive) (require 'eieio-datadebug) - (require 'semantic) (require 'srecode/find) (let* ((modesym major-mode) (start (current-time)) diff --git a/lisp/cedet/srecode/insert.el b/lisp/cedet/srecode/insert.el index 726aa41cffd..f099c0ca6eb 100644 --- a/lisp/cedet/srecode/insert.el +++ b/lisp/cedet/srecode/insert.el @@ -195,6 +195,10 @@ Buffer based features related to change hooks is handled one level up." ;; area. Return value is not important. )) +(declare-function data-debug-new-buffer "data-debug") +(declare-function data-debug-insert-stuff-list "data-debug") +(declare-function data-debug-insert-thing dictionary "data-debug") + (defun srecode-insert-show-error-report (dictionary format &rest args) "Display an error report based on DICTIONARY, FORMAT and ARGS. This is intended to diagnose problems with failed template diff --git a/lisp/cedet/srecode/java.el b/lisp/cedet/srecode/java.el index 3635a39d383..43e9273da76 100644 --- a/lisp/cedet/srecode/java.el +++ b/lisp/cedet/srecode/java.el @@ -26,10 +26,7 @@ ;;; Code: (require 'srecode/dictionary) -(require 'semantic/tag) - -(eval-when-compile - (require 'semantic/find)) +(require 'semantic/find) ;;;###autoload (defun srecode-semantic-handle-:java (dict) diff --git a/lisp/cedet/srecode/map.el b/lisp/cedet/srecode/map.el index d6613ee1b02..7fb5c16a1f3 100644 --- a/lisp/cedet/srecode/map.el +++ b/lisp/cedet/srecode/map.el @@ -215,7 +215,8 @@ Optional argument RESET forces a reset of the current map." ;; Eventually, I want to return many maps to search through. (list srecode-current-map))) -(eval-when-compile (require 'data-debug)) +(declare-function data-debug-new-buffer "data-debug") +(declare-function data-debug-insert-stuff-list "data-debug") (defun srecode-adebug-maps () "Run ADEBUG on the output of `srecode-get-maps'." diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el index 64b240b9d5d..c8bdd7758fa 100644 --- a/lisp/emacs-lisp/eieio-opt.el +++ b/lisp/emacs-lisp/eieio-opt.el @@ -29,9 +29,9 @@ ;; (require 'eieio) -(require 'button) -(require 'help-mode) (require 'find-func) +(require 'speedbar) +(require 'help-mode) ;;; Code: ;;;###autoload @@ -710,10 +710,6 @@ Arguments UNUSED are not used." ;;; SPEEDBAR SUPPORT ;; -(eval-when-compile - (condition-case nil - (require 'speedbar) - (error (message "Error loading speedbar... ignored")))) (defvar eieio-class-speedbar-key-map nil "Keymap used when working with a project in speedbar.") diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el index 608134bd54f..3f7b49bde25 100644 --- a/lisp/emacs-lisp/eieio.el +++ b/lisp/emacs-lisp/eieio.el @@ -3049,29 +3049,6 @@ Optional argument NOESCAPE is passed to `prin1-to-string' when appropriate." ) ) -;;; Interfacing with imenu in emacs lisp mode -;; (Only if the expression is defined) -;; -(if (eval-when-compile (boundp 'lisp-imenu-generic-expression)) -(progn - -(defun eieio-update-lisp-imenu-expression () - "Examine `lisp-imenu-generic-expression' and modify it to find `defmethod'." - (let ((exp lisp-imenu-generic-expression)) - (while exp - ;; it's of the form '( ( title expr indx ) ... ) - (let* ((subcar (cdr (car exp))) - (substr (car subcar))) - (if (and (not (string-match "|method\\\\" substr)) - (string-match "|advice\\\\" substr)) - (setcar subcar - (replace-match "|advice\\|method\\" t t substr 0)))) - (setq exp (cdr exp))))) - -(eieio-update-lisp-imenu-expression) - -)) - ;;; Autoloading some external symbols, and hooking into the help system ;; From 25ca458727b561c39a9f524179443ab91617bf3a Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 26 Oct 2012 00:32:40 -0700 Subject: [PATCH 002/165] Misc fixes for make uninstall * Makefile.in (uninstall): Don't abort if some directories are missing. Apply transformation rules to manual pages, desktop and icon files. No more emacs22 icons to uninstall. --- ChangeLog | 6 ++++++ Makefile.in | 33 ++++++++++++++++++++------------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 14a4c4cdfc0..62a3eef7a69 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-10-26 Glenn Morris + + * Makefile.in (uninstall): Don't abort if some directories are missing. + Apply transformation rules to manual pages, desktop and icon files. + No more emacs22 icons to uninstall. + 2012-10-24 Glenn Morris * Makefile.in (install-etc, install-man): diff --git a/Makefile.in b/Makefile.in index 20d680e06ab..d7eec829495 100644 --- a/Makefile.in +++ b/Makefile.in @@ -685,21 +685,28 @@ uninstall: -rm -rf $(DESTDIR)${libexecdir}/emacs/${version} thisdir=`/bin/pwd`; \ (info_misc=`cd doc/misc; ${MAKE} echo-info | sed '/ing directory/d'`; \ - cd $(DESTDIR)${infodir} && \ - for elt in ${INFO_NONMISC} $${info_misc}; do \ - (cd $${thisdir}; \ - $(INSTALL_INFO) --remove --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \ - if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \ - ext=.gz; else ext=; fi; \ - rm -f $$elt$$ext $$elt-[1-9]$$ext $$elt-[1-9][0-9]$$ext; \ - done;) + if cd $(DESTDIR)${infodir}; then \ + for elt in ${INFO_NONMISC} $${info_misc}; do \ + (cd $${thisdir}; \ + $(INSTALL_INFO) --remove --info-dir=$(DESTDIR)${infodir} $(DESTDIR)${infodir}/$$elt); \ + if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \ + ext=.gz; else ext=; fi; \ + rm -f $$elt$$ext $$elt-[1-9]$$ext $$elt-[1-9][0-9]$$ext; \ + done; \ + fi) (if [ -n "${GZIP_INFO}" ] && [ -n "${GZIP_PROG}" ]; then \ ext=.gz; else ext=; fi; \ - cd ${mansrcdir} && for page in *.1; do \ - rm -f $(DESTDIR)${man1dir}/$$page$$ext; done ) - (cd $(DESTDIR)${bindir} && rm -f $(EMACSFULL) $(EMACS)) - (cd $(DESTDIR)${icondir} && rm -f hicolor/*x*/apps/emacs.png hicolor/*x*/apps/emacs22.png hicolor/scalable/apps/emacs.svg hicolor/scalable/mimetypes/emacs-document.svg ) - -rm -f $(DESTDIR)${desktopdir}/emacs.desktop + if cd ${mansrcdir}; then \ + for page in *.1; do \ + rm -f $(DESTDIR)${man1dir}/`echo "$${page}" | sed -e 's/\.1$$//' -e '$(TRANSFORM)'`.1$$ext; done; \ + fi) + (cd $(DESTDIR)${bindir} && rm -f $(EMACSFULL) $(EMACS) || true) + (if cd $(DESTDIR)${icondir}; then \ + rm -f hicolor/*x*/apps/`echo emacs | sed '$(TRANSFORM)'`.png \ + hicolor/scalable/apps/`echo emacs | sed '$(TRANSFORM)'`.svg \ + hicolor/scalable/mimetypes/`echo emacs-document | sed '$(TRANSFORM)'`.svg; \ + fi) + -rm -f $(DESTDIR)${desktopdir}/`echo emacs | sed '$(TRANSFORM)'`.desktop for file in snake-scores tetris-scores; do \ file=$(DESTDIR)${gamedir}/$${file}; \ [ -s $${file} ] || rm -f $$file; \ From eeced60b6ca4be63abca61cab5967ee28537a8af Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 26 Oct 2012 00:39:47 -0700 Subject: [PATCH 003/165] Program name transformations should not be applied to $EXEEXT. * Makefile.in (EMACS, EMACSFULL): * lib-src/Makefile.in (install, uninstall): Transformations should not be applied to $EXEEXT. --- ChangeLog | 3 +++ Makefile.in | 4 ++-- lib-src/ChangeLog | 5 +++++ lib-src/Makefile.in | 10 ++++++---- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 62a3eef7a69..c9498dbfeb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2012-10-26 Glenn Morris + * Makefile.in (EMACS, EMACSFULL): Transformations should not be + applied to $EXEEXT. + * Makefile.in (uninstall): Don't abort if some directories are missing. Apply transformation rules to manual pages, desktop and icon files. No more emacs22 icons to uninstall. diff --git a/Makefile.in b/Makefile.in index d7eec829495..29aed2b0be8 100644 --- a/Makefile.in +++ b/Makefile.in @@ -259,8 +259,8 @@ GZIP_INFO = @GZIP_INFO@ TRANSFORM = @program_transform_name@ # What emacs should be called when installed. -EMACS = `echo emacs${EXEEXT} | sed '$(TRANSFORM)'` -EMACSFULL = `echo emacs-${version}${EXEEXT} | sed '$(TRANSFORM)'` +EMACS = `echo emacs | sed '$(TRANSFORM)'`${EXEEXT} +EMACSFULL = `echo emacs-${version} | sed '$(TRANSFORM)'`${EXEEXT} # Subdirectories to make recursively. SUBDIR = lib lib-src src lisp leim diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index c88b467ee29..6b23c040b17 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,8 @@ +2012-10-26 Glenn Morris + + * Makefile.in (install, uninstall): Transformations should not be + applied to $EXEEXT. + 2012-10-23 Eli Zaretskii * makefile.w32-in (lisp2): Add cp51932.el and eucjp-ms.el, to diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in index c5acca28856..dcd7123bb26 100644 --- a/lib-src/Makefile.in +++ b/lib-src/Makefile.in @@ -244,17 +244,19 @@ install: $(DESTDIR)${archlibdir} @echo "Installing utilities for users to run." umask 022; ${MKDIR_P} $(DESTDIR)${bindir} for file in ${INSTALLABLES} ; do \ - $(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \ + $(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} $(DESTDIR)${bindir}/`echo $${file} | sed -e 's/${EXEEXT}$$//' -e '$(TRANSFORM)'`${EXEEXT} ; \ done for file in ${INSTALLABLE_SCRIPTS} ; do \ $(INSTALL_SCRIPT) ${srcdir}/$${file} $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \ done uninstall: - (cd $(DESTDIR)${bindir}; \ - for file in ${INSTALLABLES} ${INSTALLABLE_SCRIPTS}; do \ + for file in ${INSTALLABLES}; do \ + rm -f $(DESTDIR)${bindir}/`echo $${file} | sed -e 's/${EXEEXT}$$//' -e '$(TRANSFORM)'`${EXEEXT} ; \ + done + for file in ${INSTALLABLE_SCRIPTS}; do \ rm -f $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \ - done) + done if [ -d $(DESTDIR)${archlibdir} ]; then \ (cd $(DESTDIR)${archlibdir} && \ rm -f ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS}) \ From b75897ba631b8dbbb337bd378689b4d35f25b853 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 26 Oct 2012 00:40:51 -0700 Subject: [PATCH 004/165] * Makefile.in (uninstall): No INSTALLABLES live in archlibdir. --- lib-src/ChangeLog | 2 ++ lib-src/Makefile.in | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 6b23c040b17..03cddc6a035 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,5 +1,7 @@ 2012-10-26 Glenn Morris + * Makefile.in (uninstall): No INSTALLABLES live in archlibdir. + * Makefile.in (install, uninstall): Transformations should not be applied to $EXEEXT. diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in index dcd7123bb26..d271bb3a4fa 100644 --- a/lib-src/Makefile.in +++ b/lib-src/Makefile.in @@ -258,8 +258,7 @@ uninstall: rm -f $(DESTDIR)${bindir}/`echo $${file} | sed '$(TRANSFORM)'` ; \ done if [ -d $(DESTDIR)${archlibdir} ]; then \ - (cd $(DESTDIR)${archlibdir} && \ - rm -f ${UTILITIES} ${INSTALLABLES} ${SCRIPTS} ${INSTALLABLE_SCRIPTS}) \ + (cd $(DESTDIR)${archlibdir} && rm -f ${UTILITIES} ${SCRIPTS}) \ fi mostlyclean: From 8c7727c3354291d0798b2eb031f42a32c618c391 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Fri, 26 Oct 2012 11:11:24 +0200 Subject: [PATCH 005/165] Fix bug#12731 in mouse-drag-line. * mouse.el (mouse-drag-line): Move last form into preceding when clause (Bug#12731). * help.el (resize-temp-buffer-window): Fix doc-string. --- lisp/ChangeLog | 7 +++++++ lisp/help.el | 7 ++++--- lisp/mouse.el | 4 ++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 188cd9ce941..75fbaa13b92 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2012-10-26 Martin Rudalics + + * mouse.el (mouse-drag-line): Move last form into preceding when + clause (Bug#12731). + + * help.el (resize-temp-buffer-window): Fix doc-string. + 2012-10-25 David Engster * emacs-lisp/eieio.el (eieio-update-lisp-imenu-expression): diff --git a/lisp/help.el b/lisp/help.el index 0df9c607f69..449818207b3 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -1012,8 +1012,8 @@ WINDOW can be any live window and defaults to the selected one. Do not make WINDOW higher than `temp-buffer-max-height' nor smaller than `window-min-height'. Do nothing if WINDOW is not -vertically combined or some of its contents are scrolled out of -view." +vertically combined, some of its contents are scrolled out of +view, or WINDOW was not created by `display-buffer'." (setq window (window-normalize-window window t)) (let ((buffer-name (buffer-name (window-buffer window)))) (let ((height (if (functionp temp-buffer-max-height) @@ -1022,11 +1022,12 @@ view." temp-buffer-max-height)) (quit-cadr (cadr (window-parameter window 'quit-restore)))) (cond - ;; Don't resize WINDOW if it showed another buffer before. + ;; Resize WINDOW iff it was split off by `display-buffer'. ((and (eq quit-cadr 'window) (pos-visible-in-window-p (point-min) window) (window-combined-p window)) (fit-window-to-buffer window height)) + ;; Resize FRAME iff it was created by `display-buffer'. ((and fit-frame-to-buffer (eq quit-cadr 'frame) (eq window (frame-root-window window))) diff --git a/lisp/mouse.el b/lisp/mouse.el index fa5c69281de..61d70404bd6 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -517,8 +517,8 @@ must be one of the symbols `header', `mode', or `vertical'." ;; If mouse-2 has never been done by the user, it doesn't have ;; the necessary property to be interpreted correctly. (put 'mouse-2 'event-kind 'mouse-click) - (setcar event 'mouse-2)) - (push event unread-command-events))) + (setcar event 'mouse-2) + (push event unread-command-events)))) (defun mouse-drag-mode-line (start-event) "Change the height of a window by dragging on the mode line." From ccc83f50a4ca55842bcf955b9f8156c17aa43864 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 26 Oct 2012 11:46:46 +0200 Subject: [PATCH 006/165] Avoid hourglass mouse pointer when a tooltip for menu item is shown. src/w32fns.c (w32_wnd_proc) : Don't enable tracking of mouse movement events if the menu bar is active. This avoids producing a busy "hour-glass" cursor by Windows if the mouse pointer is positioned over a tooltip shown for some menu item. --- src/ChangeLog | 7 +++++++ src/w32fns.c | 14 +++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 835c550b426..bf519556334 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2012-10-26 Eli Zaretskii + + * w32fns.c (w32_wnd_proc) : Don't enable tracking of + mouse movement events if the menu bar is active. This avoids + producing a busy "hour-glass" cursor by Windows if the mouse + pointer is positioned over a tooltip shown for some menu item. + 2012-10-25 Paul Eggert Don't assume process IDs fit in int. diff --git a/src/w32fns.c b/src/w32fns.c index 28e8ea02e05..aa120d59ce5 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -3331,7 +3331,19 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) versions, there is no way of telling when the mouse leaves the frame, so we just have to put up with help-echo and mouse highlighting remaining while the frame is not active. */ - if (track_mouse_event_fn && !track_mouse_window) + if (track_mouse_event_fn && !track_mouse_window + /* If the menu bar is active, turning on tracking of mouse + movement events might send these events to the tooltip + frame, if the user happens to move the mouse pointer over + the tooltip. But since we don't process events for + tooltip frames, this causes Windows to present a + hourglass cursor, which is ugly and unexpected. So don't + enable tracking mouse events in this case; they will be + restarted when the menu pops down. (Confusingly, the + menubar_active member of f->output_data.w32, tested + above, is only set when a menu was popped up _not_ from + the frame's menu bar, but via x-popup-menu.) */ + && !menubar_in_use) { TRACKMOUSEEVENT tme; tme.cbSize = sizeof (tme); From bdebdb64b35d6a0a28e04335f4e8e46949206ad3 Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Fri, 26 Oct 2012 16:42:05 +0200 Subject: [PATCH 007/165] Merge upstream Org (from commit acbbe2) --- doc/misc/ChangeLog | 6 + doc/misc/org.texi | 43 ++-- etc/ChangeLog | 5 + etc/refcards/orgcard.pdf | Bin 118438 -> 118492 bytes etc/refcards/orgcard.tex | 4 +- lisp/org/ChangeLog | 297 ++++++++++++++++++++++++ lisp/org/ob-ditaa.el | 1 + lisp/org/ob-haskell.el | 2 + lisp/org/ob-io.el | 2 +- lisp/org/ob-keys.el | 4 +- lisp/org/ob-lob.el | 5 +- lisp/org/ob-picolisp.el | 1 + lisp/org/ob-ref.el | 1 + lisp/org/ob-scala.el | 14 +- lisp/org/ob-sql.el | 3 +- lisp/org/ob-sqlite.el | 3 +- lisp/org/ob-tangle.el | 5 +- lisp/org/ob.el | 37 ++- lisp/org/org-agenda.el | 275 ++++++++++++++++++++++- lisp/org/org-archive.el | 7 + lisp/org/org-ascii.el | 5 + lisp/org/org-attach.el | 4 + lisp/org/org-bbdb.el | 6 +- lisp/org/org-beamer.el | 3 +- lisp/org/org-capture.el | 8 +- lisp/org/org-clock.el | 75 ++++++- lisp/org/org-colview.el | 4 + lisp/org/org-compat.el | 2 +- lisp/org/org-datetree.el | 4 + lisp/org/org-docbook.el | 4 + lisp/org/org-element.el | 252 +++++++++++++-------- lisp/org/org-exp.el | 8 +- lisp/org/org-faces.el | 8 +- lisp/org/org-feed.el | 4 + lisp/org/org-footnote.el | 4 + lisp/org/org-freemind.el | 6 +- lisp/org/org-html.el | 6 +- lisp/org/org-icalendar.el | 4 + lisp/org/org-id.el | 7 +- lisp/org/org-indent.el | 4 + lisp/org/org-install.el | 44 +--- lisp/org/org-irc.el | 4 + lisp/org/org-latex.el | 36 +-- lisp/org/org-lparse.el | 22 +- lisp/org/org-mobile.el | 5 +- lisp/org/org-odt.el | 6 +- lisp/org/org-plot.el | 4 + lisp/org/org-publish.el | 5 +- lisp/org/org-remember.el | 4 + lisp/org/org-src.el | 70 +++--- lisp/org/org-table.el | 69 +++++- lisp/org/org-taskjuggler.el | 4 + lisp/org/org-timer.el | 6 +- lisp/org/org-version.el | 4 +- lisp/org/org-xoxo.el | 4 + lisp/org/org.el | 434 +++++++++++------------------------- 56 files changed, 1253 insertions(+), 601 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index fc44828e8bf..a0cfd675f0a 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,9 @@ +2012-10-26 Bastien Guerry + + * org.texi (Installation): Update the link to Org's ELPA. Also + don't mention org-install.el anymore as the replacement file + org-loaddefs.el is now loaded by org.el. + 2012-10-25 Michael Albinus * tramp.texi (Frequently Asked Questions): Mention diff --git a/doc/misc/org.texi b/doc/misc/org.texi index 89c99018460..cdaf1174a26 100644 --- a/doc/misc/org.texi +++ b/doc/misc/org.texi @@ -857,7 +857,7 @@ Theory Ltd.} @b{Important:} @i{If you the version of Org that comes with Emacs or as a XEmacs package, please skip this section and go directly to @ref{Activation}. If you downloaded Org as an ELPA package, please read the instructions on the -@uref{http://orgmode.org/elpa/, Org ELPA page}. To see what version of Org +@uref{http://orgmode.org/elpa.html, Org ELPA page}. To see what version of Org (if any) is part of your Emacs distribution, type @kbd{M-x org-version} (if your Emacs distribution does not come with Org, this function will not be defined).} @@ -947,7 +947,7 @@ description on Worg}. Installing Info files is system dependent, because of differences in the @file{install-info} program. The Info documentation is installed together with the rest of Org mode. If you don't install Org mode, it is possible to -install the Info documentation separately (you need to have +install the Info documentation seperately (you need to have install-info@footnote{The output from install-info (if any) is system dependent. In particular Debian and its derivatives use two different versions of install-info and you may see the message: @@ -964,13 +964,6 @@ on your system). make install-info @end example -Then add the following line to @file{.emacs}. It is needed so that -Emacs can autoload functions that are located in files not immediately loaded -when Org mode starts. -@lisp -(require 'org-install) -@end lisp - Do not forget to activate Org as described in the following section. @page @@ -1092,9 +1085,6 @@ shown below. ;; add latest org-mode to load path (add-to-list 'load-path (expand-file-name "/path/to/org-mode/lisp")) (add-to-list 'load-path (expand-file-name "/path/to/org-mode/contrib/lisp" t)) - -;; activate org -(require 'org-install) @end example If an error occurs, a backtrace can be very useful (see below on how to @@ -3785,7 +3775,7 @@ mostly if more than two TODO states are possible (@pxref{TODO extensions}). See also @ref{Conflicts}, for a discussion of the interaction with @code{shift-selection-mode}. See also the variable @code{org-treat-S-cursor-todo-selection-as-state-change}. -@orgcmd{C-c / t,org-show-todo-key} +@orgcmd{C-c / t,org-show-todo-tree} @cindex sparse tree, for TODO @vindex org-todo-keywords View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds the @@ -9386,16 +9376,16 @@ so often, shortcuts are provided using the Easy Templates facility @item C-c ' Edit the source code example at point in its native mode. This works by switching to a temporary buffer with the source code. You need to exit by -pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*} -or @samp{#} will get a comma prepended, to keep them from being interpreted -by Org as outline nodes or special comments. These commas will be stripped -for editing with @kbd{C-c '}, and also for export.}. The edited version will -then replace the old version in the Org buffer. Fixed-width regions -(where each line starts with a colon followed by a space) will be edited -using @code{artist-mode}@footnote{You may select a different-mode with the -variable @code{org-edit-fixed-width-region-mode}.} to allow creating ASCII -drawings easily. Using this command in an empty line will create a new -fixed-width region. +pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*}, +@samp{,*}, @samp{#+} and @samp{,#+} will get a comma prepended, to keep them +from being interpreted by Org as outline nodes or special syntax. These +commas will be stripped for editing with @kbd{C-c '}, and also for export.}. +The edited version will then replace the old version in the Org buffer. +Fixed-width regions (where each line starts with a colon followed by a space) +will be edited using @code{artist-mode}@footnote{You may select +a different-mode with the variable @code{org-edit-fixed-width-region-mode}.} +to allow creating ASCII drawings easily. Using this command in an empty line +will create a new fixed-width region. @kindex C-c l @item C-c l Calling @code{org-store-link} while editing a source code example in a @@ -14523,14 +14513,13 @@ Be sure to adjust the paths to fit your system. # DIR=`pwd` FILES="" -ORGINSTALL="~/src/org/lisp/org-install.el" # wrap each argument in the code required to call tangle on it for i in $@@; do FILES="$FILES \"$i\"" done -emacs -Q --batch -l $ORGINSTALL \ +emacs -Q --batch \ --eval "(progn (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\")) (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\" t)) @@ -16704,7 +16693,7 @@ on @file{org-element.el} and @file{org-export.el} has been outstanding, and opened the doors for many new ideas and features. @item Jambunathan K -Jambunathan contributed the ODT exporter, definitely a killer feature of +Jambunathan contributed the ODT exporter, definitly a killer feature of Org mode. He also contributed the new HTML exporter, which is another core feature of Org. Here too, I knew I could rely on him to fix bugs in these areas and to patiently explain the users what was the problems and solutions. @@ -16712,7 +16701,7 @@ areas and to patiently explain the users what was the problems and solutions. @item Achim Gratz Achim rewrote the building process of Org, turning some @emph{ad hoc} tools into a flexible and conceptually clean process. He patiently coped with the -many hiccups that such a change can create for users. +many hicups that such a change can create for users. @item Nick Dokos The Org mode mailing list would not be such a nice place without Nick, who diff --git a/etc/ChangeLog b/etc/ChangeLog index 3ebe18b407f..60d4a7aa271 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,8 @@ +2012-10-26 Nicolas Goaziou + + * refcards/orgcard.tex: Fix keybindings about + `org-show-todo-tree'. + 2012-10-23 Paul Eggert Fix outdated timestamp documentation in Elisp manual (bug#12706). diff --git a/etc/refcards/orgcard.pdf b/etc/refcards/orgcard.pdf index 2f0044184438d5a0050adc8e8794fb1aced0b6c6..720f08d9ded7f3796ebfccdbef09ad0ed24355a6 100644 GIT binary patch delta 9273 zcmZ2Bm;KIM_6aJC2Gjp(FltWpv#MuQX!!ef_x;=3D=I%8sgku2K5lMnU!pGF?fGDa z@%5Q3i5XUo7CSxE?0xP}^?saNm{jr38Tvre66Se<;Xxgp6^>AH%!FVA&zW%Z=@zlE-s&eE4$_gQMHsbAT|8!RpO7C3ad|#6DnfRwA zOXYWNW^&9nd-J4z*V9S1d!-MRWtsTMJUOTkruXXVss_P43DqTA?yc$Skr$HsC0TdO z?~={ASuHQwP84=V6-~Rk;m$iIStlKr9nSH~9&048c-*8ZxbNwtj#GY;rQXNKW(fWk(9#p=p4I8BV0%m9 zIJro^Q;g& zFmF3U2j`9pU;buGtuxqsLGqGN+ok#2jxD_z!CBv(Uu5ec`+BE*568T&P1gCVk9Z4l zM_j3s7MbYgaU}BJW;M=7YXqFy+=601`r6cYm@b!^tTD}P(Uf&2R-%kby}SD)enl1U z3(uSuX<+Aao`2qlm4(TBP4i5S?`!s4{KxAfyGz8$BXjG#g?=m({@L!fU$|2GPx;GM zJB>HCTI@yjA=7f#+&i1cl$l}WIpb*aPZ1$r-l)O}mcPRz&6^{a@(B4|T*fQNGc9!A zah>u2y{gONs)cIjN?cFOV3J&4n$#JwZ?9<8OZ(_j_H@V3oI7;*=WVV(?Q}uIIdrXv zcw29wjfk(M{a1s)BSCY|xCW)n4(IxoQ028kxlf+&|CabW_2oJ?T9G#lD9A2GS-L(F4Ps_wjSK5l=7;Ww^*z~CE@uL(up`!<{ZkVd^ zsq2|m>~oEKs%j4E<(hjXLwJ}^_}vb%)C+EC-BOv5dGdJas@ z_he_Wr$K9zd*>dQZ5KH2_Oml{S@IHo<*BUN@8Tuc*|}rJu7`D&wz`H%UsLDbU}pJ$ zz%ItCB)Z=!O=Xq1(vhWGohIIOh}n|qZG9tVR_*1I+{?u>h8KV5Uy!`Qf?5~Uda}H=LQd!IWVUuH zEsWA(SJ1mA>DE*+&xGe=!OibiKD5kz`{-ps1VdJ3=_#8;)fsOZ=W?D5oOSVL@UqE! ztW~%8Z%|^s+8_|q@VJzD`i+k|$&89qRdtRyQ-B3Syl5 zAW7?3{oHa5L-XhNd@e9OUwFGNKIqH1|G*Lls|g=Je{J;IP!lV1GXD5-t+eADo_x%Q{5g7F zhdSQ7yLk#bA7lNFr^aH(6wTU{lD0g%DF5XB{3?+d#?MdO`Zw?7W}VQDKXyO+F0gb# z!qT_vO2vI{d71F+of`Q`Ag27x{I5KAwJ-lAi27v&UAQt$LoQlcs5zNYYn@;ryNj`L z2p^-W=VKcQomWxSt5&|roEm2$`Q#Sw%R`%7W{alh$B2n8PiQq}suwPN}AFSo~e-n`Rl_r0_1RL-8`YG-_` zCw#Qm<`*gwoHa$Xzj_we_tmzZaw$v+v%dFe)&F~@Z`0k>;_J?>m?!Z`Piaozk$Kna znI`gg9h+w2|E0;`e1<^Igoy{(zGli-Z%K~4E;CIh$wo`;Qx&hyp%Sy2 znKQUVEERX`xT?2$oy*%!2i?5WZdXj~WDR%^RmIJ**mnB0mq}OO!m^giirUFd^+ktM z1A6Ce%)MU{_1wENxht>h+>Lu@N@6&RnRBh}JU1_l+jwMeONmeUyOrBKzfLpQ;2|BGi{JId<$re2h{WqW4mc5N9R$&Ac0pSxb> zSKsN*?kr-6mu&iW(==O3)HOo=#jV2Q)5_|9W%~E9{wdnlxi4K(bI#0td#5jB{`aPa z`R@9wT#u^`%-*|9cJtF&uVUTKPI})_rItO>=Z5L3hJC9e0*eGMvN{$uJY^H~udKiUu(1n$y-PdOGeAapBdT73_u2K8$?R)k<;nRHm_w({|%l%{5I(@ELec{X+eV(0~ zmDMj7&E*i9T6M2nWVyk0iI*u4Wv*F@G2V&bs^&2077$Fk2oaE)BU+W)Zp z-(t%>h0<6){zJPrk`Jba`r*1y1KHo zS@S2G&zU>7(R258Z>9@rlka9;nYJQENKR;{%o2gcr$0M>+QJn3aM$E;A@d_*D#omx zLYMj-l;55zwzcC`NIbZtMKf8K>C1B-@BNNQrx4%^8oFOR4RTx6AY_ox5u~ORAyZqB7w# zQd7f~UTSxzoh-i5FLBTR#?ALL_AdU~rM_NoUQGqlyQA|ggzb4cH(5_MSY)RjS8xCG zp?dYC3HSHSyRpo?U(Ni>xvwl@vmUO@Df;&$-#_k9+Ol(2VvTPt?e=iosZ-zeYC_we zymsAOyGy}4&OPIva6Wz2*UD{=#g0x|b;Dw*_SyQYuXl<5)xMAyvdnXNr_RCYXNx+& zhR^z!`*(G^>qPyz&L{KlwKeLsi09Nz^tV3qw0_bxzYh{Eo8KNfut?fPOETL0=XBlT zUBy2l);kr>&XYbTB9ndW`|=Y~>yz|XyZb9M9Nm2G#rbVaN=HLvIWwa#vv1_|uU;9Z z=oWsVrM>AF{Wv9>c#y`7h}K<#4a;mOO_ zJ~ZDcH*JSbS=iJF)s3;61&__S&fl~)G-+B-e>SVsJK0ZvldXn+UZzl6C zt?s6uySG$fORs#8z^>oZUrc_{v{Wi8x4rqw$@oy^-Q}AvdY5KRH{`ux85XbBez&@4 zr}PBp>q?*3nV)bA`_fpXvHD5f0TsdOqR!iS=4}TzedD>6dxR-L?YZ)$H;cDdrm+{B zNal3-?(tH(rf77v)$c{)b&Yzt$4|NM>cqdiuUk>5_+Ii>&^J@9ZLc`iiABY{U3ekR ztn*pDZQk1MWry05cm5X_Ny@M}`^Hr7$hz<=*ZVFqURASwI)m+leb1erT(gT3qaR+I zv^A$crM9&wy8O~7p(~|xKK@!PcG_XG%Y<8I-hnSI7e&UOU%ooIZ1(X!+49BPmFm@d z<8@yDJmdZ3Wt#H7zzZ)k!+6g!zrA~WG4m^vaJy*7q_aGlzc;Wrc^L(+Z*RYr(YZRg zqrz68*2Vaq%U@fQ81bi~_iYqxrE5Hw{GKZ~;ns8$=ECK3Rr~Mqy*(kkQzSO<#na2F z$I4r@y}l&qi^yjudB>Q}T=C}AH~pLI&VRG2mvQ5{>10)vzkA;9q}>Gux9$G~6m_+9 z&Hk`S=aivQS#84c#|Q7pU&&h|`i^Pp>2J*p(T!JU2xLj$(T@trHJ|k0Hm~RV)?1xA zvyJvIUgQ|AW^q$-Ntngw1kHVR8#aDEkSFn@j#p=fN4v%;R^Pw-C#U!Q_2K@#>4lYl z$Nb5EAKk6LRB1AA>AiXL{#MLrl&~+T6j4m!+WsisA#3lAe{bGR^t>kHYQ*W!qTsA$ zEEWFGplg-msl~~cyJLlf%%*SD(Oz)BrM5F|>*VSe2OdgCJ!tsI*Y`tAuq@~yKd*Mw zLCKcer-J*87$ZuyeSfm5`DpUfm3JfW%6S;q7GD!CJ8@OzUj4)E^Y2E#owp!9Y4WaB zX^U6i7y9$mV%i_I7hCrmZQ_k9ey{iXzEod8Tht-9e4~Bu-b|5M^-Gp>bC%g`9of9K z);)y_C9QNL4_@QjDKUXrRLAnJC}YvYrmg7=(>xBeiLTQ~`?T1n=|=CP+gfEBRrgyS zxh=A)j9gTt?O)mHV*kytUbpX?pn~m!qYGbt;%^F75ld;*PwWs6T(Hjk`R{ip99y-& zRXSNP=A2p|7{26z_|a>JUxxiKp4GiS%QGtMP0gVV%RQ3}^d38=Y`i+@^fP;@Dl?-^ zYr;ChdBRsjm8Lq@9dOW=t7O=F@!*teX3yWn5V!hAYb12=<9;E9%!Nx~oTRYsw%ll_G>7%jmA z9rb5pUQeFwCiMT^ey8xAt2{#4j!4(+47qu$^wFHRcQ=>zYpI8}Cxj_=J3QQ|{r9`M ztv*}hnGH8%?oJooaM;J+-~ao1`NOlnaz9?1ea^>yyX^T{Yu~4>TlssMWwEWld2IeR zzqI&g=1;?Z2k4mGo~6$5pXJ*h;a$$Er;^Kdcb#HcS3l?HdGGQ}NwI&1;``Us8{NBQ z9MAuEDd$}FzIQjz`55Qk<Oym-x) ziiJD3b?U#e^OVY6&ARJt>z7upRE;#|CodwT+l6eGxCWnO;p2I=tEyr7v9`Z!_U^CS zZDzOk_rv2~FKk%zbxLEPt=${1$!u{mK408;lk57?ve|}a_iJ|T`d3n0@0!n-T6iE_ z!O^tfpGo6=_o_gRjeiwg`%663a&v06wOBI!TIkblw6^iY9M}i_*@mDOlP5L-+XC(#x}s z{ucjm=iqstJKv28(p6{O-TUKrxA_9Yr>M~c}E^rrNy(NC&Df^+1-j};KnjI}a zT6=2NovBCX{mouD^YgMJza0zrIZryA_WNhqQWfjeDPbp0a6Ig9`B0RTIB&^)yX^lv zOxNYr|NA;I^YhH^+dt*D6g%B5uh^}BO`o|WdfL+63AR3SFV1}?np3*0RnC&xaI4E% z{gt!g&z(Hd*W>p<|AN>18)3F7g8R>0S|vC81pAs@cCqWHE{R*AeSDViq6RY`r3-9E z4AoZX~^5DKu?nYgc4JHPO8vbq}m;cMY_^nw#dD6*Uc}sJrEOEZJUHMG! zjidlmo+W~ef$F+pNtw>e=NWu{9rr9doBiXeWrmll54=@eG;P~E9o0><>`a%f-aYN~ z>^)H#efekQ%URPeocF$b(&5Mimc}QJG1Af|`^~@RvoZ3`wmN3M?|^yth1u@6*E@){ z&(2tvw$Svdkxcs6Eidc&Ts>#ytFO6|pEZlsHFDS4^PGZWMyFpeZTh&nkZG1Nw}}_$ z0twi_#Tl=%LA`Z+fV_RkO>*f|&RkhsBNzImpS*^ym7TI*p zuzE1%z&Y!5mHP!1j@o;6ygD7;b0RvyXy4tSfK3 z3Xcc($~TRs%zz{1*woxOMIv^i;A4|hI~4D||Cn;_$R>W3nW-lNzrHz@!(f-3 zsPL-$f$5Zj`zLrm)=Qb>r5cxnOQ-I-yYk_tU79zKbkEt`s;k{|Tko~XV^!OQ@N&RAiNEht#GUsCL|nOJVc@?eMWW1Q*2~*Qfp2s6`*ADJh{$F=Bd)oz zO8)NTgA#fZmpn7{4aj^F7+F^E?Zk@v<$u<^pAxq8edCD|jxw!-$M{d3YB5ysnpEuI z#~xnaaOIWOYp&E4`<_Ux;^!#-y-IP*7u9KcTzf9r9&#wEm*^Ku{JqisO8N|K!4J(* z{z>^e{x|*2zqfaj*5#=dQ_Q{o4QCW{+8{Q+U);Hl}6CpF3usVyWg6nQ`%UT2YN}uc4CA zRWH-8^?`R+6(1>CbM;*(-QM;DfiCp0*UJ!-=}juTl73(mu&ux ztF_)0tL*is$JJ-}m)A32Jo04ovX6`Y&5?;NpS$7cN|i@B4m>;L1wPr_{am}XW5Szf zU)AfBtWC6fYaJg8S~pL&IKsJY%Uh9MF&mxl=6&rH3jfu!!N!(jo~4f3?FSZap`~(; zy+#FE-fgDhB1yHjnG<79$n%_f_IQ3Dz2`HD(tXF3 z)FwwL|9NZ39_qDvOL6_3rIM3VyL1AK%s$CIE?hG6*cFAPqK86O?>g{k7 zS<4rBBqr&XKS#*s`lfBhCuZ3ljZgV-;M0=nhg8EHjjxv(ZcEaMYP_HBtRnP(r~0Hv zI?SsA*b61go>dgcot6^cJELUtl8J}we;dCKx4dp(v@|65;_F8VM*`&*`!sHQ?!oV& zB6cj$)8WRc?NOWcvgBM=&f?vECCA^sb&`wWf*arSQf{fZ=WD5cWci!=#py!nmWPH9 zj!#)UW#LpE!S254{#`exFK)Cxw(@#R@5T#vcHC}?HBUZJ{zi&*dfSelS>j6ds^$+P zm6p|eg)aZ;n#tPcvS52^s?zNzw>YCje1EFEsta_ETOMJM9xisa?D}>s-NJQ2yE2#7 zu8!bqu>H#TZpw{Q(=^M%c8I;~dYYp7=iHAt)he;%=&40%JW-)-Hh1hkB~(Ps-O=%% zCt2fRd##~c95)b923$3GlqJx*Oe<)Pt2{-*}DR*qMV4}Gtfc<6d=vZc(nZC^gyyc6d5 z_n~GIv(SOX0iky{C|Et$lGB^>ziZ-)6rufc5i1bQS_WWyU5%66^HYETZu{A7x`?@JZEZm z-qdw1=Tjw(SDwc<6>ZmUu1ftT9OSH&60>N=P0zT+pJzPdJYCc?;X{2~=7ZdWjJ!+{iYVE5oszXUH1*J=Besr$72n;OB0M*GZL?gs z>4QhT+_w+eXXX9g{QLYiMbY!p3Y)Kj+?5G)j&InWI?LmK(evFIllz+6SNlo)WA`%I z{rmQoTUMPua`PRI?{a?k{>#zz)<^1Q`NZir9OCr|%c(pnrT8??hrPv#RXt7ilAK1p zyzyh(DZIxfhufWfyk=!pnVwc;&bNiV8!xPScxu77ty1^RMNUhs7ybLk`ppi$9p?{y zo9`OEC`NDN($0n&?yZv(7Q3I+w$8buW!QIS&%4P@oX@wqm6rc@KeSzP@$rCQjx!E@MNcV^=;0ZBAL~>dtLy)NQ*)3c8;c>-cj`(jql=L?Xq(_7@KZsCcM%6>@!)< zuhBk&A*|P%_l3k?#{uJBSqY#tRe*OntFA>gS2tQ%lWLU2h5f zSlhL%N7Ud_{obf^%Tun-of~1at9w??l%4hOIMSD_IBzvExUj1u(XI5!_Z2g|SM?gp zM@{LCTl47t#++Xgrt5bt+8@U2Z*=>Zw(b6~T+i()4{v^4AM&JJYq!wKqUGIuU4Iv@ zbe+~aU3$UiSjE#pM<_S<8&$Iguv-@r`@U;Uv8-ia$0LNX?fP|%{mnm7q5G$(z_vi!qOEc zn^wq`1sv=9@-<7li8Fg;OsLZA_(^iRL%52*)xau5-px3I2EV%dbbGbSEnpR`5i zZO$Y0phq`esAkZ&jwYWYgmMFxG36JHvYB+g{Q-RmV^`k9D5@*$_Ye6Z59WD3!*|u79j` z{n-lDTdLhPE7jarWlYK}c6{#;@U4>LWz&kodaD9TA5PKwyp6%M=eqpr$n~3lB*ifa z9oYZ&qux}b_VfNTUamV4l-BI_`+uOWxu0^ZNd9;3cGsHe?F^1f476WX?wX_XYRB_k zLAS)})zz&t$`ltyHoZ=c>TlD!Evy)#5?@qbU+=Fpm4DHX|4t_!eV3Jf_}sGZmCFa= zGUqEjpFUXx}7jgwI)ELyvpRq!+lKs%(h9G*gr%Jmk-$udmI6xq2$@-w|$X@@-@NF34{j zy4=>FxnB0j*)~lT#yU~1|CbFH-S=ZlEsXN+$D>pe{*>dkPN-cudl|#)s#=)tW8l{ z1U~ZDoITej{-y88lL)QwTU|j$FDAGeUi$qquEd68cK7zPjY3Bg4lLQyr&9gm^;6$F z5+%oKB&U8<> zVdkkGs=)d7+C0HjY8D>lDq&hEU)N3t0aAjM; zAEN`6{^u_p=sxl~_3n?5?O)YjSno>iI?Q+f%kS@{>Kjr`-F`0%Jm2+Aw_l_{w`+Zv zxx8IWeN3>cXu{w7w$BcDXBT}@U_Yvo+5V==KlKFD0e6XCK7QLjRqg8jHa+n2QM(PL zs(fb2v%j)E(Oz89S+_cCPtkTujtvU+K~nM7x_@otUkmJ575FdfxaGvRhU?_EDp>@s ztnpg)KeD6v)w$`7^^siqEk_NH9A6anLqb9%GP7^{ob{et1lIk~U;C$db;rMuvt`{{ zU0o06W!V0!H=mQgz^X;d;e_QSzjrV4b$6xb?be%pV#4*94f&j*p9<9jAN#ykFVefe zf862ESAX5L7hfj%z&hu`_4j#pd~Y;36tkvfpZ(wFm*Tcz zs;)S*!J~{L3o1_hH=n-mv}jdD=8-C=XPdJ4*!MJVo#H)XnzPqh9 z$N&1_3(u|oY}k;yL1&Wc&36wZXI?w=ZG+xXYhUwbzXqn);VZMf`KHNH zYA-VX;HGKIT2)Ved7dx6(0`)NB7QsZa?^~N?h4HrAs5#i*mPj^Dw)f(_n%JQ^{wLb z3$?V?XD{XK<^DR@)n9eLzs#xczCb+R7Ed-Qxru4|nbuBXB^?{rbvEk0?El%ges)#( zlp|LvKi`g>wUqtWCG}hJh5RhWJg=i7nC|e|&R)T^u-W{?y~EDaU+AgHYqhjYb+frA_V9+rnBrO|9MtWdC)ZrK*wi;HLU~?<+ogWW=JM-Da)-8Fk8TZH8#; z>t8PR2i|Y%DcW?;LE46afoK1d-Hc)hiaV594zeCoE}fa@A;a_T@gs**1rMaIu)It< zUfu7wb=sS&&XE~4%TK+YqSm6{=%2VtxZ;8~Pn}XctHLFZfBk~4Qp#1nkuA54mbS=$ zJb$R8v+VxI877Y2Z`c=nYSfXC7M;Clm+`F*QwFiinXmph=l*A%xxasTbA-zF2o=T) z^K=ajjLZy8O^r;pxy}TOJ<5e)n5o z>=!$ir5k>_d`&3tJN4j4@2Q8IdSA^}y<>cE^95FUK_33Y(`(N$%5xbSm~*MBy863u F0RWGh%2EIT delta 9245 zcmcaJmwnk>_6aIXhKAD*x-e=?^s}mesIXyw?f2^6V*2{?BGxmfKl-ukdHcI3Nrs#< z#m}rJEAaTLbEu1-eA51McTwgZT|b`lbJb@2>E83Qdd~sXbIEm8U8h+3{=DojOR%2i z{m)X}KDH)z?>9B$V!O?<6_qZ0cW)jkuqihCe&h7RM%Tbe%bDw|Y9HMU{^XY)HP7O* zR(znr@a=hz3{`?xVC z)j*x&Ob1Wu=7aa7wyV26m>4M}wfyIz7jtJNn-rcFcg&tt@af20|Ln4bS$eO9KJT8c&bG5Tdq=(V&SpzvtqRwx=0|5{ zyCpS=>&LxYWO&2B=fsyoKlPOQ)O1uu|7wvjk;%5`s)sKFuL#Vu2=%?_RT z(b>t_{_y!5p0kcePBys9V5t}AeQuM~wA--@oI6@M%3qxRBAd!n8e^b(XnTxMV5Es< z_yOLlTa;4mCDl@N5~lvuI;!Cza%whfj5znIJ)~%tu7l+3Y7Y~thltt^eT&l@zs#XuZDjYwR&zid1@(xuuRe)owZqg zD~`QRRQ~!sf35z#+W)-b_dFfy>&&?ymjAmm=jWqx`yKXQySBgHmG+=~@59Piv%-{Im>N96u=2_4;FmG8{akJpJ*;JtzQO!4TH1aoPvpg*=Gj|kuoy)IiZ6S0rQOKA zVe8fF7Z$~IiyYhh&9O!ELiMi2^^089g<{rpOGR_G)i3sW9{u?2>g(dyes9*_zw3fY z@b2Wdy^N+zH$ICo7&3~_+E?#;STs${$~o##K>e@F*LIjlYbSp6UB|vM+4g(0;KAU) zvgf%|D?F1JyKm(;D_!E~v^ZUVO~rAJsMCoH9;>wXbw20c_$(w@=;$SnDVL_YEmv|_ zQg~g^IX?T`cdfHV+{fBq{5&XZXPUQW`?20%U)i$+UTNl{~p)gFZ0*#YTmryCrivU_VYLQ zrz&PlS-2{Ui}&y`3%RakbLLmg&`4V8_e@E1(^+lSY6DxA$lUlbfpZ z#-sX-wsoeKq}s<2!x?H7jk9`gAKVeKK5$-7gPJIFX62r}-|Dqj>1V!R2~M1Vlh-R*wr-GzURhoXNX+G6;ySICC zrH2T6_~EccC$wj+E}6TyV)_h*xp$U+Nei&$QLxSpe!9blQS8#Q#-*zA*H=n?s*gG8 zFwt^)?wnuEm+QAK6_3{6{75ME_Qrja(mqv)=@!l_kXjchH0MRLlgyRm$a7Yr^Ap=U&iv+kd8_aF!Xqy4_d90S z{D0eZWYTy2j@^+-ViO#?+|ujvW!9YjxV^NVDLAY>`B>zEWWmDgR;!C;pB>pdEn@aE zPY%oC<)Ug`Em<2)8g@jaOK?7_ykv0XaO(Zw!@_0Tx|bhLWL)v|s^;gGsR^6d%hXid zGu_htXZn45H|2ue!7iQ`-L|GGbD67e zc=sd>hx>rh+-&=U(&YWsvNA3phh`SklN!8G6?BICGL`SQ2jW*=jN zH_gI&WR7^g>f>Siu4S&3Fz*mCPJDW;V8ZE3`FkgA+R0t}PWbJV zn-%@OGiH`4JgyIuQ+c9fqNy$S-9+?Vc=aTk6D$Wz-b;r5`*SwFLX4GjcAuEj9fK#a zE*6VBY}fy1QIZ$w)y7@W5~Nzb?y)G$nSOn0hKQ{5TaM2k zeyOq6KW#g`K*~1x_P&=}&P^9OE^=37?#8_{U+xfk#&)Z$W>T8--lWcI&X+UZ-3iW} z{7QGK>a5rhyAZ}Zbpfvw;xgJkZ}`01j@|#B*e+|9fBk7u;^HbB|A(3g+*=lUcU^%& z%7Udg4NJA}hV0&+qjrk1CY2*9^ZJ_15Rt^W3$l;PM&GJ`x!l%J?8E7sYQN^CE-6U+ z^(}4|-;d3oc}w<(Y4^Nl%>Op4?98<6RppYV-uska&0OPZlz4pw)30?&t|whx#92-< z?mMb-Dq(-AYwG^-1TDLsl5Eew?FF}^q>FLR9*kZd}D{y#k@tF|5iN>mJgLV6uNur`t$SnJr!OR z-svvmi8CxYai=za9oN~_(Od4N%t+_d7y9=mbE4&)y-(k&mU~3LpKo7kSNkeUbk_6e z*0i+R#1pp|{U)Q{>r9`2*OE2VY;&wP%`UHUY+lLE$i?3u_WRRYKe2-UH$P{8 zO54ykfBxK=&z?WwO;1lxxb*JpB!(?FQ_7{bs%lMdX?M|M*F5s#Q_TdMwGQDs-aVOm zgm)wBNgu~WEnk!`c$e8fUK=ohp87RdQNQrO517g1$pt#)`1e zyQ^;GnZJDe{l08}pYr5tQ4{CxT&222;U^Sc&N|aD<%E-lys^;qlA8~I=&~ngE`O)$ z80pip;x5Z(x2ID*ew|tr`AO!Ra@%*|vTxRD?=$v3I=Q-AU4C9e^+xq`NBEr=y*a1S zv*LVb{dNDkA1CLjJh^vW`1Y4)7oW8KE3$2DO{>tFJ;(m%?a9+OY+Sjy&o!aCk6)i@ z`~A*!R!bDWzumC(ta}yL^_w+}pMLsmwL4#SXHi6u=~Ux z)#TS||2L)jmGjBJ4%NuJoO^g?Q}Wp#|3o4mhrUVu`XZBMLB%!6zc<4imdseCteBhq zOTp}6rv6o}BQLmS<=qc;H{YSU?Bra0>a}LG&f?aU$0M}$Z1pMb=2Z6G%2RvOcSGW2Mdj7r&TX%Ed%ZYT|NV4U zs(+E%&3Vs^-IxD9b91*y%eIfsTu$Zxg=&RjH-tE^ep@iX>gVdLl<#?FRV)488ZBeA zKK|12L7{8u@5T+E5;wrx{td%M1EK5RmSvGXZAoyG~1 ze6GBHxX?7}(JKk1IDQxTi#_In_58foT`P~8^Lw0Uix+)aSIn~Ho9bDIJDKSxleart ze{#`t4Hv2USu*pZ?87c0+Z)_RkI%Xx6z;30wR_WF?`^L)@2%%+7j)h>q3_=9bqZ&X=kemMNWHcIN$xj0;ma{mM92ik`EH=vvR8^TuX_G~2#-W^T1hid{vH!T;Ys znVD>V`OrR{UFU=!Jx|$RQNO)Jt~Y(<_T}mJa%l?3_+#W;Ic6SO`$K#}l>RpR-PI|R zOx-8?91>f8^lnRQmpyFL0fUvf-Fo1b^shON$eY)>3mz5U8v8)B9uyp?QF721&4s@*m7&J<69 z-wS_i>yqudXTEU9#1(#V(^lL$6&$B@vA?!HpnGvGiwA#3VaBdM%?YBNtdS4AB_6qo ztayF)=RWJAfQPFV9pszCVD>ccim2v}#W$)f?sC<;6@LuZ^*r4**I(kBi6_soRGSW+ zZBa!x|F}D!cXOL|mFr{IL$1)(>vT@=OJp2X=3iiLHRIB)XLshF)?Iw}NMe2HUmf#X z@9SB%t*uv+ZL^=hS~X+GS+lCcywjH7|G0M{=YIZ&#&<&Z2X9##P;&aC@q(7a`${|i zJNl(<_%CGj?4gCg{MM$!^0MdOzqTkpv*7OkwSPQfOU+~b|2_F$b0+C<8vFZub6wIu z6uf`1?^*!>y#v9Ax!l0J85vwm2) z_`1{|+e#l+%}d;Q@2J+kA4WSh%`Wr*e0pW0y5Yk112b!s%9kia9?_p(pD1|vX3eM9 zXXf5q=F5NWY5wZ{v-9V2-;elV%q_+LV&&U-AKl|0#QDtl^zS@nt-U?hUrulC&6aJM zzFpqgL23olE^p@fSEl~u>$1cJw~fTsoqjQoZQaAO&D|?)&HpqA@7uL=mm|~t(3Ehc z)2D+x#;!3OL0CYJ_<@q68~8KR5Ng$T40}o zSG(0Nucuk;i5dEHY9~H%4Ps1nFa3MQ`gObA$2ng=bJg?5$L){&x9sSlrZ+_oE-*j7 zW~rsTO5kN^-TV*k@49M^|7Y47+RXO5YLoqay{%#Of@-RU!EQg4mG?+IdcXO~rROit zZ+~|6?0&l<)tZNwp4afto2}1NuQ%^^(s#q#+j0-jEuJ{z@np}iLsCy)Jr3M3;nL|Z zpLxE1&NP@F*@7Sg- z_w!$o)%Uk2ADfBu{3=a58!TYB=z+vm;p+>hop{gl_jX*$p?1HqcI zpuy^7FG=41lBo;JZaj+Ly}{`q(>arRKU zx0LEP78KlJ{kvT4aG9BE`P4|2*||&87rtuZw>i%e{bP&M{HW|QoX1w zTI=t&hJuhc23RvEI&?TYbjOY~Cy4SsSaw?|lwn zaaQZPVxwlLc}7R4OYEB5i?8fYnmXI}XPx!B&K>x2!ka5heezqba;7^-9A7>`#`-$L z)n8t(yOu1mdj9lfIY)B!C6Qalcn(GLRH<4!Eqsz^&$Dj@>&>^Tg|CQuGc)uLqx0YPIR$A&+fBr*($0SaXBVQ&yuxOKw zc+NO)p=!zh(~gI_^1_7t1m$ZbLOJ_wvUqyG|50C?85~(%`uEqXzq|Xd%ltE(ViguK z?Q%uQ{`u4GW8?q+iE}x2%=<-ARF?03;|rA@8^(k+0j2?WhmBn%u*qWg65g zXRuPL)Ne=M*4d^PnWnGfcy8J&lDJJ$_^kD-!YMzw6g-!ms#w}*y^>bPun*4I<){b?%F;9?1Uq&i;hJc%(=IP4`88e!q zBMa74b_%?HS>s%z_T|3zZ2Jt)WvdeWT!Mb>y!1G)r|SdL6OEFUmzsUFj$imI*EO>z zsrSnc_a#ZQHrnS+o^skqiCc*O>z>6Gb9{7*b7owMI}mW1t0>)i&y#Jl=N|Xm>F-?s zPUP`?fi=(So3oMU%9`N@X^-=<6#GhWrC7o%>_WZCbbbMSMqf|zIhyO~SQq%&$= ziHk{-WQ;NR7Pe4eZ-=Sz;TsSCcK-hzn#r8%(Rpu4_|JPihjf%yvgPVeR0{AobGCU} z!-tvqThgY6EA<3j%T8SRb5c%vWjj!*n*ix_AcQ3+gks!m#H!KTR7w9fJ(BJ8x zS!*0AASbUsPjst3n^Sq?QOmDUD-7l4Sij#^(N}W!jNJW=xgs$ZhqB?*Akx3a=Q22%h?^aRPo$ZFALq}_g}V7 z=J_(9l}N#;CA!lVFa5Co8NdIr^DNpc)_SoRSFP1@m&+5cEU;PYAEUwd zSHkO8V*HxV3a7H1J*U?6T-yHm(XPqYmu;wG6PwnIF>5nt5&G?SV-1&3QtHtf@^P|g_Cb>`g z|4;RL8k#W?Mpc`(NF@IVl$L*C*8LANjGf;pYt#ZG&Qxlz(yB+LKpcUXRCex$)b*fmetwiOpuu})PjWsc5JoBl8`?1O^9I-zMP?>IRR?lw<8w7Ri$(^YTd&&PlTv^}`Pyt`cqgFWC7k z{J%ta?D7ekkA$BDY(4SUEB?AJ}G6=IMlG@r`we^hC%P17C2~>6eQhJddv88 z#;o@X3k;-eKYNNTExoz1IPqZeW`5ru*41_1!f&%J_v8tjp0VEa?;q<|JHG8Wf9czN zm*_)2x|{2dx;SiWeC4^}V)GMGU9-F`635-*Nr67mg$+= z54N9qt#s*t$M-7B`Ayf$we7U>iSZU6m8lZjl$Ie^dRJiA*FUhsI>3l`I-a|NO zMrOoUYYpe!AFZ~E9_-k8Wt~>wS$*&Rx!SCjnng0vvsAjd{R8ap^G#mucgEqlt!LD{ zvTZM9RSR>C0tKO|@^Z@Mk*z+-=n|_K@@5x)ZI|o-N#( zU2O85%|z^HjBj7i#U+=XHQj4m@aD9@CAPrdxe=2-ooNexm;3PC=Y_wLZC{rP#h>AF zVES?+r~bnw&Eg+_dM4(5HhE~4vElFhFGY_fUOMf$t1C0@W2_((%fv-%j>wiu&c2d( zzI5eQoqs3G$`Z;HkLeuzs<@KPdFt6d0g;p8hwk6s=<&2!=bydsrXRahA=%7>RHFyoB?z(`Ltp zvzwgy3X~lm8)u~l`M!I%^tj}@>kj>sJ~M1zVyeZl?!^z))z|ZniAZ#AYgK1roh`%t z&Pgy$tKT|-?S9wnZ^0*+{#c3pTb}B&Uz+#Sq9s8Rq0?n@c6_+VZ`IE|YwU+%fnRyrqe)q)6Xfxf42&(w0Se#gZad|}6w9lyhm*xf9a zU}!NeTH(PK7_#x0nC=EUV;%3N(#2L^G~`Yj*My5nna>Mct$4pc%-1F>`t7BAwY=-p zZOx~JeAP|ctWa*XHGQApf#abew{IU(=hkY|X`U*s)02K-=11nK%il<5t*!UAajy1I z-=mN^H|!IqJ|1jalYs}SMbxew)~vZ2IKTYmtq*=H_c(5WxBdwZIg-AQjrCBEux%-y=&AtSJA z+n%5GA0GaC%q1G?@U^~r^+JucCr>m>i3Bf^-Sk>^>O!uD7YpATo4-Bv`lH^hcs5`0 z|Ems9y>rVa_nP#C^&%gI>e8}y6m7rfy+I*Z%Kz>3x|!!oJz_$$>$g9iaw1JSygf>C zjz;M|rmKGqj%b!HzpP-#<*I&2OyW^;+{DB@=ZRNK-kq&i(-zZhF)loE%HD$eW5Bi9 zyqbcd2TdA<>rVri?0{d@2vWMdTA=_moBLIlBQRsFw$yO~nN zscqhj62&G;0XA>`*MHsVpQUSKWm;sXSR8rnw{7gf%ae@KX5YCed`IRotC#Wd4;jg; zx*GQ#+H$74YEeUa+78F+^A;r$0&RxNc#5VARCg@@{v_htSC7=?2h-fl4_SRpZ+joH z!TxT9PR+u@->3I6PjlU^Vp8TYquP<(=6xn2M_q<#*W2U=8b7siT2)|UvkkGTb`JeQ<3*If~ zK0Gs+t*UMN1MTOHMeOmeoXh)9um5kU^OtA)3+MG8G~EQZq@Lwj^>u^pJEnc>R_DeU zXg~MO+wM8*&BvwwH=^qJw-o(&b*sMQ)9o#54hucuy_ayhuPkQ5?vC0lfxKf&QsS33 z7Mpl{;oNwZGjH8b6T^QYDf?Cbyp*48qNaHKtljSi52x@Q*z}XyqD@ zf9OQxw)-D)%8g;n7w^K65A=1jYUZ_Q9-5PNJeb53pX-e1r5TTgG!Y3@ZmZolY3N{3l#B%BTq~@iUWGEOK8!14>n`BR) z=4E6QX?^&)|G5OuW7`{^8b_jdb6&b|mRU{Qc&)*OwM*f7-o8IOEyE|(bxuianR43H z%y_d&u(9FN$OE6HcTZh8lSOp-jua W6s4wd85&v`n3{5_s=E5SaRC78g2?v( diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex index 45b8ef04732..9ce2923e845 100644 --- a/etc/refcards/orgcard.tex +++ b/etc/refcards/orgcard.tex @@ -484,9 +484,9 @@ after ``{\tt :}'', and dictionary words elsewhere. \metax{select next/previous state}{S-LEFT/RIGHT} \metax{select next/previous set}{C-S-LEFT/RIGHT} \key{toggle ORDERED property}{C-c C-x o} -\key{view TODO items in a sparse tree}{C-c C-v} -\key{view 3rd TODO keyword's sparse tree}{C-3 C-c C-v} +\key{view TODO items in a sparse tree}{C-c / t} +\key{view 3rd TODO keyword's sparse tree}{C-3 C-c / t} \key{set the priority of the current item}{C-c , [ABC]} \key{remove priority cookie from current item}{C-c , SPC} \key{raise/lower priority of current item}{S-UP/DOWN\notetwo} diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog index ef40c9316cf..9bf731fb6b2 100644 --- a/lisp/org/ChangeLog +++ b/lisp/org/ChangeLog @@ -1,3 +1,300 @@ +2012-10-26 Achim Gratz + + * ob-ditaa.el: Needs to (require 'org-compat) for + org-find-library-dir. + + * org.el: Remove utf-8 codepoints in docstrings, bytecode doesn't + work when loaded from compressed files. + + * org-compat.el: Make sure that file-name-directory is getting a + stringp. This avoids a possible " (wrong-type-argument stringp + nil)" error when the library in question does not exist. + + * org-odt.el: Replace arc-mode.el by arc-mode. + + * org.el: Replace org-macs.el by org-macs. + + * org-install.el: Provide an empty file that prints a warning + about an outdated configuration. + +2012-10-26 Bastien Guerry + + * org-latex.el (org-export-as-latex): Remove obsolete argument + `hidden'. Also fix the docstring: using 'string as the value + for `to-buffer' outputs a string with no LaTeX header. + (org-export-as-latex-batch) + (org-export-as-latex-to-buffer, org-export-region-as-latex) + (org-export-as-pdf): Don't use the obsoleted argument. + + * ob-haskell.el (org-export-as-latex): Don't use the obsoleted + argument `hidden'. + + * org.el (org-refile): Run within `with-demoted-errors' so + that a corrupted bookmark file does not stop the refile + process. + + * org-capture.el (org-capture-bookmark-last-stored-position): + Ditto for the capture process. + + * org-src.el (org-edit-src-exit): Fix bug when saving an empty + source buffer. + + * org-lparse.el (org-lparse): Fix bug by returning the output + of `org-do-lparse'. + + * org.el (org-refile-check-position): Throw an error when the + refile target is the current buffer and is not a file. + (org-agenda-file-to-front, org-remove-file): Throw an error + when the current buffer is not a file. + (org-check-agenda-file): Enhance the message. + (org-element-type): Autoload. + (org-element-context, org-element-paragraph-parser): Don't + declare as these two functions are not used in org.el. + + * org-lparse.el (browse-url-file-url): Declare. + + * org.el (org-refile-check-position): Fix typo in docstring. + + * org-clock.el (org-clock-modeline-total): Make obsolete. + (org-clock-mode-line-total): Rename from + `org-clock-modeline-total'. + (org-clock-get-sum-start): Fix references to + `org-clock-modeline-total'. + + * org-faces.el (org-agenda-filter-tags) + (org-agenda-filter-category, mode-line): Use the 'mode-line + face instead of the obsolete 'modeline. + + * org-odt.el (org-odt-styles-dir): Try more directories. + Don't throw an error, just send a message. + + * org-odt.el (org-odt-lib-dir, org-odt-data-dir) + (org-odt-schema-dir-list, org-odt-styles-dir-list): Delete. + (org-export-odt-schema-dir, org-odt-styles-dir): Infer the + correct directories without requiring other variables. + + * org-fixup.el (org-make-org-version, org-make-autoloads): + Don't define `org-odt-data-dir' in org-version.el. + + * org-loaddefs.el: New file. + + * org.el ("org-loaddefs.el"): Don't throw an error if the file + cannot be fund. + (org-version): Use org-loaddefs.el instead of org-install.el. + + * org.el: Don't dynamically autoload already autoloaded + functions. + (org-clock-update-time-maybe): Move to org-clock.el. + + * org-exp.el (org-insert-export-options-template): Remove + autoload cookie. + + * org-clock.el (org-resolve-clocks, org-clock-in) + (org-clock-out, org-clock-cancel, org-clock-goto) + (org-clock-sum, org-clock-display, org-clock-report) + (org-dblock-write:clocktable): Add autoload cookie. + (org-clock-update-time-maybe): Moved from org.el. + + * org-beamer.el (org-beamer-sectioning, org-beamer-mode): Ditto. + + * org-ascii.el (org-export-ascii-preprocess): Ditto. + + * org-archive.el (org-archive-subtree) + (org-archive-to-archive-sibling, org-toggle-archive-tag): Add + autoload cookie. + + * org-colview.el (org-columns, org-dblock-write:columnview) + (org-insert-columns-dblock, org-agenda-columns): Ditto. + + * org-table.el (org-table-create-with-table.el) + (org-table-create-or-convert-from-region, org-table-create) + (org-table-convert-region, org-table-import) + (org-table-export, org-table-align) + (org-table-justify-field-maybe, org-table-next-field) + (org-table-previous-field, org-table-next-row) + (org-table-copy-down, org-table-field-info) + (org-table-current-dline, org-table-goto-column) + (org-table-insert-column, org-table-delete-column) + (org-table-move-column-right, org-table-move-column-left) + (org-table-move-column, org-table-move-row-down) + (org-table-move-row-up, org-table-move-row) + (org-table-insert-row, org-table-insert-hline) + (org-table-hline-and-move, org-table-kill-row) + (org-table-sort-lines, org-table-cut-region) + (org-table-copy-region, org-table-paste-rectangle) + (org-table-convert, org-table-wrap-region) + (org-table-edit-field, org-table-sum) + (org-table-get-stored-formulas) + (org-table-maybe-eval-formula) + (org-table-rotate-recalc-marks) + (org-table-maybe-recalculate-line, org-table-eval-formula) + (org-table-recalculate, org-table-iterate) + (org-table-edit-formulas) + (org-table-toggle-coordinate-overlays) + (org-table-toggle-formula-debugger, orgtbl-to-generic) + (orgtbl-to-tsv, orgtbl-to-csv, orgtbl-to-latex) + (orgtbl-to-html, orgtbl-to-texinfo, orgtbl-to-orgtbl): Ditto. + + * org.el (turn-on-orgtbl): Moved here from org-table.el. + (org-clock-persistence-insinuate): Moved here from org-clock.el. + (org-update-all-dblocks, org-map-entries) + (org-require-autoloaded-modules, org-forward-element) + (org-backward-element, org-up-element) + (org-element-greater-elements, org-drag-element-backward) + (org-drag-element-forward, org-mark-element) + (org-narrow-to-element, org-transpose-element) + (org-unindent-buffer): Don't autoload. + + * org-clock.el (org-clock-get-clocktable): Rename from + `org-get-clocktable'. + (org-clock-persistence-insinuate): Move to org.el. + + * org-capture.el: Do no set `generated-autoload-file' locally. + Minor code clean up. + + * org-agenda.el (org-agenda-list): Use + `org-clock-get-clocktable'. Do no set + `generated-autoload-file' locally. + + * org-table.el (org-table-iterate-buffer-tables): Minor + reformatting. + (turn-on-orgtbl): Move to org.el. + + * org-html.el (org-export-htmlize-generate-css): Don't autoload. + + * org-timer.el (org-timer-pause-or-continue, org-timer-stop): + Ditto. + + * ob-tangle.el (org-babel-tangle-lang-exts): Ditto. + + * ob-lob.el (org-babel-lob-ingest): Ditto. + + * org-id.el (org-id-copy) + (org-id-get-with-outline-path-completion) + (org-id-get-with-outline-drilling): Ditto. + + * org-lparse.el (org-lparse-and-open, org-lparse-batch) + (org-lparse-to-buffer, org-replace-region-by) + (org-lparse-region): Ditto. + + * org-mobile.el (org-mobile-create-sumo-agenda): Ditto. + + * org.el (org-cycle): Fix misplaced autoload cookie. + + * org-agenda.el (org-agenda-get-timestamps): Check if the item + is an habit when formatting it with `org-agenda-format-item'. + (org-agenda-get-blocks): Fix bug: don't assume the item is an + habit when formatting with `org-agenda-format-item'. + + * org.el (org-calendar-agenda-action-key): Delete an option. + (org-mode-map): Delete its keybinding. + (org-agenda-action-marker, org-mark-entry-for-agenda-action): + Delete. + + * org-agenda.el (org-agenda-diary-entry): Don't prevent from + being used outside of Org agendas, as it can be used in + calendar buffers too. + +2012-10-26 Caio Tiago Oliveira (tiny change) + + * ob-scala.el (org-babel-scala-wrapper-method): Use a Scala + block enclosing the submitted code. + +2012-10-26 Myles English (tiny change) + + * org-clock.el (org-clock-in): Moved the call to + org-clock-in-prepare-hook until the task's properties + can be accessed. + +2012-10-26 Nicolas Goaziou + + * org.el (org-auto-fill-function): Make sure `adaptive-fill-mode' + mode is nil when pre-computed `fill-prefix' is the empty string. + Otherwise filling functions from fill.el think it has to be computed + again and overwrite it. + + * org.el: Make `org-closest-date' aware of hours repeaters. + + * org.el (org-end-of-line): Do not call `end-of-visual-line' when + moving to the end of line. Also improve behaviour on elements that + can be hidden. + + * org.el (org-sparse-tree): Allow to call `org-show-todo-tree' + with an argument. + + * org-element.el (org-element--get-next-object-candidates): Fix + parsing of objects of the same type in a single paragraph. + + * org-element.el (org-element-sub/superscript-successor): Fix + parsing of sub/superscript at beginning of item. + (org-element-latex-or-entity-successor): Fix parsing of latex + fragments at beginning of item. + + * org-agenda.el (org-agenda-later): Fix function when span is + a number and an argument was provided. Also fix typo in docstring. + + * org.el (org-read-date-analyze): Fix analyzing for dates like + "29.03 16:40". + + * org-element.el (org-element-center-block-parser) + (org-element-drawer-parser, , org-element-footnote-definition-parser) + (org-element-inlinetask-parser, org-element-plain-list-parser) + (org-element-quote-block-parser, org-element-special-block-parser) + (org-element-babel-call-parser, org-element-clock-parser) + (org-element-comment-parser, org-element-comment-block-parser) + (org-element-example-block-parser, org-element-export-block-parser) + (org-element-fixed-width-parser, org-element-horizontal-rule-parser) + (org-element-keyword-parser, org-element-latex-environment-parser) + (org-element-paragraph-parser, org-element-planning-parser) + (org-element-property-drawer-parser, org-element-src-block-parser) + (org-element-table-parser) + (org-element-verse-block-parserorg-element-dynamic-block-parser): + Make sure element never ends at the end of a blank non-empty line. + + * org-element.el (org-element-context) + (org-element--get-next-object-candidates): Fix `org-element-context'. + In particular, the restrictions for an object may be different from + those of its container (i.e. table rows and table cells). + + * org-element.el (org-element-example-block-parser) + (org-element-src-block-parser): Store value of example-blocks and + src-blocks unescaped. + (org-element-example-block-interpreter) + (org-element-src-block-interpreter): Escape value again when storing + it. + + * org-src.el (org-escape-code-in-string) + (org-unescape-code-in-string, org-escape-code-in-region) + (org-unescape-code-in-region): New functions. + (org-edit-src-code, org-edit-src-exit): Use new functions. + + * org.el (org-strip-protective-commas): Removed function. + + * org-exp.el (org-export-select-backend-specific-text): Use new + function. + + * ob.el (org-babel-parse-src-block-match) + (org-babel-parse-inline-src-block-match, org-babel-insert-result): + Always escape produced blocks, independently on the language of the + block, if any. Use new functions. + + * org-element.el (org-element-paragraph-parser): Fix regexp + starting a block. + + * org-element.el (org-element-center-block-parser): + (org-element-drawer-parser, org-element-dynamic-block-parser) + (org-element-example-block-parser, org-element-export-block-parser) + (org-element-latex-environment-parser, org-element-paragraph-parser) + (org-element-property-drawer-parser, org-element-src-block-parser) + (org-element-verse-block-parser): Use stricter regexps for boundaries + of elements. + +2012-10-26 Toby S. Cubitt + + * org-agenda.el (org-agenda-get-sexps): Reset `extra' to nil at + beginning of re-search-forward loop, otherwise next iteration picks up + `extra' value from previous entry. + 2012-09-30 Abdó Roig-Maranges * org-html.el (org-export-html-preprocess) diff --git a/lisp/org/ob-ditaa.el b/lisp/org/ob-ditaa.el index ae7794b659c..7c545c47437 100644 --- a/lisp/org/ob-ditaa.el +++ b/lisp/org/ob-ditaa.el @@ -40,6 +40,7 @@ ;;; Code: (require 'ob) +(require 'org-compat) (defvar org-ditaa-jar-path) ;; provided by org-exp-blocks diff --git a/lisp/org/ob-haskell.el b/lisp/org/ob-haskell.el index 1588f99f1e4..03972efeec1 100644 --- a/lisp/org/ob-haskell.el +++ b/lisp/org/ob-haskell.el @@ -147,6 +147,8 @@ specifying a variable of the same value." (format "%S" var))) (defvar org-src-preserve-indentation) +(declare-function org-export-as-latex "org-latex" + (arg &optional ext-plist to-buffer body-only pub-dir)) (defun org-babel-haskell-export-to-lhs (&optional arg) "Export to a .lhs file with all haskell code blocks escaped. When called with a prefix argument the resulting diff --git a/lisp/org/ob-io.el b/lisp/org/ob-io.el index 20648266056..881f35afbda 100644 --- a/lisp/org/ob-io.el +++ b/lisp/org/ob-io.el @@ -38,12 +38,12 @@ (require 'ob-eval) (eval-when-compile (require 'cl)) +(defvar org-babel-tangle-lang-exts) ;; Autoloaded (add-to-list 'org-babel-tangle-lang-exts '("io" . "io")) (defvar org-babel-default-header-args:io '()) (defvar org-babel-io-command "io" "Name of the command to use for executing Io code.") - (defun org-babel-execute:io (body params) "Execute a block of Io code with org-babel. This function is called by `org-babel-execute-src-block'" diff --git a/lisp/org/ob-keys.el b/lisp/org/ob-keys.el index 759bef3905f..3e3f496ff35 100644 --- a/lisp/org/ob-keys.el +++ b/lisp/org/ob-keys.el @@ -98,6 +98,8 @@ a-list placed behind the generic `org-babel-key-prefix'.") (provide 'ob-keys) - +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: ;;; ob-keys.el ends here diff --git a/lisp/org/ob-lob.el b/lisp/org/ob-lob.el index 6aafe34dcd3..8b5f14d0252 100644 --- a/lisp/org/ob-lob.el +++ b/lisp/org/ob-lob.el @@ -45,7 +45,6 @@ To add files to this list use the `org-babel-lob-ingest' command." (defvar org-babel-default-lob-header-args '((:exports . "results")) "Default header arguments to use when exporting #+lob/call lines.") -;;;###autoload (defun org-babel-lob-ingest (&optional file) "Add all named source-blocks defined in FILE to `org-babel-library-of-babel'." @@ -143,6 +142,8 @@ if so then run the appropriate source block from the Library." (provide 'ob-lob) - +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: ;;; ob-lob.el ends here diff --git a/lisp/org/ob-picolisp.el b/lisp/org/ob-picolisp.el index dd0704fc14e..025993c5847 100644 --- a/lisp/org/ob-picolisp.el +++ b/lisp/org/ob-picolisp.el @@ -60,6 +60,7 @@ (eval-when-compile (require 'cl)) (declare-function run-picolisp "ext:inferior-picolisp" (cmd)) +(defvar org-babel-tangle-lang-exts) ;; Autoloaded ;; optionally define a file extension for this language (add-to-list 'org-babel-tangle-lang-exts '("picolisp" . "l")) diff --git a/lisp/org/ob-ref.el b/lisp/org/ob-ref.el index 79861f1b78a..af4ee6a1a4d 100644 --- a/lisp/org/ob-ref.el +++ b/lisp/org/ob-ref.el @@ -59,6 +59,7 @@ (declare-function org-at-item-p "org-list" ()) (declare-function org-narrow-to-subtree "org" ()) (declare-function org-id-find-id-in-file "org-id" (id file &optional markerp)) +(declare-function org-id-find-id-file "org-id" (id)) (declare-function org-show-context "org" (&optional key)) (declare-function org-pop-to-buffer-same-window "org-compat" (&optional buffer-or-name norecord label)) diff --git a/lisp/org/ob-scala.el b/lisp/org/ob-scala.el index b5eb18484b9..ea3c3f28112 100644 --- a/lisp/org/ob-scala.el +++ b/lisp/org/ob-scala.el @@ -36,12 +36,12 @@ (require 'ob-eval) (eval-when-compile (require 'cl)) +(defvar org-babel-tangle-lang-exts) ;; Autoloaded (add-to-list 'org-babel-tangle-lang-exts '("scala" . "scala")) (defvar org-babel-default-header-args:scala '()) (defvar org-babel-scala-command "scala" "Name of the command to use for executing Scala code.") - (defun org-babel-execute:scala (body params) "Execute a block of Scala code with org-babel. This function is called by `org-babel-execute-src-block'" @@ -72,9 +72,17 @@ Emacs-lisp table, otherwise return the results as a string." (defvar org-babel-scala-wrapper-method - "( + +"var str_result :String = null; + +Console.withOut(new java.io.OutputStream() {def write(b: Int){ +}}) { + str_result = { %s -) asString print + }.toString +} + +print(str_result) ") diff --git a/lisp/org/ob-sql.el b/lisp/org/ob-sql.el index ad7b1e29a93..20a136a80fb 100644 --- a/lisp/org/ob-sql.el +++ b/lisp/org/ob-sql.el @@ -47,7 +47,8 @@ (eval-when-compile (require 'cl)) (declare-function org-table-import "org-table" (file arg)) -(declare-function orgtbl-to-csv "org-table" (TABLE PARAMS)) +(declare-function orgtbl-to-csv "org-table" (table params)) +(declare-function org-table-to-lisp "org-table" (&optional txt)) (defvar org-babel-default-header-args:sql '()) diff --git a/lisp/org/ob-sqlite.el b/lisp/org/ob-sqlite.el index 24a7dd58c2c..b1696d94d3c 100644 --- a/lisp/org/ob-sqlite.el +++ b/lisp/org/ob-sqlite.el @@ -33,7 +33,8 @@ (declare-function org-fill-template "org" (template alist)) (declare-function org-table-convert-region "org-table" (beg0 end0 &optional separator)) -(declare-function orgtbl-to-csv "org-table" (TABLE PARAMS)) +(declare-function orgtbl-to-csv "org-table" (table params)) +(declare-function org-table-to-lisp "org-table" (&optional txt)) (defvar org-babel-default-header-args:sqlite '()) diff --git a/lisp/org/ob-tangle.el b/lisp/org/ob-tangle.el index 7077a1571eb..7e25b2cd1bc 100644 --- a/lisp/org/ob-tangle.el +++ b/lisp/org/ob-tangle.el @@ -38,7 +38,6 @@ (declare-function org-babel-update-block-body "org" (new-body)) (declare-function make-directory "files" (dir &optional parents)) -;;;###autoload (defcustom org-babel-tangle-lang-exts '(("emacs-lisp" . "el")) "Alist mapping languages to their file extensions. @@ -514,6 +513,8 @@ which enable the original code blocks to be found." (provide 'ob-tangle) - +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: ;;; ob-tangle.el ends here diff --git a/lisp/org/ob.el b/lisp/org/ob.el index f15457d68e2..b06aac11f69 100644 --- a/lisp/org/ob.el +++ b/lisp/org/ob.el @@ -39,7 +39,6 @@ (declare-function show-all "outline" ()) (declare-function org-reduce "org" (CL-FUNC CL-SEQ &rest CL-KEYS)) (declare-function org-mark-ring-push "org" (&optional pos buffer)) -(declare-function org-strip-protective-commas "org" (beg end)) (declare-function tramp-compat-make-temp-file "tramp-compat" (filename &optional dir-flag)) (declare-function tramp-dissect-file-name "tramp" (name &optional nodefault)) @@ -64,7 +63,6 @@ (declare-function org-cycle "org" (&optional arg)) (declare-function org-uniquify "org" (list)) (declare-function org-current-level "org" ()) -(declare-function org-strip-protective-commas "org" (beg end)) (declare-function org-table-import "org-table" (file arg)) (declare-function org-add-hook "org-compat" (hook function &optional append local)) @@ -87,10 +85,11 @@ (declare-function org-list-struct "org-list" ()) (declare-function org-list-prevs-alist "org-list" (struct)) (declare-function org-list-get-list-end "org-list" (item struct prevs)) -(declare-function org-strip-protective-commas "org" (beg end)) (declare-function org-remove-if "org" (predicate seq)) (declare-function org-completing-read "org" (&rest args)) -(declare-function org-add-protective-commas "org-src" (beg end)) +(declare-function org-escape-code-in-region "org-src" (beg end)) +(declare-function org-unescape-code-in-string "org-src" (s)) +(declare-function org-table-to-lisp "org-table" (&optional txt)) (defgroup org-babel nil "Code block evaluation and management in `org-mode' documents." @@ -494,8 +493,8 @@ can not be resolved.") ;;; functions (defvar call-process-region) -;;;###autoload +;;;###autoload (defun org-babel-execute-src-block (&optional arg info params) "Execute the current source code block. Insert the results of execution into the buffer. Source code @@ -838,6 +837,7 @@ evaluation mechanisms." (key-binding (or key (read-key-sequence nil)))))) (defvar org-bracket-link-regexp) + ;;;###autoload (defun org-babel-open-src-block-result (&optional re-run) "If `point' is on a src block then open the results of the @@ -944,6 +944,7 @@ buffer." (def-edebug-spec org-babel-map-inline-src-blocks (form body)) (defvar org-babel-lob-one-liner-regexp) + ;;;###autoload (defmacro org-babel-map-call-lines (file &rest body) "Evaluate BODY forms on each call line in FILE. @@ -1241,7 +1242,7 @@ may be specified in the properties of the current outline entry." ;; get block body less properties, protective commas, and indentation (with-temp-buffer (save-match-data - (insert (org-babel-strip-protective-commas body lang)) + (insert (org-unescape-code-in-string body)) (unless preserve-indentation (org-do-remove-indentation)) (buffer-string))) (org-babel-merge-params @@ -1258,8 +1259,7 @@ may be specified in the properties of the current outline entry." (let* ((lang (org-no-properties (match-string 2))) (lang-headers (intern (concat "org-babel-default-header-args:" lang)))) (list lang - (org-babel-strip-protective-commas - (org-no-properties (match-string 5)) lang) + (org-unescape-code-in-string (org-no-properties (match-string 5))) (org-babel-merge-params org-babel-default-inline-header-args (org-babel-params-from-properties lang) @@ -1937,10 +1937,10 @@ code ---- the results are extracted in the syntax of the source ((member "prepend" result-params)))) ; already there (setq results-switches (if results-switches (concat " " results-switches) "")) - (let ((wrap (lambda (start finish &optional escape) + (let ((wrap (lambda (start finish) (goto-char end) (insert (concat finish "\n")) (goto-char beg) (insert (concat start "\n")) - (if escape (org-add-protective-commas (point) end)) + (org-escape-code-in-region (point) end) (goto-char end) (goto-char (point-at-eol)) (setq end (point-marker)))) (proper-list-p (lambda (it) (and (listp it) (null (cdr (last it))))))) @@ -1987,7 +1987,7 @@ code ---- the results are extracted in the syntax of the source ((member "latex" result-params) (funcall wrap "#+BEGIN_LaTeX" "#+END_LaTeX")) ((member "org" result-params) - (funcall wrap "#+BEGIN_SRC org" "#+END_SRC" 'escape)) + (funcall wrap "#+BEGIN_SRC org" "#+END_SRC")) ((member "code" result-params) (funcall wrap (format "#+BEGIN_SRC %s%s" (or lang "none") results-switches) "#+END_SRC")) @@ -2370,17 +2370,6 @@ block but are passed literally to the \"example-block\"." (funcall nb-add (buffer-substring index (point-max)))) new-body)) -(defun org-babel-strip-protective-commas (body &optional lang) - "Strip protective commas from bodies of source blocks." - (with-temp-buffer - (insert body) - (if (and lang (string= lang "org")) - (progn (goto-char (point-min)) - (while (re-search-forward "^[ \t]*\\(,\\)" nil t) - (replace-match "" nil nil nil 1))) - (org-strip-protective-commas (point-min) (point-max))) - (buffer-string))) - (defun org-babel-script-escape (str &optional force) "Safely convert tables into elisp lists." (let (in-single in-double out) @@ -2599,6 +2588,8 @@ of `org-babel-temporary-directory'." (provide 'ob) - +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: ;;; ob.el ends here diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index 32fecde2af0..36f3fcb9974 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el @@ -1871,6 +1871,7 @@ When nil, `q' will kill the single agenda buffer." :version "24.3" :type 'boolean) + ;;;###autoload (defun org-toggle-sticky-agenda (&optional arg) "Toggle `org-agenda-sticky'." @@ -1888,6 +1889,11 @@ When nil, `q' will kill the single agenda buffer." (message "Sticky agenda was %s" (if org-agenda-sticky "enabled" "disabled")))))) +(autoload 'org-toggle-sticky-agenda "org-agenda" "\ +Toggle `org-agenda-sticky'. + +\(fn &optional ARG)" t nil) + (defvar org-agenda-buffer nil "Agenda buffer currently being generated.") @@ -2563,6 +2569,43 @@ Pressing `<' twice means to restrict to the current subtree or region ((equal org-keys "!") (customize-variable 'org-stuck-projects)) (t (error "Invalid agenda key")))))) +(autoload 'org-agenda "org-agenda" "\ +Dispatch agenda commands to collect entries to the agenda buffer. +Prompts for a command to execute. Any prefix arg will be passed +on to the selected command. The default selections are: + +a Call `org-agenda-list' to display the agenda for current day or week. +t Call `org-todo-list' to display the global todo list. +T Call `org-todo-list' to display the global todo list, select only + entries with a specific TODO keyword (the user gets a prompt). +m Call `org-tags-view' to display headlines with tags matching + a condition (the user is prompted for the condition). +M Like `m', but select only TODO entries, no ordinary headlines. +L Create a timeline for the current buffer. +e Export views to associated files. +s Search entries for keywords. +S Search entries for keywords, only with TODO keywords. +/ Multi occur across all agenda files and also files listed + in `org-agenda-text-search-extra-files'. +< Restrict agenda commands to buffer, subtree, or region. + Press several times to get the desired effect. +> Remove a previous restriction. +# List \"stuck\" projects. +! Configure what \"stuck\" means. +C Configure custom agenda commands. + +More commands can be added by configuring the variable +`org-agenda-custom-commands'. In particular, specific tags and TODO keyword +searches can be pre-defined in this way. + +If the current buffer is in Org-mode and visiting a file, you can also +first press `<' once to indicate that the agenda should be temporarily +\(until the next use of \\[org-agenda]) restricted to the current file. +Pressing `<' twice means to restrict to the current subtree or region +\(if active). + +\(fn &optional ARG ORG-KEYS RESTRICTION)" t nil) + (defun org-agenda-append-agenda () "Append another agenda view to the current one. This function allows interactive building of block agendas. @@ -2857,6 +2900,16 @@ before running the agenda command." (org-agenda nil cmd-key))) (set-buffer org-agenda-buffer-name) (princ (buffer-string))) + +(autoload 'org-batch-agenda "org-agenda" "\ +Run an agenda command in batch mode and send the result to STDOUT. +If CMD-KEY is a string of length 1, it is used as a key in +`org-agenda-custom-commands' and triggers this command. If it is a +longer string it is used as a tags/todo match string. +Parameters are alternating variable names and values that will be bound +before running the agenda command. + +\(fn CMD-KEY &rest PARAMETERS)" nil t) (def-edebug-spec org-batch-agenda (form &rest sexp)) (defvar org-agenda-info nil) @@ -2915,6 +2968,43 @@ agenda-day The day in the agenda where this is listed" priority-letter priority agenda-day) ",")) (princ "\n"))))) + +(autoload 'org-batch-agenda-csv "org-agenda" "\ +Run an agenda command in batch mode and send the result to STDOUT. +If CMD-KEY is a string of length 1, it is used as a key in +`org-agenda-custom-commands' and triggers this command. If it is a +longer string it is used as a tags/todo match string. +Parameters are alternating variable names and values that will be bound +before running the agenda command. + +The output gives a line for each selected agenda item. Each +item is a list of comma-separated values, like this: + +category,head,type,todo,tags,date,time,extra,priority-l,priority-n + +category The category of the item +head The headline, without TODO kwd, TAGS and PRIORITY +type The type of the agenda entry, can be + todo selected in TODO match + tagsmatch selected in tags match + diary imported from diary + deadline a deadline on given date + scheduled scheduled on given date + timestamp entry has timestamp on given date + closed entry was closed on given date + upcoming-deadline warning about deadline + past-scheduled forwarded scheduled item + block entry has date block including g. date +todo The todo keyword, if any +tags All tags including inherited ones, separated by colons +date The relevant date, like 2007-2-14 +time The time, like 15:00-16:50 +extra Sting with extra planning info +priority-l The priority letter if any was given +priority-n The computed numerical priority +agenda-day The day in the agenda where this is listed + +\(fn CMD-KEY &rest PARAMETERS)" nil t) (def-edebug-spec org-batch-agenda-csv (form &rest sexp)) (defun org-fix-agenda-info (props) @@ -2964,6 +3054,11 @@ This ensures the export commands can easily use it." (interactive) (eval (list 'org-batch-store-agenda-views))) +(autoload 'org-store-agenda-views "org-agenda" "\ + + +\(fn &rest PARAMETERS)" t nil) + ;;;###autoload (defmacro org-batch-store-agenda-views (&rest parameters) "Run all custom agenda commands that have a file argument." @@ -2998,6 +3093,11 @@ This ensures the export commands can easily use it." (org-agenda-write (expand-file-name (pop files) dir) nil t bufname))) (and (get-buffer bufname) (kill-buffer bufname))))))) + +(autoload 'org-batch-store-agenda-views "org-agenda" "\ +Run all custom agenda commands that have a file argument. + +\(fn &rest PARAMETERS)" nil t) (def-edebug-spec org-batch-store-agenda-views (&rest sexp)) (defvar org-agenda-current-span nil @@ -4002,7 +4102,7 @@ given in `org-agenda-start-on-weekday'." "" x)) filter "")))) - (setq tbl (apply 'org-get-clocktable p)) + (setq tbl (apply 'org-clock-get-clocktable p)) (insert tbl))) (goto-char (point-min)) (or org-agenda-multi (org-agenda-fit-window-to-buffer)) @@ -4026,6 +4126,20 @@ given in `org-agenda-start-on-weekday'." (setq buffer-read-only t) (message "")))) +(autoload 'org-agenda-list "org-agenda" "\ +Produce a daily/weekly view from all files in variable `org-agenda-files'. +The view will be for the current day or week, but from the overview buffer +you will be able to go to other days/weeks. + +With a numeric prefix argument in an interactive call, the agenda will +span ARG days. Lisp programs should instead specify SPAN to change +the number of days. SPAN defaults to `org-agenda-span'. + +START-DAY defaults to TODAY, or to the most recent match for the weekday +given in `org-agenda-start-on-weekday'. + +\(fn &optional ARG START-DAY SPAN)" t nil) + (defun org-agenda-ndays-to-span (n) "Return a span symbol for a span of N days, or N if none matches." (cond ((symbolp n) n) @@ -4328,6 +4442,52 @@ in `org-agenda-text-search-extra-files'." (org-agenda-finalize) (setq buffer-read-only t)))) +(autoload 'org-search-view "org-agenda" "\ +Show all entries that contain a phrase or words or regular expressions. + +With optional prefix argument TODO-ONLY, only consider entries that are +TODO entries. The argument STRING can be used to pass a default search +string into this function. If EDIT-AT is non-nil, it means that the +user should get a chance to edit this string, with cursor at position +EDIT-AT. + +The search string can be viewed either as a phrase that should be found as +is, or it can be broken into a number of snippets, each of which must match +in a Boolean way to select an entry. The default depends on the variable +`org-agenda-search-view-always-boolean'. +Even if this is turned off (the default) you can always switch to +Boolean search dynamically by preceding the first word with \"+\" or \"-\". + +The default is a direct search of the whole phrase, where each space in +the search string can expand to an arbitrary amount of whitespace, +including newlines. + +If using a Boolean search, the search string is split on whitespace and +each snippet is searched separately, with logical AND to select an entry. +Words prefixed with a minus must *not* occur in the entry. Words without +a prefix or prefixed with a plus must occur in the entry. Matching is +case-insensitive. Words are enclosed by word delimiters (i.e. they must +match whole words, not parts of a word) if +`org-agenda-search-view-force-full-words' is set (default is nil). + +Boolean search snippets enclosed by curly braces are interpreted as +regular expressions that must or (when preceded with \"-\") must not +match in the entry. Snippets enclosed into double quotes will be taken +as a whole, to include whitespace. + +- If the search string starts with an asterisk, search only in headlines. +- If (possibly after the leading star) the search string starts with an + exclamation mark, this also means to look at TODO entries only, an effect + that can also be achieved with a prefix argument. +- If (possibly after star and exclamation mark) the search string starts + with a colon, this will mean that the (non-regexp) snippets of the + Boolean search must match as full words. + +This command searches the agenda files, and in addition the files listed +in `org-agenda-text-search-extra-files'. + +\(fn &optional TODO-ONLY STRING EDIT-AT)" t nil) + ;;; Agenda TODO list (defvar org-select-this-todo-keyword nil) @@ -4418,6 +4578,15 @@ for a keyword. A numeric prefix directly selects the Nth keyword in (org-agenda-finalize) (setq buffer-read-only t)))) +(autoload 'org-todo-list "org-agenda" "\ +Show all (not done) TODO entries from all agenda file in a single list. +The prefix arg can be used to select a specific TODO keyword and limit +the list to these. When using \\[universal-argument], you will be prompted +for a keyword. A numeric prefix directly selects the Nth keyword in +`org-todo-keywords-1'. + +\(fn &optional ARG)" t nil) + ;;; Agenda tags match ;;;###autoload @@ -4503,6 +4672,12 @@ The prefix arg TODO-ONLY limits the search to TODO entries." (org-agenda-finalize) (setq buffer-read-only t)))) +(autoload 'org-tags-view "org-agenda" "\ +Show all headlines for all `org-agenda-files' matching a TAGS criterion. +The prefix arg TODO-ONLY limits the search to TODO entries. + +\(fn &optional TODO-ONLY MATCH)" t nil) + ;;; Agenda Finding stuck projects (defvar org-agenda-skip-regexp nil @@ -4731,6 +4906,14 @@ of what a project is and how to check if it stuck, customize the variable (setq org-agenda-redo-command `(org-agenda-list-stuck-projects ,current-prefix-arg))))) +(autoload 'org-agenda-list-stuck-projects "org-agenda" "\ +Create agenda view for projects that are stuck. +Stuck projects are project that have no next actions. For the definitions +of what a project is and how to check if it stuck, customize the variable +`org-stuck-projects'. + +\(fn &rest IGNORE)" t nil) + ;;; Diary integration (defvar org-disable-agenda-to-diary nil) ;Dynamically-scoped param. @@ -4909,6 +5092,35 @@ function from a program - use `org-agenda-get-day-entries' instead." (if results (concat (org-agenda-finalize-entries results) "\n")))) +(autoload 'org-diary "org-agenda" "\ +Return diary information from org files. +This function can be used in a \"sexp\" diary entry in the Emacs calendar. +It accesses org files and extracts information from those files to be +listed in the diary. The function accepts arguments specifying what +items should be listed. For a list of arguments allowed here, see the +variable `org-agenda-entry-types'. + +The call in the diary file should look like this: + + &%%(org-diary) ~/path/to/some/orgfile.org + +Use a separate line for each org file to check. Or, if you omit the file name, +all files listed in `org-agenda-files' will be checked automatically: + + &%%(org-diary) + +If you don't give any arguments (as in the example above), the default +arguments (:deadline :scheduled :timestamp :sexp) are used. +So the example above may also be written as + + &%%(org-diary :deadline :timestamp :sexp :scheduled) + +The function expects the lisp variables `entry' and `date' to be provided +by the caller, because this is how the calendar works. Don't use this +function from a program - use `org-agenda-get-day-entries' instead. + +\(fn &rest ARGS)" nil nil) + ;;; Agenda entry finders (defun org-agenda-get-day-entries (file date &rest args) @@ -5035,7 +5247,6 @@ This function is invoked if `org-agenda-todo-ignore-deadlines', (>= days n) (<= days n)))) -;;;###autoload (defun org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item (&optional end) "Do we have a reason to ignore this TODO entry because it has a time stamp?" @@ -5098,6 +5309,11 @@ This function is invoked if `org-agenda-todo-ignore-deadlines', (match-string 1) org-agenda-todo-ignore-timestamp)) (t)))))))))) +(autoload 'org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item "org-agenda" "\ +Do we have a reason to ignore this TODO entry because it has a time stamp? + +\(fn &optional END)" nil nil) + (defconst org-agenda-no-heading-message "No heading for this item in buffer or region.") @@ -5133,12 +5349,13 @@ This function is invoked if `org-agenda-todo-ignore-deadlines', "\\|\\(<%%\\(([^>\n]+)\\)>\\)")) marker hdmarker deadlinep scheduledp clockp closedp inactivep donep tmp priority category category-pos ee txt timestr tags - b0 b3 e3 head todo-state end-of-match show-all warntime) + b0 b3 e3 head todo-state end-of-match show-all warntime habitp) (goto-char (point-min)) (while (setq end-of-match (re-search-forward regexp nil t)) (setq b0 (match-beginning 0) b3 (match-beginning 3) e3 (match-end 3) todo-state (save-match-data (ignore-errors (org-get-todo-state))) + habitp (and (functionp 'org-is-habit-p) (save-match-data (org-is-habit-p))) show-all (or (eq org-agenda-repeating-timestamp-show-all t) (member todo-state org-agenda-repeating-timestamp-show-all))) @@ -5190,7 +5407,7 @@ This function is invoked if `org-agenda-todo-ignore-deadlines', (setq txt (org-agenda-format-item (if inactivep org-agenda-inactive-leader nil) head category tags timestr - remove-re t))) + remove-re habitp))) (setq priority (org-get-priority txt)) (org-add-props txt props 'org-marker marker 'org-hd-marker hdmarker) @@ -5237,7 +5454,8 @@ This function is invoked if `org-agenda-todo-ignore-deadlines', tags (save-excursion (org-backward-heading-same-level 0) (org-get-tags-at)) todo-state (org-get-todo-state) - warntime (org-entry-get (point) "APPT_WARNTIME")) + warntime (org-entry-get (point) "APPT_WARNTIME") + extra nil) (dolist (r (if (stringp result) (list result) @@ -5848,7 +6066,7 @@ FRACTION is what fraction of the head-warning time has passed." (concat "<" start-time ">")) ((= d2 d0) (concat "<" end-time ">"))) - remove-re t)))) + remove-re)))) (org-add-props txt props 'org-marker marker 'org-hd-marker hdmarker 'type "block" 'date date @@ -7059,7 +7277,7 @@ Negative selection means regexp must not match for selection of an entry." (move-beginning-of-line 1))))) (defun org-agenda-later (arg) - "Go forward in time by thee current span. + "Go forward in time by the current span. With prefix ARG, go forward that many times the current span." (interactive "p") (org-agenda-check-type t 'agenda) @@ -7071,7 +7289,7 @@ With prefix ARG, go forward that many times the current span." greg2) (cond ((numberp span) - (setq sd (+ span sd))) + (setq sd (+ (* span arg) sd))) ((eq span 'day) (setq sd (+ arg sd))) ((eq span 'week) @@ -8654,7 +8872,6 @@ When `org-agenda-diary-file' points to a file, `org-agenda-diary-entry-in-org-file' is called instead to create entries in that Org-mode file." (interactive) - (org-agenda-check-type t 'agenda 'timeline) (if (not (eq org-agenda-diary-file 'diary-file)) (org-agenda-diary-entry-in-org-file) (require 'diary-lib) @@ -8765,6 +8982,12 @@ This is a command that has to be installed in `calendar-mode-map'." (calendar-cursor-to-date)) nil)) +(autoload 'org-calendar-goto-agenda "org-agenda" "\ +Compute the Org-mode agenda for the calendar date displayed at the cursor. +This is a command that has to be installed in `calendar-mode-map'. + +\(fn)" t nil) + (defun org-agenda-convert-date () (interactive) (org-agenda-check-type t 'agenda 'timeline) @@ -9207,6 +9430,40 @@ to override `appt-message-warning-time'." (message "No event to add") (message "Added %d event%s for today" cnt (if (> cnt 1) "s" ""))))) +(autoload 'org-agenda-to-appt "org-agenda" "\ +Activate appointments found in `org-agenda-files'. +With a \\[universal-argument] prefix, refresh the list of +appointments. + +If FILTER is t, interactively prompt the user for a regular +expression, and filter out entries that don't match it. + +If FILTER is a string, use this string as a regular expression +for filtering entries out. + +If FILTER is a function, filter out entries against which +calling the function returns nil. This function takes one +argument: an entry from `org-agenda-get-day-entries'. + +FILTER can also be an alist with the car of each cell being +either 'headline or 'category. For example: + + '((headline \"IMPORTANT\") + (category \"Work\")) + +will only add headlines containing IMPORTANT or headlines +belonging to the \"Work\" category. + +ARGS are symbols indicating what kind of entries to consider. +By default `org-agenda-to-appt' will use :deadline, :scheduled +and :timestamp entries. See the docstring of `org-diary' for +details and examples. + +If an entry as a APPT_WARNTIME property, its value will be used +to override `appt-message-warning-time'. + +\(fn &optional REFRESH FILTER &rest ARGS)" t nil) + (defun org-agenda-todayp (date) "Does DATE mean today, when considering `org-extend-today-until'?" (let ((today (org-today)) diff --git a/lisp/org/org-archive.el b/lisp/org/org-archive.el index 29b883824ef..d41a1d38a89 100644 --- a/lisp/org/org-archive.el +++ b/lisp/org/org-archive.el @@ -181,6 +181,7 @@ if LOCATION is not given, the value of `org-archive-location' is used." (file-name-nondirectory (buffer-file-name (buffer-base-buffer)))))) +;;;###autoload (defun org-archive-subtree (&optional find-done) "Move the current subtree to the archive. The archive can be a certain top-level heading in the current file, or in @@ -369,6 +370,7 @@ this heading." (if (looking-at "^[ \t]*$") (outline-next-visible-heading 1)))) +;;;###autoload (defun org-archive-to-archive-sibling () "Archive the current heading by moving it under the archive sibling. The archive sibling is a sibling of the heading with the heading name @@ -483,6 +485,7 @@ When TAG is non-nil, don't move trees, but mark them with the ARCHIVE tag." (goto-char end))))) (message "%d trees archived" cntarch))) +;;;###autoload (defun org-toggle-archive-tag (&optional find-done) "Toggle the archive tag for the current headline. With prefix ARG, check all children of current headline and offer tagging @@ -537,4 +540,8 @@ This command is set with the variable `org-archive-default-command'." (provide 'org-archive) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-archive.el ends here diff --git a/lisp/org/org-ascii.el b/lisp/org/org-ascii.el index 655b8db668d..575b830f2c0 100644 --- a/lisp/org/org-ascii.el +++ b/lisp/org/org-ascii.el @@ -553,6 +553,7 @@ publishing directory." (kill-buffer (current-buffer))) (current-buffer)))) +;;;###autoload (defun org-export-ascii-preprocess (parameters) "Do extra work for ASCII export." ;; @@ -726,4 +727,8 @@ publishing directory." (provide 'org-ascii) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-ascii.el ends here diff --git a/lisp/org/org-attach.el b/lisp/org/org-attach.el index e02d7e07a4c..25bd6e89d97 100644 --- a/lisp/org/org-attach.el +++ b/lisp/org/org-attach.el @@ -451,4 +451,8 @@ prefix." (provide 'org-attach) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-attach.el ends here diff --git a/lisp/org/org-bbdb.el b/lisp/org/org-bbdb.el index be395ad3927..0fcf27565d5 100644 --- a/lisp/org/org-bbdb.el +++ b/lisp/org/org-bbdb.el @@ -338,7 +338,7 @@ This is used by Org to re-create the anniversary hash table." (add-hook 'bbdb-after-change-hook 'org-bbdb-updated) ;;;###autoload -(defun org-bbdb-anniversaries() +(defun org-bbdb-anniversaries () "Extract anniversaries from BBDB for display in the agenda." (require 'bbdb) (require 'diary-lib) @@ -433,4 +433,8 @@ END:VEVENT\n" (provide 'org-bbdb) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-bbdb.el ends here diff --git a/lisp/org/org-beamer.el b/lisp/org/org-beamer.el index b5f3013e000..73d15416e60 100644 --- a/lisp/org/org-beamer.el +++ b/lisp/org/org-beamer.el @@ -228,7 +228,7 @@ the tag does not have any semantic meaning." (org-entry-put nil "BEAMER_env" (match-string 1 tags))) (t (org-entry-delete nil "BEAMER_env")))))) - +;;;###autoload (defun org-beamer-sectioning (level text) "Return the sectioning entry for the current headline. LEVEL is the reduced level of the headline. @@ -370,6 +370,7 @@ org-beamer-extra are all scoped into this function dynamically." "The keymap for `org-beamer-mode'.") (define-key org-beamer-mode-map "\C-c\C-b" 'org-beamer-select-environment) +;;;###autoload (define-minor-mode org-beamer-mode "Special support for editing Org-mode files made to export to beamer." nil " Bm" nil) diff --git a/lisp/org/org-capture.el b/lisp/org/org-capture.el index 9d20814a2ca..1dfffc6fe1d 100644 --- a/lisp/org/org-capture.el +++ b/lisp/org/org-capture.el @@ -434,9 +434,10 @@ Turning on this mode runs the normal hook `org-capture-mode-hook'." ;;; The main commands -;;;###autoload (defvar org-capture-initial nil) (defvar org-capture-entry nil) + +;;;###autoload (defun org-capture-string (string &optional keys) (interactive "sInitial text: \n") (let ((org-capture-initial string) @@ -1249,7 +1250,8 @@ Of course, if exact position has been required, just put it there." (save-restriction (widen) (goto-char pos) - (bookmark-set "org-capture-last-stored") + (with-demoted-errors + (bookmark-set "org-capture-last-stored")) (move-marker org-capture-last-stored-marker (point))))))) (defun org-capture-narrow (beg end) @@ -1280,7 +1282,7 @@ Point will remain at the first line after the inserted text." (goto-char pos))) (defvar org-clock-marker) ; Defined in org.el -;;;###autoload + (defun org-capture-insert-template-here () (let* ((template (org-capture-get :template)) (type (org-capture-get :type)) diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el index bb6f2b955b3..3f252fd8c32 100644 --- a/lisp/org/org-clock.el +++ b/lisp/org/org-clock.el @@ -201,7 +201,10 @@ file name play this sound file. If not possible, fall back to beep" (const :tag "Standard beep" t) (file :tag "Play sound file"))) -(defcustom org-clock-modeline-total 'auto +(define-obsolete-variable-alias 'org-clock-modeline-total + 'org-clock-mode-line-total "24.3") + +(defcustom org-clock-mode-line-total 'auto "Default setting for the time included for the mode line clock. This can be overruled locally using the CLOCK_MODELINE_TOTAL property. Allowed values are: @@ -962,6 +965,7 @@ to be CLOCKED OUT."))) (not (memq ch '(?K ?G ?S ?C)))) fail-quietly))))) +;;;###autoload (defun org-resolve-clocks (&optional only-dangling-p prompt-fn last-valid) "Resolve all currently open org-mode clocks. If `only-dangling-p' is non-nil, only ask to resolve dangling @@ -1059,6 +1063,8 @@ so long." (setq org-clock-current-task nil)) (defvar org-clock-out-time nil) ; store the time of the last clock-out + +;;;###autoload (defun org-clock-in (&optional select start-time) "Start the clock on the current item. If necessary, clock-out of the currently active clock. @@ -1132,7 +1138,6 @@ make this the default behavior.)" (if (and (eobp) (not (org-at-heading-p))) (point-at-bol 0) (point))) - (run-hooks 'org-clock-in-prepare-hook) (save-excursion (when (and selected-task (marker-buffer selected-task)) ;; There is a selected task, move to the correct buffer @@ -1151,6 +1156,7 @@ make this the default behavior.)" ;; beginning of the heading, since the ;; user is liking to insert stuff here ;; manually + (run-hooks 'org-clock-in-prepare-hook) (org-clock-history-push)) (org-clock-set-current) (cond ((functionp org-clock-in-switch-to-state) @@ -1310,10 +1316,10 @@ for a todo state to switch to, overriding the existing value This is for the currently running clock as it is displayed in the mode line. This function looks at the properties LAST_REPEAT and in particular CLOCK_MODELINE_TOTAL and the -corresponding variable `org-clock-modeline-total' and then +corresponding variable `org-clock-mode-line-total' and then decides which time to use." (let ((cmt (or (org-entry-get nil "CLOCK_MODELINE_TOTAL") - (symbol-name org-clock-modeline-total))) + (symbol-name org-clock-mode-line-total))) (lr (org-entry-get nil "LAST_REPEAT"))) (cond ((equal cmt "current") @@ -1428,6 +1434,7 @@ line and position cursor in that line." (and (re-search-forward org-property-end-re nil t) (goto-char (match-beginning 0)))))))) +;;;###autoload (defun org-clock-out (&optional switch-to-state fail-quietly at-time) "Stop the currently running clock. Throw an error if there is no running clock and FAIL-QUIETLY is nil. @@ -1587,6 +1594,7 @@ UPDOWN tells whether to change 'up or 'down." ((eq org-ts-what 'year) (* 24 3600 365.2))))) org-ts-what 'updown))))))) +;;;###autoload (defun org-clock-cancel () "Cancel the running clock by removing the start timestamp." (interactive) @@ -1613,6 +1621,7 @@ UPDOWN tells whether to change 'up or 'down." (message "Clock canceled") (run-hooks 'org-clock-cancel-hook)) +;;;###autoload (defun org-clock-goto (&optional select) "Go to the currently clocked-in entry, or to the most recently clocked one. With prefix arg SELECT, offer recently clocked tasks for selection." @@ -1651,6 +1660,7 @@ With prefix arg SELECT, offer recently clocked tasks for selection." (let ((range (org-clock-special-range 'today))) (org-clock-sum (car range) (cadr range) nil :org-clock-minutes-today))) +;;;###autoload (defun org-clock-sum (&optional tstart tend headline-filter propname) "Sum the times for each subtree. Puts the resulting times in minutes as a text property on each headline. @@ -1749,6 +1759,7 @@ PROPNAME lets you set a custom text property instead of :org-clock-minutes." (org-clock-sum tstart) org-clock-file-total-minutes))) +;;;###autoload (defun org-clock-display (&optional total-only) "Show subtree times in the entire buffer. If TOTAL-ONLY is non-nil, only show the total time for the entire file @@ -1859,7 +1870,7 @@ and is only done if the variable `org-clock-out-when-done' is not nil." 'org-clock-out-if-current) ;;;###autoload -(defun org-get-clocktable (&rest props) +(defun org-clock-get-clocktable (&rest props) "Get a formatted clocktable with parameters according to PROPS. The table is created in a temporary buffer, fully formatted and fontified, and then returned." @@ -1879,6 +1890,7 @@ fontified, and then returned." (re-search-forward "^[ \t]*#\\+END" nil t) (point-at-bol))))) +;;;###autoload (defun org-clock-report (&optional arg) "Create a table containing a report about clocked time. If the cursor is inside an existing clocktable block, then the table @@ -2165,6 +2177,7 @@ the currently selected interval size." (org-update-dblock) t))))) +;;;###autoload (defun org-dblock-write:clocktable (params) "Write the standard clocktable." (setq params (org-combine-plists org-clocktable-defaults params)) @@ -2675,6 +2688,48 @@ This function is made for clock tables." (defvar org-clock-loaded nil "Was the clock file loaded?") +(defun org-clock-update-time-maybe () + "If this is a CLOCK line, update it and return t. +Otherwise, return nil." + (interactive) + (save-excursion + (beginning-of-line 1) + (skip-chars-forward " \t") + (when (looking-at org-clock-string) + (let ((re (concat "[ \t]*" org-clock-string + " *[[<]\\([^]>]+\\)[]>]\\(-+[[<]\\([^]>]+\\)[]>]" + "\\([ \t]*=>.*\\)?\\)?")) + ts te h m s neg) + (cond + ((not (looking-at re)) + nil) + ((not (match-end 2)) + (when (and (equal (marker-buffer org-clock-marker) (current-buffer)) + (> org-clock-marker (point)) + (<= org-clock-marker (point-at-eol))) + ;; The clock is running here + (setq org-clock-start-time + (apply 'encode-time + (org-parse-time-string (match-string 1)))) + (org-clock-update-mode-line))) + (t + (and (match-end 4) (delete-region (match-beginning 4) (match-end 4))) + (end-of-line 1) + (setq ts (match-string 1) + te (match-string 3)) + (setq s (- (org-float-time + (apply 'encode-time (org-parse-time-string te))) + (org-float-time + (apply 'encode-time (org-parse-time-string ts)))) + neg (< s 0) + s (abs s) + h (floor (/ s 3600)) + s (- s (* 3600 h)) + m (floor (/ s 60)) + s (- s (* 60 s))) + (insert " => " (format (if neg "-%d:%02d" "%2d:%02d") h m)) + t)))))) + (defun org-clock-save () "Persist various clock-related data to disk. The details of what will be saved are regulated by the variable @@ -2766,15 +2821,13 @@ The details of what will be saved are regulated by the variable (if (outline-invisible-p) (org-show-context)))))))))) -;;;###autoload -(defun org-clock-persistence-insinuate () - "Set up hooks for clock persistence." - (add-hook 'org-mode-hook 'org-clock-load) - (add-hook 'kill-emacs-hook 'org-clock-save)) - ;; Suggested bindings (org-defkey org-mode-map "\C-c\C-x\C-e" 'org-clock-modify-effort-estimate) (provide 'org-clock) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-clock.el ends here diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el index e17210b7ff5..1be105d44fb 100644 --- a/lisp/org/org-colview.el +++ b/lisp/org/org-colview.el @@ -686,6 +686,7 @@ around it." (move-marker org-columns-top-level-marker org-entry-property-inherited-from) (move-marker org-columns-top-level-marker (point)))) +;;;###autoload (defun org-columns (&optional columns-fmt-string) "Turn on column view on an org-mode file. When COLUMNS-FMT-STRING is non-nil, use it as the column format." @@ -1222,6 +1223,7 @@ of fields." (push row tbl))))) (append (list title 'hline) (nreverse tbl))))) +;;;###autoload (defun org-dblock-write:columnview (params) "Write the column view table. PARAMS is a property list of parameters: @@ -1334,6 +1336,7 @@ and tailing newline characters." (t (error "Garbage in listtable: %s" x)))) tbl "\n")) +;;;###autoload (defun org-insert-columns-dblock () "Create a dynamic block capturing a column view table." (interactive) @@ -1357,6 +1360,7 @@ and tailing newline characters." (defvar org-agenda-columns-compute-summary-properties); defined in org-agenda.el (defvar org-agenda-columns-add-appointments-to-effort-sum); as well +;;;###autoload (defun org-agenda-columns () "Turn on or update column view in the agenda." (interactive) diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el index 76042849663..6e582b8c1d6 100644 --- a/lisp/org/org-compat.el +++ b/lisp/org/org-compat.el @@ -327,7 +327,7 @@ Works on both Emacs and XEmacs." (apply 'propertize string properties))) (defmacro org-find-library-dir (library) - `(file-name-directory (locate-library ,library))) + `(file-name-directory (or (locate-library ,library) ""))) (defun org-count-lines (s) "How many lines in string S?" diff --git a/lisp/org/org-datetree.el b/lisp/org/org-datetree.el index 4ff8e7d00d0..a2b2e5621da 100644 --- a/lisp/org/org-datetree.el +++ b/lisp/org/org-datetree.el @@ -207,4 +207,8 @@ before running this command, even though the command tries to be smart." (provide 'org-datetree) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-datetree.el ends here diff --git a/lisp/org/org-docbook.el b/lisp/org/org-docbook.el index 22cc5a7cdac..a40d5b969f3 100644 --- a/lisp/org/org-docbook.el +++ b/lisp/org/org-docbook.el @@ -1451,4 +1451,8 @@ the alist of previous items." (provide 'org-docbook) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-docbook.el ends here diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el index 8b44d4936f5..5da2dec3fb3 100644 --- a/lisp/org/org-element.el +++ b/lisp/org/org-element.el @@ -478,7 +478,7 @@ containing `:begin', `:end', `:hiddenp', `:contents-begin', Assume point is at the beginning of the block." (let ((case-fold-search t)) (if (not (save-excursion - (re-search-forward "^[ \t]*#\\+END_CENTER" limit t))) + (re-search-forward "^[ \t]*#\\+END_CENTER[ \t]*$" limit t))) ;; Incomplete block: parse it as a paragraph. (org-element-paragraph-parser limit) (let ((block-end-line (match-beginning 0))) @@ -494,7 +494,8 @@ Assume point is at the beginning of the block." (forward-line) (point))) (end (save-excursion (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'center-block (nconc (list :begin begin @@ -524,7 +525,7 @@ Return a list whose CAR is `drawer' and CDR is a plist containing Assume point is at beginning of drawer." (let ((case-fold-search t)) - (if (not (save-excursion (re-search-forward "^[ \t]*:END:" limit t))) + (if (not (save-excursion (re-search-forward "^[ \t]*:END:[ \t]*$" limit t))) ;; Incomplete drawer: parse it as a paragraph. (org-element-paragraph-parser limit) (let ((drawer-end-line (match-beginning 0))) @@ -544,7 +545,8 @@ Assume point is at beginning of drawer." (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'drawer (nconc (list :begin begin @@ -578,7 +580,8 @@ containing `:block-name', `:begin', `:end', `:hiddenp', Assume point is at beginning of dynamic block." (let ((case-fold-search t)) - (if (not (save-excursion (re-search-forward org-dblock-end-re limit t))) + (if (not (save-excursion + (re-search-forward "^[ \t]*#\\+END:?[ \t]*$" limit t))) ;; Incomplete block: parse it as a paragraph. (org-element-paragraph-parser limit) (let ((block-end-line (match-beginning 0))) @@ -598,7 +601,8 @@ Assume point is at beginning of dynamic block." (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'dynamic-block (nconc (list :begin begin @@ -653,7 +657,8 @@ Assume point is at the beginning of the footnote definition." (contents-end (and contents-begin ending)) (end (progn (goto-char ending) (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'footnote-definition (nconc (list :label label @@ -904,7 +909,8 @@ Assume point is at beginning of the inline task." (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol)))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position)))) (inlinetask (list 'inlinetask (nconc @@ -1108,7 +1114,8 @@ Assume point is at the beginning of the list." (unless (bolp) (forward-line)) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) ;; Return value. (list 'plain-list (nconc @@ -1145,7 +1152,7 @@ containing `:begin', `:end', `:hiddenp', `:contents-begin', Assume point is at the beginning of the block." (let ((case-fold-search t)) (if (not (save-excursion - (re-search-forward "^[ \t]*#\\+END_QUOTE" limit t))) + (re-search-forward "^[ \t]*#\\+END_QUOTE[ \t]*$" limit t))) ;; Incomplete block: parse it as a paragraph. (org-element-paragraph-parser limit) (let ((block-end-line (match-beginning 0))) @@ -1162,7 +1169,8 @@ Assume point is at the beginning of the block." (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'quote-block (nconc (list :begin begin @@ -1227,7 +1235,8 @@ Assume point is at the beginning of the block." (type (progn (looking-at "[ \t]*#\\+BEGIN_\\(S-+\\)") (upcase (match-string-no-properties 1))))) (if (not (save-excursion - (re-search-forward (concat "^[ \t]*#\\+END_" type) limit t))) + (re-search-forward + (format "^[ \t]*#\\+END_%s[ \t]*$" type) limit t))) ;; Incomplete block: parse it as a paragraph. (org-element-paragraph-parser limit) (let ((block-end-line (match-beginning 0))) @@ -1243,8 +1252,9 @@ Assume point is at the beginning of the block." (pos-before-blank (progn (goto-char block-end-line) (forward-line) (point))) - (end (progn (org-skip-whitespace) - (if (eobp) (point) (point-at-bol))))) + (end (progn (skip-chars-forward " \r\t\n" limit) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'special-block (nconc (list :type type @@ -1295,7 +1305,8 @@ keywords." (begin (point-at-bol)) (pos-before-blank (progn (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'babel-call (list :begin begin :end end @@ -1338,7 +1349,8 @@ as keywords." (status (if time 'closed 'running)) (post-blank (let ((before-blank (progn (forward-line) (point)))) (skip-chars-forward " \r\t\n" limit) - (unless (eobp) (beginning-of-line)) + (skip-chars-backward " \t") + (unless (bolp) (end-of-line)) (count-lines before-blank (point)))) (end (point))) (list 'clock @@ -1396,7 +1408,8 @@ Assume point is at comment beginning." (point))) (end (progn (goto-char com-end) (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'comment (nconc (list :begin begin @@ -1425,7 +1438,7 @@ containing `:begin', `:end', `:hiddenp', `:value' and Assume point is at comment block beginning." (let ((case-fold-search t)) (if (not (save-excursion - (re-search-forward "^[ \t]*#\\+END_COMMENT" limit t))) + (re-search-forward "^[ \t]*#\\+END_COMMENT[ \t]*$" limit t))) ;; Incomplete block: parse it as a paragraph. (org-element-paragraph-parser limit) (let ((contents-end (match-beginning 0))) @@ -1438,7 +1451,8 @@ Assume point is at comment block beginning." (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol)))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position)))) (value (buffer-substring-no-properties contents-begin contents-end))) (list 'comment-block @@ -1470,7 +1484,7 @@ containing `:begin', `:end', `:number-lines', `:preserve-indent', `:switches', `:value' and `:post-blank' keywords." (let ((case-fold-search t)) (if (not (save-excursion - (re-search-forward "^[ \t]*#\\+END_EXAMPLE" limit t))) + (re-search-forward "^[ \t]*#\\+END_EXAMPLE[ \t]*$" limit t))) ;; Incomplete block: parse it as a paragraph. (org-element-paragraph-parser limit) (let ((contents-end (match-beginning 0))) @@ -1502,12 +1516,15 @@ containing `:begin', `:end', `:number-lines', `:preserve-indent', (begin (car keywords)) (contents-begin (progn (forward-line) (point))) (hidden (org-invisible-p2)) - (value (buffer-substring-no-properties contents-begin contents-end)) + (value (org-unescape-code-in-string + (buffer-substring-no-properties + contents-begin contents-end))) (pos-before-blank (progn (goto-char contents-end) (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'example-block (nconc (list :begin begin @@ -1529,7 +1546,8 @@ CONTENTS is nil." (let ((switches (org-element-property :switches example-block))) (concat "#+BEGIN_EXAMPLE" (and switches (concat " " switches)) "\n" (org-remove-indentation - (org-element-property :value example-block)) + (org-escape-code-in-string + (org-element-property :value example-block))) "#+END_EXAMPLE"))) @@ -1549,7 +1567,8 @@ Assume point is at export-block beginning." (type (progn (looking-at "[ \t]*#\\+BEGIN_\\(\\S-+\\)") (upcase (org-match-string-no-properties 1))))) (if (not (save-excursion - (re-search-forward (concat "^[ \t]*#\\+END_" type) limit t))) + (re-search-forward + (format "^[ \t]*#\\+END_%s[ \t]*$" type) limit t))) ;; Incomplete block: parse it as a paragraph. (org-element-paragraph-parser limit) (let ((contents-end (match-beginning 0))) @@ -1562,7 +1581,8 @@ Assume point is at export-block beginning." (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol)))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position)))) (value (buffer-substring-no-properties contents-begin contents-end))) (list 'export-block @@ -1612,7 +1632,8 @@ Assume point is at the beginning of the fixed-width area." (forward-line)) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'fixed-width (nconc (list :begin begin @@ -1642,7 +1663,8 @@ containing `:begin', `:end' and `:post-blank' keywords." (begin (car keywords)) (post-hr (progn (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'horizontal-rule (nconc (list :begin begin @@ -1675,7 +1697,8 @@ keywords." (match-end 0) (point-at-eol)))) (pos-before-blank (progn (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'keyword (list :key key :value value @@ -1711,12 +1734,14 @@ Assume point is at the beginning of the latex environment." (env (progn (looking-at "^[ \t]*\\\\begin{\\([A-Za-z0-9]+\\*?\\)}") (regexp-quote (match-string 1)))) (code-end - (progn (re-search-forward (format "^[ \t]*\\\\end{%s}" env) limit t) + (progn (re-search-forward + (format "^[ \t]*\\\\end{%s}[ \t]*$" env) limit t) (forward-line) (point))) (value (buffer-substring-no-properties code-begin code-end)) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'latex-environment (nconc (list :begin begin @@ -1744,69 +1769,80 @@ containing `:begin', `:end', `:contents-begin' and Assume point is at the beginning of the paragraph." (save-excursion - (let* (;; INNER-PAR-P is non-nil when paragraph is at the + (let* ((contents-begin (point)) + ;; INNER-PAR-P is non-nil when paragraph is at the ;; beginning of an item or a footnote reference. In that ;; case, we mustn't look for affiliated keywords since they ;; belong to the container. (inner-par-p (not (bolp))) - (contents-begin (point)) (keywords (unless inner-par-p (org-element--collect-affiliated-keywords))) (begin (if inner-par-p contents-begin (car keywords))) (before-blank (let ((case-fold-search t)) (end-of-line) - (re-search-forward org-element-paragraph-separate limit 'm) - (while (and (/= (point) limit) - (cond - ;; Skip non-existent or incomplete drawer. - ((save-excursion - (beginning-of-line) - (and (looking-at "[ \t]*:\\S-") - (or (not (looking-at org-drawer-regexp)) - (not (save-excursion - (re-search-forward - "^[ \t]*:END:" limit t))))))) - ;; Stop at comments. - ((save-excursion - (beginning-of-line) - (not (looking-at "[ \t]*#\\S-"))) nil) - ;; Skip incomplete dynamic blocks. - ((save-excursion - (beginning-of-line) - (looking-at "[ \t]*#\\+BEGIN: ")) - (not (save-excursion - (re-search-forward - "^[ \t]*\\+END:" limit t)))) - ;; Skip incomplete blocks. - ((save-excursion - (beginning-of-line) - (looking-at "[ \t]*#\\+BEGIN_\\(\\S-+\\)")) - (not (save-excursion - (re-search-forward - (concat "^[ \t]*#\\+END_" - (match-string 1)) - limit t)))) - ;; Skip incomplete latex environments. - ((save-excursion - (beginning-of-line) - (looking-at "^[ \t]*\\\\begin{\\([A-Za-z0-9]+\\*?\\)}")) - (not (save-excursion - (re-search-forward - (format "^[ \t]*\\\\end{%s}" - (match-string 1)) - limit t)))) - ;; Skip ill-formed keywords. - ((not (save-excursion - (beginning-of-line) - (looking-at "[ \t]*#\\+\\S-+:")))))) - (re-search-forward org-element-paragraph-separate limit 'm)) - (if (eobp) (point) (goto-char (line-beginning-position))))) + (if (not (re-search-forward + org-element-paragraph-separate limit 'm)) + limit + ;; A matching `org-element-paragraph-separate' is not + ;; necessarily the end of the paragraph. In + ;; particular, lines starting with # or : as a first + ;; non-space character are ambiguous. We have check + ;; if they are valid Org syntax (i.e. not an + ;; incomplete keyword). + (beginning-of-line) + (while (not + (or + ;; There's no ambiguity for other symbols or + ;; empty lines: stop here. + (looking-at "[ \t]*\\(?:[^:#]\\|$\\)") + ;; Stop at valid fixed-width areas. + (looking-at "[ \t]*:\\(?: \\|$\\)") + ;; Stop at drawers. + (and (looking-at org-drawer-regexp) + (save-excursion + (re-search-forward + "^[ \t]*:END:[ \t]*$" limit t))) + ;; Stop at valid comments. + (looking-at "[ \t]*#\\(?: \\|$\\)") + ;; Stop at valid dynamic blocks. + (and (looking-at org-dblock-start-re) + (save-excursion + (re-search-forward + "^[ \t]*#\\+END:?[ \t]*$" limit t))) + ;; Stop at valid blocks. + (and (looking-at + "[ \t]*#\\+BEGIN_\\(\\S-+\\)") + (save-excursion + (re-search-forward + (format "^[ \t]*#\\+END_%s[ \t]*$" + (match-string 1)) + limit t))) + ;; Stop at valid latex environments. + (and (looking-at + "^[ \t]*\\\\begin{\\([A-Za-z0-9]+\\*?\\)}[ \t]*$") + (save-excursion + (re-search-forward + (format "^[ \t]*\\\\end{%s}[ \t]*$" + (match-string 1)) + limit t))) + ;; Stop at valid keywords. + (looking-at "[ \t]*#\\+\\S-+:") + ;; Skip everything else. + (not + (progn + (end-of-line) + (re-search-forward org-element-paragraph-separate + limit 'm))))) + (beginning-of-line))) + (if (= (point) limit) limit + (goto-char (line-beginning-position))))) (contents-end (progn (skip-chars-backward " \r\t\n" contents-begin) (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'paragraph (nconc (list :begin begin @@ -1837,7 +1873,8 @@ and `:post-blank' keywords." (begin (point)) (post-blank (let ((before-blank (progn (forward-line) (point)))) (skip-chars-forward " \r\t\n" limit) - (unless (eobp) (beginning-of-line)) + (skip-chars-backward " \t") + (unless (bolp) (end-of-line)) (count-lines before-blank (point)))) (end (point)) closed deadline scheduled) @@ -1895,7 +1932,7 @@ Assume point is at the beginning of the property drawer." (hidden (org-invisible-p2)) (properties (let (val) - (while (not (looking-at "^[ \t]*:END:")) + (while (not (looking-at "^[ \t]*:END:[ \t]*$")) (when (looking-at "[ \t]*:\\([A-Za-z][-_A-Za-z0-9]*\\):") (push (cons (org-match-string-no-properties 1) (org-trim @@ -1908,7 +1945,8 @@ Assume point is at the beginning of the property drawer." (point-at-bol))) (pos-before-blank (progn (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'property-drawer (list :begin begin :end end @@ -1974,7 +2012,8 @@ containing `:language', `:switches', `:parameters', `:begin', Assume point is at the beginning of the block." (let ((case-fold-search t)) - (if (not (save-excursion (re-search-forward "^[ \t]*#\\+END_SRC" limit t))) + (if (not (save-excursion (re-search-forward "^[ \t]*#\\+END_SRC[ \t]*$" + limit t))) ;; Incomplete block: parse it as a paragraph. (org-element-paragraph-parser limit) (let ((contents-end (match-beginning 0))) @@ -2017,13 +2056,15 @@ Assume point is at the beginning of the block." ;; Get visibility status. (hidden (progn (forward-line) (org-invisible-p2))) ;; Retrieve code. - (value (buffer-substring-no-properties (point) contents-end)) + (value (org-unescape-code-in-string + (buffer-substring-no-properties (point) contents-end))) (pos-before-blank (progn (goto-char contents-end) (forward-line) (point))) ;; Get position after ending blank lines. (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'src-block (nconc (list :language language @@ -2051,7 +2092,6 @@ CONTENTS is nil." (params (org-element-property :parameters src-block)) (value (let ((val (org-element-property :value src-block))) (cond - (org-src-preserve-indentation val) ((zerop org-edit-src-content-indentation) (org-remove-indentation val)) @@ -2065,7 +2105,7 @@ CONTENTS is nil." (concat (and lang (concat " " lang)) (and switches (concat " " switches)) (and params (concat " " params)))) - value + (org-escape-code-in-string value) "#+END_SRC"))) @@ -2087,7 +2127,10 @@ Assume point is at the beginning of the table." (type (if (org-at-table.el-p) 'table.el 'org)) (keywords (org-element--collect-affiliated-keywords)) (begin (car keywords)) - (table-end (goto-char (marker-position (org-table-end t)))) + (table-end + (if (re-search-forward org-table-any-border-regexp limit 'm) + (goto-char (match-beginning 0)) + (point))) (tblfm (let (acc) (while (looking-at "[ \t]*#\\+TBLFM: +\\(.*\\)[ \t]*$") (push (org-match-string-no-properties 1) acc) @@ -2095,7 +2138,8 @@ Assume point is at the beginning of the table." acc)) (pos-before-blank (point)) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'table (nconc (list :begin begin @@ -2179,7 +2223,7 @@ containing `:begin', `:end', `:contents-begin', `:contents-end', Assume point is at beginning of the block." (let ((case-fold-search t)) (if (not (save-excursion - (re-search-forward "^[ \t]*#\\+END_VERSE" limit t))) + (re-search-forward "^[ \t]*#\\+END_VERSE[ \t]*$" limit t))) ;; Incomplete block: parse it as a paragraph. (org-element-paragraph-parser limit) (let ((contents-end (match-beginning 0))) @@ -2192,7 +2236,8 @@ Assume point is at beginning of the block." (forward-line) (point))) (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (point-at-bol))))) + (skip-chars-backward " \t") + (if (bolp) (point) (line-end-position))))) (list 'verse-block (nconc (list :begin begin @@ -2367,6 +2412,7 @@ LIMIT bounds the search. Return value is a cons cell whose CAR is `entity' or `latex-fragment' and CDR is beginning position." (save-excursion + (unless (bolp) (backward-char)) (let ((matchers (remove "begin" (plist-get org-format-latex-options :matchers))) ;; ENTITY-RE matches both LaTeX commands and Org entities. @@ -3044,6 +3090,7 @@ LIMIT bounds the search. Return value is a cons cell whose CAR is either `subscript' or `superscript' and CDR is beginning position." (save-excursion + (unless (bolp) (backward-char)) (when (re-search-forward org-match-substring-regexp limit t) (cons (if (string= (match-string 2) "_") 'subscript 'superscript) (match-beginning 2))))) @@ -3838,6 +3885,15 @@ Return value is an alist whose CAR is position and CDR the object type, as a symbol. OBJECTS is the previous candidates alist." + ;; Filter out any object found but not belonging to RESTRICTION. + (setq objects + (org-remove-if-not + (lambda (obj) + (let ((type (car obj))) + (memq (or (cdr (assq type org-element-object-successor-alist)) + type) + restriction))) + objects)) (let (next-candidates types-to-search) ;; If no previous result, search every object type in RESTRICTION. ;; Otherwise, keep potential candidates (old objects located after @@ -4235,7 +4291,7 @@ and :post-blank properties." (progn (beginning-of-line) (skip-chars-forward "* ") (setq end (point-at-eol)))) - (and (memq type '(paragraph table-cell verse-block)) + (and (memq type '(paragraph table-row verse-block)) (let ((cbeg (org-element-property :contents-begin element)) (cend (org-element-property @@ -4254,7 +4310,7 @@ and :post-blank properties." candidates))) ;; If ORIGIN is before next object in element, there's ;; no point in looking further. - (if (> (cdr closest-cand) origin) (throw 'exit element) + (if (> (cdr closest-cand) origin) (throw 'exit parent) (let* ((object (progn (goto-char (cdr closest-cand)) (funcall (intern (format "org-element-%s-parser" @@ -4274,7 +4330,9 @@ and :post-blank properties." ;; search to the end of its contents. (t (goto-char cbeg) (org-element-put-property object :parent parent) - (setq parent object end cend))))))) + (setq parent object + restriction (org-element-restriction object) + end cend))))))) parent)))))) (defsubst org-element-nested-p (elem-A elem-B) @@ -4351,6 +4409,10 @@ end of ELEM-A." (cdr overlays))) (goto-char (org-element-property :end elem-B))))) - (provide 'org-element) + +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-element.el ends here diff --git a/lisp/org/org-exp.el b/lisp/org/org-exp.el index 6b506cd1275..a578fe70f07 100644 --- a/lisp/org/org-exp.el +++ b/lisp/org/org-exp.el @@ -48,6 +48,7 @@ (declare-function org-table-colgroup-line-p "org-table" (line)) (declare-function org-pop-to-buffer-same-window "org-compat" (&optional buffer-or-name norecord label)) +(declare-function org-unescape-code-in-region "org-src" (beg end)) (autoload 'org-export-generic "org-export-generic" "Export using the generic exporter" t) @@ -1790,7 +1791,7 @@ from the buffer." beg-content end-content `(org-protected t original-indentation ,ind org-native-text t)) ;; strip protective commas - (org-strip-protective-commas beg-content end-content) + (org-unescape-code-in-region beg-content end-content) (delete-region (match-beginning 0) (match-end 0)) (save-excursion (goto-char beg) @@ -3230,7 +3231,6 @@ Does include HTML export options as well as TODO and CATEGORY stuff." org-archive-location "org file:~/org/%s.org")) -;;;###autoload (defun org-insert-export-options-template () "Insert into the buffer a template with information for exporting." (interactive) @@ -3348,4 +3348,8 @@ The depends on the variable `org-export-copy-to-kill-ring'." (provide 'org-exp) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-exp.el ends here diff --git a/lisp/org/org-faces.el b/lisp/org/org-faces.el index 51aead1b8bb..58be52d9e28 100644 --- a/lisp/org/org-faces.el +++ b/lisp/org/org-faces.el @@ -692,13 +692,13 @@ month and 365.24 days for a year)." :group 'org-faces) (defface org-agenda-filter-tags - (org-compatible-face 'modeline + (org-compatible-face 'mode-line nil) "Face for tag(s) in the mode-line when filtering the agenda." :group 'org-faces) (defface org-agenda-filter-category - (org-compatible-face 'modeline + (org-compatible-face 'mode-line nil) "Face for tag(s) in the mode-line when filtering the agenda." :group 'org-faces) @@ -770,9 +770,9 @@ level org-n-level-faces" "Face used to highlight math latex and other special exporter stuff." :group 'org-faces) -(org-copy-face 'modeline 'org-mode-line-clock +(org-copy-face 'mode-line 'org-mode-line-clock "Face used for clock display in mode line.") -(org-copy-face 'modeline 'org-mode-line-clock-overrun +(org-copy-face 'mode-line 'org-mode-line-clock-overrun "Face used for clock display for overrun tasks in mode line." :background "red") diff --git a/lisp/org/org-feed.el b/lisp/org/org-feed.el index 91bf3347953..7724578ae58 100644 --- a/lisp/org/org-feed.el +++ b/lisp/org/org-feed.el @@ -695,4 +695,8 @@ formatted as a string, not the original XML data." (provide 'org-feed) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-feed.el ends here diff --git a/lisp/org/org-footnote.el b/lisp/org/org-footnote.el index 3aaa44b7ac3..c598965f4c7 100644 --- a/lisp/org/org-footnote.el +++ b/lisp/org/org-footnote.el @@ -948,4 +948,8 @@ If LABEL is non-nil, delete that footnote instead." (provide 'org-footnote) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-footnote.el ends here diff --git a/lisp/org/org-freemind.el b/lisp/org/org-freemind.el index a05cb554d4b..afc925d5426 100644 --- a/lisp/org/org-freemind.el +++ b/lisp/org/org-freemind.el @@ -1219,8 +1219,8 @@ PATH should be a list of steps, where each step has the form (provide 'org-freemind) - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: ;;; org-freemind.el ends here diff --git a/lisp/org/org-html.el b/lisp/org/org-html.el index 79b028638a1..a6ca2d2a03b 100644 --- a/lisp/org/org-html.el +++ b/lisp/org/org-html.el @@ -210,6 +210,7 @@ not be modified. Use the variables `org-export-html-style' to add your own style information." :group 'org-export-html :type 'boolean) + ;;;###autoload (put 'org-export-html-style-include-default 'safe-local-variable 'booleanp) @@ -2380,7 +2381,6 @@ the settings define in the org-... variables." (plist-get htmlize-buffer-places 'content-end))) (kill-buffer htmlbuf)))) -;;;###autoload (defun org-export-htmlize-generate-css () "Create the CSS for all font definitions in the current Emacs session. Use this to create face definitions in your CSS style file that can then @@ -2749,4 +2749,8 @@ the alist of previous items." (provide 'org-html) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-html.el ends here diff --git a/lisp/org/org-icalendar.el b/lisp/org/org-icalendar.el index 8523b442583..a2d2117dcb4 100644 --- a/lisp/org/org-icalendar.el +++ b/lisp/org/org-icalendar.el @@ -684,4 +684,8 @@ a time), or the day by one (if it does not contain a time)." (provide 'org-icalendar) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-icalendar.el ends here diff --git a/lisp/org/org-id.el b/lisp/org/org-id.el index c156e240dbf..f870ccc5a52 100644 --- a/lisp/org/org-id.el +++ b/lisp/org/org-id.el @@ -233,7 +233,6 @@ With optional argument FORCE, force the creation of a new ID." (org-entry-put (point) "ID" nil)) (org-id-get (point) 'create)) -;;;###autoload (defun org-id-copy () "Copy the ID of the entry at point to the kill ring. Create an ID if necessary." @@ -259,7 +258,6 @@ In any case, the ID of the entry is returned." (org-id-add-location id (buffer-file-name (buffer-base-buffer))) id))))) -;;;###autoload (defun org-id-get-with-outline-path-completion (&optional targets) "Use outline-path-completion to retrieve the ID of an entry. TARGETS may be a setting for `org-refile-targets' to define the eligible @@ -276,7 +274,6 @@ It returns the ID of the entry. If necessary, the ID is created." (prog1 (org-id-get pom 'create) (move-marker pom nil)))) -;;;###autoload (defun org-id-get-with-outline-drilling (&optional targets) "Use an outline-cycling interface to retrieve the ID of an entry. This only finds entries in the current buffer, using `org-get-location'. @@ -681,4 +678,8 @@ optional argument MARKERP, return the position as a new marker." (provide 'org-id) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-id.el ends here diff --git a/lisp/org/org-indent.el b/lisp/org/org-indent.el index d006df86747..c4d74fbb2fa 100644 --- a/lisp/org/org-indent.el +++ b/lisp/org/org-indent.el @@ -431,4 +431,8 @@ This function is meant to be called by `after-change-functions'." (provide 'org-indent) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-indent.el ends here diff --git a/lisp/org/org-install.el b/lisp/org/org-install.el index 8df78b6b68d..a31d8b79209 100644 --- a/lisp/org/org-install.el +++ b/lisp/org/org-install.el @@ -1,37 +1,13 @@ -;;; org-install.el --- Outline-based notes management and organizer -;; Carstens outline-mode for keeping track of everything. -;; Copyright (C) 2004-2012 Free Software Foundation, Inc. +;;; org-install.el --- autogenerated file, do not edit ;; -;; Author: Carsten Dominik -;; Keywords: outlines, hypermedia, calendar, wp -;; Homepage: http://orgmode.org -;; Version: 6.06b -;; -;; This file is part of GNU Emacs. -;; -;; GNU Emacs is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs. If not, see . -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Commentary: -;; -;; When Org-mode is distributed with Emacs, this is just a dummy file. -;; In an Org-mode distribution outside Emacs, this file would provide -;; the autoloads. We include this dummy version in Emacs, so that people -;; can leave a (require 'org-install) in .emacs, independently of -;; which kind of distribution they use. -;; - +;;; Code: +(warn "The file org-install is obsolete. +Please change your configuration to (require 'org) instead.") + (provide 'org-install) - + +;; Local Variables: +;; no-byte-compile: t +;; coding: utf-8 +;; End: ;;; org-install.el ends here diff --git a/lisp/org/org-irc.el b/lisp/org/org-irc.el index 787eed7950f..d31b1828ddd 100644 --- a/lisp/org/org-irc.el +++ b/lisp/org/org-irc.el @@ -252,4 +252,8 @@ default." (provide 'org-irc) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-irc.el ends here diff --git a/lisp/org/org-latex.el b/lisp/org/org-latex.el index 933fa56b8dd..9ce84f14e92 100644 --- a/lisp/org/org-latex.el +++ b/lisp/org/org-latex.el @@ -787,14 +787,14 @@ emacs --batch --load=$HOME/lib/emacs/org.el --eval \"(setq org-export-headline-levels 2)\" --visit=MyFile --funcall org-export-as-latex-batch" - (org-export-as-latex org-export-headline-levels 'hidden)) + (org-export-as-latex org-export-headline-levels)) ;;;###autoload (defun org-export-as-latex-to-buffer (arg) "Call `org-export-as-latex` with output to a temporary buffer. No file is created. The prefix ARG is passed through to `org-export-as-latex'." (interactive "P") - (org-export-as-latex arg nil nil "*Org LaTeX Export*") + (org-export-as-latex arg nil "*Org LaTeX Export*") (when org-export-show-temporary-export-buffer (switch-to-buffer-other-window "*Org LaTeX Export*"))) @@ -848,7 +848,7 @@ in a window. A non-interactive call will only return the buffer." (set-mark (point)) ;; to activate the region (goto-char beg) (setq rtn (org-export-as-latex - nil nil ext-plist + nil ext-plist buffer body-only)) (if (fboundp 'deactivate-mark) (deactivate-mark)) (if (and (org-called-interactively-p 'any) (bufferp rtn)) @@ -856,21 +856,19 @@ in a window. A non-interactive call will only return the buffer." rtn))) ;;;###autoload -(defun org-export-as-latex (arg &optional hidden ext-plist - to-buffer body-only pub-dir) +(defun org-export-as-latex (arg &optional ext-plist to-buffer body-only pub-dir) "Export current buffer to a LaTeX file. If there is an active region, export only the region. The prefix ARG specifies how many levels of the outline should become headlines. The default is 3. Lower levels will be exported depending on `org-export-latex-low-levels'. The default is to convert them as description lists. -HIDDEN is obsolete and does nothing. -EXT-PLIST is a property list with -external parameters overriding org-mode's default settings, but -still inferior to file-local settings. When TO-BUFFER is -non-nil, create a buffer with that name and export to that -buffer. If TO-BUFFER is the symbol `string', don't leave any -buffer behind but just return the resulting LaTeX as a string. +EXT-PLIST is a property list with external parameters overriding +org-mode's default settings, but still inferior to file-local settings. +When TO-BUFFER is non-nil, create a buffer with that name and export +to that buffer. If TO-BUFFER is the symbol `string', don't leave any +buffer behind and just return the resulting LaTeX as a string, with +no LaTeX header. When BODY-ONLY is set, don't produce the file header and footer, simply return the content of \\begin{document}...\\end{document}, without even the \\begin{document} and \\end{document} commands. @@ -957,10 +955,9 @@ when PUB-DIR is set, use this as the publishing directory." (auto-insert nil); Avoid any auto-insert stuff for the new file (TeX-master (boundp 'TeX-master)) (buffer (if to-buffer - (cond - ((eq to-buffer 'string) (get-buffer-create - "*Org LaTeX Export*")) - (t (get-buffer-create to-buffer))) + (if (eq to-buffer 'string) + (get-buffer-create "*Org LaTeX Export*") + (get-buffer-create to-buffer)) (find-file-noselect filename))) (odd org-odd-levels-only) (header (org-export-latex-make-header title opt-plist)) @@ -1120,8 +1117,7 @@ when PUB-DIR is set, use this as the publishing directory." (interactive "P") (message "Exporting to PDF...") (let* ((wconfig (current-window-configuration)) - (lbuf (org-export-as-latex arg hidden ext-plist - to-buffer body-only pub-dir)) + (lbuf (org-export-as-latex arg ext-plist to-buffer body-only pub-dir)) (file (buffer-file-name lbuf)) (base (file-name-sans-extension (buffer-file-name lbuf))) (pdffile (concat base ".pdf")) @@ -2899,4 +2895,8 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER." (provide 'org-export-latex) (provide 'org-latex) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-latex.el ends here diff --git a/lisp/org/org-lparse.el b/lisp/org/org-lparse.el index 7024912050a..c5ced3ef01c 100644 --- a/lisp/org/org-lparse.el +++ b/lisp/org/org-lparse.el @@ -50,7 +50,6 @@ (require 'org-list) (require 'format-spec) -;;;###autoload (defun org-lparse-and-open (target-backend native-backend arg &optional file-or-buf) "Export outline to TARGET-BACKEND via NATIVE-BACKEND and open exported file. @@ -71,7 +70,6 @@ lists." (when org-export-kill-product-buffer-when-displayed (kill-buffer (current-buffer)))))) -;;;###autoload (defun org-lparse-batch (target-backend &optional native-backend) "Call the function `org-lparse'. This function can be used in batch processing as: @@ -83,7 +81,6 @@ emacs --batch (org-lparse target-backend native-backend org-export-headline-levels 'hidden)) -;;;###autoload (defun org-lparse-to-buffer (backend arg) "Call `org-lparse' with output to a temporary buffer. No file is created. The prefix ARG is passed through to @@ -93,7 +90,6 @@ No file is created. The prefix ARG is passed through to (when org-export-show-temporary-export-buffer (switch-to-buffer-other-window tempbuf)))) -;;;###autoload (defun org-replace-region-by (backend beg end) "Assume the current region has org-mode syntax, and convert it to HTML. This can be used in any buffer. For example, you could write an @@ -115,7 +111,6 @@ this command to convert it." (delete-region beg end) (insert backend-string))) -;;;###autoload (defun org-lparse-region (backend beg end &optional body-only buffer) "Convert region from BEG to END in org-mode buffer to HTML. If prefix arg BODY-ONLY is set, omit file header, footer, and table of @@ -447,11 +442,12 @@ PUB-DIR specifies the publishing directory." (error "Don't know how to export to backend %s %s" target-backend (format "via %s" native-backend))) (run-hooks 'org-export-first-hook) - (org-do-lparse arg hidden ext-plist to-buffer body-only pub-dir) - (remove-hook 'org-export-preprocess-hook - 'org-lparse-strip-experimental-blocks-maybe) - (remove-hook 'org-export-preprocess-after-blockquote-hook - 'org-lparse-preprocess-after-blockquote))) + (prog1 + (org-do-lparse arg hidden ext-plist to-buffer body-only pub-dir) + (remove-hook 'org-export-preprocess-hook + 'org-lparse-strip-experimental-blocks-maybe) + (remove-hook 'org-export-preprocess-after-blockquote-hook + 'org-lparse-preprocess-after-blockquote)))) (defcustom org-lparse-use-flashy-warning nil "Control flashing of messages logged with `org-lparse-warn'. @@ -480,6 +476,8 @@ This is a helper routine for interactive use." (eval-when-compile (require 'browse-url)) +(declare-function browse-url-file-url "browse-url" (file)) + (defun org-lparse-do-convert (in-file out-fmt &optional prefix-arg) "Workhorse routine for `org-export-odt-convert'." (require 'browse-url) @@ -2298,4 +2296,8 @@ Replaces invalid characters with \"_\"." (provide 'org-lparse) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-lparse.el ends here diff --git a/lisp/org/org-mobile.el b/lisp/org/org-mobile.el index d2c9c17367f..ffdd66513be 100644 --- a/lisp/org/org-mobile.el +++ b/lisp/org/org-mobile.el @@ -680,7 +680,6 @@ The table of checksums is written to the file mobile-checksums." (let ((table '(?: ?/))) (org-link-escape s table))) -;;;###autoload (defun org-mobile-create-sumo-agenda () "Create a file that contains all custom agenda views." (interactive) @@ -1129,4 +1128,8 @@ A and B must be strings or nil." (provide 'org-mobile) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-mobile.el ends here diff --git a/lisp/org/org-odt.el b/lisp/org/org-odt.el index 7de4b5de853..2dc3af39b09 100644 --- a/lisp/org/org-odt.el +++ b/lisp/org/org-odt.el @@ -2718,7 +2718,7 @@ Do this when translation to MathML fails." (defun org-export-odt-preprocess (parameters) (org-export-odt-preprocess-label-references)) -(declare-function archive-zip-extract "arc-mode.el" (archive name)) +(declare-function archive-zip-extract "arc-mode" (archive name)) (defun org-odt-zip-extract-one (archive member &optional target) (require 'arc-mode) (let* ((target (or target default-directory)) @@ -2847,4 +2847,8 @@ formula file." (provide 'org-odt) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-odt.el ends here diff --git a/lisp/org/org-plot.el b/lisp/org/org-plot.el index 48d72ac2810..5dec304363f 100644 --- a/lisp/org/org-plot.el +++ b/lisp/org/org-plot.el @@ -351,4 +351,8 @@ line directly before or after the table." (provide 'org-plot) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-plot.el ends here diff --git a/lisp/org/org-publish.el b/lisp/org/org-publish.el index 947d52b9200..d10514255b6 100644 --- a/lisp/org/org-publish.el +++ b/lisp/org/org-publish.el @@ -916,7 +916,6 @@ directory and force publishing all files." (if force nil org-publish-use-timestamps-flag))) (org-publish-projects org-publish-project-alist)))) - ;;;###autoload (defun org-publish-current-file (&optional force) "Publish the current file. @@ -1192,4 +1191,8 @@ Returns value on success, else nil." (provide 'org-publish) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-publish.el ends here diff --git a/lisp/org/org-remember.el b/lisp/org/org-remember.el index dd493749295..d555ca65d21 100644 --- a/lisp/org/org-remember.el +++ b/lisp/org/org-remember.el @@ -1149,4 +1149,8 @@ See also the variable `org-reverse-note-order'." (provide 'org-remember) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-remember.el ends here diff --git a/lisp/org/org-src.el b/lisp/org/org-src.el index 9d6bc1aa2c8..b4d4c0489a9 100644 --- a/lisp/org/org-src.el +++ b/lisp/org/org-src.el @@ -41,10 +41,8 @@ (declare-function org-at-table.el-p "org" ()) (declare-function org-get-indentation "org" (&optional line)) (declare-function org-switch-to-buffer-other-window "org" (&rest args)) -(declare-function org-strip-protective-commas "org" (beg end)) (declare-function org-pop-to-buffer-same-window "org-compat" (&optional buffer-or-name norecord label)) -(declare-function org-strip-protective-commas "org" (beg end)) (declare-function org-base-buffer "org" (buffer)) (defcustom org-edit-src-region-extra nil @@ -311,13 +309,8 @@ buffer." (error "Language mode `%s' fails with: %S" lang-f (nth 1 e))))) (dolist (pair transmitted-variables) (org-set-local (car pair) (cadr pair))) - (if (derived-mode-p 'org-mode) - (progn - (goto-char (point-min)) - (while (re-search-forward "^," nil t) - (if (eq (org-current-line) line) (setq total-nindent (1+ total-nindent))) - (replace-match ""))) - (org-strip-protective-commas (point-min) (point-max))) + ;; Remove protecting commas from visible part of buffer. + (org-unescape-code-in-region (point-min) (point-max)) (when markline (org-goto-line (1+ (- markline begline))) (org-move-to-column @@ -590,20 +583,38 @@ the language, a switch telling if the content should be in a single line." (goto-char pos) (org-get-indentation))) -(defun org-add-protective-commas (beg end &optional line) - "Add protective commas in region. -Return the delta in size of the region." +(defun org-escape-code-in-region (beg end) + "Escape lines between BEG and END. +Escaping happens when a line starts with \"*\", \"#+\", \",*\" or +\",#+\" by appending a comma to it." (interactive "r") - (let ((org-re "^\\(.\\)") - (other-re "^\\([*]\\|[ \t]*#\\+\\)") - (delta 0)) - (save-excursion - (goto-char beg) - (while (re-search-forward (if (derived-mode-p 'org-mode) org-re other-re) - end t) - (if (and line (eq (org-current-line) line)) (setq delta (1+ delta))) - (replace-match ",\\1"))) - delta)) + (save-excursion + (goto-char beg) + (while (re-search-forward "^[ \t]*,?\\(\\*\\|#\\+\\)" end t) + (replace-match ",\\1" nil nil nil 1)))) + +(defun org-escape-code-in-string (s) + "Escape lines in string S. +Escaping happens when a line starts with \"*\", \"#+\", \",*\" or +\",#+\" by appending a comma to it." + (replace-regexp-in-string "^[ \t]*,?\\(\\*\\|#\\+\\)" ",\\1" s nil nil 1)) + +(defun org-unescape-code-in-region (beg end) + "Un-escape lines between BEG and END. +Un-escaping happens by removing the first comma on lines starting +with \",*\", \",#+\", \",,*\" and \",,#+\"." + (interactive "r") + (save-excursion + (goto-char beg) + (while (re-search-forward "^[ \t]*,?\\(,\\)\\(?:\\*\\|#\\+\\)" end t) + (replace-match "" nil nil nil 1)))) + +(defun org-unescape-code-in-string (s) + "Un-escape lines in string S. +Un-escaping happens by removing the first comma on lines starting +with \",*\", \",#+\", \",,*\" and \",,#+\"." + (replace-regexp-in-string + "^[ \t]*,?\\(,\\)\\(?:\\*\\|#\\+\\)" "" s nil nil 1)) (defun org-edit-src-exit (&optional context) "Exit special edit and protect problematic lines." @@ -649,8 +660,12 @@ Return the delta in size of the region." (goto-char (point-min)) (if (looking-at "\\s-*") (replace-match " "))) (when (org-bound-and-true-p org-edit-src-from-org-mode) - (setq delta (+ delta (org-add-protective-commas - (point-min) (point-max) line)))) + (org-escape-code-in-region (point-min) (point-max)) + (setq delta (+ delta + (save-excursion + (org-goto-line line) + (if (looking-at "[ \t]*\\(,,\\)?\\(\\*\\|#+\\)") 1 + 0))))) (when (org-bound-and-true-p org-edit-src-picture) (setq preserve-indentation nil) (untabify (point-min) (point-max)) @@ -674,9 +689,10 @@ Return the delta in size of the region." (kill-buffer buffer)) (goto-char beg) (when allow-write-back-p - (delete-region beg (1- end)) - (insert code) - (delete-char 1) + (delete-region beg (max beg (1- end))) + (unless (string-match "^[ \t]*$" code) + (insert code) + (delete-char 1)) (goto-char beg) (if single (just-one-space))) (if (memq t (mapcar (lambda (overlay) diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el index 3eb63b6e53c..0555041231b 100644 --- a/lisp/org/org-table.el +++ b/lisp/org/org-table.el @@ -423,6 +423,7 @@ available parameters." (concat "\\(" "@[-0-9I$]+" "\\|" "[a-zA-Z]\\{1,2\\}\\([0-9]+\\|&\\)" "\\)") "Match a reference that needs translation, for reference display.") +;;;###autoload (defun org-table-create-with-table.el () "Use the table.el package to insert a new table. If there is already a table at point, convert between Org-mode tables @@ -439,6 +440,7 @@ and table.el tables." (org-table-convert))) (t (call-interactively 'table-insert)))) +;;;###autoload (defun org-table-create-or-convert-from-region (arg) "Convert region to table, or create an empty table. If there is an active region, convert it to a table, using the function @@ -451,6 +453,7 @@ If there is no such region, create an empty table with `org-table-create'." (org-table-convert-region (region-beginning) (region-end) arg) (org-table-create arg))) +;;;###autoload (defun org-table-create (&optional size) "Query for a size and insert a table skeleton. SIZE is a string Columns x Rows like for example \"3x2\"." @@ -483,6 +486,7 @@ SIZE is a string Columns x Rows like for example \"3x2\"." (goto-char pos))) (org-table-align))) +;;;###autoload (defun org-table-convert-region (beg0 end0 &optional separator) "Convert region to a table. The region goes from BEG0 to END0, but these borders will be moved @@ -543,6 +547,7 @@ nil When nil, the command tries to be smart and figure out the (goto-char beg) (org-table-align))) +;;;###autoload (defun org-table-import (file arg) "Import FILE as a table. The file is assumed to be tab-separated. Such files can be produced by most @@ -558,6 +563,7 @@ are found, lines will be split on whitespace into fields." (defvar org-table-last-alignment) (defvar org-table-last-column-widths) +;;;###autoload (defun org-table-export (&optional file format) "Export table to a file, with configurable format. Such a file can be imported into usual spreadsheet programs. @@ -673,6 +679,7 @@ When nil, simply write \"#ERROR\" in corrupted fields.") (defconst org-narrow-column-arrow "=>" "Used as display property in narrowed table columns.") +;;;###autoload (defun org-table-align () "Align the table at point by aligning all vertical bars." (interactive) @@ -884,6 +891,7 @@ With argument TABLE-TYPE, go to the end of a table.el-type table." (goto-char (match-beginning 0))) (point-marker))) +;;;###autoload (defun org-table-justify-field-maybe (&optional new) "Justify the current field, text to left, number to right. Optional argument NEW may specify text to replace the current field content." @@ -924,6 +932,7 @@ Optional argument NEW may specify text to replace the current field content." (setq org-table-may-need-update t)) (goto-char pos)))))) +;;;###autoload (defun org-table-next-field () "Go to the next field in the current table, creating new lines as needed. Before doing so, re-align the table if necessary." @@ -953,6 +962,7 @@ Before doing so, re-align the table if necessary." (error (org-table-insert-row 'below))))) +;;;###autoload (defun org-table-previous-field () "Go to the previous field in the table. Before doing so, re-align the table if necessary." @@ -1006,6 +1016,7 @@ With numeric argument N, move N-1 fields backward first." (forward-char 1))) (if (<= (point) pos) (org-table-end-of-field 2)))) +;;;###autoload (defun org-table-next-row () "Go to the next row (same column) in the current table. Before doing so, re-align the table if necessary." @@ -1029,6 +1040,7 @@ Before doing so, re-align the table if necessary." (skip-chars-backward "^|\n\r") (if (looking-at " ") (forward-char 1))))) +;;;###autoload (defun org-table-copy-down (n) "Copy a field down in the current column. If the field at the cursor is empty, copy into it the content of @@ -1173,6 +1185,7 @@ is always the old value." val) (forward-char 1) "")) +;;;###autoload (defun org-table-field-info (arg) "Show info about the current field, and highlight any reference at point." (interactive "P") @@ -1228,6 +1241,7 @@ is always the old value." (message "In table column %d" cnt)) cnt))) +;;;###autoload (defun org-table-current-dline () "Find out what table data line we are in. Only data lines count for this." @@ -1244,6 +1258,7 @@ Only data lines count for this." (message "This is table line %d" cnt)) cnt))) +;;;###autoload (defun org-table-goto-column (n &optional on-delim force) "Move the cursor to the Nth column in the current table line. With optional argument ON-DELIM, stop with point before the left delimiter @@ -1266,6 +1281,7 @@ However, when FORCE is non-nil, create new columns if necessary." (backward-char 1) (if (looking-at " ") (forward-char 1))))) +;;;###autoload (defun org-table-insert-column () "Insert a new column into the table." (interactive) @@ -1335,6 +1351,7 @@ first dline below it is used. When ABOVE is non-nil, the one above is used." (setq i (1+ i))))) nil)) +;;;###autoload (defun org-table-delete-column () "Delete a column from the table." (interactive) @@ -1367,15 +1384,18 @@ first dline below it is used. When ABOVE is non-nil, the one above is used." (org-table-fix-formulas "$LR" (list (cons (number-to-string col) "INVALID")) col -1 col)))) +;;;###autoload (defun org-table-move-column-right () "Move column to the right." (interactive) (org-table-move-column nil)) +;;;###autoload (defun org-table-move-column-left () "Move column to the left." (interactive) (org-table-move-column 'left)) +;;;###autoload (defun org-table-move-column (&optional left) "Move the current column to the right. With arg LEFT, move to the left." (interactive "P") @@ -1415,15 +1435,18 @@ first dline below it is used. When ABOVE is non-nil, the one above is used." "$LR" (list (cons (number-to-string col) (number-to-string colpos)) (cons (number-to-string colpos) (number-to-string col))))))) +;;;###autoload (defun org-table-move-row-down () "Move table row down." (interactive) (org-table-move-row nil)) +;;;###autoload (defun org-table-move-row-up () "Move table row up." (interactive) (org-table-move-row 'up)) +;;;###autoload (defun org-table-move-row (&optional up) "Move the current table line down. With arg UP, move it up." (interactive "P") @@ -1457,6 +1480,7 @@ first dline below it is used. When ABOVE is non-nil, the one above is used." "@" (list (cons (number-to-string dline1) (number-to-string dline2)) (cons (number-to-string dline2) (number-to-string dline1))))))) +;;;###autoload (defun org-table-insert-row (&optional arg) "Insert a new row above the current line into the table. With prefix ARG, insert below the current line." @@ -1478,6 +1502,7 @@ With prefix ARG, insert below the current line." (funcall org-table-fix-formulas-confirm "Fix formulas? ")) (org-table-fix-formulas "@" nil (1- (org-table-current-dline)) 1)))) +;;;###autoload (defun org-table-insert-hline (&optional above) "Insert a horizontal-line below the current line into the table. With prefix ABOVE, insert above the current line." @@ -1501,6 +1526,7 @@ With prefix ABOVE, insert above the current line." (org-move-to-column col) (and org-table-overlay-coordinates (org-table-align)))) +;;;###autoload (defun org-table-hline-and-move (&optional same-column) "Insert a hline and move to the row below that line." (interactive "P") @@ -1527,6 +1553,7 @@ In particular, this does handle wide and invisible characters." t t s))) s)) +;;;###autoload (defun org-table-kill-row () "Delete the current row or horizontal line from the table." (interactive) @@ -1542,6 +1569,7 @@ In particular, this does handle wide and invisible characters." (org-table-fix-formulas "@" (list (cons (number-to-string dline) "INVALID")) dline -1 dline)))) +;;;###autoload (defun org-table-sort-lines (with-case &optional sorting-type) "Sort table lines according to the column at point. @@ -1622,7 +1650,7 @@ should be done in reverse order." (org-table-goto-column thiscol) (message "%d lines sorted, based on column %d" (length lns) column))) - +;;;###autoload (defun org-table-cut-region (beg end) "Copy region in table to the clipboard and blank all relevant fields. If there is no active region, use just the field at point." @@ -1631,6 +1659,7 @@ If there is no active region, use just the field at point." (if (org-region-active-p) (region-end) (point)))) (org-table-copy-region beg end 'cut)) +;;;###autoload (defun org-table-copy-region (beg end &optional cut) "Copy rectangular region in table to clipboard. A special clipboard is used which can only be accessed @@ -1668,6 +1697,7 @@ with `org-table-paste-rectangle'." (if cut (org-table-align)) org-table-clip)) +;;;###autoload (defun org-table-paste-rectangle () "Paste a rectangular region into a table. The upper right corner ends up in the current field. All involved fields @@ -1698,6 +1728,7 @@ lines." (org-table-goto-column col) (org-table-align))) +;;;###autoload (defun org-table-convert () "Convert from `org-mode' table to table.el and back. Obviously, this only works within limits. When an Org-mode table is @@ -1771,6 +1802,7 @@ Note that horizontal lines disappeared." contents "")) (org-table-align))) +;;;###autoload (defun org-table-wrap-region (arg) "Wrap several fields in a column like a paragraph. This is useful if you'd like to spread the contents of a field over several @@ -1841,6 +1873,7 @@ blank, and the content is appended to the field above." (defvar org-field-marker nil) +;;;###autoload (defun org-table-edit-field (arg) "Edit table field in a different window. This is mainly useful for fields that contain hidden parts. @@ -1944,6 +1977,7 @@ table (but see `org-table-exit-follow-field-mode-when-leaving-table')." (defvar org-timecnt) ; dynamically scoped parameter +;;;###autoload (defun org-table-sum (&optional beg end nlast) "Sum numbers in region of current table column. The result will be displayed in the echo area, and will be available @@ -2144,9 +2178,10 @@ When NAMED is non-nil, look for a named equation." (bs (org-table-formula-make-cmp-string (car b)))) (and as bs (string< as bs)))) +;;;###autoload (defun org-table-get-stored-formulas (&optional noerror) "Return an alist with the stored formulas directly after current table." - (interactive) + (interactive) ;; FIXME interactive? (let ((case-fold-search t) scol eq eq-alist strings string seen) (save-excursion (goto-char (org-table-end)) @@ -2283,6 +2318,7 @@ For all numbers larger than LIMIT, shift them by DELTA." (setq org-table-local-parameters (append org-table-local-parameters al2)))))) +;;;###autoload (defun org-table-maybe-eval-formula () "Check if the current field starts with \"=\" or \":=\". If yes, store the formula and apply it." @@ -2313,6 +2349,7 @@ Will be filled automatically during use.") ("_" . "Names for values in row below this one.") ("^" . "Names for values in row above this one."))) +;;;###autoload (defun org-table-rotate-recalc-marks (&optional newchar) "Rotate the recalculation mark in the first column. If in any row, the first field is not consistent with a mark, @@ -2374,6 +2411,7 @@ of the new mark." (and (org-called-interactively-p 'interactive) (message "%s" (cdr (assoc new org-recalc-marks)))))) +;;;###autoload (defun org-table-maybe-recalculate-line () "Recompute the current line if marked for it, and if we haven't just done it." (interactive) @@ -2397,6 +2435,7 @@ of the new mark." (cons var (cons value org-tbl-calc-modes))) org-tbl-calc-modes) +;;;###autoload (defun org-table-eval-formula (&optional arg equation suppress-align suppress-const suppress-store suppress-analysis) @@ -2823,6 +2862,7 @@ LISPP means to return something appropriate for a Lisp list." elements ",") "]")))) +;;;###autoload (defun org-table-recalculate (&optional all noalign) "Recalculate the current table line by applying all stored formulas. With prefix arg ALL, do this for all lines in the table. @@ -2961,6 +3001,7 @@ known that the table will be realigned a little later anyway." (or noalign (and org-table-may-need-update (org-table-align)) (and all (message "Re-applying formulas...done")))))) +;;;###autoload (defun org-table-iterate (&optional arg) "Recalculate the table until it does not change anymore. The maximum number of iterations is 10, but you can choose a different value @@ -2997,10 +3038,9 @@ with the prefix ARG." "Iterate all tables in the buffer, to converge inter-table dependencies." (interactive) (let* ((imax 10) + (i imax) (checksum (md5 (buffer-string))) - - c1 - (i imax)) + c1) (save-excursion (save-restriction (widen) @@ -3164,6 +3204,7 @@ Parameters get priority." (defvar org-pos) +;;;###autoload (defun org-table-edit-formulas () "Edit the formulas of the current table in a separate buffer." (interactive) @@ -3801,6 +3842,7 @@ Use COMMAND to do the motion, repeat if necessary to end up in a data line." (org-overlay-display ov str 'org-special-keyword 'evaporate))) (beginning-of-line 2))))) +;;;###autoload (defun org-table-toggle-coordinate-overlays () "Toggle the display of Row/Column numbers in tables." (interactive) @@ -3813,6 +3855,7 @@ Use COMMAND to do the motion, repeat if necessary to end up in a data line." (mapc 'delete-overlay org-table-coordinate-overlays) (setq org-table-coordinate-overlays nil))) +;;;###autoload (defun org-table-toggle-formula-debugger () "Toggle the formula debugger in tables." (interactive) @@ -3852,11 +3895,6 @@ Use COMMAND to do the motion, repeat if necessary to end up in a data line." (defvar orgtbl-mode-map (make-keymap) "Keymap for `orgtbl-mode'.") -;;;###autoload -(defun turn-on-orgtbl () - "Unconditionally turn on `orgtbl-mode'." - (orgtbl-mode 1)) - (defvar org-old-auto-fill-inhibit-regexp nil "Local variable used by `orgtbl-mode'.") @@ -4480,6 +4518,7 @@ First element has index 0, or I0 if given." (*orgtbl-lfmt* *orgtbl-llfmt*)) (orgtbl-format-line prevline)))))) +;;;###autoload (defun orgtbl-to-generic (table params) "Convert the orgtbl-mode TABLE to some other format. This generic routine can be used for many standard cases. @@ -4606,9 +4645,11 @@ directly by `orgtbl-send-table'. See manual." (remq nil *orgtbl-rtn*) *orgtbl-rtn*)) "\n"))) +;;;###autoload (defun orgtbl-to-tsv (table params) "Convert the orgtbl-mode table to TAB separated material." (orgtbl-to-generic table (org-combine-plists '(:sep "\t") params))) +;;;###autoload (defun orgtbl-to-csv (table params) "Convert the orgtbl-mode table to CSV material. This does take care of the proper quoting of fields with comma or quotes." @@ -4616,6 +4657,7 @@ This does take care of the proper quoting of fields with comma or quotes." '(:sep "," :fmt org-quote-csv-field) params))) +;;;###autoload (defun orgtbl-to-latex (table params) "Convert the orgtbl-mode TABLE to LaTeX. TABLE is a list, each entry either the symbol `hline' for a horizontal @@ -4654,6 +4696,7 @@ this function is called." :efmt "%s\\,(%s)" :hline "\\hline"))) (orgtbl-to-generic table (org-combine-plists params2 params)))) +;;;###autoload (defun orgtbl-to-html (table params) "Convert the orgtbl-mode TABLE to HTML. TABLE is a list, each entry either the symbol `hline' for a horizontal @@ -4684,6 +4727,7 @@ so you cannot specify parameters for it." (setq html (replace-match "" t t html))) html)) +;;;###autoload (defun orgtbl-to-texinfo (table params) "Convert the orgtbl-mode TABLE to TeXInfo. TABLE is a list, each entry either the symbol `hline' for a horizontal @@ -4722,6 +4766,7 @@ this function is called." :hlstart "@headitem "))) (orgtbl-to-generic table (org-combine-plists params2 params)))) +;;;###autoload (defun orgtbl-to-orgtbl (table params) "Convert the orgtbl-mode TABLE into another orgtbl-mode table. Useful when slicing one table into many. The :hline, :sep, @@ -4832,4 +4877,8 @@ list of the fields in the rectangle ." (provide 'org-table) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-table.el ends here diff --git a/lisp/org/org-taskjuggler.el b/lisp/org/org-taskjuggler.el index aa645d296e8..a3de6e41239 100644 --- a/lisp/org/org-taskjuggler.el +++ b/lisp/org/org-taskjuggler.el @@ -692,4 +692,8 @@ org-mode priority string." (provide 'org-taskjuggler) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-taskjuggler.el ends here diff --git a/lisp/org/org-timer.el b/lisp/org/org-timer.el index 92aaf1c7bb8..a314564b94a 100644 --- a/lisp/org/org-timer.el +++ b/lisp/org/org-timer.el @@ -130,7 +130,6 @@ the region 0:00:00." (org-timer-secs-to-hms (or delta 0))) (run-hooks 'org-timer-start-hook)))) -;;;###autoload (defun org-timer-pause-or-continue (&optional stop) "Pause or continue the relative timer. With prefix arg STOP, stop it entirely." @@ -157,7 +156,6 @@ With prefix arg STOP, stop it entirely." (org-timer-set-mode-line 'pause) (message "Timer paused at %s" (org-timer-value-string))))) -;;;###autoload (defun org-timer-stop () "Stop the relative timer." (interactive) @@ -443,4 +441,8 @@ replace any running timer." (provide 'org-timer) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-timer.el ends here diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index 688947def52..9fcea6725e3 100644 --- a/lisp/org/org-version.el +++ b/lisp/org/org-version.el @@ -11,10 +11,10 @@ (defun org-git-version () "The Git version of org-mode. Inserted by installing org-mode or when a release is made." - (let ((org-git-version "7.9.2-GNU-Emacs-24-3")) + (let ((org-git-version "release_7.9.2-68-g7a9d34")) org-git-version)) ;;;###autoload -(defconst org-odt-data-dir "/usr/share/emacs/etc/org" +(defvar org-odt-data-dir "/usr/share/emacs/etc/org" "The location of ODT styles.") (provide 'org-version) diff --git a/lisp/org/org-xoxo.el b/lisp/org/org-xoxo.el index ee549627a85..6ff78b56839 100644 --- a/lisp/org/org-xoxo.el +++ b/lisp/org/org-xoxo.el @@ -122,4 +122,8 @@ The XOXO buffer is named *xoxo-*" (provide 'org-xoxo) +;; Local variables: +;; generated-autoload-file: "org-loaddefs.el" +;; End: + ;;; org-xoxo.el ends here diff --git a/lisp/org/org.el b/lisp/org/org.el index cfd86513fbc..45dbe2754e8 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -78,6 +78,8 @@ (require 'find-func) (require 'format-spec) +(load "org-loaddefs.el" t t) + ;; `org-outline-regexp' ought to be a defconst but is let-binding in ;; some places -- e.g. see the macro org-with-limited-levels. ;; @@ -117,8 +119,23 @@ Stars are put in group 1 and the trimmed body in group 2.") (declare-function org-clock-timestamps-down "org-clock" ()) (declare-function org-clock-sum-current-item "org-clock" (&optional tstart)) +(declare-function orgtbl-mode "org-table" (&optional arg)) +(declare-function org-clock-out "org-clock" (&optional switch-to-state fail-quietly at-time)) +(declare-function org-beamer-mode "org-beamer" ()) +(declare-function org-table-edit-field "org-table" (arg)) +(declare-function org-table-justify-field-maybe "org-table" (&optional new)) +(declare-function org-id-get-create "org-id" (&optional force)) +(declare-function org-id-find-id-file "org-id" (id)) +(declare-function org-tags-view "org-agenda" (&optional todo-only match)) +(declare-function org-agenda-list "org-agenda" (&optional arg start-day span)) +(declare-function org-table-align "org-table" ()) +(declare-function org-table-paste-rectangle "org-table" ()) +(declare-function org-table-maybe-eval-formula "org-table" ()) +(declare-function org-table-maybe-recalculate-line "org-table" ()) + ;; load languages based on value of `org-babel-load-languages' (defvar org-babel-load-languages) + ;;;###autoload (defun org-babel-do-load-languages (sym value) "Load the languages defined in `org-babel-load-languages'." @@ -206,6 +223,7 @@ identifier." ;;; Version (require 'org-compat) (org-check-version) + ;;;###autoload (defun org-version (&optional here full message) "Show the org-mode version in the echo area. @@ -214,7 +232,7 @@ When FULL is non-nil, use a verbose version string. When MESSAGE is non-nil, display a message with the version." (interactive "P") (let* ((org-dir (ignore-errors (org-find-library-dir "org"))) - (org-install-dir (ignore-errors (org-find-library-dir "org-install.el"))) + (org-install-dir (ignore-errors (org-find-library-dir "org-loaddefs.el"))) (org-trash (or (and (fboundp 'org-release) (fboundp 'org-git-version)) (load (concat org-dir "org-version.el") @@ -228,7 +246,7 @@ When MESSAGE is non-nil, display a message with the version." (if (string= org-dir org-install-dir) org-install-dir (concat "mixed installation! " org-install-dir " and " org-dir)) - "org-install.el can not be found!"))) + "org-loaddefs.el can not be found!"))) (_version (if full version org-version))) (if (org-called-interactively-p 'interactive) (if here @@ -3264,13 +3282,6 @@ forth between agenda and calendar." :group 'org-agenda :type 'sexp) -(defcustom org-calendar-agenda-action-key [?k] - "The key to be installed in `calendar-mode-map' for agenda-action. -The command `org-agenda-action' will be bound to this key. The -default is the character `k' because we use the same key in the agenda." - :group 'org-agenda - :type 'sexp) - (defcustom org-calendar-insert-diary-entry-key [?i] "The key to be installed in `calendar-mode-map' for adding diary entries. This option is irrelevant until `org-agenda-diary-file' has been configured @@ -3296,8 +3307,6 @@ points to a file, `org-agenda-diary-entry' will be used instead." '(progn (org-defkey calendar-mode-map org-calendar-to-agenda-key 'org-calendar-goto-agenda) - (org-defkey calendar-mode-map org-calendar-agenda-action-key - 'org-agenda-action) (add-hook 'calendar-mode-hook (lambda () (unless (eq org-agenda-diary-file 'diary-file) @@ -3869,30 +3878,13 @@ This works for both table types.") (eval-and-compile (org-autoload "org-table" - '(org-table-align org-table-begin org-table-blank-field - org-table-convert org-table-convert-region org-table-copy-down - org-table-copy-region org-table-create - org-table-create-or-convert-from-region - org-table-create-with-table.el org-table-current-dline - org-table-cut-region org-table-delete-column org-table-edit-field - org-table-edit-formulas org-table-end org-table-eval-formula - org-table-export org-table-field-info - org-table-get-stored-formulas org-table-goto-column - org-table-hline-and-move org-table-import org-table-insert-column - org-table-insert-hline org-table-insert-row org-table-iterate - org-table-justify-field-maybe org-table-kill-row - org-table-maybe-eval-formula org-table-maybe-recalculate-line - org-table-move-column org-table-move-column-left - org-table-move-column-right org-table-move-row - org-table-move-row-down org-table-move-row-up - org-table-next-field org-table-next-row org-table-paste-rectangle - org-table-previous-field org-table-recalculate - org-table-rotate-recalc-marks org-table-sort-lines org-table-sum - org-table-toggle-coordinate-overlays - org-table-toggle-formula-debugger org-table-wrap-region - orgtbl-mode turn-on-orgtbl org-table-to-lisp - orgtbl-to-generic orgtbl-to-tsv orgtbl-to-csv orgtbl-to-latex - orgtbl-to-orgtbl orgtbl-to-html orgtbl-to-texinfo))) + '(org-table-begin org-table-blank-field org-table-end))) + +;;;###autoload +(defun turn-on-orgtbl () + "Unconditionally turn on `orgtbl-mode'." + (require 'org-table) + (orgtbl-mode 1)) (defun org-at-table-p (&optional table-type) "Return t if the cursor is inside an org-type table. @@ -3971,62 +3963,14 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables." (declare-function org-default-export-plist "org-exp") (declare-function org-infile-export-plist "org-exp") (declare-function org-get-current-options "org-exp") -(eval-and-compile - (org-autoload "org-exp" - '(org-export org-export-visible - org-insert-export-options-template - org-table-clean-before-export)) - (org-autoload "org-ascii" - '(org-export-as-ascii org-export-ascii-preprocess - org-export-as-ascii-to-buffer org-replace-region-by-ascii - org-export-region-as-ascii)) - (org-autoload "org-latex" - '(org-export-as-latex-batch org-export-as-latex-to-buffer - org-replace-region-by-latex org-export-region-as-latex - org-export-as-latex org-export-as-pdf - org-export-as-pdf-and-open)) - (org-autoload "org-html" - '(org-export-as-html-and-open - org-export-as-html-batch org-export-as-html-to-buffer - org-replace-region-by-html org-export-region-as-html - org-export-as-html)) - (org-autoload "org-docbook" - '(org-export-as-docbook-batch org-export-as-docbook-to-buffer - org-replace-region-by-docbook org-export-region-as-docbook - org-export-as-docbook-pdf org-export-as-docbook-pdf-and-open - org-export-as-docbook)) - (org-autoload "org-icalendar" - '(org-export-icalendar-this-file - org-export-icalendar-all-agenda-files - org-export-icalendar-combine-agenda-files)) - (org-autoload "org-xoxo" '(org-export-as-xoxo)) - (org-autoload "org-beamer" '(org-beamer-mode org-beamer-sectioning))) ;; Declare and autoload functions from org-agenda.el (eval-and-compile (org-autoload "org-agenda" - '(org-agenda org-agenda-list org-search-view - org-todo-list org-tags-view org-agenda-list-stuck-projects - org-diary org-agenda-to-appt - org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item))) + '(org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item))) -;; Autoload org-remember - -(eval-and-compile - (org-autoload "org-remember" - '(org-remember-insinuate org-remember-annotation - org-remember-apply-template org-remember org-remember-handler))) - -(eval-and-compile - (org-autoload "org-capture" - '(org-capture org-capture-insert-template-here - org-capture-import-remember-templates))) - -;; Autoload org-clock.el - -(declare-function org-clock-save-markers-for-cut-and-paste "org-clock" - (beg end)) +(declare-function org-clock-save-markers-for-cut-and-paste "org-clock" (beg end)) (declare-function org-clock-update-mode-line "org-clock" ()) (declare-function org-resolve-clocks "org-clock" (&optional also-non-dangling-p prompt last-valid)) @@ -4043,55 +3987,9 @@ The return value is actually the clock marker." (marker-buffer org-clock-marker)) (eval-and-compile - (org-autoload - "org-clock" - '(org-clock-in org-clock-out org-clock-cancel - org-clock-goto org-clock-sum org-clock-display - org-clock-remove-overlays org-clock-report - org-clocktable-shift org-dblock-write:clocktable - org-get-clocktable org-resolve-clocks))) - -(defun org-clock-update-time-maybe () - "If this is a CLOCK line, update it and return t. -Otherwise, return nil." - (interactive) - (save-excursion - (beginning-of-line 1) - (skip-chars-forward " \t") - (when (looking-at org-clock-string) - (let ((re (concat "[ \t]*" org-clock-string - " *[[<]\\([^]>]+\\)[]>]\\(-+[[<]\\([^]>]+\\)[]>]" - "\\([ \t]*=>.*\\)?\\)?")) - ts te h m s neg) - (cond - ((not (looking-at re)) - nil) - ((not (match-end 2)) - (when (and (equal (marker-buffer org-clock-marker) (current-buffer)) - (> org-clock-marker (point)) - (<= org-clock-marker (point-at-eol))) - ;; The clock is running here - (setq org-clock-start-time - (apply 'encode-time - (org-parse-time-string (match-string 1)))) - (org-clock-update-mode-line))) - (t - (and (match-end 4) (delete-region (match-beginning 4) (match-end 4))) - (end-of-line 1) - (setq ts (match-string 1) - te (match-string 3)) - (setq s (- (org-float-time - (apply 'encode-time (org-parse-time-string te))) - (org-float-time - (apply 'encode-time (org-parse-time-string ts)))) - neg (< s 0) - s (abs s) - h (floor (/ s 3600)) - s (- s (* 3600 h)) - m (floor (/ s 60)) - s (- s (* 60 s))) - (insert " => " (format (if neg "-%d:%02d" "%2d:%02d") h m)) - t)))))) + (org-autoload "org-clock" '(org-clock-remove-overlays + org-clock-update-time-maybe + org-clocktable-shift))) (defun org-check-running-clock () "Check if the current buffer contains the running clock. @@ -4108,44 +4006,18 @@ If yes, offer to stop it and to save the buffer with the changes." (when (org-match-line "^[ \t]*#\\+BEGIN:[ \t]+clocktable\\>") (org-clocktable-shift dir n))) -;; Autoload org-timer.el - -(eval-and-compile - (org-autoload - "org-timer" - '(org-timer-start org-timer org-timer-item - org-timer-change-times-in-region - org-timer-set-timer - org-timer-reset-timers - org-timer-show-remaining-time))) - -;; Autoload org-feed.el - -(eval-and-compile - (org-autoload - "org-feed" - '(org-feed-update org-feed-update-all org-feed-goto-inbox))) - - -;; Autoload org-indent.el +;;;###autoload +(defun org-clock-persistence-insinuate () + "Set up hooks for clock persistence." + (require 'org-clock) + (add-hook 'org-mode-hook 'org-clock-load) + (add-hook 'kill-emacs-hook 'org-clock-save)) ;; Define the variable already here, to make sure we have it. (defvar org-indent-mode nil "Non-nil if Org-Indent mode is enabled. Use the command `org-indent-mode' to change this variable.") -(eval-and-compile - (org-autoload - "org-indent" - '(org-indent-mode))) - -;; Autoload org-mobile.el - -(eval-and-compile - (org-autoload - "org-mobile" - '(org-mobile-push org-mobile-pull org-mobile-create-sumo-agenda))) - ;; Autoload archiving code ;; The stuff that is needed for cycling and tags has to be defined here. @@ -4319,10 +4191,7 @@ Otherwise, these types are allowed: (eval-and-compile (org-autoload "org-archive" - '(org-add-archive-files org-archive-subtree - org-archive-to-archive-sibling org-toggle-archive-tag - org-archive-subtree-default - org-archive-subtree-default-with-confirmation))) + '(org-add-archive-files))) ;; Autoload Column View Code @@ -4331,9 +4200,10 @@ Otherwise, these types are allowed: (declare-function org-columns-compute "org-colview" (property)) (org-autoload (if (featurep 'xemacs) "org-colview-xemacs" "org-colview") - '(org-columns-number-to-string org-columns-get-format-and-top-level - org-columns-compute org-agenda-columns org-columns-remove-overlays - org-columns org-insert-columns-dblock org-dblock-write:columnview)) + '(org-columns-number-to-string + org-columns-get-format-and-top-level + org-columns-compute + org-columns-remove-overlays)) ;; Autoload ID code @@ -4342,15 +4212,10 @@ Otherwise, these types are allowed: (declare-function org-id-locations-save "org-id") (defvar org-id-track-globally) (org-autoload "org-id" - '(org-id-get-create org-id-new org-id-copy org-id-get - org-id-get-with-outline-path-completion - org-id-get-with-outline-drilling org-id-store-link - org-id-goto org-id-find org-id-store-link)) - -;; Autoload Plotting Code - -(org-autoload "org-plot" - '(org-plot/gnuplot)) + '(org-id-new + org-id-copy + org-id-get-with-outline-path-completion + org-id-get-with-outline-drilling)) ;;; Variables for pre-computed regular expressions, all buffer local @@ -5096,7 +4961,7 @@ The following commands are available: (lambda (&rest ignore) (org-show-context 'isearch)))) ;; Turn on org-beamer-mode? - (and org-startup-with-beamer-mode (org-beamer-mode 1)) + (and org-startup-with-beamer-mode (org-beamer-mode)) ;; Setup the pcomplete hooks (set (make-local-variable 'pcomplete-command-completion-function) @@ -5569,22 +5434,6 @@ by a #." t) (t nil)))))) -(defun org-strip-protective-commas (beg end) - "Strip protective commas between BEG and END in the current buffer." - (interactive "r") - (save-excursion - (save-match-data - (goto-char beg) - (let ((front-line (save-excursion - (re-search-forward - "[^[:space:]]" end t) - (goto-char (match-beginning 0)) - (current-column)))) - (while (re-search-forward "^[ \t]*\\(,\\)\\([*]\\|#\\)" end t) - (goto-char (match-beginning 1)) - (when (= (current-column) front-line) - (replace-match "" nil nil nil 1))))))) - (defun org-activate-angle-links (limit) "Run through the buffer and add overlays to links." (if (re-search-forward org-angle-link-re limit t) @@ -6188,10 +6037,9 @@ and subscripts." (defvar org-cycle-subtree-status nil) (make-variable-buffer-local 'org-cycle-subtree-status) -;;;###autoload - (defvar org-inlinetask-min-level) +;;;###autoload (defun org-cycle (&optional arg) "TAB-action and visibility cycling for Org-mode. @@ -9205,7 +9053,7 @@ If optional argument MERGE is set, merge TABLE into (defun org-link-unescape (str) "Unhex hexified Unicode strings as returned from the JavaScript function -encodeURIComponent. E.g. `%C3%B6' is the german Umlaut `ö'." +encodeURIComponent. E.g. `%C3%B6' is the german o-Umlaut." (unless (and (null str) (string= "" str)) (let ((pos 0) (case-fold-search t) unhexed) (while (setq pos (string-match "\\(%[0-9a-f][0-9a-f]\\)+" str pos)) @@ -9215,9 +9063,9 @@ encodeURIComponent. E.g. `%C3%B6' is the german Umlaut `ö'." str) (defun org-link-unescape-compound (hex) - "Unhexify Unicode hex-chars. E.g. `%C3%B6' is the German Umlaut `ö'. + "Unhexify Unicode hex-chars. E.g. `%C3%B6' is the German o-Umlaut. Note: this function also decodes single byte encodings like -`%E1' (\"á\") if not followed by another `%[A-F0-9]{2}' group." +`%E1' (a-acute) if not followed by another `%[A-F0-9]{2}' group." (save-match-data (let* ((bytes (cdr (split-string hex "%"))) (ret "") @@ -11028,11 +10876,13 @@ prefix argument (`C-u C-u C-u C-c C-w')." (and org-auto-align-tags (let ((org-loop-over-headlines-in-active-region nil)) (org-set-tags nil t))) - (bookmark-set "org-refile-last-stored") + (with-demoted-errors + (bookmark-set "org-refile-last-stored")) ;; If we are refiling for capture, make sure that the ;; last-capture pointers point here (when (org-bound-and-true-p org-refile-for-capture) - (bookmark-set "org-capture-last-stored-marker") + (with-demoted-errors + (bookmark-set "org-capture-last-stored-marker")) (move-marker org-capture-last-stored-marker (point))) (if (fboundp 'deactivate-mark) (deactivate-mark)) (run-hooks 'org-after-refile-insert-hook)))) @@ -11128,26 +10978,28 @@ this is used for the GOTO interface." (org-refile-new-child parent-target child))) (error "Invalid target location"))))) -(declare-function org-string-nw-p "org-macs.el" (s)) +(declare-function org-string-nw-p "org-macs" (s)) (defun org-refile-check-position (refile-pointer) - "Check if the refile pointer matches the readline to which it points." + "Check if the refile pointer matches the headline to which it points." (let* ((file (nth 1 refile-pointer)) (re (nth 2 refile-pointer)) (pos (nth 3 refile-pointer)) buffer) - (when (org-string-nw-p re) - (setq buffer (if (markerp pos) - (marker-buffer pos) - (or (find-buffer-visiting file) - (find-file-noselect file)))) - (with-current-buffer buffer - (save-excursion - (save-restriction - (widen) - (goto-char pos) - (beginning-of-line 1) - (unless (org-looking-at-p re) - (error "Invalid refile position, please clear the cache with `C-0 C-c C-w' before refiling")))))))) + (if (and (not (markerp pos)) (not file)) + (error "Please save the buffer to a file before refiling") + (when (org-string-nw-p re) + (setq buffer (if (markerp pos) + (marker-buffer pos) + (or (find-buffer-visiting file) + (find-file-noselect file)))) + (with-current-buffer buffer + (save-excursion + (save-restriction + (widen) + (goto-char pos) + (beginning-of-line 1) + (unless (org-looking-at-p re) + (error "Invalid refile position, please clear the cache with `C-0 C-c C-w' before refiling"))))))))) (defun org-refile-new-child (parent-target child) "Use refile target PARENT-TARGET to add new CHILD below it." @@ -11337,7 +11189,6 @@ Error if there is no such block at point." (goto-char pos) (error "Not in a dynamic block")))) -;;;###autoload (defun org-update-all-dblocks () "Update all dynamic blocks in the buffer. This function can be used in a hook." @@ -12821,7 +12672,7 @@ D Show deadlines and scheduled items between a date range." ((equal ans ?D) (call-interactively 'org-check-dates-range)) ((equal ans ?t) - (org-show-todo-tree nil)) + (call-interactively 'org-show-todo-tree)) ((equal ans ?T) (org-show-todo-tree '(4))) ((member ans '(?T ?m)) @@ -14157,7 +14008,6 @@ Returns the new tags string, or nil to not change the current settings." ;;;; The mapping API -;;;###autoload (defun org-map-entries (func &optional match scope &rest skip) "Call FUNC at each headline selected by MATCH in SCOPE. @@ -15656,14 +15506,13 @@ user." ;; Help matching dotted european dates (when (string-match - "^ *\\(3[01]\\|0?[1-9]\\|[12][0-9]\\)\\. ?\\(0?[1-9]\\|1[012]\\)\\. ?\\([1-9][0-9][0-9][0-9]\\)?" ans) - (setq year (if (match-end 3) - (string-to-number (match-string 3 ans)) - (progn (setq kill-year t) - (string-to-number (format-time-string "%Y")))) + "^ *\\(3[01]\\|0?[1-9]\\|[12][0-9]\\)\\. ?\\(0?[1-9]\\|1[012]\\)\\.\\( ?[1-9][0-9]\\{3\\}\\)?" ans) + (setq year (if (match-end 3) (string-to-number (match-string 3 ans)) + (setq kill-year t) + (string-to-number (format-time-string "%Y"))) day (string-to-number (match-string 1 ans)) month (string-to-number (match-string 2 ans)) - ans (replace-match (format "%04d-%02d-%02d\\5" year month day) + ans (replace-match (format "%04d-%02d-%02d" year month day) t nil ans))) ;; Help matching american dates, like 5/30 or 5/30/7 @@ -16311,7 +16160,12 @@ When PREFER is `future', return a date that is either CURRENT or future. When SHOW-ALL is nil, only return the current occurrence of a time stamp." ;; Make the proper lists from the dates (catch 'exit - (let ((a1 '(("d" . day) ("w" . week) ("m" . month) ("y" . year))) + (let ((a1 '(("h" . hour) + ("d" . day) + ("w" . week) + ("m" . month) + ("y" . year))) + (shour (nth 2 (org-parse-time-string start))) dn dw sday cday n1 n2 n0 d m y y1 y2 date1 date2 nmonths nm ny m2) @@ -16331,6 +16185,13 @@ When SHOW-ALL is nil, only return the current occurrence of a time stamp." (error "Invalid change specifier: %s" change)) (if (eq dw 'week) (setq dw 'day dn (* 7 dn))) (cond + ((eq dw 'hour) + (let ((missing-hours + (mod (+ (- (* 24 (- cday sday)) shour) org-extend-today-until) + dn))) + (setq n1 (if (zerop missing-hours) cday + (- cday (1+ (floor (/ missing-hours 24))))) + n2 (+ cday (floor (/ (- dn missing-hours) 24)))))) ((eq dw 'day) (setq n1 (+ sday (* dn (floor (/ (- cday sday) dn)))) n2 (+ n1 dn))) @@ -16993,7 +16854,9 @@ end of the list." (file-alist (mapcar (lambda (x) (cons (file-truename x) x)) (org-agenda-files t))) - (ctf (file-truename buffer-file-name)) + (ctf (file-truename + (or buffer-file-name + (error "Please save the current buffer to a file")))) x had) (setq x (assoc ctf file-alist) had x) @@ -17012,7 +16875,8 @@ These are the files which are being checked for agenda entries. Optional argument FILE means use this file instead of the current." (interactive) (let* ((org-agenda-skip-unavailable-files nil) - (file (or file buffer-file-name)) + (file (or file buffer-file-name + (error "Current buffer does not visit a file"))) (true-file (file-truename file)) (afile (abbreviate-file-name file)) (files (delq nil (mapcar @@ -17034,7 +16898,7 @@ Optional argument FILE means use this file instead of the current." (defun org-check-agenda-file (file) "Make sure FILE exists. If not, ask user what to do." (when (not (file-exists-p file)) - (message "non-existent agenda file %s. [R]emove from list or [A]bort?" + (message "Non-existent agenda file %s. [R]emove from list or [A]bort?" (abbreviate-file-name file)) (let ((r (downcase (read-char-exclusive)))) (cond @@ -18113,7 +17977,6 @@ BEG and END default to the buffer boundaries." (org-defkey org-mode-map [?\C-c (control ?*)] 'org-list-make-subtree) ;;(org-defkey org-mode-map [?\C-c (control ?-)] 'org-list-make-list-from-subtree) -(org-defkey org-mode-map "\C-c\C-x\C-k" 'org-mark-entry-for-agenda-action) (org-defkey org-mode-map "\C-c\C-x\C-w" 'org-cut-special) (org-defkey org-mode-map "\C-c\C-x\M-w" 'org-copy-special) (org-defkey org-mode-map "\C-c\C-x\C-y" 'org-paste-special) @@ -18801,13 +18664,12 @@ this function returns t, nil otherwise." nil)))) (autoload 'org-element-at-point "org-element") +(autoload 'org-element-type "org-element") (declare-function org-element-at-point "org-element" (&optional keep-trail)) (declare-function org-element-type "org-element" (element)) -(declare-function org-element-context "org-element" ()) (declare-function org-element-contents "org-element" (element)) (declare-function org-element-property "org-element" (property element)) -(declare-function org-element-paragraph-parser "org-element" (limit)) (declare-function org-element-map "org-element" (data types fun &optional info first-match no-recursion)) (declare-function org-element-nested-p "org-element" (elem-a elem-b)) (declare-function org-element-swap-A-B "org-element" (elem-a elem-b)) @@ -19985,7 +19847,6 @@ Your bug report will be posted to the Org-mode mailing list. ;;;; Documentation -;;;###autoload (defun org-require-autoloaded-modules () (interactive) (mapc 'require @@ -20813,20 +20674,6 @@ returns the current time." (nth 2 date)))))) (or defd (current-time)))) -(defvar org-agenda-action-marker (make-marker) - "Marker pointing to the entry for the next agenda action.") - -(defun org-mark-entry-for-agenda-action () - "Mark the current entry as target of an agenda action. -Agenda actions are actions executed from the agenda with the key `k', -which make use of the date at the cursor." - (interactive) - (move-marker org-agenda-action-marker - (save-excursion (org-back-to-heading t) (point)) - (current-buffer)) - (message - "Entry marked for action; press `k' at desired date in agenda or calendar")) - (defun org-mark-subtree (&optional up) "Mark the current subtree. This puts point at the start of the current subtree, and mark at @@ -21224,7 +21071,10 @@ a footnote definition, try to fill the first paragraph within." ;; Check if auto-filling is meaningful. (let ((fc (current-fill-column))) (when (and fc (> (current-column) fc)) - (let ((fill-prefix (org-adaptive-fill-function))) + (let* ((fill-prefix (org-adaptive-fill-function)) + ;; Enforce empty fill prefix, if required. Otherwise, it + ;; will be computed again. + (adaptive-fill-mode (not (equal fill-prefix "")))) (when fill-prefix (do-auto-fill)))))) (defun org-comment-line-break-function (&optional soft) @@ -21475,45 +21325,43 @@ beyond the end of the headline." (defun org-end-of-line (&optional arg) "Go to the end of the line. -If this is a headline, and `org-special-ctrl-a/e' is set, ignore tags on the -first attempt, and only move to after the tags when the cursor is already -beyond the end of the headline." +If this is a headline, and `org-special-ctrl-a/e' is set, ignore +tags on the first attempt, and only move to after the tags when +the cursor is already beyond the end of the headline." (interactive "P") - (let ((special (if (consp org-special-ctrl-a/e) - (cdr org-special-ctrl-a/e) - org-special-ctrl-a/e))) + (let ((special (if (consp org-special-ctrl-a/e) (cdr org-special-ctrl-a/e) + org-special-ctrl-a/e)) + (type (org-element-type + (save-excursion (beginning-of-line) (org-element-at-point))))) (cond - ((or (not special) arg - (not (or (org-at-heading-p) (org-at-item-p) (org-at-drawer-p)))) + ((or (not special) arg) (call-interactively - (cond ((org-bound-and-true-p line-move-visual) 'end-of-visual-line) - ((fboundp 'move-end-of-line) 'move-end-of-line) - (t 'end-of-line)))) - ((org-at-heading-p) + (if (fboundp 'move-end-of-line) 'move-end-of-line 'end-of-line))) + ((memq type '(headline inlinetask)) (let ((pos (point))) - (beginning-of-line 1) - (if (looking-at (org-re ".*?\\(?:\\([ \t]*\\)\\(:[[:alnum:]_@#%:]+:\\)?[ \t]*\\)?$")) - (if (eq special t) - (if (or (< pos (match-beginning 1)) - (= pos (match-end 0))) - (goto-char (match-beginning 1)) - (goto-char (match-end 0))) - (if (or (< pos (match-end 0)) (not (eq this-command last-command))) - (goto-char (match-end 0)) - (goto-char (match-beginning 1)))) - (call-interactively (if (fboundp 'move-end-of-line) - 'move-end-of-line - 'end-of-line))))) - ((org-at-drawer-p) - (move-end-of-line 1) - (when (overlays-at (1- (point))) (backward-char 1))) - ;; At an item: Move before any hidden text. - (t (call-interactively - (cond ((org-bound-and-true-p line-move-visual) 'end-of-visual-line) - ((fboundp 'move-end-of-line) 'move-end-of-line) - (t 'end-of-line))))) - (org-no-warnings - (and (featurep 'xemacs) (setq zmacs-region-stays t))))) + (beginning-of-line 1) + (if (looking-at (org-re ".*?\\(?:\\([ \t]*\\)\\(:[[:alnum:]_@#%:]+:\\)?[ \t]*\\)?$")) + (if (eq special t) + (if (or (< pos (match-beginning 1)) (= pos (match-end 0))) + (goto-char (match-beginning 1)) + (goto-char (match-end 0))) + (if (or (< pos (match-end 0)) + (not (eq this-command last-command))) + (goto-char (match-end 0)) + (goto-char (match-beginning 1)))) + (call-interactively + (if (fboundp 'move-end-of-line) 'move-end-of-line 'end-of-line))))) + ((memq type + '(center-block comment-block drawer dynamic-block example-block + export-block item plain-list property-drawer + quote-block special-block src-block verse-block)) + ;; Never move past the ellipsis. + (or (eolp) (move-end-of-line 1)) + (when (org-invisible-p2) (backward-char))) + (t + (call-interactively + (if (fboundp 'move-end-of-line) 'move-end-of-line 'end-of-line)))) + (org-no-warnings (and (featurep 'xemacs) (setq zmacs-region-stays t))))) (define-key org-mode-map "\C-a" 'org-beginning-of-line) (define-key org-mode-map "\C-e" 'org-end-of-line) @@ -21966,7 +21814,6 @@ Stop at the first and last subheadings of a superior heading." (if (< l level) (setq arg 1))) (setq arg (1- arg))))) -;;;###autoload (defun org-forward-element () "Move forward by one element. Move to the next element at the same level, when possible." @@ -21986,7 +21833,6 @@ Move to the next element at the same level, when possible." (goto-char (org-element-property :end parent)) (goto-char end)))))) -;;;###autoload (defun org-backward-element () "Move backward by one element. Move to the previous element at the same level, when possible." @@ -22013,7 +21859,6 @@ Move to the previous element at the same level, when possible." ((org-before-first-heading-p) (goto-char (point-min))) (t (org-back-to-heading))))))) -;;;###autoload (defun org-up-element () "Move to upper element." (interactive) @@ -22026,7 +21871,6 @@ Move to the previous element at the same level, when possible." (error "No surrounding element") (org-with-limited-levels (org-back-to-heading))))))) -;;;###autoload (defvar org-element-greater-elements) (defun org-down-element () "Move to inner element." @@ -22043,7 +21887,6 @@ Move to the previous element at the same level, when possible." (error "No content for this element")))) (t (error "No inner element"))))) -;;;###autoload (defun org-drag-element-backward () "Move backward element at point." (interactive) @@ -22060,7 +21903,6 @@ Move to the previous element at the same level, when possible." (goto-char (+ (org-element-property :begin prev-elem) (- pos (org-element-property :begin elem))))))))) -;;;###autoload (defun org-drag-element-forward () "Move forward element at point." (interactive) @@ -22095,7 +21937,6 @@ Move to the previous element at the same level, when possible." (org-element-swap-A-B elem next-elem) (goto-char (+ pos size-next size-blank)))))) -;;;###autoload (defun org-mark-element () "Put point at beginning of this element, mark at end. @@ -22116,7 +21957,6 @@ ones already marked." (push-mark (org-element-property :end element) t t) (goto-char (org-element-property :begin element)))))) -;;;###autoload (defun org-narrow-to-element () "Narrow buffer to current element." (interactive) @@ -22135,7 +21975,6 @@ ones already marked." (org-element-property :begin elem) (org-element-property :end elem)))))) -;;;###autoload (defun org-transpose-element () "Transpose current and previous elements, keeping blank lines between. Point is moved after both elements." @@ -22145,7 +21984,6 @@ Point is moved after both elements." (org-drag-element-backward) (goto-char end))) -;;;###autoload (defun org-unindent-buffer () "Un-indent the visible part of the buffer. Relative indentation (between items, inside blocks, etc.) isn't From 00323fb326b63bed91aadbef861a234f9299cdbc Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Fri, 26 Oct 2012 17:27:29 +0200 Subject: [PATCH 008/165] Fix overwritten typos and Org version number. --- doc/misc/org.texi | 6 +++--- lisp/org/org-version.el | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/misc/org.texi b/doc/misc/org.texi index cdaf1174a26..a69dc0fd81f 100644 --- a/doc/misc/org.texi +++ b/doc/misc/org.texi @@ -947,7 +947,7 @@ description on Worg}. Installing Info files is system dependent, because of differences in the @file{install-info} program. The Info documentation is installed together with the rest of Org mode. If you don't install Org mode, it is possible to -install the Info documentation seperately (you need to have +install the Info documentation separately (you need to have install-info@footnote{The output from install-info (if any) is system dependent. In particular Debian and its derivatives use two different versions of install-info and you may see the message: @@ -16693,7 +16693,7 @@ on @file{org-element.el} and @file{org-export.el} has been outstanding, and opened the doors for many new ideas and features. @item Jambunathan K -Jambunathan contributed the ODT exporter, definitly a killer feature of +Jambunathan contributed the ODT exporter, definitely a killer feature of Org mode. He also contributed the new HTML exporter, which is another core feature of Org. Here too, I knew I could rely on him to fix bugs in these areas and to patiently explain the users what was the problems and solutions. @@ -16701,7 +16701,7 @@ areas and to patiently explain the users what was the problems and solutions. @item Achim Gratz Achim rewrote the building process of Org, turning some @emph{ad hoc} tools into a flexible and conceptually clean process. He patiently coped with the -many hicups that such a change can create for users. +many hiccups that such a change can create for users. @item Nick Dokos The Org mode mailing list would not be such a nice place without Nick, who diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index 9fcea6725e3..564b49a5cea 100644 --- a/lisp/org/org-version.el +++ b/lisp/org/org-version.el @@ -5,13 +5,13 @@ (defun org-release () "The release version of org-mode. Inserted by installing org-mode or when a release is made." - (let ((org-release "7.9.2")) + (let ((org-release "7.9.2+")) org-release)) ;;;###autoload (defun org-git-version () "The Git version of org-mode. Inserted by installing org-mode or when a release is made." - (let ((org-git-version "release_7.9.2-68-g7a9d34")) + (let ((org-git-version "7.9.2+-GNU-Emacs-24-3")) org-git-version)) ;;;###autoload (defvar org-odt-data-dir "/usr/share/emacs/etc/org" From a2be03575f558aa741e40cd96fbe208092c3a1e7 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 26 Oct 2012 11:51:42 -0400 Subject: [PATCH 009/165] * lisp/vc/diff-mode.el (diff-end-of-hunk): Also skip potential "no LF at eol". (diff-refine-hunk): Similarly, handle the "no LF at eol". Fixes: debbugs:12584 --- lisp/ChangeLog | 7 ++++++- lisp/vc/diff-mode.el | 23 ++++++++++++++++------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 75fbaa13b92..3c1638fd6f8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-10-26 Stefan Monnier + + * vc/diff-mode.el (diff-end-of-hunk): Also skip potential "no LF at eol". + (diff-refine-hunk): Similarly, handle the "no LF at eol" (bug#12584). + 2012-10-26 Martin Rudalics * mouse.el (mouse-drag-line): Move last form into preceding when @@ -8,7 +13,7 @@ 2012-10-25 David Engster * emacs-lisp/eieio.el (eieio-update-lisp-imenu-expression): - Removed. This feature is already integrated in imenu. + Remove. This feature is already integrated in imenu. * emacs-lisp/eieio-opt.el: Remove require for `button' since it is always loaded. Require `speedbar' unconditionally. diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index cdcc7ca4745..bbe31205c0e 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -478,11 +478,13 @@ See http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01990.html") (let* ((nold (string-to-number (or (match-string 2) "1"))) (nnew (string-to-number (or (match-string 4) "1"))) (endold - (save-excursion - (re-search-forward (if diff-valid-unified-empty-line - "^[- \n]" "^[- ]") + (save-excursion + (re-search-forward (if diff-valid-unified-empty-line + "^[- \n]" "^[- ]") nil t nold) - (line-beginning-position 2))) + (line-beginning-position + ;; Skip potential "\ No newline at end of file". + (if (looking-at ".*\n\\\\") 3 2)))) (endnew ;; The hunk may end with a bunch of "+" lines, so the `end' is ;; then further than computed above. @@ -490,7 +492,9 @@ See http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01990.html") (re-search-forward (if diff-valid-unified-empty-line "^[+ \n]" "^[+ ]") nil t nnew) - (line-beginning-position 2)))) + (line-beginning-position + ;; Skip potential "\ No newline at end of file". + (if (looking-at ".*\n\\\\") 3 2))))) (setq end (max endold endnew))))) ;; We may have a first evaluation of `end' thanks to the hunk header. (unless end @@ -1972,8 +1976,13 @@ For use in `add-log-current-defun-function'." (goto-char beg) (pcase style (`unified - (while (re-search-forward "^\\(?:-.*\n\\)+\\(\\)\\(?:\\+.*\n\\)+" - end t) + (while (re-search-forward + (eval-when-compile + (let ((no-LF-at-eol-re "\\(?:\\\\.*\n\\)?")) + (concat "^\\(?:-.*\n\\)+" no-LF-at-eol-re + "\\(\\)" + "\\(?:\\+.*\n\\)+" no-LF-at-eol-re))) + end t) (smerge-refine-subst (match-beginning 0) (match-end 1) (match-end 1) (match-end 0) nil 'diff-refine-preproc props-r props-a))) From 63314e573028a6b8b75566b05193e34117221d03 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 26 Oct 2012 11:59:40 -0400 Subject: [PATCH 010/165] * lisp/emacs-lisp/macroexp.el (macroexp--expand-all): Obey byte-compile-warning-enabled-p. Fixes: debbugs:12486 --- lisp/ChangeLog | 3 +++ lisp/emacs-lisp/macroexp.el | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3c1638fd6f8..3473dbf6233 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2012-10-26 Stefan Monnier + * emacs-lisp/macroexp.el (macroexp--expand-all): + Obey byte-compile-warning-enabled-p (bug#12486). + * vc/diff-mode.el (diff-end-of-hunk): Also skip potential "no LF at eol". (diff-refine-hunk): Similarly, handle the "no LF at eol" (bug#12584). diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el index cab693fecac..2a3730745c6 100644 --- a/lisp/emacs-lisp/macroexp.el +++ b/lisp/emacs-lisp/macroexp.el @@ -154,11 +154,16 @@ Assumes the caller has bound `macroexpand-all-environment'." (if (and (not (eq form new-form)) ;It was a macro call. (car-safe form) (symbolp (car form)) - (get (car form) 'byte-obsolete-info)) + (get (car form) 'byte-obsolete-info) + (or (not (fboundp 'byte-compile-warning-enabled-p)) + (byte-compile-warning-enabled-p 'obsolete))) (let* ((fun (car form)) (obsolete (get fun 'byte-obsolete-info))) (macroexp--warn-and-return - (macroexp--obsolete-warning fun obsolete "macro") + (macroexp--obsolete-warning + fun obsolete + (if (symbolp (symbol-function fun)) + "alias" "macro")) new-form)) new-form))) (pcase form From c577256946cde9d0558a4395cc15cf6a0119adce Mon Sep 17 00:00:00 2001 From: Bastien Date: Fri, 26 Oct 2012 13:07:35 -0400 Subject: [PATCH 011/165] * lisp/face-remap.el: Use lexical-binding. (text-scale-adjust): Improve docstring. Use itself for the temporary overlay-map bindings, so as to repeat the "Use..." message each time. --- lisp/ChangeLog | 7 +++++++ lisp/face-remap.el | 33 ++++++++++++++++----------------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3473dbf6233..bda9ac0d4aa 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2012-10-26 Bastien + Stefan Monnier + + * face-remap.el: Use lexical-binding. + (text-scale-adjust): Improve docstring. Use itself for the temporary + overlay-map bindings, so as to repeat the "Use..." message each time. + 2012-10-26 Stefan Monnier * emacs-lisp/macroexp.el (macroexp--expand-all): diff --git a/lisp/face-remap.el b/lisp/face-remap.el index 09503d7c154..baf1eeb389d 100644 --- a/lisp/face-remap.el +++ b/lisp/face-remap.el @@ -1,4 +1,4 @@ -;;; face-remap.el --- Functions for managing `face-remapping-alist' +;;; face-remap.el --- Functions for managing `face-remapping-alist' -*- lexical-binding: t -*- ;; ;; Copyright (C) 2008-2012 Free Software Foundation, Inc. ;; @@ -285,7 +285,9 @@ See `text-scale-increase' for more details." ;;;###autoload (define-key ctl-x-map [(control ?0)] 'text-scale-adjust) ;;;###autoload (defun text-scale-adjust (inc) - "Increase or decrease the height of the default face in the current buffer. + "Adjust the height of the default face by INC. + +INC may be passed as a numeric prefix argument. The actual adjustment made depends on the final component of the key-binding used to invoke the command, with all modifiers removed: @@ -294,9 +296,11 @@ key-binding used to invoke the command, with all modifiers removed: - Decrease the default face height by one step 0 Reset the default face height to the global default -Then, continue to read input events and further adjust the face -height as long as the input event read (with all modifiers removed) -is one of the above. +When adjusting with `+' or `-', continue to read input events and +further adjust the face height as long as the input event read +\(with all modifiers removed) is `+' or `-'. + +When adjusting with `0', immediately finish. Each step scales the height of the default face by the variable `text-scale-mode-step' (a negative number of steps decreases the @@ -309,8 +313,7 @@ even when it is bound in a non-top-level keymap. For binding in a top-level keymap, `text-scale-increase' or `text-scale-decrease' may be more appropriate." (interactive "p") - (let ((first t) - (ev last-command-event) + (let ((ev last-command-event) (echo-keystrokes nil)) (let* ((base (event-basic-type ev)) (step @@ -320,19 +323,15 @@ a top-level keymap, `text-scale-increase' or (?0 0) (t inc)))) (text-scale-increase step) - ;; FIXME: do it after every "iteration of the loop". - (message "+,-,0 for further adjustment: ") + ;; (unless (zerop step) + (message "Use +,-,0 for further adjustment") (set-temporary-overlay-map (let ((map (make-sparse-keymap))) (dolist (mods '(() (control))) - (define-key map (vector (append mods '(?-))) 'text-scale-decrease) - (define-key map (vector (append mods '(?+))) 'text-scale-increase) - ;; = is unshifted + on most keyboards. - (define-key map (vector (append mods '(?=))) 'text-scale-increase) - (define-key map (vector (append mods '(?0))) - (lambda () (interactive) (text-scale-increase 0)))) - map) - t)))) + (dolist (key '(?- ?+ ?= ?0)) ;; = is often unshifted +. + (define-key map (vector (append mods (list key))) + (lambda () (interactive) (text-scale-adjust (abs inc)))))) + map))))) ;; ) ;; ---------------------------------------------------------------- From 372212dff2e3d84c676dc78ff27d7a0b5ec710de Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 26 Oct 2012 13:20:54 -0400 Subject: [PATCH 012/165] * lisp/bookmark.el (bookmark-completing-read): Set the completion category to `bookmark'. Fixes: debbugs:11131 --- lisp/ChangeLog | 5 +++++ lisp/bookmark.el | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index bda9ac0d4aa..c43b0c136e3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-10-26 Stefan Monnier + + * bookmark.el (bookmark-completing-read): Set the completion category + to `bookmark' (bug#11131). + 2012-10-26 Bastien Stefan Monnier diff --git a/lisp/bookmark.el b/lisp/bookmark.el index 838e5a5ec00..78ca6f22c8e 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el @@ -433,7 +433,11 @@ the empty string." ": "))) (str (completing-read prompt - bookmark-alist + (lambda (string pred action) + (if (eq action 'metadata) + '(metadata (category . bookmark)) + (complete-with-action + action bookmark-alist string pred))) nil 0 nil From 150f809c341e3b711a78daee528ad40f68052ce6 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 26 Oct 2012 14:01:30 -0400 Subject: [PATCH 013/165] * lisp/emacs-lisp/advice.el (ad-assemble-advised-definition): Silence bogus compiler warnings for ad-do-it. --- lisp/ChangeLog | 3 +++ lisp/emacs-lisp/advice.el | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c43b0c136e3..7cb9fb0793c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2012-10-26 Stefan Monnier + * emacs-lisp/advice.el (ad-assemble-advised-definition): + Silence bogus compiler warnings for ad-do-it. + * bookmark.el (bookmark-completing-read): Set the completion category to `bookmark' (bug#11131). diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el index 007871aa3a6..bd85238e23e 100644 --- a/lisp/emacs-lisp/advice.el +++ b/lisp/emacs-lisp/advice.el @@ -2897,8 +2897,11 @@ definition, INTERACTIVE if non-nil is the interactive form to be used, ORIG is a form that calls the body of the original unadvised function, and BEFORES, AROUNDS and AFTERS are the lists of advices with which ORIG should be modified. The assembled function will be returned." - - (let (before-forms around-form around-form-protected after-forms definition) + ;; The ad-do-it call should always have the right number of arguments, + ;; but the compiler might signal a bogus warning because it checks the call + ;; against the advertised calling convention. + (let ((around-form `(setq ad-return-value (with-no-warnings ,orig))) + before-forms around-form-protected after-forms definition) (dolist (advice befores) (cond ((and (ad-advice-protected advice) before-forms) @@ -2911,7 +2914,6 @@ should be modified. The assembled function will be returned." (append before-forms (ad-body-forms (ad-advice-definition advice))))))) - (setq around-form `(setq ad-return-value ,orig)) (dolist (advice (reverse arounds)) ;; If any of the around advices is protected then we ;; protect the complete around advice onion: From 59696ae01cb838bb5d6128cda29e4c825cdb1f7e Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 26 Oct 2012 14:35:36 -0400 Subject: [PATCH 014/165] * Makefile.in (EMACS_NAME): New variable. (EMACS, install-etc, uninstall): Use $EMACS_NAME. --- ChangeLog | 3 +++ Makefile.in | 17 +++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index c9498dbfeb1..d4aa9c935ea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2012-10-26 Glenn Morris + * Makefile.in (EMACS_NAME): New variable. + (EMACS, install-etc, uninstall): Use $EMACS_NAME. + * Makefile.in (EMACS, EMACSFULL): Transformations should not be applied to $EXEEXT. diff --git a/Makefile.in b/Makefile.in index 29aed2b0be8..78630ef58ff 100644 --- a/Makefile.in +++ b/Makefile.in @@ -259,7 +259,8 @@ GZIP_INFO = @GZIP_INFO@ TRANSFORM = @program_transform_name@ # What emacs should be called when installed. -EMACS = `echo emacs | sed '$(TRANSFORM)'`${EXEEXT} +EMACS_NAME = `echo emacs | sed '$(TRANSFORM)'` +EMACS = ${EMACS_NAME}${EXEEXT} EMACSFULL = `echo emacs-${version} | sed '$(TRANSFORM)'`${EXEEXT} # Subdirectories to make recursively. @@ -633,12 +634,12 @@ install-man: ## Install those items from etc/ that need to end up elsewhere. install-etc: umask 022; ${MKDIR_P} $(DESTDIR)${desktopdir} - dest=`echo emacs | sed '$(TRANSFORM)'`; \ tmp=etc/emacs.tmpdesktop; rm -f $${tmp}; \ - sed -e "/^Exec=emacs/ s/emacs/$${dest}/" \ - -e "/^Icon=emacs/ s/emacs/$${dest}/" \ + emacs_name=`echo emacs | sed '$(TRANSFORM)'`; \ + sed -e "/^Exec=emacs/ s/emacs/$${emacs_name}/" \ + -e "/^Icon=emacs/ s/emacs/$${emacs_name}/" \ ${srcdir}/etc/emacs.desktop > $${tmp}; \ - ${INSTALL_DATA} $${tmp} $(DESTDIR)${desktopdir}/$${dest}.desktop; \ + ${INSTALL_DATA} $${tmp} $(DESTDIR)${desktopdir}/${EMACS_NAME}.desktop; \ rm -f $${tmp} thisdir=`/bin/pwd`; \ cd ${iconsrcdir} || exit 1; umask 022 ; \ @@ -702,11 +703,11 @@ uninstall: fi) (cd $(DESTDIR)${bindir} && rm -f $(EMACSFULL) $(EMACS) || true) (if cd $(DESTDIR)${icondir}; then \ - rm -f hicolor/*x*/apps/`echo emacs | sed '$(TRANSFORM)'`.png \ - hicolor/scalable/apps/`echo emacs | sed '$(TRANSFORM)'`.svg \ + rm -f hicolor/*x*/apps/${EMACS_NAME}.png \ + hicolor/scalable/apps/${EMACS_NAME}.svg \ hicolor/scalable/mimetypes/`echo emacs-document | sed '$(TRANSFORM)'`.svg; \ fi) - -rm -f $(DESTDIR)${desktopdir}/`echo emacs | sed '$(TRANSFORM)'`.desktop + -rm -f $(DESTDIR)${desktopdir}/${EMACS_NAME}.desktop for file in snake-scores tetris-scores; do \ file=$(DESTDIR)${gamedir}/$${file}; \ [ -s $${file} ] || rm -f $$file; \ From 55f197b2192f30e1207fe67aef9ddbb02e2712e5 Mon Sep 17 00:00:00 2001 From: Jambunathan K Date: Fri, 26 Oct 2012 16:44:38 -0400 Subject: [PATCH 015/165] * lisp/minibuffer.el (completion-category-overrides): New completion category `bookmark'. Fixes: debbugs:11131 --- lisp/ChangeLog | 5 +++++ lisp/minibuffer.el | 1 + 2 files changed, 6 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7cb9fb0793c..4f6e37af6ee 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-10-26 Jambunathan K + + * minibuffer.el (completion-category-overrides): New completion + category `bookmark' (bug#11131). + 2012-10-26 Stefan Monnier * emacs-lisp/advice.el (ad-assemble-advised-definition): diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 4421e325b91..52c3a0ba659 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -743,6 +743,7 @@ completing buffer and file names, respectively." (const buffer) (const file) (const unicode-name) + (const bookmark) symbol) :value-type (set :tag "Properties to override" From 05b621a6b22cb1c856a9f223d79203cb3ceaf29a Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 27 Oct 2012 13:03:52 +0800 Subject: [PATCH 016/165] More Emacs 24.3 documentation updates. * doc/emacs/building.texi (Compilation): Document compilation-always-kill. * doc/emacs/files.texi (Misc File Ops): Symbolic links on Windows only work on Vista and later. * doc/emacs/frames.texi (Mouse Avoidance): Mention new variable mouse-avoidance-banish-position. * doc/emacs/mule.texi (Recognize Coding): Remove an unreferenced vindex. * doc/emacs/package.texi (Package Menu): Document the "new" status. * doc/emacs/programs.texi (Which Function): Which Function mode now works in all major modes by default. * doc/emacs/search.texi (Symbol Search): New node. * doc/emacs/windows.texi (Window Choice): Don't refer to the obsolete special-display feature. * commands.texi (Event Input Misc): Remove last-input-char. (Command Loop Info): Remove last-command-char. * display.texi (Fringe Bitmaps): Add exclamation-mark bitmap. * frames.texi (Initial Parameters): Don't mention the obsolete special-display feature. * hooks.texi (Standard Hooks): Remove obsolete hooks. * markers.texi (Information from Markers): Remove obsolete function buffer-has-markers-at. * minibuf.texi (High-Level Completion): Don't mention removed function iswitchb-read-buffer. * text.texi (Yanking): Document yank-handled-properties. * windows.texi (Choosing Window): Don't mention the obsolete special display feature. (Choosing Window Options): Remove obsolete special-display variables, and the functions special-display-p and special-display-popup-frame. * subr.el (insert-buffer-substring-as-yank): Doc fix. --- doc/emacs/ChangeLog | 22 ++++++++ doc/emacs/building.texi | 7 ++- doc/emacs/emacs.texi | 1 + doc/emacs/files.texi | 5 +- doc/emacs/frames.texi | 16 +++--- doc/emacs/mule.texi | 1 - doc/emacs/package.texi | 8 ++- doc/emacs/programs.texi | 13 ++--- doc/emacs/search.texi | 42 ++++++++++++++++ doc/emacs/windows.texi | 6 --- doc/lispref/ChangeLog | 26 ++++++++++ doc/lispref/anti.texi | 5 +- doc/lispref/commands.texi | 11 ---- doc/lispref/display.texi | 4 +- doc/lispref/frames.texi | 8 ++- doc/lispref/hooks.texi | 8 --- doc/lispref/markers.texi | 5 -- doc/lispref/minibuf.texi | 8 ++- doc/lispref/text.texi | 87 +++++++++++++++++++------------- doc/lispref/windows.texi | 103 -------------------------------------- etc/NEWS | 41 +++++++++++---- lisp/ChangeLog | 4 ++ lisp/subr.el | 4 +- 23 files changed, 219 insertions(+), 216 deletions(-) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index b911153f080..edfbecf9634 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,25 @@ +2012-10-27 Chong Yidong + + * frames.texi (Mouse Avoidance): Mention new variable + mouse-avoidance-banish-position. + + * programs.texi (Which Function): Which Function mode now works in + all major modes by default. + + * mule.texi (Recognize Coding): Remove an unreferenced vindex. + + * files.texi (Misc File Ops): Symbolic links on Windows only work + on Vista and later. + + * building.texi (Compilation): Document compilation-always-kill. + + * search.texi (Symbol Search): New node. + + * package.texi (Package Menu): Document the "new" status. + + * windows.texi (Window Choice): Don't refer to the obsolete + special-display feature. + 2012-10-24 Chong Yidong * mule.texi (Text Coding): set-buffer-file-coding-system can now diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index eaee16ac8d5..3a3630138de 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -108,11 +108,14 @@ directory, which is the directory in which the previous compilation was started. @findex kill-compilation +@vindex compilation-always-kill Starting a new compilation also kills any compilation already running in @file{*compilation*}, as the buffer can only handle one compilation at any time. However, @kbd{M-x compile} asks for -confirmation before actually killing a compilation that is running. -You can also kill the compilation process with @kbd{M-x +confirmation before actually killing a compilation that is running; to +always automatically kill the compilation without asking, change the +variable @code{compilation-always-kill} to @code{t}. You can also +kill a compilation process with the command @kbd{M-x kill-compilation}. To run two compilations at once, start the first one, then rename diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index a2eaaf673e5..e7e0feb9e88 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -373,6 +373,7 @@ Searching and Replacement * Incremental Search:: Search happens as you type the string. * Nonincremental Search:: Specify entire string and then search. * Word Search:: Search for sequence of words. +* Symbol Search:: Search for a source code symbol. * Regexp Search:: Search for match for a regexp. * Regexps:: Syntax of regular expressions. * Regexp Backslash:: Regular expression constructs starting with `\'. diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index e12bb385653..36cd3658e2d 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -1564,9 +1564,8 @@ open file @var{linkname} will refer to whatever file is named @var{target} at the time the opening is done, or will get an error if the name @var{target} is nonexistent at that time. This command does not expand the argument @var{target}, so that it allows you to specify -a relative name as the target of the link. Not all systems support -symbolic links; on systems that don't support them, this command is -not defined. +a relative name as the target of the link. On MS-Windows, this +command works only on MS Windows Vista and later. @kindex C-x i @findex insert-file diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index e1b849e630e..0ce5c64c0eb 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi @@ -1092,17 +1092,19 @@ to various values to move the mouse in several ways: @table @code @item banish -Move the mouse to the upper-right corner on any key-press; +Move the pointer to a corner of the frame on any key-press. You can +customize the variable @code{mouse-avoidance-banish-position} to +specify where the pointer goes when it is banished. @item exile -Move the mouse to the corner only if the cursor gets too close, -and allow it to return once the cursor is out of the way; +Banish the pointer only if the cursor gets too close, and allow it to +return once the cursor is out of the way. @item jump -If the cursor gets too close to the mouse, displace the mouse -a random distance & direction; +If the cursor gets too close to the pointer, displace the pointer by a +random distance and direction. @item animate -As @code{jump}, but shows steps along the way for illusion of motion; +As @code{jump}, but shows steps along the way for illusion of motion. @item cat-and-mouse -The same as @code{animate}; +The same as @code{animate}. @item proteus As @code{animate}, but changes the shape of the mouse pointer too. @end table diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi index d7ed6cc488f..ff0d43c566a 100644 --- a/doc/emacs/mule.texi +++ b/doc/emacs/mule.texi @@ -920,7 +920,6 @@ Unlike the previous two, this variable does not override any @samp{-*-coding:-*-} tag. @c FIXME? This seems somewhat out of place. Move to the Rmail section? -@vindex rmail-decode-mime-charset @vindex rmail-file-coding-system When you get new mail in Rmail, each message is translated automatically from the coding system it is written in, as if it were a diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index 4435590536f..df87cf9cb23 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -62,8 +62,12 @@ The package's status---normally one of @samp{available} (can be downloaded from the package archive), @samp{installed}, or @samp{built-in} (included in Emacs by default). -In some instances, the status can be @samp{held}, @samp{disabled}, or -@samp{obsolete}. @xref{Package Installation}. +The status can also be @samp{new}. This is equivalent to +@samp{available}, except that it means the package became newly +available on the package archive after your last invocation of +@kbd{M-x list-packages}. In other instances, a package may have the +status @samp{held}, @samp{disabled}, or @samp{obsolete}. +@xref{Package Installation}. @item A short description of the package. diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index e5340655770..b5bb33ad666 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -326,12 +326,13 @@ as you move around in a buffer. @findex which-function-mode @vindex which-func-modes To either enable or disable Which Function mode, use the command -@kbd{M-x which-function-mode}. Although Which Function mode is a -global minor mode, it takes effect only in certain major modes: those -listed in the variable @code{which-func-modes}. If the value of -@code{which-func-modes} is @code{t} rather than a list of modes, then -Which Function mode applies to all major modes that know how to -support it---in other words, all the major modes that support Imenu. +@kbd{M-x which-function-mode}. Which Function mode is a global minor +mode. By default, it takes effect in all major modes major modes that +know how to support it (i.e.@: all the major modes that support +Imenu). You can restrict it to a specific list of major modes by +changing the value of the variable @code{which-func-modes} from +@code{t} (which means to support all available major modes) to a list +of major mode names. @node Program Indent @section Indentation for Programs diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 7e46e416219..7dc5855cdfc 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -21,6 +21,7 @@ thing, but search for patterns instead of fixed strings. * Incremental Search:: Search happens as you type the string. * Nonincremental Search:: Specify entire string and then search. * Word Search:: Search for sequence of words. +* Symbol Search:: Search for a source code symbol. * Regexp Search:: Search for match for a regexp. * Regexps:: Syntax of regular expressions. * Regexp Backslash:: Regular expression constructs starting with `\'. @@ -467,6 +468,47 @@ the search string can match part of a word, so that the matching proceeds incrementally as you type. This additional laxity does not apply to the lazy highlight, which always matches whole words. +@node Symbol Search +@section Symbol Search +@cindex symbol search + + A @dfn{symbol search} is much like an ordinary search, except that +the boundaries of the search must match the boundaries of a symbol. +The meaning of @dfn{symbol} in this context depends on the major mode, +and usually refers to a source code token, such as a Lisp symbol in +Emacs Lisp mode. For instance, if you perform an incremental symbol +search for the Lisp symbol @code{forward-word}, it would not match +@code{isearch-forward-word}. This feature is thus mainly useful for +searching source code. + +@table @kbd +@item M-s _ +If incremental search is active, toggle symbol search mode +(@code{isearch-toggle-symbol}); otherwise, begin an incremental +forward symbol search (@code{isearch-forward-symbol}). +@item M-s _ @key{RET} @var{symbol} @key{RET} +Search forward for @var{symbol}, nonincrementally. +@item M-s _ C-r @key{RET} @var{symbol} @key{RET} +Search backward for @var{symbol}, nonincrementally. +@end table + +@kindex M-s _ +@findex isearch-forward-symbol + To begin a forward incremental symbol search, type @kbd{M-s _}. If +incremental search is not already active, this runs the command +@code{isearch-forward-symbol}. If incremental search is already +active, @kbd{M-s _} switches to a symbol search, preserving the +direction of the search and the current search string; you can disable +symbol search by typing @kbd{M-s _} again. In incremental symbol +search, only the beginning of the search string is required to match +the beginning of a symbol. + + To begin a nonincremental symbol search, type @kbd{M-s _ @key{RET}} +for a forward search, or @kbd{M-s _ C-r @key{RET}} or a backward +search. In nonincremental symbol searches, the beginning and end of +the search string are required to match the beginning and end of a +symbol, respectively. + @node Regexp Search @section Regular Expression Search @cindex regexp search diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index 04d1353006f..f87da5f3913 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi @@ -384,12 +384,6 @@ Otherwise, if the buffer is already displayed in an existing window, are considered, but windows on other frames are also reusable if you change @code{pop-up-frames} (see below) to @code{t}. -@item -Otherwise, if you specified that the buffer should be displayed in a -special frame by customizing @code{special-display-buffer-names} or -@code{special-display-regexps}, do so. @xref{Choosing Window -Options,,, elisp, The Emacs Lisp Reference Manual}. - @vindex pop-up-frames @item Otherwise, optionally create a new frame and display the buffer there. diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 25dee5212e5..c7fb29a6fb1 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,29 @@ +2012-10-27 Chong Yidong + + * minibuf.texi (High-Level Completion): Don't mention removed + function iswitchb-read-buffer. + + * commands.texi (Event Input Misc): Remove last-input-char. + (Command Loop Info): Remove last-command-char. + + * frames.texi (Initial Parameters): Don't mention the obsolete + special-display feature. + + * windows.texi (Choosing Window): Don't mention the obsolete + special display feature. + (Choosing Window Options): Remove obsolete special-display + variables, and the functions special-display-p and + special-display-popup-frame. + + * display.texi (Fringe Bitmaps): Add exclamation-mark bitmap. + + * hooks.texi (Standard Hooks): Remove obsolete hooks. + + * markers.texi (Information from Markers): Remove obsolete + function buffer-has-markers-at. + + * text.texi (Yanking): Document yank-handled-properties. + 2012-10-24 Paul Eggert Update manual for new time stamp format (Bug#12706). diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi index f1f4a089f1b..6ece2149733 100644 --- a/doc/lispref/anti.texi +++ b/doc/lispref/anti.texi @@ -71,9 +71,8 @@ been removed, including @code{display-buffer-overriding-action} and related variables, as well as the @var{action} argument to @code{display-buffer} and other functions. The way to programmatically control how Emacs chooses a window to display a -buffer is to bind the right combination of -@code{special-display-regexps}, @code{pop-up-frames}, and other -variables. +buffer is to bind the right combination of @code{pop-up-frames} and +other variables. @item The standard completion interface has been simplified, eliminating the diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi index 9ffa2b74857..c42e4b3b6dc 100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi @@ -186,7 +186,6 @@ buffer: } prompts the user with @samp{Frobnicate buffer: } to enter the name of an existing buffer, which becomes the second and final argument. -@c Emacs 19 feature The prompt string can use @samp{%} to include previous argument values (starting with the first argument) in the prompt. This is done using @code{format} (@pxref{Formatting Strings}). For example, here is how @@ -205,7 +204,6 @@ If @samp{*} appears at the beginning of the string, then an error is signaled if the buffer is read-only. @cindex @samp{@@} in @code{interactive} -@c Emacs 19 feature If @samp{@@} appears at the beginning of the string, and if the key sequence used to invoke the command includes any mouse events, then the window associated with the first of those events is selected @@ -910,7 +908,6 @@ up a menu. It is also used internally by @code{y-or-n-p} @end defvar @defvar last-command-event -@defvarx last-command-char This variable is set to the last input event that was read by the command loop as part of a command. The principal use of this variable is in @code{self-insert-command}, which uses it to decide which @@ -926,11 +923,8 @@ last-command-event @noindent The value is 5 because that is the @acronym{ASCII} code for @kbd{C-e}. - -The alias @code{last-command-char} is obsolete. @end defvar -@c Emacs 19 feature @defvar last-event-frame This variable records which frame the last input event was directed to. Usually this is the frame that was selected when the event was @@ -2386,7 +2380,6 @@ mouse on the window's mode line, you get two events, like this: @end example @defvar num-input-keys -@c Emacs 19 feature This variable's value is the number of key sequences processed so far in this Emacs session. This includes key sequences read from the terminal and key sequences read from keyboard macros being executed. @@ -2539,7 +2532,6 @@ then continues to wait for a valid input character, or keyboard-quit. @code{keyboard-translate-table} (if applicable), before returning it from @code{read-event}. -@c Emacs 19 feature @defvar extra-keyboard-modifiers This variable lets Lisp programs ``press'' the modifier keys on the keyboard. The value is a character. Only the modifiers of the @@ -2755,7 +2747,6 @@ may return @code{t} when no input is available. @end defun @defvar last-input-event -@defvarx last-input-char This variable records the last terminal input event read, whether as part of a command or explicitly by a Lisp program. @@ -2774,8 +2765,6 @@ this expression) remains the value of @code{last-command-event}. @result{} 49 @end group @end example - -The alias @code{last-input-char} is obsolete. @end defvar @defmac while-no-input body@dots{} diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 0b5ada43744..68701a47126 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -3550,8 +3550,8 @@ Used to indicate buffer boundaries. @itemx @code{vertical-bar}, @code{horizontal-bar} Used for different types of fringe cursors. -@item @code{empty-line}, @code{question-mark}, @code{exclamation-mark} -Unused. +@item @code{empty-line}, @code{exclamation-mark}, @code{question-mark}, @code{exclamation-mark} +Not used by core Emacs features. @end table @noindent diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index af6f4b4c079..665b75048f3 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -437,13 +437,11 @@ Emacs frames---the first frame, and subsequent frames. When using the X Window System, you can get the same results by means of X resources in many cases. -Setting this variable does not affect existing frames. +Setting this variable does not affect existing frames. Furthermore, +functions that display a buffer in a separate frame may override the +default parameters by supplying their own parameters. @end defopt -Functions that display a buffer in a separate frame can override the -default parameters by supplying their own parameters. @xref{Definition -of special-display-frame-alist}. - If you invoke Emacs with command-line options that specify frame appearance, those options take effect by adding elements to either @code{initial-frame-alist} or @code{default-frame-alist}. Options diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi index a7f01243641..a6ac2c70e84 100644 --- a/doc/lispref/hooks.texi +++ b/doc/lispref/hooks.texi @@ -120,14 +120,7 @@ The command loop runs this soon after @code{post-command-hook} (q.v.). @item delete-terminal-functions @xref{Multiple Terminals}. -@ignore -@item disabled-command-function -@xref{Disabling Commands}. -@end ignore - -@item display-buffer-function @itemx pop-up-frame-function -@itemx special-display-function @itemx split-window-preferred-function @xref{Choosing Window Options}. @@ -272,7 +265,6 @@ deferred-action-function input-method-function load-read-function load-source-file-function -macro-declaration-function read-buffer-function ring-bell-function select-safe-coding-system-function diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi index 80136f2e6f4..fa884269b36 100644 --- a/doc/lispref/markers.texi +++ b/doc/lispref/markers.texi @@ -307,11 +307,6 @@ This function returns the buffer that @var{marker} points into, or @end example @end defun -@defun buffer-has-markers-at position -This function returns @code{t} if one or more markers -point at position @var{position} in the current buffer. -@end defun - @node Marker Insertion Types @section Marker Insertion Types diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi index 79c83144f77..7243f46b882 100644 --- a/doc/lispref/minibuf.texi +++ b/doc/lispref/minibuf.texi @@ -1218,11 +1218,9 @@ Buffer name (default foo): @point{} @end defun @defopt read-buffer-function -This variable specifies how to read buffer names. The function is -called with the arguments passed to @code{read-buffer}. For example, -if you set this variable to @code{iswitchb-read-buffer}, all Emacs -commands that call @code{read-buffer} to read a buffer name will -actually use the @code{iswitchb} package to read it. +This variable, if non-@code{nil}, specifies a function for reading +buffer names. @code{read-buffer} calls this function instead of doing +its usual work, with the same arguments passed to @code{read-buffer}. @end defopt @defopt read-buffer-completion-ignore-case diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 50b97cd4204..57df02b74a0 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -899,31 +899,34 @@ In Lisp programs, it is better to use @code{kill-new} or @node Yanking @subsection Yanking - Yanking means inserting text from the kill ring, but it does -not insert the text blindly. Yank commands and some other commands -use @code{insert-for-yank} to perform special processing on the -text that they copy into the buffer. + Yanking means inserting text from the kill ring, but it does not +insert the text blindly. The @code{yank} command, and related +commands, use @code{insert-for-yank} to perform special processing on +the text before it is inserted. @defun insert-for-yank string -This function normally works like @code{insert} except that it doesn't -insert the text properties (@pxref{Text Properties}) in the list -variable @code{yank-excluded-properties}. However, if any part of -@var{string} has a non-@code{nil} @code{yank-handler} text property, -that property can do various special processing on that part of the -text being inserted. +This function works like @code{insert}, except that it processes the +text in @var{string} according to the @code{yank-handler} text +property, as well as the variables @code{yank-handled-properties} and +@code{yank-excluded-properties} (see below), before inserting the +result into the current buffer. @end defun @defun insert-buffer-substring-as-yank buf &optional start end -This function resembles @code{insert-buffer-substring} except that it -doesn't insert the text properties in the -@code{yank-excluded-properties} list. +This function resembles @code{insert-buffer-substring}, except that it +processes the text according to @code{yank-handled-properties} and +@code{yank-excluded-properties}. (It does not handle the +@code{yank-handler} property, which does not normally occur in buffer +text anyway.) @end defun - You can put a @code{yank-handler} text property on all or part of -the text to control how it will be inserted if it is yanked. The -@code{insert-for-yank} function looks for that property. The property -value must be a list of one to four elements, with the following -format (where elements after the first may be omitted): + If you put a @code{yank-handler} text property on all or part of a +string, that alters how @code{insert-for-yank} inserts the string. If +different parts of the string have different @code{yank-handler} +values (comparison being done with @code{eq}), each substring is +handled separately. The property value must be a list of one to four +elements, with the following format (where elements after the first +may be omitted): @example (@var{function} @var{param} @var{noexclude} @var{undo}) @@ -933,22 +936,21 @@ format (where elements after the first may be omitted): @table @var @item function -When @var{function} is present and non-@code{nil}, it is called instead of -@code{insert} to insert the string. @var{function} takes one -argument---the string to insert. +When @var{function} is non-@code{nil}, it is called instead of +@code{insert} to insert the string, with one argument---the string to +insert. @item param If @var{param} is present and non-@code{nil}, it replaces @var{string} -(or the part of @var{string} being processed) as the object passed to -@var{function} (or @code{insert}); for example, if @var{function} is -@code{yank-rectangle}, @var{param} should be a list of strings to -insert as a rectangle. +(or the substring of @var{string} being processed) as the object +passed to @var{function} (or @code{insert}). For example, if +@var{function} is @code{yank-rectangle}, @var{param} should be a list +of strings to insert as a rectangle. @item noexclude -If @var{noexclude} is present and non-@code{nil}, the normal removal of the -yank-excluded-properties is not performed; instead @var{function} is -responsible for removing those properties. This may be necessary -if @var{function} adjusts point before or after inserting the object. +If @var{noexclude} is present and non-@code{nil}, that disables the +normal action of @code{yank-handled-properties} and +@code{yank-excluded-properties} on the inserted string. @item undo If @var{undo} is present and non-@code{nil}, it is a function that will be @@ -959,14 +961,29 @@ the @var{undo} value. @end table @cindex yanking and text properties -@defopt yank-excluded-properties -Yanking discards certain text properties from the yanked text, as -described above. The value of this variable is the list of properties -to discard. Its default value contains properties that might lead to -annoying results, such as causing the text to respond to the mouse or -specifying key bindings. +@defopt yank-handled-properties +This variable specifies special text property handling conditions for +yanked text. It takes effect after the text has been inserted (either +normally, or via the @code{yank-handler} property), and prior to +@code{yank-excluded-properties} taking effect. + +The value should be an alist of elements @code{(@var{prop} +. @var{fun})}. Each alist element is handled in order. The inserted +text is scanned for stretches of text having text properties @code{eq} +to @var{prop}; for each such stretch, @var{fun} is called with three +arguments: the value of the property, and the start and end positions +of the text. @end defopt +@defopt yank-excluded-properties +The value of this variable is the list of properties to remove from +inserted text. Its default value contains properties that might lead +to annoying results, such as causing the text to respond to the mouse +or specifying key bindings. It takes effect after +@code{yank-handled-properties}. +@end defopt + + @node Yank Commands @subsection Functions for Yanking diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index ea48a46359c..31d33bffbdd 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -1631,11 +1631,6 @@ The variable @code{display-buffer-overriding-action}. @item The user option @code{display-buffer-alist}. -@item -A special action for handling @code{special-display-buffer-names} and -@code{special-display-regexps}, if either of those variables is -non-@code{nil}. @xref{Choosing Window Options}. - @item The @var{action} argument. @@ -1864,91 +1859,6 @@ Parameters}), which is used by the default function in @code{nil}. @end defopt -@defopt special-display-buffer-names -A list of buffer names identifying buffers that should be displayed -specially. If the name of @var{buffer-or-name} is in this list, -@code{display-buffer} handles the buffer specially. By default, special -display means to give the buffer a dedicated frame. - -If an element is a list, instead of a string, then the @sc{car} of that -list is the buffer name, and the rest of that list says how to create -the frame. There are two possibilities for the rest of that list (its -@sc{cdr}): It can be an alist, specifying frame parameters, or it can -contain a function and arguments to give to it. (The function's first -argument is always the buffer to be displayed; the arguments from the -list come after that.) - -For example: - -@example -(("myfile" (minibuffer) (menu-bar-lines . 0))) -@end example - -@noindent -specifies to display a buffer named @samp{myfile} in a dedicated frame -with specified @code{minibuffer} and @code{menu-bar-lines} parameters. - -The list of frame parameters can also use the phony frame parameters -@code{same-frame} and @code{same-window}. If the specified frame -parameters include @code{(same-window . @var{value})} and @var{value} -is non-@code{nil}, that means to display the buffer in the current -selected window. Otherwise, if they include @code{(same-frame . -@var{value})} and @var{value} is non-@code{nil}, that means to display -the buffer in a new window in the currently selected frame. -@end defopt - -@defopt special-display-regexps -A list of regular expressions specifying buffers that should be -displayed specially. If the buffer's name matches any of the regular -expressions in this list, @code{display-buffer} handles the buffer -specially. By default, special display means to give the buffer a -dedicated frame. - -If an element is a list, instead of a string, then the @sc{car} of the -list is the regular expression, and the rest of the list says how to -create the frame. See @code{special-display-buffer-names} above. -@end defopt - -@defun special-display-p buffer-name -This function returns non-@code{nil} if displaying a buffer -named @var{buffer-name} with @code{display-buffer} would -create a special frame. The value is @code{t} if it would -use the default frame parameters, or else the specified list -of frame parameters. -@end defun - -@defopt special-display-function -This variable holds the function to call to display a buffer specially. -It receives the buffer as an argument, and should return the window in -which it is displayed. The default value of this variable is -@code{special-display-popup-frame}, see below. -@end defopt - -@defun special-display-popup-frame buffer &optional args -This function tries to make @var{buffer} visible in a frame of its own. -If @var{buffer} is already displayed in some window, it makes that -window's frame visible and raises it. Otherwise, it creates a frame -that is dedicated to @var{buffer}. The return value is the window used -to display @var{buffer}. - -If @var{args} is an alist, it specifies frame parameters for the new -frame. If @var{args} is a list whose @sc{car} is a symbol, then -@code{(car @var{args})} is a function to actually create and -set up the frame; it is called with @var{buffer} as first argument, and -@code{(cdr @var{args})} as additional arguments. - -This function always uses an existing window displaying @var{buffer}, -whether or not it is in a frame of its own; but if you set up the above -variables in your init file, before @var{buffer} was created, then -presumably the window was previously made by this function. -@end defun - -@defopt special-display-frame-alist -@anchor{Definition of special-display-frame-alist} -This variable holds frame parameters for -@code{special-display-popup-frame} to use when it creates a frame. -@end defopt - @defopt same-window-buffer-names A list of buffer names for buffers that should be displayed in the selected window. If a buffer's name is in this list, @@ -1969,19 +1879,6 @@ named @var{buffer-name} with @code{display-buffer} would put it in the selected window. @end defun -@c Emacs 19 feature -@defopt display-buffer-function -This variable is the most flexible way to customize the behavior of -@code{display-buffer}. If it is non-@code{nil}, it should be a function -that @code{display-buffer} calls to do the work. The function should -accept two arguments, the first two arguments that @code{display-buffer} -received. It should choose or create a window, display the specified -buffer in it, and then return the window. - -This variable takes precedence over all the other options described -above. -@end defopt - @node Window History @section Window History @cindex window history diff --git a/etc/NEWS b/etc/NEWS index dbf580285e8..45ca56f5da6 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -157,6 +157,7 @@ or expression to evaluate. --- *** New option `server-auth-key' specifies a shared server key. ++++ ** In the Package Menu, newly-available packages are listed as "new", and sorted above the other "available" packages by default. @@ -229,7 +230,7 @@ This applies to both ordinary and regexp Isearch. *** New option `replace-lax-whitespace'. If non-nil, `query-replace' uses flexible whitespace matching too. The default is nil. - ++++ *** Global `M-s _' starts a symbol (identifier) incremental search, and `M-s _' in Isearch toggles symbol search mode. `M-s c' in Isearch toggles search case-sensitivity. @@ -263,6 +264,7 @@ append-to-register and M-x prepend-to-register. ** New command `C-x r M-w' (copy-rectangle-as-kill). It copies the region-rectangle as the last rectangle kill. ++++ ** New option `yank-handled-properties' allows processing of text properties on yanked text, in more ways that are more general than just removing them, as done by `yank-excluded-properties'. @@ -327,7 +329,7 @@ A side effect is that vars without corresponding value are bound to nil rather than making them unbound. ** Compilation mode - ++++ *** New option `compilation-always-kill'. ** Customize @@ -441,9 +443,9 @@ the FFAP prompt. The default is now '("ftp"). The old binding for `/ M' (filter by used-mode) is now bound to `/ m'. ** Mouse Avoidance mode - -The new variable `mouse-avoidance-banish-position' can now be used to -customize Mouse Avoidance mode further. ++++ +*** New variable `mouse-avoidance-banish-position' specifies where the +`banish' mouse avoidance setting moves the mouse. +++ ** notifications.el supports now version 1.2 of the Notifications API. @@ -595,6 +597,7 @@ and the `attributes' slot is always nil. The `url-retrieve' function now uses this to encode its URL argument, in case that is not properly encoded. +--- ** VHDL mode *** The free software compiler GHDL is supported (and now the default). @@ -605,7 +608,10 @@ in case that is not properly encoded. *** Accepts \r and \f as whitespace. -** which-function-mode now applies to all applicable major modes by default. +** Which Function mode ++++ +*** `which-func-modes' now defaults to t, so Which Function mode, when +enabled, applies to all applicable major modes. --- ** winner-mode-hook now runs when the mode is disabled, as well as when it is @@ -708,6 +714,7 @@ still be supported for Emacs 24.x. Some Lisp symbols have been renamed to avoid problems with spelling that is incorrect or inconsistent with how Emacs normally spells a word. +--- *** Renamed functions **** hangul-input-method-inactivate -> hangul-input-method-deactivate @@ -719,22 +726,22 @@ that is incorrect or inconsistent with how Emacs normally spells a word. viper-deactivate-input-method-action **** ucs-input-inactivate -> ucs-input-deactivate +--- *** Renamed hooks The old hooks are still supported for backward compatibility, but they are deprecated and will be removed eventually. - **** input-method-inactivate-hook -> input-method-deactivate-hook **** robin-inactivate-hook -> robin-deactivate-hook **** quail-inactivate-hook -> quail-deactivate-hook +--- *** Renamed Lisp variables - **** follow-deactive-menu -> follow-inactive-menu **** inactivate-current-input-method-function -> deactivate-current-input-method-function ++++ ** Some obsolete functions, variables, and faces were removed: - *** `facemenu-unlisted-faces' *** `rmail-decode-mime-charset' *** `last-input-char', `last-command-char', `unread-command-char'. @@ -835,11 +842,17 @@ appropriate entries in the `display-buffer-alist' function introduced in Emacs 24.1: +++ **** `display-buffer-reuse-frames' ++++ **** `special-display-regexps' ++++ **** `special-display-frame-alist' ++++ **** `special-display-buffer-names' ++++ **** `special-display-function' ++++ **** `display-buffer-function' +--- **** `dired-shrink-to-fit' ** Time @@ -897,19 +910,26 @@ describing the cycle. ** New macros `setq-local' and `defvar-local'. ++++ ** New fringe bitmap `exclamation-mark'. ** Face underlining can now use a wave. See the "Face Attributes" section of the Elisp manual. ** The following functions and variables are obsolete: - +--- *** `automount-dir-prefix' ++++ *** `buffer-has-markers-at' +--- *** `macro-declaration-function' (use `macro-declarations-alist') +--- *** `window-system-version' +--- *** `dired-pop-to-buffer' (use `dired-mark-pop-up') +--- *** `query-replace-interactive' +--- *** `font-list-limit' (has had no effect since Emacs < 23) @@ -928,6 +948,7 @@ machinery to convert between Cygwin and Windows-native file names. Emacs now supports mouse highlight, help-echo (in the echo area), and `mouse-autoselect-window'. ++++ ** On MS Windows Vista and later Emacs now supports symbolic links. +++ diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4f6e37af6ee..d3462315fae 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-10-27 Chong Yidong + + * subr.el (insert-buffer-substring-as-yank): Doc fix. + 2012-10-26 Jambunathan K * minibuffer.el (completion-category-overrides): New completion diff --git a/lisp/subr.el b/lisp/subr.el index 94012fc47de..d328b7cddf5 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -2949,8 +2949,8 @@ They default to the values of (point-min) and (point-max) in BUFFER." BUFFER may be a buffer or a buffer name. Arguments START and END are character positions specifying the substring. They default to the values of (point-min) and (point-max) in BUFFER. -Strip text properties from the inserted text according to -`yank-excluded-properties'." +Before insertion, process text properties according to +`yank-handled-properties' and `yank-excluded-properties'." ;; Since the buffer text should not normally have yank-handler properties, ;; there is no need to handle them here. (let ((opoint (point))) From df171c230cc8a5da73684740ff5cfa364fa8c1c4 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Sat, 27 Oct 2012 10:58:30 +0200 Subject: [PATCH 017/165] In display-time-world restore fit-window-to-buffer behavior. * window.el (display-buffer): In doc-string describe window-height and window-width alist entries. * time.el (display-time-world): Restore fit-window-to-buffer behavior. --- lisp/ChangeLog | 10 +++++++++- lisp/time.el | 3 ++- lisp/window.el | 16 ++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d3462315fae..defa35f09ee 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2012-10-27 Martin Rudalics + + * window.el (display-buffer): In doc-string describe + window-height and window-width alist entries. + + * time.el (display-time-world): Restore fit-window-to-buffer + behavior. + 2012-10-27 Chong Yidong * subr.el (insert-buffer-substring-as-yank): Doc fix. @@ -253,7 +261,7 @@ Recover input meta mode when the new coding system doesn not use 8-bit. Supply TERMINAL arg to set-input-meta-mode. -2012-10-17 Michael Heerdegen (tiny change) +2012-10-17 Michael Heerdegen * wdired.el (wdired-old-marks): New variable. (wdired-change-to-wdired-mode): Locally set wdired-old-marks. diff --git a/lisp/time.el b/lisp/time.el index 7473994ffa5..a3bbee0c893 100644 --- a/lisp/time.el +++ b/lisp/time.el @@ -557,7 +557,8 @@ To turn off the world time display, go to that window and type `q'." (run-at-time t display-time-world-timer-second 'display-time-world-timer)) (with-current-buffer (get-buffer-create display-time-world-buffer-name) (display-time-world-display display-time-world-list) - (display-buffer display-time-world-buffer-name) + (display-buffer display-time-world-buffer-name + (cons nil '((window-height . fit-window-to-buffer)))) (display-time-world-mode))) (defun display-time-world-timer () diff --git a/lisp/window.el b/lisp/window.el index fa7b08375ce..bd043390d90 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -5414,6 +5414,22 @@ Recognized alist entries include: parameters to give a new frame, if one is created. + `window-height' -- Value specifies either an integer (the number + of lines of a new window), a floating point number (the + fraction of a new window with respect to the height of the + frame's root window) or a function to be called with one + argument - a new window. The function is supposed to adjust + the height of the window; its return value is ignored. + Suitable functions are `shrink-window-if-larger-than-buffer' + and `fit-window-to-buffer'. + + `window-width' -- Value specifies either an integer (the number + of columns of a new window), a floating point number (the + fraction of a new window with respect to the width of the + frame's root window) or a function to be called with one + argument - a new window. The function is supposed to adjust + the width of the window; its return value is ignored. + The ACTION argument to `display-buffer' can also have a non-nil and non-list value. This means to display the buffer in a window other than the selected one, even if it is already displayed in From e2f022a3fa6986eea4df942dc52a00ae70ec193f Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Sat, 27 Oct 2012 12:17:14 +0300 Subject: [PATCH 018/165] * lisp/wdired.el (wdired-keep-marker-rename): New defcustom. (wdired-do-renames): Use it instead of `dired-keep-marker-rename'. * lisp/dired.el (dired-keep-marker-rename): Add reference to `wdired-keep-marker-rename' in the docstring. Add default character value ?R to display initially in Customization UI instead of ?@. Fixes: debbugs:11795 --- lisp/ChangeLog | 11 +++++++++++ lisp/dired.el | 7 +++++-- lisp/wdired.el | 25 ++++++++++++++++++++++--- 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index defa35f09ee..c6e940ba0fa 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,14 @@ +2012-10-27 Juri Linkov + + * wdired.el (wdired-keep-marker-rename): New defcustom. + (wdired-do-renames): Use it instead of `dired-keep-marker-rename'. + (Bug#11795) + + * dired.el (dired-keep-marker-rename): Add reference to + `wdired-keep-marker-rename' in the docstring. + Add default character value ?R to display initially in + Customization UI instead of ?@. + 2012-10-27 Martin Rudalics * window.el (display-buffer): In doc-string describe diff --git a/lisp/dired.el b/lisp/dired.el index fb2f7281130..5f7ee48a810 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -137,9 +137,12 @@ A value of t means move to first file." "Controls marking of renamed files. If t, files keep their previous marks when they are renamed. If a character, renamed files (whether previously marked or not) -are afterward marked with that character." +are afterward marked with that character. +This option affects only files renamed by `dired-do-rename' and +`dired-do-rename-regexp'. See `wdired-keep-marker-rename' +if you want to do the same for files renamed in WDired mode." :type '(choice (const :tag "Keep" t) - (character :tag "Mark")) + (character :tag "Mark" :value ?R)) :group 'dired-mark) (defcustom dired-keep-marker-copy ?C diff --git a/lisp/wdired.el b/lisp/wdired.el index 266d1993389..9851b2046d9 100644 --- a/lisp/wdired.el +++ b/lisp/wdired.el @@ -140,6 +140,20 @@ program `dired-chmod-program', which must exist." (other :tag "Bits freely editable" advanced)) :group 'wdired) +(defcustom wdired-keep-marker-rename t + ;; Use t as default so that renamed files "take their markers with them". + "Controls marking of files renamed in WDired. +If t, files keep their previous marks when they are renamed. +If a character, renamed files (whether previously marked or not) +are afterward marked with that character. +This option affects only files renamed by `wdired-finish-edit'. +See `dired-keep-marker-rename' if you want to do the same for files +renamed by `dired-do-rename' and `dired-do-rename-regexp'." + :type '(choice (const :tag "Keep" t) + (character :tag "Mark" :value ?R)) + :version "24.3" + :group 'wdired) + (defvar wdired-mode-map (let ((map (make-sparse-keymap))) (define-key map "\C-x\C-s" 'wdired-finish-edit) @@ -416,6 +430,8 @@ non-nil means return old filename." (set-buffer-modified-p nil) (setq buffer-undo-list nil)) +(declare-function dired-add-entry "dired-aux" (filename &optional marker-char relative)) + (defun wdired-do-renames (renames) "Perform RENAMES in parallel." (let ((residue ()) @@ -471,9 +487,12 @@ non-nil means return old filename." (dired-rename-file file-ori file-new overwrite) (dired-remove-file file-ori) - (dired-add-file file-new (if (integerp dired-keep-marker-rename) - dired-keep-marker-rename - old-mark))) + (dired-add-file + file-new + (cond ((integerp wdired-keep-marker-rename) + wdired-keep-marker-rename) + (wdired-keep-marker-rename old-mark) + (t nil)))) (error (setq errors (1+ errors)) (dired-log (concat "Rename `" file-ori "' to `" From d069271c256aa0b4e6bee71a5995c36d20030cd5 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2012 11:54:04 +0200 Subject: [PATCH 019/165] Fix help-echo text in profiler-report-make-entry-part. lisp/profiler.el (profiler-report-make-entry-part): Fix help-echo text to match the real keybindings. --- lisp/ChangeLog | 5 +++++ lisp/profiler.el | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c6e940ba0fa..d7349617d58 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-10-27 Eli Zaretskii + + * profiler.el (profiler-report-make-entry-part): Fix help-echo + text to match the real keybindings. + 2012-10-27 Juri Linkov * wdired.el (wdired-keep-marker-rename): New defcustom. diff --git a/lisp/profiler.el b/lisp/profiler.el index e9261eb1af7..38c0c0b83a7 100644 --- a/lisp/profiler.el +++ b/lisp/profiler.el @@ -353,7 +353,9 @@ this variable directly.") (propertize (symbol-name entry) 'face 'link 'mouse-face 'highlight - 'help-echo "mouse-2 or RET jumps to definition")) + 'help-echo "\ +mouse-2: jump to definition\n\ +RET: expand or collapse")) (t (profiler-format-entry entry))))) (propertize string 'profiler-entry entry))) From caa5e5a44dd23b77dfc38f7dd8b63af241149410 Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Sat, 27 Oct 2012 13:06:08 +0200 Subject: [PATCH 020/165] Fix typo in screen.texi. --- doc/emacs/ChangeLog | 4 ++++ doc/emacs/screen.texi | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index edfbecf9634..3c21a60394a 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,7 @@ +2012-10-27 Bastien Guerry + + * screen.texi (Menu Bar): Fix typo. + 2012-10-27 Chong Yidong * frames.texi (Mouse Avoidance): Mention new variable diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi index 989cf998bfd..2b8edaf9375 100644 --- a/doc/emacs/screen.texi +++ b/doc/emacs/screen.texi @@ -314,5 +314,5 @@ the echo area. You can use the up and down arrow keys to move through the menu to different items, and then you can type @key{RET} to select the item. Each menu item is also designated by a letter or digit (usually the initial of some word in the item's name). This letter or -digit is separated from the item name by @samp{=>}. You can type the +digit is separated from the item name by @samp{==>}. You can type the item's letter or digit to select the item. From 6c16c13ed185acf16dc8f1c6ba458f1e59328e84 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2012 13:21:26 +0200 Subject: [PATCH 021/165] Fix w32 implementation of itimers: overflow and ITIMER_PROF. Avoid overflow in w32 implementation of interval timers. When possible, for ITIMER_PROF count only times the main thread actually executes. src/w32proc.c : 'expire' and 'reload' are now ULONGLONG types. Likewise for all the other data which was previously clock_t. (GetThreadTimes_Proc): New typedef. (w32_get_timer_time): New function, returns a suitable time value for the timer. (timer_loop): Enter critical section when accessing ULONGLONG values of the itimer_data struct, as these accesses are no longer atomic. Call 'w32_get_timer_time' instead of 'clock'. (init_timers): Initialize s_pfn_Get_Thread_Times. (start_timer_thread): Don't assign itimer->caller_thread here. (getitimer): Assign itimer->caller_thread here. (setitimer): Always call getitimer to get the value of ticks_now. --- src/ChangeLog | 19 ++++++ src/w32proc.c | 177 ++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 147 insertions(+), 49 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index bf519556334..2efebc6754d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,22 @@ +2012-10-27 Eli Zaretskii + + Avoid overflow in w32 implementation of interval timers. When + possible, for ITIMER_PROF count only times the main thread + actually executes. + * w32proc.c : 'expire' and 'reload' are now + ULONGLONG types. Likewise for all the other data which was + previously clock_t. + (GetThreadTimes_Proc): New typedef. + (w32_get_timer_time): New function, returns a suitable time value + for the timer. + (timer_loop): Enter critical section when accessing ULONGLONG + values of the itimer_data struct, as these accesses are no longer + atomic. Call 'w32_get_timer_time' instead of 'clock'. + (init_timers): Initialize s_pfn_Get_Thread_Times. + (start_timer_thread): Don't assign itimer->caller_thread here. + (getitimer): Assign itimer->caller_thread here. + (setitimer): Always call getitimer to get the value of ticks_now. + 2012-10-26 Eli Zaretskii * w32fns.c (w32_wnd_proc) : Don't enable tracking of diff --git a/src/w32proc.c b/src/w32proc.c index 57b3860cb76..fe3bbde167c 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -244,28 +244,89 @@ setpgrp (int pid, int gid) the thread calls the appropriate signal handler when the timer expires, after stopping the thread which installed the timer. */ -/* FIXME: clock_t counts overflow after 49 days, need to handle the - wrap-around. */ struct itimer_data { - clock_t expire; - clock_t reload; + ULONGLONG expire; + ULONGLONG reload; int terminate; int type; HANDLE caller_thread; HANDLE timer_thread; }; -static clock_t ticks_now; +static ULONGLONG ticks_now; static struct itimer_data real_itimer, prof_itimer; -static clock_t clocks_min; +static ULONGLONG clocks_min; /* If non-zero, itimers are disabled. Used during shutdown, when we delete the critical sections used by the timer threads. */ static int disable_itimers; static CRITICAL_SECTION crit_real, crit_prof; +/* GetThreadTimes is not available on Windows 9X and posibly also on 2K. */ +typedef BOOL (WINAPI *GetThreadTimes_Proc) ( + HANDLE hThread, + LPFILETIME lpCreationTime, + LPFILETIME lpExitTime, + LPFILETIME lpKernelTime, + LPFILETIME lpUserTime); + +static GetThreadTimes_Proc s_pfn_Get_Thread_Times; + +/* Return a suitable time value, in 1-ms units, for THREAD, a handle + to a thread. If THREAD is NULL or an invalid handle, return the + current wall-clock time since January 1, 1601 (UTC). Otherwise, + return the sum of kernel and user times used by THREAD since it was + created, plus its creation time. */ +static ULONGLONG +w32_get_timer_time (HANDLE thread) +{ + ULONGLONG retval; + int use_system_time = 1; + + if (thread && thread != INVALID_HANDLE_VALUE + && s_pfn_Get_Thread_Times != NULL) + { + FILETIME creation_ftime, exit_ftime, kernel_ftime, user_ftime; + ULARGE_INTEGER temp_creation, temp_kernel, temp_user; + + if (s_pfn_Get_Thread_Times (thread, &creation_ftime, &exit_ftime, + &kernel_ftime, &user_ftime)) + { + use_system_time = 0; + temp_creation.LowPart = creation_ftime.dwLowDateTime; + temp_creation.HighPart = creation_ftime.dwHighDateTime; + temp_kernel.LowPart = kernel_ftime.dwLowDateTime; + temp_kernel.HighPart = kernel_ftime.dwHighDateTime; + temp_user.LowPart = user_ftime.dwLowDateTime; + temp_user.HighPart = user_ftime.dwHighDateTime; + retval = + temp_creation.QuadPart / 10000 + temp_kernel.QuadPart / 10000 + + temp_user.QuadPart / 10000; + } + else + DebPrint (("GetThreadTimes failed with error code %lu\n", + GetLastError ())); + } + + if (use_system_time) + { + FILETIME current_ftime; + ULARGE_INTEGER temp; + + GetSystemTimeAsFileTime (¤t_ftime); + + temp.LowPart = current_ftime.dwLowDateTime; + temp.HighPart = current_ftime.dwHighDateTime; + + retval = temp.QuadPart / 10000; + } + + return retval; +} + #define MAX_SINGLE_SLEEP 30 +/* Thread function for a timer thread. */ static DWORD WINAPI timer_loop (LPVOID arg) { @@ -275,12 +336,13 @@ timer_loop (LPVOID arg) CRITICAL_SECTION *crit = (which == ITIMER_REAL) ? &crit_real : &crit_prof; const DWORD max_sleep = MAX_SINGLE_SLEEP * 1000 / CLOCKS_PER_SEC; int new_count = 0; + HANDLE hth = (which == ITIMER_REAL) ? NULL : itimer->caller_thread; while (1) { DWORD sleep_time; signal_handler handler; - clock_t now, expire, reload; + ULONGLONG now, expire, reload; /* Load new values if requested by setitimer. */ EnterCriticalSection (crit); @@ -290,15 +352,14 @@ timer_loop (LPVOID arg) if (itimer->terminate) return 0; - if (itimer->expire == 0) + if (expire == 0) { /* We are idle. */ Sleep (max_sleep); continue; } - expire = itimer->expire; - if (expire > (now = clock ())) + if (expire > (now = w32_get_timer_time (hth))) sleep_time = expire - now; else sleep_time = 0; @@ -309,8 +370,11 @@ timer_loop (LPVOID arg) if (itimer->terminate) return 0; Sleep (max_sleep); + EnterCriticalSection (crit); expire = itimer->expire; - sleep_time = (expire > (now = clock ())) ? expire - now : 0; + LeaveCriticalSection (crit); + sleep_time = + (expire > (now = w32_get_timer_time (hth))) ? expire - now : 0; } if (itimer->terminate) return 0; @@ -320,13 +384,16 @@ timer_loop (LPVOID arg) /* Always sleep past the expiration time, to make sure we never call the handler _before_ the expiration time, always slightly after it. Sleep(5) makes sure we don't - hog the CPU by calling 'clock' with high frequency, and - also let other threads work. */ - while (clock () < expire) + hog the CPU by calling 'w32_get_timer_time' with high + frequency, and also let other threads work. */ + while (w32_get_timer_time (hth) < expire) Sleep (5); } - if (itimer->expire == 0) + EnterCriticalSection (crit); + expire = itimer->expire; + LeaveCriticalSection (crit); + if (expire == 0) continue; /* Time's up. */ @@ -353,19 +420,21 @@ timer_loop (LPVOID arg) ResumeThread (itimer->caller_thread); } - if (itimer->expire == 0) - continue; - /* Update expiration time and loop. */ EnterCriticalSection (crit); expire = itimer->expire; + if (expire == 0) + { + LeaveCriticalSection (crit); + continue; + } reload = itimer->reload; if (reload > 0) { - now = clock (); + now = w32_get_timer_time (hth); if (expire <= now) { - clock_t lag = now - expire; + ULONGLONG lag = now - expire; /* If we missed some opportunities (presumably while sleeping or while the signal handler ran), skip @@ -448,6 +517,15 @@ term_timers (void) void init_timers (void) { + /* GetThreadTimes is not avaiulable on all versions of Windows, so + need to probe for its availability dynamically, and call it + through a pointer. */ + s_pfn_Get_Thread_Times = NULL; /* in case dumped Emacs comes with a value */ + if (os_subtype != OS_9X) + s_pfn_Get_Thread_Times = + (GetThreadTimes_Proc)GetProcAddress (GetModuleHandle ("kernel32.dll"), + "GetThreadTimes"); + /* Make sure we start with zeroed out itimer structures, since dumping may have left there traces of threads long dead. */ memset (&real_itimer, 0, sizeof real_itimer); @@ -473,14 +551,6 @@ start_timer_thread (int which) return 0; /* Start a new thread. */ - if (!DuplicateHandle (GetCurrentProcess (), GetCurrentThread (), - GetCurrentProcess (), &itimer->caller_thread, 0, - FALSE, DUPLICATE_SAME_ACCESS)) - { - errno = ESRCH; - return -1; - } - itimer->terminate = 0; itimer->type = which; /* Request that no more than 64KB of stack be reserved for this @@ -512,17 +582,16 @@ start_timer_thread (int which) int getitimer (int which, struct itimerval *value) { - volatile clock_t *t_expire; - volatile clock_t *t_reload; - clock_t expire, reload; + volatile ULONGLONG *t_expire; + volatile ULONGLONG *t_reload; + ULONGLONG expire, reload; __int64 usecs; CRITICAL_SECTION *crit; + struct itimer_data *itimer; if (disable_itimers) return -1; - ticks_now = clock (); - if (!value) { errno = EFAULT; @@ -535,8 +604,22 @@ getitimer (int which, struct itimerval *value) return -1; } - t_expire = (which == ITIMER_REAL) ? &real_itimer.expire: &prof_itimer.expire; - t_reload = (which == ITIMER_REAL) ? &real_itimer.reload: &prof_itimer.reload; + itimer = (which == ITIMER_REAL) ? &real_itimer : &prof_itimer; + + if (!DuplicateHandle (GetCurrentProcess (), GetCurrentThread (), + GetCurrentProcess (), &itimer->caller_thread, 0, + FALSE, DUPLICATE_SAME_ACCESS)) + { + errno = ESRCH; + return -1; + } + + ticks_now = w32_get_timer_time ((which == ITIMER_REAL) + ? NULL + : itimer->caller_thread); + + t_expire = &itimer->expire; + t_reload = &itimer->reload; crit = (which == ITIMER_REAL) ? &crit_real : &crit_prof; EnterCriticalSection (crit); @@ -560,10 +643,11 @@ getitimer (int which, struct itimerval *value) int setitimer(int which, struct itimerval *value, struct itimerval *ovalue) { - volatile clock_t *t_expire, *t_reload; - clock_t expire, reload, expire_old, reload_old; + volatile ULONGLONG *t_expire, *t_reload; + ULONGLONG expire, reload, expire_old, reload_old; __int64 usecs; CRITICAL_SECTION *crit; + struct itimerval tem, *ptem; if (disable_itimers) return -1; @@ -573,26 +657,21 @@ setitimer(int which, struct itimerval *value, struct itimerval *ovalue) time we are called, measure the clock tick resolution. */ if (!clocks_min) { - clock_t t1, t2; + ULONGLONG t1, t2; - for (t1 = clock (); (t2 = clock ()) == t1; ) + for (t1 = w32_get_timer_time (NULL); + (t2 = w32_get_timer_time (NULL)) == t1; ) ; clocks_min = t2 - t1; } if (ovalue) - { - if (getitimer (which, ovalue)) /* also sets ticks_now */ - return -1; /* errno already set */ - } + ptem = ovalue; else - ticks_now = clock (); + ptem = &tem; - if (which != ITIMER_REAL && which != ITIMER_PROF) - { - errno = EINVAL; - return -1; - } + if (getitimer (which, ptem)) /* also sets ticks_now */ + return -1; /* errno already set */ t_expire = (which == ITIMER_REAL) ? &real_itimer.expire : &prof_itimer.expire; From 15cc05e98486f43b21aaf6e7428fa9f08ddd9e94 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2012 21:20:02 +0200 Subject: [PATCH 022/165] Fix a typo in a comment. --- src/w32proc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/w32proc.c b/src/w32proc.c index fe3bbde167c..6accf2224c5 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -262,7 +262,7 @@ static int disable_itimers; static CRITICAL_SECTION crit_real, crit_prof; -/* GetThreadTimes is not available on Windows 9X and posibly also on 2K. */ +/* GetThreadTimes is not available on Windows 9X and possibly also on 2K. */ typedef BOOL (WINAPI *GetThreadTimes_Proc) ( HANDLE hThread, LPFILETIME lpCreationTime, From 2e612797ce51736ccdcd1076b3d0f36eb4c17182 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2012 21:32:30 +0200 Subject: [PATCH 023/165] Use 'volatile' types for communications between timer thread and main thread. --- src/ChangeLog | 4 ++-- src/w32proc.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 2efebc6754d..398d19fe6f2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -4,8 +4,8 @@ possible, for ITIMER_PROF count only times the main thread actually executes. * w32proc.c : 'expire' and 'reload' are now - ULONGLONG types. Likewise for all the other data which was - previously clock_t. + 'volatile ULONGLONG' types. All the other data which was + previously clock_t is now ULONGLONG. 'terminate' is 'volatile int'. (GetThreadTimes_Proc): New typedef. (w32_get_timer_time): New function, returns a suitable time value for the timer. diff --git a/src/w32proc.c b/src/w32proc.c index 6accf2224c5..af656f915c7 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -245,9 +245,9 @@ setpgrp (int pid, int gid) expires, after stopping the thread which installed the timer. */ struct itimer_data { - ULONGLONG expire; - ULONGLONG reload; - int terminate; + volatile ULONGLONG expire; + volatile ULONGLONG reload; + volatile int terminate; int type; HANDLE caller_thread; HANDLE timer_thread; From 2f246cd3c8959abeaad76a7cd442dd20d69fb1a0 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 27 Oct 2012 21:43:48 +0200 Subject: [PATCH 024/165] Fix compiler warnings in w32proc.c. src/w32proc.c (sys_spawnve): Avoid compiler warning about format mismatch. (timer_loop): Remove unused variable. --- src/ChangeLog | 4 +++- src/w32proc.c | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 398d19fe6f2..7f036761011 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -11,11 +11,13 @@ for the timer. (timer_loop): Enter critical section when accessing ULONGLONG values of the itimer_data struct, as these accesses are no longer - atomic. Call 'w32_get_timer_time' instead of 'clock'. + atomic. Call 'w32_get_timer_time' instead of 'clock'. Remove + unused variable. (init_timers): Initialize s_pfn_Get_Thread_Times. (start_timer_thread): Don't assign itimer->caller_thread here. (getitimer): Assign itimer->caller_thread here. (setitimer): Always call getitimer to get the value of ticks_now. + (sys_spawnve): Avoid compiler warning about format mismatch. 2012-10-26 Eli Zaretskii diff --git a/src/w32proc.c b/src/w32proc.c index af656f915c7..e2187d52425 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -335,7 +335,6 @@ timer_loop (LPVOID arg) int sig = (which == ITIMER_REAL) ? SIGALRM : SIGPROF; CRITICAL_SECTION *crit = (which == ITIMER_REAL) ? &crit_real : &crit_prof; const DWORD max_sleep = MAX_SINGLE_SLEEP * 1000 / CLOCKS_PER_SEC; - int new_count = 0; HANDLE hth = (which == ITIMER_REAL) ? NULL : itimer->caller_thread; while (1) @@ -1656,7 +1655,7 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp) numenv++; } /* extra env vars... */ - sprintf (ppid_env_var_buffer, "EM_PARENT_PROCESS_ID=%d", + sprintf (ppid_env_var_buffer, "EM_PARENT_PROCESS_ID=%lu", GetCurrentProcessId ()); arglen += strlen (ppid_env_var_buffer) + 1; numenv++; From 5b6887ad2afbdd7c1d855bbea36e2faeef2ad9b9 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 27 Oct 2012 15:07:43 -0700 Subject: [PATCH 025/165] * doc/lispref/lists.texi (List Elements): Typo fix. --- doc/lispref/ChangeLog | 4 ++++ doc/lispref/lists.texi | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index c7fb29a6fb1..03922f2c02f 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,7 @@ +2012-10-27 Glenn Morris + + * lists.texi (List Elements): Typo fix. + 2012-10-27 Chong Yidong * minibuf.texi (High-Level Completion): Don't mention removed diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi index 4a8740a5734..eaef8cc1f8a 100644 --- a/doc/lispref/lists.texi +++ b/doc/lispref/lists.texi @@ -252,7 +252,7 @@ x @end example @noindent -For the @code{pop} macro, which removes an element from a list, +For the @code{push} macro, which adds an element to a list, @xref{List Variables}. @end defmac From 5887564d5b5c90a1bc2ff7c0a3412cb6f765d03e Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 27 Oct 2012 15:42:07 -0700 Subject: [PATCH 026/165] Move generalized variable documentation from misc/cl.texi to lispref * doc/lispref/variables.texi (Generalized Variables): New section, adapted from misc/cl.texi. * doc/lispref/elisp.texi (Top): Add Generalized Variables to menu. * doc/lispref/lists.texi (List Elements, List Variables): Mention generalized variables. * doc/misc/cl.texi (Control Structure): Update for setf now being in core. (Setf Extensions): Rename from Basic Setf. Move much of the former content to lispref/variables.texi. (Modify Macros): Move pop, push details to lispref/variables.texi. (Customizing Setf): Copyedits for setf etc being in core. (Modify Macros, Efficiency Concerns, Porting Common Lisp): Further namespaces updates. --- doc/lispref/ChangeLog | 6 + doc/lispref/elisp.texi | 1 + doc/lispref/lists.texi | 8 ++ doc/lispref/variables.texi | 103 ++++++++++++++++ doc/misc/ChangeLog | 10 ++ doc/misc/cl.texi | 235 +++++++++++++------------------------ 6 files changed, 209 insertions(+), 154 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 03922f2c02f..aea26248452 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,5 +1,11 @@ 2012-10-27 Glenn Morris + * variables.texi (Generalized Variables): New section, + adapted from misc/cl.texi. + * elisp.texi (Top): Add Generalized Variables to menu. + * lists.texi (List Elements, List Variables): + Mention generalized variables. + * lists.texi (List Elements): Typo fix. 2012-10-27 Chong Yidong diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index 1d1dab8faac..06a2ebfcaf8 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi @@ -486,6 +486,7 @@ Variables * Variable Aliases:: Variables that are aliases for other variables. * Variables with Restricted Values:: Non-constant variables whose value can @emph{not} be an arbitrary Lisp object. +* Generalized Variables:: Extending the concept of variables. Scoping Rules for Variable Bindings diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi index eaef8cc1f8a..09948caaa13 100644 --- a/doc/lispref/lists.texi +++ b/doc/lispref/lists.texi @@ -236,6 +236,10 @@ This is in contrast to @code{cdr}, which signals an error if @defmac pop listname This macro is a way of examining the @sc{car} of a list, and taking it off the list, all at once. +@c FIXME I don't think is a particularly good way to do it, +@c but generalized variables have not been introduced yet. +(In fact, this macro can act on generalized variables, not just lists. +@xref{Generalized Variables}.) It operates on the list which is stored in the symbol @var{listname}. It removes this element from the list by setting @var{listname} @@ -682,6 +686,10 @@ to modify a list which is stored in a variable. @defmac push newelt listname This macro provides an alternative way to write @code{(setq @var{listname} (cons @var{newelt} @var{listname}))}. +@c FIXME I don't think is a particularly good way to do it, +@c but generalized variables have not been introduced yet. +(In fact, this macro can act on generalized variables, not just lists. +@xref{Generalized Variables}.) @example (setq l '(a b)) diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 1c0abcb8e66..1ffb1f7ffcb 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -41,6 +41,7 @@ representing the variable. * Variable Aliases:: Variables that are aliases for other variables. * Variables with Restricted Values:: Non-constant variables whose value can @emph{not} be an arbitrary Lisp object. +* Generalized Variables:: Extending the concept of variables. @end menu @node Global Variables @@ -1946,3 +1947,105 @@ Attempting to assign them any other value will result in an error: (setq undo-limit 1000.0) @error{} Wrong type argument: integerp, 1000.0 @end example + +@c FIXME? Not sure this is the right place for this section. +@node Generalized Variables +@section Generalized Variables + +A @dfn{generalized variable} or @dfn{place form} is one of the many places +in Lisp memory where values can be stored. The simplest place form is +a regular Lisp variable. But the @sc{car}s and @sc{cdr}s of lists, elements +of arrays, properties of symbols, and many other locations are also +places where Lisp values are stored. + +@c FIXME? Not sure this is a useful analogy... +Generalized variables are analogous to ``lvalues'' in the C +language, where @samp{x = a[i]} gets an element from an array +and @samp{a[i] = x} stores an element using the same notation. +Just as certain forms like @code{a[i]} can be lvalues in C, there +is a set of forms that can be generalized variables in Lisp. + +The @code{setf} macro is the most basic way to operate on generalized +variables. The @code{setf} form is like @code{setq}, except that it +accepts arbitrary place forms on the left side rather than just +symbols. For example, @code{(setf (car a) b)} sets the car of +@code{a} to @code{b}, doing the same operation as @code{(setcar a b)}, +but without having to remember two separate functions for setting and +accessing every type of place. + +@defmac setf [place form]@dots{} +This macro evaluates @var{form} and stores it in @var{place}, which +must be a valid generalized variable form. If there are several +@var{place} and @var{form} pairs, the assignments are done sequentially +just as with @code{setq}. @code{setf} returns the value of the last +@var{form}. +@end defmac + +The following Lisp forms will work as generalized variables, and +so may appear in the @var{place} argument of @code{setf}: + +@itemize +@item +A symbol naming a variable. In other words, @code{(setf x y)} is +exactly equivalent to @code{(setq x y)}, and @code{setq} itself is +strictly speaking redundant given that @code{setf} exists. Many +programmers continue to prefer @code{setq} for setting simple +variables, though, purely for stylistic or historical reasons. +The macro @code{(setf x y)} actually expands to @code{(setq x y)}, +so there is no performance penalty for using it in compiled code. + +@item +A call to any of the following standard Lisp functions: + +@smallexample +car cdr nth nthcdr +caar cadr cdar cddr +aref elt get gethash +symbol-function symbol-value symbol-plist +@end smallexample + +@item +The following Emacs-specific functions are also @code{setf}-able: + +@smallexample +default-value process-get +frame-parameter process-sentinel +terminal-parameter window-buffer +keymap-parent window-display-table +match-data window-dedicated-p +overlay-get window-hscroll +overlay-start window-parameter +overlay-end window-point +process-buffer window-start +process-filter +@end smallexample +@end itemize + +@noindent +Using any forms other than these in the @var{place} argument to +@code{setf} will signal an error. + +Note that for @code{nthcdr} and @code{getf}, the list argument +of the function must itself be a valid @var{place} form. For +example, @code{(setf (nthcdr 0 foo) 7)} will set @code{foo} itself +to 7. +@c The use of @code{nthcdr} as a @var{place} form is an extension +@c to standard Common Lisp. + +@c FIXME I don't think is a particularly good way to do it, +@c but these macros are introduced before gvs are. +The macros @code{push} (@pxref{List Variables}) and @code{pop} +(@pxref{List Elements}) can manipulate generalized variables, +not just lists. @code{(pop @var{place})} removes and returns the first +element of the list stored in @var{place}. It is analogous to +@code{(prog1 (car @var{place}) (setf @var{place} (cdr @var{place})))}, +except that it takes care to evaluate all subforms only once. +@code{(push @var{x} @var{place})} inserts @var{x} at the front of +the list stored in @var{place}. It is analogous to @code{(setf +@var{place} (cons @var{x} @var{place}))}, except for evaluation of the +subforms. Note that @code{push} and @code{pop} on an @code{nthcdr} +place can be used to insert or delete at any position in a list. + +The @file{cl-lib} library defines various extensions for generalized +variables, including additional @code{setf} places. +@xref{Generalized Variables,,, cl, Common Lisp Extensions}. diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index a0cfd675f0a..d447b0ca1ff 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,13 @@ +2012-10-27 Glenn Morris + + * cl.texi (Control Structure): Update for setf now being in core. + (Setf Extensions): Rename from Basic Setf. Move much of the + former content to lispref/variables.texi. + (Modify Macros): Move pop, push details to lispref/variables.texi. + (Customizing Setf): Copyedits for setf etc being in core. + (Modify Macros, Efficiency Concerns, Porting Common Lisp): + Further namespaces updates. + 2012-10-26 Bastien Guerry * org.texi (Installation): Update the link to Org's ELPA. Also diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 9200958a1b5..aba3f244012 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -57,7 +57,7 @@ developing GNU and promoting software freedom.'' * Overview:: Basics, usage, etc. * Program Structure:: Arglists, @code{cl-eval-when}, @code{defalias}. * Predicates:: @code{cl-typep} and @code{cl-equalp}. -* Control Structure:: @code{setf}, @code{cl-do}, @code{cl-loop}, etc. +* Control Structure:: @code{cl-do}, @code{cl-loop}, etc. * Macros:: Destructuring, @code{cl-define-compiler-macro}. * Declarations:: @code{cl-proclaim}, @code{cl-declare}, etc. * Symbols:: Property lists, @code{cl-gensym}. @@ -801,17 +801,16 @@ In Emacs, use @code{memq} (or @code{cl-member}) and @code{assq} (or @noindent The features described in the following sections implement -various advanced control structures, including the powerful -@c FIXME setf is now in gv.el, not cl. -@code{setf} facility and a number of looping and conditional +various advanced control structures, including extensions to the +standard @code{setf} facility, and a number of looping and conditional constructs. -@c FIXME setf, push are standard now. +@c FIXME @c lexical-let is obsolete; flet is not cl-flet. @c values is not cl-values. @menu * Assignment:: The @code{cl-psetq} form. -* Generalized Variables:: @code{setf}, @code{cl-incf}, @code{push}, etc. +* Generalized Variables:: Extensions to generalized variables. * Variable Bindings:: @code{cl-progv}, @code{lexical-let}, @code{flet}, @code{cl-macrolet}. * Conditionals:: @code{cl-case}, @code{cl-typecase}. * Blocks and Exits:: @code{cl-block}, @code{cl-return}, @code{cl-return-from}. @@ -857,130 +856,74 @@ provides an even more convenient way to swap two variables; @code{cl-psetq} always returns @code{nil}. @end defspec -@c FIXME now in gv.el. @node Generalized Variables @section Generalized Variables -@noindent -A ``generalized variable'' or ``place form'' is one of the many places -in Lisp memory where values can be stored. The simplest place form is -a regular Lisp variable. But the cars and cdrs of lists, elements -of arrays, properties of symbols, and many other locations are also -places where Lisp values are stored. - -The @code{setf} form is like @code{setq}, except that it accepts -arbitrary place forms on the left side rather than just -symbols. For example, @code{(setf (car a) b)} sets the car of -@code{a} to @code{b}, doing the same operation as @code{(setcar a b)} -but without having to remember two separate functions for setting -and accessing every type of place. - -Generalized variables are analogous to ``lvalues'' in the C -language, where @samp{x = a[i]} gets an element from an array -and @samp{a[i] = x} stores an element using the same notation. -Just as certain forms like @code{a[i]} can be lvalues in C, there -is a set of forms that can be generalized variables in Lisp. +A @dfn{generalized variable} or @dfn{place form} is one of the many +places in Lisp memory where values can be stored. The simplest place +form is a regular Lisp variable. But the cars and cdrs of lists, +elements of arrays, properties of symbols, and many other locations +are also places where Lisp values are stored. For basic information, +@pxref{Generalized Variables,,,elisp,GNU Emacs Lisp Reference Manual}. +This package provides several additional features related to +generalized variables. @menu -* Basic Setf:: @code{setf} and place forms. -* Modify Macros:: @code{cl-incf}, @code{push}, @code{cl-rotatef}, @code{letf}, @code{cl-callf}, etc. +* Setf Extensions:: Additional @code{setf} places. +* Modify Macros:: @code{cl-incf}, @code{cl-rotatef}, @code{letf}, @code{cl-callf}, etc. * Customizing Setf:: @code{define-modify-macro}, @code{defsetf}, @code{define-setf-method}. @end menu -@node Basic Setf -@subsection Basic Setf +@node Setf Extensions +@subsection Setf Extensions -@noindent -The @code{setf} macro is the most basic way to operate on generalized -variables. +Several standard (e.g. @code{car}) and Emacs-specific +(e.g. @code{window-point}) Lisp functions are @code{setf}-able by default. +This package defines @code{setf} handlers for several additional functions: -@defspec setf [place form]@dots{} -This macro evaluates @var{form} and stores it in @var{place}, which -must be a valid generalized variable form. If there are several -@var{place} and @var{form} pairs, the assignments are done sequentially -just as with @code{setq}. @code{setf} returns the value of the last -@var{form}. - -The following Lisp forms will work as generalized variables, and -so may appear in the @var{place} argument of @code{setf}: - -@itemize @bullet +@itemize @item -A symbol naming a variable. In other words, @code{(setf x y)} is -exactly equivalent to @code{(setq x y)}, and @code{setq} itself is -strictly speaking redundant now that @code{setf} exists. Many -programmers continue to prefer @code{setq} for setting simple -variables, though, purely for stylistic or historical reasons. -The macro @code{(setf x y)} actually expands to @code{(setq x y)}, -so there is no performance penalty for using it in compiled code. - -@item -A call to any of the following Lisp functions: - +Functions from @code{CL} itself: @smallexample -car cdr caar .. cddddr -nth rest first .. tenth -aref elt nthcdr -symbol-function symbol-value symbol-plist -get get* getf -gethash subseq +cl-caaar .. cl-cddddr cl-first .. cl-tenth +cl-rest cl-get cl-getf cl-subseq @end smallexample -@noindent -Note that for @code{nthcdr} and @code{getf}, the list argument -of the function must itself be a valid @var{place} form. For -example, @code{(setf (nthcdr 0 foo) 7)} will set @code{foo} itself -to 7. Note that @code{push} and @code{pop} on an @code{nthcdr} -place can be used to insert or delete at any position in a list. -The use of @code{nthcdr} as a @var{place} form is an extension -to standard Common Lisp. - @item -The following Emacs-specific functions are also @code{setf}-able. - +General Emacs Lisp functions: @smallexample -buffer-file-name marker-position -buffer-modified-p match-data -buffer-name mouse-position -buffer-string overlay-end -buffer-substring overlay-get -current-buffer overlay-start -current-case-table point -current-column point-marker -current-global-map point-max -current-input-mode point-min -current-local-map process-buffer -current-window-configuration process-filter -default-file-modes process-sentinel -default-value read-mouse-position -documentation-property screen-height -extent-data screen-menubar -extent-end-position screen-width -extent-start-position selected-window -face-background selected-screen -face-background-pixmap selected-frame -face-font standard-case-table -face-foreground syntax-table -face-underline-p window-buffer -file-modes window-dedicated-p -frame-height window-display-table -frame-parameters window-height -frame-visible-p window-hscroll -frame-width window-point -get-register window-start -getenv window-width -global-key-binding x-get-secondary-selection -keymap-parent x-get-selection -local-key-binding -mark -mark-marker +buffer-file-name getenv +buffer-modified-p global-key-binding +buffer-name local-key-binding +buffer-string mark +buffer-substring mark-marker +current-buffer marker-position +current-case-table mouse-position +current-column point +current-global-map point-marker +current-input-mode point-max +current-local-map point-min +current-window-configuration read-mouse-position +default-file-modes screen-height +documentation-property screen-width +face-background selected-window +face-background-pixmap selected-screen +face-font selected-frame +face-foreground standard-case-table +face-underline-p syntax-table +file-modes visited-file-modtime +frame-height window-height +frame-parameters window-width +frame-visible-p x-get-secondary-selection +frame-width x-get-selection +get-register @end smallexample Most of these have directly corresponding ``set'' functions, like @code{use-local-map} for @code{current-local-map}, or @code{goto-char} for @code{point}. A few, like @code{point-min}, expand to longer -sequences of code when they are @code{setf}'d (@code{(narrow-to-region -x (point-max))} in this case). +sequences of code when they are used with @code{setf} +(@code{(narrow-to-region x (point-max))} in this case). @item A call of the form @code{(substring @var{subplace} @var{n} [@var{m}])}, @@ -1007,6 +950,8 @@ a The generalized variable @code{buffer-substring}, listed above, also works in this way by replacing a portion of the current buffer. +@c FIXME? Also `eq'? (see cl-lib.el) + @item A call of the form @code{(apply '@var{func} @dots{})} or @code{(apply (function @var{func}) @dots{})}, where @var{func} @@ -1025,9 +970,9 @@ Any form for which a @code{defsetf} or @code{define-setf-method} has been made. @end itemize -Using any forms other than these in the @var{place} argument to -@code{setf} will signal an error. - +@c FIXME should this be in lispref? It seems self-evident. +@c Contrast with the cl-incf example later on. +@c Here it really only serves as a constrast to wrong-order. The @code{setf} macro takes care to evaluate all subforms in the proper left-to-right order; for example, @@ -1056,15 +1001,14 @@ will be preserved. Adapting an example from Steele, given the form @code{(setf (wrong-order @var{a} @var{b}) 17)} will evaluate @var{b} first, then @var{a}, just as in an actual call to @code{wrong-order}. -@end defspec @node Modify Macros @subsection Modify Macros @noindent -This package defines a number of other macros besides @code{setf} -that operate on generalized variables. Many are interesting and -useful even when the @var{place} is just a variable name. +This package defines a number of macros that operate on generalized +variables. Many are interesting and useful even when the @var{place} +is just a variable name. @defspec cl-psetf [place form]@dots{} This macro is to @code{setf} what @code{cl-psetq} is to @code{setq}: @@ -1080,8 +1024,8 @@ by @var{x} if specified. The incremented value is returned. For example, @code{(cl-incf i)} is equivalent to @code{(setq i (1+ i))}, and @code{(cl-incf (car x) 2)} is equivalent to @code{(setcar x (+ (car x) 2))}. -Once again, care is taken to preserve the ``apparent'' order of -evaluation. For example, +As with @code{setf}, care is taken to preserve the ``apparent'' order +of evaluation. For example, @example (cl-incf (aref vec (cl-incf i))) @@ -1120,21 +1064,6 @@ This macro decrements the number stored in @var{place} by one, or by @var{x} if specified. @end defspec -@c FIXME move to lispref, add generalized variables. -@defspec pop place -This macro removes and returns the first element of the list stored -in @var{place}. It is analogous to @code{(prog1 (car @var{place}) -(setf @var{place} (cdr @var{place})))}, except that it takes care -to evaluate all subforms only once. -@end defspec - -@c FIXME move to lispref, add generalized variables. -@defspec push x place -This macro inserts @var{x} at the front of the list stored in -@var{place}. It is analogous to @code{(setf @var{place} (cons -@var{x} @var{place}))}, except for evaluation of the subforms. -@end defspec - @defspec cl-pushnew x place @t{&key :test :test-not :key} This macro inserts @var{x} at the front of the list stored in @var{place}, but only if @var{x} was not @code{eql} to any @@ -1143,19 +1072,19 @@ are interpreted in the same way as for @code{cl-adjoin}. @xref{Lists as Sets}. @end defspec -@defspec shiftf place@dots{} newvalue +@defspec cl-shiftf place@dots{} newvalue This macro shifts the @var{place}s left by one, shifting in the value of @var{newvalue} (which may be any Lisp expression, not just a generalized variable), and returning the value shifted out of -the first @var{place}. Thus, @code{(shiftf @var{a} @var{b} @var{c} +the first @var{place}. Thus, @code{(cl-shiftf @var{a} @var{b} @var{c} @var{d})} is equivalent to @example (prog1 @var{a} - (psetf @var{a} @var{b} - @var{b} @var{c} - @var{c} @var{d})) + (cl-psetf @var{a} @var{b} + @var{b} @var{c} + @var{c} @var{d})) @end example @noindent @@ -1168,10 +1097,10 @@ This macro rotates the @var{place}s left by one in circular fashion. Thus, @code{(cl-rotatef @var{a} @var{b} @var{c} @var{d})} is equivalent to @example -(psetf @var{a} @var{b} - @var{b} @var{c} - @var{c} @var{d} - @var{d} @var{a}) +(cl-psetf @var{a} @var{b} + @var{b} @var{c} + @var{c} @var{d} + @var{d} @var{a}) @end example @noindent @@ -1318,9 +1247,8 @@ Most of the modify macros defined by Common Lisp do not exactly follow the pattern of @code{define-modify-macro}. For example, @code{push} takes its arguments in the wrong order, and @code{pop} is completely irregular. You can define these macros ``by hand'' -using @code{get-setf-method}, or consult the source file -@file{cl-macs.el} to see how to use the internal @code{setf} -building blocks. +using @code{get-setf-method}, or consult the source +to see how to use the internal @code{setf} building blocks. @end defspec @defspec defsetf access-fn update-fn @@ -4708,32 +4636,31 @@ user to modify @var{place}. @noindent Many of the advanced features of this package, such as @code{cl-defun}, -@code{cl-loop}, and @code{setf}, are implemented as Lisp macros. In +@code{cl-loop}, etc., are implemented as Lisp macros. In byte-compiled code, these complex notations will be expanded into equivalent Lisp code which is simple and efficient. For example, -the forms +the form @example (cl-incf i n) -(push x (car p)) @end example @noindent -are expanded at compile-time to the Lisp forms +is expanded at compile-time to the Lisp form @example (setq i (+ i n)) -(setcar p (cons x (car p))) @end example @noindent -which are the most efficient ways of doing these respective operations +which is the most efficient ways of doing this operation in Lisp. Thus, there is no performance penalty for using the more -readable @code{cl-incf} and @code{push} forms in your compiled code. +readable @code{cl-incf} form in your compiled code. @emph{Interpreted} code, on the other hand, must expand these macros every time they are executed. For this reason it is strongly recommended that code making heavy use of macros be compiled. +@c FIXME why are they not labelled as macros? (The features labeled ``Special Form'' instead of ``Function'' in this manual are macros.) A loop using @code{cl-incf} a hundred times will execute considerably faster if compiled, and will also @@ -4751,7 +4678,7 @@ all Lisp macros which appear in the form. The easiest way to use this function is to go to the @file{*scratch*} buffer and type, say, @example -(cl-prettyexpand '(loop for x below 10 collect x)) +(cl-prettyexpand '(cl-loop for x below 10 collect x)) @end example @noindent @@ -5104,7 +5031,7 @@ these forms: @example (let ((total 0)) (dolist (x my-list) (cl-incf total x)) total) -(loop for x in my-list sum x) +(cl-loop for x in my-list sum x) @end example While this would be mainly a stylistic choice in most Common Lisps, From e11174254bab35ec88a8dfb483bd49104773d051 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 27 Oct 2012 15:54:53 -0700 Subject: [PATCH 027/165] * doc/misc/cl.texi: Use defmac for macros rather than defspec. (Efficiency Concerns): Related copyedit. --- doc/misc/ChangeLog | 3 + doc/misc/cl.texi | 238 ++++++++++++++++++++++----------------------- 2 files changed, 121 insertions(+), 120 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index d447b0ca1ff..24d8f1cee25 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,5 +1,8 @@ 2012-10-27 Glenn Morris + * cl.texi: Use defmac for macros rather than defspec. + (Efficiency Concerns): Related copyedit. + * cl.texi (Control Structure): Update for setf now being in core. (Setf Extensions): Rename from Basic Setf. Move much of the former content to lispref/variables.texi. diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index aba3f244012..09386e2c0c7 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -268,14 +268,14 @@ this package to implement Common Lisp argument lists seamlessly. Instead, this package defines alternates for several Lisp forms which you must use if you need Common Lisp argument lists. -@defspec cl-defun name arglist body... +@defmac cl-defun name arglist body... This form is identical to the regular @code{defun} form, except that @var{arglist} is allowed to be a full Common Lisp argument list. Also, the function body is enclosed in an implicit block called @var{name}; @pxref{Blocks and Exits}. -@end defspec +@end defmac -@defspec cl-defsubst name arglist body... +@defmac cl-defsubst name arglist body... This is just like @code{cl-defun}, except that the function that is defined is automatically proclaimed @code{inline}, i.e., calls to it may be expanded into in-line code by the byte compiler. @@ -285,9 +285,9 @@ works in all versions of Emacs, and also generates somewhat more efficient inline expansions. In particular, @code{cl-defsubst} arranges for the processing of keyword arguments, default values, etc., to be done at compile-time whenever possible. -@end defspec +@end defmac -@defspec cl-defmacro name arglist body... +@defmac cl-defmacro name arglist body... This is identical to the regular @code{defmacro} form, except that @var{arglist} is allowed to be a full Common Lisp argument list. The @code{&environment} keyword is supported as @@ -296,13 +296,13 @@ within destructured lists (see below); top-level @code{&whole} cannot be implemented with the current Emacs Lisp interpreter. The macro expander body is enclosed in an implicit block called @var{name}. -@end defspec +@end defmac -@defspec cl-function symbol-or-lambda +@defmac cl-function symbol-or-lambda This is identical to the regular @code{function} form, except that if the argument is a @code{lambda} form then that form may use a full Common Lisp argument list. -@end defspec +@end defmac Also, all forms (such as @code{cl-flet} and @code{cl-labels}) defined in this package that include @var{arglist}s in their syntax allow @@ -491,7 +491,7 @@ For example, the compiler effectively evaluates @code{defmacro} forms at compile-time so that later parts of the file can refer to the macros that are defined. -@defspec cl-eval-when (situations...) forms... +@defmac cl-eval-when (situations...) forms... This form controls when the body @var{forms} are evaluated. The @var{situations} list may contain any set of the symbols @code{compile}, @code{load}, and @code{eval} (or their long-winded @@ -563,7 +563,7 @@ to @code{(progn @dots{})} in all contexts. The compiler treats certain top-level forms, like @code{defmacro} (sort-of) and @code{require}, as if they were wrapped in @code{(cl-eval-when (compile load eval) @dots{})}. -@end defspec +@end defmac Emacs includes two special forms related to @code{cl-eval-when}. One of these, @code{eval-when-compile}, is not quite equivalent to @@ -573,7 +573,7 @@ The other form, @code{(eval-and-compile @dots{})}, is exactly equivalent to @samp{(cl-eval-when (compile load eval) @dots{})} and so is not itself defined by this package. -@defspec eval-when-compile forms... +@defmac eval-when-compile forms... The @var{forms} are evaluated at compile-time; at execution time, this form acts like a quoted constant of the resulting value. Used at top-level, @code{eval-when-compile} is just like @samp{eval-when @@ -582,9 +582,9 @@ allows code to be evaluated once at compile-time for efficiency or other reasons. This form is similar to the @samp{#.} syntax of true Common Lisp. -@end defspec +@end defmac -@defspec cl-load-time-value form +@defmac cl-load-time-value form The @var{form} is evaluated at load-time; at execution time, this form acts like a quoted constant of the resulting value. @@ -625,7 +625,7 @@ Byte-compiled, the above defun will result in the following code ", and loaded on: " --temp--)) @end example -@end defspec +@end defmac @node Predicates @chapter Predicates @@ -733,7 +733,7 @@ floats. In all other circumstances, @code{cl-coerce} signals an error. @end defun -@defspec cl-deftype name arglist forms... +@defmac cl-deftype name arglist forms... This macro defines a new type called @var{name}. It is similar to @code{defmacro} in many ways; when @var{name} is encountered as a type name, the body @var{forms} are evaluated and should @@ -761,7 +761,7 @@ unsigned-byte @equiv{} (integer 0 *) The last example shows how the Common Lisp @code{unsigned-byte} type specifier could be implemented if desired; this package does not implement @code{unsigned-byte} by default. -@end defspec +@end defmac The @code{cl-typecase} and @code{cl-check-type} macros also use type names. @xref{Conditionals}. @xref{Assertions}. The @code{cl-map}, @@ -826,7 +826,7 @@ constructs. The @code{cl-psetq} form is just like @code{setq}, except that multiple assignments are done in parallel rather than sequentially. -@defspec cl-psetq [symbol form]@dots{} +@defmac cl-psetq [symbol form]@dots{} This special form (actually a macro) is used to assign to several variables simultaneously. Given only one @var{symbol} and @var{form}, it has the same effect as @code{setq}. Given several @var{symbol} @@ -854,7 +854,7 @@ provides an even more convenient way to swap two variables; @pxref{Modify Macros}.) @code{cl-psetq} always returns @code{nil}. -@end defspec +@end defmac @node Generalized Variables @section Generalized Variables @@ -1010,15 +1010,15 @@ This package defines a number of macros that operate on generalized variables. Many are interesting and useful even when the @var{place} is just a variable name. -@defspec cl-psetf [place form]@dots{} +@defmac cl-psetf [place form]@dots{} This macro is to @code{setf} what @code{cl-psetq} is to @code{setq}: When several @var{place}s and @var{form}s are involved, the assignments take place in parallel rather than sequentially. Specifically, all subforms are evaluated from left to right, then all the assignments are done (in an undefined order). -@end defspec +@end defmac -@defspec cl-incf place &optional x +@defmac cl-incf place &optional x This macro increments the number stored in @var{place} by one, or by @var{x} if specified. The incremented value is returned. For example, @code{(cl-incf i)} is equivalent to @code{(setq i (1+ i))}, and @@ -1057,22 +1057,22 @@ the other generalized-variable macros. As a more Emacs-specific example of @code{cl-incf}, the expression @code{(cl-incf (point) @var{n})} is essentially equivalent to @code{(forward-char @var{n})}. -@end defspec +@end defmac -@defspec cl-decf place &optional x +@defmac cl-decf place &optional x This macro decrements the number stored in @var{place} by one, or by @var{x} if specified. -@end defspec +@end defmac -@defspec cl-pushnew x place @t{&key :test :test-not :key} +@defmac cl-pushnew x place @t{&key :test :test-not :key} This macro inserts @var{x} at the front of the list stored in @var{place}, but only if @var{x} was not @code{eql} to any existing element of the list. The optional keyword arguments are interpreted in the same way as for @code{cl-adjoin}. @xref{Lists as Sets}. -@end defspec +@end defmac -@defspec cl-shiftf place@dots{} newvalue +@defmac cl-shiftf place@dots{} newvalue This macro shifts the @var{place}s left by one, shifting in the value of @var{newvalue} (which may be any Lisp expression, not just a generalized variable), and returning the value shifted out of @@ -1090,9 +1090,9 @@ the first @var{place}. Thus, @code{(cl-shiftf @var{a} @var{b} @var{c} @noindent except that the subforms of @var{a}, @var{b}, and @var{c} are actually evaluated only once each and in the apparent order. -@end defspec +@end defmac -@defspec cl-rotatef place@dots{} +@defmac cl-rotatef place@dots{} This macro rotates the @var{place}s left by one in circular fashion. Thus, @code{(cl-rotatef @var{a} @var{b} @var{c} @var{d})} is equivalent to @@ -1107,12 +1107,12 @@ Thus, @code{(cl-rotatef @var{a} @var{b} @var{c} @var{d})} is equivalent to except for the evaluation of subforms. @code{cl-rotatef} always returns @code{nil}. Note that @code{(cl-rotatef @var{a} @var{b})} conveniently exchanges @var{a} and @var{b}. -@end defspec +@end defmac The following macros were invented for this package; they have no analogues in Common Lisp. -@defspec letf (bindings@dots{}) forms@dots{} +@defmac letf (bindings@dots{}) forms@dots{} This macro is analogous to @code{let}, but for generalized variables rather than just symbols. Each @var{binding} should be of the form @code{(@var{place} @var{value})}; the original contents of the @@ -1162,14 +1162,14 @@ entry to the @code{letf} form. The only exceptions are plain variables and calls to @code{symbol-value} and @code{symbol-function}. If the symbol is not bound on entry, it is simply made unbound by @code{makunbound} or @code{fmakunbound} on exit. -@end defspec +@end defmac -@defspec cl-letf* (bindings@dots{}) forms@dots{} +@defmac cl-letf* (bindings@dots{}) forms@dots{} This macro is to @code{letf} what @code{let*} is to @code{let}: It does the bindings in sequential rather than parallel order. -@end defspec +@end defmac -@defspec cl-callf @var{function} @var{place} @var{args}@dots{} +@defmac cl-callf @var{function} @var{place} @var{args}@dots{} This is the ``generic'' modify macro. It calls @var{function}, which should be an unquoted function name, macro name, or lambda. It passes @var{place} and @var{args} as arguments, and assigns the @@ -1186,14 +1186,14 @@ Some more examples: @xref{Customizing Setf}, for @code{define-modify-macro}, a way to create even more concise notations for modify macros. Note again that @code{cl-callf} is an extension to standard Common Lisp. -@end defspec +@end defmac -@defspec cl-callf2 @var{function} @var{arg1} @var{place} @var{args}@dots{} +@defmac cl-callf2 @var{function} @var{arg1} @var{place} @var{args}@dots{} This macro is like @code{cl-callf}, except that @var{place} is the @emph{second} argument of @var{function} rather than the first. For example, @code{(push @var{x} @var{place})} is equivalent to @code{(cl-callf2 cons @var{x} @var{place})}. -@end defspec +@end defmac The @code{cl-callf} and @code{cl-callf2} macros serve as building blocks for other macros like @code{cl-incf}, @code{cl-pushnew}, and @@ -1209,7 +1209,7 @@ Common Lisp defines three macros, @code{define-modify-macro}, @code{defsetf}, and @code{define-setf-method}, that allow the user to extend generalized variables in various ways. -@defspec define-modify-macro name arglist function [doc-string] +@defmac define-modify-macro name arglist function [doc-string] This macro defines a ``read-modify-write'' macro similar to @code{cl-incf} and @code{cl-decf}. The macro @var{name} is defined to take a @var{place} argument followed by additional arguments @@ -1249,9 +1249,9 @@ follow the pattern of @code{define-modify-macro}. For example, is completely irregular. You can define these macros ``by hand'' using @code{get-setf-method}, or consult the source to see how to use the internal @code{setf} building blocks. -@end defspec +@end defmac -@defspec defsetf access-fn update-fn +@defmac defsetf access-fn update-fn This is the simpler of two @code{defsetf} forms. Where @var{access-fn} is the name of a function which accesses a place, this declares @var{update-fn} to be the corresponding store @@ -1294,9 +1294,9 @@ suite of setf methods, are: (defsetf symbol-value set) (defsetf buffer-name rename-buffer t) @end example -@end defspec +@end defmac -@defspec defsetf access-fn arglist (store-var) forms@dots{} +@defmac defsetf access-fn arglist (store-var) forms@dots{} This is the second, more complex, form of @code{defsetf}. It is rather like @code{defmacro} except for the additional @var{store-var} argument. The @var{forms} should return a Lisp form which stores @@ -1325,9 +1325,9 @@ Another example drawn from the standard package: (defsetf nth (n x) (store) (list 'setcar (list 'nthcdr n x) store)) @end example -@end defspec +@end defmac -@defspec define-setf-method access-fn arglist forms@dots{} +@defmac define-setf-method access-fn arglist forms@dots{} This is the most general way to create new place forms. When a @code{setf} to @var{access-fn} with arguments described by @var{arglist} is expanded, the @var{forms} are evaluated and @@ -1372,7 +1372,7 @@ by @code{cl-gensym}. Macros like @code{setf} and @code{cl-incf} which use this setf-method will optimize away most temporaries that turn out to be unnecessary, so there is little reason for the setf-method itself to optimize. -@end defspec +@end defmac @defun get-setf-method place &optional env This function returns the setf-method for @var{place}, by @@ -1435,7 +1435,7 @@ The standard @code{let} form binds variables whose names are known at compile-time. The @code{cl-progv} form provides an easy way to bind variables whose names are computed at run-time. -@defspec cl-progv symbols values forms@dots{} +@defmac cl-progv symbols values forms@dots{} This form establishes @code{let}-style variable bindings on a set of variables computed at run-time. The expressions @var{symbols} and @var{values} are evaluated, and must return lists @@ -1445,7 +1445,7 @@ If @var{values} is shorter than @var{symbols}, the last few symbols are bound to @code{nil}. If @var{symbols} is shorter than @var{values}, the excess values are ignored. -@end defspec +@end defmac @node Lexical Bindings @subsection Lexical Bindings @@ -1454,7 +1454,7 @@ are ignored. The @code{CL} package defines the following macro which more closely follows the Common Lisp @code{let} form: -@defspec lexical-let (bindings@dots{}) forms@dots{} +@defmac lexical-let (bindings@dots{}) forms@dots{} This form is exactly like @code{let} except that the bindings it establishes are purely lexical. Lexical bindings are similar to local variables in a language like C: Only the code physically @@ -1554,12 +1554,12 @@ instance of the lexical variable. The @code{lexical-let} form is an extension to Common Lisp. In true Common Lisp, all bindings are lexical unless declared otherwise. -@end defspec +@end defmac -@defspec lexical-let* (bindings@dots{}) forms@dots{} +@defmac lexical-let* (bindings@dots{}) forms@dots{} This form is just like @code{lexical-let}, except that the bindings are made sequentially in the manner of @code{let*}. -@end defspec +@end defmac @node Function Bindings @subsection Function Bindings @@ -1568,7 +1568,7 @@ are made sequentially in the manner of @code{let*}. These forms make @code{let}-like bindings to functions instead of variables. -@defspec flet (bindings@dots{}) forms@dots{} +@defmac flet (bindings@dots{}) forms@dots{} This form establishes @code{let}-style bindings on the function cells of symbols rather than on the value cells. Each @var{binding} must be a list of the form @samp{(@var{name} @var{arglist} @@ -1612,9 +1612,9 @@ Functions defined by @code{flet} may use the full Common Lisp argument notation supported by @code{cl-defun}; also, the function body is enclosed in an implicit block as if by @code{cl-defun}. @xref{Program Structure}. -@end defspec +@end defmac -@defspec labels (bindings@dots{}) forms@dots{} +@defmac labels (bindings@dots{}) forms@dots{} The @code{labels} form is like @code{flet}, except that it makes lexical bindings of the function names rather than dynamic bindings. (In true Common Lisp, both @code{flet} and @@ -1635,7 +1635,7 @@ functions. A ``reference'' to a function name is either a call to that function, or a use of its name quoted by @code{quote} or @code{function} to be passed on to, say, @code{mapcar}. -@end defspec +@end defmac @node Macro Bindings @subsection Macro Bindings @@ -1643,7 +1643,7 @@ function, or a use of its name quoted by @code{quote} or @noindent These forms create local macros and ``symbol macros''. -@defspec cl-macrolet (bindings@dots{}) forms@dots{} +@defmac cl-macrolet (bindings@dots{}) forms@dots{} This form is analogous to @code{flet}, but for macros instead of functions. Each @var{binding} is a list of the same form as the arguments to @code{cl-defmacro} (i.e., a macro name, argument list, @@ -1655,9 +1655,9 @@ scoped even in Emacs Lisp: The @code{cl-macrolet} binding will affect only calls that appear physically within the body @var{forms}, possibly after expansion of other macros in the body. -@end defspec +@end defmac -@defspec cl-symbol-macrolet (bindings@dots{}) forms@dots{} +@defmac cl-symbol-macrolet (bindings@dots{}) forms@dots{} This form creates @dfn{symbol macros}, which are macros that look like variable references rather than function calls. Each @var{binding} is a list @samp{(@var{var} @var{expansion})}; @@ -1723,7 +1723,7 @@ which in turn expands to @xref{Loop Facility}, for a description of the @code{cl-loop} macro. This package defines a nonstandard @code{in-ref} loop clause that works much like @code{my-dolist}. -@end defspec +@end defmac @node Conditionals @section Conditionals @@ -1732,7 +1732,7 @@ works much like @code{my-dolist}. These conditional forms augment Emacs Lisp's simple @code{if}, @code{and}, @code{or}, and @code{cond} forms. -@defspec cl-case keyform clause@dots{} +@defmac cl-case keyform clause@dots{} This macro evaluates @var{keyform}, then compares it with the key values listed in the various @var{clause}s. Whichever clause matches the key is executed; comparison is done by @code{eql}. If no clause @@ -1766,15 +1766,15 @@ a @key{RET} or @kbd{C-j}, or anything else. ((?\r ?\n) (do-ret-thing)) (t (do-other-thing))) @end example -@end defspec +@end defmac -@defspec cl-ecase keyform clause@dots{} +@defmac cl-ecase keyform clause@dots{} This macro is just like @code{cl-case}, except that if the key does not match any of the clauses, an error is signaled rather than simply returning @code{nil}. -@end defspec +@end defmac -@defspec cl-typecase keyform clause@dots{} +@defmac cl-typecase keyform clause@dots{} This macro is a version of @code{cl-case} that checks for types rather than values. Each @var{clause} is of the form @samp{(@var{type} @var{body}...)}. @xref{Type Predicates}, @@ -1791,13 +1791,13 @@ for a description of type specifiers. For example, The type specifier @code{t} matches any type of object; the word @code{otherwise} is also allowed. To make one clause match any of several types, use an @code{(or ...)} type specifier. -@end defspec +@end defmac -@defspec cl-etypecase keyform clause@dots{} +@defmac cl-etypecase keyform clause@dots{} This macro is just like @code{cl-typecase}, except that if the key does not match any of the clauses, an error is signaled rather than simply returning @code{nil}. -@end defspec +@end defmac @node Blocks and Exits @section Blocks and Exits @@ -1810,7 +1810,7 @@ in terms of @code{catch}; however, the lexical scoping allows the optimizing byte-compiler to omit the costly @code{catch} step if the body of the block does not actually @code{cl-return-from} the block. -@defspec cl-block name forms@dots{} +@defmac cl-block name forms@dots{} The @var{forms} are evaluated as if by a @code{progn}. However, if any of the @var{forms} execute @code{(cl-return-from @var{name})}, they will jump out and return directly from the @code{cl-block} form. @@ -1849,20 +1849,20 @@ not in fact contain any @code{cl-return} or @code{cl-return-from} calls that jump to it. This means that @code{cl-do} loops and @code{cl-defun} functions which don't use @code{cl-return} don't pay the overhead to support it. -@end defspec +@end defmac -@defspec cl-return-from name [result] +@defmac cl-return-from name [result] This macro returns from the block named @var{name}, which must be an (unevaluated) symbol. If a @var{result} form is specified, it is evaluated to produce the result returned from the @code{block}. Otherwise, @code{nil} is returned. -@end defspec +@end defmac -@defspec cl-return [result] +@defmac cl-return [result] This macro is exactly like @code{(cl-return-from nil @var{result})}. Common Lisp loops like @code{cl-do} and @code{cl-dolist} implicitly enclose themselves in @code{nil} blocks. -@end defspec +@end defmac @node Iteration @section Iteration @@ -1872,7 +1872,7 @@ The macros described here provide more sophisticated, high-level looping constructs to complement Emacs Lisp's basic @code{while} loop. -@defspec cl-loop forms@dots{} +@defmac cl-loop forms@dots{} The @code{CL} package supports both the simple, old-style meaning of @code{loop} and the extremely powerful and flexible feature known as the @dfn{Loop Facility} or @dfn{Loop Macro}. This more advanced @@ -1900,9 +1900,9 @@ interpreted as a Loop Macro specification as described later. (This is not a restriction in practice, since a plain symbol in the above notation would simply access and throw away the value of a variable.) -@end defspec +@end defmac -@defspec cl-do (spec@dots{}) (end-test [result@dots{}]) forms@dots{} +@defmac cl-do (spec@dots{}) (end-test [result@dots{}]) forms@dots{} This macro creates a general iterative loop. Each @var{spec} is of the form @@ -1948,9 +1948,9 @@ the rest of the loop. ((or (null x) (null y)) (nreverse z))) @end example -@end defspec +@end defmac -@defspec cl-do* (spec@dots{}) (end-test [result@dots{}]) forms@dots{} +@defmac cl-do* (spec@dots{}) (end-test [result@dots{}]) forms@dots{} This is to @code{cl-do} what @code{let*} is to @code{let}. In particular, the initial values are bound as if by @code{let*} rather than @code{let}, and the steps are assigned as if by @@ -1968,9 +1968,9 @@ Here is another way to write the above loop: (nreverse z)) (push (f x y) z)) @end example -@end defspec +@end defmac -@defspec cl-dolist (var list [result]) forms@dots{} +@defmac cl-dolist (var list [result]) forms@dots{} This is a more specialized loop which iterates across the elements of a list. @var{list} should evaluate to a list; the body @var{forms} are executed with @var{var} bound to each element of the list in @@ -1978,9 +1978,9 @@ turn. Finally, the @var{result} form (or @code{nil}) is evaluated with @var{var} bound to @code{nil} to produce the result returned by the loop. Unlike with Emacs's built in @code{dolist}, the loop is surrounded by an implicit @code{nil} block. -@end defspec +@end defmac -@defspec cl-dotimes (var count [result]) forms@dots{} +@defmac cl-dotimes (var count [result]) forms@dots{} This is a more specialized loop which iterates a specified number of times. The body is executed with @var{var} bound to the integers from zero (inclusive) to @var{count} (exclusive), in turn. Then @@ -1988,9 +1988,9 @@ the @code{result} form is evaluated with @var{var} bound to the total number of iterations that were done (i.e., @code{(max 0 @var{count})}) to get the return value for the loop form. Unlike with Emacs's built in @code{dolist}, the loop is surrounded by an implicit @code{nil} block. -@end defspec +@end defmac -@defspec cl-do-symbols (var [obarray [result]]) forms@dots{} +@defmac cl-do-symbols (var [obarray [result]]) forms@dots{} This loop iterates over all interned symbols. If @var{obarray} is specified and is not @code{nil}, it loops over all symbols in that obarray. For each symbol, the body @var{forms} are evaluated @@ -1998,12 +1998,12 @@ with @var{var} bound to that symbol. The symbols are visited in an unspecified order. Afterward the @var{result} form, if any, is evaluated (with @var{var} bound to @code{nil}) to get the return value. The loop is surrounded by an implicit @code{nil} block. -@end defspec +@end defmac -@defspec cl-do-all-symbols (var [result]) forms@dots{} +@defmac cl-do-all-symbols (var [result]) forms@dots{} This is identical to @code{cl-do-symbols} except that the @var{obarray} argument is omitted; it always iterates over the default obarray. -@end defspec +@end defmac @xref{Mapping over Sequences}, for some more functions for iterating over vectors or lists. @@ -2043,7 +2043,7 @@ Since @code{cl-loop} is a macro, all parsing of the loop language takes place at byte-compile time; compiled @code{cl-loop}s are just as efficient as the equivalent @code{while} loops written longhand. -@defspec cl-loop clauses@dots{} +@defmac cl-loop clauses@dots{} A loop construct consists of a series of @var{clause}s, each introduced by a symbol like @code{for} or @code{do}. Clauses are simply strung together in the argument list of @code{cl-loop}, @@ -2082,7 +2082,7 @@ explicit @code{return} clause to jump out of the implicit block. (Because the loop body is enclosed in an implicit block, you can also use regular Lisp @code{cl-return} or @code{cl-return-from} to break out of the loop.) -@end defspec +@end defmac The following sections give some examples of the Loop Macro in action, and describe the particular loop clauses in great detail. @@ -2773,21 +2773,21 @@ in Emacs Lisp these functions simply operate on lists instead. The @code{values} form, for example, is a synonym for @code{list} in Emacs. -@defspec cl-multiple-value-bind (var@dots{}) values-form forms@dots{} +@defmac cl-multiple-value-bind (var@dots{}) values-form forms@dots{} This form evaluates @var{values-form}, which must return a list of values. It then binds the @var{var}s to these respective values, as if by @code{let}, and then executes the body @var{forms}. If there are more @var{var}s than values, the extra @var{var}s are bound to @code{nil}. If there are fewer @var{var}s than values, the excess values are ignored. -@end defspec +@end defmac -@defspec cl-multiple-value-setq (var@dots{}) form +@defmac cl-multiple-value-setq (var@dots{}) form This form evaluates @var{form}, which must return a list of values. It then sets the @var{var}s to these respective values, as if by @code{setq}. Extra @var{var}s or values are treated the same as in @code{cl-multiple-value-bind}. -@end defspec +@end defmac Since a perfect emulation is not feasible in Emacs Lisp, this package opts to keep it as simple and predictable as possible. @@ -2805,7 +2805,7 @@ for @code{defmacro} due to technical difficulties. Destructuring is made available to the user by way of the following macro: -@defspec cl-destructuring-bind arglist expr forms@dots{} +@defmac cl-destructuring-bind arglist expr forms@dots{} This macro expands to code which executes @var{forms}, with the variables in @var{arglist} bound to the list of values returned by @var{expr}. The @var{arglist} can include all @@ -2814,13 +2814,13 @@ including destructuring. (The @code{&environment} keyword is not allowed.) The macro expansion will signal an error if @var{expr} returns a list of the wrong number of arguments or with incorrect keyword arguments. -@end defspec +@end defmac This package also includes the Common Lisp @code{cl-define-compiler-macro} facility, which allows you to define compile-time expansions and optimizations for your functions. -@defspec cl-define-compiler-macro name arglist forms@dots{} +@defmac cl-define-compiler-macro name arglist forms@dots{} This form is similar to @code{defmacro}, except that it only expands calls to @var{name} at compile-time; calls processed by the Lisp interpreter are not expanded, nor are they expanded by the @@ -2854,7 +2854,7 @@ if there are any keyword arguments in the call, then the original @code{cl-member} call is left intact. (The actual compiler macro for @code{cl-member} optimizes a number of other cases, including common @code{:test} predicates.) -@end defspec +@end defmac @defun cl-compiler-macroexpand form This function is analogous to @code{macroexpand}, except that it @@ -2896,7 +2896,7 @@ This function records a ``global'' declaration specified by is evaluated and thus should normally be quoted. @end defun -@defspec cl-declaim decl-specs@dots{} +@defmac cl-declaim decl-specs@dots{} This macro is like @code{cl-proclaim}, except that it takes any number of @var{decl-spec} arguments, and the arguments are unevaluated and unquoted. The @code{cl-declaim} macro also puts an @code{(cl-eval-when @@ -2905,22 +2905,22 @@ be registered at compile-time as well as at run-time. (This is vital, since normally the declarations are meant to influence the way the compiler treats the rest of the file that contains the @code{cl-declaim} form.) -@end defspec +@end defmac -@defspec cl-declare decl-specs@dots{} +@defmac cl-declare decl-specs@dots{} This macro is used to make declarations within functions and other code. Common Lisp allows declarations in various locations, generally at the beginning of any of the many ``implicit @code{progn}s'' throughout Lisp syntax, such as function bodies, @code{let} bodies, etc. Currently the only declaration understood by @code{cl-declare} is @code{special}. -@end defspec +@end defmac -@defspec cl-locally declarations@dots{} forms@dots{} +@defmac cl-locally declarations@dots{} forms@dots{} In this package, @code{cl-locally} is no different from @code{progn}. -@end defspec +@end defmac -@defspec cl-the type form +@defmac cl-the type form Type information provided by @code{cl-the} is ignored in this package; in other words, @code{(cl-the @var{type} @var{form})} is equivalent to @var{form}. Future versions of the optimizing byte-compiler may @@ -2933,7 +2933,7 @@ of time. With @code{(mapcar 'car (cl-the vector foo))}, a future compiler would have enough information to expand the loop in-line. For now, Emacs Lisp will treat the above code as exactly equivalent to @code{(mapcar 'car foo)}. -@end defspec +@end defmac Each @var{decl-spec} in a @code{cl-proclaim}, @code{cl-declaim}, or @code{cl-declare} should be a list beginning with a symbol that says @@ -3137,7 +3137,7 @@ function and its @var{place} argument can actually be any Lisp expression. @end defun -@defspec cl-remf place property +@defmac cl-remf place property This macro removes the property-value pair for @var{property} from the property list stored at @var{place}, which is any @code{setf}-able place expression. It returns true if the property was found. Note @@ -3145,7 +3145,7 @@ that if @var{property} happens to be first on the list, this will effectively do a @code{(setf @var{place} (cddr @var{place}))}, whereas if it occurs later, this simply uses @code{setcdr} to splice out the property and value cells. -@end defspec +@end defmac @node Creating Symbols @section Creating Symbols @@ -4259,7 +4259,7 @@ system provides no way to create new distinct types, this package implements structures as vectors (or lists upon request) with a special ``tag'' symbol to identify them. -@defspec cl-defstruct name slots@dots{} +@defmac cl-defstruct name slots@dots{} The @code{cl-defstruct} form defines a new structure type called @var{name}, with the specified @var{slots}. (The @var{slots} may begin with a string which documents the structure type.) @@ -4563,7 +4563,7 @@ the type @code{:include}s another type, then @code{:initial-offset} specifies a number of slots to be skipped between the last slot of the included type and the first new slot. @end table -@end defspec +@end defmac Except as noted, the @code{cl-defstruct} facility of this package is entirely compatible with that of Common Lisp. @@ -4582,7 +4582,7 @@ If the optimization property @code{speed} has been set to 3, and away the following assertions. Because assertions might be optimized away, it is a bad idea for them to include side-effects. -@defspec cl-assert test-form [show-args string args@dots{}] +@defmac cl-assert test-form [show-args string args@dots{}] This form verifies that @var{test-form} is true (i.e., evaluates to a non-@code{nil} value). If so, it returns @code{nil}. If the test is not satisfied, @code{cl-assert} signals an error. @@ -4606,9 +4606,9 @@ true Common Lisp, the second argument gives a list of @var{places} which can be @code{setf}'d by the user before continuing from the error. Since Emacs Lisp does not support continuable errors, it makes no sense to specify @var{places}. -@end defspec +@end defmac -@defspec cl-check-type form type [string] +@defmac cl-check-type form type [string] This form verifies that @var{form} evaluates to a value of type @var{type}. If so, it returns @code{nil}. If not, @code{cl-check-type} signals a @code{wrong-type-argument} error. The default error message @@ -4627,7 +4627,7 @@ Note that in Common Lisp, the first argument to @code{check-type} must be a @var{place} suitable for use by @code{setf}, because @code{check-type} signals a continuable error that allows the user to modify @var{place}. -@end defspec +@end defmac @node Efficiency Concerns @appendix Efficiency Concerns @@ -4660,12 +4660,10 @@ readable @code{cl-incf} form in your compiled code. @emph{Interpreted} code, on the other hand, must expand these macros every time they are executed. For this reason it is strongly recommended that code making heavy use of macros be compiled. -@c FIXME why are they not labelled as macros? -(The features labeled ``Special Form'' instead of ``Function'' in -this manual are macros.) A loop using @code{cl-incf} a hundred times -will execute considerably faster if compiled, and will also -garbage-collect less because the macro expansion will not have -to be generated, used, and thrown away a hundred times. +A loop using @code{cl-incf} a hundred times will execute considerably +faster if compiled, and will also garbage-collect less because the +macro expansion will not have to be generated, used, and thrown away a +hundred times. You can find out how a macro expands by using the @code{cl-prettyexpand} function. From 82b2101791236f7f0b5ee8a39fb05ab0d5e7834f Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 27 Oct 2012 17:16:55 -0700 Subject: [PATCH 028/165] * doc/emacs/ack.texi (Acknowledgments): Mention gv.el. --- doc/emacs/ChangeLog | 4 ++++ doc/emacs/ack.texi | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 3c21a60394a..ef6d736db1d 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,7 @@ +2012-10-28 Glenn Morris + + * ack.texi (Acknowledgments): Mention gv.el. + 2012-10-27 Bastien Guerry * screen.texi (Menu Bar): Fix typo. diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi index 8d1e4221a6c..79710f4992b 100644 --- a/doc/emacs/ack.texi +++ b/doc/emacs/ack.texi @@ -835,8 +835,9 @@ diffs; @file{css-mode.el} for Cascading Style Sheets; client for the ``Music Player Daemon''; @file{smie.el}, a generic indentation engine; and @file{pcase.el}, implementing ML-style pattern matching. In Emacs 24, he integrated the lexical binding code, -and cleaned up the CL namespace (making it acceptable to use CL -functions at runtime). +cleaned up the CL namespace (making it acceptable to use CL +functions at runtime), and added generalized variables to core Emacs +Lisp. @item Morioka Tomohiko wrote several packages for MIME support in Gnus and From 3c0c6155a1ba0179e4099348727ba3243df73be6 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 27 Oct 2012 18:55:40 -0700 Subject: [PATCH 029/165] Start moving some cl.texi features to an Obsolete appendix * doc/misc/cl.texi (Lexical Bindings): Move to appendix of obsolete features. (Porting Common Lisp): Emacs Lisp can do true lexical binding now. (Obsolete Features): New appendix. Move Lexical Bindings here. --- doc/misc/ChangeLog | 6 + doc/misc/cl.texi | 297 +++++++++++++++++++++++---------------------- 2 files changed, 159 insertions(+), 144 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 24d8f1cee25..c5d084891f6 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,9 @@ +2012-10-28 Glenn Morris + + * cl.texi (Lexical Bindings): Move to appendix of obsolete features. + (Porting Common Lisp): Emacs Lisp can do true lexical binding now. + (Obsolete Features): New appendix. Move Lexical Bindings here. + 2012-10-27 Glenn Morris * cl.texi: Use defmac for macros rather than defspec. diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 09386e2c0c7..46e9dae5319 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -70,6 +70,7 @@ developing GNU and promoting software freedom.'' * Efficiency Concerns:: Hints and techniques. * Common Lisp Compatibility:: All known differences with Steele. * Porting Common Lisp:: Hints for porting Common Lisp code. +* Obsolete Features:: Obsolete features. * GNU Free Documentation License:: The license for this documentation. * Function Index:: @@ -210,7 +211,6 @@ Internal function and variable names in the package are prefixed by @code{cl--}. Here is a complete list of functions prefixed by @code{cl-} that were not taken from Common Lisp: -@c FIXME lexical-let lexical-let* @example cl-callf cl-callf2 cl-defsubst cl-floatp-safe cl-letf cl-letf* @@ -806,12 +806,11 @@ standard @code{setf} facility, and a number of looping and conditional constructs. @c FIXME -@c lexical-let is obsolete; flet is not cl-flet. -@c values is not cl-values. +@c flet is not cl-flet, values is not cl-values. @menu * Assignment:: The @code{cl-psetq} form. * Generalized Variables:: Extensions to generalized variables. -* Variable Bindings:: @code{cl-progv}, @code{lexical-let}, @code{flet}, @code{cl-macrolet}. +* Variable Bindings:: @code{cl-progv}, @code{flet}, @code{cl-macrolet}. * Conditionals:: @code{cl-case}, @code{cl-typecase}. * Blocks and Exits:: @code{cl-block}, @code{cl-return}, @code{cl-return-from}. * Iteration:: @code{cl-do}, @code{cl-dotimes}, @code{cl-dolist}, @code{cl-do-symbols}. @@ -1422,7 +1421,6 @@ are also related to variable bindings. @menu * Dynamic Bindings:: The @code{cl-progv} form. -* Lexical Bindings:: @code{lexical-let} and lexical closures. * Function Bindings:: @code{flet} and @code{labels}. * Macro Bindings:: @code{cl-macrolet} and @code{cl-symbol-macrolet}. @end menu @@ -1447,120 +1445,6 @@ If @var{symbols} is shorter than @var{values}, the excess values are ignored. @end defmac -@node Lexical Bindings -@subsection Lexical Bindings - -@noindent -The @code{CL} package defines the following macro which -more closely follows the Common Lisp @code{let} form: - -@defmac lexical-let (bindings@dots{}) forms@dots{} -This form is exactly like @code{let} except that the bindings it -establishes are purely lexical. Lexical bindings are similar to -local variables in a language like C: Only the code physically -within the body of the @code{lexical-let} (after macro expansion) -may refer to the bound variables. - -@example -(setq a 5) -(defun foo (b) (+ a b)) -(let ((a 2)) (foo a)) - @result{} 4 -(lexical-let ((a 2)) (foo a)) - @result{} 7 -@end example - -@noindent -In this example, a regular @code{let} binding of @code{a} actually -makes a temporary change to the global variable @code{a}, so @code{foo} -is able to see the binding of @code{a} to 2. But @code{lexical-let} -actually creates a distinct local variable @code{a} for use within its -body, without any effect on the global variable of the same name. - -The most important use of lexical bindings is to create @dfn{closures}. -A closure is a function object that refers to an outside lexical -variable. For example: - -@example -(defun make-adder (n) - (lexical-let ((n n)) - (function (lambda (m) (+ n m))))) -(setq add17 (make-adder 17)) -(funcall add17 4) - @result{} 21 -@end example - -@noindent -The call @code{(make-adder 17)} returns a function object which adds -17 to its argument. If @code{let} had been used instead of -@code{lexical-let}, the function object would have referred to the -global @code{n}, which would have been bound to 17 only during the -call to @code{make-adder} itself. - -@example -(defun make-counter () - (lexical-let ((n 0)) - (cl-function (lambda (&optional (m 1)) (cl-incf n m))))) -(setq count-1 (make-counter)) -(funcall count-1 3) - @result{} 3 -(funcall count-1 14) - @result{} 17 -(setq count-2 (make-counter)) -(funcall count-2 5) - @result{} 5 -(funcall count-1 2) - @result{} 19 -(funcall count-2) - @result{} 6 -@end example - -@noindent -Here we see that each call to @code{make-counter} creates a distinct -local variable @code{n}, which serves as a private counter for the -function object that is returned. - -Closed-over lexical variables persist until the last reference to -them goes away, just like all other Lisp objects. For example, -@code{count-2} refers to a function object which refers to an -instance of the variable @code{n}; this is the only reference -to that variable, so after @code{(setq count-2 nil)} the garbage -collector would be able to delete this instance of @code{n}. -Of course, if a @code{lexical-let} does not actually create any -closures, then the lexical variables are free as soon as the -@code{lexical-let} returns. - -Many closures are used only during the extent of the bindings they -refer to; these are known as ``downward funargs'' in Lisp parlance. -When a closure is used in this way, regular Emacs Lisp dynamic -bindings suffice and will be more efficient than @code{lexical-let} -closures: - -@example -(defun add-to-list (x list) - (mapcar (lambda (y) (+ x y))) list) -(add-to-list 7 '(1 2 5)) - @result{} (8 9 12) -@end example - -@noindent -Since this lambda is only used while @code{x} is still bound, -it is not necessary to make a true closure out of it. - -You can use @code{defun} or @code{flet} inside a @code{lexical-let} -to create a named closure. If several closures are created in the -body of a single @code{lexical-let}, they all close over the same -instance of the lexical variable. - -The @code{lexical-let} form is an extension to Common Lisp. In -true Common Lisp, all bindings are lexical unless declared otherwise. -@end defmac - -@defmac lexical-let* (bindings@dots{}) forms@dots{} -This form is just like @code{lexical-let}, except that the bindings -are made sequentially in the manner of @code{let*}. -@end defmac - @node Function Bindings @subsection Function Bindings @@ -1650,6 +1534,10 @@ arguments to @code{cl-defmacro} (i.e., a macro name, argument list, and macro-expander forms). The macro is defined accordingly for use within the body of the @code{cl-macrolet}. +@c FIXME this should be modified to say ``even when lexical-binding +@c is code{nil}'', but is that true? The doc of cl-macrolet just +@c refers us to cl-flet, which refers to cl-labels, which says that it +@c behaves differently according to whether l-b is true or not. Because of the nature of macros, @code{cl-macrolet} is lexically scoped even in Emacs Lisp: The @code{cl-macrolet} binding will affect only calls that appear physically within the body @@ -1678,8 +1566,10 @@ I.e., @code{(setq foo 4)} in the above would be equivalent to Likewise, a @code{let} or @code{let*} binding a symbol macro is treated like a @code{letf} or @code{cl-letf*}. This differs from true +@c FIXME does it work like this in Emacs with lexical-binding = t? Common Lisp, where the rules of lexical scoping cause a @code{let} binding to shadow a @code{cl-symbol-macrolet} binding. In this package, +@c FIXME obsolete. only @code{lexical-let} and @code{lexical-let*} will shadow a symbol macro. @@ -4861,19 +4751,15 @@ this convention, calls to Lisp builtins like @code{if} and @item Lexical scoping. In Common Lisp, function arguments and @code{let} -bindings apply only to references physically within their bodies -(or within macro expansions in their bodies). Emacs Lisp, by -contrast, uses @dfn{dynamic scoping} wherein a binding to a -variable is visible even inside functions called from the body. +bindings apply only to references physically within their bodies (or +within macro expansions in their bodies). Traditionally, Emacs Lisp +uses @dfn{dynamic scoping} wherein a binding to a variable is visible +even inside functions called from the body. Lexical binding is +available since Emacs 24.1, so be sure to set @code{lexical-binding} +to @code{t} if you need to emulate this aspect of Common Lisp. -Variables in Common Lisp can be made dynamically scoped by -declaring them @code{special} or using @code{defvar}. In Emacs -Lisp it is as if all variables were declared @code{special}. - -Often you can use code that was written for lexical scoping -even in a dynamically scoped Lisp, but not always. Here is -an example of a Common Lisp code fragment that would fail in -Emacs Lisp: +Here is an example of a Common Lisp code fragment that would fail in +Emacs Lisp if @code{lexical-binding} were set to @code{nil}: @example (defun map-odd-elements (func list) @@ -4886,20 +4772,16 @@ Emacs Lisp: @end example @noindent -In Common Lisp, the two functions' usages of @code{x} are completely -independent. In Emacs Lisp, the binding to @code{x} made by -@code{add-odd-elements} will have been hidden by the binding -in @code{map-odd-elements} by the time the @code{(+ a x)} function -is called. +With lexical binding, the two functions' usages of @code{x} are +completely independent. With dynamic binding, the binding to @code{x} +made by @code{add-odd-elements} will have been hidden by the binding +in @code{map-odd-elements} by the time the @code{(+ a x)} function is +called. -(This package avoids such problems in its own mapping functions -by using names like @code{cl--x} instead of @code{x} internally; -as long as you don't use this prefix for your own -variables no collision can occur.) - -@xref{Lexical Bindings}, for a description of the @code{lexical-let} -form which establishes a Common Lisp-style lexical binding, and some -examples of how it differs from Emacs's regular @code{let}. +Internally, this package uses lexical binding so that such problems do +not occur. @xref{Lexical Bindings}, for a description of the obsolete +@code{lexical-let} form that emulates a Common Lisp-style lexical +binding when dynamic binding is in use. @item Reader macros. Common Lisp includes a second type of macro that @@ -5039,6 +4921,133 @@ note that the current Emacs Lisp compiler does not optimize tail recursion. @end itemize +@node Obsolete Features +@appendix Obsolete Features + +This section describes some features of the package that are obsolete +and should not be used in new code. They are only provided by the old +@file{cl.el} entry point, not by the newer @file{cl-lib.el}. + +@menu +* Lexical Bindings:: An approximation of lexical binding. +@end menu + +@node Lexical Bindings +@appendixsec Lexical Bindings + +The following macros are extensions to Common Lisp, where all bindings +are lexical unless declared otherwise. These features are likewise +obsolete since the introduction of true lexical binding in Emacs 24.1. + +@defmac lexical-let (bindings@dots{}) forms@dots{} +This form is exactly like @code{let} except that the bindings it +establishes are purely lexical. +@end defmac + +@c FIXME remove this and refer to elisp manual. +@c Maybe merge some stuff from here to there? +@noindent +Lexical bindings are similar to local variables in a language like C: +Only the code physically within the body of the @code{lexical-let} +(after macro expansion) may refer to the bound variables. + +@example +(setq a 5) +(defun foo (b) (+ a b)) +(let ((a 2)) (foo a)) + @result{} 4 +(lexical-let ((a 2)) (foo a)) + @result{} 7 +@end example + +@noindent +In this example, a regular @code{let} binding of @code{a} actually +makes a temporary change to the global variable @code{a}, so @code{foo} +is able to see the binding of @code{a} to 2. But @code{lexical-let} +actually creates a distinct local variable @code{a} for use within its +body, without any effect on the global variable of the same name. + +The most important use of lexical bindings is to create @dfn{closures}. +A closure is a function object that refers to an outside lexical +variable. For example: + +@example +(defun make-adder (n) + (lexical-let ((n n)) + (function (lambda (m) (+ n m))))) +(setq add17 (make-adder 17)) +(funcall add17 4) + @result{} 21 +@end example + +@noindent +The call @code{(make-adder 17)} returns a function object which adds +17 to its argument. If @code{let} had been used instead of +@code{lexical-let}, the function object would have referred to the +global @code{n}, which would have been bound to 17 only during the +call to @code{make-adder} itself. + +@example +(defun make-counter () + (lexical-let ((n 0)) + (cl-function (lambda (&optional (m 1)) (cl-incf n m))))) +(setq count-1 (make-counter)) +(funcall count-1 3) + @result{} 3 +(funcall count-1 14) + @result{} 17 +(setq count-2 (make-counter)) +(funcall count-2 5) + @result{} 5 +(funcall count-1 2) + @result{} 19 +(funcall count-2) + @result{} 6 +@end example + +@noindent +Here we see that each call to @code{make-counter} creates a distinct +local variable @code{n}, which serves as a private counter for the +function object that is returned. + +Closed-over lexical variables persist until the last reference to +them goes away, just like all other Lisp objects. For example, +@code{count-2} refers to a function object which refers to an +instance of the variable @code{n}; this is the only reference +to that variable, so after @code{(setq count-2 nil)} the garbage +collector would be able to delete this instance of @code{n}. +Of course, if a @code{lexical-let} does not actually create any +closures, then the lexical variables are free as soon as the +@code{lexical-let} returns. + +Many closures are used only during the extent of the bindings they +refer to; these are known as ``downward funargs'' in Lisp parlance. +When a closure is used in this way, regular Emacs Lisp dynamic +bindings suffice and will be more efficient than @code{lexical-let} +closures: + +@example +(defun add-to-list (x list) + (mapcar (lambda (y) (+ x y))) list) +(add-to-list 7 '(1 2 5)) + @result{} (8 9 12) +@end example + +@noindent +Since this lambda is only used while @code{x} is still bound, +it is not necessary to make a true closure out of it. + +You can use @code{defun} or @code{flet} inside a @code{lexical-let} +to create a named closure. If several closures are created in the +body of a single @code{lexical-let}, they all close over the same +instance of the lexical variable. + +@defmac lexical-let* (bindings@dots{}) forms@dots{} +This form is just like @code{lexical-let}, except that the bindings +are made sequentially in the manner of @code{let*}. +@end defmac + + @node GNU Free Documentation License @appendix GNU Free Documentation License @include doclicense.texi From 9c52d61d070c1e8961ce376f4829e364960cda97 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 27 Oct 2012 19:05:04 -0700 Subject: [PATCH 030/165] Add some xrefs to cl.texi * doc/misc/cl.texi (Porting Common Lisp, Lexical Bindings): Add some xrefs to the Elisp manual. --- doc/misc/ChangeLog | 3 +++ doc/misc/cl.texi | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index c5d084891f6..6d744908ebe 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,5 +1,8 @@ 2012-10-28 Glenn Morris + * cl.texi (Porting Common Lisp, Lexical Bindings): + Add some xrefs to the Elisp manual. + * cl.texi (Lexical Bindings): Move to appendix of obsolete features. (Porting Common Lisp): Emacs Lisp can do true lexical binding now. (Obsolete Features): New appendix. Move Lexical Bindings here. diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 46e9dae5319..aebdcb7d5f4 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -4754,9 +4754,11 @@ Lexical scoping. In Common Lisp, function arguments and @code{let} bindings apply only to references physically within their bodies (or within macro expansions in their bodies). Traditionally, Emacs Lisp uses @dfn{dynamic scoping} wherein a binding to a variable is visible -even inside functions called from the body. Lexical binding is -available since Emacs 24.1, so be sure to set @code{lexical-binding} -to @code{t} if you need to emulate this aspect of Common Lisp. +even inside functions called from the body. +@xref{Dynamic Binding,,,elisp,GNU Emacs Lisp Reference Manual}. +Lexical binding is available since Emacs 24.1, so be sure to set +@code{lexical-binding} to @code{t} if you need to emulate this aspect +of Common Lisp. @xref{Lexical Binding,,,elisp,GNU Emacs Lisp Reference Manual}. Here is an example of a Common Lisp code fragment that would fail in Emacs Lisp if @code{lexical-binding} were set to @code{nil}: @@ -4969,7 +4971,8 @@ body, without any effect on the global variable of the same name. The most important use of lexical bindings is to create @dfn{closures}. A closure is a function object that refers to an outside lexical -variable. For example: +variable (@pxref{Closures,,,elisp,GNU Emacs Lisp Reference Manual}). +For example: @example (defun make-adder (n) From f94b04fcc7490510d85ce107b65c48bc60334f63 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 27 Oct 2012 19:34:36 -0700 Subject: [PATCH 031/165] More cl.texi updates * doc/misc/cl.texi (Multiple Values, Common Lisp Compatibility): More namespace updates. (Obsolete Features): Copyedits. (Obsolete Lexical Macros, Obsolete Setf Customization): New subsections. * etc/NEWS: Related edits. --- doc/misc/ChangeLog | 6 +++++ doc/misc/cl.texi | 60 +++++++++++++++++++++++++++++++++++++++------- etc/NEWS | 6 +++++ 3 files changed, 64 insertions(+), 8 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 6d744908ebe..fe7781c57cc 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,5 +1,11 @@ 2012-10-28 Glenn Morris + * cl.texi (Multiple Values, Common Lisp Compatibility): + More namespace updates. + (Obsolete Features): Copyedits. + (Obsolete Lexical Macros, Obsolete Setf Customization): + New subsections. + * cl.texi (Porting Common Lisp, Lexical Bindings): Add some xrefs to the Elisp manual. diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index aebdcb7d5f4..ed4206c0b97 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -806,7 +806,7 @@ standard @code{setf} facility, and a number of looping and conditional constructs. @c FIXME -@c flet is not cl-flet, values is not cl-values. +@c flet is not cl-flet. @menu * Assignment:: The @code{cl-psetq} form. * Generalized Variables:: Extensions to generalized variables. @@ -815,7 +815,7 @@ constructs. * Blocks and Exits:: @code{cl-block}, @code{cl-return}, @code{cl-return-from}. * Iteration:: @code{cl-do}, @code{cl-dotimes}, @code{cl-dolist}, @code{cl-do-symbols}. * Loop Facility:: The Common Lisp @code{cl-loop} macro. -* Multiple Values:: @code{values}, @code{cl-multiple-value-bind}, etc. +* Multiple Values:: @code{cl-values}, @code{cl-multiple-value-bind}, etc. @end menu @node Assignment @@ -2660,7 +2660,7 @@ than one value either return just the first value (as in @code{get-setf-method}). This package @emph{does} define placeholders for the Common Lisp functions that work with multiple values, but in Emacs Lisp these functions simply operate on lists instead. -The @code{values} form, for example, is a synonym for @code{list} +The @code{cl-values} form, for example, is a synonym for @code{list} in Emacs. @defmac cl-multiple-value-bind (var@dots{}) values-form forms@dots{} @@ -4701,9 +4701,9 @@ and type specifiers are unimplemented. The multiple-value return facility treats lists as multiple values, since Emacs Lisp cannot support multiple return values directly. The macros will be compatible with Common Lisp if -@code{values} or @code{values-list} is always used to return to +@code{cl-values} or @code{cl-values-list} is always used to return to a @code{cl-multiple-value-bind} or other multiple-value receiver; -if @code{values} is used without @code{cl-multiple-value-@dots{}} +if @code{cl-values} is used without @code{cl-multiple-value-@dots{}} or vice-versa the effect will be different from Common Lisp. Many Common Lisp declarations are ignored, and others match @@ -4927,11 +4927,15 @@ recursion. @appendix Obsolete Features This section describes some features of the package that are obsolete -and should not be used in new code. They are only provided by the old -@file{cl.el} entry point, not by the newer @file{cl-lib.el}. +and should not be used in new code. They are either only provided by +the old @file{cl.el} entry point, not by the newer @file{cl-lib.el}; +or where versions with a @samp{cl-} prefix do exist they do not behave +in exactly the same way. @menu -* Lexical Bindings:: An approximation of lexical binding. +* Lexical Bindings:: An approximation of lexical binding. +* Obsolete Lexical Macros:: Obsolete macros using lexical-let. +* Obsolete Setf Customization:: Obsolete ways to customize setf. @end menu @node Lexical Bindings @@ -5050,6 +5054,46 @@ This form is just like @code{lexical-let}, except that the bindings are made sequentially in the manner of @code{let*}. @end defmac +@node Obsolete Lexical Macros +@appendixsec Macros Defined Using Lexical-Let + +The following macros are defined using @code{lexical-let}. +They are replaced by versions with a @samp{cl-} prefix that use true +lexical binding (and hence rely on @code{lexical-binding} being set to +@code{t} in code using them). + +@defmac flet (bindings@dots{}) forms@dots{} +Replaced by @code{cl-flet} (@pxref{Function Bindings}) +or @code{cl-letf} (@pxref{Modify Macros}). +@end defmac + +@defmac labels (bindings@dots{}) forms@dots{} +Replaced by @code{cl-labels} (@pxref{Function Bindings}). +@end defmac + +@defmac letf (bindings@dots{}) forms@dots{} +Replaced by @code{cl-letf} (@pxref{Modify Macros}). +@end defmac + +@node Obsolete Setf Customization +@appendixsec Obsolete Ways to Customize Setf + +This section describes some obsolete ways to extend @code{setf}. +They are replaced by @file{gv.el} in Emacs 24.3. + +@c FIXME. +@defmac define-setf-expander name arglist &rest body +Use @file{gv.el}. +@end defmac + +@defmac defsetf access-fn update-fn +Use @file{gv.el}. +@end defmac + +@defmac define-modify-macro name arglist function [doc-string] +Use @file{gv.el}. +@end defmac + @node GNU Free Documentation License @appendix GNU Free Documentation License diff --git a/etc/NEWS b/etc/NEWS index 45ca56f5da6..cfdd3355aa5 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -323,11 +323,17 @@ The difference is that it relies on the `lexical-binding' machinery (as opposed to the `lexical-let' machinery used previously) to capture definitions in closures, so such closures will only work if `lexical-binding' is in use. +*** `cl-letf' is not exactly like `letf'. + +++ *** `progv' was rewritten to use the `let' machinery. A side effect is that vars without corresponding value are bound to nil rather than making them unbound. +*** The following methods of extending `setf' are obsolete. +Use gv.el instead (FIXME; details). +`define-setf-expander', `defsetf', `define-modify-macro' + ** Compilation mode +++ *** New option `compilation-always-kill'. From 3a51f0eb4168885b869641e9d5c98e3f40e5a515 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Sun, 28 Oct 2012 13:56:15 +0100 Subject: [PATCH 032/165] Reformulate description of windows basics. Describe changes in window ordering. * windows.texi (Basic Windows): Reformulate description of live, internal and valid windows. (Cyclic Window Ordering): Describe new argument of get-lru-window and get-largest-window. Add description of window-in-direction. --- doc/lispref/ChangeLog | 8 ++++ doc/lispref/windows.texi | 83 +++++++++++++++++++++++++++------------- 2 files changed, 65 insertions(+), 26 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index aea26248452..fe12e27a070 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,11 @@ +2012-10-28 Martin Rudalics + + * windows.texi (Basic Windows): Reformulate description of live, + internal and valid windows. + (Cyclic Window Ordering): Describe new argument of + get-lru-window and get-largest-window. Add description of + window-in-direction. + 2012-10-27 Glenn Morris * variables.texi (Generalized Variables): New section, diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 31d33bffbdd..d0e149eb165 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -76,30 +76,35 @@ within the area of the frame. When a window is created, resized, or deleted, the change in window space is taken from or given to the adjacent windows, so that the total area of the frame is unchanged. -@cindex live windows -@cindex internal windows - A @dfn{live window} is one that is actually displaying a buffer in a -frame. Such a window can be @dfn{deleted}, i.e. removed from the -frame (@pxref{Deleting Windows}); then it is no longer live, but the -Lisp object representing it might be still referenced from other Lisp -objects. A deleted window may be brought back to life by restoring a -saved window configuration (@pxref{Window Configurations}). - @defun windowp object This function returns @code{t} if @var{object} is a window (whether or -not it is live). Otherwise, it returns @code{nil}. +not it displays a buffer). Otherwise, it returns @code{nil}. @end defun +@cindex live windows +A @dfn{live window} is one that is actually displaying a buffer in a +frame. + @defun window-live-p object This function returns @code{t} if @var{object} is a live window and @code{nil} otherwise. A live window is one that displays a buffer. @end defun - The windows in each frame are organized into a @dfn{window tree}. -@xref{Windows and Frames}. The leaf nodes of each window tree are -live windows---the ones actually displaying buffers. The internal -nodes of the window tree are internal windows, which are not live. -You can distinguish internal windows from deleted windows with +@cindex internal windows +The windows in each frame are organized into a @dfn{window tree}. +@xref{Windows and Frames}. The leaf nodes of each window tree are live +windows---the ones actually displaying buffers. The internal nodes of +the window tree are @dfn{internal windows}, which are not live. + +@cindex valid windows + A @dfn{valid window} is one that is either live or internal. A valid +window can be @dfn{deleted}, i.e. removed from its frame +(@pxref{Deleting Windows}); then it is no longer valid, but the Lisp +object representing it might be still referenced from other Lisp +objects. A deleted window may be made valid again by restoring a saved +window configuration (@pxref{Window Configurations}). + + You can distinguish valid windows from deleted windows with @code{window-valid-p}. @defun window-valid-p object @@ -1317,31 +1322,37 @@ meaning as for @code{next-window}. criterion, without selecting it: @cindex least recently used window -@defun get-lru-window &optional all-frames dedicated +@defun get-lru-window &optional all-frames dedicated not-selected This function returns a live window which is heuristically the ``least recently used'' window. The optional argument @var{all-frames} has the same meaning as in @code{next-window}. If any full-width windows are present, only those windows are -considered. The selected window is never returned, unless it is the -only candidate. A minibuffer window is never a candidate. A -dedicated window (@pxref{Dedicated Windows}) is never a candidate -unless the optional argument @var{dedicated} is non-@code{nil}. +considered. A minibuffer window is never a candidate. A dedicated +window (@pxref{Dedicated Windows}) is never a candidate unless the +optional argument @var{dedicated} is non-@code{nil}. The selected +window is never returned, unless it is the only candidate. However, if +the optional argument @var{not-selected} is non-@code{nil}, this +function returns @code{nil} in that case. @end defun @cindex largest window -@defun get-largest-window &optional all-frames dedicated +@defun get-largest-window &optional all-frames dedicated not-selected This function returns the window with the largest area (height times -width). A minibuffer window is never a candidate. A dedicated window +width). The optional argument @var{all-frames} specifies the windows to +search, and has the same meaning as in @code{next-window}. + +A minibuffer window is never a candidate. A dedicated window (@pxref{Dedicated Windows}) is never a candidate unless the optional -argument @var{dedicated} is non-@code{nil}. +argument @var{dedicated} is non-@code{nil}. The selected window is not +a candidate if the optional argument @var{not-selected} is +non-@code{nil}. If the optional argument @var{not-selected} is +non-@code{nil} and the selected window is the only candidate, this +function returns @code{nil}. If there are two candidate windows of the same size, this function prefers the one that comes first in the cyclic ordering of windows, starting from the selected window. - -The optional argument @var{all-frames} specifies the windows to -search, and has the same meaning as in @code{next-window}. @end defun @cindex window that satisfies a predicate @@ -1359,6 +1370,26 @@ windows to search, and have the same meanings as in @code{next-window}. @end defun +@cindex window in direction +@defun window-in-direction direction &optional window ignore +This function returns the nearest window in direction @var{direction} as +seen from the position of @code{window-point} in window @var{window}. +The argument @var{direction} must be one of @code{above}, @code{below}, +@code{left} or @code{right}. The optional argument @var{window} must +denote a live window and defaults to the selected one. + +This function does not return a window whose @code{no-other-window} +parameter is non-@code{nil}. If the nearest window's +@code{no-other-window} parameter is non-@code{nil}, this function tries +to find another window in the indicated direction whose +@code{no-other-window} parameter is @code{nil}. If the optional +argument @var{ignore} is non-@code{nil}, a window may be returned even +if its @code{no-other-window} parameter is non-@code{nil}. + +If it doesn't find a suitable window, this function returns @code{nil}. +@end defun + + @node Buffers and Windows @section Buffers and Windows @cindex examining windows From 70edffb13005de4aa58ba818559b85aa63a1cdd4 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 28 Oct 2012 10:56:51 -0400 Subject: [PATCH 033/165] * lisp/tmm.el (tmm-prompt): Use map-keymap. * doc/lispref/keymaps.texi (Format of Keymaps): Document the multiple inheritance format. Fixes: debbugs:12744 --- doc/lispref/ChangeLog | 5 +++++ doc/lispref/keymaps.texi | 5 +++++ lisp/ChangeLog | 4 ++++ lisp/tmm.el | 27 +++++++++++++++------------ 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index fe12e27a070..6b3febba631 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,8 @@ +2012-10-28 Stefan Monnier + + * keymaps.texi (Format of Keymaps): Document the multiple + inheritance format. + 2012-10-28 Martin Rudalics * windows.texi (Basic Windows): Reformulate description of live, diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi index 8fe729d50f2..f658f7e66fb 100644 --- a/doc/lispref/keymaps.texi +++ b/doc/lispref/keymaps.texi @@ -210,6 +210,11 @@ Aside from elements that specify bindings for keys, a keymap can also have a string as an element. This is called the @dfn{overall prompt string} and makes it possible to use the keymap as a menu. @xref{Defining Menus}. + +@item (keymap @dots{}) +If an element of a keymap is itself a keymap, it counts as if this inner keymap +were inlined in the outer keymap. This is used for multiple-inheritance, such +as in @code{make-composed-keymap}. @end table When the binding is @code{nil}, it doesn't constitute a definition diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d7349617d58..c52ed5e6e8b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-10-28 Stefan Monnier + + * tmm.el (tmm-prompt): Use map-keymap (bug#12744). + 2012-10-27 Eli Zaretskii * profiler.el (profiler-report-make-entry-part): Fix help-echo diff --git a/lisp/tmm.el b/lisp/tmm.el index 4bc1c9af99a..6c2adf6837a 100644 --- a/lisp/tmm.el +++ b/lisp/tmm.el @@ -165,13 +165,15 @@ Its value should be an event that has a binding in MENU." ;; tmm-km-list is an alist of (STRING . MEANING). ;; It has no other elements. ;; The order of elements in tmm-km-list is the order of the menu bar. - (dolist (elt menu) - (cond - ((stringp elt) (setq gl-str elt)) - ((listp elt) (tmm-get-keymap elt not-menu)) - ((vectorp elt) - (dotimes (i (length elt)) - (tmm-get-keymap (cons i (aref elt i)) not-menu))))) + (if (not not-menu) + (map-keymap (lambda (k v) (tmm-get-keymap (cons k v))) menu) + (dolist (elt menu) + (cond + ((stringp elt) (setq gl-str elt)) + ((listp elt) (tmm-get-keymap elt not-menu)) + ((vectorp elt) + (dotimes (i (length elt)) + (tmm-get-keymap (cons i (aref elt i)) not-menu)))))) ;; Choose an element of tmm-km-list; put it in choice. (if (and not-menu (= 1 (length tmm-km-list))) ;; If this is the top-level of an x-popup-menu menu, @@ -432,7 +434,7 @@ It uses the free variable `tmm-table-undef' to keep undefined keys." (or (keymapp (cdr-safe (cdr-safe elt))) (eq (car (cdr-safe (cdr-safe elt))) 'lambda)) (and (symbolp (cdr-safe (cdr-safe elt))) - (fboundp (cdr-safe (cdr-safe elt))))) + (fboundp (cdr-safe (cdr-safe elt))))) (setq km (cddr elt)) (and (stringp (car elt)) (setq str (car elt)))) @@ -458,14 +460,15 @@ It uses the free variable `tmm-table-undef' to keep undefined keys." (eq (car (cdr-safe (cdr-safe (cdr-safe elt)))) 'lambda)) (and (symbolp (cdr-safe (cdr-safe (cdr-safe elt)))) (fboundp (cdr-safe (cdr-safe (cdr-safe elt)))))) - ; New style of easy-menu + ; New style of easy-menu (setq km (cdr (cddr elt))) (and (stringp (car elt)) (setq str (car elt)))) ((stringp event) ; x-popup or x-popup element - (if (or in-x-menu (stringp (car-safe elt))) - (setq str event event nil km elt) - (setq str event event nil km (cons 'keymap elt))))) + (setq str event) + (setq event nil) + (setq km (if (or in-x-menu (stringp (car-safe elt))) + elt (cons 'keymap elt))))) (unless (or (eq km 'ignore) (null str)) (let ((binding (where-is-internal km nil t))) (when binding From 3bb08684ceb7aace5a57d3260332fbb092a2fbe6 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 28 Oct 2012 11:32:15 -0400 Subject: [PATCH 034/165] * lisp/erc/erc-backend.el: Only require `erc' during compilation. Fixes: debbugs:12486 --- lisp/erc/ChangeLog | 4 ++++ lisp/erc/erc-backend.el | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog index bb8dadbbfcd..ba9dd70e88a 100644 --- a/lisp/erc/ChangeLog +++ b/lisp/erc/ChangeLog @@ -1,3 +1,7 @@ +2012-10-28 Stefan Monnier + + * erc-backend.el: Only require `erc' during compilation (bug#12486). + 2012-10-18 Stefan Monnier * erc-backend.el: Require `erc' instead of autoloading its macros diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el index 858a6bd8e82..90b96d7c763 100644 --- a/lisp/erc/erc-backend.el +++ b/lisp/erc/erc-backend.el @@ -102,8 +102,7 @@ ;; There's a fairly strong mutual dependency between erc.el and erc-backend.el. ;; Luckily, erc.el does not need erc-backend.el for macroexpansion whereas the ;; reverse is true: -(provide 'erc-backend) -(require 'erc) +(eval-when-compile (provide 'erc-backend) (require 'erc)) ;;;; Variables and options From 15a8af19f431e183d9842edb6f60b117cda77319 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 28 Oct 2012 11:34:52 -0400 Subject: [PATCH 035/165] * lisp/erc/erc-backend.el: Fix last bug number. Fixes: debbugs:12740 --- lisp/erc/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog index ba9dd70e88a..13dbba769a4 100644 --- a/lisp/erc/ChangeLog +++ b/lisp/erc/ChangeLog @@ -1,6 +1,6 @@ 2012-10-28 Stefan Monnier - * erc-backend.el: Only require `erc' during compilation (bug#12486). + * erc-backend.el: Only require `erc' during compilation (bug#12740). 2012-10-18 Stefan Monnier From e483264ca56201eb40858242aebd2c66419fb365 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 28 Oct 2012 11:52:42 -0400 Subject: [PATCH 036/165] * src/frame.c (x_set_font): Catch internal error. --- src/ChangeLog | 20 ++++++++++++-------- src/frame.c | 3 +++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 7f036761011..41909a7a663 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,7 +1,11 @@ +2012-10-28 Stefan Monnier + + * frame.c (x_set_font): Catch internal error. + 2012-10-27 Eli Zaretskii - Avoid overflow in w32 implementation of interval timers. When - possible, for ITIMER_PROF count only times the main thread + Avoid overflow in w32 implementation of interval timers. + When possible, for ITIMER_PROF count only times the main thread actually executes. * w32proc.c : 'expire' and 'reload' are now 'volatile ULONGLONG' types. All the other data which was @@ -11,8 +15,8 @@ for the timer. (timer_loop): Enter critical section when accessing ULONGLONG values of the itimer_data struct, as these accesses are no longer - atomic. Call 'w32_get_timer_time' instead of 'clock'. Remove - unused variable. + atomic. Call 'w32_get_timer_time' instead of 'clock'. + Remove unused variable. (init_timers): Initialize s_pfn_Get_Thread_Times. (start_timer_thread): Don't assign itimer->caller_thread here. (getitimer): Assign itimer->caller_thread here. @@ -92,8 +96,8 @@ 2012-10-19 Eli Zaretskii - * puresize.h (BASE_PURESIZE): Bump the base value to 1700000. See - http://lists.gnu.org/archive/html/emacs-devel/2012-10/msg00593.html + * puresize.h (BASE_PURESIZE): Bump the base value to 1700000. + See http://lists.gnu.org/archive/html/emacs-devel/2012-10/msg00593.html for the reasons. * alloc.c (NSTATICS): Decrease to 0x800. @@ -712,8 +716,8 @@ (ns_clear_frame_area): Remove resize handle code. * nsfns.m (ns_in_resize): Remove. - (x_set_icon_name, ns_set_name, ns_set_name_as_filename): Remove - ns_in_resize check. + (x_set_icon_name, ns_set_name, ns_set_name_as_filename): + Remove ns_in_resize check. 2012-10-07 Paul Eggert diff --git a/src/frame.c b/src/frame.c index 6478ad1e06f..17a99000c9b 100644 --- a/src/frame.c +++ b/src/frame.c @@ -3242,6 +3242,9 @@ x_set_font (struct frame *f, Lisp_Object arg, Lisp_Object oldval) Lisp_Object ascii_font = fontset_ascii (fontset); Lisp_Object spec = font_spec_from_name (ascii_font); + if (NILP (spec)) + signal_error ("Invalid font name", ascii_font); + if (! font_match_p (spec, font_object)) fontset = -1; } From 64ccff5f0ed8f0347b30e8fb4bd9b18a6cbaf1c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 28 Oct 2012 17:10:06 +0100 Subject: [PATCH 037/165] * nsterm.m (NO_APPDEFINED_DATA): New define. (last_appdefined_event_data): New variable (last_appdefined_event): Remove. (ns_select): Initialize t from last_appdefined_event_data instead of [last_appdefined_event data1]. (sendEvent:): Save [theEvent data1] to last_appdefined_event_data, remove last_appdefined_event. Fixes: debbugs:12698 --- src/ChangeLog | 10 ++++++++++ src/nsterm.m | 19 +++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 41909a7a663..d2c16fa8310 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,13 @@ +2012-10-28 Jan Djärv + + * nsterm.m (NO_APPDEFINED_DATA): New define. + (last_appdefined_event_data): New variable + (last_appdefined_event): Remove. + (ns_select): Initialize t from last_appdefined_event_data instead + of [last_appdefined_event data1]. + (sendEvent:): Save [theEvent data1] to last_appdefined_event_data, + remove last_appdefined_event (Bug#12698). + 2012-10-28 Stefan Monnier * frame.c (x_set_font): Catch internal error. diff --git a/src/nsterm.m b/src/nsterm.m index a4eaad47ac1..9b2e544c75b 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -190,7 +190,8 @@ static BOOL ns_menu_bar_is_hidden = NO; /* event loop */ static BOOL send_appdefined = YES; -static NSEvent *last_appdefined_event = 0; +#define NO_APPDEFINED_DATA (-8) +static int last_appdefined_event_data = NO_APPDEFINED_DATA; static NSTimer *timed_entry = 0; static NSTimer *scroll_repeat_entry = nil; static fd_set select_readfds, select_writefds; @@ -3436,8 +3437,7 @@ ns_select (int nfds, fd_set *readfds, fd_set *writefds, -------------------------------------------------------------------------- */ { int result; - NSEvent *ev; - int k, nr = 0; + int t, k, nr = 0; struct input_event event; char c; @@ -3521,16 +3521,11 @@ ns_select (int nfds, fd_set *readfds, fd_set *writefds, } unblock_input (); - ev = last_appdefined_event; + t = last_appdefined_event_data; - if (ev) + if (t != NO_APPDEFINED_DATA) { - int t; - if ([ev type] != NSApplicationDefined) - emacs_abort (); - - t = [ev data1]; - last_appdefined_event = 0; + last_appdefined_event_data = NO_APPDEFINED_DATA; if (t == -2) { @@ -4307,7 +4302,7 @@ ns_term_shutdown (int sig) modal loop. Just defer it until later. */ if ([NSApp modalWindow] == nil) { - last_appdefined_event = theEvent; + last_appdefined_event_data = [theEvent data1]; [self stop: self]; } else From 640bf8ad44027d37f917d0927e50c2dfea254917 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 28 Oct 2012 19:42:52 +0200 Subject: [PATCH 038/165] Don't use CLOCKS_PER_SEC in w32 timers. src/w32proc.c (TIMER_TICKS_PER_SEC): New macro. (timer_loop, getitimer, setitimer): Use it instead of CLOCKS_PER_SEC, which is no longer pertinent, since we don't use 'clock'. (w32_get_timer_time): Use 10*TIMER_TICKS_PER_SEC instead of a literal 10000. --- src/ChangeLog | 9 +++++++++ src/w32proc.c | 39 ++++++++++++++++++++++----------------- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index d2c16fa8310..beec867d333 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2012-10-28 Eli Zaretskii + + * w32proc.c (TIMER_TICKS_PER_SEC): New macro. + (timer_loop, getitimer, setitimer): Use it instead of + CLOCKS_PER_SEC, which is no longer pertinent, since we don't use + 'clock'. + (w32_get_timer_time): Use 10*TIMER_TICKS_PER_SEC instead of a + literal 10000. + 2012-10-28 Jan Djärv * nsterm.m (NO_APPDEFINED_DATA): New define. diff --git a/src/w32proc.c b/src/w32proc.c index e2187d52425..d45d9879a24 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -272,6 +272,9 @@ typedef BOOL (WINAPI *GetThreadTimes_Proc) ( static GetThreadTimes_Proc s_pfn_Get_Thread_Times; +#define MAX_SINGLE_SLEEP 30 +#define TIMER_TICKS_PER_SEC 1000 + /* Return a suitable time value, in 1-ms units, for THREAD, a handle to a thread. If THREAD is NULL or an invalid handle, return the current wall-clock time since January 1, 1601 (UTC). Otherwise, @@ -282,6 +285,8 @@ w32_get_timer_time (HANDLE thread) { ULONGLONG retval; int use_system_time = 1; + /* The functions below return times in 100-ns units. */ + const int tscale = 10 * TIMER_TICKS_PER_SEC; if (thread && thread != INVALID_HANDLE_VALUE && s_pfn_Get_Thread_Times != NULL) @@ -300,8 +305,8 @@ w32_get_timer_time (HANDLE thread) temp_user.LowPart = user_ftime.dwLowDateTime; temp_user.HighPart = user_ftime.dwHighDateTime; retval = - temp_creation.QuadPart / 10000 + temp_kernel.QuadPart / 10000 - + temp_user.QuadPart / 10000; + temp_creation.QuadPart / tscale + temp_kernel.QuadPart / tscale + + temp_user.QuadPart / tscale; } else DebPrint (("GetThreadTimes failed with error code %lu\n", @@ -318,14 +323,12 @@ w32_get_timer_time (HANDLE thread) temp.LowPart = current_ftime.dwLowDateTime; temp.HighPart = current_ftime.dwHighDateTime; - retval = temp.QuadPart / 10000; + retval = temp.QuadPart / tscale; } return retval; } -#define MAX_SINGLE_SLEEP 30 - /* Thread function for a timer thread. */ static DWORD WINAPI timer_loop (LPVOID arg) @@ -334,7 +337,7 @@ timer_loop (LPVOID arg) int which = itimer->type; int sig = (which == ITIMER_REAL) ? SIGALRM : SIGPROF; CRITICAL_SECTION *crit = (which == ITIMER_REAL) ? &crit_real : &crit_prof; - const DWORD max_sleep = MAX_SINGLE_SLEEP * 1000 / CLOCKS_PER_SEC; + const DWORD max_sleep = MAX_SINGLE_SLEEP * 1000 / TIMER_TICKS_PER_SEC; HANDLE hth = (which == ITIMER_REAL) ? NULL : itimer->caller_thread; while (1) @@ -379,7 +382,7 @@ timer_loop (LPVOID arg) return 0; if (sleep_time > 0) { - Sleep (sleep_time * 1000 / CLOCKS_PER_SEC); + Sleep (sleep_time * 1000 / TIMER_TICKS_PER_SEC); /* Always sleep past the expiration time, to make sure we never call the handler _before_ the expiration time, always slightly after it. Sleep(5) makes sure we don't @@ -629,11 +632,13 @@ getitimer (int which, struct itimerval *value) if (expire) expire -= ticks_now; - value->it_value.tv_sec = expire / CLOCKS_PER_SEC; - usecs = (expire % CLOCKS_PER_SEC) * (__int64)1000000 / CLOCKS_PER_SEC; + value->it_value.tv_sec = expire / TIMER_TICKS_PER_SEC; + usecs = + (expire % TIMER_TICKS_PER_SEC) * (__int64)1000000 / TIMER_TICKS_PER_SEC; value->it_value.tv_usec = usecs; - value->it_interval.tv_sec = reload / CLOCKS_PER_SEC; - usecs = (reload % CLOCKS_PER_SEC) * (__int64)1000000 / CLOCKS_PER_SEC; + value->it_interval.tv_sec = reload / TIMER_TICKS_PER_SEC; + usecs = + (reload % TIMER_TICKS_PER_SEC) * (__int64)1000000 / TIMER_TICKS_PER_SEC; value->it_interval.tv_usec= usecs; return 0; @@ -690,26 +695,26 @@ setitimer(int which, struct itimerval *value, struct itimerval *ovalue) return 0; } - reload = value->it_interval.tv_sec * CLOCKS_PER_SEC; + reload = value->it_interval.tv_sec * TIMER_TICKS_PER_SEC; usecs = value->it_interval.tv_usec; if (value->it_interval.tv_sec == 0 - && usecs && usecs * CLOCKS_PER_SEC < clocks_min * 1000000) + && usecs && usecs * TIMER_TICKS_PER_SEC < clocks_min * 1000000) reload = clocks_min; else { - usecs *= CLOCKS_PER_SEC; + usecs *= TIMER_TICKS_PER_SEC; reload += usecs / 1000000; } - expire = value->it_value.tv_sec * CLOCKS_PER_SEC; + expire = value->it_value.tv_sec * TIMER_TICKS_PER_SEC; usecs = value->it_value.tv_usec; if (value->it_value.tv_sec == 0 - && usecs * CLOCKS_PER_SEC < clocks_min * 1000000) + && usecs * TIMER_TICKS_PER_SEC < clocks_min * 1000000) expire = clocks_min; else { - usecs *= CLOCKS_PER_SEC; + usecs *= TIMER_TICKS_PER_SEC; expire += usecs / 1000000; } From 86957a0cd3f273a83ce6584dcbaf513c2db429dc Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 28 Oct 2012 14:48:17 -0400 Subject: [PATCH 039/165] * lisp/minibuffer.el (completion--sifn-requote): Rewrite to handle things like Tramp's "/foo:~bar//baz" -> "/scpc:foo:/baz" mapping. Fixes: debbugs:11714 --- lisp/ChangeLog | 3 ++ lisp/minibuffer.el | 80 ++++++++++++++++++++++------------------------ 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c52ed5e6e8b..74e63b140c4 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2012-10-28 Stefan Monnier + * minibuffer.el (completion--sifn-requote): Rewrite to handle things + like Tramp's "/foo:~bar//baz" -> "/scpc:foo:/baz" mapping (bug#11714). + * tmm.el (tmm-prompt): Use map-keymap (bug#12744). 2012-10-27 Eli Zaretskii diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 52c3a0ba659..420d8f9d0fd 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -378,6 +378,8 @@ Note: TABLE needs to be a proper completion table which obeys predicates." ;; that `concat' and `unquote' commute (which tends to be the case). ;; And we ask `requote' to do the work of mapping from unquoted positions ;; back to quoted positions. + ;; FIXME: For some forms of "quoting" such as the truncation behavior of + ;; substitute-in-file-name, it would be desirable not to requote completely. "Return a new completion table operating on quoted text. TABLE operates on the unquoted text. UNQUOTE is a function that takes a string and returns a new unquoted string. @@ -2161,53 +2163,49 @@ same as `substitute-in-file-name'." "use the regular PRED argument" "23.2") (defun completion--sifn-requote (upos qstr) - ;; We're looking for `qupos' such that: + ;; We're looking for `qpos' such that: ;; (equal (substring (substitute-in-file-name qstr) 0 upos) - ;; (substitute-in-file-name (substring qstr 0 qupos))) + ;; (substitute-in-file-name (substring qstr 0 qpos))) ;; Big problem here: we have to reverse engineer substitute-in-file-name to ;; find the position corresponding to UPOS in QSTR, but ;; substitute-in-file-name can do anything, depending on file-name-handlers. + ;; substitute-in-file-name does the following kind of things: + ;; - expand env-var references. + ;; - turn backslashes into slashes. + ;; - truncate some prefix of the input. + ;; - rewrite some prefix. + ;; Some of these operations are written in external libraries and we'd rather + ;; not hard code any assumptions here about what they actually do. IOW, we + ;; want to treat substitute-in-file-name as a black box, as much as possible. ;; Kind of like in rfn-eshadow-update-overlay, only worse. - ;; FIXME: example of thing we do not handle: Tramp's makes - ;; (substitute-in-file-name "/foo:~/bar//baz") -> "/scpc:foo:/baz". - ;; FIXME: One way to try and handle "all" cases is to require - ;; substitute-in-file-name to preserve text-properties, so we could - ;; apply text-properties to the input string and then look for them in - ;; the output to understand what comes from where. - (let ((qpos 0)) - ;; Handle substitute-in-file-name's truncation behavior. - (let (tpos) - (while (and (string-match "[\\/][~/\\]" qstr qpos) - ;; Hopefully our regexp covers all truncation cases. - ;; Also let's make sure sifn indeed truncates here. + ;; Example of things we need to handle: + ;; - Tramp (substitute-in-file-name "/foo:~/bar//baz") => "/scpc:foo:/baz". + ;; - Cygwin (substitute-in-file-name "C:\bin") => "/usr/bin" + ;; (substitute-in-file-name "C:\") => "/" + ;; (substitute-in-file-name "C:\bi") => "/bi" + (let* ((ustr (substitute-in-file-name qstr)) + (uprefix (substring ustr 0 upos)) + qprefix) + ;; Main assumption: nothing after qpos should affect the text before upos, + ;; so we can work our way backward from the end of qstr, one character + ;; at a time. + ;; Second assumptions: If qpos is far from the end this can be a bit slow, + ;; so we speed it up by doing a first loop that skips a word at a time. + ;; This word-sized loop is careful not to cut in the middle of env-vars. + (while (let ((boundary (string-match "\\(\\$+{?\\)?\\w+\\W*\\'" qstr))) + (and boundary (progn - (setq tpos (1+ (match-beginning 0))) - (equal (substitute-in-file-name qstr) - (substitute-in-file-name (substring qstr tpos))))) - (setq qpos tpos))) - ;; `upos' is relative to the position corresponding to `qpos' in - ;; (substitute-in-file-name qstr), so as qpos moves forward, upos - ;; gets smaller. - (while (and (> upos 0) - (string-match "\\$\\(\\$\\|\\([[:alnum:]_]+\\|{[^}]*}\\)\\)?" - qstr qpos)) - (cond - ((>= (- (match-beginning 0) qpos) upos) ; UPOS is before current match. - (setq qpos (+ qpos upos)) - (setq upos 0)) - ((not (match-end 1)) ;A sole $: probably an error. - (setq upos (- upos (- (match-end 0) qpos))) - (setq qpos (match-end 0))) - (t - (setq upos (- upos (- (match-beginning 0) qpos))) - (setq qpos (match-end 0)) - (setq upos (- upos (length (substitute-in-file-name - (match-string 0 qstr)))))))) - ;; If `upos' is negative, it's because it's within the expansion of an - ;; envvar, i.e. there is no exactly matching qpos, so we just use the next - ;; available qpos right after the envvar. - (cons (if (>= upos 0) (+ qpos upos) qpos) - #'minibuffer--double-dollars))) + (setq qprefix (substring qstr 0 boundary)) + (string-prefix-p uprefix + (substitute-in-file-name qprefix))))) + (setq qstr qprefix)) + (let ((qpos (length qstr))) + (while (and (> qpos 0) + (string-prefix-p uprefix + (substitute-in-file-name + (substring qstr 0 (1- qpos))))) + (setq qpos (1- qpos))) + (cons qpos #'minibuffer--double-dollars)))) (defalias 'completion--file-name-table (completion-table-with-quoting #'completion-file-name-table From b9383404934cc07ec1f92b0354a559ed44cf4b2c Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 28 Oct 2012 15:07:52 -0400 Subject: [PATCH 040/165] * lisp/minibuffer.el (completion--twq-all): Disable too-strict assertions. Fixes: debbugs:11714 --- lisp/ChangeLog | 1 + lisp/minibuffer.el | 28 ++++++++++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 74e63b140c4..2bdf074b9d5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -2,6 +2,7 @@ * minibuffer.el (completion--sifn-requote): Rewrite to handle things like Tramp's "/foo:~bar//baz" -> "/scpc:foo:/baz" mapping (bug#11714). + (completion--twq-all): Disable too-strict assertions. * tmm.el (tmm-prompt): Use map-keymap (bug#12744). diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 420d8f9d0fd..38347f23f7d 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -529,10 +529,12 @@ for use at QPOS." (`(,qfullpos . ,qfun) (funcall requote (+ boundary (length prefix)) string)) (qfullprefix (substring string 0 qfullpos)) - (_ (cl-assert (completion--string-equal-p - (funcall unquote qfullprefix) - (concat (substring ustring 0 boundary) prefix)) - t)) + ;; FIXME: This assertion can be wrong, e.g. in Cygwin, where + ;; (unquote "c:\bin") => "/usr/bin" but (unquote "c:\") => "/". + ;;(cl-assert (completion--string-equal-p + ;; (funcall unquote qfullprefix) + ;; (concat (substring ustring 0 boundary) prefix)) + ;; t)) (qboundary (car (funcall requote boundary string))) (_ (cl-assert (<= qboundary qfullpos))) ;; FIXME: this split/quote/concat business messes up the carefully @@ -561,14 +563,16 @@ for use at QPOS." (let* ((new (substring completion (length prefix))) (qnew (funcall qfun new)) (qcompletion (concat qprefix qnew))) - (cl-assert - (completion--string-equal-p - (funcall unquote - (concat (substring string 0 qboundary) - qcompletion)) - (concat (substring ustring 0 boundary) - completion)) - t) + ;; FIXME: Similarly here, Cygwin's mapping trips this + ;; assertion. + ;;(cl-assert + ;; (completion--string-equal-p + ;; (funcall unquote + ;; (concat (substring string 0 qboundary) + ;; qcompletion)) + ;; (concat (substring ustring 0 boundary) + ;; completion)) + ;; t) qcompletion)) completions) qboundary)))) From cd44022cb0f1a126f74a45b98302185262d19396 Mon Sep 17 00:00:00 2001 From: Daniel Hackney Date: Sun, 28 Oct 2012 16:41:49 -0400 Subject: [PATCH 041/165] * lisp/emacs-lisp/package.el (package-generate-autoloads): Kill buffer "PKGNAME-autoloads.el" in case we created it. --- lisp/ChangeLog | 5 +++++ lisp/emacs-lisp/package.el | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2bdf074b9d5..999a06648ac 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-10-28 Daniel Hackney + + * emacs-lisp/package.el (package-generate-autoloads): Kill buffer + "PKGNAME-autoloads.el" in case we created it. + 2012-10-28 Stefan Monnier * minibuffer.el (completion--sifn-requote): Rewrite to handle things diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 303642b5bec..6629410a1f1 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -590,7 +590,9 @@ EXTRA-PROPERTIES is currently unused." (version-control 'never)) (unless (fboundp 'autoload-ensure-default-file) (package-autoload-ensure-default-file generated-autoload-file)) - (update-directory-autoloads pkg-dir))) + (update-directory-autoloads pkg-dir) + (let ((buf (find-buffer-visiting generated-autoload-file))) + (when buf (kill-buffer buf))))) (defvar tar-parse-info) (declare-function tar-untar-buffer "tar-mode" ()) From b3871e59da478e32561f9c09e61ed1383d51a0c5 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sun, 28 Oct 2012 20:06:39 -0400 Subject: [PATCH 042/165] * lisp/progmodes/sh-script.el (sh-font-lock-paren): Also put punctuation syntax to the matching opener, if any. (sh-smie-sh-forward-token, sh-smie-sh-backward-token): Recognize this matching open as a "case-(". (sh-smie-rc-grammar): Add a corresponding rule for it. Fixes: debbugs:12547 --- lisp/ChangeLog | 8 +++ lisp/progmodes/sh-script.el | 99 ++++++++++++++++++++----------------- 2 files changed, 62 insertions(+), 45 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 999a06648ac..3265f8acf41 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2012-10-29 Stefan Monnier + + * progmodes/sh-script.el (sh-font-lock-paren): Also put punctuation + syntax to the matching opener, if any (bug#12547). + (sh-smie-sh-forward-token, sh-smie-sh-backward-token): Recognize this + matching open as a "case-(". + (sh-smie-rc-grammar): Add a corresponding rule for it. + 2012-10-28 Daniel Hackney * emacs-lisp/package.el (package-generate-autoloads): Kill buffer diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index 06ded5fb53d..daa83620051 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -1033,51 +1033,57 @@ subshells can nest." (defun sh-font-lock-paren (start) (unless (nth 8 (syntax-ppss)) (save-excursion - (goto-char start) - ;; Skip through all patterns - (while - (progn - (while - (progn - (forward-comment (- (point-max))) - (when (and (eolp) (sh-is-quoted-p (point))) - (forward-char -1) - t))) - ;; Skip through one pattern - (while - (or (/= 0 (skip-syntax-backward "w_")) - (/= 0 (skip-chars-backward "-$=?[]*@/\\\\")) - (and (sh-is-quoted-p (1- (point))) - (goto-char (- (point) 2))) - (when (memq (char-before) '(?\" ?\' ?\})) - (condition-case nil (progn (backward-sexp 1) t) - (error nil))))) - ;; Patterns can be preceded by an open-paren (Bug#1320). - (if (eq (char-before (point)) ?\() + (let ((open nil)) + (goto-char start) + ;; Skip through all patterns + (while + (progn + (while + (progn + (forward-comment (- (point-max))) + (when (and (eolp) (sh-is-quoted-p (point))) + (forward-char -1) + t))) + ;; Skip through one pattern + (while + (or (/= 0 (skip-syntax-backward "w_")) + (/= 0 (skip-chars-backward "-$=?[]*@/\\\\")) + (and (sh-is-quoted-p (1- (point))) + (goto-char (- (point) 2))) + (when (memq (char-before) '(?\" ?\' ?\})) + (condition-case nil (progn (backward-sexp 1) t) + (error nil))))) + ;; Patterns can be preceded by an open-paren (bug#1320). + (when (eq (char-before (point)) ?\() + (backward-char 1) + (setq open (point))) + (while (progn + (forward-comment (- (point-max))) + ;; Maybe we've bumped into an escaped newline. + (sh-is-quoted-p (point))) (backward-char 1)) - (while (progn - (forward-comment (- (point-max))) - ;; Maybe we've bumped into an escaped newline. - (sh-is-quoted-p (point))) - (backward-char 1)) - (when (eq (char-before) ?|) - (backward-char 1) t))) - (and (> (point) (1+ (point-min))) - (progn (backward-char 2) - (if (> start (line-end-position)) - (put-text-property (point) (1+ start) - 'syntax-multiline t)) - ;; FIXME: The `in' may just be a random argument to - ;; a normal command rather than the real `in' keyword. - ;; I.e. we should look back to try and find the - ;; corresponding `case'. - (and (looking-at ";[;&]\\|\\_ (point) (1+ (point-min))) + (progn (backward-char 2) + (if (> start (line-end-position)) + (put-text-property (point) (1+ start) + 'syntax-multiline t)) + ;; FIXME: The `in' may just be a random argument to + ;; a normal command rather than the real `in' keyword. + ;; I.e. we should look back to try and find the + ;; corresponding `case'. + (and (looking-at ";[;&]\\|\\_ Date: Sun, 28 Oct 2012 18:06:13 -0700 Subject: [PATCH 043/165] * doc/misc/cl.texi (Organization): More details on cl-lib.el versus cl.el. --- doc/misc/ChangeLog | 4 ++++ doc/misc/cl.texi | 43 +++++++++++++++++++++++++------------------ 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index fe7781c57cc..8c9573aa00c 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,7 @@ +2012-10-29 Glenn Morris + + * cl.texi (Organization): More details on cl-lib.el versus cl.el. + 2012-10-28 Glenn Morris * cl.texi (Multiple Values, Common Lisp Compatibility): diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index ed4206c0b97..615a703f925 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -182,17 +182,30 @@ All you have to do is @code{(require 'cl-lib)}, and @file{cl-lib.el} will take care of pulling in the other files when they are needed. -There is another file, @file{cl.el}, which was the main entry point -to the CL package prior to Emacs 24.3. Nowadays, it is replaced -by @file{cl-lib.el}. The two provide the same features, but use -different function names (in fact, @file{cl.el} just defines aliases -to the @file{cl-lib.el} definitions). In particular, the old @file{cl.el} -does not use a clean namespace. For this reason, Emacs has a policy -that packages distributed with Emacs must not load @code{cl} at run time. -(It is ok for them to load @code{cl} at @emph{compile} time, with -@code{eval-when-compile}, and use the macros it provides.) There is -no such restriction on the use of @code{cl-lib}. New code should use -@code{cl-lib} rather than @code{cl}. @xref{Naming Conventions}. +There is another file, @file{cl.el}, which was the main entry point to +the CL package prior to Emacs 24.3. Nowadays, it is replaced by +@file{cl-lib.el}. The two provide the same features (in most cases), +but use different function names (in fact, @file{cl.el} mainly just +defines aliases to the @file{cl-lib.el} definitions). Where +@file{cl-lib.el} defines a function called, for example, +@code{cl-incf}, @file{cl.el} uses the same name but without the +@samp{cl-} prefix, e.g. @code{incf} in this example. There are a few +exceptions to this. First, functions such as @code{cl-defun} where +the unprefixed version was already used for a standard Emacs Lisp +function. In such cases, the @file{cl.el} version adds a @samp{*} +suffix, e.g. @code{defun*}. Second, there are some obsolete features +that are only implemented in @file{cl.el}, not in @file{cl-lib.el}, +because they are replaced by other standard Emacs Lisp features. +Finally, in a very few cases the old @file{cl.el} versions do not +behave in exactly the same way as the @file{cl-lib.el} versions. +@xref{Obsolete Features}. + +Since the old @file{cl.el} does not use a clean namespace, Emacs has a +policy that packages distributed with Emacs must not load @code{cl} at +run time. (It is ok for them to load @code{cl} at @emph{compile} +time, with @code{eval-when-compile}, and use the macros it provides.) +There is no such restriction on the use of @code{cl-lib}. New code +should use @code{cl-lib} rather than @code{cl}. There is one more file, @file{cl-compat.el}, which defines some routines from the older Quiroz CL package that are not otherwise @@ -4666,13 +4679,6 @@ referenced by @code{cl-return} or @code{cl-return-from} inside the block. Following is a list of all known incompatibilities between this package and Common Lisp as documented in Steele (2nd edition). -@ignore -Certain function names, such as @code{member}, @code{assoc}, and -@code{floor}, were already taken by (incompatible) Emacs Lisp -functions; this package appends @samp{*} to the names of its -Common Lisp versions of these functions. -@end ignore - The word @code{cl-defun} is required instead of @code{defun} in order to use extended Common Lisp argument lists in a function. Likewise, @code{cl-defmacro} and @code{cl-function} are versions of those forms @@ -4684,6 +4690,7 @@ The @code{equal} predicate does not distinguish between IEEE floating-point plus and minus zero. The @code{cl-equalp} predicate has several differences with Common Lisp; @pxref{Predicates}. +@c FIXME no longer provided by cl. The @code{setf} mechanism is entirely compatible, except that setf-methods return a list of five values rather than five values directly. Also, the new ``@code{setf} function'' concept From a0ccbcbddcdf0c7cb990341fd1b9947c08eaaa15 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 28 Oct 2012 18:12:53 -0700 Subject: [PATCH 044/165] * lisp/emacs-lisp/cl.el (defsetf): Doc fix. --- lisp/ChangeLog | 4 ++++ lisp/emacs-lisp/cl.el | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3265f8acf41..76cc7e52863 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-10-29 Glenn Morris + + * emacs-lisp/cl.el (defsetf): Doc fix. + 2012-10-29 Stefan Monnier * progmodes/sh-script.el (sh-font-lock-paren): Also put punctuation diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el index 34beed0d9ef..a558e505e66 100644 --- a/lisp/emacs-lisp/cl.el +++ b/lisp/emacs-lisp/cl.el @@ -568,9 +568,9 @@ well for simple place forms. In the simple `defsetf' form, `setf's of the form (setf (NAME ARGS...) VAL) are transformed to function or macro calls of the form (FUNC ARGS... VAL). Example: - (cl-defsetf aref aset) + (defsetf aref aset) -Alternate form: (cl-defsetf NAME ARGLIST (STORE) BODY...). +Alternate form: (defsetf NAME ARGLIST (STORE) BODY...). Here, the above `setf' call is expanded by binding the argument forms ARGS according to ARGLIST, binding the value form VAL to STORE, then executing BODY, which must return a Lisp form that does the necessary `setf' operation. @@ -578,7 +578,7 @@ Actually, ARGLIST and STORE may be bound to temporary variables which are introduced automatically to preserve proper execution order of the arguments. Example: - (cl-defsetf nth (n x) (v) `(setcar (nthcdr ,n ,x) ,v)) + (defsetf nth (n x) (v) `(setcar (nthcdr ,n ,x) ,v)) \(fn NAME [FUNC | ARGLIST (STORE) BODY...])" (declare (debug From f1e1b6f3d38175ac7f84d9136bd5b8d4bc9f74e7 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 28 Oct 2012 18:14:50 -0700 Subject: [PATCH 045/165] Doc fix (use an alias to be consistent with the rest of this manual) --- doc/misc/cl.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 615a703f925..f05d72362d3 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -5089,7 +5089,7 @@ This section describes some obsolete ways to extend @code{setf}. They are replaced by @file{gv.el} in Emacs 24.3. @c FIXME. -@defmac define-setf-expander name arglist &rest body +@defmac define-setf-method name arglist &rest body Use @file{gv.el}. @end defmac From a3c5b619fc4c1334c4d295def008318ae0e9bca7 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 28 Oct 2012 18:19:26 -0700 Subject: [PATCH 046/165] * cl.texi (Setf Extensions): Remove `apply' setf since it seems to be disabled. --- doc/misc/ChangeLog | 1 + doc/misc/cl.texi | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 8c9573aa00c..9aeaf87426e 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,6 +1,7 @@ 2012-10-29 Glenn Morris * cl.texi (Organization): More details on cl-lib.el versus cl.el. + (Setf Extensions): Remove `apply' setf since it seems to be disabled. 2012-10-28 Glenn Morris diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index f05d72362d3..b77dfcd94be 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -964,6 +964,8 @@ also works in this way by replacing a portion of the current buffer. @c FIXME? Also `eq'? (see cl-lib.el) +@c Currently commented out in cl.el. +@ignore @item A call of the form @code{(apply '@var{func} @dots{})} or @code{(apply (function @var{func}) @dots{})}, where @var{func} @@ -972,6 +974,7 @@ in the sense described in Steele's book; since none of the standard Emacs place functions are suitable in this sense, this feature is only interesting when used with places you define yourself with @code{define-setf-method} or the long form of @code{defsetf}. +@end ignore @item A macro call, in which case the macro is expanded and @code{setf} @@ -979,7 +982,7 @@ is applied to the resulting form. @item Any form for which a @code{defsetf} or @code{define-setf-method} -has been made. +has been made. @xref{Obsolete Setf Customization}. @end itemize @c FIXME should this be in lispref? It seems self-evident. From d571e9c385d648a90581e2c5cd1a883b8c0ea0e4 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 28 Oct 2012 18:29:22 -0700 Subject: [PATCH 047/165] Move some cl.texi setf extensions to the Obsolete appendix * doc/misc/cl.texi (Customizing Setf): Move contents to "Obsolete Setf Customization". (Modify Macros, Multiple Values): Remove mentions of obsolete feature. --- doc/misc/ChangeLog | 2 + doc/misc/cl.texi | 425 ++++++++++++++++++++++----------------------- 2 files changed, 205 insertions(+), 222 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 9aeaf87426e..e85e18ff5c7 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -2,6 +2,8 @@ * cl.texi (Organization): More details on cl-lib.el versus cl.el. (Setf Extensions): Remove `apply' setf since it seems to be disabled. + (Customizing Setf): Move contents to "Obsolete Setf Customization". + (Modify Macros, Multiple Values): Remove mentions of obsolete feature. 2012-10-28 Glenn Morris diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index b77dfcd94be..086cc25fbcc 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -883,7 +883,6 @@ generalized variables. @menu * Setf Extensions:: Additional @code{setf} places. * Modify Macros:: @code{cl-incf}, @code{cl-rotatef}, @code{letf}, @code{cl-callf}, etc. -* Customizing Setf:: @code{define-modify-macro}, @code{defsetf}, @code{define-setf-method}. @end menu @node Setf Extensions @@ -1198,9 +1197,7 @@ Some more examples: (cl-callf cl-union happy-people (list joe bob) :test 'same-person) @end example -@xref{Customizing Setf}, for @code{define-modify-macro}, a way -to create even more concise notations for modify macros. Note -again that @code{cl-callf} is an extension to standard Common Lisp. +Note again that @code{cl-callf} is an extension to standard Common Lisp. @end defmac @defmac cl-callf2 @var{function} @var{arg1} @var{place} @var{args}@dots{} @@ -1216,214 +1213,6 @@ blocks for other macros like @code{cl-incf}, @code{cl-pushnew}, and macros are used in the processing of symbol macros; @pxref{Macro Bindings}. -@node Customizing Setf -@subsection Customizing Setf - -@noindent -Common Lisp defines three macros, @code{define-modify-macro}, -@code{defsetf}, and @code{define-setf-method}, that allow the -user to extend generalized variables in various ways. - -@defmac define-modify-macro name arglist function [doc-string] -This macro defines a ``read-modify-write'' macro similar to -@code{cl-incf} and @code{cl-decf}. The macro @var{name} is defined -to take a @var{place} argument followed by additional arguments -described by @var{arglist}. The call - -@example -(@var{name} @var{place} @var{args}...) -@end example - -@noindent -will be expanded to - -@example -(cl-callf @var{func} @var{place} @var{args}...) -@end example - -@noindent -which in turn is roughly equivalent to - -@example -(setf @var{place} (@var{func} @var{place} @var{args}...)) -@end example - -For example: - -@example -(define-modify-macro cl-incf (&optional (n 1)) +) -(define-modify-macro cl-concatf (&rest args) concat) -@end example - -Note that @code{&key} is not allowed in @var{arglist}, but -@code{&rest} is sufficient to pass keywords on to the function. - -Most of the modify macros defined by Common Lisp do not exactly -follow the pattern of @code{define-modify-macro}. For example, -@code{push} takes its arguments in the wrong order, and @code{pop} -is completely irregular. You can define these macros ``by hand'' -using @code{get-setf-method}, or consult the source -to see how to use the internal @code{setf} building blocks. -@end defmac - -@defmac defsetf access-fn update-fn -This is the simpler of two @code{defsetf} forms. Where -@var{access-fn} is the name of a function which accesses a place, -this declares @var{update-fn} to be the corresponding store -function. From now on, - -@example -(setf (@var{access-fn} @var{arg1} @var{arg2} @var{arg3}) @var{value}) -@end example - -@noindent -will be expanded to - -@example -(@var{update-fn} @var{arg1} @var{arg2} @var{arg3} @var{value}) -@end example - -@noindent -The @var{update-fn} is required to be either a true function, or -a macro which evaluates its arguments in a function-like way. Also, -the @var{update-fn} is expected to return @var{value} as its result. -Otherwise, the above expansion would not obey the rules for the way -@code{setf} is supposed to behave. - -As a special (non-Common-Lisp) extension, a third argument of @code{t} -to @code{defsetf} says that the @code{update-fn}'s return value is -not suitable, so that the above @code{setf} should be expanded to -something more like - -@example -(let ((temp @var{value})) - (@var{update-fn} @var{arg1} @var{arg2} @var{arg3} temp) - temp) -@end example - -Some examples of the use of @code{defsetf}, drawn from the standard -suite of setf methods, are: - -@example -(defsetf car setcar) -(defsetf symbol-value set) -(defsetf buffer-name rename-buffer t) -@end example -@end defmac - -@defmac defsetf access-fn arglist (store-var) forms@dots{} -This is the second, more complex, form of @code{defsetf}. It is -rather like @code{defmacro} except for the additional @var{store-var} -argument. The @var{forms} should return a Lisp form which stores -the value of @var{store-var} into the generalized variable formed -by a call to @var{access-fn} with arguments described by @var{arglist}. -The @var{forms} may begin with a string which documents the @code{setf} -method (analogous to the doc string that appears at the front of a -function). - -For example, the simple form of @code{defsetf} is shorthand for - -@example -(defsetf @var{access-fn} (&rest args) (store) - (append '(@var{update-fn}) args (list store))) -@end example - -The Lisp form that is returned can access the arguments from -@var{arglist} and @var{store-var} in an unrestricted fashion; -macros like @code{setf} and @code{cl-incf} which invoke this -setf-method will insert temporary variables as needed to make -sure the apparent order of evaluation is preserved. - -Another example drawn from the standard package: - -@example -(defsetf nth (n x) (store) - (list 'setcar (list 'nthcdr n x) store)) -@end example -@end defmac - -@defmac define-setf-method access-fn arglist forms@dots{} -This is the most general way to create new place forms. When -a @code{setf} to @var{access-fn} with arguments described by -@var{arglist} is expanded, the @var{forms} are evaluated and -must return a list of five items: - -@enumerate -@item -A list of @dfn{temporary variables}. - -@item -A list of @dfn{value forms} corresponding to the temporary variables -above. The temporary variables will be bound to these value forms -as the first step of any operation on the generalized variable. - -@item -A list of exactly one @dfn{store variable} (generally obtained -from a call to @code{gensym}). - -@item -A Lisp form which stores the contents of the store variable into -the generalized variable, assuming the temporaries have been -bound as described above. - -@item -A Lisp form which accesses the contents of the generalized variable, -assuming the temporaries have been bound. -@end enumerate - -This is exactly like the Common Lisp macro of the same name, -except that the method returns a list of five values rather -than the five values themselves, since Emacs Lisp does not -support Common Lisp's notion of multiple return values. - -Once again, the @var{forms} may begin with a documentation string. - -A setf-method should be maximally conservative with regard to -temporary variables. In the setf-methods generated by -@code{defsetf}, the second return value is simply the list of -arguments in the place form, and the first return value is a -list of a corresponding number of temporary variables generated -by @code{cl-gensym}. Macros like @code{setf} and @code{cl-incf} which -use this setf-method will optimize away most temporaries that -turn out to be unnecessary, so there is little reason for the -setf-method itself to optimize. -@end defmac - -@defun get-setf-method place &optional env -This function returns the setf-method for @var{place}, by -invoking the definition previously recorded by @code{defsetf} -or @code{define-setf-method}. The result is a list of five -values as described above. You can use this function to build -your own @code{cl-incf}-like modify macros. (Actually, it is -@c FIXME? -better to use the internal functions @code{cl-setf-do-modify} -and @code{cl-setf-do-store}, which are a bit easier to use and -which also do a number of optimizations; consult the source -code for the @code{cl-incf} function for a simple example.) - -The argument @var{env} specifies the ``environment'' to be -passed on to @code{macroexpand} if @code{get-setf-method} should -need to expand a macro in @var{place}. It should come from -an @code{&environment} argument to the macro or setf-method -that called @code{get-setf-method}. - -See also the source code for the setf-methods for @code{apply} -and @code{substring}, each of which works by calling -@code{get-setf-method} on a simpler case, then massaging -the result in various ways. -@end defun - -Modern Common Lisp defines a second, independent way to specify -the @code{setf} behavior of a function, namely ``@code{setf} -functions'' whose names are lists @code{(setf @var{name})} -rather than symbols. For example, @code{(defun (setf foo) @dots{})} -defines the function that is used when @code{setf} is applied to -@code{foo}. This package does not currently support @code{setf} -functions. In particular, it is a compile-time error to use -@code{setf} on a form which has not already been @code{defsetf}'d -or otherwise declared; in newer Common Lisps, this would not be -an error since the function @code{(setf @var{func})} might be -defined later. @node Variable Bindings @section Variable Bindings @@ -2672,8 +2461,8 @@ functions, by contrast, always return exactly one result. This package makes no attempt to emulate Common Lisp multiple return values; Emacs versions of Common Lisp functions that return more than one value either return just the first value (as in -@code{cl-compiler-macroexpand}) or return a list of values (as in -@code{get-setf-method}). This package @emph{does} define placeholders +@code{cl-compiler-macroexpand}) or return a list of values. +This package @emph{does} define placeholders for the Common Lisp functions that work with multiple values, but in Emacs Lisp these functions simply operate on lists instead. The @code{cl-values} form, for example, is a synonym for @code{list} @@ -5088,22 +4877,214 @@ Replaced by @code{cl-letf} (@pxref{Modify Macros}). @node Obsolete Setf Customization @appendixsec Obsolete Ways to Customize Setf -This section describes some obsolete ways to extend @code{setf}. -They are replaced by @file{gv.el} in Emacs 24.3. +Common Lisp defines three macros, @code{define-modify-macro}, +@code{defsetf}, and @code{define-setf-method}, that allow the +user to extend generalized variables in various ways. +In Emacs, these are obsolete, replaced by various features of +@file{gv.el} in Emacs 24.3. +@c FIXME details. -@c FIXME. -@defmac define-setf-method name arglist &rest body -Use @file{gv.el}. +@defmac define-modify-macro name arglist function [doc-string] +This macro defines a ``read-modify-write'' macro similar to +@code{cl-incf} and @code{cl-decf}. The macro @var{name} is defined +to take a @var{place} argument followed by additional arguments +described by @var{arglist}. The call + +@example +(@var{name} @var{place} @var{args}...) +@end example + +@noindent +will be expanded to + +@example +(cl-callf @var{func} @var{place} @var{args}...) +@end example + +@noindent +which in turn is roughly equivalent to + +@example +(setf @var{place} (@var{func} @var{place} @var{args}...)) +@end example + +For example: + +@example +(define-modify-macro cl-incf (&optional (n 1)) +) +(define-modify-macro cl-concatf (&rest args) concat) +@end example + +Note that @code{&key} is not allowed in @var{arglist}, but +@code{&rest} is sufficient to pass keywords on to the function. + +Most of the modify macros defined by Common Lisp do not exactly +follow the pattern of @code{define-modify-macro}. For example, +@code{push} takes its arguments in the wrong order, and @code{pop} +is completely irregular. You can define these macros ``by hand'' +using @code{get-setf-method}, or consult the source +to see how to use the internal @code{setf} building blocks. @end defmac @defmac defsetf access-fn update-fn -Use @file{gv.el}. +This is the simpler of two @code{defsetf} forms. Where +@var{access-fn} is the name of a function which accesses a place, +this declares @var{update-fn} to be the corresponding store +function. From now on, + +@example +(setf (@var{access-fn} @var{arg1} @var{arg2} @var{arg3}) @var{value}) +@end example + +@noindent +will be expanded to + +@example +(@var{update-fn} @var{arg1} @var{arg2} @var{arg3} @var{value}) +@end example + +@noindent +The @var{update-fn} is required to be either a true function, or +a macro which evaluates its arguments in a function-like way. Also, +the @var{update-fn} is expected to return @var{value} as its result. +Otherwise, the above expansion would not obey the rules for the way +@code{setf} is supposed to behave. + +As a special (non-Common-Lisp) extension, a third argument of @code{t} +to @code{defsetf} says that the @code{update-fn}'s return value is +not suitable, so that the above @code{setf} should be expanded to +something more like + +@example +(let ((temp @var{value})) + (@var{update-fn} @var{arg1} @var{arg2} @var{arg3} temp) + temp) +@end example + +Some examples of the use of @code{defsetf}, drawn from the standard +suite of setf methods, are: + +@example +(defsetf car setcar) +(defsetf symbol-value set) +(defsetf buffer-name rename-buffer t) +@end example @end defmac -@defmac define-modify-macro name arglist function [doc-string] -Use @file{gv.el}. +@defmac defsetf access-fn arglist (store-var) forms@dots{} +This is the second, more complex, form of @code{defsetf}. It is +rather like @code{defmacro} except for the additional @var{store-var} +argument. The @var{forms} should return a Lisp form which stores +the value of @var{store-var} into the generalized variable formed +by a call to @var{access-fn} with arguments described by @var{arglist}. +The @var{forms} may begin with a string which documents the @code{setf} +method (analogous to the doc string that appears at the front of a +function). + +For example, the simple form of @code{defsetf} is shorthand for + +@example +(defsetf @var{access-fn} (&rest args) (store) + (append '(@var{update-fn}) args (list store))) +@end example + +The Lisp form that is returned can access the arguments from +@var{arglist} and @var{store-var} in an unrestricted fashion; +macros like @code{setf} and @code{cl-incf} which invoke this +setf-method will insert temporary variables as needed to make +sure the apparent order of evaluation is preserved. + +Another example drawn from the standard package: + +@example +(defsetf nth (n x) (store) + (list 'setcar (list 'nthcdr n x) store)) +@end example @end defmac +@defmac define-setf-method access-fn arglist forms@dots{} +This is the most general way to create new place forms. When +a @code{setf} to @var{access-fn} with arguments described by +@var{arglist} is expanded, the @var{forms} are evaluated and +must return a list of five items: + +@enumerate +@item +A list of @dfn{temporary variables}. + +@item +A list of @dfn{value forms} corresponding to the temporary variables +above. The temporary variables will be bound to these value forms +as the first step of any operation on the generalized variable. + +@item +A list of exactly one @dfn{store variable} (generally obtained +from a call to @code{gensym}). + +@item +A Lisp form which stores the contents of the store variable into +the generalized variable, assuming the temporaries have been +bound as described above. + +@item +A Lisp form which accesses the contents of the generalized variable, +assuming the temporaries have been bound. +@end enumerate + +This is exactly like the Common Lisp macro of the same name, +except that the method returns a list of five values rather +than the five values themselves, since Emacs Lisp does not +support Common Lisp's notion of multiple return values. + +Once again, the @var{forms} may begin with a documentation string. + +A setf-method should be maximally conservative with regard to +temporary variables. In the setf-methods generated by +@code{defsetf}, the second return value is simply the list of +arguments in the place form, and the first return value is a +list of a corresponding number of temporary variables generated +by @code{cl-gensym}. Macros like @code{setf} and @code{cl-incf} which +use this setf-method will optimize away most temporaries that +turn out to be unnecessary, so there is little reason for the +setf-method itself to optimize. +@end defmac + +@defun get-setf-method place &optional env +This function returns the setf-method for @var{place}, by +invoking the definition previously recorded by @code{defsetf} +or @code{define-setf-method}. The result is a list of five +values as described above. You can use this function to build +your own @code{cl-incf}-like modify macros. (Actually, it is +@c FIXME? +better to use the internal functions @code{cl-setf-do-modify} +and @code{cl-setf-do-store}, which are a bit easier to use and +which also do a number of optimizations; consult the source +code for the @code{cl-incf} function for a simple example.) + +The argument @var{env} specifies the ``environment'' to be +passed on to @code{macroexpand} if @code{get-setf-method} should +need to expand a macro in @var{place}. It should come from +an @code{&environment} argument to the macro or setf-method +that called @code{get-setf-method}. + +See also the source code for the setf-methods for @code{apply} +and @code{substring}, each of which works by calling +@code{get-setf-method} on a simpler case, then massaging +the result in various ways. +@end defun + +Modern Common Lisp defines a second, independent way to specify +the @code{setf} behavior of a function, namely ``@code{setf} +functions'' whose names are lists @code{(setf @var{name})} +rather than symbols. For example, @code{(defun (setf foo) @dots{})} +defines the function that is used when @code{setf} is applied to +@code{foo}. This package does not currently support @code{setf} +functions. In particular, it is a compile-time error to use +@code{setf} on a form which has not already been @code{defsetf}'d +or otherwise declared; in newer Common Lisps, this would not be +an error since the function @code{(setf @var{func})} might be +defined later. + @node GNU Free Documentation License @appendix GNU Free Documentation License From 6a07d52ed8e21a1f17ed816c8f8348a5cafc02c8 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 28 Oct 2012 18:31:10 -0700 Subject: [PATCH 048/165] * doc/misc/cl.texi (Obsolete Setf Customization): Don't mention `apply' setf. --- doc/misc/ChangeLog | 1 + doc/misc/cl.texi | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index e85e18ff5c7..6d8799134a1 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -4,6 +4,7 @@ (Setf Extensions): Remove `apply' setf since it seems to be disabled. (Customizing Setf): Move contents to "Obsolete Setf Customization". (Modify Macros, Multiple Values): Remove mentions of obsolete feature. + (Obsolete Setf Customization): Don't mention `apply' setf. 2012-10-28 Glenn Morris diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 086cc25fbcc..0fc46840fae 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -5067,10 +5067,10 @@ need to expand a macro in @var{place}. It should come from an @code{&environment} argument to the macro or setf-method that called @code{get-setf-method}. -See also the source code for the setf-methods for @code{apply} -and @code{substring}, each of which works by calling -@code{get-setf-method} on a simpler case, then massaging -the result in various ways. +See also the source code for the setf-method for +@c Also @code{apply}, but that is commented out. +@code{substring}, which works by calling @code{get-setf-method} on a +simpler case, then massaging the result. @end defun Modern Common Lisp defines a second, independent way to specify From d55911cf1de25091a072642f8ef8dd3d1f4e47b8 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 28 Oct 2012 18:36:29 -0700 Subject: [PATCH 049/165] * cl.texi (Modify Macros, Other Clauses): Remove mentions of obsolete features. --- doc/misc/ChangeLog | 3 ++- doc/misc/cl.texi | 21 ++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 6d8799134a1..92b5b243ec9 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -3,7 +3,8 @@ * cl.texi (Organization): More details on cl-lib.el versus cl.el. (Setf Extensions): Remove `apply' setf since it seems to be disabled. (Customizing Setf): Move contents to "Obsolete Setf Customization". - (Modify Macros, Multiple Values): Remove mentions of obsolete feature. + (Modify Macros, Multiple Values, Other Clauses): + Remove mentions of obsolete features. (Obsolete Setf Customization): Don't mention `apply' setf. 2012-10-28 Glenn Morris diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 0fc46840fae..01068d57071 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -973,6 +973,7 @@ in the sense described in Steele's book; since none of the standard Emacs place functions are suitable in this sense, this feature is only interesting when used with places you define yourself with @code{define-setf-method} or the long form of @code{defsetf}. +@xref{Obsolete Setf Customization}. @end ignore @item @@ -1208,10 +1209,9 @@ equivalent to @code{(cl-callf2 cons @var{x} @var{place})}. @end defmac The @code{cl-callf} and @code{cl-callf2} macros serve as building -blocks for other macros like @code{cl-incf}, @code{cl-pushnew}, and -@code{define-modify-macro}. The @code{letf} and @code{cl-letf*} -macros are used in the processing of symbol macros; -@pxref{Macro Bindings}. +blocks for other macros like @code{cl-incf}, and @code{cl-pushnew}. +The @code{letf} and @code{cl-letf*} macros are used in the processing +of symbol macros; @pxref{Macro Bindings}. @node Variable Bindings @@ -2438,13 +2438,12 @@ was named). The @code{return} clause is implemented a bit more efficiently, though. @end table -While there is no high-level way to add user extensions to @code{cl-loop} -(comparable to @code{defsetf} for @code{setf}, say), this package -does offer two properties called @code{cl-loop-handler} and -@code{cl-loop-for-handler} which are functions to be called when -a given symbol is encountered as a top-level loop clause or -@code{for} clause, respectively. Consult the source code in -file @file{cl-macs.el} for details. +While there is no high-level way to add user extensions to @code{cl-loop}, +this package does offer two properties called @code{cl-loop-handler} +and @code{cl-loop-for-handler} which are functions to be called when a +given symbol is encountered as a top-level loop clause or @code{for} +clause, respectively. Consult the source code in file +@file{cl-macs.el} for details. This package's @code{cl-loop} macro is compatible with that of Common Lisp, except that a few features are not implemented: @code{loop-finish} From 894b9dd938ca50ca24faf2e366631a9ab9cd79b7 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 29 Oct 2012 17:55:57 +0800 Subject: [PATCH 050/165] Manage face-remapping-alist properly in face-remap-add-relative. * face-remap.el (face-remap-add-relative): Handle the case where a face-remapping-alist entry is a cons cell. Fixes: debbugs:12762 --- lisp/ChangeLog | 5 +++++ lisp/face-remap.el | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 76cc7e52863..093d392d7d3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-10-29 Chong Yidong + + * face-remap.el (face-remap-add-relative): Handle the case where a + face-remapping-alist entry is a cons cell (Bug#12762). + 2012-10-29 Glenn Morris * emacs-lisp/cl.el (defsetf): Doc fix. diff --git a/lisp/face-remap.el b/lisp/face-remap.el index baf1eeb389d..903c12a787e 100644 --- a/lisp/face-remap.el +++ b/lisp/face-remap.el @@ -132,7 +132,10 @@ other than the normal definition of FACE via `face-remap-set-base'." (when (null entry) (setq entry (list face face)) ; explicitly merge with global def (push entry face-remapping-alist)) - (setcdr entry (face-remap-order (cons specs (cdr entry)))) + (let ((faces (cdr entry))) + (if (symbolp faces) + (setq faces (list faces))) + (setcdr entry (face-remap-order (cons specs faces)))) (cons face specs))) (defun face-remap-remove-relative (cookie) From 1913c5f53b1055bcd66d06d721b4bef69ca7a03f Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 29 Oct 2012 17:58:49 +0800 Subject: [PATCH 051/165] * imenu.el (imenu): Inhibit push-mark message. Fixes: debbugs:12726 --- lisp/ChangeLog | 2 ++ lisp/imenu.el | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 093d392d7d3..38a3e3806b8 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2012-10-29 Chong Yidong + * imenu.el (imenu): Inhibit push-mark message (Bug#12726). + * face-remap.el (face-remap-add-relative): Handle the case where a face-remapping-alist entry is a cons cell (Bug#12762). diff --git a/lisp/imenu.el b/lisp/imenu.el index 47a2f1e3b40..4686d1cf538 100644 --- a/lisp/imenu.el +++ b/lisp/imenu.el @@ -1018,7 +1018,7 @@ for more information." (if (stringp index-item) (setq index-item (assoc index-item (imenu--make-index-alist)))) (when index-item - (push-mark) + (push-mark nil t) (let* ((is-special-item (listp (cdr index-item))) (function (if is-special-item From e84cad57ef07b005e1b71dfb0acebac04455a4b6 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 29 Oct 2012 18:03:21 +0800 Subject: [PATCH 052/165] * thingatpt.el (thing-at-point): Doc fix. Fixes: debbugs:12691 --- lisp/ChangeLog | 2 ++ lisp/thingatpt.el | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 38a3e3806b8..4c4100a5e12 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2012-10-29 Chong Yidong + * thingatpt.el (thing-at-point): Doc fix (Bug#12691). + * imenu.el (imenu): Inhibit push-mark message (Bug#12726). * face-remap.el (face-remap-add-relative): Handle the case where a diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el index 57bbdf9d94a..dedd9c8c189 100644 --- a/lisp/thingatpt.el +++ b/lisp/thingatpt.el @@ -133,7 +133,7 @@ positions of the thing found." THING should be a symbol specifying a type of syntactic entity. Possibilities include `symbol', `list', `sexp', `defun', `filename', `url', `email', `word', `sentence', `whitespace', -`line', and `page'. +`line', `number', and `page'. See the file `thingatpt.el' for documentation on how to define a symbol as a valid THING." From 5c2f2631f8c64dba6367610acbd01304049631c9 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 29 Oct 2012 18:10:15 +0800 Subject: [PATCH 053/165] Avoid a misleading message on C-h C-a. * lisp/startup.el (startup-echo-area-message): New arg. (fancy-about-screen): Avoid a misleading message. Fixes: debbugs:12680 --- lisp/ChangeLog | 3 +++ lisp/startup.el | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4c4100a5e12..46e83f0a88b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2012-10-29 Chong Yidong + * startup.el (startup-echo-area-message): New arg. + (fancy-about-screen): Avoid a misleading message (Bug#12680). + * thingatpt.el (thing-at-point): Doc fix (Bug#12691). * imenu.el (imenu): Inhibit push-mark message (Bug#12726). diff --git a/lisp/startup.el b/lisp/startup.el index 56281a6b164..6c65b30fe3c 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1693,7 +1693,7 @@ splash screen in another window." (force-mode-line-update)) (use-local-map splash-screen-keymap) (setq tab-width 22) - (message "%s" (startup-echo-area-message)) + (message "%s" (startup-echo-area-message t)) (setq buffer-read-only t) (goto-char (point-min)) (forward-line 3)))) @@ -2017,8 +2017,8 @@ Type \\[describe-distribution] for information on ")) 'follow-link t) (insert "\tBuying printed manuals from the FSF\n")) -(defun startup-echo-area-message () - (cond ((daemonp) +(defun startup-echo-area-message (&optional about-screen-message) + (cond ((and (daemonp) (not about-screen-message)) "Starting Emacs daemon.") ((eq (key-binding "\C-h\C-a") 'about-emacs) "For information about GNU Emacs and the GNU system, type C-h C-a.") From 2230fa5bbf67bfefe797d77d4ed73c5c6342209b Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 29 Oct 2012 18:14:50 +0800 Subject: [PATCH 054/165] Fix last change. * lisp/startup.el (fancy-about-screen): Don't message at all. (startup-echo-area-message): Revert last change. Fixes: debbugs:12680 --- lisp/ChangeLog | 3 +-- lisp/startup.el | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 46e83f0a88b..d02da87446c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,7 +1,6 @@ 2012-10-29 Chong Yidong - * startup.el (startup-echo-area-message): New arg. - (fancy-about-screen): Avoid a misleading message (Bug#12680). + * startup.el (fancy-about-screen): Don't message (Bug#12680). * thingatpt.el (thing-at-point): Doc fix (Bug#12691). diff --git a/lisp/startup.el b/lisp/startup.el index 6c65b30fe3c..2e8b6b7f8c4 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1693,7 +1693,6 @@ splash screen in another window." (force-mode-line-update)) (use-local-map splash-screen-keymap) (setq tab-width 22) - (message "%s" (startup-echo-area-message t)) (setq buffer-read-only t) (goto-char (point-min)) (forward-line 3)))) @@ -2017,8 +2016,8 @@ Type \\[describe-distribution] for information on ")) 'follow-link t) (insert "\tBuying printed manuals from the FSF\n")) -(defun startup-echo-area-message (&optional about-screen-message) - (cond ((and (daemonp) (not about-screen-message)) +(defun startup-echo-area-message () + (cond ((daemonp) "Starting Emacs daemon.") ((eq (key-binding "\C-h\C-a") 'about-emacs) "For information about GNU Emacs and the GNU system, type C-h C-a.") From 4574557789a826c88514ee3b6a661e4869836da7 Mon Sep 17 00:00:00 2001 From: Kevin Ryde Date: Mon, 29 Oct 2012 18:30:11 +0800 Subject: [PATCH 055/165] * woman.el (woman-parse-numeric-value): Handle picas correctly. Fixes: debbugs:12639 --- lisp/ChangeLog | 5 +++++ lisp/woman.el | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d02da87446c..999db57efc0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-10-29 Kevin Ryde + + * woman.el (woman-parse-numeric-value): Handle picas correctly + (Bug#12639). + 2012-10-29 Chong Yidong * startup.el (fancy-about-screen): Don't message (Bug#12680). diff --git a/lisp/woman.el b/lisp/woman.el index c8cc7ea6766..e41c489dbfa 100644 --- a/lisp/woman.el +++ b/lisp/woman.el @@ -3632,7 +3632,9 @@ expression in parentheses. Leaves point after the value." ((looking-at "[mnuv]")) ; ignore for now ((looking-at "i") (setq n (* n 10))) ; inch ((looking-at "c") (setq n (* n 3.9))) ; cm - ((looking-at "P") (setq n (* n 1.7))) ; Pica + ((let ((case-fold-search nil)) + (looking-at "P")) + (setq n (* n 1.7))) ; Pica ((looking-at "p") (setq n (* n 0.14))) ; point ;; NB: May be immediately followed by + or -, etc., ;; in which case do nothing and return nil. From 329c48d8b26a8943ee47682916f83f4fb60f608e Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 29 Oct 2012 18:42:58 +0800 Subject: [PATCH 056/165] * info.el (Info-complete-menu-item): Avoid duplicates. Fixes: debbugs:12705 --- lisp/ChangeLog | 12 +++++++----- lisp/info.el | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 999db57efc0..4edf3cdd03b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,10 +1,7 @@ -2012-10-29 Kevin Ryde - - * woman.el (woman-parse-numeric-value): Handle picas correctly - (Bug#12639). - 2012-10-29 Chong Yidong + * info.el (Info-complete-menu-item): Avoid duplicates (Bug#12705). + * startup.el (fancy-about-screen): Don't message (Bug#12680). * thingatpt.el (thing-at-point): Doc fix (Bug#12691). @@ -14,6 +11,11 @@ * face-remap.el (face-remap-add-relative): Handle the case where a face-remapping-alist entry is a cons cell (Bug#12762). +2012-10-29 Kevin Ryde + + * woman.el (woman-parse-numeric-value): Handle picas correctly + (Bug#12639). + 2012-10-29 Glenn Morris * emacs-lisp/cl.el (defsetf): Doc fix. diff --git a/lisp/info.el b/lisp/info.el index 5862e5e850f..36ffa806f04 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -2646,6 +2646,7 @@ Because of ambiguities, this should be concatenated with something like (while (re-search-forward pattern nil t) (push (match-string-no-properties 1) completions)) + (setq completions (delete-dups completions)) ;; Check subsequent nodes if applicable. (or (and Info-complete-next-re (setq nextnode (Info-extract-pointer "next" t)) From 1dc2755a716e15ac6b21d1f070346954d58018ef Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 29 Oct 2012 19:12:17 +0800 Subject: [PATCH 057/165] * vc/vc-hooks.el (vc-file-clearprops): Kill vc-parent-buffer. Suggested by Dan Nicolaescu. Fixes: debbugs:6326 --- lisp/ChangeLog | 3 +++ lisp/vc/vc-hooks.el | 2 ++ 2 files changed, 5 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4edf3cdd03b..db12be1301f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2012-10-29 Chong Yidong + * vc/vc-hooks.el (vc-file-clearprops): Kill vc-parent-buffer. + Suggested by Dan Nicolaescu (Bug#6326). + * info.el (Info-complete-menu-item): Avoid duplicates (Bug#12705). * startup.el (fancy-about-screen): Don't message (Bug#12680). diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el index cac3eb559a1..07a292ae435 100644 --- a/lisp/vc/vc-hooks.el +++ b/lisp/vc/vc-hooks.el @@ -224,6 +224,8 @@ VC commands are globally reachable under the prefix `\\[vc-prefix-map]': (defun vc-file-clearprops (file) "Clear all VC properties of FILE." + (if (boundp 'vc-parent-buffer) + (kill-local-variable 'vc-parent-buffer)) (setplist (intern file vc-file-prop-obarray) nil)) From e07fcbdc32093063079b21f5675e6109f143d36d Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 29 Oct 2012 09:28:41 -0400 Subject: [PATCH 058/165] * lisp/files.el (find-alternate-file): Only ask one question. Fixes: debbugs:12487 --- lisp/ChangeLog | 4 ++++ lisp/files.el | 9 +++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index db12be1301f..e81a6146a22 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-10-29 Stefan Monnier + + * files.el (find-alternate-file): Only ask one question (bug#12487). + 2012-10-29 Chong Yidong * vc/vc-hooks.el (vc-file-clearprops): Kill vc-parent-buffer. diff --git a/lisp/files.el b/lisp/files.el index e030aff0ae2..26c5c683b3d 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -1537,12 +1537,9 @@ killed." t))) (unless (run-hook-with-args-until-failure 'kill-buffer-query-functions) (error "Aborted")) - (when (and (buffer-modified-p) buffer-file-name) - (if (yes-or-no-p (format "Buffer %s is modified; save it first? " - (buffer-name))) - (save-buffer) - (unless (yes-or-no-p "Kill and replace the buffer without saving it? ") - (error "Aborted")))) + (and (buffer-modified-p) buffer-file-name + (not (yes-or-no-p "Kill and replace the buffer without saving it? ")) + (error "Aborted")) (let ((obuf (current-buffer)) (ofile buffer-file-name) (onum buffer-file-number) From c606253cb5849ad04282b2f116e79963abdcea9d Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 29 Oct 2012 09:50:05 -0400 Subject: [PATCH 059/165] * lisp/emacs-lisp/cl.el (letf): Add missing indent rules. Fixes: debbugs:12759 --- lisp/ChangeLog | 2 ++ lisp/emacs-lisp/cl.el | 1 + 2 files changed, 3 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e81a6146a22..387a8b0e619 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2012-10-29 Stefan Monnier + * emacs-lisp/cl.el (letf): Add missing indent rules (bug#12759). + * files.el (find-alternate-file): Only ask one question (bug#12487). 2012-10-29 Chong Yidong diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el index a558e505e66..108ad037569 100644 --- a/lisp/emacs-lisp/cl.el +++ b/lisp/emacs-lisp/cl.el @@ -512,6 +512,7 @@ rather than relying on `lexical-binding'." (defmacro letf (bindings &rest body) "Dynamically scoped let-style bindings for places. Like `cl-letf', but with some extra backward compatibility." + (declare (indent 1) (debug cl-letf)) ;; Like cl-letf, but with special handling of symbol-function. `(cl-letf ,(mapcar (lambda (x) (if (eq (car-safe (car x)) 'symbol-function) `((cl--symbol-function ,@(cdar x)) ,@(cdr x)) From d7f9cc85284bc159166d1c600100b0080bfad494 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 29 Oct 2012 11:14:10 -0400 Subject: [PATCH 060/165] * lisp/vc/diff-mode.el (diff-context->unified): Don't get confused by "hunk header comments". (diff-unified->context, diff-context->unified) (diff-reverse-direction, diff-fixup-modifs): Use `use-region-p'. --- lisp/ChangeLog | 5 +++++ lisp/vc/diff-mode.el | 14 ++++++++------ test/indent/shell.sh | 5 ++++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 387a8b0e619..54285a589eb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,10 @@ 2012-10-29 Stefan Monnier + * vc/diff-mode.el (diff-context->unified): Don't get confused by "hunk + header comments". + (diff-unified->context, diff-context->unified) + (diff-reverse-direction, diff-fixup-modifs): Use `use-region-p'. + * emacs-lisp/cl.el (letf): Add missing indent rules (bug#12759). * files.el (find-alternate-file): Only ask one question (bug#12487). diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index bbe31205c0e..49b76a8e3bc 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -911,7 +911,7 @@ PREFIX is only used internally: don't use it." "Convert unified diffs to context diffs. START and END are either taken from the region (if a prefix arg is given) or else cover the whole buffer." - (interactive (if (or current-prefix-arg (and transient-mark-mode mark-active)) + (interactive (if (or current-prefix-arg (use-region-p)) (list (region-beginning) (region-end)) (list (point-min) (point-max)))) (unless (markerp end) (setq end (copy-marker end t))) @@ -1035,7 +1035,7 @@ else cover the whole buffer." START and END are either taken from the region \(when it is highlighted) or else cover the whole buffer. With a prefix argument, convert unified format to context format." - (interactive (if (and transient-mark-mode mark-active) + (interactive (if (use-region-p) (list (region-beginning) (region-end) current-prefix-arg) (list (point-min) (point-max) current-prefix-arg))) (if to-context @@ -1045,7 +1045,7 @@ With a prefix argument, convert unified format to context format." (inhibit-read-only t)) (save-excursion (goto-char start) - (while (and (re-search-forward "^\\(\\(\\*\\*\\*\\) .+\n\\(---\\) .+\\|\\*\\{15\\}.*\n\\*\\*\\* \\([0-9]+\\),\\(-?[0-9]+\\) \\*\\*\\*\\*\\)$" nil t) + (while (and (re-search-forward "^\\(\\(\\*\\*\\*\\) .+\n\\(---\\) .+\\|\\*\\{15\\}.*\n\\*\\*\\* \\([0-9]+\\),\\(-?[0-9]+\\) \\*\\*\\*\\*\\)\\(?: \\(.*\\)\\|$\\)" nil t) (< (point) end)) (combine-after-change-calls (if (match-beginning 2) @@ -1061,7 +1061,9 @@ With a prefix argument, convert unified format to context format." ;; Variables to use the special undo function. (old-undo buffer-undo-list) (old-end (marker-position end)) - (reversible t)) + ;; We currently throw away the comment that can follow + ;; the hunk header. FIXME: Preserve it instead! + (reversible (not (match-end 6)))) (replace-match "") (unless (re-search-forward diff-context-mid-hunk-header-re nil t) @@ -1131,7 +1133,7 @@ With a prefix argument, convert unified format to context format." "Reverse the direction of the diffs. START and END are either taken from the region (if a prefix arg is given) or else cover the whole buffer." - (interactive (if (or current-prefix-arg (and transient-mark-mode mark-active)) + (interactive (if (or current-prefix-arg (use-region-p)) (list (region-beginning) (region-end)) (list (point-min) (point-max)))) (unless (markerp end) (setq end (copy-marker end t))) @@ -1197,7 +1199,7 @@ else cover the whole buffer." "Fixup the hunk headers (in case the buffer was modified). START and END are either taken from the region (if a prefix arg is given) or else cover the whole buffer." - (interactive (if (or current-prefix-arg (and transient-mark-mode mark-active)) + (interactive (if (or current-prefix-arg (use-region-p)) (list (region-beginning) (region-end)) (list (point-min) (point-max)))) (let ((inhibit-read-only t)) diff --git a/test/indent/shell.sh b/test/indent/shell.sh index 957fe74fdee..895a9325b7e 100755 --- a/test/indent/shell.sh +++ b/test/indent/shell.sh @@ -26,7 +26,10 @@ foo () { case $toto in a) echo 1;; b) echo 2;; - c) echo 3;; + (c) + echo 3;; + d) + echo 3;; esac case $as_nl`(ac_space=' '; set) 2>&1` in #( From ba11600816880f862a7a85899bfa3dc41c176273 Mon Sep 17 00:00:00 2001 From: Daniel Colascione Date: Mon, 29 Oct 2012 09:24:29 -0800 Subject: [PATCH 061/165] 2012-10-29 Daniel Colascione cygw32.h, cygw32.c (Qutf_16le, from_unicode, to_unicode): In preparation for fixing bug#12739, move these functions from here... * coding.h, coding.c: ... to here, and compile them only when WINDOWSNT or HAVE_NTGUI. Moving these functions out of cygw32 proper lets us write cygw32-agnostic code for the HAVE_NTGUI case. --- src/ChangeLog | 10 ++++++++++ src/coding.c | 42 ++++++++++++++++++++++++++++++++++++++++++ src/coding.h | 22 ++++++++++++++++++++++ src/cygw32.c | 33 --------------------------------- src/cygw32.h | 14 -------------- 5 files changed, 74 insertions(+), 47 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index beec867d333..c76bbb5a260 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,13 @@ +2012-10-29 Daniel Colascione + + * cygw32.h, cygw32.c (Qutf_16le, from_unicode, to_unicode): In + preparation for fixing bug#12739, move these functions from + here... + + * coding.h, coding.c: ... to here, and compile them only when + WINDOWSNT or HAVE_NTGUI. Moving these functions out of cygw32 + proper lets us write cygw32-agnostic code for the HAVE_NTGUI case. + 2012-10-28 Eli Zaretskii * w32proc.c (TIMER_TICKS_PER_SEC): New macro. diff --git a/src/coding.c b/src/coding.c index 7628a9fbf2e..611f92ea152 100644 --- a/src/coding.c +++ b/src/coding.c @@ -343,6 +343,10 @@ Lisp_Object Qcoding_system_p, Qcoding_system_error; Lisp_Object Qemacs_mule, Qraw_text; Lisp_Object Qutf_8_emacs; +#if defined (WINDOWSNT) || defined (HAVE_NTGUI) +static Lisp_Object Qutf_16le; +#endif + /* Coding-systems are handed between Emacs Lisp programs and C internal routines by the following three variables. */ /* Coding system to be used to encode text for terminal display when @@ -7971,6 +7975,39 @@ preferred_coding_system (void) return CODING_ID_NAME (id); } +#if defined (WINDOWSNT) || defined (HAVE_NTGUI) + +Lisp_Object +from_unicode (Lisp_Object str) +{ + CHECK_STRING (str); + if (!STRING_MULTIBYTE (str) && + SBYTES (str) & 1) + { + str = Fsubstring (str, make_number (0), make_number (-1)); + } + + return code_convert_string_norecord (str, Qutf_16le, 0); +} + +wchar_t * +to_unicode (Lisp_Object str, Lisp_Object *buf) +{ + *buf = code_convert_string_norecord (str, Qutf_16le, 1); + /* We need to make a another copy (in addition to the one made by + code_convert_string_norecord) to ensure that the final string is + _doubly_ zero terminated --- that is, that the string is + terminated by two zero bytes and one utf-16le null character. + Because strings are already terminated with a single zero byte, + we just add one additional zero. */ + str = make_uninit_string (SBYTES (*buf) + 1); + memcpy (SDATA (str), SDATA (*buf), SBYTES (*buf)); + SDATA (str) [SBYTES (*buf)] = '\0'; + *buf = str; + return WCSDATA (*buf); +} +#endif /* WINDOWSNT || HAVE_NTGUI */ + #ifdef emacs /*** 8. Emacs Lisp library functions ***/ @@ -10284,6 +10321,11 @@ syms_of_coding (void) DEFSYM (Qutf_8, "utf-8"); DEFSYM (Qutf_8_emacs, "utf-8-emacs"); +#if defined (WINDOWSNT) || defined (HAVE_NTGUI) + /* No, not utf-16-le: that one has a BOM. */ + DEFSYM (Qutf_16le, "utf-16le"); +#endif + DEFSYM (Qutf_16, "utf-16"); DEFSYM (Qbig, "big"); DEFSYM (Qlittle, "little"); diff --git a/src/coding.h b/src/coding.h index 989552bf667..6ba5f8e0e1e 100644 --- a/src/coding.h +++ b/src/coding.h @@ -701,6 +701,28 @@ extern void encode_coding_object (struct coding_system *, Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, Lisp_Object); +#if defined (WINDOWSNT) || defined (HAVE_NTGUI) + +/* These functions use Lisp string objects to store the UTF-16LE + strings that modern versions of Windows expect. These strings are + not particularly useful to Lisp, and all Lisp strings should be + native Emacs multibyte. */ + +/* Access the wide-character string stored in a Lisp string object. */ +#define WCSDATA(x) ((wchar_t *) SDATA (x)) + +/* Convert the multi-byte string in STR to UTF-16LE encoded unibyte + string, and store it in *BUF. BUF may safely point to STR on entry. */ +extern wchar_t *to_unicode (Lisp_Object str, Lisp_Object *buf); + +/* Convert STR, a UTF-16LE encoded string embedded in a unibyte string + object, to a multi-byte Emacs string and return it. This function + calls code_convert_string_norecord internally and has all its + failure modes. STR itself is not modified. */ +extern Lisp_Object from_unicode (Lisp_Object str); + +#endif /* WINDOWSNT || HAVE_NTGUI */ + /* Macros for backward compatibility. */ #define decode_coding_region(coding, from, to) \ diff --git a/src/cygw32.c b/src/cygw32.c index 8f63461da2a..54f2076a891 100644 --- a/src/cygw32.c +++ b/src/cygw32.c @@ -22,7 +22,6 @@ along with GNU Emacs. If not, see . */ #include "buffer.h" #include #include -static Lisp_Object Qutf_16le; static Lisp_Object fchdir_unwind (Lisp_Object dir_fd) @@ -107,36 +106,6 @@ conv_filename_from_w32_unicode (const wchar_t* in, int absolute_p) return unbind_to (count, DECODE_FILE (converted)); } -Lisp_Object -from_unicode (Lisp_Object str) -{ - CHECK_STRING (str); - if (!STRING_MULTIBYTE (str) && - SBYTES (str) & 1) - { - str = Fsubstring (str, make_number (0), make_number (-1)); - } - - return code_convert_string_norecord (str, Qutf_16le, 0); -} - -wchar_t * -to_unicode (Lisp_Object str, Lisp_Object *buf) -{ - *buf = code_convert_string_norecord (str, Qutf_16le, 1); - /* We need to make a another copy (in addition to the one made by - code_convert_string_norecord) to ensure that the final string is - _doubly_ zero terminated --- that is, that the string is - terminated by two zero bytes and one utf-16le null character. - Because strings are already terminated with a single zero byte, - we just add one additional zero. */ - str = make_uninit_string (SBYTES (*buf) + 1); - memcpy (SDATA (str), SDATA (*buf), SBYTES (*buf)); - SDATA (str) [SBYTES (*buf)] = '\0'; - *buf = str; - return WCSDATA (*buf); -} - DEFUN ("cygwin-convert-path-to-windows", Fcygwin_convert_path_to_windows, Scygwin_convert_path_to_windows, 1, 2, 0, @@ -162,8 +131,6 @@ DEFUN ("cygwin-convert-path-from-windows", void syms_of_cygw32 (void) { - /* No, not utf-16-le: that one has a BOM. */ - DEFSYM (Qutf_16le, "utf-16le"); defsubr (&Scygwin_convert_path_from_windows); defsubr (&Scygwin_convert_path_to_windows); } diff --git a/src/cygw32.h b/src/cygw32.h index 78e77a9a141..51571913fd1 100644 --- a/src/cygw32.h +++ b/src/cygw32.h @@ -33,20 +33,6 @@ along with GNU Emacs. If not, see . */ #include "lisp.h" #include "coding.h" -/* *** Character conversion *** */ - -/* Access the wide-character string stored in a Lisp string object. */ -#define WCSDATA(x) ((wchar_t *) SDATA (x)) - -/* Convert the multi-byte string in STR to UTF-16LE encoded unibyte - string, and store it in *BUF. BUF may safely point to STR on entry. */ -extern wchar_t *to_unicode (Lisp_Object str, Lisp_Object *buf); - -/* Convert STR, a UTF-16LE encoded string embedded in a unibyte string - object, to a multi-byte Emacs string, and return it. */ -extern Lisp_Object from_unicode (Lisp_Object str); - -/* *** Misc *** */ extern void syms_of_cygw32 (void); extern char * w32_strerror (int error_no); From 748b0d840fea13e0b6ba36341873dc68e57f5bc5 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Tue, 30 Oct 2012 06:58:53 +0800 Subject: [PATCH 062/165] * thingatpt.el (number-at-point): Apply a thing-at-point property. --- lisp/ChangeLog | 4 ++++ lisp/thingatpt.el | 1 + 2 files changed, 5 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 54285a589eb..2474574de92 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-10-29 Chong Yidong + + * thingatpt.el (number-at-point): Apply a thing-at-point property. + 2012-10-29 Stefan Monnier * vc/diff-mode.el (diff-context->unified): Don't get confused by "hunk diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el index dedd9c8c189..50e3b785696 100644 --- a/lisp/thingatpt.el +++ b/lisp/thingatpt.el @@ -509,6 +509,7 @@ Signal an error if the entire string was not used." (defun number-at-point () "Return the number at point, or nil if none is found." (form-at-point 'sexp 'numberp)) +(put 'number 'thing-at-point 'number-at-point) ;;;###autoload (defun list-at-point () "Return the Lisp list at point, or nil if none is found." From b5dd9a779bafdbac1658b7e610ec04c195a7f21c Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Tue, 30 Oct 2012 07:20:24 +0800 Subject: [PATCH 063/165] Fix isearch handling of keypad characters with kmacros. * isearch.el (isearch-other-meta-char): Ensure that a reprocessed function key is stored in a keyboard macro. Fixes: debbugs:4894 --- lisp/ChangeLog | 3 +++ lisp/isearch.el | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2474574de92..bd57e7dc5f0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2012-10-29 Chong Yidong + * isearch.el (isearch-other-meta-char): Ensure that a reprocessed + function key is stored in a keyboard macro (Bug#4894). + * thingatpt.el (number-at-point): Apply a thing-at-point property. 2012-10-29 Stefan Monnier diff --git a/lisp/isearch.el b/lisp/isearch.el index 37993767013..ead6f88cb97 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -2149,7 +2149,8 @@ Isearch mode." (setq prefix-arg arg) (apply 'isearch-unread keylist)) (setq keylist - (listify-key-sequence (lookup-key local-function-key-map key))) + (listify-key-sequence + (lookup-key local-function-key-map key))) (while keylist (setq key (car keylist)) ;; If KEY is a printing char, we handle it here @@ -2158,6 +2159,7 @@ Isearch mode." (if (and (integerp key) (>= key ?\s) (/= key 127) (< key 256)) (progn + (store-kbd-macro-event key) (isearch-process-search-char key) (setq keylist (cdr keylist))) ;; As the remaining keys in KEYLIST can't be handled From fc83c2de544c15ce8e4e8fc7c6dd68cc4956a457 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Tue, 30 Oct 2012 07:48:02 +0800 Subject: [PATCH 064/165] Document dired-do-async-shell-command changes. * dired.texi (Shell Commands in Dired): Document changes to the dired-do-async-shell-command. --- doc/emacs/ChangeLog | 5 +++++ doc/emacs/dired.texi | 11 ++++++++--- etc/NEWS | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index ef6d736db1d..ea5621e7ccf 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,8 @@ +2012-10-29 Chong Yidong + + * dired.texi (Shell Commands in Dired): Document changes to the + dired-do-async-shell-command. + 2012-10-28 Glenn Morris * ack.texi (Acknowledgments): Mention gv.el. diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index 8babbcb89ea..c08dc02b04b 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi @@ -799,15 +799,20 @@ more matches. @xref{Tags Search}. @kindex ! @r{(Dired)} @kindex X @r{(Dired)} The Dired command @kbd{!} (@code{dired-do-shell-command}) reads a -shell command string in the minibuffer and runs that shell command on +shell command string in the minibuffer, and runs that shell command on one or more files. The files that the shell command operates on are determined in the usual way for Dired commands (@pxref{Operating on Files}). The command @kbd{X} is a synonym for @kbd{!}. The command @kbd{&} (@code{dired-do-async-shell-command}) does the -same, except that it runs the shell command asynchronously. You can +same, except that it runs the shell command asynchronously. (You can also do this with @kbd{!}, by appending a @samp{&} character to the -end of the shell command. +end of the shell command.) When the command operates on more than one +file, it runs multiple parallel copies of the specified shell command, +one for each file. As an exception, if the specified shell command +ends in @samp{;} or @samp{;&}, the shell command is run in the +background on each file sequentially; Emacs waits for each invoked +shell command to terminate before running the next one. For both @kbd{!} and @kbd{&}, the working directory for the shell command is the top-level directory of the Dired buffer. diff --git a/etc/NEWS b/etc/NEWS index cfdd3355aa5..2166e1d7658 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -397,7 +397,7 @@ changes in context diffs. whitespace problems introduced by the diff. ** Dired - ++++ *** `dired-do-async-shell-command' executes each file sequentially if the command ends in `;' (when operating on multiple files). Otherwise, it executes the command on each file in parallel. From e29e39c9c6aee68a50fef5149cc3acdfa74fec72 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Tue, 30 Oct 2012 08:29:37 +0800 Subject: [PATCH 065/165] Document more Emacs 24.3 changes. * frames.texi (Visibility of Frames): Document tty-top-frame. * loading.texi (Autoload): Document autoloadp, autoload-do-load. * symbols.texi (Symbol Plists): Document function-get. --- doc/lispref/ChangeLog | 8 ++++++++ doc/lispref/frames.texi | 23 ++++++++++++++++++----- doc/lispref/loading.texi | 38 +++++++++++++++++++++++++++++++------- doc/lispref/symbols.texi | 6 ++++++ etc/NEWS | 6 +++++- 5 files changed, 68 insertions(+), 13 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 6b3febba631..2309cde2998 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,11 @@ +2012-10-30 Chong Yidong + + * symbols.texi (Symbol Plists): Document function-get. + + * loading.texi (Autoload): Document autoloadp, autoload-do-load. + + * frames.texi (Visibility of Frames): Document tty-top-frame. + 2012-10-28 Stefan Monnier * keymaps.texi (Format of Keymaps): Document the multiple diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index 665b75048f3..f58d62675e5 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -1493,8 +1493,9 @@ This function returns the visibility status of frame @var{frame}. The value is @code{t} if @var{frame} is visible, @code{nil} if it is invisible, and @code{icon} if it is iconified. -On a text terminal, all frames are considered visible, whether they -are currently being displayed or not. +On a text terminal, all frames are considered ``visible'' for the +purposes of this function, even though only one frame is displayed. +@xref{Raising and Lowering}. @end defun @deffn Command iconify-frame &optional frame @@ -1550,9 +1551,21 @@ If this is non-@code{nil}, activation of the minibuffer raises the frame that the minibuffer window is in. @end defopt -You can also enable auto-raise (raising automatically when a frame is -selected) or auto-lower (lowering automatically when it is deselected) -for any frame using frame parameters. @xref{Management Parameters}. + On window systems, you can also enable auto-raising (on frame +selection) or auto-lowering (on frame deselection) using frame +parameters. @xref{Management Parameters}. + +@cindex top frame + The concept of raising and lowering frames also applies to text +terminal frames. On each text terminal, only the top frame is +displayed at any one time. + +@defun tty-top-frame terminal +This function returns the top frame on @var{terminal}. @var{terminal} +should be a terminal object, a frame (meaning that frame's terminal), +or @code{nil} (meaning the selected frame's terminal). If it does not +refer to a text terminal, the return value is @code{nil}. +@end defun @node Frame Configurations @section Frame Configurations diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index 77a31cfde7a..6a18bea2977 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -408,9 +408,9 @@ to load automatically from @var{filename}. The string @var{filename} specifies the file to load to get the real definition of @var{function}. If @var{filename} does not contain either a directory name, or the -suffix @code{.el} or @code{.elc}, then @code{autoload} insists on adding -one of these suffixes, and it will not load from a file whose name is -just @var{filename} with no added suffix. (The variable +suffix @code{.el} or @code{.elc}, this function insists on adding one +of these suffixes, and it will not load from a file whose name is just +@var{filename} with no added suffix. (The variable @code{load-suffixes} specifies the exact required suffixes.) The argument @var{docstring} is the documentation string for the @@ -442,10 +442,11 @@ and calls @code{define-key}; not even if the variable name is the same symbol @var{function}. @cindex function cell in autoload -If @var{function} already has a non-void function definition that is not -an autoload object, @code{autoload} does nothing and returns @code{nil}. -If the function cell of @var{function} is void, or is already an autoload -object, then it is defined as an autoload object like this: +if @var{function} already has non-void function definition that is not +an autoload object, this function does nothing and returns @code{nil}. +Otherwise, it constructs an autoload object (@pxref{Autoload Type}), +and stores it as the function definition for @var{function}. The +autoload object has this form: @example (autoload @var{filename} @var{docstring} @var{interactive} @var{type}) @@ -468,6 +469,16 @@ refers to the documentation string in the not a macro or a keymap. @end defun +@defun autoloadp object +This function returns non-@code{nil} if @var{object} is an autoload +object. For example, to check if @code{run-prolog} is defined as an +autoloaded function, evaluate + +@smallexample +(autoloadp (symbol-function 'run-prolog)) +@end smallexample +@end defun + @cindex autoload errors The autoloaded file usually contains other definitions and may require or provide one or more features. If the file is not completely loaded @@ -599,6 +610,19 @@ override that, e.g., in the ``Local Variables'' section of a assumed to contain a trailer starting with a formfeed character. @end defvar + The following function may be used to explicitly load the library +specified by an autoload object: + +@defun autoload-do-load autoload &optional name macro-only +This function performs the loading specified by @var{autoload}, which +whould be an autoload object. The optional argument @var{name}, if +non-@code{nil}, should be a symbol whose function value is +@var{autoload}; in that case, the return value of this function is the +symbol's new function value. If the value of the optional argument +@var{macro-only} is @code{macro}, this function avoids loading a +function, only a macro. +@end defun + @node Repeated Loading @section Repeated Loading @cindex repeated loading diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi index d7497ab6f3f..326c6cd4ab2 100644 --- a/doc/lispref/symbols.texi +++ b/doc/lispref/symbols.texi @@ -487,6 +487,12 @@ using @code{eq}, so any object is a legitimate property. See @code{put} for an example. @end defun +@defun function-get symbol property +This function is identical to @code{get}, except that if @var{symbol} +is the name of a function alias, it looks in the property list of the +symbol naming the actual function. @xref{Defining Functions}. +@end defun + @defun put symbol property value This function puts @var{value} onto @var{symbol}'s property list under the property name @var{property}, replacing any previous property value. diff --git a/etc/NEWS b/etc/NEWS index 2166e1d7658..a6d6b1c5eeb 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -898,12 +898,15 @@ result in a warning ("Eager macro-expansion skipped due to cycle") describing the cycle. ** Miscellaneous new functions: - ++++ *** `autoloadp' ++++ *** `autoload-do-load' +++ *** `buffer-narrowed-p' tests if the buffer is narrowed. ++++ *** `file-name-base' returns a file name sans directory and extension. ++++ *** `function-get' fetches a function property, following aliases. +++ *** `posnp' tests if an object is a `posn'. @@ -912,6 +915,7 @@ describing the cycle. *** `system-users' returns the user names on the system. +++ *** `system-groups' returns the group names on the system. ++++ *** `tty-top-frame' returns the topmost frame of a text terminal. ** New macros `setq-local' and `defvar-local'. From 7f590b0c3b25602499432bf986e7b593fc158c0b Mon Sep 17 00:00:00 2001 From: Daniel Colascione Date: Mon, 29 Oct 2012 17:56:38 -0800 Subject: [PATCH 066/165] Fix build break in non-Cygw32 Cygwin builds introduced in 2012-10-29T17:24:29Z!dancol@dancol.org. --- src/coding.c | 7 ++++--- src/coding.h | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/coding.c b/src/coding.c index 611f92ea152..97268e0dcd8 100644 --- a/src/coding.c +++ b/src/coding.c @@ -7975,7 +7975,7 @@ preferred_coding_system (void) return CODING_ID_NAME (id); } -#if defined (WINDOWSNT) || defined (HAVE_NTGUI) +#if defined (WINDOWSNT) || defined (CYGWIN) Lisp_Object from_unicode (Lisp_Object str) @@ -8006,7 +8006,8 @@ to_unicode (Lisp_Object str, Lisp_Object *buf) *buf = str; return WCSDATA (*buf); } -#endif /* WINDOWSNT || HAVE_NTGUI */ + +#endif /* WINDOWSNT || CYGWIN */ #ifdef emacs @@ -10321,7 +10322,7 @@ syms_of_coding (void) DEFSYM (Qutf_8, "utf-8"); DEFSYM (Qutf_8_emacs, "utf-8-emacs"); -#if defined (WINDOWSNT) || defined (HAVE_NTGUI) +#if defined (WINDOWSNT) || defined (CYGWIN) /* No, not utf-16-le: that one has a BOM. */ DEFSYM (Qutf_16le, "utf-16le"); #endif diff --git a/src/coding.h b/src/coding.h index 6ba5f8e0e1e..192be58f083 100644 --- a/src/coding.h +++ b/src/coding.h @@ -701,7 +701,7 @@ extern void encode_coding_object (struct coding_system *, Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, Lisp_Object); -#if defined (WINDOWSNT) || defined (HAVE_NTGUI) +#if defined (WINDOWSNT) || defined (CYGWIN) /* These functions use Lisp string objects to store the UTF-16LE strings that modern versions of Windows expect. These strings are @@ -721,7 +721,7 @@ extern wchar_t *to_unicode (Lisp_Object str, Lisp_Object *buf); failure modes. STR itself is not modified. */ extern Lisp_Object from_unicode (Lisp_Object str); -#endif /* WINDOWSNT || HAVE_NTGUI */ +#endif /* WINDOWSNT || CYGWIN */ /* Macros for backward compatibility. */ From 53372c278e7e79b97aed97b159a00bde45de3a80 Mon Sep 17 00:00:00 2001 From: Daniel Colascione Date: Mon, 29 Oct 2012 19:10:52 -0800 Subject: [PATCH 067/165] Complete fix for build break --- src/ChangeLog | 4 ++-- src/coding.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index c76bbb5a260..831af6c58a2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -5,8 +5,8 @@ here... * coding.h, coding.c: ... to here, and compile them only when - WINDOWSNT or HAVE_NTGUI. Moving these functions out of cygw32 - proper lets us write cygw32-agnostic code for the HAVE_NTGUI case. + WINDOWSNT or CYGWIN. Moving these functions out of cygw32 proper + lets us write cygw32-agnostic code for the HAVE_NTGUI case. 2012-10-28 Eli Zaretskii diff --git a/src/coding.c b/src/coding.c index 97268e0dcd8..56202e4861d 100644 --- a/src/coding.c +++ b/src/coding.c @@ -343,7 +343,7 @@ Lisp_Object Qcoding_system_p, Qcoding_system_error; Lisp_Object Qemacs_mule, Qraw_text; Lisp_Object Qutf_8_emacs; -#if defined (WINDOWSNT) || defined (HAVE_NTGUI) +#if defined (WINDOWSNT) || defined (CYGWIN) static Lisp_Object Qutf_16le; #endif From ce69a8443a7adc386235cb1b5eba3189dfe89d4e Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Tue, 30 Oct 2012 14:23:31 +0800 Subject: [PATCH 068/165] Add a comment for the last isearch.el change. --- lisp/isearch.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/isearch.el b/lisp/isearch.el index ead6f88cb97..0bfda880d93 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -2159,6 +2159,8 @@ Isearch mode." (if (and (integerp key) (>= key ?\s) (/= key 127) (< key 256)) (progn + ;; Ensure that the processed char is recorded in + ;; the keyboard macro, if any (Bug#4894) (store-kbd-macro-event key) (isearch-process-search-char key) (setq keylist (cdr keylist))) From 4ddedf94c8529de0c13b74c1156d89872f94c155 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 30 Oct 2012 00:34:37 -0700 Subject: [PATCH 069/165] Doc and manual updates for cl-letf and letf Fixes: debbugs:12760 * doc/misc/cl.texi (Modify Macros): Update for cl-letf changes. (Obsolete Lexical Macros): Say a little more about letf/cl-letf. * lisp/emacs-lisp/cl.el (letf): Doc fix. * etc/NEWS: Related edit. --- doc/misc/ChangeLog | 5 ++++ doc/misc/cl.texi | 59 +++++++++++++++++++++++++++---------------- etc/NEWS | 3 +++ lisp/ChangeLog | 4 +++ lisp/emacs-lisp/cl.el | 4 ++- 5 files changed, 52 insertions(+), 23 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 92b5b243ec9..b07db9d605f 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,8 @@ +2012-10-30 Glenn Morris + + * cl.texi (Modify Macros): Update for cl-letf changes. + (Obsolete Lexical Macros): Say a little more about letf/cl-letf. + 2012-10-29 Glenn Morris * cl.texi (Organization): More details on cl-lib.el versus cl.el. diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 01068d57071..f520144679e 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -882,7 +882,7 @@ generalized variables. @menu * Setf Extensions:: Additional @code{setf} places. -* Modify Macros:: @code{cl-incf}, @code{cl-rotatef}, @code{letf}, @code{cl-callf}, etc. +* Modify Macros:: @code{cl-incf}, @code{cl-rotatef}, @code{cl-letf}, @code{cl-callf}, etc. @end menu @node Setf Extensions @@ -1127,7 +1127,7 @@ conveniently exchanges @var{a} and @var{b}. The following macros were invented for this package; they have no analogues in Common Lisp. -@defmac letf (bindings@dots{}) forms@dots{} +@defmac cl-letf (bindings@dots{}) forms@dots{} This macro is analogous to @code{let}, but for generalized variables rather than just symbols. Each @var{binding} should be of the form @code{(@var{place} @var{value})}; the original contents of the @@ -1140,47 +1140,59 @@ error. For example, @example -(letf (((point) (point-min)) - (a 17)) - ...) +(cl-letf (((point) (point-min)) + (a 17)) + ...) @end example @noindent -moves ``point'' in the current buffer to the beginning of the buffer, +moves point in the current buffer to the beginning of the buffer, and also binds @code{a} to 17 (as if by a normal @code{let}, since @code{a} is just a regular variable). After the body exits, @code{a} is set back to its original value and point is moved back to its original position. -Note that @code{letf} on @code{(point)} is not quite like a +Note that @code{cl-letf} on @code{(point)} is not quite like a @code{save-excursion}, as the latter effectively saves a marker which tracks insertions and deletions in the buffer. Actually, -a @code{letf} of @code{(point-marker)} is much closer to this +a @code{cl-letf} of @code{(point-marker)} is much closer to this behavior. (@code{point} and @code{point-marker} are equivalent as @code{setf} places; each will accept either an integer or a marker as the stored value.) Since generalized variables look like lists, @code{let}'s shorthand of using @samp{foo} for @samp{(foo nil)} as a @var{binding} would -be ambiguous in @code{letf} and is not allowed. +be ambiguous in @code{cl-letf} and is not allowed. However, a @var{binding} specifier may be a one-element list @samp{(@var{place})}, which is similar to @samp{(@var{place} @var{place})}. In other words, the @var{place} is not disturbed -on entry to the body, and the only effect of the @code{letf} is -to restore the original value of @var{place} afterwards. (The -redundant access-and-store suggested by the @code{(@var{place} +on entry to the body, and the only effect of the @code{cl-letf} is +to restore the original value of @var{place} afterwards. +@c I suspect this may no longer be true; either way it's +@c implementation detail and so not essential to document. +@ignore +(The redundant access-and-store suggested by the @code{(@var{place} @var{place})} example does not actually occur.) +@end ignore -In most cases, the @var{place} must have a well-defined value on -entry to the @code{letf} form. The only exceptions are plain -variables and calls to @code{symbol-value} and @code{symbol-function}. -If the symbol is not bound on entry, it is simply made unbound by -@code{makunbound} or @code{fmakunbound} on exit. +Note that in this case, and in fact almost every case, @var{place} +must have a well-defined value outside the @code{cl-letf} body. +There is essentially only one exception to this, which is @var{place} +a plain variable with a specified @var{value} (such as @code{(a 17)} +in the above example). +@c See http://debbugs.gnu.org/12758 +@c Some or all of this was true for cl.el, but not for cl-lib.el. +@ignore +The only exceptions are plain variables and calls to +@code{symbol-value} and @code{symbol-function}. If the symbol is not +bound on entry, it is simply made unbound by @code{makunbound} or +@code{fmakunbound} on exit. +@end ignore @end defmac @defmac cl-letf* (bindings@dots{}) forms@dots{} -This macro is to @code{letf} what @code{let*} is to @code{let}: +This macro is to @code{cl-letf} what @code{let*} is to @code{let}: It does the bindings in sequential rather than parallel order. @end defmac @@ -1210,7 +1222,7 @@ equivalent to @code{(cl-callf2 cons @var{x} @var{place})}. The @code{cl-callf} and @code{cl-callf2} macros serve as building blocks for other macros like @code{cl-incf}, and @code{cl-pushnew}. -The @code{letf} and @code{cl-letf*} macros are used in the processing +The @code{cl-letf} and @code{cl-letf*} macros are used in the processing of symbol macros; @pxref{Macro Bindings}. @@ -1221,7 +1233,7 @@ of symbol macros; @pxref{Macro Bindings}. These Lisp forms make bindings to variables and function names, analogous to Lisp's built-in @code{let} form. -@xref{Modify Macros}, for the @code{letf} and @code{cl-letf*} forms which +@xref{Modify Macros}, for the @code{cl-letf} and @code{cl-letf*} forms which are also related to variable bindings. @menu @@ -1370,7 +1382,7 @@ I.e., @code{(setq foo 4)} in the above would be equivalent to @code{(setf foo 4)}, which in turn expands to @code{(setf (car bar) 4)}. Likewise, a @code{let} or @code{let*} binding a symbol macro is -treated like a @code{letf} or @code{cl-letf*}. This differs from true +treated like a @code{cl-letf} or @code{cl-letf*}. This differs from true @c FIXME does it work like this in Emacs with lexical-binding = t? Common Lisp, where the rules of lexical scoping cause a @code{let} binding to shadow a @code{cl-symbol-macrolet} binding. In this package, @@ -4870,7 +4882,10 @@ Replaced by @code{cl-labels} (@pxref{Function Bindings}). @end defmac @defmac letf (bindings@dots{}) forms@dots{} -Replaced by @code{cl-letf} (@pxref{Modify Macros}). +This macro is almost exactly the same as @code{cl-letf}, which +replaces it (@pxref{Modify Macros}). The only difference is in +details that relate to some deprecated usage of @code{symbol-function} +in place forms. @end defmac @node Obsolete Setf Customization diff --git a/etc/NEWS b/etc/NEWS index a6d6b1c5eeb..7e8684258a6 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -323,7 +323,10 @@ The difference is that it relies on the `lexical-binding' machinery (as opposed to the `lexical-let' machinery used previously) to capture definitions in closures, so such closures will only work if `lexical-binding' is in use. ++++ *** `cl-letf' is not exactly like `letf'. +The only difference is in details that relate to some deprecated usage +of `symbol-function' in place forms. +++ *** `progv' was rewritten to use the `let' machinery. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index bd57e7dc5f0..c5c3b93d195 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-10-30 Glenn Morris + + * emacs-lisp/cl.el (letf): Doc fix. (Bug#12760) + 2012-10-29 Chong Yidong * isearch.el (isearch-other-meta-char): Ensure that a reprocessed diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el index 108ad037569..d3ef83961e2 100644 --- a/lisp/emacs-lisp/cl.el +++ b/lisp/emacs-lisp/cl.el @@ -511,7 +511,9 @@ rather than relying on `lexical-binding'." (defmacro letf (bindings &rest body) "Dynamically scoped let-style bindings for places. -Like `cl-letf', but with some extra backward compatibility." +For more details, see `cl-letf'. This macro behaves like that one +in almost every respect (apart from details that relate to some +deprecated usage of `symbol-function' in place forms)." ; bug#12760 (declare (indent 1) (debug cl-letf)) ;; Like cl-letf, but with special handling of symbol-function. `(cl-letf ,(mapcar (lambda (x) (if (eq (car-safe (car x)) 'symbol-function) From 516e1a08ce36fca220a0eaead731d3fe2d3bb271 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 30 Oct 2012 00:54:17 -0700 Subject: [PATCH 070/165] More small manual updates for cl.texi * doc/misc/cl.texi (Setf Extensions): Partially restore note about cl-getf, mainly moved to lispref/variables.texi. (Property Lists): Fix cl-getf typos. * doc/lispref/variables.texi (Generalized Variables): Fix typo. --- doc/lispref/ChangeLog | 4 ++++ doc/lispref/variables.texi | 8 ++++---- doc/misc/ChangeLog | 3 +++ doc/misc/cl.texi | 13 ++++++++----- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 2309cde2998..eca39e54203 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,7 @@ +2012-10-30 Glenn Morris + + * variables.texi (Generalized Variables): Fix typo. + 2012-10-30 Chong Yidong * symbols.texi (Symbol Plists): Document function-get. diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 1ffb1f7ffcb..580dd8258df 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -2025,10 +2025,10 @@ process-filter Using any forms other than these in the @var{place} argument to @code{setf} will signal an error. -Note that for @code{nthcdr} and @code{getf}, the list argument -of the function must itself be a valid @var{place} form. For -example, @code{(setf (nthcdr 0 foo) 7)} will set @code{foo} itself -to 7. +@c And for cl-lib's cl-getf. +Note that for @code{nthcdr}, the list argument of the function must +itself be a valid @var{place} form. For example, @code{(setf (nthcdr +0 foo) 7)} will set @code{foo} itself to 7. @c The use of @code{nthcdr} as a @var{place} form is an extension @c to standard Common Lisp. diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index b07db9d605f..fa58cd958db 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -2,6 +2,9 @@ * cl.texi (Modify Macros): Update for cl-letf changes. (Obsolete Lexical Macros): Say a little more about letf/cl-letf. + (Setf Extensions): Partially restore note about cl-getf, + mainly moved to lispref/variables.texi. + (Property Lists): Fix cl-getf typos. 2012-10-29 Glenn Morris diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index f520144679e..4105ac349ec 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -900,6 +900,10 @@ cl-caaar .. cl-cddddr cl-first .. cl-tenth cl-rest cl-get cl-getf cl-subseq @end smallexample +@noindent +Note that for @code{cl-getf} (as for @code{nthcdr}), the list argument +of the function must itself be a valid @var{place} form. + @item General Emacs Lisp functions: @smallexample @@ -2813,10 +2817,10 @@ is given). In particular, @example -(get sym prop) @equiv{} (cl-get (symbol-plist sym) prop) +(get sym prop) @equiv{} (cl-getf (symbol-plist sym) prop) @end example -It is valid to use @code{getf} as a @code{setf} place, in which case +It is valid to use @code{cl-getf} as a @code{setf} place, in which case its @var{place} argument must itself be a valid @code{setf} place. The @var{default} argument, if any, is ignored in this context. The effect is to change (via @code{setcar}) the value cell in the @@ -2824,7 +2828,7 @@ list that corresponds to @var{property}, or to cons a new property-value pair onto the list if the property is not yet present. @example -(put sym prop val) @equiv{} (setf (cl-get (symbol-plist sym) prop) val) +(put sym prop val) @equiv{} (setf (cl-getf (symbol-plist sym) prop) val) @end example The @code{get} and @code{cl-get} functions are also @code{setf}-able. @@ -2837,8 +2841,7 @@ The fact that @code{default} is ignored can sometimes be useful: Here, symbol @code{foo}'s @code{usage-count} property is incremented if it exists, or set to 1 (an incremented 0) otherwise. -@c FIXME cl-getf? -When not used as a @code{setf} form, @code{getf} is just a regular +When not used as a @code{setf} form, @code{cl-getf} is just a regular function and its @var{place} argument can actually be any Lisp expression. @end defun From f43a5263c18258ab05d057881fa6b8795e65295a Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 30 Oct 2012 01:03:22 -0700 Subject: [PATCH 071/165] cl-mapc small fixes * lisp/emacs-lisp/cl-extra.el (cl-mapc): Add autoload cookie. Doc fix. * doc/misc/cl.texi (Mapping over Sequences): Mention cl-mapc naming oddity. --- doc/misc/ChangeLog | 1 + doc/misc/cl.texi | 8 ++++++-- lisp/ChangeLog | 2 ++ lisp/emacs-lisp/cl-extra.el | 3 ++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index fa58cd958db..941c430ce74 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -5,6 +5,7 @@ (Setf Extensions): Partially restore note about cl-getf, mainly moved to lispref/variables.texi. (Property Lists): Fix cl-getf typos. + (Mapping over Sequences): Mention cl-mapc naming oddity. 2012-10-29 Glenn Morris diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 4105ac349ec..8cee1cf9639 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -199,6 +199,8 @@ because they are replaced by other standard Emacs Lisp features. Finally, in a very few cases the old @file{cl.el} versions do not behave in exactly the same way as the @file{cl-lib.el} versions. @xref{Obsolete Features}. +@c There is also cl-mapc, which was called cl-mapc even before cl-lib.el. +@c But not autoloaded, so maybe not much used? Since the old @file{cl.el} does not use a clean namespace, Emacs has a policy that packages distributed with Emacs must not load @code{cl} at @@ -3309,13 +3311,15 @@ that it passes in the list pointers themselves rather than the @code{car}s of the advancing pointers. @end defun -@c FIXME does not exist? @defun cl-mapc function seq &rest more-seqs This function is like @code{cl-mapcar}, except that the values returned by @var{function} are ignored and thrown away rather than being collected into a list. The return value of @code{cl-mapc} is @var{seq}, the first sequence. This function is more general than the Emacs -primitive @code{mapc}. +primitive @code{mapc}. (Note that this function is called +@code{cl-mapc} even in @file{cl.el}, rather than @code{map*} as you +might expect.) +@c http://debbugs.gnu.org/6575 @end defun @defun cl-mapl function list &rest more-lists diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c5c3b93d195..bd535894cdf 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2012-10-30 Glenn Morris + * emacs-lisp/cl-extra.el (cl-mapc): Add autoload cookie. Doc fix. + * emacs-lisp/cl.el (letf): Doc fix. (Bug#12760) 2012-10-29 Chong Yidong diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el index 913ebf2015f..c72e3342648 100644 --- a/lisp/emacs-lisp/cl-extra.el +++ b/lisp/emacs-lisp/cl-extra.el @@ -149,8 +149,9 @@ the elements themselves. (setq cl-list (cdr cl-list))) (nreverse cl-res)))) +;;;###autoload (defun cl-mapc (cl-func cl-seq &rest cl-rest) - "Like `mapcar', but does not accumulate values returned by the function. + "Like `cl-mapcar', but does not accumulate values returned by the function. \n(fn FUNCTION SEQUENCE...)" (if cl-rest (progn (apply 'cl-map nil cl-func cl-seq cl-rest) From fcc1acdadbeae00d8dcabeb6dccb20da9672af2c Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 30 Oct 2012 06:18:56 -0400 Subject: [PATCH 072/165] Auto-commit of loaddefs files. --- lisp/emacs-lisp/cl-loaddefs.el | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el index 684ea42b157..5ad6e37a5a1 100644 --- a/lisp/emacs-lisp/cl-loaddefs.el +++ b/lisp/emacs-lisp/cl-loaddefs.el @@ -10,8 +10,8 @@ ;;;;;; cl-truncate cl-ceiling cl-floor cl-isqrt cl-lcm cl-gcd cl--set-frame-visible-p ;;;;;; cl--map-overlays cl--map-intervals cl--map-keymap-recursively ;;;;;; cl-notevery cl-notany cl-every cl-some cl-mapcon cl-mapcan -;;;;;; cl-mapl cl-maplist cl-map cl--mapcar-many cl-equalp cl-coerce) -;;;;;; "cl-extra" "cl-extra.el" "1572ae52fa4fbd9c4bf89b49a068a865") +;;;;;; cl-mapl cl-mapc cl-maplist cl-map cl--mapcar-many cl-equalp +;;;;;; cl-coerce) "cl-extra" "cl-extra.el" "7d7f65d8a05e954a919fe2555b68fb05") ;;; Generated autoloads from cl-extra.el (autoload 'cl-coerce "cl-extra" "\ @@ -46,6 +46,11 @@ the elements themselves. \(fn FUNCTION LIST...)" nil nil) +(autoload 'cl-mapc "cl-extra" "\ +Like `cl-mapcar', but does not accumulate values returned by the function. + +\(fn FUNCTION SEQUENCE...)" nil nil) + (autoload 'cl-mapl "cl-extra" "\ Like `cl-maplist', but does not accumulate values returned by the function. From aee5b18ec3c7844ca125249914113eeaef04342c Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Tue, 30 Oct 2012 20:14:15 +0900 Subject: [PATCH 073/165] font.c (Ffont_at): If WINDOW is specified and it is not displaying the current buffer, signal an error. --- src/ChangeLog | 5 +++++ src/font.c | 14 +++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index e59a286110d..a5f76b22def 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-10-30 Kenichi Handa + + * font.c (Ffont_at): If WINDOW is specified and it is not + displaying the current buffer, signal an error. + 2012-10-23 Kenichi Handa The following change is to make face-font-rescale-alist work diff --git a/src/font.c b/src/font.c index bff2356d6ca..e79ce5d80bc 100644 --- a/src/font.c +++ b/src/font.c @@ -4760,14 +4760,22 @@ FONT is a font-spec, font-entity, or font-object. */) DEFUN ("font-at", Ffont_at, Sfont_at, 1, 3, 0, doc: /* Return a font-object for displaying a character at POSITION. Optional second arg WINDOW, if non-nil, is a window displaying -the current buffer. It defaults to the currently selected window. */) +the current buffer. It defaults to the currently selected window. +Optional third arg STRING, if non-nil, is a string containing the target +character at index specified by POSITION. */) (Lisp_Object position, Lisp_Object window, Lisp_Object string) { struct window *w; ptrdiff_t pos; + if (NILP (window)) + window = selected_window; + CHECK_LIVE_WINDOW (window); + w = XWINDOW (window); if (NILP (string)) { + if (XBUFFER (w->buffer) != current_buffer) + error ("Specified window is not displaying the current buffer."); CHECK_NUMBER_COERCE_MARKER (position); if (! (BEGV <= XINT (position) && XINT (position) < ZV)) args_out_of_range_3 (position, make_number (BEGV), make_number (ZV)); @@ -4781,10 +4789,6 @@ the current buffer. It defaults to the currently selected window. */) args_out_of_range (string, position); pos = XINT (position); } - if (NILP (window)) - window = selected_window; - CHECK_LIVE_WINDOW (window); - w = XWINDOW (window); return font_at (-1, pos, NULL, w, string); } From 87288971055247833c83fe13fecdf06fef95cee7 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Tue, 30 Oct 2012 13:48:42 +0100 Subject: [PATCH 074/165] * trouble.texi (Known Problems): Mention command `debbugs-gnu-usertags'. --- doc/emacs/ChangeLog | 4 ++++ doc/emacs/trouble.texi | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index ea5621e7ccf..c7cbc78f910 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,7 @@ +2012-10-30 Michael Albinus + + * trouble.texi (Known Problems): Mention command `debbugs-gnu-usertags'. + 2012-10-29 Chong Yidong * dired.texi (Shell Commands in Dired): Document changes to the diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi index 1c45287cdaa..fc99ff3d7bf 100644 --- a/doc/emacs/trouble.texi +++ b/doc/emacs/trouble.texi @@ -481,7 +481,8 @@ Instead of browsing the bug tracker as a webpage, you can browse it from Emacs using the @code{debbugs} package, which can be downloaded via the Package Menu (@pxref{Packages}). This package provides the command @kbd{M-x debbugs-gnu} to list bugs, and @kbd{M-x -debbugs-gnu-search} to search for a specific bug. +debbugs-gnu-search} to search for a specific bug. User tags, applied +by the Emacs maintainers, are shown by @kbd{M-x debbugs-gnu-usertags}. @item The @samp{bug-gnu-emacs} mailing list (also available as the newsgroup From 02615da0724b1c97628f0073455e975710ca1cb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Tue, 30 Oct 2012 19:28:48 +0100 Subject: [PATCH 075/165] * frame.c (Fframe_pixel_height): Fix documentation. Fixes: debbugs:12733 --- src/ChangeLog | 4 ++++ src/frame.c | 7 ++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index e3371796bfb..1ae99a22cf9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2012-10-30 Jan Djärv + + * frame.c (Fframe_pixel_height): Fix documentation (Bug#12733). + 2012-10-30 Kenichi Handa * font.c (Ffont_at): If WINDOW is specified and it is not diff --git a/src/frame.c b/src/frame.c index 17a99000c9b..79893abf826 100644 --- a/src/frame.c +++ b/src/frame.c @@ -2474,11 +2474,8 @@ In the Gtk+ version of Emacs, it includes only any window (including the minibuffer or echo area), mode line, and header line. It does not include the tool bar or menu bar. -With the Motif or Lucid toolkits, it also includes the tool bar (but -not the menu bar). - -In a graphical version with no toolkit, it includes both the tool bar -and menu bar. +With other graphical versions, it also includes the tool bar and the +menu bar. For a text terminal, it includes the menu bar. In this case, the result is really in characters rather than pixels (i.e., is identical From 86a7968c86b150c59ef62d27d2b139be18926fc2 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Tue, 30 Oct 2012 15:23:13 -0400 Subject: [PATCH 076/165] Fix typo in earlier cl.texi change --- doc/misc/cl.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 8cee1cf9639..3870eb33064 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -3317,7 +3317,7 @@ by @var{function} are ignored and thrown away rather than being collected into a list. The return value of @code{cl-mapc} is @var{seq}, the first sequence. This function is more general than the Emacs primitive @code{mapc}. (Note that this function is called -@code{cl-mapc} even in @file{cl.el}, rather than @code{map*} as you +@code{cl-mapc} even in @file{cl.el}, rather than @code{mapc*} as you might expect.) @c http://debbugs.gnu.org/6575 @end defun From b08b6da7fe21922d7e8838847cd065c88597b191 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 30 Oct 2012 22:45:34 -0400 Subject: [PATCH 077/165] * lisp/progmodes/sh-script.el (sh--inside-arithmetic-expression): New func. (sh-font-lock-open-heredoc): Use it. Fixes: debbugs:12770 --- lisp/ChangeLog | 5 +++++ lisp/progmodes/sh-script.el | 12 +++++++++++- test/indent/perl.perl | 5 +++++ test/indent/shell.sh | 4 ++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100755 test/indent/perl.perl diff --git a/lisp/ChangeLog b/lisp/ChangeLog index bd535894cdf..8f4f5153747 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-10-31 Stefan Monnier + + * progmodes/sh-script.el (sh--inside-arithmetic-expression): New func. + (sh-font-lock-open-heredoc): Use it (bug#12770). + 2012-10-30 Glenn Morris * emacs-lisp/cl-extra.el (cl-mapc): Add autoload cookie. Doc fix. diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index daa83620051..c57468bf52f 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -940,6 +940,15 @@ See `sh-feature'.") (concat "<<-?\\s-*\\\\?\\(\\(?:['\"][^'\"]+['\"]\\|\\sw\\|[-/~._]\\)+\\)" sh-escaped-line-re "\\(\n\\)"))) +(defun sh--inside-arithmetic-expression (pos) + (save-excursion + (let ((ppss (syntax-ppss pos))) + (when (nth 1 ppss) + (goto-char (nth 1 ppss)) + (and (eq ?\( (char-after)) + (eq ?\( (char-before)) + (eq ?\$ (char-before (1- (point))))))))) + (defun sh-font-lock-open-heredoc (start string eol) "Determine the syntax of the \\n after a <)) - (sh-in-comment-or-string start)) + (sh-in-comment-or-string start) + (sh--inside-arithmetic-expression start)) ;; We're looking at <{filesButNot}} ); diff --git a/test/indent/shell.sh b/test/indent/shell.sh index 895a9325b7e..0636e62a062 100755 --- a/test/indent/shell.sh +++ b/test/indent/shell.sh @@ -5,6 +5,10 @@ setlock -n /tmp/getmail.lock && echo getmail isn\'t running # adsgsdg +echo -n $(( 5 << 2 )) +# This should not be treated as a heredoc (bug#12770). +2 + declare -a VERSION for i in $(ls "$PREFIX/sbin") ; do echo -e $N')' $i From 3618df4590230a7321aea685705eda63bf47116b Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 30 Oct 2012 23:10:25 -0400 Subject: [PATCH 078/165] * lisp/progmodes/sh-script.el (sh--inside-noncommand-expression): Rename from sh--inside-arithmetic-expression, handle more cases. Fixes: debbugs:11263 --- lisp/ChangeLog | 4 ++++ lisp/progmodes/sh-script.el | 12 +++++++----- test/indent/shell.sh | 5 +++++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8f4f5153747..88ea199cd20 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,9 @@ 2012-10-31 Stefan Monnier + * progmodes/sh-script.el (sh--inside-noncommand-expression): + Rename from sh--inside-arithmetic-expression, handle more cases + (bug#11263). + * progmodes/sh-script.el (sh--inside-arithmetic-expression): New func. (sh-font-lock-open-heredoc): Use it (bug#12770). diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index c57468bf52f..5af14e51f49 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -940,14 +940,16 @@ See `sh-feature'.") (concat "<<-?\\s-*\\\\?\\(\\(?:['\"][^'\"]+['\"]\\|\\sw\\|[-/~._]\\)+\\)" sh-escaped-line-re "\\(\n\\)"))) -(defun sh--inside-arithmetic-expression (pos) +(defun sh--inside-noncommand-expression (pos) (save-excursion (let ((ppss (syntax-ppss pos))) (when (nth 1 ppss) (goto-char (nth 1 ppss)) - (and (eq ?\( (char-after)) - (eq ?\( (char-before)) - (eq ?\$ (char-before (1- (point))))))))) + (pcase (char-after) + ;; $((...)) or $[...] or ${...}. + (`?\( (and (eq ?\( (char-before)) + (eq ?\$ (char-before (1- (point)))))) + ((or `?\{ `?\[) (eq ?\$ (char-before)))))))) (defun sh-font-lock-open-heredoc (start string eol) "Determine the syntax of the \\n after a <)) (sh-in-comment-or-string start) - (sh--inside-arithmetic-expression start)) + (sh--inside-noncommand-expression start)) ;; We're looking at < Date: Wed, 31 Oct 2012 00:25:18 -0700 Subject: [PATCH 079/165] Document cl-flet and cl-labels in doc/misc/cl.texi * doc/misc/cl.texi (Function Bindings): Update for cl-flet and cl-labels. (Obsolete Lexical Binding): Rename section from "Lexical Bindings". (Obsolete Macros): Rename section from "Obsolete Lexical Macros". Reword, and add details of flet and labels. * etc/NEWS: Related markup. --- doc/misc/ChangeLog | 7 +++ doc/misc/cl.texi | 107 ++++++++++++++++++++++++--------------------- etc/NEWS | 2 + 3 files changed, 66 insertions(+), 50 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 941c430ce74..11fe77ea471 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,10 @@ +2012-10-31 Glenn Morris + + * cl.texi (Function Bindings): Update for cl-flet and cl-labels. + (Obsolete Lexical Binding): Rename section from "Lexical Bindings". + (Obsolete Macros): Rename section from "Obsolete Lexical Macros". + Reword, and add details of flet and labels. + 2012-10-30 Glenn Morris * cl.texi (Modify Macros): Update for cl-letf changes. diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 3870eb33064..d01798497da 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -820,12 +820,10 @@ various advanced control structures, including extensions to the standard @code{setf} facility, and a number of looping and conditional constructs. -@c FIXME -@c flet is not cl-flet. @menu * Assignment:: The @code{cl-psetq} form. * Generalized Variables:: Extensions to generalized variables. -* Variable Bindings:: @code{cl-progv}, @code{flet}, @code{cl-macrolet}. +* Variable Bindings:: @code{cl-progv}, @code{cl-flet}, @code{cl-macrolet}. * Conditionals:: @code{cl-case}, @code{cl-typecase}. * Blocks and Exits:: @code{cl-block}, @code{cl-return}, @code{cl-return-from}. * Iteration:: @code{cl-do}, @code{cl-dotimes}, @code{cl-dolist}, @code{cl-do-symbols}. @@ -1244,7 +1242,7 @@ are also related to variable bindings. @menu * Dynamic Bindings:: The @code{cl-progv} form. -* Function Bindings:: @code{flet} and @code{labels}. +* Function Bindings:: @code{cl-flet} and @code{cl-labels}. * Macro Bindings:: @code{cl-macrolet} and @code{cl-symbol-macrolet}. @end menu @@ -1275,30 +1273,25 @@ are ignored. These forms make @code{let}-like bindings to functions instead of variables. -@defmac flet (bindings@dots{}) forms@dots{} +@defmac cl-flet (bindings@dots{}) forms@dots{} This form establishes @code{let}-style bindings on the function cells of symbols rather than on the value cells. Each @var{binding} must be a list of the form @samp{(@var{name} @var{arglist} @var{forms}@dots{})}, which defines a function exactly as if it were a @code{cl-defun} form. The function @var{name} is defined -accordingly for the duration of the body of the @code{flet}; then +accordingly for the duration of the body of the @code{cl-flet}; then the old function definition, or lack thereof, is restored. -While @code{flet} in Common Lisp establishes a lexical binding of -@var{name}, Emacs Lisp @code{flet} makes a dynamic binding. The -result is that @code{flet} affects indirect calls to a function as -well as calls directly inside the @code{flet} form itself. - -You can use @code{flet} to disable or modify the behavior of a +You can use @code{cl-flet} to disable or modify the behavior of a function in a temporary fashion. This will even work on Emacs primitives, although note that some calls to primitive functions internal to Emacs are made without going through the symbol's -function cell, and so will not be affected by @code{flet}. For +function cell, and so will not be affected by @code{cl-flet}. For example, @example -(flet ((message (&rest args) (push args saved-msgs))) - (do-something)) +(cl-flet ((message (&rest args) (push args saved-msgs))) + (do-something)) @end example This code attempts to replace the built-in function @code{message} @@ -1310,34 +1303,26 @@ generated directly inside Emacs will not be caught since they make direct C-language calls to the message routines rather than going through the Lisp @code{message} function. -@c Bug#411. -Also note that many primitives (e.g. @code{+}) have special byte-compile -handling. Attempts to redefine such functions using @code{flet} will -fail if byte-compiled. In such cases, use @code{labels} instead. - -Functions defined by @code{flet} may use the full Common Lisp +Functions defined by @code{cl-flet} may use the full Common Lisp argument notation supported by @code{cl-defun}; also, the function body is enclosed in an implicit block as if by @code{cl-defun}. @xref{Program Structure}. @end defmac -@defmac labels (bindings@dots{}) forms@dots{} -The @code{labels} form is like @code{flet}, except that it -makes lexical bindings of the function names rather than -dynamic bindings. (In true Common Lisp, both @code{flet} and -@code{labels} make lexical bindings of slightly different sorts; -since Emacs Lisp is dynamically bound by default, it seemed -more appropriate for @code{flet} also to use dynamic binding. -The @code{labels} form, with its lexical binding, is fully -compatible with Common Lisp.) +@defmac cl-labels (bindings@dots{}) forms@dots{} +The @code{cl-labels} form is like @code{cl-flet}, except that +the function bindings can be recursive. The scoping is lexical, +but you can only capture functions in closures if +@code{lexical-binding} is non-@code{nil}. +@xref{Closures,,,elisp,GNU Emacs Lisp Reference Manual}, and +@ref{Using Lexical Binding,,,elisp,GNU Emacs Lisp Reference Manual}. Lexical scoping means that all references to the named functions must appear physically within the body of the -@code{labels} form. References may appear both in the body -@var{forms} of @code{labels} itself, and in the bodies of -the functions themselves. Thus, @code{labels} can define -local recursive functions, or mutually-recursive sets of -functions. +@code{cl-labels} form. References may appear both in the body +@var{forms} of @code{cl-labels} itself, and in the bodies of +the functions themselves. Thus, @code{cl-labels} can define +local recursive functions, or mutually-recursive sets of functions. A ``reference'' to a function name is either a call to that function, or a use of its name quoted by @code{quote} or @@ -1351,7 +1336,7 @@ function, or a use of its name quoted by @code{quote} or These forms create local macros and ``symbol macros''. @defmac cl-macrolet (bindings@dots{}) forms@dots{} -This form is analogous to @code{flet}, but for macros instead of +This form is analogous to @code{cl-flet}, but for macros instead of functions. Each @var{binding} is a list of the same form as the arguments to @code{cl-defmacro} (i.e., a macro name, argument list, and macro-expander forms). The macro is defined accordingly for @@ -4598,7 +4583,7 @@ in @code{map-odd-elements} by the time the @code{(+ a x)} function is called. Internally, this package uses lexical binding so that such problems do -not occur. @xref{Lexical Bindings}, for a description of the obsolete +not occur. @xref{Obsolete Lexical Binding}, for a description of the obsolete @code{lexical-let} form that emulates a Common Lisp-style lexical binding when dynamic binding is in use. @@ -4750,13 +4735,13 @@ or where versions with a @samp{cl-} prefix do exist they do not behave in exactly the same way. @menu -* Lexical Bindings:: An approximation of lexical binding. -* Obsolete Lexical Macros:: Obsolete macros using lexical-let. +* Obsolete Lexical Binding:: An approximation of lexical binding. +* Obsolete Macros:: Obsolete macros. * Obsolete Setf Customization:: Obsolete ways to customize setf. @end menu -@node Lexical Bindings -@appendixsec Lexical Bindings +@node Obsolete Lexical Binding +@appendixsec Obsolete Lexical Binding The following macros are extensions to Common Lisp, where all bindings are lexical unless declared otherwise. These features are likewise @@ -4871,21 +4856,43 @@ This form is just like @code{lexical-let}, except that the bindings are made sequentially in the manner of @code{let*}. @end defmac -@node Obsolete Lexical Macros -@appendixsec Macros Defined Using Lexical-Let +@node Obsolete Macros +@appendixsec Obsolete Macros -The following macros are defined using @code{lexical-let}. -They are replaced by versions with a @samp{cl-} prefix that use true -lexical binding (and hence rely on @code{lexical-binding} being set to -@code{t} in code using them). +The following macros are obsolete, and are replaced by versions with +a @samp{cl-} prefix that do not behave in exactly the same way. +Consequently, the @file{cl.el} versions are not simply aliases to the +@file{cl-lib.el} versions. @defmac flet (bindings@dots{}) forms@dots{} -Replaced by @code{cl-flet} (@pxref{Function Bindings}) -or @code{cl-letf} (@pxref{Modify Macros}). +This macro is replaced by @code{cl-flet} (@pxref{Function Bindings}), +which behaves the same way as Common Lisp's @code{flet}. +This @code{flet} takes the same arguments as @code{cl-flet}, but does +not behave in precisely the same way. + +While @code{flet} in Common Lisp establishes a lexical function +binding, this @code{flet} makes a dynamic binding (it dates from a +time before Emacs had lexical binding). The result is +that @code{flet} affects indirect calls to a function as well as calls +directly inside the @code{flet} form itself. + +@c Bug#411. +Note that many primitives (e.g. @code{+}) have special byte-compile +handling. Attempts to redefine such functions using @code{flet} will +fail if byte-compiled. +@c Or cl-flet. +@c In such cases, use @code{labels} instead. @end defmac @defmac labels (bindings@dots{}) forms@dots{} -Replaced by @code{cl-labels} (@pxref{Function Bindings}). +This macro is replaced by @code{cl-labels} (@pxref{Function Bindings}), +which behaves the same way as Common Lisp's @code{labels}. +This @code{labels} takes the same arguments as @code{cl-labels}, but +does not behave in precisely the same way. + +This version of @code{labels} uses the obsolete @code{lexical-let} +form (@pxref{Obsolete Lexical Binding}), rather than the true +lexical binding that @code{cl-labels} uses. @end defmac @defmac letf (bindings@dots{}) forms@dots{} diff --git a/etc/NEWS b/etc/NEWS index 7e8684258a6..31a4909f8d9 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -315,9 +315,11 @@ which have not been renamed to `cl-foo*' but just `cl-foo'. The old `cl' is now deprecated and is just a bunch of aliases that provide the old non-prefixed names. ++++ *** `cl-flet' is not like `flet' (which is deprecated). Instead it obeys the behavior of Common-Lisp's `flet'. ++++ *** `cl-labels' is slightly different from `labels'. The difference is that it relies on the `lexical-binding' machinery (as opposed to the `lexical-let' machinery used previously) to capture definitions in From 218e997a10bc1bc2eebde639f9b0aaddc525159d Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Wed, 31 Oct 2012 11:02:51 +0100 Subject: [PATCH 080/165] Install fixes for Bug#12764 and Bug#12766. * window.el (quit-restore-window): If the window has been created on an existing frame and ended up as the sole window on that frame, do not delete it (Bug#12764). * minibuf.c (read_minibuf): Restore current buffer since choose_minibuf_frame calling Fset_frame_selected_window may change it (Bug#12766). --- lisp/ChangeLog | 6 ++++++ lisp/window.el | 7 ++++++- src/ChangeLog | 6 ++++++ src/minibuf.c | 4 ++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 88ea199cd20..dc928c35672 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2012-10-31 Martin Rudalics + + * window.el (quit-restore-window): If the window has been + created on an existing frame and ended up as the sole window on + that frame, do not delete it (Bug#12764). + 2012-10-31 Stefan Monnier * progmodes/sh-script.el (sh--inside-noncommand-expression): diff --git a/lisp/window.el b/lisp/window.el index bd043390d90..10f75d44d69 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -3556,7 +3556,12 @@ the buffer of WINDOW. The following values are handled: quad entry) (cond ((and (not prev-buffer) - (memq (nth 1 quit-restore) '(window frame)) + (or (eq (nth 1 quit-restore) 'frame) + (and (eq (nth 1 quit-restore) 'window) + ;; If the window has been created on an existing + ;; frame and ended up as the sole window on that + ;; frame, do not delete it (Bug#12764). + (not (eq window (frame-root-window window))))) (eq (nth 3 quit-restore) buffer) ;; Delete WINDOW if possible. (window--delete window nil (eq bury-or-kill 'kill))) diff --git a/src/ChangeLog b/src/ChangeLog index 1ae99a22cf9..3ad653efd0f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-10-31 Martin Rudalics + + * minibuf.c (read_minibuf): Restore current buffer since + choose_minibuf_frame calling Fset_frame_selected_window may + change it (Bug#12766). + 2012-10-30 Jan Djärv * frame.c (Fframe_pixel_height): Fix documentation (Bug#12733). diff --git a/src/minibuf.c b/src/minibuf.c index 2cc89e75680..dcc4af37c13 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -472,6 +472,10 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt, /* Choose the minibuffer window and frame, and take action on them. */ + /* Prepare for restoring the current buffer since choose_minibuf_frame + calling Fset_frame_selected_window may change it (Bug#12766). */ + record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); + choose_minibuf_frame (); record_unwind_protect (choose_minibuf_frame_1, Qnil); From 220cb2bd70c65041417554cc2dc10edb4a53de5c Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Wed, 31 Oct 2012 12:45:40 +0100 Subject: [PATCH 081/165] * dbusbind.c: Fix cut'n'waste error. Use HAVE_DBUS_VALIDATE_INTERFACE. --- src/ChangeLog | 6 +++++- src/dbusbind.c | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 3ad653efd0f..4edb3a7007b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2012-10-31 Michael Albinus + + * dbusbind.c: Fix cut'n'waste error. Use HAVE_DBUS_VALIDATE_INTERFACE. + 2012-10-31 Martin Rudalics * minibuf.c (read_minibuf): Restore current buffer since @@ -6082,7 +6086,7 @@ * lisp.h (make_formatted_string): New prototype. * alloc.c (make_formatted_string): New function. * buffer.c (Fgenerate_new_buffer_name): Use it. - * dbus.c (syms_of_dbusbind): Likewise. + * dbusbind.c (syms_of_dbusbind): Likewise. * editfns.c (Fcurrent_time_zone): Likewise. * filelock.c (get_boot_time): Likewise. * frame.c (make_terminal_frame, set_term_frame_name) diff --git a/src/dbusbind.c b/src/dbusbind.c index 08f34f47042..80086946fc4 100644 --- a/src/dbusbind.c +++ b/src/dbusbind.c @@ -299,8 +299,8 @@ xd_symbol_to_dbus_type (Lisp_Object object) } \ } while (0) -#if (HAVE_DBUS_VALIDATE_BUS_NAME || HAVE_DBUS_VALIDATE_PATH \ - || XD_DBUS_VALIDATE_OBJECT || HAVE_DBUS_VALIDATE_MEMBER) +#if (HAVE_DBUS_VALIDATE_BUS_NAME || HAVE_DBUS_VALIDATE_PATH \ + || HAVE_DBUS_VALIDATE_INTERFACE || HAVE_DBUS_VALIDATE_MEMBER) #define XD_DBUS_VALIDATE_OBJECT(object, func) \ do { \ if (!NILP (object)) \ From 322aea6ddf7ec7fd71410d98ec1de69f219aff3e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 31 Oct 2012 10:27:29 -0700 Subject: [PATCH 082/165] Fix crash when using Emacs as commit editor for git. * callproc.c (setpgrp): Remove macro, as we now use setpgid and it is configured in conf_post.h. (Fcall_process): Don't invoke both setsid and setpgid; the former is enough, if it exists. * callproc.c (Fcall_process, child_setup): * process.c (create_process): Use setpgid. * conf_post.h (setpgid) [!HAVE_SETPGID]: New macro, which substitutes for the real thing. * dispnew.c (init_display): Initialize the foreground group if we are running a tty display. * emacs.c (main): Do not worry about setpgrp; init_display does it now. * lisp.h (init_foreground_group): New decl. * sysdep.c (inherited_pgroup): New static var. (init_foreground_group, tcsetpgrp_without_stopping) (narrow_foreground_group, widen_foreground_group): New functions. (init_sys_modes): Narrow foreground group. (reset_sys_modes): Widen foreground group. Fixes: debbugs:12697 --- src/ChangeLog | 21 +++++++++++++++ src/callproc.c | 23 ++++------------ src/conf_post.h | 8 ++++++ src/dispnew.c | 2 ++ src/emacs.c | 13 +++------ src/lisp.h | 1 + src/process.c | 10 ++----- src/sysdep.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 115 insertions(+), 35 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 4edb3a7007b..4dc18b6909b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,24 @@ +2012-10-31 Paul Eggert + + Fix crash when using Emacs as commit editor for git (Bug#12697). + * callproc.c (setpgrp): Remove macro, as we now use setpgid + and it is configured in conf_post.h. + (Fcall_process): Don't invoke both setsid and setpgid; the former + is enough, if it exists. + * callproc.c (Fcall_process, child_setup): + * process.c (create_process): Use setpgid. + * conf_post.h (setpgid) [!HAVE_SETPGID]: New macro, which substitutes + for the real thing. + * dispnew.c (init_display): Initialize the foreground group + if we are running a tty display. + * emacs.c (main): Do not worry about setpgrp; init_display does it now. + * lisp.h (init_foreground_group): New decl. + * sysdep.c (inherited_pgroup): New static var. + (init_foreground_group, tcsetpgrp_without_stopping) + (narrow_foreground_group, widen_foreground_group): New functions. + (init_sys_modes): Narrow foreground group. + (reset_sys_modes): Widen foreground group. + 2012-10-31 Michael Albinus * dbusbind.c: Fix cut'n'waste error. Use HAVE_DBUS_VALIDATE_INTERFACE. diff --git a/src/callproc.c b/src/callproc.c index b33882e54c2..c236f22fc86 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -64,13 +64,6 @@ along with GNU Emacs. If not, see . */ #include "nsterm.h" #endif -#ifdef HAVE_SETPGID -#if !defined (USG) -#undef setpgrp -#define setpgrp setpgid -#endif -#endif - /* Pattern used by call-process-region to make temp files. */ static Lisp_Object Vtemp_file_name_pattern; @@ -618,14 +611,12 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */) { if (fd[0] >= 0) emacs_close (fd[0]); + #ifdef HAVE_SETSID setsid (); -#endif -#if defined (USG) - setpgrp (); #else - setpgrp (pid, pid); -#endif /* USG */ + setpgid (0, 0); +#endif /* Emacs ignores SIGPIPE, but the child should not. */ signal (SIGPIPE, SIG_DFL); @@ -1295,13 +1286,9 @@ child_setup (int in, int out, int err, char **new_argv, bool set_pgrp, if (err != in && err != out) emacs_close (err); -#if defined (USG) -#ifndef SETPGRP_RELEASES_CTTY - setpgrp (); /* No arguments but equivalent in this case */ +#if defined HAVE_SETPGID || ! (defined USG && defined SETPGRP_RELEASES_CTTY) + setpgid (pid, pid); #endif -#else /* not USG */ - setpgrp (pid, pid); -#endif /* not USG */ /* setpgrp_of_tty is incorrect here; it uses input_fd. */ tcsetpgrp (0, pid); diff --git a/src/conf_post.h b/src/conf_post.h index aa008107ba6..6056821d4a7 100644 --- a/src/conf_post.h +++ b/src/conf_post.h @@ -112,6 +112,14 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */ #endif /* End of gnulib-related stuff. */ +#ifndef HAVE_SETPGID +# ifdef USG +# define setpgid(pid, pgid) setpgrp () +# else +# define setpgid(pid, pgid) setpgrp (pid, pgid) +# endif +#endif + /* Define one of these for easier conditionals. */ #ifdef HAVE_X_WINDOWS /* We need a little extra space, see ../../lisp/loadup.el and the diff --git a/src/dispnew.c b/src/dispnew.c index fa24408aa43..9f0e22fcdcb 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -6283,6 +6283,8 @@ init_display (void) struct terminal *t; struct frame *f = XFRAME (selected_frame); + init_foreground_group (); + /* Open a display on the controlling tty. */ t = init_tty (0, terminal_type, 1); /* Errors are fatal. */ diff --git a/src/emacs.c b/src/emacs.c index 7f3228641ae..98e3f11f0cb 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -1091,19 +1091,14 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem #endif /* DOS_NT */ } +#if defined (HAVE_PTHREAD) && !defined (SYSTEM_MALLOC) && !defined (DOUG_LEA_MALLOC) if (! noninteractive) { -#if defined (USG5) && defined (INTERRUPT_INPUT) - setpgrp (); -#endif -#if defined (HAVE_PTHREAD) && !defined (SYSTEM_MALLOC) && !defined (DOUG_LEA_MALLOC) - { - extern void malloc_enable_thread (void); + extern void malloc_enable_thread (void); - malloc_enable_thread (); - } -#endif + malloc_enable_thread (); } +#endif init_signals (dumping); diff --git a/src/lisp.h b/src/lisp.h index 4cf8fef0de3..3ec188b67c7 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3474,6 +3474,7 @@ struct terminal; extern char *get_current_dir_name (void); #endif extern void stuff_char (char c); +extern void init_foreground_group (void); extern void init_sigio (int); extern void sys_subshell (void); extern void sys_suspend (void); diff --git a/src/process.c b/src/process.c index 307e82819d6..77e99ead01f 100644 --- a/src/process.c +++ b/src/process.c @@ -1759,12 +1759,10 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) #endif } #else /* not HAVE_SETSID */ -#ifdef USG - /* It's very important to call setpgrp here and no time + /* It's very important to call setpgid here and no time afterwards. Otherwise, we lose our controlling tty which is set when we open the pty. */ - setpgrp (); -#endif /* USG */ + setpgid (0, 0); #endif /* not HAVE_SETSID */ #if defined (LDISC1) if (pty_flag && xforkin >= 0) @@ -1802,11 +1800,7 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) /* In order to get a controlling terminal on some versions of BSD, it is necessary to put the process in pgrp 0 before it opens the terminal. */ -#ifdef HAVE_SETPGID setpgid (0, 0); -#else - setpgrp (0, 0); -#endif #endif } #endif /* TIOCNOTTY */ diff --git a/src/sysdep.c b/src/sysdep.c index c7174e91612..63eac5d9e09 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -682,6 +682,75 @@ ignore_sigio (void) #endif } + +/* Saving and restoring the process group of Emacs's terminal. */ + +/* The process group of which Emacs was a member when it initially + started. + + If Emacs was in its own process group (i.e. inherited_pgroup == + getpid ()), then we know we're running under a shell with job + control (Emacs would never be run as part of a pipeline). + Everything is fine. + + If Emacs was not in its own process group, then we know we're + running under a shell (or a caller) that doesn't know how to + separate itself from Emacs (like sh). Emacs must be in its own + process group in order to receive SIGIO correctly. In this + situation, we put ourselves in our own pgroup, forcibly set the + tty's pgroup to our pgroup, and make sure to restore and reinstate + the tty's pgroup just like any other terminal setting. If + inherited_group was not the tty's pgroup, then we'll get a + SIGTTmumble when we try to change the tty's pgroup, and a CONT if + it goes foreground in the future, which is what should happen. */ + +static pid_t inherited_pgroup; + +void +init_foreground_group (void) +{ + pid_t pgrp = EMACS_GETPGRP (0); + inherited_pgroup = getpid () == pgrp ? 0 : pgrp; +} + +/* Safely set a controlling terminal FD's process group to PGID. + If we are not in the foreground already, POSIX requires tcsetpgrp + to deliver a SIGTTOU signal, which would stop us. This is an + annoyance, so temporarily ignore the signal. + + In practice, platforms lacking SIGTTOU also lack tcsetpgrp, so + skip all this unless SIGTTOU is defined. */ +static void +tcsetpgrp_without_stopping (int fd, pid_t pgid) +{ +#ifdef SIGTTOU + signal_handler_t handler; + block_input (); + handler = signal (SIGTTOU, SIG_IGN); + tcsetpgrp (fd, pgid); + signal (SIGTTOU, handler); + unblock_input (); +#endif +} + +/* Split off the foreground process group to Emacs alone. When we are + in the foreground, but not started in our own process group, + redirect the tty device handle FD to point to our own process + group. FD must be the file descriptor of the controlling tty. */ +static void +narrow_foreground_group (int fd) +{ + if (inherited_pgroup && setpgid (0, 0) == 0) + tcsetpgrp_without_stopping (fd, getpid ()); +} + +/* Set the tty to our original foreground group. */ +static void +widen_foreground_group (int fd) +{ + if (inherited_pgroup && setpgid (0, inherited_pgroup) == 0) + tcsetpgrp_without_stopping (fd, inherited_pgroup); +} /* Getting and setting emacs_tty structures. */ @@ -799,6 +868,8 @@ init_sys_modes (struct tty_display_info *tty_out) if (!tty_out->output) return; /* The tty is suspended. */ + narrow_foreground_group (fileno (tty_out->input)); + if (! tty_out->old_tty) tty_out->old_tty = xmalloc (sizeof *tty_out->old_tty); @@ -1231,6 +1302,7 @@ reset_sys_modes (struct tty_display_info *tty_out) dos_ttcooked (); #endif + widen_foreground_group (fileno (tty_out->input)); } #ifdef HAVE_PTYS From 5c6ce1c7d035ad412e9bdec6cf385c06ffd5680e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 31 Oct 2012 12:23:06 -0700 Subject: [PATCH 083/165] Spelling fixes. --- doc/lispref/loading.texi | 2 +- doc/lispref/variables.texi | 2 +- doc/misc/cl.texi | 3 +-- src/w32proc.c | 2 +- src/xterm.c | 2 +- 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index 6a18bea2977..79fd352adfb 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -615,7 +615,7 @@ specified by an autoload object: @defun autoload-do-load autoload &optional name macro-only This function performs the loading specified by @var{autoload}, which -whould be an autoload object. The optional argument @var{name}, if +should be an autoload object. The optional argument @var{name}, if non-@code{nil}, should be a symbol whose function value is @var{autoload}; in that case, the return value of this function is the symbol's new function value. If the value of the optional argument diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 580dd8258df..88b7909126e 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -2033,7 +2033,7 @@ itself be a valid @var{place} form. For example, @code{(setf (nthcdr @c to standard Common Lisp. @c FIXME I don't think is a particularly good way to do it, -@c but these macros are introduced before gvs are. +@c but these macros are introduced before generalized variables are. The macros @code{push} (@pxref{List Variables}) and @code{pop} (@pxref{List Elements}) can manipulate generalized variables, not just lists. @code{(pop @var{place})} removes and returns the first diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index d01798497da..10735420534 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -991,7 +991,7 @@ has been made. @xref{Obsolete Setf Customization}. @c FIXME should this be in lispref? It seems self-evident. @c Contrast with the cl-incf example later on. -@c Here it really only serves as a constrast to wrong-order. +@c Here it really only serves as a contrast to wrong-order. The @code{setf} macro takes care to evaluate all subforms in the proper left-to-right order; for example, @@ -5129,4 +5129,3 @@ defined later. @printindex vr @bye - diff --git a/src/w32proc.c b/src/w32proc.c index d45d9879a24..a0ff96e593c 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -519,7 +519,7 @@ term_timers (void) void init_timers (void) { - /* GetThreadTimes is not avaiulable on all versions of Windows, so + /* GetThreadTimes is not available on all versions of Windows, so need to probe for its availability dynamically, and call it through a pointer. */ s_pfn_Get_Thread_Times = NULL; /* in case dumped Emacs comes with a value */ diff --git a/src/xterm.c b/src/xterm.c index 8b005873f4d..f8420d13a32 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -3448,7 +3448,7 @@ x_focus_changed (int type, int state, struct x_display_info *dpyinfo, struct fra /* Don't stop displaying the initial startup message for a switch-frame event we don't need. */ - /* When run as a deamon, Vterminal_frame is always NIL. */ + /* When run as a daemon, Vterminal_frame is always NIL. */ if ((NILP (Vterminal_frame) || EQ (Fdaemonp(), Qt)) && CONSP (Vframe_list) && !NILP (XCDR (Vframe_list))) From 89b2c8a133b379520d25a7bfa132178f8226d226 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 31 Oct 2012 16:54:19 -0400 Subject: [PATCH 084/165] Lispref updates for some things no longer being special forms * doc/lispref/eval.texi (Special Forms): No longer special forms: defmacro, defun, save-window-excursion, with-output-to-temp-buffer. * doc/lispref/functions.texi (Defining Functions): Defun is now a macro. Defalias is a function. --- doc/lispref/ChangeLog | 7 +++++++ doc/lispref/eval.texi | 15 +-------------- doc/lispref/functions.texi | 4 ++-- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index eca39e54203..31da666eea6 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,10 @@ +2012-10-31 Glenn Morris + + * eval.texi (Special Forms): No longer special forms: defmacro, + defun, save-window-excursion, with-output-to-temp-buffer. + * functions.texi (Defining Functions): Defun is now a macro. + Defalias is a function. + 2012-10-30 Glenn Morris * variables.texi (Generalized Variables): Fix typo. diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi index b373ecfbe62..670b293bea6 100644 --- a/doc/lispref/eval.texi +++ b/doc/lispref/eval.texi @@ -450,12 +450,6 @@ Emacs Lisp with a reference to where each is described. @item defconst @pxref{Defining Variables} -@item defmacro -@pxref{Defining Macros} - -@item defun -@pxref{Defining Functions} - @item defvar @pxref{Defining Variables} @@ -492,9 +486,6 @@ Emacs Lisp with a reference to where each is described. @item save-restriction @pxref{Narrowing} -@item save-window-excursion -@pxref{Window Configurations} - @item setq @pxref{Setting Variables} @@ -509,9 +500,6 @@ Emacs Lisp with a reference to where each is described. @item while @pxref{Iteration} - -@item with-output-to-temp-buffer -@pxref{Temporary Displays} @end table @cindex CL note---special forms compared @@ -519,8 +507,7 @@ Emacs Lisp with a reference to where each is described. @b{Common Lisp note:} Here are some comparisons of special forms in GNU Emacs Lisp and Common Lisp. @code{setq}, @code{if}, and @code{catch} are special forms in both Emacs Lisp and Common Lisp. -@code{defun} is a special form in Emacs Lisp, but a macro in Common -Lisp. @code{save-excursion} is a special form in Emacs Lisp, but +@code{save-excursion} is a special form in Emacs Lisp, but doesn't exist in Common Lisp. @code{throw} is a special form in Common Lisp (because it must be able to throw multiple values), but it is a function in Emacs Lisp (which doesn't have multiple diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi index 623106b6d06..05fd2486fd6 100644 --- a/doc/lispref/functions.texi +++ b/doc/lispref/functions.texi @@ -520,7 +520,7 @@ Scheme.) We usually give a name to a function when it is first created. This is called @dfn{defining a function}, and it is done with the -@code{defun} special form. +@code{defun} macro. @defmac defun name args [doc] [declare] [interactive] body@dots{} @code{defun} is the usual way to define new Lisp functions. It @@ -583,7 +583,7 @@ redefinition from unintentional redefinition. @cindex function aliases @defun defalias name definition &optional doc @anchor{Definition of defalias} -This special form defines the symbol @var{name} as a function, with +This function defines the symbol @var{name} as a function, with definition @var{definition} (which can be any valid Lisp function). Its return value is @emph{undefined}. From 5241598ae5c3b83529f6967f143b8c08055b663f Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 31 Oct 2012 16:56:55 -0400 Subject: [PATCH 085/165] lispref xref update * doc/lispref/modes.texi (Defining Minor Modes): "Generalized Variables" section is now in this manual rather than cl.texi. --- doc/lispref/ChangeLog | 3 +++ doc/lispref/modes.texi | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 31da666eea6..b7885e6b0a9 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,5 +1,8 @@ 2012-10-31 Glenn Morris + * modes.texi (Defining Minor Modes): "Generalized Variables" + section is now in this manual rather than cl.texi. + * eval.texi (Special Forms): No longer special forms: defmacro, defun, save-window-excursion, with-output-to-temp-buffer. * functions.texi (Defining Functions): Defun is now a macro. diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index 4e4d700aade..0634cddff84 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -1595,7 +1595,7 @@ of the mode. If you specify this, the @var{mode} variable is not defined, and any @var{init-value} argument is unused. @var{place} can be a different named variable (which you must define yourself), or anything that can be used with the @code{setf} function -(@pxref{Generalized Variables,,, cl, Common Lisp Extensions}). +(@pxref{Generalized Variables}). @var{place} can also be a cons @code{(@var{get} . @var{set})}, where @var{get} is an expression that returns the current state, and @var{set} is a function of one argument (a state) that sets it. From 0d8e94e92871fba4ccb0eaf756f16356704d2fb7 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 31 Oct 2012 16:59:04 -0400 Subject: [PATCH 086/165] Small lispref update for cl-lib namespace changes * doc/lispref/errors.texi (Standard Errors): * doc/lispref/loading.texi (Autoload): Update for cl-lib namespace changes. --- doc/lispref/ChangeLog | 3 +++ doc/lispref/errors.texi | 2 +- doc/lispref/loading.texi | 6 +++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index b7885e6b0a9..d7f33a462c1 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,5 +1,8 @@ 2012-10-31 Glenn Morris + * errors.texi (Standard Errors): + * loading.texi (Autoload): Update for cl-lib namespace changes. + * modes.texi (Defining Minor Modes): "Generalized Variables" section is now in this manual rather than cl.texi. diff --git a/doc/lispref/errors.texi b/doc/lispref/errors.texi index b28ed6e84c4..a57f74d6c86 100644 --- a/doc/lispref/errors.texi +++ b/doc/lispref/errors.texi @@ -65,7 +65,7 @@ circular structure is encountered. @xref{Circular Objects}. @item cl-assertion-failed The message is @samp{Assertion failed}. This happens when the -@code{assert} macro fails a test. @xref{Assertions,,, cl, Common Lisp +@code{cl-assert} macro fails a test. @xref{Assertions,,, cl, Common Lisp Extensions}. @item coding-system-error diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index 79fd352adfb..3a511d34829 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -520,9 +520,9 @@ the following: @table @asis @item Definitions for function or function-like objects: -@code{defun} and @code{defmacro}; also @code{defun*} and -@code{defmacro*} (@pxref{Argument Lists,,,cl,CL Manual}), and -@code{define-overloadable-function} (see the commentary in +@code{defun} and @code{defmacro}; also @code{cl-defun} and +@code{cl-defmacro} (@pxref{Argument Lists,,,cl,Common Lisp Extensions}), +and @code{define-overloadable-function} (see the commentary in @file{mode-local.el}). @item Definitions for major or minor modes: From aec5e6f9fe9054003a3c985163493196ba133955 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 31 Oct 2012 17:00:13 -0400 Subject: [PATCH 087/165] * doc/lispref/lists.texi (Sets And Lists): Point xref to better location. --- doc/lispref/ChangeLog | 2 ++ doc/lispref/lists.texi | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index d7f33a462c1..8453998e98f 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,5 +1,7 @@ 2012-10-31 Glenn Morris + * lists.texi (Sets And Lists): Point xref to better location. + * errors.texi (Standard Errors): * loading.texi (Autoload): Update for cl-lib namespace changes. diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi index 09948caaa13..458db838177 100644 --- a/doc/lispref/lists.texi +++ b/doc/lispref/lists.texi @@ -1275,7 +1275,8 @@ functions for sets include @code{memq} and @code{delq}, and their @b{Common Lisp note:} Common Lisp has functions @code{union} (which avoids duplicate elements) and @code{intersection} for set operations. Although standard GNU Emacs Lisp does not have them, the @file{cl-lib} -library provides versions. @xref{Top,, Overview, cl, Common Lisp Extensions}. +library provides versions. +@xref{Lists as Sets,,, cl, Common Lisp Extensions}. @end quotation @defun memq object list From 88390adf4088a332a4c0c9659b3cc3ae87eef30a Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 31 Oct 2012 17:00:57 -0400 Subject: [PATCH 088/165] * doc/lispref/control.texi (Catch and Throw): Add xref to cl.texi. --- doc/lispref/ChangeLog | 2 ++ doc/lispref/control.texi | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 8453998e98f..da3cc91a675 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,5 +1,7 @@ 2012-10-31 Glenn Morris + * control.texi (Catch and Throw): Add xref to cl.texi. + * lists.texi (Sets And Lists): Point xref to better location. * errors.texi (Standard Errors): diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 25a7655b7b8..cf393b59c49 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -578,7 +578,8 @@ that throw back to the editor command loop (@pxref{Recursive Editing}). @b{Common Lisp note:} Most other versions of Lisp, including Common Lisp, have several ways of transferring control nonsequentially: @code{return}, @code{return-from}, and @code{go}, for example. Emacs Lisp has only -@code{throw}. +@code{throw}. The @file{cl-lib} library provides versions of some of +these. @xref{Blocks and Exits,,,cl,Common Lisp Extensions}. @end quotation @defspec catch tag body@dots{} From dd90fd1a45ddef772b52f67a89648be787c05dd5 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 31 Oct 2012 17:02:51 -0400 Subject: [PATCH 089/165] Trivial ert.texi update for cl-lib namespace * doc/misc/ert.texi (Introduction, The @code{should} Macro): Refer to "cl-assert" rather than "assert". --- doc/misc/ChangeLog | 3 +++ doc/misc/ert.texi | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 11fe77ea471..b77147fb0d7 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,5 +1,8 @@ 2012-10-31 Glenn Morris + * ert.texi (Introduction, The @code{should} Macro): + Refer to "cl-assert" rather than "assert". + * cl.texi (Function Bindings): Update for cl-flet and cl-labels. (Obsolete Lexical Binding): Rename section from "Lexical Bindings". (Obsolete Macros): Rename section from "Obsolete Lexical Macros". diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi index b357b3d5e67..b585b68daa8 100644 --- a/doc/misc/ert.texi +++ b/doc/misc/ert.texi @@ -130,7 +130,7 @@ familiar: This example defines a test named @code{pp-test-quote} that will pass if the three calls to @code{equal} all return true (non-nil). -@code{should} is a macro with the same meaning as @code{assert} but +@code{should} is a macro with the same meaning as @code{cl-assert} but better error reporting. @xref{The @code{should} Macro}. Each test should have a name that describes what functionality it tests. @@ -342,7 +342,7 @@ to find where a test was defined if the test was loaded from a file. Test bodies can include arbitrary code; but to be useful, they need to check whether the code being tested (or @emph{code under test}) does what it is supposed to do. The macro @code{should} is similar to -@code{assert} from the cl package +@code{cl-assert} from the cl package (@pxref{Assertions,,, cl, Common Lisp Extensions}), but analyzes its argument form and records information that ERT can display to help debugging. From 87b0d8b1d1ca858c76afa23e4a936bdd9fd8c2e1 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 31 Oct 2012 17:04:28 -0400 Subject: [PATCH 090/165] * doc/misc/cl.texi (Modify Macros, Function Bindings): Add some xrefs. --- doc/misc/ChangeLog | 1 + doc/misc/cl.texi | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index b77147fb0d7..29d8792ce6b 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -7,6 +7,7 @@ (Obsolete Lexical Binding): Rename section from "Lexical Bindings". (Obsolete Macros): Rename section from "Obsolete Lexical Macros". Reword, and add details of flet and labels. + (Modify Macros, Function Bindings): Add some xrefs. 2012-10-30 Glenn Morris diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 10735420534..d0ca78e55ee 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -1193,6 +1193,9 @@ The only exceptions are plain variables and calls to bound on entry, it is simply made unbound by @code{makunbound} or @code{fmakunbound} on exit. @end ignore + +Note that the @file{cl.el} version of this macro behaves slightly +differently. @xref{Obsolete Macros}. @end defmac @defmac cl-letf* (bindings@dots{}) forms@dots{} @@ -1283,11 +1286,13 @@ accordingly for the duration of the body of the @code{cl-flet}; then the old function definition, or lack thereof, is restored. You can use @code{cl-flet} to disable or modify the behavior of a -function in a temporary fashion. This will even work on Emacs -primitives, although note that some calls to primitive functions -internal to Emacs are made without going through the symbol's -function cell, and so will not be affected by @code{cl-flet}. For -example, +function in a temporary fashion. (Compare this with the idea +of advising functions. +@xref{Advising Functions,,,elisp,GNU Emacs Lisp Reference Manual}.) +This will even work on Emacs primitives, although note that some calls +to primitive functions internal to Emacs are made without going +through the symbol's function cell, and so will not be affected by +@code{cl-flet}. For example, @example (cl-flet ((message (&rest args) (push args saved-msgs))) @@ -1307,6 +1312,9 @@ Functions defined by @code{cl-flet} may use the full Common Lisp argument notation supported by @code{cl-defun}; also, the function body is enclosed in an implicit block as if by @code{cl-defun}. @xref{Program Structure}. + +Note that the @file{cl.el} version of this macro behaves slightly +differently. @xref{Obsolete Macros}. @end defmac @defmac cl-labels (bindings@dots{}) forms@dots{} @@ -1327,6 +1335,9 @@ local recursive functions, or mutually-recursive sets of functions. A ``reference'' to a function name is either a call to that function, or a use of its name quoted by @code{quote} or @code{function} to be passed on to, say, @code{mapcar}. + +Note that the @file{cl.el} version of this macro behaves slightly +differently. @xref{Obsolete Macros}. @end defmac @node Macro Bindings From df43dd5361372fffb5d1618228a9c6a55db96169 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 31 Oct 2012 21:44:50 -0400 Subject: [PATCH 091/165] * doc/misc/cl.texi: General copyedits for style, line-breaks, etc. Replace "..." by @dots; car by @sc{car}, etc. --- doc/misc/ChangeLog | 4 + doc/misc/cl.texi | 235 +++++++++++++++++++++++---------------------- 2 files changed, 123 insertions(+), 116 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 29d8792ce6b..38dcdf507c4 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,7 @@ +2012-11-01 Glenn Morris + + * cl.texi: General copyedits for style, line-breaks, etc. + 2012-10-31 Glenn Morris * ert.texi (Introduction, The @code{should} Macro): diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index d0ca78e55ee..392ee61be51 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -54,27 +54,29 @@ developing GNU and promoting software freedom.'' @end ifnottex @menu -* Overview:: Basics, usage, etc. -* Program Structure:: Arglists, @code{cl-eval-when}, @code{defalias}. -* Predicates:: @code{cl-typep} and @code{cl-equalp}. -* Control Structure:: @code{cl-do}, @code{cl-loop}, etc. -* Macros:: Destructuring, @code{cl-define-compiler-macro}. +* Overview:: Basics, usage, organization, naming conventions. +* Program Structure:: Arglists, @code{cl-eval-when}. +* Predicates:: Type predicates and equality predicates. +* Control Structure:: Assignment, conditionals, blocks, looping. +* Macros:: Destructuring, compiler macros. * Declarations:: @code{cl-proclaim}, @code{cl-declare}, etc. -* Symbols:: Property lists, @code{cl-gensym}. +* Symbols:: Property lists, creating symbols. * Numbers:: Predicates, functions, random numbers. * Sequences:: Mapping, functions, searching, sorting. -* Lists:: @code{cl-caddr}, @code{cl-sublis}, @code{cl-member}, @code{cl-assoc}, etc. +* Lists:: Functions, substitution, sets, associations. * Structures:: @code{cl-defstruct}. -* Assertions:: @code{cl-check-type}, @code{cl-assert}. - -* Efficiency Concerns:: Hints and techniques. -* Common Lisp Compatibility:: All known differences with Steele. -* Porting Common Lisp:: Hints for porting Common Lisp code. -* Obsolete Features:: Obsolete features. +* Assertions:: Assertions and type checking. +Appendices +* Efficiency Concerns:: Hints and techniques. +* Common Lisp Compatibility:: All known differences with Steele. +* Porting Common Lisp:: Hints for porting Common Lisp code. +* Obsolete Features:: Obsolete features. * GNU Free Documentation License:: The license for this documentation. -* Function Index:: -* Variable Index:: + +Indexes +* Function Index:: An entry for each documented function. +* Variable Index:: An entry for each documented variable. @end menu @node Overview @@ -93,9 +95,9 @@ As Emacs Lisp programmers have grown in number, and the applications they write have grown more ambitious, it has become clear that Emacs Lisp could benefit from many of the conveniences of Common Lisp. -The @code{CL} package adds a number of Common Lisp functions and +The @dfn{CL} package adds a number of Common Lisp functions and control structures to Emacs Lisp. While not a 100% complete -implementation of Common Lisp, @code{CL} adds enough functionality +implementation of Common Lisp, it adds enough functionality to make Emacs Lisp programming significantly more convenient. Some Common Lisp features have been omitted from this package @@ -111,8 +113,7 @@ examples of this group. Other features cannot be implemented without modification to the Emacs Lisp interpreter itself, such as multiple return values, case-insensitive symbols, and complex numbers. -The @code{CL} package generally makes no attempt to emulate these -features. +This package generally makes no attempt to emulate these features. @end itemize @@ -124,18 +125,18 @@ impact on the rest of the Emacs environment. Stefan Monnier added the file @file{cl-lib.el} and rationalized the namespace for Emacs 24.3. @menu -* Usage:: How to use the CL package. +* Usage:: How to use this package. * Organization:: The package's component files. -* Naming Conventions:: Notes on CL function names. +* Naming Conventions:: Notes on function names. @end menu @node Usage @section Usage @noindent -The @code{CL} package is distributed with Emacs, so there is no need +This package is distributed with Emacs, so there is no need to install any additional files in order to start using it. Lisp code -that uses features from the @code{CL} package should simply include at +that uses features from this package should simply include at the beginning: @example @@ -144,7 +145,7 @@ the beginning: @noindent You may wish to add such a statement to your init file, if you -make frequent use of CL features. +make frequent use of features from this package. @node Organization @section Organization @@ -183,17 +184,17 @@ will take care of pulling in the other files when they are needed. There is another file, @file{cl.el}, which was the main entry point to -the CL package prior to Emacs 24.3. Nowadays, it is replaced by +this package prior to Emacs 24.3. Nowadays, it is replaced by @file{cl-lib.el}. The two provide the same features (in most cases), but use different function names (in fact, @file{cl.el} mainly just defines aliases to the @file{cl-lib.el} definitions). Where @file{cl-lib.el} defines a function called, for example, @code{cl-incf}, @file{cl.el} uses the same name but without the -@samp{cl-} prefix, e.g. @code{incf} in this example. There are a few +@samp{cl-} prefix, e.g.@: @code{incf} in this example. There are a few exceptions to this. First, functions such as @code{cl-defun} where the unprefixed version was already used for a standard Emacs Lisp function. In such cases, the @file{cl.el} version adds a @samp{*} -suffix, e.g. @code{defun*}. Second, there are some obsolete features +suffix, e.g.@: @code{defun*}. Second, there are some obsolete features that are only implemented in @file{cl.el}, not in @file{cl-lib.el}, because they are replaced by other standard Emacs Lisp features. Finally, in a very few cases the old @file{cl.el} versions do not @@ -210,7 +211,7 @@ There is no such restriction on the use of @code{cl-lib}. New code should use @code{cl-lib} rather than @code{cl}. There is one more file, @file{cl-compat.el}, which defines some -routines from the older Quiroz CL package that are not otherwise +routines from the older Quiroz @file{cl.el} package that are not otherwise present in the new package. This file is obsolete and should not be used in new code. @@ -224,42 +225,44 @@ names that are those of Common Lisp plus a @samp{cl-} prefix. Internal function and variable names in the package are prefixed by @code{cl--}. Here is a complete list of functions prefixed by -@code{cl-} that were not taken from Common Lisp: +@code{cl-} that were @emph{not} taken from Common Lisp: @example -cl-callf cl-callf2 cl-defsubst -cl-floatp-safe cl-letf cl-letf* +cl-callf cl-callf2 cl-defsubst +cl-floatp-safe cl-letf cl-letf* @end example +@c This is not uninteresting I suppose, but is of zero practical relevance +@c to the user, and seems like a hostage to changing implementation details. The following simple functions and macros are defined in @file{cl-lib.el}; they do not cause other components like @file{cl-extra} to be loaded. @example -cl-floatp-safe cl-endp -cl-evenp cl-oddp cl-plusp cl-minusp -cl-caaar .. cl-cddddr -cl-list* cl-ldiff cl-rest cl-first .. cl-tenth -cl-copy-list cl-subst cl-mapcar [2] -cl-adjoin [3] cl-acons cl-pairlis -cl-pushnew [3,4] cl-incf [4] cl-decf [4] -cl-proclaim cl-declaim +cl-evenp cl-oddp cl-minusp +cl-plusp cl-floatp-safe cl-endp +cl-copy-list cl-list* cl-ldiff +cl-rest cl-decf [1] cl-incf [1] +cl-acons cl-adjoin [2] cl-pairlis +cl-pushnew [1,2] cl-declaim cl-proclaim +cl-caaar@dots{}cl-cddddr cl-first@dots{}cl-tenth +cl-subst cl-mapcar [3] @end example @noindent -[2] Only for one sequence argument or two list arguments. +[1] Only when @var{place} is a plain variable name. @noindent -[3] Only if @code{:test} is @code{eq}, @code{equal}, or unspecified, +[2] Only if @code{:test} is @code{eq}, @code{equal}, or unspecified, and @code{:key} is not used. @noindent -[4] Only when @var{place} is a plain variable name. +[3] Only for one sequence argument or two list arguments. @node Program Structure @chapter Program Structure @noindent -This section describes features of the @code{CL} package that have to +This section describes features of this package that have to do with programs as a whole: advanced argument lists for functions, and the @code{cl-eval-when} construct. @@ -283,14 +286,14 @@ this package to implement Common Lisp argument lists seamlessly. Instead, this package defines alternates for several Lisp forms which you must use if you need Common Lisp argument lists. -@defmac cl-defun name arglist body... +@defmac cl-defun name arglist body@dots{} This form is identical to the regular @code{defun} form, except that @var{arglist} is allowed to be a full Common Lisp argument list. Also, the function body is enclosed in an implicit block called @var{name}; @pxref{Blocks and Exits}. @end defmac -@defmac cl-defsubst name arglist body... +@defmac cl-defsubst name arglist body@dots{} This is just like @code{cl-defun}, except that the function that is defined is automatically proclaimed @code{inline}, i.e., calls to it may be expanded into in-line code by the byte compiler. @@ -302,7 +305,7 @@ arranges for the processing of keyword arguments, default values, etc., to be done at compile-time whenever possible. @end defmac -@defmac cl-defmacro name arglist body... +@defmac cl-defmacro name arglist body@dots{} This is identical to the regular @code{defmacro} form, except that @var{arglist} is allowed to be a full Common Lisp argument list. The @code{&environment} keyword is supported as @@ -324,7 +327,7 @@ in this package that include @var{arglist}s in their syntax allow full Common Lisp argument lists. Note that it is @emph{not} necessary to use @code{cl-defun} in -order to have access to most @code{CL} features in your function. +order to have access to most CL features in your function. These features are always present; @code{cl-defun}'s only difference from @code{defun} is its more flexible argument lists and its implicit block. @@ -332,11 +335,11 @@ lists and its implicit block. The full form of a Common Lisp argument list is @example -(@var{var}... - &optional (@var{var} @var{initform} @var{svar})... +(@var{var}@dots{} + &optional (@var{var} @var{initform} @var{svar})@dots{} &rest @var{var} - &key ((@var{keyword} @var{var}) @var{initform} @var{svar})... - &aux (@var{var} @var{initform})...) + &key ((@var{keyword} @var{var}) @var{initform} @var{svar})@dots{} + &aux (@var{var} @var{initform})@dots{}) @end example Each of the five argument list sections is optional. The @var{svar}, @@ -426,11 +429,11 @@ function uses both @code{&rest} and @code{&key} at the same time, the ``rest'' argument is bound to the keyword list as it appears in the call. For example: -@smallexample +@example (cl-defun find-thing (thing &rest rest &key need &allow-other-keys) (or (apply 'cl-member thing thing-list :allow-other-keys t rest) (if need (error "Thing not found")))) -@end smallexample +@end example @noindent This function takes a @code{:need} keyword argument, but also @@ -467,7 +470,7 @@ For example: @example (cl-defmacro dolist ((var listform &optional resultform) &rest body) - ...) + @dots{}) @end example This says that the first argument of @code{dolist} must be a list @@ -506,7 +509,7 @@ For example, the compiler effectively evaluates @code{defmacro} forms at compile-time so that later parts of the file can refer to the macros that are defined. -@defmac cl-eval-when (situations...) forms... +@defmac cl-eval-when (situations@dots{}) forms@dots{} This form controls when the body @var{forms} are evaluated. The @var{situations} list may contain any set of the symbols @code{compile}, @code{load}, and @code{eval} (or their long-winded @@ -588,7 +591,7 @@ The other form, @code{(eval-and-compile @dots{})}, is exactly equivalent to @samp{(cl-eval-when (compile load eval) @dots{})} and so is not itself defined by this package. -@defmac eval-when-compile forms... +@defmac eval-when-compile forms@dots{} The @var{forms} are evaluated at compile-time; at execution time, this form acts like a quoted constant of the resulting value. Used at top-level, @code{eval-when-compile} is just like @samp{eval-when @@ -636,7 +639,7 @@ Byte-compiled, the above defun will result in the following code (insert "This function was executed on: " (current-time-string) ", compiled on: " - '"Wed Jun 23 18:33:43 1993" + '"Wed Oct 31 16:32:28 2012" ", and loaded on: " --temp--)) @end example @@ -748,13 +751,13 @@ floats. In all other circumstances, @code{cl-coerce} signals an error. @end defun -@defmac cl-deftype name arglist forms... +@defmac cl-deftype name arglist forms@dots{} This macro defines a new type called @var{name}. It is similar to @code{defmacro} in many ways; when @var{name} is encountered as a type name, the body @var{forms} are evaluated and should return a type specifier that is equivalent to the type. The @var{arglist} is a Common Lisp argument list of the sort accepted -by @code{cl-defmacro}. The type specifier @samp{(@var{name} @var{args}...)} +by @code{cl-defmacro}. The type specifier @samp{(@var{name} @var{args}@dots{})} is expanded by calling the expander with those arguments; the type symbol @samp{@var{name}} is expanded by calling the expander with no arguments. The @var{arglist} is processed the same as for @@ -873,7 +876,7 @@ provides an even more convenient way to swap two variables; A @dfn{generalized variable} or @dfn{place form} is one of the many places in Lisp memory where values can be stored. The simplest place -form is a regular Lisp variable. But the cars and cdrs of lists, +form is a regular Lisp variable. But the @sc{car}s and @sc{cdr}s of lists, elements of arrays, properties of symbols, and many other locations are also places where Lisp values are stored. For basic information, @pxref{Generalized Variables,,,elisp,GNU Emacs Lisp Reference Manual}. @@ -888,17 +891,17 @@ generalized variables. @node Setf Extensions @subsection Setf Extensions -Several standard (e.g. @code{car}) and Emacs-specific -(e.g. @code{window-point}) Lisp functions are @code{setf}-able by default. +Several standard (e.g.@: @code{car}) and Emacs-specific +(e.g.@: @code{window-point}) Lisp functions are @code{setf}-able by default. This package defines @code{setf} handlers for several additional functions: @itemize @item -Functions from @code{CL} itself: -@smallexample -cl-caaar .. cl-cddddr cl-first .. cl-tenth -cl-rest cl-get cl-getf cl-subseq -@end smallexample +Functions from this package: +@example +cl-rest cl-subseq cl-get cl-getf +cl-caaar@dots{}cl-cddddr cl-first@dots{}cl-tenth +@end example @noindent Note that for @code{cl-getf} (as for @code{nthcdr}), the list argument @@ -906,7 +909,7 @@ of the function must itself be a valid @var{place} form. @item General Emacs Lisp functions: -@smallexample +@example buffer-file-name getenv buffer-modified-p global-key-binding buffer-name local-key-binding @@ -932,7 +935,7 @@ frame-parameters window-width frame-visible-p x-get-secondary-selection frame-width x-get-selection get-register -@end smallexample +@end example Most of these have directly corresponding ``set'' functions, like @code{use-local-map} for @code{current-local-map}, or @code{goto-char} @@ -1146,7 +1149,7 @@ For example, @example (cl-letf (((point) (point-min)) (a 17)) - ...) + @dots{}) @end example @noindent @@ -1486,7 +1489,7 @@ simply returning @code{nil}. @defmac cl-typecase keyform clause@dots{} This macro is a version of @code{cl-case} that checks for types rather than values. Each @var{clause} is of the form -@samp{(@var{type} @var{body}...)}. @xref{Type Predicates}, +@samp{(@var{type} @var{body}@dots{})}. @xref{Type Predicates}, for a description of type specifiers. For example, @example @@ -1499,7 +1502,7 @@ for a description of type specifiers. For example, The type specifier @code{t} matches any type of object; the word @code{otherwise} is also allowed. To make one clause match any of -several types, use an @code{(or ...)} type specifier. +several types, use an @code{(or @dots{})} type specifier. @end defmac @defmac cl-etypecase keyform clause@dots{} @@ -1582,7 +1585,7 @@ looping constructs to complement Emacs Lisp's basic @code{while} loop. @defmac cl-loop forms@dots{} -The @code{CL} package supports both the simple, old-style meaning of +This package supports both the simple, old-style meaning of @code{loop} and the extremely powerful and flexible feature known as the @dfn{Loop Facility} or @dfn{Loop Macro}. This more advanced facility is discussed in the following section; @pxref{Loop Facility}. @@ -2004,7 +2007,7 @@ at run-time, this is somewhat less efficient than @code{in} or the successive indices (starting at 0) of the elements. This clause type is taken from older versions of the @code{loop} macro, -and is not present in modern Common Lisp. The @samp{using (sequence ...)} +and is not present in modern Common Lisp. The @samp{using (sequence @dots{})} term of the older macros is not supported. @item for @var{var} being the elements of-ref @var{sequence} @@ -2036,7 +2039,7 @@ Due to a minor implementation restriction, it will not work to have more than one @code{for} clause iterating over symbols, hash tables, keymaps, overlays, or intervals in a given @code{cl-loop}. Fortunately, it would rarely if ever be useful to do so. It @emph{is} valid to mix -one of these types of clauses with other clauses like @code{for ... to} +one of these types of clauses with other clauses like @code{for @dots{} to} or @code{while}. @item for @var{var} being the hash-keys of @var{hash-table} @@ -2073,7 +2076,7 @@ This clause iterates over all key sequences defined by @var{keymap} and its nested keymaps, where @var{var} takes on values which are vectors. The strings or vectors are reused for each iteration, so you must copy them if you wish to keep -them permanently. You can add a @samp{using (key-bindings ...)} +them permanently. You can add a @samp{using (key-bindings @dots{})} clause to get the command bindings as well. @item for @var{var} being the overlays [of @var{buffer}] @dots{} @@ -2120,8 +2123,8 @@ and successive iterations it will be set by evaluating @var{expr2} these two loops are effectively the same: @example -(cl-loop for x on my-list by 'cddr do ...) -(cl-loop for x = my-list then (cddr x) while x do ...) +(cl-loop for x on my-list by 'cddr do @dots{}) +(cl-loop for x = my-list then (cddr x) while x do @dots{}) @end example Note that this type of @code{for} clause does not imply any sort @@ -2200,8 +2203,8 @@ This clause simply counts up to the specified number using an internal temporary variable. The loops @example -(cl-loop repeat (1+ n) do ...) -(cl-loop for temp to n do ...) +(cl-loop repeat (1+ n) do @dots{}) +(cl-loop for temp to n do @dots{}) @end example @noindent @@ -2327,9 +2330,9 @@ otherwise leaves the variable alone during the loop. The following loops are basically equivalent: @example -(cl-loop with x = 17 do ...) -(let ((x 17)) (cl-loop do ...)) -(cl-loop for x = 17 then x do ...) +(cl-loop with x = 17 do @dots{}) +(let ((x 17)) (cl-loop do @dots{})) +(cl-loop for x = 17 then x do @dots{}) @end example Naturally, the variable @var{var} might be used for some purpose @@ -2408,7 +2411,7 @@ This clause gives a name other than @code{nil} to the implicit block surrounding the loop. The @var{name} is the symbol to be used as the block name. -@item initially [do] @var{forms}... +@item initially [do] @var{forms}@dots{} This keyword introduces one or more Lisp forms which will be executed before the loop itself begins (but after any variables requested by @code{for} or @code{with} have been bound to their @@ -2416,7 +2419,7 @@ initial values). @code{initially} clauses can appear anywhere; if there are several, they are executed in the order they appear in the loop. The keyword @code{do} is optional. -@item finally [do] @var{forms}... +@item finally [do] @var{forms}@dots{} This introduces Lisp forms which will be executed after the loop finishes (say, on request of a @code{for} or @code{while}). @code{initially} and @code{finally} clauses may appear anywhere @@ -2431,7 +2434,7 @@ return @code{nil}.) Variables bound by @code{for}, @code{with}, or @code{into} will still contain their final values when @var{form} is executed. -@item do @var{forms}... +@item do @var{forms}@dots{} The word @code{do} may be followed by any number of Lisp expressions which are executed as an implicit @code{progn} in the body of the loop. Many of the examples in this section illustrate the use of @@ -2608,7 +2611,7 @@ is evaluated and thus should normally be quoted. This macro is like @code{cl-proclaim}, except that it takes any number of @var{decl-spec} arguments, and the arguments are unevaluated and unquoted. The @code{cl-declaim} macro also puts an @code{(cl-eval-when -(compile load eval) ...)} around the declarations so that they will +(compile load eval) @dots{})} around the declarations so that they will be registered at compile-time as well as at run-time. (This is vital, since normally the declarations are meant to influence the way the compiler treats the rest of the file that contains the @code{cl-declaim} @@ -2691,7 +2694,7 @@ and declare it inline all at once. (cl-declaim (inline foo bar)) (cl-eval-when (compile load eval) (cl-proclaim '(inline foo bar))) -(defsubst foo (...) ...) ; instead of defun +(defsubst foo (@dots{}) @dots{}) ; instead of defun @end example @strong{Please note:} this declaration remains in effect after the @@ -2826,7 +2829,7 @@ list that corresponds to @var{property}, or to cons a new property-value pair onto the list if the property is not yet present. @example -(put sym prop val) @equiv{} (setf (cl-getf (symbol-plist sym) prop) val) +(put sym prop val) @equiv{} (setf (cl-getf (symbol-plist sym) prop) val) @end example The @code{get} and @code{cl-get} functions are also @code{setf}-able. @@ -3180,9 +3183,9 @@ Emacs Lisp includes a few of these, notably @code{elt} and @menu * Sequence Basics:: Arguments shared by all sequence functions. -* Mapping over Sequences:: @code{cl-mapcar}, @code{cl-mapcan}, @code{cl-map}, @code{cl-every}, etc. +* Mapping over Sequences:: @code{cl-mapcar}, @code{cl-map}, @code{cl-maplist}, etc. * Sequence Functions:: @code{cl-subseq}, @code{cl-remove}, @code{cl-substitute}, etc. -* Searching Sequences:: @code{cl-find}, @code{cl-position}, @code{cl-count}, @code{cl-search}, etc. +* Searching Sequences:: @code{cl-find}, @code{cl-count}, @code{cl-search}, etc. * Sorting Sequences:: @code{cl-sort}, @code{cl-stable-sort}, @code{cl-merge}. @end menu @@ -3198,7 +3201,7 @@ The @code{:key} argument should be passed either @code{nil}, or a function of one argument. This key function is used as a filter through which the elements of the sequence are seen; for example, @code{(cl-find x y :key 'car)} is similar to @code{(cl-assoc x y)}: -It searches for an element of the list whose @code{car} equals +It searches for an element of the list whose @sc{car} equals @code{x}, rather than for an element which equals @code{x} itself. If @code{:key} is omitted or @code{nil}, the filter is effectively the identity function. @@ -3300,11 +3303,11 @@ thrown away and @code{cl-map} returns @code{nil}). @defun cl-maplist function list &rest more-lists This function calls @var{function} on each of its argument lists, -then on the @code{cdr}s of those lists, and so on, until the +then on the @sc{cdr}s of those lists, and so on, until the shortest list runs out. The results are returned in the form of a list. Thus, @code{cl-maplist} is like @code{cl-mapcar} except that it passes in the list pointers themselves rather than the -@code{car}s of the advancing pointers. +@sc{car}s of the advancing pointers. @end defun @defun cl-mapc function seq &rest more-seqs @@ -3630,7 +3633,7 @@ simple accessor though, it's used heavily in the current implementation. The @code{cl-sort} function is destructive; it sorts lists by actually -rearranging the @code{cdr} pointers in suitable fashion. +rearranging the @sc{cdr} pointers in suitable fashion. @end defun @defun cl-stable-sort seq predicate @t{&key :key} @@ -3670,7 +3673,7 @@ The functions described here operate on lists. * List Functions:: @code{cl-caddr}, @code{cl-first}, @code{cl-list*}, etc. * Substitution of Expressions:: @code{cl-subst}, @code{cl-sublis}, etc. * Lists as Sets:: @code{cl-member}, @code{cl-adjoin}, @code{cl-union}, etc. -* Association Lists:: @code{cl-assoc}, @code{cl-rassoc}, @code{cl-acons}, @code{cl-pairlis}. +* Association Lists:: @code{cl-assoc}, @code{cl-acons}, @code{cl-pairlis}, etc. @end menu @node List Functions @@ -3708,14 +3711,14 @@ for @code{null}. @defun cl-list-length x This function returns the length of list @var{x}, exactly like @code{(length @var{x})}, except that if @var{x} is a circular -list (where the cdr-chain forms a loop rather than terminating +list (where the @sc{cdr}-chain forms a loop rather than terminating with @code{nil}), this function returns @code{nil}. (The regular @code{length} function would get stuck if given a circular list.) @end defun @defun cl-list* arg &rest others This function constructs a list of its arguments. The final -argument becomes the @code{cdr} of the last cell constructed. +argument becomes the @sc{cdr} of the last cell constructed. Thus, @code{(cl-list* @var{a} @var{b} @var{c})} is equivalent to @code{(cons @var{a} (cons @var{b} @var{c}))}, and @code{(cl-list* @var{a} @var{b} nil)} is equivalent to @@ -3742,8 +3745,8 @@ dotted lists like @code{(1 2 . 3)} correctly. This function returns a copy of the tree of cons cells @var{x}. @c FIXME? cl-copy-list is not an alias of copy-sequence. Unlike @code{copy-sequence} (and its alias @code{cl-copy-list}), -which copies only along the @code{cdr} direction, this function -copies (recursively) along both the @code{car} and the @code{cdr} +which copies only along the @sc{cdr} direction, this function +copies (recursively) along both the @sc{car} and the @sc{cdr} directions. If @var{x} is not a cons cell, the function simply returns @var{x} unchanged. If the optional @var{vecp} argument is true, this function copies vectors (recursively) as well as @@ -3752,7 +3755,7 @@ cons cells. @defun cl-tree-equal x y @t{&key :test :test-not :key} This function compares two trees of cons cells. If @var{x} and -@var{y} are both cons cells, their @code{car}s and @code{cdr}s are +@var{y} are both cons cells, their @sc{car}s and @sc{cdr}s are compared recursively. If neither @var{x} nor @var{y} is a cons cell, they are compared by @code{eql}, or according to the specified test. The @code{:key} function, if specified, is @@ -3773,7 +3776,7 @@ in @var{tree}, a tree of cons cells. It returns a substituted tree, which will be a copy except that it may share storage with the argument @var{tree} in parts where no substitutions occurred. The original @var{tree} is not modified. This function recurses -on, and compares against @var{old}, both @code{car}s and @code{cdr}s +on, and compares against @var{old}, both @sc{car}s and @sc{cdr}s of the component cons cells. If @var{old} is itself a cons cell, then matching cells in the tree are substituted as usual without recursively substituting in that cell. Comparisons with @var{old} @@ -3799,9 +3802,9 @@ The @code{cl-subst-if}, @code{cl-subst-if-not}, @code{cl-nsubst-if}, and This function is like @code{cl-subst}, except that it takes an association list @var{alist} of @var{old}-@var{new} pairs. Each element of the tree (after applying the @code{:key} -function, if any), is compared with the @code{car}s of +function, if any), is compared with the @sc{car}s of @var{alist}; if it matches, it is replaced by the corresponding -@code{cdr}. +@sc{cdr}. @end defun @defun cl-nsublis alist tree @t{&key :test :test-not :key} @@ -3817,7 +3820,7 @@ of elements. @defun cl-member item list @t{&key :test :test-not :key} This function searches @var{list} for an element matching @var{item}. -If a match is found, it returns the cons cell whose @code{car} was +If a match is found, it returns the cons cell whose @sc{car} was the matching element. Otherwise, it returns @code{nil}. Elements are compared by @code{eql} by default; you can use the @code{:test}, @code{:test-not}, and @code{:key} arguments to modify this behavior. @@ -3836,7 +3839,7 @@ analogously search for elements which satisfy a given predicate. @defun cl-tailp sublist list This function returns @code{t} if @var{sublist} is a sublist of @var{list}, i.e., if @var{sublist} is @code{eql} to @var{list} or to -any of its @code{cdr}s. +any of its @sc{cdr}s. @end defun @defun cl-adjoin item list @t{&key :test :test-not :key} @@ -3916,7 +3919,7 @@ cells is an association list. @defun cl-assoc item a-list @t{&key :test :test-not :key} This function searches the association list @var{a-list} for an -element whose @code{car} matches (in the sense of @code{:test}, +element whose @sc{car} matches (in the sense of @code{:test}, @code{:test-not}, and @code{:key}, or by comparison with @code{eql}) a given @var{item}. It returns the matching element, if any, otherwise @code{nil}. It ignores elements of @var{a-list} which @@ -3927,7 +3930,7 @@ elements of @var{a-list} to be an error.) @end defun @defun cl-rassoc item a-list @t{&key :test :test-not :key} -This function searches for an element whose @code{cdr} matches +This function searches for an element whose @sc{cdr} matches @var{item}. If @var{a-list} represents a mapping, this applies the inverse of the mapping to @var{item}. @end defun @@ -4609,7 +4612,7 @@ for themselves, which the Emacs parser is incapable of reading. @item Other syntactic features. Common Lisp provides a number of notations beginning with @code{#} that the Emacs Lisp parser -won't understand. For example, @samp{#| ... |#} is an +won't understand. For example, @samp{#| @dots{} |#} is an alternate comment notation, and @samp{#+lucid (foo)} tells the parser to ignore the @code{(foo)} except in Lucid Common Lisp. @@ -4659,7 +4662,7 @@ While it would have been possible to implement most of Common Lisp @code{format} in this package (under the name @code{cl-format}, of course), it was not deemed worthwhile. It would have required a huge amount of code to implement even a decent subset of -@code{cl-format}, yet the functionality it would provide over +@code{format}, yet the functionality it would provide over Emacs Lisp's @code{format} would rarely be useful. @item @@ -4725,8 +4728,8 @@ where a more iteratively-minded programmer might write one of these forms: @example -(let ((total 0)) (dolist (x my-list) (cl-incf total x)) total) -(cl-loop for x in my-list sum x) +(let ((total 0)) (dolist (x my-list) (incf total x)) total) +(loop for x in my-list sum x) @end example While this would be mainly a stylistic choice in most Common Lisps, @@ -4888,7 +4891,7 @@ that @code{flet} affects indirect calls to a function as well as calls directly inside the @code{flet} form itself. @c Bug#411. -Note that many primitives (e.g. @code{+}) have special byte-compile +Note that many primitives (e.g.@: @code{+}) have special byte-compile handling. Attempts to redefine such functions using @code{flet} will fail if byte-compiled. @c Or cl-flet. @@ -4930,21 +4933,21 @@ to take a @var{place} argument followed by additional arguments described by @var{arglist}. The call @example -(@var{name} @var{place} @var{args}...) +(@var{name} @var{place} @var{args}@dots{}) @end example @noindent will be expanded to @example -(cl-callf @var{func} @var{place} @var{args}...) +(cl-callf @var{func} @var{place} @var{args}@dots{}) @end example @noindent which in turn is roughly equivalent to @example -(setf @var{place} (@var{func} @var{place} @var{args}...)) +(setf @var{place} (@var{func} @var{place} @var{args}@dots{})) @end example For example: From b4b096e4209b289cbb7a2a1d58422c0dd767ca7d Mon Sep 17 00:00:00 2001 From: Stephen Berman Date: Thu, 1 Nov 2012 10:25:08 +0800 Subject: [PATCH 092/165] Fix for gomoku-display-statistics. * play/gomoku.el (gomoku-display-statistics): Update mode line only if in Gomoku buffer; don't capitalize "won". Fixes: debbugs:12771 --- lisp/ChangeLog | 5 +++++ lisp/play/gomoku.el | 22 ++++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index dc928c35672..ab73a61d9e6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-11-01 Stephen Berman + + * play/gomoku.el (gomoku-display-statistics): Update mode line + only if in Gomoku buffer; don't capitalize "won" (Bug#12771). + 2012-10-31 Martin Rudalics * window.el (quit-restore-window): If the window has been diff --git a/lisp/play/gomoku.el b/lisp/play/gomoku.el index 3dba99d98d5..90f021ab265 100644 --- a/lisp/play/gomoku.el +++ b/lisp/play/gomoku.el @@ -1054,16 +1054,18 @@ If the game is finished, this command requests for another game." (defun gomoku-display-statistics () "Obnoxiously display some statistics about previous games in mode line." - ;; We store this string in the mode-line-process local variable. - ;; This is certainly not the cleanest way out ... - (setq mode-line-process - (format ": Won %d, lost %d%s" - gomoku-number-of-human-wins - gomoku-number-of-emacs-wins - (if (zerop gomoku-number-of-draws) - "" - (format ", drew %d" gomoku-number-of-draws)))) - (force-mode-line-update)) + ;; Update mode line only if Gomoku buffer is current (Bug#12771). + (when (string-equal (buffer-name) gomoku-buffer-name) + ;; We store this string in the mode-line-process local variable. + ;; This is certainly not the cleanest way out ... + (setq mode-line-process + (format ": won %d, lost %d%s" + gomoku-number-of-human-wins + gomoku-number-of-emacs-wins + (if (zerop gomoku-number-of-draws) + "" + (format ", drew %d" gomoku-number-of-draws)))) + (force-mode-line-update))) (defun gomoku-switch-to-window () "Find or create the Gomoku buffer, and display it." From 9f2881afe2d7b12ddf30c5e5c33073f647c763f9 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 1 Nov 2012 00:16:32 -0700 Subject: [PATCH 093/165] More edits for cl.texi * doc/misc/cl.texi: More copyedits, plus: (Time of Evaluation, Iteration): Add xref to Emacs Lisp manual. (Macro Bindings, Blocks and Exits): Acknowledge existence of lexical-binding. (Iteration): Mainly defer to doc of standard dolist, dotimes. --- doc/misc/ChangeLog | 4 +++ doc/misc/cl.texi | 89 +++++++++++++++++++++++----------------------- 2 files changed, 48 insertions(+), 45 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 38dcdf507c4..d719a02e32e 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,6 +1,10 @@ 2012-11-01 Glenn Morris * cl.texi: General copyedits for style, line-breaks, etc. + (Time of Evaluation, Iteration): Add xref to Emacs Lisp manual. + (Macro Bindings, Blocks and Exits): + Acknowledge existence of lexical-binding. + (Iteration): Mainly defer to doc of standard dolist, dotimes. 2012-10-31 Glenn Morris diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 392ee61be51..4a728049ce8 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -300,6 +300,7 @@ calls to it may be expanded into in-line code by the byte compiler. This is analogous to the @code{defsubst} form; @code{cl-defsubst} uses a different method (compiler macros) which works in all versions of Emacs, and also generates somewhat more +@c Really? efficient inline expansions. In particular, @code{cl-defsubst} arranges for the processing of keyword arguments, default values, etc., to be done at compile-time whenever possible. @@ -309,7 +310,8 @@ etc., to be done at compile-time whenever possible. This is identical to the regular @code{defmacro} form, except that @var{arglist} is allowed to be a full Common Lisp argument list. The @code{&environment} keyword is supported as -described in Steele. The @code{&whole} keyword is supported only +described in Steele's book @cite{Common Lisp, the Language}. +The @code{&whole} keyword is supported only within destructured lists (see below); top-level @code{&whole} cannot be implemented with the current Emacs Lisp interpreter. The macro expander body is enclosed in an implicit block called @@ -462,7 +464,7 @@ Argument lists support @dfn{destructuring}. In Common Lisp, destructuring is only allowed with @code{defmacro}; this package allows it with @code{cl-defun} and other argument lists as well. In destructuring, any argument variable (@var{var} in the above -diagram) can be replaced by a list of variables, or more generally, +example) can be replaced by a list of variables, or more generally, a recursive argument list. The corresponding argument value must be a list whose elements match this recursive argument list. For example: @@ -584,12 +586,12 @@ certain top-level forms, like @code{defmacro} (sort-of) and @end defmac Emacs includes two special forms related to @code{cl-eval-when}. +@xref{Eval During Compile,,,elisp,GNU Emacs Lisp Reference Manual}. One of these, @code{eval-when-compile}, is not quite equivalent to any @code{cl-eval-when} construct and is described below. The other form, @code{(eval-and-compile @dots{})}, is exactly -equivalent to @samp{(cl-eval-when (compile load eval) @dots{})} and -so is not itself defined by this package. +equivalent to @samp{(cl-eval-when (compile load eval) @dots{})}. @defmac eval-when-compile forms@dots{} The @var{forms} are evaluated at compile-time; at execution time, @@ -703,6 +705,7 @@ integers in the range from 0 to 255. @item The type symbol @code{float} uses the @code{cl-floatp-safe} predicate defined by this package rather than @code{floatp}, so it will work +@c FIXME are any such platforms still relevant? correctly even in Emacs versions without floating-point support. @item @@ -781,8 +784,8 @@ type specifier could be implemented if desired; this package does not implement @code{unsigned-byte} by default. @end defmac -The @code{cl-typecase} and @code{cl-check-type} macros also use type -names. @xref{Conditionals}. @xref{Assertions}. The @code{cl-map}, +The @code{cl-typecase} (@pxref{Conditionals}) and @code{cl-check-type} +(@pxref{Assertions}) macros also use type names. The @code{cl-map}, @code{cl-concatenate}, and @code{cl-merge} functions take type-name arguments to specify the type of sequence to return. @xref{Sequences}. @@ -1324,7 +1327,7 @@ differently. @xref{Obsolete Macros}. The @code{cl-labels} form is like @code{cl-flet}, except that the function bindings can be recursive. The scoping is lexical, but you can only capture functions in closures if -@code{lexical-binding} is non-@code{nil}. +@code{lexical-binding} is @code{t}. @xref{Closures,,,elisp,GNU Emacs Lisp Reference Manual}, and @ref{Using Lexical Binding,,,elisp,GNU Emacs Lisp Reference Manual}. @@ -1356,12 +1359,8 @@ arguments to @code{cl-defmacro} (i.e., a macro name, argument list, and macro-expander forms). The macro is defined accordingly for use within the body of the @code{cl-macrolet}. -@c FIXME this should be modified to say ``even when lexical-binding -@c is code{nil}'', but is that true? The doc of cl-macrolet just -@c refers us to cl-flet, which refers to cl-labels, which says that it -@c behaves differently according to whether l-b is true or not. -Because of the nature of macros, @code{cl-macrolet} is lexically -scoped even in Emacs Lisp: The @code{cl-macrolet} binding will +Because of the nature of macros, @code{cl-macrolet} is always lexically +scoped. The @code{cl-macrolet} binding will affect only calls that appear physically within the body @var{forms}, possibly after expansion of other macros in the body. @@ -1388,12 +1387,15 @@ I.e., @code{(setq foo 4)} in the above would be equivalent to Likewise, a @code{let} or @code{let*} binding a symbol macro is treated like a @code{cl-letf} or @code{cl-letf*}. This differs from true -@c FIXME does it work like this in Emacs with lexical-binding = t? Common Lisp, where the rules of lexical scoping cause a @code{let} -binding to shadow a @code{cl-symbol-macrolet} binding. In this package, -@c FIXME obsolete. -only @code{lexical-let} and @code{lexical-let*} will shadow a symbol -macro. +binding to shadow a @code{symbol-macrolet} binding. In this package, +such shadowing does not occur, even when @code{lexical-binding} is +@c See http://debbugs.gnu.org/12119 +@code{t}. (This behavior predates the addition of lexical binding to +Emacs Lisp, and may change in future to respect @code{lexical-binding}.) +At present in this package, only @code{lexical-let} and +@code{lexical-let*} will shadow a symbol macro. @xref{Obsolete +Lexical Binding}. There is no analogue of @code{defmacro} for symbol macros; all symbol macros are local. A typical use of @code{cl-symbol-macrolet} is in the @@ -1401,7 +1403,7 @@ expansion of another macro: @example (cl-defmacro my-dolist ((x list) &rest body) - (let ((var (gensym))) + (let ((var (cl-gensym))) (list 'cl-loop 'for var 'on list 'do (cl-list* 'cl-symbol-macrolet (list (list x (list 'car var))) @@ -1516,8 +1518,8 @@ simply returning @code{nil}. @noindent Common Lisp @dfn{blocks} provide a non-local exit mechanism very -similar to @code{catch} and @code{throw}, but lexically rather than -dynamically scoped. This package actually implements @code{cl-block} +similar to @code{catch} and @code{throw}, with lexical scoping. +This package actually implements @code{cl-block} in terms of @code{catch}; however, the lexical scoping allows the optimizing byte-compiler to omit the costly @code{catch} step if the body of the block does not actually @code{cl-return-from} the block. @@ -1532,11 +1534,12 @@ a @code{cl-return-from} occurs. The @code{cl-block}/@code{cl-return-from} mechanism is quite similar to the @code{catch}/@code{throw} mechanism. The main differences are that block @var{name}s are unevaluated symbols, rather than forms -(such as quoted symbols) which evaluate to a tag at run-time; and -also that blocks are lexically scoped whereas @code{catch}/@code{throw} -are dynamically scoped. This means that functions called from the -body of a @code{catch} can also @code{throw} to the @code{catch}, -but the @code{cl-return-from} referring to a block name must appear +(such as quoted symbols) that evaluate to a tag at run-time; and +also that blocks are always lexically scoped. +In a dynamically scoped @code{catch}, functions called from the +@code{catch} body can also @code{throw} to the @code{catch}. This +is not an option for @code{cl-block}, where +the @code{cl-return-from} referring to a block name must appear physically within the @var{forms} that make up the body of the block. They may not appear within other called functions, although they may appear within macro expansions or @code{lambda}s in the body. Block @@ -1546,20 +1549,20 @@ In true Common Lisp, @code{defun} and @code{defmacro} surround the function or expander bodies with implicit blocks with the same name as the function or macro. This does not occur in Emacs Lisp, but this package provides @code{cl-defun} and @code{cl-defmacro} -forms which do create the implicit block. +forms, which do create the implicit block. The Common Lisp looping constructs defined by this package, such as @code{cl-loop} and @code{cl-dolist}, also create implicit blocks just as in Common Lisp. -Because they are implemented in terms of Emacs Lisp @code{catch} +Because they are implemented in terms of Emacs Lisp's @code{catch} and @code{throw}, blocks have the same overhead as actual @code{catch} constructs (roughly two function calls). However, the optimizing byte compiler will optimize away the @code{catch} if the block does not in fact contain any @code{cl-return} or @code{cl-return-from} calls that jump to it. This means that @code{cl-do} loops and @code{cl-defun} -functions which don't use @code{cl-return} don't pay the overhead to +functions that don't use @code{cl-return} don't pay the overhead to support it. @end defmac @@ -1581,8 +1584,8 @@ themselves in @code{nil} blocks. @noindent The macros described here provide more sophisticated, high-level -looping constructs to complement Emacs Lisp's basic @code{while} -loop. +looping constructs to complement Emacs Lisp's basic loop forms +(@pxref{Iteration,,,elisp,GNU Emacs Lisp Reference Manual}). @defmac cl-loop forms@dots{} This package supports both the simple, old-style meaning of @@ -1646,7 +1649,7 @@ around the loop. If @var{init} is also omitted it defaults to in place of @samp{(@var{var})}, again following the analogy with @code{let}. -This example (from Steele) illustrates a loop which applies the +This example (from Steele) illustrates a loop that applies the function @code{f} to successive pairs of values from the lists @code{foo} and @code{bar}; it is equivalent to the call @code{(cl-mapcar 'f foo bar)}. Note that this loop has no body @@ -1683,23 +1686,19 @@ Here is another way to write the above loop: @end defmac @defmac cl-dolist (var list [result]) forms@dots{} -This is a more specialized loop which iterates across the elements -of a list. @var{list} should evaluate to a list; the body @var{forms} -are executed with @var{var} bound to each element of the list in -turn. Finally, the @var{result} form (or @code{nil}) is evaluated -with @var{var} bound to @code{nil} to produce the result returned by -the loop. Unlike with Emacs's built in @code{dolist}, the loop is -surrounded by an implicit @code{nil} block. +This is exactly like the standard Emacs Lisp macro @code{dolist}, +but surrounds the loop with an implicit @code{nil} block. @end defmac @defmac cl-dotimes (var count [result]) forms@dots{} -This is a more specialized loop which iterates a specified number -of times. The body is executed with @var{var} bound to the integers +This is exactly like the standard Emacs Lisp macro @code{dotimes}, +but surrounds the loop with an implicit @code{nil} block. +The body is executed with @var{var} bound to the integers from zero (inclusive) to @var{count} (exclusive), in turn. Then +@c FIXME lispref does not state this part explicitly, could move this there. the @code{result} form is evaluated with @var{var} bound to the total number of iterations that were done (i.e., @code{(max 0 @var{count})}) -to get the return value for the loop form. Unlike with Emacs's built in -@code{dolist}, the loop is surrounded by an implicit @code{nil} block. +to get the return value for the loop form. @end defmac @defmac cl-do-symbols (var [obarray [result]]) forms@dots{} @@ -1798,8 +1797,8 @@ break out of the loop.) The following sections give some examples of the Loop Macro in action, and describe the particular loop clauses in great detail. -Consult the second edition of Steele's @dfn{Common Lisp, the Language}, -for additional discussion and examples of the @code{loop} macro. +Consult the second edition of Steele for additional discussion +and examples of the @code{loop} macro. @node Loop Examples @subsection Loop Examples From 7a8d34f74e840bed818cc7f537fb1946bf91f062 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 1 Nov 2012 06:19:27 -0400 Subject: [PATCH 094/165] Auto-commit of loaddefs files. --- lisp/ldefs-boot.el | 3671 +++++++++++++------------------------------- 1 file changed, 1074 insertions(+), 2597 deletions(-) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 7f09fd1d623..876402f6fff 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -5,7 +5,7 @@ ;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best ;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5" -;;;;;; "play/5x5.el" (20550 14882 0 0)) +;;;;;; "play/5x5.el" (20545 57511 257469 0)) ;;; Generated autoloads from play/5x5.el (autoload '5x5 "5x5" "\ @@ -68,7 +68,7 @@ should return a grid vector array that is the new solution. ;;;*** ;;;### (autoloads (ada-mode ada-add-extensions) "ada-mode" "progmodes/ada-mode.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20576 42138 697312 0)) ;;; Generated autoloads from progmodes/ada-mode.el (autoload 'ada-add-extensions "ada-mode" "\ @@ -88,7 +88,7 @@ Ada mode is the major mode for editing Ada code. ;;;*** ;;;### (autoloads (ada-header) "ada-stmt" "progmodes/ada-stmt.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from progmodes/ada-stmt.el (autoload 'ada-header "ada-stmt" "\ @@ -99,7 +99,7 @@ Insert a descriptive header at the top of the file. ;;;*** ;;;### (autoloads (ada-find-file) "ada-xref" "progmodes/ada-xref.el" -;;;;;; (20460 33749 0 0)) +;;;;;; (20458 56750 651721 0)) ;;; Generated autoloads from progmodes/ada-xref.el (autoload 'ada-find-file "ada-xref" "\ @@ -114,7 +114,7 @@ Completion is available. ;;;;;; add-change-log-entry-other-window add-change-log-entry find-change-log ;;;;;; prompt-for-change-log-name add-log-mailing-address add-log-full-name ;;;;;; add-log-current-defun-function) "add-log" "vc/add-log.el" -;;;;;; (20589 46442 0 0)) +;;;;;; (20586 48936 135199 0)) ;;; Generated autoloads from vc/add-log.el (put 'change-log-default-name 'safe-local-variable 'string-or-null-p) @@ -253,7 +253,7 @@ old-style time formats for entries are supported. ;;;### (autoloads (defadvice ad-activate ad-add-advice ad-disable-advice ;;;;;; ad-enable-advice ad-default-compilation-action ad-redefinition-action) -;;;;;; "advice" "emacs-lisp/advice.el" (20567 31133 0 0)) +;;;;;; "advice" "emacs-lisp/advice.el" (20618 55210 422086 0)) ;;; Generated autoloads from emacs-lisp/advice.el (defvar ad-redefinition-action 'warn "\ @@ -398,7 +398,7 @@ usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...) ;;;### (autoloads (align-newline-and-indent align-unhighlight-rule ;;;;;; align-highlight-rule align-current align-entire align-regexp -;;;;;; align) "align" "align.el" (20567 31133 0 0)) +;;;;;; align) "align" "align.el" (20566 63671 243798 0)) ;;; Generated autoloads from align.el (autoload 'align "align" "\ @@ -489,7 +489,7 @@ A replacement function for `newline-and-indent', aligning as it goes. ;;;### (autoloads (outlineify-sticky allout-mode allout-mode-p allout-auto-activation ;;;;;; allout-setup allout-auto-activation-helper) "allout" "allout.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20577 33959 40183 0)) ;;; Generated autoloads from allout.el (autoload 'allout-auto-activation-helper "allout" "\ @@ -850,7 +850,7 @@ for details on preparing Emacs for automatic allout activation. ;;;### (autoloads (allout-widgets-mode allout-widgets-auto-activation ;;;;;; allout-widgets-setup allout-widgets) "allout-widgets" "allout-widgets.el" -;;;;;; (20550 14882 0 0)) +;;;;;; (20545 57511 257469 0)) ;;; Generated autoloads from allout-widgets.el (let ((loads (get 'allout-widgets 'custom-loads))) (if (member '"allout-widgets" loads) nil (put 'allout-widgets 'custom-loads (cons '"allout-widgets" loads)))) @@ -910,7 +910,7 @@ outline hot-spot navigation (see `allout-mode'). ;;;*** ;;;### (autoloads (ange-ftp-hook-function ange-ftp-reread-dir) "ange-ftp" -;;;;;; "net/ange-ftp.el" (20567 31133 0 0)) +;;;;;; "net/ange-ftp.el" (20566 63671 243798 0)) ;;; Generated autoloads from net/ange-ftp.el (defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir) @@ -932,7 +932,7 @@ directory, so that Emacs will know its current contents. ;;;*** ;;;### (autoloads (animate-birthday-present animate-sequence animate-string) -;;;;;; "animate" "play/animate.el" (20550 14882 0 0)) +;;;;;; "animate" "play/animate.el" (20545 57511 257469 0)) ;;; Generated autoloads from play/animate.el (autoload 'animate-string "animate" "\ @@ -965,7 +965,7 @@ the buffer *Birthday-Present-for-Name*. ;;;*** ;;;### (autoloads (ansi-color-process-output ansi-color-for-comint-mode-on) -;;;;;; "ansi-color" "ansi-color.el" (20577 48876 0 0)) +;;;;;; "ansi-color" "ansi-color.el" (20577 33959 40183 0)) ;;; Generated autoloads from ansi-color.el (autoload 'ansi-color-for-comint-mode-on "ansi-color" "\ @@ -991,7 +991,8 @@ This is a good function to put in `comint-output-filter-functions'. ;;;*** ;;;### (autoloads (antlr-set-tabs antlr-mode antlr-show-makefile-rules) -;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (20567 31133 0 0)) +;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (20566 63671 243798 +;;;;;; 0)) ;;; Generated autoloads from progmodes/antlr-mode.el (autoload 'antlr-show-makefile-rules "antlr-mode" "\ @@ -1027,7 +1028,7 @@ Used in `antlr-mode'. Also a useful function in `java-mode-hook'. ;;;*** ;;;### (autoloads (appt-activate appt-add) "appt" "calendar/appt.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from calendar/appt.el (autoload 'appt-add "appt" "\ @@ -1050,8 +1051,8 @@ ARG is positive, otherwise off. ;;;### (autoloads (apropos-documentation apropos-value apropos-library ;;;;;; apropos apropos-documentation-property apropos-command apropos-variable -;;;;;; apropos-read-pattern) "apropos" "apropos.el" (20523 63054 -;;;;;; 0 0)) +;;;;;; apropos-read-pattern) "apropos" "apropos.el" (20523 62082 +;;;;;; 997685 0)) ;;; Generated autoloads from apropos.el (autoload 'apropos-read-pattern "apropos" "\ @@ -1159,8 +1160,8 @@ Returns list of symbols and documentation found. ;;;*** -;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (20585 -;;;;;; 55103 0 0)) +;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (20614 +;;;;;; 54428 654267 0)) ;;; Generated autoloads from arc-mode.el (autoload 'archive-mode "arc-mode" "\ @@ -1180,7 +1181,7 @@ archive. ;;;*** -;;;### (autoloads (array-mode) "array" "array.el" (20244 35516 0 +;;;### (autoloads (array-mode) "array" "array.el" (20355 10021 546955 ;;;;;; 0)) ;;; Generated autoloads from array.el @@ -1253,7 +1254,7 @@ Entering array mode calls the function `array-mode-hook'. ;;;*** ;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (20513 -;;;;;; 36786 0 0)) +;;;;;; 18948 537867 0)) ;;; Generated autoloads from textmodes/artist.el (autoload 'artist-mode "artist" "\ @@ -1458,8 +1459,8 @@ Keymap summary ;;;*** -;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (20356 -;;;;;; 35090 0 0)) +;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from progmodes/asm-mode.el (autoload 'asm-mode "asm-mode" "\ @@ -1487,7 +1488,7 @@ Special commands: ;;;*** ;;;### (autoloads (auth-source-cache-expiry) "auth-source" "gnus/auth-source.el" -;;;;;; (20544 52783 0 0)) +;;;;;; (20544 36659 880486 0)) ;;; Generated autoloads from gnus/auth-source.el (defvar auth-source-cache-expiry 7200 "\ @@ -1500,7 +1501,7 @@ let-binding.") ;;;*** ;;;### (autoloads (autoarg-kp-mode autoarg-mode) "autoarg" "autoarg.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from autoarg.el (defvar autoarg-mode nil "\ @@ -1561,7 +1562,7 @@ This is similar to `autoarg-mode' but rebinds the keypad keys ;;;*** ;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el" -;;;;;; (20513 16153 0 0)) +;;;;;; (20513 18948 537867 0)) ;;; Generated autoloads from progmodes/autoconf.el (autoload 'autoconf-mode "autoconf" "\ @@ -1572,7 +1573,7 @@ Major mode for editing Autoconf configure.ac files. ;;;*** ;;;### (autoloads (auto-insert-mode define-auto-insert auto-insert) -;;;;;; "autoinsert" "autoinsert.el" (20567 31133 0 0)) +;;;;;; "autoinsert" "autoinsert.el" (20566 63671 243798 0)) ;;; Generated autoloads from autoinsert.el (autoload 'auto-insert "autoinsert" "\ @@ -1612,7 +1613,7 @@ insert a template for the file depending on the mode of the buffer. ;;;### (autoloads (batch-update-autoloads update-directory-autoloads ;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20594 43050 277913 0)) ;;; Generated autoloads from emacs-lisp/autoload.el (put 'generated-autoload-file 'safe-local-variable 'stringp) @@ -1663,7 +1664,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" (20511 52965 0 0)) +;;;;;; "autorevert" "autorevert.el" (20476 31768 298871 0)) ;;; Generated autoloads from autorevert.el (autoload 'auto-revert-mode "autorevert" "\ @@ -1752,7 +1753,7 @@ specifies in the mode line. ;;;*** ;;;### (autoloads (mouse-avoidance-mode mouse-avoidance-mode) "avoid" -;;;;;; "avoid.el" (20600 16892 0 0)) +;;;;;; "avoid.el" (20593 22184 581574 0)) ;;; Generated autoloads from avoid.el (defvar mouse-avoidance-mode nil "\ @@ -1793,7 +1794,7 @@ definition of \"random distance\".) ;;;*** ;;;### (autoloads (display-battery-mode battery) "battery" "battery.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20594 43050 277913 0)) ;;; Generated autoloads from battery.el (put 'battery-mode-line-string 'risky-local-variable t) @@ -1829,7 +1830,8 @@ seconds. ;;;*** ;;;### (autoloads (benchmark benchmark-run-compiled benchmark-run) -;;;;;; "benchmark" "emacs-lisp/benchmark.el" (20559 38659 0 0)) +;;;;;; "benchmark" "emacs-lisp/benchmark.el" (20557 48712 315579 +;;;;;; 0)) ;;; Generated autoloads from emacs-lisp/benchmark.el (autoload 'benchmark-run "benchmark" "\ @@ -1866,7 +1868,7 @@ For non-interactive use see also `benchmark-run' and ;;;*** ;;;### (autoloads (bibtex-search-entry bibtex-mode bibtex-initialize) -;;;;;; "bibtex" "textmodes/bibtex.el" (20577 48876 0 0)) +;;;;;; "bibtex" "textmodes/bibtex.el" (20576 13095 881042 0)) ;;; Generated autoloads from textmodes/bibtex.el (autoload 'bibtex-initialize "bibtex" "\ @@ -1955,7 +1957,7 @@ A prefix arg negates the value of `bibtex-search-entry-globally'. ;;;*** ;;;### (autoloads (bibtex-style-mode) "bibtex-style" "textmodes/bibtex-style.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from textmodes/bibtex-style.el (autoload 'bibtex-style-mode "bibtex-style" "\ @@ -1967,7 +1969,7 @@ Major mode for editing BibTeX style files. ;;;### (autoloads (binhex-decode-region binhex-decode-region-external ;;;;;; binhex-decode-region-internal) "binhex" "mail/binhex.el" -;;;;;; (20356 35090 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from mail/binhex.el (defconst binhex-begin-line "^:...............................................................$" "\ @@ -1991,8 +1993,8 @@ Binhex decode region between START and END. ;;;*** -;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20553 -;;;;;; 2323 0 0)) +;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20551 +;;;;;; 9899 283417 0)) ;;; Generated autoloads from play/blackbox.el (autoload 'blackbox "blackbox" "\ @@ -2115,7 +2117,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" (20589 46442 0 0)) +;;;;;; "bookmark.el" (20618 55210 422086 0)) ;;; Generated autoloads from bookmark.el (define-key ctl-x-r-map "b" 'bookmark-jump) (define-key ctl-x-r-map "m" 'bookmark-set) @@ -2316,7 +2318,7 @@ Incremental search of bookmarks, hiding the non-matches as we go. ;;;;;; browse-url-xdg-open browse-url-at-mouse browse-url-at-point ;;;;;; browse-url browse-url-of-region browse-url-of-dired-file ;;;;;; browse-url-of-buffer browse-url-of-file browse-url-browser-function) -;;;;;; "browse-url" "net/browse-url.el" (20567 31133 0 0)) +;;;;;; "browse-url" "net/browse-url.el" (20566 63671 243798 0)) ;;; Generated autoloads from net/browse-url.el (defvar browse-url-browser-function 'browse-url-default-browser "\ @@ -2632,7 +2634,7 @@ from `browse-url-elinks-wrapper'. ;;;*** ;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next) -;;;;;; "bs" "bs.el" (20577 48876 0 0)) +;;;;;; "bs" "bs.el" (20576 13095 881042 0)) ;;; Generated autoloads from bs.el (autoload 'bs-cycle-next "bs" "\ @@ -2672,8 +2674,8 @@ name of buffer configuration. ;;;*** -;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (20567 31133 -;;;;;; 0 0)) +;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (20566 63671 +;;;;;; 243798 0)) ;;; Generated autoloads from play/bubbles.el (autoload 'bubbles "bubbles" "\ @@ -2695,7 +2697,7 @@ columns on its right towards the left. ;;;*** ;;;### (autoloads (bug-reference-prog-mode bug-reference-mode) "bug-reference" -;;;;;; "progmodes/bug-reference.el" (20600 16892 0 0)) +;;;;;; "progmodes/bug-reference.el" (20593 22184 581574 0)) ;;; Generated autoloads from progmodes/bug-reference.el (put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format))))) @@ -2719,7 +2721,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" (20600 16892 0 0)) +;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20599 27513 576550 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) @@ -2839,8 +2841,8 @@ and corresponding effects. ;;;*** -;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from calendar/cal-china.el (put 'calendar-chinese-time-zone 'risky-local-variable t) @@ -2849,8 +2851,8 @@ and corresponding effects. ;;;*** -;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (20468 36126 -;;;;;; 0 0)) +;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (20461 32935 +;;;;;; 300400 0)) ;;; Generated autoloads from calendar/cal-dst.el (put 'calendar-daylight-savings-starts 'risky-local-variable t) @@ -2862,7 +2864,7 @@ and corresponding effects. ;;;*** ;;;### (autoloads (calendar-hebrew-list-yahrzeits) "cal-hebrew" "calendar/cal-hebrew.el" -;;;;;; (20290 33419 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from calendar/cal-hebrew.el (autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\ @@ -2878,8 +2880,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" (20600 -;;;;;; 16892 0 0)) +;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (20593 +;;;;;; 22184 581574 0)) ;;; Generated autoloads from calc/calc.el (define-key ctl-x-map "*" 'calc-dispatch) @@ -2963,8 +2965,8 @@ See Info node `(calc)Defining Functions'. ;;;*** -;;;### (autoloads (calc-undo) "calc-undo" "calc/calc-undo.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (calc-undo) "calc-undo" "calc/calc-undo.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from calc/calc-undo.el (autoload 'calc-undo "calc-undo" "\ @@ -2974,8 +2976,8 @@ See Info node `(calc)Defining Functions'. ;;;*** -;;;### (autoloads (calculator) "calculator" "calculator.el" (20511 -;;;;;; 52965 0 0)) +;;;### (autoloads (calculator) "calculator" "calculator.el" (20476 +;;;;;; 31768 298871 0)) ;;; Generated autoloads from calculator.el (autoload 'calculator "calculator" "\ @@ -2986,8 +2988,8 @@ See the documentation for `calculator-mode' for more information. ;;;*** -;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20600 -;;;;;; 16892 0 0)) +;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20594 +;;;;;; 43050 277913 0)) ;;; Generated autoloads from calendar/calendar.el (autoload 'calendar "calendar" "\ @@ -3031,7 +3033,7 @@ This function is suitable for execution in an init file. ;;;*** ;;;### (autoloads (canlock-verify canlock-insert-header) "canlock" -;;;;;; "gnus/canlock.el" (20244 35516 0 0)) +;;;;;; "gnus/canlock.el" (20355 10021 546955 0)) ;;; Generated autoloads from gnus/canlock.el (autoload 'canlock-insert-header "canlock" "\ @@ -3049,7 +3051,7 @@ it fails. ;;;*** ;;;### (autoloads (capitalized-words-mode) "cap-words" "progmodes/cap-words.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from progmodes/cap-words.el (autoload 'capitalized-words-mode "cap-words" "\ @@ -3088,15 +3090,15 @@ Obsoletes `c-forward-into-nomenclature'. ;;;*** -;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from progmodes/cc-compat.el (put 'c-indent-level 'safe-local-variable 'integerp) ;;;*** ;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el" -;;;;;; (20559 38659 0 0)) +;;;;;; (20557 48712 315579 0)) ;;; Generated autoloads from progmodes/cc-engine.el (autoload 'c-guess-basic-syntax "cc-engine" "\ @@ -3108,8 +3110,8 @@ Return the syntactic context of the current line. ;;;### (autoloads (c-guess-install c-guess-region-no-install c-guess-region ;;;;;; c-guess-buffer-no-install c-guess-buffer c-guess-no-install -;;;;;; c-guess) "cc-guess" "progmodes/cc-guess.el" (20276 3849 0 -;;;;;; 0)) +;;;;;; c-guess) "cc-guess" "progmodes/cc-guess.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from progmodes/cc-guess.el (defvar c-guess-guessed-offsets-alist nil "\ @@ -3209,7 +3211,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" -;;;;;; (20419 46656 0 0)) +;;;;;; (20614 54428 654267 0)) ;;; Generated autoloads from progmodes/cc-mode.el (autoload 'c-initialize-cc-mode "cc-mode" "\ @@ -3386,7 +3388,7 @@ Key bindings: ;;;*** ;;;### (autoloads (c-set-offset c-add-style c-set-style) "cc-styles" -;;;;;; "progmodes/cc-styles.el" (20567 31133 0 0)) +;;;;;; "progmodes/cc-styles.el" (20566 63671 243798 0)) ;;; Generated autoloads from progmodes/cc-styles.el (autoload 'c-set-style "cc-styles" "\ @@ -3437,8 +3439,8 @@ and exists only for compatibility reasons. ;;;*** -;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (20600 16892 -;;;;;; 0 0)) +;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (20595 63909 +;;;;;; 923329 0)) ;;; Generated autoloads from progmodes/cc-vars.el (put 'c-basic-offset 'safe-local-variable 'integerp) (put 'c-backslash-column 'safe-local-variable 'integerp) @@ -3448,7 +3450,7 @@ and exists only for compatibility reasons. ;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program ;;;;;; declare-ccl-program ccl-dump ccl-compile) "ccl" "international/ccl.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from international/ccl.el (autoload 'ccl-compile "ccl" "\ @@ -3709,7 +3711,7 @@ See the documentation of `define-ccl-program' for the detail of CCL program. ;;;*** ;;;### (autoloads (cconv-closure-convert) "cconv" "emacs-lisp/cconv.el" -;;;;;; (20452 43334 0 0)) +;;;;;; (20453 5437 764254 0)) ;;; Generated autoloads from emacs-lisp/cconv.el (autoload 'cconv-closure-convert "cconv" "\ @@ -3724,7 +3726,7 @@ Returns a form where all lambdas don't have any free variables. ;;;*** ;;;### (autoloads (cfengine-auto-mode cfengine2-mode cfengine3-mode) -;;;;;; "cfengine" "progmodes/cfengine.el" (20356 35090 0 0)) +;;;;;; "cfengine" "progmodes/cfengine.el" (20355 10021 546955 0)) ;;; Generated autoloads from progmodes/cfengine.el (autoload 'cfengine3-mode "cfengine" "\ @@ -3754,7 +3756,7 @@ on the buffer contents ;;;*** ;;;### (autoloads (check-declare-directory check-declare-file) "check-declare" -;;;;;; "emacs-lisp/check-declare.el" (20380 26775 0 0)) +;;;;;; "emacs-lisp/check-declare.el" (20378 29222 722320 0)) ;;; Generated autoloads from emacs-lisp/check-declare.el (autoload 'check-declare-file "check-declare" "\ @@ -3779,7 +3781,7 @@ Returns non-nil if any false statements are found. ;;;;;; checkdoc-comments checkdoc-continue checkdoc-start checkdoc-current-buffer ;;;;;; checkdoc-eval-current-buffer checkdoc-message-interactive ;;;;;; checkdoc-interactive checkdoc checkdoc-list-of-strings-p) -;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (20412 11425 0 0)) +;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (20614 54428 654267 0)) ;;; Generated autoloads from emacs-lisp/checkdoc.el (put 'checkdoc-force-docstrings-flag 'safe-local-variable 'booleanp) (put 'checkdoc-force-history-flag 'safe-local-variable 'booleanp) @@ -3975,7 +3977,7 @@ checking of documentation strings. ;;;### (autoloads (pre-write-encode-hz post-read-decode-hz encode-hz-buffer ;;;;;; encode-hz-region decode-hz-buffer decode-hz-region) "china-util" -;;;;;; "language/china-util.el" (20244 35516 0 0)) +;;;;;; "language/china-util.el" (20355 10021 546955 0)) ;;; Generated autoloads from language/china-util.el (autoload 'decode-hz-region "china-util" "\ @@ -4013,7 +4015,7 @@ Encode the text in the current buffer to HZ. ;;;*** ;;;### (autoloads (command-history list-command-history repeat-matching-complex-command) -;;;;;; "chistory" "chistory.el" (20244 35516 0 0)) +;;;;;; "chistory" "chistory.el" (20355 10021 546955 0)) ;;; Generated autoloads from chistory.el (autoload 'repeat-matching-complex-command "chistory" "\ @@ -4053,7 +4055,7 @@ and runs the normal hook `command-history-hook'. ;;;*** ;;;### (autoloads (common-lisp-indent-function) "cl-indent" "emacs-lisp/cl-indent.el" -;;;;;; (20290 33419 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from emacs-lisp/cl-indent.el (autoload 'common-lisp-indent-function "cl-indent" "\ @@ -4131,8 +4133,8 @@ For example, the function `case' has an indent property ;;;*** -;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20600 16892 -;;;;;; 0 0)) +;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20599 27513 +;;;;;; 576550 0)) ;;; Generated autoloads from emacs-lisp/cl-lib.el (define-obsolete-variable-alias 'custom-print-functions 'cl-custom-print-functions "24.3") @@ -4160,7 +4162,7 @@ a future Emacs interpreter will be able to use it.") ;;;*** ;;;### (autoloads (c-macro-expand) "cmacexp" "progmodes/cmacexp.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from progmodes/cmacexp.el (autoload 'c-macro-expand "cmacexp" "\ @@ -4180,8 +4182,8 @@ For use inside Lisp programs, see also `c-macro-expansion'. ;;;*** -;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from cmuscheme.el (autoload 'run-scheme "cmuscheme" "\ @@ -4201,8 +4203,8 @@ is run). ;;;*** -;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20592 26321 -;;;;;; 0 0)) +;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20592 1317 +;;;;;; 691761 0)) ;;; Generated autoloads from color.el (autoload 'color-name-to-rgb "color" "\ @@ -4224,7 +4226,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" -;;;;;; (20600 16892 0 0)) +;;;;;; (20594 43050 277913 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) "\ @@ -4324,7 +4326,7 @@ REGEXP-GROUP is the regular expression group in REGEXP to use. ;;;*** ;;;### (autoloads (compare-windows) "compare-w" "vc/compare-w.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from vc/compare-w.el (autoload 'compare-windows "compare-w" "\ @@ -4361,8 +4363,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" (20577 -;;;;;; 48876 0 0)) +;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20615 +;;;;;; 49194 141673 0)) ;;; Generated autoloads from progmodes/compile.el (defvar compilation-mode-hook nil "\ @@ -4544,7 +4546,7 @@ This is the value of `next-error-function' in Compilation buffers. ;;;*** ;;;### (autoloads (dynamic-completion-mode) "completion" "completion.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20495 51111 757560 0)) ;;; Generated autoloads from completion.el (defvar dynamic-completion-mode nil "\ @@ -4569,7 +4571,7 @@ if ARG is omitted or nil. ;;;### (autoloads (conf-xdefaults-mode conf-ppd-mode conf-colon-mode ;;;;;; conf-space-keywords conf-space-mode conf-javaprop-mode conf-windows-mode ;;;;;; conf-unix-mode conf-mode) "conf-mode" "textmodes/conf-mode.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from textmodes/conf-mode.el (autoload 'conf-mode "conf-mode" "\ @@ -4725,7 +4727,7 @@ For details see `conf-mode'. Example: ;;;*** ;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie) -;;;;;; "cookie1" "play/cookie1.el" (20550 14882 0 0)) +;;;;;; "cookie1" "play/cookie1.el" (20545 57511 257469 0)) ;;; Generated autoloads from play/cookie1.el (autoload 'cookie "cookie1" "\ @@ -4757,8 +4759,8 @@ Randomly permute the elements of VECTOR (all permutations equally likely). ;;;*** ;;;### (autoloads (copyright-update-directory copyright copyright-fix-years -;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20522 -;;;;;; 30367 0 0)) +;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20518 +;;;;;; 12580 46478 0)) ;;; Generated autoloads from emacs-lisp/copyright.el (put 'copyright-at-end-flag 'safe-local-variable 'booleanp) (put 'copyright-names-regexp 'safe-local-variable 'stringp) @@ -4797,7 +4799,8 @@ If FIX is non-nil, run `copyright-fix-years' instead. ;;;*** ;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode) -;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20513 16153 0 0)) +;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20512 60198 306109 +;;;;;; 0)) ;;; Generated autoloads from progmodes/cperl-mode.el (put 'cperl-indent-level 'safe-local-variable 'integerp) (put 'cperl-brace-offset 'safe-local-variable 'integerp) @@ -4996,7 +4999,7 @@ Run a `perldoc' on the word around point. ;;;*** ;;;### (autoloads (cpp-parse-edit cpp-highlight-buffer) "cpp" "progmodes/cpp.el" -;;;;;; (20356 35090 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from progmodes/cpp.el (autoload 'cpp-highlight-buffer "cpp" "\ @@ -5015,7 +5018,7 @@ Edit display information for cpp conditionals. ;;;*** ;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20593 22184 581574 0)) ;;; Generated autoloads from emulation/crisp.el (defvar crisp-mode nil "\ @@ -5041,7 +5044,7 @@ if ARG is omitted or nil. ;;;*** ;;;### (autoloads (completing-read-multiple) "crm" "emacs-lisp/crm.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from emacs-lisp/crm.el (autoload 'completing-read-multiple "crm" "\ @@ -5076,8 +5079,8 @@ INHERIT-INPUT-METHOD. ;;;*** -;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (20511 -;;;;;; 52965 0 0)) +;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (20478 +;;;;;; 3673 653810 0)) ;;; Generated autoloads from textmodes/css-mode.el (autoload 'css-mode "css-mode" "\ @@ -5088,7 +5091,7 @@ Major mode to edit Cascading Style Sheets. ;;;*** ;;;### (autoloads (cua-selection-mode cua-mode) "cua-base" "emulation/cua-base.el" -;;;;;; (20434 28080 0 0)) +;;;;;; (20434 17809 692608 0)) ;;; Generated autoloads from emulation/cua-base.el (defvar cua-mode nil "\ @@ -5148,7 +5151,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" (20577 48876 0 0)) +;;;;;; "cus-edit" "cus-edit.el" (20577 33959 40183 0)) ;;; Generated autoloads from cus-edit.el (defvar custom-browse-sort-alphabetically nil "\ @@ -5460,8 +5463,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" (20336 -;;;;;; 29137 0 0)) +;;;;;; customize-create-theme) "cus-theme" "cus-theme.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from cus-theme.el (autoload 'customize-create-theme "cus-theme" "\ @@ -5495,7 +5498,7 @@ omitted, a buffer named *Custom Themes* is used. ;;;*** ;;;### (autoloads (cvs-status-mode) "cvs-status" "vc/cvs-status.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20476 31768 298871 0)) ;;; Generated autoloads from vc/cvs-status.el (autoload 'cvs-status-mode "cvs-status" "\ @@ -5506,7 +5509,7 @@ Mode used for cvs status output. ;;;*** ;;;### (autoloads (global-cwarn-mode cwarn-mode) "cwarn" "progmodes/cwarn.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20577 33959 40183 0)) ;;; Generated autoloads from progmodes/cwarn.el (autoload 'cwarn-mode "cwarn" "\ @@ -5551,7 +5554,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" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from language/cyril-util.el (autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\ @@ -5580,7 +5583,7 @@ If the argument is nil, we return the display table to its standard state. ;;;*** ;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el" -;;;;;; (20412 11425 0 0)) +;;;;;; (20397 45851 446679 0)) ;;; Generated autoloads from dabbrev.el (put 'dabbrev-case-fold-search 'risky-local-variable t) (put 'dabbrev-case-replace 'risky-local-variable t) @@ -5627,7 +5630,7 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion]. ;;;*** ;;;### (autoloads (data-debug-new-buffer) "data-debug" "cedet/data-debug.el" -;;;;;; (20585 59413 0 0)) +;;;;;; (20586 48936 135199 0)) ;;; Generated autoloads from cedet/data-debug.el (autoload 'data-debug-new-buffer "data-debug" "\ @@ -5637,8 +5640,8 @@ Create a new data-debug buffer with NAME. ;;;*** -;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20523 -;;;;;; 63054 0 0)) +;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20614 +;;;;;; 54428 654267 0)) ;;; Generated autoloads from net/dbus.el (autoload 'dbus-handle-event "dbus" "\ @@ -5651,8 +5654,8 @@ If the HANDLER returns a `dbus-error', it is propagated as return message. ;;;*** -;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (20356 -;;;;;; 35090 0 0)) +;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from progmodes/dcl-mode.el (autoload 'dcl-mode "dcl-mode" "\ @@ -5779,7 +5782,7 @@ There is some minimal font-lock support (see vars ;;;*** ;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug" -;;;;;; "emacs-lisp/debug.el" (20589 46442 0 0)) +;;;;;; "emacs-lisp/debug.el" (20609 10405 476026 0)) ;;; Generated autoloads from emacs-lisp/debug.el (setq debugger 'debug) @@ -5823,7 +5826,7 @@ To specify a nil argument interactively, exit with an empty minibuffer. ;;;*** ;;;### (autoloads (decipher-mode decipher) "decipher" "play/decipher.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from play/decipher.el (autoload 'decipher "decipher" "\ @@ -5852,8 +5855,8 @@ The most useful commands are: ;;;*** ;;;### (autoloads (delimit-columns-rectangle delimit-columns-region -;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (20244 -;;;;;; 35516 0 0)) +;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from delim-col.el (autoload 'delimit-columns-customize "delim-col" "\ @@ -5877,8 +5880,8 @@ START and END delimits the corners of text rectangle. ;;;*** -;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (20356 -;;;;;; 35090 0 0)) +;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from progmodes/delphi.el (autoload 'delphi-mode "delphi" "\ @@ -5929,8 +5932,8 @@ with no args, if that value is non-nil. ;;;*** -;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (20517 -;;;;;; 4109 0 0)) +;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (20613 +;;;;;; 49078 764749 0)) ;;; Generated autoloads from delsel.el (defalias 'pending-delete-mode 'delete-selection-mode) @@ -5960,7 +5963,7 @@ any selection. ;;;*** ;;;### (autoloads (derived-mode-init-mode-variables define-derived-mode) -;;;;;; "derived" "emacs-lisp/derived.el" (20577 48876 0 0)) +;;;;;; "derived" "emacs-lisp/derived.el" (20577 33959 40183 0)) ;;; Generated autoloads from emacs-lisp/derived.el (autoload 'define-derived-mode "derived" "\ @@ -6027,7 +6030,7 @@ the first time the mode is used. ;;;*** ;;;### (autoloads (describe-char describe-text-properties) "descr-text" -;;;;;; "descr-text.el" (20535 44414 0 0)) +;;;;;; "descr-text.el" (20530 32114 546307 0)) ;;; Generated autoloads from descr-text.el (autoload 'describe-text-properties "descr-text" "\ @@ -6064,7 +6067,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" (20577 48876 0 0)) +;;;;;; "desktop.el" (20577 33959 40183 0)) ;;; Generated autoloads from desktop.el (defvar desktop-save-mode nil "\ @@ -6253,7 +6256,7 @@ Revert to the last loaded desktop. ;;;### (autoloads (gnus-article-outlook-deuglify-article gnus-outlook-deuglify-article ;;;;;; gnus-article-outlook-repair-attribution gnus-article-outlook-unwrap-lines) -;;;;;; "deuglify" "gnus/deuglify.el" (20244 35516 0 0)) +;;;;;; "deuglify" "gnus/deuglify.el" (20355 10021 546955 0)) ;;; Generated autoloads from gnus/deuglify.el (autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\ @@ -6286,7 +6289,7 @@ Deuglify broken Outlook (Express) articles and redisplay. ;;;*** ;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib" -;;;;;; "calendar/diary-lib.el" (20577 48876 0 0)) +;;;;;; "calendar/diary-lib.el" (20576 42138 697312 0)) ;;; Generated autoloads from calendar/diary-lib.el (autoload 'diary "diary-lib" "\ @@ -6330,7 +6333,7 @@ Major mode for editing the diary file. ;;;### (autoloads (diff-buffer-with-file diff-latest-backup-file ;;;;;; diff-backup diff diff-command diff-switches) "diff" "vc/diff.el" -;;;;;; (20571 23797 0 0)) +;;;;;; (20570 60708 993668 0)) ;;; Generated autoloads from vc/diff.el (defvar diff-switches (purecopy "-c") "\ @@ -6379,7 +6382,7 @@ This requires the external program `diff' to be in your `exec-path'. ;;;*** ;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "vc/diff-mode.el" -;;;;;; (20589 46442 0 0)) +;;;;;; (20623 43301 870757 0)) ;;; Generated autoloads from vc/diff-mode.el (autoload 'diff-mode "diff-mode" "\ @@ -6411,7 +6414,7 @@ the mode if ARG is omitted or nil. ;;;*** -;;;### (autoloads (dig) "dig" "net/dig.el" (20244 35516 0 0)) +;;;### (autoloads (dig) "dig" "net/dig.el" (20355 10021 546955 0)) ;;; Generated autoloads from net/dig.el (autoload 'dig "dig" "\ @@ -6423,8 +6426,8 @@ Optional arguments are passed to `dig-invoke'. ;;;*** ;;;### (autoloads (dired-mode dired-noselect dired-other-frame dired-other-window -;;;;;; dired dired-listing-switches) "dired" "dired.el" (20592 26321 -;;;;;; 0 0)) +;;;;;; dired dired-listing-switches) "dired" "dired.el" (20619 46245 +;;;;;; 806932 0)) ;;; Generated autoloads from dired.el (defvar dired-listing-switches (purecopy "-al") "\ @@ -6545,7 +6548,7 @@ Keybindings: ;;;*** ;;;### (autoloads (dirtrack dirtrack-mode) "dirtrack" "dirtrack.el" -;;;;;; (20412 11425 0 0)) +;;;;;; (20399 35365 4050 0)) ;;; Generated autoloads from dirtrack.el (autoload 'dirtrack-mode "dirtrack" "\ @@ -6575,8 +6578,8 @@ from `default-directory'. ;;;*** -;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (20511 -;;;;;; 52965 0 0)) +;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (20497 +;;;;;; 6436 957082 0)) ;;; Generated autoloads from emacs-lisp/disass.el (autoload 'disassemble "disass" "\ @@ -6595,7 +6598,7 @@ redefine OBJECT if it is a symbol. ;;;;;; standard-display-g1 standard-display-ascii standard-display-default ;;;;;; standard-display-8bit describe-current-display-table describe-display-table ;;;;;; set-display-table-slot display-table-slot make-display-table) -;;;;;; "disp-table" "disp-table.el" (20244 35516 0 0)) +;;;;;; "disp-table" "disp-table.el" (20355 10021 546955 0)) ;;; Generated autoloads from disp-table.el (autoload 'make-display-table "disp-table" "\ @@ -6717,7 +6720,7 @@ in `.emacs'. ;;;*** ;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el" -;;;;;; (20550 14882 0 0)) +;;;;;; (20545 57511 257469 0)) ;;; Generated autoloads from play/dissociate.el (autoload 'dissociated-press "dissociate" "\ @@ -6733,8 +6736,8 @@ Default is 2. ;;;*** -;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from dnd.el (defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) (,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)) "\ @@ -6755,7 +6758,7 @@ if some action was made, or nil if the URL is ignored.") ;;;*** ;;;### (autoloads (dns-mode-soa-increment-serial dns-mode) "dns-mode" -;;;;;; "textmodes/dns-mode.el" (20244 35516 0 0)) +;;;;;; "textmodes/dns-mode.el" (20355 10021 546955 0)) ;;; Generated autoloads from textmodes/dns-mode.el (autoload 'dns-mode "dns-mode" "\ @@ -6780,7 +6783,7 @@ 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" (20581 -;;;;;; 44007 0 0)) +;;;;;; 31014 234484 0)) ;;; Generated autoloads from doc-view.el (autoload 'doc-view-mode-p "doc-view" "\ @@ -6826,8 +6829,8 @@ See the command `doc-view-mode' for more information on this mode. ;;;*** -;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20550 14882 -;;;;;; 0 0)) +;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20545 57511 +;;;;;; 257469 0)) ;;; Generated autoloads from play/doctor.el (autoload 'doctor "doctor" "\ @@ -6837,8 +6840,8 @@ Switch to *doctor* buffer and start giving psychotherapy. ;;;*** -;;;### (autoloads (double-mode) "double" "double.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (double-mode) "double" "double.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from double.el (autoload 'double-mode "double" "\ @@ -6854,8 +6857,8 @@ strings when pressed twice. See `double-map' for details. ;;;*** -;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20550 14882 -;;;;;; 0 0)) +;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20545 57511 +;;;;;; 257469 0)) ;;; Generated autoloads from play/dunnet.el (autoload 'dunnet "dunnet" "\ @@ -6867,7 +6870,7 @@ Switch to *dungeon* buffer and start game. ;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap ;;;;;; define-globalized-minor-mode define-minor-mode) "easy-mmode" -;;;;;; "emacs-lisp/easy-mmode.el" (20577 48876 0 0)) +;;;;;; "emacs-lisp/easy-mmode.el" (20574 57775 217760 0)) ;;; Generated autoloads from emacs-lisp/easy-mmode.el (defalias 'easy-mmode-define-minor-mode 'define-minor-mode) @@ -7002,115 +7005,106 @@ CSS contains a list of syntax specifications of the form (CHAR . SYNTAX). ;;;*** ;;;### (autoloads (easy-menu-change easy-menu-create-menu easy-menu-do-define -;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (20567 -;;;;;; 31133 0 0)) +;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (20615 +;;;;;; 49194 141673 0)) ;;; Generated autoloads from emacs-lisp/easymenu.el (autoload 'easy-menu-define "easymenu" "\ -Define a menu bar submenu in maps MAPS, according to MENU. +Define a pop-up menu and/or menu bar menu specified by MENU. +If SYMBOL is non-nil, define SYMBOL as a function to pop up the +submenu defined by MENU, with DOC as its doc string. -If SYMBOL is non-nil, store the menu keymap in the value of SYMBOL, -and define SYMBOL as a function to pop up the menu, with DOC as its doc string. -If SYMBOL is nil, just store the menu keymap into MAPS. +MAPS, if non-nil, should be a keymap or a list of keymaps; add +the submenu defined by MENU to the keymap or each of the keymaps, +as a top-level menu bar item. -The first element of MENU must be a string. It is the menu bar item name. -It may be followed by the following keyword argument pairs +The first element of MENU must be a string. It is the menu bar +item name. It may be followed by the following keyword argument +pairs: - :filter FUNCTION + :filter FUNCTION + FUNCTION must be a function which, if called with one + argument---the list of the other menu items---returns the + items to actually display. -FUNCTION is a function with one argument, the rest of menu items. -It returns the remaining items of the displayed menu. + :visible INCLUDE + INCLUDE is an expression. The menu is visible if the + expression evaluates to a non-nil value. `:included' is an + alias for `:visible'. - :visible INCLUDE + :active ENABLE + ENABLE is an expression. The menu is enabled for selection + if the expression evaluates to a non-nil value. `:enable' is + an alias for `:active'. -INCLUDE is an expression; this menu is only visible if this -expression has a non-nil value. `:included' is an alias for `:visible'. +The rest of the elements in MENU are menu items. +A menu item can be a vector of three elements: - :active ENABLE - -ENABLE is an expression; the menu is enabled for selection whenever -this expression's value is non-nil. `:enable' is an alias for `:active'. - -The rest of the elements in MENU, are menu items. - -A menu item is usually a vector of three elements: [NAME CALLBACK ENABLE] + [NAME CALLBACK ENABLE] NAME is a string--the menu item name. -CALLBACK is a command to run when the item is chosen, -or a list to evaluate when the item is chosen. +CALLBACK is a command to run when the item is chosen, or an +expression to evaluate when the item is chosen. -ENABLE is an expression; the item is enabled for selection -whenever this expression's value is non-nil. +ENABLE is an expression; the item is enabled for selection if the +expression evaluates to a non-nil value. Alternatively, a menu item may have the form: - [ NAME CALLBACK [ KEYWORD ARG ] ... ] + [ NAME CALLBACK [ KEYWORD ARG ]... ] -Where KEYWORD is one of the symbols defined below. +where NAME and CALLBACK have the same meanings as above, and each +optional KEYWORD and ARG pair should be one of the following: - :keys KEYS + :keys KEYS + KEYS is a string; a keyboard equivalent to the menu item. + This is normally not needed because keyboard equivalents are + usually computed automatically. KEYS is expanded with + `substitute-command-keys' before it is used. -KEYS is a string; a complex keyboard equivalent to this menu item. -This is normally not needed because keyboard equivalents are usually -computed automatically. -KEYS is expanded with `substitute-command-keys' before it is used. + :key-sequence KEYS + KEYS is a hint for speeding up Emacs's first display of the + menu. It should be nil if you know that the menu item has no + keyboard equivalent; otherwise it should be a string or + vector specifying a keyboard equivalent for the menu item. - :key-sequence KEYS + :active ENABLE + ENABLE is an expression; the item is enabled for selection + whenever this expression's value is non-nil. `:enable' is an + alias for `:active'. -KEYS is nil, a string or a vector; nil or a keyboard equivalent to this -menu item. -This is a hint that will considerably speed up Emacs's first display of -a menu. Use `:key-sequence nil' when you know that this menu item has no -keyboard equivalent. + :visible INCLUDE + INCLUDE is an expression; this item is only visible if this + expression has a non-nil value. `:included' is an alias for + `:visible'. - :active ENABLE + :label FORM + FORM is an expression that is dynamically evaluated and whose + value serves as the menu item's label (the default is NAME). -ENABLE is an expression; the item is enabled for selection whenever -this expression's value is non-nil. `:enable' is an alias for `:active'. + :suffix FORM + FORM is an expression that is dynamically evaluated and whose + value is concatenated with the menu entry's label. - :visible INCLUDE + :style STYLE + STYLE is a symbol describing the type of menu item; it should + be `toggle' (a checkbox), or `radio' (a radio button), or any + other value (meaning an ordinary menu item). -INCLUDE is an expression; this item is only visible if this -expression has a non-nil value. `:included' is an alias for `:visible'. + :selected SELECTED + SELECTED is an expression; the checkbox or radio button is + selected whenever the expression's value is non-nil. - :label FORM + :help HELP + HELP is a string, the help to display for the menu item. -FORM is an expression that will be dynamically evaluated and whose -value will be used for the menu entry's text label (the default is NAME). +Alternatively, a menu item can be a string. Then that string +appears in the menu as unselectable text. A string consisting +solely of dashes is displayed as a menu separator. - :suffix FORM - -FORM is an expression that will be dynamically evaluated and whose -value will be concatenated to the menu entry's label. - - :style STYLE - -STYLE is a symbol describing the type of menu item. The following are -defined: - -toggle: A checkbox. - Prepend the name with `(*) ' or `( ) ' depending on if selected or not. -radio: A radio button. - Prepend the name with `[X] ' or `[ ] ' depending on if selected or not. -button: Surround the name with `[' and `]'. Use this for an item in the - menu bar itself. -anything else means an ordinary menu item. - - :selected SELECTED - -SELECTED is an expression; the checkbox or radio button is selected -whenever this expression's value is non-nil. - - :help HELP - -HELP is a string, the help to display for the menu item. - -A menu item can be a string. Then that string appears in the menu as -unselectable text. A string consisting solely of hyphens is displayed -as a solid horizontal line. - -A menu item can be a list with the same format as MENU. This is a submenu. +Alternatively, a menu item can be a list with the same format as +MENU. This is a submenu. \(fn SYMBOL MAPS DOC MENU)" nil t) @@ -7157,7 +7151,7 @@ To implement dynamic menus, either call this from ;;;;;; ebnf-eps-file ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer ;;;;;; ebnf-spool-file ebnf-spool-directory ebnf-print-region ebnf-print-buffer ;;;;;; ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps" -;;;;;; "progmodes/ebnf2ps.el" (20567 31133 0 0)) +;;;;;; "progmodes/ebnf2ps.el" (20566 63671 243798 0)) ;;; Generated autoloads from progmodes/ebnf2ps.el (autoload 'ebnf-customize "ebnf2ps" "\ @@ -7431,8 +7425,8 @@ See `ebnf-style-database' documentation. ;;;;;; ebrowse-tags-find-declaration-other-window ebrowse-tags-find-definition ;;;;;; ebrowse-tags-view-definition ebrowse-tags-find-declaration ;;;;;; ebrowse-tags-view-declaration ebrowse-member-mode ebrowse-electric-choose-tree -;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (20567 -;;;;;; 31133 0 0)) +;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (20561 +;;;;;; 18280 338092 0)) ;;; Generated autoloads from progmodes/ebrowse.el (autoload 'ebrowse-tree-mode "ebrowse" "\ @@ -7581,7 +7575,7 @@ Display statistics for a class tree. ;;;*** ;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el" -;;;;;; (20523 63054 0 0)) +;;;;;; (20523 62082 997685 0)) ;;; Generated autoloads from ebuff-menu.el (autoload 'electric-buffer-list "ebuff-menu" "\ @@ -7614,7 +7608,7 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry. ;;;*** ;;;### (autoloads (Electric-command-history-redo-expression) "echistory" -;;;;;; "echistory.el" (20244 35516 0 0)) +;;;;;; "echistory.el" (20355 10021 546955 0)) ;;; Generated autoloads from echistory.el (autoload 'Electric-command-history-redo-expression "echistory" "\ @@ -7626,7 +7620,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing. ;;;*** ;;;### (autoloads (ecomplete-setup) "ecomplete" "gnus/ecomplete.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/ecomplete.el (autoload 'ecomplete-setup "ecomplete" "\ @@ -7636,8 +7630,8 @@ With prefix arg NOCONFIRM, execute current line as-is without editing. ;;;*** -;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (20592 26321 -;;;;;; 0 0)) +;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (20590 45996 +;;;;;; 129575 0)) ;;; Generated autoloads from cedet/ede.el (defvar global-ede-mode nil "\ @@ -7664,7 +7658,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" (20600 16892 0 0)) +;;;;;; "emacs-lisp/edebug.el" (20594 43050 277913 0)) ;;; Generated autoloads from emacs-lisp/edebug.el (defvar edebug-all-defs nil "\ @@ -7737,8 +7731,8 @@ Toggle edebugging of all forms. ;;;;;; ediff-merge-directories-with-ancestor ediff-merge-directories ;;;;;; ediff-directories3 ediff-directory-revisions ediff-directories ;;;;;; ediff-buffers3 ediff-buffers ediff-backup ediff-current-file -;;;;;; ediff-files3 ediff-files) "ediff" "vc/ediff.el" (20511 52965 -;;;;;; 0 0)) +;;;;;; ediff-files3 ediff-files) "ediff" "vc/ediff.el" (20495 51111 +;;;;;; 757560 0)) ;;; Generated autoloads from vc/ediff.el (autoload 'ediff-files "ediff" "\ @@ -7970,7 +7964,7 @@ With optional NODE, goes to that node. ;;;*** ;;;### (autoloads (ediff-customize) "ediff-help" "vc/ediff-help.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from vc/ediff-help.el (autoload 'ediff-customize "ediff-help" "\ @@ -7981,7 +7975,7 @@ With optional NODE, goes to that node. ;;;*** ;;;### (autoloads (ediff-show-registry) "ediff-mult" "vc/ediff-mult.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20614 54428 654267 0)) ;;; Generated autoloads from vc/ediff-mult.el (autoload 'ediff-show-registry "ediff-mult" "\ @@ -7994,7 +7988,7 @@ Display Ediff's registry. ;;;*** ;;;### (autoloads (ediff-toggle-use-toolbar ediff-toggle-multiframe) -;;;;;; "ediff-util" "vc/ediff-util.el" (20585 55103 0 0)) +;;;;;; "ediff-util" "vc/ediff-util.el" (20584 7212 455152 0)) ;;; Generated autoloads from vc/ediff-util.el (autoload 'ediff-toggle-multiframe "ediff-util" "\ @@ -8015,7 +8009,7 @@ To change the default, set the variable `ediff-use-toolbar-p', which see. ;;;### (autoloads (format-kbd-macro read-kbd-macro edit-named-kbd-macro ;;;;;; edit-last-kbd-macro edit-kbd-macro) "edmacro" "edmacro.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20476 31768 298871 0)) ;;; Generated autoloads from edmacro.el (autoload 'edit-kbd-macro "edmacro" "\ @@ -8064,7 +8058,7 @@ or nil, use a compact 80-column format. ;;;*** ;;;### (autoloads (edt-emulation-on edt-set-scroll-margins) "edt" -;;;;;; "emulation/edt.el" (20567 31133 0 0)) +;;;;;; "emulation/edt.el" (20566 63671 243798 0)) ;;; Generated autoloads from emulation/edt.el (autoload 'edt-set-scroll-margins "edt" "\ @@ -8082,7 +8076,7 @@ Turn on EDT Emulation. ;;;*** ;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "ehelp.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20593 22184 581574 0)) ;;; Generated autoloads from ehelp.el (autoload 'with-electric-help "ehelp" "\ @@ -8119,7 +8113,7 @@ BUFFER is put back into its original major mode. ;;;*** ;;;### (autoloads (customize-object) "eieio-custom" "emacs-lisp/eieio-custom.el" -;;;;;; (20585 59413 0 0)) +;;;;;; (20586 48936 135199 0)) ;;; Generated autoloads from emacs-lisp/eieio-custom.el (autoload 'customize-object "eieio-custom" "\ @@ -8132,7 +8126,7 @@ Optional argument GROUP is the sub-group of slots to display. ;;;### (autoloads (eieio-describe-generic eieio-describe-constructor ;;;;;; eieio-describe-class eieio-browse) "eieio-opt" "emacs-lisp/eieio-opt.el" -;;;;;; (20585 59413 0 0)) +;;;;;; (20617 41641 89638 0)) ;;; Generated autoloads from emacs-lisp/eieio-opt.el (autoload 'eieio-browse "eieio-opt" "\ @@ -8166,7 +8160,7 @@ Also extracts information about all methods specific to this generic. ;;;*** ;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string) -;;;;;; "eldoc" "emacs-lisp/eldoc.el" (20244 35516 0 0)) +;;;;;; "eldoc" "emacs-lisp/eldoc.el" (20355 10021 546955 0)) ;;; Generated autoloads from emacs-lisp/eldoc.el (defvar eldoc-minor-mode-string (purecopy " ElDoc") "\ @@ -8213,7 +8207,7 @@ Emacs Lisp mode) that support ElDoc.") ;;;*** ;;;### (autoloads (electric-layout-mode electric-pair-mode electric-indent-mode) -;;;;;; "electric" "electric.el" (20511 52965 0 0)) +;;;;;; "electric" "electric.el" (20613 49078 764749 0)) ;;; Generated autoloads from electric.el (defvar electric-indent-chars '(10) "\ @@ -8283,8 +8277,8 @@ The variable `electric-layout-rules' says when and how to insert newlines. ;;;*** -;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from elide-head.el (autoload 'elide-head "elide-head" "\ @@ -8301,7 +8295,7 @@ This is suitable as an entry on `find-file-hook' or appropriate mode hooks. ;;;### (autoloads (elint-initialize elint-defun elint-current-buffer ;;;;;; elint-directory elint-file) "elint" "emacs-lisp/elint.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20486 36135 22104 0)) ;;; Generated autoloads from emacs-lisp/elint.el (autoload 'elint-file "elint" "\ @@ -8337,8 +8331,8 @@ optional prefix argument REINIT is non-nil. ;;;*** ;;;### (autoloads (elp-results elp-instrument-package elp-instrument-list -;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (20511 -;;;;;; 52965 0 0)) +;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (20497 +;;;;;; 6436 957082 0)) ;;; Generated autoloads from emacs-lisp/elp.el (autoload 'elp-instrument-function "elp" "\ @@ -8373,7 +8367,7 @@ displayed. ;;;*** ;;;### (autoloads (emacs-lock-mode) "emacs-lock" "emacs-lock.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20577 33959 40183 0)) ;;; Generated autoloads from emacs-lock.el (autoload 'emacs-lock-mode "emacs-lock" "\ @@ -8401,7 +8395,7 @@ Other values are interpreted as usual. ;;;*** ;;;### (autoloads (report-emacs-bug-query-existing-bugs report-emacs-bug) -;;;;;; "emacsbug" "mail/emacsbug.el" (20577 48876 0 0)) +;;;;;; "emacsbug" "mail/emacsbug.el" (20576 13095 881042 0)) ;;; Generated autoloads from mail/emacsbug.el (autoload 'report-emacs-bug "emacsbug" "\ @@ -8422,7 +8416,7 @@ The result is an alist with items of the form (URL SUBJECT NO). ;;;;;; emerge-revisions emerge-files-with-ancestor-remote emerge-files-remote ;;;;;; emerge-files-with-ancestor-command emerge-files-command emerge-buffers-with-ancestor ;;;;;; emerge-buffers emerge-files-with-ancestor emerge-files) "emerge" -;;;;;; "vc/emerge.el" (20577 48876 0 0)) +;;;;;; "vc/emerge.el" (20576 42138 697312 0)) ;;; Generated autoloads from vc/emerge.el (autoload 'emerge-files "emerge" "\ @@ -8483,7 +8477,7 @@ Emerge two RCS revisions of a file, with another revision as ancestor. ;;;*** ;;;### (autoloads (enriched-decode enriched-encode enriched-mode) -;;;;;; "enriched" "textmodes/enriched.el" (20468 36126 0 0)) +;;;;;; "enriched" "textmodes/enriched.el" (20461 32935 300400 0)) ;;; Generated autoloads from textmodes/enriched.el (autoload 'enriched-mode "enriched" "\ @@ -8524,7 +8518,7 @@ Commands: ;;;;;; epa-decrypt-armor-in-region epa-decrypt-region epa-encrypt-file ;;;;;; epa-sign-file epa-verify-file epa-decrypt-file epa-select-keys ;;;;;; epa-list-secret-keys epa-list-keys) "epa" "epa.el" (20577 -;;;;;; 48876 0 0)) +;;;;;; 33959 40183 0)) ;;; Generated autoloads from epa.el (autoload 'epa-list-keys "epa" "\ @@ -8702,8 +8696,8 @@ Insert selected KEYS after the point. ;;;*** ;;;### (autoloads (epa-dired-do-encrypt epa-dired-do-sign epa-dired-do-verify -;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (20244 35516 -;;;;;; 0 0)) +;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from epa-dired.el (autoload 'epa-dired-do-decrypt "epa-dired" "\ @@ -8729,7 +8723,7 @@ Encrypt marked files. ;;;*** ;;;### (autoloads (epa-file-disable epa-file-enable epa-file-handler) -;;;;;; "epa-file" "epa-file.el" (20244 35516 0 0)) +;;;;;; "epa-file" "epa-file.el" (20355 10021 546955 0)) ;;; Generated autoloads from epa-file.el (autoload 'epa-file-handler "epa-file" "\ @@ -8751,7 +8745,7 @@ Encrypt marked files. ;;;### (autoloads (epa-global-mail-mode epa-mail-import-keys epa-mail-encrypt ;;;;;; epa-mail-sign epa-mail-verify epa-mail-decrypt epa-mail-mode) -;;;;;; "epa-mail" "epa-mail.el" (20567 31133 0 0)) +;;;;;; "epa-mail" "epa-mail.el" (20566 63671 243798 0)) ;;; Generated autoloads from epa-mail.el (autoload 'epa-mail-mode "epa-mail" "\ @@ -8821,8 +8815,8 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads (epg-make-context) "epg" "epg.el" (20577 48876 -;;;;;; 0 0)) +;;;### (autoloads (epg-make-context) "epg" "epg.el" (20577 33959 +;;;;;; 40183 0)) ;;; Generated autoloads from epg.el (autoload 'epg-make-context "epg" "\ @@ -8833,7 +8827,7 @@ Return a context object. ;;;*** ;;;### (autoloads (epg-expand-group epg-check-configuration epg-configuration) -;;;;;; "epg-config" "epg-config.el" (20373 41604 0 0)) +;;;;;; "epg-config" "epg-config.el" (20373 11301 906925 0)) ;;; Generated autoloads from epg-config.el (autoload 'epg-configuration "epg-config" "\ @@ -8854,7 +8848,7 @@ Look at CONFIG and try to expand GROUP. ;;;*** ;;;### (autoloads (erc-handle-irc-url erc-tls erc erc-select-read-args) -;;;;;; "erc" "erc/erc.el" (20600 16892 0 0)) +;;;;;; "erc" "erc/erc.el" (20604 29767 397763 0)) ;;; Generated autoloads from erc/erc.el (autoload 'erc-select-read-args "erc" "\ @@ -8902,36 +8896,36 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL. ;;;*** -;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (20592 -;;;;;; 26321 0 0)) +;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (20591 +;;;;;; 33616 626144 310000)) ;;; Generated autoloads from erc/erc-autoaway.el (autoload 'erc-autoaway-mode "erc-autoaway") ;;;*** -;;;### (autoloads nil "erc-button" "erc/erc-button.el" (20600 16892 -;;;;;; 0 0)) +;;;### (autoloads nil "erc-button" "erc/erc-button.el" (20593 22184 +;;;;;; 581574 0)) ;;; Generated autoloads from erc/erc-button.el (autoload 'erc-button-mode "erc-button" nil t) ;;;*** -;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (20592 26321 -;;;;;; 0 0)) +;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (20591 33616 +;;;;;; 706147 283000)) ;;; Generated autoloads from erc/erc-capab.el (autoload 'erc-capab-identify-mode "erc-capab" nil t) ;;;*** -;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (20592 26321 -;;;;;; 0 0)) +;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (20591 33616 +;;;;;; 736174 412000)) ;;; Generated autoloads from erc/erc-compat.el (autoload 'erc-define-minor-mode "erc-compat") ;;;*** ;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC) -;;;;;; "erc-dcc" "erc/erc-dcc.el" (20592 26321 0 0)) +;;;;;; "erc-dcc" "erc/erc-dcc.el" (20591 33616 756180 926000)) ;;; Generated autoloads from erc/erc-dcc.el (autoload 'erc-dcc-mode "erc-dcc") @@ -8961,7 +8955,7 @@ that subcommand. ;;;*** ;;;### (autoloads nil "erc-desktop-notifications" "erc/erc-desktop-notifications.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20593 22184 581574 0)) ;;; Generated autoloads from erc/erc-desktop-notifications.el (autoload 'erc-notifications-mode "erc-desktop-notifications" "" t) @@ -8971,7 +8965,7 @@ that subcommand. ;;;;;; erc-ezb-add-session erc-ezb-end-of-session-list erc-ezb-init-session-list ;;;;;; erc-ezb-identify erc-ezb-notice-autodetect erc-ezb-lookup-action ;;;;;; erc-ezb-get-login erc-cmd-ezb) "erc-ezbounce" "erc/erc-ezbounce.el" -;;;;;; (20592 26321 0 0)) +;;;;;; (20591 33616 766161 665000)) ;;; Generated autoloads from erc/erc-ezbounce.el (autoload 'erc-cmd-ezb "erc-ezbounce" "\ @@ -9033,8 +9027,8 @@ Add EZBouncer convenience functions to ERC. ;;;*** -;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (20592 -;;;;;; 26321 0 0)) +;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (20591 +;;;;;; 33616 776163 920000)) ;;; Generated autoloads from erc/erc-fill.el (autoload 'erc-fill-mode "erc-fill" nil t) @@ -9047,7 +9041,7 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'. ;;;*** ;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd" -;;;;;; "erc/erc-identd.el" (20592 26321 0 0)) +;;;;;; "erc/erc-identd.el" (20591 33616 794740 81000)) ;;; Generated autoloads from erc/erc-identd.el (autoload 'erc-identd-mode "erc-identd") @@ -9069,7 +9063,7 @@ system. ;;;*** ;;;### (autoloads (erc-create-imenu-index) "erc-imenu" "erc/erc-imenu.el" -;;;;;; (20592 26321 0 0)) +;;;;;; (20591 33616 794740 81000)) ;;; Generated autoloads from erc/erc-imenu.el (autoload 'erc-create-imenu-index "erc-imenu" "\ @@ -9079,22 +9073,22 @@ system. ;;;*** -;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20592 26321 0 -;;;;;; 0)) +;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20591 33616 804732 +;;;;;; 878000)) ;;; Generated autoloads from erc/erc-join.el (autoload 'erc-autojoin-mode "erc-join" nil t) ;;;*** -;;;### (autoloads nil "erc-list" "erc/erc-list.el" (20592 26321 0 -;;;;;; 0)) +;;;### (autoloads nil "erc-list" "erc/erc-list.el" (20591 33616 824757 +;;;;;; 867000)) ;;; Generated autoloads from erc/erc-list.el (autoload 'erc-list-mode "erc-list") ;;;*** ;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log" -;;;;;; "erc/erc-log.el" (20600 16892 0 0)) +;;;;;; "erc/erc-log.el" (20593 22184 581574 0)) ;;; Generated autoloads from erc/erc-log.el (autoload 'erc-log-mode "erc-log" nil t) @@ -9126,7 +9120,7 @@ You can save every individual message by putting this function on ;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host ;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool ;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el" -;;;;;; (20592 26321 0 0)) +;;;;;; (20591 33616 834740 676000)) ;;; Generated autoloads from erc/erc-match.el (autoload 'erc-match-mode "erc-match") @@ -9172,15 +9166,15 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'. ;;;*** -;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (20592 26321 0 -;;;;;; 0)) +;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (20591 33616 844710 +;;;;;; 904000)) ;;; Generated autoloads from erc/erc-menu.el (autoload 'erc-menu-mode "erc-menu" nil t) ;;;*** ;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el" -;;;;;; (20592 26321 0 0)) +;;;;;; (20591 33616 854733 799000)) ;;; Generated autoloads from erc/erc-netsplit.el (autoload 'erc-netsplit-mode "erc-netsplit") @@ -9192,7 +9186,7 @@ Show who's gone. ;;;*** ;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks" -;;;;;; "erc/erc-networks.el" (20592 26321 0 0)) +;;;;;; "erc/erc-networks.el" (20591 33616 854733 799000)) ;;; Generated autoloads from erc/erc-networks.el (autoload 'erc-determine-network "erc-networks" "\ @@ -9210,7 +9204,7 @@ Interactively select a server to connect to using `erc-server-alist'. ;;;*** ;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify" -;;;;;; "erc/erc-notify.el" (20592 26321 0 0)) +;;;;;; "erc/erc-notify.el" (20591 33616 864734 46000)) ;;; Generated autoloads from erc/erc-notify.el (autoload 'erc-notify-mode "erc-notify" nil t) @@ -9228,36 +9222,37 @@ with args, toggle notify status of people. ;;;*** -;;;### (autoloads nil "erc-page" "erc/erc-page.el" (20592 26321 0 -;;;;;; 0)) +;;;### (autoloads nil "erc-page" "erc/erc-page.el" (20591 33616 864734 +;;;;;; 46000)) ;;; Generated autoloads from erc/erc-page.el (autoload 'erc-page-mode "erc-page") ;;;*** -;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (20592 -;;;;;; 26321 0 0)) +;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (20591 +;;;;;; 33616 874723 983000)) ;;; Generated autoloads from erc/erc-pcomplete.el (autoload 'erc-completion-mode "erc-pcomplete" nil t) ;;;*** -;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (20592 26321 -;;;;;; 0 0)) +;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (20591 33616 +;;;;;; 874723 983000)) ;;; Generated autoloads from erc/erc-replace.el (autoload 'erc-replace-mode "erc-replace") ;;;*** -;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (20592 26321 0 -;;;;;; 0)) +;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (20591 33616 884730 +;;;;;; 605000)) ;;; Generated autoloads from erc/erc-ring.el (autoload 'erc-ring-mode "erc-ring" nil t) ;;;*** ;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode) -;;;;;; "erc-services" "erc/erc-services.el" (20592 26321 0 0)) +;;;;;; "erc-services" "erc/erc-services.el" (20591 33616 894723 +;;;;;; 303000)) ;;; Generated autoloads from erc/erc-services.el (autoload 'erc-services-mode "erc-services" nil t) @@ -9274,15 +9269,15 @@ When called interactively, read the password using `read-passwd'. ;;;*** -;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (20592 26321 -;;;;;; 0 0)) +;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (20591 33616 +;;;;;; 894723 303000)) ;;; Generated autoloads from erc/erc-sound.el (autoload 'erc-sound-mode "erc-sound") ;;;*** ;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el" -;;;;;; (20592 26321 0 0)) +;;;;;; (20591 33616 894723 303000)) ;;; Generated autoloads from erc/erc-speedbar.el (autoload 'erc-speedbar-browser "erc-speedbar" "\ @@ -9293,22 +9288,22 @@ This will add a speedbar major display mode. ;;;*** -;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (20592 -;;;;;; 26321 0 0)) +;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (20591 +;;;;;; 33616 904733 437000)) ;;; Generated autoloads from erc/erc-spelling.el (autoload 'erc-spelling-mode "erc-spelling" nil t) ;;;*** -;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (20600 16892 -;;;;;; 0 0)) +;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (20593 22184 +;;;;;; 581574 0)) ;;; Generated autoloads from erc/erc-stamp.el (autoload 'erc-timestamp-mode "erc-stamp" nil t) ;;;*** ;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el" -;;;;;; (20592 26321 0 0)) +;;;;;; (20591 33616 924730 373000)) ;;; Generated autoloads from erc/erc-track.el (defvar erc-track-minor-mode nil "\ @@ -9334,7 +9329,8 @@ keybindings will not do anything useful. ;;;*** ;;;### (autoloads (erc-truncate-buffer erc-truncate-buffer-to-size) -;;;;;; "erc-truncate" "erc/erc-truncate.el" (20592 26321 0 0)) +;;;;;; "erc-truncate" "erc/erc-truncate.el" (20591 33616 934716 +;;;;;; 526000)) ;;; Generated autoloads from erc/erc-truncate.el (autoload 'erc-truncate-mode "erc-truncate" nil t) @@ -9354,7 +9350,7 @@ Meant to be used in hooks, like `erc-insert-post-hook'. ;;;*** ;;;### (autoloads (erc-xdcc-add-file) "erc-xdcc" "erc/erc-xdcc.el" -;;;;;; (20592 26321 0 0)) +;;;;;; (20591 33616 934716 526000)) ;;; Generated autoloads from erc/erc-xdcc.el (autoload 'erc-xdcc-mode "erc-xdcc") @@ -9367,7 +9363,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" (20577 48876 0 0)) +;;;;;; "ert" "emacs-lisp/ert.el" (20576 42138 697312 0)) ;;; Generated autoloads from emacs-lisp/ert.el (autoload 'ert-deftest "ert" "\ @@ -9433,7 +9429,7 @@ Display the documentation for TEST-OR-TEST-NAME (a symbol or ert-test). ;;;*** ;;;### (autoloads (ert-kill-all-test-buffers) "ert-x" "emacs-lisp/ert-x.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20576 42138 697312 0)) ;;; Generated autoloads from emacs-lisp/ert-x.el (put 'ert-with-test-buffer 'lisp-indent-function 1) @@ -9445,8 +9441,8 @@ Kill all test buffers that are still live. ;;;*** -;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20600 -;;;;;; 16892 0 0)) +;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20593 +;;;;;; 22184 581574 0)) ;;; Generated autoloads from eshell/esh-mode.el (autoload 'eshell-mode "esh-mode" "\ @@ -9459,7 +9455,7 @@ Emacs shell interactive mode. ;;;*** ;;;### (autoloads (eshell-command-result eshell-command eshell) "eshell" -;;;;;; "eshell/eshell.el" (20577 48876 0 0)) +;;;;;; "eshell/eshell.el" (20577 33959 40183 0)) ;;; Generated autoloads from eshell/eshell.el (autoload 'eshell "eshell" "\ @@ -9500,7 +9496,7 @@ corresponding to a successful execution. ;;;;;; visit-tags-table tags-table-mode find-tag-default-function ;;;;;; find-tag-hook tags-add-tables tags-compression-info-list ;;;;;; tags-table-list tags-case-fold-search) "etags" "progmodes/etags.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20478 3673 653810 0)) ;;; Generated autoloads from progmodes/etags.el (defvar tags-file-name nil "\ @@ -9818,7 +9814,7 @@ for \\[find-tag] (which see). ;;;;;; ethio-fidel-to-sera-marker ethio-fidel-to-sera-region ethio-fidel-to-sera-buffer ;;;;;; ethio-sera-to-fidel-marker ethio-sera-to-fidel-region ethio-sera-to-fidel-buffer ;;;;;; setup-ethiopic-environment-internal) "ethio-util" "language/ethio-util.el" -;;;;;; (20356 35090 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from language/ethio-util.el (autoload 'setup-ethiopic-environment-internal "ethio-util" "\ @@ -9988,7 +9984,7 @@ With ARG, insert that many delimiters. ;;;### (autoloads (eudc-load-eudc eudc-query-form eudc-expand-inline ;;;;;; eudc-get-phone eudc-get-email eudc-set-server) "eudc" "net/eudc.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20478 3673 653810 0)) ;;; Generated autoloads from net/eudc.el (autoload 'eudc-set-server "eudc" "\ @@ -10044,7 +10040,7 @@ This does nothing except loading eudc by autoload side-effect. ;;;### (autoloads (eudc-display-jpeg-as-button eudc-display-jpeg-inline ;;;;;; eudc-display-sound eudc-display-mail eudc-display-url eudc-display-generic-binary) -;;;;;; "eudc-bob" "net/eudc-bob.el" (20244 35516 0 0)) +;;;;;; "eudc-bob" "net/eudc-bob.el" (20355 10021 546955 0)) ;;; Generated autoloads from net/eudc-bob.el (autoload 'eudc-display-generic-binary "eudc-bob" "\ @@ -10080,7 +10076,7 @@ Display a button for the JPEG DATA. ;;;*** ;;;### (autoloads (eudc-try-bbdb-insert eudc-insert-record-at-point-into-bbdb) -;;;;;; "eudc-export" "net/eudc-export.el" (20244 35516 0 0)) +;;;;;; "eudc-export" "net/eudc-export.el" (20355 10021 546955 0)) ;;; Generated autoloads from net/eudc-export.el (autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\ @@ -10097,7 +10093,7 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a record. ;;;*** ;;;### (autoloads (eudc-edit-hotlist) "eudc-hotlist" "net/eudc-hotlist.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from net/eudc-hotlist.el (autoload 'eudc-edit-hotlist "eudc-hotlist" "\ @@ -10107,8 +10103,8 @@ Edit the hotlist of directory servers in a specialized buffer. ;;;*** -;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20452 -;;;;;; 43334 0 0)) +;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20453 +;;;;;; 5437 764254 0)) ;;; Generated autoloads from emacs-lisp/ewoc.el (autoload 'ewoc-create "ewoc" "\ @@ -10137,7 +10133,7 @@ fourth arg NOSEP non-nil inhibits this. ;;;### (autoloads (executable-make-buffer-file-executable-if-script-p ;;;;;; executable-self-display executable-set-magic executable-interpret ;;;;;; executable-command-find-posix-p) "executable" "progmodes/executable.el" -;;;;;; (20535 44414 0 0)) +;;;;;; (20533 6181 437016 717000)) ;;; Generated autoloads from progmodes/executable.el (autoload 'executable-command-find-posix-p "executable" "\ @@ -10180,7 +10176,7 @@ file modes. ;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot ;;;;;; expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from expand.el (autoload 'expand-add-abbrevs "expand" "\ @@ -10229,8 +10225,8 @@ This is used only in conjunction with `expand-add-abbrevs'. ;;;*** -;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (20567 31133 -;;;;;; 0 0)) +;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (20566 63671 +;;;;;; 243798 0)) ;;; Generated autoloads from progmodes/f90.el (autoload 'f90-mode "f90" "\ @@ -10300,8 +10296,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" (20511 -;;;;;; 52965 0 0)) +;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (20622 +;;;;;; 22438 32851 0)) ;;; Generated autoloads from face-remap.el (autoload 'face-remap-add-relative "face-remap" "\ @@ -10384,7 +10380,9 @@ See `text-scale-increase' for more details. (define-key ctl-x-map [(control ?0)] 'text-scale-adjust) (autoload 'text-scale-adjust "face-remap" "\ -Increase or decrease the height of the default face in the current buffer. +Adjust the height of the default face by INC. + +INC may be passed as a numeric prefix argument. The actual adjustment made depends on the final component of the key-binding used to invoke the command, with all modifiers removed: @@ -10393,9 +10391,11 @@ key-binding used to invoke the command, with all modifiers removed: - Decrease the default face height by one step 0 Reset the default face height to the global default -Then, continue to read input events and further adjust the face -height as long as the input event read (with all modifiers removed) -is one of the above. +When adjusting with `+' or `-', continue to read input events and +further adjust the face height as long as the input event read +\(with all modifiers removed) is `+' or `-'. + +When adjusting with `0', immediately finish. Each step scales the height of the default face by the variable `text-scale-mode-step' (a negative number of steps decreases the @@ -10460,8 +10460,8 @@ Besides the choice of face, it is the same as `buffer-face-mode'. ;;;### (autoloads (feedmail-queue-reminder feedmail-run-the-queue ;;;;;; feedmail-run-the-queue-global-prompt feedmail-run-the-queue-no-prompts -;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (20567 31133 -;;;;;; 0 0)) +;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (20566 63671 +;;;;;; 243798 0)) ;;; Generated autoloads from mail/feedmail.el (autoload 'feedmail-send-it "feedmail" "\ @@ -10516,7 +10516,7 @@ you can set `feedmail-queue-reminder-alist' to nil. ;;;### (autoloads (ffap-bindings ffap-guess-file-name-at-point dired-at-point ;;;;;; ffap-at-mouse ffap-menu find-file-at-point ffap-next) "ffap" -;;;;;; "ffap.el" (20600 16892 0 0)) +;;;;;; "ffap.el" (20595 63909 923329 0)) ;;; Generated autoloads from ffap.el (autoload 'ffap-next "ffap" "\ @@ -10582,7 +10582,7 @@ Evaluate the forms in variable `ffap-bindings'. ;;;### (autoloads (file-cache-minibuffer-complete file-cache-add-directory-recursively ;;;;;; file-cache-add-directory-using-locate file-cache-add-directory-using-find ;;;;;; file-cache-add-file file-cache-add-directory-list file-cache-add-directory) -;;;;;; "filecache" "filecache.el" (20244 35516 0 0)) +;;;;;; "filecache" "filecache.el" (20355 10021 546955 0)) ;;; Generated autoloads from filecache.el (autoload 'file-cache-add-directory "filecache" "\ @@ -10642,8 +10642,8 @@ the name is considered already unique; only the second substitution ;;;;;; copy-file-locals-to-dir-locals delete-dir-local-variable ;;;;;; add-dir-local-variable delete-file-local-variable-prop-line ;;;;;; add-file-local-variable-prop-line delete-file-local-variable -;;;;;; add-file-local-variable) "files-x" "files-x.el" (20356 35090 -;;;;;; 0 0)) +;;;;;; add-file-local-variable) "files-x" "files-x.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from files-x.el (autoload 'add-file-local-variable "files-x" "\ @@ -10708,8 +10708,8 @@ Copy directory-local variables to the -*- line. ;;;*** -;;;### (autoloads (filesets-init) "filesets" "filesets.el" (20567 -;;;;;; 31133 0 0)) +;;;### (autoloads (filesets-init) "filesets" "filesets.el" (20614 +;;;;;; 54428 654267 0)) ;;; Generated autoloads from filesets.el (autoload 'filesets-init "filesets" "\ @@ -10720,8 +10720,8 @@ Set up hooks, load the cache file -- if existing -- and build the menu. ;;;*** -;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from find-cmd.el (autoload 'find-cmd "find-cmd" "\ @@ -10741,7 +10741,7 @@ result is a string that should be ready for the command line. ;;;*** ;;;### (autoloads (find-grep-dired find-name-dired find-dired) "find-dired" -;;;;;; "find-dired.el" (20244 35516 0 0)) +;;;;;; "find-dired.el" (20355 10021 546955 0)) ;;; Generated autoloads from find-dired.el (autoload 'find-dired "find-dired" "\ @@ -10781,7 +10781,7 @@ use in place of \"-ls\" as the final argument. ;;;### (autoloads (ff-mouse-find-other-file-other-window ff-mouse-find-other-file ;;;;;; ff-find-other-file ff-get-other-file ff-special-constructs) -;;;;;; "find-file" "find-file.el" (20412 11425 0 0)) +;;;;;; "find-file" "find-file.el" (20387 44199 24128 0)) ;;; Generated autoloads from find-file.el (defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) (match-end 2)))) "\ @@ -10877,7 +10877,7 @@ Visit the file you click on in another window. ;;;;;; find-variable find-variable-noselect find-function-other-frame ;;;;;; find-function-other-window find-function find-function-noselect ;;;;;; find-function-search-for-symbol find-library) "find-func" -;;;;;; "emacs-lisp/find-func.el" (20511 52965 0 0)) +;;;;;; "emacs-lisp/find-func.el" (20497 6436 957082 0)) ;;; Generated autoloads from emacs-lisp/find-func.el (autoload 'find-library "find-func" "\ @@ -11036,8 +11036,8 @@ Define some key bindings for the find-function family of functions. ;;;*** ;;;### (autoloads (find-lisp-find-dired-filter find-lisp-find-dired-subdirectories -;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (20244 35516 -;;;;;; 0 0)) +;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from find-lisp.el (autoload 'find-lisp-find-dired "find-lisp" "\ @@ -11058,7 +11058,7 @@ Change the filter on a find-lisp-find-dired buffer to REGEXP. ;;;*** ;;;### (autoloads (finder-by-keyword finder-commentary finder-list-keywords) -;;;;;; "finder" "finder.el" (20244 35516 0 0)) +;;;;;; "finder" "finder.el" (20355 10021 546955 0)) ;;; Generated autoloads from finder.el (autoload 'finder-list-keywords "finder" "\ @@ -11080,7 +11080,7 @@ Find packages matching a given keyword. ;;;*** ;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl" -;;;;;; "flow-ctrl.el" (20567 31133 0 0)) +;;;;;; "flow-ctrl.el" (20566 63671 243798 0)) ;;; Generated autoloads from flow-ctrl.el (autoload 'enable-flow-control "flow-ctrl" "\ @@ -11102,7 +11102,7 @@ to get the effect of a C-q. ;;;*** ;;;### (autoloads (fill-flowed fill-flowed-encode) "flow-fill" "gnus/flow-fill.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/flow-fill.el (autoload 'fill-flowed-encode "flow-fill" "\ @@ -11118,8 +11118,8 @@ to get the effect of a C-q. ;;;*** ;;;### (autoloads (flymake-find-file-hook flymake-mode-off flymake-mode-on -;;;;;; flymake-mode) "flymake" "progmodes/flymake.el" (20600 16892 -;;;;;; 0 0)) +;;;;;; flymake-mode) "flymake" "progmodes/flymake.el" (20611 52135 +;;;;;; 109136 0)) ;;; Generated autoloads from progmodes/flymake.el (autoload 'flymake-mode "flymake" "\ @@ -11149,7 +11149,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" (20567 31133 0 0)) +;;;;;; "flyspell" "textmodes/flyspell.el" (20566 63671 243798 0)) ;;; Generated autoloads from textmodes/flyspell.el (autoload 'flyspell-prog-mode "flyspell" "\ @@ -11221,7 +11221,7 @@ Flyspell whole buffer. ;;;### (autoloads (follow-delete-other-windows-and-split follow-mode ;;;;;; turn-off-follow-mode turn-on-follow-mode) "follow" "follow.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20501 3499 284800 0)) ;;; Generated autoloads from follow.el (autoload 'turn-on-follow-mode "follow" "\ @@ -11289,8 +11289,8 @@ selected if the original window is the first one in the frame. ;;;*** -;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (20511 -;;;;;; 52965 0 0)) +;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (20478 +;;;;;; 3673 653810 0)) ;;; Generated autoloads from mail/footnote.el (autoload 'footnote-mode "footnote" "\ @@ -11309,7 +11309,7 @@ play around with the following keys: ;;;*** ;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode) -;;;;;; "forms" "forms.el" (20428 57510 0 0)) +;;;;;; "forms" "forms.el" (20427 14766 970343 0)) ;;; Generated autoloads from forms.el (autoload 'forms-mode "forms" "\ @@ -11346,7 +11346,7 @@ Visit a file in Forms mode in other window. ;;;*** ;;;### (autoloads (fortran-mode) "fortran" "progmodes/fortran.el" -;;;;;; (20446 34252 0 0)) +;;;;;; (20438 24024 724594 589000)) ;;; Generated autoloads from progmodes/fortran.el (autoload 'fortran-mode "fortran" "\ @@ -11424,8 +11424,8 @@ with no args, if that value is non-nil. ;;;*** ;;;### (autoloads (fortune fortune-to-signature fortune-compile fortune-from-region -;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (20244 35516 -;;;;;; 0 0)) +;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from play/fortune.el (autoload 'fortune-add-fortune "fortune" "\ @@ -11474,7 +11474,7 @@ and choose the directory as the fortune-file. ;;;*** ;;;### (autoloads (gdb gdb-enable-debug) "gdb-mi" "progmodes/gdb-mi.el" -;;;;;; (20539 37147 0 0)) +;;;;;; (20609 10405 476026 0)) ;;; Generated autoloads from progmodes/gdb-mi.el (defvar gdb-enable-debug nil "\ @@ -11552,8 +11552,8 @@ detailed description of this mode. ;;;*** ;;;### (autoloads (generic-make-keywords-list generic-mode generic-mode-internal -;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (20412 -;;;;;; 11425 0 0)) +;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (20406 +;;;;;; 8611 875037 0)) ;;; Generated autoloads from emacs-lisp/generic.el (defvar generic-mode-list nil "\ @@ -11632,7 +11632,7 @@ regular expression that can be used as an element of ;;;*** ;;;### (autoloads (glasses-mode) "glasses" "progmodes/glasses.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20478 3673 653810 0)) ;;; Generated autoloads from progmodes/glasses.el (autoload 'glasses-mode "glasses" "\ @@ -11648,7 +11648,7 @@ add virtual separators (like underscores) at places they belong to. ;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error ;;;;;; gmm-message gmm-regexp-concat) "gmm-utils" "gnus/gmm-utils.el" -;;;;;; (20318 5885 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/gmm-utils.el (autoload 'gmm-regexp-concat "gmm-utils" "\ @@ -11703,8 +11703,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" (20553 2323 0 -;;;;;; 0)) +;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (20552 30761 +;;;;;; 207103 0)) ;;; Generated autoloads from gnus/gnus.el (when (fboundp 'custom-autoload) (custom-autoload 'gnus-select-method "gnus")) @@ -11757,7 +11757,7 @@ prompt the user for the name of an NNTP server to use. ;;;;;; gnus-agent-get-undownloaded-list gnus-agent-delete-group ;;;;;; gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize ;;;;;; gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent" -;;;;;; "gnus/gnus-agent.el" (20517 31338 0 0)) +;;;;;; "gnus/gnus-agent.el" (20518 12580 46478 0)) ;;; Generated autoloads from gnus/gnus-agent.el (autoload 'gnus-unplugged "gnus-agent" "\ @@ -11848,7 +11848,7 @@ If CLEAN, obsolete (ignore). ;;;*** ;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el" -;;;;;; (20579 15299 0 0)) +;;;;;; (20578 54821 719276 0)) ;;; Generated autoloads from gnus/gnus-art.el (autoload 'gnus-article-prepare-display "gnus-art" "\ @@ -11859,7 +11859,8 @@ Make the current buffer look like a nice article. ;;;*** ;;;### (autoloads (gnus-bookmark-bmenu-list gnus-bookmark-jump gnus-bookmark-set) -;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (20244 35516 0 0)) +;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (20355 10021 546955 +;;;;;; 0)) ;;; Generated autoloads from gnus/gnus-bookmark.el (autoload 'gnus-bookmark-set "gnus-bookmark" "\ @@ -11884,8 +11885,8 @@ deletion, or > if it is flagged for displaying. ;;;### (autoloads (gnus-cache-delete-group gnus-cache-rename-group ;;;;;; gnus-cache-generate-nov-databases gnus-cache-generate-active -;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (20244 -;;;;;; 35516 0 0)) +;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from gnus/gnus-cache.el (autoload 'gnus-jog-cache "gnus-cache" "\ @@ -11927,7 +11928,7 @@ supported. ;;;*** ;;;### (autoloads (gnus-delay-initialize gnus-delay-send-queue gnus-delay-article) -;;;;;; "gnus-delay" "gnus/gnus-delay.el" (20244 35516 0 0)) +;;;;;; "gnus-delay" "gnus/gnus-delay.el" (20355 10021 546955 0)) ;;; Generated autoloads from gnus/gnus-delay.el (autoload 'gnus-delay-article "gnus-delay" "\ @@ -11963,7 +11964,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil. ;;;*** ;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d) -;;;;;; "gnus-diary" "gnus/gnus-diary.el" (20244 35516 0 0)) +;;;;;; "gnus-diary" "gnus/gnus-diary.el" (20355 10021 546955 0)) ;;; Generated autoloads from gnus/gnus-diary.el (autoload 'gnus-user-format-function-d "gnus-diary" "\ @@ -11979,7 +11980,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil. ;;;*** ;;;### (autoloads (turn-on-gnus-dired-mode) "gnus-dired" "gnus/gnus-dired.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/gnus-dired.el (autoload 'turn-on-gnus-dired-mode "gnus-dired" "\ @@ -11990,7 +11991,7 @@ Convenience method to turn on gnus-dired-mode. ;;;*** ;;;### (autoloads (gnus-draft-reminder) "gnus-draft" "gnus/gnus-draft.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/gnus-draft.el (autoload 'gnus-draft-reminder "gnus-draft" "\ @@ -12002,8 +12003,8 @@ Reminder user if there are unsent drafts. ;;;### (autoloads (gnus-convert-png-to-face gnus-convert-face-to-png ;;;;;; gnus-face-from-file gnus-x-face-from-file gnus-insert-random-x-face-header -;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (20550 -;;;;;; 14882 0 0)) +;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (20549 +;;;;;; 54573 979353 0)) ;;; Generated autoloads from gnus/gnus-fun.el (autoload 'gnus-random-x-face "gnus-fun" "\ @@ -12048,7 +12049,8 @@ FILE should be a PNG file that's 48x48 and smaller than or equal to ;;;*** ;;;### (autoloads (gnus-treat-mail-gravatar gnus-treat-from-gravatar) -;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (20244 35516 0 0)) +;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (20355 10021 546955 +;;;;;; 0)) ;;; Generated autoloads from gnus/gnus-gravatar.el (autoload 'gnus-treat-from-gravatar "gnus-gravatar" "\ @@ -12066,7 +12068,7 @@ If gravatars are already displayed, remove them. ;;;*** ;;;### (autoloads (gnus-fetch-group-other-frame gnus-fetch-group) -;;;;;; "gnus-group" "gnus/gnus-group.el" (20553 63503 0 0)) +;;;;;; "gnus-group" "gnus/gnus-group.el" (20553 51627 169867 0)) ;;; Generated autoloads from gnus/gnus-group.el (autoload 'gnus-fetch-group "gnus-group" "\ @@ -12084,7 +12086,7 @@ Pop up a frame and enter GROUP. ;;;*** ;;;### (autoloads (gnus-html-prefetch-images gnus-article-html) "gnus-html" -;;;;;; "gnus/gnus-html.el" (20276 3849 0 0)) +;;;;;; "gnus/gnus-html.el" (20355 10021 546955 0)) ;;; Generated autoloads from gnus/gnus-html.el (autoload 'gnus-article-html "gnus-html" "\ @@ -12100,7 +12102,7 @@ Pop up a frame and enter GROUP. ;;;*** ;;;### (autoloads (gnus-batch-score) "gnus-kill" "gnus/gnus-kill.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20495 51111 757560 0)) ;;; Generated autoloads from gnus/gnus-kill.el (defalias 'gnus-batch-kill 'gnus-batch-score) @@ -12115,7 +12117,7 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score ;;;### (autoloads (gnus-mailing-list-mode gnus-mailing-list-insinuate ;;;;;; turn-on-gnus-mailing-list-mode) "gnus-ml" "gnus/gnus-ml.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/gnus-ml.el (autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\ @@ -12140,7 +12142,7 @@ Minor mode for providing mailing-list commands. ;;;### (autoloads (gnus-group-split-fancy gnus-group-split gnus-group-split-update ;;;;;; gnus-group-split-setup) "gnus-mlspl" "gnus/gnus-mlspl.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/gnus-mlspl.el (autoload 'gnus-group-split-setup "gnus-mlspl" "\ @@ -12241,7 +12243,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" (20600 16892 0 0)) +;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20593 22184 581574 0)) ;;; Generated autoloads from gnus/gnus-msg.el (autoload 'gnus-msg-mail "gnus-msg" "\ @@ -12268,7 +12270,7 @@ Like `message-reply'. ;;;*** ;;;### (autoloads (gnus-notifications) "gnus-notifications" "gnus/gnus-notifications.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20593 22184 581574 0)) ;;; Generated autoloads from gnus/gnus-notifications.el (autoload 'gnus-notifications "gnus-notifications" "\ @@ -12286,7 +12288,7 @@ This is typically a function to add in ;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon ;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el" -;;;;;; (20523 63054 0 0)) +;;;;;; (20523 62082 997685 0)) ;;; Generated autoloads from gnus/gnus-picon.el (autoload 'gnus-treat-from-picon "gnus-picon" "\ @@ -12313,7 +12315,7 @@ If picons are already displayed, remove them. ;;;;;; gnus-sorted-nintersection gnus-sorted-range-intersection ;;;;;; gnus-sorted-intersection gnus-intersection gnus-sorted-complement ;;;;;; gnus-sorted-ndifference gnus-sorted-difference) "gnus-range" -;;;;;; "gnus/gnus-range.el" (20544 52783 0 0)) +;;;;;; "gnus/gnus-range.el" (20544 36659 880486 0)) ;;; Generated autoloads from gnus/gnus-range.el (autoload 'gnus-sorted-difference "gnus-range" "\ @@ -12381,7 +12383,8 @@ Add NUM into sorted LIST by side effect. ;;;*** ;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize) -;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20544 52783 0 0)) +;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20544 36659 880486 +;;;;;; 0)) ;;; Generated autoloads from gnus/gnus-registry.el (autoload 'gnus-registry-initialize "gnus-registry" "\ @@ -12397,8 +12400,8 @@ Install the registry hooks. ;;;*** ;;;### (autoloads (gnus-sieve-article-add-rule gnus-sieve-generate -;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (20244 -;;;;;; 35516 0 0)) +;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from gnus/gnus-sieve.el (autoload 'gnus-sieve-update "gnus-sieve" "\ @@ -12426,7 +12429,7 @@ See the documentation for these variables and functions for details. ;;;*** ;;;### (autoloads (gnus-update-format) "gnus-spec" "gnus/gnus-spec.el" -;;;;;; (20460 33749 0 0)) +;;;;;; (20458 56750 651721 0)) ;;; Generated autoloads from gnus/gnus-spec.el (autoload 'gnus-update-format "gnus-spec" "\ @@ -12437,7 +12440,7 @@ Update the format specification near point. ;;;*** ;;;### (autoloads (gnus-declare-backend) "gnus-start" "gnus/gnus-start.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20614 54428 654267 0)) ;;; Generated autoloads from gnus/gnus-start.el (autoload 'gnus-declare-backend "gnus-start" "\ @@ -12448,7 +12451,7 @@ Declare back end NAME with ABILITIES as a Gnus back end. ;;;*** ;;;### (autoloads (gnus-summary-bookmark-jump) "gnus-sum" "gnus/gnus-sum.el" -;;;;;; (20540 61982 0 0)) +;;;;;; (20540 39589 424586 0)) ;;; Generated autoloads from gnus/gnus-sum.el (autoload 'gnus-summary-bookmark-jump "gnus-sum" "\ @@ -12460,7 +12463,7 @@ BOOKMARK is a bookmark name or a bookmark record. ;;;*** ;;;### (autoloads (gnus-sync-install-hooks gnus-sync-initialize) -;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20600 16892 0 0)) +;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20593 22184 581574 0)) ;;; Generated autoloads from gnus/gnus-sync.el (autoload 'gnus-sync-initialize "gnus-sync" "\ @@ -12476,7 +12479,7 @@ Install the sync hooks. ;;;*** ;;;### (autoloads (gnus-add-configuration) "gnus-win" "gnus/gnus-win.el" -;;;;;; (20448 36271 0 0)) +;;;;;; (20447 49522 409090 0)) ;;; Generated autoloads from gnus/gnus-win.el (autoload 'gnus-add-configuration "gnus-win" "\ @@ -12487,7 +12490,7 @@ Add the window configuration CONF to `gnus-buffer-configuration'. ;;;*** ;;;### (autoloads (gnutls-min-prime-bits) "gnutls" "net/gnutls.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20476 31768 298871 0)) ;;; Generated autoloads from net/gnutls.el (defvar gnutls-min-prime-bits 256 "\ @@ -12503,8 +12506,8 @@ A value of nil says to use the default GnuTLS value.") ;;;*** -;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20550 14882 -;;;;;; 0 0)) +;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20626 19492 +;;;;;; 855904 0)) ;;; Generated autoloads from play/gomoku.el (autoload 'gomoku "gomoku" "\ @@ -12531,8 +12534,8 @@ Use \\[describe-mode] for more info. ;;;*** ;;;### (autoloads (goto-address-prog-mode goto-address-mode goto-address -;;;;;; goto-address-at-point) "goto-addr" "net/goto-addr.el" (20567 -;;;;;; 31133 0 0)) +;;;;;; goto-address-at-point) "goto-addr" "net/goto-addr.el" (20566 +;;;;;; 63671 243798 0)) ;;; Generated autoloads from net/goto-addr.el (define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point "22.1") @@ -12574,7 +12577,7 @@ Like `goto-address-mode', but only for comments and strings. ;;;*** ;;;### (autoloads (gravatar-retrieve-synchronously gravatar-retrieve) -;;;;;; "gravatar" "gnus/gravatar.el" (20290 33419 0 0)) +;;;;;; "gravatar" "gnus/gravatar.el" (20355 10021 546955 0)) ;;; Generated autoloads from gnus/gravatar.el (autoload 'gravatar-retrieve "gravatar" "\ @@ -12592,8 +12595,8 @@ Retrieve MAIL-ADDRESS gravatar and returns it. ;;;### (autoloads (zrgrep rgrep lgrep grep-find grep grep-mode grep-compute-defaults ;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command -;;;;;; grep-window-height) "grep" "progmodes/grep.el" (20577 48876 -;;;;;; 0 0)) +;;;;;; grep-window-height) "grep" "progmodes/grep.el" (20572 16038 +;;;;;; 402143 0)) ;;; Generated autoloads from progmodes/grep.el (defvar grep-window-height nil "\ @@ -12756,7 +12759,8 @@ file name to `*.gz', and sets `grep-highlight-matches' to `always'. ;;;*** -;;;### (autoloads (gs-load-image) "gs" "gs.el" (20244 35516 0 0)) +;;;### (autoloads (gs-load-image) "gs" "gs.el" (20355 10021 546955 +;;;;;; 0)) ;;; Generated autoloads from gs.el (autoload 'gs-load-image "gs" "\ @@ -12770,8 +12774,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" (20539 37147 -;;;;;; 0 0)) +;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20614 55343 +;;;;;; 384716 548000)) ;;; Generated autoloads from progmodes/gud.el (autoload 'gud-gdb "gud" "\ @@ -12861,7 +12865,7 @@ it if ARG is omitted or nil. ;;;### (autoloads (setf gv-define-simple-setter gv-define-setter ;;;;;; gv--defun-declaration gv-define-expander gv-letplace gv-get) -;;;;;; "gv" "emacs-lisp/gv.el" (20579 15299 0 0)) +;;;;;; "gv" "emacs-lisp/gv.el" (20608 20265 413008 0)) ;;; Generated autoloads from emacs-lisp/gv.el (autoload 'gv-get "gv" "\ @@ -12950,8 +12954,8 @@ The return value is the last VAL in the list. ;;;*** -;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (20567 -;;;;;; 31133 0 0)) +;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (20566 +;;;;;; 63671 243798 0)) ;;; Generated autoloads from play/handwrite.el (autoload 'handwrite "handwrite" "\ @@ -12969,7 +12973,7 @@ Variables: `handwrite-linespace' (default 12) ;;;*** ;;;### (autoloads (hanoi-unix-64 hanoi-unix hanoi) "hanoi" "play/hanoi.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20478 3673 653810 0)) ;;; Generated autoloads from play/hanoi.el (autoload 'hanoi "hanoi" "\ @@ -12998,7 +13002,7 @@ to be updated. ;;;### (autoloads (mail-check-payment mail-add-payment-async mail-add-payment ;;;;;; hashcash-verify-payment hashcash-insert-payment-async hashcash-insert-payment) -;;;;;; "hashcash" "mail/hashcash.el" (20356 35090 0 0)) +;;;;;; "hashcash" "mail/hashcash.el" (20355 10021 546955 0)) ;;; Generated autoloads from mail/hashcash.el (autoload 'hashcash-insert-payment "hashcash" "\ @@ -13043,8 +13047,8 @@ Prefix arg sets default accept amount temporarily. ;;;### (autoloads (scan-buf-previous-region scan-buf-next-region ;;;;;; scan-buf-move-to-region help-at-pt-display-when-idle help-at-pt-set-timer ;;;;;; help-at-pt-cancel-timer display-local-help help-at-pt-kbd-string -;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (20244 35516 -;;;;;; 0 0)) +;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from help-at-pt.el (autoload 'help-at-pt-string "help-at-pt" "\ @@ -13174,7 +13178,7 @@ different regions. With numeric argument ARG, behaves like ;;;### (autoloads (doc-file-to-info doc-file-to-man describe-categories ;;;;;; describe-syntax describe-variable variable-at-point describe-function-1 ;;;;;; find-lisp-object-file-name help-C-file-name describe-function) -;;;;;; "help-fns" "help-fns.el" (20600 16892 0 0)) +;;;;;; "help-fns" "help-fns.el" (20601 16294 451653 0)) ;;; Generated autoloads from help-fns.el (autoload 'describe-function "help-fns" "\ @@ -13254,7 +13258,7 @@ Produce a texinfo buffer with sorted doc-strings from the DOC file. ;;;*** ;;;### (autoloads (three-step-help) "help-macro" "help-macro.el" -;;;;;; (20589 46442 0 0)) +;;;;;; (20589 25124 41923 0)) ;;; Generated autoloads from help-macro.el (defvar three-step-help nil "\ @@ -13271,7 +13275,7 @@ gives the window that lists the options.") ;;;### (autoloads (help-bookmark-jump help-xref-on-pp help-insert-xref-button ;;;;;; help-xref-button help-make-xrefs help-buffer help-setup-xref ;;;;;; help-mode-finish help-mode-setup help-mode) "help-mode" "help-mode.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20601 16294 451653 0)) ;;; Generated autoloads from help-mode.el (autoload 'help-mode "help-mode" "\ @@ -13371,7 +13375,7 @@ BOOKMARK is a bookmark name or a bookmark record. ;;;*** ;;;### (autoloads (Helper-help Helper-describe-bindings) "helper" -;;;;;; "emacs-lisp/helper.el" (20244 35516 0 0)) +;;;;;; "emacs-lisp/helper.el" (20355 10021 546955 0)) ;;; Generated autoloads from emacs-lisp/helper.el (autoload 'Helper-describe-bindings "helper" "\ @@ -13387,7 +13391,7 @@ Provide help for current mode. ;;;*** ;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl" -;;;;;; "hexl.el" (20523 63054 0 0)) +;;;;;; "hexl.el" (20523 62082 997685 0)) ;;; Generated autoloads from hexl.el (autoload 'hexl-mode "hexl" "\ @@ -13484,7 +13488,7 @@ This discards the buffer's undo information. ;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer ;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer ;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20593 22184 581574 0)) ;;; Generated autoloads from hi-lock.el (autoload 'hi-lock-mode "hi-lock" "\ @@ -13632,7 +13636,7 @@ be found in variable `hi-lock-interactive-patterns'. ;;;*** ;;;### (autoloads (hide-ifdef-mode) "hideif" "progmodes/hideif.el" -;;;;;; (20589 46442 0 0)) +;;;;;; (20588 4262 531841 0)) ;;; Generated autoloads from progmodes/hideif.el (autoload 'hide-ifdef-mode "hideif" "\ @@ -13676,7 +13680,7 @@ Several variables affect how the hiding is done: ;;;*** ;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from progmodes/hideshow.el (defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\ @@ -13742,8 +13746,8 @@ Unconditionally turn off `hs-minor-mode'. ;;;;;; highlight-compare-buffers highlight-changes-rotate-faces ;;;;;; highlight-changes-previous-change highlight-changes-next-change ;;;;;; highlight-changes-remove-highlight highlight-changes-visible-mode -;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (20244 -;;;;;; 35516 0 0)) +;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from hilit-chg.el (autoload 'highlight-changes-mode "hilit-chg" "\ @@ -13875,7 +13879,7 @@ See `highlight-changes-mode' for more information on Highlight-Changes mode. ;;;*** ;;;### (autoloads (make-hippie-expand-function hippie-expand) "hippie-exp" -;;;;;; "hippie-exp.el" (20585 55103 0 0)) +;;;;;; "hippie-exp.el" (20584 7212 455152 0)) ;;; Generated autoloads from hippie-exp.el (autoload 'hippie-expand "hippie-exp" "\ @@ -13900,7 +13904,7 @@ argument VERBOSE non-nil makes the function verbose. ;;;*** ;;;### (autoloads (global-hl-line-mode hl-line-mode) "hl-line" "hl-line.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from hl-line.el (autoload 'hl-line-mode "hl-line" "\ @@ -13953,7 +13957,7 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and ;;;;;; holiday-bahai-holidays holiday-islamic-holidays holiday-christian-holidays ;;;;;; holiday-hebrew-holidays holiday-other-holidays holiday-local-holidays ;;;;;; holiday-oriental-holidays holiday-general-holidays) "holidays" -;;;;;; "calendar/holidays.el" (20567 31133 0 0)) +;;;;;; "calendar/holidays.el" (20566 63671 243798 0)) ;;; Generated autoloads from calendar/holidays.el (define-obsolete-variable-alias 'general-holidays 'holiday-general-holidays "23.1") @@ -14101,8 +14105,8 @@ The optional LABEL is used to label the buffer created. ;;;*** -;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from gnus/html2text.el (autoload 'html2text "html2text" "\ @@ -14113,7 +14117,7 @@ Convert HTML to plain text in the current buffer. ;;;*** ;;;### (autoloads (htmlfontify-copy-and-link-dir htmlfontify-buffer) -;;;;;; "htmlfontify" "htmlfontify.el" (20577 48876 0 0)) +;;;;;; "htmlfontify" "htmlfontify.el" (20614 54428 654267 0)) ;;; Generated autoloads from htmlfontify.el (autoload 'htmlfontify-buffer "htmlfontify" "\ @@ -14146,8 +14150,8 @@ You may also want to set `hfy-page-header' and `hfy-page-footer'. ;;;*** ;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter -;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (20511 -;;;;;; 52965 0 0)) +;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (20478 +;;;;;; 3673 653810 0)) ;;; Generated autoloads from ibuf-macs.el (autoload 'define-ibuffer-column "ibuf-macs" "\ @@ -14236,7 +14240,7 @@ bound to the current value of the filter. ;;;*** ;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers) -;;;;;; "ibuffer" "ibuffer.el" (20577 48876 0 0)) +;;;;;; "ibuffer" "ibuffer.el" (20576 13312 649004 817000)) ;;; Generated autoloads from ibuffer.el (autoload 'ibuffer-list-buffers "ibuffer" "\ @@ -14277,7 +14281,7 @@ FORMATS is the value to use for `ibuffer-formats'. ;;;### (autoloads (icalendar-import-buffer icalendar-import-file ;;;;;; icalendar-export-region icalendar-export-file) "icalendar" -;;;;;; "calendar/icalendar.el" (20600 16892 0 0)) +;;;;;; "calendar/icalendar.el" (20593 22184 581574 0)) ;;; Generated autoloads from calendar/icalendar.el (autoload 'icalendar-export-file "icalendar" "\ @@ -14329,8 +14333,8 @@ buffer `*icalendar-errors*'. ;;;*** -;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20452 -;;;;;; 44311 0 0)) +;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20453 +;;;;;; 5437 764254 0)) ;;; Generated autoloads from icomplete.el (defvar icomplete-mode nil "\ @@ -14352,8 +14356,8 @@ the mode if ARG is omitted or nil. ;;;*** -;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (20356 35090 -;;;;;; 0 0)) +;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from progmodes/icon.el (autoload 'icon-mode "icon" "\ @@ -14394,7 +14398,7 @@ with no args, if that value is non-nil. ;;;*** ;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20572 16038 402143 0)) ;;; Generated autoloads from progmodes/idlw-shell.el (autoload 'idlwave-shell "idlw-shell" "\ @@ -14420,7 +14424,7 @@ See also the variable `idlwave-shell-prompt-pattern'. ;;;*** ;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20576 42138 697312 0)) ;;; Generated autoloads from progmodes/idlwave.el (autoload 'idlwave-mode "idlwave" "\ @@ -14554,8 +14558,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" (20592 -;;;;;; 26321 0 0)) +;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (20590 +;;;;;; 45996 129575 0)) ;;; Generated autoloads from ido.el (defvar ido-mode nil "\ @@ -14814,7 +14818,7 @@ DEF, if non-nil, is the default value. ;;;*** -;;;### (autoloads (ielm) "ielm" "ielm.el" (20567 31133 0 0)) +;;;### (autoloads (ielm) "ielm" "ielm.el" (20566 63671 243798 0)) ;;; Generated autoloads from ielm.el (autoload 'ielm "ielm" "\ @@ -14825,8 +14829,8 @@ Switches to the buffer `*ielm*', or creates it if it does not exist. ;;;*** -;;;### (autoloads (iimage-mode) "iimage" "iimage.el" (20276 3849 -;;;;;; 0 0)) +;;;### (autoloads (iimage-mode) "iimage" "iimage.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from iimage.el (define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1") @@ -14847,7 +14851,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'. ;;;;;; create-image image-type-auto-detected-p image-type-available-p ;;;;;; image-type image-type-from-file-name image-type-from-file-header ;;;;;; image-type-from-buffer image-type-from-data) "image" "image.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20613 59417 195100 163000)) ;;; Generated autoloads from image.el (autoload 'image-type-from-data "image" "\ @@ -15047,7 +15051,7 @@ If Emacs is compiled without ImageMagick support, this does nothing. ;;;;;; image-dired-jump-thumbnail-buffer image-dired-delete-tag ;;;;;; image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs ;;;;;; image-dired-dired-with-window-configuration image-dired-dired-toggle-marked-thumbs) -;;;;;; "image-dired" "image-dired.el" (20511 52965 0 0)) +;;;;;; "image-dired" "image-dired.el" (20478 3673 653810 0)) ;;; Generated autoloads from image-dired.el (autoload 'image-dired-dired-toggle-marked-thumbs "image-dired" "\ @@ -15185,7 +15189,7 @@ easy-to-use form. ;;;### (autoloads (auto-image-file-mode insert-image-file image-file-name-regexp ;;;;;; image-file-name-regexps image-file-name-extensions) "image-file" -;;;;;; "image-file.el" (20244 35516 0 0)) +;;;;;; "image-file.el" (20355 10021 546955 0)) ;;; Generated autoloads from image-file.el (defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\ @@ -15248,7 +15252,8 @@ An image file is one whose name has an extension in ;;;*** ;;;### (autoloads (image-bookmark-jump image-mode-as-text image-minor-mode -;;;;;; image-mode) "image-mode" "image-mode.el" (20580 46629 0 0)) +;;;;;; image-mode) "image-mode" "image-mode.el" (20580 10161 446444 +;;;;;; 0)) ;;; Generated autoloads from image-mode.el (autoload 'image-mode "image-mode" "\ @@ -15293,7 +15298,8 @@ on these modes. ;;;*** ;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar -;;;;;; imenu-sort-function) "imenu" "imenu.el" (20577 48876 0 0)) +;;;;;; imenu-sort-function) "imenu" "imenu.el" (20622 22438 32851 +;;;;;; 0)) ;;; Generated autoloads from imenu.el (defvar imenu-sort-function nil "\ @@ -15433,7 +15439,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" (20244 35516 0 0)) +;;;;;; "ind-util" "language/ind-util.el" (20355 10021 546955 0)) ;;; Generated autoloads from language/ind-util.el (autoload 'indian-compose-region "ind-util" "\ @@ -15464,7 +15470,7 @@ Convert old Emacs Devanagari characters to UCS. ;;;*** ;;;### (autoloads (inferior-lisp) "inf-lisp" "progmodes/inf-lisp.el" -;;;;;; (20585 55103 0 0)) +;;;;;; (20584 7212 455152 0)) ;;; Generated autoloads from progmodes/inf-lisp.el (autoload 'inferior-lisp "inf-lisp" "\ @@ -15486,7 +15492,8 @@ 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" (20567 31133 0 0)) +;;;;;; info info-other-window) "info" "info.el" (20623 43301 870757 +;;;;;; 0)) ;;; Generated autoloads from info.el (defcustom Info-default-directory-list (let* ((config-dir (file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name "../info" data-directory))) (if (file-directory-p dir) dir))) configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" "/usr/" "/opt/" "/"))) (suffixes '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/" "emacs/" "lib/" "lib/emacs/")) (standard-info-dirs (apply #'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx "info/")) suffixes))) (prune-directory-list dirs))) prefixes))) (dirs (if (member config-dir standard-info-dirs) (nconc standard-info-dirs (list config-dir)) (cons config-dir standard-info-dirs)))) (if (not (eq system-type 'windows-nt)) dirs (let* ((instdir (file-name-directory invocation-directory)) (dir1 (expand-file-name "../info/" instdir)) (dir2 (expand-file-name "../../../info/" instdir))) (cond ((file-exists-p dir1) (append dirs (list dir1))) ((file-exists-p dir2) (append dirs (list dir2))) (t dirs))))) "\ @@ -15696,7 +15703,7 @@ Go to Info buffer that displays MANUAL, creating it if none already exists. ;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file ;;;;;; info-lookup-symbol info-lookup-reset) "info-look" "info-look.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20474 44971 970015 0)) ;;; Generated autoloads from info-look.el (autoload 'info-lookup-reset "info-look" "\ @@ -15745,7 +15752,7 @@ Perform completion on file preceding point. ;;;### (autoloads (info-xref-docstrings info-xref-check-all-custom ;;;;;; info-xref-check-all info-xref-check) "info-xref" "info-xref.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20476 31768 298871 0)) ;;; Generated autoloads from info-xref.el (autoload 'info-xref-check "info-xref" "\ @@ -15828,7 +15835,8 @@ the sources handy. ;;;*** ;;;### (autoloads (batch-info-validate Info-validate Info-split Info-split-threshold -;;;;;; Info-tagify) "informat" "informat.el" (20244 35516 0 0)) +;;;;;; Info-tagify) "informat" "informat.el" (20355 10021 546955 +;;;;;; 0)) ;;; Generated autoloads from informat.el (autoload 'Info-tagify "informat" "\ @@ -15874,7 +15882,7 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\" ;;;*** ;;;### (autoloads (inversion-require-emacs) "inversion" "cedet/inversion.el" -;;;;;; (20592 26321 0 0)) +;;;;;; (20590 45996 129575 0)) ;;; Generated autoloads from cedet/inversion.el (autoload 'inversion-require-emacs "inversion" "\ @@ -15887,7 +15895,7 @@ Only checks one based on which kind of Emacs is being run. ;;;### (autoloads (isearch-process-search-multibyte-characters isearch-toggle-input-method ;;;;;; isearch-toggle-specified-input-method) "isearch-x" "international/isearch-x.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from international/isearch-x.el (autoload 'isearch-toggle-specified-input-method "isearch-x" "\ @@ -15907,8 +15915,8 @@ Toggle input method in interactive search. ;;;*** -;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from isearchb.el (autoload 'isearchb-activate "isearchb" "\ @@ -15924,7 +15932,7 @@ accessed via isearchb. ;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only ;;;;;; iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso ;;;;;; iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt" -;;;;;; "international/iso-cvt.el" (20244 35516 0 0)) +;;;;;; "international/iso-cvt.el" (20355 10021 546955 0)) ;;; Generated autoloads from international/iso-cvt.el (autoload 'iso-spanish "iso-cvt" "\ @@ -16015,7 +16023,7 @@ Add submenus to the File menu, to convert to and from various formats. ;;;*** ;;;### (autoloads nil "iso-transl" "international/iso-transl.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20486 36135 22104 0)) ;;; Generated autoloads from international/iso-transl.el (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map) (autoload 'iso-transl-ctl-x-8-map "iso-transl" "Keymap for C-x 8 prefix." t 'keymap) @@ -16026,7 +16034,7 @@ Add submenus to the File menu, to convert to and from various formats. ;;;;;; ispell-complete-word ispell-continue 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" (20567 31133 0 0)) +;;;;;; "ispell" "textmodes/ispell.el" (20601 16294 451653 0)) ;;; Generated autoloads from textmodes/ispell.el (put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive)))) @@ -16254,7 +16262,7 @@ You can bind this to the key C-c i in GNUS or mail by adding to ;;;*** ;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (20577 -;;;;;; 48876 0 0)) +;;;;;; 33959 40183 0)) ;;; Generated autoloads from iswitchb.el (defvar iswitchb-mode nil "\ @@ -16282,7 +16290,8 @@ between buffers using substrings. See `iswitchb' for details. ;;;### (autoloads (read-hiragana-string japanese-zenkaku-region japanese-hankaku-region ;;;;;; japanese-hiragana-region japanese-katakana-region japanese-zenkaku ;;;;;; japanese-hankaku japanese-hiragana japanese-katakana setup-japanese-environment-internal) -;;;;;; "japan-util" "language/japan-util.el" (20244 35516 0 0)) +;;;;;; "japan-util" "language/japan-util.el" (20355 10021 546955 +;;;;;; 0)) ;;; Generated autoloads from language/japan-util.el (autoload 'setup-japanese-environment-internal "japan-util" "\ @@ -16360,7 +16369,7 @@ If non-nil, second arg INITIAL-INPUT is a string to insert before reading. ;;;*** ;;;### (autoloads (jka-compr-uninstall jka-compr-handler) "jka-compr" -;;;;;; "jka-compr.el" (20318 5885 0 0)) +;;;;;; "jka-compr.el" (20355 10021 546955 0)) ;;; Generated autoloads from jka-compr.el (defvar jka-compr-inhibit nil "\ @@ -16383,7 +16392,7 @@ by `jka-compr-installed'. ;;;*** -;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20535 44414 0 +;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20532 45476 981297 ;;;;;; 0)) ;;; Generated autoloads from progmodes/js.el @@ -16398,7 +16407,7 @@ Major mode for editing JavaScript. ;;;### (autoloads (keypad-setup keypad-numlock-shifted-setup keypad-shifted-setup ;;;;;; keypad-numlock-setup keypad-setup) "keypad" "emulation/keypad.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from emulation/keypad.el (defvar keypad-setup nil "\ @@ -16454,7 +16463,7 @@ the decimal key on the keypad is mapped to DECIMAL instead of `.' ;;;*** ;;;### (autoloads (kinsoku) "kinsoku" "international/kinsoku.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from international/kinsoku.el (autoload 'kinsoku "kinsoku" "\ @@ -16475,8 +16484,8 @@ the context of text formatting. ;;;*** -;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from international/kkc.el (defvar kkc-after-update-conversion-functions nil "\ @@ -16501,7 +16510,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" (20511 52965 0 0)) +;;;;;; "kmacro" "kmacro.el" (20471 22929 875294 592000)) ;;; Generated autoloads from kmacro.el (global-set-key "\C-x(" 'kmacro-start-macro) (global-set-key "\C-x)" 'kmacro-end-macro) @@ -16612,7 +16621,7 @@ If kbd macro currently being defined end it before activating it. ;;;*** ;;;### (autoloads (setup-korean-environment-internal) "korea-util" -;;;;;; "language/korea-util.el" (20511 52965 0 0)) +;;;;;; "language/korea-util.el" (20501 3499 284800 0)) ;;; Generated autoloads from language/korea-util.el (defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\ @@ -16627,7 +16636,7 @@ The kind of Korean keyboard for Korean input method. ;;;*** ;;;### (autoloads (landmark landmark-test-run) "landmark" "play/landmark.el" -;;;;;; (20550 14882 0 0)) +;;;;;; (20545 57511 257469 0)) ;;; Generated autoloads from play/landmark.el (defalias 'landmark-repeat 'landmark-test-run) @@ -16659,7 +16668,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" (20244 35516 0 0)) +;;;;;; "lao-util" "language/lao-util.el" (20355 10021 546955 0)) ;;; Generated autoloads from language/lao-util.el (autoload 'lao-compose-string "lao-util" "\ @@ -16698,7 +16707,8 @@ Transcribe Romanized Lao string STR to Lao character string. ;;;### (autoloads (latexenc-find-file-coding-system latexenc-coding-system-to-inputenc ;;;;;; latexenc-inputenc-to-coding-system latex-inputenc-coding-alist) -;;;;;; "latexenc" "international/latexenc.el" (20244 35516 0 0)) +;;;;;; "latexenc" "international/latexenc.el" (20355 10021 546955 +;;;;;; 0)) ;;; Generated autoloads from international/latexenc.el (defvar latex-inputenc-coding-alist (purecopy '(("ansinew" . windows-1252) ("applemac" . mac-roman) ("ascii" . us-ascii) ("cp1250" . windows-1250) ("cp1252" . windows-1252) ("cp1257" . cp1257) ("cp437de" . cp437) ("cp437" . cp437) ("cp850" . cp850) ("cp852" . cp852) ("cp858" . cp858) ("cp865" . cp865) ("latin1" . iso-8859-1) ("latin2" . iso-8859-2) ("latin3" . iso-8859-3) ("latin4" . iso-8859-4) ("latin5" . iso-8859-5) ("latin9" . iso-8859-15) ("next" . next) ("utf8" . utf-8) ("utf8x" . utf-8))) "\ @@ -16730,8 +16740,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" (20577 48876 -;;;;;; 0 0)) +;;;;;; "latin1-disp" "international/latin1-disp.el" (20577 33959 +;;;;;; 40183 0)) ;;; Generated autoloads from international/latin1-disp.el (defvar latin1-display nil "\ @@ -16773,7 +16783,7 @@ use either \\[customize] or the function `latin1-display'.") ;;;*** ;;;### (autoloads (ld-script-mode) "ld-script" "progmodes/ld-script.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from progmodes/ld-script.el (autoload 'ld-script-mode "ld-script" "\ @@ -16783,7 +16793,8 @@ A major mode to edit GNU ld script files ;;;*** -;;;### (autoloads (life) "life" "play/life.el" (20550 14882 0 0)) +;;;### (autoloads (life) "life" "play/life.el" (20545 57511 257469 +;;;;;; 0)) ;;; Generated autoloads from play/life.el (autoload 'life "life" "\ @@ -16797,7 +16808,7 @@ generations (this defaults to 1). ;;;*** ;;;### (autoloads (global-linum-mode linum-mode) "linum" "linum.el" -;;;;;; (20580 46629 0 0)) +;;;;;; (20580 10161 446444 0)) ;;; Generated autoloads from linum.el (autoload 'linum-mode "linum" "\ @@ -16833,8 +16844,8 @@ See `linum-mode' for more information on Linum mode. ;;;*** -;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (20511 -;;;;;; 52965 0 0)) +;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (20476 +;;;;;; 31768 298871 0)) ;;; Generated autoloads from loadhist.el (autoload 'unload-feature "loadhist" "\ @@ -16866,7 +16877,7 @@ something strange, such as redefining an Emacs function. ;;;*** ;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches) -;;;;;; "locate" "locate.el" (20567 31133 0 0)) +;;;;;; "locate" "locate.el" (20566 63671 243798 0)) ;;; Generated autoloads from locate.el (defvar locate-ls-subdir-switches (purecopy "-al") "\ @@ -16918,8 +16929,8 @@ except that FILTER is not optional. ;;;*** -;;;### (autoloads (log-edit) "log-edit" "vc/log-edit.el" (20589 46442 -;;;;;; 0 0)) +;;;### (autoloads (log-edit) "log-edit" "vc/log-edit.el" (20586 48936 +;;;;;; 135199 0)) ;;; Generated autoloads from vc/log-edit.el (autoload 'log-edit "log-edit" "\ @@ -16950,8 +16961,8 @@ done. Otherwise, it uses the current buffer. ;;;*** -;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20517 -;;;;;; 4109 0 0)) +;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20515 +;;;;;; 36389 544939 0)) ;;; Generated autoloads from vc/log-view.el (autoload 'log-view-mode "log-view" "\ @@ -16961,8 +16972,8 @@ Major mode for browsing CVS log output. ;;;*** -;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from longlines.el (autoload 'longlines-mode "longlines" "\ @@ -16988,8 +16999,8 @@ newlines are indicated with a symbol. ;;;*** ;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer -;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (20511 -;;;;;; 52965 0 0)) +;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (20476 +;;;;;; 31768 298871 0)) ;;; Generated autoloads from lpr.el (defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\ @@ -17085,7 +17096,7 @@ for further customization of the printer command. ;;;*** ;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el" -;;;;;; (20276 3849 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from ls-lisp.el (defvar ls-lisp-support-shell-wildcards t "\ @@ -17096,8 +17107,8 @@ Otherwise they are treated as Emacs regexps (for backward compatibility).") ;;;*** -;;;### (autoloads (lunar-phases) "lunar" "calendar/lunar.el" (20567 -;;;;;; 31133 0 0)) +;;;### (autoloads (lunar-phases) "lunar" "calendar/lunar.el" (20566 +;;;;;; 63671 243798 0)) ;;; Generated autoloads from calendar/lunar.el (autoload 'lunar-phases "lunar" "\ @@ -17111,8 +17122,8 @@ This function is suitable for execution in an init file. ;;;*** -;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (20356 -;;;;;; 35090 0 0)) +;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from progmodes/m4-mode.el (autoload 'm4-mode "m4-mode" "\ @@ -17123,7 +17134,7 @@ A major mode to edit m4 macro files. ;;;*** ;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro -;;;;;; name-last-kbd-macro) "macros" "macros.el" (20244 35516 0 +;;;;;; name-last-kbd-macro) "macros" "macros.el" (20355 10021 546955 ;;;;;; 0)) ;;; Generated autoloads from macros.el @@ -17213,7 +17224,7 @@ and then select the region of un-tablified names and use ;;;*** ;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr" -;;;;;; "mail/mail-extr.el" (20356 35090 0 0)) +;;;;;; "mail/mail-extr.el" (20355 10021 546955 0)) ;;; Generated autoloads from mail/mail-extr.el (autoload 'mail-extract-address-components "mail-extr" "\ @@ -17245,7 +17256,7 @@ Convert mail domain DOMAIN to the country it corresponds to. ;;;### (autoloads (mail-hist-put-headers-into-history mail-hist-keep-history ;;;;;; mail-hist-enable mail-hist-define-keys) "mail-hist" "mail/mail-hist.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from mail/mail-hist.el (autoload 'mail-hist-define-keys "mail-hist" "\ @@ -17277,7 +17288,7 @@ This function normally would be called when the message is sent. ;;;### (autoloads (mail-fetch-field mail-unquote-printable-region ;;;;;; mail-unquote-printable mail-quote-printable-region mail-quote-printable ;;;;;; mail-file-babyl-p mail-dont-reply-to-names mail-use-rfc822) -;;;;;; "mail-utils" "mail/mail-utils.el" (20318 5885 0 0)) +;;;;;; "mail-utils" "mail/mail-utils.el" (20355 10021 546955 0)) ;;; Generated autoloads from mail/mail-utils.el (defvar mail-use-rfc822 nil "\ @@ -17352,8 +17363,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" (20567 -;;;;;; 31133 0 0)) +;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (20566 +;;;;;; 63671 243798 0)) ;;; Generated autoloads from mail/mailabbrev.el (defvar mail-abbrevs-mode nil "\ @@ -17404,7 +17415,7 @@ double-quotes. ;;;### (autoloads (mail-complete mail-completion-at-point-function ;;;;;; define-mail-alias expand-mail-aliases mail-complete-style) -;;;;;; "mailalias" "mail/mailalias.el" (20577 48876 0 0)) +;;;;;; "mailalias" "mail/mailalias.el" (20577 33959 40183 0)) ;;; Generated autoloads from mail/mailalias.el (defvar mail-complete-style 'angles "\ @@ -17458,7 +17469,7 @@ current header, calls `mail-complete-function' and passes prefix ARG if any. ;;;*** ;;;### (autoloads (mailclient-send-it) "mailclient" "mail/mailclient.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from mail/mailclient.el (autoload 'mailclient-send-it "mailclient" "\ @@ -17472,7 +17483,8 @@ The mail client is taken to be the handler of mailto URLs. ;;;### (autoloads (makefile-imake-mode makefile-bsdmake-mode makefile-makepp-mode ;;;;;; makefile-gmake-mode makefile-automake-mode makefile-mode) -;;;;;; "make-mode" "progmodes/make-mode.el" (20412 11425 0 0)) +;;;;;; "make-mode" "progmodes/make-mode.el" (20392 30149 675975 +;;;;;; 59000)) ;;; Generated autoloads from progmodes/make-mode.el (autoload 'makefile-mode "make-mode" "\ @@ -17589,8 +17601,8 @@ An adapted `makefile-mode' that knows about imake. ;;;*** -;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from makesum.el (autoload 'make-command-summary "makesum" "\ @@ -17602,7 +17614,7 @@ Previous contents of that buffer are killed first. ;;;*** ;;;### (autoloads (Man-bookmark-jump man-follow man) "man" "man.el" -;;;;;; (20523 63054 0 0)) +;;;;;; (20523 62082 997685 0)) ;;; Generated autoloads from man.el (defalias 'manual-entry 'man) @@ -17656,8 +17668,8 @@ Default bookmark handler for Man buffers. ;;;*** -;;;### (autoloads (master-mode) "master" "master.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (master-mode) "master" "master.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from master.el (autoload 'master-mode "master" "\ @@ -17680,7 +17692,7 @@ yourself the value of `master-of' by calling `master-show-slave'. ;;;*** ;;;### (autoloads (minibuffer-depth-indicate-mode) "mb-depth" "mb-depth.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from mb-depth.el (defvar minibuffer-depth-indicate-mode nil "\ @@ -17713,7 +17725,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" (20567 31133 0 0)) +;;;;;; "gnus/message.el" (20567 23165 75548 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) @@ -17879,7 +17891,7 @@ which specify the range to operate on. ;;;*** ;;;### (autoloads (metapost-mode metafont-mode) "meta-mode" "progmodes/meta-mode.el" -;;;;;; (20412 11425 0 0)) +;;;;;; (20399 35365 4050 0)) ;;; Generated autoloads from progmodes/meta-mode.el (autoload 'metafont-mode "meta-mode" "\ @@ -17896,7 +17908,7 @@ Major mode for editing MetaPost sources. ;;;### (autoloads (metamail-region metamail-buffer metamail-interpret-body ;;;;;; metamail-interpret-header) "metamail" "mail/metamail.el" -;;;;;; (20356 35090 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from mail/metamail.el (autoload 'metamail-interpret-header "metamail" "\ @@ -17941,7 +17953,7 @@ redisplayed as output is inserted. ;;;### (autoloads (mh-fully-kill-draft mh-send-letter mh-user-agent-compose ;;;;;; mh-smail-batch mh-smail-other-window mh-smail) "mh-comp" -;;;;;; "mh-e/mh-comp.el" (20244 35516 0 0)) +;;;;;; "mh-e/mh-comp.el" (20355 10021 546955 0)) ;;; Generated autoloads from mh-e/mh-comp.el (autoload 'mh-smail "mh-comp" "\ @@ -18031,8 +18043,8 @@ delete the draft message. ;;;*** -;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (20614 54428 +;;;;;; 654267 0)) ;;; Generated autoloads from mh-e/mh-e.el (put 'mh-progs 'risky-local-variable t) @@ -18049,7 +18061,7 @@ Display version information about MH-E and the MH mail handling system. ;;;*** ;;;### (autoloads (mh-folder-mode mh-nmail mh-rmail) "mh-folder" -;;;;;; "mh-e/mh-folder.el" (20373 41604 0 0)) +;;;;;; "mh-e/mh-folder.el" (20371 55972 331861 0)) ;;; Generated autoloads from mh-e/mh-folder.el (autoload 'mh-rmail "mh-folder" "\ @@ -18131,7 +18143,7 @@ perform the operation on all messages in that region. ;;;*** ;;;### (autoloads (midnight-delay-set clean-buffer-list) "midnight" -;;;;;; "midnight.el" (20511 52965 0 0)) +;;;;;; "midnight.el" (20478 3673 653810 0)) ;;; Generated autoloads from midnight.el (autoload 'clean-buffer-list "midnight" "\ @@ -18158,7 +18170,7 @@ to its second argument TM. ;;;*** ;;;### (autoloads (minibuffer-electric-default-mode) "minibuf-eldef" -;;;;;; "minibuf-eldef.el" (20580 46629 0 0)) +;;;;;; "minibuf-eldef.el" (20580 10161 446444 0)) ;;; Generated autoloads from minibuf-eldef.el (defvar minibuffer-electric-default-mode nil "\ @@ -18188,7 +18200,7 @@ is modified to remove the default indication. ;;;*** ;;;### (autoloads (list-dynamic-libraries butterfly) "misc" "misc.el" -;;;;;; (20535 44414 0 0)) +;;;;;; (20533 5993 500881 0)) ;;; Generated autoloads from misc.el (autoload 'butterfly "misc" "\ @@ -18218,7 +18230,7 @@ The return value is always nil. ;;;### (autoloads (multi-isearch-files-regexp multi-isearch-files ;;;;;; multi-isearch-buffers-regexp multi-isearch-buffers multi-isearch-setup) -;;;;;; "misearch" "misearch.el" (20511 52965 0 0)) +;;;;;; "misearch" "misearch.el" (20490 33188 850375 0)) ;;; Generated autoloads from misearch.el (add-hook 'isearch-mode-hook 'multi-isearch-setup) @@ -18300,7 +18312,7 @@ whose file names match the specified wildcard. ;;;*** ;;;### (autoloads (mixal-mode) "mixal-mode" "progmodes/mixal-mode.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from progmodes/mixal-mode.el (autoload 'mixal-mode "mixal-mode" "\ @@ -18311,7 +18323,7 @@ Major mode for the mixal asm language. ;;;*** ;;;### (autoloads (mm-default-file-encoding) "mm-encode" "gnus/mm-encode.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/mm-encode.el (autoload 'mm-default-file-encoding "mm-encode" "\ @@ -18322,7 +18334,7 @@ Return a default encoding for FILE. ;;;*** ;;;### (autoloads (mm-inline-external-body mm-extern-cache-contents) -;;;;;; "mm-extern" "gnus/mm-extern.el" (20244 35516 0 0)) +;;;;;; "mm-extern" "gnus/mm-extern.el" (20355 10021 546955 0)) ;;; Generated autoloads from gnus/mm-extern.el (autoload 'mm-extern-cache-contents "mm-extern" "\ @@ -18341,7 +18353,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing. ;;;*** ;;;### (autoloads (mm-inline-partial) "mm-partial" "gnus/mm-partial.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/mm-partial.el (autoload 'mm-inline-partial "mm-partial" "\ @@ -18355,7 +18367,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing. ;;;*** ;;;### (autoloads (mm-url-insert-file-contents-external mm-url-insert-file-contents) -;;;;;; "mm-url" "gnus/mm-url.el" (20511 52965 0 0)) +;;;;;; "mm-url" "gnus/mm-url.el" (20495 51111 757560 0)) ;;; Generated autoloads from gnus/mm-url.el (autoload 'mm-url-insert-file-contents "mm-url" "\ @@ -18372,7 +18384,7 @@ Insert file contents of URL using `mm-url-program'. ;;;*** ;;;### (autoloads (mm-uu-dissect-text-parts mm-uu-dissect) "mm-uu" -;;;;;; "gnus/mm-uu.el" (20318 5885 0 0)) +;;;;;; "gnus/mm-uu.el" (20355 10021 546955 0)) ;;; Generated autoloads from gnus/mm-uu.el (autoload 'mm-uu-dissect "mm-uu" "\ @@ -18392,7 +18404,7 @@ Assume text has been decoded if DECODED is non-nil. ;;;*** ;;;### (autoloads (mml-attach-file mml-to-mime) "mml" "gnus/mml.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20567 23165 75548 0)) ;;; Generated autoloads from gnus/mml.el (autoload 'mml-to-mime "mml" "\ @@ -18418,7 +18430,7 @@ body) or \"attachment\" (separate from the body). ;;;*** ;;;### (autoloads (mml1991-sign mml1991-encrypt) "mml1991" "gnus/mml1991.el" -;;;;;; (20291 57212 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/mml1991.el (autoload 'mml1991-encrypt "mml1991" "\ @@ -18435,7 +18447,7 @@ body) or \"attachment\" (separate from the body). ;;;### (autoloads (mml2015-self-encrypt mml2015-sign mml2015-encrypt ;;;;;; mml2015-verify-test mml2015-verify mml2015-decrypt-test mml2015-decrypt) -;;;;;; "mml2015" "gnus/mml2015.el" (20244 35516 0 0)) +;;;;;; "mml2015" "gnus/mml2015.el" (20355 10021 546955 0)) ;;; Generated autoloads from gnus/mml2015.el (autoload 'mml2015-decrypt "mml2015" "\ @@ -18475,16 +18487,16 @@ body) or \"attachment\" (separate from the body). ;;;*** -;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (20412 11425 -;;;;;; 0 0)) +;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (20406 8611 +;;;;;; 875037 0)) ;;; Generated autoloads from cedet/mode-local.el (put 'define-overloadable-function 'doc-string-elt 3) ;;;*** -;;;### (autoloads (m2-mode) "modula2" "progmodes/modula2.el" (20356 -;;;;;; 35090 0 0)) +;;;### (autoloads (m2-mode) "modula2" "progmodes/modula2.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from progmodes/modula2.el (defalias 'modula-2-mode 'm2-mode) @@ -18518,7 +18530,7 @@ followed by the first character of the construct. ;;;*** ;;;### (autoloads (denato-region nato-region unmorse-region morse-region) -;;;;;; "morse" "play/morse.el" (20244 35516 0 0)) +;;;;;; "morse" "play/morse.el" (20355 10021 546955 0)) ;;; Generated autoloads from play/morse.el (autoload 'morse-region "morse" "\ @@ -18544,7 +18556,7 @@ Convert NATO phonetic alphabet in region to ordinary ASCII text. ;;;*** ;;;### (autoloads (mouse-drag-drag mouse-drag-throw) "mouse-drag" -;;;;;; "mouse-drag.el" (20567 31133 0 0)) +;;;;;; "mouse-drag.el" (20566 63671 243798 0)) ;;; Generated autoloads from mouse-drag.el (autoload 'mouse-drag-throw "mouse-drag" "\ @@ -18591,7 +18603,7 @@ To test this function, evaluate: ;;;*** -;;;### (autoloads (mpc) "mpc" "mpc.el" (20523 63054 0 0)) +;;;### (autoloads (mpc) "mpc" "mpc.el" (20523 62082 997685 0)) ;;; Generated autoloads from mpc.el (autoload 'mpc "mpc" "\ @@ -18601,7 +18613,8 @@ Main entry point for MPC. ;;;*** -;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20550 14882 0 0)) +;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20545 57511 257469 +;;;;;; 0)) ;;; Generated autoloads from play/mpuz.el (autoload 'mpuz "mpuz" "\ @@ -18611,7 +18624,7 @@ Multiplication puzzle with GNU Emacs. ;;;*** -;;;### (autoloads (msb-mode) "msb" "msb.el" (20511 52965 0 0)) +;;;### (autoloads (msb-mode) "msb" "msb.el" (20476 31768 298871 0)) ;;; Generated autoloads from msb.el (defvar msb-mode nil "\ @@ -18641,7 +18654,7 @@ different buffer menu using the function `msb'. ;;;;;; describe-current-coding-system describe-current-coding-system-briefly ;;;;;; describe-coding-system describe-character-set list-charset-chars ;;;;;; read-charset list-character-sets) "mule-diag" "international/mule-diag.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20577 33959 40183 0)) ;;; Generated autoloads from international/mule-diag.el (autoload 'list-character-sets "mule-diag" "\ @@ -18778,7 +18791,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" -;;;;;; (20577 48876 0 0)) +;;;;;; (20577 33959 40183 0)) ;;; Generated autoloads from international/mule-util.el (defsubst string-to-list (string) "\ @@ -18912,8 +18925,8 @@ per-character basis, this may not be accurate. ;;;### (autoloads (network-connection network-connection-to-service ;;;;;; whois-reverse-lookup whois finger ftp run-dig dns-lookup-host ;;;;;; nslookup nslookup-host ping traceroute route arp netstat -;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (20244 -;;;;;; 35516 0 0)) +;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from net/net-utils.el (autoload 'ifconfig "net-utils" "\ @@ -19007,8 +19020,8 @@ Open a network connection to HOST on PORT. ;;;*** -;;;### (autoloads (netrc-credentials) "netrc" "net/netrc.el" (20511 -;;;;;; 52965 0 0)) +;;;### (autoloads (netrc-credentials) "netrc" "net/netrc.el" (20495 +;;;;;; 51111 757560 0)) ;;; Generated autoloads from net/netrc.el (autoload 'netrc-credentials "netrc" "\ @@ -19021,7 +19034,7 @@ listed in the PORTS list. ;;;*** ;;;### (autoloads (open-network-stream) "network-stream" "net/network-stream.el" -;;;;;; (20373 41604 0 0)) +;;;;;; (20369 14251 85829 0)) ;;; Generated autoloads from net/network-stream.el (autoload 'open-network-stream "network-stream" "\ @@ -19112,7 +19125,7 @@ STARTTLS upgrades even if Emacs doesn't have built-in TLS functionality. ;;;*** ;;;### (autoloads (newsticker-start newsticker-running-p) "newst-backend" -;;;;;; "net/newst-backend.el" (20577 48876 0 0)) +;;;;;; "net/newst-backend.el" (20577 33959 40183 0)) ;;; Generated autoloads from net/newst-backend.el (autoload 'newsticker-running-p "newst-backend" "\ @@ -19134,7 +19147,7 @@ Run `newsticker-start-hook' if newsticker was not running already. ;;;*** ;;;### (autoloads (newsticker-plainview) "newst-plainview" "net/newst-plainview.el" -;;;;;; (20434 28080 0 0)) +;;;;;; (20434 17809 692608 0)) ;;; Generated autoloads from net/newst-plainview.el (autoload 'newsticker-plainview "newst-plainview" "\ @@ -19145,7 +19158,7 @@ Start newsticker plainview. ;;;*** ;;;### (autoloads (newsticker-show-news) "newst-reader" "net/newst-reader.el" -;;;;;; (20434 28080 0 0)) +;;;;;; (20434 17809 692608 0)) ;;; Generated autoloads from net/newst-reader.el (autoload 'newsticker-show-news "newst-reader" "\ @@ -19156,7 +19169,8 @@ Start reading news. You may want to bind this to a key. ;;;*** ;;;### (autoloads (newsticker-start-ticker newsticker-ticker-running-p) -;;;;;; "newst-ticker" "net/newst-ticker.el" (20428 57510 0 0)) +;;;;;; "newst-ticker" "net/newst-ticker.el" (20427 14766 970343 +;;;;;; 0)) ;;; Generated autoloads from net/newst-ticker.el (autoload 'newsticker-ticker-running-p "newst-ticker" "\ @@ -19177,7 +19191,7 @@ running already. ;;;*** ;;;### (autoloads (newsticker-treeview) "newst-treeview" "net/newst-treeview.el" -;;;;;; (20592 26321 0 0)) +;;;;;; (20590 45996 129575 0)) ;;; Generated autoloads from net/newst-treeview.el (autoload 'newsticker-treeview "newst-treeview" "\ @@ -19188,7 +19202,7 @@ Start newsticker treeview. ;;;*** ;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20614 54428 654267 0)) ;;; Generated autoloads from gnus/nndiary.el (autoload 'nndiary-generate-nov-databases "nndiary" "\ @@ -19198,8 +19212,8 @@ Generate NOV databases in all nndiary directories. ;;;*** -;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from gnus/nndoc.el (autoload 'nndoc-add-type "nndoc" "\ @@ -19214,7 +19228,7 @@ symbol in the alist. ;;;*** ;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el" -;;;;;; (20460 33749 0 0)) +;;;;;; (20458 56750 651721 0)) ;;; Generated autoloads from gnus/nnfolder.el (autoload 'nnfolder-generate-active-file "nnfolder" "\ @@ -19226,7 +19240,7 @@ This command does not work if you use short group names. ;;;*** ;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el" -;;;;;; (20460 33749 0 0)) +;;;;;; (20458 56750 651721 0)) ;;; Generated autoloads from gnus/nnml.el (autoload 'nnml-generate-nov-databases "nnml" "\ @@ -19237,7 +19251,7 @@ Generate NOV databases in all nnml directories. ;;;*** ;;;### (autoloads (disable-command enable-command disabled-command-function) -;;;;;; "novice" "novice.el" (20567 31133 0 0)) +;;;;;; "novice" "novice.el" (20566 63671 243798 0)) ;;; Generated autoloads from novice.el (define-obsolete-variable-alias 'disabled-command-hook 'disabled-command-function "22.1") @@ -19270,7 +19284,7 @@ future sessions. ;;;*** ;;;### (autoloads (nroff-mode) "nroff-mode" "textmodes/nroff-mode.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from textmodes/nroff-mode.el (autoload 'nroff-mode "nroff-mode" "\ @@ -19285,7 +19299,7 @@ closing requests for requests that are used in matched pairs. ;;;*** ;;;### (autoloads (nxml-glyph-display-string) "nxml-glyph" "nxml/nxml-glyph.el" -;;;;;; (20523 63054 0 0)) +;;;;;; (20523 62082 997685 0)) ;;; Generated autoloads from nxml/nxml-glyph.el (autoload 'nxml-glyph-display-string "nxml-glyph" "\ @@ -19297,8 +19311,8 @@ Return nil if the face cannot display a glyph for N. ;;;*** -;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (20511 -;;;;;; 52965 0 0)) +;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (20478 +;;;;;; 3673 653810 0)) ;;; Generated autoloads from nxml/nxml-mode.el (autoload 'nxml-mode "nxml-mode" "\ @@ -19360,7 +19374,7 @@ Many aspects this mode can be customized using ;;;*** ;;;### (autoloads (nxml-enable-unicode-char-name-sets) "nxml-uchnm" -;;;;;; "nxml/nxml-uchnm.el" (20244 35516 0 0)) +;;;;;; "nxml/nxml-uchnm.el" (20355 10021 546955 0)) ;;; Generated autoloads from nxml/nxml-uchnm.el (autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\ @@ -19370,323 +19384,10 @@ the variable `nxml-enabled-unicode-blocks'. \(fn)" t nil) -;;;*** - -;;;### (autoloads (org-babel-mark-block org-babel-previous-src-block -;;;;;; org-babel-next-src-block org-babel-goto-named-result org-babel-goto-named-src-block -;;;;;; org-babel-goto-src-block-head org-babel-hide-result-toggle-maybe -;;;;;; org-babel-sha1-hash org-babel-execute-subtree org-babel-execute-buffer -;;;;;; org-babel-map-executables org-babel-map-call-lines org-babel-map-inline-src-blocks -;;;;;; org-babel-map-src-blocks org-babel-open-src-block-result -;;;;;; org-babel-switch-to-session-with-code org-babel-switch-to-session -;;;;;; org-babel-initiate-session org-babel-load-in-session org-babel-insert-header-arg -;;;;;; org-babel-check-src-block org-babel-expand-src-block org-babel-execute-src-block -;;;;;; org-babel-pop-to-session-maybe org-babel-load-in-session-maybe -;;;;;; org-babel-expand-src-block-maybe org-babel-view-src-block-info -;;;;;; org-babel-execute-maybe org-babel-execute-safely-maybe) "ob" -;;;;;; "org/ob.el" (20585 55103 0 0)) -;;; Generated autoloads from org/ob.el - -(autoload 'org-babel-execute-safely-maybe "ob" "\ - - -\(fn)" nil nil) - -(autoload 'org-babel-execute-maybe "ob" "\ - - -\(fn)" t nil) - -(autoload 'org-babel-view-src-block-info "ob" "\ -Display information on the current source block. -This includes header arguments, language and name, and is largely -a window into the `org-babel-get-src-block-info' function. - -\(fn)" t nil) - -(autoload 'org-babel-expand-src-block-maybe "ob" "\ -Conditionally expand a source block. -Detect if this is context for a org-babel src-block and if so -then run `org-babel-expand-src-block'. - -\(fn)" t nil) - -(autoload 'org-babel-load-in-session-maybe "ob" "\ -Conditionally load a source block in a session. -Detect if this is context for a org-babel src-block and if so -then run `org-babel-load-in-session'. - -\(fn)" t nil) - -(autoload 'org-babel-pop-to-session-maybe "ob" "\ -Conditionally pop to a session. -Detect if this is context for a org-babel src-block and if so -then run `org-babel-pop-to-session'. - -\(fn)" t nil) - -(autoload 'org-babel-execute-src-block "ob" "\ -Execute the current source code block. -Insert the results of execution into the buffer. Source code -execution and the collection and formatting of results can be -controlled through a variety of header arguments. - -With prefix argument ARG, force re-execution even if an existing -result cached in the buffer would otherwise have been returned. - -Optionally supply a value for INFO in the form returned by -`org-babel-get-src-block-info'. - -Optionally supply a value for PARAMS which will be merged with -the header arguments specified at the front of the source code -block. - -\(fn &optional ARG INFO PARAMS)" t nil) - -(autoload 'org-babel-expand-src-block "ob" "\ -Expand the current source code block. -Expand according to the source code block's header -arguments and pop open the results in a preview buffer. - -\(fn &optional ARG INFO PARAMS)" t nil) - -(autoload 'org-babel-check-src-block "ob" "\ -Check for misspelled header arguments in the current code block. - -\(fn)" t nil) - -(autoload 'org-babel-insert-header-arg "ob" "\ -Insert a header argument selecting from lists of common args and values. - -\(fn)" t nil) - -(autoload 'org-babel-load-in-session "ob" "\ -Load the body of the current source-code block. -Evaluate the header arguments for the source block before -entering the session. After loading the body this pops open the -session. - -\(fn &optional ARG INFO)" t nil) - -(autoload 'org-babel-initiate-session "ob" "\ -Initiate session for current code block. -If called with a prefix argument then resolve any variable -references in the header arguments and assign these variables in -the session. Copy the body of the code block to the kill ring. - -\(fn &optional ARG INFO)" t nil) - -(autoload 'org-babel-switch-to-session "ob" "\ -Switch to the session of the current code block. -Uses `org-babel-initiate-session' to start the session. If called -with a prefix argument then this is passed on to -`org-babel-initiate-session'. - -\(fn &optional ARG INFO)" t nil) - -(autoload 'org-babel-switch-to-session-with-code "ob" "\ -Switch to code buffer and display session. - -\(fn &optional ARG INFO)" t nil) - -(autoload 'org-babel-open-src-block-result "ob" "\ -If `point' is on a src block then open the results of the -source code block, otherwise return nil. With optional prefix -argument RE-RUN the source-code block is evaluated even if -results already exist. - -\(fn &optional RE-RUN)" t nil) - -(autoload 'org-babel-map-src-blocks "ob" "\ -Evaluate BODY forms on each source-block in FILE. -If FILE is nil evaluate BODY forms on source blocks in current -buffer. During evaluation of BODY the following local variables -are set relative to the currently matched code block. - -full-block ------- string holding the entirety of the code block -beg-block -------- point at the beginning of the code block -end-block -------- point at the end of the matched code block -lang ------------- string holding the language of the code block -beg-lang --------- point at the beginning of the lang -end-lang --------- point at the end of the lang -switches --------- string holding the switches -beg-switches ----- point at the beginning of the switches -end-switches ----- point at the end of the switches -header-args ------ string holding the header-args -beg-header-args -- point at the beginning of the header-args -end-header-args -- point at the end of the header-args -body ------------- string holding the body of the code block -beg-body --------- point at the beginning of the body -end-body --------- point at the end of the body - -\(fn FILE &rest BODY)" nil t) - -(put 'org-babel-map-src-blocks 'lisp-indent-function '1) - -(autoload 'org-babel-map-inline-src-blocks "ob" "\ -Evaluate BODY forms on each inline source-block in FILE. -If FILE is nil evaluate BODY forms on source blocks in current -buffer. - -\(fn FILE &rest BODY)" nil t) - -(put 'org-babel-map-inline-src-blocks 'lisp-indent-function '1) - -(autoload 'org-babel-map-call-lines "ob" "\ -Evaluate BODY forms on each call line in FILE. -If FILE is nil evaluate BODY forms on source blocks in current -buffer. - -\(fn FILE &rest BODY)" nil t) - -(put 'org-babel-map-call-lines 'lisp-indent-function '1) - -(autoload 'org-babel-map-executables "ob" "\ - - -\(fn FILE &rest BODY)" nil t) - -(put 'org-babel-map-executables 'lisp-indent-function '1) - -(autoload 'org-babel-execute-buffer "ob" "\ -Execute source code blocks in a buffer. -Call `org-babel-execute-src-block' on every source block in -the current buffer. - -\(fn &optional ARG)" t nil) - -(autoload 'org-babel-execute-subtree "ob" "\ -Execute source code blocks in a subtree. -Call `org-babel-execute-src-block' on every source block in -the current subtree. - -\(fn &optional ARG)" t nil) - -(autoload 'org-babel-sha1-hash "ob" "\ -Generate an sha1 hash based on the value of info. - -\(fn &optional INFO)" t nil) - -(autoload 'org-babel-hide-result-toggle-maybe "ob" "\ -Toggle visibility of result at point. - -\(fn)" t nil) - -(autoload 'org-babel-goto-src-block-head "ob" "\ -Go to the beginning of the current code block. - -\(fn)" t nil) - -(autoload 'org-babel-goto-named-src-block "ob" "\ -Go to a named source-code block. - -\(fn NAME)" t nil) - -(autoload 'org-babel-goto-named-result "ob" "\ -Go to a named result. - -\(fn NAME)" t nil) - -(autoload 'org-babel-next-src-block "ob" "\ -Jump to the next source block. -With optional prefix argument ARG, jump forward ARG many source blocks. - -\(fn &optional ARG)" t nil) - -(autoload 'org-babel-previous-src-block "ob" "\ -Jump to the previous source block. -With optional prefix argument ARG, jump backward ARG many source blocks. - -\(fn &optional ARG)" t nil) - -(autoload 'org-babel-mark-block "ob" "\ -Mark current src block. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (org-babel-describe-bindings) "ob-keys" "org/ob-keys.el" -;;;;;; (20244 35516 0 0)) -;;; Generated autoloads from org/ob-keys.el - -(autoload 'org-babel-describe-bindings "ob-keys" "\ -Describe all keybindings behind `org-babel-key-prefix'. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (org-babel-lob-get-info org-babel-lob-execute-maybe -;;;;;; org-babel-lob-ingest) "ob-lob" "org/ob-lob.el" (20585 55103 -;;;;;; 0 0)) -;;; Generated autoloads from org/ob-lob.el - -(autoload 'org-babel-lob-ingest "ob-lob" "\ -Add all named source-blocks defined in FILE to -`org-babel-library-of-babel'. - -\(fn &optional FILE)" t nil) - -(autoload 'org-babel-lob-execute-maybe "ob-lob" "\ -Execute a Library of Babel source block, if appropriate. -Detect if this is context for a Library Of Babel source block and -if so then run the appropriate source block from the Library. - -\(fn)" t nil) - -(autoload 'org-babel-lob-get-info "ob-lob" "\ -Return a Library of Babel function call as a string. - -\(fn)" nil nil) - -;;;*** - -;;;### (autoloads (org-babel-tangle org-babel-tangle-file org-babel-load-file -;;;;;; org-babel-tangle-lang-exts) "ob-tangle" "org/ob-tangle.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/ob-tangle.el - -(defvar org-babel-tangle-lang-exts '(("emacs-lisp" . "el")) "\ -Alist mapping languages to their file extensions. -The key is the language name, the value is the string that should -be inserted as the extension commonly used to identify files -written in this language. If no entry is found in this list, -then the name of the language is used.") - -(custom-autoload 'org-babel-tangle-lang-exts "ob-tangle" t) - -(autoload 'org-babel-load-file "ob-tangle" "\ -Load Emacs Lisp source code blocks in the Org-mode FILE. -This function exports the source code using -`org-babel-tangle' and then loads the resulting file using -`load-file'. - -\(fn FILE)" t nil) - -(autoload 'org-babel-tangle-file "ob-tangle" "\ -Extract the bodies of source code blocks in FILE. -Source code blocks are extracted with `org-babel-tangle'. -Optional argument TARGET-FILE can be used to specify a default -export file for all source blocks. Optional argument LANG can be -used to limit the exported source code blocks by language. - -\(fn FILE &optional TARGET-FILE LANG)" t nil) - -(autoload 'org-babel-tangle "ob-tangle" "\ -Write code blocks to source-specific files. -Extract the bodies of all source code blocks from the current -file into their own source-specific files. Optional argument -TARGET-FILE can be used to specify a default export file for all -source blocks. Optional argument LANG can be used to limit the -exported source code blocks by language. - -\(fn &optional ONLY-THIS-BLOCK TARGET-FILE LANG)" t nil) - ;;;*** ;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el" -;;;;;; (20356 35090 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from progmodes/octave-inf.el (autoload 'inferior-octave "octave-inf" "\ @@ -19709,7 +19410,7 @@ startup file, `~/.emacs-octave'. ;;;*** ;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from progmodes/octave-mod.el (autoload 'octave-mode "octave-mod" "\ @@ -19791,16 +19492,13 @@ including a reproducible test case and send the message. ;;;*** -;;;### (autoloads (org-unindent-buffer org-transpose-element org-narrow-to-element -;;;;;; org-mark-element org-drag-element-forward org-drag-element-backward -;;;;;; org-up-element org-backward-element org-forward-element org-customize -;;;;;; org-reload org-require-autoloaded-modules org-submit-bug-report -;;;;;; org-cycle-agenda-files org-switchb org-map-entries org-update-all-dblocks -;;;;;; org-open-link-from-string org-open-at-point-global org-insert-link-global -;;;;;; org-store-link org-run-like-in-org-mode turn-on-orgstruct++ -;;;;;; turn-on-orgstruct orgstruct-mode org-global-cycle org-mode -;;;;;; org-version org-babel-do-load-languages) "org" "org/org.el" -;;;;;; (20585 55103 0 0)) +;;;### (autoloads (org-customize org-reload org-submit-bug-report +;;;;;; org-cycle-agenda-files org-switchb org-open-link-from-string +;;;;;; org-open-at-point-global org-insert-link-global org-store-link +;;;;;; org-run-like-in-org-mode turn-on-orgstruct++ turn-on-orgstruct +;;;;;; orgstruct-mode org-global-cycle org-cycle org-mode org-clock-persistence-insinuate +;;;;;; turn-on-orgtbl org-version org-babel-do-load-languages) "org" +;;;;;; "org/org.el" (20618 55210 422086 0)) ;;; Generated autoloads from org/org.el (autoload 'org-babel-do-load-languages "org" "\ @@ -19816,6 +19514,16 @@ When MESSAGE is non-nil, display a message with the version. \(fn &optional HERE FULL MESSAGE)" t nil) +(autoload 'turn-on-orgtbl "org" "\ +Unconditionally turn on `orgtbl-mode'. + +\(fn)" nil nil) + +(autoload 'org-clock-persistence-insinuate "org" "\ +Set up hooks for clock persistence. + +\(fn)" nil nil) + (autoload 'org-mode "org" "\ Outline-based notes management and organizer, alias \"Carsten's outline-mode for keeping track of everything.\" @@ -19837,7 +19545,55 @@ The following commands are available: \(fn)" t nil) -(defvar org-inlinetask-min-level) +(autoload 'org-cycle "org" "\ +TAB-action and visibility cycling for Org-mode. + +This is the command invoked in Org-mode by the TAB key. Its main purpose +is outline visibility cycling, but it also invokes other actions +in special contexts. + +- When this function is called with a prefix argument, rotate the entire + buffer through 3 states (global cycling) + 1. OVERVIEW: Show only top-level headlines. + 2. CONTENTS: Show all headlines of all levels, but no body text. + 3. SHOW ALL: Show everything. + When called with two `C-u C-u' prefixes, switch to the startup visibility, + determined by the variable `org-startup-folded', and by any VISIBILITY + properties in the buffer. + When called with three `C-u C-u C-u' prefixed, show the entire buffer, + including any drawers. + +- When inside a table, re-align the table and move to the next field. + +- When point is at the beginning of a headline, rotate the subtree started + by this line through 3 different states (local cycling) + 1. FOLDED: Only the main headline is shown. + 2. CHILDREN: The main headline and the direct children are shown. + From this state, you can move to one of the children + and zoom in further. + 3. SUBTREE: Show the entire subtree, including body text. + If there is no subtree, switch directly from CHILDREN to FOLDED. + +- When point is at the beginning of an empty headline and the variable + `org-cycle-level-after-item/entry-creation' is set, cycle the level + of the headline by demoting and promoting it to likely levels. This + speeds up creation document structure by pressing TAB once or several + times right after creating a new headline. + +- When there is a numeric prefix, go up to a heading with level ARG, do + a `show-subtree' and return to the previous cursor position. If ARG + is negative, go up that many levels. + +- When point is not at the beginning of a headline, execute the global + binding for TAB, which is re-indenting the line. See the option + `org-cycle-emulate-tab' for details. + +- Special case: if point is at the beginning of the buffer and there is + no headline in line 1, this function will act as if called with prefix arg + (C-u TAB, same as S-TAB) also when called without prefix arg. + But only if also the variable `org-cycle-global-at-bob' is t. + +\(fn &optional ARG)" t nil) (autoload 'org-global-cycle "org" "\ Cycle the global visibility. For details see `org-cycle'. @@ -19918,75 +19674,6 @@ Open a link in the string S, as if it was in Org-mode. \(fn S &optional ARG REFERENCE-BUFFER)" t nil) -(autoload 'org-update-all-dblocks "org" "\ -Update all dynamic blocks in the buffer. -This function can be used in a hook. - -\(fn)" t nil) - -(autoload 'org-map-entries "org" "\ -Call FUNC at each headline selected by MATCH in SCOPE. - -FUNC is a function or a lisp form. The function will be called without -arguments, with the cursor positioned at the beginning of the headline. -The return values of all calls to the function will be collected and -returned as a list. - -The call to FUNC will be wrapped into a save-excursion form, so FUNC -does not need to preserve point. After evaluation, the cursor will be -moved to the end of the line (presumably of the headline of the -processed entry) and search continues from there. Under some -circumstances, this may not produce the wanted results. For example, -if you have removed (e.g. archived) the current (sub)tree it could -mean that the next entry will be skipped entirely. In such cases, you -can specify the position from where search should continue by making -FUNC set the variable `org-map-continue-from' to the desired buffer -position. - -MATCH is a tags/property/todo match as it is used in the agenda tags view. -Only headlines that are matched by this query will be considered during -the iteration. When MATCH is nil or t, all headlines will be -visited by the iteration. - -SCOPE determines the scope of this command. It can be any of: - -nil The current buffer, respecting the restriction if any -tree The subtree started with the entry at point -region The entries within the active region, if any -region-start-level - The entries within the active region, but only those at - the same level than the first one. -file The current buffer, without restriction -file-with-archives - The current buffer, and any archives associated with it -agenda All agenda files -agenda-with-archives - All agenda files with any archive files associated with them -\(file1 file2 ...) - If this is a list, all files in the list will be scanned - -The remaining args are treated as settings for the skipping facilities of -the scanner. The following items can be given here: - - archive skip trees with the archive tag. - comment skip trees with the COMMENT keyword - function or Emacs Lisp form: - will be used as value for `org-agenda-skip-function', so whenever - the function returns t, FUNC will not be called for that - entry and search will continue from the point where the - function leaves it. - -If your function needs to retrieve the tags including inherited tags -at the *current* entry, you can use the value of the variable -`org-scanner-tags' which will be much faster than getting the value -with `org-get-tags-at'. If your function gets properties with -`org-entry-properties' at the *current* entry, bind `org-trust-scanner-tags' -to t around the call to `org-entry-properties' to get the same speedup. -Note that if your function moves around to retrieve tags and properties at -a *different* entry, you cannot use these techniques. - -\(fn FUNC &optional MATCH SCOPE &rest SKIP)" nil nil) - (autoload 'org-switchb "org" "\ Switch between Org buffers. With one prefix argument, restrict available buffers to files. @@ -20017,11 +19704,6 @@ If you don't have setup sending mail from (X)Emacs, please copy the output buffer into your mail program, as it gives us important information about your Org-mode version and configuration. -\(fn)" t nil) - -(autoload 'org-require-autoloaded-modules "org" "\ - - \(fn)" t nil) (autoload 'org-reload "org" "\ @@ -20035,70 +19717,14 @@ Call the customize function with org as argument. \(fn)" t nil) -(autoload 'org-forward-element "org" "\ -Move forward by one element. -Move to the next element at the same level, when possible. - -\(fn)" t nil) - -(autoload 'org-backward-element "org" "\ -Move backward by one element. -Move to the previous element at the same level, when possible. - -\(fn)" t nil) - -(autoload 'org-up-element "org" "\ -Move to upper element. - -\(fn)" t nil) - -(defvar org-element-greater-elements) - -(autoload 'org-drag-element-backward "org" "\ -Move backward element at point. - -\(fn)" t nil) - -(autoload 'org-drag-element-forward "org" "\ -Move forward element at point. - -\(fn)" t nil) - -(autoload 'org-mark-element "org" "\ -Put point at beginning of this element, mark at end. - -Interactively, if this command is repeated or (in Transient Mark -mode) if the mark is active, it marks the next element after the -ones already marked. - -\(fn)" t nil) - -(autoload 'org-narrow-to-element "org" "\ -Narrow buffer to current element. - -\(fn)" t nil) - -(autoload 'org-transpose-element "org" "\ -Transpose current and previous elements, keeping blank lines between. -Point is moved after both elements. - -\(fn)" t nil) - -(autoload 'org-unindent-buffer "org" "\ -Un-indent the visible part of the buffer. -Relative indentation (between items, inside blocks, etc.) isn't -modified. - -\(fn)" t nil) - ;;;*** -;;;### (autoloads (org-agenda-to-appt org-calendar-goto-agenda org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item -;;;;;; org-diary org-agenda-list-stuck-projects org-tags-view org-todo-list +;;;### (autoloads (org-agenda-to-appt org-calendar-goto-agenda org-diary +;;;;;; org-agenda-list-stuck-projects org-tags-view org-todo-list ;;;;;; 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" -;;;;;; (20592 26321 0 0)) +;;;;;; (20618 55210 422086 0)) ;;; Generated autoloads from org/org-agenda.el (autoload 'org-toggle-sticky-agenda "org-agenda" "\ @@ -20312,11 +19938,6 @@ function from a program - use `org-agenda-get-day-entries' instead. \(fn &rest ARGS)" nil nil) -(autoload 'org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item "org-agenda" "\ -Do we have a reason to ignore this TODO entry because it has a time stamp? - -\(fn &optional END)" nil nil) - (autoload 'org-calendar-goto-agenda "org-agenda" "\ Compute the Org-mode agenda for the calendar date displayed at the cursor. This is a command that has to be installed in `calendar-mode-map'. @@ -20359,131 +19980,37 @@ to override `appt-message-warning-time'. ;;;*** -;;;### (autoloads (org-archive-subtree-default-with-confirmation -;;;;;; org-archive-subtree-default) "org-archive" "org/org-archive.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-archive.el +;;;### (autoloads (org-beamer-mode org-beamer-sectioning) "org-beamer" +;;;;;; "org/org-beamer.el" (20618 55210 422086 0)) +;;; Generated autoloads from org/org-beamer.el -(autoload 'org-archive-subtree-default "org-archive" "\ -Archive the current subtree with the default command. -This command is set with the variable `org-archive-default-command'. +(autoload 'org-beamer-sectioning "org-beamer" "\ +Return the sectioning entry for the current headline. +LEVEL is the reduced level of the headline. +TEXT is the text of the headline, everything except the leading stars. +The return value is a cons cell. The car is the headline text, usually +just TEXT, but possibly modified if options have been extracted from the +text. The cdr is the sectioning entry, similar to what is given +in org-export-latex-classes. -\(fn)" t nil) +\(fn LEVEL TEXT)" nil nil) -(autoload 'org-archive-subtree-default-with-confirmation "org-archive" "\ -Archive the current subtree with the default command. -This command is set with the variable `org-archive-default-command'. +(autoload 'org-beamer-mode "org-beamer" "\ +Special support for editing Org-mode files made to export to beamer. -\(fn)" t nil) +\(fn &optional ARG)" t nil) ;;;*** -;;;### (autoloads (org-export-as-ascii org-export-region-as-ascii -;;;;;; org-replace-region-by-ascii org-export-as-ascii-to-buffer -;;;;;; org-export-as-utf8-to-buffer org-export-as-utf8 org-export-as-latin1-to-buffer -;;;;;; org-export-as-latin1) "org-ascii" "org/org-ascii.el" (20585 -;;;;;; 55103 0 0)) -;;; Generated autoloads from org/org-ascii.el - -(autoload 'org-export-as-latin1 "org-ascii" "\ -Like `org-export-as-ascii', use latin1 encoding for special symbols. - -\(fn &rest ARGS)" t nil) - -(autoload 'org-export-as-latin1-to-buffer "org-ascii" "\ -Like `org-export-as-ascii-to-buffer', use latin1 encoding for symbols. - -\(fn &rest ARGS)" t nil) - -(autoload 'org-export-as-utf8 "org-ascii" "\ -Like `org-export-as-ascii', use encoding for special symbols. - -\(fn &rest ARGS)" t nil) - -(autoload 'org-export-as-utf8-to-buffer "org-ascii" "\ -Like `org-export-as-ascii-to-buffer', use utf8 encoding for symbols. - -\(fn &rest ARGS)" t nil) - -(autoload 'org-export-as-ascii-to-buffer "org-ascii" "\ -Call `org-export-as-ascii` with output to a temporary buffer. -No file is created. The prefix ARG is passed through to `org-export-as-ascii'. - -\(fn ARG)" t nil) - -(autoload 'org-replace-region-by-ascii "org-ascii" "\ -Assume the current region has org-mode syntax, and convert it to plain ASCII. -This can be used in any buffer. For example, you could write an -itemized list in org-mode syntax in a Mail buffer and then use this -command to convert it. - -\(fn BEG END)" t nil) - -(autoload 'org-export-region-as-ascii "org-ascii" "\ -Convert region from BEG to END in org-mode buffer to plain ASCII. -If prefix arg BODY-ONLY is set, omit file header, footer, and table of -contents, and only produce the region of converted text, useful for -cut-and-paste operations. -If BUFFER is a buffer or a string, use/create that buffer as a target -of the converted ASCII. If BUFFER is the symbol `string', return the -produced ASCII as a string and leave not buffer behind. For example, -a Lisp program could call this function in the following way: - - (setq ascii (org-export-region-as-ascii beg end t 'string)) - -When called interactively, the output buffer is selected, and shown -in a window. A non-interactive call will only return the buffer. - -\(fn BEG END &optional BODY-ONLY BUFFER)" t nil) - -(autoload 'org-export-as-ascii "org-ascii" "\ -Export the outline as a pretty ASCII file. -If there is an active region, export only the region. -The prefix ARG specifies how many levels of the outline should become -underlined headlines, default is 3. Lower levels will become bulleted -lists. When HIDDEN is non-nil, don't display the ASCII buffer. -EXT-PLIST is a property list with external parameters overriding -org-mode's default settings, but still inferior to file-local -settings. When TO-BUFFER is non-nil, create a buffer with that -name and export to that buffer. If TO-BUFFER is the symbol -`string', don't leave any buffer behind but just return the -resulting ASCII as a string. When BODY-ONLY is set, don't produce -the file header and footer. When PUB-DIR is set, use this as the -publishing directory. - -\(fn ARG &optional HIDDEN EXT-PLIST TO-BUFFER BODY-ONLY PUB-DIR)" t nil) - -;;;*** - -;;;### (autoloads (org-attach) "org-attach" "org/org-attach.el" (20585 -;;;;;; 55103 0 0)) -;;; Generated autoloads from org/org-attach.el - -(autoload 'org-attach "org-attach" "\ -The dispatcher for attachment commands. -Shows a list of commands and prompts for another key to execute a command. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (org-bbdb-anniversaries) "org-bbdb" "org/org-bbdb.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-bbdb.el - -(autoload 'org-bbdb-anniversaries "org-bbdb" "\ -Extract anniversaries from BBDB for display in the agenda. - -\(fn)" nil nil) - -;;;*** - -;;;### (autoloads (org-capture-import-remember-templates org-capture-insert-template-here -;;;;;; org-capture) "org-capture" "org/org-capture.el" (20585 55103 -;;;;;; 0 0)) +;;;### (autoloads (org-capture-import-remember-templates org-capture +;;;;;; org-capture-string) "org-capture" "org/org-capture.el" (20618 +;;;;;; 55210 422086 0)) ;;; Generated autoloads from org/org-capture.el -(defvar org-capture-initial nil) +(autoload 'org-capture-string "org-capture" "\ + + +\(fn STRING &optional KEYS)" t nil) (autoload 'org-capture "org-capture" "\ Capture something. @@ -20510,11 +20037,6 @@ agenda will use the date at point as the default date. \(fn &optional GOTO KEYS)" t nil) -(autoload 'org-capture-insert-template-here "org-capture" "\ - - -\(fn)" nil nil) - (autoload 'org-capture-import-remember-templates "org-capture" "\ Set org-capture-templates to be similar to `org-remember-templates'. @@ -20522,40 +20044,53 @@ Set org-capture-templates to be similar to `org-remember-templates'. ;;;*** -;;;### (autoloads (org-clock-persistence-insinuate org-get-clocktable -;;;;;; org-clock-in-last) "org-clock" "org/org-clock.el" (20585 -;;;;;; 55103 0 0)) -;;; Generated autoloads from org/org-clock.el +;;;### (autoloads (org-agenda-columns org-insert-columns-dblock org-dblock-write:columnview +;;;;;; org-columns) "org-colview" "org/org-colview.el" (20618 55210 +;;;;;; 422086 0)) +;;; Generated autoloads from org/org-colview.el -(autoload 'org-clock-in-last "org-clock" "\ -Clock in the last closed clocked item. -When already clocking in, send an warning. -With a universal prefix argument, select the task you want to -clock in from the last clocked in tasks. -With two universal prefix arguments, start clocking using the -last clock-out time, if any. -With three universal prefix arguments, interactively prompt -for a todo state to switch to, overriding the existing value -`org-clock-in-switch-to-state'. +(autoload 'org-columns "org-colview" "\ +Turn on column view on an org-mode file. +When COLUMNS-FMT-STRING is non-nil, use it as the column format. -\(fn &optional ARG)" t nil) +\(fn &optional COLUMNS-FMT-STRING)" t nil) -(autoload 'org-get-clocktable "org-clock" "\ -Get a formatted clocktable with parameters according to PROPS. -The table is created in a temporary buffer, fully formatted and -fontified, and then returned. +(autoload 'org-dblock-write:columnview "org-colview" "\ +Write the column view table. +PARAMS is a property list of parameters: -\(fn &rest PROPS)" nil nil) +:width enforce same column widths with specifiers. +:id the :ID: property of the entry where the columns view + should be built. When the symbol `local', call locally. + When `global' call column view with the cursor at the beginning + of the buffer (usually this means that the whole buffer switches + to column view). When \"file:path/to/file.org\", invoke column + view at the start of that file. Otherwise, the ID is located + using `org-id-find'. +:hlines When t, insert a hline before each item. When a number, insert + a hline before each level <= that number. +:vlines When t, make each column a colgroup to enforce vertical lines. +:maxlevel When set to a number, don't capture headlines below this level. +:skip-empty-rows + When t, skip rows where all specifiers other than ITEM are empty. +:format When non-nil, specify the column view format to use. -(autoload 'org-clock-persistence-insinuate "org-clock" "\ -Set up hooks for clock persistence. +\(fn PARAMS)" nil nil) -\(fn)" nil nil) +(autoload 'org-insert-columns-dblock "org-colview" "\ +Create a dynamic block capturing a column view table. + +\(fn)" t nil) + +(autoload 'org-agenda-columns "org-colview" "\ +Turn on or update column view in the agenda. + +\(fn)" t nil) ;;;*** ;;;### (autoloads (org-check-version) "org-compat" "org/org-compat.el" -;;;;;; (20585 55103 0 0)) +;;;;;; (20618 55210 422086 0)) ;;; Generated autoloads from org/org-compat.el (autoload 'org-check-version "org-compat" "\ @@ -20563,1082 +20098,10 @@ Try very hard to provide sensible version strings. \(fn)" nil t) -;;;*** - -;;;### (autoloads (org-datetree-find-date-create) "org-datetree" -;;;;;; "org/org-datetree.el" (20585 55103 0 0)) -;;; Generated autoloads from org/org-datetree.el - -(autoload 'org-datetree-find-date-create "org-datetree" "\ -Find or create an entry for DATE. -If KEEP-RESTRICTION is non-nil, do not widen the buffer. -When it is nil, the buffer will be widened to make sure an existing date -tree can be found. - -\(fn DATE &optional KEEP-RESTRICTION)" nil nil) - -;;;*** - -;;;### (autoloads (org-export-as-docbook org-export-as-docbook-pdf-and-open -;;;;;; org-export-as-docbook-pdf org-export-region-as-docbook org-replace-region-by-docbook -;;;;;; org-export-as-docbook-to-buffer org-export-as-docbook-batch) -;;;;;; "org-docbook" "org/org-docbook.el" (20585 55103 0 0)) -;;; Generated autoloads from org/org-docbook.el - -(autoload 'org-export-as-docbook-batch "org-docbook" "\ -Call `org-export-as-docbook' in batch style. -This function can be used in batch processing. - -For example: - -$ emacs --batch - --load=$HOME/lib/emacs/org.el - --visit=MyOrgFile.org --funcall org-export-as-docbook-batch - -\(fn)" nil nil) - -(autoload 'org-export-as-docbook-to-buffer "org-docbook" "\ -Call `org-export-as-docbook' with output to a temporary buffer. -No file is created. - -\(fn)" t nil) - -(autoload 'org-replace-region-by-docbook "org-docbook" "\ -Replace the region from BEG to END with its DocBook export. -It assumes the region has `org-mode' syntax, and then convert it to -DocBook. This can be used in any buffer. For example, you could -write an itemized list in `org-mode' syntax in an DocBook buffer and -then use this command to convert it. - -\(fn BEG END)" t nil) - -(autoload 'org-export-region-as-docbook "org-docbook" "\ -Convert region from BEG to END in `org-mode' buffer to DocBook. -If prefix arg BODY-ONLY is set, omit file header and footer and -only produce the region of converted text, useful for -cut-and-paste operations. If BUFFER is a buffer or a string, -use/create that buffer as a target of the converted DocBook. If -BUFFER is the symbol `string', return the produced DocBook as a -string and leave not buffer behind. For example, a Lisp program -could call this function in the following way: - - (setq docbook (org-export-region-as-docbook beg end t 'string)) - -When called interactively, the output buffer is selected, and shown -in a window. A non-interactive call will only return the buffer. - -\(fn BEG END &optional BODY-ONLY BUFFER)" t nil) - -(autoload 'org-export-as-docbook-pdf "org-docbook" "\ -Export as DocBook XML file, and generate PDF file. - -\(fn &optional HIDDEN EXT-PLIST TO-BUFFER BODY-ONLY PUB-DIR)" t nil) - -(autoload 'org-export-as-docbook-pdf-and-open "org-docbook" "\ -Export as DocBook XML file, generate PDF file, and open it. - -\(fn)" t nil) - -(autoload 'org-export-as-docbook "org-docbook" "\ -Export the current buffer as a DocBook file. -If there is an active region, export only the region. When -HIDDEN is obsolete and does nothing. EXT-PLIST is a -property list with external parameters overriding org-mode's -default settings, but still inferior to file-local settings. -When TO-BUFFER is non-nil, create a buffer with that name and -export to that buffer. If TO-BUFFER is the symbol `string', -don't leave any buffer behind but just return the resulting HTML -as a string. When BODY-ONLY is set, don't produce the file -header and footer, simply return the content of the document (all -top-level sections). When PUB-DIR is set, use this as the -publishing directory. - -\(fn &optional HIDDEN EXT-PLIST TO-BUFFER BODY-ONLY PUB-DIR)" t nil) - -;;;*** - -;;;### (autoloads (org-element-context org-element-at-point org-element-interpret-data) -;;;;;; "org-element" "org/org-element.el" (20592 26321 0 0)) -;;; Generated autoloads from org/org-element.el - -(autoload 'org-element-interpret-data "org-element" "\ -Interpret DATA as Org syntax. - -DATA is a parse tree, an element, an object or a secondary string -to interpret. - -Optional argument PARENT is used for recursive calls. It contains -the element or object containing data, or nil. - -Return Org syntax as a string. - -\(fn DATA &optional PARENT)" nil nil) - -(autoload 'org-element-at-point "org-element" "\ -Determine closest element around point. - -Return value is a list like (TYPE PROPS) where TYPE is the type -of the element and PROPS a plist of properties associated to the -element. - -Possible types are defined in `org-element-all-elements'. -Properties depend on element or object type, but always -include :begin, :end, :parent and :post-blank properties. - -As a special case, if point is at the very beginning of a list or -sub-list, returned element will be that list instead of the first -item. In the same way, if point is at the beginning of the first -row of a table, returned element will be the table instead of the -first row. - -If optional argument KEEP-TRAIL is non-nil, the function returns -a list of of elements leading to element at point. The list's -CAR is always the element at point. Following positions contain -element's siblings, then parents, siblings of parents, until the -first element of current section. - -\(fn &optional KEEP-TRAIL)" nil nil) - -(autoload 'org-element-context "org-element" "\ -Return closest element or object around point. - -Return value is a list like (TYPE PROPS) where TYPE is the type -of the element or object and PROPS a plist of properties -associated to it. - -Possible types are defined in `org-element-all-elements' and -`org-element-all-objects'. Properties depend on element or -object type, but always include :begin, :end, :parent -and :post-blank properties. - -\(fn)" nil nil) - -;;;*** - -;;;### (autoloads (org-insert-export-options-template org-export-as-org -;;;;;; org-export-visible org-export) "org-exp" "org/org-exp.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-exp.el - -(autoload 'org-export "org-exp" "\ -Export dispatcher for Org-mode. -When `org-export-run-in-background' is non-nil, try to run the command -in the background. This will be done only for commands that write -to a file. For details see the docstring of `org-export-run-in-background'. - -The prefix argument ARG will be passed to the exporter. However, if -ARG is a double universal prefix \\[universal-argument] \\[universal-argument], that means to inverse the -value of `org-export-run-in-background'. - -If `org-export-initial-scope' is set to 'subtree, try to export -the current subtree, otherwise try to export the whole buffer. -Pressing `1' will switch between these two options. - -\(fn &optional ARG)" t nil) - -(autoload 'org-export-visible "org-exp" "\ -Create a copy of the visible part of the current buffer, and export it. -The copy is created in a temporary buffer and removed after use. -TYPE is the final key (as a string) that also selects the export command in -the \\\\[org-export] export dispatcher. -As a special case, if the you type SPC at the prompt, the temporary -org-mode file will not be removed but presented to you so that you can -continue to use it. The prefix arg ARG is passed through to the exporting -command. - -\(fn TYPE ARG)" t nil) - -(autoload 'org-export-as-org "org-exp" "\ -Make a copy with not-exporting stuff removed. -The purpose of this function is to provide a way to export the source -Org file of a webpage in Org format, but with sensitive and/or irrelevant -stuff removed. This command will remove the following: - -- archived trees (if the variable `org-export-with-archived-trees' is nil) -- comment blocks and trees starting with the COMMENT keyword -- only trees that are consistent with `org-export-select-tags' - and `org-export-exclude-tags'. - -The only arguments that will be used are EXT-PLIST and PUB-DIR, -all the others will be ignored (but are present so that the general -mechanism to call publishing functions will work). - -EXT-PLIST is a property list with external parameters overriding -org-mode's default settings, but still inferior to file-local -settings. When PUB-DIR is set, use this as the publishing -directory. - -\(fn ARG &optional HIDDEN EXT-PLIST TO-BUFFER BODY-ONLY PUB-DIR)" t nil) - -(autoload 'org-insert-export-options-template "org-exp" "\ -Insert into the buffer a template with information for exporting. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (org-feed-show-raw-feed org-feed-goto-inbox org-feed-update -;;;;;; org-feed-update-all) "org-feed" "org/org-feed.el" (20585 -;;;;;; 55103 0 0)) -;;; Generated autoloads from org/org-feed.el - -(autoload 'org-feed-update-all "org-feed" "\ -Get inbox items from all feeds in `org-feed-alist'. - -\(fn)" t nil) - -(autoload 'org-feed-update "org-feed" "\ -Get inbox items from FEED. -FEED can be a string with an association in `org-feed-alist', or -it can be a list structured like an entry in `org-feed-alist'. - -\(fn FEED &optional RETRIEVE-ONLY)" t nil) - -(autoload 'org-feed-goto-inbox "org-feed" "\ -Go to the inbox that captures the feed named FEED. - -\(fn FEED)" t nil) - -(autoload 'org-feed-show-raw-feed "org-feed" "\ -Show the raw feed buffer of a feed. - -\(fn FEED)" t nil) - -;;;*** - -;;;### (autoloads (org-footnote-normalize org-footnote-action) "org-footnote" -;;;;;; "org/org-footnote.el" (20585 55103 0 0)) -;;; Generated autoloads from org/org-footnote.el - -(autoload 'org-footnote-action "org-footnote" "\ -Do the right thing for footnotes. - -When at a footnote reference, jump to the definition. - -When at a definition, jump to the references if they exist, offer -to create them otherwise. - -When neither at definition or reference, create a new footnote, -interactively. - -With prefix arg SPECIAL, offer additional commands in a menu. - -\(fn &optional SPECIAL)" t nil) - -(autoload 'org-footnote-normalize "org-footnote" "\ -Collect the footnotes in various formats and normalize them. - -This finds the different sorts of footnotes allowed in Org, and -normalizes them to the usual [N] format that is understood by the -Org-mode exporters. - -When SORT-ONLY is set, only sort the footnote definitions into the -referenced sequence. - -If Org is amidst an export process, EXPORT-PROPS will hold the -export properties of the buffer. - -When EXPORT-PROPS is non-nil, the default action is to insert -normalized footnotes towards the end of the pre-processing -buffer. Some exporters (docbook, odt...) expect footnote -definitions to be available before any references to them. Such -exporters can let bind `org-footnote-insert-pos-for-preprocessor' -to symbol `point-min' to achieve the desired behaviour. - -Additional note on `org-footnote-insert-pos-for-preprocessor': -1. This variable has not effect when FOR-PREPROCESSOR is nil. -2. This variable (potentially) obviates the need for extra scan - of pre-processor buffer as witnessed in - `org-export-docbook-get-footnotes'. - -\(fn &optional SORT-ONLY EXPORT-PROPS)" nil nil) - -;;;*** - -;;;### (autoloads (org-freemind-to-org-mode org-freemind-from-org-sparse-tree -;;;;;; org-freemind-from-org-mode org-freemind-from-org-mode-node -;;;;;; org-freemind-show org-export-as-freemind) "org-freemind" -;;;;;; "org/org-freemind.el" (20585 55103 0 0)) -;;; Generated autoloads from org/org-freemind.el - -(autoload 'org-export-as-freemind "org-freemind" "\ -Export the current buffer as a Freemind file. -If there is an active region, export only the region. HIDDEN is -obsolete and does nothing. EXT-PLIST is a property list with -external parameters overriding org-mode's default settings, but -still inferior to file-local settings. When TO-BUFFER is -non-nil, create a buffer with that name and export to that -buffer. If TO-BUFFER is the symbol `string', don't leave any -buffer behind but just return the resulting HTML as a string. -When BODY-ONLY is set, don't produce the file header and footer, -simply return the content of the document (all top level -sections). When PUB-DIR is set, use this as the publishing -directory. - -See `org-freemind-from-org-mode' for more information. - -\(fn &optional HIDDEN EXT-PLIST TO-BUFFER BODY-ONLY PUB-DIR)" t nil) - -(autoload 'org-freemind-show "org-freemind" "\ -Show file MM-FILE in Freemind. - -\(fn MM-FILE)" t nil) - -(autoload 'org-freemind-from-org-mode-node "org-freemind" "\ -Convert node at line NODE-LINE to the FreeMind file MM-FILE. -See `org-freemind-from-org-mode' for more information. - -\(fn NODE-LINE MM-FILE)" t nil) - -(autoload 'org-freemind-from-org-mode "org-freemind" "\ -Convert the `org-mode' file ORG-FILE to the FreeMind file MM-FILE. -All the nodes will be opened or closed in Freemind just as you -have them in `org-mode'. - -Note that exporting to Freemind also gives you an alternative way -to export from `org-mode' to html. You can create a dynamic html -version of the your org file, by first exporting to Freemind and -then exporting from Freemind to html. The 'As -XHTML (JavaScript)' version in Freemind works very well (and you -can use a CSS stylesheet to style it). - -\(fn ORG-FILE MM-FILE)" t nil) - -(autoload 'org-freemind-from-org-sparse-tree "org-freemind" "\ -Convert visible part of buffer ORG-BUFFER to FreeMind file MM-FILE. - -\(fn ORG-BUFFER MM-FILE)" t nil) - -(autoload 'org-freemind-to-org-mode "org-freemind" "\ -Convert FreeMind file MM-FILE to `org-mode' file ORG-FILE. - -\(fn MM-FILE ORG-FILE)" t nil) - -;;;*** - -;;;### (autoloads (org-export-htmlize-generate-css org-export-as-html -;;;;;; org-export-region-as-html org-replace-region-by-html org-export-as-html-to-buffer -;;;;;; org-export-as-html-batch org-export-as-html-and-open) "org-html" -;;;;;; "org/org-html.el" (20585 55103 0 0)) -;;; Generated autoloads from org/org-html.el - -(put 'org-export-html-style-include-default 'safe-local-variable 'booleanp) - -(put 'org-export-html-style 'safe-local-variable 'stringp) - -(put 'org-export-html-style-extra 'safe-local-variable 'stringp) - -(autoload 'org-export-as-html-and-open "org-html" "\ -Export the outline as HTML and immediately open it with a browser. -If there is an active region, export only the region. -The prefix ARG specifies how many levels of the outline should become -headlines. The default is 3. Lower levels will become bulleted lists. - -\(fn ARG)" t nil) - -(autoload 'org-export-as-html-batch "org-html" "\ -Call the function `org-export-as-html'. -This function can be used in batch processing as: -emacs --batch - --load=$HOME/lib/emacs/org.el - --eval \"(setq org-export-headline-levels 2)\" - --visit=MyFile --funcall org-export-as-html-batch - -\(fn)" nil nil) - -(autoload 'org-export-as-html-to-buffer "org-html" "\ -Call `org-export-as-html` with output to a temporary buffer. -No file is created. The prefix ARG is passed through to `org-export-as-html'. - -\(fn ARG)" t nil) - -(autoload 'org-replace-region-by-html "org-html" "\ -Assume the current region has org-mode syntax, and convert it to HTML. -This can be used in any buffer. For example, you could write an -itemized list in org-mode syntax in an HTML buffer and then use this -command to convert it. - -\(fn BEG END)" t nil) - -(autoload 'org-export-region-as-html "org-html" "\ -Convert region from BEG to END in org-mode buffer to HTML. -If prefix arg BODY-ONLY is set, omit file header, footer, and table of -contents, and only produce the region of converted text, useful for -cut-and-paste operations. -If BUFFER is a buffer or a string, use/create that buffer as a target -of the converted HTML. If BUFFER is the symbol `string', return the -produced HTML as a string and leave not buffer behind. For example, -a Lisp program could call this function in the following way: - - (setq html (org-export-region-as-html beg end t 'string)) - -When called interactively, the output buffer is selected, and shown -in a window. A non-interactive call will only return the buffer. - -\(fn BEG END &optional BODY-ONLY BUFFER)" t nil) - -(autoload 'org-export-as-html "org-html" "\ -Export the outline as a pretty HTML file. -If there is an active region, export only the region. The prefix -ARG specifies how many levels of the outline should become -headlines. The default is 3. Lower levels will become bulleted -lists. HIDDEN is obsolete and does nothing. -EXT-PLIST is a property list with external parameters overriding -org-mode's default settings, but still inferior to file-local -settings. When TO-BUFFER is non-nil, create a buffer with that -name and export to that buffer. If TO-BUFFER is the symbol -`string', don't leave any buffer behind but just return the -resulting HTML as a string. When BODY-ONLY is set, don't produce -the file header and footer, simply return the content of -..., without even the body tags themselves. When -PUB-DIR is set, use this as the publishing directory. - -\(fn ARG &optional HIDDEN EXT-PLIST TO-BUFFER BODY-ONLY PUB-DIR)" t nil) - -(autoload 'org-export-htmlize-generate-css "org-html" "\ -Create the CSS for all font definitions in the current Emacs session. -Use this to create face definitions in your CSS style file that can then -be used by code snippets transformed by htmlize. -This command just produces a buffer that contains class definitions for all -faces used in the current Emacs session. You can copy and paste the ones you -need into your CSS file. - -If you then set `org-export-htmlize-output-type' to `css', calls to -the function `org-export-htmlize-region-for-paste' will produce code -that uses these same face definitions. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (org-export-icalendar-combine-agenda-files org-export-icalendar-all-agenda-files -;;;;;; org-export-icalendar-this-file) "org-icalendar" "org/org-icalendar.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-icalendar.el - -(autoload 'org-export-icalendar-this-file "org-icalendar" "\ -Export current file as an iCalendar file. -The iCalendar file will be located in the same directory as the Org-mode -file, but with extension `.ics'. - -\(fn)" t nil) - -(autoload 'org-export-icalendar-all-agenda-files "org-icalendar" "\ -Export all files in the variable `org-agenda-files' to iCalendar .ics files. -Each iCalendar file will be located in the same directory as the Org-mode -file, but with extension `.ics'. - -\(fn)" t nil) - -(autoload 'org-export-icalendar-combine-agenda-files "org-icalendar" "\ -Export all files in `org-agenda-files' to a single combined iCalendar file. -The file is stored under the name `org-combined-agenda-icalendar-file'. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (org-id-store-link org-id-find-id-file org-id-find -;;;;;; org-id-goto org-id-get-with-outline-drilling org-id-get-with-outline-path-completion -;;;;;; org-id-get org-id-copy org-id-get-create) "org-id" "org/org-id.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-id.el - -(autoload 'org-id-get-create "org-id" "\ -Create an ID for the current entry and return it. -If the entry already has an ID, just return it. -With optional argument FORCE, force the creation of a new ID. - -\(fn &optional FORCE)" t nil) - -(autoload 'org-id-copy "org-id" "\ -Copy the ID of the entry at point to the kill ring. -Create an ID if necessary. - -\(fn)" t nil) - -(autoload 'org-id-get "org-id" "\ -Get the ID property of the entry at point-or-marker POM. -If POM is nil, refer to the entry at point. -If the entry does not have an ID, the function returns nil. -However, when CREATE is non nil, create an ID if none is present already. -PREFIX will be passed through to `org-id-new'. -In any case, the ID of the entry is returned. - -\(fn &optional POM CREATE PREFIX)" nil nil) - -(autoload 'org-id-get-with-outline-path-completion "org-id" "\ -Use outline-path-completion to retrieve the ID of an entry. -TARGETS may be a setting for `org-refile-targets' to define the eligible -headlines. When omitted, all headlines in all agenda files are -eligible. -It returns the ID of the entry. If necessary, the ID is created. - -\(fn &optional TARGETS)" nil nil) - -(autoload 'org-id-get-with-outline-drilling "org-id" "\ -Use an outline-cycling interface to retrieve the ID of an entry. -This only finds entries in the current buffer, using `org-get-location'. -It returns the ID of the entry. If necessary, the ID is created. - -\(fn &optional TARGETS)" nil nil) - -(autoload 'org-id-goto "org-id" "\ -Switch to the buffer containing the entry with id ID. -Move the cursor to that entry in that buffer. - -\(fn ID)" t nil) - -(autoload 'org-id-find "org-id" "\ -Return the location of the entry with the id ID. -The return value is a cons cell (file-name . position), or nil -if there is no entry with that ID. -With optional argument MARKERP, return the position as a new marker. - -\(fn ID &optional MARKERP)" nil nil) - -(autoload 'org-id-find-id-file "org-id" "\ -Query the id database for the file in which this ID is located. - -\(fn ID)" nil nil) - -(autoload 'org-id-store-link "org-id" "\ -Store a link to the current entry, using its ID. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (org-indent-mode) "org-indent" "org/org-indent.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-indent.el - -(autoload 'org-indent-mode "org-indent" "\ -When active, indent text according to outline structure. - -Internally this works by adding `line-prefix' and `wrap-prefix' -properties, after each buffer modification, on the modified zone. - -The process is synchronous. Though, initial indentation of -buffer, which can take a few seconds on large buffers, is done -during idle time. - -\(fn &optional ARG)" t nil) - -;;;*** - -;;;### (autoloads (org-irc-store-link) "org-irc" "org/org-irc.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-irc.el - -(autoload 'org-irc-store-link "org-irc" "\ -Dispatch to the appropriate function to store a link to an IRC session. - -\(fn)" nil nil) - -;;;*** - -;;;### (autoloads (org-export-as-pdf-and-open org-export-as-pdf org-export-as-latex -;;;;;; org-export-region-as-latex org-replace-region-by-latex org-export-as-latex-to-buffer -;;;;;; org-export-as-latex-batch) "org-latex" "org/org-latex.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-latex.el - -(autoload 'org-export-as-latex-batch "org-latex" "\ -Call `org-export-as-latex', may be used in batch processing. -For example: - -emacs --batch - --load=$HOME/lib/emacs/org.el - --eval \"(setq org-export-headline-levels 2)\" - --visit=MyFile --funcall org-export-as-latex-batch - -\(fn)" nil nil) - -(autoload 'org-export-as-latex-to-buffer "org-latex" "\ -Call `org-export-as-latex` with output to a temporary buffer. -No file is created. The prefix ARG is passed through to `org-export-as-latex'. - -\(fn ARG)" t nil) - -(autoload 'org-replace-region-by-latex "org-latex" "\ -Replace the region from BEG to END with its LaTeX export. -It assumes the region has `org-mode' syntax, and then convert it to -LaTeX. This can be used in any buffer. For example, you could -write an itemized list in `org-mode' syntax in an LaTeX buffer and -then use this command to convert it. - -\(fn BEG END)" t nil) - -(autoload 'org-export-region-as-latex "org-latex" "\ -Convert region from BEG to END in `org-mode' buffer to LaTeX. -If prefix arg BODY-ONLY is set, omit file header, footer, and table of -contents, and only produce the region of converted text, useful for -cut-and-paste operations. -If BUFFER is a buffer or a string, use/create that buffer as a target -of the converted LaTeX. If BUFFER is the symbol `string', return the -produced LaTeX as a string and leave no buffer behind. For example, -a Lisp program could call this function in the following way: - - (setq latex (org-export-region-as-latex beg end t 'string)) - -When called interactively, the output buffer is selected, and shown -in a window. A non-interactive call will only return the buffer. - -\(fn BEG END &optional BODY-ONLY BUFFER)" t nil) - -(autoload 'org-export-as-latex "org-latex" "\ -Export current buffer to a LaTeX file. -If there is an active region, export only the region. The prefix -ARG specifies how many levels of the outline should become -headlines. The default is 3. Lower levels will be exported -depending on `org-export-latex-low-levels'. The default is to -convert them as description lists. -HIDDEN is obsolete and does nothing. -EXT-PLIST is a property list with -external parameters overriding org-mode's default settings, but -still inferior to file-local settings. When TO-BUFFER is -non-nil, create a buffer with that name and export to that -buffer. If TO-BUFFER is the symbol `string', don't leave any -buffer behind but just return the resulting LaTeX as a string. -When BODY-ONLY is set, don't produce the file header and footer, -simply return the content of \\begin{document}...\\end{document}, -without even the \\begin{document} and \\end{document} commands. -when PUB-DIR is set, use this as the publishing directory. - -\(fn ARG &optional HIDDEN EXT-PLIST TO-BUFFER BODY-ONLY PUB-DIR)" t nil) - -(autoload 'org-export-as-pdf "org-latex" "\ -Export as LaTeX, then process through to PDF. - -\(fn ARG &optional HIDDEN EXT-PLIST TO-BUFFER BODY-ONLY PUB-DIR)" t nil) - -(autoload 'org-export-as-pdf-and-open "org-latex" "\ -Export as LaTeX, then process through to PDF, and open. - -\(fn ARG)" t nil) - -;;;*** - -;;;### (autoloads (org-lparse-region org-replace-region-by org-lparse-to-buffer -;;;;;; org-lparse-batch org-lparse-and-open) "org-lparse" "org/org-lparse.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-lparse.el - -(autoload 'org-lparse-and-open "org-lparse" "\ -Export outline to TARGET-BACKEND via NATIVE-BACKEND and open exported file. -If there is an active region, export only the region. The prefix -ARG specifies how many levels of the outline should become -headlines. The default is 3. Lower levels will become bulleted -lists. - -\(fn TARGET-BACKEND NATIVE-BACKEND ARG &optional FILE-OR-BUF)" nil nil) - -(autoload 'org-lparse-batch "org-lparse" "\ -Call the function `org-lparse'. -This function can be used in batch processing as: -emacs --batch - --load=$HOME/lib/emacs/org.el - --eval \"(setq org-export-headline-levels 2)\" - --visit=MyFile --funcall org-lparse-batch - -\(fn TARGET-BACKEND &optional NATIVE-BACKEND)" nil nil) - -(autoload 'org-lparse-to-buffer "org-lparse" "\ -Call `org-lparse' with output to a temporary buffer. -No file is created. The prefix ARG is passed through to -`org-lparse'. - -\(fn BACKEND ARG)" nil nil) - -(autoload 'org-replace-region-by "org-lparse" "\ -Assume the current region has org-mode syntax, and convert it to HTML. -This can be used in any buffer. For example, you could write an -itemized list in org-mode syntax in an HTML buffer and then use -this command to convert it. - -\(fn BACKEND BEG END)" nil nil) - -(autoload 'org-lparse-region "org-lparse" "\ -Convert region from BEG to END in org-mode buffer to HTML. -If prefix arg BODY-ONLY is set, omit file header, footer, and table of -contents, and only produce the region of converted text, useful for -cut-and-paste operations. -If BUFFER is a buffer or a string, use/create that buffer as a target -of the converted HTML. If BUFFER is the symbol `string', return the -produced HTML as a string and leave not buffer behind. For example, -a Lisp program could call this function in the following way: - - (setq html (org-lparse-region \"html\" beg end t 'string)) - -When called interactively, the output buffer is selected, and shown -in a window. A non-interactive call will only return the buffer. - -\(fn BACKEND BEG END &optional BODY-ONLY BUFFER)" nil nil) - -;;;*** - -;;;### (autoloads (org-mobile-create-sumo-agenda org-mobile-pull -;;;;;; org-mobile-push) "org-mobile" "org/org-mobile.el" (20585 -;;;;;; 55103 0 0)) -;;; Generated autoloads from org/org-mobile.el - -(autoload 'org-mobile-push "org-mobile" "\ -Push the current state of Org affairs to the WebDAV directory. -This will create the index file, copy all agenda files there, and also -create all custom agenda views, for upload to the mobile phone. - -\(fn)" t nil) - -(autoload 'org-mobile-pull "org-mobile" "\ -Pull the contents of `org-mobile-capture-file' and integrate them. -Apply all flagged actions, flag entries to be flagged and then call an -agenda view showing the flagged items. - -\(fn)" t nil) - -(autoload 'org-mobile-create-sumo-agenda "org-mobile" "\ -Create a file that contains all custom agenda views. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (org-export-as-odf-and-open org-export-as-odf org-export-odt-convert -;;;;;; org-export-as-odt org-export-as-odt-batch org-export-as-odt-and-open) -;;;;;; "org-odt" "org/org-odt.el" (20585 55103 0 0)) -;;; Generated autoloads from org/org-odt.el - -(put 'org-export-odt-preferred-output-format 'safe-local-variable 'stringp) - -(autoload 'org-export-as-odt-and-open "org-odt" "\ -Export the outline as ODT and immediately open it with a browser. -If there is an active region, export only the region. -The prefix ARG specifies how many levels of the outline should become -headlines. The default is 3. Lower levels will become bulleted lists. - -\(fn ARG)" t nil) - -(autoload 'org-export-as-odt-batch "org-odt" "\ -Call the function `org-lparse-batch'. -This function can be used in batch processing as: -emacs --batch - --load=$HOME/lib/emacs/org.el - --eval \"(setq org-export-headline-levels 2)\" - --visit=MyFile --funcall org-export-as-odt-batch - -\(fn)" nil nil) - -(autoload 'org-export-as-odt "org-odt" "\ -Export the outline as a OpenDocumentText file. -If there is an active region, export only the region. The prefix -ARG specifies how many levels of the outline should become -headlines. The default is 3. Lower levels will become bulleted -lists. HIDDEN is obsolete and does nothing. -EXT-PLIST is a property list with external parameters overriding -org-mode's default settings, but still inferior to file-local -settings. When TO-BUFFER is non-nil, create a buffer with that -name and export to that buffer. If TO-BUFFER is the symbol -`string', don't leave any buffer behind but just return the -resulting XML as a string. When BODY-ONLY is set, don't produce -the file header and footer, simply return the content of -..., without even the body tags themselves. When -PUB-DIR is set, use this as the publishing directory. - -\(fn ARG &optional HIDDEN EXT-PLIST TO-BUFFER BODY-ONLY PUB-DIR)" t nil) - -(autoload 'org-export-odt-convert "org-odt" "\ -Convert IN-FILE to format OUT-FMT using a command line converter. -IN-FILE is the file to be converted. If unspecified, it defaults -to variable `buffer-file-name'. OUT-FMT is the desired output -format. Use `org-export-odt-convert-process' as the converter. -If PREFIX-ARG is non-nil then the newly converted file is opened -using `org-open-file'. - -\(fn &optional IN-FILE OUT-FMT PREFIX-ARG)" t nil) - -(autoload 'org-export-as-odf "org-odt" "\ -Export LATEX-FRAG as OpenDocument formula file ODF-FILE. -Use `org-create-math-formula' to convert LATEX-FRAG first to -MathML. When invoked as an interactive command, use -`org-latex-regexps' to infer LATEX-FRAG from currently active -region. If no LaTeX fragments are found, prompt for it. Push -MathML source to kill ring, if `org-export-copy-to-kill-ring' is -non-nil. - -\(fn LATEX-FRAG &optional ODF-FILE)" t nil) - -(autoload 'org-export-as-odf-and-open "org-odt" "\ -Export LaTeX fragment as OpenDocument formula and immediately open it. -Use `org-export-as-odf' to read LaTeX fragment and OpenDocument -formula file. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (org-plot/gnuplot) "org-plot" "org/org-plot.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-plot.el - -(autoload 'org-plot/gnuplot "org-plot" "\ -Plot table using gnuplot. Gnuplot options can be specified with PARAMS. -If not given options will be taken from the +PLOT -line directly before or after the table. - -\(fn &optional PARAMS)" t nil) - -;;;*** - -;;;### (autoloads (org-publish-current-project org-publish-current-file -;;;;;; org-publish-all org-publish) "org-publish" "org/org-publish.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-publish.el - -(defalias 'org-publish-project 'org-publish) - -(autoload 'org-publish "org-publish" "\ -Publish PROJECT. - -\(fn PROJECT &optional FORCE)" t nil) - -(autoload 'org-publish-all "org-publish" "\ -Publish all projects. -With prefix argument, remove all files in the timestamp -directory and force publishing all files. - -\(fn &optional FORCE)" t nil) - -(autoload 'org-publish-current-file "org-publish" "\ -Publish the current file. -With prefix argument, force publish the file. - -\(fn &optional FORCE)" t nil) - -(autoload 'org-publish-current-project "org-publish" "\ -Publish the project associated with the current file. -With a prefix argument, force publishing of all files in -the project. - -\(fn &optional FORCE)" t nil) - -;;;*** - -;;;### (autoloads (org-remember-handler org-remember org-remember-apply-template -;;;;;; org-remember-annotation org-remember-insinuate) "org-remember" -;;;;;; "org/org-remember.el" (20592 26321 0 0)) -;;; Generated autoloads from org/org-remember.el - -(autoload 'org-remember-insinuate "org-remember" "\ -Setup remember.el for use with Org-mode. - -\(fn)" nil nil) - -(autoload 'org-remember-annotation "org-remember" "\ -Return a link to the current location as an annotation for remember.el. -If you are using Org-mode files as target for data storage with -remember.el, then the annotations should include a link compatible with the -conventions in Org-mode. This function returns such a link. - -\(fn)" nil nil) - -(autoload 'org-remember-apply-template "org-remember" "\ -Initialize *remember* buffer with template, invoke `org-mode'. -This function should be placed into `remember-mode-hook' and in fact requires -to be run from that hook to function properly. - -\(fn &optional USE-CHAR SKIP-INTERACTIVE)" nil nil) - -(autoload 'org-remember "org-remember" "\ -Call `remember'. If this is already a remember buffer, re-apply template. -If there is an active region, make sure remember uses it as initial content -of the remember buffer. - -When called interactively with a \\[universal-argument] prefix argument GOTO, don't remember -anything, just go to the file/headline where the selected template usually -stores its notes. With a double prefix argument \\[universal-argument] \\[universal-argument], go to the last -note stored by remember. - -Lisp programs can set ORG-FORCE-REMEMBER-TEMPLATE-CHAR to a character -associated with a template in `org-remember-templates'. - -\(fn &optional GOTO ORG-FORCE-REMEMBER-TEMPLATE-CHAR)" t nil) - -(autoload 'org-remember-handler "org-remember" "\ -Store stuff from remember.el into an org file. -When the template has specified a file and a headline, the entry is filed -there, or in the location defined by `org-default-notes-file' and -`org-remember-default-headline'. -\\ -If no defaults have been defined, or if the current prefix argument -is 1 (using C-1 \\[org-remember-finalize] to exit remember), an interactive -process is used to select the target location. - -When the prefix is 0 (i.e. when remember is exited with C-0 \\[org-remember-finalize]), -the entry is filed to the same location as the previous note. - -When the prefix is 2 (i.e. when remember is exited with C-2 \\[org-remember-finalize]), -the entry is filed as a subentry of the entry where the clock is -currently running. - -When \\[universal-argument] has been used as prefix argument, the -note is stored and Emacs moves point to the new location of the -note, so that editing can be continued there (similar to -inserting \"%&\" into the template). - -Before storing the note, the function ensures that the text has an -org-mode-style headline, i.e. a first line that starts with -a \"*\". If not, a headline is constructed from the current date and -some additional data. - -If the variable `org-adapt-indentation' is non-nil, the entire text is -also indented so that it starts in the same column as the headline -\(i.e. after the stars). - -See also the variable `org-reverse-note-order'. - -\(fn)" nil nil) - -;;;*** - -;;;### (autoloads (org-table-to-lisp orgtbl-mode turn-on-orgtbl org-table-iterate-buffer-tables -;;;;;; org-table-recalculate-buffer-tables) "org-table" "org/org-table.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-table.el - -(autoload 'org-table-recalculate-buffer-tables "org-table" "\ -Recalculate all tables in the current buffer. - -\(fn)" t nil) - -(autoload 'org-table-iterate-buffer-tables "org-table" "\ -Iterate all tables in the buffer, to converge inter-table dependencies. - -\(fn)" t nil) - -(autoload 'turn-on-orgtbl "org-table" "\ -Unconditionally turn on `orgtbl-mode'. - -\(fn)" nil nil) - -(autoload 'orgtbl-mode "org-table" "\ -The `org-mode' table editor as a minor mode for use in other modes. - -\(fn &optional ARG)" t nil) - -(autoload 'org-table-to-lisp "org-table" "\ -Convert the table at point to a Lisp structure. -The structure will be a list. Each item is either the symbol `hline' -for a horizontal separator line, or a list of field values as strings. -The table is taken from the parameter TXT, or from the buffer at point. - -\(fn &optional TXT)" nil nil) - -;;;*** - -;;;### (autoloads (org-export-as-taskjuggler-and-open org-export-as-taskjuggler) -;;;;;; "org-taskjuggler" "org/org-taskjuggler.el" (20585 55103 0 -;;;;;; 0)) -;;; Generated autoloads from org/org-taskjuggler.el - -(autoload 'org-export-as-taskjuggler "org-taskjuggler" "\ -Export parts of the current buffer as a TaskJuggler file. -The exporter looks for a tree with tag, property or todo that -matches `org-export-taskjuggler-project-tag' and takes this as -the tasks for this project. The first node of this tree defines -the project properties such as project name and project period. -If there is a tree with tag, property or todo that matches -`org-export-taskjuggler-resource-tag' this three is taken as -resources for the project. If no resources are specified, a -default resource is created and allocated to the project. Also -the taskjuggler project will be created with default reports as -defined in `org-export-taskjuggler-default-reports'. - -\(fn)" t nil) - -(autoload 'org-export-as-taskjuggler-and-open "org-taskjuggler" "\ -Export the current buffer as a TaskJuggler file and open it -with the TaskJuggler GUI. - -\(fn)" t nil) - -;;;*** - -;;;### (autoloads (org-timer-set-timer org-timer-item org-timer-change-times-in-region -;;;;;; org-timer org-timer-stop org-timer-pause-or-continue org-timer-start) -;;;;;; "org-timer" "org/org-timer.el" (20585 55103 0 0)) -;;; Generated autoloads from org/org-timer.el - -(autoload 'org-timer-start "org-timer" "\ -Set the starting time for the relative timer to now. -When called with prefix argument OFFSET, prompt the user for an offset time, -with the default taken from a timer stamp at point, if any. -If OFFSET is a string or an integer, it is directly taken to be the offset -without user interaction. -When called with a double prefix arg, all timer strings in the active -region will be shifted by a specific amount. You will be prompted for -the amount, with the default to make the first timer string in -the region 0:00:00. - -\(fn &optional OFFSET)" t nil) - -(autoload 'org-timer-pause-or-continue "org-timer" "\ -Pause or continue the relative timer. -With prefix arg STOP, stop it entirely. - -\(fn &optional STOP)" t nil) - -(autoload 'org-timer-stop "org-timer" "\ -Stop the relative timer. - -\(fn)" t nil) - -(autoload 'org-timer "org-timer" "\ -Insert a H:MM:SS string from the timer into the buffer. -The first time this command is used, the timer is started. When used with -a \\[universal-argument] prefix, force restarting the timer. -When used with a double prefix argument \\[universal-argument], change all the timer string -in the region by a fixed amount. This can be used to recalibrate a timer -that was not started at the correct moment. - -If NO-INSERT-P is non-nil, return the string instead of inserting -it in the buffer. - -\(fn &optional RESTART NO-INSERT-P)" t nil) - -(autoload 'org-timer-change-times-in-region "org-timer" "\ -Change all h:mm:ss time in region by a DELTA. - -\(fn BEG END DELTA)" t nil) - -(autoload 'org-timer-item "org-timer" "\ -Insert a description-type item with the current timer value. - -\(fn &optional ARG)" t nil) - -(autoload 'org-timer-set-timer "org-timer" "\ -Prompt for a duration and set a timer. - -If `org-timer-default-timer' is not zero, suggest this value as -the default duration for the timer. If a timer is already set, -prompt the user if she wants to replace it. - -Called with a numeric prefix argument, use this numeric value as -the duration of the timer. - -Called with a `C-u' prefix arguments, use `org-timer-default-timer' -without prompting the user for a duration. - -With two `C-u' prefix arguments, use `org-timer-default-timer' -without prompting the user for a duration and automatically -replace any running timer. - -\(fn &optional OPT)" t nil) - ;;;*** ;;;### (autoloads (org-git-version org-release) "org-version" "org/org-version.el" -;;;;;; (20585 55103 0 0)) +;;;;;; (20618 55210 422086 0)) ;;; Generated autoloads from org/org-version.el (autoload 'org-release "org-version" "\ @@ -21653,25 +20116,13 @@ The Git version of org-mode. \(fn)" nil nil) -(defconst org-odt-data-dir "/usr/share/emacs/etc/org" "\ +(defvar org-odt-data-dir "/usr/share/emacs/etc/org" "\ The location of ODT styles.") -;;;*** - -;;;### (autoloads (org-export-as-xoxo) "org-xoxo" "org/org-xoxo.el" -;;;;;; (20585 55103 0 0)) -;;; Generated autoloads from org/org-xoxo.el - -(autoload 'org-export-as-xoxo "org-xoxo" "\ -Export the org buffer as XOXO. -The XOXO buffer is named *xoxo-* - -\(fn &optional BUFFER)" t nil) - ;;;*** ;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el" -;;;;;; (20356 35090 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from outline.el (put 'outline-regexp 'safe-local-variable 'stringp) (put 'outline-heading-end-regexp 'safe-local-variable 'stringp) @@ -21735,7 +20186,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" -;;;;;; (20577 48876 0 0)) +;;;;;; (20622 22438 32851 0)) ;;; Generated autoloads from emacs-lisp/package.el (defvar package-enable-at-startup t "\ @@ -21805,8 +20256,8 @@ The list is displayed in a buffer named `*Packages*'. ;;;*** -;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20544 52783 -;;;;;; 0 0)) +;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20542 50478 +;;;;;; 439878 507000)) ;;; Generated autoloads from paren.el (defvar show-paren-mode nil "\ @@ -21833,7 +20284,7 @@ matching parenthesis is highlighted in `show-paren-style' after ;;;*** ;;;### (autoloads (parse-time-string) "parse-time" "calendar/parse-time.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20478 3673 653810 0)) ;;; Generated autoloads from calendar/parse-time.el (put 'parse-time-rules 'risky-local-variable t) @@ -21846,8 +20297,8 @@ unknown are returned as nil. ;;;*** -;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (20511 -;;;;;; 52965 0 0)) +;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (20478 +;;;;;; 3673 653810 0)) ;;; Generated autoloads from progmodes/pascal.el (autoload 'pascal-mode "pascal" "\ @@ -21900,7 +20351,7 @@ no args, if that value is non-nil. ;;;*** ;;;### (autoloads (password-in-cache-p password-cache-expiry password-cache) -;;;;;; "password-cache" "password-cache.el" (20577 48876 0 0)) +;;;;;; "password-cache" "password-cache.el" (20577 33959 40183 0)) ;;; Generated autoloads from password-cache.el (defvar password-cache t "\ @@ -21922,7 +20373,7 @@ Check if KEY is in the cache. ;;;*** ;;;### (autoloads (pcase-let pcase-let* pcase) "pcase" "emacs-lisp/pcase.el" -;;;;;; (20581 44007 0 0)) +;;;;;; (20582 12914 894781 0)) ;;; Generated autoloads from emacs-lisp/pcase.el (autoload 'pcase "pcase" "\ @@ -21983,8 +20434,8 @@ of the form (UPAT EXP). ;;;*** -;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from pcmpl-cvs.el (autoload 'pcomplete/cvs "pcmpl-cvs" "\ @@ -21995,7 +20446,7 @@ Completion rules for the `cvs' command. ;;;*** ;;;### (autoloads (pcomplete/tar pcomplete/make pcomplete/bzip2 pcomplete/gzip) -;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (20577 48876 0 0)) +;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (20572 16038 402143 0)) ;;; Generated autoloads from pcmpl-gnu.el (autoload 'pcomplete/gzip "pcmpl-gnu" "\ @@ -22023,7 +20474,7 @@ Completion for the GNU tar utility. ;;;*** ;;;### (autoloads (pcomplete/mount pcomplete/umount pcomplete/kill) -;;;;;; "pcmpl-linux" "pcmpl-linux.el" (20244 35516 0 0)) +;;;;;; "pcmpl-linux" "pcmpl-linux.el" (20355 10021 546955 0)) ;;; Generated autoloads from pcmpl-linux.el (autoload 'pcomplete/kill "pcmpl-linux" "\ @@ -22044,7 +20495,7 @@ Completion for GNU/Linux `mount'. ;;;*** ;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20523 -;;;;;; 63054 0 0)) +;;;;;; 62082 997685 0)) ;;; Generated autoloads from pcmpl-rpm.el (autoload 'pcomplete/rpm "pcmpl-rpm" "\ @@ -22056,7 +20507,7 @@ Completion for the `rpm' command. ;;;### (autoloads (pcomplete/scp pcomplete/ssh pcomplete/chgrp pcomplete/chown ;;;;;; pcomplete/which pcomplete/xargs pcomplete/rm pcomplete/rmdir -;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (20375 3831 0 +;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (20376 40834 914217 ;;;;;; 0)) ;;; Generated autoloads from pcmpl-unix.el @@ -22114,8 +20565,8 @@ Includes files as well as host names followed by a colon. ;;;### (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" (20585 -;;;;;; 55103 0 0)) +;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20582 +;;;;;; 12914 894781 0)) ;;; Generated autoloads from pcomplete.el (autoload 'pcomplete "pcomplete" "\ @@ -22174,7 +20625,7 @@ Setup `shell-mode' to use pcomplete. ;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status ;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs" -;;;;;; "vc/pcvs.el" (20585 55103 0 0)) +;;;;;; "vc/pcvs.el" (20584 7212 455152 0)) ;;; Generated autoloads from vc/pcvs.el (autoload 'cvs-checkout "pcvs" "\ @@ -22249,8 +20700,8 @@ The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp d ;;;*** -;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (20577 48876 -;;;;;; 0 0)) +;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (20576 42138 +;;;;;; 697312 0)) ;;; Generated autoloads from vc/pcvs-defs.el (defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help ,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] `(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check out a module from the repository"))) (define-key m [update] `(menu-item ,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from the repository"))) (define-key m [examine] `(menu-item ,(purecopy "Examine Directory") cvs-examine :help ,(purecopy "Examine the current state of a workarea"))) (fset 'cvs-global-menu m)) "\ @@ -22259,7 +20710,7 @@ Global menu used by PCL-CVS.") ;;;*** ;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from progmodes/perl-mode.el (put 'perl-indent-level 'safe-local-variable 'integerp) (put 'perl-continued-statement-offset 'safe-local-variable 'integerp) @@ -22321,7 +20772,7 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'. ;;;*** ;;;### (autoloads (picture-mode) "picture" "textmodes/picture.el" -;;;;;; (20553 2323 0 0)) +;;;;;; (20551 9899 283417 0)) ;;; Generated autoloads from textmodes/picture.el (autoload 'picture-mode "picture" "\ @@ -22402,7 +20853,7 @@ they are not by default assigned to keys. ;;;*** ;;;### (autoloads (plstore-mode plstore-open) "plstore" "gnus/plstore.el" -;;;;;; (20380 26775 0 0)) +;;;;;; (20378 29222 722320 0)) ;;; Generated autoloads from gnus/plstore.el (autoload 'plstore-open "plstore" "\ @@ -22418,7 +20869,7 @@ Major mode for editing PLSTORE files. ;;;*** ;;;### (autoloads (po-find-file-coding-system) "po" "textmodes/po.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from textmodes/po.el (autoload 'po-find-file-coding-system "po" "\ @@ -22429,7 +20880,8 @@ Called through `file-coding-system-alist', before the file is visited for real. ;;;*** -;;;### (autoloads (pong) "pong" "play/pong.el" (20511 52965 0 0)) +;;;### (autoloads (pong) "pong" "play/pong.el" (20478 3673 653810 +;;;;;; 0)) ;;; Generated autoloads from play/pong.el (autoload 'pong "pong" "\ @@ -22445,8 +20897,8 @@ pong-mode keybindings:\\ ;;;*** -;;;### (autoloads (pop3-movemail) "pop3" "gnus/pop3.el" (20460 33749 -;;;;;; 0 0)) +;;;### (autoloads (pop3-movemail) "pop3" "gnus/pop3.el" (20458 56750 +;;;;;; 651721 0)) ;;; Generated autoloads from gnus/pop3.el (autoload 'pop3-movemail "pop3" "\ @@ -22459,7 +20911,7 @@ Use streaming commands. ;;;### (autoloads (pp-macroexpand-last-sexp pp-eval-last-sexp pp-macroexpand-expression ;;;;;; pp-eval-expression pp pp-buffer pp-to-string) "pp" "emacs-lisp/pp.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20495 51111 757560 0)) ;;; Generated autoloads from emacs-lisp/pp.el (autoload 'pp-to-string "pp" "\ @@ -22527,7 +20979,7 @@ Ignores leading comment characters. ;;;;;; pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview ;;;;;; pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript ;;;;;; pr-ps-directory-preview pr-interface) "printing" "printing.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from printing.el (autoload 'pr-interface "printing" "\ @@ -23114,7 +21566,8 @@ are both set to t. ;;;*** -;;;### (autoloads (proced) "proced" "proced.el" (20600 16892 0 0)) +;;;### (autoloads (proced) "proced" "proced.el" (20593 22184 581574 +;;;;;; 0)) ;;; Generated autoloads from proced.el (autoload 'proced "proced" "\ @@ -23134,7 +21587,7 @@ Proced buffers. ;;;### (autoloads (profiler-find-profile-other-frame profiler-find-profile-other-window ;;;;;; profiler-find-profile profiler-start) "profiler" "profiler.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20619 46245 806932 0)) ;;; Generated autoloads from profiler.el (autoload 'profiler-start "profiler" "\ @@ -23163,7 +21616,7 @@ Open profile FILENAME. ;;;*** ;;;### (autoloads (run-prolog mercury-mode prolog-mode) "prolog" -;;;;;; "progmodes/prolog.el" (20577 48876 0 0)) +;;;;;; "progmodes/prolog.el" (20576 42138 697312 0)) ;;; Generated autoloads from progmodes/prolog.el (autoload 'prolog-mode "prolog" "\ @@ -23198,8 +21651,8 @@ With prefix argument ARG, restart the Prolog process if running before. ;;;*** -;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from ps-bdf.el (defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list (expand-file-name "fonts/bdf" installation-directory)) '("/usr/local/share/emacs/fonts/bdf")) "\ @@ -23210,8 +21663,8 @@ The default value is '(\"/usr/local/share/emacs/fonts/bdf\").") ;;;*** -;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (20577 -;;;;;; 48876 0 0)) +;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (20576 +;;;;;; 42138 697312 0)) ;;; Generated autoloads from progmodes/ps-mode.el (autoload 'ps-mode "ps-mode" "\ @@ -23262,8 +21715,8 @@ Typing \\\\[ps-run-goto-error] when the cursor is at the number ;;;;;; ps-spool-region ps-spool-buffer-with-faces ps-spool-buffer ;;;;;; ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces ;;;;;; ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type -;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (20567 -;;;;;; 31133 0 0)) +;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (20566 +;;;;;; 63671 243798 0)) ;;; Generated autoloads from ps-print.el (defvar ps-page-dimensions-database (purecopy (list (list 'a4 (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list 'a3 (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list 'letter (* 72 8.5) (* 72 11.0) "Letter") (list 'legal (* 72 8.5) (* 72 14.0) "Legal") (list 'letter-small (* 72 7.68) (* 72 10.16) "LetterSmall") (list 'tabloid (* 72 11.0) (* 72 17.0) "Tabloid") (list 'ledger (* 72 17.0) (* 72 11.0) "Ledger") (list 'statement (* 72 5.5) (* 72 8.5) "Statement") (list 'executive (* 72 7.5) (* 72 10.0) "Executive") (list 'a4small (* 72 7.47) (* 72 10.85) "A4Small") (list 'b4 (* 72 10.125) (* 72 14.33) "B4") (list 'b5 (* 72 7.16) (* 72 10.125) "B5") '(addresslarge 236.0 99.0 "AddressLarge") '(addresssmall 236.0 68.0 "AddressSmall") '(cuthanging13 90.0 222.0 "CutHanging13") '(cuthanging15 90.0 114.0 "CutHanging15") '(diskette 181.0 136.0 "Diskette") '(eurofilefolder 139.0 112.0 "EuropeanFilefolder") '(eurofoldernarrow 526.0 107.0 "EuroFolderNarrow") '(eurofolderwide 526.0 136.0 "EuroFolderWide") '(euronamebadge 189.0 108.0 "EuroNameBadge") '(euronamebadgelarge 223.0 136.0 "EuroNameBadgeLarge") '(filefolder 230.0 37.0 "FileFolder") '(jewelry 76.0 136.0 "Jewelry") '(mediabadge 180.0 136.0 "MediaBadge") '(multipurpose 126.0 68.0 "MultiPurpose") '(retaillabel 90.0 104.0 "RetailLabel") '(shipping 271.0 136.0 "Shipping") '(slide35mm 26.0 104.0 "Slide35mm") '(spine8mm 187.0 26.0 "Spine8mm") '(topcoated 425.19685 136.0 "TopCoatedPaper") '(topcoatedpaper 396.0 136.0 "TopcoatedPaper150") '(vhsface 205.0 127.0 "VHSFace") '(vhsspine 400.0 50.0 "VHSSpine") '(zipdisk 156.0 136.0 "ZipDisk"))) "\ @@ -23460,7 +21913,7 @@ If EXTENSION is any other symbol, it is ignored. ;;;*** ;;;### (autoloads (python-mode run-python) "python" "progmodes/python.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20599 27513 576550 0)) ;;; Generated autoloads from progmodes/python.el (add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode)) @@ -23496,7 +21949,7 @@ if that value is non-nil. ;;;*** ;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el" -;;;;;; (20559 38659 0 0)) +;;;;;; (20557 48712 315579 0)) ;;; Generated autoloads from gnus/qp.el (autoload 'quoted-printable-decode-region "qp" "\ @@ -23519,7 +21972,7 @@ them into characters should be done separately. ;;;;;; quail-defrule quail-install-decode-map quail-install-map ;;;;;; quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout ;;;;;; quail-define-package quail-use-package quail-title) "quail" -;;;;;; "international/quail.el" (20523 63054 0 0)) +;;;;;; "international/quail.el" (20523 62082 997685 0)) ;;; Generated autoloads from international/quail.el (autoload 'quail-title "quail" "\ @@ -23750,8 +22203,8 @@ of each directory. ;;;### (autoloads (quickurl-list quickurl-list-mode quickurl-edit-urls ;;;;;; quickurl-browse-url-ask quickurl-browse-url quickurl-add-url -;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (20567 -;;;;;; 31133 0 0)) +;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (20566 +;;;;;; 63671 243798 0)) ;;; Generated autoloads from net/quickurl.el (defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\ @@ -23823,7 +22276,7 @@ Display `quickurl-list' as a formatted list using `quickurl-list-mode'. ;;;*** ;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc" -;;;;;; "net/rcirc.el" (20540 61982 0 0)) +;;;;;; "net/rcirc.el" (20614 54428 654267 0)) ;;; Generated autoloads from net/rcirc.el (autoload 'rcirc "rcirc" "\ @@ -23861,8 +22314,8 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (20290 -;;;;;; 33419 0 0)) +;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from net/rcompile.el (autoload 'remote-compile "rcompile" "\ @@ -23874,7 +22327,7 @@ See \\[compile]. ;;;*** ;;;### (autoloads (re-builder) "re-builder" "emacs-lisp/re-builder.el" -;;;;;; (20428 57510 0 0)) +;;;;;; (20427 14766 970343 0)) ;;; Generated autoloads from emacs-lisp/re-builder.el (defalias 'regexp-builder 're-builder) @@ -23892,8 +22345,8 @@ matching parts of the target buffer will be highlighted. ;;;*** -;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (20356 35090 -;;;;;; 0 0)) +;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (20356 2211 +;;;;;; 532900 0)) ;;; Generated autoloads from recentf.el (defvar recentf-mode nil "\ @@ -23923,7 +22376,7 @@ were operated on recently. ;;;;;; string-rectangle delete-whitespace-rectangle open-rectangle ;;;;;; insert-rectangle yank-rectangle copy-rectangle-as-kill kill-rectangle ;;;;;; extract-rectangle delete-extract-rectangle delete-rectangle) -;;;;;; "rect" "rect.el" (20511 52965 0 0)) +;;;;;; "rect" "rect.el" (20501 3499 284800 0)) ;;; Generated autoloads from rect.el (autoload 'delete-rectangle "rect" "\ @@ -24057,8 +22510,8 @@ with a prefix argument, prompt for START-AT and FORMAT. ;;;*** -;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (20511 -;;;;;; 52965 0 0)) +;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (20478 +;;;;;; 3673 653810 0)) ;;; Generated autoloads from textmodes/refill.el (autoload 'refill-mode "refill" "\ @@ -24079,8 +22532,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" (20592 26321 -;;;;;; 0 0)) +;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20590 45996 +;;;;;; 129575 0)) ;;; Generated autoloads from textmodes/reftex.el (autoload 'turn-on-reftex "reftex" "\ @@ -24130,7 +22583,7 @@ This enforces rescanning the buffer on next use. ;;;*** ;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el" -;;;;;; (20585 55103 0 0)) +;;;;;; (20585 28088 480237 0)) ;;; Generated autoloads from textmodes/reftex-cite.el (autoload 'reftex-citation "reftex-cite" "\ @@ -24160,7 +22613,7 @@ While entering the regexp, completion on knows citation keys is possible. ;;;*** ;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el" -;;;;;; (20585 55103 0 0)) +;;;;;; (20585 28088 480237 0)) ;;; Generated autoloads from textmodes/reftex-global.el (autoload 'reftex-isearch-minor-mode "reftex-global" "\ @@ -24177,7 +22630,7 @@ With no argument, this command toggles ;;;*** ;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el" -;;;;;; (20585 55103 0 0)) +;;;;;; (20585 28088 480237 0)) ;;; Generated autoloads from textmodes/reftex-index.el (autoload 'reftex-index-phrases-mode "reftex-index" "\ @@ -24210,7 +22663,7 @@ Here are all local bindings. ;;;*** ;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el" -;;;;;; (20585 55103 0 0)) +;;;;;; (20585 28088 480237 0)) ;;; Generated autoloads from textmodes/reftex-parse.el (autoload 'reftex-all-document-files "reftex-parse" "\ @@ -24222,8 +22675,8 @@ of master file. ;;;*** -;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20600 -;;;;;; 16892 0 0)) +;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20593 +;;;;;; 22184 581574 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)))) @@ -24233,7 +22686,7 @@ of master file. ;;;*** ;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el" -;;;;;; (20522 50437 0 0)) +;;;;;; (20522 38650 757441 0)) ;;; Generated autoloads from emacs-lisp/regexp-opt.el (autoload 'regexp-opt "regexp-opt" "\ @@ -24264,7 +22717,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" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from textmodes/remember.el (autoload 'remember "remember" "\ @@ -24295,7 +22748,8 @@ Extract diary entries from the region. ;;;*** -;;;### (autoloads (repeat) "repeat" "repeat.el" (20577 48876 0 0)) +;;;### (autoloads (repeat) "repeat" "repeat.el" (20614 54428 654267 +;;;;;; 0)) ;;; Generated autoloads from repeat.el (autoload 'repeat "repeat" "\ @@ -24318,7 +22772,7 @@ recently executed command not bound to an input event\". ;;;*** ;;;### (autoloads (reporter-submit-bug-report) "reporter" "mail/reporter.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from mail/reporter.el (autoload 'reporter-submit-bug-report "reporter" "\ @@ -24350,7 +22804,7 @@ mail-sending package is used for editing and sending the message. ;;;*** ;;;### (autoloads (reposition-window) "reposition" "reposition.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from reposition.el (autoload 'reposition-window "reposition" "\ @@ -24377,7 +22831,7 @@ first comment line visible (if point is in a comment). ;;;*** ;;;### (autoloads (global-reveal-mode reveal-mode) "reveal" "reveal.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from reveal.el (autoload 'reveal-mode "reveal" "\ @@ -24413,7 +22867,7 @@ the mode if ARG is omitted or nil. ;;;*** ;;;### (autoloads (make-ring ring-p) "ring" "emacs-lisp/ring.el" -;;;;;; (20331 12564 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from emacs-lisp/ring.el (autoload 'ring-p "ring" "\ @@ -24428,8 +22882,8 @@ Make a ring that can contain SIZE elements. ;;;*** -;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (20412 11425 -;;;;;; 0 0)) +;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (20402 11562 +;;;;;; 85788 0)) ;;; Generated autoloads from net/rlogin.el (autoload 'rlogin "rlogin" "\ @@ -24478,7 +22932,8 @@ variable. ;;;;;; rmail-secondary-file-directory rmail-primary-inbox-list rmail-highlighted-headers ;;;;;; rmail-retry-ignored-headers rmail-displayed-headers rmail-ignored-headers ;;;;;; rmail-user-mail-address-regexp rmail-movemail-variant-p rmail-spool-directory -;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20600 16892 0 0)) +;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20599 61088 34742 +;;;;;; 635000)) ;;; Generated autoloads from mail/rmail.el (defvar rmail-file-name (purecopy "~/RMAIL") "\ @@ -24676,8 +23131,8 @@ Set PASSWORD to be used for retrieving mail from a POP or IMAP server. ;;;*** ;;;### (autoloads (rmail-output-body-to-file rmail-output-as-seen -;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20535 44414 -;;;;;; 0 0)) +;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20530 3765 184907 +;;;;;; 0)) ;;; Generated autoloads from mail/rmailout.el (put 'rmail-output-file-alist 'risky-local-variable t) @@ -24742,7 +23197,7 @@ than appending to it. Deletes the message after writing if ;;;*** ;;;### (autoloads (rng-c-load-schema) "rng-cmpct" "nxml/rng-cmpct.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from nxml/rng-cmpct.el (autoload 'rng-c-load-schema "rng-cmpct" "\ @@ -24754,7 +23209,7 @@ Return a pattern. ;;;*** ;;;### (autoloads (rng-nxml-mode-init) "rng-nxml" "nxml/rng-nxml.el" -;;;;;; (20356 35090 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from nxml/rng-nxml.el (autoload 'rng-nxml-mode-init "rng-nxml" "\ @@ -24767,7 +23222,7 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil. ;;;*** ;;;### (autoloads (rng-validate-mode) "rng-valid" "nxml/rng-valid.el" -;;;;;; (20290 33419 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from nxml/rng-valid.el (autoload 'rng-validate-mode "rng-valid" "\ @@ -24797,8 +23252,8 @@ to use for finding the schema. ;;;*** -;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from nxml/rng-xsd.el (put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 'rng-xsd-compile) @@ -24826,7 +23281,7 @@ must be equal. ;;;*** ;;;### (autoloads (robin-use-package robin-modify-package robin-define-package) -;;;;;; "robin" "international/robin.el" (20523 63054 0 0)) +;;;;;; "robin" "international/robin.el" (20523 62082 997685 0)) ;;; Generated autoloads from international/robin.el (autoload 'robin-define-package "robin" "\ @@ -24859,7 +23314,8 @@ Start using robin package NAME, which is a string. ;;;*** ;;;### (autoloads (toggle-rot13-mode rot13-other-window rot13-region -;;;;;; rot13-string rot13) "rot13" "rot13.el" (20244 35516 0 0)) +;;;;;; rot13-string rot13) "rot13" "rot13.el" (20355 10021 546955 +;;;;;; 0)) ;;; Generated autoloads from rot13.el (autoload 'rot13 "rot13" "\ @@ -24897,7 +23353,7 @@ Toggle the use of ROT13 encoding for the current window. ;;;*** ;;;### (autoloads (rst-minor-mode rst-mode) "rst" "textmodes/rst.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20594 43050 277913 0)) ;;; Generated autoloads from textmodes/rst.el (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode))) @@ -24928,7 +23384,7 @@ for modes derived from Text mode, like Mail mode. ;;;*** ;;;### (autoloads (ruby-mode) "ruby-mode" "progmodes/ruby-mode.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20576 42138 697312 0)) ;;; Generated autoloads from progmodes/ruby-mode.el (autoload 'ruby-mode "ruby-mode" "\ @@ -24949,8 +23405,8 @@ The variable `ruby-indent-level' controls the amount of indentation. ;;;*** -;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from ruler-mode.el (defvar ruler-mode nil "\ @@ -24967,8 +23423,8 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20517 -;;;;;; 30410 0 0)) +;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20518 +;;;;;; 12580 46478 0)) ;;; Generated autoloads from emacs-lisp/rx.el (autoload 'rx-to-string "rx" "\ @@ -25280,7 +23736,7 @@ enclosed in `(and ...)'. ;;;*** ;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20577 -;;;;;; 48876 0 0)) +;;;;;; 33959 40183 0)) ;;; Generated autoloads from savehist.el (defvar savehist-mode nil "\ @@ -25312,7 +23768,7 @@ histories, which is probably undesirable. ;;;*** ;;;### (autoloads (dsssl-mode scheme-mode) "scheme" "progmodes/scheme.el" -;;;;;; (20428 57510 0 0)) +;;;;;; (20427 14766 970343 0)) ;;; Generated autoloads from progmodes/scheme.el (autoload 'scheme-mode "scheme" "\ @@ -25354,7 +23810,7 @@ that variable's value is a string. ;;;*** ;;;### (autoloads (gnus-score-mode) "score-mode" "gnus/score-mode.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/score-mode.el (autoload 'gnus-score-mode "score-mode" "\ @@ -25368,7 +23824,7 @@ This mode is an extended emacs-lisp mode. ;;;*** ;;;### (autoloads (scroll-all-mode) "scroll-all" "scroll-all.el" -;;;;;; (20373 41604 0 0)) +;;;;;; (20363 61861 222722 0)) ;;; Generated autoloads from scroll-all.el (defvar scroll-all-mode nil "\ @@ -25394,7 +23850,7 @@ one window apply to all visible windows in the same frame. ;;;*** ;;;### (autoloads (scroll-lock-mode) "scroll-lock" "scroll-lock.el" -;;;;;; (20276 3849 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from scroll-lock.el (autoload 'scroll-lock-mode "scroll-lock" "\ @@ -25410,7 +23866,8 @@ vertically fixed relative to window boundaries during scrolling. ;;;*** -;;;### (autoloads nil "secrets" "net/secrets.el" (20511 52965 0 0)) +;;;### (autoloads nil "secrets" "net/secrets.el" (20478 3673 653810 +;;;;;; 0)) ;;; Generated autoloads from net/secrets.el (when (featurep 'dbusbind) (autoload 'secrets-show-secrets "secrets" nil t)) @@ -25418,7 +23875,7 @@ vertically fixed relative to window boundaries during scrolling. ;;;*** ;;;### (autoloads (semantic-mode semantic-default-submodes) "semantic" -;;;;;; "cedet/semantic.el" (20600 16892 0 0)) +;;;;;; "cedet/semantic.el" (20617 41641 89638 0)) ;;; Generated autoloads from cedet/semantic.el (defvar semantic-default-submodes '(global-semantic-idle-scheduler-mode global-semanticdb-minor-mode) "\ @@ -25475,7 +23932,7 @@ Semantic mode. ;;;*** ;;;### (autoloads (bovine-grammar-mode) "semantic/bovine/grammar" -;;;;;; "cedet/semantic/bovine/grammar.el" (20592 26321 0 0)) +;;;;;; "cedet/semantic/bovine/grammar.el" (20593 22184 581574 0)) ;;; Generated autoloads from cedet/semantic/bovine/grammar.el (autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\ @@ -25486,7 +23943,7 @@ Major mode for editing Bovine grammars. ;;;*** ;;;### (autoloads (wisent-grammar-mode) "semantic/wisent/grammar" -;;;;;; "cedet/semantic/wisent/grammar.el" (20592 26321 0 0)) +;;;;;; "cedet/semantic/wisent/grammar.el" (20593 22184 581574 0)) ;;; Generated autoloads from cedet/semantic/wisent/grammar.el (autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\ @@ -25504,7 +23961,7 @@ Major mode for editing Wisent grammars. ;;;;;; mail-personal-alias-file mail-default-reply-to mail-archive-file-name ;;;;;; mail-header-separator send-mail-function mail-interactive ;;;;;; mail-self-blind mail-specify-envelope-from mail-from-style) -;;;;;; "sendmail" "mail/sendmail.el" (20577 48876 0 0)) +;;;;;; "sendmail" "mail/sendmail.el" (20614 54428 654267 0)) ;;; Generated autoloads from mail/sendmail.el (defvar mail-from-style 'default "\ @@ -25786,8 +24243,8 @@ Like `mail' command, but display mail buffer in another frame. ;;;*** ;;;### (autoloads (server-save-buffers-kill-terminal server-mode -;;;;;; server-force-delete server-start) "server" "server.el" (20600 -;;;;;; 16892 0 0)) +;;;;;; server-force-delete server-start) "server" "server.el" (20594 +;;;;;; 43050 277913 0)) ;;; Generated autoloads from server.el (put 'server-host 'risky-local-variable t) @@ -25854,7 +24311,7 @@ only these files will be asked to be saved. ;;;*** -;;;### (autoloads (ses-mode) "ses" "ses.el" (20553 63503 0 0)) +;;;### (autoloads (ses-mode) "ses" "ses.el" (20553 51627 169867 0)) ;;; Generated autoloads from ses.el (autoload 'ses-mode "ses" "\ @@ -25873,7 +24330,7 @@ These are active only in the minibuffer, when entering or editing a formula: ;;;*** ;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el" -;;;;;; (20580 46629 0 0)) +;;;;;; (20580 10161 446444 0)) ;;; Generated autoloads from textmodes/sgml-mode.el (autoload 'sgml-mode "sgml-mode" "\ @@ -25939,7 +24396,7 @@ To work around that, do: ;;;*** ;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20624 64165 102958 0)) ;;; Generated autoloads from progmodes/sh-script.el (put 'sh-shell 'safe-local-variable 'symbolp) @@ -26003,7 +24460,7 @@ with your script for an edit-interpret-debug cycle. ;;;*** ;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20572 16038 402143 0)) ;;; Generated autoloads from emacs-lisp/shadow.el (autoload 'list-load-path-shadows "shadow" "\ @@ -26053,8 +24510,8 @@ function, `load-path-shadows-find'. ;;;*** ;;;### (autoloads (shadow-initialize shadow-define-regexp-group shadow-define-literal-group -;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (20244 -;;;;;; 35516 0 0)) +;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from shadowfile.el (autoload 'shadow-define-cluster "shadowfile" "\ @@ -26093,7 +24550,7 @@ Set up file shadowing. ;;;*** ;;;### (autoloads (shell shell-dumb-shell-regexp) "shell" "shell.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from shell.el (defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\ @@ -26141,8 +24598,8 @@ Otherwise, one argument `-i' is passed to the shell. ;;;*** -;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20600 -;;;;;; 16892 0 0)) +;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20595 +;;;;;; 63909 923329 0)) ;;; Generated autoloads from gnus/shr.el (autoload 'shr-insert-document "shr" "\ @@ -26155,7 +24612,8 @@ DOM should be a parse tree as generated by ;;;*** ;;;### (autoloads (sieve-upload-and-kill sieve-upload-and-bury sieve-upload -;;;;;; sieve-manage) "sieve" "gnus/sieve.el" (20511 52965 0 0)) +;;;;;; sieve-manage) "sieve" "gnus/sieve.el" (20487 57003 603251 +;;;;;; 0)) ;;; Generated autoloads from gnus/sieve.el (autoload 'sieve-manage "sieve" "\ @@ -26181,7 +24639,7 @@ DOM should be a parse tree as generated by ;;;*** ;;;### (autoloads (sieve-mode) "sieve-mode" "gnus/sieve-mode.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20487 57003 603251 0)) ;;; Generated autoloads from gnus/sieve-mode.el (autoload 'sieve-mode "sieve-mode" "\ @@ -26196,8 +24654,8 @@ Turning on Sieve mode runs `sieve-mode-hook'. ;;;*** -;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (20356 -;;;;;; 35090 0 0)) +;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from progmodes/simula.el (autoload 'simula-mode "simula" "\ @@ -26246,7 +24704,7 @@ with no arguments, if that value is non-nil. ;;;*** ;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new -;;;;;; define-skeleton) "skeleton" "skeleton.el" (20540 61982 0 +;;;;;; define-skeleton) "skeleton" "skeleton.el" (20541 6907 775259 ;;;;;; 0)) ;;; Generated autoloads from skeleton.el @@ -26359,7 +24817,7 @@ symmetrical ones, and the same character twice for the others. ;;;*** ;;;### (autoloads (smerge-start-session smerge-mode smerge-ediff) -;;;;;; "smerge-mode" "vc/smerge-mode.el" (20585 55103 0 0)) +;;;;;; "smerge-mode" "vc/smerge-mode.el" (20585 28088 480237 0)) ;;; Generated autoloads from vc/smerge-mode.el (autoload 'smerge-ediff "smerge-mode" "\ @@ -26387,7 +24845,7 @@ If no conflict maker is found, turn off `smerge-mode'. ;;;*** ;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from gnus/smiley.el (autoload 'smiley-region "smiley" "\ @@ -26405,7 +24863,7 @@ interactively. If there's no argument, do it at the current buffer. ;;;*** ;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail" -;;;;;; "mail/smtpmail.el" (20550 14882 0 0)) +;;;;;; "mail/smtpmail.el" (20551 9899 283417 0)) ;;; Generated autoloads from mail/smtpmail.el (autoload 'smtpmail-send-it "smtpmail" "\ @@ -26420,7 +24878,7 @@ Send mail that was queued as a result of setting `smtpmail-queue-mail'. ;;;*** -;;;### (autoloads (snake) "snake" "play/snake.el" (20511 52965 0 +;;;### (autoloads (snake) "snake" "play/snake.el" (20478 3673 653810 ;;;;;; 0)) ;;; Generated autoloads from play/snake.el @@ -26445,7 +24903,7 @@ Snake mode keybindings: ;;;*** ;;;### (autoloads (snmpv2-mode snmp-mode) "snmp-mode" "net/snmp-mode.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20577 33959 40183 0)) ;;; Generated autoloads from net/snmp-mode.el (autoload 'snmp-mode "snmp-mode" "\ @@ -26474,8 +24932,8 @@ then `snmpv2-mode-hook'. ;;;*** -;;;### (autoloads (sunrise-sunset) "solar" "calendar/solar.el" (20567 -;;;;;; 31133 0 0)) +;;;### (autoloads (sunrise-sunset) "solar" "calendar/solar.el" (20566 +;;;;;; 63671 243798 0)) ;;; Generated autoloads from calendar/solar.el (autoload 'sunrise-sunset "solar" "\ @@ -26490,8 +24948,8 @@ This function is suitable for execution in an init file. ;;;*** -;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (20428 -;;;;;; 57510 0 0)) +;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (20427 +;;;;;; 14766 970343 0)) ;;; Generated autoloads from play/solitaire.el (autoload 'solitaire "solitaire" "\ @@ -26568,7 +25026,8 @@ Pick your favorite shortcuts: ;;;### (autoloads (reverse-region sort-columns sort-regexp-fields ;;;;;; sort-fields sort-numeric-fields sort-pages sort-paragraphs -;;;;;; sort-lines sort-subr) "sort" "sort.el" (20511 52965 0 0)) +;;;;;; sort-lines sort-subr) "sort" "sort.el" (20507 42276 222255 +;;;;;; 0)) ;;; Generated autoloads from sort.el (put 'sort-fold-case 'safe-local-variable 'booleanp) @@ -26717,8 +25176,8 @@ From a program takes two point or marker arguments, BEG and END. ;;;*** -;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (20460 -;;;;;; 33749 0 0)) +;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (20458 +;;;;;; 56750 651721 0)) ;;; Generated autoloads from gnus/spam.el (autoload 'spam-initialize "spam" "\ @@ -26734,7 +25193,7 @@ installed through `spam-necessary-extra-headers'. ;;;### (autoloads (spam-report-deagentize spam-report-agentize spam-report-url-to-file ;;;;;; spam-report-url-ping-mm-url spam-report-process-queue) "spam-report" -;;;;;; "gnus/spam-report.el" (20244 35516 0 0)) +;;;;;; "gnus/spam-report.el" (20355 10021 546955 0)) ;;; Generated autoloads from gnus/spam-report.el (autoload 'spam-report-process-queue "spam-report" "\ @@ -26777,7 +25236,7 @@ Spam reports will be queued with the method used when ;;;*** ;;;### (autoloads (speedbar-get-focus speedbar-frame-mode) "speedbar" -;;;;;; "speedbar.el" (20567 31133 0 0)) +;;;;;; "speedbar.el" (20566 63671 243798 0)) ;;; Generated autoloads from speedbar.el (defalias 'speedbar 'speedbar-frame-mode) @@ -26801,8 +25260,8 @@ selected. If the speedbar frame is active, then select the attached frame. ;;;*** -;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from play/spook.el (autoload 'spook "spook" "\ @@ -26821,7 +25280,7 @@ Return a vector containing the lines from `spook-phrases-file'. ;;;;;; sql-ms sql-ingres sql-solid sql-mysql sql-sqlite sql-informix ;;;;;; sql-sybase sql-oracle sql-product-interactive sql-connect ;;;;;; sql-mode sql-help sql-add-product-keywords) "sql" "progmodes/sql.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from progmodes/sql.el (autoload 'sql-add-product-keywords "sql" "\ @@ -27317,7 +25776,7 @@ buffer. ;;;*** ;;;### (autoloads (srecode-template-mode) "srecode/srt-mode" "cedet/srecode/srt-mode.el" -;;;;;; (20585 59413 0 0)) +;;;;;; (20586 48936 135199 0)) ;;; Generated autoloads from cedet/srecode/srt-mode.el (autoload 'srecode-template-mode "srecode/srt-mode" "\ @@ -27330,7 +25789,7 @@ Major-mode for writing SRecode macros. ;;;*** ;;;### (autoloads (starttls-open-stream) "starttls" "gnus/starttls.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20606 34222 123795 0)) ;;; Generated autoloads from gnus/starttls.el (autoload 'starttls-open-stream "starttls" "\ @@ -27357,8 +25816,8 @@ GnuTLS requires a port number. ;;;;;; strokes-mode strokes-list-strokes strokes-load-user-strokes ;;;;;; strokes-help strokes-describe-stroke strokes-do-complex-stroke ;;;;;; strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke -;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20600 -;;;;;; 16892 0 0)) +;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20593 +;;;;;; 22184 581574 0)) ;;; Generated autoloads from strokes.el (autoload 'strokes-global-set-stroke "strokes" "\ @@ -27472,7 +25931,7 @@ Read a complex stroke and insert its glyph into the current buffer. ;;;*** ;;;### (autoloads (studlify-buffer studlify-word studlify-region) -;;;;;; "studly" "play/studly.el" (19765 60663 0 0)) +;;;;;; "studly" "play/studly.el" (20355 10021 546955 0)) ;;; Generated autoloads from play/studly.el (autoload 'studlify-region "studly" "\ @@ -27493,7 +25952,7 @@ Studlify-case the current buffer. ;;;*** ;;;### (autoloads (global-subword-mode subword-mode) "subword" "progmodes/subword.el" -;;;;;; (20535 44414 0 0)) +;;;;;; (20524 51365 2559 0)) ;;; Generated autoloads from progmodes/subword.el (autoload 'subword-mode "subword" "\ @@ -27549,7 +26008,7 @@ See `subword-mode' for more information on Subword mode. ;;;*** ;;;### (autoloads (sc-cite-original) "supercite" "mail/supercite.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20576 42138 697312 0)) ;;; Generated autoloads from mail/supercite.el (autoload 'sc-cite-original "supercite" "\ @@ -27581,8 +26040,8 @@ and `sc-post-hook' is run after the guts of this function. ;;;*** -;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from t-mouse.el (define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1") @@ -27610,8 +26069,8 @@ It relies on the `gpm' daemon being activated. ;;;*** -;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from tabify.el (autoload 'untabify "tabify" "\ @@ -27646,7 +26105,7 @@ The variable `tab-width' controls the spacing of tab stops. ;;;;;; table-recognize table-insert-row-column table-insert-column ;;;;;; table-insert-row table-insert table-point-left-cell-hook ;;;;;; table-point-entered-cell-hook table-load-hook table-cell-map-hook) -;;;;;; "table" "textmodes/table.el" (20589 46442 0 0)) +;;;;;; "table" "textmodes/table.el" (20586 48936 135199 0)) ;;; Generated autoloads from textmodes/table.el (defvar table-cell-map-hook nil "\ @@ -28238,8 +26697,8 @@ converts a table into plain text without frames. It is a companion to ;;;*** -;;;### (autoloads (talk talk-connect) "talk" "talk.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (talk talk-connect) "talk" "talk.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from talk.el (autoload 'talk-connect "talk" "\ @@ -28254,8 +26713,8 @@ Connect to the Emacs talk group from the current X display or tty frame. ;;;*** -;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20585 55103 -;;;;;; 0 0)) +;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20585 28088 +;;;;;; 480237 0)) ;;; Generated autoloads from tar-mode.el (autoload 'tar-mode "tar-mode" "\ @@ -28279,7 +26738,7 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'. ;;;*** ;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl" -;;;;;; "progmodes/tcl.el" (20580 46629 0 0)) +;;;;;; "progmodes/tcl.el" (20580 10161 446444 0)) ;;; Generated autoloads from progmodes/tcl.el (autoload 'tcl-mode "tcl" "\ @@ -28327,8 +26786,8 @@ Prefix argument means invert sense of `tcl-use-smart-word-finder'. ;;;*** -;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from net/telnet.el (autoload 'telnet "telnet" "\ @@ -28354,7 +26813,7 @@ Normally input is edited in Emacs and sent a line at a time. ;;;*** ;;;### (autoloads (serial-term ansi-term term make-term) "term" "term.el" -;;;;;; (20580 46629 0 0)) +;;;;;; (20580 10161 446444 0)) ;;; Generated autoloads from term.el (autoload 'make-term "term" "\ @@ -28396,8 +26855,8 @@ use in that buffer. ;;;*** -;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from terminal.el (autoload 'terminal-emulator "terminal" "\ @@ -28434,7 +26893,7 @@ subprocess started. ;;;*** ;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el" -;;;;;; (20579 15299 0 0)) +;;;;;; (20580 10161 446444 0)) ;;; Generated autoloads from emacs-lisp/testcover.el (autoload 'testcover-this-defun "testcover" "\ @@ -28444,8 +26903,8 @@ Start coverage on function under point. ;;;*** -;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20550 14882 -;;;;;; 0 0)) +;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20545 57511 +;;;;;; 257469 0)) ;;; Generated autoloads from play/tetris.el (autoload 'tetris "tetris" "\ @@ -28476,7 +26935,7 @@ tetris-mode keybindings: ;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command ;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp ;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20594 43050 277913 0)) ;;; Generated autoloads from textmodes/tex-mode.el (defvar tex-shell-file-name nil "\ @@ -28778,7 +27237,7 @@ Major mode to edit DocTeX files. ;;;*** ;;;### (autoloads (texi2info texinfo-format-region texinfo-format-buffer) -;;;;;; "texinfmt" "textmodes/texinfmt.el" (20434 28080 0 0)) +;;;;;; "texinfmt" "textmodes/texinfmt.el" (20434 17809 692608 0)) ;;; Generated autoloads from textmodes/texinfmt.el (autoload 'texinfo-format-buffer "texinfmt" "\ @@ -28818,7 +27277,7 @@ if large. You can use `Info-split' to do this manually. ;;;*** ;;;### (autoloads (texinfo-mode texinfo-close-quote texinfo-open-quote) -;;;;;; "texinfo" "textmodes/texinfo.el" (20511 52965 0 0)) +;;;;;; "texinfo" "textmodes/texinfo.el" (20478 3673 653810 0)) ;;; Generated autoloads from textmodes/texinfo.el (defvar texinfo-open-quote (purecopy "``") "\ @@ -28904,7 +27363,7 @@ value of `texinfo-mode-hook'. ;;;### (autoloads (thai-composition-function thai-compose-buffer ;;;;;; thai-compose-string thai-compose-region) "thai-util" "language/thai-util.el" -;;;;;; (20276 3849 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from language/thai-util.el (autoload 'thai-compose-region "thai-util" "\ @@ -28933,7 +27392,7 @@ Compose Thai characters in the current buffer. ;;;### (autoloads (list-at-point number-at-point symbol-at-point ;;;;;; sexp-at-point thing-at-point bounds-of-thing-at-point forward-thing) -;;;;;; "thingatpt" "thingatpt.el" (20419 46656 0 0)) +;;;;;; "thingatpt" "thingatpt.el" (20623 43301 870757 0)) ;;; Generated autoloads from thingatpt.el (autoload 'forward-thing "thingatpt" "\ @@ -28965,7 +27424,7 @@ Return the THING at point. THING should be a symbol specifying a type of syntactic entity. Possibilities include `symbol', `list', `sexp', `defun', `filename', `url', `email', `word', `sentence', `whitespace', -`line', and `page'. +`line', `number', and `page'. See the file `thingatpt.el' for documentation on how to define a symbol as a valid THING. @@ -28996,7 +27455,7 @@ Return the Lisp list at point, or nil if none is found. ;;;### (autoloads (thumbs-dired-setroot thumbs-dired-show thumbs-dired-show-marked ;;;;;; thumbs-show-from-dir thumbs-find-thumb) "thumbs" "thumbs.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from thumbs.el (autoload 'thumbs-find-thumb "thumbs" "\ @@ -29034,8 +27493,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" (20356 -;;;;;; 35090 0 0)) +;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from language/tibet-util.el (autoload 'tibetan-char-p "tibet-util" "\ @@ -29109,7 +27568,7 @@ See also docstring of the function tibetan-compose-region. ;;;*** ;;;### (autoloads (tildify-buffer tildify-region) "tildify" "textmodes/tildify.el" -;;;;;; (20373 41604 0 0)) +;;;;;; (20373 11301 906925 0)) ;;; Generated autoloads from textmodes/tildify.el (autoload 'tildify-region "tildify" "\ @@ -29134,7 +27593,7 @@ This function performs no refilling of the changed text. ;;;### (autoloads (emacs-init-time emacs-uptime display-time-world ;;;;;; display-time-mode display-time display-time-day-and-date) -;;;;;; "time" "time.el" (20567 31133 0 0)) +;;;;;; "time" "time.el" (20619 46245 806932 0)) ;;; Generated autoloads from time.el (defvar display-time-day-and-date nil "\ @@ -29200,7 +27659,7 @@ Return a string giving the duration of the Emacs initialization. ;;;;;; time-to-day-in-year date-leap-year-p days-between date-to-day ;;;;;; time-add time-subtract time-since days-to-time time-less-p ;;;;;; seconds-to-time date-to-time) "time-date" "calendar/time-date.el" -;;;;;; (20452 57825 0 0)) +;;;;;; (20453 5437 764254 0)) ;;; Generated autoloads from calendar/time-date.el (autoload 'date-to-time "time-date" "\ @@ -29314,7 +27773,7 @@ This function does not work for SECONDS greater than `most-positive-fixnum'. ;;;*** ;;;### (autoloads (time-stamp-toggle-active time-stamp) "time-stamp" -;;;;;; "time-stamp.el" (20567 31133 0 0)) +;;;;;; "time-stamp.el" (20566 63671 243798 0)) ;;; Generated autoloads from time-stamp.el (put 'time-stamp-format 'safe-local-variable 'stringp) (put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p) @@ -29358,7 +27817,7 @@ With ARG, turn time stamping on if and only if arg is positive. ;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out ;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in ;;;;;; timeclock-mode-line-display) "timeclock" "calendar/timeclock.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20593 22184 581574 0)) ;;; Generated autoloads from calendar/timeclock.el (autoload 'timeclock-mode-line-display "timeclock" "\ @@ -29458,7 +27917,7 @@ relative only to the time worked today, and not to past time. ;;;*** ;;;### (autoloads (batch-titdic-convert titdic-convert) "titdic-cnv" -;;;;;; "international/titdic-cnv.el" (20290 33419 0 0)) +;;;;;; "international/titdic-cnv.el" (20355 10021 546955 0)) ;;; Generated autoloads from international/titdic-cnv.el (autoload 'titdic-convert "titdic-cnv" "\ @@ -29481,7 +27940,7 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\". ;;;*** ;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm" -;;;;;; "tmm.el" (20432 55251 0 0)) +;;;;;; "tmm.el" (20622 22438 32851 0)) ;;; Generated autoloads from tmm.el (define-key global-map "\M-`" 'tmm-menubar) (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse) @@ -29521,7 +27980,7 @@ Its value should be an event that has a binding in MENU. ;;;### (autoloads (todo-show todo-cp todo-mode todo-print todo-top-priorities ;;;;;; todo-insert-item todo-add-item-non-interactively todo-add-category) -;;;;;; "todo-mode" "calendar/todo-mode.el" (20244 35516 0 0)) +;;;;;; "todo-mode" "calendar/todo-mode.el" (20355 10021 546955 0)) ;;; Generated autoloads from calendar/todo-mode.el (autoload 'todo-add-category "todo-mode" "\ @@ -29581,7 +28040,7 @@ Show TODO list. ;;;### (autoloads (tool-bar-local-item-from-menu tool-bar-add-item-from-menu ;;;;;; tool-bar-local-item tool-bar-add-item toggle-tool-bar-mode-from-frame) -;;;;;; "tool-bar" "tool-bar.el" (20290 33419 0 0)) +;;;;;; "tool-bar" "tool-bar.el" (20355 10021 546955 0)) ;;; Generated autoloads from tool-bar.el (autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\ @@ -29652,7 +28111,7 @@ holds a keymap. ;;;*** ;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from emulation/tpu-edt.el (defvar tpu-edt-mode nil "\ @@ -29682,7 +28141,7 @@ Turn on TPU/edt emulation. ;;;*** ;;;### (autoloads (tpu-mapper) "tpu-mapper" "emulation/tpu-mapper.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from emulation/tpu-mapper.el (autoload 'tpu-mapper "tpu-mapper" "\ @@ -29716,8 +28175,8 @@ your local X guru can try to figure out why the key is being ignored. ;;;*** -;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from emacs-lisp/tq.el (autoload 'tq-create "tq" "\ @@ -29731,7 +28190,7 @@ to a tcp server on another machine. ;;;*** ;;;### (autoloads (trace-function-background trace-function trace-buffer) -;;;;;; "trace" "emacs-lisp/trace.el" (20511 52965 0 0)) +;;;;;; "trace" "emacs-lisp/trace.el" (20485 15269 390836 0)) ;;; Generated autoloads from emacs-lisp/trace.el (defvar trace-buffer (purecopy "*trace-output*") "\ @@ -29768,7 +28227,7 @@ BUFFER defaults to `trace-buffer'. ;;;### (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" (20600 16892 0 0)) +;;;;;; "net/tramp.el" (20597 19239 817699 0)) ;;; Generated autoloads from net/tramp.el (defvar tramp-mode t "\ @@ -29901,7 +28360,7 @@ Discard Tramp from loading remote files. ;;;*** ;;;### (autoloads (tramp-ftp-enable-ange-ftp) "tramp-ftp" "net/tramp-ftp.el" -;;;;;; (20438 17064 0 0)) +;;;;;; (20438 24016 194668 0)) ;;; Generated autoloads from net/tramp-ftp.el (autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\ @@ -29911,8 +28370,8 @@ Discard Tramp from loading remote files. ;;;*** -;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (20585 -;;;;;; 55103 0 0)) +;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (20584 +;;;;;; 7212 455152 0)) ;;; Generated autoloads from tutorial.el (autoload 'help-with-tutorial "tutorial" "\ @@ -29937,7 +28396,7 @@ resumed later. ;;;*** ;;;### (autoloads (tai-viet-composition-function) "tv-util" "language/tv-util.el" -;;;;;; (19765 60663 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from language/tv-util.el (autoload 'tai-viet-composition-function "tv-util" "\ @@ -29948,7 +28407,7 @@ resumed later. ;;;*** ;;;### (autoloads (2C-split 2C-associate-buffer 2C-two-columns) "two-column" -;;;;;; "textmodes/two-column.el" (20567 31133 0 0)) +;;;;;; "textmodes/two-column.el" (20566 63671 243798 0)) ;;; Generated autoloads from textmodes/two-column.el (autoload '2C-command "two-column" () t 'keymap) (global-set-key "\C-x6" '2C-command) @@ -29997,7 +28456,7 @@ First column's text sSs Second column's text ;;;### (autoloads (type-break-guesstimate-keystroke-threshold type-break-statistics ;;;;;; type-break type-break-mode) "type-break" "type-break.el" -;;;;;; (20581 48325 0 0)) +;;;;;; (20582 12914 894781 0)) ;;; Generated autoloads from type-break.el (defvar type-break-mode nil "\ @@ -30129,8 +28588,8 @@ FRAC should be the inverse of the fractional value; for example, a value of ;;;*** -;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (20567 31133 -;;;;;; 0 0)) +;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (20566 63671 +;;;;;; 243798 0)) ;;; Generated autoloads from mail/uce.el (autoload 'uce-reply-to-uce "uce" "\ @@ -30148,7 +28607,7 @@ You might need to set `uce-mail-reader' before using this. ;;;;;; ucs-normalize-NFKC-string ucs-normalize-NFKC-region ucs-normalize-NFKD-string ;;;;;; ucs-normalize-NFKD-region ucs-normalize-NFC-string ucs-normalize-NFC-region ;;;;;; ucs-normalize-NFD-string ucs-normalize-NFD-region) "ucs-normalize" -;;;;;; "international/ucs-normalize.el" (20511 52965 0 0)) +;;;;;; "international/ucs-normalize.el" (20476 31768 298871 0)) ;;; Generated autoloads from international/ucs-normalize.el (autoload 'ucs-normalize-NFD-region "ucs-normalize" "\ @@ -30214,7 +28673,7 @@ Normalize the string STR by the Unicode NFC and Mac OS's HFS Plus. ;;;*** ;;;### (autoloads (ununderline-region underline-region) "underline" -;;;;;; "textmodes/underline.el" (20244 35516 0 0)) +;;;;;; "textmodes/underline.el" (20355 10021 546955 0)) ;;; Generated autoloads from textmodes/underline.el (autoload 'underline-region "underline" "\ @@ -30235,7 +28694,7 @@ which specify the range to operate on. ;;;*** ;;;### (autoloads (unrmail batch-unrmail) "unrmail" "mail/unrmail.el" -;;;;;; (20373 41604 0 0)) +;;;;;; (20369 14251 85829 0)) ;;; Generated autoloads from mail/unrmail.el (autoload 'batch-unrmail "unrmail" "\ @@ -30254,8 +28713,8 @@ Convert old-style Rmail Babyl file FILE to system inbox format file TO-FILE. ;;;*** -;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (20244 -;;;;;; 35516 0 0)) +;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from emacs-lisp/unsafep.el (autoload 'unsafep "unsafep" "\ @@ -30268,7 +28727,7 @@ UNSAFEP-VARS is a list of symbols with local bindings. ;;;*** ;;;### (autoloads (url-retrieve-synchronously url-retrieve) "url" -;;;;;; "url/url.el" (20511 52965 0 0)) +;;;;;; "url/url.el" (20601 16294 451653 0)) ;;; Generated autoloads from url/url.el (autoload 'url-retrieve "url" "\ @@ -30280,9 +28739,9 @@ characters are percent-encoded; see `url-encode-url'. CALLBACK is called when the object has been completely retrieved, with the current buffer containing the object, and any MIME headers associated with it. It is called as (apply CALLBACK STATUS CBARGS). -STATUS is a list with an even number of elements representing -what happened during the request, with most recent events first, -or an empty list if no events have occurred. Each pair is one of: +STATUS is a plist representing what happened during the request, +with most recent events first, or an empty list if no events have +occurred. Each pair is one of: \(:redirect REDIRECTED-TO) - the request was redirected to this URL \(:error (ERROR-SYMBOL . DATA)) - an error occurred. The error can be @@ -30316,7 +28775,7 @@ no further processing). URL is either a string or a parsed URL. ;;;*** ;;;### (autoloads (url-register-auth-scheme url-get-authentication) -;;;;;; "url-auth" "url/url-auth.el" (20244 35516 0 0)) +;;;;;; "url-auth" "url/url-auth.el" (20355 10021 546955 0)) ;;; Generated autoloads from url/url-auth.el (autoload 'url-get-authentication "url-auth" "\ @@ -30358,7 +28817,7 @@ RATING a rating between 1 and 10 of the strength of the authentication. ;;;*** ;;;### (autoloads (url-cache-extract url-is-cached url-store-in-cache) -;;;;;; "url-cache" "url/url-cache.el" (20276 3849 0 0)) +;;;;;; "url-cache" "url/url-cache.el" (20355 10021 546955 0)) ;;; Generated autoloads from url/url-cache.el (autoload 'url-store-in-cache "url-cache" "\ @@ -30379,8 +28838,8 @@ Extract FNAM from the local disk cache. ;;;*** -;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from url/url-cid.el (autoload 'url-cid "url-cid" "\ @@ -30391,7 +28850,7 @@ Extract FNAM from the local disk cache. ;;;*** ;;;### (autoloads (url-dav-vc-registered url-dav-request url-dav-supported-p) -;;;;;; "url-dav" "url/url-dav.el" (20511 52965 0 0)) +;;;;;; "url-dav" "url/url-dav.el" (20501 3499 284800 0)) ;;; Generated autoloads from url/url-dav.el (autoload 'url-dav-supported-p "url-dav" "\ @@ -30425,8 +28884,8 @@ added to this list, so most requests can just pass in nil. ;;;*** -;;;### (autoloads (url-file) "url-file" "url/url-file.el" (20511 -;;;;;; 52965 0 0)) +;;;### (autoloads (url-file) "url-file" "url/url-file.el" (20602 +;;;;;; 37158 321420 0)) ;;; Generated autoloads from url/url-file.el (autoload 'url-file "url-file" "\ @@ -30437,7 +28896,7 @@ Handle file: and ftp: URLs. ;;;*** ;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw" -;;;;;; "url/url-gw.el" (20511 52965 0 0)) +;;;;;; "url/url-gw.el" (20478 3673 653810 0)) ;;; Generated autoloads from url/url-gw.el (autoload 'url-gateway-nslookup-host "url-gw" "\ @@ -30457,7 +28916,7 @@ Might do a non-blocking connection; use `process-status' to check. ;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file ;;;;;; url-file-handler url-handler-mode) "url-handlers" "url/url-handlers.el" -;;;;;; (20585 55103 0 0)) +;;;;;; (20584 7212 455152 0)) ;;; Generated autoloads from url/url-handlers.el (defvar url-handler-mode nil "\ @@ -30511,7 +28970,7 @@ accessible. ;;;*** -;;;### (autoloads nil "url-http" "url/url-http.el" (20589 46442 0 +;;;### (autoloads nil "url-http" "url/url-http.el" (20601 16294 451653 ;;;;;; 0)) ;;; Generated autoloads from url/url-http.el (autoload 'url-default-expander "url-expand") @@ -30524,8 +28983,8 @@ accessible. ;;;*** -;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from url/url-irc.el (autoload 'url-irc "url-irc" "\ @@ -30535,8 +28994,8 @@ accessible. ;;;*** -;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (20356 -;;;;;; 35090 0 0)) +;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (20355 +;;;;;; 10021 546955 0)) ;;; Generated autoloads from url/url-ldap.el (autoload 'url-ldap "url-ldap" "\ @@ -30550,7 +29009,7 @@ URL can be a URL string, or a URL vector of the type returned by ;;;*** ;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from url/url-mailto.el (autoload 'url-mail "url-mailto" "\ @@ -30566,7 +29025,8 @@ Handle the mailto: URL syntax. ;;;*** ;;;### (autoloads (url-data url-generic-emulator-loader url-info -;;;;;; url-man) "url-misc" "url/url-misc.el" (20511 52965 0 0)) +;;;;;; url-man) "url-misc" "url/url-misc.el" (20478 3673 653810 +;;;;;; 0)) ;;; Generated autoloads from url/url-misc.el (autoload 'url-man "url-misc" "\ @@ -30598,7 +29058,7 @@ Fetch a data URL (RFC 2397). ;;;*** ;;;### (autoloads (url-snews url-news) "url-news" "url/url-news.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from url/url-news.el (autoload 'url-news "url-news" "\ @@ -30615,7 +29075,7 @@ Fetch a data URL (RFC 2397). ;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable ;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url/url-ns.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from url/url-ns.el (autoload 'isPlainHostName "url-ns" "\ @@ -30656,7 +29116,7 @@ Fetch a data URL (RFC 2397). ;;;*** ;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse" -;;;;;; "url/url-parse.el" (20577 48876 0 0)) +;;;;;; "url/url-parse.el" (20577 33959 40183 0)) ;;; Generated autoloads from url/url-parse.el (autoload 'url-recreate-url "url-parse" "\ @@ -30708,7 +29168,7 @@ parses to ;;;*** ;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url/url-privacy.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20478 3673 653810 0)) ;;; Generated autoloads from url/url-privacy.el (autoload 'url-setup-privacy-info "url-privacy" "\ @@ -30719,7 +29179,7 @@ Setup variables that expose info about you and your system. ;;;*** ;;;### (autoloads (url-queue-retrieve) "url-queue" "url/url-queue.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20478 3673 653810 0)) ;;; Generated autoloads from url/url-queue.el (autoload 'url-queue-retrieve "url-queue" "\ @@ -30739,8 +29199,8 @@ The variable `url-queue-timeout' sets a timeout. ;;;;;; url-percentage url-display-percentage url-pretty-length url-strip-leading-spaces ;;;;;; url-eat-trailing-space url-get-normalized-date url-lazy-message ;;;;;; url-normalize-url url-insert-entities-in-string url-parse-args -;;;;;; url-debug url-debug) "url-util" "url/url-util.el" (20585 -;;;;;; 55103 0 0)) +;;;;;; url-debug url-debug) "url-util" "url/url-util.el" (20584 +;;;;;; 7212 455152 0)) ;;; Generated autoloads from url/url-util.el (defvar url-debug nil "\ @@ -30914,7 +29374,7 @@ This uses `url-current-object', set locally to the buffer. ;;;*** ;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock) -;;;;;; "userlock" "userlock.el" (20553 63503 0 0)) +;;;;;; "userlock" "userlock.el" (20555 6946 859539 0)) ;;; Generated autoloads from userlock.el (autoload 'ask-user-about-lock "userlock" "\ @@ -30944,7 +29404,7 @@ The buffer in question is current when this function is called. ;;;### (autoloads (utf-7-imap-pre-write-conversion utf-7-pre-write-conversion ;;;;;; utf-7-imap-post-read-conversion utf-7-post-read-conversion) -;;;;;; "utf-7" "international/utf-7.el" (20244 35516 0 0)) +;;;;;; "utf-7" "international/utf-7.el" (20355 10021 546955 0)) ;;; Generated autoloads from international/utf-7.el (autoload 'utf-7-post-read-conversion "utf-7" "\ @@ -30969,8 +29429,8 @@ The buffer in question is current when this function is called. ;;;*** -;;;### (autoloads (utf7-encode) "utf7" "gnus/utf7.el" (20244 35516 -;;;;;; 0 0)) +;;;### (autoloads (utf7-encode) "utf7" "gnus/utf7.el" (20355 10021 +;;;;;; 546955 0)) ;;; Generated autoloads from gnus/utf7.el (autoload 'utf7-encode "utf7" "\ @@ -30982,7 +29442,7 @@ Encode UTF-7 STRING. Use IMAP modification if FOR-IMAP is non-nil. ;;;### (autoloads (uudecode-decode-region uudecode-decode-region-internal ;;;;;; uudecode-decode-region-external) "uudecode" "mail/uudecode.el" -;;;;;; (20356 35090 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from mail/uudecode.el (autoload 'uudecode-decode-region-external "uudecode" "\ @@ -31012,8 +29472,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" (20580 -;;;;;; 46629 0 0)) +;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20611 +;;;;;; 52135 109136 0)) ;;; Generated autoloads from vc/vc.el (defvar vc-checkout-hook nil "\ @@ -31291,7 +29751,7 @@ Return the branch part of a revision number REV. ;;;*** ;;;### (autoloads (vc-annotate) "vc-annotate" "vc/vc-annotate.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20478 3673 653810 0)) ;;; Generated autoloads from vc/vc-annotate.el (autoload 'vc-annotate "vc-annotate" "\ @@ -31328,7 +29788,8 @@ mode-specific menu. `vc-annotate-color-map' and ;;;*** -;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (20511 52965 0 0)) +;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (20478 3673 653810 +;;;;;; 0)) ;;; Generated autoloads from vc/vc-arch.el (defun vc-arch-registered (file) (if (vc-find-root file "{arch}/=tagging-method") @@ -31338,7 +29799,8 @@ mode-specific menu. `vc-annotate-color-map' and ;;;*** -;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20585 55103 0 0)) +;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20584 7212 455152 +;;;;;; 0)) ;;; Generated autoloads from vc/vc-bzr.el (defconst vc-bzr-admin-dirname ".bzr" "\ @@ -31354,7 +29816,8 @@ Name of the format file in a .bzr directory.") ;;;*** -;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20544 52783 0 0)) +;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20542 46798 773957 +;;;;;; 0)) ;;; Generated autoloads from vc/vc-cvs.el (defun vc-cvs-registered (f) "Return non-nil if file F is registered with CVS." @@ -31365,7 +29828,7 @@ Name of the format file in a .bzr directory.") ;;;*** -;;;### (autoloads (vc-dir) "vc-dir" "vc/vc-dir.el" (20522 30367 0 +;;;### (autoloads (vc-dir) "vc-dir" "vc/vc-dir.el" (20522 9637 465791 ;;;;;; 0)) ;;; Generated autoloads from vc/vc-dir.el @@ -31391,7 +29854,7 @@ These are the commands available for use in the file status buffer: ;;;*** ;;;### (autoloads (vc-do-command) "vc-dispatcher" "vc/vc-dispatcher.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20489 12324 656827 0)) ;;; Generated autoloads from vc/vc-dispatcher.el (autoload 'vc-do-command "vc-dispatcher" "\ @@ -31414,7 +29877,8 @@ case, and the process object in the asynchronous case. ;;;*** -;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20589 46442 0 0)) +;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20586 48936 135199 +;;;;;; 0)) ;;; Generated autoloads from vc/vc-git.el (defun vc-git-registered (file) "Return non-nil if FILE is registered with git." @@ -31425,7 +29889,7 @@ case, and the process object in the asynchronous case. ;;;*** -;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20511 52965 0 0)) +;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20489 12324 656827 0)) ;;; Generated autoloads from vc/vc-hg.el (defun vc-hg-registered (file) "Return non-nil if FILE is registered with hg." @@ -31436,7 +29900,7 @@ case, and the process object in the asynchronous case. ;;;*** -;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20523 62975 0 0)) +;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20524 51365 2559 0)) ;;; Generated autoloads from vc/vc-mtn.el (defconst vc-mtn-admin-dir "_MTN" "\ @@ -31453,7 +29917,7 @@ Name of the monotone directory's format file.") ;;;*** ;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc/vc-rcs.el" -;;;;;; (20585 55103 0 0)) +;;;;;; (20584 7212 455152 0)) ;;; Generated autoloads from vc/vc-rcs.el (defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\ @@ -31467,7 +29931,7 @@ For a description of possible values, see `vc-check-master-templates'.") ;;;*** ;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc/vc-sccs.el" -;;;;;; (20585 55103 0 0)) +;;;;;; (20584 7212 455152 0)) ;;; Generated autoloads from vc/vc-sccs.el (defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\ @@ -31485,7 +29949,8 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir) ;;;*** -;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20318 5885 0 0)) +;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20355 10021 546955 +;;;;;; 0)) ;;; Generated autoloads from vc/vc-svn.el (defun vc-svn-registered (f) (let ((admin-dir (cond ((and (eq system-type 'windows-nt) @@ -31499,7 +29964,7 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir) ;;;*** ;;;### (autoloads (vera-mode) "vera-mode" "progmodes/vera-mode.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20577 33959 40183 0)) ;;; Generated autoloads from progmodes/vera-mode.el (add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'") 'vera-mode)) @@ -31557,7 +30022,7 @@ Key bindings: ;;;*** ;;;### (autoloads (verilog-mode) "verilog-mode" "progmodes/verilog-mode.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20593 22184 581574 0)) ;;; Generated autoloads from progmodes/verilog-mode.el (autoload 'verilog-mode "verilog-mode" "\ @@ -31696,7 +30161,7 @@ Key bindings specific to `verilog-mode-map' are: ;;;*** ;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el" -;;;;;; (20600 16892 0 0)) +;;;;;; (20593 22184 581574 0)) ;;; Generated autoloads from progmodes/vhdl-mode.el (autoload 'vhdl-mode "vhdl-mode" "\ @@ -32250,7 +30715,7 @@ Key bindings: ;;;*** -;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (20567 31133 0 +;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (20566 63671 243798 ;;;;;; 0)) ;;; Generated autoloads from emulation/vi.el @@ -32306,7 +30771,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" (20244 35516 0 0)) +;;;;;; "language/viet-util.el" (20355 10021 546955 0)) ;;; Generated autoloads from language/viet-util.el (autoload 'viet-encode-viscii-char "viet-util" "\ @@ -32354,7 +30819,7 @@ Convert Vietnamese characters of the current buffer to `VIQR' mnemonics. ;;;;;; view-mode view-buffer-other-frame view-buffer-other-window ;;;;;; view-buffer view-file-other-frame view-file-other-window ;;;;;; view-file kill-buffer-if-not-modified view-remove-frame-by-deleting) -;;;;;; "view" "view.el" (20577 48876 0 0)) +;;;;;; "view" "view.el" (20577 33959 40183 0)) ;;; Generated autoloads from view.el (defvar view-remove-frame-by-deleting t "\ @@ -32611,7 +31076,7 @@ Exit View mode and make the current buffer editable. ;;;*** ;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (20513 -;;;;;; 36786 0 0)) +;;;;;; 18948 537867 0)) ;;; Generated autoloads from emulation/vip.el (autoload 'vip-setup "vip" "\ @@ -32627,7 +31092,7 @@ Turn on VIP emulation of VI. ;;;*** ;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el" -;;;;;; (20567 31133 0 0)) +;;;;;; (20566 63671 243798 0)) ;;; Generated autoloads from emulation/viper.el (autoload 'toggle-viper-mode "viper" "\ @@ -32644,7 +31109,7 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'. ;;;*** ;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el" -;;;;;; (20244 35516 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from emacs-lisp/warnings.el (defvar warning-prefix-function nil "\ @@ -32734,7 +31199,7 @@ this is equivalent to `display-warning', using ;;;*** ;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el" -;;;;;; (20511 52965 0 0)) +;;;;;; (20619 46245 806932 0)) ;;; Generated autoloads from wdired.el (autoload 'wdired-change-to-wdired-mode "wdired" "\ @@ -32751,8 +31216,8 @@ See `wdired-mode'. ;;;*** -;;;### (autoloads (webjump) "webjump" "net/webjump.el" (20567 31133 -;;;;;; 0 0)) +;;;### (autoloads (webjump) "webjump" "net/webjump.el" (20566 63671 +;;;;;; 243798 0)) ;;; Generated autoloads from net/webjump.el (autoload 'webjump "webjump" "\ @@ -32769,7 +31234,7 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke ;;;*** ;;;### (autoloads (which-function-mode) "which-func" "progmodes/which-func.el" -;;;;;; (20577 48876 0 0)) +;;;;;; (20613 49078 764749 0)) ;;; Generated autoloads from progmodes/which-func.el (put 'which-func-format 'risky-local-variable t) (put 'which-func-current 'risky-local-variable t) @@ -32802,8 +31267,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" (20511 52965 -;;;;;; 0 0)) +;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20508 13724 +;;;;;; 260761 0)) ;;; Generated autoloads from whitespace.el (autoload 'whitespace-mode "whitespace" "\ @@ -33202,8 +31667,8 @@ cleaning up these problems. ;;;*** ;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse -;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (20511 52965 -;;;;;; 0 0)) +;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (20478 3673 +;;;;;; 653810 0)) ;;; Generated autoloads from wid-browse.el (autoload 'widget-browse-at "wid-browse" "\ @@ -33233,7 +31698,7 @@ if ARG is omitted or nil. ;;;### (autoloads (widget-setup widget-insert widget-delete widget-create ;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (20373 -;;;;;; 41604 0 0)) +;;;;;; 11301 906925 0)) ;;; Generated autoloads from wid-edit.el (autoload 'widgetp "wid-edit" "\ @@ -33276,8 +31741,8 @@ Setup current buffer so editing string widgets works. ;;;*** ;;;### (autoloads (windmove-default-keybindings windmove-down windmove-right -;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (20567 -;;;;;; 31133 0 0)) +;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (20566 +;;;;;; 63671 243798 0)) ;;; Generated autoloads from windmove.el (autoload 'windmove-left "windmove" "\ @@ -33329,8 +31794,8 @@ Default MODIFIER is 'shift. ;;;*** -;;;### (autoloads (winner-mode) "winner" "winner.el" (20585 55103 -;;;;;; 0 0)) +;;;### (autoloads (winner-mode) "winner" "winner.el" (20584 7212 +;;;;;; 455152 0)) ;;; Generated autoloads from winner.el (defvar winner-mode nil "\ @@ -33354,7 +31819,8 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'. ;;;*** ;;;### (autoloads (woman-bookmark-jump woman-find-file woman-dired-find-file -;;;;;; woman woman-locale) "woman" "woman.el" (20539 37147 0 0)) +;;;;;; woman woman-locale) "woman" "woman.el" (20623 43301 870757 +;;;;;; 0)) ;;; Generated autoloads from woman.el (defvar woman-locale nil "\ @@ -33403,7 +31869,7 @@ Default bookmark handler for Woman buffers. ;;;*** ;;;### (autoloads (wordstar-mode) "ws-mode" "emulation/ws-mode.el" -;;;;;; (20331 12564 0 0)) +;;;;;; (20355 10021 546955 0)) ;;; Generated autoloads from emulation/ws-mode.el (autoload 'wordstar-mode "ws-mode" "\ @@ -33515,8 +31981,8 @@ The key bindings are: ;;;*** -;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (20511 52965 -;;;;;; 0 0)) +;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (20478 3673 +;;;;;; 653810 0)) ;;; Generated autoloads from net/xesam.el (autoload 'xesam-search "xesam" "\ @@ -33536,7 +32002,7 @@ Example: ;;;*** ;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el" -;;;;;; (20535 44414 0 0)) +;;;;;; (20528 48420 241677 0)) ;;; Generated autoloads from xml.el (autoload 'xml-parse-file "xml" "\ @@ -33593,7 +32059,7 @@ Both features can be combined by providing a cons cell ;;;*** ;;;### (autoloads (xmltok-get-declared-encoding-position) "xmltok" -;;;;;; "nxml/xmltok.el" (20244 35516 0 0)) +;;;;;; "nxml/xmltok.el" (20355 10021 546955 0)) ;;; Generated autoloads from nxml/xmltok.el (autoload 'xmltok-get-declared-encoding-position "xmltok" "\ @@ -33611,8 +32077,8 @@ If LIMIT is non-nil, then do not consider characters beyond LIMIT. ;;;*** -;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (20511 -;;;;;; 52965 0 0)) +;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (20485 +;;;;;; 15269 390836 0)) ;;; Generated autoloads from xt-mouse.el (defvar xterm-mouse-mode nil "\ @@ -33642,7 +32108,7 @@ down the SHIFT key while pressing the mouse button. ;;;*** ;;;### (autoloads (yenc-extract-filename yenc-decode-region) "yenc" -;;;;;; "gnus/yenc.el" (20244 35516 0 0)) +;;;;;; "gnus/yenc.el" (20355 10021 546955 0)) ;;; Generated autoloads from gnus/yenc.el (autoload 'yenc-decode-region "yenc" "\ @@ -33658,7 +32124,7 @@ Extract file name from an yenc header. ;;;*** ;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism -;;;;;; yow) "yow" "play/yow.el" (20373 41604 0 0)) +;;;;;; yow) "yow" "play/yow.el" (20364 42504 244840 586000)) ;;; Generated autoloads from play/yow.el (autoload 'yow "yow" "\ @@ -33684,7 +32150,8 @@ Zippy goes to the analyst. ;;;*** -;;;### (autoloads (zone) "zone" "play/zone.el" (20550 14882 0 0)) +;;;### (autoloads (zone) "zone" "play/zone.el" (20545 57511 257469 +;;;;;; 0)) ;;; Generated autoloads from play/zone.el (autoload 'zone "zone" "\ @@ -33768,12 +32235,12 @@ Zone out, completely. ;;;;;; "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" "cedet/srecode/mode.el" ;;;;;; "cedet/srecode/semantic.el" "cedet/srecode/srt-wy.el" "cedet/srecode/srt.el" ;;;;;; "cedet/srecode/table.el" "cedet/srecode/template.el" "cedet/srecode/texi.el" -;;;;;; "cus-dep.el" "cus-load.el" "dframe.el" "dired-aux.el" "dired-x.el" -;;;;;; "dos-fns.el" "dos-vars.el" "dos-w32.el" "dynamic-setting.el" -;;;;;; "emacs-lisp/authors.el" "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" -;;;;;; "emacs-lisp/byte-opt.el" "emacs-lisp/chart.el" "emacs-lisp/cl-extra.el" -;;;;;; "emacs-lisp/cl-loaddefs.el" "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" -;;;;;; "emacs-lisp/cl.el" "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-datadebug.el" +;;;;;; "cus-dep.el" "dframe.el" "dired-aux.el" "dired-x.el" "dos-fns.el" +;;;;;; "dos-vars.el" "dos-w32.el" "dynamic-setting.el" "emacs-lisp/authors.el" +;;;;;; "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el" +;;;;;; "emacs-lisp/chart.el" "emacs-lisp/cl-extra.el" "emacs-lisp/cl-loaddefs.el" +;;;;;; "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el" +;;;;;; "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-datadebug.el" ;;;;;; "emacs-lisp/eieio-speedbar.el" "emacs-lisp/eieio.el" "emacs-lisp/find-gc.el" ;;;;;; "emacs-lisp/gulp.el" "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el" ;;;;;; "emacs-lisp/regi.el" "emacs-lisp/smie.el" "emacs-lisp/tcover-ses.el" @@ -33792,30 +32259,30 @@ Zone out, completely. ;;;;;; "eshell/esh-cmd.el" "eshell/esh-ext.el" "eshell/esh-groups.el" ;;;;;; "eshell/esh-io.el" "eshell/esh-module.el" "eshell/esh-opt.el" ;;;;;; "eshell/esh-proc.el" "eshell/esh-util.el" "eshell/esh-var.el" -;;;;;; "ezimage.el" "finder-inf.el" "foldout.el" "format-spec.el" -;;;;;; "fringe.el" "generic-x.el" "gnus/compface.el" "gnus/gnus-async.el" -;;;;;; "gnus/gnus-bcklg.el" "gnus/gnus-cite.el" "gnus/gnus-cus.el" -;;;;;; "gnus/gnus-demon.el" "gnus/gnus-dup.el" "gnus/gnus-eform.el" -;;;;;; "gnus/gnus-ems.el" "gnus/gnus-int.el" "gnus/gnus-logic.el" -;;;;;; "gnus/gnus-mh.el" "gnus/gnus-salt.el" "gnus/gnus-score.el" -;;;;;; "gnus/gnus-setup.el" "gnus/gnus-srvr.el" "gnus/gnus-topic.el" -;;;;;; "gnus/gnus-undo.el" "gnus/gnus-util.el" "gnus/gnus-uu.el" -;;;;;; "gnus/gnus-vm.el" "gnus/gssapi.el" "gnus/ietf-drums.el" "gnus/legacy-gnus-agent.el" -;;;;;; "gnus/mail-parse.el" "gnus/mail-prsvr.el" "gnus/mail-source.el" -;;;;;; "gnus/mailcap.el" "gnus/messcompat.el" "gnus/mm-archive.el" -;;;;;; "gnus/mm-bodies.el" "gnus/mm-decode.el" "gnus/mm-util.el" -;;;;;; "gnus/mm-view.el" "gnus/mml-sec.el" "gnus/mml-smime.el" "gnus/nnagent.el" -;;;;;; "gnus/nnbabyl.el" "gnus/nndir.el" "gnus/nndraft.el" "gnus/nneething.el" -;;;;;; "gnus/nngateway.el" "gnus/nnheader.el" "gnus/nnimap.el" "gnus/nnir.el" -;;;;;; "gnus/nnmail.el" "gnus/nnmaildir.el" "gnus/nnmairix.el" "gnus/nnmbox.el" -;;;;;; "gnus/nnmh.el" "gnus/nnnil.el" "gnus/nnoo.el" "gnus/nnregistry.el" -;;;;;; "gnus/nnrss.el" "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnvirtual.el" -;;;;;; "gnus/nnweb.el" "gnus/registry.el" "gnus/rfc1843.el" "gnus/rfc2045.el" -;;;;;; "gnus/rfc2047.el" "gnus/rfc2104.el" "gnus/rfc2231.el" "gnus/rtree.el" -;;;;;; "gnus/shr-color.el" "gnus/sieve-manage.el" "gnus/smime.el" -;;;;;; "gnus/spam-stat.el" "gnus/spam-wash.el" "hex-util.el" "hfy-cmap.el" -;;;;;; "ibuf-ext.el" "international/cp51932.el" "international/eucjp-ms.el" -;;;;;; "international/fontset.el" "international/iso-ascii.el" "international/ja-dic-cnv.el" +;;;;;; "ezimage.el" "foldout.el" "format-spec.el" "fringe.el" "generic-x.el" +;;;;;; "gnus/compface.el" "gnus/gnus-async.el" "gnus/gnus-bcklg.el" +;;;;;; "gnus/gnus-cite.el" "gnus/gnus-cus.el" "gnus/gnus-demon.el" +;;;;;; "gnus/gnus-dup.el" "gnus/gnus-eform.el" "gnus/gnus-ems.el" +;;;;;; "gnus/gnus-int.el" "gnus/gnus-logic.el" "gnus/gnus-mh.el" +;;;;;; "gnus/gnus-salt.el" "gnus/gnus-score.el" "gnus/gnus-setup.el" +;;;;;; "gnus/gnus-srvr.el" "gnus/gnus-topic.el" "gnus/gnus-undo.el" +;;;;;; "gnus/gnus-util.el" "gnus/gnus-uu.el" "gnus/gnus-vm.el" "gnus/gssapi.el" +;;;;;; "gnus/ietf-drums.el" "gnus/legacy-gnus-agent.el" "gnus/mail-parse.el" +;;;;;; "gnus/mail-prsvr.el" "gnus/mail-source.el" "gnus/mailcap.el" +;;;;;; "gnus/messcompat.el" "gnus/mm-archive.el" "gnus/mm-bodies.el" +;;;;;; "gnus/mm-decode.el" "gnus/mm-util.el" "gnus/mm-view.el" "gnus/mml-sec.el" +;;;;;; "gnus/mml-smime.el" "gnus/nnagent.el" "gnus/nnbabyl.el" "gnus/nndir.el" +;;;;;; "gnus/nndraft.el" "gnus/nneething.el" "gnus/nngateway.el" +;;;;;; "gnus/nnheader.el" "gnus/nnimap.el" "gnus/nnir.el" "gnus/nnmail.el" +;;;;;; "gnus/nnmaildir.el" "gnus/nnmairix.el" "gnus/nnmbox.el" "gnus/nnmh.el" +;;;;;; "gnus/nnnil.el" "gnus/nnoo.el" "gnus/nnregistry.el" "gnus/nnrss.el" +;;;;;; "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnvirtual.el" "gnus/nnweb.el" +;;;;;; "gnus/registry.el" "gnus/rfc1843.el" "gnus/rfc2045.el" "gnus/rfc2047.el" +;;;;;; "gnus/rfc2104.el" "gnus/rfc2231.el" "gnus/rtree.el" "gnus/shr-color.el" +;;;;;; "gnus/sieve-manage.el" "gnus/smime.el" "gnus/spam-stat.el" +;;;;;; "gnus/spam-wash.el" "hex-util.el" "hfy-cmap.el" "ibuf-ext.el" +;;;;;; "international/cp51932.el" "international/eucjp-ms.el" "international/fontset.el" +;;;;;; "international/iso-ascii.el" "international/ja-dic-cnv.el" ;;;;;; "international/ja-dic-utl.el" "international/ogonek.el" "international/uni-bidi.el" ;;;;;; "international/uni-category.el" "international/uni-combining.el" ;;;;;; "international/uni-comment.el" "international/uni-decimal.el" @@ -33855,46 +32322,56 @@ Zone out, completely. ;;;;;; "org/ob-css.el" "org/ob-ditaa.el" "org/ob-dot.el" "org/ob-emacs-lisp.el" ;;;;;; "org/ob-eval.el" "org/ob-exp.el" "org/ob-fortran.el" "org/ob-gnuplot.el" ;;;;;; "org/ob-haskell.el" "org/ob-io.el" "org/ob-java.el" "org/ob-js.el" -;;;;;; "org/ob-latex.el" "org/ob-ledger.el" "org/ob-lilypond.el" -;;;;;; "org/ob-lisp.el" "org/ob-matlab.el" "org/ob-maxima.el" "org/ob-mscgen.el" -;;;;;; "org/ob-ocaml.el" "org/ob-octave.el" "org/ob-org.el" "org/ob-perl.el" -;;;;;; "org/ob-picolisp.el" "org/ob-plantuml.el" "org/ob-python.el" -;;;;;; "org/ob-ref.el" "org/ob-ruby.el" "org/ob-sass.el" "org/ob-scala.el" -;;;;;; "org/ob-scheme.el" "org/ob-screen.el" "org/ob-sh.el" "org/ob-shen.el" -;;;;;; "org/ob-sql.el" "org/ob-sqlite.el" "org/ob-table.el" "org/org-beamer.el" -;;;;;; "org/org-bibtex.el" "org/org-colview.el" "org/org-crypt.el" -;;;;;; "org/org-ctags.el" "org/org-docview.el" "org/org-entities.el" -;;;;;; "org/org-eshell.el" "org/org-exp-blocks.el" "org/org-faces.el" -;;;;;; "org/org-gnus.el" "org/org-habit.el" "org/org-info.el" "org/org-inlinetask.el" -;;;;;; "org/org-install.el" "org/org-jsinfo.el" "org/org-list.el" -;;;;;; "org/org-mac-message.el" "org/org-macs.el" "org/org-mew.el" -;;;;;; "org/org-mhe.el" "org/org-mks.el" "org/org-mouse.el" "org/org-pcomplete.el" -;;;;;; "org/org-protocol.el" "org/org-rmail.el" "org/org-special-blocks.el" -;;;;;; "org/org-src.el" "org/org-vm.el" "org/org-w3m.el" "org/org-wl.el" -;;;;;; "play/gamegrid.el" "play/gametree.el" "play/meese.el" "progmodes/ada-prj.el" -;;;;;; "progmodes/cc-align.el" "progmodes/cc-awk.el" "progmodes/cc-bytecomp.el" -;;;;;; "progmodes/cc-cmds.el" "progmodes/cc-defs.el" "progmodes/cc-fonts.el" -;;;;;; "progmodes/cc-langs.el" "progmodes/cc-menus.el" "progmodes/ebnf-abn.el" -;;;;;; "progmodes/ebnf-bnf.el" "progmodes/ebnf-dtd.el" "progmodes/ebnf-ebx.el" -;;;;;; "progmodes/ebnf-iso.el" "progmodes/ebnf-otz.el" "progmodes/ebnf-yac.el" -;;;;;; "progmodes/idlw-complete-structtag.el" "progmodes/idlw-help.el" -;;;;;; "progmodes/idlw-toolbar.el" "progmodes/mantemp.el" "progmodes/xscheme.el" -;;;;;; "ps-def.el" "ps-mule.el" "ps-samp.el" "saveplace.el" "sb-image.el" -;;;;;; "scroll-bar.el" "select.el" "soundex.el" "subdirs.el" "tempo.el" -;;;;;; "textmodes/bib-mode.el" "textmodes/makeinfo.el" "textmodes/page-ext.el" -;;;;;; "textmodes/refbib.el" "textmodes/refer.el" "textmodes/reftex-auc.el" -;;;;;; "textmodes/reftex-dcr.el" "textmodes/reftex-ref.el" "textmodes/reftex-sel.el" -;;;;;; "textmodes/reftex-toc.el" "textmodes/texnfo-upd.el" "timezone.el" -;;;;;; "tooltip.el" "tree-widget.el" "uniquify.el" "url/url-about.el" -;;;;;; "url/url-cookie.el" "url/url-dired.el" "url/url-domsuf.el" -;;;;;; "url/url-expand.el" "url/url-ftp.el" "url/url-future.el" -;;;;;; "url/url-history.el" "url/url-imap.el" "url/url-methods.el" -;;;;;; "url/url-nfs.el" "url/url-proxy.el" "url/url-vars.el" "vc/ediff-diff.el" -;;;;;; "vc/ediff-init.el" "vc/ediff-merg.el" "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") (20600 26805 968824 63000)) +;;;;;; "org/ob-keys.el" "org/ob-latex.el" "org/ob-ledger.el" "org/ob-lilypond.el" +;;;;;; "org/ob-lisp.el" "org/ob-lob.el" "org/ob-matlab.el" "org/ob-maxima.el" +;;;;;; "org/ob-mscgen.el" "org/ob-ocaml.el" "org/ob-octave.el" "org/ob-org.el" +;;;;;; "org/ob-perl.el" "org/ob-picolisp.el" "org/ob-plantuml.el" +;;;;;; "org/ob-python.el" "org/ob-ref.el" "org/ob-ruby.el" "org/ob-sass.el" +;;;;;; "org/ob-scala.el" "org/ob-scheme.el" "org/ob-screen.el" "org/ob-sh.el" +;;;;;; "org/ob-shen.el" "org/ob-sql.el" "org/ob-sqlite.el" "org/ob-table.el" +;;;;;; "org/ob-tangle.el" "org/ob.el" "org/org-archive.el" "org/org-ascii.el" +;;;;;; "org/org-attach.el" "org/org-bbdb.el" "org/org-bibtex.el" +;;;;;; "org/org-clock.el" "org/org-crypt.el" "org/org-ctags.el" +;;;;;; "org/org-datetree.el" "org/org-docbook.el" "org/org-docview.el" +;;;;;; "org/org-element.el" "org/org-entities.el" "org/org-eshell.el" +;;;;;; "org/org-exp-blocks.el" "org/org-exp.el" "org/org-faces.el" +;;;;;; "org/org-feed.el" "org/org-footnote.el" "org/org-freemind.el" +;;;;;; "org/org-gnus.el" "org/org-habit.el" "org/org-html.el" "org/org-icalendar.el" +;;;;;; "org/org-id.el" "org/org-indent.el" "org/org-info.el" "org/org-inlinetask.el" +;;;;;; "org/org-install.el" "org/org-irc.el" "org/org-jsinfo.el" +;;;;;; "org/org-latex.el" "org/org-list.el" "org/org-loaddefs.el" +;;;;;; "org/org-lparse.el" "org/org-mac-message.el" "org/org-macs.el" +;;;;;; "org/org-mew.el" "org/org-mhe.el" "org/org-mks.el" "org/org-mobile.el" +;;;;;; "org/org-mouse.el" "org/org-odt.el" "org/org-pcomplete.el" +;;;;;; "org/org-plot.el" "org/org-protocol.el" "org/org-publish.el" +;;;;;; "org/org-remember.el" "org/org-rmail.el" "org/org-special-blocks.el" +;;;;;; "org/org-src.el" "org/org-table.el" "org/org-taskjuggler.el" +;;;;;; "org/org-timer.el" "org/org-vm.el" "org/org-w3m.el" "org/org-wl.el" +;;;;;; "org/org-xoxo.el" "play/gamegrid.el" "play/gametree.el" "play/meese.el" +;;;;;; "progmodes/ada-prj.el" "progmodes/cc-align.el" "progmodes/cc-awk.el" +;;;;;; "progmodes/cc-bytecomp.el" "progmodes/cc-cmds.el" "progmodes/cc-defs.el" +;;;;;; "progmodes/cc-fonts.el" "progmodes/cc-langs.el" "progmodes/cc-menus.el" +;;;;;; "progmodes/ebnf-abn.el" "progmodes/ebnf-bnf.el" "progmodes/ebnf-dtd.el" +;;;;;; "progmodes/ebnf-ebx.el" "progmodes/ebnf-iso.el" "progmodes/ebnf-otz.el" +;;;;;; "progmodes/ebnf-yac.el" "progmodes/idlw-complete-structtag.el" +;;;;;; "progmodes/idlw-help.el" "progmodes/idlw-toolbar.el" "progmodes/mantemp.el" +;;;;;; "progmodes/xscheme.el" "ps-def.el" "ps-mule.el" "ps-samp.el" +;;;;;; "saveplace.el" "sb-image.el" "scroll-bar.el" "select.el" +;;;;;; "soundex.el" "subdirs.el" "tempo.el" "textmodes/bib-mode.el" +;;;;;; "textmodes/makeinfo.el" "textmodes/page-ext.el" "textmodes/refbib.el" +;;;;;; "textmodes/refer.el" "textmodes/reftex-auc.el" "textmodes/reftex-dcr.el" +;;;;;; "textmodes/reftex-ref.el" "textmodes/reftex-sel.el" "textmodes/reftex-toc.el" +;;;;;; "textmodes/texnfo-upd.el" "timezone.el" "tooltip.el" "tree-widget.el" +;;;;;; "uniquify.el" "url/url-about.el" "url/url-cookie.el" "url/url-dired.el" +;;;;;; "url/url-domsuf.el" "url/url-expand.el" "url/url-ftp.el" +;;;;;; "url/url-future.el" "url/url-history.el" "url/url-imap.el" +;;;;;; "url/url-methods.el" "url/url-nfs.el" "url/url-proxy.el" +;;;;;; "url/url-vars.el" "vc/ediff-diff.el" "vc/ediff-init.el" "vc/ediff-merg.el" +;;;;;; "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") (20626 19627 425848 +;;;;;; 6000)) ;;;*** From 7e8b50d9e556b1c8b393199995ef3ea85b9f4525 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 1 Nov 2012 16:21:45 +0200 Subject: [PATCH 095/165] Fix MS-Windows build broken by fixing bug #12776 on Posix platforms. src/w32proc.c (getpgrp, setpgid): New functions. nt/inc/unistd.h (setpgid, getpgrp): Provide prototypes. nt/config.nt (GETPGRP_VOID): Define to 1. --- nt/ChangeLog | 6 ++++++ nt/config.nt | 2 +- nt/inc/unistd.h | 2 ++ src/ChangeLog | 4 ++++ src/w32proc.c | 12 ++++++++++++ 5 files changed, 25 insertions(+), 1 deletion(-) diff --git a/nt/ChangeLog b/nt/ChangeLog index c915ee40bb6..d34d23df4d5 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,9 @@ +2012-11-01 Eli Zaretskii + + * inc/unistd.h (setpgid, getpgrp): Provide prototypes. (Bug#12776) + + * config.nt (GETPGRP_VOID): Define to 1. + 2012-10-24 Juanma Barranquero * config.nt: Sync with autogen/config.in. diff --git a/nt/config.nt b/nt/config.nt index 4dc7ede188b..ed1cddf1e12 100644 --- a/nt/config.nt +++ b/nt/config.nt @@ -184,7 +184,7 @@ along with GNU Emacs. If not, see . */ #define GC_SETJMP_WORKS 1 /* Define to 1 if the `getpgrp' function requires zero arguments. */ -#undef GETPGRP_VOID +#define GETPGRP_VOID 1 /* Define if gettimeofday clobbers the localtime buffer. */ #undef GETTIMEOFDAY_CLOBBERS_LOCALTIME diff --git a/nt/inc/unistd.h b/nt/inc/unistd.h index 7db6cf08bea..383bc3decec 100644 --- a/nt/inc/unistd.h +++ b/nt/inc/unistd.h @@ -10,5 +10,7 @@ extern ssize_t readlink (const char *, char *, size_t); extern int symlink (char const *, char const *); +extern int setpgid (pid_t, pid_t); +extern pid_t getpgrp (void); #endif /* _UNISTD_H */ diff --git a/src/ChangeLog b/src/ChangeLog index 4dc18b6909b..e762eb13b87 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2012-11-01 Eli Zaretskii + + * w32proc.c (getpgrp, setpgid): New functions. (Bug#12776) + 2012-10-31 Paul Eggert Fix crash when using Emacs as commit editor for git (Bug#12697). diff --git a/src/w32proc.c b/src/w32proc.c index a0ff96e593c..adef7651b8c 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -236,6 +236,18 @@ setpgrp (int pid, int gid) return 0; } +pid_t +getpgrp (void) +{ + return getpid (); +} + +int +setpgid (pid_t pid, pid_t pgid) +{ + return 0; +} + /* Emulations of interval timers. Limitations: only ITIMER_REAL and ITIMER_PROF are supported. From 052f924a01f8a65ca0bfc9e6584302613e019489 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 2 Nov 2012 08:48:12 +0800 Subject: [PATCH 096/165] Bump version to 24.3.50 --- README | 2 +- configure.ac | 2 +- doc/emacs/emacsver.texi | 2 +- doc/man/emacs.1 | 2 +- msdos/sed2v2.inp | 2 +- nt/config.nt | 2 +- nt/emacs.rc | 8 ++++---- nt/emacsclient.rc | 8 ++++---- nt/makefile.w32-in | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README b/README index 2c50c5bbb91..9153c656dbe 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2012 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 24.2.50 of GNU Emacs, the extensible, +This directory tree holds version 24.3.50 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. The file INSTALL in this directory says how to build and install GNU diff --git a/configure.ac b/configure.ac index 4564bc3085e..b0711923e1a 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ dnl You should have received a copy of the GNU General Public License dnl along with GNU Emacs. If not, see . AC_PREREQ(2.65) -AC_INIT(emacs, 24.2.50) +AC_INIT(emacs, 24.3.50) AC_CONFIG_HEADER(src/config.h:src/config.in) AC_CONFIG_SRCDIR(src/lisp.h) AC_CONFIG_AUX_DIR(build-aux) diff --git a/doc/emacs/emacsver.texi b/doc/emacs/emacsver.texi index 3b54719ad77..408d6612d58 100644 --- a/doc/emacs/emacsver.texi +++ b/doc/emacs/emacsver.texi @@ -1,4 +1,4 @@ @c It would be nicer to generate this using configure and @version@. @c However, that would mean emacsver.texi would always be newer @c then the info files in release tarfiles. -@set EMACSVER 24.2.50 +@set EMACSVER 24.3.50 diff --git a/doc/man/emacs.1 b/doc/man/emacs.1 index a3d73800503..46bda023b5a 100644 --- a/doc/man/emacs.1 +++ b/doc/man/emacs.1 @@ -1,5 +1,5 @@ .\" See section COPYING for copyright and redistribution information. -.TH EMACS 1 "2007 April 13" "GNU Emacs 24.2.50" +.TH EMACS 1 "2007 April 13" "GNU Emacs 24.3.50" . . .SH NAME diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 25bc5ed12fd..916c49dd1b5 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -70,7 +70,7 @@ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ /^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION ""/ -/^#undef VERSION/s/^.*$/#define VERSION "24.2.50"/ +/^#undef VERSION/s/^.*$/#define VERSION "24.3.50"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ diff --git a/nt/config.nt b/nt/config.nt index ed1cddf1e12..f690b126b77 100644 --- a/nt/config.nt +++ b/nt/config.nt @@ -1399,7 +1399,7 @@ along with GNU Emacs. If not, see . */ #undef USG_SUBTTY_WORKS /* Version number of package */ -#define VERSION "24.2.50" +#define VERSION "24.3.50" /* Define to l, ll, u, ul, ull, etc., as suitable for constants of type 'wchar_t'. */ diff --git a/nt/emacs.rc b/nt/emacs.rc index 63ed75490f9..72aa47212ac 100644 --- a/nt/emacs.rc +++ b/nt/emacs.rc @@ -11,8 +11,8 @@ Emacs ICON icons\emacs.ico #endif VS_VERSION_INFO VERSIONINFO - FILEVERSION 24,2,50,0 - PRODUCTVERSION 24,2,50,0 + FILEVERSION 24,3,50,0 + PRODUCTVERSION 24,3,50,0 FILEFLAGSMASK 0x3FL #ifdef EMACSDEBUG FILEFLAGS 0x1L @@ -29,12 +29,12 @@ BEGIN BEGIN VALUE "CompanyName", "Free Software Foundation\0" VALUE "FileDescription", "GNU Emacs: The extensible self-documenting text editor\0" - VALUE "FileVersion", "24, 2, 50, 0\0" + VALUE "FileVersion", "24, 3, 50, 0\0" VALUE "InternalName", "Emacs\0" VALUE "LegalCopyright", "Copyright (C) 2001-2012\0" VALUE "OriginalFilename", "emacs.exe" VALUE "ProductName", "Emacs\0" - VALUE "ProductVersion", "24, 2, 50, 0\0" + VALUE "ProductVersion", "24, 3, 50, 0\0" VALUE "OLESelfRegister", "\0" END END diff --git a/nt/emacsclient.rc b/nt/emacsclient.rc index e79f1fa4aaa..59dd7b09f8a 100644 --- a/nt/emacsclient.rc +++ b/nt/emacsclient.rc @@ -5,8 +5,8 @@ Emacs ICON icons\emacs.ico #endif VS_VERSION_INFO VERSIONINFO - FILEVERSION 24,2,50,0 - PRODUCTVERSION 24,2,50,0 + FILEVERSION 24,3,50,0 + PRODUCTVERSION 24,3,50,0 FILEFLAGSMASK 0x3FL #ifdef EMACSDEBUG FILEFLAGS 0x1L @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "Free Software Foundation\0" VALUE "FileDescription", "GNU EmacsClient: Client for the extensible self-documenting text editor\0" - VALUE "FileVersion", "24, 2, 50, 0\0" + VALUE "FileVersion", "24, 3, 50, 0\0" VALUE "InternalName", "EmacsClient\0" VALUE "LegalCopyright", "Copyright (C) 2001-2012\0" VALUE "OriginalFilename", "emacsclientw.exe" VALUE "ProductName", "EmacsClient\0" - VALUE "ProductVersion", "24, 2, 50, 0\0" + VALUE "ProductVersion", "24, 3, 50, 0\0" VALUE "OLESelfRegister", "\0" END END diff --git a/nt/makefile.w32-in b/nt/makefile.w32-in index 82bd829492d..7377d7e33b9 100644 --- a/nt/makefile.w32-in +++ b/nt/makefile.w32-in @@ -22,7 +22,7 @@ # FIXME: This file uses DOS EOLs. Convert to Unix after 22.1 is out # (and remove or replace this comment). -VERSION = 24.2.50 +VERSION = 24.3.50 TMP_DIST_DIR = emacs-$(VERSION) From 2b371ff75d64fb34466119e33f5cbb2c5eb27364 Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Fri, 2 Nov 2012 13:44:08 +0400 Subject: [PATCH 097/165] Remove pad from struct input_event. * termhooks.h (struct input_event): Remove padding field. Adjust comment. * keyboard.c (event_to_kboard): Simplify because frame_or_window member is never cons for a long time. Adjust comment. (mark_kboards): Adjust because SELECTION_REQUEST_EVENT and SELECTION_CLEAR_EVENT has no Lisp_Objects to mark. Add comment. * xterm.c (handle_one_xevent): Do not initialize frame_or_window field of SELECTION_REQUEST_EVENT and SELECTION_CLEAR_EVENT. --- src/ChangeLog | 12 ++++++++++++ src/keyboard.c | 26 ++++++++++---------------- src/termhooks.h | 12 ++---------- src/xterm.c | 2 -- 4 files changed, 24 insertions(+), 28 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index e762eb13b87..bcbc455dba6 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,15 @@ +2012-11-02 Dmitry Antipov + + Remove pad from struct input_event. + * termhooks.h (struct input_event): Remove padding field. + Adjust comment. + * keyboard.c (event_to_kboard): Simplify because frame_or_window + member is never cons for a long time. Adjust comment. + (mark_kboards): Adjust because SELECTION_REQUEST_EVENT and + SELECTION_CLEAR_EVENT has no Lisp_Objects to mark. Add comment. + * xterm.c (handle_one_xevent): Do not initialize frame_or_window + field of SELECTION_REQUEST_EVENT and SELECTION_CLEAR_EVENT. + 2012-11-01 Eli Zaretskii * w32proc.c (getpgrp, setpgid): New functions. (Bug#12776) diff --git a/src/keyboard.c b/src/keyboard.c index ab20ef71660..dfd4d0c2648 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -3416,20 +3416,13 @@ int stop_character EXTERNALLY_VISIBLE; static KBOARD * event_to_kboard (struct input_event *event) { - Lisp_Object frame; - frame = event->frame_or_window; - if (CONSP (frame)) - frame = XCAR (frame); - else if (WINDOWP (frame)) - frame = WINDOW_FRAME (XWINDOW (frame)); - - /* There are still some events that don't set this field. - For now, just ignore the problem. - Also ignore dead frames here. */ - if (!FRAMEP (frame) || !FRAME_LIVE_P (XFRAME (frame))) - return 0; - else - return FRAME_KBOARD (XFRAME (frame)); + Lisp_Object obj = event->frame_or_window; + /* There are some events that set this field to nil or string. */ + if (WINDOWP (obj)) + obj = WINDOW_FRAME (XWINDOW (obj)); + /* Also ignore dead frames here. */ + return ((FRAMEP (obj) && FRAME_LIVE_P (XFRAME (obj))) + ? FRAME_KBOARD (XFRAME (obj)) : NULL); } #ifdef subprocesses @@ -12173,14 +12166,15 @@ mark_kboards (void) { if (event == kbd_buffer + KBD_BUFFER_SIZE) event = kbd_buffer; + /* These two special event types has no Lisp_Objects to mark. */ if (event->kind != SELECTION_REQUEST_EVENT && event->kind != SELECTION_CLEAR_EVENT) { mark_object (event->x); mark_object (event->y); + mark_object (event->frame_or_window); + mark_object (event->arg); } - mark_object (event->frame_or_window); - mark_object (event->arg); } } } diff --git a/src/termhooks.h b/src/termhooks.h index c33c2dd1587..2d97fcdbc1e 100644 --- a/src/termhooks.h +++ b/src/termhooks.h @@ -242,16 +242,8 @@ struct input_event Lisp_Object x, y; Time timestamp; - /* This is padding just to put the frame_or_window field - past the size of struct selection_input_event. */ - int *padding[2]; - - /* This field is copied into a vector while the event is in the queue, - so that garbage collections won't kill it. */ - /* In a menu_bar_event, this is a cons cell whose car is the frame - and whose cdr is the Lisp object that is the event's value. */ - /* This field is last so that struct selection_input_event - does not overlap with it. */ + /* This field is copied into a vector while the event is in + the queue, so that garbage collections won't kill it. */ Lisp_Object frame_or_window; /* Additional event argument. This is used for TOOL_BAR_EVENTs and diff --git a/src/xterm.c b/src/xterm.c index f8420d13a32..4dd1dee0f75 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -6108,7 +6108,6 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr, SELECTION_EVENT_DISPLAY (&inev.sie) = eventp->display; SELECTION_EVENT_SELECTION (&inev.sie) = eventp->selection; SELECTION_EVENT_TIME (&inev.sie) = eventp->time; - inev.ie.frame_or_window = Qnil; } break; @@ -6128,7 +6127,6 @@ handle_one_xevent (struct x_display_info *dpyinfo, XEvent *eventptr, SELECTION_EVENT_TARGET (&inev.sie) = eventp->target; SELECTION_EVENT_PROPERTY (&inev.sie) = eventp->property; SELECTION_EVENT_TIME (&inev.sie) = eventp->time; - inev.ie.frame_or_window = Qnil; } break; From c574bc3409143d0eb3aea1fe3161fac28de7e366 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 2 Nov 2012 06:17:32 -0400 Subject: [PATCH 098/165] Auto-commit of generated files. --- autogen/configure | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/autogen/configure b/autogen/configure index 67e1039d54c..92bd49c4c73 100755 --- a/autogen/configure +++ b/autogen/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.65 for emacs 24.2.50. +# Generated by GNU Autoconf 2.65 for emacs 24.3.50. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -549,8 +549,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='emacs' PACKAGE_TARNAME='emacs' -PACKAGE_VERSION='24.2.50' -PACKAGE_STRING='emacs 24.2.50' +PACKAGE_VERSION='24.3.50' +PACKAGE_STRING='emacs 24.3.50' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1940,7 +1940,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures emacs 24.2.50 to adapt to many kinds of systems. +\`configure' configures emacs 24.3.50 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2014,7 +2014,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of emacs 24.2.50:";; + short | recursive ) echo "Configuration of emacs 24.3.50:";; esac cat <<\_ACEOF @@ -2181,7 +2181,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -emacs configure 24.2.50 +emacs configure 24.3.50 generated by GNU Autoconf 2.65 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2903,7 +2903,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by emacs $as_me 24.2.50, which was +It was created by emacs $as_me 24.3.50, which was generated by GNU Autoconf 2.65. Invocation command line was $ $0 $@ @@ -3764,7 +3764,7 @@ fi # Define the identity of the package. PACKAGE='emacs' - VERSION='24.2.50' + VERSION='24.3.50' cat >>confdefs.h <<_ACEOF @@ -25481,7 +25481,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by emacs $as_me 24.2.50, which was +This file was extended by emacs $as_me 24.3.50, which was generated by GNU Autoconf 2.65. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -25547,7 +25547,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -emacs config.status 24.2.50 +emacs config.status 24.3.50 configured by $0, generated by GNU Autoconf 2.65, with options \\"\$ac_cs_config\\" From b9e9df47f2886bb4b6b67aea8eeb0b015258a063 Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Fri, 2 Nov 2012 14:34:26 +0400 Subject: [PATCH 099/165] Window-related stuff cleanup here and there. * dispnew.c (Finternal_show_cursor, Finternal_show_cursor_p): Use decode_any_window. * fringe.c (Ffringe_bitmaps_at_pos): Likewise. * xdisp.c (Fformat_mode_line): Likewise. * font.c (Ffont_at): Use decode_live_window. * indent.c (Fcompute_motion, Fvertical_motion): Likewise. * window.c (decode_next_window_args): Likewise. (decode_any_window): Remove static. * window.h (decode_any_window): Add prototype. * lisp.h (CHECK_VALID_WINDOW, CHECK_LIVE_WINDOW): Move from here... * window.h: ...to here, redefine via WINDOW_VALID_P and WINDOW_LIVE_P, respectively. --- src/ChangeLog | 16 ++++++++++++++++ src/dispnew.c | 20 ++------------------ src/font.c | 6 +----- src/fringe.c | 6 ++---- src/indent.c | 15 +++------------ src/lisp.h | 14 -------------- src/window.c | 9 +++------ src/window.h | 9 +++++++++ src/xdisp.c | 8 +++----- 9 files changed, 39 insertions(+), 64 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index bcbc455dba6..25cb1e76fa5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,19 @@ +2012-11-02 Dmitry Antipov + + Window-related stuff cleanup here and there. + * dispnew.c (Finternal_show_cursor, Finternal_show_cursor_p): + Use decode_any_window. + * fringe.c (Ffringe_bitmaps_at_pos): Likewise. + * xdisp.c (Fformat_mode_line): Likewise. + * font.c (Ffont_at): Use decode_live_window. + * indent.c (Fcompute_motion, Fvertical_motion): Likewise. + * window.c (decode_next_window_args): Likewise. + (decode_any_window): Remove static. + * window.h (decode_any_window): Add prototype. + * lisp.h (CHECK_VALID_WINDOW, CHECK_LIVE_WINDOW): Move from here... + * window.h: ...to here, redefine via WINDOW_VALID_P and WINDOW_LIVE_P, + respectively. + 2012-11-02 Dmitry Antipov Remove pad from struct input_event. diff --git a/src/dispnew.c b/src/dispnew.c index 9f0e22fcdcb..e99387d2f6e 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -6375,15 +6375,7 @@ don't show a cursor. */) /* Don't change cursor state while redisplaying. This could confuse output routines. */ if (!redisplaying_p) - { - if (NILP (window)) - window = selected_window; - else - CHECK_WINDOW (window); - - XWINDOW (window)->cursor_off_p = NILP (show); - } - + decode_any_window (window)->cursor_off_p = NILP (show); return Qnil; } @@ -6394,15 +6386,7 @@ DEFUN ("internal-show-cursor-p", Finternal_show_cursor_p, WINDOW nil or omitted means report on the selected window. */) (Lisp_Object window) { - struct window *w; - - if (NILP (window)) - window = selected_window; - else - CHECK_WINDOW (window); - - w = XWINDOW (window); - return w->cursor_off_p ? Qnil : Qt; + return decode_any_window (window)->cursor_off_p ? Qnil : Qt; } DEFUN ("last-nonminibuffer-frame", Flast_nonminibuf_frame, diff --git a/src/font.c b/src/font.c index e79ce5d80bc..87932b0e440 100644 --- a/src/font.c +++ b/src/font.c @@ -4765,13 +4765,9 @@ Optional third arg STRING, if non-nil, is a string containing the target character at index specified by POSITION. */) (Lisp_Object position, Lisp_Object window, Lisp_Object string) { - struct window *w; + struct window *w = decode_live_window (window); ptrdiff_t pos; - if (NILP (window)) - window = selected_window; - CHECK_LIVE_WINDOW (window); - w = XWINDOW (window); if (NILP (string)) { if (XBUFFER (w->buffer) != current_buffer) diff --git a/src/fringe.c b/src/fringe.c index d788503e91e..a126292e1ff 100644 --- a/src/fringe.c +++ b/src/fringe.c @@ -1731,10 +1731,8 @@ Return nil if POS is not visible in WINDOW. */) struct glyph_row *row; ptrdiff_t textpos; - if (NILP (window)) - window = selected_window; - CHECK_WINDOW (window); - w = XWINDOW (window); + w = decode_any_window (window); + XSETWINDOW (window, w); if (!NILP (pos)) { diff --git a/src/indent.c b/src/indent.c index bbc944d2518..eee96061e25 100644 --- a/src/indent.c +++ b/src/indent.c @@ -1764,11 +1764,7 @@ visible section of the buffer, and pass LINE and COL as TOPOS. */) else hscroll = tab_offset = 0; - if (NILP (window)) - window = Fselected_window (); - else - CHECK_LIVE_WINDOW (window); - w = XWINDOW (window); + w = decode_live_window (window); if (XINT (from) < BEGV || XINT (from) > ZV) args_out_of_range_3 (from, make_number (BEGV), make_number (ZV)); @@ -1790,8 +1786,7 @@ visible section of the buffer, and pass LINE and COL as TOPOS. */) 1)) : XINT (XCAR (topos))), (NILP (width) ? -1 : XINT (width)), - hscroll, tab_offset, - XWINDOW (window)); + hscroll, tab_offset, w); XSETFASTINT (bufpos, pos->bufpos); XSETINT (hpos, pos->hpos); @@ -1988,11 +1983,7 @@ whether or not it is currently displayed in some window. */) } CHECK_NUMBER (lines); - if (! NILP (window)) - CHECK_WINDOW (window); - else - window = selected_window; - w = XWINDOW (window); + w = decode_live_window (window); old_buffer = Qnil; GCPRO3 (old_buffer, old_charpos, old_bytepos); diff --git a/src/lisp.h b/src/lisp.h index 3ec188b67c7..61671bdaf21 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -1791,20 +1791,6 @@ typedef struct { #define CHECK_WINDOW_CONFIGURATION(x) \ CHECK_TYPE (WINDOW_CONFIGURATIONP (x), Qwindow_configuration_p, x) -/* A window of any sort, leaf or interior, is "valid" if one of its - buffer, vchild, or hchild members is non-nil. */ -#define CHECK_VALID_WINDOW(x) \ - CHECK_TYPE (WINDOWP (x) \ - && (!NILP (XWINDOW (x)->buffer) \ - || !NILP (XWINDOW (x)->vchild) \ - || !NILP (XWINDOW (x)->hchild)), \ - Qwindow_valid_p, x) - -/* A window is "live" if and only if it shows a buffer. */ -#define CHECK_LIVE_WINDOW(x) \ - CHECK_TYPE (WINDOWP (x) && !NILP (XWINDOW (x)->buffer), \ - Qwindow_live_p, x) - #define CHECK_PROCESS(x) \ CHECK_TYPE (PROCESSP (x), Qprocessp, x) diff --git a/src/window.c b/src/window.c index dfcabda59b9..8dbecf9c81e 100644 --- a/src/window.c +++ b/src/window.c @@ -244,7 +244,7 @@ decode_live_window (register Lisp_Object window) return XWINDOW (window); } -static struct window * +struct window * decode_any_window (register Lisp_Object window) { struct window *w; @@ -2252,10 +2252,7 @@ candidate_window_p (Lisp_Object window, Lisp_Object owindow, Lisp_Object minibuf static void decode_next_window_args (Lisp_Object *window, Lisp_Object *minibuf, Lisp_Object *all_frames) { - if (NILP (*window)) - *window = selected_window; - else - CHECK_LIVE_WINDOW (*window); + struct window *w = decode_live_window (*window); /* MINIBUF nil may or may not include minibuffers. Decide if it does. */ @@ -2272,7 +2269,7 @@ decode_next_window_args (Lisp_Object *window, Lisp_Object *minibuf, Lisp_Object if (NILP (*all_frames)) *all_frames = (!EQ (*minibuf, Qlambda) - ? FRAME_MINIBUF_WINDOW (XFRAME (XWINDOW (*window)->frame)) + ? FRAME_MINIBUF_WINDOW (XFRAME (w->frame)) : Qnil); else if (EQ (*all_frames, Qvisible)) ; diff --git a/src/window.h b/src/window.h index 115b361194c..2a12226c0aa 100644 --- a/src/window.h +++ b/src/window.h @@ -970,17 +970,26 @@ struct glyph *get_phys_cursor_glyph (struct window *w); || !NILP (XWINDOW (WINDOW)->vchild) \ || !NILP (XWINDOW (WINDOW)->hchild))) +/* A window of any sort, leaf or interior, is "valid" if one + of its buffer, vchild, or hchild members is non-nil. */ +#define CHECK_VALID_WINDOW(WINDOW) \ + CHECK_TYPE (WINDOW_VALID_P (WINDOW), Qwindow_valid_p, WINDOW) /* Value is non-zero if WINDOW is a live window. */ #define WINDOW_LIVE_P(WINDOW) \ (WINDOWP (WINDOW) && !NILP (XWINDOW (WINDOW)->buffer)) +/* A window is "live" if and only if it shows a buffer. */ +#define CHECK_LIVE_WINDOW(WINDOW) \ + CHECK_TYPE (WINDOW_LIVE_P (WINDOW), Qwindow_live_p, WINDOW) + /* These used to be in lisp.h. */ extern Lisp_Object Qwindowp, Qwindow_live_p; extern Lisp_Object Vwindow_list; extern struct window *decode_live_window (Lisp_Object); +extern struct window *decode_any_window (Lisp_Object); extern bool compare_window_configurations (Lisp_Object, Lisp_Object, bool); extern void mark_window_cursors_off (struct window *); extern int window_internal_height (struct window *); diff --git a/src/xdisp.c b/src/xdisp.c index b3b08edcd0a..b235f92edfe 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -21018,10 +21018,8 @@ are the selected window and the WINDOW's buffer). */) Lisp_Object str; int string_start = 0; - if (NILP (window)) - window = selected_window; - CHECK_WINDOW (window); - w = XWINDOW (window); + w = decode_any_window (window); + XSETWINDOW (window, w); if (NILP (buffer)) buffer = w->buffer; @@ -21050,7 +21048,7 @@ are the selected window and the WINDOW's buffer). */) and set that to nil so that we don't alter the outer value. */ record_unwind_protect (unwind_format_mode_line, format_mode_line_unwind_data - (XFRAME (WINDOW_FRAME (XWINDOW (window))), + (XFRAME (WINDOW_FRAME (w)), old_buffer, selected_window, 1)); mode_line_proptrans_alist = Qnil; From 1005b4b98a43c4aea2ac8f01a5743b6b38bdd964 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 2 Nov 2012 16:00:45 +0200 Subject: [PATCH 100/165] Implement backtrace output for fatal errors on MS-Windows. src/w32fns.c (CaptureStackBackTrace_proc): New typedef. (BACKTRACE_LIMIT_MAX): New macro. (w32_backtrace): New function. (emacs_abort): Use w32_backtrace when the user chooses not to attach a debugger. Update the text of the abort dialog. --- src/ChangeLog | 9 ++++++ src/w32fns.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 85 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 25cb1e76fa5..5739b5d9125 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2012-11-02 Eli Zaretskii + + Implement backtrace output for fatal errors on MS-Windows. + * w32fns.c (CaptureStackBackTrace_proc): New typedef. + (BACKTRACE_LIMIT_MAX): New macro. + (w32_backtrace): New function. + (emacs_abort): Use w32_backtrace when the user chooses not to + attach a debugger. Update the text of the abort dialog. + 2012-11-02 Dmitry Antipov Window-related stuff cleanup here and there. diff --git a/src/w32fns.c b/src/w32fns.c index aa120d59ce5..7459c4a31db 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -26,6 +26,7 @@ along with GNU Emacs. If not, see . */ #include #include #include +#include #include "lisp.h" #include "w32term.h" @@ -7697,6 +7698,30 @@ globals_of_w32fns (void) syms_of_w32uniscribe (); } +typedef USHORT (WINAPI * CaptureStackBackTrace_proc) (ULONG, ULONG, PVOID *, + PULONG); + +#define BACKTRACE_LIMIT_MAX 62 + +int +w32_backtrace (void **buffer, int limit) +{ + static CaptureStackBackTrace_proc s_pfn_CaptureStackBackTrace = NULL; + HMODULE hm_kernel32 = NULL; + + if (!s_pfn_CaptureStackBackTrace) + { + hm_kernel32 = LoadLibrary ("Kernel32.dll"); + s_pfn_CaptureStackBackTrace = + (CaptureStackBackTrace_proc) GetProcAddress (hm_kernel32, + "RtlCaptureStackBackTrace"); + } + if (s_pfn_CaptureStackBackTrace) + return s_pfn_CaptureStackBackTrace (0, min (BACKTRACE_LIMIT_MAX, limit), + buffer, NULL); + return 0; +} + void emacs_abort (void) { @@ -7704,7 +7729,10 @@ emacs_abort (void) button = MessageBox (NULL, "A fatal error has occurred!\n\n" "Would you like to attach a debugger?\n\n" - "Select YES to debug, NO to abort Emacs" + "Select:\n" + "YES -- to debug Emacs, or\n" + "NO -- to abort Emacs and produce a backtrace\n" + " (emacs_backtrace.txt in current directory)." #if __GNUC__ "\n\n(type \"gdb -p \" and\n" "\"continue\" inside GDB before clicking YES.)" @@ -7719,7 +7747,52 @@ emacs_abort (void) exit (2); /* tell the compiler we will never return */ case IDNO: default: - abort (); - break; + { + void *stack[BACKTRACE_LIMIT_MAX + 1]; + int i = w32_backtrace (stack, BACKTRACE_LIMIT_MAX + 1); + + if (i) + { + HANDLE errout = GetStdHandle (STD_ERROR_HANDLE); + int stderr_fd = -1, errfile_fd = -1; + int j; + + if (errout && errout != INVALID_HANDLE_VALUE) + stderr_fd = _open_osfhandle ((intptr_t)errout, O_APPEND | O_BINARY); + if (stderr_fd >= 0) + write (stderr_fd, "\r\nBacktrace:\r\n", 14); + errfile_fd = _open ("emacs_backtrace.txt", O_RDWR | O_CREAT | O_BINARY, S_IREAD | S_IWRITE); + if (errfile_fd >= 0) + { + lseek (errfile_fd, 0L, SEEK_END); + write (errfile_fd, "\r\nBacktrace:\r\n", 14); + } + + for (j = 0; j < i; j++) + { + char buf[INT_BUFSIZE_BOUND (void *)]; + + /* stack[] gives the return addresses, whereas we want + the address of the call, so decrease each address + by approximate size of 1 CALL instruction. */ + sprintf (buf, "0x%p\r\n", stack[j] - sizeof(void *)); + if (stderr_fd >= 0) + write (stderr_fd, buf, strlen (buf)); + if (errfile_fd >= 0) + write (errfile_fd, buf, strlen (buf)); + } + if (i == BACKTRACE_LIMIT_MAX) + { + if (stderr_fd >= 0) + write (stderr_fd, "...\r\n", 5); + if (errfile_fd >= 0) + write (errfile_fd, "...\r\n", 5); + } + if (errfile_fd >= 0) + close (errfile_fd); + } + abort (); + break; + } } } From 95a32efb548b3be6c843fe0fb03324cc90affda7 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 2 Nov 2012 09:14:06 -0700 Subject: [PATCH 101/165] Add NEWS top-level headings for 24.4. --- etc/NEWS | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 31a4909f8d9..912ae58ebf6 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -20,6 +20,17 @@ Temporary note: When you add a new item, please add it without either +++ or --- so we will look at it and add it to the manual. + +* Installation Changes in Emacs 24.4 +* Startup Changes in Emacs 24.4 +* Changes in Emacs 24.4 +* Editing Changes in Emacs 24.4 +* Changes in Specialized Modes and Packages in Emacs 24.4 +* New Modes and Packages in Emacs 24.4 +* Incompatible Lisp Changes in Emacs 24.4 +* Lisp changes in Emacs 24.4 +* Changes in Emacs 24.4 on non-free operating systems + * Installation Changes in Emacs 24.3 From 600d4768d809be989d452dbf6aead5e788112c85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Thu, 1 Nov 2012 23:44:53 +0100 Subject: [PATCH 102/165] * widget.c (resize_cb): New function. (EmacsFrameRealize): Add resize_cb as event handler. (EmacsFrameResize): Check if all is up to date before changing frame size. Fixes: debbugs:12733 --- src/ChangeLog | 7 +++++++ src/widget.c | 28 ++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 5739b5d9125..26d4b7f5349 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2012-11-01 Jan Djärv + + * widget.c (resize_cb): New function. + (EmacsFrameRealize): Add resize_cb as event handler (Bug#12733). + (EmacsFrameResize): Check if all is up to date before changing frame + size. + 2012-11-02 Eli Zaretskii Implement backtrace output for fatal errors on MS-Windows. diff --git a/src/widget.c b/src/widget.c index 1f472c6231c..b4f7335c652 100644 --- a/src/widget.c +++ b/src/widget.c @@ -650,6 +650,16 @@ EmacsFrameInitialize (Widget request, Widget new, ArgList dum1, Cardinal *dum2) set_frame_size (ew); } +static void +resize_cb (Widget widget, + XtPointer closure, + XEvent* event, + Boolean* continue_to_dispatch) +{ + EmacsFrame ew = (EmacsFrame) widget; + EmacsFrameResize (widget); +} + static void EmacsFrameRealize (Widget widget, XtValueMask *mask, XSetWindowAttributes *attrs) @@ -665,6 +675,9 @@ EmacsFrameRealize (Widget widget, XtValueMask *mask, XSetWindowAttributes *attrs *mask |= CWEventMask; XtCreateWindow (widget, InputOutput, (Visual *)CopyFromParent, *mask, attrs); + /* Some ConfigureNotify events does not end up in EmacsFrameResize so + make sure we get them all. Seen with xfcwm4 for example. */ + XtAddRawEventHandler (widget, StructureNotifyMask, False, resize_cb, NULL); update_wm_hints (ew); } @@ -691,15 +704,22 @@ EmacsFrameResize (Widget widget) { EmacsFrame ew = (EmacsFrame)widget; struct frame *f = ew->emacs_frame.frame; + struct x_output *x = f->output_data.x; int columns; int rows; pixel_to_char_size (ew, ew->core.width, ew->core.height, &columns, &rows); - change_frame_size (f, rows, columns, 0, 1, 0); - update_wm_hints (ew); - update_various_frame_slots (ew); + if (columns != FRAME_COLS (f) + || rows != FRAME_LINES (f) + || ew->core.width != FRAME_PIXEL_WIDTH (f) + || ew->core.height + x->menubar_height != FRAME_PIXEL_HEIGHT (f)) + { + change_frame_size (f, rows, columns, 0, 1, 0); + update_wm_hints (ew); + update_various_frame_slots (ew); - cancel_mouse_face (f); + cancel_mouse_face (f); + } } static Boolean From d036bcdffe9acef3ca4205344e25c041ffc76482 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 2 Nov 2012 18:22:11 -0400 Subject: [PATCH 103/165] Allow choice of icon style at install time This feature is intentionally not advertised http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12536#40 * Makefile.in (EMACS_ICON): New variable. (install-etc): Use EMACS_ICON to allow choice of icon. --- ChangeLog | 5 +++++ Makefile.in | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d4aa9c935ea..45fe253e044 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-11-02 Glenn Morris + + * Makefile.in (EMACS_ICON): New variable. + (install-etc): Use EMACS_ICON to allow choice of icon. + 2012-10-26 Glenn Morris * Makefile.in (EMACS_NAME): New variable. diff --git a/Makefile.in b/Makefile.in index 78630ef58ff..9b7bf795b84 100644 --- a/Makefile.in +++ b/Makefile.in @@ -632,6 +632,11 @@ install-man: done ## Install those items from etc/ that need to end up elsewhere. + +## If you prefer, choose "emacs22" at installation time. +## Note: emacs22 does not have all the resolutions. +EMACS_ICON=emacs + install-etc: umask 022; ${MKDIR_P} $(DESTDIR)${desktopdir} tmp=etc/emacs.tmpdesktop; rm -f $${tmp}; \ @@ -646,10 +651,10 @@ install-etc: for dir in */*/apps */*/mimetypes; do \ [ -d $${dir} ] || continue ; \ ( cd $${thisdir}; ${MKDIR_P} $(DESTDIR)${icondir}/$${dir} ) ; \ - for icon in $${dir}/emacs[.-]*; do \ + for icon in $${dir}/${EMACS_ICON}[.-]*; do \ [ -r $${icon} ] || continue ; \ ext=`echo "$${icon}" | sed -e 's|.*\.||'`; \ - dest=`echo "$${icon}" | sed -e 's|.*/||' -e "s|\.$${ext}$$||" -e '$(TRANSFORM)'`.$${ext} ; \ + dest=`echo "$${icon}" | sed -e 's|.*/||' -e "s|\.$${ext}$$||" -e 's/$(EMACS_ICON)/emacs/' -e '$(TRANSFORM)'`.$${ext} ; \ ( cd $${thisdir}; \ ${INSTALL_DATA} ${iconsrcdir}/$${icon} $(DESTDIR)${icondir}/$${dir}/$${dest} ) \ || exit 1; \ From 7fbf8f7bd9a23a7cd946b60b4a8ec45124433b17 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 2 Nov 2012 18:29:56 -0400 Subject: [PATCH 104/165] Undocument cl-floatp-safe, since it is no longer relevant * doc/misc/cl.texi (Naming Conventions, Type Predicates, Macros) (Predicates on Numbers): No longer mention cl-floatp-safe. --- doc/misc/ChangeLog | 5 +++++ doc/misc/cl.texi | 19 ++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index d719a02e32e..36f8d01bbd9 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,8 @@ +2012-11-02 Glenn Morris + + * cl.texi (Naming Conventions, Type Predicates, Macros) + (Predicates on Numbers): No longer mention cl-floatp-safe. + 2012-11-01 Glenn Morris * cl.texi: General copyedits for style, line-breaks, etc. diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 4a728049ce8..9de8ee37165 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -229,7 +229,7 @@ by @code{cl--}. Here is a complete list of functions prefixed by @example cl-callf cl-callf2 cl-defsubst -cl-floatp-safe cl-letf cl-letf* +cl-letf cl-letf* @end example @c This is not uninteresting I suppose, but is of zero practical relevance @@ -239,13 +239,13 @@ they do not cause other components like @file{cl-extra} to be loaded. @example cl-evenp cl-oddp cl-minusp -cl-plusp cl-floatp-safe cl-endp +cl-plusp cl-endp cl-subst cl-copy-list cl-list* cl-ldiff cl-rest cl-decf [1] cl-incf [1] cl-acons cl-adjoin [2] cl-pairlis cl-pushnew [1,2] cl-declaim cl-proclaim cl-caaar@dots{}cl-cddddr cl-first@dots{}cl-tenth -cl-subst cl-mapcar [3] +cl-mapcar [3] @end example @noindent @@ -300,7 +300,8 @@ calls to it may be expanded into in-line code by the byte compiler. This is analogous to the @code{defsubst} form; @code{cl-defsubst} uses a different method (compiler macros) which works in all versions of Emacs, and also generates somewhat more -@c Really? +@c For some examples, +@c see http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00009.html efficient inline expansions. In particular, @code{cl-defsubst} arranges for the processing of keyword arguments, default values, etc., to be done at compile-time whenever possible. @@ -702,11 +703,13 @@ The type symbol @code{real} is a synonym for @code{number}, and The type symbols @code{character} and @code{string-char} match integers in the range from 0 to 255. +@c No longer relevant, so covered by first item above (float -> floatp). +@ignore @item The type symbol @code{float} uses the @code{cl-floatp-safe} predicate defined by this package rather than @code{floatp}, so it will work -@c FIXME are any such platforms still relevant? correctly even in Emacs versions without floating-point support. +@end ignore @item The type list @code{(integer @var{low} @var{high})} represents all @@ -2551,7 +2554,7 @@ appears as a standard part of this package: (cl-define-compiler-macro cl-member (&whole form a list &rest keys) (if (and (null keys) (eq (car-safe a) 'quote) - (not (floatp-safe (cadr a)))) + (not (floatp (cadr a)))) (list 'memq a list) form)) @end example @@ -2908,7 +2911,7 @@ This section defines a few simple Common Lisp operations on numbers which were left out of Emacs Lisp. @menu -* Predicates on Numbers:: @code{cl-plusp}, @code{cl-oddp}, @code{cl-floatp-safe}, etc. +* Predicates on Numbers:: @code{cl-plusp}, @code{cl-oddp}, etc. * Numerical Functions:: @code{abs}, @code{cl-floor}, etc. * Random Numbers:: @code{cl-random}, @code{cl-make-random-state}. * Implementation Parameters:: @code{cl-most-positive-float}. @@ -2941,11 +2944,13 @@ This predicate tests whether @var{integer} is even. It is an error if the argument is not an integer. @end defun +@ignore @defun cl-floatp-safe object This predicate tests whether @var{object} is a floating-point number. On systems that support floating-point, this is equivalent to @code{floatp}. On other systems, this always returns @code{nil}. @end defun +@end ignore @node Numerical Functions @section Numerical Functions From 3a6851d9b459836e1a72af13f44a17d02d9fccc9 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 2 Nov 2012 18:35:01 -0400 Subject: [PATCH 105/165] Decouple "noruntime" and "cl-functions" bytecomp warnings * lisp/emacs-lisp/bytecomp.el (byte-compile-eval): Decouple "noruntime" and "cl-functions" warnings. --- lisp/ChangeLog | 5 +++++ lisp/emacs-lisp/bytecomp.el | 11 +---------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ab73a61d9e6..747bbba97c4 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-11-02 Glenn Morris + + * emacs-lisp/bytecomp.el (byte-compile-eval): + Decouple "noruntime" and "cl-functions" warnings. + 2012-11-01 Stephen Berman * play/gomoku.el (gomoku-display-statistics): Update mode line diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 7534ce5eaca..e776df4ef37 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -863,16 +863,7 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'." (let ((xs (pop hist-new)) old-autoloads) ;; Make sure the file was not already loaded before. - (unless (or (assoc (car xs) hist-orig) - ;; Don't give both the "noruntime" and - ;; "cl-functions" warning for the same function. - ;; FIXME This seems incorrect - these are two - ;; independent warnings. For example, you may be - ;; choosing to see the cl warnings but ignore them. - ;; You probably don't want to ignore noruntime in the - ;; same way. - (and (byte-compile-warning-enabled-p 'cl-functions) - (byte-compile-cl-file-p (car xs)))) + (unless (assoc (car xs) hist-orig) (dolist (s xs) (cond ((and (consp s) (eq t (car s))) From 11fef14abb1fdd7424295c3c50d59bf18bb6c4e7 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 2 Nov 2012 18:41:35 -0400 Subject: [PATCH 106/165] * lisp/image.el (image-type-from-file-name): Trivial simplification. --- lisp/ChangeLog | 2 ++ lisp/image.el | 17 +++++++---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 747bbba97c4..a6c9482c5aa 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2012-11-02 Glenn Morris + * image.el (image-type-from-file-name): Trivial simplification. + * emacs-lisp/bytecomp.el (byte-compile-eval): Decouple "noruntime" and "cl-functions" warnings. diff --git a/lisp/image.el b/lisp/image.el index aef44fc3701..bd2f5c3a3ca 100644 --- a/lisp/image.el +++ b/lisp/image.el @@ -309,16 +309,13 @@ be determined." Value is a symbol specifying the image type, or nil if type cannot be determined." (let (type first) - (or - (catch 'found - (dolist (elem image-type-file-name-regexps) - (when (string-match-p (car elem) file) - (setq type (cdr elem)) - (or first (setq first type)) - (if (image-type-available-p type) - (throw 'found type))))) - ;; If nothing seems to be supported, return the first type that matched. - first))) + (catch 'found + (dolist (elem image-type-file-name-regexps first) + (when (string-match-p (car elem) file) + (if (image-type-available-p (setq type (cdr elem))) + (throw 'found type) + ;; If nothing seems to be supported, return first type that matched. + (or first (setq first type)))))))) ;;;###autoload (defun image-type (source &optional type data-p) From 00a3b041730e178fe68850b76ac4216af62ea606 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 2 Nov 2012 18:44:38 -0400 Subject: [PATCH 107/165] No need for filecache.el to load find-lisp when compiling * lisp/filecache.el (find-lisp-find-files): Autoload it. (file-cache-add-directory-recursively): Don't require find-lisp. --- lisp/ChangeLog | 4 ++++ lisp/filecache.el | 25 +++++++++++-------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a6c9482c5aa..e4e35a74a45 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,9 @@ 2012-11-02 Glenn Morris + * filecache.el: No need to load find-lisp when compiling. + (find-lisp-find-files): Autoload it. + (file-cache-add-directory-recursively): Don't require find-lisp. + * image.el (image-type-from-file-name): Trivial simplification. * emacs-lisp/bytecomp.el (byte-compile-eval): diff --git a/lisp/filecache.el b/lisp/filecache.el index 10e23bddca2..2dd7c2673bf 100644 --- a/lisp/filecache.el +++ b/lisp/filecache.el @@ -139,9 +139,6 @@ ;;; Code: -(eval-when-compile - (require 'find-lisp)) - (defgroup file-cache nil "Find files using a pre-loaded cache." :group 'files @@ -366,6 +363,8 @@ STRING is passed as an argument to the locate command." string) (file-cache-add-from-file-cache-buffer)) +(autoload 'find-lisp-find-files "find-lisp") + ;;;###autoload (defun file-cache-add-directory-recursively (dir &optional regexp) "Adds DIR and any subdirectories to the file-cache. @@ -374,18 +373,16 @@ If the optional REGEXP argument is non-nil, only files which match it will be added to the cache. Note that the REGEXP is applied to the files in each directory, not to the directory list itself." (interactive "DAdd directory: ") - (require 'find-lisp) (mapcar - (function - (lambda (file) - (or (file-directory-p file) - (let (filtered) - (dolist (regexp file-cache-filter-regexps) - (and (string-match regexp file) - (setq filtered t))) - filtered) - (file-cache-add-file file)))) - (find-lisp-find-files dir (if regexp regexp "^")))) + (lambda (file) + (or (file-directory-p file) + (let (filtered) + (dolist (regexp file-cache-filter-regexps) + (and (string-match regexp file) + (setq filtered t))) + filtered) + (file-cache-add-file file))) + (find-lisp-find-files dir (or regexp "^")))) (defun file-cache-add-from-file-cache-buffer (&optional regexp) "Add any entries found in the file cache buffer. From a71e2379a331e430f774fc16645f460f1de2b4a0 Mon Sep 17 00:00:00 2001 From: Gnus developers Date: Fri, 2 Nov 2012 23:37:02 +0000 Subject: [PATCH 108/165] Merge changes made in Gnus master 2012-10-05 Katsumi Yamaoka * gnus.texi (Mail Source Specifiers): Document :leave keyword used for pop mail source. 2012-10-25 Tassilo Horn * gnus-dired.el (gnus-dired-attach): Attach to last used message buffer by default. Patch provided by Stephen Eglen. 2012-10-05 Katsumi Yamaoka New UIDL implementation. * mail-source.el (mail-sources, mail-source-keyword-map): Add :leave as a pop3 keyword. (mail-source-fetch-pop): Bind pop3-leave-mail-on-server. * pop3.el (pop3-leave-mail-on-server): Allow number. (pop3-uidl-file, pop3-uidl-file-backup): New user options. (pop3-movemail): Add UIDL support. (pop3-send-streaming-command): Take a list of mail numbers instead of the number of mails. (pop3-write-to-file): Add X-UIDL header. (pop3-uidl-stat, pop3-uidl-dele, pop3-uidl-load, pop3-uidl-save) (pop3-uidl-add-xheader): New functions. * message.el (message-ignored-resent-headers): Add X-Content-Length and X-UIDL headers. --- doc/misc/ChangeLog | 5 + doc/misc/gnus.texi | 41 ++++- lisp/gnus/ChangeLog | 25 ++++ lisp/gnus/gnus-dired.el | 4 +- lisp/gnus/mail-source.el | 21 ++- lisp/gnus/message.el | 4 +- lisp/gnus/pop3.el | 312 +++++++++++++++++++++++++++++++++++---- 7 files changed, 367 insertions(+), 45 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index d719a02e32e..768a846bd1a 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,8 @@ +2012-11-02 Katsumi Yamaoka + + * gnus.texi (Mail Source Specifiers): + Document :leave keyword used for pop mail source. + 2012-11-01 Glenn Morris * cl.texi: General copyedits for style, line-breaks, etc. diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index a9cd0d3567c..47ff355d946 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -14759,20 +14759,37 @@ This can be either the symbol @code{password} or the symbol @code{apop} and says what authentication scheme to use. The default is @code{password}. +@item :leave +Non-@code{nil} if the mail is to be left on the @acronym{POP} server +after fetching. Mails once fetched will never be fetched again by the +@acronym{UIDL} control. Only the built-in @code{pop3-movemail} program +(the default) supports this keyword. + +If this is neither @code{nil} nor a number, all mails will be left on +the server. If this is a number, leave mails on the server for this +many days since you first checked new mails. If this is @code{nil} +(the default), mails will be deleted on the server right after fetching. + +@vindex pop3-uidl-file +The @code{pop3-uidl-file} variable specifies the file to which the +@acronym{UIDL} data are locally stored. The default value is +@file{~/.pop3-uidl}. + +Note that @acronym{POP} servers maintain no state information between +sessions, so what the client believes is there and what is actually +there may not match up. If they do not, then you may get duplicate +mails or the whole thing can fall apart and leave you with a corrupt +mailbox. + @end table -@vindex pop3-movemail +@findex pop3-movemail @vindex pop3-leave-mail-on-server If the @code{:program} and @code{:function} keywords aren't specified, -@code{pop3-movemail} will be used. If @code{pop3-leave-mail-on-server} -is non-@code{nil} the mail is to be left on the @acronym{POP} server -after fetching when using @code{pop3-movemail}. Note that POP servers -maintain no state information between sessions, so what the client -believes is there and what is actually there may not match up. If they -do not, then you may get duplicate mails or the whole thing can fall -apart and leave you with a corrupt mailbox. +@code{pop3-movemail} will be used. Here are some examples for getting mail from a @acronym{POP} server. + Fetch from the default @acronym{POP} server, using the default user name, and default fetcher: @@ -14787,6 +14804,14 @@ Fetch from a named server with a named user and password: :user "user-name" :password "secret") @end lisp +Leave mails on the server for 14 days: + +@lisp +(pop :server "my.pop.server" + :user "user-name" :password "secret" + :leave 14) +@end lisp + Use @samp{movemail} to move the mail: @lisp diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 8cb53de85fa..a2bb0a88baa 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,28 @@ +2012-11-02 Tassilo Horn + + * gnus-dired.el (gnus-dired-attach): Attach to last used message buffer + by default. Patch provided by Stephen Eglen. + +2012-11-02 Katsumi Yamaoka + + New UIDL implementation. + + * mail-source.el (mail-sources, mail-source-keyword-map): + Add :leave as a pop3 keyword. + (mail-source-fetch-pop): Bind pop3-leave-mail-on-server. + + * pop3.el (pop3-leave-mail-on-server): Allow number. + (pop3-uidl-file, pop3-uidl-file-backup): New user options. + (pop3-movemail): Add UIDL support. + (pop3-send-streaming-command): Take a list of mail numbers instead of + the number of mails. + (pop3-write-to-file): Add X-UIDL header. + (pop3-uidl-stat, pop3-uidl-dele, pop3-uidl-load, pop3-uidl-save) + (pop3-uidl-add-xheader): New functions. + + * message.el (message-ignored-resent-headers): + Add X-Content-Length and X-UIDL headers. + 2012-10-23 Stefan Monnier * nndiary.el (nndiary-request-create-group-functions) diff --git a/lisp/gnus/gnus-dired.el b/lisp/gnus/gnus-dired.el index d341cea34bb..e15a6c732b5 100644 --- a/lisp/gnus/gnus-dired.el +++ b/lisp/gnus/gnus-dired.el @@ -155,8 +155,8 @@ filenames." (setq destination (if (= (length bufs) 1) (get-buffer (car bufs)) - (gnus-completing-read "Attach to which mail composition buffer" - bufs t))) + (gnus-completing-read "Attach to buffer" + bufs t nil nil (car bufs)))) ;; setup a new mail composition buffer (let ((mail-user-agent gnus-dired-mail-mode) ;; A workaround to prevent Gnus from displaying the Gnus diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el index ad66fecc427..fc66414a9f0 100644 --- a/lisp/gnus/mail-source.el +++ b/lisp/gnus/mail-source.el @@ -63,7 +63,7 @@ This variable is a list of mail source specifiers. See Info node `(gnus)Mail Source Specifiers'." :group 'mail-source - :version "23.1" ;; No Gnus + :version "24.4" :link '(custom-manual "(gnus)Mail Source Specifiers") :type `(choice (const :tag "None" nil) @@ -159,7 +159,18 @@ See Info node `(gnus)Mail Source Specifiers'." :value nil (const :tag "Clear" nil) (const starttls) - (const :tag "SSL/TLS" ssl))))) + (const :tag "SSL/TLS" ssl))) + (group :inline t + (const :format "" :value :leave) + (choice :format "\ +%{Leave mail on server%}:\n\t\t%[Value Menu%] %v" + :value nil + (const :tag "\ +Don't leave mails" nil) + (const :tag "\ +Leave all mails" t) + (number :tag "\ +Leave mails for this many days" :value 14))))) (cons :tag "Maildir (qmail, postfix...)" (const :format "" maildir) (checklist :tag "Options" :greedy t @@ -340,7 +351,8 @@ Common keywords should be listed here.") (:function) (:password) (:authentication password) - (:stream nil)) + (:stream nil) + (:leave)) (maildir (:path (or (getenv "MAILDIR") "~/Maildir/")) (:subdirs ("cur" "new")) @@ -825,7 +837,8 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile) (pop3-port port) (pop3-authentication-scheme (if (eq authentication 'apop) 'apop 'pass)) - (pop3-stream-type stream)) + (pop3-stream-type stream) + (pop3-leave-mail-on-server leave)) (if (or debug-on-quit debug-on-error) (save-excursion (pop3-movemail mail-source-crash-box)) (condition-case err diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 5360f008432..8905acb9d1f 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -592,8 +592,10 @@ Done before generating the new subject of a forward." ;; comes back to you (e.g. a mailing-list to which you subscribe, in which ;; case you may be removed from the list on the grounds that mail to you ;; bounced with a "mailing loop" error). - "^Return-receipt\\|^X-Gnus\\|^Gnus-Warning:\\|^>?From \\|^Delivered-To:" + "^Return-receipt\\|^X-Gnus\\|^Gnus-Warning:\\|^>?From \\|^Delivered-To:\ +\\|^X-Content-Length:\\|^X-UIDL:" "*All headers that match this regexp will be deleted when resending a message." + :version "24.4" :group 'message-interface :link '(custom-manual "(message)Resending") :type '(repeat :value-to-internal (lambda (widget value) diff --git a/lisp/gnus/pop3.el b/lisp/gnus/pop3.el index 25330989e00..f95bf26ad1d 100644 --- a/lisp/gnus/pop3.el +++ b/lisp/gnus/pop3.el @@ -98,20 +98,53 @@ set this to 1." :group 'pop3) (defcustom pop3-leave-mail-on-server nil - "*Non-nil if the mail is to be left on the POP server after fetching. + "Non-nil if the mail is to be left on the POP server after fetching. +Mails once fetched will never be fetched again by the UIDL control. -If `pop3-leave-mail-on-server' is non-nil the mail is to be left -on the POP server after fetching. Note that POP servers maintain -no state information between sessions, so what the client -believes is there and what is actually there may not match up. -If they do not, then you may get duplicate mails or the whole -thing can fall apart and leave you with a corrupt mailbox." - ;; We can't use the UILD support from XEmacs mail-lib or cvs.m17n.org: - ;; http://thread.gmane.org/v9lld8fml4.fsf@marauder.physik.uni-ulm.de - ;; http://thread.gmane.org/b9yy8hzy9ej.fsf@jpl.org - ;; Any volunteer to re-implement this? - :version "22.1" ;; Oort Gnus - :type 'boolean +If this is neither nil nor a number, all mails will be left on the +server. If this is a number, leave mails on the server for this many +days since you first checked new mails. If this is nil, mails will be +deleted on the server right after fetching. + +Gnus users should use the `:leave' keyword in a mail source to direct +the behaviour per server, rather than directly modifying this value. + +Note that POP servers maintain no state information between sessions, +so what the client believes is there and what is actually there may +not match up. If they do not, then you may get duplicate mails or +the whole thing can fall apart and leave you with a corrupt mailbox." + :version "24.4" + :type '(choice (const :tag "Don't leave mails" nil) + (const :tag "Leave all mails" t) + (number :tag "Leave mails for this many days" :value 14)) + :group 'pop3) + +(defcustom pop3-uidl-file "~/.pop3-uidl" + "File used to save UIDL." + :version "24.4" + :type 'file + :group 'pop3) + +(defcustom pop3-uidl-file-backup '(0 9) + "How to backup the UIDL file `pop3-uidl-file' when updating. +If it is a list of numbers, the first one binds `kept-old-versions' and +the other binds `kept-new-versions' to keep number of oldest and newest +versions. Otherwise, the value binds `version-control' (which see). + +Note: Backup will take place whenever you check new mails on a server. +So, you may lose the backup files having been saved before a trouble +if you set it so as to make too few backups whereas you have access to +many servers." + :version "24.4" + :type '(choice (group :tag "Keep versions" :format "\n%v" :indent 3 + (number :tag "oldest") + (number :tag "newest")) + (sexp :format "%v" + :match (lambda (widget value) + (condition-case nil + (not (and (numberp (car value)) + (numberp (car (cdr value))))) + (error t))))) :group 'pop3) (defvar pop3-timestamp nil @@ -144,34 +177,66 @@ Shorter values mean quicker response, but are more CPU intensive.") (truncate pop3-read-timeout)) 1000)))))) +(defvar pop3-uidl) +;; List of UIDLs of existing messages at pesent in the server: +;; ("UIDL1" "UIDL2" "UIDL3"...) + +(defvar pop3-uidl-saved) +;; Locally saved UIDL data; an alist of the server, the user, and the UIDL +;; and timestamp pairs: +;; (("SERVER_A" ("USER_A1" "UIDL1" TIMESTAMP1 "UIDL2" TIMESTAMP2...) +;; ("USER_A2" "UIDL1" TIMESTAMP1 "UIDL2" TIMESTAMP2...) +;; ...) +;; ("SERVER_B" ("USER_B1" "UIDL1" TIMESTAMP1 "UIDL2" TIMESTAMP2...) +;; ("USER_B2" "UIDL1" TIMESTAMP1 "UIDL2" TIMESTAMP2...) +;; ...)) +;; Where TIMESTAMP is the most significant two digits of an Emacs time, +;; i.e. the return value of `current-time'. + ;;;###autoload (defun pop3-movemail (file) "Transfer contents of a maildrop to the specified FILE. Use streaming commands." - (let* ((process (pop3-open-server pop3-mailhost pop3-port)) - message-count message-total-size) + (let ((process (pop3-open-server pop3-mailhost pop3-port)) + messages total-size + pop3-uidl + pop3-uidl-saved) (pop3-logon process) - (with-current-buffer (process-buffer process) + (if pop3-leave-mail-on-server + (setq messages (pop3-uidl-stat process) + total-size (cadr messages) + messages (car messages)) (let ((size (pop3-stat process))) - (setq message-count (car size) - message-total-size (cadr size))) - (when (> message-count 0) - (pop3-send-streaming-command - process "RETR" message-count message-total-size) - (pop3-write-to-file file) + (dotimes (i (car size)) (push (1+ i) messages)) + (setq messages (nreverse messages) + total-size (cadr size)))) + (when messages + (with-current-buffer (process-buffer process) + (pop3-send-streaming-command process "RETR" messages total-size) + (pop3-write-to-file file messages) (unless pop3-leave-mail-on-server - (pop3-send-streaming-command - process "DELE" message-count nil)))) - (pop3-quit process) + (pop3-send-streaming-command process "DELE" messages nil)))) + (if pop3-leave-mail-on-server + (when (prog1 (pop3-uidl-dele process) (pop3-quit process)) + (pop3-uidl-save)) + (pop3-quit process) + ;; Remove UIDL data for the account that got not to leave mails. + (setq pop3-uidl-saved (pop3-uidl-load)) + (let ((elt (assoc pop3-maildrop + (cdr (assoc pop3-mailhost pop3-uidl-saved))))) + (when elt + (setcdr elt nil) + (pop3-uidl-save)))) t)) -(defun pop3-send-streaming-command (process command count total-size) +(defun pop3-send-streaming-command (process command messages total-size) (erase-buffer) - (let ((i 1) + (let ((count (length messages)) + (i 1) (start-point (point-min)) (waited-for 0)) - (while (>= count i) - (process-send-string process (format "%s %d\r\n" command i)) + (while messages + (process-send-string process (format "%s %d\r\n" command (pop messages))) ;; Only do 100 messages at a time to avoid pipe stalls. (when (zerop (% i pop3-stream-length)) (setq start-point @@ -207,7 +272,7 @@ Use streaming commands." (pop3-accept-process-output process)) start-point) -(defun pop3-write-to-file (file) +(defun pop3-write-to-file (file messages) (let ((pop-buffer (current-buffer)) (start (point-min)) beg end @@ -230,6 +295,8 @@ Use streaming commands." (pop3-clean-region hstart (point)) (goto-char (point-max)) (pop3-munge-message-separator hstart (point)) + (when pop3-leave-mail-on-server + (pop3-uidl-add-xheader hstart (pop messages))) (goto-char (point-max)))))) (let ((coding-system-for-write 'binary)) (goto-char (point-min)) @@ -275,6 +342,184 @@ Use streaming commands." (pop3-quit process) message-count)) +(defun pop3-uidl-stat (process) + "Return a list of unread message numbers and total size." + (pop3-send-command process "UIDL") + (let (err messages size) + (if (condition-case code + (progn + (pop3-read-response process) + t) + (error (setq err (error-message-string code)) + nil)) + (let ((start pop3-read-point) + saved list) + (with-current-buffer (process-buffer process) + (while (not (re-search-forward "^\\.\r\n" nil t)) + (unless (memq (process-status process) '(open run)) + (error "pop3 server closed the connection")) + (pop3-accept-process-output process) + (goto-char start)) + (setq pop3-read-point (point-marker) + pop3-uidl nil) + (while (progn (forward-line -1) (>= (point) start)) + (when (looking-at "[0-9]+ \\([^\n\r ]+\\)") + (push (match-string 1) pop3-uidl))) + (when pop3-uidl + (setq pop3-uidl-saved (pop3-uidl-load) + saved (cdr (assoc pop3-maildrop + (cdr (assoc pop3-mailhost + pop3-uidl-saved))))) + (let ((i (length pop3-uidl))) + (while (> i 0) + (unless (member (nth (1- i) pop3-uidl) saved) + (push i messages)) + (decf i))) + (when messages + (setq list (pop3-list process) + size 0) + (dolist (msg messages) + (setq size (+ size (cdr (assq msg list))))) + (list messages size))))) + (message "%s doesn't support UIDL (%s), so we try a regressive way..." + pop3-mailhost err) + (sit-for 1) + (setq size (pop3-stat process)) + (dotimes (i (car size)) (push (1+ i) messages)) + (setcar size (nreverse messages)) + size))) + +(defun pop3-uidl-dele (process) + "Delete messages according to `pop3-leave-mail-on-server'. +Return non-nil if it is necessary to update the local UIDL file." + (let* ((ctime (current-time)) + (srvr (assoc pop3-mailhost pop3-uidl-saved)) + (saved (assoc pop3-maildrop (cdr srvr))) + i uidl mod new tstamp dele) + (setcdr (cdr ctime) nil) + ;; Add new messages to the data to be saved. + (cond ((and pop3-uidl saved) + (setq i (1- (length pop3-uidl))) + (while (>= i 0) + (unless (member (setq uidl (nth i pop3-uidl)) (cdr saved)) + (push ctime new) + (push uidl new)) + (decf i))) + (pop3-uidl + (setq new (apply 'nconc (mapcar (lambda (elt) (list elt ctime)) + pop3-uidl))))) + (when new (setq mod t)) + ;; List expirable messages and delete them from the data to be saved. + (setq ctime (when (numberp pop3-leave-mail-on-server) + (/ (+ (* (car ctime) 65536.0) (cadr ctime)) 86400)) + i (1- (length saved))) + (while (> i 0) + (if (member (setq uidl (nth (1- i) saved)) pop3-uidl) + (progn + (setq tstamp (nth i saved)) + (if (and ctime + (> (- ctime (/ (+ (* (car tstamp) 65536.0) (cadr tstamp)) + 86400)) + pop3-leave-mail-on-server)) + ;; Mails to delete. + (progn + (setq mod t) + (push uidl dele)) + ;; Mails to keep. + (push tstamp new) + (push uidl new))) + ;; Mails having been deleted in the server. + (setq mod t)) + (decf i 2)) + (cond (saved + (setcdr saved new)) + (srvr + (setcdr (last srvr) (list (cons pop3-maildrop new)))) + (t + (add-to-list 'pop3-uidl-saved + (list pop3-mailhost (cons pop3-maildrop new)) + t))) + ;; Actually delete the messages in the server. + (when dele + (setq uidl nil + i (length pop3-uidl)) + (while (> i 0) + (when (member (nth (1- i) pop3-uidl) dele) + (push i uidl)) + (decf i)) + (when uidl + (pop3-send-streaming-command process "DELE" uidl nil))) + mod)) + +(defun pop3-uidl-load () + "Load saved UIDL." + (when (file-exists-p pop3-uidl-file) + (with-temp-buffer + (condition-case code + (progn + (insert-file-contents pop3-uidl-file) + (goto-char (point-min)) + (read (current-buffer))) + (error + (message "Error while loading %s (%s)" + pop3-uidl-file (error-message-string code)) + (sit-for 1) + nil))))) + +(defun pop3-uidl-save () + "Save UIDL." + (with-temp-buffer + (if pop3-uidl-saved + (progn + (insert "(") + (dolist (srvr pop3-uidl-saved) + (when (cdr srvr) + (insert "(\"" (pop srvr) "\"\n ") + (dolist (elt srvr) + (when (cdr elt) + (insert "(\"" (pop elt) "\"\n ") + (while elt + (insert (format "\"%s\" %s\n " (pop elt) (pop elt)))) + (delete-char -4) + (insert ")\n "))) + (delete-char -3) + (if (eq (char-before) ?\)) + (insert ")\n ") + (goto-char (1+ (point-at-bol))) + (delete-region (point) (point-max))))) + (when (eq (char-before) ? ) + (delete-char -2)) + (insert ")\n")) + (insert "()\n")) + (let ((buffer-file-name pop3-uidl-file) + (delete-old-versions t) + (kept-new-versions kept-new-versions) + (kept-old-versions kept-old-versions) + (version-control version-control)) + (if (consp pop3-uidl-file-backup) + (setq kept-new-versions (cadr pop3-uidl-file-backup) + kept-old-versions (car pop3-uidl-file-backup) + version-control t) + (setq version-control pop3-uidl-file-backup)) + (save-buffer)))) + +(defun pop3-uidl-add-xheader (start msgno) + "Add X-UIDL header." + (let ((case-fold-search t)) + (save-restriction + (narrow-to-region start (progn + (goto-char start) + (search-forward "\n\n" nil 'move) + (1- (point)))) + (goto-char start) + (while (re-search-forward "^x-uidl:" nil t) + (while (progn + (forward-line 1) + (memq (char-after) '(?\t ? )))) + (delete-region (match-beginning 0) (point))) + (goto-char (point-max)) + (insert "X-UIDL: " (nth (1- msgno) pop3-uidl) "\n")))) + (defcustom pop3-stream-type nil "*Transport security type for POP3 connections. This may be either nil (plain connection), `ssl' (use an @@ -663,6 +908,13 @@ and close the connection." ;; Possible responses: ;; +OK [all delete marks removed] +;; UIDL [msg] +;; Arguments: a message-id (optional) +;; Restrictions: transaction state; msg must not be deleted +;; Possible responses: +;; +OK [uidl listing follows] +;; -ERR [no such message] + ;;; UPDATE STATE ;; QUIT From c65b407b40fcfd0aa99ba159c5b67d16133380a2 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 2 Nov 2012 21:19:40 -0400 Subject: [PATCH 109/165] * doc/misc/cl.texi: Further general copyedits. Eg, no longer distinguish between "the optimizing compiler" and "the non-optimizing compiler" like they were different entities. --- doc/misc/ChangeLog | 4 ++ doc/misc/cl.texi | 155 +++++++++++++++++++++++---------------------- 2 files changed, 83 insertions(+), 76 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 36f8d01bbd9..39d7ee8d1fc 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,7 @@ +2012-11-03 Glenn Morris + + * cl.texi: Further general copyedits. + 2012-11-02 Glenn Morris * cl.texi (Naming Conventions, Type Predicates, Macros) diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 9de8ee37165..66d25144dd6 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -836,7 +836,7 @@ constructs. * Conditionals:: @code{cl-case}, @code{cl-typecase}. * Blocks and Exits:: @code{cl-block}, @code{cl-return}, @code{cl-return-from}. * Iteration:: @code{cl-do}, @code{cl-dotimes}, @code{cl-dolist}, @code{cl-do-symbols}. -* Loop Facility:: The Common Lisp @code{cl-loop} macro. +* Loop Facility:: The Common Lisp @code{loop} macro. * Multiple Values:: @code{cl-values}, @code{cl-multiple-value-bind}, etc. @end menu @@ -1524,7 +1524,7 @@ Common Lisp @dfn{blocks} provide a non-local exit mechanism very similar to @code{catch} and @code{throw}, with lexical scoping. This package actually implements @code{cl-block} in terms of @code{catch}; however, the lexical scoping allows the -optimizing byte-compiler to omit the costly @code{catch} step if the +byte-compiler to omit the costly @code{catch} step if the body of the block does not actually @code{cl-return-from} the block. @defmac cl-block name forms@dots{} @@ -1561,7 +1561,7 @@ just as in Common Lisp. Because they are implemented in terms of Emacs Lisp's @code{catch} and @code{throw}, blocks have the same overhead as actual @code{catch} constructs (roughly two function calls). However, -the optimizing byte compiler will optimize away the @code{catch} +the byte compiler will optimize away the @code{catch} if the block does not in fact contain any @code{cl-return} or @code{cl-return-from} calls that jump to it. This means that @code{cl-do} loops and @code{cl-defun} @@ -1726,18 +1726,18 @@ iterating over vectors or lists. @section Loop Facility @noindent -A common complaint with Lisp's traditional looping constructs is -that they are either too simple and limited, such as Common Lisp's -@code{dotimes} or Emacs Lisp's @code{while}, or too unreadable and -obscure, like Common Lisp's @code{do} loop. +A common complaint with Lisp's traditional looping constructs was +that they were either too simple and limited, such as @code{dotimes} +or @code{while}, or too unreadable and obscure, like Common Lisp's +@code{do} loop. -To remedy this, recent versions of Common Lisp have added a new -construct called the ``Loop Facility'' or ``@code{loop} macro'', -with an easy-to-use but very powerful and expressive syntax. +To remedy this, Common Lisp added a construct called the ``Loop +Facility'' or ``@code{loop} macro'', with an easy-to-use but very +powerful and expressive syntax. @menu -* Loop Basics:: @code{cl-loop} macro, basic clause structure. -* Loop Examples:: Working examples of @code{cl-loop} macro. +* Loop Basics:: The @code{cl-loop} macro, basic clause structure. +* Loop Examples:: Working examples of the @code{cl-loop} macro. * For Clauses:: Clauses introduced by @code{for} or @code{as}. * Iteration Clauses:: @code{repeat}, @code{while}, @code{thereis}, etc. * Accumulation Clauses:: @code{collect}, @code{sum}, @code{maximize}, etc. @@ -1770,9 +1770,9 @@ Common Lisp specifies a certain general order of clauses in a loop: @example -(cl-loop @var{name-clause} - @var{var-clauses}@dots{} - @var{action-clauses}@dots{}) +(loop @var{name-clause} + @var{var-clauses}@dots{} + @var{action-clauses}@dots{}) @end example The @var{name-clause} optionally gives a name to the implicit @@ -1798,10 +1798,10 @@ also use regular Lisp @code{cl-return} or @code{cl-return-from} to break out of the loop.) @end defmac -The following sections give some examples of the Loop Macro in +The following sections give some examples of the loop macro in action, and describe the particular loop clauses in great detail. Consult the second edition of Steele for additional discussion -and examples of the @code{loop} macro. +and examples. @node Loop Examples @subsection Loop Examples @@ -2165,8 +2165,9 @@ that was just set by the previous clause; in the second loop, based on the value of @code{x} left over from the previous time through the loop. -Another feature of the @code{cl-loop} macro is @dfn{destructuring}, -similar in concept to the destructuring provided by @code{defmacro}. +Another feature of the @code{cl-loop} macro is @emph{destructuring}, +similar in concept to the destructuring provided by @code{defmacro} +(@pxref{Argument Lists}). The @var{var} part of any @code{for} clause can be given as a list of variables instead of a single variable. The values produced during loop execution must be lists; the values in the lists are @@ -2378,7 +2379,7 @@ by the name @code{it} in the ``then'' part. For example: (setq funny-numbers '(6 13 -1)) @result{} (6 13 -1) (cl-loop for x below 10 - if (oddp x) + if (cl-oddp x) collect x into odds and if (memq x funny-numbers) return (cdr it) end else @@ -2444,15 +2445,14 @@ loop. Many of the examples in this section illustrate the use of @item return @var{form} This clause causes the loop to return immediately. The following -Lisp form is evaluated to give the return value of the @code{loop} +Lisp form is evaluated to give the return value of the loop form. The @code{finally} clauses, if any, are not executed. Of course, @code{return} is generally used inside an @code{if} or @code{unless}, as its use in a top-level loop clause would mean the loop would never get to ``loop'' more than once. The clause @samp{return @var{form}} is equivalent to -@c FIXME cl-do, cl-return? -@samp{do (return @var{form})} (or @code{return-from} if the loop +@samp{do (cl-return @var{form})} (or @code{cl-return-from} if the loop was named). The @code{return} clause is implemented a bit more efficiently, though. @end table @@ -2466,7 +2466,7 @@ clause, respectively. Consult the source code in file This package's @code{cl-loop} macro is compatible with that of Common Lisp, except that a few features are not implemented: @code{loop-finish} -and data-type specifiers. Naturally, the @code{for} clauses which +and data-type specifiers. Naturally, the @code{for} clauses that iterate over keymaps, overlays, intervals, frames, windows, and buffers are Emacs-specific extensions. @@ -2519,17 +2519,17 @@ Destructuring is made available to the user by way of the following macro: @defmac cl-destructuring-bind arglist expr forms@dots{} -This macro expands to code which executes @var{forms}, with +This macro expands to code that executes @var{forms}, with the variables in @var{arglist} bound to the list of values returned by @var{expr}. The @var{arglist} can include all -the features allowed for @code{defmacro} argument lists, +the features allowed for @code{cl-defmacro} argument lists, including destructuring. (The @code{&environment} keyword is not allowed.) The macro expansion will signal an error if @var{expr} returns a list of the wrong number of arguments or with incorrect keyword arguments. @end defmac -This package also includes the Common Lisp @code{cl-define-compiler-macro} +This package also includes the Common Lisp @code{define-compiler-macro} facility, which allows you to define compile-time expansions and optimizations for your functions. @@ -2592,16 +2592,19 @@ mechanism that allows you to give the compiler special hints about the types of data that will be stored in particular variables, and about the ways those variables and functions will be used. This package defines versions of all the Common Lisp declaration forms: -@code{cl-declare}, @code{cl-locally}, @code{cl-proclaim}, @code{cl-declaim}, -and @code{cl-the}. +@code{declare}, @code{locally}, @code{proclaim}, @code{declaim}, +and @code{the}. -Most of the Common Lisp declarations are not currently useful in -Emacs Lisp, as the byte-code system provides little opportunity -to benefit from type information, and @code{special} declarations -are redundant in a fully dynamically-scoped Lisp. A few -declarations are meaningful when the optimizing byte -compiler is being used, however. Under the earlier non-optimizing -compiler, these declarations will effectively be ignored. +Most of the Common Lisp declarations are not currently useful in Emacs +Lisp. For example, the byte-code system provides little +opportunity to benefit from type information. +@ignore +and @code{special} declarations are redundant in a fully +dynamically-scoped Lisp. +@end ignore +A few declarations are meaningful when byte compiler optimizations +are enabled, as they are by the default. Otherwise these +declarations will effectively be ignored. @defun cl-proclaim decl-spec This function records a ``global'' declaration specified by @@ -2612,7 +2615,7 @@ is evaluated and thus should normally be quoted. @defmac cl-declaim decl-specs@dots{} This macro is like @code{cl-proclaim}, except that it takes any number of @var{decl-spec} arguments, and the arguments are unevaluated and -unquoted. The @code{cl-declaim} macro also puts an @code{(cl-eval-when +unquoted. The @code{cl-declaim} macro also puts @code{(cl-eval-when (compile load eval) @dots{})} around the declarations so that they will be registered at compile-time as well as at run-time. (This is vital, since normally the declarations are meant to influence the way the @@ -2635,9 +2638,9 @@ In this package, @code{cl-locally} is no different from @code{progn}. @defmac cl-the type form Type information provided by @code{cl-the} is ignored in this package; -in other words, @code{(cl-the @var{type} @var{form})} is equivalent -to @var{form}. Future versions of the optimizing byte-compiler may -make use of this information. +in other words, @code{(cl-the @var{type} @var{form})} is equivalent to +@var{form}. Future byte-compiler optimizations may make use of this +information. For example, @code{mapcar} can map over both lists and arrays. It is hard for the compiler to expand @code{mapcar} into an in-line loop @@ -2658,35 +2661,31 @@ such as @code{type} and @code{ftype}, are silently ignored. @table @code @item special +@c FIXME ? Since all variables in Emacs Lisp are ``special'' (in the Common Lisp sense), @code{special} declarations are only advisory. They -simply tell the optimizing byte compiler that the specified +simply tell the byte compiler that the specified variables are intentionally being referred to without being bound in the body of the function. The compiler normally emits warnings for such references, since they could be typographical errors for references to local variables. The declaration @code{(cl-declare (special @var{var1} @var{var2}))} is -equivalent to @code{(defvar @var{var1}) (defvar @var{var2})} in the -optimizing compiler, or to nothing at all in older compilers (which -do not warn for non-local references). +equivalent to @code{(defvar @var{var1}) (defvar @var{var2})}. In top-level contexts, it is generally better to write @code{(defvar @var{var})} than @code{(cl-declaim (special @var{var}))}, -since @code{defvar} makes your intentions clearer. But the older -byte compilers can not handle @code{defvar}s appearing inside of -functions, while @code{(cl-declare (special @var{var}))} takes care -to work correctly with all compilers. +since @code{defvar} makes your intentions clearer. @item inline The @code{inline} @var{decl-spec} lists one or more functions whose bodies should be expanded ``in-line'' into calling functions whenever the compiler is able to arrange for it. For example, -the Common Lisp function @code{cadr} is declared @code{inline} -by this package so that the form @code{(cadr @var{x})} will -expand directly into @code{(car (cdr @var{x}))} when it is called -in user functions, for a savings of one (relatively expensive) -function call. +the function @code{cl-acons} is declared @code{inline} +by this package so that the form @code{(cl-acons @var{key} @var{value} +@var{alist})} will +expand directly into @code{(cons (cons @var{key} @var{value}) @var{alist})} +when it is called in user functions, so as to save function calls. The following declarations are all equivalent. Note that the @code{defsubst} form is a convenient way to define a function @@ -2705,7 +2704,7 @@ request that a function you have defined should be inlined, but it is impolite to use it to request inlining of an external function. -In Common Lisp, it is possible to use @code{(cl-declare (inline @dots{}))} +In Common Lisp, it is possible to use @code{(declare (inline @dots{}))} before a particular call to a function to cause just that call to be inlined; the current byte compilers provide no way to implement this, so @code{(cl-declare (inline @dots{}))} is currently ignored by @@ -2718,8 +2717,7 @@ declaration. @item optimize This declaration controls how much optimization is performed by -the compiler. Naturally, it is ignored by the earlier non-optimizing -compilers. +the compiler. The word @code{optimize} is followed by any number of lists like @code{(speed 3)} or @code{(safety 2)}. Common Lisp defines several @@ -2728,8 +2726,7 @@ and @code{safety}. The value of a quality should be an integer from 0 to 3, with 0 meaning ``unimportant'' and 3 meaning ``very important''. The default level for both qualities is 1. -In this package, with the optimizing compiler, the -@code{speed} quality is tied to the @code{byte-optimize} +In this package, the @code{speed} quality is tied to the @code{byte-optimize} flag, which is set to @code{nil} for @code{(speed 0)} and to @code{t} for higher settings; and the @code{safety} quality is tied to the @code{byte-compile-delete-errors} flag, which is @@ -2748,22 +2745,22 @@ just because of an error in a fully-optimized Lisp program. The @code{optimize} declaration is normally used in a top-level @code{cl-proclaim} or @code{cl-declaim} in a file; Common Lisp allows -it to be used with @code{cl-declare} to set the level of optimization +it to be used with @code{declare} to set the level of optimization locally for a given form, but this will not work correctly with the -current version of the optimizing compiler. (The @code{cl-declare} +current byte-compiler. (The @code{cl-declare} will set the new optimization level, but that level will not automatically be unset after the enclosing form is done.) @item warn This declaration controls what sorts of warnings are generated -by the byte compiler. Again, only the optimizing compiler -generates warnings. The word @code{warn} is followed by any +by the byte compiler. The word @code{warn} is followed by any number of ``warning qualities'', similar in form to optimization qualities. The currently supported warning types are @code{redefine}, @code{callargs}, @code{unresolved}, and @code{free-vars}; in the current system, a value of 0 will disable these warnings and any higher value will enable them. -See the documentation for the optimizing byte compiler for details. +See the documentation of the variable @code{byte-compile-warnings} +for more details. @end table @node Symbols @@ -2878,6 +2875,8 @@ their names will not conflict with ``real'' variables in the user's code. @end defun +@c FIXME texinfo renders this as as cl-gensym-counter in info. +@c It looks fine in the index, and in the pdf version. @defvar cl--gensym-counter This variable holds the counter used to generate @code{cl-gensym} names. It is incremented after each use by @code{cl-gensym}. In Common Lisp @@ -2908,13 +2907,13 @@ provided. @noindent This section defines a few simple Common Lisp operations on numbers -which were left out of Emacs Lisp. +that were left out of Emacs Lisp. @menu * Predicates on Numbers:: @code{cl-plusp}, @code{cl-oddp}, etc. -* Numerical Functions:: @code{abs}, @code{cl-floor}, etc. +* Numerical Functions:: @code{cl-floor}, @code{cl-ceiling}, etc. * Random Numbers:: @code{cl-random}, @code{cl-make-random-state}. -* Implementation Parameters:: @code{cl-most-positive-float}. +* Implementation Parameters:: @code{cl-most-positive-float}, etc. @end menu @node Predicates on Numbers @@ -3041,6 +3040,7 @@ of @code{cl-truncate}. This package also provides an implementation of the Common Lisp random number generator. It uses its own additive-congruential algorithm, which is much more likely to give statistically clean +@c FIXME? Still true? random numbers than the simple generators supplied by many operating systems. @@ -3048,13 +3048,15 @@ operating systems. This function returns a random nonnegative number less than @var{number}, and of the same type (either integer or floating-point). The @var{state} argument should be a @code{random-state} object -which holds the state of the random number generator. The +that holds the state of the random number generator. The function modifies this state object as a side effect. If @var{state} is omitted, it defaults to the variable @code{cl--random-state}, which contains a pre-initialized @code{random-state} object. @end defun +@c FIXME texinfo renders this as cl-random-state in info. +@c It looks fine in the index, and in the pdf version. @defvar cl--random-state This variable contains the system ``default'' @code{random-state} object, used for calls to @code{cl-random} that do not specify an @@ -3099,10 +3101,10 @@ This predicate returns @code{t} if @var{object} is a @section Implementation Parameters @noindent -This package defines several useful constants having to with numbers. +This package defines several useful constants having to do with +floating-point numbers. -The following parameters have to do with floating-point numbers. -This package determines their values by exercising the computer's +It determines their values by exercising the computer's floating-point arithmetic in various ways. Because this operation might be slow, the code for initializing them is kept in a separate function that must be called before the parameters can be used. @@ -3110,12 +3112,13 @@ function that must be called before the parameters can be used. @defun cl-float-limits This function makes sure that the Common Lisp floating-point parameters like @code{cl-most-positive-float} have been initialized. Until it is -called, these parameters will be @code{nil}. If this version of Emacs -does not support floats, the parameters will remain @code{nil}. If the -parameters have already been initialized, the function returns +called, these parameters will be @code{nil}. +@c If this version of Emacs does not support floats, the parameters will +@c remain @code{nil}. +If the parameters have already been initialized, the function returns immediately. -The algorithm makes assumptions that will be valid for most modern +The algorithm makes assumptions that will be valid for almost all machines, but will fail if the machine's arithmetic is extremely unusual, e.g., decimal. @end defun @@ -3135,7 +3138,7 @@ is approximately @code{1.79e+308}. @end defvar @defvar cl-most-negative-float -This constant equals the most-negative value a Lisp float can hold. +This constant equals the most negative value a Lisp float can hold. (It is assumed to be equal to @code{(- cl-most-positive-float)}.) @end defvar @@ -4482,7 +4485,7 @@ Lisp macros emit code which can be improved by optimization. In particular, @code{cl-block}s (whether explicit or implicit in constructs like @code{cl-defun} and @code{cl-loop}) carry a fair run-time penalty; the -optimizing compiler removes @code{cl-block}s which are not actually +byte-compiler removes @code{cl-block}s which are not actually referenced by @code{cl-return} or @code{cl-return-from} inside the block. @node Common Lisp Compatibility From f7e65065fc261e4ec4bcf93b2c329d0c078750a8 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 2 Nov 2012 21:26:25 -0400 Subject: [PATCH 110/165] Fix attribution in ChangeLog --- lisp/gnus/ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index a2bb0a88baa..78204897cf1 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,7 +1,7 @@ -2012-11-02 Tassilo Horn +2012-11-02 Stephen Eglen * gnus-dired.el (gnus-dired-attach): Attach to last used message buffer - by default. Patch provided by Stephen Eglen. + by default. 2012-11-02 Katsumi Yamaoka From b6a9e8b1a2ed4dbf77aa51d3817c9f47c1cb16b4 Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Sat, 3 Nov 2012 09:11:34 +0400 Subject: [PATCH 111/165] * window.c (decode_next_window_args): Update window arg after calling decode_live_window and so fix crash reported at http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00035.html by Juanma Barranquero . (Fwindow_body_width, Fwindow_body_height): Simplify a bit. * font.c (Ffont_at): Likewise. --- src/ChangeLog | 9 +++++++++ src/font.c | 5 +---- src/window.c | 7 +++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 26d4b7f5349..512982858d8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2012-11-03 Dmitry Antipov + + * window.c (decode_next_window_args): Update window arg after + calling decode_live_window and so fix crash reported at + http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00035.html + by Juanma Barranquero . + (Fwindow_body_width, Fwindow_body_height): Simplify a bit. + * font.c (Ffont_at): Likewise. + 2012-11-01 Jan Djärv * widget.c (resize_cb): New function. diff --git a/src/font.c b/src/font.c index 87932b0e440..e960f9b3d13 100644 --- a/src/font.c +++ b/src/font.c @@ -4766,7 +4766,6 @@ character at index specified by POSITION. */) (Lisp_Object position, Lisp_Object window, Lisp_Object string) { struct window *w = decode_live_window (window); - ptrdiff_t pos; if (NILP (string)) { @@ -4775,7 +4774,6 @@ character at index specified by POSITION. */) CHECK_NUMBER_COERCE_MARKER (position); if (! (BEGV <= XINT (position) && XINT (position) < ZV)) args_out_of_range_3 (position, make_number (BEGV), make_number (ZV)); - pos = XINT (position); } else { @@ -4783,10 +4781,9 @@ character at index specified by POSITION. */) CHECK_STRING (string); if (! (0 <= XINT (position) && XINT (position) < SCHARS (string))) args_out_of_range (string, position); - pos = XINT (position); } - return font_at (-1, pos, NULL, w, string); + return font_at (-1, XINT (position), NULL, w, string); } #if 0 diff --git a/src/window.c b/src/window.c index 8dbecf9c81e..766765cfa09 100644 --- a/src/window.c +++ b/src/window.c @@ -774,8 +774,7 @@ area is only partially visible, that counts as a whole line; to exclude partially-visible lines, use `window-text-height'. */) (Lisp_Object window) { - struct window *w = decode_live_window (window); - return make_number (window_body_lines (w)); + return make_number (window_body_lines (decode_live_window (window))); } DEFUN ("window-body-width", Fwindow_body_width, Swindow_body_width, 0, 1, 0, @@ -787,8 +786,7 @@ marginal areas, or scroll bars. On a graphical display, the width is expressed as an integer multiple of the default character width. */) (Lisp_Object window) { - struct window *w = decode_live_window (window); - return make_number (window_body_cols (w)); + return make_number (window_body_cols (decode_live_window (window))); } DEFUN ("window-hscroll", Fwindow_hscroll, Swindow_hscroll, 0, 1, 0, @@ -2254,6 +2252,7 @@ decode_next_window_args (Lisp_Object *window, Lisp_Object *minibuf, Lisp_Object { struct window *w = decode_live_window (*window); + XSETWINDOW (*window, w); /* MINIBUF nil may or may not include minibuffers. Decide if it does. */ if (NILP (*minibuf)) From 3737fee7e34719deff2e7e78890f64ad91be38dd Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Sat, 3 Nov 2012 09:59:17 +0400 Subject: [PATCH 112/165] * frame.h (struct frame): Drop can_have_scroll_bars member which is meaningless for a long time. Adjust comments. (FRAME_CAN_HAVE_SCROLL_BARS): Remove. * frame.c, nsfns.m, term.c, w32fns.c, xfns.c: Adjust users. --- src/ChangeLog | 7 +++++++ src/frame.c | 2 -- src/frame.h | 12 +----------- src/nsfns.m | 1 - src/term.c | 1 - src/w32fns.c | 4 ---- src/xfns.c | 4 ---- 7 files changed, 8 insertions(+), 23 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 512982858d8..f5f5c9e897a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2012-11-03 Dmitry Antipov + + * frame.h (struct frame): Drop can_have_scroll_bars member + which is meaningless for a long time. Adjust comments. + (FRAME_CAN_HAVE_SCROLL_BARS): Remove. + * frame.c, nsfns.m, term.c, w32fns.c, xfns.c: Adjust users. + 2012-11-03 Dmitry Antipov * window.c (decode_next_window_args): Update window arg after diff --git a/src/frame.c b/src/frame.c index 79893abf826..1d375380d56 100644 --- a/src/frame.c +++ b/src/frame.c @@ -502,7 +502,6 @@ make_initial_frame (void) FRAME_FOREGROUND_PIXEL (f) = FACE_TTY_DEFAULT_FG_COLOR; FRAME_BACKGROUND_PIXEL (f) = FACE_TTY_DEFAULT_BG_COLOR; - FRAME_CAN_HAVE_SCROLL_BARS (f) = 0; FRAME_VERTICAL_SCROLL_BAR_TYPE (f) = vertical_scroll_bar_none; /* The default value of menu-bar-mode is t. */ @@ -551,7 +550,6 @@ make_terminal_frame (struct terminal *terminal) FRAME_BACKGROUND_PIXEL (f) = FACE_TTY_DEFAULT_BG_COLOR; #endif /* not MSDOS */ - FRAME_CAN_HAVE_SCROLL_BARS (f) = 0; FRAME_VERTICAL_SCROLL_BAR_TYPE (f) = vertical_scroll_bar_none; FRAME_MENU_BAR_LINES(f) = NILP (Vmenu_bar_mode) ? 0 : 1; diff --git a/src/frame.h b/src/frame.h index f8c3d99fedd..eea618df797 100644 --- a/src/frame.h +++ b/src/frame.h @@ -409,10 +409,6 @@ struct frame show no modeline for that window. */ unsigned wants_modeline : 1; - /* Non-zero if the hardware device this frame is displaying on can - support scroll bars. */ - char can_have_scroll_bars; - /* Non-0 means raise this frame to the top of the heap when selected. */ unsigned auto_raise : 1; @@ -438,8 +434,7 @@ struct frame /* Nonzero means that the pointer is invisible. */ unsigned pointer_invisible :1; - /* If can_have_scroll_bars is non-zero, this is non-zero if we should - actually display them on this frame. */ + /* Nonzero if we should actually display the scroll bars on this frame. */ enum vertical_scroll_bar_type vertical_scroll_bar_type; /* What kind of text cursor should we draw in the future? @@ -767,11 +762,6 @@ typedef struct frame *FRAME_PTR; #define FRAME_SCROLL_BOTTOM_VPOS(f) (f)->scroll_bottom_vpos #define FRAME_FOCUS_FRAME(f) f->focus_frame -/* Nonzero if frame F supports scroll bars. - If this is zero, then it is impossible to enable scroll bars - on frame F. */ -#define FRAME_CAN_HAVE_SCROLL_BARS(f) ((f)->can_have_scroll_bars) - /* This frame slot says whether scroll bars are currently enabled for frame F, and which side they are on. */ #define FRAME_VERTICAL_SCROLL_BAR_TYPE(f) ((f)->vertical_scroll_bar_type) diff --git a/src/nsfns.m b/src/nsfns.m index 7a22ac547c3..e8bf696e7f5 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -1175,7 +1175,6 @@ This function is an internal primitive--use `make-frame' instead. */) f = make_frame (1); XSETFRAME (frame, f); - FRAME_CAN_HAVE_SCROLL_BARS (f) = 1; f->terminal = dpyinfo->terminal; diff --git a/src/term.c b/src/term.c index 74b02b0af27..ffc559469e6 100644 --- a/src/term.c +++ b/src/term.c @@ -3235,7 +3235,6 @@ use the Bourne shell command `TERM=... export TERM' (C-shell:\n\ FrameCols (tty) = FRAME_COLS (f); tty->specified_window = FRAME_LINES (f); - FRAME_CAN_HAVE_SCROLL_BARS (f) = 0; FRAME_VERTICAL_SCROLL_BAR_TYPE (f) = vertical_scroll_bar_none; terminal->char_ins_del_ok = 1; baud_rate = 19200; diff --git a/src/w32fns.c b/src/w32fns.c index 7459c4a31db..74bb2375ea5 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -4284,9 +4284,6 @@ This function is an internal primitive--use `make-frame' instead. */) XSETFRAME (frame, f); - /* Note that Windows does support scroll bars. */ - FRAME_CAN_HAVE_SCROLL_BARS (f) = 1; - /* By default, make scrollbars the system standard width. */ FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = GetSystemMetrics (SM_CXVSCROLL); @@ -5387,7 +5384,6 @@ x_create_tip_frame (struct w32_display_info *dpyinfo, Finsert (1, &text); set_buffer_internal_1 (old_buffer); - FRAME_CAN_HAVE_SCROLL_BARS (f) = 0; record_unwind_protect (unwind_create_tip_frame, frame); /* By setting the output method, we're essentially saying that diff --git a/src/xfns.c b/src/xfns.c index d497cffe3df..aca227385bf 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -3111,9 +3111,6 @@ This function is an internal primitive--use `make-frame' instead. */) XSETFRAME (frame, f); - /* Note that X Windows does support scroll bars. */ - FRAME_CAN_HAVE_SCROLL_BARS (f) = 1; - f->terminal = dpyinfo->terminal; f->output_method = output_x_window; @@ -4596,7 +4593,6 @@ x_create_tip_frame (struct x_display_info *dpyinfo, Finsert (1, &text); set_buffer_internal_1 (old_buffer); - FRAME_CAN_HAVE_SCROLL_BARS (f) = 0; record_unwind_protect (unwind_create_tip_frame, frame); f->terminal = dpyinfo->terminal; From 67b50ba47bcf46bd8a699fa0c1f2af1cce3f2338 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Nov 2012 11:25:34 +0200 Subject: [PATCH 113/165] Fix bidi initialization in init_from_display_pos. src/xdisp.c (init_from_display_pos): Fix initialization of the bidi iterator when starting in the middle of a display or overlay string. Fixes: debbugs:12745 --- src/ChangeLog | 6 ++++++ src/xdisp.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index e762eb13b87..8b7c1d9113d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-11-03 Eli Zaretskii + + * xdisp.c (init_from_display_pos): Fix initialization of the bidi + iterator when starting in the middle of a display or overlay + string. (Bug#12745) + 2012-11-01 Eli Zaretskii * w32proc.c (getpgrp, setpgid): New functions. (Bug#12776) diff --git a/src/xdisp.c b/src/xdisp.c index b3b08edcd0a..bc1cbd94bd5 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -928,6 +928,7 @@ static enum move_it_result move_it_in_display_line_to (struct it *, ptrdiff_t, int, enum move_operation_enum); void move_it_vertically_backward (struct it *, int); +static void get_visually_first_element (struct it *); static void init_to_row_start (struct it *, struct window *, struct glyph_row *); static int init_to_row_end (struct it *, struct window *, @@ -3113,6 +3114,40 @@ init_from_display_pos (struct it *it, struct window *w, struct display_pos *pos) eassert (STRINGP (it->string)); it->current.string_pos = pos->string_pos; it->method = GET_FROM_STRING; + it->end_charpos = SCHARS (it->string); + /* Set up the bidi iterator for this overlay string. */ + if (it->bidi_p) + { + it->bidi_it.string.lstring = it->string; + it->bidi_it.string.s = NULL; + it->bidi_it.string.schars = SCHARS (it->string); + it->bidi_it.string.bufpos = it->overlay_strings_charpos; + it->bidi_it.string.from_disp_str = it->string_from_display_prop_p; + it->bidi_it.string.unibyte = !it->multibyte_p; + bidi_init_it (IT_STRING_CHARPOS (*it), IT_STRING_BYTEPOS (*it), + FRAME_WINDOW_P (it->f), &it->bidi_it); + + /* Synchronize the state of the bidi iterator with + pos->string_pos. For any string position other than + zero, this will be done automagically when we resume + iteration over the string and get_visually_first_element + is called. But if string_pos is zero, and the string is + to be reordered for display, we need to resync manually, + since it could be that the iteration state recorded in + pos ended at string_pos of 0 moving backwards in string. */ + if (CHARPOS (pos->string_pos) == 0) + { + get_visually_first_element (it); + if (IT_STRING_CHARPOS (*it) != 0) + do { + /* Paranoia. */ + eassert (it->bidi_it.charpos < it->bidi_it.string.schars); + bidi_move_to_visually_next (&it->bidi_it); + } while (it->bidi_it.charpos != 0); + } + eassert (IT_STRING_CHARPOS (*it) == it->bidi_it.charpos + && IT_STRING_BYTEPOS (*it) == it->bidi_it.bytepos); + } } if (CHARPOS (pos->string_pos) >= 0) @@ -3122,6 +3157,9 @@ init_from_display_pos (struct it *it, struct window *w, struct display_pos *pos) IT should already be filled with that string. */ it->current.string_pos = pos->string_pos; eassert (STRINGP (it->string)); + if (it->bidi_p) + bidi_init_it (IT_STRING_CHARPOS (*it), IT_STRING_BYTEPOS (*it), + FRAME_WINDOW_P (it->f), &it->bidi_it); } /* Restore position in display vector translations, control From 43bcfda6d863c6172eeba2d6aa22d22453849423 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Sat, 3 Nov 2012 11:47:03 +0100 Subject: [PATCH 114/165] Doc changes related to displaying buffers and quitting windows. * window.el (switch-to-visible-buffer) (switch-to-buffer-preserve-window-point): Fix doc-strings. * windows.texi (Switching Buffers): Document option switch-to-buffer-preserve-window-point. (Display Action Functions): Document window-height and window-width alist entries. (Display Action Functions): Document display-buffer-below-selected and display-buffer-in-previous-window. (Quitting Windows): Document quit-restore-window. Rewrite section. (Window Configurations): In window-state-get mention that argument window must be valid. (Window Parameters): Document quit-restore window parameter (Bug#12158). --- doc/lispref/ChangeLog | 16 +++ doc/lispref/windows.texi | 227 ++++++++++++++++++++++++++++++--------- etc/NEWS | 13 ++- lisp/ChangeLog | 5 + lisp/window.el | 13 +-- 5 files changed, 215 insertions(+), 59 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index da3cc91a675..fa996191ac4 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,19 @@ +2012-11-03 Martin Rudalics + + * windows.texi (Switching Buffers): Document option + switch-to-buffer-preserve-window-point. + (Display Action Functions): Document window-height and + window-width alist entries. + (Display Action Functions): Document + display-buffer-below-selected and + display-buffer-in-previous-window. + (Quitting Windows): Document quit-restore-window. Rewrite + section. + (Window Configurations): In window-state-get mention that + argument window must be valid. + (Window Parameters): Document quit-restore window parameter + (Bug#12158). + 2012-10-31 Glenn Morris * control.texi (Catch and Throw): Add xref to cl.texi. diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index d0e149eb165..2fbb59cd1dd 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -1550,6 +1550,26 @@ normally tries to display the buffer in some other window, by invoking instead. @end deffn +By default, @code{switch-to-buffer} sets @code{window-point} of the +window used to the buffer's position of @code{point}. This behavior can +be tuned using the following option. + +@defopt switch-to-buffer-preserve-window-point +If this variable is @code{nil}, @code{switch-to-buffer} displays the +buffer specified by @var{buffer-or-name} at the position of that +buffer's @code{point}. If this variable is @code{already-displayed}, it +tries to display the buffer at its previous position in the selected +window, provided the buffer is currently displayed in some other window +on any visible or iconified frame. If this variable is @code{t}, +@code{switch-to-buffer} unconditionally tries to display the buffer at +its previous position in the selected window. + +This variable is ignored if the buffer is already displayed in the +selected window or never appeared in it before, or if +@code{switch-to-buffer} calls @code{pop-to-buffer} to display the +buffer. +@end defopt + The next two functions are similar to @code{switch-to-buffer}, except for the described features. @@ -1775,9 +1795,51 @@ It actually performs the split by calling the function specified in @code{split-window-preferred-function} (@pxref{Choosing Window Options}). -It can fail if no window splitting can be performed for some reason -(e.g. if there is just one frame and it has an @code{unsplittable} -frame parameter; @pxref{Buffer Parameters}). +The size of the new window can be adjusted by supplying +@code{window-height} and @code{window-width} entries in @var{alist}. To +adjust the window's height, use an entry whose @sc{car} is +@code{window-height} and whose @sc{cdr} is one of: + +@itemize @bullet +@item +@code{nil} means to leave the height of the new window alone. + +@item +A number specifies the desired height of the new window. An integer +number specifies the number of lines of the window. A floating point +number gives the fraction of the window's height with respect to the +height of the frame's root window. + +@item +If the @sc{cdr} specifies a function, that function is called with one +argument - the new window. The function is supposed to adjust the +height of the window; its return value is ignored. Suitable functions +are @code{shrink-window-if-larger-than-buffer} and +@code{fit-window-to-buffer}, see @ref{Resizing Windows}. +@end itemize + +To adjust the window's width, use an entry whose @sc{car} is +@code{window-width} and whose @sc{cdr} is one of: + +@itemize @bullet +@item +@code{nil} means to leave the width of the new window alone. + +@item +A number specifies the desired width of the new window. An integer +number specifies the number of columns of the window. A floating point +number gives the fraction of the window's width with respect to the +width of the frame's root window. + +@item +If the @sc{cdr} specifies a function, that function is called with one +argument - the new window. The function is supposed to adjust the width +of the window; its return value is ignored. +@end itemize + +This function can fail if no window splitting can be performed for some +reason (e.g. if there is just one frame and it has an +@code{unsplittable} frame parameter; @pxref{Buffer Parameters}). @end defun @defun display-buffer-use-some-window buffer alist @@ -1786,6 +1848,26 @@ window and displaying the buffer in that window. It can fail if all windows are dedicated to another buffer (@pxref{Dedicated Windows}). @end defun +@defun display-buffer-below-selected buffer alist +This function tries to display @var{buffer} in a window below the +selected window. This means to either split the selected window or +reuse the window below the selected one. +@end defun + +@defun display-buffer-in-previous-window buffer alist +This function tries to display @var{buffer} in a window previously +showing it. If @var{alist} has a non-@code{nil} +@code{inhibit-same-window} entry, the selected window is not eligible +for reuse. If @var{alist} contains a @code{reusable-frames} entry, its +value determines which frames to search for a suitable window as with +@code{display-buffer-reuse-window}. + +If @var{alist} has a @code{previous-window} entry, the window +specified by that entry will override any other window found by the +methods above, even if that window never showed @var{buffer} before. +@end defun + + @node Choosing Window Options @section Additional Options for Displaying Buffers @@ -2086,45 +2168,77 @@ function @code{switch-to-prev-buffer} (@pxref{Window History}). Finally, you might want to either bury (@pxref{The Buffer List}) or kill (@pxref{Killing Buffers}) the window's buffer. - The following function uses information on how the window for -displaying the buffer was obtained in the first place, thus attempting to -automate the above decisions for you. + The following command uses information on how the window for +displaying the buffer was obtained in the first place, thus attempting +to automate the above decisions for you. @deffn Command quit-window &optional kill window This command quits @var{window} and buries its buffer. The argument @var{window} must be a live window and defaults to the selected one. With prefix argument @var{kill} non-@code{nil}, it kills the buffer -instead of burying it. - -Quitting @var{window} means to proceed as follows: If @var{window} was -created specially for displaying its current buffer, delete @var{window} -provided its frame contains at least one other live window. If -@var{window} is the only window on its frame and there are other frames -on the frame's terminal, the value of @var{kill} determines how to -proceed with the window. If @var{kill} is @code{nil}, the fate of the -frame is determined by calling @code{frame-auto-hide-function} (see -below) with that frame as sole argument. If @var{kill} is -non-@code{nil}, the frame is deleted unconditionally. - -If @var{window} was reused for displaying its buffer, this command tries -to display the buffer previously shown in it. It also tries to restore -the window start (@pxref{Window Start and End}) and point (@pxref{Window -Point}) positions of the previously shown buffer. If, in addition, the -current buffer was temporarily resized, this command will also try to -restore the original height of @var{window}. - -The three cases described so far require that the buffer shown in -@var{window} is still the buffer displayed by the last buffer display -function for this window. If another buffer has been shown in the -meantime, or the buffer previously shown no longer exists, this command -calls @code{switch-to-prev-buffer} (@pxref{Window History}) to show some -other buffer instead. +instead of burying it. It calls the function @code{quit-restore-window} +described next to deal with the window and its buffer. @end deffn -The function @code{quit-window} bases its decisions on information -stored in @var{window}'s @code{quit-restore} window parameter -(@pxref{Window Parameters}), and resets that parameter to @code{nil} -after it's done. +@defun quit-restore-window &optional window bury-or-kill +This function tries to restore the state of @var{window} that existed +before its buffer was displayed in it. The optional argument +@var{window} must be a live window and defaults to the selected one. + +If @var{window} was created specially for displaying its buffer, this +function deletes @var{window} provided its frame contains at least one +other live window. If @var{window} is the only window on its frame and +there are other frames on the frame's terminal, the value of the +optional argument @var{bury-or-kill} determines how to proceed with the +window. If @var{bury-or-kill} equals @code{kill}, the frame is deleted +unconditionally. Otherwise, the fate of the frame is determined by +calling @code{frame-auto-hide-function} (see below) with that frame as +sole argument. + +Otherwise, this function tries to redisplay the buffer previously shown +in @var{window}. It also tries to restore the window start +(@pxref{Window Start and End}) and point (@pxref{Window Point}) +positions of the previously shown buffer. If, in addition, +@var{window}'s buffer was temporarily resized, this function will also +try to restore the original height of @var{window}. + +The cases described so far require that the buffer shown in @var{window} +is still the buffer displayed by the last buffer display function for +this window. If another buffer has been shown in the meantime, or the +buffer previously shown no longer exists, this function calls +@code{switch-to-prev-buffer} (@pxref{Window History}) to show some other +buffer instead. + +The optional argument @var{bury-or-kill} specifes how to deal with +@var{window}'s buffer. The following values are handled: + +@table @code +@item nil +This means to not deal with the buffer in any particular way. As a +consequence, if @var{window} is not deleted, invoking +@code{switch-to-prev-buffer} will usually show the buffer again. + +@item append +This means that if @var{window} is not deleted, its buffer is moved to +the end of @var{window}'s list of previous buffers, so it's less likely +that a future invocation of @code{switch-to-prev-buffer} will switch to +it. Also, it moves the buffer to the end of the frame's buffer list. + +@item bury +This means that if @var{window} is not deleted, its buffer is removed +from @var{window}'s list of previous buffers. Also, it moves the buffer +to the end of the frame's buffer list. This value provides the most +reliable remedy to not have @code{switch-to-prev-buffer} switch to this +buffer again without killing the buffer. + +@item kill +This means to kill @var{window}'s buffer. +@end table + +@code{quit-restore-window} bases its decisions on information stored in +@var{window}'s @code{quit-restore} window parameter (@pxref{Window +Parameters}), and resets that parameter to @code{nil} after it's done. +@end defun The following option specifies how to deal with a frame containing just one window that should be either quit, or whose buffer should be buried. @@ -2135,10 +2249,9 @@ frames. This function is called with one argument---a frame. The function specified here is called by @code{bury-buffer} (@pxref{The Buffer List}) when the selected window is dedicated and shows the buffer -that should be buried. It is also called by @code{quit-window} (see -above) when the frame of the window that should be quit has been -specially created for displaying that window's buffer and the buffer -should be buried. +to bury. It is also called by @code{quit-restore-window} (see above) +when the frame of the window to quit has been specially created for +displaying that window's buffer and the buffer is not killed. The default is to call @code{iconify-frame} (@pxref{Visibility of Frames}). Alternatively, you may specify either @code{delete-frame} @@ -2146,9 +2259,9 @@ Frames}). Alternatively, you may specify either @code{delete-frame} @code{ignore} to leave the frame unchanged, or any other function that can take a frame as its sole argument. -Note that the function specified by this option is called if and only if -there is at least one other frame on the terminal of the frame it's -supposed to handle, and that frame contains only one live window. +Note that the function specified by this option is called only if the +specified frame contains just one live window and there is at least one +other frame on the same terminal. @end defopt @@ -3123,8 +3236,8 @@ frame into the root window of that very frame only). @defun window-state-get &optional window writable This function returns the state of @var{window} as a Lisp object. The -argument @var{window} can be any window and defaults to the root window -of the selected frame. +argument @var{window} must be a valid window and defaults to the root +window of the selected frame. If the optional argument @var{writable} is non-@code{nil}, this means to not use markers for sampling positions like @code{window-point} or @@ -3267,10 +3380,28 @@ from. It is installed by @code{window-state-get} (@pxref{Window Configurations}). @item @code{quit-restore} -This parameter specifies what to do with a window when the buffer it -shows is not needed any more. It is installed by the buffer display -functions (@pxref{Choosing Window}), and consulted by the function -@code{quit-window} (@pxref{Quitting Windows}). +This parameter is installed by the buffer display functions +(@pxref{Choosing Window}) and consulted by @code{quit-restore-window} +(@pxref{Quitting Windows}). It contains four elements: + +The first element is one of the symbols @code{window} - meaning that the +window has been specially created by @code{display-buffer}, @code{frame} +- a separate frame has been created, @code{same} - the window has +displayed the same buffer before, or @code{other} - the window showed +another buffer before. + +The second element is either one of the symbols @code{window} or +@code{frame}, or a list whose elements are the buffer shown in the +window before, that buffer's window start and window point positions, +and the window's height at that time. + +The third element is the window selected at the time the parameter was +created. The function @code{quit-restore-window} tries to reselect that +window when it deletes the window passed to it as argument. + +The fourth element is the buffer whose display caused the creation of +this parameter. @code{quit-restore-window} deletes the specified window +only if it still shows that buffer. @end table There are additional parameters @code{window-atom} and @code{window-side}; diff --git a/etc/NEWS b/etc/NEWS index 31a4909f8d9..9ece829217f 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -818,7 +818,7 @@ to work out which code is doing something. recursive invocations. ** Window changes - ++++ *** The functions get-lru-window, get-mru-window and get-largest-window now accept a third argument to avoid choosing the selected window. @@ -831,9 +831,12 @@ reused. *** New function `fit-frame-to-buffer' and new options `fit-frame-to-buffer' and `fit-frame-to-buffer-bottom-margin'. - ++++ +*** New option switch-to-buffer-preserve-window-point to restore a +window's point when switching buffers. ++++ *** New display action functions `display-buffer-below-selected', -`display-buffer-at-bottom' and `display-buffer-in-previous-window'. +and `display-buffer-in-previous-window'. *** New display action alist entry `inhibit-switch-frame', if non-nil, tells display action functions to avoid changing which frame is @@ -841,10 +844,10 @@ selected. *** New display action alist entry `pop-up-frame-parameters', if non-nil, specifies frame parameters to give any newly-created frame. - ++++ *** New display action alist entry `previous-window', if non-nil, specifies window to reuse in `display-buffer-in-previous-window'. - ++++ *** New display action alist entries `window-height' and `window-width' to specify size of new window created by `display-buffer'. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ab73a61d9e6..1b560651abb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-11-03 Martin Rudalics + + * window.el (switch-to-visible-buffer) + (switch-to-buffer-preserve-window-point): Fix doc-strings. + 2012-11-01 Stephen Berman * play/gomoku.el (gomoku-display-statistics): Update mode line diff --git a/lisp/window.el b/lisp/window.el index 10f75d44d69..be6ddf8ab9e 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -3091,10 +3091,11 @@ before was current this also makes BUFFER the current buffer." "If non-nil, allow switching to an already visible buffer. If this variable is non-nil, `switch-to-prev-buffer' and `switch-to-next-buffer' may switch to an already visible buffer -provided the buffer was shown in the argument window before. If -this variable is nil, `switch-to-prev-buffer' and -`switch-to-next-buffer' always try to avoid switching to a buffer -that is already visible in another window on the same frame." +provided the buffer was shown before in the window specified as +argument to those functions. If this variable is nil, +`switch-to-prev-buffer' and `switch-to-next-buffer' always try to +avoid switching to a buffer that is already visible in another +window on the same frame." :type 'boolean :version "24.1" :group 'windows) @@ -5855,8 +5856,8 @@ window on any visible or iconified frame. If this is t, it unconditionally tries to display the buffer at its previous position in the selected window. -This variable is ignored if the the buffer is already displayed -in the selected window or never appeared in it before, or if +This variable is ignored if the buffer is already displayed in +the selected window or never appeared in it before, or if `switch-to-buffer' calls `pop-to-buffer' to display the buffer." :type '(choice (const :tag "Never" nil) From 2395ab64f6152af46b804cecc5743b8139031968 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 3 Nov 2012 19:02:43 +0800 Subject: [PATCH 115/165] Clarify documentation about escape sequences in strings. * objects.texi (General Escape Syntax): Clarify the explanation of escape sequences. (Non-ASCII in Strings): Clarify when a string is unibyte vs multibyte. Hex escapes do not automatically make a string multibyte. --- doc/lispref/ChangeLog | 8 +++ doc/lispref/objects.texi | 140 +++++++++++++++++++++------------------ 2 files changed, 83 insertions(+), 65 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index fa996191ac4..17bd43fc0d9 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,11 @@ +2012-11-03 Chong Yidong + + * objects.texi (General Escape Syntax): Clarify the explanation of + escape sequences. + (Non-ASCII in Strings): Clarify when a string is unibyte vs + multibyte. Hex escapes do not automatically make a string + multibyte. + 2012-11-03 Martin Rudalics * windows.texi (Switching Buffers): Document option diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi index 7d40f0ff934..2507b0540eb 100644 --- a/doc/lispref/objects.texi +++ b/doc/lispref/objects.texi @@ -351,51 +351,48 @@ following text.) control characters, Emacs provides several types of escape syntax that you can use to specify non-@acronym{ASCII} text characters. -@cindex unicode character escape - You can specify characters by their Unicode values. -@code{?\u@var{nnnn}} represents a character that maps to the Unicode -code point @samp{U+@var{nnnn}} (by convention, Unicode code points are -given in hexadecimal). There is a slightly different syntax for -specifying characters with code points higher than -@code{U+@var{ffff}}: @code{\U00@var{nnnnnn}} represents the character -whose code point is @samp{U+@var{nnnnnn}}. The Unicode Standard only -defines code points up to @samp{U+@var{10ffff}}, so if you specify a -code point higher than that, Emacs signals an error. - - This peculiar and inconvenient syntax was adopted for compatibility -with other programming languages. Unlike some other languages, Emacs -Lisp supports this syntax only in character literals and strings. - @cindex @samp{\} in character constant @cindex backslash in character constants -@cindex octal character code - The most general read syntax for a character represents the -character code in either octal or hex. To use octal, write a question -mark followed by a backslash and the octal character code (up to three -octal digits); thus, @samp{?\101} for the character @kbd{A}, -@samp{?\001} for the character @kbd{C-a}, and @code{?\002} for the -character @kbd{C-b}. Although this syntax can represent any -@acronym{ASCII} character, it is preferred only when the precise octal -value is more important than the @acronym{ASCII} representation. +@cindex unicode character escape + Firstly, you can specify characters by their Unicode values. +@code{?\u@var{nnnn}} represents a character with Unicode code point +@samp{U+@var{nnnn}}, where @var{nnnn} is (by convention) a hexadecimal +number with exactly four digits. The backslash indicates that the +subsequent characters form an escape sequence, and the @samp{u} +specifies a Unicode escape sequence. -@example -@group -?\012 @result{} 10 ?\n @result{} 10 ?\C-j @result{} 10 -?\101 @result{} 65 ?A @result{} 65 -@end group -@end example + There is a slightly different syntax for specifying Unicode +characters with code points higher than @code{U+@var{ffff}}: +@code{?\U00@var{nnnnnn}} represents the character with code point +@samp{U+@var{nnnnnn}}, where @var{nnnnnn} is a six-digit hexadecimal +number. The Unicode Standard only defines code points up to +@samp{U+@var{10ffff}}, so if you specify a code point higher than +that, Emacs signals an error. - To use hex, write a question mark followed by a backslash, @samp{x}, -and the hexadecimal character code. You can use any number of hex -digits, so you can represent any character code in this way. -Thus, @samp{?\x41} for the character @kbd{A}, @samp{?\x1} for the -character @kbd{C-a}, and @code{?\xe0} for the Latin-1 character + Secondly, you can specify characters by their hexadecimal character +codes. A hexadecimal escape sequence consists of a backslash, +@samp{x}, and the hexadecimal character code. Thus, @samp{?\x41} is +the character @kbd{A}, @samp{?\x1} is the character @kbd{C-a}, and +@code{?\xe0} is the character @iftex @samp{@`a}. @end iftex @ifnottex @samp{a} with grave accent. @end ifnottex +You can use any number of hex digits, so you can represent any +character code in this way. + +@cindex octal character code + Thirdly, you can specify characters by their character code in +octal. An octal escape sequence consists of a backslash followed by +up to three octal digits; thus, @samp{?\101} for the character +@kbd{A}, @samp{?\001} for the character @kbd{C-a}, and @code{?\002} +for the character @kbd{C-b}. Only characters up to octal code 777 can +be specified this way. + + These escape sequences may also be used in strings. @xref{Non-ASCII +in Strings}. @node Ctl-Char Syntax @subsubsection Control-Character Syntax @@ -1026,40 +1023,53 @@ but the newline is ignored if escaped." @node Non-ASCII in Strings @subsubsection Non-@acronym{ASCII} Characters in Strings - You can include a non-@acronym{ASCII} international character in a -string constant by writing it literally. There are two text -representations for non-@acronym{ASCII} characters in Emacs strings -(and in buffers): unibyte and multibyte (@pxref{Text -Representations}). If the string constant is read from a multibyte -source, such as a multibyte buffer or string, or a file that would be -visited as multibyte, then Emacs reads the non-@acronym{ASCII} -character as a multibyte character and automatically makes the string -a multibyte string. If the string constant is read from a unibyte -source, then Emacs reads the non-@acronym{ASCII} character as unibyte, -and makes the string unibyte. + There are two text representations for non-@acronym{ASCII} +characters in Emacs strings: multibyte and unibyte (@pxref{Text +Representations}). Roughly speaking, unibyte strings store raw bytes, +while multibyte strings store human-readable text. Each character in +a unibyte string is a byte, i.e.@: its value is between 0 and 255. By +contrast, each character in a multibyte string may have a value +between 0 to 4194303 (@pxref{Character Type}). In both cases, +characters above 127 are non-@acronym{ASCII}. - Instead of writing a non-@acronym{ASCII} character literally into a -multibyte string, you can write it as its character code using a hex -escape, @samp{\x@var{nnnnnnn}}, with as many digits as necessary. -(Multibyte non-@acronym{ASCII} character codes are all greater than -256.) You can also specify a character in a multibyte string using -the @samp{\u} or @samp{\U} Unicode escape syntax (@pxref{General -Escape Syntax}). In either case, any character which is not a valid -hex digit terminates the construct. If the next character in the -string could be interpreted as a hex digit, write @w{@samp{\ }} -(backslash and space) to terminate the hex escape---for example, + You can include a non-@acronym{ASCII} character in a string constant +by writing it literally. If the string constant is read from a +multibyte source, such as a multibyte buffer or string, or a file that +would be visited as multibyte, then Emacs reads each +non-@acronym{ASCII} character as a multibyte character and +automatically makes the string a multibyte string. If the string +constant is read from a unibyte source, then Emacs reads the +non-@acronym{ASCII} character as unibyte, and makes the string +unibyte. + + Instead of writing a character literally into a multibyte string, +you can write it as its character code using an escape sequence. +@xref{General Escape Syntax}, for details about escape sequences. + + If you use any Unicode-style escape sequence @samp{\uNNNN} or +@samp{\U00NNNNNN} in a string constant (even for an @acronym{ASCII} +character), Emacs automatically assumes that it is multibyte. + + You can also use hexadecimal escape sequences (@samp{\x@var{n}}) and +octal escape sequences (@samp{\@var{n}}) in string constants. +@strong{But beware:} If a string constant contains hexadecimal or +octal escape sequences, and these escape sequences all specify unibyte +characters (i.e.@: less than 256), and there are no other literal +non-@acronym{ASCII} characters or Unicode-style escape sequences in +the string, then Emacs automatically assumes that it is a unibyte +string. That is to say, it assumes that all non-@acronym{ASCII} +characters occurring in the string are 8-bit raw bytes. + + In hexadecimal and octal escape sequences, the escaped character +code may contain any number of digits, so the first subsequent +character which is not a valid hexadecimal or octal digit terminates +the escape sequence. If the next character in a string could be +interpreted as a hexadecimal or octal digit, write @w{@samp{\ }} +(backslash and space) to terminate the escape sequence. For example, @w{@samp{\xe0\ }} represents one character, @samp{a} with grave accent. @w{@samp{\ }} in a string constant is just like backslash-newline; it does not contribute any character to the string, -but it does terminate the preceding hex escape. Using any hex escape -in a string (even for an @acronym{ASCII} character) automatically -forces the string to be multibyte. - - You can represent a unibyte non-@acronym{ASCII} character with its -character code, which must be in the range from 128 (0200 octal) to -255 (0377 octal). If you write all such character codes in octal and -the string contains no other characters forcing it to be multibyte, -this produces a unibyte string. +but it does terminate any preceding hex escape. @node Nonprinting Characters @subsubsection Nonprinting Characters in Strings From ad10696b8922e6b876fcd94f732c37136711f920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Sat, 3 Nov 2012 12:33:28 +0100 Subject: [PATCH 116/165] Backport from trunk. * widget.c (resize_cb): New function. (EmacsFrameRealize): Add resize_cb as event handler. (EmacsFrameResize): Check if all is up to date before changing frame size. Fixes: debbugs:12733 --- src/ChangeLog | 7 +++++++ src/widget.c | 28 ++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 8b7c1d9113d..4d42714f91f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2012-11-03 Jan Djärv + + * widget.c (resize_cb): New function. + (EmacsFrameRealize): Add resize_cb as event handler (Bug#12733). + (EmacsFrameResize): Check if all is up to date before changing frame + size. + 2012-11-03 Eli Zaretskii * xdisp.c (init_from_display_pos): Fix initialization of the bidi diff --git a/src/widget.c b/src/widget.c index 1f472c6231c..b4f7335c652 100644 --- a/src/widget.c +++ b/src/widget.c @@ -650,6 +650,16 @@ EmacsFrameInitialize (Widget request, Widget new, ArgList dum1, Cardinal *dum2) set_frame_size (ew); } +static void +resize_cb (Widget widget, + XtPointer closure, + XEvent* event, + Boolean* continue_to_dispatch) +{ + EmacsFrame ew = (EmacsFrame) widget; + EmacsFrameResize (widget); +} + static void EmacsFrameRealize (Widget widget, XtValueMask *mask, XSetWindowAttributes *attrs) @@ -665,6 +675,9 @@ EmacsFrameRealize (Widget widget, XtValueMask *mask, XSetWindowAttributes *attrs *mask |= CWEventMask; XtCreateWindow (widget, InputOutput, (Visual *)CopyFromParent, *mask, attrs); + /* Some ConfigureNotify events does not end up in EmacsFrameResize so + make sure we get them all. Seen with xfcwm4 for example. */ + XtAddRawEventHandler (widget, StructureNotifyMask, False, resize_cb, NULL); update_wm_hints (ew); } @@ -691,15 +704,22 @@ EmacsFrameResize (Widget widget) { EmacsFrame ew = (EmacsFrame)widget; struct frame *f = ew->emacs_frame.frame; + struct x_output *x = f->output_data.x; int columns; int rows; pixel_to_char_size (ew, ew->core.width, ew->core.height, &columns, &rows); - change_frame_size (f, rows, columns, 0, 1, 0); - update_wm_hints (ew); - update_various_frame_slots (ew); + if (columns != FRAME_COLS (f) + || rows != FRAME_LINES (f) + || ew->core.width != FRAME_PIXEL_WIDTH (f) + || ew->core.height + x->menubar_height != FRAME_PIXEL_HEIGHT (f)) + { + change_frame_size (f, rows, columns, 0, 1, 0); + update_wm_hints (ew); + update_various_frame_slots (ew); - cancel_mouse_face (f); + cancel_mouse_face (f); + } } static Boolean From 12fd5ee1ae617b212e4d00e2ed4c196d3656f615 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabi=C3=A1n=20Ezequiel=20Gallina?= Date: Sat, 3 Nov 2012 09:20:02 -0300 Subject: [PATCH 117/165] * progmodes/python.el (inferior-python-mode): Fix hang in jit-lock. Fixes: debbugs:12645 --- lisp/ChangeLog | 5 +++++ lisp/progmodes/python.el | 29 ++++++++++++++++++----------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1b560651abb..4844872c73a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-11-03 Fabián Ezequiel Gallina + + * progmodes/python.el (inferior-python-mode): Fix hang in + jit-lock (Bug#12645). + 2012-11-03 Martin Rudalics * window.el (switch-to-visible-buffer) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index ff805d64024..ee98feaef5e 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -1733,17 +1733,24 @@ variable. (set (make-local-variable 'font-lock-defaults) '(python-font-lock-keywords nil nil nil nil)) (set (make-local-variable 'syntax-propertize-function) - (syntax-propertize-rules - (comint-prompt-regexp - (0 (ignore - (put-text-property - comint-last-input-start end 'syntax-table - python-shell-output-syntax-table) - (font-lock-unfontify-region comint-last-input-start end)))) - ((python-rx string-delimiter) - (0 (ignore - (and (not (eq (get-text-property start 'field) 'output)) - (python-syntax-stringify)))))))) + (eval + ;; XXX: Unfortunately eval is needed here to make use of the + ;; dynamic value of `comint-prompt-regexp'. + `(syntax-propertize-rules + (,comint-prompt-regexp + (0 (ignore + (put-text-property + comint-last-input-start end 'syntax-table + python-shell-output-syntax-table) + ;; XXX: This might look weird, but it is the easiest + ;; way to ensure font lock gets cleaned up before the + ;; current prompt, which is needed for unclosed + ;; strings to not mess up with current input. + (font-lock-unfontify-region comint-last-input-start end)))) + (,(python-rx string-delimiter) + (0 (ignore + (and (not (eq (get-text-property start 'field) 'output)) + (python-syntax-stringify))))))))) (compilation-shell-minor-mode 1)) (defun python-shell-make-comint (cmd proc-name &optional pop internal) From b3cf17f69548c28d21942cc92a7b65e258857f85 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Nov 2012 15:48:33 +0200 Subject: [PATCH 118/165] Adapt the MSDOS build to the latest changes on mainline. --- ChangeLog | 4 +++ GNUmakefile | 77 ---------------------------------------------- config.bat | 1 + msdos/ChangeLog | 10 ++++++ msdos/sed1v2.inp | 19 ++++++------ msdos/sed2v2.inp | 12 +++----- msdos/sedlibmk.inp | 8 +++-- src/ChangeLog | 9 ++++++ src/conf_post.h | 9 ++++++ src/msdos.c | 15 +++++++-- 10 files changed, 65 insertions(+), 99 deletions(-) delete mode 100644 GNUmakefile diff --git a/ChangeLog b/ChangeLog index d4aa9c935ea..a139c0dfb6d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2012-11-03 Eli Zaretskii + + * config.bat: Copy lib/execinfo.in.h to lib/execinfo.in-h if needed. + 2012-10-26 Glenn Morris * Makefile.in (EMACS_NAME): New variable. diff --git a/GNUmakefile b/GNUmakefile deleted file mode 100644 index 0602266adee..00000000000 --- a/GNUmakefile +++ /dev/null @@ -1,77 +0,0 @@ -# Build Emacs from a fresh tarball or version-control checkout. - -# Copyright (C) 2011-2012 Free Software Foundation, Inc. -# -# This file is part of GNU Emacs. -# -# GNU Emacs is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# GNU Emacs is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Emacs. If not, see . -# -# written by Paul Eggert - - -# This GNUmakefile is for GNU Make. It is for convenience, so that -# one can run 'make' in an unconfigured source tree. In such a tree, -# this file causes GNU Make to first create a standard configuration -# with the default options, and then reinvokes itself on the -# newly-built Makefile. If the source tree is already configured, -# this file defers to the existing Makefile. - -# If you are using a non-GNU 'make', or if you want non-default build -# options, or if you want to build in an out-of-source tree, please -# run "configure" by hand. But run autogen.sh first, if the source -# was checked out directly from the repository. - - -# If a Makefile already exists, just use it. - -ifeq ($(wildcard Makefile),Makefile) -include Makefile -else - -# If cleaning and Makefile does not exist, don't bother creating it. -# The source tree is already clean, or is in a weird state that -# requires expert attention. - -ifeq ($(filter-out %clean,$(or $(MAKECMDGOALS),default)),) - -$(MAKECMDGOALS): - @echo >&2 'No Makefile; skipping $@.' - -else - -# No Makefile, and not cleaning. -# If 'configure' does not exist, Emacs must have been checked -# out directly from the repository; run ./autogen.sh. -# Once 'configure' exists, run it. -# Finally, run the actual 'make'. - -default $(filter-out configure Makefile,$(MAKECMDGOALS)): Makefile - $(MAKE) -f Makefile $(MAKECMDGOALS) -# Execute in sequence, so that multiple user goals don't conflict. -.NOTPARALLEL: - -configure: - @echo >&2 'There seems to be no "configure" file in this directory.' - @echo >&2 'Running ./autogen.sh || autogen/copy_autogen ...' - ./autogen.sh || autogen/copy_autogen - @echo >&2 '"configure" file built.' - -Makefile: configure - @echo >&2 'There seems to be no Makefile in this directory.' - @echo >&2 'Running ./configure ...' - ./configure - @echo >&2 'Makefile built.' - -endif -endif diff --git a/config.bat b/config.bat index d3443d450d6..2637fe5e4ec 100644 --- a/config.bat +++ b/config.bat @@ -264,6 +264,7 @@ cd lib Rem Rename files like djtar on plain DOS filesystem would. If Exist build-aux\snippet\c++defs.h update build-aux/snippet/c++defs.h build-aux/snippet/cxxdefs.h If Exist alloca.in.h update alloca.in.h alloca.in-h +If Exist execinfo.in.h update execinfo.in.h execinfo.in-h If Exist getopt.in.h update getopt.in.h getopt.in-h If Exist stdalign.in.h update stdalign.in.h stdalign.in-h If Exist stdbool.in.h update stdbool.in.h stdbool.in-h diff --git a/msdos/ChangeLog b/msdos/ChangeLog index 4d90e8356e3..32083380dbc 100644 --- a/msdos/ChangeLog +++ b/msdos/ChangeLog @@ -1,3 +1,13 @@ +2012-11-03 Eli Zaretskii + + * sedlibmk.inp: Sync with changes in lib/Makefile.in. + (HAVE_DECL_ENVIRON, GNULIB_ENVIRON): Edit to require declaration + through lib/unistd.h. + + * sed1v2.inp: Sync with changes in src/Makefile.in. + + * sed2v2.inp: Sync with changes in src/config.in. + 2012-10-08 Eli Zaretskii * sed1v2.inp (W32_LIBS, W32_OBJ): Edit to empty. diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp index 553d69038fe..84f24bf2c1a 100644 --- a/msdos/sed1v2.inp +++ b/msdos/sed1v2.inp @@ -55,11 +55,11 @@ s/\.h\.in/.h-in/ /^LIB_STANDARD *=/s/@LIB_STANDARD@// /^LIB_MATH *=/s/@LIB_MATH@/-lm/ /^LIB_PTHREAD *=/s/@LIB_PTHREAD@// -/^LIBTIFF *=/s/@LIBTIFF@// -/^LIBJPEG *=/s/@LIBJPEG@// -/^LIBPNG *=/s/@LIBPNG@// -/^LIBGIF *=/s/@LIBGIF@// -/^LIBXPM *=/s/@LIBXPM@// +s/ *@LIBTIFF@// +s/ *@LIBJPEG@// +s/ *@LIBPNG@// +s/ *@LIBGIF@// +s/ *@LIBXPM@// /^XFT_LIBS *=/s/@XFT_LIBS@// /^FONTCONFIG_CFLAGS *=/s/@FONTCONFIG_CFLAGS@// /^FONTCONFIG_LIBS *=/s/@FONTCONFIG_LIBS@// @@ -95,10 +95,8 @@ s/\.h\.in/.h-in/ /^LIBXML2_CFLAGS *=/s/@LIBXML2_CFLAGS@// /^WIDGET_OBJ *=/s/@WIDGET_OBJ@// /^CYGWIN_OBJ *=/s/@CYGWIN_OBJ@// +/^WINDOW_SYSTEM_OBJ *=/s/@WINDOW_SYSTEM_OBJ@// /^MSDOS_OBJ *=/s/= */= dosfns.o msdos.o w16select.o/ -/^ns_appdir *=/s/@ns_appdir@// -/^ns_appbindir *=/s/@ns_appbindir@// -/^ns_appsrc *=/s/@ns_appsrc@// /^NS_OBJ *=/s/@NS_OBJ@// /^NS_OBJC_OBJ *=/s/@NS_OBJC_OBJ@// /^GNU_OBJC_CFLAGS*=/s/@GNU_OBJC_CFLAGS@// @@ -107,6 +105,7 @@ s/\.h\.in/.h-in/ /^LIB_PTHREAD_SIGMASK *=/s/@[^@\n]*@// /^LIB_CLOCK_GETTIME *=/s/@[^@\n]*@//g /^LIB_TIMER_TIME *=/s/@[^@\n]*@//g +/^LIB_EXECINFO *=/s/@[^@\n]*@//g /^LIBGNUTLS_LIBS *=/s/@[^@\n]*@// /^LIBGNUTLS_CFLAGS *=/s/@[^@\n]*@// /^GETLOADAVG_LIBS *=/s/@[^@\n]*@// @@ -143,7 +142,7 @@ s/\.h\.in/.h-in/ /^ *test "X\$(PAXCTL)" = X/d /^ *test "\$(CANNOT_DUMP)" = "yes"/d /^ if test "\$(CANNOT_DUMP)" =/,/^ else /d -/^ -\{0,1\} *ln -/s/bootstrap-emacs\$(EXEEXT).*$/bootstrap-emacs$(EXEEXT)/ +/^ -\{0,1\} *ln /s/bootstrap-emacs\$(EXEEXT).*$/bootstrap-emacs$(EXEEXT)/ /^ fi/d /^ *LC_ALL=C \$(RUN_TEMACS)/i\ stubedit temacs.exe minstack=1024k @@ -170,7 +169,7 @@ s/^ [^ ]*move-if-change / update / /^ #/d /^ cd.*make-docfile/s!$!; cd ../src! /^ @: /d -/^ -\{0,1\} *ln -/s/ln -f/cp -pf/ +/^ -\{0,1\} *ln /s/ln /cp / /^[ ]touch /s/touch/djecho $@ >/ s/@YMF_PASS_LDFLAGS@/flags/ s/@lisp_frag@// diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 25bc5ed12fd..ef0b7e5b427 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -30,26 +30,25 @@ #ifndef MSDOS\ #define MSDOS\ #endif +/^#undef COPYRIGHT *$/s/^.*$/#define COPYRIGHT "Copyright (C) 2012 Free Software Foundation, Inc."/ +/^#undef DIRECTORY_SEP *$/s!^.*$!#define DIRECTORY_SEP '/'! /^#undef DOS_NT *$/s/^.*$/#define DOS_NT/ /^#undef FLOAT_CHECK_DOMAIN *$/s/^.*$/#define FLOAT_CHECK_DOMAIN/ /^#undef HAVE_ALLOCA *$/s/^.*$/#define HAVE_ALLOCA 1/ -/^#undef HAVE_INVERSE_HYPERBOLIC *$/s/^.*$/#define HAVE_INVERSE_HYPERBOLIC/ /^#undef HAVE_SETITIMER *$/s/^.*$/#define HAVE_SETITIMER 1/ /^#undef HAVE_STRUCT_UTIMBUF *$/s/^.*$/#define HAVE_STRUCT_UTIMBUF 1/ /^#undef LOCALTIME_CACHE *$/s/^.*$/#define LOCALTIME_CACHE 1/ /^#undef HAVE_TZSET *$/s/^.*$/#define HAVE_TZSET 1/ -/^#undef HAVE_LOGB *$/s/^.*$/#define HAVE_LOGB 1/ -/^#undef HAVE_FREXP *$/s/^.*$/#define HAVE_FREXP 1/ -/^#undef HAVE_FMOD *$/s/^.*$/#define HAVE_FMOD 1/ /^#undef HAVE_RINT *$/s/^.*$/#define HAVE_RINT 1/ /^#undef HAVE_C99_STRTOLD *$/s/^.*$/#define HAVE_C99_STRTOLD 1/ -/^#undef HAVE_CBRT *$/s/^.*$/#define HAVE_CBRT 1/ /^#undef HAVE_DIFFTIME *$/s/^.*$/#define HAVE_DIFFTIME 1/ /^#undef HAVE_FPATHCONF *$/s/^.*$/#define HAVE_FPATHCONF 1/ /^#undef HAVE_MEMSET *$/s/^.*$/#define HAVE_MEMSET 1/ /^#undef HAVE_MEMCMP *$/s/^.*$/#define HAVE_MEMCMP 1/ /^#undef HAVE_MEMMOVE *$/s/^.*$/#define HAVE_MEMMOVE 1/ +/^#undef HAVE_SETPGID *$/s/^.*$/#define HAVE_SETPGID 1/ /^#undef HAVE_SETRLIMIT *$/s/^.*$/#define HAVE_SETRLIMIT 1/ +/^#undef HAVE_SIGSETJMP *$/s/^.*$/#define HAVE_SIGSETJMP 1/ /^#undef HAVE_GETRUSAGE *$/s/^.*$/#define HAVE_GETRUSAGE 1/ /^#undef GETTIMEOFDAY_TIMEZONE *$/s/^.*$/#define GETTIMEOFDAY_TIMEZONE struct timezone/ /^#undef HAVE_TM_GMTOFF *$/s/^.*$/#define HAVE_TM_GMTOFF 1/ @@ -70,6 +69,7 @@ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ /^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION ""/ +/^#undef PENDING_OUTPUT_COUNT/s/^.*$/#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_ptr - (FILE)->_base)/ /^#undef VERSION/s/^.*$/#define VERSION "24.2.50"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ @@ -95,8 +95,6 @@ /^#undef NULL_DEVICE *$/s/^.*$/#define NULL_DEVICE "nul"/ /^#undef SEPCHAR *$/s/^.*$/#define SEPCHAR '\;'/ /^#undef USER_FULL_NAME *$/s/^.*$/#define USER_FULL_NAME (getenv ("NAME"))/ -/^#undef _setjmp/s/^.*$/#define _setjmp setjmp/ -/^#undef _longjmp/s/^.*$/#define _longjmp longjmp/ /^#undef inline/s/^.*$/#define inline __inline__/ /^#undef my_strftime/s/^.*$/#define my_strftime nstrftime/ /^#undef restrict/s/^.*$/#define restrict __restrict/ diff --git a/msdos/sedlibmk.inp b/msdos/sedlibmk.inp index 9879947ca45..d723c4bcc28 100644 --- a/msdos/sedlibmk.inp +++ b/msdos/sedlibmk.inp @@ -141,6 +141,7 @@ am__cd = cd /^DEPFLAGS *=/s/@[^@\n]*@/-MMD -MF ${DEPDIR}\/$*.d/ /^ECHO_N *=/s/@[^@\n]*@/-n/ /^EXEEXT *=/s/@[^@\n]*@/.exe/ +/^EXECINFO_H *=/s/@[^@\n]*@/execinfo.h/ /^GETOPT_H *=/s/@[^@\n]*@/getopt.h/ # # Gnulib stuff @@ -165,7 +166,7 @@ am__cd = cd /^GNULIB_DUP *=/s/@GNULIB_DUP@/0/ /^GNULIB_DUP2 *=/s/@GNULIB_DUP2@/0/ /^GNULIB_DUP3 *=/s/@GNULIB_DUP3@/1/ -/^GNULIB_ENVIRON *=/s/@GNULIB_ENVIRON@/0/ +/^GNULIB_ENVIRON *=/s/@GNULIB_ENVIRON@/1/ /^GNULIB_EUIDACCESS *=/s/@GNULIB_EUIDACCESS@/0/ /^GNULIB_FACCESSAT *=/s/@GNULIB_FACCESSAT@/0/ /^GNULIB_FCHDIR *=/s/@GNULIB_FCHDIR@/0/ @@ -319,7 +320,7 @@ am__cd = cd /^HAVE_ATOLL *=/s/@HAVE_ATOLL@/0/ /^HAVE_CANONICALIZE_FILE_NAME *=/s/@HAVE_CANONICALIZE_FILE_NAME@/0/ /^HAVE_CHOWN *=/s/@HAVE_CHOWN@/1/ -/^HAVE_DECL_ENVIRON *=/s/@HAVE_DECL_ENVIRON@/1/ +/^HAVE_DECL_ENVIRON *=/s/@HAVE_DECL_ENVIRON@/0/ /^HAVE_DECL_FCHDIR *=/s/@HAVE_DECL_FCHDIR@/0/ /^HAVE_DECL_FDATASYNC *=/s/@HAVE_DECL_FDATASYNC@/0/ /^HAVE_DECL_FPURGE *=/s/@HAVE_DECL_FPURGE@// @@ -540,6 +541,7 @@ am__cd = cd /^REPLACE_PREAD *=/s/@REPLACE_PREAD@/0/ /^REPLACE_PRINTF *=/s/@REPLACE_PRINTF@/0/ /^REPLACE_PTHREAD_SIGMASK *=/s/@REPLACE_PTHREAD_SIGMASK@/0/ +/^REPLACE_PTSNAME *=/s/@REPLACE_PTSNAME@/0/ /^REPLACE_PSELECT *=/s/@REPLACE_PSELECT@/0/ /^REPLACE_PTSNAME *=/s/@REPLACE_PTSNAME@/0/ /^REPLACE_PTSNAME_R *=/s/@REPLACE_PTSNAME_R@/0/ @@ -646,6 +648,8 @@ s/@echo /@djecho/ # Fix the recipes for header files s/^@GL_GENERATE_ALLOCA_H_TRUE@// s/^@GL_GENERATE_ALLOCA_H_FALSE@/\#/ +s/^@GL_GENERATE_EXECINFO_H_TRUE@// +s/^@GL_GENERATE_EXECINFO_H_FALSE@/\#/ s/^@GL_GENERATE_STDBOOL_H_TRUE@/\#/ s/^@GL_GENERATE_STDBOOL_H_FALSE@// s/^@GL_GENERATE_STDALIGN_H_TRUE@// diff --git a/src/ChangeLog b/src/ChangeLog index 8b7c1d9113d..72e3d8ea741 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,14 @@ 2012-11-03 Eli Zaretskii + * msdos.c (msdos_abort): Rename from emacs_abort, and make static. + (msdos_fatal_signal): New function. + (XMenuActivate): Adjust the call to kbd_buffer_events_waiting to + its argument list. + + * conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Define to "inline" + for GCC versions before 4. + (emacs_raise): Define to call msdos_fatal_signal. + * xdisp.c (init_from_display_pos): Fix initialization of the bidi iterator when starting in the middle of a display or overlay string. (Bug#12745) diff --git a/src/conf_post.h b/src/conf_post.h index 6056821d4a7..da3c3bd58b0 100644 --- a/src/conf_post.h +++ b/src/conf_post.h @@ -110,8 +110,17 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */ #else # define lstat stat #endif +/* The "portable" definition of _GL_INLINE on config.h does not work + with DJGPP GCC 3.4.4: it causes unresolved externals in sysdep.c, + although lib/execinfo.h is included and the inline functions there + are visible. */ +#if __GNUC__ < 4 +# define _GL_EXECINFO_INLINE inline +#endif /* End of gnulib-related stuff. */ +#define emacs_raise(sig) msdos_fatal_signal (sig) + #ifndef HAVE_SETPGID # ifdef USG # define setpgid(pid, pgid) setpgrp () diff --git a/src/msdos.c b/src/msdos.c index bac6b977fdf..79f0be48892 100644 --- a/src/msdos.c +++ b/src/msdos.c @@ -3305,7 +3305,7 @@ XMenuActivate (Display *foo, XMenu *menu, int *pane, int *selidx, Emacs will process them after we return and surprise the user. */ discard_mouse_events (); mouse_clear_clicks (); - if (!kbd_buffer_events_waiting (1)) + if (!kbd_buffer_events_waiting ()) clear_input_pending (); /* Allow mouse events generation by dos_rawgetc. */ mouse_preempted--; @@ -4214,8 +4214,8 @@ init_gettimeofday (void) } #endif -void -emacs_abort (void) +static void +msdos_abort (void) { dos_ttcooked (); ScreenSetCursor (10, 0); @@ -4232,6 +4232,15 @@ emacs_abort (void) exit (2); } +void +msdos_fatal_signal (int sig) +{ + if (sig == SIGABRT) + msdos_abort (); + else + raise (sig); +} + void syms_of_msdos (void) { From 1d4341f98813e8f2f4179e1d0a414b2f16c880eb Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Nov 2012 15:56:02 +0200 Subject: [PATCH 119/165] Load term/internal from loadup.el. --- lisp/ChangeLog | 6 ++++++ lisp/loadup.el | 1 + lisp/term/pc-win.el | 2 -- src/ChangeLog | 3 +++ src/lisp.mk | 6 +++--- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ab73a61d9e6..c5d57541da4 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2012-11-03 Eli Zaretskii + + * term/pc-win.el: Don't load term/internal from here. + + * loadup.el: Load term/internal from here. + 2012-11-01 Stephen Berman * play/gomoku.el (gomoku-display-statistics): Update mode line diff --git a/lisp/loadup.el b/lisp/loadup.el index e5f2cb014d3..f017295c33b 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -257,6 +257,7 @@ (load "dos-vars") ;; Don't load term/common-win: it isn't appropriate for the `pc' ;; ``window system'', which generally behaves like a terminal. + (load "term/internal") (load "term/pc-win") (load "ls-lisp") (load "disp-table"))) ; needed to setup ibm-pc char set, see internal.el diff --git a/lisp/term/pc-win.el b/lisp/term/pc-win.el index b460e3b8a14..9fd3bf14fe1 100644 --- a/lisp/term/pc-win.el +++ b/lisp/term/pc-win.el @@ -40,8 +40,6 @@ (error "%s: Loading pc-win.el but not compiled for MS-DOS" (invocation-name))) -(load "term/internal" nil t) - (declare-function msdos-remember-default-colors "msdos.c") (declare-function w16-set-clipboard-data "w16select.c") (declare-function w16-get-clipboard-data "w16select.c") diff --git a/src/ChangeLog b/src/ChangeLog index 72e3d8ea741..43a2c91e1f4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2012-11-03 Eli Zaretskii + * lisp.mk: Adjust comments to the fact that term/internal is now + loaded from loadup.el. + * msdos.c (msdos_abort): Rename from emacs_abort, and make static. (msdos_fatal_signal): New function. (XMenuActivate): Adjust the call to kbd_buffer_events_waiting to diff --git a/src/lisp.mk b/src/lisp.mk index 1f459d4d5f1..8c2710110e3 100644 --- a/src/lisp.mk +++ b/src/lisp.mk @@ -34,9 +34,9 @@ ## that does not have an explicit .el extension, but beware of any ## no-byte-compile ones. -## Confusingly, term/internal is not in loadup, but is unconditionally -## loaded by pc-win, which is. Ditto for international/cp51932 and -## international/eucjp-ms, loaded from language/japanese. +## Confusingly, international/cp51932 and international/eucjp-ms are +## unconditionally loaded from language/japanese, instead of being +## loaded directly from loadup.el; FIXME. ## Note that this list should not include lisp files which might not ## be present, like site-load.el and site-init.el; this makefile From 0f7b074f4a6e8e6418d06ab6d3b206b4524381af Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 3 Nov 2012 23:24:00 +0800 Subject: [PATCH 120/165] * lisp/cus-start.el: Make cursor-type customizable. * src/buffer.c (cursor_type): Untabify docstring. Fixes: debbugs:11633 --- lisp/ChangeLog | 4 ++++ lisp/cus-start.el | 13 +++++++++++++ src/ChangeLog | 4 ++++ src/buffer.c | 16 ++++++++-------- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e4e35a74a45..d040d331903 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-11-03 Chong Yidong + + * cus-start.el: Make cursor-type customizable (Bug#11633). + 2012-11-02 Glenn Morris * filecache.el: No need to load find-lisp when compiling. diff --git a/lisp/cus-start.el b/lisp/cus-start.el index 2279dc2bf20..5e81e1545b6 100644 --- a/lisp/cus-start.el +++ b/lisp/cus-start.el @@ -51,6 +51,19 @@ (gc-cons-percentage alloc float) (garbage-collection-messages alloc boolean) ;; buffer.c + (cursor-type + display + (choice + (const :tag "Frame default" t) + (const :tag "Filled box" box) + (const :tag "Hollow cursor" hollow) + (const :tag "Vertical bar" bar) + (cons :tag "Vertical bar with specified width" + (const bar) integer) + (const :tag "Horizontal bar" hbar) + (cons :tag "Horizontal bar with specified width" + (const hbar) integer) + (const :tag "None "nil))) (mode-line-format mode-line sexp) ;Hard to do right. (major-mode internal function) (case-fold-search matching boolean) diff --git a/src/ChangeLog b/src/ChangeLog index f5f5c9e897a..1595537267d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2012-11-03 Chong Yidong + + * buffer.c (cursor_type): Untabify docstring. + 2012-11-03 Dmitry Antipov * frame.h (struct frame): Drop can_have_scroll_bars member diff --git a/src/buffer.c b/src/buffer.c index 0b3dde27968..347f27edc3a 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -6210,15 +6210,15 @@ is a member of the list. */); doc: /* Cursor to use when this buffer is in the selected window. Values are interpreted as follows: - t use the cursor specified for the frame - nil don't display a cursor - box display a filled box cursor - hollow display a hollow box cursor - bar display a vertical bar cursor with default width - (bar . WIDTH) display a vertical bar cursor with width WIDTH - hbar display a horizontal bar cursor with default height + t use the cursor specified for the frame + nil don't display a cursor + box display a filled box cursor + hollow display a hollow box cursor + bar display a vertical bar cursor with default width + (bar . WIDTH) display a vertical bar cursor with width WIDTH + hbar display a horizontal bar cursor with default height (hbar . HEIGHT) display a horizontal bar cursor with height HEIGHT - ANYTHING ELSE display a hollow box cursor + ANYTHING ELSE display a hollow box cursor When the buffer is displayed in a non-selected window, the cursor's appearance is instead controlled by the variable From 893cc4558558db41e16525303023372496a293b7 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 3 Nov 2012 23:44:59 +0800 Subject: [PATCH 121/165] Fix a race condition in wait_reading_process_output (tiny change). * src/process.c (wait_reading_process_output): Avoid a race condition with SIGIO delivery. Fixes: debbugs:11536 --- src/ChangeLog | 5 +++++ src/process.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1595537267d..e26dd561495 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-11-03 Jim Paris (tiny change) + + * process.c (wait_reading_process_output): Avoid a race condition + with SIGIO delivery (Bug#11536). + 2012-11-03 Chong Yidong * buffer.c (cursor_type): Untabify docstring. diff --git a/src/process.c b/src/process.c index 77e99ead01f..dae687cb59c 100644 --- a/src/process.c +++ b/src/process.c @@ -4697,9 +4697,12 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, /* If we woke up due to SIGWINCH, actually change size now. */ do_pending_window_change (0); + /* The following optimization fails if SIGIO is received between + set_waiting_for_input and select (Bug#11536). if ((time_limit || nsecs) && nfds == 0 && ! timeout_reduced_for_timers) - /* We waited the full specified time, so return now. */ break; + */ + if (nfds < 0) { if (xerrno == EINTR) From 85fabcb7ee546bf689727fb7b26f33414f55b46d Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 4 Nov 2012 00:36:23 +0800 Subject: [PATCH 122/165] * process.c (wait_reading_process_output): Clean up last change. --- src/ChangeLog | 5 +++++ src/process.c | 17 ++++++----------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index e26dd561495..193246c4fad 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-11-03 Chong Yidong + + * process.c (wait_reading_process_output): Clean up the last + change. + 2012-11-03 Jim Paris (tiny change) * process.c (wait_reading_process_output): Avoid a race condition diff --git a/src/process.c b/src/process.c index dae687cb59c..29c880da3b0 100644 --- a/src/process.c +++ b/src/process.c @@ -4354,8 +4354,6 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, while (1) { - int timeout_reduced_for_timers = 0; - /* If calling from keyboard input, do not quit since we want to return C-g as an input character. Otherwise, do pending quit if requested. */ @@ -4435,10 +4433,7 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, if (EMACS_TIME_VALID_P (timer_delay)) { if (EMACS_TIME_LT (timer_delay, timeout)) - { - timeout = timer_delay; - timeout_reduced_for_timers = 1; - } + timeout = timer_delay; } else { @@ -4697,11 +4692,11 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, /* If we woke up due to SIGWINCH, actually change size now. */ do_pending_window_change (0); - /* The following optimization fails if SIGIO is received between - set_waiting_for_input and select (Bug#11536). - if ((time_limit || nsecs) && nfds == 0 && ! timeout_reduced_for_timers) - break; - */ + /* We used to break here if nfds == 0, i.e. we seemed to have + waited the full period. But apparently if Emacs receives + SIGIO between set_waiting_for_input and select, select can + return with nfds == 0 due to the timeout being zeroed out by + the signal handler (Bug#11536). */ if (nfds < 0) { From 77f6eafecaee05fcd62b03f7c7d01961bcd31ec8 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 4 Nov 2012 00:54:11 +0800 Subject: [PATCH 123/165] * lispref/objects.texi: Fix last change. --- doc/lispref/objects.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi index 2507b0540eb..6933ffe492a 100644 --- a/doc/lispref/objects.texi +++ b/doc/lispref/objects.texi @@ -1061,7 +1061,7 @@ string. That is to say, it assumes that all non-@acronym{ASCII} characters occurring in the string are 8-bit raw bytes. In hexadecimal and octal escape sequences, the escaped character -code may contain any number of digits, so the first subsequent +code may contain a variable number of digits, so the first subsequent character which is not a valid hexadecimal or octal digit terminates the escape sequence. If the next character in a string could be interpreted as a hexadecimal or octal digit, write @w{@samp{\ }} From 685b00269debcb77f533f65ba5e6421d8539229d Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 3 Nov 2012 10:56:30 -0700 Subject: [PATCH 124/165] Further edits for doc/misc/cl.texi * cl.texi: Further general copyedits. (List Functions): Remove copy-tree, standard elisp for some time. (Efficiency Concerns): Comment out examples that no longer apply. (Compiler Optimizations): Rename from "Optimizing Compiler"; reword. --- doc/misc/ChangeLog | 3 ++ doc/misc/cl.texi | 111 ++++++++++++++++++++------------------------- 2 files changed, 52 insertions(+), 62 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 39d7ee8d1fc..6bd601bef5d 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,6 +1,9 @@ 2012-11-03 Glenn Morris * cl.texi: Further general copyedits. + (List Functions): Remove copy-tree, standard elisp for some time. + (Efficiency Concerns): Comment out examples that no longer apply. + (Compiler Optimizations): Rename from "Optimizing Compiler"; reword. 2012-11-02 Glenn Morris diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 66d25144dd6..593985edbfc 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -2867,6 +2867,7 @@ temporary variables. This function creates a new, uninterned symbol (using @code{make-symbol}) with a unique name. (The name of an uninterned symbol is relevant only if the symbol is printed.) By default, the name is generated +@c FIXME no longer true? from an increasing sequence of numbers, @samp{G1000}, @samp{G1001}, @samp{G1002}, etc. If the optional argument @var{x} is a string, that string is used as a prefix instead of @samp{G}. Uninterned symbols @@ -3207,7 +3208,7 @@ may appear in any order. The @code{:key} argument should be passed either @code{nil}, or a function of one argument. This key function is used as a filter through which the elements of the sequence are seen; for example, -@code{(cl-find x y :key 'car)} is similar to @code{(cl-assoc x y)}: +@code{(cl-find x y :key 'car)} is similar to @code{(cl-assoc x y)}. It searches for an element of the list whose @sc{car} equals @code{x}, rather than for an element which equals @code{x} itself. If @code{:key} is omitted or @code{nil}, the filter is effectively @@ -3225,7 +3226,7 @@ true (non-@code{nil}) to indicate a match; instead, you may use @code{:test-not} to give a function which returns @emph{false} to indicate a match. The default test function is @code{eql}. -Many functions which take @var{item} and @code{:test} or @code{:test-not} +Many functions that take @var{item} and @code{:test} or @code{:test-not} arguments also come in @code{-if} and @code{-if-not} varieties, where a @var{predicate} function is passed instead of @var{item}, and sequence elements match if the predicate returns true on them @@ -3239,7 +3240,7 @@ and sequence elements match if the predicate returns true on them to remove all zeros from sequence @code{seq}. Some operations can work on a subsequence of the argument sequence; -these function take @code{:start} and @code{:end} arguments which +these function take @code{:start} and @code{:end} arguments, which default to zero and the length of the sequence, respectively. Only elements between @var{start} (inclusive) and @var{end} (exclusive) are affected by the operation. The @var{end} argument @@ -3347,7 +3348,7 @@ the return values using @code{nconc}. @defun cl-some predicate seq &rest more-seqs This function calls @var{predicate} on each element of @var{seq} in turn; if @var{predicate} returns a non-@code{nil} value, -@code{some} returns that value, otherwise it returns @code{nil}. +@code{cl-some} returns that value, otherwise it returns @code{nil}. Given several sequence arguments, it steps through the sequences in parallel until the shortest one runs out, just as in @code{cl-mapcar}. You can rely on the left-to-right order in which @@ -3396,7 +3397,7 @@ of left-associative: @equiv{} (- 1 (- 2 (- 3 4))) @result{} -2 @end example -If @code{:key} is specified, it is a function of one argument which +If @code{:key} is specified, it is a function of one argument, which is called on each of the sequence elements in turn. If @code{:initial-value} is specified, it is effectively added to the @@ -3465,7 +3466,7 @@ of data copied is simply the shorter of the source and destination If @var{seq1} and @var{seq2} are @code{eq}, then the replacement will work correctly even if the regions indicated by the start and end arguments overlap. However, if @var{seq1} and @var{seq2} -are lists which share storage but are not @code{eq}, and the +are lists that share storage but are not @code{eq}, and the start and end arguments specify overlapping regions, the effect is undefined. @end defun @@ -3488,7 +3489,7 @@ if @var{count} was also specified). @end defun @defun cl-delete item seq @t{&key :test :test-not :key :count :start :end :from-end} -This deletes all elements of @var{seq} which match @var{item}. +This deletes all elements of @var{seq} that match @var{item}. It is a destructive operation. Since Emacs Lisp does not support stretchable strings or vectors, this is the same as @code{cl-remove} for those sequence types. On lists, @code{cl-remove} will copy the @@ -3588,7 +3589,7 @@ elements match (according to @code{:test}, @code{:test-not}, and @code{:key}), the function returns @code{nil}. If there is a mismatch, the function returns the index (relative to @var{seq1}) of the first mismatching element. This will be the leftmost pair of -elements which do not match, or the position at which the shorter of +elements that do not match, or the position at which the shorter of the two otherwise-matching sequences runs out. If @code{:from-end} is true, then the elements are compared from right @@ -3603,7 +3604,7 @@ which compares two strings case-insensitively. @defun cl-search seq1 seq2 @t{&key :test :test-not :key :from-end :start1 :end1 :start2 :end2} This function searches @var{seq2} for a subsequence that matches @var{seq1} (or part of it specified by @code{:start1} and -@code{:end1}.) Only matches which fall entirely within the region +@code{:end1}). Only matches that fall entirely within the region defined by @code{:start2} and @code{:end2} will be considered. The return value is the index of the leftmost element of the leftmost match, relative to the start of @var{seq2}, or @code{nil} @@ -3614,7 +3615,7 @@ function finds the @emph{rightmost} matching subsequence. @node Sorting Sequences @section Sorting Sequences -@defun clsort seq predicate @t{&key :key} +@defun cl-sort seq predicate @t{&key :key} This function sorts @var{seq} into increasing order as determined by using @var{predicate} to compare pairs of elements. @var{predicate} should return true (non-@code{nil}) if and only if its first argument @@ -3625,7 +3626,7 @@ numbers into decreasing rather than increasing order. This function differs from Emacs's built-in @code{sort} in that it can operate on any type of sequence, not just lists. Also, it -accepts a @code{:key} argument which is used to preprocess data +accepts a @code{:key} argument, which is used to preprocess data fed to the @var{predicate} function. For example, @example @@ -3636,7 +3637,7 @@ fed to the @var{predicate} function. For example, sorts @var{data}, a sequence of strings, into increasing alphabetical order without regard to case. A @code{:key} function of @code{car} would be useful for sorting association lists. It should only be a -simple accessor though, it's used heavily in the current +simple accessor though, since it's used heavily in the current implementation. The @code{cl-sort} function is destructive; it sorts lists by actually @@ -3692,7 +3693,7 @@ i.e., chains of cons cells. @defun cl-caddr x This function is equivalent to @code{(car (cdr (cdr @var{x})))}. -Likewise, this package defines all 28 @code{c@var{xxx}r} functions +Likewise, this package defines all 24 @code{c@var{xxx}r} functions where @var{xxx} is up to four @samp{a}s and/or @samp{d}s. All of these functions are @code{setf}-able, and calls to them are expanded inline by the byte-compiler for maximum efficiency. @@ -3720,7 +3721,8 @@ This function returns the length of list @var{x}, exactly like @code{(length @var{x})}, except that if @var{x} is a circular list (where the @sc{cdr}-chain forms a loop rather than terminating with @code{nil}), this function returns @code{nil}. (The regular -@code{length} function would get stuck if given a circular list.) +@code{length} function would get stuck if given a circular list. +See also the @code{safe-length} function.) @end defun @defun cl-list* arg &rest others @@ -3748,18 +3750,6 @@ This function returns a copy of the list @var{list}. It copies dotted lists like @code{(1 2 . 3)} correctly. @end defun -@defun copy-tree x &optional vecp -This function returns a copy of the tree of cons cells @var{x}. -@c FIXME? cl-copy-list is not an alias of copy-sequence. -Unlike @code{copy-sequence} (and its alias @code{cl-copy-list}), -which copies only along the @sc{cdr} direction, this function -copies (recursively) along both the @sc{car} and the @sc{cdr} -directions. If @var{x} is not a cons cell, the function simply -returns @var{x} unchanged. If the optional @var{vecp} argument -is true, this function copies vectors (recursively) as well as -cons cells. -@end defun - @defun cl-tree-equal x y @t{&key :test :test-not :key} This function compares two trees of cons cells. If @var{x} and @var{y} are both cons cells, their @sc{car}s and @sc{cdr}s are @@ -3822,7 +3812,7 @@ This is a destructive version of @code{cl-sublis}. @section Lists as Sets @noindent -These functions perform operations on lists which represent sets +These functions perform operations on lists that represent sets of elements. @defun cl-member item list @t{&key :test :test-not :key} @@ -3835,13 +3825,14 @@ are compared by @code{eql} by default; you can use the @code{:test}, The standard Emacs lisp function @code{member} uses @code{equal} for comparisons; it is equivalent to @code{(cl-member @var{item} @var{list} -:test 'equal)}. +:test 'equal)}. With no keyword arguments, @code{cl-member} is +equivalent to @code{memq}. @end defun @findex cl-member-if @findex cl-member-if-not The @code{cl-member-if} and @code{cl-member-if-not} functions -analogously search for elements which satisfy a given predicate. +analogously search for elements that satisfy a given predicate. @defun cl-tailp sublist list This function returns @code{t} if @var{sublist} is a sublist of @@ -3860,11 +3851,11 @@ become part of the list. @end defun @defun cl-union list1 list2 @t{&key :test :test-not :key} -This function combines two lists which represent sets of items, +This function combines two lists that represent sets of items, returning a list that represents the union of those two sets. -The result list will contain all items which appear in @var{list1} +The resulting list contains all items that appear in @var{list1} or @var{list2}, and no others. If an item appears in both -@var{list1} and @var{list2} it will be copied only once. If +@var{list1} and @var{list2} it is copied only once. If an item is duplicated in @var{list1} or @var{list2}, it is undefined whether or not that duplication will survive in the result list. The order of elements in the result list is also @@ -3879,7 +3870,7 @@ it tries to reuse the storage of the argument lists if possible. @defun cl-intersection list1 list2 @t{&key :test :test-not :key} This function computes the intersection of the sets represented by @var{list1} and @var{list2}. It returns the list of items -which appear in both @var{list1} and @var{list2}. +that appear in both @var{list1} and @var{list2}. @end defun @defun cl-nintersection list1 list2 @t{&key :test :test-not :key} @@ -3929,7 +3920,7 @@ This function searches the association list @var{a-list} for an element whose @sc{car} matches (in the sense of @code{:test}, @code{:test-not}, and @code{:key}, or by comparison with @code{eql}) a given @var{item}. It returns the matching element, if any, -otherwise @code{nil}. It ignores elements of @var{a-list} which +otherwise @code{nil}. It ignores elements of @var{a-list} that are not cons cells. (This corresponds to the behavior of @code{assq} and @code{assoc} in Emacs Lisp; Common Lisp's @code{assoc} ignores @code{nil}s but considers any other non-cons @@ -3990,11 +3981,11 @@ are symbols. For example, @end example @noindent -defines a struct type called @code{person} which contains three +defines a struct type called @code{person} that contains three slots. Given a @code{person} object @var{p}, you can access those slots by calling @code{(person-name @var{p})}, @code{(person-age @var{p})}, and @code{(person-sex @var{p})}. You can also change these slots by -using @code{setf} on any of these place forms: +using @code{setf} on any of these place forms, for example: @example (cl-incf (person-age birthday-boy)) @@ -4011,10 +4002,10 @@ Given a @code{person}, @code{(copy-person @var{p})} makes a new object of the same type whose slots are @code{eq} to those of @var{p}. Given any Lisp object @var{x}, @code{(person-p @var{x})} returns -true if @var{x} looks like a @code{person}, false otherwise. (Again, +true if @var{x} looks like a @code{person}, and false otherwise. (Again, in Common Lisp this predicate would be exact; in Emacs Lisp the best it can do is verify that @var{x} is a vector of the correct -length which starts with the correct tag symbol.) +length that starts with the correct tag symbol.) Accessors like @code{person-name} normally check their arguments (effectively using @code{person-p}) and signal an error if the @@ -4051,7 +4042,7 @@ In general, @var{name} is either a name symbol or a list of a name symbol followed by any number of @dfn{struct options}; each @var{slot} is either a slot symbol or a list of the form @samp{(@var{slot-name} @var{default-value} @var{slot-options}@dots{})}. The @var{default-value} -is a Lisp form which is evaluated any time an instance of the +is a Lisp form that is evaluated any time an instance of the structure type is created without specifying that slot's value. Common Lisp defines several slot options, but the only one @@ -4109,11 +4100,11 @@ The argument names should match the slot names; each slot is initialized from the corresponding argument. Slots whose names do not appear in the argument list are initialized based on the @var{default-value} in their slot descriptor. Also, @code{&optional} -and @code{&key} arguments which don't specify defaults take their +and @code{&key} arguments that don't specify defaults take their defaults from the slot descriptor. It is valid to include arguments -which don't correspond to slot names; these are useful if they are +that don't correspond to slot names; these are useful if they are referred to in the defaults for optional, keyword, or @code{&aux} -arguments which @emph{do} correspond to slots. +arguments that @emph{do} correspond to slots. You can specify any number of full-format @code{:constructor} options on a structure. The default constructor is still generated @@ -4154,7 +4145,7 @@ means not to generate a copier function. (In this implementation, all copier functions are simply synonyms for @code{copy-sequence}.) @item :predicate -The argument is an alternate name for the predicate which recognizes +The argument is an alternate name for the predicate that recognizes objects of this type. The default is @code{@var{name}-p}. @code{nil} means not to generate a predicate function. (If the @code{:type} option is used without the @code{:named} option, no predicate is @@ -4214,7 +4205,7 @@ work on astronauts just like other people. @item :print-function In full Common Lisp, this option allows you to specify a function -which is called to print an instance of the structure type. The +that is called to print an instance of the structure type. The Emacs Lisp system offers no hooks into the Lisp printer which would allow for such a feature, so this package simply ignores @code{:print-function}. @@ -4391,7 +4382,7 @@ You can find out how a macro expands by using the This function takes a single Lisp form as an argument and inserts a nicely formatted copy of it in the current buffer (which must be in Lisp mode so that indentation works properly). It also expands -all Lisp macros which appear in the form. The easiest way to use +all Lisp macros that appear in the form. The easiest way to use this function is to go to the @file{*scratch*} buffer and type, say, @example @@ -4400,7 +4391,7 @@ this function is to go to the @file{*scratch*} buffer and type, say, @noindent and type @kbd{C-x C-e} immediately after the closing parenthesis; -the expansion +an expansion similar to: @example (cl-block nil @@ -4421,7 +4412,11 @@ variable @code{G1004} was created by @code{cl-gensym}.) If the optional argument @var{full} is true, then @emph{all} macros are expanded, including @code{cl-block}, @code{cl-eval-when}, and compiler macros. Expansion is done as if @var{form} were -a top-level form in a file being compiled. For example, +a top-level form in a file being compiled. + +@c FIXME none of these examples are still applicable. +@ignore +For example, @example (cl-prettyexpand '(cl-pushnew 'x list)) @@ -4431,16 +4426,12 @@ a top-level form in a file being compiled. For example, (cl-prettyexpand '(caddr (cl-member 'a list)) t) @print{} (car (cdr (cdr (memq 'a list)))) @end example +@end ignore Note that @code{cl-adjoin}, @code{cl-caddr}, and @code{cl-member} all have built-in compiler macros to optimize them in common cases. @end defun -@ifinfo -@example - -@end example -@end ifinfo @appendixsec Error Checking @noindent @@ -4450,7 +4441,7 @@ where substantial gains were possible at the expense of marginal incompatibility. The Common Lisp standard (as embodied in Steele's book) uses the -phrase ``it is an error if'' to indicate a situation which is not +phrase ``it is an error if'' to indicate a situation that is not supposed to arise in complying programs; implementations are strongly encouraged but not required to signal an error in these situations. This package sometimes omits such error checking in the interest of @@ -4472,20 +4463,16 @@ you can use @code{&allow-other-keys} to omit this check. Functions defined in this package such as @code{cl-find} and @code{cl-member} do check their keyword arguments for validity. -@ifinfo -@example - -@end example -@end ifinfo -@appendixsec Optimizing Compiler +@appendixsec Compiler Optimizations @noindent -Use of the optimizing Emacs compiler is highly recommended; many of the Common +Changing the value of @code{byte-optimize} from the default @code{t} +is highly discouraged; many of the Common Lisp macros emit -code which can be improved by optimization. In particular, +code that can be improved by optimization. In particular, @code{cl-block}s (whether explicit or implicit in constructs like @code{cl-defun} and @code{cl-loop}) carry a fair run-time penalty; the -byte-compiler removes @code{cl-block}s which are not actually +byte-compiler removes @code{cl-block}s that are not actually referenced by @code{cl-return} or @code{cl-return-from} inside the block. @node Common Lisp Compatibility From 5c677d44107c87c6d89090e4052adba44fd12de3 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 3 Nov 2012 11:03:39 -0700 Subject: [PATCH 125/165] * lisp/emacs-lisp/cl-macs.el (cl-do-all-symbols): Add doc string. --- lisp/ChangeLog | 4 ++++ lisp/emacs-lisp/cl-macs.el | 3 +++ 2 files changed, 7 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 993d4a2c4a0..466e13b276c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-11-03 Glenn Morris + + * emacs-lisp/cl-macs.el (cl-do-all-symbols): Add doc string. + 2012-11-03 Eli Zaretskii * term/pc-win.el: Don't load term/internal from here. diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index a448973c1bb..e7a66ad1b1a 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -1579,6 +1579,9 @@ from OBARRAY. ;;;###autoload (defmacro cl-do-all-symbols (spec &rest body) + "Like `cl-do-symbols', but use the default obarray. + +\(fn (VAR [RESULT]) BODY...)" (declare (indent 1) (debug ((symbolp &optional form) cl-declarations body))) `(cl-do-symbols (,(car spec) nil ,(cadr spec)) ,@body)) From 0d879dca4648aa15bd3c9ae4ff8b6c39e0c07326 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 3 Nov 2012 11:19:50 -0700 Subject: [PATCH 126/165] Omit duplicate definitions no longer needed with gcc -g3. * lisp.h (GCTYPEBITS, GCALIGNMENT, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG) (VALMASK, MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM): Define only as macros. There's no longer any need to also define these symbols as enums or as constants, since we now assume gcc -g3 when debugging. --- src/ChangeLog | 9 +++++++++ src/lisp.h | 32 ++++++++------------------------ 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 193246c4fad..3a88b9c7ce2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2012-11-03 Paul Eggert + + Omit duplicate definitions no longer needed with gcc -g3. + * lisp.h (GCTYPEBITS, GCALIGNMENT, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG) + (VALMASK, MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM): + Define only as macros. There's no longer any need to also define + these symbols as enums or as constants, since we now assume + gcc -g3 when debugging. + 2012-11-03 Chong Yidong * process.c (wait_reading_process_output): Clean up the last diff --git a/src/lisp.h b/src/lisp.h index 61671bdaf21..e9f47f4ed27 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -152,20 +152,15 @@ extern bool suppress_checking EXTERNALLY_VISIBLE; on the few static Lisp_Objects used: all the defsubr as well as the two special buffers buffer_defaults and buffer_local_symbols. */ +/* Number of bits in a Lisp_Object tag. This can be used in #if. */ +#define GCTYPEBITS 3 + +/* 2**GCTYPEBITS. This must be a macro that expands to a literal + integer constant, for MSVC. */ +#define GCALIGNMENT 8 + enum Lisp_Bits { - /* Number of bits in a Lisp_Object tag. This can be used in #if, - and for GDB's sake also as a regular symbol. */ - GCTYPEBITS = -#define GCTYPEBITS 3 - GCTYPEBITS, - - /* 2**GCTYPEBITS. This must also be a macro that expands to a - literal integer constant, for MSVC. */ - GCALIGNMENT = -#define GCALIGNMENT 8 - GCALIGNMENT, - /* Number of bits in a Lisp_Object value, not counting the tag. */ VALBITS = BITS_PER_EMACS_INT - GCTYPEBITS, @@ -383,15 +378,11 @@ enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = 0 }; /* In the size word of a vector, this bit means the vector has been marked. */ -static ptrdiff_t const ARRAY_MARK_FLAG #define ARRAY_MARK_FLAG PTRDIFF_MIN - = ARRAY_MARK_FLAG; /* In the size word of a struct Lisp_Vector, this bit means it's really some other vector-like object. */ -static ptrdiff_t const PSEUDOVECTOR_FLAG #define PSEUDOVECTOR_FLAG (PTRDIFF_MAX - PTRDIFF_MAX / 2) - = PSEUDOVECTOR_FLAG; /* In a pseudovector, the size field actually contains a word with one PSEUDOVECTOR_FLAG bit set, and one of the following values extracted @@ -473,9 +464,7 @@ enum lsb_bits #else /* not USE_LSB_TAG */ -static EMACS_INT const VALMASK #define VALMASK VAL_MAX - = VALMASK; #define XTYPE(a) ((enum Lisp_Type) ((EMACS_UINT) XLI (a) >> VALBITS)) @@ -523,14 +512,9 @@ static EMACS_INT const VALMASK #define EQ(x, y) (XHASH (x) == XHASH (y)) /* Largest and smallest representable fixnum values. These are the C - values. They are macros for use in static initializers, and - constants for visibility to GDB. */ -static EMACS_INT const MOST_POSITIVE_FIXNUM = + values. They are macros for use in static initializers. */ #define MOST_POSITIVE_FIXNUM (EMACS_INT_MAX >> INTTYPEBITS) - MOST_POSITIVE_FIXNUM; -static EMACS_INT const MOST_NEGATIVE_FIXNUM = #define MOST_NEGATIVE_FIXNUM (-1 - MOST_POSITIVE_FIXNUM) - MOST_NEGATIVE_FIXNUM; /* Value is non-zero if I doesn't fit into a Lisp fixnum. It is written this way so that it also works if I is of unsigned From 3a4d19175aaf8ba6d43dac0bb2be703def774bd8 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 3 Nov 2012 11:23:38 -0700 Subject: [PATCH 127/165] More general edits for cl.texi Appendices --- doc/misc/cl.texi | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 593985edbfc..1b1a3f9836f 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -4479,25 +4479,27 @@ referenced by @code{cl-return} or @code{cl-return-from} inside the block. @appendix Common Lisp Compatibility @noindent -Following is a list of all known incompatibilities between this +The following is a list of all known incompatibilities between this package and Common Lisp as documented in Steele (2nd edition). The word @code{cl-defun} is required instead of @code{defun} in order to use extended Common Lisp argument lists in a function. Likewise, @code{cl-defmacro} and @code{cl-function} are versions of those forms which understand full-featured argument lists. The @code{&whole} -keyword does not work in @code{defmacro} argument lists (except +keyword does not work in @code{cl-defmacro} argument lists (except inside recursive argument lists). The @code{equal} predicate does not distinguish between IEEE floating-point plus and minus zero. The @code{cl-equalp} predicate has several differences with Common Lisp; @pxref{Predicates}. -@c FIXME no longer provided by cl. +@c FIXME consider moving to lispref +@ignore The @code{setf} mechanism is entirely compatible, except that setf-methods return a list of five values rather than five values directly. Also, the new ``@code{setf} function'' concept (typified by @code{(defun (setf foo) @dots{})}) is not implemented. +@end ignore The @code{cl-do-all-symbols} form is the same as @code{cl-do-symbols} with no @var{obarray} argument. In Common Lisp, this form would @@ -4630,7 +4632,7 @@ However, the Emacs parser does not understand colons and just treats them as part of the symbol name. Thus, while @code{mapcar} and @code{lisp:mapcar} may refer to the same symbol in Common Lisp, they are totally distinct in Emacs Lisp. Common Lisp -programs which refer to a symbol by the full name sometimes +programs that refer to a symbol by the full name sometimes and the short name other times will not port cleanly to Emacs. Emacs Lisp does have a concept of ``obarrays'', which are @@ -4917,8 +4919,9 @@ Common Lisp defines three macros, @code{define-modify-macro}, @code{defsetf}, and @code{define-setf-method}, that allow the user to extend generalized variables in various ways. In Emacs, these are obsolete, replaced by various features of -@file{gv.el} in Emacs 24.3. -@c FIXME details. +@file{gv.el} in Emacs 24.3. Many of the implementation +details in the following are out-of-date. +@c FIXME this whole section needs updating. @defmac define-modify-macro name arglist function [doc-string] This macro defines a ``read-modify-write'' macro similar to @@ -4987,7 +4990,7 @@ Otherwise, the above expansion would not obey the rules for the way @code{setf} is supposed to behave. As a special (non-Common-Lisp) extension, a third argument of @code{t} -to @code{defsetf} says that the @code{update-fn}'s return value is +to @code{defsetf} says that the return value of @code{update-fn} is not suitable, so that the above @code{setf} should be expanded to something more like @@ -5010,7 +5013,7 @@ suite of setf methods, are: @defmac defsetf access-fn arglist (store-var) forms@dots{} This is the second, more complex, form of @code{defsetf}. It is rather like @code{defmacro} except for the additional @var{store-var} -argument. The @var{forms} should return a Lisp form which stores +argument. The @var{forms} should return a Lisp form that stores the value of @var{store-var} into the generalized variable formed by a call to @var{access-fn} with arguments described by @var{arglist}. The @var{forms} may begin with a string which documents the @code{setf} @@ -5026,7 +5029,7 @@ For example, the simple form of @code{defsetf} is shorthand for The Lisp form that is returned can access the arguments from @var{arglist} and @var{store-var} in an unrestricted fashion; -macros like @code{setf} and @code{cl-incf} which invoke this +macros like @code{cl-incf} that invoke this setf-method will insert temporary variables as needed to make sure the apparent order of evaluation is preserved. @@ -5043,6 +5046,7 @@ This is the most general way to create new place forms. When a @code{setf} to @var{access-fn} with arguments described by @var{arglist} is expanded, the @var{forms} are evaluated and must return a list of five items: +@c FIXME Is this still true? @enumerate @item @@ -5058,12 +5062,12 @@ A list of exactly one @dfn{store variable} (generally obtained from a call to @code{gensym}). @item -A Lisp form which stores the contents of the store variable into +A Lisp form that stores the contents of the store variable into the generalized variable, assuming the temporaries have been bound as described above. @item -A Lisp form which accesses the contents of the generalized variable, +A Lisp form that accesses the contents of the generalized variable, assuming the temporaries have been bound. @end enumerate @@ -5079,7 +5083,8 @@ temporary variables. In the setf-methods generated by @code{defsetf}, the second return value is simply the list of arguments in the place form, and the first return value is a list of a corresponding number of temporary variables generated -by @code{cl-gensym}. Macros like @code{setf} and @code{cl-incf} which +@c FIXME I don't think this is true anymore. +by @code{cl-gensym}. Macros like @code{cl-incf} that use this setf-method will optimize away most temporaries that turn out to be unnecessary, so there is little reason for the setf-method itself to optimize. @@ -5090,12 +5095,14 @@ This function returns the setf-method for @var{place}, by invoking the definition previously recorded by @code{defsetf} or @code{define-setf-method}. The result is a list of five values as described above. You can use this function to build -your own @code{cl-incf}-like modify macros. (Actually, it is -@c FIXME? -better to use the internal functions @code{cl-setf-do-modify} -and @code{cl-setf-do-store}, which are a bit easier to use and -which also do a number of optimizations; consult the source -code for the @code{cl-incf} function for a simple example.) +your own @code{cl-incf}-like modify macros. +@c These no longer exist. +@ignore +(Actually, it is better to use the internal functions +@code{cl-setf-do-modify} and @code{cl-setf-do-store}, which are a bit +easier to use and which also do a number of optimizations; consult the +source code for the @code{cl-incf} function for a simple example.) +@end ignore The argument @var{env} specifies the ``environment'' to be passed on to @code{macroexpand} if @code{get-setf-method} should @@ -5103,12 +5110,14 @@ need to expand a macro in @var{place}. It should come from an @code{&environment} argument to the macro or setf-method that called @code{get-setf-method}. +@c FIXME No longer true. See also the source code for the setf-method for @c Also @code{apply}, but that is commented out. @code{substring}, which works by calling @code{get-setf-method} on a simpler case, then massaging the result. @end defun +@c FIXME does not belong here any more, maybe in lispref? Modern Common Lisp defines a second, independent way to specify the @code{setf} behavior of a function, namely ``@code{setf} functions'' whose names are lists @code{(setf @var{name})} From 491384001301d37b038f3ee074b13f658d094966 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 3 Nov 2012 11:32:09 -0700 Subject: [PATCH 128/165] Rename cl-loop-handler, cl-loop-for-handler back to their original names * lisp/emacs-lisp/cl-macs.el (cl-parse-loop-clause): Rename handler properties back from cl-- to cl-. Fixes: debbugs:12788 --- lisp/ChangeLog | 3 +++ lisp/emacs-lisp/cl-macs.el | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 466e13b276c..5be111818dd 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2012-11-03 Glenn Morris + * emacs-lisp/cl-macs.el (cl-parse-loop-clause): + Rename handler properties back from cl-- to cl-. (Bug#12788) + * emacs-lisp/cl-macs.el (cl-do-all-symbols): Add doc string. 2012-11-03 Eli Zaretskii diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index e7a66ad1b1a..8d240774edb 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -1259,8 +1259,9 @@ Valid clauses are: loop-for-steps))) (t + ;; This is an advertised interface: (info "(cl)Other Clauses"). (let ((handler (and (symbolp word) - (get word 'cl--loop-for-handler)))) + (get word 'cl-loop-for-handler)))) (if handler (funcall handler var) (error "Expected a `for' preposition, found %s" word))))) @@ -1407,7 +1408,8 @@ Valid clauses are: ,cl--loop-finish-flag nil) cl--loop-body)) (t - (let ((handler (and (symbolp word) (get word 'cl--loop-handler)))) + ;; This is an advertised interface: (info "(cl)Other Clauses"). + (let ((handler (and (symbolp word) (get word 'cl-loop-handler)))) (or handler (error "Expected a cl-loop keyword, found %s" word)) (funcall handler)))) (if (eq (car cl--loop-args) 'and) From 0b3d4a4756646cc7e908375a457e36e15712ad00 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 3 Nov 2012 11:32:41 -0700 Subject: [PATCH 129/165] Fix a race condition that causes Emacs to mess up glib. The symptom is a diagnostic "GLib-WARNING **: In call to g_spawn_sync(), exit status of a child process was requested but SIGCHLD action was set to SIG_IGN and ECHILD was received by waitpid(), so exit status can't be returned." The diagnostic is partly wrong, as the SIGCHLD action is not set to SIG_IGN. The real bug is a race condition between Emacs and glib: Emacs does a waitpid (-1, ...) and reaps glib's subprocess by mistake, so that glib can't find it. Work around the bug by invoking waitpid only on subprocesses that Emacs itself creates. * process.c (create_process, record_child_status_change): Don't use special value -1 in pid field, as the caller now must know the pid rather than having the callee infer it. The inference was sometimes incorrect anyway, due to another race. (create_process): Set new 'alive' member if child is created. (process_status_retrieved): New function. (record_child_status_change): Use it. Accept negative 1st argument, which means to wait for the processes that Emacs already knows about. Move special-case code for DOS_NT (which lacks WNOHANG) here, from caller. Keep track of processes that have already been waited for, by testing and clearing new 'alive' member. (CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change now does this internally. (handle_child_signal): Let record_child_status_change do all the work, since we do not want to reap all exited child processes, only the child processes that Emacs itself created. * process.h (Lisp_Process): New boolean member 'alive'. Fixes: debbugs:8855 --- src/ChangeLog | 29 ++++++++ src/process.c | 201 ++++++++++++++++++++++++++------------------------ src/process.h | 3 + 3 files changed, 135 insertions(+), 98 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 3a88b9c7ce2..2f040accd9a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,34 @@ 2012-11-03 Paul Eggert + Fix a race condition that causes Emacs to mess up glib (Bug#8855). + The symptom is a diagnostic "GLib-WARNING **: In call to + g_spawn_sync(), exit status of a child process was requested but + SIGCHLD action was set to SIG_IGN and ECHILD was received by + waitpid(), so exit status can't be returned." The diagnostic + is partly wrong, as the SIGCHLD action is not set to SIG_IGN. + The real bug is a race condition between Emacs and glib: Emacs + does a waitpid (-1, ...) and reaps glib's subprocess by mistake, + so that glib can't find it. Work around the bug by invoking + waitpid only on subprocesses that Emacs itself creates. + * process.c (create_process, record_child_status_change): + Don't use special value -1 in pid field, as the caller now must + know the pid rather than having the callee infer it. The + inference was sometimes incorrect anyway, due to another race. + (create_process): Set new 'alive' member if child is created. + (process_status_retrieved): New function. + (record_child_status_change): Use it. + Accept negative 1st argument, which means to wait for the + processes that Emacs already knows about. Move special-case code + for DOS_NT (which lacks WNOHANG) here, from caller. Keep track of + processes that have already been waited for, by testing and + clearing new 'alive' member. + (CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change + now does this internally. + (handle_child_signal): Let record_child_status_change do all + the work, since we do not want to reap all exited child processes, + only the child processes that Emacs itself created. + * process.h (Lisp_Process): New boolean member 'alive'. + Omit duplicate definitions no longer needed with gcc -g3. * lisp.h (GCTYPEBITS, GCALIGNMENT, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG) (VALMASK, MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM): diff --git a/src/process.c b/src/process.c index 29c880da3b0..3c0e53f7784 100644 --- a/src/process.c +++ b/src/process.c @@ -130,6 +130,10 @@ extern int sys_select (int, SELECT_TYPE *, SELECT_TYPE *, SELECT_TYPE *, EMACS_TIME *, void *); #endif +/* This is for DOS_NT ports. FIXME: Remove this old portability cruft + by having DOS_NT ports implement waitpid instead of wait. Nowadays + POSIXish hosts all define waitpid, WNOHANG, and WUNTRACED, as these + have been standard since POSIX.1-1988. */ #ifndef WNOHANG # undef waitpid # define waitpid(pid, status, options) wait (status) @@ -795,9 +799,8 @@ get_process (register Lisp_Object name) #ifdef SIGCHLD /* Fdelete_process promises to immediately forget about the process, but in reality, Emacs needs to remember those processes until they have been - treated by the SIGCHLD handler; otherwise this handler would consider the - process as being synchronous and say that the synchronous process is - dead. */ + treated by the SIGCHLD handler and waitpid has been invoked on them; + otherwise they might fill up the kernel's process table. */ static Lisp_Object deleted_pid_list; #endif @@ -1704,16 +1707,7 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) if (inchannel > max_process_desc) max_process_desc = inchannel; - /* Until we store the proper pid, enable the SIGCHLD handler - to recognize an unknown pid as standing for this process. - It is very important not to let this `marker' value stay - in the table after this function has returned; if it does - it might cause call-process to hang and subsequent asynchronous - processes to get their return values scrambled. */ - XPROCESS (process)->pid = -1; - - /* This must be called after the above line because it may signal an - error. */ + /* This may signal an error. */ setup_process_coding_systems (process); encoded_current_dir = ENCODE_FILE (current_dir); @@ -1880,6 +1874,8 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) #endif XPROCESS (process)->pid = pid; + if (0 <= pid) + XPROCESS (process)->alive = 1; /* Stop blocking signals in the parent. */ #ifdef SIGCHLD @@ -6271,9 +6267,35 @@ process has been transmitted to the serial port. */) return process; } -/* On receipt of a signal that a child status has changed, loop asking - about children with changed statuses until the system says there - are no more. +/* If the status of the process DESIRED has changed, return true and + set *STATUS to its exit status; otherwise, return false. + If HAVE is nonnegative, assume that HAVE = waitpid (HAVE, STATUS, ...) + has already been invoked, and do not invoke waitpid again. */ + +static bool +process_status_retrieved (pid_t desired, pid_t have, int *status) +{ + if (have < 0) + { + /* Invoke waitpid only with a known process ID; do not invoke + waitpid with a nonpositive argument. Otherwise, Emacs might + reap an unwanted process by mistake. For example, invoking + waitpid (-1, ...) can mess up glib by reaping glib's subprocesses, + so that another thread running glib won't find them. */ + do + have = waitpid (desired, status, WNOHANG | WUNTRACED); + while (have < 0 && errno == EINTR); + } + + return have == desired; +} + +/* If PID is nonnegative, the child process PID with wait status W has + changed its status; record this and return true. + + If PID is negative, ignore W, and look for known child processes + of Emacs whose status have changed. For each one found, record its new + status. All we do is change the status; we do not run sentinels or print notifications. That is saved for the next time keyboard input is @@ -6296,13 +6318,23 @@ process has been transmitted to the serial port. */) ** Malloc WARNING: This should never call malloc either directly or indirectly; if it does, that is a bug */ -/* Record the changed status of the child process PID with wait status W. */ void record_child_status_change (pid_t pid, int w) { #ifdef SIGCHLD - Lisp_Object proc; - struct Lisp_Process *p; + +# ifdef WNOHANG + /* On POSIXish hosts, record at most one child only if we already + know one child that has exited. */ + bool record_at_most_one_child = 0 <= pid; +# else + /* On DOS_NT (the only porting target that lacks WNOHANG), + record the status of at most one child process, since the SIGCHLD + handler must return right away. If any more processes want to + signal us, we will get another signal. */ + bool record_at_most_one_child = 1; +# endif + Lisp_Object tail; /* Find the process that signaled us, and record its status. */ @@ -6310,68 +6342,69 @@ record_child_status_change (pid_t pid, int w) /* The process can have been deleted by Fdelete_process. */ for (tail = deleted_pid_list; CONSP (tail); tail = XCDR (tail)) { + bool all_pids_are_fixnums + = (MOST_NEGATIVE_FIXNUM <= TYPE_MINIMUM (pid_t) + && TYPE_MAXIMUM (pid_t) <= MOST_POSITIVE_FIXNUM); Lisp_Object xpid = XCAR (tail); - if ((INTEGERP (xpid) && pid == XINT (xpid)) - || (FLOATP (xpid) && pid == XFLOAT_DATA (xpid))) + if (all_pids_are_fixnums ? INTEGERP (xpid) : NUMBERP (xpid)) { - XSETCAR (tail, Qnil); - return; + pid_t deleted_pid; + if (INTEGERP (xpid)) + deleted_pid = XINT (xpid); + else + deleted_pid = XFLOAT_DATA (xpid); + if (process_status_retrieved (deleted_pid, pid, &w)) + { + XSETCAR (tail, Qnil); + if (record_at_most_one_child) + return; + } } } /* Otherwise, if it is asynchronous, it is in Vprocess_alist. */ - p = 0; for (tail = Vprocess_alist; CONSP (tail); tail = XCDR (tail)) { - proc = XCDR (XCAR (tail)); - p = XPROCESS (proc); - if (EQ (p->type, Qreal) && p->pid == pid) - break; - p = 0; - } - - /* Look for an asynchronous process whose pid hasn't been filled - in yet. */ - if (! p) - for (tail = Vprocess_alist; CONSP (tail); tail = XCDR (tail)) - { - proc = XCDR (XCAR (tail)); - p = XPROCESS (proc); - if (p->pid == -1) - break; - p = 0; - } - - /* Change the status of the process that was found. */ - if (p) - { - int clear_desc_flag = 0; - - p->tick = ++process_tick; - p->raw_status = w; - p->raw_status_new = 1; - - /* If process has terminated, stop waiting for its output. */ - if ((WIFSIGNALED (w) || WIFEXITED (w)) - && p->infd >= 0) - clear_desc_flag = 1; - - /* We use clear_desc_flag to avoid a compiler bug in Microsoft C. */ - if (clear_desc_flag) + Lisp_Object proc = XCDR (XCAR (tail)); + struct Lisp_Process *p = XPROCESS (proc); + if (p->alive && process_status_retrieved (p->pid, pid, &w)) { - FD_CLR (p->infd, &input_wait_mask); - FD_CLR (p->infd, &non_keyboard_wait_mask); - } + /* Change the status of the process that was found. */ + p->tick = ++process_tick; + p->raw_status = w; + p->raw_status_new = 1; - /* Tell wait_reading_process_output that it needs to wake up and - look around. */ - if (input_available_clear_time) - *input_available_clear_time = make_emacs_time (0, 0); + /* If process has terminated, stop waiting for its output. */ + if (WIFSIGNALED (w) || WIFEXITED (w)) + { + int clear_desc_flag = 0; + p->alive = 0; + if (p->infd >= 0) + clear_desc_flag = 1; + + /* clear_desc_flag avoids a compiler bug in Microsoft C. */ + if (clear_desc_flag) + { + FD_CLR (p->infd, &input_wait_mask); + FD_CLR (p->infd, &non_keyboard_wait_mask); + } + } + + /* Tell wait_reading_process_output that it needs to wake up and + look around. */ + if (input_available_clear_time) + *input_available_clear_time = make_emacs_time (0, 0); + + if (record_at_most_one_child) + return; + } } - /* There was no asynchronous process found for that pid: we have - a synchronous process. */ - else + + if (0 <= pid) { + /* The caller successfully waited for a pid but no asynchronous + process was found for it, so this is a synchronous process. */ + synch_process_alive = 0; /* Report the status of the synchronous process. */ @@ -6390,38 +6423,10 @@ record_child_status_change (pid_t pid, int w) #ifdef SIGCHLD -/* On some systems, the SIGCHLD handler must return right away. If - any more processes want to signal us, we will get another signal. - Otherwise, loop around to use up all the processes that have - something to tell us. */ -#if (defined WINDOWSNT \ - || (defined USG && !defined GNU_LINUX \ - && !(defined HPUX && defined WNOHANG))) -enum { CAN_HANDLE_MULTIPLE_CHILDREN = 0 }; -#else -enum { CAN_HANDLE_MULTIPLE_CHILDREN = 1 }; -#endif - static void handle_child_signal (int sig) { - do - { - pid_t pid; - int status; - - do - pid = waitpid (-1, &status, WNOHANG | WUNTRACED); - while (pid < 0 && errno == EINTR); - - /* PID == 0 means no processes found, PID == -1 means a real failure. - Either way, we have done all our job. */ - if (pid <= 0) - break; - - record_child_status_change (pid, status); - } - while (CAN_HANDLE_MULTIPLE_CHILDREN); + record_child_status_change (-1, 0); } static void diff --git a/src/process.h b/src/process.h index ce3d2e702cc..74d1a124060 100644 --- a/src/process.h +++ b/src/process.h @@ -142,6 +142,9 @@ struct Lisp_Process /* Flag to set coding-system of the process buffer from the coding_system used to decode process output. */ unsigned int inherit_coding_system_flag : 1; + /* Whether the process is alive, i.e., can be waited for. Running + processes can be waited for, but exited and fake processes cannot. */ + unsigned int alive : 1; /* Record the process status in the raw form in which it comes from `wait'. This is to avoid consing in a signal handler. The `raw_status_new' flag indicates that `raw_status' contains a new status that still From 376a8e83bb3438f77dadf2d9910ef7baabcc82c2 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 3 Nov 2012 11:36:09 -0700 Subject: [PATCH 130/165] Rename cl-random-time to cl--random-time * emacs-lisp/cl-lib.el (cl--random-time): Rename from cl-random-time. (cl--gensym-counter, cl--random-state): Update callers. * emacs-lisp/cl-extra.el (cl-make-random-state): Update callers. Fixes: debbugs:12773 --- lisp/ChangeLog | 7 +++++++ lisp/emacs-lisp/cl-extra.el | 2 +- lisp/emacs-lisp/cl-lib.el | 6 +++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d040d331903..4d2f7e766cf 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2012-11-03 Glenn Morris + + * emacs-lisp/cl-lib.el (cl--random-time): + Rename from cl-random-time. (Bug#12773) + (cl--gensym-counter, cl--random-state): Update callers. + * emacs-lisp/cl-extra.el (cl-make-random-state): Update callers. + 2012-11-03 Chong Yidong * cus-start.el: Make cursor-type customizable (Bug#11633). diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el index c72e3342648..a57de344cf3 100644 --- a/lisp/emacs-lisp/cl-extra.el +++ b/lisp/emacs-lisp/cl-extra.el @@ -440,7 +440,7 @@ If STATE is t, return a new state object seeded from the time of day." (cond ((null state) (cl-make-random-state cl--random-state)) ((vectorp state) (copy-tree state t)) ((integerp state) (vector 'cl-random-state-tag -1 30 state)) - (t (cl-make-random-state (cl-random-time))))) + (t (cl-make-random-state (cl--random-time))))) ;;;###autoload (defun cl-random-state-p (object) diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el index 122402797e1..034a5c7517e 100644 --- a/lisp/emacs-lisp/cl-lib.el +++ b/lisp/emacs-lisp/cl-lib.el @@ -264,12 +264,12 @@ one value. ;;; Symbols. -(defun cl-random-time () +(defun cl--random-time () (let* ((time (copy-sequence (current-time-string))) (i (length time)) (v 0)) (while (>= (cl-decf i) 0) (setq v (+ (* v 3) (aref time i)))) v)) -(defvar cl--gensym-counter (* (logand (cl-random-time) 1023) 100)) +(defvar cl--gensym-counter (* (logand (cl--random-time) 1023) 100)) ;;; Numbers. @@ -296,7 +296,7 @@ always returns nil." "Return t if INTEGER is even." (eq (logand integer 1) 0)) -(defvar cl--random-state (vector 'cl-random-state-tag -1 30 (cl-random-time))) +(defvar cl--random-state (vector 'cl-random-state-tag -1 30 (cl--random-time))) (defconst cl-most-positive-float nil "The largest value that a Lisp float can hold. From 7ccfb720b477df05042729e0e300bae5922f5120 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 3 Nov 2012 11:54:17 -0700 Subject: [PATCH 131/165] Fix data-loss with --batch. * admin/merge-gnulib (GNULIB_MODULES): Add close-stream. * lib/close-stream.c, lib/close-stream.h, lib/fpending.c * lib/fpending.h, m4/close-stream.m4, m4/fpending.m4: New files, from gnulib. * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate. * src/emacs.c: Include . (close_output_streams): New function. (main): Pass it to atexit, so that Emacs closes stdout and stderr and handles errors appropriately. (Fkill_emacs): Don't worry about flushing, as close_output_stream does that now. Fixes: debbugs:9574 --- ChangeLog | 8 +++++ admin/ChangeLog | 5 +++ admin/merge-gnulib | 2 +- lib/close-stream.c | 78 ++++++++++++++++++++++++++++++++++++++++ lib/close-stream.h | 2 ++ lib/fpending.c | 30 ++++++++++++++++ lib/fpending.h | 30 ++++++++++++++++ lib/gnulib.mk | 19 +++++++++- m4/close-stream.m4 | 11 ++++++ m4/fpending.m4 | 90 ++++++++++++++++++++++++++++++++++++++++++++++ m4/gnulib-comp.m4 | 15 ++++++++ src/ChangeLog | 8 +++++ src/emacs.c | 21 +++++++++-- 13 files changed, 315 insertions(+), 4 deletions(-) create mode 100644 lib/close-stream.c create mode 100644 lib/close-stream.h create mode 100644 lib/fpending.c create mode 100644 lib/fpending.h create mode 100644 m4/close-stream.m4 create mode 100644 m4/fpending.m4 diff --git a/ChangeLog b/ChangeLog index 45fe253e044..e67369492da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2012-11-03 Paul Eggert + + Fix data-loss with --batch (Bug#9574). + * lib/close-stream.c, lib/close-stream.h, lib/fpending.c + * lib/fpending.h, m4/close-stream.m4, m4/fpending.m4: + New files, from gnulib. + * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate. + 2012-11-02 Glenn Morris * Makefile.in (EMACS_ICON): New variable. diff --git a/admin/ChangeLog b/admin/ChangeLog index e21293d618d..da318dd662a 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,8 @@ +2012-11-01 Paul Eggert + + Fix data-loss with --batch (Bug#9574). + * merge-gnulib (GNULIB_MODULES): Add close-stream. + 2012-10-12 Kenichi Handa * charsets/Makefile (JISC6226.map): Add missing mappings. diff --git a/admin/merge-gnulib b/admin/merge-gnulib index 7fc0b5f4844..901daf4e442 100755 --- a/admin/merge-gnulib +++ b/admin/merge-gnulib @@ -27,7 +27,7 @@ GNULIB_URL=git://git.savannah.gnu.org/gnulib.git GNULIB_MODULES=' alloca-opt c-ctype c-strcase - careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 + careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat diff --git a/lib/close-stream.c b/lib/close-stream.c new file mode 100644 index 00000000000..04fa5ece09d --- /dev/null +++ b/lib/close-stream.c @@ -0,0 +1,78 @@ +/* Close a stream, with nicer error checking than fclose's. + + Copyright (C) 1998-2002, 2004, 2006-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +#include "close-stream.h" + +#include +#include + +#include "fpending.h" + +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif + +/* Close STREAM. Return 0 if successful, EOF (setting errno) + otherwise. A failure might set errno to 0 if the error number + cannot be determined. + + A failure with errno set to EPIPE may or may not indicate an error + situation worth signaling to the user. See the documentation of the + close_stdout_set_ignore_EPIPE function for details. + + If a program writes *anything* to STREAM, that program should close + STREAM and make sure that it succeeds before exiting. Otherwise, + suppose that you go to the extreme of checking the return status + of every function that does an explicit write to STREAM. The last + printf can succeed in writing to the internal stream buffer, and yet + the fclose(STREAM) could still fail (due e.g., to a disk full error) + when it tries to write out that buffered data. Thus, you would be + left with an incomplete output file and the offending program would + exit successfully. Even calling fflush is not always sufficient, + since some file systems (NFS and CODA) buffer written/flushed data + until an actual close call. + + Besides, it's wasteful to check the return value from every call + that writes to STREAM -- just let the internal stream state record + the failure. That's what the ferror test is checking below. */ + +int +close_stream (FILE *stream) +{ + const bool some_pending = (__fpending (stream) != 0); + const bool prev_fail = (ferror (stream) != 0); + const bool fclose_fail = (fclose (stream) != 0); + + /* Return an error indication if there was a previous failure or if + fclose failed, with one exception: ignore an fclose failure if + there was no previous error, no data remains to be flushed, and + fclose failed with EBADF. That can happen when a program like cp + is invoked like this 'cp a b >&-' (i.e., with standard output + closed) and doesn't generate any output (hence no previous error + and nothing to be flushed). */ + + if (prev_fail || (fclose_fail && (some_pending || errno != EBADF))) + { + if (! fclose_fail) + errno = 0; + return EOF; + } + + return 0; +} diff --git a/lib/close-stream.h b/lib/close-stream.h new file mode 100644 index 00000000000..be3d4196b06 --- /dev/null +++ b/lib/close-stream.h @@ -0,0 +1,2 @@ +#include +int close_stream (FILE *stream); diff --git a/lib/fpending.c b/lib/fpending.c new file mode 100644 index 00000000000..2591d534377 --- /dev/null +++ b/lib/fpending.c @@ -0,0 +1,30 @@ +/* fpending.c -- return the number of pending output bytes on a stream + Copyright (C) 2000, 2004, 2006-2007, 2009-2012 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Jim Meyering. */ + +#include + +#include "fpending.h" + +/* Return the number of pending (aka buffered, unflushed) + bytes on the stream, FP, that is open for writing. */ +size_t +__fpending (FILE *fp) +{ + return PENDING_OUTPUT_N_BYTES; +} diff --git a/lib/fpending.h b/lib/fpending.h new file mode 100644 index 00000000000..0365287ba76 --- /dev/null +++ b/lib/fpending.h @@ -0,0 +1,30 @@ +/* Declare __fpending. + + Copyright (C) 2000, 2003, 2005-2006, 2009-2012 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + Written by Jim Meyering. */ + +#include +#include + +#if HAVE_DECL___FPENDING +# if HAVE_STDIO_EXT_H +# include +# endif +#else +size_t __fpending (FILE *); +#endif diff --git a/lib/gnulib.mk b/lib/gnulib.mk index 23749331a83..324e5cb78fd 100644 --- a/lib/gnulib.mk +++ b/lib/gnulib.mk @@ -21,7 +21,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=errno --avoid=fcntl --avoid=fcntl-h --avoid=fstat --avoid=msvc-inval --avoid=msvc-nothrow --avoid=raise --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub utimens warnings +# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=errno --avoid=fcntl --avoid=fcntl-h --avoid=fstat --avoid=msvc-inval --avoid=msvc-nothrow --avoid=raise --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub utimens warnings MOSTLYCLEANFILES += core *.stackdump @@ -84,6 +84,14 @@ EXTRA_DIST += careadlinkat.h ## end gnulib module careadlinkat +## begin gnulib module close-stream + +libgnu_a_SOURCES += close-stream.c + +EXTRA_DIST += close-stream.h + +## end gnulib module close-stream + ## begin gnulib module crypto/md5 libgnu_a_SOURCES += md5.c @@ -183,6 +191,15 @@ EXTRA_DIST += filemode.h ## end gnulib module filemode +## begin gnulib module fpending + + +EXTRA_DIST += fpending.c fpending.h + +EXTRA_libgnu_a_SOURCES += fpending.c + +## end gnulib module fpending + ## begin gnulib module getloadavg diff --git a/m4/close-stream.m4 b/m4/close-stream.m4 new file mode 100644 index 00000000000..be0c8a22979 --- /dev/null +++ b/m4/close-stream.m4 @@ -0,0 +1,11 @@ +#serial 4 +dnl Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Prerequisites of lib/close-stream.c. +AC_DEFUN([gl_CLOSE_STREAM], +[ + : +]) diff --git a/m4/fpending.m4 b/m4/fpending.m4 new file mode 100644 index 00000000000..33a5c94c3a3 --- /dev/null +++ b/m4/fpending.m4 @@ -0,0 +1,90 @@ +# serial 19 + +# Copyright (C) 2000-2001, 2004-2012 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +dnl From Jim Meyering +dnl Using code from emacs, based on suggestions from Paul Eggert +dnl and Ulrich Drepper. + +dnl Find out how to determine the number of pending output bytes on a stream. +dnl glibc (2.1.93 and newer) and Solaris provide __fpending. On other systems, +dnl we have to grub around in the FILE struct. + +AC_DEFUN([gl_FUNC_FPENDING], +[ + AC_CHECK_HEADERS_ONCE([stdio_ext.h]) + AC_CHECK_FUNCS_ONCE([__fpending]) + fp_headers=' +# include +# if HAVE_STDIO_EXT_H +# include +# endif +' + AC_CHECK_DECLS([__fpending], , , $fp_headers) +]) + +AC_DEFUN([gl_PREREQ_FPENDING], +[ + AC_CACHE_CHECK( + [how to determine the number of pending output bytes on a stream], + ac_cv_sys_pending_output_n_bytes, + [ + for ac_expr in \ + \ + '# glibc2' \ + 'fp->_IO_write_ptr - fp->_IO_write_base' \ + \ + '# traditional Unix' \ + 'fp->_ptr - fp->_base' \ + \ + '# BSD' \ + 'fp->_p - fp->_bf._base' \ + \ + '# SCO, Unixware' \ + '(fp->__ptr ? fp->__ptr - fp->__base : 0)' \ + \ + '# QNX' \ + '(fp->_Mode & 0x2000 /*_MWRITE*/ ? fp->_Next - fp->_Buf : 0)' \ + \ + '# old glibc?' \ + 'fp->__bufp - fp->__buffer' \ + \ + '# old glibc iostream?' \ + 'fp->_pptr - fp->_pbase' \ + \ + '# emx+gcc' \ + 'fp->_ptr - fp->_buffer' \ + \ + '# Minix' \ + 'fp->_ptr - fp->_buf' \ + \ + '# Plan9' \ + 'fp->wp - fp->buf' \ + \ + '# VMS' \ + '(*fp)->_ptr - (*fp)->_base' \ + \ + '# e.g., DGUX R4.11; the info is not available' \ + 1 \ + ; do + + # Skip each embedded comment. + case "$ac_expr" in '#'*) continue;; esac + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[FILE *fp = stdin; (void) ($ac_expr);]])], + [fp_done=yes] + ) + test "$fp_done" = yes && break + done + + ac_cv_sys_pending_output_n_bytes=$ac_expr + ] + ) + AC_DEFINE_UNQUOTED([PENDING_OUTPUT_N_BYTES], + $ac_cv_sys_pending_output_n_bytes, + [the number of pending output bytes on stream 'fp']) +]) diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4 index de2355d87c3..5cd278454e7 100644 --- a/m4/gnulib-comp.m4 +++ b/m4/gnulib-comp.m4 @@ -44,6 +44,7 @@ AC_DEFUN([gl_EARLY], # Code from module c-strcase: # Code from module careadlinkat: # Code from module clock-time: + # Code from module close-stream: # Code from module crypto/md5: # Code from module crypto/sha1: # Code from module crypto/sha256: @@ -58,6 +59,7 @@ AC_DEFUN([gl_EARLY], AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) # Code from module extern-inline: # Code from module filemode: + # Code from module fpending: # Code from module getloadavg: # Code from module getopt-gnu: # Code from module getopt-posix: @@ -141,6 +143,8 @@ AC_DEFUN([gl_INIT], gl_FUNC_ALLOCA AC_CHECK_FUNCS_ONCE([readlinkat]) gl_CLOCK_TIME + gl_CLOSE_STREAM + gl_MODULE_INDICATOR([close-stream]) gl_MD5 gl_SHA1 gl_SHA256 @@ -157,6 +161,11 @@ AC_DEFUN([gl_INIT], gl_EXECINFO_H AC_REQUIRE([gl_EXTERN_INLINE]) gl_FILEMODE + gl_FUNC_FPENDING + if test $ac_cv_func___fpending = no; then + AC_LIBOBJ([fpending]) + gl_PREREQ_FPENDING + fi gl_GETLOADAVG if test $HAVE_GETLOADAVG = 0; then AC_LIBOBJ([getloadavg]) @@ -534,6 +543,8 @@ AC_DEFUN([gl_FILE_LIST], [ lib/c-strncasecmp.c lib/careadlinkat.c lib/careadlinkat.h + lib/close-stream.c + lib/close-stream.h lib/dosname.h lib/dtoastr.c lib/dtotimespec.c @@ -542,6 +553,8 @@ AC_DEFUN([gl_FILE_LIST], [ lib/execinfo.in.h lib/filemode.c lib/filemode.h + lib/fpending.c + lib/fpending.h lib/ftoastr.c lib/ftoastr.h lib/getloadavg.c @@ -609,12 +622,14 @@ AC_DEFUN([gl_FILE_LIST], [ m4/alloca.m4 m4/c-strtod.m4 m4/clock_time.m4 + m4/close-stream.m4 m4/dup2.m4 m4/environ.m4 m4/execinfo.m4 m4/extensions.m4 m4/extern-inline.m4 m4/filemode.m4 + m4/fpending.m4 m4/getloadavg.m4 m4/getopt.m4 m4/gettime.m4 diff --git a/src/ChangeLog b/src/ChangeLog index 2f040accd9a..be10016fc33 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,13 @@ 2012-11-03 Paul Eggert + Fix data-loss with --batch (Bug#9574). + * emacs.c: Include . + (close_output_streams): New function. + (main): Pass it to atexit, so that Emacs closes stdout and stderr + and handles errors appropriately. + (Fkill_emacs): Don't worry about flushing, as close_output_stream + does that now. + Fix a race condition that causes Emacs to mess up glib (Bug#8855). The symptom is a diagnostic "GLib-WARNING **: In call to g_spawn_sync(), exit status of a child process was requested but diff --git a/src/emacs.c b/src/emacs.c index 98e3f11f0cb..6588bcd78b1 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -27,6 +27,7 @@ along with GNU Emacs. If not, see . */ #include #include +#include #include #include "lisp.h" @@ -675,6 +676,22 @@ void (*__malloc_initialize_hook) (void) EXTERNALLY_VISIBLE = malloc_initialize_h #endif /* DOUG_LEA_MALLOC */ +/* Close standard output and standard error, reporting any write + errors as best we can. This is intended for use with atexit. */ +static void +close_output_streams (void) +{ + if (close_stream (stdout) != 0) + { + fprintf (stderr, "Write error to standard output: %s\n", + emacs_strerror (errno)); + fflush (stderr); + _exit (EXIT_FAILURE); + } + + if (close_stream (stderr) != 0) + _exit (EXIT_FAILURE); +} /* ARGSUSED */ int @@ -890,6 +907,8 @@ main (int argc, char **argv) if (do_initial_setlocale) setlocale (LC_ALL, ""); + atexit (close_output_streams); + inhibit_window_system = 0; /* Handle the -t switch, which specifies filename to use as terminal. */ @@ -1867,8 +1886,6 @@ all of which are called before Emacs is actually killed. */) exit_code = (XINT (arg) < 0 ? XINT (arg) | INT_MIN : XINT (arg) & INT_MAX); - else if (noninteractive && (fflush (stdout) || ferror (stdout))) - exit_code = EXIT_FAILURE; else exit_code = EXIT_SUCCESS; exit (exit_code); From 92246540b0616afd90600aabbac964f5a0b544ca Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 3 Nov 2012 11:55:29 -0700 Subject: [PATCH 132/165] Further small cl.texi changes * doc/misc/cl.texi (Creating Symbols, Random Numbers): De-emphasize internal variables cl--gensym-counter and cl--random-state. * etc/NEWS: Related edits. Fixes: debbugs:12788 --- doc/misc/ChangeLog | 2 ++ doc/misc/cl.texi | 38 +++++++++++++------------------------- etc/NEWS | 5 +++-- 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 6bd601bef5d..62308037fec 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -4,6 +4,8 @@ (List Functions): Remove copy-tree, standard elisp for some time. (Efficiency Concerns): Comment out examples that no longer apply. (Compiler Optimizations): Rename from "Optimizing Compiler"; reword. + (Creating Symbols, Random Numbers): De-emphasize internal + variables cl--gensym-counter and cl--random-state. (Bug#12788) 2012-11-02 Glenn Morris diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 1b1a3f9836f..e182c2600f9 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -2874,21 +2874,17 @@ string is used as a prefix instead of @samp{G}. Uninterned symbols are used in macro expansions for temporary variables, to ensure that their names will not conflict with ``real'' variables in the user's code. -@end defun -@c FIXME texinfo renders this as as cl-gensym-counter in info. -@c It looks fine in the index, and in the pdf version. -@defvar cl--gensym-counter -This variable holds the counter used to generate @code{cl-gensym} names. -It is incremented after each use by @code{cl-gensym}. In Common Lisp -this is initialized with 0, but this package initializes it with a -random (time-dependent) value to avoid trouble when two files that +(Internally, the variable @code{cl--gensym-counter} holds the counter +used to generate names. It is incremented after each use. In Common +Lisp this is initialized with 0, but this package initializes it with +a random time-dependent value to avoid trouble when two files that each used @code{cl-gensym} in their compilation are loaded together. -(Uninterned symbols become interned when the compiler writes them -out to a file and the Emacs loader loads them, so their names have to -be treated a bit more carefully than in Common Lisp where uninterned +Uninterned symbols become interned when the compiler writes them out +to a file and the Emacs loader loads them, so their names have to be +treated a bit more carefully than in Common Lisp where uninterned symbols remain uninterned after loading.) -@end defvar +@end defun @defun cl-gentemp &optional x This function is like @code{cl-gensym}, except that it produces a new @@ -3051,22 +3047,14 @@ This function returns a random nonnegative number less than The @var{state} argument should be a @code{random-state} object that holds the state of the random number generator. The function modifies this state object as a side effect. If -@var{state} is omitted, it defaults to the variable +@var{state} is omitted, it defaults to the internal variable @code{cl--random-state}, which contains a pre-initialized -@code{random-state} object. +default @code{random-state} object. (Since any number of programs in +the Emacs process may be accessing @code{cl--random-state} in +interleaved fashion, the sequence generated from this will be +irreproducible for all intents and purposes.) @end defun -@c FIXME texinfo renders this as cl-random-state in info. -@c It looks fine in the index, and in the pdf version. -@defvar cl--random-state -This variable contains the system ``default'' @code{random-state} -object, used for calls to @code{cl-random} that do not specify an -alternative state object. Since any number of programs in the -Emacs process may be accessing @code{cl--random-state} in interleaved -fashion, the sequence generated from this variable will be -irreproducible for all intents and purposes. -@end defvar - @defun cl-make-random-state &optional state This function creates or copies a @code{random-state} object. If @var{state} is omitted or @code{nil}, it returns a new copy of diff --git a/etc/NEWS b/etc/NEWS index 9ece829217f..4f8b56cb363 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -302,6 +302,7 @@ Customize `cal-html-holidays' to change this. ** CL ++++ *** CL's main entry is now (require 'cl-lib). `cl-lib' is like the old `cl' except that it uses the namespace cleanly, i.e. all its definitions have the "cl-" prefix (and internal definitions use @@ -312,8 +313,8 @@ under the name `cl-foo' instead, with the exceptions of the few definitions that had to use `foo*' to avoid conflicts with pre-existing Elisp entities, which have not been renamed to `cl-foo*' but just `cl-foo'. -The old `cl' is now deprecated and is just a bunch of aliases that -provide the old non-prefixed names. +The old `cl' is now deprecated and is mainly just a bunch of aliases that +provide the old non-prefixed names. Some exceptions are listed below. +++ *** `cl-flet' is not like `flet' (which is deprecated). From 5ccd466c8249e954f140aff34c6e0f4f4d2751d5 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 3 Nov 2012 12:19:05 -0700 Subject: [PATCH 133/165] * admin/admin.el (set-copyright): Add msdos/sed2v2.inp. --- admin/ChangeLog | 4 ++++ admin/admin.el | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/admin/ChangeLog b/admin/ChangeLog index da318dd662a..ccb54a0a9ed 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,7 @@ +2012-11-03 Glenn Morris + + * admin.el (set-copyright): Add msdos/sed2v2.inp. + 2012-11-01 Paul Eggert Fix data-loss with --batch (Bug#9574). diff --git a/admin/admin.el b/admin/admin.el index 59d085b6405..ec78fb27865 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -158,6 +158,10 @@ Root must be the root of an Emacs source tree." (set-version-in-file root "configure.ac" copyright (rx (and bol "copyright" (0+ (not (in ?\"))) ?\" (submatch (1+ (not (in ?\")))) ?\"))) + (set-version-in-file root "msdos/sed2v2.inp" copyright + (rx (and bol "/^#undef " (1+ not-newline) + "define COPYRIGHT" (1+ space) + ?\" (submatch (1+ (not (in ?\")))) ?\"))) (set-version-in-file root "nt/config.nt" copyright (rx (and bol "#" (0+ blank) "define" (1+ blank) "COPYRIGHT" (1+ blank) From 3a7089c180e0fdaf7b72514079dc3bdf3627ecfd Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Nov 2012 22:43:29 +0200 Subject: [PATCH 134/165] Fix Windows build as fallout from 2012-11-03T18:54:17Z!eggert@cs.ucla.edu. nt/config.nt (PENDING_OUTPUT_N_BYTES): Define. lib/makefile.w32-in (GNULIBOBJS): Add $(BLD)/fpending.$(O) and $(BLD)/close-stream.$(O). ($(BLD)/close-stream.$(O)): ($(BLD)/fpending.$(O)): New dependencies. Fixes: debbugs:9574 --- ChangeLog | 5 +++++ lib/makefile.w32-in | 14 ++++++++++++++ nt/ChangeLog | 4 ++++ nt/config.nt | 3 +++ 4 files changed, 26 insertions(+) diff --git a/ChangeLog b/ChangeLog index 4d632fc8c33..bc37c11eb5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2012-11-03 Eli Zaretskii + * lib/makefile.w32-in (GNULIBOBJS): Add $(BLD)/fpending.$(O) and + $(BLD)/close-stream.$(O). + ($(BLD)/close-stream.$(O)): + ($(BLD)/fpending.$(O)): New dependencies. + * config.bat: Copy lib/execinfo.in.h to lib/execinfo.in-h if needed. 2012-11-03 Paul Eggert diff --git a/lib/makefile.w32-in b/lib/makefile.w32-in index f0cea56f829..7e807278a40 100644 --- a/lib/makefile.w32-in +++ b/lib/makefile.w32-in @@ -26,9 +26,11 @@ LIBS = GNULIBOBJS = $(BLD)/c-ctype.$(O) \ $(BLD)/c-strcasecmp.$(O) \ $(BLD)/c-strncasecmp.$(O) \ + $(BLD)/close-stream.$(O) \ $(BLD)/dtoastr.$(O) \ $(BLD)/dtotimespec.$(O) \ $(BLD)/execinfo.$(O) \ + $(BLD)/fpending.$(O) \ $(BLD)/getopt.$(O) \ $(BLD)/getopt1.$(O) \ $(BLD)/gettime.$(O) \ @@ -114,6 +116,13 @@ $(BLD)/c-strcasecmp.$(O) : \ $(CONFIG_H) \ $(C_CTYPE_H) +$(BLD)/close-stream.$(O) : \ + $(GNU_LIB)/close-stream.c \ + $(GNU_LIB)/close-stream.h \ + $(GNU_LIB)/fpending.h \ + $(NT_INC)/stdbool.h \ + $(CONFIG_H) + $(BLD)/c-strncasecmp.$(O) : \ $(GNU_LIB)/c-strncasecmp.c \ $(GNU_LIB)/c-strcase.h \ @@ -135,6 +144,11 @@ $(BLD)/execinfo.$(O) : \ $(GNU_LIB)/execinfo.h \ $(CONFIG_H) +$(BLD)/fpending.$(O) : \ + $(GNU_LIB)/fpending.c \ + $(GNU_LIB)/fpending.h \ + $(CONFIG_H) + $(BLD)/getopt.$(O) : \ $(GNU_LIB)/getopt.c \ $(GNU_LIB)/getopt.h \ diff --git a/nt/ChangeLog b/nt/ChangeLog index d34d23df4d5..e2e50f11d9b 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,7 @@ +2012-11-03 Eli Zaretskii + + * config.nt (PENDING_OUTPUT_N_BYTES): Define. + 2012-11-01 Eli Zaretskii * inc/unistd.h (setpgid, getpgrp): Provide prototypes. (Bug#12776) diff --git a/nt/config.nt b/nt/config.nt index f690b126b77..8f4cf858910 100644 --- a/nt/config.nt +++ b/nt/config.nt @@ -1219,6 +1219,9 @@ along with GNU Emacs. If not, see . */ /* Number of chars of output in the buffer of a stdio stream. */ #undef PENDING_OUTPUT_COUNT +/* the number of pending output bytes on stream 'fp' */ +#define PENDING_OUTPUT_N_BYTES (fp->_ptr - fp->_base) + /* Define to empty to suppress deprecation warnings when building with --enable-gcc-warnings and with libpng versions before 1.5, which lack png_longjmp. */ From 3478f4b5c48c636aa1fbbfad52e42ffdf61de606 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 3 Nov 2012 22:48:03 +0200 Subject: [PATCH 135/165] Fix order of entries in ChangeLog files. --- ChangeLog | 6 ++++-- src/ChangeLog | 36 ++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index bc37c11eb5d..a344ec765d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,8 +5,6 @@ ($(BLD)/close-stream.$(O)): ($(BLD)/fpending.$(O)): New dependencies. - * config.bat: Copy lib/execinfo.in.h to lib/execinfo.in-h if needed. - 2012-11-03 Paul Eggert Fix data-loss with --batch (Bug#9574). @@ -15,6 +13,10 @@ New files, from gnulib. * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate. +2012-11-03 Eli Zaretskii + + * config.bat: Copy lib/execinfo.in.h to lib/execinfo.in-h if needed. + 2012-11-02 Glenn Morris * Makefile.in (EMACS_ICON): New variable. diff --git a/src/ChangeLog b/src/ChangeLog index 16b694e6e24..e2d86b75e57 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,21 +1,3 @@ -2012-11-03 Eli Zaretskii - - * lisp.mk: Adjust comments to the fact that term/internal is now - loaded from loadup.el. - - * msdos.c (msdos_abort): Rename from emacs_abort, and make static. - (msdos_fatal_signal): New function. - (XMenuActivate): Adjust the call to kbd_buffer_events_waiting to - its argument list. - - * conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Define to "inline" - for GCC versions before 4. - (emacs_raise): Define to call msdos_fatal_signal. - - * xdisp.c (init_from_display_pos): Fix initialization of the bidi - iterator when starting in the middle of a display or overlay - string. (Bug#12745) - 2012-11-03 Paul Eggert Fix data-loss with --batch (Bug#9574). @@ -62,6 +44,24 @@ these symbols as enums or as constants, since we now assume gcc -g3 when debugging. +2012-11-03 Eli Zaretskii + + * lisp.mk: Adjust comments to the fact that term/internal is now + loaded from loadup.el. + + * msdos.c (msdos_abort): Rename from emacs_abort, and make static. + (msdos_fatal_signal): New function. + (XMenuActivate): Adjust the call to kbd_buffer_events_waiting to + its argument list. + + * conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Define to "inline" + for GCC versions before 4. + (emacs_raise): Define to call msdos_fatal_signal. + + * xdisp.c (init_from_display_pos): Fix initialization of the bidi + iterator when starting in the middle of a display or overlay + string. (Bug#12745) + 2012-11-03 Chong Yidong * process.c (wait_reading_process_output): Clean up the last From 85178ca1361874a4ce78f13b827d5c3fa8687856 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Sun, 4 Nov 2012 11:24:00 +0800 Subject: [PATCH 136/165] Don't bind same-window-* in isearch.el commands. * isearch.el (isearch-help-for-help, isearch-describe-bindings) (isearch-describe-key, isearch-describe-mode): Use a display action instead of binding same-window-* variables. Fixes: debbugs:10040 --- lisp/ChangeLog | 6 ++++++ lisp/isearch.el | 10 ++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c9a389be38b..84d70ccab18 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2012-11-04 Juri Linkov + + * isearch.el (isearch-help-for-help, isearch-describe-bindings) + (isearch-describe-key, isearch-describe-mode): Use a display + action instead of binding same-window-* variables (Bug#10040). + 2012-11-03 Glenn Morris * emacs-lisp/cl-macs.el (cl-parse-loop-clause): diff --git a/lisp/isearch.el b/lisp/isearch.el index 0bfda880d93..54ec3f2b052 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -374,10 +374,12 @@ but outside of this help window when you type them in Isearch mode, they exit Isearch mode before displaying global help." isearch-help-map) +(defvar isearch--display-help-action '(nil (inhibit-same-window . t))) + (defun isearch-help-for-help () "Display Isearch help menu." (interactive) - (let (same-window-buffer-names same-window-regexps) + (let ((display-buffer-overriding-action isearch--display-help-action)) (isearch-help-for-help-internal)) (isearch-update)) @@ -385,7 +387,7 @@ they exit Isearch mode before displaying global help." "Show a list of all keys defined in Isearch mode, and their definitions. This is like `describe-bindings', but displays only Isearch keys." (interactive) - (let (same-window-buffer-names same-window-regexps) + (let ((display-buffer-overriding-action isearch--display-help-action)) (with-help-window "*Help*" (with-current-buffer standard-output (princ "Isearch Mode Bindings:\n") @@ -394,14 +396,14 @@ This is like `describe-bindings', but displays only Isearch keys." (defun isearch-describe-key () "Display documentation of the function invoked by isearch key." (interactive) - (let (same-window-buffer-names same-window-regexps) + (let ((display-buffer-overriding-action isearch--display-help-action)) (call-interactively 'describe-key)) (isearch-update)) (defun isearch-describe-mode () "Display documentation of Isearch mode." (interactive) - (let (same-window-buffer-names same-window-regexps) + (let ((display-buffer-overriding-action isearch--display-help-action)) (describe-function 'isearch-forward)) (isearch-update)) From 2cbafa5672c8ed115a851368b9f2e435152b4643 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 4 Nov 2012 11:25:18 +0800 Subject: [PATCH 137/165] * bookmark.el (bookmark-bmenu-switch-other-window): Avoid binding same-window-* variables. --- lisp/ChangeLog | 5 +++++ lisp/bookmark.el | 6 ++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 84d70ccab18..ce4919afa2b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-11-04 Chong Yidong + + * bookmark.el (bookmark-bmenu-switch-other-window): Avoid binding + same-window-* variables. + 2012-11-04 Juri Linkov * isearch.el (isearch-help-for-help, isearch-describe-bindings) diff --git a/lisp/bookmark.el b/lisp/bookmark.el index 78ca6f22c8e..e3fdf1847b8 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el @@ -1873,10 +1873,8 @@ With a prefix arg, prompts for a file to save them in." The current window remains selected." (interactive) (let ((bookmark (bookmark-bmenu-bookmark)) - (pop-up-windows t) - same-window-buffer-names - same-window-regexps) - (bookmark--jump-via bookmark 'display-buffer))) + (fun (lambda (b) (display-buffer b t)))) + (bookmark--jump-via bookmark fun))) (defun bookmark-bmenu-other-window-with-mouse (event) "Select bookmark at the mouse pointer in other window, leaving bookmark menu visible." From 8f31e74bc70d3da2947b81fbc671cb651ccdbabf Mon Sep 17 00:00:00 2001 From: Michael Marchionna Date: Sun, 4 Nov 2012 11:34:10 +0800 Subject: [PATCH 138/165] * nsterm.m: Add NSClearLineFunctionKey and keypad keys. (keyDown): Remap keypad keys to X11 virtual key codes. Fixes: debbugs:8680 --- src/ChangeLog | 5 +++++ src/nsterm.m | 26 +++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index e2d86b75e57..b30b2163435 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-11-04 Michael Marchionna + + * nsterm.m: Add NSClearLineFunctionKey and keypad keys (Bug#8680). + (keyDown): Remap keypad keys to X11 virtual key codes. + 2012-11-03 Paul Eggert Fix data-loss with --batch (Bug#9574). diff --git a/src/nsterm.m b/src/nsterm.m index 9b2e544c75b..e4621247854 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -100,6 +100,7 @@ static unsigned convert_ns_to_X_keysym[] = NSBeginFunctionKey, 0x58, NSSelectFunctionKey, 0x60, NSPrintFunctionKey, 0x61, + NSClearLineFunctionKey, 0x0B, NSExecuteFunctionKey, 0x62, NSInsertFunctionKey, 0x63, NSUndoFunctionKey, 0x65, @@ -144,6 +145,23 @@ static unsigned convert_ns_to_X_keysym[] = NSNewlineCharacter, 0x0D, NSEnterCharacter, 0x8D, + 0x41, 0xAE, /* KP_Decimal */ + 0x43, 0xAA, /* KP_Multiply */ + 0x45, 0xAB, /* KP_Add */ + 0x4B, 0xAF, /* KP_Divide */ + 0x4E, 0xAD, /* KP_Subtract */ + 0x51, 0xBD, /* KP_Equal */ + 0x52, 0xB0, /* KP_0 */ + 0x53, 0xB1, /* KP_1 */ + 0x54, 0xB2, /* KP_2 */ + 0x55, 0xB3, /* KP_3 */ + 0x56, 0xB4, /* KP_4 */ + 0x57, 0xB5, /* KP_5 */ + 0x58, 0xB6, /* KP_6 */ + 0x59, 0xB7, /* KP_7 */ + 0x5B, 0xB8, /* KP_8 */ + 0x5C, 0xB9, /* KP_9 */ + 0x1B, 0x1B /* escape */ }; @@ -4754,12 +4772,12 @@ not_in_argv (NSString *arg) Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (emacsframe); int code; unsigned fnKeysym = 0; - int flags; static NSMutableArray *nsEvArray; #if !defined (NS_IMPL_COCOA) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6 static BOOL firstTime = YES; #endif int left_is_none; + unsigned int flags = [theEvent modifierFlags]; NSTRACE (keyDown); @@ -4810,7 +4828,10 @@ not_in_argv (NSString *arg) /* (Carbon way: [theEvent keyCode]) */ /* is it a "function key"? */ - fnKeysym = ns_convert_key (code); + fnKeysym = (code < 0x00ff && (flags&NSNumericPadKeyMask)) + ? ns_convert_key ([theEvent keyCode]) + : ns_convert_key (code); + if (fnKeysym) { /* COUNTERHACK: map 'Delete' on upper-right main KB to 'Backspace', @@ -4823,7 +4844,6 @@ not_in_argv (NSString *arg) /* are there modifiers? */ emacs_event->modifiers = 0; - flags = [theEvent modifierFlags]; if (flags & NSHelpKeyMask) emacs_event->modifiers |= hyper_modifier; From 9749e2b071a93101b1f3199fcc8634b9cf99a088 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 3 Nov 2012 21:13:13 -0700 Subject: [PATCH 139/165] * lisp/vc/vc-svn.el (vc-svn-state-heuristic): Avoid calling svn. Fixes: debbugs:7850 --- lisp/ChangeLog | 4 ++++ lisp/vc/vc-svn.el | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ce4919afa2b..09f3a586b4f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-11-04 Glenn Morris + + * vc/vc-svn.el (vc-svn-state-heuristic): Avoid calling svn. (Bug#7850) + 2012-11-04 Chong Yidong * bookmark.el (bookmark-bmenu-switch-other-window): Avoid binding diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el index 6c2367c7ba6..3becd8950f1 100644 --- a/lisp/vc/vc-svn.el +++ b/lisp/vc/vc-svn.el @@ -155,9 +155,24 @@ If you want to force an empty list of arguments, use t." (vc-svn-command t 0 file "status" (if localp "-v" "-u")) (vc-svn-parse-status file)))) +;; NB this does not handle svn properties, which can be changed +;; without changing the file timestamp. +;; Note that unlike vc-cvs-state-heuristic, this is not called from +;; vc-svn-state. AFAICS, it is only called from vc-state-refresh via +;; vc-after-save (bug#7850). Therefore the fact that it ignores +;; properties is irrelevant. If you want to make vc-svn-state call +;; this, it should be extended to handle svn properties. (defun vc-svn-state-heuristic (file) "SVN-specific state heuristic." - (vc-svn-state file 'local)) + ;; If the file has not changed since checkout, consider it `up-to-date'. + ;; Otherwise consider it `edited'. Copied from vc-cvs-state-heuristic. + (let ((checkout-time (vc-file-getprop file 'vc-checkout-time)) + (lastmod (nth 5 (file-attributes file)))) + (cond + ((equal checkout-time lastmod) 'up-to-date) + ((string= (vc-working-revision file) "0") 'added) + ((null checkout-time) 'unregistered) + (t 'edited)))) ;; FIXME it would be better not to have the "remote" argument, ;; but to distinguish the two output formats based on content. From 3bf26e9640bba74517c7d616e7a9e903d25e7077 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 4 Nov 2012 06:19:07 -0500 Subject: [PATCH 140/165] Auto-commit of generated files. --- autogen/Makefile.in | 61 +++++++++++---------- autogen/aclocal.m4 | 2 + autogen/config.in | 11 ++++ autogen/configure | 129 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+), 28 deletions(-) diff --git a/autogen/Makefile.in b/autogen/Makefile.in index db60a006a21..d7855ac46ee 100644 --- a/autogen/Makefile.in +++ b/autogen/Makefile.in @@ -36,7 +36,7 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=errno --avoid=fcntl --avoid=fcntl-h --avoid=fstat --avoid=msvc-inval --avoid=msvc-nothrow --avoid=raise --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub utimens warnings +# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=errno --avoid=fcntl --avoid=fcntl-h --avoid=fstat --avoid=msvc-inval --avoid=msvc-nothrow --avoid=raise --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt c-ctype c-strcase careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo filemode getloadavg getopt-gnu gettime gettimeofday ignore-value intprops largefile lstat manywarnings mktime pselect pthread_sigmask readlink socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub utimens warnings VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ @@ -64,12 +64,14 @@ subdir = lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/c-strtod.m4 \ - $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/dup2.m4 \ + $(top_srcdir)/m4/clock_time.m4 \ + $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/dup2.m4 \ $(top_srcdir)/m4/environ.m4 $(top_srcdir)/m4/execinfo.m4 \ $(top_srcdir)/m4/extensions.m4 \ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/filemode.m4 \ - $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getopt.m4 \ - $(top_srcdir)/m4/gettime.m4 $(top_srcdir)/m4/gettimeofday.m4 \ + $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/getloadavg.m4 \ + $(top_srcdir)/m4/getopt.m4 $(top_srcdir)/m4/gettime.m4 \ + $(top_srcdir)/m4/gettimeofday.m4 \ $(top_srcdir)/m4/gnulib-common.m4 \ $(top_srcdir)/m4/gnulib-comp.m4 \ $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inttypes.m4 \ @@ -111,17 +113,18 @@ libgnu_a_AR = $(AR) $(ARFLAGS) am__DEPENDENCIES_1 = am__libgnu_a_SOURCES_DIST = allocator.c c-ctype.h c-ctype.c \ c-strcase.h c-strcasecmp.c c-strncasecmp.c careadlinkat.c \ - md5.c sha1.c sha256.c sha512.c dtoastr.c dtotimespec.c \ - filemode.c gettext.h gettime.c stat-time.c strftime.c \ - timespec.c timespec-add.c timespec-sub.c u64.c utimens.c + close-stream.c md5.c sha1.c sha256.c sha512.c dtoastr.c \ + dtotimespec.c filemode.c gettext.h gettime.c stat-time.c \ + strftime.c timespec.c timespec-add.c timespec-sub.c u64.c \ + utimens.c am__objects_1 = am_libgnu_a_OBJECTS = allocator.$(OBJEXT) c-ctype.$(OBJEXT) \ c-strcasecmp.$(OBJEXT) c-strncasecmp.$(OBJEXT) \ - careadlinkat.$(OBJEXT) md5.$(OBJEXT) sha1.$(OBJEXT) \ - sha256.$(OBJEXT) sha512.$(OBJEXT) dtoastr.$(OBJEXT) \ - dtotimespec.$(OBJEXT) filemode.$(OBJEXT) $(am__objects_1) \ - gettime.$(OBJEXT) stat-time.$(OBJEXT) strftime.$(OBJEXT) \ - timespec.$(OBJEXT) timespec-add.$(OBJEXT) \ + careadlinkat.$(OBJEXT) close-stream.$(OBJEXT) md5.$(OBJEXT) \ + sha1.$(OBJEXT) sha256.$(OBJEXT) sha512.$(OBJEXT) \ + dtoastr.$(OBJEXT) dtotimespec.$(OBJEXT) filemode.$(OBJEXT) \ + $(am__objects_1) gettime.$(OBJEXT) stat-time.$(OBJEXT) \ + strftime.$(OBJEXT) timespec.$(OBJEXT) timespec-add.$(OBJEXT) \ timespec-sub.$(OBJEXT) u64.$(OBJEXT) utimens.$(OBJEXT) libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp @@ -860,13 +863,13 @@ BUILT_SOURCES = $(ALLOCA_H) $(EXECINFO_H) $(GETOPT_H) inttypes.h \ signal.h arg-nonnull.h c++defs.h warn-on-use.h $(STDALIGN_H) \ $(STDARG_H) $(STDBOOL_H) $(STDDEF_H) $(STDINT_H) stdio.h \ stdlib.h sys/select.h sys/stat.h sys/time.h time.h unistd.h -EXTRA_DIST = alloca.in.h allocator.h careadlinkat.h md5.h sha1.h \ - sha256.h sha512.h dosname.h ftoastr.c ftoastr.h dup2.c \ - execinfo.c execinfo.in.h filemode.h getloadavg.c getopt.c \ - getopt.in.h getopt1.c getopt_int.h gettimeofday.c \ - ignore-value.h intprops.h inttypes.in.h lstat.c \ - mktime-internal.h mktime.c pathmax.h pselect.c \ - pthread_sigmask.c readlink.c signal.in.h \ +EXTRA_DIST = alloca.in.h allocator.h careadlinkat.h close-stream.h \ + md5.h sha1.h sha256.h sha512.h dosname.h ftoastr.c ftoastr.h \ + dup2.c execinfo.c execinfo.in.h filemode.h fpending.c \ + fpending.h getloadavg.c getopt.c getopt.in.h getopt1.c \ + getopt_int.h gettimeofday.c ignore-value.h intprops.h \ + inttypes.in.h lstat.c mktime-internal.h mktime.c pathmax.h \ + pselect.c pthread_sigmask.c readlink.c signal.in.h \ $(top_srcdir)/build-aux/snippet/_Noreturn.h \ $(top_srcdir)/build-aux/snippet/arg-nonnull.h \ $(top_srcdir)/build-aux/snippet/c++defs.h \ @@ -891,17 +894,17 @@ noinst_LIBRARIES = libgnu.a AM_CFLAGS = $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS) DEFAULT_INCLUDES = -I. -I$(top_srcdir)/lib -I../src -I$(top_srcdir)/src libgnu_a_SOURCES = allocator.c c-ctype.h c-ctype.c c-strcase.h \ - c-strcasecmp.c c-strncasecmp.c careadlinkat.c md5.c sha1.c \ - sha256.c sha512.c dtoastr.c dtotimespec.c filemode.c \ - $(am__append_1) gettime.c stat-time.c strftime.c timespec.c \ - timespec-add.c timespec-sub.c u64.c utimens.c + c-strcasecmp.c c-strncasecmp.c careadlinkat.c close-stream.c \ + md5.c sha1.c sha256.c sha512.c dtoastr.c dtotimespec.c \ + filemode.c $(am__append_1) gettime.c stat-time.c strftime.c \ + timespec.c timespec-add.c timespec-sub.c u64.c utimens.c libgnu_a_LIBADD = $(gl_LIBOBJS) libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) -EXTRA_libgnu_a_SOURCES = ftoastr.c dup2.c execinfo.c getloadavg.c \ - getopt.c getopt1.c gettimeofday.c lstat.c mktime.c pselect.c \ - pthread_sigmask.c readlink.c stat.c strtoimax.c strtol.c \ - strtoll.c strtol.c strtoul.c strtoull.c strtoimax.c \ - strtoumax.c symlink.c time_r.c +EXTRA_libgnu_a_SOURCES = ftoastr.c dup2.c execinfo.c fpending.c \ + getloadavg.c getopt.c getopt1.c gettimeofday.c lstat.c \ + mktime.c pselect.c pthread_sigmask.c readlink.c stat.c \ + strtoimax.c strtol.c strtoll.c strtol.c strtoul.c strtoull.c \ + strtoimax.c strtoumax.c symlink.c time_r.c # Because this Makefile snippet defines a variable used by other # gnulib Makefile snippets, it must be present in all Makefile.am that @@ -964,11 +967,13 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-strcasecmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/c-strncasecmp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/careadlinkat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close-stream.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtoastr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dtotimespec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemode.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fpending.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftoastr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getloadavg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ diff --git a/autogen/aclocal.m4 b/autogen/aclocal.m4 index 0bc91e263c2..37d734c2c7f 100644 --- a/autogen/aclocal.m4 +++ b/autogen/aclocal.m4 @@ -988,12 +988,14 @@ m4_include([m4/00gnulib.m4]) m4_include([m4/alloca.m4]) m4_include([m4/c-strtod.m4]) m4_include([m4/clock_time.m4]) +m4_include([m4/close-stream.m4]) m4_include([m4/dup2.m4]) m4_include([m4/environ.m4]) m4_include([m4/execinfo.m4]) m4_include([m4/extensions.m4]) m4_include([m4/extern-inline.m4]) m4_include([m4/filemode.m4]) +m4_include([m4/fpending.m4]) m4_include([m4/getloadavg.m4]) m4_include([m4/getopt.m4]) m4_include([m4/gettime.m4]) diff --git a/autogen/config.in b/autogen/config.in index 8fe2170d89d..6885e28fc39 100644 --- a/autogen/config.in +++ b/autogen/config.in @@ -190,6 +190,10 @@ along with GNU Emacs. If not, see . */ /* Define this to enable glyphs debugging code. */ #undef GLYPH_DEBUG +/* Define to a C preprocessor expression that evaluates to 1 or 0, depending + whether the gnulib module close-stream shall be considered present. */ +#undef GNULIB_CLOSE_STREAM + /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module fscanf shall be considered present. */ #undef GNULIB_FSCANF @@ -312,6 +316,10 @@ along with GNU Emacs. If not, see . */ */ #undef HAVE_DECL_TZNAME +/* Define to 1 if you have the declaration of `__fpending', and to 0 if you + don't. */ +#undef HAVE_DECL___FPENDING + /* Define to 1 if you have the declaration of `__sys_siglist', and to 0 if you don't. */ #undef HAVE_DECL___SYS_SIGLIST @@ -1209,6 +1217,9 @@ along with GNU Emacs. If not, see . */ /* Number of chars of output in the buffer of a stdio stream. */ #undef PENDING_OUTPUT_COUNT +/* the number of pending output bytes on stream 'fp' */ +#undef PENDING_OUTPUT_N_BYTES + /* Define to empty to suppress deprecation warnings when building with --enable-gcc-warnings and with libpng versions before 1.5, which lack png_longjmp. */ diff --git a/autogen/configure b/autogen/configure index 92bd49c4c73..3f4bd186f95 100755 --- a/autogen/configure +++ b/autogen/configure @@ -3206,6 +3206,7 @@ as_fn_append ac_header_list " sys/un.h" as_fn_append ac_func_list " tzset" as_fn_append ac_func_list " readlinkat" as_fn_append ac_header_list " execinfo.h" +as_fn_append ac_func_list " __fpending" gl_getopt_required=GNU as_fn_append ac_header_list " getopt.h" as_fn_append ac_func_list " gettimeofday" @@ -6958,6 +6959,7 @@ esac # Code from module c-strcase: # Code from module careadlinkat: # Code from module clock-time: + # Code from module close-stream: # Code from module crypto/md5: # Code from module crypto/sha1: # Code from module crypto/sha256: @@ -6972,6 +6974,7 @@ esac # Code from module extern-inline: # Code from module filemode: + # Code from module fpending: # Code from module getloadavg: # Code from module getopt-gnu: # Code from module getopt-posix: @@ -16999,6 +17002,8 @@ cat >>confdefs.h <<_ACEOF _ACEOF + + GNULIB__EXIT=0; GNULIB_ATOLL=0; GNULIB_CALLOC_POSIX=0; @@ -20448,6 +20453,16 @@ done LIBS=$gl_saved_libs + : + + + +cat >>confdefs.h <<_ACEOF +#define GNULIB_CLOSE_STREAM 1 +_ACEOF + + + : @@ -20687,6 +20702,120 @@ fi + + fp_headers=' +# include +# if HAVE_STDIO_EXT_H +# include +# endif +' + ac_fn_c_check_decl "$LINENO" "__fpending" "ac_cv_have_decl___fpending" "$fp_headers +" +if test "x$ac_cv_have_decl___fpending" = x""yes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL___FPENDING $ac_have_decl +_ACEOF + + + if test $ac_cv_func___fpending = no; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS fpending.$ac_objext" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to determine the number of pending output bytes on a stream" >&5 +$as_echo_n "checking how to determine the number of pending output bytes on a stream... " >&6; } +if test "${ac_cv_sys_pending_output_n_bytes+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + for ac_expr in \ + \ + '# glibc2' \ + 'fp->_IO_write_ptr - fp->_IO_write_base' \ + \ + '# traditional Unix' \ + 'fp->_ptr - fp->_base' \ + \ + '# BSD' \ + 'fp->_p - fp->_bf._base' \ + \ + '# SCO, Unixware' \ + '(fp->__ptr ? fp->__ptr - fp->__base : 0)' \ + \ + '# QNX' \ + '(fp->_Mode & 0x2000 /*_MWRITE*/ ? fp->_Next - fp->_Buf : 0)' \ + \ + '# old glibc?' \ + 'fp->__bufp - fp->__buffer' \ + \ + '# old glibc iostream?' \ + 'fp->_pptr - fp->_pbase' \ + \ + '# emx+gcc' \ + 'fp->_ptr - fp->_buffer' \ + \ + '# Minix' \ + 'fp->_ptr - fp->_buf' \ + \ + '# Plan9' \ + 'fp->wp - fp->buf' \ + \ + '# VMS' \ + '(*fp)->_ptr - (*fp)->_base' \ + \ + '# e.g., DGUX R4.11; the info is not available' \ + 1 \ + ; do + + # Skip each embedded comment. + case "$ac_expr" in '#'*) continue;; esac + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *fp = stdin; (void) ($ac_expr); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + fp_done=yes + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$fp_done" = yes && break + done + + ac_cv_sys_pending_output_n_bytes=$ac_expr + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_pending_output_n_bytes" >&5 +$as_echo "$ac_cv_sys_pending_output_n_bytes" >&6; } + +cat >>confdefs.h <<_ACEOF +#define PENDING_OUTPUT_N_BYTES $ac_cv_sys_pending_output_n_bytes +_ACEOF + + + fi + + # Persuade glibc to declare getloadavg(). From 6163a6801e7c1091ec715810e7de809851e00d9e Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 4 Nov 2012 06:23:35 -0500 Subject: [PATCH 141/165] Auto-commit of loaddefs files. --- lisp/emacs-lisp/cl-loaddefs.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el index 5ad6e37a5a1..551043caa5e 100644 --- a/lisp/emacs-lisp/cl-loaddefs.el +++ b/lisp/emacs-lisp/cl-loaddefs.el @@ -11,7 +11,7 @@ ;;;;;; cl--map-overlays cl--map-intervals cl--map-keymap-recursively ;;;;;; cl-notevery cl-notany cl-every cl-some cl-mapcon cl-mapcan ;;;;;; cl-mapl cl-mapc cl-maplist cl-map cl--mapcar-many cl-equalp -;;;;;; cl-coerce) "cl-extra" "cl-extra.el" "7d7f65d8a05e954a919fe2555b68fb05") +;;;;;; cl-coerce) "cl-extra" "cl-extra.el" "0e9284b6492cc98eee7c85ae4e5322ee") ;;; Generated autoloads from cl-extra.el (autoload 'cl-coerce "cl-extra" "\ @@ -265,7 +265,7 @@ Remove from SYMBOL's plist the property PROPNAME and its value. ;;;;;; cl-typecase cl-ecase cl-case cl-load-time-value cl-eval-when ;;;;;; cl-destructuring-bind cl-function cl-defmacro cl-defun cl-gentemp ;;;;;; cl-gensym cl--compiler-macro-cXXr cl--compiler-macro-list*) -;;;;;; "cl-macs" "cl-macs.el" "366e9efa4e3e7a81b2253e503611b23a") +;;;;;; "cl-macs" "cl-macs.el" "57cf89149db1e8ea6bc1582713980cf8") ;;; Generated autoloads from cl-macs.el (autoload 'cl--compiler-macro-list* "cl-macs" "\ @@ -473,9 +473,9 @@ from OBARRAY. (put 'cl-do-symbols 'lisp-indent-function '1) (autoload 'cl-do-all-symbols "cl-macs" "\ +Like `cl-do-symbols', but use the default obarray. - -\(fn SPEC &rest BODY)" nil t) +\(fn (VAR [RESULT]) BODY...)" nil t) (put 'cl-do-all-symbols 'lisp-indent-function '1) From f200a427ffaa22f71908bd78448dcb714a15c82d Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Sun, 4 Nov 2012 13:44:58 +0100 Subject: [PATCH 142/165] nt/config.nt: Sync with autogen/config.in. (GNULIB_CLOSE_STREAM, HAVE_DECL___FPENDING): New macros. --- nt/ChangeLog | 5 +++++ nt/config.nt | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/nt/ChangeLog b/nt/ChangeLog index e2e50f11d9b..b970754c09e 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,8 @@ +2012-11-04 Juanma Barranquero + + * config.nt: Sync with autogen/config.in. + (GNULIB_CLOSE_STREAM, HAVE_DECL___FPENDING): New macros. + 2012-11-03 Eli Zaretskii * config.nt (PENDING_OUTPUT_N_BYTES): Define. diff --git a/nt/config.nt b/nt/config.nt index 8f4cf858910..94af5bf571e 100644 --- a/nt/config.nt +++ b/nt/config.nt @@ -196,6 +196,10 @@ along with GNU Emacs. If not, see . */ /* Define this to enable glyphs debugging code. */ /* #undef GLYPH_DEBUG */ +/* Define to a C preprocessor expression that evaluates to 1 or 0, depending + whether the gnulib module close-stream shall be considered present. */ +#undef GNULIB_CLOSE_STREAM + /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module fscanf shall be considered present. */ #undef GNULIB_FSCANF @@ -318,6 +322,10 @@ along with GNU Emacs. If not, see . */ */ #define HAVE_DECL_TZNAME 1 +/* Define to 1 if you have the declaration of `__fpending', and to 0 if you + don't. */ +#undef HAVE_DECL___FPENDING + /* Define to 1 if you have the declaration of `__sys_siglist', and to 0 if you don't. */ #undef HAVE_DECL___SYS_SIGLIST From 76abf5e5a55899a0b3f8851fce7406858978e9a6 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 4 Nov 2012 09:29:52 -0800 Subject: [PATCH 143/165] Fix data-loss with --version. * emacs.c (close_output_streams): Use strerror, not emacs_strerror, as we can't assume that emacs_strerror is initialized, and strerror is good enough here. (main): Invoke atexit earlier, to catch earlier instances of sending data to stdout and exiting, e.g., "emacs --version >/dev/full". Fixes: debbugs:9574 --- src/ChangeLog | 9 +++++++++ src/emacs.c | 6 +++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index b30b2163435..3356c9874cc 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2012-11-04 Paul Eggert + + Fix data-loss with --version (Bug#9574). + * emacs.c (close_output_streams): Use strerror, not emacs_strerror, + as we can't assume that emacs_strerror is initialized, and strerror + is good enough here. + (main): Invoke atexit earlier, to catch earlier instances of + sending data to stdout and exiting, e.g., "emacs --version >/dev/full". + 2012-11-04 Michael Marchionna * nsterm.m: Add NSClearLineFunctionKey and keypad keys (Bug#8680). diff --git a/src/emacs.c b/src/emacs.c index 6588bcd78b1..061c4b4b131 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -684,7 +684,7 @@ close_output_streams (void) if (close_stream (stdout) != 0) { fprintf (stderr, "Write error to standard output: %s\n", - emacs_strerror (errno)); + strerror (errno)); fflush (stderr); _exit (EXIT_FAILURE); } @@ -748,6 +748,8 @@ main (int argc, char **argv) unexec_init_emacs_zone (); #endif + atexit (close_output_streams); + sort_args (argc, argv); argc = 0; while (argv[argc]) argc++; @@ -907,8 +909,6 @@ main (int argc, char **argv) if (do_initial_setlocale) setlocale (LC_ALL, ""); - atexit (close_output_streams); - inhibit_window_system = 0; /* Handle the -t switch, which specifies filename to use as terminal. */ From 06b63c9b0c6fd87e699ba6ba3be959bfd150ef8a Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 4 Nov 2012 14:33:00 -0800 Subject: [PATCH 144/165] Remove EMACS_OUTQSIZE+sleep hack. * dispnew.c (update_frame_1): Remove hack for terminals slower than 2400 bps, which throttled Emacs by having it sleep. This code hasn't worked since at least 2007, when the multi-tty stuff was added, and anyway those old terminals are long dead. * systty.h (EMACS_OUTQSIZE): Remove; unused. The macro isn't used even without the dispnew.c change, as dispnew.c doesn't include systty.h. --- src/ChangeLog | 8 ++++++++ src/dispnew.c | 16 +--------------- src/systty.h | 11 ----------- 3 files changed, 9 insertions(+), 26 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 3356c9874cc..75b70ee4752 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,13 @@ 2012-11-04 Paul Eggert + Remove EMACS_OUTQSIZE+sleep hack. + * dispnew.c (update_frame_1): Remove hack for terminals slower + than 2400 bps, which throttled Emacs by having it sleep. This + code hasn't worked since at least 2007, when the multi-tty stuff + was added, and anyway those old terminals are long dead. + * systty.h (EMACS_OUTQSIZE): Remove; unused. The macro isn't used even + without the dispnew.c change, as dispnew.c doesn't include systty.h. + Fix data-loss with --version (Bug#9574). * emacs.c (close_output_streams): Use strerror, not emacs_strerror, as we can't assume that emacs_strerror is initialized, and strerror diff --git a/src/dispnew.c b/src/dispnew.c index e99387d2f6e..2ddd29139af 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -4650,21 +4650,7 @@ update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p) int outq = PENDING_OUTPUT_COUNT (display_output); if (outq > 900 || (outq > 20 && ((i - 1) % preempt_count == 0))) - { - fflush (display_output); - if (preempt_count == 1) - { -#ifdef EMACS_OUTQSIZE - if (EMACS_OUTQSIZE (0, &outq) < 0) - /* Probably not a tty. Ignore the error and reset - the outq count. */ - outq = PENDING_OUTPUT_COUNT (FRAME_TTY (f->output)); -#endif - outq *= 10; - if (baud_rate <= outq && baud_rate > 0) - sleep (outq / baud_rate); - } - } + fflush (display_output); } } diff --git a/src/systty.h b/src/systty.h index b7f36c6c259..0611511d901 100644 --- a/src/systty.h +++ b/src/systty.h @@ -51,17 +51,6 @@ along with GNU Emacs. If not, see . */ #define CDISABLE 255 #endif /* not CDEL */ #endif /* not _POSIX_VDISABLE */ - -/* Get the number of characters queued for output. */ - -/* EMACS_OUTQSIZE(FD, int *SIZE) stores the number of characters - queued for output to the terminal FD in *SIZE, if FD is a tty. - Returns -1 if there was an error (i.e. FD is not a tty), 0 - otherwise. */ -#ifdef TIOCOUTQ -#define EMACS_OUTQSIZE(fd, size) (ioctl ((fd), TIOCOUTQ, (size))) -#endif - /* Manipulate a terminal's current process group. */ From 8148369cfba2c982a87fb4eb72d024e26e193a03 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 4 Nov 2012 17:59:00 -0800 Subject: [PATCH 145/165] Simplify by assuming __fpending. Now that Emacs is using the gnulib fpending module, there's no need for Emacs to have a separate implementation. * configure.ac (stdio_ext.h, __fpending): Remove now-duplicate checks. (PENDING_OUTPUT_COUNT, DISPNEW_NEEDS_STDIO_EXT): Remove. * admin/CPP-DEFINES (PENDING_OUTPUT_COUNT): Remove. * src/dispnew.c: Include , not . (update_frame_1): Use __fpending, not PENDING_OUTPUT_COUNT. Do not assume that __fpending's result fits in int. --- ChangeLog | 8 ++++ admin/CPP-DEFINES | 1 - admin/ChangeLog | 5 +++ configure.ac | 98 +---------------------------------------------- src/ChangeLog | 7 ++++ src/dispnew.c | 6 +-- 6 files changed, 24 insertions(+), 101 deletions(-) diff --git a/ChangeLog b/ChangeLog index a344ec765d8..83026bc5065 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2012-11-05 Paul Eggert + + Simplify by assuming __fpending. + Now that Emacs is using the gnulib fpending module, + there's no need for Emacs to have a separate implementation. + * configure.ac (stdio_ext.h, __fpending): Remove now-duplicate checks. + (PENDING_OUTPUT_COUNT, DISPNEW_NEEDS_STDIO_EXT): Remove. + 2012-11-03 Eli Zaretskii * lib/makefile.w32-in (GNULIBOBJS): Add $(BLD)/fpending.$(O) and diff --git a/admin/CPP-DEFINES b/admin/CPP-DEFINES index 661cde9c43e..fb217fc22e6 100644 --- a/admin/CPP-DEFINES +++ b/admin/CPP-DEFINES @@ -425,7 +425,6 @@ ORDINARY_LINK O_RDONLY O_RDWR PAGESIZE -PENDING_OUTPUT_COUNT PREFER_VSUSP PTY_ITERATION PTY_NAME_SPRINTF diff --git a/admin/ChangeLog b/admin/ChangeLog index ccb54a0a9ed..c48faadab16 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,8 @@ +2012-11-05 Paul Eggert + + Simplify by assuming __fpending. + * CPP-DEFINES (PENDING_OUTPUT_COUNT): Remove. + 2012-11-03 Glenn Morris * admin.el (set-copyright): Add msdos/sed2v2.inp. diff --git a/configure.ac b/configure.ac index b0711923e1a..9a562a37a8d 100644 --- a/configure.ac +++ b/configure.ac @@ -1266,7 +1266,7 @@ fi dnl checks for header files AC_CHECK_HEADERS_ONCE( linux/version.h sys/systeminfo.h - stdio_ext.h fcntl.h coff.h pty.h + fcntl.h coff.h pty.h sys/vlimit.h sys/resource.h sys/utsname.h pwd.h utmp.h dirent.h util.h) @@ -2874,7 +2874,7 @@ closedir getrusage get_current_dir_name \ lrand48 setsid \ fpathconf select euidaccess getpagesize setlocale \ utimes getrlimit setrlimit setpgid getcwd shutdown getaddrinfo \ -__fpending strsignal setitimer \ +strsignal setitimer \ sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \ gai_strerror mkstemp getline getdelim fsync sync \ difftime posix_memalign \ @@ -3650,100 +3650,6 @@ case $opsys in esac -dnl Used in dispnew.c -AH_TEMPLATE(PENDING_OUTPUT_COUNT, [Number of chars of output in the - buffer of a stdio stream.]) - -AC_MSG_CHECKING([whether we are using the GNU C library]) -AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[ -#include -#ifndef __GNU_LIBRARY__ -# error "this is not the GNU C library" -#endif - ]], [[]])], emacs_glibc=yes, emacs_glibc=no) -AC_MSG_RESULT([$emacs_glibc]) - -if test $emacs_glibc = yes; then - - emacs_pending_output=unknown - - case $opsys in - gnu | gnu-linux | gnu-kfreebsd ) - AC_MSG_CHECKING([for style of pending output formalism]) - dnl In autoconf 2.67 and later, we could use a single test - dnl since the preprocessed output is accessible in "conftest.i". - AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[ -#include -#if !defined (_IO_STDIO_H) && !defined (_STDIO_USES_IOSTREAM) -# error "stdio definitions not found" -#endif - ]], [[]])], emacs_pending_output=new, []) - - if test $emacs_pending_output = unknown; then - case $opsys in - gnu-linux | gnu-kfreebsd) - AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[ -#include -#ifndef __UCLIBC__ -# error "not using uclibc" -#endif - ]], [[]])], emacs_pending_output=uclibc, emacs_pending_output=old) - ;; - esac - fi - - AC_MSG_RESULT([$emacs_pending_output]) - - case $emacs_pending_output in - new) - dnl New C libio names. - AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), - [((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)]) - ;; - uclibc) - dnl Using the uClibc library. - AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), - [((FILE)->__bufpos - (FILE)->__bufstart)]) - ;; - old) - dnl Old C++ iostream names. - AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), - [((FILE)->_pptr - (FILE)->_pbase)]) - ;; - esac - ;; - esac dnl opsys - - if test $emacs_pending_output = unknown; then - AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->__bufp - (FILE)->__buffer)]) - fi - -else dnl !emacs_glibc - - case $opsys in - cygwin | darwin | freebsd | netbsd | openbsd ) - AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->_p - (FILE)->_bf._base)]) - ;; - - unixware) - AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->__ptr - (FILE)->__base)]) - ;; - - *) - dnl HAVE_STDIO_EXT_H && HAVE___FPENDING - if test x$ac_cv_header_stdio_ext_h = xyes && \ - test x$ac_cv_func___fpending = xyes; then - AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [__fpending (FILE)]) - AC_DEFINE(DISPNEW_NEEDS_STDIO_EXT, 1, - [Define if dispnew.c should include stdio_ext.h.]) - else - AC_DEFINE(PENDING_OUTPUT_COUNT(FILE), [((FILE)->_ptr - (FILE)->_base)]) - fi - ;; - esac -fi dnl emacs_glibc - - dnl Used in vm-limit.c AH_TEMPLATE(DATA_START, [Address of the start of the data segment.]) dnl Used in lisp.h, emacs.c, mem-limits.h diff --git a/src/ChangeLog b/src/ChangeLog index 75b70ee4752..29efd9f181c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2012-11-05 Paul Eggert + + Simplify by assuming __fpending. + * dispnew.c: Include , not . + (update_frame_1): Use __fpending, not PENDING_OUTPUT_COUNT. + Do not assume that __fpending's result fits in int. + 2012-11-04 Paul Eggert Remove EMACS_OUTQSIZE+sleep hack. diff --git a/src/dispnew.c b/src/dispnew.c index 2ddd29139af..907259a3e94 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -53,9 +53,7 @@ along with GNU Emacs. If not, see . */ #include "systime.h" #include -#ifdef DISPNEW_NEEDS_STDIO_EXT -#include -#endif +#include #if defined (HAVE_TERM_H) && defined (GNU_LINUX) #include /* for tgetent */ @@ -4647,7 +4645,7 @@ update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p) FILE *display_output = FRAME_TTY (f)->output; if (display_output) { - int outq = PENDING_OUTPUT_COUNT (display_output); + ptrdiff_t outq = __fpending (display_output); if (outq > 900 || (outq > 20 && ((i - 1) % preempt_count == 0))) fflush (display_output); From dd0333b6155c9c3aabdac9418c005e2e5b4796e7 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 4 Nov 2012 19:18:32 -0800 Subject: [PATCH 146/165] Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid. This removes code that has been obsolete since around 1990. * admin/CPP-DEFINES (HAVE_SETPGID, HAVE_SETSID, SETPGRP_RELEASES_CTTY): Remove; obsolete. * configure.ac (setpgid, setsid): Assume their existence. (AC_FUNC_GETPGRP, SETPGRP_RELEASES_CTTY): Remove; obsolete. * src/callproc.c (Fcall_process): * src/emacs.c (main): * src/process.c (create_process): * src/term.c (dissociate_if_controlling_tty): Assume setsid exists. * src/callproc.c (child_setup): Assume setpgid exists and behaves as per POSIX.1-1988 or later. * src/conf_post.h (setpgid) [!HAVE_SETPGID]: Remove. * src/emacs.c (shut_down_emacs): * src/sysdep.c (sys_suspend, init_foreground_group): Assume getpgrp behaves as per POSIX.1-1998 or later. * src/msdos.c (setpgrp): Remove. (tcgetpgrp, setpgid, setsid): New functions. * src/systty.h (EMACS_GETPGRP): Remove. All callers now use getpgrp. * src/term.c (no_controlling_tty): Remove; unused. * src/w32proc.c (setpgrp): Remove. (setsid, tcgetpgrp): New functions. Fixes: debbugs:12800 --- ChangeLog | 4 ++++ admin/CPP-DEFINES | 3 --- admin/ChangeLog | 4 ++++ configure.ac | 8 ++------ src/ChangeLog | 20 ++++++++++++++++++++ src/callproc.c | 10 +--------- src/conf_post.h | 8 -------- src/emacs.c | 4 +--- src/msdos.c | 4 +++- src/process.c | 18 ++---------------- src/sysdep.c | 4 ++-- src/systty.h | 10 ---------- src/term.c | 35 ++--------------------------------- src/w32proc.c | 14 ++++++++++---- 14 files changed, 51 insertions(+), 95 deletions(-) diff --git a/ChangeLog b/ChangeLog index 83026bc5065..e8bff20d56d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2012-11-05 Paul Eggert + Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid (Bug#12800). + * configure.ac (setpgid, setsid): Assume their existence. + (AC_FUNC_GETPGRP, SETPGRP_RELEASES_CTTY): Remove; obsolete. + Simplify by assuming __fpending. Now that Emacs is using the gnulib fpending module, there's no need for Emacs to have a separate implementation. diff --git a/admin/CPP-DEFINES b/admin/CPP-DEFINES index fb217fc22e6..0a4c14cb95c 100644 --- a/admin/CPP-DEFINES +++ b/admin/CPP-DEFINES @@ -298,9 +298,7 @@ HAVE_SENDTO HAVE_SEQPACKET HAVE_SETITIMER HAVE_SETLOCALE -HAVE_SETPGID HAVE_SETRLIMIT -HAVE_SETSID HAVE_SHARED_GAME_DIR HAVE_SHUTDOWN HAVE_SIGNED_${GLTYPE} @@ -432,7 +430,6 @@ PTY_OPEN PTY_TTY_NAME_SPRINTF PURESIZE RUN_TIME_REMAP -SETPGRP_RELEASES_CTTY SETUP_SLAVE_PTY SIGALRM SIGCHLD diff --git a/admin/ChangeLog b/admin/ChangeLog index c48faadab16..496e1c1bb6a 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,5 +1,9 @@ 2012-11-05 Paul Eggert + Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid (Bug#12800). + * CPP-DEFINES (HAVE_SETPGID, HAVE_SETSID, SETPGRP_RELEASES_CTTY): + Remove; obsolete. + Simplify by assuming __fpending. * CPP-DEFINES (PENDING_OUTPUT_COUNT): Remove. diff --git a/configure.ac b/configure.ac index 9a562a37a8d..9146c669096 100644 --- a/configure.ac +++ b/configure.ac @@ -2871,9 +2871,9 @@ AC_SUBST(BLESSMAIL_TARGET) AC_CHECK_FUNCS(gethostname \ closedir getrusage get_current_dir_name \ -lrand48 setsid \ +lrand48 \ fpathconf select euidaccess getpagesize setlocale \ -utimes getrlimit setrlimit setpgid getcwd shutdown getaddrinfo \ +utimes getrlimit setrlimit getcwd shutdown getaddrinfo \ strsignal setitimer \ sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \ gai_strerror mkstemp getline getdelim fsync sync \ @@ -2916,8 +2916,6 @@ AC_CHECK_HEADERS_ONCE(sys/un.h) AC_FUNC_FSEEKO -AC_FUNC_GETPGRP - # UNIX98 PTYs. AC_CHECK_FUNCS(grantpt) @@ -3964,8 +3962,6 @@ case $opsys in irix6-5) AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should use VSUSP instead of VSWTCH.]) - AC_DEFINE(SETPGRP_RELEASES_CTTY, 1, [Define if process.c:child_setup - should not call setpgrp.]) ;; sol2-10) diff --git a/src/ChangeLog b/src/ChangeLog index 29efd9f181c..6c515271594 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,25 @@ 2012-11-05 Paul Eggert + Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid (Bug#12800). + This removes code that has been obsolete since around 1990. + * callproc.c (Fcall_process): + * emacs.c (main): + * process.c (create_process): + * term.c (dissociate_if_controlling_tty): + Assume setsid exists. + * callproc.c (child_setup): Assume setpgid exists and behaves as + per POSIX.1-1988 or later. + * conf_post.h (setpgid) [!HAVE_SETPGID]: Remove. + * emacs.c (shut_down_emacs): + * sysdep.c (sys_suspend, init_foreground_group): + Assume getpgrp behaves as per POSIX.1-1998 or later. + * msdos.c (setpgrp): Remove. + (tcgetpgrp, setpgid, setsid): New functions. + * systty.h (EMACS_GETPGRP): Remove. All callers now use getpgrp. + * term.c (no_controlling_tty): Remove; unused. + * w32proc.c (setpgrp): Remove. + (setsid, tcgetpgrp): New functions. + Simplify by assuming __fpending. * dispnew.c: Include , not . (update_frame_1): Use __fpending, not PENDING_OUTPUT_COUNT. diff --git a/src/callproc.c b/src/callproc.c index c236f22fc86..c7bbe36e605 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -612,11 +612,7 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */) if (fd[0] >= 0) emacs_close (fd[0]); -#ifdef HAVE_SETSID setsid (); -#else - setpgid (0, 0); -#endif /* Emacs ignores SIGPIPE, but the child should not. */ signal (SIGPIPE, SIG_DFL); @@ -1286,11 +1282,7 @@ child_setup (int in, int out, int err, char **new_argv, bool set_pgrp, if (err != in && err != out) emacs_close (err); -#if defined HAVE_SETPGID || ! (defined USG && defined SETPGRP_RELEASES_CTTY) - setpgid (pid, pid); -#endif - - /* setpgrp_of_tty is incorrect here; it uses input_fd. */ + setpgid (0, 0); tcsetpgrp (0, pid); /* execvp does not accept an environment arg so the only way diff --git a/src/conf_post.h b/src/conf_post.h index da3c3bd58b0..66390ddf103 100644 --- a/src/conf_post.h +++ b/src/conf_post.h @@ -121,14 +121,6 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */ #define emacs_raise(sig) msdos_fatal_signal (sig) -#ifndef HAVE_SETPGID -# ifdef USG -# define setpgid(pid, pgid) setpgrp () -# else -# define setpgid(pid, pgid) setpgrp (pid, pgid) -# endif -#endif - /* Define one of these for easier conditionals. */ #ifdef HAVE_X_WINDOWS /* We need a little extra space, see ../../lisp/loadup.el and the diff --git a/src/emacs.c b/src/emacs.c index 061c4b4b131..f12713b9628 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -1101,9 +1101,7 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem that it is not accessible to programs started from .emacs. */ fcntl (daemon_pipe[1], F_SETFD, FD_CLOEXEC); -#ifdef HAVE_SETSID setsid (); -#endif #else /* DOS_NT */ fprintf (stderr, "This platform does not support the -daemon flag.\n"); exit (1); @@ -1915,7 +1913,7 @@ shut_down_emacs (int sig, Lisp_Object stuff) /* If we are controlling the terminal, reset terminal modes. */ #ifndef DOS_NT { - pid_t pgrp = EMACS_GETPGRP (0); + pid_t pgrp = getpgrp (); pid_t tpgrp = tcgetpgrp (0); if ((tpgrp != -1) && tpgrp == pgrp) { diff --git a/src/msdos.c b/src/msdos.c index 79f0be48892..dd05a8b2c5d 100644 --- a/src/msdos.c +++ b/src/msdos.c @@ -3927,8 +3927,10 @@ croak (char *badfunc) /* * A few unimplemented functions that we silently ignore. */ -int setpgrp (void) {return 0; } +pid_t tcgetpgrp (int fd) { return 0; } +int setpgid (int pid, int pgid) { return 0; } int setpriority (int x, int y, int z) { return 0; } +pid_t setsid (void) { return 0; } #if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4 ssize_t diff --git a/src/process.c b/src/process.c index 3c0e53f7784..16600f94ce4 100644 --- a/src/process.c +++ b/src/process.c @@ -1739,7 +1739,6 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) /* Make the pty be the controlling terminal of the process. */ #ifdef HAVE_PTYS /* First, disconnect its current controlling terminal. */ -#ifdef HAVE_SETSID /* We tried doing setsid only if pty_flag, but it caused process_set_signal to fail on SGI when using a pipe. */ setsid (); @@ -1752,12 +1751,6 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) ioctl (xforkin, TIOCSCTTY, 0); #endif } -#else /* not HAVE_SETSID */ - /* It's very important to call setpgid here and no time - afterwards. Otherwise, we lose our controlling tty which - is set when we open the pty. */ - setpgid (0, 0); -#endif /* not HAVE_SETSID */ #if defined (LDISC1) if (pty_flag && xforkin >= 0) { @@ -1790,22 +1783,15 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) ioctl (j, TIOCNOTTY, 0); emacs_close (j); } -#ifndef USG - /* In order to get a controlling terminal on some versions - of BSD, it is necessary to put the process in pgrp 0 - before it opens the terminal. */ - setpgid (0, 0); -#endif } #endif /* TIOCNOTTY */ #if !defined (DONT_REOPEN_PTY) /*** There is a suggestion that this ought to be a - conditional on TIOCSPGRP, - or !(defined (HAVE_SETSID) && defined (TIOCSCTTY)). + conditional on TIOCSPGRP, or !defined TIOCSCTTY. Trying the latter gave the wrong results on Debian GNU/Linux 1.1; that system does seem to need this code, even though - both HAVE_SETSID and TIOCSCTTY are defined. */ + both TIOCSCTTY is defined. */ /* Now close the pty (if we had it open) and reopen it. This makes the pty the controlling terminal of the subprocess. */ if (pty_flag) diff --git a/src/sysdep.c b/src/sysdep.c index 63eac5d9e09..aa9d0f38c3c 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -452,7 +452,7 @@ sys_suspend (void) #if defined (SIGTSTP) && !defined (MSDOS) { - pid_t pgrp = EMACS_GETPGRP (0); + pid_t pgrp = getpgrp (); EMACS_KILLPG (pgrp, SIGTSTP); } @@ -709,7 +709,7 @@ static pid_t inherited_pgroup; void init_foreground_group (void) { - pid_t pgrp = EMACS_GETPGRP (0); + pid_t pgrp = getpgrp (); inherited_pgroup = getpid () == pgrp ? 0 : pgrp; } diff --git a/src/systty.h b/src/systty.h index 0611511d901..80bcaedf740 100644 --- a/src/systty.h +++ b/src/systty.h @@ -52,16 +52,6 @@ along with GNU Emacs. If not, see . */ #endif /* not CDEL */ #endif /* not _POSIX_VDISABLE */ -/* Manipulate a terminal's current process group. */ - -/* EMACS_GETPGRP (arg) returns the process group of the process. */ - -#if defined (GETPGRP_VOID) -# define EMACS_GETPGRP(x) getpgrp() -#else /* !GETPGRP_VOID */ -# define EMACS_GETPGRP(x) getpgrp(x) -#endif /* !GETPGRP_VOID */ - /* Manipulate a TTY's input/output processing parameters. */ /* struct emacs_tty is a structure used to hold the current tty diff --git a/src/term.c b/src/term.c index ffc559469e6..578c701858f 100644 --- a/src/term.c +++ b/src/term.c @@ -133,10 +133,6 @@ enum no_color_bit static int max_frame_cols; -/* Non-zero if we have dropped our controlling tty and therefore - should not open a frame on stdout. */ -static int no_controlling_tty; - #ifdef HAVE_GPM @@ -2918,36 +2914,9 @@ set_tty_hooks (struct terminal *terminal) static void dissociate_if_controlling_tty (int fd) { -#ifndef DOS_NT pid_t pgid = tcgetpgrp (fd); /* If tcgetpgrp succeeds, fd is the ctty. */ - if (pgid != -1) - { -#if defined (USG5) - setpgrp (); - no_controlling_tty = 1; -#elif defined (CYGWIN) - setsid (); - no_controlling_tty = 1; -#else -#ifdef TIOCNOTTY /* Try BSD ioctls. */ - sigset_t blocked; - sigemptyset (&blocked); - sigaddset (&blocked, SIGTTOU); - pthread_sigmask (SIG_BLOCK, &blocked, 0); - fd = emacs_open (DEV_TTY, O_RDWR, 0); - if (fd != -1 && ioctl (fd, TIOCNOTTY, 0) != -1) - { - no_controlling_tty = 1; - } - if (fd != -1) - emacs_close (fd); - pthread_sigmask (SIG_UNBLOCK, &blocked, 0); -#else -# error "Unknown system." -#endif /* ! TIOCNOTTY */ -#endif /* ! USG */ - } -#endif /* !DOS_NT */ + if (0 <= pgid) + setsid (); } /* Create a termcap display on the tty device with the given name and diff --git a/src/w32proc.c b/src/w32proc.c index adef7651b8c..f35a2da537c 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -230,14 +230,14 @@ sigismember (const sigset_t *set, int signo) return (*set & (1U << signo)) != 0; } -int -setpgrp (int pid, int gid) +pid_t +getpgrp (void) { - return 0; + return getpid (); } pid_t -getpgrp (void) +tcgetpgrp (int fd) { return getpid (); } @@ -248,6 +248,12 @@ setpgid (pid_t pid, pid_t pgid) return 0; } +pid_t +setsid (void) +{ + return getpid (); +} + /* Emulations of interval timers. Limitations: only ITIMER_REAL and ITIMER_PROF are supported. From 209c6a58b92363aaa4de1238b73261694bba9d1f Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 5 Nov 2012 12:00:58 +0800 Subject: [PATCH 147/165] * process.c (wait_reading_process_output): Revert previous change. --- src/ChangeLog | 4 ++++ src/process.c | 16 +++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 6c515271594..d0f42dd2394 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2012-11-05 Chong Yidong + + * process.c (wait_reading_process_output): Revert previous change. + 2012-11-05 Paul Eggert Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid (Bug#12800). diff --git a/src/process.c b/src/process.c index 16600f94ce4..43f0239d301 100644 --- a/src/process.c +++ b/src/process.c @@ -4336,6 +4336,8 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, while (1) { + int timeout_reduced_for_timers = 0; + /* If calling from keyboard input, do not quit since we want to return C-g as an input character. Otherwise, do pending quit if requested. */ @@ -4415,7 +4417,10 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, if (EMACS_TIME_VALID_P (timer_delay)) { if (EMACS_TIME_LT (timer_delay, timeout)) - timeout = timer_delay; + { + timeout = timer_delay; + timeout_reduced_for_timers = 1; + } } else { @@ -4674,12 +4679,9 @@ wait_reading_process_output (intmax_t time_limit, int nsecs, int read_kbd, /* If we woke up due to SIGWINCH, actually change size now. */ do_pending_window_change (0); - /* We used to break here if nfds == 0, i.e. we seemed to have - waited the full period. But apparently if Emacs receives - SIGIO between set_waiting_for_input and select, select can - return with nfds == 0 due to the timeout being zeroed out by - the signal handler (Bug#11536). */ - + if ((time_limit || nsecs) && nfds == 0 && ! timeout_reduced_for_timers) + /* We waited the full specified time, so return now. */ + break; if (nfds < 0) { if (xerrno == EINTR) From eda33f7834520055268efa19bbd27cf7e2f2e717 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 5 Nov 2012 06:17:32 -0500 Subject: [PATCH 148/165] Auto-commit of generated files. --- autogen/config.in | 18 ----- autogen/configure | 188 ++-------------------------------------------- 2 files changed, 6 insertions(+), 200 deletions(-) diff --git a/autogen/config.in b/autogen/config.in index 6885e28fc39..05418e64623 100644 --- a/autogen/config.in +++ b/autogen/config.in @@ -114,9 +114,6 @@ along with GNU Emacs. If not, see . */ /* Character that separates directories in a file name. */ #undef DIRECTORY_SEP -/* Define if dispnew.c should include stdio_ext.h. */ -#undef DISPNEW_NEEDS_STDIO_EXT - /* Define if process.c does not need to close a pty to make it a controlling terminal (it is already a controlling terminal of the subprocess, because we did ioctl TIOCSCTTY). */ @@ -177,9 +174,6 @@ along with GNU Emacs. If not, see . */ garbage collection in the jmp_buf. */ #undef GC_SETJMP_WORKS -/* Define to 1 if the `getpgrp' function requires zero arguments. */ -#undef GETPGRP_VOID - /* Define if gettimeofday clobbers the localtime buffer. */ #undef GETTIMEOFDAY_CLOBBERS_LOCALTIME @@ -781,15 +775,9 @@ along with GNU Emacs. If not, see . */ /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE -/* Define to 1 if you have the `setpgid' function. */ -#undef HAVE_SETPGID - /* Define to 1 if you have the `setrlimit' function. */ #undef HAVE_SETRLIMIT -/* Define to 1 if you have the `setsid' function. */ -#undef HAVE_SETSID - /* Define to 1 if you have the `shutdown' function. */ #undef HAVE_SHUTDOWN @@ -1214,9 +1202,6 @@ along with GNU Emacs. If not, see . */ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* Number of chars of output in the buffer of a stdio stream. */ -#undef PENDING_OUTPUT_COUNT - /* the number of pending output bytes on stream 'fp' */ #undef PENDING_OUTPUT_N_BYTES @@ -1275,9 +1260,6 @@ along with GNU Emacs. If not, see . */ /* Character that separates PATH elements. */ #undef SEPCHAR -/* Define if process.c:child_setup should not call setpgrp. */ -#undef SETPGRP_RELEASES_CTTY - /* How to set up a slave PTY, if needed. */ #undef SETUP_SLAVE_PTY diff --git a/autogen/configure b/autogen/configure index 3f4bd186f95..159a91bb48c 100755 --- a/autogen/configure +++ b/autogen/configure @@ -3184,7 +3184,6 @@ fi as_fn_append ac_header_list " linux/version.h" as_fn_append ac_header_list " sys/systeminfo.h" -as_fn_append ac_header_list " stdio_ext.h" as_fn_append ac_header_list " fcntl.h" as_fn_append ac_header_list " coff.h" as_fn_append ac_header_list " pty.h" @@ -3206,6 +3205,7 @@ as_fn_append ac_header_list " sys/un.h" as_fn_append ac_func_list " tzset" as_fn_append ac_func_list " readlinkat" as_fn_append ac_header_list " execinfo.h" +as_fn_append ac_header_list " stdio_ext.h" as_fn_append ac_func_list " __fpending" gl_getopt_required=GNU as_fn_append ac_header_list " getopt.h" @@ -8749,8 +8749,6 @@ done - - @@ -13418,10 +13416,10 @@ esac for ac_func in gethostname \ closedir getrusage get_current_dir_name \ -lrand48 setsid \ +lrand48 \ fpathconf select euidaccess getpagesize setlocale \ -utimes getrlimit setrlimit setpgid getcwd shutdown getaddrinfo \ -__fpending strsignal setitimer \ +utimes getrlimit setrlimit getcwd shutdown getaddrinfo \ +strsignal setitimer \ sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \ gai_strerror mkstemp getline getdelim fsync sync \ difftime posix_memalign \ @@ -13587,40 +13585,6 @@ $as_echo "#define HAVE_FSEEKO 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5 -$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; } -if test "${ac_cv_func_getpgrp_void+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - # Use it with a single arg. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -getpgrp (0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_func_getpgrp_void=no -else - ac_cv_func_getpgrp_void=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5 -$as_echo "$ac_cv_func_getpgrp_void" >&6; } -if test $ac_cv_func_getpgrp_void = yes; then - -$as_echo "#define GETPGRP_VOID 1" >>confdefs.h - -fi - - # UNIX98 PTYs. for ac_func in grantpt do : @@ -15376,145 +15340,6 @@ esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C library" >&5 -$as_echo_n "checking whether we are using the GNU C library... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifndef __GNU_LIBRARY__ -# error "this is not the GNU C library" -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - emacs_glibc=yes -else - emacs_glibc=no -fi -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_glibc" >&5 -$as_echo "$emacs_glibc" >&6; } - -if test $emacs_glibc = yes; then - - emacs_pending_output=unknown - - case $opsys in - gnu | gnu-linux | gnu-kfreebsd ) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of pending output formalism" >&5 -$as_echo_n "checking for style of pending output formalism... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#if !defined (_IO_STDIO_H) && !defined (_STDIO_USES_IOSTREAM) -# error "stdio definitions not found" -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - emacs_pending_output=new -fi -rm -f conftest.err conftest.$ac_ext - - if test $emacs_pending_output = unknown; then - case $opsys in - gnu-linux | gnu-kfreebsd) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifndef __UCLIBC__ -# error "not using uclibc" -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - emacs_pending_output=uclibc -else - emacs_pending_output=old -fi -rm -f conftest.err conftest.$ac_ext - ;; - esac - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $emacs_pending_output" >&5 -$as_echo "$emacs_pending_output" >&6; } - - case $emacs_pending_output in - new) - $as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_IO_write_ptr - (FILE)->_IO_write_base)" >>confdefs.h - - ;; - uclibc) - $as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->__bufpos - (FILE)->__bufstart)" >>confdefs.h - - ;; - old) - $as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_pptr - (FILE)->_pbase)" >>confdefs.h - - ;; - esac - ;; - esac - if test $emacs_pending_output = unknown; then - $as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->__bufp - (FILE)->__buffer)" >>confdefs.h - - fi - -else - case $opsys in - cygwin | darwin | freebsd | netbsd | openbsd ) - $as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)" >>confdefs.h - - ;; - - unixware) - $as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->__ptr - (FILE)->__base)" >>confdefs.h - - ;; - - *) - if test x$ac_cv_header_stdio_ext_h = xyes && \ - test x$ac_cv_func___fpending = xyes; then - $as_echo "#define PENDING_OUTPUT_COUNT(FILE) __fpending (FILE)" >>confdefs.h - - -$as_echo "#define DISPNEW_NEEDS_STDIO_EXT 1" >>confdefs.h - - else - $as_echo "#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_ptr - (FILE)->_base)" >>confdefs.h - - fi - ;; - esac -fi - - - case $opsys in gnu) @@ -15992,9 +15817,6 @@ $as_echo "#define USG_SUBTTY_WORKS 1" >>confdefs.h $as_echo "#define PREFER_VSUSP 1" >>confdefs.h - -$as_echo "#define SETPGRP_RELEASES_CTTY 1" >>confdefs.h - ;; sol2-10) @@ -17004,6 +16826,8 @@ _ACEOF + + GNULIB__EXIT=0; GNULIB_ATOLL=0; GNULIB_CALLOC_POSIX=0; From efeccf10f015ec093d94b69ffa7eb3ad8d978295 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Mon, 5 Nov 2012 15:30:32 +0100 Subject: [PATCH 149/165] nt/config.nt: Sync with autogen/config.in. (DISPNEW_NEEDS_STDIO_EXT, GETPGRP_VOID, HAVE_SETPGID, HAVE_SETSID) (PENDING_OUTPUT_COUNT, SETPGRP_RELEASES_CTTY): Remove. --- nt/ChangeLog | 6 ++++++ nt/config.nt | 18 ------------------ 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/nt/ChangeLog b/nt/ChangeLog index b970754c09e..ad8c53a27b8 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,9 @@ +2012-11-05 Juanma Barranquero + + * config.nt: Sync with autogen/config.in. + (DISPNEW_NEEDS_STDIO_EXT, GETPGRP_VOID, HAVE_SETPGID, HAVE_SETSID) + (PENDING_OUTPUT_COUNT, SETPGRP_RELEASES_CTTY): Remove. + 2012-11-04 Juanma Barranquero * config.nt: Sync with autogen/config.in. diff --git a/nt/config.nt b/nt/config.nt index 94af5bf571e..443a1025761 100644 --- a/nt/config.nt +++ b/nt/config.nt @@ -118,9 +118,6 @@ along with GNU Emacs. If not, see . */ /* Character that separates directories in a file name. */ #define DIRECTORY_SEP '/' -/* Define if dispnew.c should include stdio_ext.h. */ -#undef DISPNEW_NEEDS_STDIO_EXT - /* Define if process.c does not need to close a pty to make it a controlling terminal (it is already a controlling terminal of the subprocess, because we did ioctl TIOCSCTTY). */ @@ -183,9 +180,6 @@ along with GNU Emacs. If not, see . */ setjmp does work. */ #define GC_SETJMP_WORKS 1 -/* Define to 1 if the `getpgrp' function requires zero arguments. */ -#define GETPGRP_VOID 1 - /* Define if gettimeofday clobbers the localtime buffer. */ #undef GETTIMEOFDAY_CLOBBERS_LOCALTIME @@ -790,15 +784,9 @@ along with GNU Emacs. If not, see . */ /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 -/* Define to 1 if you have the `setpgid' function. */ -#undef HAVE_SETPGID - /* Define to 1 if you have the `setrlimit' function. */ #undef HAVE_SETRLIMIT -/* Define to 1 if you have the `setsid' function. */ -#undef HAVE_SETSID - /* Define to 1 if you have the `shutdown' function. */ #define HAVE_SHUTDOWN 1 @@ -1224,9 +1212,6 @@ along with GNU Emacs. If not, see . */ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* Number of chars of output in the buffer of a stdio stream. */ -#undef PENDING_OUTPUT_COUNT - /* the number of pending output bytes on stream 'fp' */ #define PENDING_OUTPUT_N_BYTES (fp->_ptr - fp->_base) @@ -1285,9 +1270,6 @@ along with GNU Emacs. If not, see . */ /* Character that separates PATH elements. */ #define SEPCHAR ';' -/* Define if process.c:child_setup should not call setpgrp. */ -#undef SETPGRP_RELEASES_CTTY - /* How to set up a slave PTY, if needed. */ #undef SETUP_SLAVE_PTY From 4f3f021d65aa712f871c498579ca549f5f5247ab Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 5 Nov 2012 18:21:18 +0200 Subject: [PATCH 150/165] Avoid compiler warnings in the MS-Windows build. nt/inc/unistd.h (tcgetpgrp, setsid): Provide prototypes. --- nt/ChangeLog | 4 ++++ nt/inc/unistd.h | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/nt/ChangeLog b/nt/ChangeLog index ad8c53a27b8..931cb745c8b 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,7 @@ +2012-11-05 Eli Zaretskii + + * inc/unistd.h (tcgetpgrp, setsid): Provide prototypes. + 2012-11-05 Juanma Barranquero * config.nt: Sync with autogen/config.in. diff --git a/nt/inc/unistd.h b/nt/inc/unistd.h index 383bc3decec..7cab27b325f 100644 --- a/nt/inc/unistd.h +++ b/nt/inc/unistd.h @@ -8,9 +8,14 @@ also includes , so there's no need to declare 'environ' here. */ +/* Privide prototypes of library functions that are emulated on w32 + and whose prototypes are usually found in unistd.h on Posix + platforms. */ extern ssize_t readlink (const char *, char *, size_t); extern int symlink (char const *, char const *); extern int setpgid (pid_t, pid_t); extern pid_t getpgrp (void); +extern pid_t setsid (void); +extern pid_t tcgetpgrp (int); #endif /* _UNISTD_H */ From c8e3a9c3db7dfb5a04ec2bf4b1aae55809f94de4 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 5 Nov 2012 18:30:45 +0200 Subject: [PATCH 151/165] Fix bug #12805 with compilation error in the cygw32 build. src/makefile.w32-in ($(BLD)/w32fns.$(O)): Depend on $(NT_INC)/unistd.h. src/w32fns.c Include unistd.h, to avoid compiler warnings on Cygwin. (emacs_abort) [CYGWIN]: Don't call _open_osfhandle; instead, use file descriptor 2 for standard error. --- src/ChangeLog | 8 ++++++++ src/makefile.w32-in | 1 + src/w32fns.c | 10 +++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index d0f42dd2394..1924c08cacb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2012-11-05 Eli Zaretskii + + * makefile.w32-in ($(BLD)/w32fns.$(O)): Depend on $(NT_INC)/unistd.h. + + * w32fns.c Include unistd.h, to avoid compiler warnings on Cygwin. + (emacs_abort) [CYGWIN]: Don't call _open_osfhandle; instead, use + file descriptor 2 for standard error. + 2012-11-05 Chong Yidong * process.c (wait_reading_process_output): Revert previous change. diff --git a/src/makefile.w32-in b/src/makefile.w32-in index 5be1ccb70df..9df5dedb7ea 100644 --- a/src/makefile.w32-in +++ b/src/makefile.w32-in @@ -1564,6 +1564,7 @@ $(BLD)/w32fns.$(O) : \ $(SRC)/w32.h \ $(SRC)/w32common.h \ $(SRC)/w32heap.h \ + $(NT_INC)/unistd.h \ $(BUFFER_H) \ $(CCL_H) \ $(CHARACTER_H) \ diff --git a/src/w32fns.c b/src/w32fns.c index 74bb2375ea5..18e29ecaaf5 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -27,6 +27,7 @@ along with GNU Emacs. If not, see . */ #include #include #include +#include #include "lisp.h" #include "w32term.h" @@ -7749,12 +7750,19 @@ emacs_abort (void) if (i) { +#ifdef CYGWIN + int stderr_fd = 2; +#else HANDLE errout = GetStdHandle (STD_ERROR_HANDLE); - int stderr_fd = -1, errfile_fd = -1; + int stderr_fd = -1; +#endif + int errfile_fd = -1; int j; +#ifndef CYGWIN if (errout && errout != INVALID_HANDLE_VALUE) stderr_fd = _open_osfhandle ((intptr_t)errout, O_APPEND | O_BINARY); +#endif if (stderr_fd >= 0) write (stderr_fd, "\r\nBacktrace:\r\n", 14); errfile_fd = _open ("emacs_backtrace.txt", O_RDWR | O_CREAT | O_BINARY, S_IREAD | S_IWRITE); From 53fc914f80ef833cf70bb3b43ab752f011acb4ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20Mart=C3=ADn?= Date: Mon, 5 Nov 2012 17:32:35 +0100 Subject: [PATCH 152/165] ispell.el (ispell-program-name): Update spellchecker parameters when customized. --- lisp/ChangeLog | 5 +++++ lisp/textmodes/ispell.el | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 09f3a586b4f..72ccfb4caf6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-11-05 Agustín Martín Domingo + + * textmodes/ispell.el (ispell-program-name): Update + spellchecker parameters when customized. + 2012-11-04 Glenn Morris * vc/vc-svn.el (vc-svn-state-heuristic): Avoid calling svn. (Bug#7850) diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index d591dc5fa85..de60ac37d9e 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -357,6 +357,10 @@ Must be greater than 1." "ispell") "Program invoked by \\[ispell-word] and \\[ispell-region] commands." :type 'string + :set (lambda (symbol value) + (set-default symbol value) + (if (featurep 'ispell) + (ispell-set-spellchecker-params))) :group 'ispell) (defcustom ispell-alternate-dictionary From ae600a8e8b579d77168333532ac29d6305c982d7 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 5 Nov 2012 19:25:50 +0200 Subject: [PATCH 153/165] Fix last entry in src/ChangeLog. --- src/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1924c08cacb..4f6edcf7a04 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -4,7 +4,7 @@ * w32fns.c Include unistd.h, to avoid compiler warnings on Cygwin. (emacs_abort) [CYGWIN]: Don't call _open_osfhandle; instead, use - file descriptor 2 for standard error. + file descriptor 2 for standard error. (Bug#12805) 2012-11-05 Chong Yidong From 8e2417bfc0d0b3cfb5c47e388c7dd7e1276bd54c Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Mon, 5 Nov 2012 18:29:30 +0100 Subject: [PATCH 154/165] Fix typos. --- nt/inc/unistd.h | 4 ++-- src/ChangeLog | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nt/inc/unistd.h b/nt/inc/unistd.h index 7cab27b325f..4c5f7d4c124 100644 --- a/nt/inc/unistd.h +++ b/nt/inc/unistd.h @@ -8,8 +8,8 @@ also includes , so there's no need to declare 'environ' here. */ -/* Privide prototypes of library functions that are emulated on w32 - and whose prototypes are usually found in unistd.h on Posix +/* Provide prototypes of library functions that are emulated on w32 + and whose prototypes are usually found in unistd.h on POSIX platforms. */ extern ssize_t readlink (const char *, char *, size_t); extern int symlink (char const *, char const *); diff --git a/src/ChangeLog b/src/ChangeLog index 4f6edcf7a04..752f14d7185 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -2,7 +2,7 @@ * makefile.w32-in ($(BLD)/w32fns.$(O)): Depend on $(NT_INC)/unistd.h. - * w32fns.c Include unistd.h, to avoid compiler warnings on Cygwin. + * w32fns.c: Include unistd.h, to avoid compiler warnings on Cygwin. (emacs_abort) [CYGWIN]: Don't call _open_osfhandle; instead, use file descriptor 2 for standard error. (Bug#12805) @@ -827,7 +827,7 @@ now a supported configuration. * Makefile.in: consolidate image variables into LIBIMAGE; add - W32_OBJ and W32_LIBS. Compile new files. + W32_OBJ and W32_LIBS. Compile new files. * conf_post.h: (_DebPrint) declare tracing facility for W32 debugging. We need From 89bc059271bd3d7c62314a05664b111705c4bec9 Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Tue, 6 Nov 2012 10:27:20 +0400 Subject: [PATCH 155/165] * window.c (quad): New function. (Fwindow_edges, Fwindow_pixel_edges, Fwindow_inside_edges) (Fwindow_absolute_pixel_edges, Fwindow_inside_absolute_pixel_edges) (Fwindow_inside_pixel_edges, Fpos_visible_in_window_p) (Fwindow_line_height): Use it. (Fwindow_fringes): Use list3. (Fwindow_scroll_bars): Use list4. (Fwindow_frame, Fwindow_top_child, Fwindow_left_child) (Fwindow_combination_limit): Allow zero number of arguments. --- src/ChangeLog | 12 ++++ src/window.c | 150 +++++++++++++++++++++++--------------------------- 2 files changed, 82 insertions(+), 80 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 752f14d7185..1daeb7bc0b6 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,15 @@ +2012-11-06 Dmitry Antipov + + * window.c (quad): New function. + (Fwindow_edges, Fwindow_pixel_edges, Fwindow_inside_edges) + (Fwindow_absolute_pixel_edges, Fwindow_inside_absolute_pixel_edges) + (Fwindow_inside_pixel_edges, Fpos_visible_in_window_p) + (Fwindow_line_height): Use it. + (Fwindow_fringes): Use list3. + (Fwindow_scroll_bars): Use list4. + (Fwindow_frame, Fwindow_top_child, Fwindow_left_child) + (Fwindow_combination_limit): Allow zero number of arguments. + 2012-11-05 Eli Zaretskii * makefile.w32-in ($(BLD)/w32fns.$(O)): Depend on $(NT_INC)/unistd.h. diff --git a/src/window.c b/src/window.c index 766765cfa09..75a8d42d8d1 100644 --- a/src/window.c +++ b/src/window.c @@ -270,6 +270,15 @@ decode_valid_window (register Lisp_Object window) return w; } +/* Build a frequently used 4-integer (X Y W H) list. */ + +static Lisp_Object +quad (ptrdiff_t x, ptrdiff_t y, ptrdiff_t w, ptrdiff_t h) +{ + return list4 (make_number (x), make_number (y), + make_number (w), make_number (h)); +} + DEFUN ("windowp", Fwindowp, Swindowp, 1, 1, 0, doc: /* Return t if OBJECT is a window and nil otherwise. */) (Lisp_Object object) @@ -296,7 +305,7 @@ Internal windows and deleted windows are not live. */) } /* Frames and windows. */ -DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 1, 1, 0, +DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 0, 1, 0, doc: /* Return the frame that window WINDOW is on. WINDOW must be a valid window and defaults to the selected one. */) (Lisp_Object window) @@ -556,7 +565,7 @@ Return nil for a window with no parent (e.g. a root window). */) return decode_valid_window (window)->parent; } -DEFUN ("window-top-child", Fwindow_top_child, Swindow_top_child, 1, 1, 0, +DEFUN ("window-top-child", Fwindow_top_child, Swindow_top_child, 0, 1, 0, doc: /* Return the topmost child window of window WINDOW. WINDOW must be a valid window and defaults to the selected one. Return nil if WINDOW is a live window (live windows have no children). @@ -564,11 +573,10 @@ Return nil if WINDOW is an internal window whose children form a horizontal combination. */) (Lisp_Object window) { - CHECK_WINDOW (window); return decode_valid_window (window)->vchild; } -DEFUN ("window-left-child", Fwindow_left_child, Swindow_left_child, 1, 1, 0, +DEFUN ("window-left-child", Fwindow_left_child, Swindow_left_child, 0, 1, 0, doc: /* Return the leftmost child window of window WINDOW. WINDOW must be a valid window and defaults to the selected one. Return nil if WINDOW is a live window (live windows have no children). @@ -576,7 +584,6 @@ Return nil if WINDOW is an internal window whose children form a vertical combination. */) (Lisp_Object window) { - CHECK_WINDOW (window); return decode_valid_window (window)->hchild; } @@ -598,7 +605,7 @@ Return nil if WINDOW has no previous sibling. */) return decode_valid_window (window)->prev; } -DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 1, 1, 0, +DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 0, 1, 0, doc: /* Return combination limit of window WINDOW. WINDOW must be a valid window and defaults to the selected one. If the return value is nil, child windows of WINDOW can be recombined with @@ -829,10 +836,8 @@ Note that if `automatic-hscrolling' is non-nil, you cannot scroll the window so that the location of point moves off-window. */) (Lisp_Object window, Lisp_Object ncol) { - struct window *w = decode_live_window (window); - CHECK_NUMBER (ncol); - return set_window_hscroll (w, XINT (ncol)); + return set_window_hscroll (decode_live_window (window), XINT (ncol)); } DEFUN ("window-redisplay-end-trigger", Fwindow_redisplay_end_trigger, @@ -877,11 +882,8 @@ header line, and/or mode line. For the edges of just the text area, use { register struct window *w = decode_valid_window (window); - return Fcons (make_number (WINDOW_LEFT_EDGE_COL (w)), - Fcons (make_number (WINDOW_TOP_EDGE_LINE (w)), - Fcons (make_number (WINDOW_RIGHT_EDGE_COL (w)), - Fcons (make_number (WINDOW_BOTTOM_EDGE_LINE (w)), - Qnil)))); + return quad (WINDOW_LEFT_EDGE_COL (w), WINDOW_TOP_EDGE_LINE (w), + WINDOW_RIGHT_EDGE_COL (w), WINDOW_BOTTOM_EDGE_LINE (w)); } DEFUN ("window-pixel-edges", Fwindow_pixel_edges, Swindow_pixel_edges, 0, 1, 0, @@ -900,11 +902,8 @@ of just the text area, use `window-inside-pixel-edges'. */) { register struct window *w = decode_valid_window (window); - return Fcons (make_number (WINDOW_LEFT_EDGE_X (w)), - Fcons (make_number (WINDOW_TOP_EDGE_Y (w)), - Fcons (make_number (WINDOW_RIGHT_EDGE_X (w)), - Fcons (make_number (WINDOW_BOTTOM_EDGE_Y (w)), - Qnil)))); + return quad (WINDOW_LEFT_EDGE_X (w), WINDOW_TOP_EDGE_Y (w), + WINDOW_RIGHT_EDGE_X (w), WINDOW_BOTTOM_EDGE_Y (w)); } static void @@ -946,13 +945,13 @@ of just the text area, use `window-inside-absolute-pixel-edges'. */) { register struct window *w = decode_valid_window (window); int add_x, add_y; + calc_absolute_offset (w, &add_x, &add_y); - return Fcons (make_number (WINDOW_LEFT_EDGE_X (w) + add_x), - Fcons (make_number (WINDOW_TOP_EDGE_Y (w) + add_y), - Fcons (make_number (WINDOW_RIGHT_EDGE_X (w) + add_x), - Fcons (make_number (WINDOW_BOTTOM_EDGE_Y (w) + add_y), - Qnil)))); + return quad (WINDOW_LEFT_EDGE_X (w) + add_x, + WINDOW_TOP_EDGE_Y (w) + add_y, + WINDOW_RIGHT_EDGE_X (w) + add_x, + WINDOW_BOTTOM_EDGE_Y (w) + add_y); } DEFUN ("window-inside-edges", Fwindow_inside_edges, Swindow_inside_edges, 0, 1, 0, @@ -971,16 +970,16 @@ display margins, fringes, header line, and/or mode line. */) { register struct window *w = decode_live_window (window); - return list4 (make_number (WINDOW_BOX_LEFT_EDGE_COL (w) - + WINDOW_LEFT_MARGIN_COLS (w) - + WINDOW_LEFT_FRINGE_COLS (w)), - make_number (WINDOW_TOP_EDGE_LINE (w) - + WINDOW_HEADER_LINE_LINES (w)), - make_number (WINDOW_BOX_RIGHT_EDGE_COL (w) - - WINDOW_RIGHT_MARGIN_COLS (w) - - WINDOW_RIGHT_FRINGE_COLS (w)), - make_number (WINDOW_BOTTOM_EDGE_LINE (w) - - WINDOW_MODE_LINE_LINES (w))); + return quad (WINDOW_BOX_LEFT_EDGE_COL (w) + + WINDOW_LEFT_MARGIN_COLS (w) + + WINDOW_LEFT_FRINGE_COLS (w), + WINDOW_TOP_EDGE_LINE (w) + + WINDOW_HEADER_LINE_LINES (w), + WINDOW_BOX_RIGHT_EDGE_COL (w) + - WINDOW_RIGHT_MARGIN_COLS (w) + - WINDOW_RIGHT_FRINGE_COLS (w), + WINDOW_BOTTOM_EDGE_LINE (w) + - WINDOW_MODE_LINE_LINES (w)); } DEFUN ("window-inside-pixel-edges", Fwindow_inside_pixel_edges, Swindow_inside_pixel_edges, 0, 1, 0, @@ -998,16 +997,16 @@ display margins, fringes, header line, and/or mode line. */) { register struct window *w = decode_live_window (window); - return list4 (make_number (WINDOW_BOX_LEFT_EDGE_X (w) - + WINDOW_LEFT_MARGIN_WIDTH (w) - + WINDOW_LEFT_FRINGE_WIDTH (w)), - make_number (WINDOW_TOP_EDGE_Y (w) - + WINDOW_HEADER_LINE_HEIGHT (w)), - make_number (WINDOW_BOX_RIGHT_EDGE_X (w) - - WINDOW_RIGHT_MARGIN_WIDTH (w) - - WINDOW_RIGHT_FRINGE_WIDTH (w)), - make_number (WINDOW_BOTTOM_EDGE_Y (w) - - WINDOW_MODE_LINE_HEIGHT (w))); + return quad (WINDOW_BOX_LEFT_EDGE_X (w) + + WINDOW_LEFT_MARGIN_WIDTH (w) + + WINDOW_LEFT_FRINGE_WIDTH (w), + WINDOW_TOP_EDGE_Y (w) + + WINDOW_HEADER_LINE_HEIGHT (w), + WINDOW_BOX_RIGHT_EDGE_X (w) + - WINDOW_RIGHT_MARGIN_WIDTH (w) + - WINDOW_RIGHT_FRINGE_WIDTH (w), + WINDOW_BOTTOM_EDGE_Y (w) + - WINDOW_MODE_LINE_HEIGHT (w)); } DEFUN ("window-inside-absolute-pixel-edges", @@ -1027,18 +1026,19 @@ display margins, fringes, header line, and/or mode line. */) { register struct window *w = decode_live_window (window); int add_x, add_y; + calc_absolute_offset (w, &add_x, &add_y); - return list4 (make_number (WINDOW_BOX_LEFT_EDGE_X (w) - + WINDOW_LEFT_MARGIN_WIDTH (w) - + WINDOW_LEFT_FRINGE_WIDTH (w) + add_x), - make_number (WINDOW_TOP_EDGE_Y (w) - + WINDOW_HEADER_LINE_HEIGHT (w) + add_y), - make_number (WINDOW_BOX_RIGHT_EDGE_X (w) - - WINDOW_RIGHT_MARGIN_WIDTH (w) - - WINDOW_RIGHT_FRINGE_WIDTH (w) + add_x), - make_number (WINDOW_BOTTOM_EDGE_Y (w) - - WINDOW_MODE_LINE_HEIGHT (w) + add_y)); + return quad (WINDOW_BOX_LEFT_EDGE_X (w) + + WINDOW_LEFT_MARGIN_WIDTH (w) + + WINDOW_LEFT_FRINGE_WIDTH (w) + add_x, + WINDOW_TOP_EDGE_Y (w) + + WINDOW_HEADER_LINE_HEIGHT (w) + add_y, + WINDOW_BOX_RIGHT_EDGE_X (w) + - WINDOW_RIGHT_MARGIN_WIDTH (w) + - WINDOW_RIGHT_FRINGE_WIDTH (w) + add_x, + WINDOW_BOTTOM_EDGE_Y (w) + - WINDOW_MODE_LINE_HEIGHT (w) + add_y); } /* Test if the character at column X, row Y is within window W. @@ -1624,8 +1624,7 @@ display row, and VPOS is the row number (0-based) containing POS. */) { Lisp_Object part = Qnil; if (!fully_p) - part = list4 (make_number (rtop), make_number (rbot), - make_number (rowh), make_number (vpos)); + part = quad (rtop, rbot, rowh, vpos); in_window = Fcons (make_number (x), Fcons (make_number (y), part)); } @@ -1691,23 +1690,18 @@ Return nil if window display is not up-to-date. In that case, use if (!WINDOW_WANTS_HEADER_LINE_P (w)) return Qnil; row = MATRIX_HEADER_LINE_ROW (w->current_matrix); - if (!row->enabled_p) - return Qnil; - return list4 (make_number (row->height), - make_number (0), make_number (0), - make_number (0)); + return row->enabled_p ? quad (row->height, 0, 0, 0) : Qnil; } if (EQ (line, Qmode_line)) { row = MATRIX_MODE_LINE_ROW (w->current_matrix); - if (!row->enabled_p) - return Qnil; - return list4 (make_number (row->height), - make_number (0), /* not accurate */ - make_number (WINDOW_HEADER_LINE_HEIGHT (w) - + window_text_bottom_y (w)), - make_number (0)); + return (row->enabled_p ? + quad (row->height, + 0, /* not accurate */ + WINDOW_HEADER_LINE_HEIGHT (w) + + window_text_bottom_y (w), 0) + : Qnil); } CHECK_NUMBER (line); @@ -1736,10 +1730,7 @@ Return nil if window display is not up-to-date. In that case, use found_row: crop = max (0, (row->y + row->height) - max_y); - return list4 (make_number (row->height + min (0, row->y) - crop), - make_number (i), - make_number (row->y), - make_number (crop)); + return quad (row->height + min (0, row->y) - crop, i, row->y, crop); } DEFUN ("window-dedicated-p", Fwindow_dedicated_p, Swindow_dedicated_p, @@ -6315,10 +6306,9 @@ Value is a list of the form (LEFT-WIDTH RIGHT-WIDTH OUTSIDE-MARGINS). */) { struct window *w = decode_live_window (window); - return Fcons (make_number (WINDOW_LEFT_FRINGE_WIDTH (w)), - Fcons (make_number (WINDOW_RIGHT_FRINGE_WIDTH (w)), - Fcons ((WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) - ? Qt : Qnil), Qnil))); + return list3 (make_number (WINDOW_LEFT_FRINGE_WIDTH (w)), + make_number (WINDOW_RIGHT_FRINGE_WIDTH (w)), + WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) ? Qt : Qnil); } @@ -6387,12 +6377,12 @@ value. */) (Lisp_Object window) { struct window *w = decode_live_window (window); - return Fcons (make_number ((WINDOW_CONFIG_SCROLL_BAR_WIDTH (w) + + return list4 (make_number ((WINDOW_CONFIG_SCROLL_BAR_WIDTH (w) ? WINDOW_CONFIG_SCROLL_BAR_WIDTH (w) : WINDOW_SCROLL_BAR_AREA_WIDTH (w))), - Fcons (make_number (WINDOW_SCROLL_BAR_COLS (w)), - Fcons (w->vertical_scroll_bar_type, - Fcons (Qnil, Qnil)))); + make_number (WINDOW_SCROLL_BAR_COLS (w)), + w->vertical_scroll_bar_type, Qnil); } From 8e6a67b7fa719b0527bb66377d6b72c3c4e84142 Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Tue, 6 Nov 2012 11:37:06 +0400 Subject: [PATCH 156/165] * emacs-lisp/byte-opt.el (toplevel): Add compare-window-configurations, frame-first-window, frame-root-window, frame-selected-window, minibuffer-selected-window, minibuffer-window, window-absolute-pixel-edges, window-at, window-body-height, window-body-width, window-display-table, window-combination-limit, window-frame, window-fringes, window-inside-absolute-pixel-edges, window-inside-edges, window-inside-pixel-edges, window-left-child, window-left-column, window-margins, window-next-buffers, window-next-sibling, window-new-normal, window-new-total, window-normal-size, window-parameter, window-parameters, window-parent, window-pixel-edges, window-point, window-prev-buffers, window-prev-sibling, window-redisplay-end-trigger, window-scroll-bars, window-start, window-text-height, window-top-child, window-top-line, window-total-height, window-total-width and window-use-time to the list of functions without side-effects. (toplevel): Add window-valid-p to the list of error-free functions without side-effects. --- lisp/ChangeLog | 20 ++++++++++++++++++++ lisp/emacs-lisp/byte-opt.el | 34 +++++++++++++++++++++++----------- 2 files changed, 43 insertions(+), 11 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 72ccfb4caf6..2347b7f6e93 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,23 @@ +2012-11-06 Dmitry Antipov + + * emacs-lisp/byte-opt.el (toplevel): Add compare-window-configurations, + frame-first-window, frame-root-window, frame-selected-window, + minibuffer-selected-window, minibuffer-window, + window-absolute-pixel-edges, window-at, window-body-height, + window-body-width, window-display-table, window-combination-limit, + window-frame, window-fringes, window-inside-absolute-pixel-edges, + window-inside-edges, window-inside-pixel-edges, window-left-child, + window-left-column, window-margins, window-next-buffers, + window-next-sibling, window-new-normal, window-new-total, + window-normal-size, window-parameter, window-parameters, window-parent, + window-pixel-edges, window-point, window-prev-buffers, + window-prev-sibling, window-redisplay-end-trigger, window-scroll-bars, + window-start, window-text-height, window-top-child, window-top-line, + window-total-height, window-total-width and window-use-time to the list + of functions without side-effects. + (toplevel): Add window-valid-p to the list of error-free functions + without side-effects. + 2012-11-05 Agustín Martín Domingo * textmodes/ispell.el (ispell-program-name): Update diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index a4c3e8aac4e..07e95e7e4cd 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el @@ -1187,8 +1187,8 @@ boundp buffer-file-name buffer-local-variables buffer-modified-p buffer-substring byte-code-function-p capitalize car-less-than-car car cdr ceiling char-after char-before - char-equal char-to-string char-width - compare-strings concat coordinates-in-window-p + char-equal char-to-string char-width compare-strings + compare-window-configurations concat coordinates-in-window-p copy-alist copy-sequence copy-marker cos count-lines decode-char decode-time default-boundp default-value documentation downcase @@ -1196,17 +1196,18 @@ fboundp fceiling featurep ffloor file-directory-p file-exists-p file-locked-p file-name-absolute-p file-newer-than-file-p file-readable-p file-symlink-p file-writable-p - float float-time floor format format-time-string frame-visible-p - fround ftruncate + float float-time floor format format-time-string frame-first-window + frame-root-window frame-selected-window + frame-visible-p fround ftruncate get gethash get-buffer get-buffer-window getenv get-file-buffer hash-table-count int-to-string intern-soft keymap-parent length local-variable-if-set-p local-variable-p log log10 logand logb logior lognot logxor lsh langinfo - make-list make-string make-symbol - marker-buffer max member memq min mod multibyte-char-to-unibyte - next-window nth nthcdr number-to-string + make-list make-string make-symbol marker-buffer max member memq min + minibuffer-selected-window minibuffer-window + mod multibyte-char-to-unibyte next-window nth nthcdr number-to-string parse-colon-path plist-get plist-member prefix-numeric-value previous-window prin1-to-string propertize degrees-to-radians @@ -1221,9 +1222,19 @@ unibyte-char-to-multibyte upcase user-full-name user-login-name user-original-login-name custom-variable-p vconcat - window-buffer window-dedicated-p window-edges window-height - window-hscroll window-minibuffer-p window-width - zerop)) + window-absolute-pixel-edges window-at window-body-height + window-body-width window-buffer window-dedicated-p window-display-table + window-combination-limit window-edges window-frame window-fringes + window-height window-hscroll window-inside-edges + window-inside-absolute-pixel-edges window-inside-pixel-edges + window-left-child window-left-column window-margins window-minibuffer-p + window-next-buffers window-next-sibling window-new-normal + window-new-total window-normal-size window-parameter window-parameters + window-parent window-pixel-edges window-point window-prev-buffers + window-prev-sibling window-redisplay-end-trigger window-scroll-bars + window-start window-text-height window-top-child window-top-line + window-total-height window-total-width window-use-time window-vscroll + window-width zerop)) (side-effect-and-error-free-fns '(arrayp atom bobp bolp bool-vector-p @@ -1256,7 +1267,8 @@ this-single-command-raw-keys user-real-login-name user-real-uid user-uid vector vectorp visible-frame-list - wholenump window-configuration-p window-live-p windowp))) + wholenump window-configuration-p window-live-p + window-valid-p windowp))) (while side-effect-free-fns (put (car side-effect-free-fns) 'side-effect-free t) (setq side-effect-free-fns (cdr side-effect-free-fns))) From d9f07150fc320156377a172fd4a5ec23f13a15c0 Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Tue, 6 Nov 2012 17:26:20 +0400 Subject: [PATCH 157/165] Widely used frame validity and checking functions. * frame.h (decode_live_frame, decode_any_frame): Add prototypes. * frame.c (decode_live_frame, decode_any_frame): New functions. (delete_frame, Fredirect_frame_focus, Fframe_parameters) (Fframe_parameter, Fframe_char_height, Fframe_char_width) (Fframe_pixel_height, Fframe_pixel_width, Ftool_bar_pixel_width) (Fframe_pointer_visible_p): Use decode_any_frame. (Fmake_frame_visible, Fmake_frame_invisible, Ficonify_frame) (Fraise_frame, Flower_frame, Fmodify_frame_parameters) (Fset_frame_height, Fset_frame_width): Use decode_live_frame. (Fframe_focus): Likewise. Allow zero number of arguments. Adjust docstring. (frame_buffer_list, frame_buffer_predicate): Remove. * lisp.h (frame_buffer_predicate): Remove prototype. * buffer.c (Fother_buffer): Use decode_any_frame. * xdisp.c (Ftool_bar_lines_needed): Likewise. * xfaces.c (Fcolor_gray_p, Fcolor_supported_p): Likewise. * font.c (Ffont_face_attributes, Ffont_family_list, Fopen_font) (Fclose_font, Ffont_info): Use decode_live_frame. * fontset.c (check_fontset_name): Likewise. * terminal.c (Fframe_terminal): Likewise. * w32fns.c (check_x_frame): Likewise. * window.c (Fminibuffer_window, Fwindow_at) (Fcurrent_window_configuration): Likewise. (Frun_window_configuration_change_hook, Fwindow_resize_apply): Likewise. Allow zero number of arguments. Adjust docstring. * dispnew.c (Fredraw_frame): Likewise. * xfaces.c (frame_or_selected_frame): Remove. (Fx_list_fonts, Finternal_get_lisp_face_attribute, Fface_font) (Finternal_lisp_face_equal_p, Finternal_lisp_face_empty_p) (Fframe_face_alist): Use decode_live_frame. * xfns.c (check_x_frame): Likewise. --- src/ChangeLog | 35 ++++++++ src/buffer.c | 12 +-- src/dispnew.c | 10 +-- src/font.c | 40 +++------ src/fontset.c | 9 +- src/frame.c | 235 +++++++++++++++---------------------------------- src/frame.h | 2 + src/lisp.h | 1 - src/terminal.c | 9 +- src/w32fns.c | 6 +- src/window.c | 46 +++------- src/xdisp.c | 11 +-- src/xfaces.c | 98 +++++---------------- src/xfns.c | 6 +- 14 files changed, 172 insertions(+), 348 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1daeb7bc0b6..0a277a0d67b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,38 @@ +2012-11-06 Dmitry Antipov + + Widely used frame validity and checking functions. + * frame.h (decode_live_frame, decode_any_frame): Add prototypes. + * frame.c (decode_live_frame, decode_any_frame): New functions. + (delete_frame, Fredirect_frame_focus, Fframe_parameters) + (Fframe_parameter, Fframe_char_height, Fframe_char_width) + (Fframe_pixel_height, Fframe_pixel_width, Ftool_bar_pixel_width) + (Fframe_pointer_visible_p): Use decode_any_frame. + (Fmake_frame_visible, Fmake_frame_invisible, Ficonify_frame) + (Fraise_frame, Flower_frame, Fmodify_frame_parameters) + (Fset_frame_height, Fset_frame_width): Use decode_live_frame. + (Fframe_focus): Likewise. Allow zero number of arguments. + Adjust docstring. + (frame_buffer_list, frame_buffer_predicate): Remove. + * lisp.h (frame_buffer_predicate): Remove prototype. + * buffer.c (Fother_buffer): Use decode_any_frame. + * xdisp.c (Ftool_bar_lines_needed): Likewise. + * xfaces.c (Fcolor_gray_p, Fcolor_supported_p): Likewise. + * font.c (Ffont_face_attributes, Ffont_family_list, Fopen_font) + (Fclose_font, Ffont_info): Use decode_live_frame. + * fontset.c (check_fontset_name): Likewise. + * terminal.c (Fframe_terminal): Likewise. + * w32fns.c (check_x_frame): Likewise. + * window.c (Fminibuffer_window, Fwindow_at) + (Fcurrent_window_configuration): Likewise. + (Frun_window_configuration_change_hook, Fwindow_resize_apply): + Likewise. Allow zero number of arguments. Adjust docstring. + * dispnew.c (Fredraw_frame): Likewise. + * xfaces.c (frame_or_selected_frame): Remove. + (Fx_list_fonts, Finternal_get_lisp_face_attribute, Fface_font) + (Finternal_lisp_face_equal_p, Finternal_lisp_face_empty_p) + (Fframe_face_alist): Use decode_live_frame. + * xfns.c (check_x_frame): Likewise. + 2012-11-06 Dmitry Antipov * window.c (quad): New function. diff --git a/src/buffer.c b/src/buffer.c index 347f27edc3a..24286610570 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1543,17 +1543,11 @@ list first, followed by the list of all buffers. If no other buffer exists, return the buffer `*scratch*' (creating it if necessary). */) (register Lisp_Object buffer, Lisp_Object visible_ok, Lisp_Object frame) { - Lisp_Object tail, buf, pred; - Lisp_Object notsogood = Qnil; + struct frame *f = decode_any_frame (frame); + Lisp_Object tail = f->buffer_list, pred = f->buffer_predicate; + Lisp_Object buf, notsogood = Qnil; - if (NILP (frame)) - frame = selected_frame; - - CHECK_FRAME (frame); - - pred = frame_buffer_predicate (frame); /* Consider buffers that have been seen in the frame first. */ - tail = XFRAME (frame)->buffer_list; for (; CONSP (tail); tail = XCDR (tail)) { buf = XCAR (tail); diff --git a/src/dispnew.c b/src/dispnew.c index 907259a3e94..4758f4ad76f 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -3071,14 +3071,12 @@ window_to_frame_hpos (struct window *w, int hpos) Redrawing Frames **********************************************************************/ -DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 1, 1, 0, - doc: /* Clear frame FRAME and output again what is supposed to appear on it. */) +DEFUN ("redraw-frame", Fredraw_frame, Sredraw_frame, 0, 1, 0, + doc: /* Clear frame FRAME and output again what is supposed to appear on it. +If FRAME is omitted or nil, the selected frame is used. */) (Lisp_Object frame) { - struct frame *f; - - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); + struct frame *f = decode_live_frame (frame); /* Ignore redraw requests, if frame has no glyphs yet. (Implementation note: It still has to be checked why we are diff --git a/src/font.c b/src/font.c index e960f9b3d13..41dbfd7a757 100644 --- a/src/font.c +++ b/src/font.c @@ -3993,16 +3993,11 @@ The optional argument FRAME specifies the frame that the face attributes are to be displayed on. If omitted, the selected frame is used. */) (Lisp_Object font, Lisp_Object frame) { - struct frame *f; + struct frame *f = decode_live_frame (frame); Lisp_Object plist[10]; Lisp_Object val; int n = 0; - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); - if (STRINGP (font)) { int fontset = fs_query_fontset (font, 0); @@ -4152,18 +4147,15 @@ how close they are to PREFER. */) DEFUN ("font-family-list", Ffont_family_list, Sfont_family_list, 0, 1, 0, doc: /* List available font families on the current frame. -Optional argument FRAME, if non-nil, specifies the target frame. */) +If FRAME is omitted or nil, the selected frame is used. */) (Lisp_Object frame) { - FRAME_PTR f; + struct frame *f = decode_live_frame (frame); struct font_driver_list *driver_list; - Lisp_Object list; + Lisp_Object list = Qnil; + + XSETFRAME (frame, f); - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); - list = Qnil; for (driver_list = f->font_driver_list; driver_list; driver_list = driver_list->next) if (driver_list->driver->list_family) @@ -4531,11 +4523,9 @@ DEFUN ("open-font", Fopen_font, Sopen_font, 1, 3, 0, (Lisp_Object font_entity, Lisp_Object size, Lisp_Object frame) { EMACS_INT isize; + struct frame *f = decode_live_frame (frame); CHECK_FONT_ENTITY (font_entity); - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); if (NILP (size)) isize = XINT (AREF (font_entity, FONT_SIZE_INDEX)); @@ -4543,7 +4533,7 @@ DEFUN ("open-font", Fopen_font, Sopen_font, 1, 3, 0, { CHECK_NUMBER_OR_FLOAT (size); if (FLOATP (size)) - isize = POINT_TO_PIXEL (XFLOAT_DATA (size), XFRAME (frame)->resy); + isize = POINT_TO_PIXEL (XFLOAT_DATA (size), f->resy); else isize = XINT (size); if (! (INT_MIN <= isize && isize <= INT_MAX)) @@ -4551,7 +4541,7 @@ DEFUN ("open-font", Fopen_font, Sopen_font, 1, 3, 0, if (isize == 0) isize = 120; } - return font_open_entity (XFRAME (frame), font_entity, isize); + return font_open_entity (f, font_entity, isize); } DEFUN ("close-font", Fclose_font, Sclose_font, 1, 2, 0, @@ -4559,10 +4549,7 @@ DEFUN ("close-font", Fclose_font, Sclose_font, 1, 2, 0, (Lisp_Object font_object, Lisp_Object frame) { CHECK_FONT_OBJECT (font_object); - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - font_close_object (XFRAME (frame), font_object); + font_close_object (decode_live_frame (frame), font_object); return Qnil; } @@ -4847,7 +4834,7 @@ where If the named font is not yet loaded, return nil. */) (Lisp_Object name, Lisp_Object frame) { - FRAME_PTR f; + struct frame *f; struct font *font; Lisp_Object info; Lisp_Object font_object; @@ -4856,10 +4843,7 @@ If the named font is not yet loaded, return nil. */) if (! FONTP (name)) CHECK_STRING (name); - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); + f = decode_live_frame (frame); if (STRINGP (name)) { diff --git a/src/fontset.c b/src/fontset.c index da745b31ca1..b76a216bac2 100644 --- a/src/fontset.c +++ b/src/fontset.c @@ -1326,17 +1326,14 @@ static Lisp_Object check_fontset_name (Lisp_Object name, Lisp_Object *frame) { int id; + struct frame *f = decode_live_frame (*frame); - if (NILP (*frame)) - *frame = selected_frame; - CHECK_LIVE_FRAME (*frame); + XSETFRAME (*frame, f); if (EQ (name, Qt)) return Vdefault_fontset; if (NILP (name)) - { - id = FRAME_FONTSET (XFRAME (*frame)); - } + id = FRAME_FONTSET (f); else { CHECK_STRING (name); diff --git a/src/frame.c b/src/frame.c index 1d375380d56..52be8be270e 100644 --- a/src/frame.c +++ b/src/frame.c @@ -131,7 +131,24 @@ fset_minibuffer_window (struct frame *f, Lisp_Object val) f->minibuffer_window = val; } - +struct frame * +decode_live_frame (register Lisp_Object frame) +{ + if (NILP (frame)) + frame = selected_frame; + CHECK_LIVE_FRAME (frame); + return XFRAME (frame); +} + +struct frame * +decode_any_frame (register Lisp_Object frame) +{ + if (NILP (frame)) + frame = selected_frame; + CHECK_FRAME (frame); + return XFRAME (frame); +} + static void set_menu_bar_lines_1 (Lisp_Object window, int n) { @@ -1118,23 +1135,12 @@ other_visible_frames (FRAME_PTR f) Lisp_Object delete_frame (Lisp_Object frame, Lisp_Object force) { - struct frame *f; + struct frame *f = decode_any_frame (frame); struct frame *sf = SELECTED_FRAME (); struct kboard *kb; int minibuffer_selected, is_tooltip_frame; - if (EQ (frame, Qnil)) - { - f = sf; - XSETFRAME (frame, f); - } - else - { - CHECK_FRAME (frame); - f = XFRAME (frame); - } - if (! FRAME_LIVE_P (f)) return Qnil; @@ -1146,9 +1152,11 @@ delete_frame (Lisp_Object frame, Lisp_Object force) if (NILP (XCDR (Vframe_list)) && !EQ (force, Qnoelisp)) error ("Attempt to delete the only frame"); + XSETFRAME (frame, f); + /* Does this frame have a minibuffer, and is it the surrogate minibuffer for any other frame? */ - if (FRAME_HAS_MINIBUF_P (XFRAME (frame))) + if (FRAME_HAS_MINIBUF_P (f)) { Lisp_Object frames; @@ -1663,25 +1671,23 @@ DEFUN ("make-frame-visible", Fmake_frame_visible, Smake_frame_visible, If omitted, FRAME defaults to the currently selected frame. */) (Lisp_Object frame) { - if (NILP (frame)) - frame = selected_frame; - - CHECK_LIVE_FRAME (frame); + struct frame *f = decode_live_frame (frame); /* I think this should be done with a hook. */ #ifdef HAVE_WINDOW_SYSTEM - if (FRAME_WINDOW_P (XFRAME (frame))) + if (FRAME_WINDOW_P (f)) { - FRAME_SAMPLE_VISIBILITY (XFRAME (frame)); - x_make_frame_visible (XFRAME (frame)); + FRAME_SAMPLE_VISIBILITY (f); + x_make_frame_visible (f); } #endif - make_frame_visible_1 (XFRAME (frame)->root_window); + make_frame_visible_1 (f->root_window); /* Make menu bar update for the Buffers and Frames menus. */ windows_or_buffers_changed++; + XSETFRAME (frame, f); return frame; } @@ -1722,16 +1728,13 @@ always considered visible, whether or not they are currently being displayed in the terminal. */) (Lisp_Object frame, Lisp_Object force) { - if (NILP (frame)) - frame = selected_frame; + struct frame *f = decode_live_frame (frame); - CHECK_LIVE_FRAME (frame); - - if (NILP (force) && !other_visible_frames (XFRAME (frame))) + if (NILP (force) && !other_visible_frames (f)) error ("Attempt to make invisible the sole visible or iconified frame"); /* Don't allow minibuf_window to remain on a deleted frame. */ - if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window)) + if (EQ (f->minibuffer_window, minibuf_window)) { struct frame *sf = XFRAME (selected_frame); /* Use set_window_buffer instead of Fset_window_buffer (see @@ -1743,8 +1746,8 @@ displayed in the terminal. */) /* I think this should be done with a hook. */ #ifdef HAVE_WINDOW_SYSTEM - if (FRAME_WINDOW_P (XFRAME (frame))) - x_make_frame_invisible (XFRAME (frame)); + if (FRAME_WINDOW_P (f)) + x_make_frame_invisible (f); #endif /* Make menu bar update for the Buffers and Frames menus. */ @@ -1759,19 +1762,10 @@ DEFUN ("iconify-frame", Ficonify_frame, Siconify_frame, If omitted, FRAME defaults to the currently selected frame. */) (Lisp_Object frame) { - if (NILP (frame)) - frame = selected_frame; - - CHECK_LIVE_FRAME (frame); - -#if 0 /* This isn't logically necessary, and it can do GC. */ - /* Don't let the frame remain selected. */ - if (EQ (frame, selected_frame)) - Fhandle_switch_frame (next_frame (frame, Qt)); -#endif + struct frame *f = decode_live_frame (frame); /* Don't allow minibuf_window to remain on an iconified frame. */ - if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window)) + if (EQ (f->minibuffer_window, minibuf_window)) { struct frame *sf = XFRAME (selected_frame); /* Use set_window_buffer instead of Fset_window_buffer (see @@ -1783,8 +1777,8 @@ If omitted, FRAME defaults to the currently selected frame. */) /* I think this should be done with a hook. */ #ifdef HAVE_WINDOW_SYSTEM - if (FRAME_WINDOW_P (XFRAME (frame))) - x_iconify_frame (XFRAME (frame)); + if (FRAME_WINDOW_P (f)) + x_iconify_frame (f); #endif /* Make menu bar update for the Buffers and Frames menus. */ @@ -1848,13 +1842,9 @@ If Emacs is displaying on an ordinary terminal or some other device which doesn't support multiple overlapping frames, this function selects FRAME. */) (Lisp_Object frame) { - struct frame *f; - if (NILP (frame)) - frame = selected_frame; + struct frame *f = decode_live_frame (frame); - CHECK_LIVE_FRAME (frame); - - f = XFRAME (frame); + XSETFRAME (frame, f); if (FRAME_TERMCAP_P (f)) /* On a text terminal select FRAME. */ @@ -1877,14 +1867,7 @@ If Emacs is displaying on an ordinary terminal or some other device which doesn't support multiple overlapping frames, this function does nothing. */) (Lisp_Object frame) { - struct frame *f; - - if (NILP (frame)) - frame = selected_frame; - - CHECK_LIVE_FRAME (frame); - - f = XFRAME (frame); + struct frame *f = decode_live_frame (frame); if (FRAME_TERMINAL (f)->frame_raise_lower_hook) (*FRAME_TERMINAL (f)->frame_raise_lower_hook) (f, 0); @@ -1920,18 +1903,14 @@ is affected by `select-frame', while the latter is not. The redirection lasts until `redirect-frame-focus' is called to change it. */) (Lisp_Object frame, Lisp_Object focus_frame) { - struct frame *f; - /* Note that we don't check for a live frame here. It's reasonable to redirect the focus of a frame you're about to delete, if you know what other frame should receive those keystrokes. */ - CHECK_FRAME (frame); + struct frame *f = decode_any_frame (frame); if (! NILP (focus_frame)) CHECK_LIVE_FRAME (focus_frame); - f = XFRAME (frame); - fset_focus_frame (f, focus_frame); if (FRAME_TERMINAL (f)->frame_rehighlight_hook) @@ -1941,15 +1920,14 @@ The redirection lasts until `redirect-frame-focus' is called to change it. */) } -DEFUN ("frame-focus", Fframe_focus, Sframe_focus, 1, 1, 0, +DEFUN ("frame-focus", Fframe_focus, Sframe_focus, 0, 1, 0, doc: /* Return the frame to which FRAME's keystrokes are currently being sent. -This returns nil if FRAME's focus is not redirected. +If FRAME is omitted or nil, the selected frame is used. +Return nil if FRAME's focus is not redirected. See `redirect-frame-focus'. */) (Lisp_Object frame) { - CHECK_LIVE_FRAME (frame); - - return FRAME_FOCUS_FRAME (XFRAME (frame)); + return FRAME_FOCUS_FRAME (decode_live_frame (frame)); } @@ -1972,22 +1950,6 @@ get_frame_param (register struct frame *frame, Lisp_Object prop) } #endif -/* Return the buffer-predicate of the selected frame. */ - -Lisp_Object -frame_buffer_predicate (Lisp_Object frame) -{ - return XFRAME (frame)->buffer_predicate; -} - -/* Return the buffer-list of the selected frame. */ - -static Lisp_Object -frame_buffer_list (Lisp_Object frame) -{ - return XFRAME (frame)->buffer_list; -} - /* Discard BUFFER from the buffer-list and buried-buffer-list of each frame. */ void @@ -2166,20 +2128,14 @@ DEFUN ("frame-parameters", Fframe_parameters, Sframe_parameters, 0, 1, 0, doc: /* Return the parameters-alist of frame FRAME. It is a list of elements of the form (PARM . VALUE), where PARM is a symbol. The meaningful PARMs depend on the kind of frame. -If FRAME is omitted, return information on the currently selected frame. */) +If FRAME is omitted or nil, return information on the currently selected frame. */) (Lisp_Object frame) { Lisp_Object alist; - FRAME_PTR f; + struct frame *f = decode_any_frame (frame); int height, width; struct gcpro gcpro1; - if (NILP (frame)) - frame = selected_frame; - - CHECK_FRAME (frame); - f = XFRAME (frame); - if (!FRAME_LIVE_P (f)) return Qnil; @@ -2240,9 +2196,8 @@ If FRAME is omitted, return information on the currently selected frame. */) : FRAME_MINIBUF_ONLY_P (f) ? Qonly : FRAME_MINIBUF_WINDOW (f))); store_in_alist (&alist, Qunsplittable, (FRAME_NO_SPLIT_P (f) ? Qt : Qnil)); - store_in_alist (&alist, Qbuffer_list, frame_buffer_list (frame)); - store_in_alist (&alist, Qburied_buffer_list, - XFRAME (frame)->buried_buffer_list); + store_in_alist (&alist, Qbuffer_list, f->buffer_list); + store_in_alist (&alist, Qburied_buffer_list, f->buried_buffer_list); /* I think this should be done with a hook. */ #ifdef HAVE_WINDOW_SYSTEM @@ -2267,17 +2222,12 @@ DEFUN ("frame-parameter", Fframe_parameter, Sframe_parameter, 2, 2, 0, If FRAME is nil, describe the currently selected frame. */) (Lisp_Object frame, Lisp_Object parameter) { - struct frame *f; - Lisp_Object value; + struct frame *f = decode_any_frame (frame); + Lisp_Object value = Qnil; - if (NILP (frame)) - frame = selected_frame; - else - CHECK_FRAME (frame); CHECK_SYMBOL (parameter); - f = XFRAME (frame); - value = Qnil; + XSETFRAME (frame, f); if (FRAME_LIVE_P (f)) { @@ -2357,14 +2307,9 @@ Note that this functionality is obsolete as of Emacs 22.2, and its use is not recommended. Explicitly check for a frame-parameter instead. */) (Lisp_Object frame, Lisp_Object alist) { - FRAME_PTR f; + struct frame *f = decode_live_frame (frame); register Lisp_Object tail, prop, val; - if (EQ (frame, Qnil)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); - /* I think this should be done with a hook. */ #ifdef HAVE_WINDOW_SYSTEM if (FRAME_WINDOW_P (f)) @@ -2419,18 +2364,13 @@ use is not recommended. Explicitly check for a frame-parameter instead. */) DEFUN ("frame-char-height", Fframe_char_height, Sframe_char_height, 0, 1, 0, doc: /* Height in pixels of a line in the font in frame FRAME. -If FRAME is omitted, the selected frame is used. +If FRAME is omitted or nil, the selected frame is used. For a terminal frame, the value is always 1. */) (Lisp_Object frame) { - struct frame *f; - - if (NILP (frame)) - frame = selected_frame; - CHECK_FRAME (frame); - f = XFRAME (frame); - #ifdef HAVE_WINDOW_SYSTEM + struct frame *f = decode_any_frame (frame); + if (FRAME_WINDOW_P (f)) return make_number (x_char_height (f)); else @@ -2442,19 +2382,14 @@ For a terminal frame, the value is always 1. */) DEFUN ("frame-char-width", Fframe_char_width, Sframe_char_width, 0, 1, 0, doc: /* Width in pixels of characters in the font in frame FRAME. -If FRAME is omitted, the selected frame is used. +If FRAME is omitted or nil, the selected frame is used. On a graphical screen, the width is the standard width of the default font. For a terminal screen, the value is always 1. */) (Lisp_Object frame) { - struct frame *f; - - if (NILP (frame)) - frame = selected_frame; - CHECK_FRAME (frame); - f = XFRAME (frame); - #ifdef HAVE_WINDOW_SYSTEM + struct frame *f = decode_any_frame (frame); + if (FRAME_WINDOW_P (f)) return make_number (x_char_width (f)); else @@ -2465,7 +2400,7 @@ For a terminal screen, the value is always 1. */) DEFUN ("frame-pixel-height", Fframe_pixel_height, Sframe_pixel_height, 0, 1, 0, doc: /* Return a FRAME's height in pixels. -If FRAME is omitted, the selected frame is used. The exact value +If FRAME is omitted or nil, the selected frame is used. The exact value of the result depends on the window-system and toolkit in use: In the Gtk+ version of Emacs, it includes only any window (including @@ -2480,12 +2415,7 @@ result is really in characters rather than pixels (i.e., is identical to `frame-height'). */) (Lisp_Object frame) { - struct frame *f; - - if (NILP (frame)) - frame = selected_frame; - CHECK_FRAME (frame); - f = XFRAME (frame); + struct frame *f = decode_any_frame (frame); #ifdef HAVE_WINDOW_SYSTEM if (FRAME_WINDOW_P (f)) @@ -2499,15 +2429,10 @@ DEFUN ("frame-pixel-width", Fframe_pixel_width, Sframe_pixel_width, 0, 1, 0, doc: /* Return FRAME's width in pixels. For a terminal frame, the result really gives the width in characters. -If FRAME is omitted, the selected frame is used. */) +If FRAME is omitted or nil, the selected frame is used. */) (Lisp_Object frame) { - struct frame *f; - - if (NILP (frame)) - frame = selected_frame; - CHECK_FRAME (frame); - f = XFRAME (frame); + struct frame *f = decode_any_frame (frame); #ifdef HAVE_WINDOW_SYSTEM if (FRAME_WINDOW_P (f)) @@ -2521,17 +2446,15 @@ DEFUN ("tool-bar-pixel-width", Ftool_bar_pixel_width, Stool_bar_pixel_width, 0, 1, 0, doc: /* Return width in pixels of FRAME's tool bar. The result is greater than zero only when the tool bar is on the left -or right side of FRAME. If FRAME is omitted, the selected frame is -used. */) +or right side of FRAME. If FRAME is omitted or nil, the selected frame +is used. */) (Lisp_Object frame) { - if (NILP (frame)) - frame = selected_frame; - CHECK_FRAME (frame); - #ifdef FRAME_TOOLBAR_WIDTH - if (FRAME_WINDOW_P (XFRAME (frame))) - return make_number (FRAME_TOOLBAR_WIDTH (XFRAME (frame))); + struct frame *f = decode_any_frame (frame); + + if (FRAME_WINDOW_P (f)) + return make_number (FRAME_TOOLBAR_WIDTH (f)); #endif return make_number (0); } @@ -2542,13 +2465,9 @@ Optional third arg non-nil means that redisplay should use LINES lines but that the idea of the actual height of the frame should not be changed. */) (Lisp_Object frame, Lisp_Object lines, Lisp_Object pretend) { - register struct frame *f; + register struct frame *f = decode_live_frame (frame); CHECK_TYPE_RANGED_INTEGER (int, lines); - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); /* I think this should be done with a hook. */ #ifdef HAVE_WINDOW_SYSTEM @@ -2570,12 +2489,9 @@ Optional third arg non-nil means that redisplay should use COLS columns but that the idea of the actual width of the frame should not be changed. */) (Lisp_Object frame, Lisp_Object cols, Lisp_Object pretend) { - register struct frame *f; + register struct frame *f = decode_live_frame (frame); + CHECK_TYPE_RANGED_INTEGER (int, cols); - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); /* I think this should be done with a hook. */ #ifdef HAVE_WINDOW_SYSTEM @@ -4292,12 +4208,7 @@ Otherwise it returns nil. FRAME omitted or nil means the selected frame. This is useful when `make-pointer-invisible' is set. */) (Lisp_Object frame) { - if (NILP (frame)) - frame = selected_frame; - - CHECK_FRAME (frame); - - return (XFRAME (frame)->pointer_invisible ? Qnil : Qt); + return decode_any_frame (frame)->pointer_invisible ? Qnil : Qt; } diff --git a/src/frame.h b/src/frame.h index eea618df797..1dc3ebbaf13 100644 --- a/src/frame.h +++ b/src/frame.h @@ -943,6 +943,8 @@ extern Lisp_Object Qnoelisp; extern struct frame *last_nonminibuf_frame; extern void set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object); +extern struct frame *decode_live_frame (Lisp_Object); +extern struct frame *decode_any_frame (Lisp_Object); extern struct frame *make_initial_frame (void); extern struct frame *make_frame (int); #ifdef HAVE_WINDOW_SYSTEM diff --git a/src/lisp.h b/src/lisp.h index e9f47f4ed27..1a76a502ca0 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3298,7 +3298,6 @@ extern Lisp_Object do_switch_frame (Lisp_Object, int, int, Lisp_Object); #if HAVE_NS extern Lisp_Object get_frame_param (struct frame *, Lisp_Object); #endif -extern Lisp_Object frame_buffer_predicate (Lisp_Object); extern void frames_discard_buffer (Lisp_Object); extern void syms_of_frame (void); diff --git a/src/terminal.c b/src/terminal.c index 2c0c60e7345..854ca61f19c 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -360,14 +360,7 @@ If FRAME is nil, the selected frame is used. The terminal device is represented by its integer identifier. */) (Lisp_Object frame) { - struct terminal *t; - - if (NILP (frame)) - frame = selected_frame; - - CHECK_LIVE_FRAME (frame); - - t = FRAME_TERMINAL (XFRAME (frame)); + struct terminal *t = FRAME_TERMINAL (decode_live_frame (frame)); if (!t) return Qnil; diff --git a/src/w32fns.c b/src/w32fns.c index 18e29ecaaf5..24760054523 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -264,12 +264,8 @@ have_menus_p (void) FRAME_PTR check_x_frame (Lisp_Object frame) { - FRAME_PTR f; + struct frame *f = decode_live_frame (frame); - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); if (! FRAME_W32_P (f)) error ("Non-W32 frame used"); return f; diff --git a/src/window.c b/src/window.c index 75a8d42d8d1..c32234b5fcd 100644 --- a/src/window.c +++ b/src/window.c @@ -340,10 +340,7 @@ DEFUN ("minibuffer-window", Fminibuffer_window, Sminibuffer_window, 0, 1, 0, If FRAME is omitted or nil, it defaults to the selected frame. */) (Lisp_Object frame) { - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - return FRAME_MINIBUF_WINDOW (XFRAME (frame)); + return FRAME_MINIBUF_WINDOW (decode_live_frame (frame)); } DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p, @@ -1371,12 +1368,7 @@ The top left corner of the frame is considered to be row 0, column 0. */) (Lisp_Object x, Lisp_Object y, Lisp_Object frame) { - struct frame *f; - - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); + struct frame *f = decode_live_frame (frame); /* Check that arguments are integers or floats. */ CHECK_NUMBER_OR_FLOAT (x); @@ -3109,12 +3101,12 @@ run_window_configuration_change_hook (struct frame *f) } DEFUN ("run-window-configuration-change-hook", Frun_window_configuration_change_hook, - Srun_window_configuration_change_hook, 1, 1, 0, - doc: /* Run `window-configuration-change-hook' for FRAME. */) + Srun_window_configuration_change_hook, 0, 1, 0, + doc: /* Run `window-configuration-change-hook' for FRAME. +If FRAME is omitted or nil, it defaults to the selected frame. */) (Lisp_Object frame) { - CHECK_LIVE_FRAME (frame); - run_window_configuration_change_hook (XFRAME (frame)); + run_window_configuration_change_hook (decode_live_frame (frame)); return Qnil; } @@ -3641,10 +3633,12 @@ window_resize_apply (struct window *w, int horflag) } -DEFUN ("window-resize-apply", Fwindow_resize_apply, Swindow_resize_apply, 1, 2, 0, +DEFUN ("window-resize-apply", Fwindow_resize_apply, Swindow_resize_apply, 0, 2, 0, doc: /* Apply requested size values for window-tree of FRAME. -Optional argument HORIZONTAL omitted or nil means apply requested height -values. HORIZONTAL non-nil means apply requested width values. +If FRAME is omitted or nil, it defaults to the selected frame. + +Optional argument HORIZONTAL omitted or nil means apply requested +height values. HORIZONTAL non-nil means apply requested width values. This function checks whether the requested values sum up to a valid window layout, recursively assigns the new sizes of all child windows @@ -3655,17 +3649,10 @@ Note: This function does not check any of `window-fixed-size-p', be applied on the Elisp level. */) (Lisp_Object frame, Lisp_Object horizontal) { - struct frame *f; - struct window *r; + struct frame *f = decode_live_frame (frame); + struct window *r = XWINDOW (FRAME_ROOT_WINDOW (f)); int horflag = !NILP (horizontal); - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - - f = XFRAME (frame); - r = XWINDOW (FRAME_ROOT_WINDOW (f)); - if (!window_resize_check (r, horflag) || ! EQ (r->new_total, (horflag ? r->total_cols : r->total_lines))) @@ -6148,12 +6135,7 @@ saved by this function. */) register int n_windows; register struct save_window_data *data; register int i; - FRAME_PTR f; - - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); + struct frame *f = decode_live_frame (frame); n_windows = count_windows (XWINDOW (FRAME_ROOT_WINDOW (f))); data = ALLOCATE_PSEUDOVECTOR (struct save_window_data, frame_cols, diff --git a/src/xdisp.c b/src/xdisp.c index 1ff7819f34d..c01f5deab83 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -11916,19 +11916,14 @@ tool_bar_lines_needed (struct frame *f, int *n_rows) DEFUN ("tool-bar-lines-needed", Ftool_bar_lines_needed, Stool_bar_lines_needed, 0, 1, 0, - doc: /* Return the number of lines occupied by the tool bar of FRAME. */) + doc: /* Return the number of lines occupied by the tool bar of FRAME. +If FRAME is nil or omitted, use the selected frame. */) (Lisp_Object frame) { - struct frame *f; + struct frame *f = decode_any_frame (frame); struct window *w; int nlines = 0; - if (NILP (frame)) - frame = selected_frame; - else - CHECK_FRAME (frame); - f = XFRAME (frame); - if (WINDOWP (f->tool_bar_window) && (w = XWINDOW (f->tool_bar_window), WINDOW_TOTAL_LINES (w) > 0)) diff --git a/src/xfaces.c b/src/xfaces.c index 221387c4b6d..41c618612ac 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -669,23 +669,6 @@ x_free_gc (struct frame *f, GC gc) } #endif /* HAVE_NS */ -/* If FRAME is nil, return a pointer to the selected frame. - Otherwise, check that FRAME is a live frame, and return a pointer - to it. NPARAM is the parameter number of FRAME, for - CHECK_LIVE_FRAME. This is here because it's a frequent pattern in - Lisp function definitions. */ - -static struct frame * -frame_or_selected_frame (Lisp_Object frame, int nparam) -{ - if (NILP (frame)) - frame = selected_frame; - - CHECK_LIVE_FRAME (frame); - return XFRAME (frame); -} - - /*********************************************************************** Frames and faces ***********************************************************************/ @@ -1204,15 +1187,9 @@ FRAME specifies the frame and thus the display for interpreting COLOR. If FRAME is nil or omitted, use the selected frame. */) (Lisp_Object color, Lisp_Object frame) { - struct frame *f; - CHECK_STRING (color); - if (NILP (frame)) - frame = selected_frame; - else - CHECK_FRAME (frame); - f = XFRAME (frame); - return face_color_gray_p (f, SSDATA (color)) ? Qt : Qnil; + return (face_color_gray_p (decode_any_frame (frame), SSDATA (color)) + ? Qt : Qnil); } @@ -1225,17 +1202,10 @@ If FRAME is nil or omitted, use the selected frame. COLOR must be a valid color name. */) (Lisp_Object color, Lisp_Object frame, Lisp_Object background_p) { - struct frame *f; - CHECK_STRING (color); - if (NILP (frame)) - frame = selected_frame; - else - CHECK_FRAME (frame); - f = XFRAME (frame); - if (face_color_supported_p (f, SSDATA (color), !NILP (background_p))) - return Qt; - return Qnil; + return (face_color_supported_p (decode_any_frame (frame), + SSDATA (color), !NILP (background_p)) + ? Qt : Qnil); } @@ -1683,9 +1653,7 @@ the WIDTH times as wide as FACE on FRAME. */) /* We can't simply call check_x_frame because this function may be called before any frame is created. */ - if (NILP (frame)) - frame = selected_frame; - f = frame_or_selected_frame (frame, 2); + f = decode_live_frame (frame); if (! FRAME_WINDOW_P (f)) { /* Perhaps we have not yet created any frame. */ @@ -1693,6 +1661,8 @@ the WIDTH times as wide as FACE on FRAME. */) frame = Qnil; face = Qnil; } + else + XSETFRAME (frame, f); /* Determine the width standard for comparison with the fonts we find. */ @@ -3679,21 +3649,12 @@ frame. If FRAME is t, report on the defaults for face SYMBOL (for new frames). If FRAME is omitted or nil, use the selected frame. */) (Lisp_Object symbol, Lisp_Object keyword, Lisp_Object frame) { - Lisp_Object lface, value = Qnil; + struct frame *f = EQ (frame, Qt) ? NULL : decode_live_frame (frame); + Lisp_Object lface = lface_from_face_name (f, symbol, 1), value = Qnil; CHECK_SYMBOL (symbol); CHECK_SYMBOL (keyword); - if (EQ (frame, Qt)) - lface = lface_from_face_name (NULL, symbol, 1); - else - { - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - lface = lface_from_face_name (XFRAME (frame), symbol, 1); - } - if (EQ (keyword, QCfamily)) value = LFACE_FAMILY (lface); else if (EQ (keyword, QCfoundry)) @@ -3876,7 +3837,7 @@ return the font name used for CHARACTER. */) } else { - struct frame *f = frame_or_selected_frame (frame, 1); + struct frame *f = decode_live_frame (frame); int face_id = lookup_named_face (f, face, 1); struct face *fface = FACE_FROM_ID (f, face_id); @@ -3963,14 +3924,11 @@ If FRAME is omitted or nil, use the selected frame. */) struct frame *f; Lisp_Object lface1, lface2; - if (EQ (frame, Qt)) - f = NULL; - else - /* Don't use check_x_frame here because this function is called - before X frames exist. At that time, if FRAME is nil, - selected_frame will be used which is the frame dumped with - Emacs. That frame is not an X frame. */ - f = frame_or_selected_frame (frame, 2); + /* Don't use check_x_frame here because this function is called + before X frames exist. At that time, if FRAME is nil, + selected_frame will be used which is the frame dumped with + Emacs. That frame is not an X frame. */ + f = EQ (frame, Qt) ? NULL : decode_live_frame (frame); lface1 = lface_from_face_name (f, face1, 1); lface2 = lface_from_face_name (f, face2, 1); @@ -3988,20 +3946,10 @@ If FRAME is t, report on the defaults for face FACE (for new frames). If FRAME is omitted or nil, use the selected frame. */) (Lisp_Object face, Lisp_Object frame) { - struct frame *f; - Lisp_Object lface; + struct frame *f = EQ (frame, Qt) ? NULL : decode_live_frame (frame); + Lisp_Object lface = lface_from_face_name (f, face, 1); int i; - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); - - if (EQ (frame, Qt)) - lface = lface_from_face_name (NULL, face, 1); - else - lface = lface_from_face_name (f, face, 1); - for (i = 1; i < LFACE_VECTOR_SIZE; ++i) if (!UNSPECIFIEDP (AREF (lface, i))) break; @@ -4016,8 +3964,7 @@ DEFUN ("frame-face-alist", Fframe_face_alist, Sframe_face_alist, For internal use only. */) (Lisp_Object frame) { - struct frame *f = frame_or_selected_frame (frame, 0); - return f->face_alist; + return decode_live_frame (frame)->face_alist; } @@ -4205,14 +4152,9 @@ or lists of the form (RED GREEN BLUE). If FRAME is unspecified or nil, the current frame is used. */) (Lisp_Object color1, Lisp_Object color2, Lisp_Object frame) { - struct frame *f; + struct frame *f = decode_live_frame (frame); XColor cdef1, cdef2; - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); - if (!(CONSP (color1) && parse_rgb_list (color1, &cdef1)) && !(STRINGP (color1) && defined_color (f, SSDATA (color1), &cdef1, 0))) signal_error ("Invalid color", color1); diff --git a/src/xfns.c b/src/xfns.c index aca227385bf..9c99902b93d 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -164,12 +164,8 @@ have_menus_p (void) FRAME_PTR check_x_frame (Lisp_Object frame) { - FRAME_PTR f; + struct frame *f = decode_live_frame (frame); - if (NILP (frame)) - frame = selected_frame; - CHECK_LIVE_FRAME (frame); - f = XFRAME (frame); if (! FRAME_X_P (f)) error ("Non-X frame used"); return f; From 3966138251393d7d8f3c33a2607e168c84a5a72f Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Tue, 6 Nov 2012 16:29:49 +0100 Subject: [PATCH 158/165] lib/makefile.w32-in, src/makefile.w32-in: Trivial reordering of entries. --- lib/makefile.w32-in | 12 ++++++------ src/makefile.w32-in | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/makefile.w32-in b/lib/makefile.w32-in index 7e807278a40..67171e07900 100644 --- a/lib/makefile.w32-in +++ b/lib/makefile.w32-in @@ -116,6 +116,12 @@ $(BLD)/c-strcasecmp.$(O) : \ $(CONFIG_H) \ $(C_CTYPE_H) +$(BLD)/c-strncasecmp.$(O) : \ + $(GNU_LIB)/c-strncasecmp.c \ + $(GNU_LIB)/c-strcase.h \ + $(CONFIG_H) \ + $(C_CTYPE_H) + $(BLD)/close-stream.$(O) : \ $(GNU_LIB)/close-stream.c \ $(GNU_LIB)/close-stream.h \ @@ -123,12 +129,6 @@ $(BLD)/close-stream.$(O) : \ $(NT_INC)/stdbool.h \ $(CONFIG_H) -$(BLD)/c-strncasecmp.$(O) : \ - $(GNU_LIB)/c-strncasecmp.c \ - $(GNU_LIB)/c-strcase.h \ - $(CONFIG_H) \ - $(C_CTYPE_H) - $(BLD)/dtoastr.$(O) : \ $(GNU_LIB)/dtoastr.c \ $(FTOASTR_C) diff --git a/src/makefile.w32-in b/src/makefile.w32-in index 9df5dedb7ea..f5cab34d7dc 100644 --- a/src/makefile.w32-in +++ b/src/makefile.w32-in @@ -1475,8 +1475,8 @@ $(BLD)/unexw32.$(O) : \ $(SRC)/w32.h \ $(SRC)/w32common.h \ $(SRC)/w32heap.h \ - $(LISP_H) \ - $(CONFIG_H) + $(CONFIG_H) \ + $(LISP_H) $(BLD)/vm-limit.$(O) : \ $(SRC)/vm-limit.c \ From 72f94d4be8224bb7f51bef559c7565fa80724ca6 Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Tue, 6 Nov 2012 19:57:14 +0400 Subject: [PATCH 159/165] * window.c (Fwindow_combination_limit): Revert to the only required argument and adjust docstring as suggested in http://lists.gnu.org/archive/html/emacs-diffs/2012-11/msg01082.html by Martin Rudalics . --- src/ChangeLog | 7 +++++++ src/window.c | 11 +++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 0a277a0d67b..10c48b80f76 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2012-11-06 Dmitry Antipov + + * window.c (Fwindow_combination_limit): Revert to the only + required argument and adjust docstring as suggested in + http://lists.gnu.org/archive/html/emacs-diffs/2012-11/msg01082.html + by Martin Rudalics . + 2012-11-06 Dmitry Antipov Widely used frame validity and checking functions. diff --git a/src/window.c b/src/window.c index c32234b5fcd..f1177be3d99 100644 --- a/src/window.c +++ b/src/window.c @@ -602,15 +602,18 @@ Return nil if WINDOW has no previous sibling. */) return decode_valid_window (window)->prev; } -DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 0, 1, 0, +DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 1, 1, 0, doc: /* Return combination limit of window WINDOW. -WINDOW must be a valid window and defaults to the selected one. If the return value is nil, child windows of WINDOW can be recombined with WINDOW's siblings. A return value of t means that child windows of -WINDOW are never \(re-)combined with WINDOW's siblings. */) +WINDOW are never \(re-)combined with WINDOW's siblings. + +WINDOW must be a valid window. The return value is meaningful for +internal windows only. */) (Lisp_Object window) { - return decode_valid_window (window)->combination_limit; + CHECK_VALID_WINDOW (window); + return XWINDOW (window)->combination_limit; } DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0, From f0704a9a28fcc441a8950c76b048001d11cdc1dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20Mart=C3=ADn?= Date: Tue, 6 Nov 2012 17:04:42 +0100 Subject: [PATCH 160/165] ispell.el (ispell-region): Standard re-indent for better readability. --- lisp/ChangeLog | 5 + lisp/textmodes/ispell.el | 208 +++++++++++++++++++-------------------- 2 files changed, 109 insertions(+), 104 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2347b7f6e93..1f1868745de 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-11-06 Agustín Martín Domingo + + * textmodes/ispell.el (ispell-region): Standard re-indent for better + readability. + 2012-11-06 Dmitry Antipov * emacs-lisp/byte-opt.el (toplevel): Add compare-window-configurations, diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index de60ac37d9e..0af619ce773 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -2903,113 +2903,113 @@ amount for last line processed." (ispell-accept-buffer-local-defs)) ; set up dictionary, local words, etc. (let ((skip-region-start (make-marker)) (rstart (make-marker))) - (unwind-protect - (save-excursion - (message "Spell-checking %s using %s with %s dictionary..." + (unwind-protect + (save-excursion + (message "Spell-checking %s using %s with %s dictionary..." + (if (and (= reg-start (point-min)) (= reg-end (point-max))) + (buffer-name) "region") + (file-name-nondirectory ispell-program-name) + (or ispell-current-dictionary "default")) + ;; Returns cursor to original location. + (save-window-excursion + (goto-char reg-start) + (let ((transient-mark-mode) + (case-fold-search case-fold-search) + (query-fcc t) + in-comment key) + (let (message-log-max) + (message "searching for regions to skip")) + (if (re-search-forward (ispell-begin-skip-region-regexp) reg-end t) + (progn + (setq key (match-string-no-properties 0)) + (set-marker skip-region-start (- (point) (length key))) + (goto-char reg-start))) + (let (message-log-max) + (message + "Continuing spelling check using %s with %s dictionary..." + (file-name-nondirectory ispell-program-name) + (or ispell-current-dictionary "default"))) + (set-marker rstart reg-start) + (set-marker ispell-region-end reg-end) + (while (and (not ispell-quit) + (< (point) ispell-region-end)) + ;; spell-check region with skipping + (if (and (marker-position skip-region-start) + (<= skip-region-start (point))) + (progn + ;; If region inside line comment, must keep comment start. + (setq in-comment (point) + in-comment + (and comment-start + (or (null comment-end) (string= "" comment-end)) + (save-excursion + (beginning-of-line) + (re-search-forward comment-start in-comment t)) + comment-start)) + ;; Can change skip-regexps (in ispell-message) + (ispell-skip-region key) ; moves pt past region. + (set-marker rstart (point)) + ;; check for saving large attachments... + (setq query-fcc (and query-fcc + (ispell-ignore-fcc skip-region-start + rstart))) + (if (and (< rstart ispell-region-end) + (re-search-forward + (ispell-begin-skip-region-regexp) + ispell-region-end t)) + (progn + (setq key (match-string-no-properties 0)) + (set-marker skip-region-start + (- (point) (length key))) + (goto-char rstart)) + (set-marker skip-region-start nil)))) + (setq reg-end (max (point) + (if (marker-position skip-region-start) + (min skip-region-start ispell-region-end) + (marker-position ispell-region-end)))) + (let* ((ispell-start (point)) + (ispell-end (min (point-at-eol) reg-end)) + (string (ispell-get-line + ispell-start ispell-end in-comment))) + (if in-comment ; account for comment chars added + (setq ispell-start (- ispell-start (length in-comment)) + in-comment nil)) + (setq ispell-end (point)) ; "end" tracks region retrieved. + (if string ; there is something to spell check! + ;; (special start end) + (setq shift (ispell-process-line string + (and recheckp shift)))) + (goto-char ispell-end))))) + (if ispell-quit + nil + (or shift 0))) + ;; protected + (if (and (not (and recheckp ispell-keep-choices-win)) + (get-buffer ispell-choices-buffer)) + (kill-buffer ispell-choices-buffer)) + (set-marker skip-region-start nil) + (set-marker rstart nil) + (if ispell-quit + (progn + ;; preserve or clear the region for ispell-continue. + (if (not (numberp ispell-quit)) + (set-marker ispell-region-end nil) + ;; Ispell-continue enabled - ispell-region-end is set. + (goto-char ispell-quit)) + ;; Check for aborting + (if (and ispell-checking-message (numberp ispell-quit)) + (progn + (setq ispell-quit nil) + (error "Message send aborted"))) + (if (not recheckp) (setq ispell-quit nil))) + (if (not recheckp) (set-marker ispell-region-end nil)) + ;; Only save if successful exit. + (ispell-pdict-save ispell-silently-savep) + (message "Spell-checking %s using %s with %s dictionary...done" (if (and (= reg-start (point-min)) (= reg-end (point-max))) (buffer-name) "region") (file-name-nondirectory ispell-program-name) - (or ispell-current-dictionary "default")) - ;; Returns cursor to original location. - (save-window-excursion - (goto-char reg-start) - (let ((transient-mark-mode) - (case-fold-search case-fold-search) - (query-fcc t) - in-comment key) - (let (message-log-max) - (message "searching for regions to skip")) - (if (re-search-forward (ispell-begin-skip-region-regexp) reg-end t) - (progn - (setq key (match-string-no-properties 0)) - (set-marker skip-region-start (- (point) (length key))) - (goto-char reg-start))) - (let (message-log-max) - (message - "Continuing spelling check using %s with %s dictionary..." - (file-name-nondirectory ispell-program-name) - (or ispell-current-dictionary "default"))) - (set-marker rstart reg-start) - (set-marker ispell-region-end reg-end) - (while (and (not ispell-quit) - (< (point) ispell-region-end)) - ;; spell-check region with skipping - (if (and (marker-position skip-region-start) - (<= skip-region-start (point))) - (progn - ;; If region inside line comment, must keep comment start. - (setq in-comment (point) - in-comment - (and comment-start - (or (null comment-end) (string= "" comment-end)) - (save-excursion - (beginning-of-line) - (re-search-forward comment-start in-comment t)) - comment-start)) - ;; Can change skip-regexps (in ispell-message) - (ispell-skip-region key) ; moves pt past region. - (set-marker rstart (point)) - ;; check for saving large attachments... - (setq query-fcc (and query-fcc - (ispell-ignore-fcc skip-region-start - rstart))) - (if (and (< rstart ispell-region-end) - (re-search-forward - (ispell-begin-skip-region-regexp) - ispell-region-end t)) - (progn - (setq key (match-string-no-properties 0)) - (set-marker skip-region-start - (- (point) (length key))) - (goto-char rstart)) - (set-marker skip-region-start nil)))) - (setq reg-end (max (point) - (if (marker-position skip-region-start) - (min skip-region-start ispell-region-end) - (marker-position ispell-region-end)))) - (let* ((ispell-start (point)) - (ispell-end (min (point-at-eol) reg-end)) - (string (ispell-get-line - ispell-start ispell-end in-comment))) - (if in-comment ; account for comment chars added - (setq ispell-start (- ispell-start (length in-comment)) - in-comment nil)) - (setq ispell-end (point)) ; "end" tracks region retrieved. - (if string ; there is something to spell check! - ;; (special start end) - (setq shift (ispell-process-line string - (and recheckp shift)))) - (goto-char ispell-end))))) - (if ispell-quit - nil - (or shift 0))) - ;; protected - (if (and (not (and recheckp ispell-keep-choices-win)) - (get-buffer ispell-choices-buffer)) - (kill-buffer ispell-choices-buffer)) - (set-marker skip-region-start nil) - (set-marker rstart nil) - (if ispell-quit - (progn - ;; preserve or clear the region for ispell-continue. - (if (not (numberp ispell-quit)) - (set-marker ispell-region-end nil) - ;; Ispell-continue enabled - ispell-region-end is set. - (goto-char ispell-quit)) - ;; Check for aborting - (if (and ispell-checking-message (numberp ispell-quit)) - (progn - (setq ispell-quit nil) - (error "Message send aborted"))) - (if (not recheckp) (setq ispell-quit nil))) - (if (not recheckp) (set-marker ispell-region-end nil)) - ;; Only save if successful exit. - (ispell-pdict-save ispell-silently-savep) - (message "Spell-checking %s using %s with %s dictionary...done" - (if (and (= reg-start (point-min)) (= reg-end (point-max))) - (buffer-name) "region") - (file-name-nondirectory ispell-program-name) - (or ispell-current-dictionary "default")))))) + (or ispell-current-dictionary "default")))))) (defun ispell-begin-skip-region-regexp () From b159a1fd9ba32e72058beff12f185f7c2df55d70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20Mart=C3=ADn?= Date: Tue, 6 Nov 2012 17:22:09 +0100 Subject: [PATCH 161/165] textmodes/ispell.el: Experimental support for support debugging. * (ispell-create-debug-buffer): Create a `ispell-debug-buffer' debug buffer for ispell. * (ispell-print-if-debug): New function to print stuff to `ispell-debug-buffer' if debugging is enabled. * (ispell-region, ispell-process-line): Use `ispell-print-if-debug' to show some debugging info. * (ispell-buffer-with-debug): New function that creates a debugging buffer and calls `ispell-buffer' with debugging enabled. This is also en example of a possible way to use this system. --- lisp/ChangeLog | 10 ++++ lisp/textmodes/ispell.el | 98 +++++++++++++++++++++++++++++++--------- 2 files changed, 86 insertions(+), 22 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1f1868745de..7470a0677b2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -3,6 +3,16 @@ * textmodes/ispell.el (ispell-region): Standard re-indent for better readability. + * textmodes/ispell.el: Experimental support for support debugging. + (ispell-create-debug-buffer): Create a `ispell-debug-buffer' debug + buffer for ispell. + (ispell-print-if-debug): New function to print stuff to + `ispell-debug-buffer' if debugging is enabled. + (ispell-region, ispell-process-line): Use `ispell-print-if-debug' to + show some debugging info. + (ispell-buffer-with-debug): New function that creates a debugging + buffer and calls `ispell-buffer' with debugging enabled. + 2012-11-06 Dmitry Antipov * emacs-lisp/byte-opt.el (toplevel): Add compare-window-configurations, diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index 0af619ce773..424a83c1713 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -907,6 +907,24 @@ Otherwise returns the library directory name, if that is defined." (setq default-directory (expand-file-name "~/"))) (apply 'call-process-region args))) +(defun ispell-create-debug-buffer (&optional append) + "Create an ispell debug buffer for debugging output. +Use APPEND to append the info to previous buffer if exists, +otherwise is reset. Returns name of ispell debug buffer. +See `ispell-buffer-with-debug' for an example of use." + (let ((ispell-debug-buffer (get-buffer-create "*ispell-debug*"))) + (with-current-buffer ispell-debug-buffer + (if append + (insert + (format "-----------------------------------------------\n")) + (erase-buffer))) + ispell-debug-buffer)) + +(defsubst ispell-print-if-debug (string) + "Print STRING to `ispell-debug-buffer' buffer if enabled." + (if (boundp 'ispell-debug-buffer) + (with-current-buffer ispell-debug-buffer + (insert string)))) ;; The preparation of the menu bar menu must be autoloaded @@ -2902,14 +2920,15 @@ amount for last line processed." (if (not recheckp) (ispell-accept-buffer-local-defs)) ; set up dictionary, local words, etc. (let ((skip-region-start (make-marker)) - (rstart (make-marker))) + (rstart (make-marker)) + (region-type (if (and (= reg-start (point-min)) (= reg-end (point-max))) + (buffer-name) "region")) + (program-basename (file-name-nondirectory ispell-program-name)) + (dictionary (or ispell-current-dictionary "default"))) (unwind-protect (save-excursion (message "Spell-checking %s using %s with %s dictionary..." - (if (and (= reg-start (point-min)) (= reg-end (point-max))) - (buffer-name) "region") - (file-name-nondirectory ispell-program-name) - (or ispell-current-dictionary "default")) + region-type program-basename dictionary) ;; Returns cursor to original location. (save-window-excursion (goto-char reg-start) @@ -2917,18 +2936,30 @@ amount for last line processed." (case-fold-search case-fold-search) (query-fcc t) in-comment key) - (let (message-log-max) - (message "searching for regions to skip")) + (ispell-print-if-debug + (concat + (format + "ispell-region: (ispell-skip-region-list):\n%s\n" + (ispell-skip-region-list)) + (format + "ispell-region: (ispell-begin-skip-region-regexp):\n%s\n" + (ispell-begin-skip-region-regexp)) + "ispell-region: Search for first region to skip after (ispell-begin-skip-region-regexp)\n")) (if (re-search-forward (ispell-begin-skip-region-regexp) reg-end t) (progn (setq key (match-string-no-properties 0)) (set-marker skip-region-start (- (point) (length key))) - (goto-char reg-start))) - (let (message-log-max) - (message - "Continuing spelling check using %s with %s dictionary..." - (file-name-nondirectory ispell-program-name) - (or ispell-current-dictionary "default"))) + (goto-char reg-start) + (ispell-print-if-debug + (format "ispell-region: First skip: %s at (pos,line,column): (%s,%s,%s).\n" + key + (save-excursion (goto-char skip-region-start) (point)) + (line-number-at-pos skip-region-start) + (save-excursion (goto-char skip-region-start) (current-column)))))) + (ispell-print-if-debug + (format + "ispell-region: Continue spell-checking with %s and %s dictionary...\n" + program-basename dictionary)) (set-marker rstart reg-start) (set-marker ispell-region-end reg-end) (while (and (not ispell-quit) @@ -2961,7 +2992,13 @@ amount for last line processed." (setq key (match-string-no-properties 0)) (set-marker skip-region-start (- (point) (length key))) - (goto-char rstart)) + (goto-char rstart) + (ispell-print-if-debug + (format "ispell-region: Next skip: %s at (pos,line,column): (%s,%s,%s).\n" + key + (save-excursion (goto-char skip-region-start) (point)) + (line-number-at-pos skip-region-start) + (save-excursion (goto-char skip-region-start) (current-column))))) (set-marker skip-region-start nil)))) (setq reg-end (max (point) (if (marker-position skip-region-start) @@ -2971,6 +3008,10 @@ amount for last line processed." (ispell-end (min (point-at-eol) reg-end)) (string (ispell-get-line ispell-start ispell-end in-comment))) + (ispell-print-if-debug + (format + "ispell-region: string pos (%s->%s), eol: %s, [in-comment]: [%s], [string]: [%s]\n" + ispell-start ispell-end (point-at-eol) in-comment string)) (if in-comment ; account for comment chars added (setq ispell-start (- ispell-start (length in-comment)) in-comment nil)) @@ -3006,10 +3047,7 @@ amount for last line processed." ;; Only save if successful exit. (ispell-pdict-save ispell-silently-savep) (message "Spell-checking %s using %s with %s dictionary...done" - (if (and (= reg-start (point-min)) (= reg-end (point-max))) - (buffer-name) "region") - (file-name-nondirectory ispell-program-name) - (or ispell-current-dictionary "default")))))) + region-type program-basename dictionary))))) (defun ispell-begin-skip-region-regexp () @@ -3256,10 +3294,19 @@ Returns the sum SHIFT due to changes in word replacements." ;; Alignment cannot be tracked and this error will occur when ;; `query-replace' makes multiple corrections on the starting line. (or (ispell-looking-at (car poss)) - ;; This occurs due to filter pipe problems - (error (concat "Ispell misalignment: word " - "`%s' point %d; probably incompatible versions") - (car poss) (marker-position word-start))) + ;; This error occurs due to filter pipe problems + (let* ((ispell-pipe-word (car poss)) + (actual-point (marker-position word-start)) + (actual-line (line-number-at-pos actual-point)) + (actual-column (save-excursion (goto-char actual-point) (current-column)))) + (ispell-print-if-debug + (concat + "ispell-process-line: Ispell misalignment error:\n" + (format " [Word from ispell pipe]: [%s], actual (point,line,column): (%s,%s,%s)\n" + ispell-pipe-word actual-point actual-line actual-column))) + (error (concat "Ispell misalignment: word " + "`%s' point %d; probably incompatible versions") + ispell-pipe-word actual-point))) ;; ispell-cmd-loop can go recursive & change buffer (if ispell-keep-choices-win (setq replace (ispell-command-loop @@ -3393,6 +3440,13 @@ Returns the sum SHIFT due to changes in word replacements." (interactive) (ispell-region (point-min) (point-max))) +;;;###autoload +(defun ispell-buffer-with-debug (&optional append) + "`ispell-buffer' with some output sent to `ispell-debug-buffer' buffer. +Use APPEND to append the info to previous buffer if exists." + (interactive) + (let ((ispell-debug-buffer (ispell-create-debug-buffer append))) + (ispell-buffer))) ;;;###autoload (defun ispell-continue () From 056cb3a1fc23d0eb3a2fae33c40aef2ed16d69ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20Mart=C3=ADn?= Date: Tue, 6 Nov 2012 17:33:56 +0100 Subject: [PATCH 162/165] ispell.el (ispell-region): Do not prefix sent string by comment in autoconf mode This commit changes some of the `in-comment' ocurrences to more specific `add-comment', set only if comment prefix is to be added. When in comment, old code prefixed string by comment string to let ispell know this is part of a comment string. This is only supported in some modes. In particular, this is not supported in autoconf mode where adding the comment string messes everything up because ispell tries to spellcheck the `dnl' string header causing misalignments in some cases (debbugs.gnu.org: #12768). --- lisp/ChangeLog | 3 +++ lisp/textmodes/ispell.el | 20 ++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7470a0677b2..31f300b542d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -13,6 +13,9 @@ (ispell-buffer-with-debug): New function that creates a debugging buffer and calls `ispell-buffer' with debugging enabled. + * textmodes/ispell.el (ispell-region): Do not prefix sent string by + comment in autoconf mode. (Bug#12768) + 2012-11-06 Dmitry Antipov * emacs-lisp/byte-opt.el (toplevel): Add compare-window-configurations, diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index 424a83c1713..f667525397c 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -3006,15 +3006,23 @@ amount for last line processed." (marker-position ispell-region-end)))) (let* ((ispell-start (point)) (ispell-end (min (point-at-eol) reg-end)) + ;; See if line must be prefixed by comment string to let ispell know this is + ;; part of a comment string. This is only supported in some modes. + ;; In particular, this is not supported in autoconf mode where adding the + ;; comment string messes everything up because ispell tries to spellcheck the + ;; `dnl' string header causing misalignments in some cases (debbugs.gnu.org: #12768). + (add-comment (and in-comment + (not (string= in-comment "dnl ")) + in-comment)) (string (ispell-get-line - ispell-start ispell-end in-comment))) + ispell-start ispell-end add-comment))) (ispell-print-if-debug (format - "ispell-region: string pos (%s->%s), eol: %s, [in-comment]: [%s], [string]: [%s]\n" - ispell-start ispell-end (point-at-eol) in-comment string)) - (if in-comment ; account for comment chars added - (setq ispell-start (- ispell-start (length in-comment)) - in-comment nil)) + "ispell-region: string pos (%s->%s), eol: %s, [in-comment]: [%s], [add-comment]: [%s], [string]: [%s]\n" + ispell-start ispell-end (point-at-eol) in-comment add-comment string)) + (if add-comment ; account for comment chars added + (setq ispell-start (- ispell-start (length add-comment)) + add-comment nil)) (setq ispell-end (point)) ; "end" tracks region retrieved. (if string ; there is something to spell check! ;; (special start end) From 68f8f1c0c680494639b4396e242747e5103ae40d Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 6 Nov 2012 09:40:07 -0800 Subject: [PATCH 163/165] Minor adjustments of recently-changed frame functions. * buffer.c (Fbuffer_list): Omit CHECK_FRAME, since arg is already known to be a frame (we're in the FRAMEP branch). * lisp.h (Qframep): Remove decl. frame.h declares this. * window.c (quad): Args are of type EMACS_INT, not ptrdiff_t, since they're meant for Lisp fixnum values. --- src/ChangeLog | 9 +++++++++ src/buffer.c | 3 +-- src/lisp.h | 3 --- src/window.c | 4 ++-- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 10c48b80f76..1a4da7f6a3c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2012-11-06 Paul Eggert + + Minor adjustments of recently-changed frame functions. + * buffer.c (Fbuffer_list): Omit CHECK_FRAME, since arg is already + known to be a frame (we're in the FRAMEP branch). + * lisp.h (Qframep): Remove decl. frame.h declares this. + * window.c (quad): Args are of type EMACS_INT, not ptrdiff_t, + since they're meant for Lisp fixnum values. + 2012-11-06 Dmitry Antipov * window.c (Fwindow_combination_limit): Revert to the only diff --git a/src/buffer.c b/src/buffer.c index 24286610570..bb69675346a 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -406,7 +406,6 @@ followed by the rest of the buffers. */) Lisp_Object framelist, prevlist, tail; Lisp_Object args[3]; - CHECK_FRAME (frame); framelist = Fcopy_sequence (XFRAME (frame)->buffer_list); prevlist = Fnreverse (Fcopy_sequence (XFRAME (frame)->buried_buffer_list)); @@ -2103,7 +2102,7 @@ set_buffer_internal_1 (register struct buffer *b) return; BUFFER_CHECK_INDIRECTION (b); - + old_buf = current_buffer; current_buffer = b; last_known_column_point = -1; /* invalidate indentation cache */ diff --git a/src/lisp.h b/src/lisp.h index 1a76a502ca0..97764eb24bd 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -2628,9 +2628,6 @@ extern Lisp_Object Qfont_spec, Qfont_entity, Qfont_object; EXFUN (Fbyteorder, 0) ATTRIBUTE_CONST; -/* Defined in frame.c. */ -extern Lisp_Object Qframep; - /* Defined in data.c. */ extern Lisp_Object indirect_function (Lisp_Object); extern Lisp_Object find_symbol_value (Lisp_Object); diff --git a/src/window.c b/src/window.c index f1177be3d99..197f4916bc2 100644 --- a/src/window.c +++ b/src/window.c @@ -273,7 +273,7 @@ decode_valid_window (register Lisp_Object window) /* Build a frequently used 4-integer (X Y W H) list. */ static Lisp_Object -quad (ptrdiff_t x, ptrdiff_t y, ptrdiff_t w, ptrdiff_t h) +quad (EMACS_INT x, EMACS_INT y, EMACS_INT w, EMACS_INT h) { return list4 (make_number (x), make_number (y), make_number (w), make_number (h)); @@ -3105,7 +3105,7 @@ run_window_configuration_change_hook (struct frame *f) DEFUN ("run-window-configuration-change-hook", Frun_window_configuration_change_hook, Srun_window_configuration_change_hook, 0, 1, 0, - doc: /* Run `window-configuration-change-hook' for FRAME. + doc: /* Run `window-configuration-change-hook' for FRAME. If FRAME is omitted or nil, it defaults to the selected frame. */) (Lisp_Object frame) { From e770aad5f0151321610e3dafa09592e31d166296 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Tue, 6 Nov 2012 19:31:19 +0100 Subject: [PATCH 164/165] * nsterm.m (convert_ns_to_X_keysym, keyDown:): Add NSNumericPadKeyMask to keypad keys. Fixes: debbugs:12816 --- src/ChangeLog | 5 +++++ src/nsterm.m | 34 +++++++++++++++++----------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1a4da7f6a3c..6b9d77d2275 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-11-06 Jan Djärv + + * nsterm.m (convert_ns_to_X_keysym, keyDown:): Add NSNumericPadKeyMask + to keypad keys (Bug#12816). + 2012-11-06 Paul Eggert Minor adjustments of recently-changed frame functions. diff --git a/src/nsterm.m b/src/nsterm.m index e4621247854..7ba1608268b 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -145,22 +145,22 @@ static unsigned convert_ns_to_X_keysym[] = NSNewlineCharacter, 0x0D, NSEnterCharacter, 0x8D, - 0x41, 0xAE, /* KP_Decimal */ - 0x43, 0xAA, /* KP_Multiply */ - 0x45, 0xAB, /* KP_Add */ - 0x4B, 0xAF, /* KP_Divide */ - 0x4E, 0xAD, /* KP_Subtract */ - 0x51, 0xBD, /* KP_Equal */ - 0x52, 0xB0, /* KP_0 */ - 0x53, 0xB1, /* KP_1 */ - 0x54, 0xB2, /* KP_2 */ - 0x55, 0xB3, /* KP_3 */ - 0x56, 0xB4, /* KP_4 */ - 0x57, 0xB5, /* KP_5 */ - 0x58, 0xB6, /* KP_6 */ - 0x59, 0xB7, /* KP_7 */ - 0x5B, 0xB8, /* KP_8 */ - 0x5C, 0xB9, /* KP_9 */ + 0x41|NSNumericPadKeyMask, 0xAE, /* KP_Decimal */ + 0x43|NSNumericPadKeyMask, 0xAA, /* KP_Multiply */ + 0x45|NSNumericPadKeyMask, 0xAB, /* KP_Add */ + 0x4B|NSNumericPadKeyMask, 0xAF, /* KP_Divide */ + 0x4E|NSNumericPadKeyMask, 0xAD, /* KP_Subtract */ + 0x51|NSNumericPadKeyMask, 0xBD, /* KP_Equal */ + 0x52|NSNumericPadKeyMask, 0xB0, /* KP_0 */ + 0x53|NSNumericPadKeyMask, 0xB1, /* KP_1 */ + 0x54|NSNumericPadKeyMask, 0xB2, /* KP_2 */ + 0x55|NSNumericPadKeyMask, 0xB3, /* KP_3 */ + 0x56|NSNumericPadKeyMask, 0xB4, /* KP_4 */ + 0x57|NSNumericPadKeyMask, 0xB5, /* KP_5 */ + 0x58|NSNumericPadKeyMask, 0xB6, /* KP_6 */ + 0x59|NSNumericPadKeyMask, 0xB7, /* KP_7 */ + 0x5B|NSNumericPadKeyMask, 0xB8, /* KP_8 */ + 0x5C|NSNumericPadKeyMask, 0xB9, /* KP_9 */ 0x1B, 0x1B /* escape */ }; @@ -4829,7 +4829,7 @@ not_in_argv (NSString *arg) /* is it a "function key"? */ fnKeysym = (code < 0x00ff && (flags&NSNumericPadKeyMask)) - ? ns_convert_key ([theEvent keyCode]) + ? ns_convert_key ([theEvent keyCode] | NSNumericPadKeyMask) : ns_convert_key (code); if (fnKeysym) From b6b3b29458fefcf7f31a0b14d6484cf262db2e54 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 6 Nov 2012 12:48:35 -0800 Subject: [PATCH 165/165] Restore some duplicate definitions. This undoes part of the 2012-11-03 changes. Some people build with plain -g rather than with -g3, and they need the duplicate definitions for .gdbinit to work; see . * lisp.h (GCTYPEBITS, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Define as macros, as well as as enums or as constants. --- src/ChangeLog | 9 +++++++++ src/lisp.h | 23 ++++++++++++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 6b9d77d2275..37907cd555a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2012-11-06 Paul Eggert + + Restore some duplicate definitions (Bug#12814). + This undoes part of the 2012-11-03 changes. Some people build + with plain -g rather than with -g3, and they need the duplicate + definitions for .gdbinit to work; see . + * lisp.h (GCTYPEBITS, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): + Define as macros, as well as as enums or as constants. + 2012-11-06 Jan Djärv * nsterm.m (convert_ns_to_X_keysym, keyDown:): Add NSNumericPadKeyMask diff --git a/src/lisp.h b/src/lisp.h index 97764eb24bd..88d9b766f38 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -152,15 +152,18 @@ extern bool suppress_checking EXTERNALLY_VISIBLE; on the few static Lisp_Objects used: all the defsubr as well as the two special buffers buffer_defaults and buffer_local_symbols. */ -/* Number of bits in a Lisp_Object tag. This can be used in #if. */ -#define GCTYPEBITS 3 - -/* 2**GCTYPEBITS. This must be a macro that expands to a literal - integer constant, for MSVC. */ -#define GCALIGNMENT 8 - enum Lisp_Bits { + /* Number of bits in a Lisp_Object tag. This can be used in #if, + and for GDB's sake also as a regular symbol. */ + GCTYPEBITS = +#define GCTYPEBITS 3 + GCTYPEBITS, + + /* 2**GCTYPEBITS. This must be a macro that expands to a literal + integer constant, for MSVC. */ +#define GCALIGNMENT 8 + /* Number of bits in a Lisp_Object value, not counting the tag. */ VALBITS = BITS_PER_EMACS_INT - GCTYPEBITS, @@ -378,11 +381,15 @@ enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = 0 }; /* In the size word of a vector, this bit means the vector has been marked. */ +static ptrdiff_t const ARRAY_MARK_FLAG #define ARRAY_MARK_FLAG PTRDIFF_MIN + = ARRAY_MARK_FLAG; /* In the size word of a struct Lisp_Vector, this bit means it's really some other vector-like object. */ +static ptrdiff_t const PSEUDOVECTOR_FLAG #define PSEUDOVECTOR_FLAG (PTRDIFF_MAX - PTRDIFF_MAX / 2) + = PSEUDOVECTOR_FLAG; /* In a pseudovector, the size field actually contains a word with one PSEUDOVECTOR_FLAG bit set, and one of the following values extracted @@ -464,7 +471,9 @@ enum lsb_bits #else /* not USE_LSB_TAG */ +static EMACS_INT const VALMASK #define VALMASK VAL_MAX + = VALMASK; #define XTYPE(a) ((enum Lisp_Type) ((EMACS_UINT) XLI (a) >> VALBITS))