* lisp/emacs-lisp/eieio-base.el (make-instance): Add a method here rather
than on eieio-constructor.
* lisp/emacs-lisp/eieio-core.el (eieio--class-print-name): New function.
(eieio-class-name): Make it do what the docstring claims.
(eieio-defclass-internal): Simplify since `prots' isn't used any more.
(eieio--slot-name-index): Simplify accordingly.
(eieio-barf-if-slot-unbound): Pass the class object rather than its
name to `slot-unbound'.
* lisp/emacs-lisp/eieio.el (defclass): Use make-instance rather than
eieio-constructor.
(set-slot-value): Mark as obsolete.
(eieio-object-class-name): Improve call to eieio-class-name.
(eieio-slot-descriptor-name, eieio-class-slots): New functions.
(object-slots): Use it. Declare obsolete.
(eieio-constructor): Merge it with `make-instance'.
(initialize-instance): Use `dolist'.
(eieio-override-prin1, eieio-edebug-prin1-to-string):
Use eieio--class-print-name.
* test/automated/eieio-test-methodinvoke.el (make-instance): Add methods
here rather than on eieio-constructor.
Stefan Monnier [Mon, 16 Feb 2015 06:37:57 +0000 (01:37 -0500)]
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Keep type=nil by default.
* lisp/emacs-lisp/cl-preloaded.el (cl-struct-define): Add sanity checks
about relationship between `type', `named', and `slots'.
* lisp/emacs-lisp/cl-generic.el (cl--generic-struct-tagcode): Adjust to new
value of `cl-struct-type' property.
Don't mark nnimap articles as read on a server hangup
* lisp/gnus/nnimap.el (nnimap-retrieve-headers): If the server closes connection
during header retrieval, error out instead of interpreting the data in
the buffer as the only messages there. This way, we don't mark
articles as read on a server hangup (bug#19035).
* lisp/gnus/mm-decode.el (mm-head-p): New function.
(mm-display-part): Go to a blank line when inserting parts internally.
Fix inserting parts with `E' in Gnus
* lisp/gnus/mm-decode.el (mm-head-p): New function.
(mm-display-part): Go to a blank line when inserting parts internally.
Stefan Monnier [Sat, 14 Feb 2015 05:46:29 +0000 (00:46 -0500)]
* lisp/emacs-lisp/cl*.el: Use define-inline and move some code
* lisp/emacs-lisp/cl-lib.el: Move autoloaded code to cl-preload.
* lisp/emacs-lisp/cl-preloaded.el (cl-struct-define): Register as children
of the parent.
(cl--assertion-failed): New function.
(cl-assertion-failed): Move in from cl-lib.el.
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Don't generate code to register
as children of its parents.
(cl--make-type-test, cl--compiler-macro-typep): Remove functions.
(cl-typep): Reimplement using define-inline.
(cl-assert): Use cl--assertion-failed.
(cl-struct-slot-value): Use define-inline.
Fixes: debbugs:19844
(flyspell-generic-check-word-p): Mark as obsolete.
* lisp/erc/erc-spelling.el (erc-spelling-init):
Use flyspell-generic-check-word-predicate.
Paul Eggert [Fri, 13 Feb 2015 02:20:12 +0000 (18:20 -0800)]
Better support for future plugins
See the thread containing:
http://lists.gnu.org/archive/html/emacs-devel/2015-02/msg00720.html
* lib-src/make-docfile.c (write_globals): Generate code that #defines
Qxxx macros other than Qnil only if DEFINE_NONNIL_Q_SYMBOL_MACROS.
Qnil is safe to define even in plugins, since it must be zero for
other reasons.
* src/lisp.h (DEFINE_LISP_SYMBOL): New macro, replacing and simplifying
DEFINE_LISP_SYMBOL_BEGIN / DEFINE_LISP_SYMBOL_END. All uses changed.
(DEFINE_NONNIL_Q_SYMBOL_MACROS): New macro, defaulting to true.
Katsumi Yamaoka [Thu, 12 Feb 2015 09:39:24 +0000 (09:39 +0000)]
lisp/gnus/gnus-art.el (gnus-article-browse-html-save-cid-content, gnus-article-browse-html-parts): Make cid file names relative if and only if html doesn't specify <base> directory
python.el: Allow killing shell buffer if process is dead.
Fixes: debbugs:19823
* lisp/progmodes/python.el (python-shell-font-lock-kill-buffer): Don't
require a running process.
(python-shell-font-lock-post-command-hook): Fontify only if the
shell process is running.
Nicolas Petton [Wed, 11 Feb 2015 08:21:03 +0000 (09:21 +0100)]
Add a backward-compatible version of seq-reverse
* lisp/emacs-lisp/seq.el (seq-reverse): Add a backward-compatible
version of seq-reverse that works on sequences in Emacs 24. Bump
version to 1.2.
* test/automated/seq-tests.el (test-seq-reverse, test-seq-group-by):
Add a test for seq-reverse and update test for seq-group-by to test
vectors and strings, not only lists.
Nicolas Petton [Mon, 9 Feb 2015 12:14:52 +0000 (13:14 +0100)]
Improve seq-group-by to return sequence elements in correct order
* lisp/emacs-lisp/seq.el (seq-group-by): Improves seq-group-by to
return sequence elements in correct order
* tests/automated/seq-tests.el: Update test for seq-group-by
* doc/lispref/sequences.texi (Sequence Functions): Update documentation
examples for seq-group-by
Martin Rudalics [Wed, 11 Feb 2015 08:07:24 +0000 (09:07 +0100)]
Improve toggling fullscreen state of frames.
* frame.el (toggle-frame-maximized, toggle-frame-fullscreen):
Rename frame parameter `maximized' to `fullscreen-restore'.
Restore fullwidth/-height after fullboth state. Update
doc-strings.
* w32term.c (w32_read_socket): In SIZE_MAXIMIZED and
SIZE_RESTORED cases correctly handle `maximized' value for the
`fullscreen' parameter. Don't use the 'maximized' parameter any
more.
(w32fullscreen_hook): Include menu bar height when calculating
new text height in FULLSCREEN_BOTH case.
* xterm.c (do_ewmh_fullscreen): Handle transition from
FULLSCREEN_BOTH to FULLSCREEN_MAXIMIZED when
x_frame_normalize_before_maximize is set.
* frames.texi (Size Parameters): Update description of
fullscreen frame parameter.
(shr-table-widths): Off-by-one error in width computation.
(shr-expand-newlines): Remove dead code.
(shr-insert-table): Extend background colors to the end of the column.
* lisp/gnus/mm-decode.el (mm-shr): Only pass the fill column when not using
fonts, because limiting the width to what's appropriate for followups
doesn't really help when not using proportional fonts.
* lisp/net/shr.el (shr-use-fonts): New variable.
(shr-fill-text): Rename from "fold".
(shr-pixel-column, shr-pixel-region, shr-string-pixel-width): New
functions.
(shr-insert): Just insert, don't fill the text. Filling is now
done afterwards per display unit.
(shr-fill-lines, shr-fill-line): New functions to fill text on a
per-unit base.
(shr-find-fill-point): Take a "beginning" parameter.
(shr-indent): Indent using the :width display parameter when using
fonts.
(shr-parse-style): Ignore "inherit" values, since we already do that.
(shr-tag-img): Remove the insertion states.
(shr-tag-blockquote): New-style filling.
(shr-tag-dd): Ditto.
(shr-tag-li): Ditto.
(shr-mark-fill): New function to mark lines that need filling.
(shr-tag-h1): Use a larger font.
(shr-tag-table-1): Get the natural and suggested widths in one
rendering.
(shr-tag-table): Create the "fixed" version of the table only once
so that we can cache data in the table.
(shr-insert-table): Get colspan calculations right by having
zero-width columns after colspan ones.
(shr-expand-alignments): New function to make :align-to specs work
right when rendered in one buffer and displayed in another one.
(shr-insert-table-ruler): Use :align-to to get the widths right.
(shr-make-table): Cache more.
(shr-make-table-1): Use the new <td> data layout.
(shr-pixel-buffer-width): New function.
(shr-render-td): Add a caching layer.
(shr-dom-max-natural-width): New function.
python.el: Improved shell font lock respecting markers.
Fixes: debbugs:19650
* lisp/progmodes/python.el
(python-shell-font-lock-get-or-create-buffer): Use special buffer name.
(python-shell-font-lock-with-font-lock-buffer): Enable font lock.
(python-shell-font-lock-post-command-hook): Fontify by copying text
properties from fontified buffer to shell, keeping markers unchanged.
(python-shell-font-lock-turn-off): Fix typo.
(python-util-text-properties-replace-name): Delete function.
Paul Eggert [Mon, 9 Feb 2015 19:25:35 +0000 (11:25 -0800)]
Check for some overflows in vertical-motion
* indent.c (window_column_x): New function.
(Fvertical_motion): Use it to protect against integer overflow
when computing column. Prefer extract_float to doing things by hand.
Avoid unnecessary casts.
Eli Zaretskii [Mon, 9 Feb 2015 16:24:46 +0000 (18:24 +0200)]
Speed up vertical-motion when screen coordinates are known
src/indent.c (Fvertical_motion): Accept an additional argument
CUR-COL and use it as the starting screen coordinate.
src/window.c (window_scroll_line_based, Fmove_to_window_line): All
callers of vertical-motion changed.
doc/lispref/positions.texi (Screen Lines): Update the documentation of
vertical-motion to document the new additional argument.
Dima Kogan [Mon, 9 Feb 2015 14:52:48 +0000 (15:52 +0100)]
Try non-scaled xld fonts first, and scaled if that failed.
Fixes: debbugs:19117
* xfaces.c (realize_basic_faces): Don't set Qscalable_fonts_allowed to
t.
* font.c (font_score): Try to find a font without scaling first,
and only accept scalable fonts if we did not get a match.
Paul Eggert [Mon, 9 Feb 2015 07:12:04 +0000 (23:12 -0800)]
Use C99's INFINITY and NAN macros
* lread.c: Include <math.h>.
(string_to_number): Use INFINITY and NAN rather than rolling our own.
This avoids some runtime diagnostics when building with
gcc -fsanitize=undefined.
Paul Eggert [Mon, 9 Feb 2015 00:21:11 +0000 (16:21 -0800)]
Better distinguish infinite from invalid times
* editfns.c (check_time_validity): New function.
(decode_time_components): Return int, not bool.
Return -1 (not 0) if the time is out of range.
All callers changed.
(lisp_time_struct, lisp_seconds_argument): Distinguish better
between time overflow and invalid time values.
Ulrich Müller [Sun, 8 Feb 2015 20:00:49 +0000 (21:00 +0100)]
configure --with-gameuser now defaults to games group.
* configure.ac (--with-gameuser): Default to 'games' group instead
of 'games' user.
* lisp/play/gamegrid.el: Update comment to reflect that the
'update-game-score' helper program is now setgid by default.
Paul Eggert [Sun, 8 Feb 2015 18:52:05 +0000 (10:52 -0800)]
Minor tweaks to frame_size_history_add
* frame.c (frame_size_history_add): Don't assume length fits in 'int'.
Prefer XCAR and XCDR to Fcar and Fcdr when the arg is a cons.
(Fframe_after_make_frame): Simplify.
* gtkutil.c: Remove commented-out code.
* xfns.c (Fx_create_frame): Fix indenting.
Oleh Krehel [Sat, 7 Feb 2015 17:54:07 +0000 (18:54 +0100)]
lisp/outline.el (outline-show-entry): Fix one invisible char
* lisp/outline.el (outline-show-entry): Previously, when called for
the last outline in a file, a single invisible char was left.
Add a check for this condition.
Stefan Monnier [Sun, 8 Feb 2015 13:51:10 +0000 (08:51 -0500)]
* src/data.c (Findirect_function): Don't signal an error
* src/data.c (Findirect_function): Like `symbol-function', don't signal an
error for void functions any more.
* lisp/subr.el (indirect-function): Change advertised calling convention.
Fixes: debbugs:19667
* lisp/progmodes/python.el
(python-shell-completion-native-get-completions): Force process
buffer.
(python-shell-completion-at-point): Handle case where call is not
in a shell buffer.
Fixes: debbugs:19637
* lisp/progmodes/python.el (python-eldoc--get-symbol-at-point): New
function.
(python-eldoc--get-doc-at-point, python-eldoc-at-point): Use it.
* test/automated/python-tests.el
(python-eldoc--get-symbol-at-point-1)
(python-eldoc--get-symbol-at-point-2)
(python-eldoc--get-symbol-at-point-3)
(python-eldoc--get-symbol-at-point-4): New tests.
Fixes: debbugs:19761
* lisp/progmodes/python.el
(python-hideshow-forward-sexp-function): New function based on
Carlos Pita <carlosjosepita@gmail.com> patch.
(python-mode): Make `hs-special-modes-alist` use it and initialize
the end regexp with the empty string to avoid skipping parens.
* test/automated/python-tests.el
(python-tests-visible-string): New function.
(python-parens-electric-indent-1)
(python-triple-quote-pairing): Fix indentation, move require calls.
(python-hideshow-hide-levels-1)
(python-hideshow-hide-levels-2): New tests.