diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2011-04-04 23:45:27 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2011-04-04 23:45:27 -0700 |
commit | ca23cc8840efb1354ebe16c6bb99bf1f8880e9b6 (patch) | |
tree | e95220daac6b9ffb47966df747308a11c0623179 | |
parent | d5efd1d1b54595db795d6fddb32404cc74923d77 (diff) | |
parent | b87a82007428428e2f24af64a59799402bb1651e (diff) | |
download | emacs-ca23cc8840efb1354ebe16c6bb99bf1f8880e9b6.tar.gz emacs-ca23cc8840efb1354ebe16c6bb99bf1f8880e9b6.tar.bz2 emacs-ca23cc8840efb1354ebe16c6bb99bf1f8880e9b6.zip |
Merge from mainline.
42 files changed, 579 insertions, 365 deletions
@@ -349,6 +349,7 @@ between applications. *** To return to the previous behavior, do the following: +**** Change `select-active-regions' to nil. **** Change `mouse-drag-copy-region' to t. **** Change `x-select-enable-primary' to t (on X only). **** Change `x-select-enable-clipboard' to nil. @@ -773,6 +774,12 @@ sc.el, x-menu.el, rnews.el, rnewspost.el * Lisp changes in Emacs 24.1 +** `open-network-stream' can now be used to open an encrypted stream. +It now accepts an optional `:type' parameter for initiating a TLS +connection, directly or via STARTTLS. To do STARTTLS, additional +parameters (`:end-of-command', `:success', `:capabilities-command') +must also be supplied. + ** Code can now use lexical scoping by default instead of dynamic scoping. The `lexical-binding' variable lets code use lexical scoping for local variables. It is typically set via file-local variables, in which case it diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 288199fd702..2a58b306111 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,98 @@ +2011-04-05 Deniz Dogan <deniz@dogan.se> + + * net/rcirc.el: Update my e-mail address. + (rcirc-mode-map): Remove M-o binding. + +2011-04-05 Chong Yidong <cyd@stupidchicken.com> + + * startup.el (command-line): Save the cursor's theme-face + directly, instead of using face-override-spec. + + * custom.el (load-theme): Minor optimization in assigning faces. + +2011-04-04 Juanma Barranquero <lekktu@gmail.com> + + * help-fns.el (describe-variable): Complete all variables having + documentation, including keywords. + http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00112.html + +2011-04-04 Juanma Barranquero <lekktu@gmail.com> + + Convert to lexical-binding. + + * bs.el (bs-refresh, bs-sort-buffer-interns-are-last) + (bs--get-marked-string, bs--get-modified-string) + (bs--get-readonly-string, bs--get-size-string, bs--get-name) + (bs--get-mode-name, bs--get-file-name): Mark unused arguments. + (bs--configuration-name-for-prefix-arg): Rename argument PREFIX-ARG. + + * ehelp.el (electric-help-execute-extended) + (electric-help-ctrl-x-prefix): + * hexl.el (hexl-revert-buffer-function): + * linum.el (linum-after-change, linum-after-scroll): + * emacs-lisp/re-builder.el (reb-auto-update): Mark unused arguments. + + * help-fns.el (help-describe-category-set): Remove unused ERR variable. + +2011-04-04 Daiki Ueno <ueno@unixuser.org> + + * epa-dired.el: + * epa-mail.el: + * epa-hook.el: + * epa-file.el: + * epa.el: + * epg.el: Use lexical binding. + +2011-04-03 Chong Yidong <cyd@stupidchicken.com> + + * dired-aux.el (dired-create-files): Add docstring (Bug#7970). + + * textmodes/flyspell.el (flyspell-word): Recognize default + dictionary case for flyspell-mark-duplications-exceptions. Use + regexp matching for languages. + (flyspell-mark-duplications-exceptions): Add "that" and "had" for + default dictionary (Bug#7926). + +2011-04-02 Chong Yidong <cyd@stupidchicken.com> + + * emacs-lisp/package.el (package--with-work-buffer): Recognize + https URLs. + + * net/network-stream.el: Move from gnus/proto-stream.el. Change + prefix to network-stream throughout. + (open-protocol-stream): Merge into open-network-stream, leaving + open-protocol-stream as an alias. Handle nil BUFFER args. + + * subr.el (open-network-stream): Move to net/network-stream.el. + +2011-04-02 Glenn Morris <rgm@gnu.org> + + * find-dired.el (find-exec-terminator): New option. + (find-ls-option): Test for -ls support. + (find-ls-subdir-switches): Test for -b in find-ls-option. + (find-dired, find-grep-dired): Doc fixes. + (find-dired): Use find-exec-terminator. + + * find-dired.el (find-ls-option, find-ls-subdir-switches) + (find-grep-options): Do not autoload these defcustoms, remove purecopy. + (find-name-arg): Remove purecopy. + + * progmodes/grep.el (grep-find-use-xargs): Doc fix. + (grep-compute-defaults): Check for `-exec COMMAND +' support. + Set grep-find-use-xargs, grep-find-command, and grep-find-template + accordingly. Don't add the null-device if not needed. + + * files.el (save-some-buffers): Doc fix. + +2011-04-02 Eli Zaretskii <eliz@gnu.org> + + * makefile.w32-in (EMACS): Default to ../src/$(BLD)/emacs.exe. + +2011-04-01 Juanma Barranquero <lekktu@gmail.com> + + * progmodes/idlwave.el (idlwave-one-key-select, idlwave-list-abbrevs): + Use `dolist' rather than `mapcar'. + 2011-04-01 Stefan Monnier <monnier@iro.umontreal.ca> Add lexical binding. @@ -182,14 +277,14 @@ * textmodes/css.el: * startup.el: * uniquify.el: - * minibuffer.el: - * newcomment.el: - * reveal.el: - * server.el: - * mpc.el: - * emacs-lisp/smie.el: - * doc-view.el: - * dired.el: + * minibuffer.el: + * newcomment.el: + * reveal.el: + * server.el: + * mpc.el: + * emacs-lisp/smie.el: + * doc-view.el: + * dired.el: * abbrev.el: Use lexical binding. 2011-04-01 Eli Zaretskii <eliz@gnu.org> @@ -203,7 +298,7 @@ 2011-03-31 Tassilo Horn <tassilo@member.fsf.org> * net/rcirc.el (rcirc-handler-001): Only authenticate, if there's - an entry for that server in rcirc-authinfo. (Bug#8385) + an entry for that server in rcirc-authinfo. (Bug#8385) 2011-03-31 Glenn Morris <rgm@gnu.org> diff --git a/lisp/bs.el b/lisp/bs.el index 1f90304f1da..72b3e4c6fef 100644 --- a/lisp/bs.el +++ b/lisp/bs.el @@ -1,4 +1,4 @@ -;;; bs.el --- menu for selecting and displaying buffers +;;; bs.el --- menu for selecting and displaying buffers -*- lexical-binding: t -*- ;; Copyright (C) 1998-2011 Free Software Foundation, Inc. ;; Author: Olaf Sylvester <Olaf.Sylvester@netsurf.de> @@ -693,7 +693,7 @@ Refresh whole Buffer Selection Menu." (call-interactively 'bs-set-configuration) (bs--redisplay t)) -(defun bs-refresh (&rest ignored) +(defun bs-refresh (&rest _ignored) "Refresh whole Buffer Selection Menu. Arguments are IGNORED (for `revert-buffer')." (interactive) @@ -1017,7 +1017,7 @@ A value of t means BUFFER belongs to no file. A value of nil means BUFFER belongs to a file." (not (buffer-file-name buffer))) -(defun bs-sort-buffer-interns-are-last (b1 b2) +(defun bs-sort-buffer-interns-are-last (_b1 b2) "Function for sorting internal buffers at the end of all buffers." (string-match-p "^\\*" (buffer-name b2))) @@ -1262,7 +1262,7 @@ or a string." fun) (t (apply fun args)))) -(defun bs--get-marked-string (start-buffer all-buffers) +(defun bs--get-marked-string (start-buffer _all-buffers) "Return a string which describes whether current buffer is marked. START-BUFFER is the buffer where we started buffer selection. ALL-BUFFERS is the list of buffers appearing in Buffer Selection Menu. @@ -1287,25 +1287,25 @@ The result string is one of `bs-string-current', `bs-string-current-marked', (t bs-string-show-always))) -(defun bs--get-modified-string (start-buffer all-buffers) +(defun bs--get-modified-string (_start-buffer _all-buffers) "Return a string which describes whether current buffer is modified. START-BUFFER is the buffer where we started buffer selection. ALL-BUFFERS is the list of buffers appearing in Buffer Selection Menu." (if (buffer-modified-p) "*" " ")) -(defun bs--get-readonly-string (start-buffer all-buffers) +(defun bs--get-readonly-string (_start-buffer _all-buffers) "Return a string which describes whether current buffer is read only. START-BUFFER is the buffer where we started buffer selection. ALL-BUFFERS is the list of buffers appearing in Buffer Selection Menu." (if buffer-read-only "%" " ")) -(defun bs--get-size-string (start-buffer all-buffers) +(defun bs--get-size-string (_start-buffer _all-buffers) "Return a string which describes the size of current buffer. START-BUFFER is the buffer where we started buffer selection. ALL-BUFFERS is the list of buffers appearing in Buffer Selection Menu." (int-to-string (buffer-size))) -(defun bs--get-name (start-buffer all-buffers) +(defun bs--get-name (_start-buffer _all-buffers) "Return name of current buffer for Buffer Selection Menu. The name of current buffer gets additional text properties for mouse highlighting. @@ -1315,13 +1315,13 @@ ALL-BUFFERS is the list of buffers appearing in Buffer Selection Menu." 'help-echo "mouse-2: select this buffer, mouse-3: select in other frame" 'mouse-face 'highlight)) -(defun bs--get-mode-name (start-buffer all-buffers) +(defun bs--get-mode-name (start-buffer _all-buffers) "Return the name of mode of current buffer for Buffer Selection Menu. START-BUFFER is the buffer where we started buffer selection. ALL-BUFFERS is the list of buffers appearing in Buffer Selection Menu." (format-mode-line mode-name nil nil start-buffer)) -(defun bs--get-file-name (start-buffer all-buffers) +(defun bs--get-file-name (_start-buffer _all-buffers) "Return string for column 'File' in Buffer Selection Menu. This is the variable `buffer-file-name' of current buffer. If not visiting a file, `list-buffers-directory' is returned instead. @@ -1420,18 +1420,18 @@ for buffer selection." (bs-show-in-buffer liste) (bs-message-without-log "%s" (bs--current-config-message))))) -(defun bs--configuration-name-for-prefix-arg (prefix-arg) - "Convert prefix argument PREFIX-ARG to a name of a buffer configuration. -If PREFIX-ARG is nil return `bs-default-configuration'. -If PREFIX-ARG is an integer return PREFIX-ARG element of `bs-configurations'. +(defun bs--configuration-name-for-prefix-arg (prefix) + "Convert prefix argument PREFIX to a name of a buffer configuration. +If PREFIX is nil return `bs-default-configuration'. +If PREFIX is an integer return PREFIX element of `bs-configurations'. Otherwise return `bs-alternative-configuration'." (cond ;; usually activation - ((null prefix-arg) + ((null prefix) bs-default-configuration) ;; call with integer as prefix argument - ((integerp prefix-arg) - (if (and (< 0 prefix-arg) (<= prefix-arg (length bs-configurations))) - (car (nth (1- prefix-arg) bs-configurations)) + ((integerp prefix) + (if (and (< 0 prefix) (<= prefix (length bs-configurations))) + (car (nth (1- prefix) bs-configurations)) bs-default-configuration)) ;; call by prefix argument C-u (t bs-alternative-configuration))) diff --git a/lisp/custom.el b/lisp/custom.el index 5b5592698d8..964d8d9ea4a 100644 --- a/lisp/custom.el +++ b/lisp/custom.el @@ -1151,6 +1151,20 @@ Return t if THEME was successfully loaded, nil otherwise." (custom-theme-load-confirm hash)) (let ((custom--inhibit-theme-enable t)) (eval-buffer)) + ;; Optimization: if the theme changes the `default' face, put that + ;; entry first. This avoids some `frame-set-background-mode' rigmarole + ;; by assigning the new background immediately. + (let* ((settings (get theme 'theme-settings)) + (tail settings) + found) + (while (and tail (not found)) + (and (eq (nth 0 (car tail)) 'theme-face) + (eq (nth 1 (car tail)) 'default) + (setq found (car tail))) + (setq tail (cdr tail))) + (if found + (put theme 'theme-settings (cons found (delq found settings))))) + ;; Finally, enable the theme. (unless no-enable (enable-theme theme)) t)))) diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 9ab1fcb0e2b..6ff7ff7d77d 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1363,33 +1363,28 @@ Special value `always' suppresses confirmation." ;; The basic function for half a dozen variations on cp/mv/ln/ln -s. (defun dired-create-files (file-creator operation fn-list name-constructor &optional marker-char) + "Create one or more new files from a list of existing files FN-LIST. +This function also handles querying the user, updating Dired +buffers, and displaying a success or failure message. -;; Create a new file for each from a list of existing files. The user -;; is queried, dired buffers are updated, and at the end a success or -;; failure message is displayed +FILE-CREATOR should be a function. It is called once for each +file in FN-LIST, and must create a new file, querying the user +and updating Dired buffers as necessary. It should accept three +arguments: the old file name, the new name, and an argument +OK-IF-ALREADY-EXISTS with the same meaning as in `copy-file'. -;; FILE-CREATOR must accept three args: oldfile newfile ok-if-already-exists +OPERATION should be a capitalized string describing the operation +performed (e.g. `Copy'). It is used for error logging. -;; It is called for each file and must create newfile, the entry of -;; which will be added. The user will be queried if the file already -;; exists. If oldfile is removed by FILE-CREATOR (i.e, it is a -;; rename), it is FILE-CREATOR's responsibility to update dired -;; buffers. FILE-CREATOR must abort by signaling a file-error if it -;; could not create newfile. The error is caught and logged. +FN-LIST is the list of files to copy (full absolute file names). -;; OPERATION (a capitalized string, e.g. `Copy') describes the -;; operation performed. It is used for error logging. - -;; FN-LIST is the list of files to copy (full absolute file names). - -;; NAME-CONSTRUCTOR returns a newfile for every oldfile, or nil to -;; skip. If it skips files for other reasons than a direct user -;; query, it is supposed to tell why (using dired-log). - -;; Optional MARKER-CHAR is a character with which to mark every -;; newfile's entry, or t to use the current marker character if the -;; oldfile was marked. +NAME-CONSTRUCTOR should be a function accepting a single +argument, the name of an old file, and returning either the +corresponding new file name or nil to skip. +Optional MARKER-CHAR is a character with which to mark every +newfile's entry, or t to use the current marker character if the +old file was marked." (let (dired-create-files-failures failures skipped (success-count 0) (total (length fn-list))) (let (to overwrite-query diff --git a/lisp/dired.el b/lisp/dired.el index d72e0aad55f..73a716d0bff 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -3629,7 +3629,7 @@ Ask means pop up a menu for the user to select one of copy, move or link." ;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command ;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown ;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff -;;;;;; dired-diff) "dired-aux" "dired-aux.el" "2d805d6766bd7970cd446413b4ed4ce0") +;;;;;; dired-diff) "dired-aux" "dired-aux.el" "0488aa71a7abdb8dcc9ce90201114ebc") ;;; Generated autoloads from dired-aux.el (autoload 'dired-diff "dired-aux" "\ @@ -3766,7 +3766,7 @@ can be produced by `dired-get-marked-files', for example. \(fn COMMAND &optional ARG FILE-LIST)" t nil) (autoload 'dired-run-shell-command "dired-aux" "\ -Not documented + \(fn COMMAND)" nil nil) @@ -3785,7 +3785,7 @@ command with a prefix argument (the value does not matter). \(fn &optional ARG FMT)" t nil) (autoload 'dired-compress-file "dired-aux" "\ -Not documented + \(fn FILE)" nil nil) @@ -3834,12 +3834,12 @@ See Info node `(emacs)Subdir switches' for more details. \(fn &optional ARG TEST-FOR-SUBDIR)" t nil) (autoload 'dired-add-file "dired-aux" "\ -Not documented + \(fn FILENAME &optional MARKER-CHAR)" nil nil) (autoload 'dired-remove-file "dired-aux" "\ -Not documented + \(fn FILE)" nil nil) @@ -3849,12 +3849,12 @@ Create or update the line for FILE in all Dired buffers it would belong in. \(fn FILE)" nil nil) (autoload 'dired-copy-file "dired-aux" "\ -Not documented + \(fn FROM TO OK-FLAG)" nil nil) (autoload 'dired-rename-file "dired-aux" "\ -Not documented + \(fn FILE NEWNAME OK-IF-ALREADY-EXISTS)" nil nil) diff --git a/lisp/ehelp.el b/lisp/ehelp.el index 7745957b4c3..b2bcf1f85cb 100644 --- a/lisp/ehelp.el +++ b/lisp/ehelp.el @@ -1,4 +1,4 @@ -;;; ehelp.el --- bindings for electric-help mode +;;; ehelp.el --- bindings for electric-help mode -*- lexical-binding: t -*- ;; Copyright (C) 1986, 1995, 2000-2011 Free Software Foundation, Inc. @@ -347,14 +347,14 @@ will select it.)" ;; This is to be bound to M-x in ehelp mode. Retains ehelp buffer and then ;; continues with execute-extended-command. -(defun electric-help-execute-extended (prefixarg) +(defun electric-help-execute-extended (_prefixarg) (interactive "p") (setq electric-help-form-to-execute '(execute-extended-command nil)) (electric-help-retain)) ;; This is to be buond to C-x in ehelp mode. Retains ehelp buffer and then ;; continues with ctrl-x prefix. -(defun electric-help-ctrl-x-prefix (prefixarg) +(defun electric-help-ctrl-x-prefix (_prefixarg) (interactive "p") (setq electric-help-form-to-execute '(progn (message nil) (setq unread-command-char ?\C-x))) (electric-help-retain)) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 5dc2938fe08..6aecc3615f3 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -652,7 +652,7 @@ FILE is the name of a file relative to that base location. This macro retrieves FILE from LOCATION into a temporary buffer, and evaluates BODY while that buffer is current. This work buffer is killed afterwards. Return the last value in BODY." - `(let* ((http (string-match "\\`http:" ,location)) + `(let* ((http (string-match "\\`https?:" ,location)) (buffer (if http (url-retrieve-synchronously (concat ,location ,file)) diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el index 59a30d62b02..50a65eb6bbb 100644 --- a/lisp/emacs-lisp/re-builder.el +++ b/lisp/emacs-lisp/re-builder.el @@ -1,4 +1,4 @@ -;;; re-builder.el --- building Regexps with visual feedback +;;; re-builder.el --- building Regexps with visual feedback -*- lexical-binding: t -*- ;; Copyright (C) 1999-2011 Free Software Foundation, Inc. @@ -506,7 +506,7 @@ If SUBEXP is non-nil mark only the corresponding sub-expressions." (reb-update-regexp) (reb-update-overlays subexp)) -(defun reb-auto-update (beg end lenold &optional force) +(defun reb-auto-update (_beg _end _lenold &optional force) "Called from `after-update-functions' to update the display. BEG, END and LENOLD are passed in from the hook. An actual update is only done if the regexp has changed or if the diff --git a/lisp/epa-dired.el b/lisp/epa-dired.el index db1ddd7ce56..0834a8df23a 100644 --- a/lisp/epa-dired.el +++ b/lisp/epa-dired.el @@ -1,4 +1,4 @@ -;;; epa-dired.el --- the EasyPG Assistant, dired extension +;;; epa-dired.el --- the EasyPG Assistant, dired extension -*- lexical-binding: t -*- ;; Copyright (C) 2006-2011 Free Software Foundation, Inc. ;; Author: Daiki Ueno <ueno@unixuser.org> diff --git a/lisp/epa-file.el b/lisp/epa-file.el index b0f9d2dffb2..aa9915d8cfa 100644 --- a/lisp/epa-file.el +++ b/lisp/epa-file.el @@ -1,4 +1,4 @@ -;;; epa-file.el --- the EasyPG Assistant, transparent file encryption +;;; epa-file.el --- the EasyPG Assistant, transparent file encryption -*- lexical-binding: t -*- ;; Copyright (C) 2006-2011 Free Software Foundation, Inc. ;; Author: Daiki Ueno <ueno@unixuser.org> diff --git a/lisp/epa-hook.el b/lisp/epa-hook.el index 1dbc95bb7d5..652ab19ba65 100644 --- a/lisp/epa-hook.el +++ b/lisp/epa-hook.el @@ -1,4 +1,4 @@ -;;; epa-hook.el --- preloaded code to enable epa-file.el +;;; epa-hook.el --- preloaded code to enable epa-file.el -*- lexical-binding: t -*- ;; Copyright (C) 2006-2011 Free Software Foundation, Inc. ;; Author: Daiki Ueno <ueno@unixuser.org> diff --git a/lisp/epa-mail.el b/lisp/epa-mail.el index 6e358541118..a3f11f78675 100644 --- a/lisp/epa-mail.el +++ b/lisp/epa-mail.el @@ -1,4 +1,4 @@ -;;; epa-mail.el --- the EasyPG Assistant, minor-mode for mail composer +;;; epa-mail.el --- the EasyPG Assistant, minor-mode for mail composer -*- lexical-binding: t -*- ;; Copyright (C) 2006-2011 Free Software Foundation, Inc. ;; Author: Daiki Ueno <ueno@unixuser.org> @@ -117,7 +117,7 @@ Don't use this command in Lisp programs!" (save-excursion (let ((verbose current-prefix-arg) (context (epg-make-context epa-protocol)) - recipients-string recipients recipient-key) + recipients-string recipients recipient-key sign) (goto-char (point-min)) (save-restriction (narrow-to-region (point) diff --git a/lisp/epa.el b/lisp/epa.el index 43e202c1b16..d4f4fab2eed 100644 --- a/lisp/epa.el +++ b/lisp/epa.el @@ -1,4 +1,4 @@ -;;; epa.el --- the EasyPG Assistant +;;; epa.el --- the EasyPG Assistant -*- lexical-binding: t -*- ;; Copyright (C) 2006-2011 Free Software Foundation, Inc. @@ -269,7 +269,7 @@ You should bind this variable with `let', but do not set it globally.") :action 'epa--key-widget-action :help-echo 'epa--key-widget-help-echo) -(defun epa--key-widget-action (widget &optional event) +(defun epa--key-widget-action (widget &optional _event) (save-selected-window (epa--show-key (widget-get widget :value)))) @@ -460,7 +460,7 @@ If ARG is non-nil, mark the key." (list nil))) (epa--list-keys name t)) -(defun epa--key-list-revert-buffer (&optional ignore-auto noconfirm) +(defun epa--key-list-revert-buffer (&optional _ignore-auto _noconfirm) (apply #'epa--list-keys epa-list-keys-arguments)) (defun epa--marked-keys () @@ -490,13 +490,13 @@ If ARG is non-nil, mark the key." - `\\[epa-mark-key]' to mark a key on the line - `\\[epa-unmark-key]' to unmark a key on the line\n")) (widget-create 'link - :notify (lambda (&rest ignore) (abort-recursive-edit)) + :notify (lambda (&rest _ignore) (abort-recursive-edit)) :help-echo (substitute-command-keys "Click here or \\[abort-recursive-edit] to cancel") "Cancel") (widget-create 'link - :notify (lambda (&rest ignore) (exit-recursive-edit)) + :notify (lambda (&rest _ignore) (exit-recursive-edit)) :help-echo (substitute-command-keys "Click here or \\[exit-recursive-edit] to finish") @@ -649,7 +649,7 @@ If SECRET is non-nil, list secret keys instead of public keys." (format "Passphrase for %s %s: " key-id (cdr entry)) (format "Passphrase for %s: " key-id))))))) -(defun epa-progress-callback-function (context what char current total +(defun epa-progress-callback-function (_context what _char current total handback) (message "%s%d%% (%d/%d)" (or handback (concat what ": ")) @@ -964,7 +964,7 @@ See the reason described in the `epa-verify-region' documentation." (eval-and-compile (if (fboundp 'select-safe-coding-system) (defalias 'epa--select-safe-coding-system 'select-safe-coding-system) - (defun epa--select-safe-coding-system (from to) + (defun epa--select-safe-coding-system (_from _to) buffer-file-coding-system))) ;;;###autoload diff --git a/lisp/epg.el b/lisp/epg.el index c096ec6df98..348ad970b14 100644 --- a/lisp/epg.el +++ b/lisp/epg.el @@ -1,4 +1,4 @@ -;;; epg.el --- the EasyPG Library +;;; epg.el --- the EasyPG Library -*- lexical-binding: t -*- ;; Copyright (C) 1999-2000, 2002-2011 Free Software Foundation, Inc. ;; Author: Daiki Ueno <ueno@unixuser.org> @@ -1223,7 +1223,7 @@ This function is for internal use only." (defalias 'epg--decode-coding-string 'decode-coding-string) (defalias 'epg--decode-coding-string 'identity))) -(defun epg--status-USERID_HINT (context string) +(defun epg--status-USERID_HINT (_context string) (if (string-match "\\`\\([^ ]+\\) \\(.*\\)" string) (let* ((key-id (match-string 1 string)) (user-id (match-string 2 string)) @@ -1238,14 +1238,14 @@ This function is for internal use only." (setq epg-user-id-alist (cons (cons key-id user-id) epg-user-id-alist)))))) -(defun epg--status-NEED_PASSPHRASE (context string) +(defun epg--status-NEED_PASSPHRASE (_context string) (if (string-match "\\`\\([^ ]+\\)" string) (setq epg-key-id (match-string 1 string)))) -(defun epg--status-NEED_PASSPHRASE_SYM (context string) +(defun epg--status-NEED_PASSPHRASE_SYM (_context _string) (setq epg-key-id 'SYM)) -(defun epg--status-NEED_PASSPHRASE_PIN (context string) +(defun epg--status-NEED_PASSPHRASE_PIN (_context _string) (setq epg-key-id 'PIN)) (eval-and-compile @@ -1308,11 +1308,11 @@ This function is for internal use only." (if encoded-passphrase-with-new-line (epg--clear-string encoded-passphrase-with-new-line)))))) -(defun epg--prompt-GET_BOOL (context string) +(defun epg--prompt-GET_BOOL (_context string) (let ((entry (assoc string epg-prompt-alist))) (y-or-n-p (if entry (cdr entry) (concat string "? "))))) -(defun epg--prompt-GET_BOOL-untrusted_key.override (context string) +(defun epg--prompt-GET_BOOL-untrusted_key.override (_context _string) (y-or-n-p (if (and (equal (car epg-last-status) "USERID_HINT") (string-match "\\`\\([^ ]+\\) \\(.*\\)" (cdr epg-last-status))) @@ -1467,31 +1467,31 @@ This function is for internal use only." signature (string-to-number (match-string 7 string) 16))))) -(defun epg--status-TRUST_UNDEFINED (context string) +(defun epg--status-TRUST_UNDEFINED (context _string) (let ((signature (car (epg-context-result-for context 'verify)))) (if (and signature (eq (epg-signature-status signature) 'good)) (epg-signature-set-validity signature 'undefined)))) -(defun epg--status-TRUST_NEVER (context string) +(defun epg--status-TRUST_NEVER (context _string) (let ((signature (car (epg-context-result-for context 'verify)))) (if (and signature (eq (epg-signature-status signature) 'good)) (epg-signature-set-validity signature 'never)))) -(defun epg--status-TRUST_MARGINAL (context string) +(defun epg--status-TRUST_MARGINAL (context _string) (let ((signature (car (epg-context-result-for context 'verify)))) (if (and signature (eq (epg-signature-status signature) 'marginal)) (epg-signature-set-validity signature 'marginal)))) -(defun epg--status-TRUST_FULLY (context string) +(defun epg--status-TRUST_FULLY (context _string) (let ((signature (car (epg-context-result-for context 'verify)))) (if (and signature (eq (epg-signature-status signature) 'good)) (epg-signature-set-validity signature 'full)))) -(defun epg--status-TRUST_ULTIMATE (context string) +(defun epg--status-TRUST_ULTIMATE (context _string) (let ((signature (car (epg-context-result-for context 'verify)))) (if (and signature (eq (epg-signature-status signature) 'good)) @@ -1541,10 +1541,10 @@ This function is for internal use only." (string-to-number (match-string 3 string))) (epg-context-result-for context 'encrypted-to))))) -(defun epg--status-DECRYPTION_FAILED (context string) +(defun epg--status-DECRYPTION_FAILED (context _string) (epg-context-set-result-for context 'decryption-failed t)) -(defun epg--status-DECRYPTION_OKAY (context string) +(defun epg--status-DECRYPTION_OKAY (context _string) (epg-context-set-result-for context 'decryption-okay t)) (defun epg--status-NODATA (context string) @@ -1566,13 +1566,13 @@ This function is for internal use only." (epg--time-from-seconds string))) (epg-context-result-for context 'error)))) -(defun epg--status-KEYREVOKED (context string) +(defun epg--status-KEYREVOKED (context _string) (epg-context-set-result-for context 'key (cons '(key-revoked) (epg-context-result-for context 'error)))) -(defun epg--status-BADARMOR (context string) +(defun epg--status-BADARMOR (context _string) (epg-context-set-result-for context 'error (cons '(bad-armor) @@ -1589,7 +1589,7 @@ This function is for internal use only." (match-string 2 string))) (epg-context-result-for context 'error))))) -(defun epg--status-NO_RECP (context string) +(defun epg--status-NO_RECP (context _string) (epg-context-set-result-for context 'error (cons '(no-recipients) @@ -1626,13 +1626,13 @@ This function is for internal use only." (cons 'fingerprint (match-string 2 string))) (epg-context-result-for context 'generate-key))))) -(defun epg--status-KEY_NOT_CREATED (context string) +(defun epg--status-KEY_NOT_CREATED (context _string) (epg-context-set-result-for context 'error (cons '(key-not-created) (epg-context-result-for context 'error)))) -(defun epg--status-IMPORTED (context string) +(defun epg--status-IMPORTED (_context string) (if (string-match "\\`\\([^ ]+\\) \\(.*\\)" string) (let* ((key-id (match-string 1 string)) (user-id (match-string 2 string)) @@ -1694,7 +1694,7 @@ This function is for internal use only." (epg-context-result-for context 'import-status))) (epg-context-set-result-for context 'import-status nil))) -(defun epg-passphrase-callback-function (context key-id handback) +(defun epg-passphrase-callback-function (context key-id _handback) (if (eq key-id 'SYM) (read-passwd "Passphrase for symmetric encryption: " (eq (epg-context-operation context) 'encrypt)) diff --git a/lisp/files.el b/lisp/files.el index 38047f2fa43..e87c25f3575 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -4607,6 +4607,9 @@ You can answer `y' to save, `n' not to save, `C-r' to look at the buffer in question with `view-buffer' before deciding or `d' to view the differences using `diff-buffer-with-file'. +This command first saves any buffers where `buffer-save-without-query' is +non-nil, without asking. + Optional argument (the prefix) non-nil means save all with no questions. Optional second argument PRED determines which buffers are considered: If PRED is nil, all the file-visiting buffers are considered. diff --git a/lisp/find-dired.el b/lisp/find-dired.el index 144d6633be4..a2b196dc029 100644 --- a/lisp/find-dired.el +++ b/lisp/find-dired.el @@ -33,36 +33,62 @@ :group 'dired :prefix "find-") +;; FIXME this option does not really belong in this file, it's more general. +;; Eg cf some tests in grep.el. +(defcustom find-exec-terminator + (if (eq 0 + (ignore-errors + (process-file find-program nil nil nil + null-device "-exec" "echo" "{}" "+"))) + "+" + (shell-quote-argument ";")) + "String that terminates \"find -exec COMMAND {} \". +The value should include any needed quoting for the shell. +Common values are \"+\" and \"\\\\;\", with the former more efficient +than the latter." + :version "24.1" + :group 'find-dired + :type 'string) + ;; find's -ls corresponds to these switches. ;; Note -b, at least GNU find quotes spaces etc. in filenames -;;;###autoload (defcustom find-ls-option - (if (eq system-type 'berkeley-unix) (purecopy '("-ls" . "-gilsb")) - (purecopy '("-exec ls -ld {} \\;" . "-ld"))) + (if (eq 0 + (ignore-errors + (process-file find-program nil nil nil null-device "-ls"))) + (cons "-ls" + (if (eq system-type 'berkeley-unix) + "-gilsb" + "-dilsb")) + (cons + (format "-exec ls -ld {} %s" find-exec-terminator) + "-ld")) "Description of the option to `find' to produce an `ls -l'-type listing. This is a cons of two strings (FIND-OPTION . LS-SWITCHES). FIND-OPTION gives the option (or options) to `find' that produce the desired output. LS-SWITCHES is a list of `ls' switches to tell dired how to parse the output." + :version "24.1" ; add tests for -ls and -exec + support :type '(cons (string :tag "Find Option") (string :tag "Ls Switches")) :group 'find-dired) -;;;###autoload -(defcustom find-ls-subdir-switches (purecopy "-al") +(defcustom find-ls-subdir-switches + (if (string-match "-[a-z]*b" (cdr find-ls-option)) + "-alb" + "-al") "`ls' switches for inserting subdirectories in `*Find*' buffers. This should contain the \"-l\" switch. Use the \"-F\" or \"-b\" switches if and only if you also use them for `find-ls-option'." + :version "24.1" ; add -b test :type 'string - :group 'find-dired - :version "22.1") + :group 'find-dired) -;;;###autoload (defcustom find-grep-options - (purecopy (if (or (eq system-type 'berkeley-unix) + (if (or (eq system-type 'berkeley-unix) (string-match "solaris2" system-configuration) (string-match "irix" system-configuration)) - "-s" "-q")) + "-s" "-q") "Option to grep to be as silent as possible. On Berkeley systems, this is `-s'; on Posix, and with GNU grep, `-q' does it. On other systems, the closest you can come is to use `-l'." @@ -71,9 +97,9 @@ On other systems, the closest you can come is to use `-l'." ;; This used to be autoloaded (see bug#4387). (defcustom find-name-arg - (purecopy (if read-file-name-completion-ignore-case + (if read-file-name-completion-ignore-case "-iname" - "-name")) + "-name") "Argument used to specify file name pattern. If `read-file-name-completion-ignore-case' is non-nil, -iname is used so that find also ignores case. Otherwise, -name is used." @@ -92,12 +118,12 @@ find also ignores case. Otherwise, -name is used." ;;;###autoload (defun find-dired (dir args) "Run `find' and go into Dired mode on a buffer of the output. -The command run (after changing into DIR) is +The command run (after changing into DIR) is essentially find . \\( ARGS \\) -ls -except that the variable `find-ls-option' specifies what to use -as the final argument." +except that the car of the variable `find-ls-option' specifies what to +use in place of \"-ls\" as the final argument." (interactive (list (read-directory-name "Run find in directory: " nil "" t) (read-string "Run find (with args): " find-args '(find-args-history . 1)))) @@ -138,11 +164,12 @@ as the final argument." " " args " " (shell-quote-argument ")") " ")) - (if (equal (car find-ls-option) "-exec ls -ld {} \\;") - (concat "-exec ls -ld " + (if (string-match "\\`\\(.*\\) {} \\(\\\\;\\|+\\)\\'" + (car find-ls-option)) + (format "%s %s %s" + (match-string 1 (car find-ls-option)) (shell-quote-argument "{}") - " " - (shell-quote-argument ";")) + find-exec-terminator) (car find-ls-option)))) ;; Start the find process. (shell-command (concat args "&") (current-buffer)) @@ -216,9 +243,14 @@ The command run (after changing into DIR) is "Find files in DIR containing a regexp REGEXP and start Dired on output. The command run (after changing into DIR) is - find . -exec grep -s -e REGEXP {} \\\; -ls + find . \\( -type f -exec `grep-program' `find-grep-options' \\ + -e REGEXP {} \\; \\) -ls -Thus ARG can also contain additional grep options." +where the car of the variable `find-ls-option' specifies what to +use in place of \"-ls\" as the final argument." + ;; Doc used to say "Thus ARG can also contain additional grep options." + ;; i) Presumably ARG == REGEXP? + ;; ii) No it can't have options, since it gets shell-quoted. (interactive "DFind-grep (directory): \nsFind-grep (grep regexp): ") ;; find -exec doesn't allow shell i/o redirections in the command, ;; or we could use `grep -l >/dev/null' @@ -231,6 +263,7 @@ Thus ARG can also contain additional grep options." " " (shell-quote-argument "{}") " " + ;; Doesn't work with "+". (shell-quote-argument ";")))) (defun find-dired-filter (proc string) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 37faf83fd12..64cc6eb4f8b 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,8 +1,25 @@ +2011-04-03 Lars Magne Ingebrigtsen <larsi@gnus.org> + + * gnus-sum.el (gnus-update-marks): Reinstate the code to not alter + marks on non-selected articles. + +2011-04-02 Chong Yidong <cyd@stupidchicken.com> + + * proto-stream.el: Move to Emacs core, at net/network-stream.el. + + * nnimap.el (nnimap-open-connection-1): Pass explicit :end-of-command + parameter to open-protocol-stream. + 2011-04-01 Julien Danjou <julien@danjou.info> * mm-view.el (mm-display-inline-fontify): Do not fontify with fundamental-mode. +2011-04-01 Lars Magne Ingebrigtsen <larsi@gnus.org> + + * gnus-start.el (gnus-get-unread-articles): Don't try to contact denied + servers. + 2011-03-30 Lars Magne Ingebrigtsen <larsi@gnus.org> * gnus-sum.el (gnus-update-marks): Revert intersection change, which diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el index afded87fe37..fa582c58aee 100644 --- a/lisp/gnus/gnus-start.el +++ b/lisp/gnus/gnus-start.el @@ -1723,7 +1723,9 @@ If SCAN, request a scan of that group as well." ;; Do the rest of the retrieval. (dolist (elem type-cache) (destructuring-bind (method method-type infos early-data) elem - (when (and method infos) + (when (and method infos + (not (eq (gnus-server-status method) + 'denied))) (let ((updatep (gnus-check-backend-function 'request-update-info (car method)))) ;; See if any of the groups from this method require updating. diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 10aa4e12dcf..e3ae1d7f528 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -6070,12 +6070,15 @@ If SELECT-ARTICLES, only select those articles from GROUP." (let* ((old (cdr (assq (cdr type) (gnus-info-marks info)))) ;; Don't do anything about marks for articles we ;; didn't actually get any headers for. - (existing (gnus-compress-sequence gnus-newsgroup-articles)) (del - (gnus-remove-from-range (gnus-copy-sequence old) list)) + (gnus-list-range-intersection + gnus-newsgroup-articles + (gnus-remove-from-range (gnus-copy-sequence old) list))) (add - (gnus-remove-from-range - (gnus-copy-sequence list) old))) + (gnus-list-range-intersection + gnus-newsgroup-articles + (gnus-remove-from-range + (gnus-copy-sequence list) old)))) (when add (push (list add 'add (list (cdr type))) delta-marks)) (when del diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index fa09c7ff165..afdea185dd3 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -31,7 +31,11 @@ (unless (fboundp 'declare-function) (defmacro declare-function (&rest r)))) (eval-and-compile - (require 'nnheader)) + (require 'nnheader) + ;; In Emacs 24, `open-protocol-stream' is an autoloaded alias for + ;; `make-network-stream'. + (unless (fboundp 'open-protocol-stream) + (require 'proto-stream))) (eval-when-compile (require 'cl)) @@ -45,7 +49,6 @@ (require 'tls) (require 'parse-time) (require 'nnmail) -(require 'proto-stream) (autoload 'auth-source-forget+ "auth-source") (autoload 'auth-source-search "auth-source") @@ -365,6 +368,7 @@ textual parts.") :return-list t :shell-command nnimap-shell-program :capability-command "1 CAPABILITY\r\n" + :end-of-command "\r\n" :success " OK " :starttls-function (lambda (capabilities) diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el index fa765e17463..3285da513e8 100644 --- a/lisp/gnus/nntp.el +++ b/lisp/gnus/nntp.el @@ -27,13 +27,16 @@ ;; For Emacs <22.2 and XEmacs. (eval-and-compile - (unless (fboundp 'declare-function) (defmacro declare-function (&rest r)))) + (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))) + ;; In Emacs 24, `open-protocol-stream' is an autoloaded alias for + ;; `make-network-stream'. + (unless (fboundp 'open-protocol-stream) + (require 'proto-stream))) (require 'nnheader) (require 'nnoo) (require 'gnus-util) (require 'gnus) -(require 'proto-stream) (require 'gnus-group) ;; gnus-group-name-charset (nnoo-declare nntp) diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 392e894965c..206a9af3a90 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -1,4 +1,4 @@ -;;; help-fns.el --- Complex help functions +;;; help-fns.el --- Complex help functions -*- lexical-binding: t -*- ;; Copyright (C) 1985-1986, 1993-1994, 1998-2011 ;; Free Software Foundation, Inc. @@ -635,8 +635,8 @@ it is displayed along with the global value." "Describe variable: ") obarray (lambda (vv) - (or (special-variable-p vv) - (get vv 'variable-documentation))) + (or (get vv 'variable-documentation) + (and (boundp vv) (not (keywordp vv))))) t nil nil (if (symbolp v) (symbol-name v)))) (list (if (equal val "") @@ -879,7 +879,7 @@ BUFFER defaults to the current buffer." (insert (cond ((null value) "default") ((char-table-p value) "deeper char-table ...") - (t (condition-case err + (t (condition-case nil (category-set-mnemonics value) (error "invalid")))))) diff --git a/lisp/hexl.el b/lisp/hexl.el index dd142f7cda4..fdafd97cdab 100644 --- a/lisp/hexl.el +++ b/lisp/hexl.el @@ -1,4 +1,4 @@ -;;; hexl.el --- edit a file in a hex dump format using the hexl filter +;;; hexl.el --- edit a file in a hex dump format using the hexl filter -*- lexical-binding: t -*- ;; Copyright (C) 1989, 1994, 1998, 2001-2011 Free Software Foundation, Inc. @@ -355,7 +355,7 @@ You can use \\[hexl-find-file] to visit a file in Hexl mode. (hexl-mode--setq-local 'require-final-newline nil) - + (hexl-mode--setq-local 'font-lock-defaults '(hexl-font-lock-keywords t)) (hexl-mode--setq-local 'revert-buffer-function @@ -437,7 +437,7 @@ and edit the file in `hexl-mode'." (if (not (eq major-mode 'hexl-mode)) (hexl-mode))) -(defun hexl-revert-buffer-function (ignore-auto noconfirm) +(defun hexl-revert-buffer-function (_ignore-auto _noconfirm) (let ((coding-system-for-read 'no-conversion) revert-buffer-function) ;; Call the original `revert-buffer' without code conversion; also @@ -492,7 +492,7 @@ With arg, don't unhexlify buffer." ;; since some of them may affect the minor modes. (dolist (mm mms) (funcall (car mm) (if (cdr mm) 1 -1)))) - + (force-mode-line-update)) (defun hexl-maybe-dehexlify-buffer () diff --git a/lisp/linum.el b/lisp/linum.el index 11e6a7f8b4f..db6e4c49977 100644 --- a/lisp/linum.el +++ b/lisp/linum.el @@ -1,4 +1,4 @@ -;;; linum.el --- display line numbers in the left margin +;;; linum.el --- display line numbers in the left margin -*- lexical-binding: t -*- ;; Copyright (C) 2008-2011 Free Software Foundation, Inc. @@ -174,14 +174,14 @@ and you have to scroll or press \\[recenter-top-bottom] to update the numbers." (setq line (1+ line))) (set-window-margins win width (cdr (window-margins win))))) -(defun linum-after-change (beg end len) +(defun linum-after-change (beg end _len) ;; update overlays on deletions, and after newlines are inserted (when (or (= beg end) (= end (point-max)) (string-match-p "\n" (buffer-substring-no-properties beg end))) (linum-update-current))) -(defun linum-after-scroll (win start) +(defun linum-after-scroll (win _start) (linum-update (window-buffer win))) ;; (defun linum-after-size (frame) diff --git a/lisp/makefile.w32-in b/lisp/makefile.w32-in index ed2fe4031b7..c844a8f6630 100644 --- a/lisp/makefile.w32-in +++ b/lisp/makefile.w32-in @@ -27,9 +27,9 @@ lisp = $(CURDIR) srcdir = $(CURDIR)/.. # You can specify a different executable on the make command line, -# e.g. "make EMACS=../src/emacs ...". +# e.g. "make EMACS=../bin/emacs ...". -EMACS = $(THISDIR)/../bin/emacs.exe +EMACS = ../src/$(BLD)/emacs.exe # Command line flags for Emacs. diff --git a/lisp/gnus/proto-stream.el b/lisp/net/network-stream.el index 45cc974e7a9..070cd2641db 100644 --- a/lisp/gnus/proto-stream.el +++ b/lisp/net/network-stream.el @@ -1,4 +1,4 @@ -;;; proto-stream.el --- negotiating TLS, STARTTLS and other connections +;;; network-stream.el --- open network processes, possibly with encryption ;; Copyright (C) 2010-2011 Free Software Foundation, Inc. @@ -22,20 +22,14 @@ ;;; Commentary: -;; This library is meant to provide the glue between modules that want -;; to establish a network connection to a server for protocols such as -;; IMAP, NNTP, SMTP and POP3. - -;; The main problem is that there's more than a couple of interfaces -;; towards doing this. You have normal, plain connections, which are -;; no trouble at all, but you also have TLS/SSL connections, and you -;; have STARTTLS. Negotiating this for each protocol can be rather -;; tedious, so this library provides a single entry point, and hides -;; much of the ugliness. +;; This library provides the function `open-network-stream', which provides a +;; higher-level interface for opening TCP network processes than the built-in +;; function `make-network-process'. In addition to plain connections, it +;; supports TLS/SSL and STARTTLS connections. ;; Usage example: -;; (open-protocol-stream +;; (open-network-stream ;; "*nnimap*" buffer address port ;; :type 'network ;; :capability-command "1 CAPABILITY\r\n" @@ -55,14 +49,24 @@ (proc type &optional priority-string trustfiles keyfiles)) ;;;###autoload -(defun open-protocol-stream (name buffer host service &rest parameters) - "Open a network stream to HOST, possibly with encryption. +(defun open-network-stream (name buffer host service &rest parameters) + "Open a TCP connection to HOST, optionally with encryption. Normally, return a network process object; with a non-nil :return-list parameter, return a list instead (see below). +Input and output work as for subprocesses; `delete-process' +closes it. + +NAME is the name for the process. It is modified if necessary to + make it unique. +BUFFER is a buffer or buffer name to associate with the process. + Process output goes at end of that buffer. BUFFER may be nil, + meaning that the process is not associated with any buffer. +HOST is the name or IP address of the host to connect to. +SERVICE is the name of the service desired, or an integer specifying + a port number to connect to. -The first four parameters, NAME, BUFFER, HOST, and SERVICE, have -the same meanings as in `open-network-stream'. The remaining -PARAMETERS should be a sequence of keywords and values: +The remaining PARAMETERS should be a sequence of keywords and +values: :type specifies the connection type, one of the following: nil or `network' @@ -92,7 +96,6 @@ PARAMETERS should be a sequence of keywords and values: or `tls' (TLS-encrypted). :end-of-command specifies a regexp matching the end of a command. - If non-nil, it defaults to \"\\n\". :success specifies a regexp matching a message indicating a successful STARTTLS negotiation. For instance, the default @@ -106,6 +109,8 @@ PARAMETERS should be a sequence of keywords and values: This function should take one parameter, the response to the capability command, and should return the command to switch on STARTTLS if the server supports STARTTLS, and nil otherwise." + (unless (featurep 'make-network-process) + (error "Emacs was compiled without networking support")) (let ((type (plist-get parameters :type)) (return-list (plist-get parameters :return-list))) (if (and (not return-list) @@ -113,21 +118,24 @@ PARAMETERS should be a sequence of keywords and values: (and (memq type '(nil network)) (not (and (plist-get parameters :success) (plist-get parameters :capability-command)))))) - ;; The simplest case is equivalent to `open-network-stream'. - (open-network-stream name buffer host service) - ;; For everything else, refer to proto-stream-open-*. - (unless (plist-get parameters :end-of-command) - (setq parameters (append '(:end-of-command "\r\n") parameters))) - (let* ((connection-function - (cond - ((eq type 'plain) 'proto-stream-open-plain) - ((memq type '(nil network starttls)) - 'proto-stream-open-starttls) - ((memq type '(tls ssl)) 'proto-stream-open-tls) - ((eq type 'shell) 'proto-stream-open-shell) - (t (error "Invalid connection type %s" type)))) - (result (funcall connection-function - name buffer host service parameters))) + ;; The simplest case: wrapper around `make-network-process'. + (make-network-process :name name :buffer buffer + :host host :service service) + (let ((work-buffer (or buffer + (generate-new-buffer " *stream buffer*"))) + (fun (cond ((eq type 'plain) 'network-stream-open-plain) + ((memq type '(nil network starttls)) + 'network-stream-open-starttls) + ((memq type '(tls ssl)) 'network-stream-open-tls) + ((eq type 'shell) 'network-stream-open-shell) + (t (error "Invalid connection type %s" type)))) + result) + (unwind-protect + (setq result (funcall fun name work-buffer host service parameters)) + (unless buffer + (and (processp (car result)) + (set-process-buffer (car result) nil)) + (kill-buffer work-buffer))) (if return-list (list (car result) :greeting (nth 1 result) @@ -135,16 +143,20 @@ PARAMETERS should be a sequence of keywords and values: :type (nth 3 result)) (car result)))))) -(defun proto-stream-open-plain (name buffer host service parameters) +;;;###autoload +(defalias 'open-protocol-stream 'open-network-stream) + +(defun network-stream-open-plain (name buffer host service parameters) (let ((start (with-current-buffer buffer (point))) - (stream (open-network-stream name buffer host service))) + (stream (make-network-process :name name :buffer buffer + :host host :service service))) (list stream - (proto-stream-get-response stream start + (network-stream-get-response stream start (plist-get parameters :end-of-command)) nil 'plain))) -(defun proto-stream-open-starttls (name buffer host service parameters) +(defun network-stream-open-starttls (name buffer host service parameters) (let* ((start (with-current-buffer buffer (point))) (require-tls (eq (plist-get parameters :type) 'starttls)) (starttls-function (plist-get parameters :starttls-function)) @@ -152,11 +164,10 @@ PARAMETERS should be a sequence of keywords and values: (capability-command (plist-get parameters :capability-command)) (eoc (plist-get parameters :end-of-command)) ;; Return (STREAM GREETING CAPABILITIES RESULTING-TYPE) - (stream (open-network-stream name buffer host service)) - (greeting (proto-stream-get-response stream start eoc)) - (capabilities (when capability-command - (proto-stream-command stream - capability-command eoc))) + (stream (make-network-process :name name :buffer buffer + :host host :service service)) + (greeting (network-stream-get-response stream start eoc)) + (capabilities (network-stream-command stream capability-command eoc)) (resulting-type 'plain) starttls-command) @@ -179,9 +190,9 @@ PARAMETERS should be a sequence of keywords and values: ;; care about the identity of the peer. (cons "--insecure" starttls-extra-arguments)))) (setq stream (starttls-open-stream name buffer host service))) - (proto-stream-get-response stream start eoc)) + (network-stream-get-response stream start eoc)) (when (string-match success-string - (proto-stream-command stream starttls-command eoc)) + (network-stream-command stream starttls-command eoc)) ;; The server said it was OK to begin STARTTLS negotiations. (if (fboundp 'open-gnutls-stream) (gnutls-negotiate stream nil) @@ -192,11 +203,13 @@ PARAMETERS should be a sequence of keywords and values: ;; We didn't successfully negotiate STARTTLS; if TLS ;; isn't demanded, reopen an unencrypted connection. (unless require-tls - (setq stream (open-network-stream name buffer host service)) - (proto-stream-get-response stream start eoc))) + (setq stream + (make-network-process :name name :buffer buffer + :host host :service service)) + (network-stream-get-response stream start eoc))) ;; Re-get the capabilities, which may have now changed. (setq capabilities - (proto-stream-command stream capability-command eoc)))) + (network-stream-command stream capability-command eoc)))) ;; If TLS is mandatory, close the connection if it's unencrypted. (and require-tls @@ -205,70 +218,69 @@ PARAMETERS should be a sequence of keywords and values: ;; Return value: (list stream greeting capabilities resulting-type))) -(defun proto-stream-command (stream command eoc) - (let ((start (with-current-buffer (process-buffer stream) (point-max)))) - (process-send-string stream command) - (proto-stream-get-response stream start eoc))) - -(defun proto-stream-get-response (stream start end-of-command) - (with-current-buffer (process-buffer stream) - (save-excursion - (goto-char start) - (while (and (memq (process-status stream) - '(open run)) - (not (re-search-forward end-of-command nil t))) - (accept-process-output stream 0 50) - (goto-char start)) - (if (= start (point)) - ;; The process died; return nil. - nil - ;; Return the data we got back. - (buffer-substring start (point)))))) - -(defun proto-stream-open-tls (name buffer host service parameters) +(defun network-stream-command (stream command eoc) + (when command + (let ((start (with-current-buffer (process-buffer stream) (point-max)))) + (process-send-string stream command) + (network-stream-get-response stream start eoc)))) + +(defun network-stream-get-response (stream start end-of-command) + (when end-of-command + (with-current-buffer (process-buffer stream) + (save-excursion + (goto-char start) + (while (and (memq (process-status stream) '(open run)) + (not (re-search-forward end-of-command nil t))) + (accept-process-output stream 0 50) + (goto-char start)) + ;; Return the data we got back, or nil if the process died. + (unless (= start (point)) + (buffer-substring start (point))))))) + +(defun network-stream-open-tls (name buffer host service parameters) (with-current-buffer buffer - (let ((start (point-max)) - (stream - (funcall (if (fboundp 'open-gnutls-stream) - 'open-gnutls-stream - 'open-tls-stream) - name buffer host service)) - (eoc (plist-get parameters :end-of-command))) + (let* ((start (point-max)) + (use-builtin-gnutls (fboundp 'open-gnutls-stream)) + (stream + (funcall (if use-builtin-gnutls + 'open-gnutls-stream + 'open-tls-stream) + name buffer host service)) + (eoc (plist-get parameters :end-of-command))) (if (null stream) (list nil nil nil 'plain) ;; If we're using tls.el, we have to delete the output from ;; openssl/gnutls-cli. - (unless (fboundp 'open-gnutls-stream) - (proto-stream-get-response stream start eoc) + (when (and (null use-builtin-gnutls) eoc) + (network-stream-get-response stream start eoc) (goto-char (point-min)) (when (re-search-forward eoc nil t) (goto-char (match-beginning 0)) (delete-region (point-min) (line-beginning-position)))) - (proto-stream-capability-open start stream parameters 'tls))))) + (let* ((capability-command (plist-get parameters :capability-command))) + (list stream + (network-stream-get-response stream start eoc) + (network-stream-command stream capability-command eoc) + 'tls)))))) -(defun proto-stream-open-shell (name buffer host service parameters) +(defun network-stream-open-shell (name buffer host service parameters) (require 'format-spec) - (proto-stream-capability-open - (with-current-buffer buffer (point)) - (let ((process-connection-type nil)) - (start-process name buffer shell-file-name - shell-command-switch - (format-spec - (plist-get parameters :shell-command) - (format-spec-make - ?s host - ?p service)))) - parameters 'plain)) - -(defun proto-stream-capability-open (start stream parameters stream-type) (let* ((capability-command (plist-get parameters :capability-command)) (eoc (plist-get parameters :end-of-command)) - (greeting (proto-stream-get-response stream start eoc))) - (list stream greeting - (and capability-command - (proto-stream-command stream capability-command eoc)) - stream-type))) + (start (with-current-buffer buffer (point))) + (stream (let ((process-connection-type nil)) + (start-process name buffer shell-file-name + shell-command-switch + (format-spec + (plist-get parameters :shell-command) + (format-spec-make + ?s host + ?p service)))))) + (list stream + (network-stream-get-response stream start eoc) + (network-stream-command stream capability-command eoc) + 'plain))) -(provide 'proto-stream) +(provide 'network-stream) -;;; proto-stream.el ends here +;;; network-stream.el ends here diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 5822fc3cf32..663c1ded9f1 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -4,7 +4,7 @@ ;; Author: Ryan Yeske <rcyeske@gmail.com> ;; Maintainers: Ryan Yeske <rcyeske@gmail.com>, -;; Deniz Dogan <deniz.a.m.dogan@gmail.com> +;; Deniz Dogan <deniz@dogan.se> ;; Keywords: comm ;; This file is part of GNU Emacs. @@ -900,7 +900,6 @@ IRC command completion is performed only if '/' is the first input char." (define-key map (kbd "C-c C-m") 'rcirc-cmd-msg) (define-key map (kbd "C-c C-r") 'rcirc-cmd-nick) ; rename (define-key map (kbd "C-c C-o") 'rcirc-omit-mode) - (define-key map (kbd "M-o") 'rcirc-omit-mode) (define-key map (kbd "C-c C-p") 'rcirc-cmd-part) (define-key map (kbd "C-c C-q") 'rcirc-cmd-query) (define-key map (kbd "C-c C-t") 'rcirc-cmd-topic) diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index a4c9b7fccba..58f2ee98f3c 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -440,10 +440,11 @@ This variable's value takes effect when `grep-compute-defaults' is called.") ;;;###autoload (defvar grep-find-use-xargs nil - "Non-nil means that `grep-find' uses the `xargs' utility by default. -If `exec', use `find -exec'. + "How to invoke find and grep. +If `exec', use `find -exec {} ;'. +If `exec-plus' use `find -exec {} +'. If `gnu', use `find -print0' and `xargs -0'. -Any other non-nil value means to use `find -print' and `xargs'. +Any other value means to use `find -print' and `xargs'. This variable's value takes effect when `grep-compute-defaults' is called.") @@ -561,6 +562,10 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'." (unless grep-find-use-xargs (setq grep-find-use-xargs (cond + ((grep-probe find-program + `(nil nil nil ,null-device "-exec" "echo" + "{}" "+")) + 'exec-plus) ((and (grep-probe find-program `(nil nil nil ,null-device "-print0")) (grep-probe xargs-program `(nil nil nil "-0" "-e" "echo"))) @@ -575,13 +580,17 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'." ;; forward slashes as directory separators. (format "%s . -type f -print0 | \"%s\" -0 -e %s" find-program xargs-program grep-command)) - ((eq grep-find-use-xargs 'exec) + ((memq grep-find-use-xargs '(exec exec-plus)) (let ((cmd0 (format "%s . -type f -exec %s" - find-program grep-command))) + find-program grep-command)) + (null (if grep-use-null-device + (format "%s " null-device) + ""))) (cons - (format "%s {} %s %s" - cmd0 null-device - (shell-quote-argument ";")) + (if (eq grep-find-use-xargs 'exec-plus) + (format "%s %s{} +" cmd0 null) + (format "%s {} %s%s" cmd0 null + (shell-quote-argument ";"))) (1+ (length cmd0))))) (t (format "%s . -type f -print | \"%s\" %s" @@ -589,14 +598,20 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'." (unless grep-find-template (setq grep-find-template (let ((gcmd (format "%s <C> %s <R>" - grep-program grep-options))) + grep-program grep-options)) + (null (if grep-use-null-device + (format "%s " null-device) + ""))) (cond ((eq grep-find-use-xargs 'gnu) (format "%s . <X> -type f <F> -print0 | \"%s\" -0 -e %s" find-program xargs-program gcmd)) ((eq grep-find-use-xargs 'exec) - (format "%s . <X> -type f <F> -exec %s {} %s %s" - find-program gcmd null-device + (format "%s . <X> -type f <F> -exec %s {} %s%s" + find-program gcmd null (shell-quote-argument ";"))) + ((eq grep-find-use-xargs 'exec-plus) + (format "%s . <X> -type f <F> -exec %s %s{} +" + find-program gcmd null)) (t (format "%s . <X> -type f <F> -print | \"%s\" %s" find-program xargs-program gcmd)))))))) diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el index 5b7e07a5aad..8066e1c3a7f 100644 --- a/lisp/progmodes/idlwave.el +++ b/lisp/progmodes/idlwave.el @@ -7068,10 +7068,9 @@ If these don't exist, a letter in the string is automatically selected." ;; No quick reply: Show help (save-window-excursion (with-output-to-temp-buffer "*Completions*" - (mapcar (lambda(x) - (princ (nth 1 x)) - (princ "\n")) - keys-alist)) + (dolist (x keys-alist) + (princ (nth 1 x)) + (princ "\n"))) (setq char (read-char))) (setq char (read-char))) (message nil) @@ -9313,13 +9312,11 @@ This function was written since `list-abbrevs' looks terrible for IDLWAVE mode." (princ "================================================\n\n") (princ (format fmt "KEY" "ACTION" "")) (princ (format fmt "---" "------" ""))) - (mapcar - (lambda (list) - (setq str (car list) - rpl (nth 1 list) - func (nth 2 list)) - (princ (format fmt str rpl func))) - abbrevs))) + (dolist (list abbrevs) + (setq str (car list) + rpl (nth 1 list) + func (nth 2 list)) + (princ (format fmt str rpl func))))) ;; Make sure each abbreviation uses only one display line (with-current-buffer "*Help*" (setq truncate-lines t))) diff --git a/lisp/startup.el b/lisp/startup.el index d2184778212..3285d47f088 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -906,7 +906,8 @@ opening the first frame (e.g. open a connection to an X server).") ;; spec, but mark it as changed outside of Customize. (let ((color (x-get-resource "cursorColor" "CursorColor"))) (when color - (face-spec-set 'cursor `((t (:background ,color)))) + (put 'cursor 'theme-face + `((changed ((t :background ,color))))) (put 'cursor 'face-modified t))))) (frame-initialize)) diff --git a/lisp/subr.el b/lisp/subr.el index e6e0c62e0b4..387d538b69d 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1792,28 +1792,6 @@ Signal an error if the program returns with a non-zero exit status." (forward-line 1)) (nreverse lines))))) -;; open-network-stream is a wrapper around make-network-process. - -(when (featurep 'make-network-process) - (defun open-network-stream (name buffer host service) - "Open a TCP connection for a service to a host. -Returns a subprocess-object to represent the connection. -Input and output work as for subprocesses; `delete-process' closes it. - -NAME is the name for the process. It is modified if necessary to make - it unique. -BUFFER is the buffer (or buffer name) to associate with the - process. Process output goes at end of that buffer. BUFFER may - be nil, meaning that this process is not associated with any buffer. -HOST is the name or IP address of the host to connect to. -SERVICE is the name of the service desired, or an integer specifying - a port number to connect to. - -This is a wrapper around `make-network-process', and only offers a -subset of its functionality." - (make-network-process :name name :buffer buffer - :host host :service service))) - ;; compatibility (make-obsolete diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el index 3c9a4570248..99c9a83e4fb 100644 --- a/lisp/textmodes/flyspell.el +++ b/lisp/textmodes/flyspell.el @@ -71,13 +71,23 @@ Detection of repeated words is not implemented in :type 'boolean) (defcustom flyspell-mark-duplications-exceptions - '(("francais" . ("nous" "vous"))) + '((nil . ("that" "had")) ; Common defaults for English. + ("\\`francais" . ("nous" "vous"))) "A list of exceptions for duplicated words. -It should be a list of (LANGUAGE . EXCEPTION-LIST). LANGUAGE is matched -against the current dictionary and EXCEPTION-LIST is a list of strings. -The duplicated word is downcased before it is compared with the exceptions." +It should be a list of (LANGUAGE . EXCEPTION-LIST). + +LANGUAGE is nil, which means the exceptions apply regardless of +the current dictionary, or a regular expression matching the +dictionary name (`ispell-local-dictionary' or +`ispell-dictionary') for which the exceptions should apply. + +EXCEPTION-LIST is a list of strings. The checked word is +downcased before comparing with these exceptions." :group 'flyspell - :type '(alist :key-type string :value-type (repeat string))) + :type '(alist :key-type (choice (const :tag "All dictionaries" nil) + string) + :value-type (repeat string)) + :version "24.1") (defcustom flyspell-sort-corrections nil "Non-nil means, sort the corrections alphabetically before popping them." @@ -1044,12 +1054,14 @@ misspelling and skips redundant spell-checking step." (not (memq (char-after (1- start)) '(?\} ?\\))))) flyspell-mark-duplications-flag (not (catch 'exception - (dolist (except flyspell-mark-duplications-exceptions) - (and (string= (or ispell-local-dictionary - ispell-dictionary) - (car except)) - (member (downcase word) (cdr except)) - (throw 'exception t))))) + (let ((dict (or ispell-local-dictionary + ispell-dictionary))) + (dolist (except flyspell-mark-duplications-exceptions) + (and (or (null (car except)) + (and (stringp dict) + (string-match (car except) dict))) + (member (downcase word) (cdr except)) + (throw 'exception t)))))) (save-excursion (goto-char start) (let* ((bound diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog index 3c7b8b6abe7..8299f6481ad 100644 --- a/lisp/url/ChangeLog +++ b/lisp/url/ChangeLog @@ -1,3 +1,13 @@ +2011-04-02 Chong Yidong <cyd@stupidchicken.com> + + * url-gw.el (url-open-stream): Use new open-network-stream + functionality to perform encryption. + +2011-04-01 Juanma Barranquero <lekktu@gmail.com> + + * url-cookie.el (url-cookie-handle-set-cookie): + Use `dolist' rather than `mapcar'. + 2011-02-12 Teodor Zlatanov <tzz@lifelogs.com> * url-parse.el (url-bit-for-url, url-user-for-url) @@ -14,7 +24,7 @@ move point if the callback function has moved changed/killed the process buffer. -2010-12-16 Miles Bader <Miles Bader <miles@gnu.org>> +2010-12-16 Miles Bader <miles@gnu.org> * url-cookie.el: Require 'cl when compiling -- it's necessary for defstruct. diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el index c55063dfba9..7fdd8b174c1 100644 --- a/lisp/url/url-cookie.el +++ b/lisp/url/url-cookie.el @@ -331,9 +331,8 @@ telling Microsoft that." (not trusted) (save-window-excursion (with-output-to-temp-buffer "*Cookie Warning*" - (mapcar - (lambda (x) - (princ (format "%s - %s" (car x) (cdr x)))) rest)) + (dolist (x rest) + (princ (format "%s - %s" (car x) (cdr x))))) (prog1 (not (funcall url-confirmation-func (format "Allow %s to set these cookies? " diff --git a/lisp/url/url-gw.el b/lisp/url/url-gw.el index 2ba23583528..7d80f2f6725 100644 --- a/lisp/url/url-gw.el +++ b/lisp/url/url-gw.el @@ -28,8 +28,6 @@ ;; Fixme: support SSH explicitly or via a url-gateway-rlogin-program? (autoload 'socks-open-network-stream "socks") -(autoload 'open-ssl-stream "ssl") -(autoload 'open-tls-stream "tls") (defgroup url-gateway nil "URL gateway variables." @@ -219,13 +217,6 @@ Might do a non-blocking connection; use `process-status' to check." host)) 'native url-gateway-method)) -;;; ;; This hack is for OS/2 Emacs so that it will not do bogus CRLF -;;; ;; conversions while trying to be 'helpful' -;;; (tcp-binary-process-output-services (if (stringp service) -;;; (list service) -;;; (list service -;;; (int-to-string service)))) - ;; An attempt to deal with denied connections, and attempt ;; to reconnect (cur-retries 0) @@ -243,19 +234,15 @@ Might do a non-blocking connection; use `process-status' to check." (let ((coding-system-for-read 'binary) (coding-system-for-write 'binary)) (setq conn (case gw-method - (tls - (funcall (if (fboundp 'open-gnutls-stream) - 'open-gnutls-stream - 'open-tls-stream) - name buffer host service)) - (ssl - (open-ssl-stream name buffer host service)) - ((native) - ;; Use non-blocking socket if we can. - (make-network-process :name name :buffer buffer - :host host :service service - :nowait - (featurep 'make-network-process '(:nowait t)))) + ((tls ssl native) + (if (eq gw-method 'native) + (setq gw-method 'plain)) + (open-network-stream + name buffer host service + :type gw-method + ;; Use non-blocking socket if we can. + :nowait (featurep 'make-network-process + '(:nowait t)))) (socks (socks-open-network-stream name buffer host service)) (telnet @@ -264,13 +251,7 @@ Might do a non-blocking connection; use `process-status' to check." (url-open-rlogin name buffer host service)) (otherwise (error "Bad setting of url-gateway-method: %s" - url-gateway-method))))) - ;; Ignoring errors here seems wrong. E.g. it'll throw away the - ;; error signaled two lines above. It was also found inconvenient - ;; during debugging. - ;; (error - ;; (setq conn nil)) - ) + url-gateway-method)))))) conn))) (provide 'url-gw) diff --git a/src/ChangeLog b/src/ChangeLog index 24161dbda1e..c7d14843bcd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,7 @@ 2011-04-05 Paul Eggert <eggert@cs.ucla.edu> + Fix more problems found by GCC 4.6.0's static checks. + * coding.c (EMIT_ONE_BYTE, EMIT_TWO_BYTES): Use unsigned, not int. This avoids several warnings with gcc -Wstrict-overflow. (DECODE_COMPOSITION_RULE): If the rule is invalid, goto invalid_code @@ -14,8 +16,6 @@ * composite.c (composition_gstring_put_cache): Use unsigned integer. -2011-04-04 Paul Eggert <eggert@cs.ucla.edu> - * composite.h, composite.c (composition_gstring_put_cache): Use EMACS_INT, not int, for length. @@ -53,8 +53,6 @@ * font.c (font_list_entities): Redo for clarity, so that reader need not know FONT_DPI_INDEX + 1 == FONT_SPACING_INDEX. -2011-04-03 Paul Eggert <eggert@cs.ucla.edu> - * font.c (font_find_for_lface, Ffont_get_glyphs): Remove unused vars. (font_score): Avoid potential overflow in diff calculation. @@ -79,8 +77,6 @@ * fileio.c (Finsert_file_contents): Make EOF condition clearer. -2011-04-02 Paul Eggert <eggert@cs.ucla.edu> - * fileio.c (Finsert_file_contents): Avoid signed integer overflow. (Finsert_file_contents): Remove unnecessary code checking fd. @@ -109,8 +105,6 @@ * xselect.c (x_get_local_selection, x_handle_property_notify): Remove vars that are set but not used. -2011-04-01 Paul Eggert <eggert@cs.ucla.edu> - * xfns.c (x_create_tip_frame): Remove var that is set but not used. (make_invisible_cursor): Initialize a possibly-uninitialized variable. @@ -149,6 +143,43 @@ * deps.mk (sysdep.o): Depend on ../lib/allocator.h and on ../lib/careadlinkat.h. +2011-04-04 Stefan Monnier <monnier@iro.umontreal.ca> + + * keyboard.c (safe_run_hook_funcall): Fix last change (don't stop at the + first non-nil return value). + +2011-04-03 Jan Djärv <jan.h.d@swipnet.se> + + * nsterm.m (ns_update_auto_hide_menu_bar): Define MAC_OS_X_VERSION_10_6 + if not defined (Bug#8403). + +2011-04-02 Juanma Barranquero <lekktu@gmail.com> + + * xdisp.c (display_count_lines): Remove parameter `start', + unused since 1998-01-01T02:27:27Z!rms@gnu.org. All callers changed. + (get_char_face_and_encoding): Remove parameter `multibyte_p', + unused since 2008-05-14T01:40:23Z!handa@m17n.org. All callers changed. + (fill_stretch_glyph_string): Remove parameters `row' and `area', + unused at least since Kim's GUI unification at 2003-03-16T20:45:46Z!storm@cua.dk + and thereabouts. All callers changed. + (get_per_char_metric): Remove parameter `f', unused since + 2008-05-14T01:40:23Z!handa@m17n.org. All callers changed. + +2011-04-02 Jim Meyering <meyering@redhat.com> + + do not dereference NULL upon failed strdup + * nsfont.m (ns_descriptor_to_entity): Use xstrdup, not strdup. + (ns_get_family): Likewise. + +2011-04-02 Juanma Barranquero <lekktu@gmail.com> + + * eval.c (unwind_to_catch) [DEBUG_GCPRO]: Remove redundant assignment. + +2011-04-02 Jan Djärv <jan.h.d@swipnet.se> + + * nsterm.m (ns_update_auto_hide_menu_bar): Only for OSX 10.6 or + later (Bug#8403). + 2011-04-01 Stefan Monnier <monnier@iro.umontreal.ca> Add lexical binding. diff --git a/src/eval.c b/src/eval.c index 25afe7677f7..d1a63a76767 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1297,7 +1297,7 @@ unwind_to_catch (struct catchtag *catch, Lisp_Object value) byte_stack_list = catch->byte_stack; gcprolist = catch->gcpro; #ifdef DEBUG_GCPRO - gcpro_level = gcprolist ? gcprolist->level + 1 : gcpro_level = 0; + gcpro_level = gcprolist ? gcprolist->level + 1 : 0; #endif backtrace_list = catch->backlist; lisp_eval_depth = catch->lisp_eval_depth; diff --git a/src/keyboard.c b/src/keyboard.c index f38c1c88a7e..ae4fddb2c89 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -1870,7 +1870,8 @@ safe_run_hook_funcall (size_t nargs, Lisp_Object *args) else Vinhibit_quit = Fcons (Vinhibit_quit, args[0]); - return internal_condition_case (safe_run_hooks_1, Qt, safe_run_hooks_error); + internal_condition_case (safe_run_hooks_1, Qt, safe_run_hooks_error); + return Qnil; } /* If we get an error while running the hook, cause the hook variable diff --git a/src/nsfont.m b/src/nsfont.m index 68cd19da70e..48d40223553 100644 --- a/src/nsfont.m +++ b/src/nsfont.m @@ -100,7 +100,7 @@ ns_get_family (Lisp_Object font_spec) return nil; else { - char *tmp = strdup (SDATA (SYMBOL_NAME (tem))); + char *tmp = xstrdup (SDATA (SYMBOL_NAME (tem))); NSString *family; ns_unescape_name (tmp); family = [NSString stringWithUTF8String: tmp]; @@ -176,7 +176,7 @@ ns_descriptor_to_entity (NSFontDescriptor *desc, if (family == nil) family = [[NSFont userFixedPitchFontOfSize: 0] familyName]; - escapedFamily = strdup ([family UTF8String]); + escapedFamily = xstrdup ([family UTF8String]); ns_escape_name (escapedFamily); ASET (font_entity, FONT_TYPE_INDEX, Qns); @@ -1526,4 +1526,3 @@ syms_of_nsfont (void) DEFVAR_LISP ("ns-reg-to-script", Vns_reg_to_script, doc: /* Internal use: maps font registry to unicode script. */); } - diff --git a/src/nsterm.m b/src/nsterm.m index 91f0cbba585..c4756dc83cd 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -583,6 +583,11 @@ ns_menu_bar_should_be_hidden (void) static void ns_update_auto_hide_menu_bar (void) { +#ifndef MAC_OS_X_VERSION_10_6 +#define MAC_OS_X_VERSION_10_6 1060 +#endif +#ifdef NS_IMPL_COCOA +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 BLOCK_INPUT; NSTRACE (ns_update_auto_hide_menu_bar); @@ -615,6 +620,8 @@ ns_update_auto_hide_menu_bar (void) } UNBLOCK_INPUT; +#endif +#endif } diff --git a/src/xdisp.c b/src/xdisp.c index 3c9d38536bb..e6a7f4254ef 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -824,8 +824,7 @@ static int display_mode_element (struct it *, int, int, int, Lisp_Object, Lisp_O static int store_mode_line_string (const char *, Lisp_Object, int, int, int, Lisp_Object); static const char *decode_mode_spec (struct window *, int, int, Lisp_Object *); static void display_menu_bar (struct window *); -static int display_count_lines (EMACS_INT, EMACS_INT, EMACS_INT, int, - EMACS_INT *); +static int display_count_lines (EMACS_INT, EMACS_INT, int, EMACS_INT *); static int display_string (const char *, Lisp_Object, Lisp_Object, EMACS_INT, EMACS_INT, struct it *, int, int, int, int); static void compute_line_metrics (struct it *); @@ -19481,7 +19480,7 @@ decode_mode_spec (struct window *w, register int c, int field_width, } /* Count lines from base line to window start position. */ - nlines = display_count_lines (linepos, linepos_byte, + nlines = display_count_lines (linepos_byte, startpos_byte, startpos, &junk); @@ -19510,7 +19509,7 @@ decode_mode_spec (struct window *w, register int c, int field_width, limit_byte = CHAR_TO_BYTE (limit); } - nlines = display_count_lines (startpos, startpos_byte, + nlines = display_count_lines (startpos_byte, limit_byte, - (height * 2 + 30), &position); @@ -19529,7 +19528,7 @@ decode_mode_spec (struct window *w, register int c, int field_width, } /* Now count lines from the start pos to point. */ - nlines = display_count_lines (startpos, startpos_byte, + nlines = display_count_lines (startpos_byte, PT_BYTE, PT, &junk); /* Record that we did display the line number. */ @@ -19699,14 +19698,14 @@ decode_mode_spec (struct window *w, register int c, int field_width, } -/* Count up to COUNT lines starting from START / START_BYTE. +/* Count up to COUNT lines starting from START_BYTE. But don't go beyond LIMIT_BYTE. Return the number of lines thus found (always nonnegative). Set *BYTE_POS_PTR to 1 if we found COUNT lines, 0 if we hit LIMIT. */ static int -display_count_lines (EMACS_INT start, EMACS_INT start_byte, +display_count_lines (EMACS_INT start_byte, EMACS_INT limit_byte, int count, EMACS_INT *byte_pos_ptr) { @@ -20470,16 +20469,15 @@ append_glyph_string (struct glyph_string **head, struct glyph_string **tail, } -/* Get face and two-byte form of character C in face FACE_ID on frame - F. The encoding of C is returned in *CHAR2B. MULTIBYTE_P non-zero - means we want to display multibyte text. DISPLAY_P non-zero means +/* Get face and two-byte form of character C in face FACE_ID on frame F. + The encoding of C is returned in *CHAR2B. DISPLAY_P non-zero means make sure that X resources for the face returned are allocated. Value is a pointer to a realized face that is ready for display if DISPLAY_P is non-zero. */ static INLINE struct face * get_char_face_and_encoding (struct frame *f, int c, int face_id, - XChar2b *char2b, int multibyte_p, int display_p) + XChar2b *char2b, int display_p) { struct face *face = FACE_FROM_ID (f, face_id); @@ -20599,7 +20597,7 @@ fill_composite_glyph_string (struct glyph_string *s, struct face *base_face, -1, Qnil); face = get_char_face_and_encoding (s->f, c, face_id, - s->char2b + i, 1, 1); + s->char2b + i, 1); if (face) { if (! s->face) @@ -20798,15 +20796,13 @@ fill_image_glyph_string (struct glyph_string *s) /* Fill glyph string S from a sequence of stretch glyphs. - ROW is the glyph row in which the glyphs are found, AREA is the - area within the row. START is the index of the first glyph to - consider, END is the index of the last + 1. + START is the index of the first glyph to consider, + END is the index of the last + 1. Value is the index of the first glyph not in S. */ static int -fill_stretch_glyph_string (struct glyph_string *s, struct glyph_row *row, - enum glyph_row_area area, int start, int end) +fill_stretch_glyph_string (struct glyph_string *s, int start, int end) { struct glyph *glyph, *last; int voffset, face_id; @@ -20840,7 +20836,7 @@ fill_stretch_glyph_string (struct glyph_string *s, struct glyph_row *row, } static struct font_metrics * -get_per_char_metric (struct frame *f, struct font *font, XChar2b *char2b) +get_per_char_metric (struct font *font, XChar2b *char2b) { static struct font_metrics metrics; unsigned code = (XCHAR2B_BYTE1 (char2b) << 8) | XCHAR2B_BYTE2 (char2b); @@ -20868,7 +20864,7 @@ x_get_glyph_overhangs (struct glyph *glyph, struct frame *f, int *left, int *rig struct font_metrics *pcm; face = get_glyph_face_and_encoding (f, glyph, &char2b, NULL); - if (face->font && (pcm = get_per_char_metric (f, face->font, &char2b))) + if (face->font && (pcm = get_per_char_metric (face->font, &char2b))) { if (pcm->rbearing > pcm->width) *right = pcm->rbearing - pcm->width; @@ -21102,7 +21098,7 @@ compute_overhangs_and_x (struct glyph_string *s, int x, int backward_p) { \ s = (struct glyph_string *) alloca (sizeof *s); \ INIT_GLYPH_STRING (s, NULL, w, row, area, START, HL); \ - START = fill_stretch_glyph_string (s, row, area, START, END); \ + START = fill_stretch_glyph_string (s, START, END); \ append_glyph_string (&HEAD, &TAIL, s); \ s->x = (X); \ } \ @@ -22475,7 +22471,7 @@ x_produce_glyphs (struct it *it) if (get_char_glyph_code (it->char_to_display, font, &char2b)) { - pcm = get_per_char_metric (it->f, font, &char2b); + pcm = get_per_char_metric (font, &char2b); if (pcm->width == 0 && pcm->rbearing == 0 && pcm->lbearing == 0) pcm = NULL; @@ -22777,8 +22773,8 @@ x_produce_glyphs (struct it *it) if (! font_not_found_p) { get_char_face_and_encoding (it->f, c, it->face_id, - &char2b, it->multibyte_p, 0); - pcm = get_per_char_metric (it->f, font, &char2b); + &char2b, 0); + pcm = get_per_char_metric (font, &char2b); } /* Initialize the bounding box. */ @@ -22838,8 +22834,8 @@ x_produce_glyphs (struct it *it) else { get_char_face_and_encoding (it->f, ch, face_id, - &char2b, it->multibyte_p, 0); - pcm = get_per_char_metric (it->f, font, &char2b); + &char2b, 0); + pcm = get_per_char_metric (font, &char2b); } if (! pcm) cmp->offsets[i * 2] = cmp->offsets[i * 2 + 1] = 0; |