1. 10 Jan, 2015 7 commits
  2. 09 Jan, 2015 2 commits
    • Daniel Colascione's avatar
      Teach js-mode about ES6 generators · 9c64c52b
      Daniel Colascione authored
      * lisp/progmodes/js.el (js--function-heading-1-re)
      (js--function-prologue-beginning): Parse ES6 generator function
      declarations.  (That is, "function* name()").
      9c64c52b
    • Paul Eggert's avatar
      Refactor pointer-to-integer conversion · d1f848ff
      Paul Eggert authored
      * gfilenotify.c (monitor_to_lisp, lisp_to_monitor):
      Rename and move to lisp.h.  All uses changed.
      * lisp.h (XINTPTR, make_pointer_integer): New inline functions,
      which are renamed from gfilenotify.c's lisp_to_monitor and
      monitor_to_lisp, and with more-generic void * signatures.
      d1f848ff
  3. 08 Jan, 2015 18 commits
    • Stefan Monnier's avatar
    • Stefan Monnier's avatar
      * lisp/emacs-lisp/eieio*.el: Move the function defs to defclass. · 6a67b20d
      Stefan Monnier authored
      * lisp/emacs-lisp/eieio.el (defclass): Move from eieio-defclass all the code
      that creates functions, and most of the sanity checks.
      Mark as obsolete the <class>-child-p function.
      * lisp/emacs-lisp/eieio-core.el (eieio--define-field-accessors): Remove.
      (eieio--class, eieio--object): Use cl-defstruct.
      (eieio--object-num-slots): Define manually.
      (eieio-defclass-autoload): Use eieio--class-make.
      (eieio-defclass-internal): Rename from eieio-defclass.  Move all the
      `(lambda...) definitions and most of the sanity checks to `defclass'.
      Mark as obsolete the <class>-list-p function, the <class> variable and
      the <initarg> variables.  Use pcase-dolist.
      (eieio-defclass): New compatibility function.
      * lisp/emacs-lisp/eieio-opt.el (eieio-build-class-alist)
      (eieio-class-speedbar): Don't use eieio-default-superclass var.
      6a67b20d
    • Eli Zaretskii's avatar
      Fix line-move-visual's following of column in R2L lines. · 5fbd17e3
      Eli Zaretskii authored
       src/simple.el (line-move-visual): When converting X pixel coordinate
       to temporary-goal-column, adjust the value for right-to-left
       screen lines.  This fixes vertical-motion, next/prev-line, etc.
      
       src/dispnew.c (buffer_posn_from_coords): Fix the value of the column
       returned for right-to-left screen lines.  (Before the change on
       2014-12-30, the incorrectly-computed X pixel coordinate concealed
       this bug.)
      5fbd17e3
    • Eli Zaretskii's avatar
      Fix GDB accesses to the 'nil's name. · ad83cdac
      Eli Zaretskii authored
       src/.gdbinit (xsymname): New subroutine.
       (xprintsym, initial-tbreak): Use it to access the name of a symbol
       in a way that doesn't cause GDB to barf when it tries to
       dereference a NULL pointer.
      ad83cdac
    • Eli Zaretskii's avatar
      Fix fallout from "Qnil is zero" change in the display engine. (Bug#19535) · daa18b5e
      Eli Zaretskii authored
       src/xdisp.c (next_element_from_c_string): Use Lisp integer zero as
       the object.
       (set_cursor_from_row, try_cursor_movement, dump_glyph)
       (insert_left_trunc_glyphs, append_space_for_newline)
       (extend_face_to_end_of_line, highlight_trailing_whitespace)
       (find_row_edges, ROW_GLYPH_NEWLINE_P, Fmove_point_visually)
       (Fbidi_resolved_levels, produce_special_glyphs)
       (rows_from_pos_range, mouse_face_from_buffer_pos)
       (note_mouse_highlight): Use nil as the object for glyphs inserted
       by the display engine, and test with NILP instead of INTEGERP.
       src/w32fns.c (Fx_show_tip): Use NILP to test for glyphs inserted by
       the display engine.
       src/xfns.c (Fx_show_tip): Use NILP to test for glyphs inserted by
       the display engine.
       src/dispextern.h (struct glyph, struct it): Update comments for the
       OBJECT members.
      daa18b5e
    • Paul Eggert's avatar
      Port new Lisp symbol init to x86 --with-wide-int · 0002f31a
      Paul Eggert authored
      * lisp.h (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END):
      Define to empty on platforms where EMACS_INT_MAX != INTPTR_MAX, as
      GCC (at least) does not allow a constant initializer to widen an
      address constant.
      0002f31a
    • Paul Eggert's avatar
      * lisp.h (TAG_SYMPTR): Don't do arithmetic on NULL. · 206333ee
      Paul Eggert authored
      This is a followup to the "Port Qnil==0 XUNTAG to clang" patch.
      Although clang doesn't need it, some other compiler might, and
      it's easy enough to be safe.
      206333ee
    • Paul Eggert's avatar
      * conf_post.h (ATTRIBUTE_ALLOC_SIZE): Port to clang 3.5.0. · ce5c361c
      Paul Eggert authored
      Apparently clang removed support for the alloc_size attribute.
      ce5c361c
    • Paul Eggert's avatar
      Port Qnil==0 XUNTAG to clang · f6a27d26
      Paul Eggert authored
      clang has undefined behavior if the program subtracts an integer
      from (char *) 0.  Problem reported by YAMAMOTO Mitsuharu in:
      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00132.html
      * lisp.h (lisp_h_XUNTAG) [USE_LSB_TAG]:
      (XUNTAG) [!USE_LSB_TAG]: Port to clang 3.5.0.
      f6a27d26
    • Stefan Monnier's avatar
      * emacs-lisp/eieio-generic.el: New file. · 54181569
      Stefan Monnier authored
      * lisp/emacs-lisp/eieio-core.el: Move all generic function code to
      eieio-generic.el.
      (eieio--defmethod): Declare.
      * lisp/emacs-lisp/eieio.el: Require eieio-generic.  Move all generic
      function code to eieio-generic.el.
      * lisp/emacs-lisp/eieio-opt.el (eieio-help-generic): Move to
      eieio-generic.el.
      * lisp/emacs-lisp/eieio-datadebug.el (eieio-debug-methodinvoke): Update call
      to eieio--generic-call.
      * lisp/emacs-lisp/eieio-base.el (eieio-instance-inheritor): Don't use
      <class>-child type.
      * test/automated/eieio-test-methodinvoke.el (eieio-test-method-store):
      Update reference to eieio--generic-call-key.
      * test/automated/eieio-tests.el (eieio-test-23-inheritance-check): Don't use
      <foo>-child-p.
      54181569
    • Glenn Morris's avatar
      # ChangeLog fixes · 9f654763
      Glenn Morris authored
      9f654763
    • Glenn Morris's avatar
    • Glenn Morris's avatar
      * lisp/files.el (file-tree-walk): Remove; of unknown authorship. · ffa86039
      Glenn Morris authored
      * etc/NEWS: Remove entry.
      
      Fixes: debbugs:19325
      ffa86039
    • Stefan Monnier's avatar
      lisp/emacs-lisp/eieio-core.el (eieio-backward-compatibility): New var. · 1599688e
      Stefan Monnier authored
      * lisp/cedet/ede/speedbar.el (ede-speedbar-compile-line)
      (ede-speedbar-get-top-project-for-line):
      * lisp/cedet/ede.el (ede-buffer-belongs-to-target-p)
      (ede-buffer-belongs-to-project-p, ede-build-forms-menu)
      (ede-add-project-to-global-list):
      * lisp/cedet/semantic/db-typecache.el (semanticdb-get-typecache):
      * lisp/cedet/semantic/db-file.el (semanticdb-load-database):
      * lisp/cedet/semantic/db-el.el (semanticdb-elisp-sym->tag):
      * lisp/cedet/semantic/db-ebrowse.el (semanticdb-ebrowse-load-helper):
      * lisp/cedet/ede/project-am.el (project-am-preferred-target-type):
      * lisp/cedet/ede/proj.el (ede-proj-load):
      * lisp/cedet/ede/custom.el (ede-customize-current-target, ede-customize-target):
      * lisp/cedet/semantic/ede-grammar.el ("semantic grammar"):
      * lisp/cedet/semantic/scope.el (semantic-scope-reset-cache)
      (semantic-calculate-scope):
      * lisp/cedet/srecode/map.el (srecode-map-update-map):
      * lisp/cedet/srecode/insert.el (srecode-insert-show-error-report)
      (srecode-insert-method, srecode-insert-include-lookup)
      (srecode-insert-method):
      * lisp/cedet/srecode/fields.el (srecode-active-template-region):
      * lisp/cedet/srecode/compile.el (srecode-flush-active-templates)
      (srecode-compile-inserter): Don't use <class> as a variable.
      Use `oref-default' for class slots.
      
      * lisp/cedet/semantic/grammar.el (semantic-grammar-eldoc-last-data): New var.
      (semantic-grammar-eldoc-get-macro-docstring): Use it instead of
      eldoc-last-data.
      * lisp/cedet/semantic/fw.el (semantic-exit-on-input): Use `declare'.
      (semantic-throw-on-input): Use `with-current-buffer'.
      * lisp/cedet/semantic/db.el (semanticdb-abstract-table-list): Define if not
      pre-defined.
      * lisp/cedet/semantic/db-find.el (semanticdb-find-tags-collector):
      Use save-current-buffer.
      (semanticdb-find-tags-collector): Don't use <class> as a variable.
      * lisp/cedet/semantic/complete.el (semantic-complete-active-default)
      (semantic-complete-current-matched-tag): Declare.
      (semantic-complete-inline-custom-type): Don't use <class> as a variable.
      * lisp/cedet/semantic/bovine/make.el (semantic-analyze-possible-completions):
      Use with-current-buffer.
      * lisp/cedet/semantic.el (semantic-parser-warnings): Declare.
      * lisp/cedet/ede/base.el (ede-target-list): Define if not pre-defined.
      (ede-with-projectfile): Prefer find-file-noselect over
      save-window-excursion.
      
      * lisp/emacs-lisp/chart.el (chart-add-sequence, chart-bar-quickie):
      Don't use <class> as a variable.
      
      * lisp/emacs-lisp/eieio-base.el (eieio-persistent-validate/fix-slot-value):
      Improve error messages.
      (eieio-persistent-slot-type-is-class-p): Handle `list-of' types, as
      well as user-defined types.  Emit errors for legacy types like
      <class>-child and <class>-list, if not eieio-backward-compatibility.
      
      * lisp/emacs-lisp/eieio-core.el (eieio-backward-compatibility): New var.
      (eieio-defclass-autoload): Obey it.
      (eieio--class-object): Improve error behavior.
      (eieio-class-children-fast, same-class-fast-p): Remove.  Inline at
      every use site.
      (eieio--defgeneric-form-primary-only): Rename from
      eieio-defgeneric-form-primary-only; update all callers.
      (eieio--defgeneric-form-primary-only-one): Rename from
      eieio-defgeneric-form-primary-only-one; update all callers.
      (eieio-defgeneric-reset-generic-form)
      (eieio-defgeneric-reset-generic-form-primary-only)
      (eieio-defgeneric-reset-generic-form-primary-only-one): Remove.
      (eieio--method-optimize-primary): New function to replace them.
      (eieio--defmethod, eieio-defmethod): Use it.
      (eieio--perform-slot-validation): Rename from
      eieio-perform-slot-validation; update all callers.
      (eieio--validate-slot-value): Rename from eieio-validate-slot-value.
      Change `class' to be a class object.  Update all callers.
      (eieio--validate-class-slot-value): Rename from
      eieio-validate-class-slot-value.  Change `class' to be a class object.
      Update all callers.
      (eieio-oset-default): Accept class object as well.
      (eieio--generic-call-primary-only): Rename from
      eieio-generic-call-primary-only.  Update all callers.
      
      * lisp/emacs-lisp/eieio-opt.el (eieio-read-generic-p): Remove.
      (eieio-read-generic): Use `generic-p' instead.
      
      * lisp/emacs-lisp/eieio.el (same-class-p): Accept class object as well.
      (call-next-method): Simplify.
      (clone): Obey eieio-backward-compatibility.
      
      * lisp/gnus/registry.el: Don't use <class> as a variable.
      
      * test/automated/eieio-test-methodinvoke.el
      (eieio-test-method-order-list-4):
      Don't use <class> as a variable.
      
      * test/automated/eieio-test-persist.el (persistent-with-objs-list-slot):
      Don't use <class>-list type.
      
      * test/automated/eieio-tests.el: Use cl-lib.  Don't use <class> as a variable.
      Don't use <class>-list types and <class>-list-p predicates.
      1599688e
    • Katsumi Yamaoka's avatar
      lisp/gnus/gnus-group.el (gnus-read-ephemeral-bug-group): Use... · dff81fa7
      Katsumi Yamaoka authored
      lisp/gnus/gnus-group.el (gnus-read-ephemeral-bug-group): Use mm-disable-multibyte instead of mm-enable-multibyte
      dff81fa7
    • Katsumi Yamaoka's avatar
      lisp/gnus/gnus-group.el (gnus-read-ephemeral-bug-group): Use... · fa785a77
      Katsumi Yamaoka authored
      lisp/gnus/gnus-group.el (gnus-read-ephemeral-bug-group): Use mm-enable-multibyte instead of set-buffer-multibyte
      fa785a77
    • Paul Eggert's avatar
      * src/gfilenotify.c (monitor_to_lisp, lisp_to_monitor): · ad5ac014
      Paul Eggert authored
      Port recent fix to !USE_LSB_TAG platforms.
      ad5ac014
    • Paul Eggert's avatar
      Port GFileMonitor * hack to Qnil==0 platforms · d71659fe
      Paul Eggert authored
      Reported by Glenn Morris in: http://bugs.gnu.org/15880#112
      * gfilenotify.c (monitor_to_lisp, lisp_to_monitor): New functions.
      (dir_monitor_callback, Fgfile_add_watch, Fgfile_rm_watch): Use them.
      d71659fe
  4. 07 Jan, 2015 5 commits
  5. 06 Jan, 2015 3 commits
  6. 05 Jan, 2015 5 commits
    • Dmitry Gutov's avatar
      Add help-echo to xrefs · f5afaf9c
      Dmitry Gutov authored
      * lisp/progmodes/xref.el (xref--insert-xrefs): Add `help-echo' property
      to the references.
      f5afaf9c
    • Paul Eggert's avatar
      * lisp.h (XSYMBOL): Parenthesize id in forward decl. · 6e8fe3f8
      Paul Eggert authored
      Needed when neither optimizing nor inlining.
      Also, sort decls alphabetically.
      6e8fe3f8
    • Eli Zaretskii's avatar
      MS-Windows followup to previous commit · 5b5dab12
      Eli Zaretskii authored
       src/w32proc.c, src/w32.h, src/w32fns.c, src/w32font.c, src/w32menu.c:
       src/w32notify.c, src/w32proc.c, src/w32select.c, src/w32term.c:
       src/w32uniscribe.c: Remove declarations of Q* variables that
       represent symbols.
      5b5dab12
    • Paul Eggert's avatar
      Use 0 for Qnil · bc78ff26
      Paul Eggert authored
      Fixes Bug#15880.
      If USE_LSB_TAG, arrange for the representation of Qnil to be zero so
      that NILP (x) is equivalent to testing whether x is 0 at the
      machine level.  The overall effects of this and the previous patch
      shrink the size of the text segment by 2.3% and speeds up
      compilation of all the .elc files by about 0.5% on my platform,
      which is Fedora 20 x86-64.
      * lib-src/make-docfile.c (compare_globals):
      * src/lisp.h (lisp_h_XPNTR, lisp_h_XSYMBOL, lisp_h_XUNTAG)
      (make_lisp_symbol) [USE_LSB_TAG]:
      Symbols now tag the difference from lispsym, not the pointer.
      (lisp_h_XUNTAGBASE, TAG_SYMPTR): New macros.
      (Lisp_Int0, Lisp_Int1, Lisp_Symbol, Lisp_Misc, Lisp_String, Lisp_Cons):
      Renumber so that Lisp_Symbol is 0, so that Qnil is zero.
      (XSYMBOL): New forward decl.
      (XUNTAGBASE): New function.
      (XUNTAG): Use it.
      bc78ff26
    • Paul Eggert's avatar
      Compute C decls for DEFSYMs automatically · 58f2d6ef
      Paul Eggert authored
      Fixes Bug#15880.
      This patch also makes Q constants (e.g., Qnil) constant addresses
      from the C point of view.
      * make-docfile.c: Revamp to generate table of symbols, too.
      Include <stdbool.h>.
      (xstrdup): New function.
      (main): Don't process the same file twice.
      (SYMBOL): New constant in enum global_type.
      (struct symbol): Turn 'value' member into a union, either v.value
      for int or v.svalue for string.  All uses changed.
      (add_global): New arg svalue, which overrides value, so that globals
      can have a string value.
      (close_emacs_global): New arg num_symbols; all uses changed.
      Output lispsym decl.
      (write_globals): Output symbol globals too.  Output more
      ATTRIBUTE_CONST, now that Qnil etc. are C constants.
      Output defsym_name table.
      (scan_c_file): Move most of guts into ...
      (scan_c_stream): ... new function.  Scan for DEFSYMs and
      record symbols found.  Don't read past EOF if file doesn't
      end in newline.
      * alloc.c, bidi.c, buffer.c, bytecode.c, callint.c, casefiddle:
      * casetab.c, category.c, ccl.c, charset.c, chartab.c, cmds.c, coding.c:
      * composite.c, data.c, dbusbind.c, decompress.c, dired.c, dispnew.c:
      * doc.c, editfns.c, emacs.c, eval.c, fileio.c, fns.c, font.c, fontset.c:
      * frame.c, fringe.c, ftfont.c, ftxfont.c, gfilenotify.c, gnutls.c:
      * image.c, inotify.c, insdel.c, keyboard.c, keymap.c, lread.c:
      * macfont.m, macros.c, minibuf.c, nsfns.m, nsfont.m, nsimage.m:
      * nsmenu.m, nsselect.m, nsterm.m, print.c, process.c, profiler.c:
      * search.c, sound.c, syntax.c, term.c, terminal.c, textprop.c, undo.c:
      * window.c, xdisp.c, xfaces.c, xfns.c, xftfont.c, xmenu.c, xml.c:
      * xselect.c, xsettings.c, xterm.c:
      Remove Q vars that represent symbols (e.g., Qnil, Qt, Qemacs).
      These names are now defined automatically by make-docfile.
      * alloc.c (init_symbol): New function.
      (Fmake_symbol): Use it.
      (c_symbol_p): New function.
      (valid_lisp_object_p, purecopy): Use it.
      * alloc.c (marked_pinned_symbols):
      Use make_lisp_symbol instead of make_lisp_ptr.
      (garbage_collect_1): Mark lispsym symbols.
      (CHECK_ALLOCATED_AND_LIVE_SYMBOL): New macro.
      (mark_object): Use it.
      (sweep_symbols): Sweep lispsym symbols.
      (symbol_uses_obj): New function.
      (which_symbols): Use it.  Work for lispsym symbols, too.
      (init_alloc_once): Initialize Vpurify_flag here; no need to wait,
      since Qt's address is already known now.
      (syms_of_alloc): Add lispsym count to symbols_consed.
      * buffer.c (init_buffer_once): Compare to Qnil, not to make_number (0),
      when testing whether storage is all bits zero.
      * dispextern (struct image_type):
      * font.c (font_property_table):
      * frame.c (struct frame_parm_table, frame_parms):
      * keyboard.c (scroll_bar_parts, struct event_head):
      * xdisp.c (struct props):
      Use XSYMBOL_INIT (Qfoo) and struct Lisp_Symbol * rather than &Qfoo and
      Lisp_Object *, since Qfoo is no longer an object whose address can be
      taken.  All uses changed.
      * eval.c (run_hook): New function.  Most uses of Frun_hooks changed to
      use it, so that they no longer need to take the address of a Lisp sym.
      (syms_of_eval): Don't use DEFSYM on Vrun_hooks, as it's a variable.
      * frame.c (syms_of_frame): Add defsyms for the frame_parms table.
      * keyboard.c (syms_of_keyboard): Don't DEFSYM Qmenu_bar here.
      DEFSYM Qdeactivate_mark before the corresponding var.
      * keymap.c (syms_of_keymap): Use DEFSYM for Qmenu_bar and Qmode_line
      instead of interning their symbols; this avoids duplicates.
      (LISP_INITIALLY, TAG_PTR)
      (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END, XSYMBOL_INIT):
      New macros.
      (LISP_INITIALLY_ZERO): Use it.
      (enum symbol_interned, enum symbol_redirect, struct Lisp_Symbol)
      (EXFUN, DEFUN_ARGS_MANY, DEFUN_ARGS_UNEVALLED, DEFUN_ARGS_*):
      Move decls up, to avoid forward uses.  Include globals.h earlier, too.
      (make_lisp_symbol): New function.
      (XSETSYMBOL): Use it.
      (DEFSYM): Now just a placeholder for make-docfile.
      * lread.c (DEFINE_SYMBOLS): Define, for globals.h.
      (intern_sym): New function, with body taken from old intern_driver.
      (intern_driver): Use it.  Last arg is now Lisp integer, not ptrdiff_t.
      All uses changed.
      (define_symbol): New function.
      (init_obarray): Define the C symbols taken from lispsym.
      Use plain DEFSYM for Qt and Qnil.
      * syntax.c (init_syntax_once): No need to worry about
      Qchar_table_extra_slots.
      58f2d6ef