------------------------------------------------------------ revno: 116755 fixes bug: http://debbugs.gnu.org/17001 committer: Glenn Morris branch nick: trunk timestamp: Thu 2014-03-13 20:32:41 -0400 message: Move some help functions from help-fns.el to help.el, which is preloaded. They are now needed by eg the function `documentation' in some circumstances. * lisp/help-fns.el (help-split-fundoc, help-add-fundoc-usage) (help-function-arglist, help-make-usage): Move from here... * lisp/help.el (help-split-fundoc, help-add-fundoc-usage) (help-function-arglist, help-make-usage): ... to here. * lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Do not load help-fns. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-14 00:22:33 +0000 +++ lisp/ChangeLog 2014-03-14 00:32:41 +0000 @@ -1,3 +1,11 @@ +2014-03-14 Glenn Morris + + * help-fns.el (help-split-fundoc, help-add-fundoc-usage) + (help-function-arglist, help-make-usage): Move from here... + * help.el (help-split-fundoc, help-add-fundoc-usage) + (help-function-arglist, help-make-usage): ... to here. (Bug#17001) + * emacs-lisp/bytecomp.el (byte-compile-lambda): Do not load help-fns. + 2014-03-14 Juanma Barranquero * net/socks.el (socks, socks-override-functions) === modified file 'lisp/emacs-lisp/bytecomp.el' --- lisp/emacs-lisp/bytecomp.el 2014-02-10 01:34:22 +0000 +++ lisp/emacs-lisp/bytecomp.el 2014-03-14 00:32:41 +0000 @@ -2706,7 +2706,6 @@ (cdr compiled) ;; optionally, the doc string. (cond (lexical-binding - (require 'help-fns) (list (help-add-fundoc-usage doc arglist))) ((or doc int) (list doc))) === modified file 'lisp/help-fns.el' --- lisp/help-fns.el 2014-02-10 01:34:22 +0000 +++ lisp/help-fns.el 2014-03-14 00:32:41 +0000 @@ -69,109 +69,6 @@ ;; Return the text we displayed. (buffer-string)))))) -(defun help-split-fundoc (docstring def) - "Split a function DOCSTRING into the actual doc and the usage info. -Return (USAGE . DOC) or nil if there's no usage info, where USAGE info -is a string describing the argument list of DEF, such as -\"(apply FUNCTION &rest ARGUMENTS)\". -DEF is the function whose usage we're looking for in DOCSTRING." - ;; Functions can get the calling sequence at the end of the doc string. - ;; In cases where `function' has been fset to a subr we can't search for - ;; function's name in the doc string so we use `fn' as the anonymous - ;; function name instead. - (when (and docstring (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring)) - (cons (format "(%s%s" - ;; Replace `fn' with the actual function name. - (if (symbolp def) def "anonymous") - (match-string 1 docstring)) - (unless (zerop (match-beginning 0)) - (substring docstring 0 (match-beginning 0)))))) - -;; FIXME: Move to subr.el? -(defun help-add-fundoc-usage (docstring arglist) - "Add the usage info to DOCSTRING. -If DOCSTRING already has a usage info, then just return it unchanged. -The usage info is built from ARGLIST. DOCSTRING can be nil. -ARGLIST can also be t or a string of the form \"(FUN ARG1 ARG2 ...)\"." - (unless (stringp docstring) (setq docstring "")) - (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring) - (eq arglist t)) - docstring - (concat docstring - (if (string-match "\n?\n\\'" docstring) - (if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "") - "\n\n") - (if (and (stringp arglist) - (string-match "\\`([^ ]+\\(.*\\))\\'" arglist)) - (concat "(fn" (match-string 1 arglist) ")") - (format "%S" (help-make-usage 'fn arglist)))))) - -;; FIXME: Move to subr.el? -(defun help-function-arglist (def &optional preserve-names) - "Return a formal argument list for the function DEF. -IF PRESERVE-NAMES is non-nil, return a formal arglist that uses -the same names as used in the original source code, when possible." - ;; Handle symbols aliased to other symbols. - (if (and (symbolp def) (fboundp def)) (setq def (indirect-function def))) - ;; If definition is a macro, find the function inside it. - (if (eq (car-safe def) 'macro) (setq def (cdr def))) - (cond - ((and (byte-code-function-p def) (listp (aref def 0))) (aref def 0)) - ((eq (car-safe def) 'lambda) (nth 1 def)) - ((eq (car-safe def) 'closure) (nth 2 def)) - ((or (and (byte-code-function-p def) (integerp (aref def 0))) - (subrp def)) - (or (when preserve-names - (let* ((doc (condition-case nil (documentation def) (error nil))) - (docargs (if doc (car (help-split-fundoc doc nil)))) - (arglist (if docargs - (cdar (read-from-string (downcase docargs))))) - (valid t)) - ;; Check validity. - (dolist (arg arglist) - (unless (and (symbolp arg) - (let ((name (symbol-name arg))) - (if (eq (aref name 0) ?&) - (memq arg '(&rest &optional)) - (not (string-match "\\." name))))) - (setq valid nil))) - (when valid arglist))) - (let* ((args-desc (if (not (subrp def)) - (aref def 0) - (let ((a (subr-arity def))) - (logior (car a) - (if (numberp (cdr a)) - (lsh (cdr a) 8) - (lsh 1 7)))))) - (max (lsh args-desc -8)) - (min (logand args-desc 127)) - (rest (logand args-desc 128)) - (arglist ())) - (dotimes (i min) - (push (intern (concat "arg" (number-to-string (1+ i)))) arglist)) - (when (> max min) - (push '&optional arglist) - (dotimes (i (- max min)) - (push (intern (concat "arg" (number-to-string (+ 1 i min)))) - arglist))) - (unless (zerop rest) (push '&rest arglist) (push 'rest arglist)) - (nreverse arglist)))) - ((and (autoloadp def) (not (eq (nth 4 def) 'keymap))) - "[Arg list not available until function definition is loaded.]") - (t t))) - -;; FIXME: Move to subr.el? -(defun help-make-usage (function arglist) - (cons (if (symbolp function) function 'anonymous) - (mapcar (lambda (arg) - (if (not (symbolp arg)) arg - (let ((name (symbol-name arg))) - (cond - ((string-match "\\`&" name) arg) - ((string-match "\\`_" name) - (intern (upcase (substring name 1)))) - (t (intern (upcase name))))))) - arglist))) ;; Could be this, if we make symbol-file do the work below. ;; (defun help-C-file-name (subr-or-var kind) === modified file 'lisp/help.el' --- lisp/help.el 2014-02-28 09:10:55 +0000 +++ lisp/help.el 2014-03-14 00:32:41 +0000 @@ -1222,6 +1222,113 @@ (if (stringp msg) (with-output-to-temp-buffer " *Char Help*" (princ msg))))) + + +;; The following functions used to be in help-fns.el, which is not preloaded. +;; But for various reasons, they are more widely needed, so they were +;; moved to this file, which is preloaded. http://debbugs.gnu.org/17001 + +(defun help-split-fundoc (docstring def) + "Split a function DOCSTRING into the actual doc and the usage info. +Return (USAGE . DOC) or nil if there's no usage info, where USAGE info +is a string describing the argument list of DEF, such as +\"(apply FUNCTION &rest ARGUMENTS)\". +DEF is the function whose usage we're looking for in DOCSTRING." + ;; Functions can get the calling sequence at the end of the doc string. + ;; In cases where `function' has been fset to a subr we can't search for + ;; function's name in the doc string so we use `fn' as the anonymous + ;; function name instead. + (when (and docstring (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring)) + (cons (format "(%s%s" + ;; Replace `fn' with the actual function name. + (if (symbolp def) def "anonymous") + (match-string 1 docstring)) + (unless (zerop (match-beginning 0)) + (substring docstring 0 (match-beginning 0)))))) + +(defun help-add-fundoc-usage (docstring arglist) + "Add the usage info to DOCSTRING. +If DOCSTRING already has a usage info, then just return it unchanged. +The usage info is built from ARGLIST. DOCSTRING can be nil. +ARGLIST can also be t or a string of the form \"(FUN ARG1 ARG2 ...)\"." + (unless (stringp docstring) (setq docstring "")) + (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" docstring) + (eq arglist t)) + docstring + (concat docstring + (if (string-match "\n?\n\\'" docstring) + (if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "") + "\n\n") + (if (and (stringp arglist) + (string-match "\\`([^ ]+\\(.*\\))\\'" arglist)) + (concat "(fn" (match-string 1 arglist) ")") + (format "%S" (help-make-usage 'fn arglist)))))) + +(defun help-function-arglist (def &optional preserve-names) + "Return a formal argument list for the function DEF. +IF PRESERVE-NAMES is non-nil, return a formal arglist that uses +the same names as used in the original source code, when possible." + ;; Handle symbols aliased to other symbols. + (if (and (symbolp def) (fboundp def)) (setq def (indirect-function def))) + ;; If definition is a macro, find the function inside it. + (if (eq (car-safe def) 'macro) (setq def (cdr def))) + (cond + ((and (byte-code-function-p def) (listp (aref def 0))) (aref def 0)) + ((eq (car-safe def) 'lambda) (nth 1 def)) + ((eq (car-safe def) 'closure) (nth 2 def)) + ((or (and (byte-code-function-p def) (integerp (aref def 0))) + (subrp def)) + (or (when preserve-names + (let* ((doc (condition-case nil (documentation def) (error nil))) + (docargs (if doc (car (help-split-fundoc doc nil)))) + (arglist (if docargs + (cdar (read-from-string (downcase docargs))))) + (valid t)) + ;; Check validity. + (dolist (arg arglist) + (unless (and (symbolp arg) + (let ((name (symbol-name arg))) + (if (eq (aref name 0) ?&) + (memq arg '(&rest &optional)) + (not (string-match "\\." name))))) + (setq valid nil))) + (when valid arglist))) + (let* ((args-desc (if (not (subrp def)) + (aref def 0) + (let ((a (subr-arity def))) + (logior (car a) + (if (numberp (cdr a)) + (lsh (cdr a) 8) + (lsh 1 7)))))) + (max (lsh args-desc -8)) + (min (logand args-desc 127)) + (rest (logand args-desc 128)) + (arglist ())) + (dotimes (i min) + (push (intern (concat "arg" (number-to-string (1+ i)))) arglist)) + (when (> max min) + (push '&optional arglist) + (dotimes (i (- max min)) + (push (intern (concat "arg" (number-to-string (+ 1 i min)))) + arglist))) + (unless (zerop rest) (push '&rest arglist) (push 'rest arglist)) + (nreverse arglist)))) + ((and (autoloadp def) (not (eq (nth 4 def) 'keymap))) + "[Arg list not available until function definition is loaded.]") + (t t))) + +(defun help-make-usage (function arglist) + (cons (if (symbolp function) function 'anonymous) + (mapcar (lambda (arg) + (if (not (symbolp arg)) arg + (let ((name (symbol-name arg))) + (cond + ((string-match "\\`&" name) arg) + ((string-match "\\`_" name) + (intern (upcase (substring name 1)))) + (t (intern (upcase name))))))) + arglist))) + (provide 'help) ------------------------------------------------------------ revno: 116754 committer: Juanma Barranquero branch nick: trunk timestamp: Fri 2014-03-14 01:22:33 +0100 message: lisp/net/*.el, lisp/progmodes/*.el: Fix docstring typos. * net/socks.el (socks, socks-override-functions) (socks-find-services-entry): FT * progmodes/hideif.el (hif-set-var, hif-nexttoken, hif-comma) (hif-find-ifdef-block): * progmodes/modula2.el (m2-indent): Fix docstring typos. * net/tls.el (tls-program): Reflow docstring. * progmodes/opascal.el (opascal-compound-block-indent) (opascal-case-label-indent): Fix docstring typos. (opascal-mode): Fix typos; let defined-derived-mode document mode hook. * progmodes/pascal.el (pascal-mode-abbrev-table) (pascal-imenu-generic-expression, pascal-auto-endcomments) (pascal-mark-defun, pascal-comment-area, pascal-indent-level) (pascal-outline-mode): Fix docstring typos. (pascal-mode): Let define-derived-mode document mode hook. (pascal-uncomment-area): Reflow. (pascal-exclude-str-start, pascal-exclude-str-end): Add docstring. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-13 13:37:27 +0000 +++ lisp/ChangeLog 2014-03-14 00:22:33 +0000 @@ -1,3 +1,25 @@ +2014-03-14 Juanma Barranquero + + * net/socks.el (socks, socks-override-functions) + (socks-find-services-entry): FT + * progmodes/hideif.el (hif-set-var, hif-nexttoken, hif-comma) + (hif-find-ifdef-block): + * progmodes/modula2.el (m2-indent): Fix docstring typos. + + * net/tls.el (tls-program): Reflow docstring. + + * progmodes/pascal.el (pascal-mode-abbrev-table) + (pascal-imenu-generic-expression, pascal-auto-endcomments) + (pascal-mark-defun, pascal-comment-area, pascal-indent-level) + (pascal-outline-mode): Fix docstring typos. + (pascal-mode): Let define-derived-mode document mode hook. + (pascal-uncomment-area): Reflow. + (pascal-exclude-str-start, pascal-exclude-str-end): Add docstring. + + * progmodes/opascal.el (opascal-compound-block-indent) + (opascal-case-label-indent): Fix docstring typos. + (opascal-mode): Fix typos; let defined-derived-mode document mode hook. + 2014-03-13 Dmitry Gutov * progmodes/ruby-mode.el (ruby-font-lock-keywords): Fontify === modified file 'lisp/net/socks.el' --- lisp/net/socks.el 2014-01-01 07:43:34 +0000 +++ lisp/net/socks.el 2014-03-14 00:22:33 +0000 @@ -102,7 +102,7 @@ ;;; Customization support ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defgroup socks nil - "SOCKS Support" + "SOCKS support." :version "22.2" :prefix "socks-" :group 'processes) @@ -347,7 +347,7 @@ ;; could get a wrapper hook, or defer to open-network-stream-function. (defvar socks-override-functions nil - "Whether to overwrite the open-network-stream function with the SOCKSified + "Whether to overwrite the `open-network-stream' function with the SOCKSified version.") (require 'network-stream) @@ -533,7 +533,7 @@ socks-tcp-services)))))) (defun socks-find-services-entry (service &optional udp) - "Return the port # associated with SERVICE" + "Return the port # associated with SERVICE." (if (= (hash-table-count socks-tcp-services) 0) (socks-parse-services)) (gethash (downcase service) === modified file 'lisp/net/tls.el' --- lisp/net/tls.el 2014-01-01 07:43:34 +0000 +++ lisp/net/tls.el 2014-03-14 00:22:33 +0000 @@ -80,8 +80,7 @@ "List of strings containing commands to start TLS stream to a host. Each entry in the list is tried until a connection is successful. %h is replaced with server hostname, %p with port to connect to. -The program should read input on stdin and write output to -stdout. +The program should read input on stdin and write output to stdout. See `tls-checktrust' on how to check trusted root certs. === modified file 'lisp/progmodes/hideif.el' --- lisp/progmodes/hideif.el 2014-02-10 01:34:22 +0000 +++ lisp/progmodes/hideif.el 2014-03-14 00:22:33 +0000 @@ -327,7 +327,7 @@ (defun hif-set-var (var value) - "Prepend (var value) pair to hide-ifdef-env." + "Prepend (var value) pair to `hide-ifdef-env'." (setq hide-ifdef-env (cons (cons var value) hide-ifdef-env))) (declare-function semantic-c-hideif-lookup "semantic/bovine/c" (var)) @@ -479,7 +479,7 @@ ;; | Comma | , | left-to-right | (defsubst hif-nexttoken () - "Pop the next token from token-list into the let variable \"hif-token\"." + "Pop the next token from token-list into the let variable `hif-token'." (setq hif-token (pop hif-token-list))) (defun hif-parse-if-exp (token-list) @@ -712,7 +712,7 @@ (defun hif-comma (&rest expr) - "Evaluate a list of expr, return the result of the last item" + "Evaluate a list of expr, return the result of the last item." (let ((result nil)) (dolist (e expr) (ignore-errors @@ -1118,7 +1118,7 @@ (defun hif-find-ifdef-block () - "Utility for hide and show `ifdef-block'. + "Utility to hide and show ifdef block. Return as (TOP . BOTTOM) the extent of ifdef block." (let (max-bottom) (cons (save-excursion === modified file 'lisp/progmodes/modula2.el' --- lisp/progmodes/modula2.el 2014-02-10 01:34:22 +0000 +++ lisp/progmodes/modula2.el 2014-03-14 00:22:33 +0000 @@ -104,7 +104,7 @@ "Keymap used in Modula-2 mode.") (defcustom m2-indent 5 - "This variable gives the indentation in Modula-2-Mode." + "This variable gives the indentation in Modula-2 mode." :type 'integer :group 'modula2) (put 'm2-indent 'safe-local-variable === modified file 'lisp/progmodes/opascal.el' --- lisp/progmodes/opascal.el 2014-01-26 03:39:34 +0000 +++ lisp/progmodes/opascal.el 2014-03-14 00:22:33 +0000 @@ -73,7 +73,7 @@ (define-obsolete-variable-alias 'delphi-compound-block-indent 'opascal-compound-block-indent "24.4") (defcustom opascal-compound-block-indent 0 - "Extra indentation for blocks in compound statements. E.g. + "Extra indentation for blocks in compound statements. E.g. // block indent = 0 vs // block indent = 2 if b then if b then @@ -87,7 +87,7 @@ (define-obsolete-variable-alias 'delphi-case-label-indent 'opascal-case-label-indent "24.4") (defcustom opascal-case-label-indent opascal-indent-level - "Extra indentation for case statement labels. E.g. + "Extra indentation for case statement labels. E.g. // case indent = 0 vs // case indent = 3 case value of case value of @@ -1744,7 +1744,7 @@ (define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4") ;;;###autoload (define-derived-mode opascal-mode prog-mode "OPascal" - "Major mode for editing OPascal code. \\ + "Major mode for editing OPascal code.\\ \\[opascal-find-unit]\t- Search for a OPascal source file. \\[opascal-fill-comment]\t- Fill the current comment. \\[opascal-new-comment-line]\t- If in a // comment, do a new comment line. @@ -1766,11 +1766,8 @@ Coloring: - `opascal-keyword-face' (default font-lock-keyword-face) - Face used to color OPascal keywords. - -Turning on OPascal mode calls the value of the variable `opascal-mode-hook' -with no args, if that value is non-nil." + `opascal-keyword-face' (default `font-lock-keyword-face') + Face used to color OPascal keywords." ;; Buffer locals: (setq-local indent-line-function #'opascal-indent-line) === modified file 'lisp/progmodes/pascal.el' --- lisp/progmodes/pascal.el 2014-01-01 07:43:34 +0000 +++ lisp/progmodes/pascal.el 2014-03-14 00:22:33 +0000 @@ -64,7 +64,7 @@ :group 'languages) (defvar pascal-mode-abbrev-table nil - "Abbrev table in use in Pascal-mode buffers.") + "Abbrev table in use in Pascal mode buffers.") (define-abbrev-table 'pascal-mode-abbrev-table ()) (defvar pascal-mode-map @@ -99,7 +99,7 @@ (defvar pascal-imenu-generic-expression '((nil "^[ \t]*\\(function\\|procedure\\)[ \t\n]+\\([a-zA-Z0-9_.:]+\\)" 2)) - "Imenu expression for Pascal-mode. See `imenu-generic-expression'.") + "Imenu expression for Pascal mode. See `imenu-generic-expression'.") (defvar pascal-keywords '("and" "array" "begin" "case" "const" "div" "do" "downto" "else" "end" @@ -126,8 +126,10 @@ "\\<\\(label\\|var\\|type\\|const\\|until\\|end\\|begin\\|repeat\\|else\\)\\>") ;;; Strings used to mark beginning and end of excluded text -(defconst pascal-exclude-str-start "{-----\\/----- EXCLUDED -----\\/-----") -(defconst pascal-exclude-str-end " -----/\\----- EXCLUDED -----/\\-----}") +(defconst pascal-exclude-str-start "{-----\\/----- EXCLUDED -----\\/-----" + "String used to mark beginning of excluded text.") +(defconst pascal-exclude-str-end " -----/\\----- EXCLUDED -----/\\-----}" + "String used to mark end of excluded text.") (defvar pascal-mode-syntax-table (let ((st (make-syntax-table))) @@ -227,7 +229,7 @@ (defcustom pascal-auto-endcomments t "Non-nil means automatically insert comments after certain `end's. -Specifically, this is done after the ends of cases statements and functions. +Specifically, this is done after the ends of case statements and functions. The name of the function or case is included between the braces." :type 'boolean :group 'pascal) @@ -314,7 +316,7 @@ ;;;###autoload (define-derived-mode pascal-mode prog-mode "Pascal" - "Major mode for editing Pascal code. \\ + "Major mode for editing Pascal code.\\ TAB indents for Pascal code. Delete converts tabs to spaces as it moves back. \\[completion-at-point] completes the word around current point with respect \ @@ -355,10 +357,7 @@ List of contexts where auto lineup of :'s or ='s should be done. See also the user variables `pascal-type-keywords', `pascal-start-keywords' and -`pascal-separator-keywords'. - -Turning on Pascal mode calls the value of the variable pascal-mode-hook with -no args, if that value is non-nil." +`pascal-separator-keywords'." (setq-local local-abbrev-table pascal-mode-abbrev-table) (setq-local indent-line-function 'pascal-indent-line) (setq-local comment-indent-function 'pascal-indent-comment) @@ -507,7 +506,7 @@ (insert " ")) (defun pascal-mark-defun () - "Mark the current pascal function (or procedure). + "Mark the current Pascal function (or procedure). This puts the mark at the end, and point at the beginning." (interactive) (push-mark (point)) @@ -518,14 +517,14 @@ (zmacs-activate-region))) (defun pascal-comment-area (start end) - "Put the region into a Pascal comment. + "Put the region into a Pascal comment.\\ The comments that are in this area are \"deformed\": `*)' becomes `!(*' and `}' becomes `!{'. These deformed comments are returned to normal if you use \\[pascal-uncomment-area] to undo the commenting. -The commented area starts with `pascal-exclude-str-start', and ends with -`pascal-include-str-end'. But if you change these variables, +The commented area starts with `pascal-exclude-str-start', and ends +with `pascal-exclude-str-end'. But if you change these variables, \\[pascal-uncomment-area] won't recognize the comments." (interactive "r") (save-excursion @@ -553,8 +552,8 @@ (defun pascal-uncomment-area () "Uncomment a commented area; change deformed comments back to normal. -This command does nothing if the pointer is not in a commented -area. See also `pascal-comment-area'." +This command does nothing if the pointer is not in a commented area. +See also `pascal-comment-area'." (interactive) (save-excursion (let ((start (point)) @@ -938,7 +937,7 @@ (defun pascal-indent-level () "Return the indent-level the current statement has. -Do not count labels, case-statements or records." +Do not count labels, case statements or records." (save-excursion (beginning-of-line) (if (looking-at "[ \t]*[0-9a-zA-Z]+[ \t]*:[^=]") @@ -995,7 +994,7 @@ (defun pascal-indent-paramlist (&optional arg) "Indent current line in parameterlist. -If optional arg is non-nil, just return the +If optional ARG is non-nil, just return the indent of the current line in parameterlist." (save-excursion (let* ((oldpos (point)) @@ -1414,7 +1413,7 @@ if ARG is omitted or nil. When enabled, portions of the text being edited may be made -invisible. \\ +invisible.\\ Pascal Outline mode provides some additional commands. @@ -1428,7 +1427,7 @@ \\[pascal-show-all]\t- Show the whole buffer. \\[pascal-hide-other-defuns]\ \t- Hide everything but the current function (function under the cursor). -\\[pascal-outline]\t- Leave pascal-outline-mode." +\\[pascal-outline]\t- Leave Pascal Outline mode." :init-value nil :lighter " Outl" :keymap pascal-outline-map (add-to-invisibility-spec '(pascal . t)) (unless pascal-outline-mode ------------------------------------------------------------ revno: 116753 fixes bug: http://debbugs.gnu.org/17004 committer: Dmitry Gutov branch nick: trunk timestamp: Thu 2014-03-13 15:37:27 +0200 message: * lisp/progmodes/ruby-mode.el (ruby-font-lock-keywords): Fontify multiple adjacent negation chars. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-13 13:34:01 +0000 +++ lisp/ChangeLog 2014-03-13 13:37:27 +0000 @@ -1,3 +1,8 @@ +2014-03-13 Dmitry Gutov + + * progmodes/ruby-mode.el (ruby-font-lock-keywords): Fontify + multiple adjacent negation chars. (Bug#17004) + 2014-03-13 Tom Willemse (tiny change) * emacs-lisp/package.el (package--prepare-dependencies): === modified file 'lisp/progmodes/ruby-mode.el' --- lisp/progmodes/ruby-mode.el 2014-03-01 22:04:59 +0000 +++ lisp/progmodes/ruby-mode.el 2014-03-13 13:37:27 +0000 @@ -2127,7 +2127,7 @@ (ruby-match-expression-expansion 2 font-lock-variable-name-face t) ;; Negation char. - ("[^[:alnum:]_]\\(!\\)[^=]" + ("\\(?:^\\|[^[:alnum:]_]\\)\\(!+\\)[^=]" 1 font-lock-negation-char-face) ;; Character literals. ;; FIXME: Support longer escape sequences. ------------------------------------------------------------ revno: 116752 fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14941 author: Tom Willemse committer: Stefan Monnier branch nick: trunk timestamp: Thu 2014-03-13 09:34:01 -0400 message: * lisp/emacs-lisp/package.el (package--prepare-dependencies): Accept requirements without explicit version. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-12 21:16:34 +0000 +++ lisp/ChangeLog 2014-03-13 13:34:01 +0000 @@ -1,3 +1,8 @@ +2014-03-13 Tom Willemse (tiny change) + + * emacs-lisp/package.el (package--prepare-dependencies): + Accept requirements without explicit version (bug#14941). + 2014-03-12 Juanma Barranquero * register.el (register-separator, copy-to-register): Doc fixes. === modified file 'lisp/emacs-lisp/package.el' --- lisp/emacs-lisp/package.el 2014-02-12 01:20:34 +0000 +++ lisp/emacs-lisp/package.el 2014-03-13 13:34:01 +0000 @@ -1128,6 +1128,8 @@ ((symbolp dep) `(,dep "0")) ((stringp dep) (error "Invalid requirement specifier: %S" dep)) + ((and (listp dep) (null (cdr dep))) + (list (car dep) "0")) (t dep))) deps)))) ------------------------------------------------------------ revno: 116751 committer: Paul Eggert branch nick: trunk timestamp: Wed 2014-03-12 22:27:28 -0700 message: * mule.texi (International, Language Environments): Update the list of language environments to what Emacs currently supports. Add the full list to the index. Suggest C-h L for details rather than trying to give very brief details here. diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2014-03-12 21:00:36 +0000 +++ doc/emacs/ChangeLog 2014-03-13 05:27:28 +0000 @@ -1,3 +1,10 @@ +2014-03-13 Paul Eggert + + * mule.texi (International, Language Environments): Update + the list of language environments to what Emacs currently + supports. Add the full list to the index. Suggest C-h L for + details rather than trying to give very brief details here. + 2014-03-12 Glenn Morris * cmdargs.texi (General Variables): Don't mention INCPATH, === modified file 'doc/emacs/mule.texi' --- doc/emacs/mule.texi 2014-03-12 07:03:40 +0000 +++ doc/emacs/mule.texi 2014-03-13 05:27:28 +0000 @@ -9,37 +9,29 @@ @cindex multibyte characters @cindex encoding of characters -@cindex Celtic +@cindex Arabic +@cindex Bengali @cindex Chinese @cindex Cyrillic -@cindex Czech -@cindex Devanagari +@cindex Han @cindex Hindi -@cindex Marathi @cindex Ethiopic -@cindex German +@cindex Georgian @cindex Greek +@cindex Hangul @cindex Hebrew +@cindex Hindi @cindex IPA @cindex Japanese @cindex Korean -@cindex Lao @cindex Latin -@cindex Polish -@cindex Romanian -@cindex Slovak -@cindex Slovenian @cindex Thai -@cindex Tibetan -@cindex Turkish @cindex Vietnamese -@cindex Dutch -@cindex Spanish Emacs supports a wide variety of international character sets, including European and Vietnamese variants of the Latin alphabet, as -well as Cyrillic, Devanagari (for Hindi and Marathi), Ethiopic, Greek, -Han (for Chinese and Japanese), Hangul (for Korean), Hebrew, IPA, -Kannada, Lao, Malayalam, Tamil, Thai, Tibetan, and Vietnamese scripts. +well as Arabic scripts, Brahmic scripts (for languages such as +Bengali, Hindi, and Thai), Cyrillic, Ethiopic, Georgian, Greek, Han +(for Chinese and Japanese), Hangul (for Korean), Hebrew and IPA@. Emacs also supports various encodings of these characters that are used by other internationalized software, such as word processors and mailers. @@ -267,25 +259,129 @@ @code{current-language-environment} or use the command @kbd{M-x set-language-environment}. It makes no difference which buffer is current when you use this command, because the effects apply globally -to the Emacs session. The supported language environments -(see the variable @code{language-info-alist}) include: +to the Emacs session. See the variable @code{language-info-alist} for +the list of supported language environments, and use the command +@kbd{C-h L @var{lang-env} @key{RET}} (@code{describe-language-environment}) +for more information about the language environment @var{lang-env}. +Supported language environments include: -@cindex Euro sign +@quotation +@cindex ASCII +ASCII, +@cindex Arabic +Arabic, +@cindex Belarusian +Belarusian, +@cindex Bengali +Bengali, +@cindex Brazilian Portuguese +Brazilian Portuguese, +@cindex Bulgarian +Bulgarian, +@cindex Burmese +Burmese, +@cindex Cham +Cham, +@cindex Chinese +Chinese-BIG5, Chinese-CNS, Chinese-EUC-TW, Chinese-GB, +Chinese-GB18030, Chinese-GBK, +@cindex Croatian +Croatian, +@cindex Cyrillic +Cyrillic-ALT, Cyrillic-ISO, Cyrillic-KOI8, +@cindex Czech +Czech, +@cindex Devanagari +Devanagari, +@cindex Dutch +Dutch, +@cindex English +English, +@cindex Esperanto +Esperanto, +@cindex Ethiopic +Ethiopic, +@cindex French +French, +@cindex Georgian +Georgian, +@cindex German +German, +@cindex Greek +Greek, +@cindex Gujarati +Gujarati, +@cindex Hebrew +Hebrew, +@cindex IPA +IPA, +@cindex Italian +Italian, +@cindex Japanese +Japanese, +@cindex Kannada +Kannada, +@cindex Khmer +Khmer, +@cindex Korean +Korean, +@cindex Lao +Lao, +@cindex Latin +Latin-1, Latin-2, Latin-3, Latin-4, Latin-5, Latin-6, Latin-7, +Latin-8, Latin-9, +@cindex Latvian +Latvian, +@cindex Lithuanian +Lithuanian, +@cindex Malayalam +Malayalam, +@cindex Oriya +Oriya, +@cindex Persian +Persian, +@cindex Polish +Polish, +@cindex Punjabi +Punjabi, +@cindex Romanian +Romanian, +@cindex Russian +Russian, +@cindex Sinhala +Sinhala, +@cindex Slovak +Slovak, +@cindex Slovenian +Slovenian, +@cindex Spanish +Spanish, +@cindex Swedish +Swedish, +@cindex TaiViet +TaiViet, +@cindex Tajik +Tajik, +@cindex Tamil +Tamil, +@cindex Telugu +Telugu, +@cindex Thai +Thai, +@cindex Tibetan +Tibetan, +@cindex Turkish +Turkish, @cindex UTF-8 -@quotation -ASCII, Belarusian, Bengali, Brazilian Portuguese, Bulgarian, Cham, -Chinese-BIG5, Chinese-CNS, Chinese-EUC-TW, Chinese-GB, Chinese-GBK, -Chinese-GB18030, Croatian, Cyrillic-ALT, Cyrillic-ISO, Cyrillic-KOI8, -Czech, Devanagari, Dutch, English, Esperanto, Ethiopic, French, -Georgian, German, Greek, Gujarati, Hebrew, IPA, Italian, Japanese, -Kannada, Khmer, Korean, Lao, Latin-1, Latin-2, Latin-3, Latin-4, -Latin-5, Latin-6, Latin-7, Latin-8 (Celtic), Latin-9 (updated Latin-1 -with the Euro sign), Latvian, Lithuanian, Malayalam, Oriya, Polish, -Punjabi, Romanian, Russian, Sinhala, Slovak, Slovenian, Spanish, -Swedish, TaiViet, Tajik, Tamil, Telugu, Thai, Tibetan, Turkish, UTF-8 -(for a setup which prefers Unicode characters and files encoded in -UTF-8), Ukrainian, Vietnamese, Welsh, and Windows-1255 (for a setup -which prefers Cyrillic characters and files encoded in Windows-1255). +UTF-8, +@cindex Ukrainian +Ukrainian, +@cindex Vietnamese +Vietnamese, +@cindex Welsh +Welsh, and +@cindex Windows-1255 +Windows-1255. @end quotation To display the script(s) used by your language environment on a