the rationale for a change; that can be done in the commit message
between the summary line and the file entries.
-** Changelog notes
+** ChangeLog notes
- Emacs generally follows the GNU coding standards when it comes to
ChangeLogs:
now), because `...' is so widely used elsewhere in Emacs.
- Some of the rules in the GNU coding standards section 5.2
- "Commenting Your Work" also apply to Changelog entries: they must be
+ "Commenting Your Work" also apply to ChangeLog entries: they must be
in English, and be complete sentences starting with a capital and
ending with a period (except the summary line should not end in a
period).
+2014-12-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * build-aux/git-hooks/commit-msg: Allow tabs.
+ Treat them as if they were expanded to spaces, with tab stops
+ every 8 columns.
+
2014-12-27 Paul Eggert <eggert@cs.ucla.edu>
* .gitignore: Ignore /conftest*.
status = 1
}
+ {
+ # Expand tabs to spaces for length calculations etc.
+ while (match($0, /\t/)) {
+ before_tab = substr($0, 1, RSTART - 1)
+ after_tab = substr($0, RSTART + 1)
+ $0 = sprintf("%s%*s%s", before_tab, 8 - (RSTART - 1) % 8, "", after_tab)
+ }
+ }
+
78 < length && $0 ~ space {
print "Line longer than 78 characters in commit message"
status = 1
}
$0 ~ non_print {
- if (gsub(/\t/, "")) {
- print "Tab in commit message; please use spaces instead"
- }
- if ($0 ~ non_print) {
- print "Unprintable character in commit message"
- }
+ print "Unprintable character in commit message"
status = 1
}
alias for a private variable. `xref-push-marker-stack' and
`xref-pop-marker-stack' should be used to mutate it instead.
+** etags
+As a result of the above, these commands are now obsolete:
+`find-tag-other-window', `find-tag-other-frame', `find-tag-regexp',
+`tags-apropos' and `tags-loop-continue'.
+
** Obsolete packages
---
* GNU grep 2.5.1 on lines starting with a number and colon
-grep -nH -e "Universal Time" ../lispref/*
+grep -nH --color=always -e "Universal Time" ../doc/lispref/*
../lispref/os.texi:1010:0:00 January 1, 1970 UTC (Coordinated \e[01;31mUniversal Time\e[00m)
* GNU grep 2.5.1 with context lines
\e[35mlisp/org/org.el\e[1;36m:\e[0m21047\e[1;36m:\e[0m (\e[1;31morg-element-map\e[0m
* git-grep
- with `[diff "el"] xfuncname = "^(\\(.*)$"' in .gitconfig
- and `*.el diff=el' in .gitattributes
+ with `[diff "lisp"] xfuncname = "^(\\(.*)$"' in .gitconfig
+ and `*.el diff=lisp' in .gitattributes
git --no-pager grep -inH -p -e "org-element-map"
lisp/org/org.el\e[36m=\e[m20969\e[36m=\e[m(defun org-fill-paragraph (&optional justify)
* international/mule.el (make-translation-table-from-alist):
Accept nil or zero-length vector for FROM and TO.
+2014-12-29 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * net/eww.el (eww-mode): Truncate overlong lines for prettier
+ display when resizing.
+
+ * net/shr.el (shr-width): Default to using the window width when
+ rendering.
+
+2014-12-29 Dmitry Gutov <dgutov@yandex.ru>
+
+ Unbreak jumping to an alias's definition.
+
+ * emacs-lisp/find-func.el (find-function-library): Return a pair
+ (ORIG-FUNCTION . LIBRARY) instead of just its second element.
+ (find-function-noselect): Use it.
+
+ * progmodes/elisp-mode.el (elisp--xref-identifier-file): Rename to
+ `elisp--xref-identifier-location', incorporate logic from
+ `elisp--xref-find-definitions', use the changed
+ `find-function-library' return value.
+
+2014-12-29 Juri Linkov <juri@linkov.net>
+
+ * comint.el (comint-history-isearch-message): Use field-beginning
+ instead of comint-line-beginning-position - that's more fixes for
+ http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg00305.html
+ (comint-history-isearch-message): Fix args of isearch-message-prefix.
+
+2014-12-29 Juri Linkov <juri@linkov.net>
+
+ * vc/vc-dir.el (vc-dir-display-file): New command (bug#19450).
+ (vc-dir-mode-map): Bind it to "\C-o".
+ (vc-dir-menu-map): Add it to menu.
+
+2014-12-29 Dmitry Gutov <dgutov@yandex.ru>
+
+ * progmodes/etags.el (find-tag-other-window)
+ (find-tag-other-frame, find-tag-regexp, tags-loop-continue)
+ (tags-apropos): Declare obsolete.
+
+ * menu-bar.el (menu-bar-goto-menu): Replace all but one etags item
+ with xref ones.
+
+2014-12-28 Eli Zaretskii <eliz@gnu.org>
+
+ * international/mule.el (define-coding-system): Fix typos in the
+ doc string.
+
+2014-12-28 Kenichi Handa <handa@gnu.org>
+
+ * international/mule.el (define-coding-system): Improve the doc
+ string.
+
2014-12-28 Ivan Shmakov <ivan@siamics.net>
* net/shr.el (shr-tag-table): Fix handling of tbody/header/footer
;; the initial comint prompt.
(if (overlayp comint-history-isearch-message-overlay)
(move-overlay comint-history-isearch-message-overlay
- (save-excursion (forward-line 0) (point))
- (comint-line-beginning-position))
+ (save-excursion
+ (goto-char (field-beginning))
+ (forward-line 0)
+ (point))
+ (field-beginning))
(setq comint-history-isearch-message-overlay
- (make-overlay (save-excursion (forward-line 0) (point))
- (comint-line-beginning-position)))
+ (make-overlay (save-excursion
+ (goto-char (field-beginning))
+ (forward-line 0)
+ (point))
+ (field-beginning)))
(overlay-put comint-history-isearch-message-overlay 'evaporate t))
(overlay-put comint-history-isearch-message-overlay
- 'display (isearch-message-prefix c-q-hack ellipsis))
+ 'display (isearch-message-prefix ellipsis isearch-nonincremental))
(if (and comint-input-ring-index (not ellipsis))
;; Display the current history index.
(message "History item: %d" (1+ comint-input-ring-index))
(cons (current-buffer) nil))))))))
(defun find-function-library (function &optional lisp-only verbose)
- "Return the library FUNCTION is defined in.
+ "Return the pair (ORIG-FUNCTION . LIBRARY) for FUNCTION.
-If FUNCTION is a built-in function and LISP-ONLY is non-nil,
+ORIG-FUNCTION is the original name, after removing all advice and
+resolving aliases. LIBRARY is an absolute file name, a relative
+file name inside the C sources directory, or a name of an
+autoloaded feature.
+
+If ORIG-FUNCTION is a built-in function and LISP-ONLY is non-nil,
signal an error.
If VERBOSE is non-nil, and FUNCTION is an alias, display a
def (symbol-function (find-function-advised-original function))))
(if aliases
(message "%s" aliases))
- (cond
- ((autoloadp def) (nth 1 def))
- ((subrp def)
- (if lisp-only
- (error "%s is a built-in function" function))
- (help-C-file-name def 'subr))
- ((symbol-file function 'defun)))))
+ (cons function
+ (cond
+ ((autoloadp def) (nth 1 def))
+ ((subrp def)
+ (if lisp-only
+ (error "%s is a built-in function" function))
+ (help-C-file-name def 'subr))
+ ((symbol-file function 'defun))))))
;;;###autoload
(defun find-function-noselect (function &optional lisp-only)
in `load-path'."
(if (not function)
(error "You didn't specify a function"))
- (let ((library (find-function-library function lisp-only t)))
- (find-function-search-for-symbol function nil library)))
+ (let ((func-lib (find-function-library function lisp-only t)))
+ (find-function-search-for-symbol (car func-lib) nil (cdr func-lib))))
(defun find-function-read (&optional type)
"Read and return an interned symbol, defaulting to the one near point.
+2014-12-29 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * mm-decode.el (mm-shr): Bind `shr-width' to `fill-column' so that
+ lines don't get overlong when responding.
+
2014-12-18 Paul Eggert <eggert@cs.ucla.edu>
* registry.el (registry-db): Set default slot later.
(defun gnus-cloud-server-p (server)
(member server gnus-cloud-covered-servers))
+(defun gnus-cloud-collect-full-newsrc ()
+ (let ((infos nil))
+ (dolist (info (cdr gnus-newsrc-alist))
+ (when (gnus-cloud-server-p
+ (gnus-method-to-server
+ (gnus-find-method-for-group (gnus-info-group info))))
+ (push info infos)))
+ ))
+
(provide 'gnus-cloud)
;;; gnus-cloud.el ends here
;; Require since we bind its variables.
(require 'shr)
(let ((article-buffer (current-buffer))
+ (shr-width fill-column)
(shr-content-function (lambda (id)
(let ((handle (mm-get-content-id id)))
(when handle
The decoding is done by at most 3 steps; the first is to convert
a byte sequence to a character sequence by one of Emacs'
-internal routines specified by :coding-type attribute. The
+internal routines specified by `:coding-type' attribute. The
optional second step is to convert the character sequence (the
result of the first step) by a translation table specified
-by :decode-translation-table attribute. The optional third step
-is to convert the above reslut by a Lisp function specified
-by :post-read-conversion attribute.
-
-The encoding is done by at most 3 steps which are reverse of the
-decoding steps. The optional first step converts a character
-sequence to another character sequence by a Lisp function
-specified by :pre-write-conversion attribute. The optional
-second step converts the above result by a translation table
-specified by :encode-translation-table attribute.. The third
-step converts the abobe result to a byte sequence by one of
-Emacs' internal routines specified by :coding-type attribute.
+by `:decode-translation-table' attribute. The optional third step
+is to convert the above result by a Lisp function specified
+by `:post-read-conversion' attribute.
+
+The encoding is done by at most 3 steps, which are the reverse
+of the decoding steps. The optional first step converts a
+character sequence to another character sequence by a Lisp
+function specified by `:pre-write-conversion' attribute. The
+optional second step converts the above result by a translation
+table specified by `:encode-translation-table' attribute. The
+third step converts the above result to a byte sequence by one
+of the Emacs's internal routines specified by the `:coding-type'
+attribute.
The following attributes have special meanings. Those labeled as
\"(required)\" should not be omitted.
`utf-16', `iso-2022', `emacs-mule', `shift-jis', `ccl',
`raw-text', `undecided'.
-If VALUE is `charset', the coding system is for handling a byte
-sequence in which each byte or each two to four bytes sequence
-represents a character code of a charset specified
-by :charset-list attribute.
+If VALUE is `charset', the coding system is for handling a
+byte sequence in which each byte or every two- to four-byte
+sequence represents a character code of a charset specified
+by the `:charset-list' attribute.
If VALUE is `utf-8', the coding system is for handling Unicode
-UTF-8 byte sequence. See also the documentation of the
-attribute :bom.
+UTF-8 byte sequences. See also the documentation of the
+attribute `:bom'.
If VALUE is `utf-16', the coding system is for handling Unicode
-UTF-16 byte sequence. See also the documentation of the
-attributes :bom and :endian.
+UTF-16 byte sequences. See also the documentation of the
+attributes :bom and `:endian'.
-If VALUE is `iso-2022', the coding system is for handling a byte
-sequence conforming to ISO/IEC 2022. See also the documentation
-of the attributes :charset-list, :flags, and :designation.
+If VALUE is `iso-2022', the coding system is for handling byte
+sequences conforming to ISO/IEC 2022. See also the documentation
+of the attributes `:charset-list', `:flags', and `:designation'.
-If VALUE is `emacs-mule', the coding system is for handling a
-byte sequence which Emacs 20 and 21 used for internal character
-representations.
+If VALUE is `emacs-mule', the coding system is for handling
+byte sequences which Emacs 20 and 21 used for their internal
+representation of characters.
-If VALUE is `shift-jis', the coding system is for handling a byte
-sequence of Shift_JIS format. See also the
-attribute :charset-list.
+If VALUE is `shift-jis', the coding system is for handling byte
+sequences of Shift_JIS format. See also the attribute `:charset-list'.
-If VALUE is `ccl', the coding system uses CCL programs to decodes
-and encodes to a byte sequence. The CCL programs must be
-specified by the attributes :ccl-decoder and :ccl-encoder.
+If VALUE is `ccl', the coding system uses CCL programs to decode
+and encode byte sequences. The CCL programs must be
+specified by the attributes `:ccl-decoder' and `:ccl-encoder'.
-If VALUE is `raw-text', the coding system decodes a byte sequence
-as is.
+If VALUE is `raw-text', the coding system decodes byte sequences
+without any conversions.
`:eol-type'
VALUE is the EOL (end-of-line) format of the coding system. It must be
one of `unix', `dos', `mac'. The symbol `unix' means Unix-like EOL
-\(i.e. single LF), `dos' means DOS-like EOL \(i.e. sequence of CR LF),
-and `mac' means Mac-like EOL \(i.e. single CR). If omitted, Emacs
-detects the EOL format automatically when decoding.
+\(i.e. a single LF character), `dos' means DOS-like EOL \(i.e. a sequence
+of CR followed by LF), and `mac' means Mac-like EOL \(i.e. a single CR).
+If omitted, Emacs detects the EOL format automatically when decoding.
-`:charset-list' (required if :coding-type is `charset' or `shift-jis')
+`:charset-list' (required if `:coding-type' is `charset' or `shift-jis')
VALUE must be a list of charsets supported by the coding system.
-If `coding-type:' is `charset', on decoding and encoding by the
+If `coding-type:' is `charset', then on decoding and encoding by the
coding system, if a character belongs to multiple charsets in the
-list, a charset that comes earlier in the list is selected.
+list, a charset that comes first in the list is selected.
If `:coding-type' is `iso-2022', VALUE may be `iso-2022', which
indicates that the coding system supports all ISO-2022 based
to four charsets supported by Shift_JIS encoding scheme. The
first charset (one dimension) is for code space 0x00..0x7F, the
second (one dimension) for 0xA1..0xDF, the third (two dimension)
-for 0x8140..0xEFFC, the optional fourth (thw dimension) for
+for 0x8140..0xEFFC, the optional fourth (three dimension) for
0xF040..0xFCFC.
If `:coding-type' is `emacs-mule', VALUE may be `emacs-mule',
VALUE must be a function to call after some text is inserted and
decoded by the coding system itself and before any functions in
`after-insert-functions' are called. This function is passed one
-argument; the number of characters in the text to convert, with
+argument: the number of characters in the text to convert, with
point at the start of the text. The function should leave point
-the same, and return the new character count.
+unchanged, and should return the new character count.
`:pre-write-conversion'
`:mime-text-unsuitable'
VALUE non-nil means the `:mime-charset' property names a charset which
-is unsuitable for the top-level media type \"text\".
+is unsuitable for the top-level media of type \"text\".
`:flags'
`:bom'
-This attributes specifies whether the coding system uses a `byte order
-mark'. VALUE must be nil, t, or cons of coding systems whose
+This attributes specifies whether the coding system uses a \"byte order
+mark\". VALUE must be nil, t, or a cons cell of coding systems whose
`:coding-type' is `utf-16' or `utf-8'.
If the value is nil, on decoding, don't treat the first two-byte as
If the value is t, on decoding, skip the first two-byte as BOM, and on
encoding, produce BOM bytes according to the value of `:endian'.
-If the value is cons, on decoding, check the first two-byte. If they
-are 0xFE 0xFF, use the car part coding system of the value. If they
-are 0xFF 0xFE, use the cdr part coding system of the value.
+If the value is a cons cell, on decoding, check the first two bytes.
+If they are 0xFE 0xFF, use the car part coding system of the value.
+If they are 0xFF 0xFE, use the cdr part coding system of the value.
Otherwise, treat them as bytes for a normal character. On encoding,
produce BOM bytes according to the value of `:endian'.
`:ccl-decoder' (required if :coding-type is `ccl')
VALUE is a CCL program name defined by `define-ccl-program'. The
-the CCL program reads a byte sequence and writes a character
-sequence as a decoding result.
+CCL program reads a byte sequence and writes a character sequence
+as a decoding result.
`:ccl-encoder' (required if :coding-type is `ccl')
VALUE is a CCL program name defined by `define-ccl-program'. The
-the CCL program reads a character sequence and writes a byte
-sequence as a encoding result.
+CCL program reads a character sequence and writes a byte sequence
+as an encoding result.
`:inhibit-null-byte-detection'
(bindings--define-key menu [separator-tag-file]
menu-bar-separator)
- (bindings--define-key menu [apropos-tags]
- '(menu-item "Tags Apropos..." tags-apropos
+ (bindings--define-key menu [xref-pop]
+ '(menu-item "Back..." xref-pop-marker-stack
+ :help "Back to the position of the last search"))
+
+ (bindings--define-key menu [xref-apropos]
+ '(menu-item "Find Apropos..." xref-find-apropos
:help "Find function/variables whose names match regexp"))
- (bindings--define-key menu [next-tag-otherw]
- '(menu-item "Next Tag in Other Window"
- menu-bar-next-tag-other-window
- :enable (and (boundp 'tags-location-ring)
- (not (ring-empty-p tags-location-ring)))
- :help "Find next function/variable matching last tag name in another window"))
-
- (bindings--define-key menu [next-tag]
- '(menu-item "Find Next Tag"
- menu-bar-next-tag
- :enable (and (boundp 'tags-location-ring)
- (not (ring-empty-p tags-location-ring)))
- :help "Find next function/variable matching last tag name"))
- (bindings--define-key menu [find-tag-otherw]
- '(menu-item "Find Tag in Other Window..." find-tag-other-window
+
+ (bindings--define-key menu [xref-find-otherw]
+ '(menu-item "Find Definition in Other Window..."
+ xref-find-definitions-other-window
:help "Find function/variable definition in another window"))
- (bindings--define-key menu [find-tag]
- '(menu-item "Find Tag..." find-tag
+ (bindings--define-key menu [xref-find-def]
+ '(menu-item "Find Definition..." xref-find-definitions
:help "Find definition of function or variable"))
- (bindings--define-key menu [separator-tags]
+ (bindings--define-key menu [separator-xref]
menu-bar-separator)
(bindings--define-key menu [end-of-buf]
menu))
-(defun menu-bar-next-tag-other-window ()
- "Find the next definition of the tag already specified."
- (interactive)
- (find-tag-other-window nil t))
-
-(defun menu-bar-next-tag ()
- "Find the next definition of the tag already specified."
- (interactive)
- (find-tag nil t))
-
(define-obsolete-function-alias
'menu-bar-kill-ring-save 'kill-ring-save "24.1")
(setq-local tool-bar-map eww-tool-bar-map))
;; desktop support
(setq-local desktop-save-buffer 'eww-desktop-misc-data)
+ (setq truncate-lines t)
(buffer-disable-undo)
(setq buffer-read-only t))
:group 'shr
:type 'character)
-(defcustom shr-width fill-column
+(defcustom shr-width nil
"Frame width to use for rendering.
May either be an integer specifying a fixed width in characters,
or nil, meaning that the full width of the window should be
used."
+ :version "25.1"
:type '(choice (integer :tag "Fixed width in characters")
(const :tag "Use the width of the window" nil))
:group 'shr)
(`apropos
(elisp--xref-find-apropos id))))
-(defun elisp--xref-identifier-file (type sym)
- (pcase type
- (`defun (when (fboundp sym)
- (find-function-library sym)))
- (`defvar (when (boundp sym)
- (or (symbol-file sym 'defvar)
- (help-C-file-name sym 'var))))
- (`feature (when (featurep sym)
- (ignore-errors
- (find-library-name (symbol-name sym)))))
- (`defface (when (facep sym)
- (symbol-file sym 'defface)))))
+(defun elisp--xref-identifier-location (type sym)
+ (let ((file
+ (pcase type
+ (`defun (when (fboundp sym)
+ (let ((fun-lib
+ (find-function-library sym)))
+ (setq sym (car fun-lib))
+ (cdr fun-lib))))
+ (`defvar (when (boundp sym)
+ (or (symbol-file sym 'defvar)
+ (help-C-file-name sym 'var))))
+ (`feature (when (featurep sym)
+ (ignore-errors
+ (find-library-name (symbol-name sym)))))
+ (`defface (when (facep sym)
+ (symbol-file sym 'defface))))))
+ (when file
+ (when (string-match-p "\\.elc\\'" file)
+ (setq file (substring file 0 -1)))
+ (xref-make-elisp-location sym type file))))
(defun elisp--xref-find-definitions (symbol)
(save-excursion
(dolist (type '(feature defface defvar defun))
(let ((loc
(condition-case err
- (let ((file (elisp--xref-identifier-file type symbol)))
- (when file
- (when (string-match-p "\\.elc\\'" file)
- (setq file (substring file 0 -1)))
- (xref-make-elisp-location symbol type file)))
+ (elisp--xref-identifier-location type symbol)
(error
(xref-make-bogus-location (error-message-string err))))))
(when loc
Contrast this with the ring of marks gone to by the command.
See documentation of variable `tags-file-name'."
+ (declare (obsolete xref-find-definitions-other-window "25.1"))
(interactive (find-tag-interactive "Find tag other window: "))
;; This hair is to deal with the case where the tag is found in the
Contrast this with the ring of marks gone to by the command.
See documentation of variable `tags-file-name'."
+ (declare (obsolete xref-find-definitions-other-frame "25.1"))
(interactive (find-tag-interactive "Find tag other frame: "))
(let ((pop-up-frames t))
(find-tag-other-window tagname next-p)))
Contrast this with the ring of marks gone to by the command.
See documentation of variable `tags-file-name'."
+ (declare (obsolete xref-find-apropos "25.1"))
(interactive (find-tag-interactive "Find tag regexp: " t))
;; We go through find-tag-other-window to do all the display hair there.
(funcall (if other-window 'find-tag-other-window 'find-tag)
interesting (it returns non-nil if so) and `tags-loop-operate' is a form to
evaluate to operate on an interesting file. If the latter evaluates to
nil, we exit; otherwise we scan the next file."
+ (declare (obsolete "use `xref-find-definitions' interface instead." "25.1"))
(interactive)
(let (new
;; Non-nil means we have finished one file
;;;###autoload
(defun tags-apropos (regexp)
"Display list of all tags in tags table REGEXP matches."
+ (declare (obsolete xref-find-apropos "25.1"))
(interactive "sTags apropos (regexp): ")
(with-output-to-temp-buffer "*Tags List*"
(princ "Click mouse-2 to follow tags.\n\nTags matching regexp `")
(define-key map [ise]
'(menu-item "Isearch Files..." vc-dir-isearch
:help "Incremental search a string in the marked files"))
+ (define-key map [display]
+ '(menu-item "Display in Other Window" vc-dir-display-file
+ :help "Display the file on the current line, in another window"))
(define-key map [open-other]
'(menu-item "Open in Other Window" vc-dir-find-file-other-window
:help "Find the file on the current line, in another window"))
(define-key map "e" 'vc-dir-find-file) ; dired-mode compatibility
(define-key map "\C-m" 'vc-dir-find-file)
(define-key map "o" 'vc-dir-find-file-other-window)
+ (define-key map "\C-o" 'vc-dir-display-file)
(define-key map "\C-c\C-c" 'vc-dir-kill-dir-status-process)
(define-key map [down-mouse-3] 'vc-dir-menu)
(define-key map [mouse-2] 'vc-dir-toggle-mark)
(if event (posn-set-point (event-end event)))
(find-file-other-window (vc-dir-current-file)))
+(defun vc-dir-display-file (&optional event)
+ "Display the file on the current line, in another window."
+ (interactive (list last-nonmenu-event))
+ (if event (posn-set-point (event-end event)))
+ (display-buffer (find-file-noselect (vc-dir-current-file))
+ t))
+
(defun vc-dir-isearch ()
"Search for a string through all marked buffers using Isearch."
(interactive)
+2014-12-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix produce_composite_width typo
+ * term.c (produce_composite_glyph):
+ Fix typo that confused number of columns for pixel width.
+
2014-12-28 Paul Eggert <eggert@Penguin.CS.UCLA.EDU>
Wrap dll functions more simply
{
struct composition *cmp = composition_table[it->cmp_it.id];
- it->pixel_width = cmp->width;
+ it->pixel_width = cmp->pixel_width;
}
else
{