Paul Eggert [Thu, 3 Oct 2013 16:16:31 +0000 (09:16 -0700)]
* lisp.h (eassert): Assume that COND is true when optimizing.
In other words, take on the behavior of eassert_and_assume.
This makes Emacs 0.2% smaller on my platform (Fedora 19, x86-64).
(eassert_and_assume): Remove. All uses replaced by eassert.
Paul Eggert [Thu, 3 Oct 2013 07:06:52 +0000 (00:06 -0700)]
Merge from gnulib.
* src/conf_post.h (__has_builtin, assume): Remove; gnulib now does these.
* src/lisp.h: Include <verify.h>, for 'assume'.
This also incorpoprates:
2013-10-02 verify: new macro 'assume'
2013-09-26 dup2, dup3: work around another cygwin crasher
2013-09-26 getdtablesize: work around cygwin issue
Paul Eggert [Thu, 3 Oct 2013 06:31:06 +0000 (23:31 -0700)]
* eval.c (clobbered_eassert): New macro.
(internal_catch, internal_condition_case)
(internal_condition_case_1, internal_condition_case_2)
(internal_condition_case_n): Use it instead of eassert
when the argument contains locals clobbered by longjmp.
Don't use clobbered locals outside of clobbered_eassert.
(internal_lisp_condition_case): Use a volatile variable
to work around a local variable's getting clobbered.
Stefan Monnier [Thu, 3 Oct 2013 04:58:56 +0000 (00:58 -0400)]
Introduce new bytecodes for efficient catch/condition-case in lexbind.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
Optimize under `condition-case' and `catch' if
byte-compile--use-old-handlers is nil.
(disassemble-offset): Handle new bytecodes.
* lisp/emacs-lisp/bytecomp.el (byte-pushcatch, byte-pushconditioncase)
(byte-pophandler): New byte codes.
(byte-goto-ops): Adjust accordingly.
(byte-compile--use-old-handlers): New var.
(byte-compile-catch): Use new byte codes depending on
byte-compile--use-old-handlers.
(byte-compile-condition-case--old): Rename from
byte-compile-condition-case.
(byte-compile-condition-case--new): New function.
(byte-compile-condition-case): New function that dispatches depending
on byte-compile--use-old-handlers.
(byte-compile-unwind-protect): Pass a function to byte-unwind-protect
when we can.
* lisp/emacs-lisp/cconv.el (cconv-convert, cconv-analyse-form): Adjust for
the new compilation scheme using the new byte-codes.
* src/alloc.c (Fgarbage_collect): Merge scans of handlerlist and catchlist,
and make them unconditional now that they're heap-allocated.
* src/bytecode.c (BYTE_CODES): Add Bpushcatch, Bpushconditioncase
and Bpophandler.
(bcall0): New function.
(exec_byte_code): Add corresponding cases. Improve error message when
encountering an invalid byte-code. Let Bunwind_protect accept
a function (rather than a list of expressions) as argument.
* src/eval.c (catchlist): Remove (merge with handlerlist).
(handlerlist, lisp_eval_depth): Not static any more.
(internal_catch, internal_condition_case, internal_condition_case_1)
(internal_condition_case_2, internal_condition_case_n):
Use PUSH_HANDLER.
(unwind_to_catch, Fthrow, Fsignal): Adjust to merged
handlerlist/catchlist.
(internal_lisp_condition_case): Use PUSH_HANDLER. Adjust to new
handlerlist which can only handle a single condition-case handler at
a time.
(find_handler_clause): Simplify since we only a single branch here
any more.
* src/lisp.h (struct handler): Merge struct handler and struct catchtag.
(PUSH_HANDLER): New macro.
(catchlist): Remove.
(handlerlist): Always declare.
Stefan Monnier [Thu, 3 Oct 2013 04:41:23 +0000 (00:41 -0400)]
* lisp/subr.el (decode-char, encode-char): Use advertised-calling-convention
instead of the docstring to discourage use of the `restriction' arg.
(error): Use `declare'.
* src/charset.c (Fdecode_char, Fencode_char): Remove description of
`restriction' arg. now that it's hidden by advertised-calling-convention.
Daiki Ueno [Thu, 3 Oct 2013 01:29:17 +0000 (10:29 +0900)]
epg: doc improvement for verify functions
* epg.el (epg-verify-file): Add a comment saying that it does not
notify verification error as a return value nor a signal.
(epg-verify-string): Ditto.
Dmitry Antipov [Wed, 2 Oct 2013 15:38:12 +0000 (19:38 +0400)]
* frame.h (struct frame): Drop has_minibuffer member because...
(FRAME_HAS_MINIBUF_P): ...this macro can be implemented without it.
* frame.c (make_frame, make_minibuffer_frame): Adjust users.
Dmitry Antipov [Wed, 2 Oct 2013 12:08:27 +0000 (16:08 +0400)]
* window.h (struct window): Prefer enum text_cursor_kinds to int
for phys_cursor_type member. Move the latter, phys_cursor_width,
phys_cursor_ascent and phys_cursor_height under HAVE_WINDOW_SYSTEM.
* window.c (replace_window, make_window): Adjust users.
Fabrice Niessen [Wed, 2 Oct 2013 03:09:31 +0000 (06:09 +0300)]
* themes/leuven-theme.el: Add Commentary and some headers, update
face definitions, add autoload block which is used when
distributed separately from Emacs.
Dmitry Gutov [Tue, 1 Oct 2013 01:38:37 +0000 (04:38 +0300)]
* lisp/emacs-lisp/package.el (package-buffer-info, describe-package-1):
Use :url instead of :homepage, as per
http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00622.html
* test/automated/package-test.el: Update all cases to use :url instead
of :homepage.
* lisp/emacs-lisp/package-x.el (package-upload-buffer-internal): Pass
`extras' slot from `package-desc' to `package-make-ac-desc'.
* lisp/emacs-lisp/package.el (package-desc-from-define): Accept
additional arguments as plist, convert it to an alist and store it
in the `extras' slot.
(package-generate-description-file): Convert extras alist back to
plist and append to the `define-package' form arguments.
(package--alist-to-plist): New function.
(package--ac-desc): Add `extras' slot.
(package--add-to-archive-contents): Check if the archive-contents
vector is long enough, and if it is, pass its `extras' slot value
to `package-desc-create'.
(package-buffer-info): Call `lm-homepage', pass the returned value
to `package-desc-from-define'.
(describe-package-1): Render the homepage button.
* test/automated/package-test.el (simple-single-desc-1-4): Remove, it
was unused.
(simple-single-desc): Expect :homepage property.
(multi-file-desc): Same.
(with-package-test): Do not save previous `default-directory'
value, let-bind the var instead.
(package-test-install-single): Expect :homepage property in the
generated pkg file.
(package-test-describe-package): Expect Homepage button.
(package-test-describe-non-installed-package)
(package-test-describe-non-installed-multi-file-package): Same.
(package-test-describe-not-installed-package): Remove, it was a
duplicate.
Alan Mackenzie [Sat, 28 Sep 2013 17:17:01 +0000 (17:17 +0000)]
Fix indentation/fontification of Java enum with "implements".
* progmodes/cc-langs.el (c-postfix-decl-spec-key): New variable, a
regexp which matches "implements", etc., in Java.
* progmodes/cc-engine.el (c-inside-bracelist-p): Check for extra
specifier clauses coming after "enum".
* progmodes/cc-fonts.el (c-font-lock-declarations)
(c-font-lock-enum-tail): Check for extra specifier clauses coming
after "enum".
Jan Djärv [Sat, 28 Sep 2013 10:01:50 +0000 (12:01 +0200)]
Pick up default selection color on OSX when user defaults are not set.
* lisp/faces.el (region): Change ns_selection_color to
ns_selection_fg_color, add ns_selection_bg_color.
* src/nsterm.h (NS_SELECTION_BG_COLOR_DEFAULT): Renamed from
NS_SELECTION_COLOR_DEFAULT.
(NS_SELECTION_FG_COLOR_DEFAULT): New.
* src/nsterm.m (ns_selection_color): Remove.
(ns_get_color): Check for ns_selection_(fg|bg)_color using
NSColor selectedText(Background)Color. Only for COCOA.
(ns_term_init): Remove assignment of ns_selection_color, logic
moved to ns_get_color.
Stefan Monnier [Sat, 28 Sep 2013 01:07:18 +0000 (21:07 -0400)]
* lisp/emacs-lisp/cl-macs.el:
(cl--loop-destr-temps): Remove.
(cl--loop-iterator-function): Rename from cl--loop-map-form and change
its convention.
(cl--loop-set-iterator-function): New function.
(cl-loop): Adjust accordingly, so as not to use cl-subst.
(cl--parse-loop-clause): Adjust all uses of cl--loop-map-form.
Bind `it' with `let' instead of substituting it with `cl-subst'.
(cl--unused-var-p): New function.
(cl--loop-let): Don't use the cl--loop-destr-temps hack any more.
Eliminate some unused variable warnings.
* doc-view.el (doc-view-scale-reset): Rename from
`doc-view-reset-zoom-level'.
(doc-view-scale-adjust): New command.
(doc-view-mode-map): Remap `text-scale-adjust' bindings to
`doc-view-scale-adjust'.
Barry O'Reilly [Thu, 26 Sep 2013 03:46:47 +0000 (23:46 -0400)]
Signal error when reading an empty byte-code object (Bug#15405)
* lread.c (read1): signal error
* alloc.c (make_byte_code): eassert header size
(sweep_vectors): change an int to size_t
Paul Eggert [Wed, 25 Sep 2013 03:44:34 +0000 (20:44 -0700)]
Merge from gnulib.
This incorporates:
2013-09-24 manywarnings: enable nicer gcc warning messages
2013-09-23 warnings: port --enable-gcc-warnings to Solaris Studio 12.3
2013-09-21 timespec: use the new TIMESPEC_RESOLUTION elsewhere
* configure.ac (WERROR_CFLAGS): Omit -fdiagnostics-show-option
and -funit-at-a-time, since manywarnings does that for us now.
Sam Steingold [Tue, 24 Sep 2013 17:34:51 +0000 (13:34 -0400)]
* lisp/midnight.el (clean-buffer-list-kill-regexps)
(clean-buffer-list-kill-buffer-names): Update for the new Man
buffer naming which includes the object name.
Paul Eggert [Tue, 24 Sep 2013 14:53:49 +0000 (07:53 -0700)]
* data.c (POPCOUNT_STATIC_INLINE): New macro, as a hack for popcount.
This is ugly, but it should fix the performance problem for older
GCC versions in the short run. I'll look into integrating the
Gnulib module for popcount, as a better fix.
See the thread starting in:
http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00474.html
(popcount_size_t_generic) [NEED_GENERIC_POPCOUNT]:
(popcount_size_t_msc) [USE_MSC_POPCOUNT]:
(popcount_size_t_gcc) [USE_GCC_POPCOUNT]:
(popcount_size_t): Use it.
Prefer signed to unsigned integers where either will do.
No need for 'const' on locals that do not escape.
Omit easserts with unnecessary and unportable assumptions about
alignment. Avoid unnecessary casts to char *.
Use union for the payload of struct Lisp_Vector.
This helps to avoid a few glitches dictated by C's aliasing rules.
* lisp.h (struct Lisp_Vector): Use union for next and
contents member. Adjust comment. Change related users.
* alloc.c (next_in_free_list, set_next_in_free_list): Remove.
Related users changed.
* buffer.c, bytecode.c, ccl.c, character.h, chartab.c, composite.c:
* composite.h, disptab.h, fns.c, fontset.c, indent.c, keyboard.c:
* lread.c, msdos.c, process.c, w32menu.c, window.c, xdisp.c:
* xfaces.c, xfont.c, xmenu.c: Related users changed.
Optimize glyph row clearing and copying routines.
* dispextern.h (struct glyph_row): Change layout of struct
glyph_row to help copy_row_except_pointers. Adjust comment.
* dispnew.c (null_row): Remove.
(clear_glyph_row): Use offsetof and memset to find and clear
just the members that need clearing. Adjust comment.
(copy_row_except_pointers): Likewise for copying.
Paul Eggert [Tue, 24 Sep 2013 04:28:06 +0000 (21:28 -0700)]
Some minor cleanups of recently-added bool vector code.
* conf_post.h (assume): Always return void. Use lint version
only if GCC and MSC versions don't apply.
* conf_post.h (assume):
* data.c (USC_MSC_POPCOUNT, count_trailing_zero_bits):
Depend on _MSC_VER, not __MSC_VER, for consistency with
the rest of Emacs.
* data.c (bool_vector_spare_mask, popcount_size_t_generic)
(popcount_size_t_msc, popcount_size_t_gcc, popcount_size_t)
(bool_vector_binop_driver, count_trailing_zero_bits)
(size_t_to_host_endian): Now static, not static inline;
the latter isn't needed with modern compilers and doesn't
work with older compilers anyway.
Stefan Monnier [Mon, 23 Sep 2013 23:23:32 +0000 (19:23 -0400)]
* lisp/eshell/esh-cmd.el (eshell--sep-terms): New var.
(eshell-parse-command, eshell-parse-pipeline): Use it since
eshell-separate-commands requires a dynamic scoped var.
Reported by Jan Moringen <jmoringe@techfak.uni-bielefeld.de>.
Eli Zaretskii [Mon, 23 Sep 2013 09:18:38 +0000 (12:18 +0300)]
Fix bug #15437 with mouse highlight on overlay strings.
src/xdisp.c (mouse_face_from_string_pos): Fix off-by-one error in
computing the end column of mouse-highlight that comes from
display or overlay strings.
Remove references to universal-argument-num-events.
* lisp/autoarg.el (autoarg-kp-digit-argument):
* lisp/electric.el (Electric-command-loop):
* lisp/kmacro.el (kmacro-step-edit-insert):
Do not set universal-argument-num-events.
Tell valgrind about conservative GC regions and suppress spurious
warings.
* alloc.c (USE_VALGRIND): New macro; on by default
when ENABLE_CHECKING.
(mark_maybe_object,mark_maybe_pointer)
[USE_VALGRIND]: Mark conservatively-scanned regions valid for
valgrind purposes.
(valgrind_p) [USE_VALGRIND]: New variable.
(init_alloc) [USE_VALGRIND]: Initialize valgrind_p.
* data.c (Qbool_vector_p): New symbol.
(bool_vector_spare_mask,popcount_size_t_generic)
(popcount_size_t_msc,popcount_size_t_gcc)
(popcount_size_t)
(bool_vector_binop_driver)
(count_trailing_zero_bits,size_t_to_host_endian)
(Fbool_vector_exclusive_or)
(Fbool_vector_union)
(Fbool_vector_intersection,Fbool_vector_set_difference)
(Fbool_vector_subsetp,Fbool_vector_not)
(Fbool_vector_count_matches)
(Fbool_vector_count_matches_at): New functions.
(syms_of_data): Intern new symbol, functions.
* alloc.c (bool_vector_payload_bytes): New function.
(Fmake_bool_vector): Instead of calling Fmake_vector,
which performs redundant initialization and argument checking,
just call allocate_vector ourselves. Make sure we clear any
terminating padding to zero.
(vector_nbytes,sweep_vectors): Use bool_vector_payload_bytes
instead of open-coding the size calculation.
(vroundup_ct): New macro.
(vroundup): Assume argument >= 0; invoke vroundup_ct.
* casetab.c (shuffle,set_identity): Change lint_assume to assume.
* composite.c (composition_gstring_put_cache): Change
lint_assume to assume.
* conf_post.h (assume): New macro.
(lint_assume): Remove.
* dispnew.c (update_frame_1): Change lint_assume to assume.
* ftfont.c (ftfont_shape_by_flt): Change lint_assume
to assume.
* image.c (gif_load): Change lint_assume to assume.
* lisp.h (eassert_and_assume): New macro.
(Qbool_vector_p): Declare.
(CHECK_BOOL_VECTOR,ROUNDUP,BITS_PER_SIZE_T): New macros.
(swap16,swap32,swap64): New inline functions.
* macfont.c (macfont_shape): Change lint_assume to assume.
* ralloc.c: Rename ROUNDUP to PAGE_ROUNDUP throughout.
* xsettings.c (parse_settings): Use new swap16 and
swap32 from lisp.h instead of file-specific macros.
Eli Zaretskii [Sun, 22 Sep 2013 07:13:14 +0000 (10:13 +0300)]
Fix bug #15365 with aborts in try_window_id.
src/xdisp.c (try_window_id): Don't abort if cursor row could not be
found (which can legitimately happen when the glyph row at the
window start is disabled in the current_matrix.
Paul Eggert [Sun, 22 Sep 2013 06:22:05 +0000 (23:22 -0700)]
Fix syntax.h bug introduced by recent INLINE change.
syntax.h defined an extern inline function SYNTAX_ENTRY that was
conditionally compiled one way in some modules, and a different
way in others. This doesn't work with extern inline functions,
which must have the same definition in all modules, because the
defining code might be shared across modules, depending on the
implementation. Symptoms reported by Martin Rudalics in:
http://lists.gnu.org/archive/html/emacs-devel/2013-09/msg00414.html
* regex.c, syntax.c (SYNTAX_ENTRY_VIA_PROPERTY): Remove.
(SYNTAX, SYNTAX_ENTRY, SYNTAX_WITH_FLAGS): New macros,
overriding the corresponding functions in syntax.h.
* syntax.h (syntax_property_entry, syntax_property_with_flags)
(syntax_property): New inline functions.
(SYNTAX_ENTRY, SYNTAX_WITH_FLAGS, SYNTAX):
Rewrite in terms of these new functions.
Alan Mackenzie [Sat, 21 Sep 2013 17:21:29 +0000 (17:21 +0000)]
C++: fontify identifier in declaration following "public:" correctly.
* progmodes/cc-langs.el (c-decl-start-colon-kwd-re): New lang var
to match "public", etc.
(c-decl-prefix-re): Add ":" into the C++ value.
* progmodes/cc-engine.el (c-find-decl-prefix-search): Refactor a
bit. Add a check for a ":" preceded by "public", etc.
Eli Zaretskii [Sat, 21 Sep 2013 11:48:19 +0000 (14:48 +0300)]
Fix bug #15426 with directory-files invoked from a unibyte buffer.
src/dired.c (directory_files_internal): Use multibyte_chars_in_text,
not chars_in_text, whose result depends on the multibyteness of
the current buffer.
Paul Eggert [Fri, 20 Sep 2013 20:23:20 +0000 (13:23 -0700)]
Port recent change to hosts where pointers aren't 'long'.
* xterm.c (x_send_scroll_bar_event, x_scroll_bar_to_input_event):
Don't assume that pointers are the same width as 'long'.
Add a compile-time check that a pointer fits into two X slots.