1. 22 Jan, 2015 4 commits
    • Stefan Monnier's avatar
      Avoid generating invalid usage info for pathological function · 938bca8e
      Stefan Monnier authored
      Fixes: debbugs:19645
      * lisp/help.el (help-make-usage): Don't turn a "_" arg into an empty-string.
      * lisp/emacs-lisp/cl-generic.el (cl--generic-lambda): Don't confuse a string
      body with a docstring.
    • Paul Eggert's avatar
      Better isolate code that assumes NIL_IS_ZERO · 74244d23
      Paul Eggert authored
      Suggested by Stefan Monnier in:
      * alloc.c (allocate_pseudovector):
      Use memclear, not memsetnil, to remove a 'verify'.
      * callint.c (Fcall_interactively):
      * dispnew.c (realloc_glyph_pool):
      * xdisp.c (init_iterator):
      Use memclear, not memset, to remove a 'verify'.
      * lisp.h (memclear): Rename from memsetnil, and take a byte
      count rather than a word count.  All callers changed.
    • Dmitry Gutov's avatar
      xref: Replace defgeneric and defmethod with cl- counterparts · 03346fb0
      Dmitry Gutov authored
      * lisp/progmodes/xref.el (xref-location-marker, xref-location-group):
      Use `cl-defgeneric' and `cl-defmethod' instead of the EIEIO
      * lisp/progmodes/etags.el (xref-location-marker): Same.
    • Dmitry Gutov's avatar
      xref: Input history and minor tweaks · a17a5dae
      Dmitry Gutov authored
      * lisp/progmodes/xref.el (xref--current): Rename from `xref--selected'.
      (xref--inhibit-mark-current): Rename from
      `xref--inhibit-mark-selected'.  Update the usages.
      (xref-quit): Reword the docstring.  Kill buffers after quitting
      windows instead of before.
      (xref--insert-xrefs): Tweak help-echo.
      (xref--read-identifier-history, xref--read-pattern-history):
      New variables.
      (xref--read-identifier, xref-find-apropos): Use them.
  2. 21 Jan, 2015 6 commits
    • Ulrich Müller's avatar
      Allow update-game-score to run sgid instead of suid. · 20f66485
      Ulrich Müller authored
      * configure.ac (gamegroup): New AC_SUBST.
      (--with-gameuser): Allow to specify a group instead of a user.
      In the default case, check at configure time if a 'games' user
      * lib-src/update-game-score.c: Allow the program to run sgid
      instead of suid, in order to match common practice for most games.
      (main): Check if we are running sgid.  Pass appropriate file
      permission bits to 'write_scores'.
      (write_scores): New 'mode' argument, instead of hardcoding 0644.
      (get_prefix): Update error message.
      * lib-src/Makefile.in (gamegroup): New variable, set by configure.
      ($(DESTDIR)${archlibdir}): Handle both suid or sgid when
      installing the 'update-game-score' program.
      * lisp/play/gamegrid.el (gamegrid-add-score-with-update-game-score):
      Allow the 'update-game-score' helper program to run suid or sgid.
    • Stefan Monnier's avatar
      * lisp/emacs-lisp/eieio*.el: Fix up warnings and improve compatibility · 59e7fe6d
      Stefan Monnier authored
      Fixes: debbugs:19645
      * lisp/emacs-lisp/cl-generic.el (cl-defgeneric): Add support for `declare'.
      (cl--generic-setf-rewrite): Setup the setf expander right away.
      (cl-defmethod): Make sure the setf expander is setup before we expand
      the body.
      (cl-defmethod): Silence byte-compiler warnings.
      (cl-generic-define-method): Shuffle code to change return value.
      (cl--generic-method-info): New function, extracted from
      (cl--generic-describe): Use it.
      * lisp/emacs-lisp/eieio-speedbar.el:
      * lisp/emacs-lisp/eieio-datadebug.el:
      * lisp/emacs-lisp/eieio-custom.el:
      * lisp/emacs-lisp/eieio-base.el: Use cl-defmethod.
      * lisp/emacs-lisp/eieio-compat.el (eieio--defmethod): Avoid no-next-method
      errors when there's a `before' but no `primary'.
      (next-method-p): Return nil rather than signal an error.
      (eieio-defgeneric): Remove bogus (fboundp 'method).
      * lisp/emacs-lisp/eieio-opt.el: Adapt to cl-generic.
      (eieio--specializers-apply-to-class-p):	New function.
      (eieio-all-generic-functions): Use it.
      (eieio-method-documentation): Use it as well as cl--generic-method-info.
      Change format of return value.
      (eieio-help-class): Adapt accordingly.
      * lisp/emacs-lisp/eieio.el: Use cl-defmethod.
      (defclass): Generate cl-defmethod calls; use setf methods for :accessor.
      (eieio-object-name-string): Declare as obsolete.
      * test/automated/cl-generic-tests.el (setf cl--generic-2): Make sure
      the setf can be used already in the body of the method.
    • Glenn Morris's avatar
      Auto-commit of loaddefs files. · 41efcf4d
      Glenn Morris authored
    • Dmitry Gutov's avatar
      Remap quit-window to xref-quit in xref buffers · e7697d97
      Dmitry Gutov authored
      Fixes: debbugs:19466
      * lisp/progmodes/xref.el (xref--xref-buffer-mode-map): Define before
      the major mode.  Remap `quit-window' to `xref-quit'.
      (xref--xref-buffer-mode): Inherit from special-mode.
    • Dmitry Gutov's avatar
      xref: Keep track of temporary buffers · 956b13c5
      Dmitry Gutov authored
      Fixes: debbugs:19466
      xref: Keep track of temporary buffers.
      * lisp/progmodes/xref.el (xref--temporary-buffers, xref--selected)
      (xref--inhibit-mark-selected): New variables.
      (xref--mark-selected): New function.
      (xref--show-location): Maybe add the buffer to
      `xref--temporary-buffers', add `xref--mark-selected' to
      `buffer-list-update-hook' there.
      (xref--window): Add docstring.
      (xref-quit): Rename from `xref--quit'.  Update both references.
      Add KILL argument.  When it's non-nil, kill the temporary buffers
      that haven't been selected by the user.
      (xref--show-xref-buffer): Change the second argument to alist,
      extract the values for `xref--window' and
      `xref--temporary-buffers' from it.  Add `xref--mark-selected' to
      `buffer-list-update-hook' to each buffer in the list.
      (xref--show-xrefs): Move the logic of calling `xref-find-function'
      here.  Save the difference between buffer lists before and after
      it's called as "temporary buffers", and `pass it to
      (xref--find-definitions, xref-find-references)
      (xref-find-apropos): Update accordingly.
    • Artur Malabarba's avatar
  3. 20 Jan, 2015 19 commits
    • Paul Eggert's avatar
      Undo port to hypothetical nonzero Qnil case · 0dd19ac8
      Paul Eggert authored
      This mostly undoes the previous change in this area.  See:
      * alloc.c (allocate_pseudovector):
      * callint.c (Fcall_interactively):
      * dispnew.c (realloc_glyph_pool):
      * fringe.c (init_fringe):
      * lisp.h (memsetnil):
      * xdisp.c (init_iterator):
      Simplify by assuming that Qnil is zero, but verify the assumption.
      * lisp.h (NIL_IS_ZERO): Revert back to this symbol, removing
      NIL_IS_NONZERO.  All uses changed.
    • Stefan Monnier's avatar
      lisp/emacs-lisp/eieio*.el: Rewrite our generics on top of cl-generic · 3a8312d0
      Stefan Monnier authored
      * lisp/emacs-lisp/eieio-generic.el: Remove.
      (defgeneric, defmethod): Move to eieio-compat.el.  Mark obsolete.
      * lisp/emacs-lisp/eieio-compat.el: New file.
      * lisp/emacs-lisp/eieio.el: Don't require eieio-generic any more.
      * lisp/emacs-lisp/eieio-core.el (eieio--slot-originating-class-p):
      Remove unused function.
      (eieio-defclass): Move to eieio-compat.el.
      * lisp/emacs-lisp/macroexp.el (macroexp-macroexpand): New function.
      (macroexp--expand-all): Use it.
      * lisp/emacs-lisp/bytecomp.el (byte-compile-recurse-toplevel): Here too.
    • Michal Nazarewicz's avatar
      paragraphs: update sentence-end-base :version after changing the default · f948b5d9
      Michal Nazarewicz authored
      The default value of the `sentence-end-base' defcustom has been changed
      in ‘recognise more Unicode characters as end of sentence’ commit but
      :version has not been updated accordingly.  Fix that.
    • Jorgen Schaefer's avatar
      Removed test with spurious failures. · db5d4115
      Jorgen Schaefer authored
      * automated/package-test.el (package-test-install-prioritized):
      Removed test due to unreproducable failures.
    • Jan Djärv's avatar
      Fix double chars in NS port. · a53b9132
      Jan Djärv authored
      Fixes: debbugs:19531
      * nsterm.m (EV_TRAILER2): Set Vinhibit_quit to Qt.
    • Michal Nazarewicz's avatar
      eldoc: modify `eldoc-documentation-function' using `add-function' · fd020a29
      Michal Nazarewicz authored
      * lisp/emacs-lisp/eldoc.el (eldoc-documentation-function): Describe how
      major modes should use `add-function' to alter value of the variable.
      * lisp/hexl.el (hexl-mode): Set `eldoc-documentation-function' using
      `add-function' so the default value is always used.
      * lisp/ielm.el (inferior-emacs-lisp-mode): Set
      `eldoc-documentation-function' using `add-function' so the default
      value is always used.
      * lisp/progmodes/cfengine.el (cfengine3-mode): Set
      `eldoc-documentation-function' using `add-function' so the default
      value is always used.
      * lisp/progmodes/elisp-mode (emacs-lisp-mode): Set
      `eldoc-documentation-function' using `add-function' so the default
      value is always used.
      * lisp/progmodes/octave.el (octave-mode): Set
      `eldoc-documentation-function' using `add-function' so the default
      value is always used.
      * lisp/progmodes/python.el (python-mode): Set
      `eldoc-documentation-function' using `add-function' so the default
      value is always used.
      * lisp/simple.el (read--expression): Set `eldoc-documentation-function'
      using `add-function' so the default value is always used.
    • Michal Nazarewicz's avatar
      descr-text: add `describe-char-eldoc' describing character at point · 81681ed9
      Michal Nazarewicz authored
      * lisp/descr-text.el (describe-char-eldoc): New function returning
      basic Unicode codepoint information (e.g. name) about character
      at point.  It is meant to be used as a default value of the
      `eldoc-documentation-function' variable.
      (describe-char-eldoc--format, describe-char-eldoc--truncate):
      New helper functions for `describe-char-eldoc' function.
      * tests/automated/descr-text-test.el: New file with tests for
      `describe-char-eldoc--truncate', `describe-char-eldoc--format',
      and `describe-char-eldoc'.
    • Michal Nazarewicz's avatar
      paragraphs: recognise more Unicode characters as end of sentence · 11e161f5
      Michal Nazarewicz authored
      * lisp/textmodes/paragraphs.el (sentence-end-base): Include an
      ellipsis (…) and interrobang (‽) characters as end of a sentence,
      and a closing single quote (’) as an end of a quote.
    • Michal Nazarewicz's avatar
    • Michal Nazarewicz's avatar
      tildify: add `tildify-double-space-undos' · d9af6e01
      Michal Nazarewicz authored
      * lisp/textmodes/tildify.el (tildify-double-space-undos): A new
      variable specifying whether pressing space in `tildify-mode' after
      a space has been replaced with hard space undos the substitution.
      (tildify-space): Add code branch for handling `tildify-doule-space'.
      * tests/automated/tildify-tests.el (tildify-space-undo-test--test):
      A new helper function for testing `tildify-double-space-undos'
      behaviour in the `tildify-space' function.
      (tildify-space-undo-test-html, tildify-space-undo-test-html-nbsp)
      (tildify-space-undo-test-xml, tildify-space-undo-test-tex): New
      tests for `tildify-doule-space-undos' behaviour.
    • Michal Nazarewicz's avatar
      tildify: add `tildify-space' and `tildify-mode' · 571441fc
      Michal Nazarewicz authored
      * lisp/textmodes/tildify.el (tildify-space): A new function
      which can be used as a `post-self-insert-hook' to automatically
      convert spaces into hard spaces.
      (tildify-space-pattern): A new variable specifying pattern where
      `tildify-space' should take effect.
      (tildify-space-predicates): A new variable specifying list of
      predicate functions that all must return non-nil for
      `tildify-space' to take effect.
      (tildify-space-region-predicate): A new functions meant to be
      used as a predicate in `tildify-space-predicates' list.
      (tildify-mode): A new minor mode enabling `tildify-space' as a
      * tests/automated/tildify-tests.el (tildify-space-test--test):
      A new helper function for testing `tildify-space' function.
      (tildify-space-test-html, tildify-space-test-html-nbsp)
      (tildify-space-test-xml, tildify-space-test-tex): New tests for
      `tildify-space' function.
    • Dmitry Antipov's avatar
      Prefer xlispstrdup to avoid dumb calls to strlen · f9775f21
      Dmitry Antipov authored
      * nsfont.m (ns_get_family):
      * nsterm.m (ns_term_init):
      * w32fns.c (w32_window):
      * xfns.c (x_window, Fx_select_font): Use xlispstrdup.
    • Paul Eggert's avatar
      * dispnew.c: Remove no-longer-valid comment. · d13fc291
      Paul Eggert authored
    • Daniel Colascione's avatar
      Make vc-dir default to repository root · f3024754
      Daniel Colascione authored
      * lisp/vc/vc-dir.el (vc-dir): Default to repository root, not
    • Paul Eggert's avatar
      Correct an old fix for GTK font selection · ef5a526f
      Paul Eggert authored
      * gtkutil.c (xg_get_font): Fix off-by-2 typo.
      Fixes: bug#3228
    • Paul Eggert's avatar
      Fix minor bugs with printing null bytes · 97bf9238
      Paul Eggert authored
      * minibuf.c (read_minibuf_noninteractive):
      * xdisp.c (Ftrace_to_stderr) [GLYPH_DEBUG]:
      Work even if the Lisp string contains a null byte.
    • Dmitry Gutov's avatar
      Expand xref help-echo string · 3ca37be9
      Dmitry Gutov authored
      * lisp/progmodes/xref.el (xref--insert-xrefs): Expand help-echo string.
    • Dmitry Gutov's avatar
      Use etags-goto-tag-location in etags xref backend · 05fb53a1
      Dmitry Gutov authored
      * progmodes/etags.el (xref-etags-location): New class.
      (xref-make-etags-location): New function.
      (etags--xref-find-definitions): Use it.
      (xref-location-marker): New method implementation.
      * lisp/progmodes/xref.el: Mention that xref-location is an EIEIO class.
    • Paul Eggert's avatar
      Port to hypothetical case where Qnil is nonzero · 347e0144
      Paul Eggert authored
      * alloc.c (allocate_pseudovector):
      * callint.c (Fcall_interactively):
      * coding.c (syms_of_coding):
      * dispnew.c (realloc_glyph_pool):
      * fringe.c (init_fringe):
      * lisp.h (memsetnil):
      * xdisp.c (init_iterator):
      Port to the currently-hypothetical case where Qnil is nonzero.
      * dispnew.c (adjust_glyph_matrix): Remove unnecessary verification,
      as there are no Lisp_Object values in the data here.
      * lisp.h (NIL_IS_NONZERO): New symbol, replacing NIL_IS_ZERO.
      All uses changed.  Define only if not already defined, so that one
      can debug with -DNIL_IS_NONZERO.
      * xdisp.c (init_iterator): Remove unnecessary initializations to 0.
  4. 19 Jan, 2015 8 commits
    • Eli Zaretskii's avatar
      Verify that Qnil is zero before relying on that in redisplay. · fb6462f0
      Eli Zaretskii authored
       src/dispnew.c (adjust_glyph_matrix, realloc_glyph_pool): Verify that
       Qnil is represented as zero, before using that to initialize parts
       of the glyph structure.
       src/xdisp.c (init_iterator): Verify that Qnil is represented as
       zero, before using that to initialize parts of the iterator
    • Dmitry Gutov's avatar
      Fixup ChangeLog · 39585cfd
      Dmitry Gutov authored
    • Dmitry Gutov's avatar
    • Jonas Bernoulli's avatar
      Set up ido keymaps only once · db2ed6b7
      Jonas Bernoulli authored
      * lisp/ido (ido-common-completion-map)
      (ido-file-completion-map, ido-buffer-completion-map): Set up key
      bindings when each variable is defined.
      (ido-completion-map): Move definition.
      (ido-init-completion-maps): Noop.
      (ido-common-initialization): Don't call it.
      (ido-setup-completion-map): Improve doc-string, cleanup.
      Fixes: debbugs:17000
    • Ivan Shmakov's avatar
      Fix the value default-directory gets in custom-make-dependencies. · 2e8d209f
      Ivan Shmakov authored
      * lisp/cus-dep.el (custom-make-dependencies): Ensure that
      default-directory is interpreted as a directory (see bug#19140.)
    • Paul Eggert's avatar
      Prefer memset to repeatedly assigning Qnil · b7f83add
      Paul Eggert authored
      * alloc.c (allocate_pseudovector): Catch more bogus values.
      * alloc.c (allocate_pseudovector):
      * callint.c (Fcall_interactively):
      * coding.c (syms_of_coding):
      * fringe.c (init_fringe):
      Verify that Qnil == 0.
      * callint.c (Fcall_interactively):
      * eval.c (Fapply, Ffuncall):
      * fns.c (mapcar1, larger_vector):
      * font.c (font_expand_wildcards):
      * fringe.c (init_fringe):
      Prefer memset to assigning zeros by hand.
      * callint.c (Fcall_interactively):
      Remove duplicate assignment of Qnil to args[i].
      * coding.c (syms_of_coding):
      Prefer LISP_INITIALLY_ZERO to assigning zeros by hand.
      * fileio.c (Ffile_selinux_context):
      Rewrite to avoid need for Lisp_Object array.
      * lisp.h (XLI_BUILTIN_LISPSYM): New macro.
      (NIL_IS_ZERO): New constant.
      (memsetnil): New function.
    • Dmitry Gutov's avatar
      xref: Use other-window-scroll-buffer and user-error · 9592a014
      Dmitry Gutov authored
      * lisp/progmodes/xref.el (xref--display-position):
      Set `other-window-scroll-buffer'.
      (xref-goto-xref): Use `user-error'.
    • Dmitry Gutov's avatar
      Use quit-window to hide buffers temporarily displayed by xref · 36bfd694
      Dmitry Gutov authored
      * lisp/progmodes/xref.el (xref--display-history): New variable.
      (xref--window-configuration): Remove.
      (xref--save-to-history): New function.
      (xref--display-position): Use it.  Add new argument.
      (xref--restore-window-configuration): Remove.
      (xref--show-location, xref-show-location-at-point): Update
      (xref--xref-buffer-mode): Don't use `pre-command-hook'.
      (xref--quit): New command.
      (xref-goto-xref): Use it.
      (xref--xref-buffer-mode-map): Bind `q' to it.
  5. 18 Jan, 2015 3 commits
    • Dmitry Gutov's avatar
      Perform xref jump even inside indentation or at eol · b87d7cc2
      Dmitry Gutov authored
      * lisp/progmodes/xref.el (xref-goto-xref): Perform xref jump even inside
      indentation or at eol.
    • Stefan Monnier's avatar
      * lisp/emacs-lisp/eieio-core.el: Add `subclass' specializer for cl-generic. · 1f545d33
      Stefan Monnier authored
      (eieio--generic-subclass-tagcode, eieio--generic-subclass-tag-types):
      New functions.
      (cl-generic-tagcode-function, cl-generic-tag-types-function): Use them.
      * test/automated/eieio-test-methodinvoke.el (eieio-test-cl-generic-1):
      Test `subclass' specializer.
    • Stefan Monnier's avatar
      EIEIO&cl-generic: Add obsolescence warnings and fix corner case · 2a61bd00
      Stefan Monnier authored
      * lisp/emacs-lisp/cl-generic.el (cl-generic-define-method): Correctly handle
      introduction of a new dispatch argument.
      (cl--generic-cache-miss): Handle dispatch on an argument which was not
      considered as dispatchable for this method.
      (cl-defmethod): Warn when adding a method to an obsolete generic function.
      (cl--generic-lambda): Make sure it works if cl-lib is not yet loaded.
      * lisp/emacs-lisp/eieio-generic.el (eieio--defgeneric-init-form):
      Use autoloadp.
      * lisp/emacs-lisp/eieio.el (defclass): Add obsolescence warning for the
      `newname' argument.
      * test/automated/cl-generic-tests.el (cl-generic-test-10-weird): New test.
      Rename other tests to preserve ordering.