1. 08 Apr, 2017 10 commits
    • Michael Albinus's avatar
      Tune Tramp syntax · b7d61609
      Michael Albinus authored
      * lisp/net/tramp-cmds.el (tramp-change-syntax):
      Use `tramp-syntax-values'.
      * lisp/net/tramp-compat.el (tramp-compat-tramp-syntax): New defsubst.
      * lisp/net/tramp.el (tramp-syntax): Rename possible values.
      (tramp-syntax-values): New defun.
      (tramp-prefix-format, tramp-method-regexp)
      (tramp-postfix-method-format, tramp-prefix-ipv6-format)
      (tramp-postfix-ipv6-format, tramp-postfix-host-format)
      (tramp-completion-file-name-regexp): Use `tramp-compat-tramp-syntax'
      and changed values.
      (tramp-completion-file-name-regexp-default): Rename from
      `tramp-completion-file-name-regexp-unified'.  Adapt docstring.
      (tramp-completion-file-name-regexp-simplified): Rename from
      `tramp-completion-file-name-regexp-old-style'.  Adapt docstring.
      Use `tramp-completion-file-name-regexp-default'.
      (tramp-run-real-handler): Do not autoload any longer.
    • Mark Oteiza's avatar
      Replace more nested ifs with cond · c5f319eb
      Mark Oteiza authored
      This is a continuation of d5260473 "Replace more nested ifs with cond".
      * lisp/play/dunnet.el (dun-firstword, dun-firstwordl, dun-cat): Use
      when and cond where appropriate.
    • Mark Oteiza's avatar
      Adjust the edebug spec of if-let* · fd4b83ca
      Mark Oteiza authored
      This was fixed in Bug#24748, but now looking more closely, using gate in
      the spec seems correct.  See (info "(elisp) Backtracking").
      * lisp/emacs-lisp/subr-x.el (if-let*): Use gate in edebug spec.
    • Mark Oteiza's avatar
      Replace some uses of cl-member-if with apply · 1c69215c
      Mark Oteiza authored
      From the mhtml-mode series.  Some of the uses of cl-lib are not
      * lisp/align.el: Don't require cl-lib.
      (align-region): Use apply instead of cl-member-if.
      * lisp/emulation/viper.el: Don't require cl-lib.
      (viper-mode, this-major-mode-requires-vi-state): Use apply instead of
    • Philipp Stephani's avatar
      Validate SPEC of `dolist', cf. Bug#25477. · 98bfac68
      Philipp Stephani authored
      * lisp/subr.el (dolist): Test type and length of SPEC.
      * test/lisp/subr-tests.el (subr-tests--dolist--wrong-number-of-args):
      Add unit test.
    • Philipp Stephani's avatar
      Add unit test for Bug#26378 · 5ea696fd
      Philipp Stephani authored
      * test/lisp/vc/ediff-diff-tests.el
      (ediff-diff-tests--ediff-exec-process--nil): New unit test.
    • Lars Brinkhoff's avatar
      Fix circular read syntax for records. · 4fbfd7ad
      Lars Brinkhoff authored
      * lread.c (substitute_object_recurse): Work with records.
      * lread-tests.el (lread-record-1): New test.
    • Paul Eggert's avatar
      Deprecate copy-record in favor of copy-sequence · a2b3fea9
      Paul Eggert authored
      Since copy-sequence seems to be needed anyway for records, have it
      work on records, and remove copy-record as being superfluous.
      * doc/lispref/records.texi (Records, Record Functions):
      * lisp/emacs-lisp/cl-macs.el (cl-defstruct):
      * lisp/emacs-lisp/eieio.el (make-instance, clone):
      * test/src/alloc-tests.el (record-3):
      Use copy-sequence, not copy-record, to copy records.
      * doc/lispref/sequences.texi (Sequence Functions)
      (Array Functions): Document that aref and copy-sequence
      work on records.
      * etc/NEWS: Omit copy-record.
      * src/alloc.c (Fcopy_record): Remove.
      * src/data.c (Faref): Document that arg can be a record.
      * src/fns.c (Fcopy_sequence): Copy records, too.
    • Paul Eggert's avatar
      Fix dependency checking in src/Makefile.in · a614cd41
      Paul Eggert authored
      * src/Makefile.in (AUTO_DEPEND, DEPDIR, DEPFLAGS): Move includes of
      dependency files until after ALLOBJS is defined, since it uses ALLOBJS.
      Otherwise, some dependencies will be missed.
    • Paul Eggert's avatar
      Minor tuneup of write-region change · 6fbbfc77
      Paul Eggert authored
      * src/fileio.c (write_region): Use SCHARS, not Flength,
      on a value known to be a string.
  2. 07 Apr, 2017 11 commits
    • Noam Postavsky's avatar
      Adjust write-region so file name is at the beginning again · c3236593
      Noam Postavsky authored
      * lisp/epa-file.el (epa-file-write-region):
      * lisp/gnus/mm-util.el (mm-append-to-file):
      * lisp/jka-compr.el (jka-compr-write-region):
      * lisp/net/ange-ftp.el (ange-ftp-write-region):
      * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-write-region):
      * lisp/net/tramp-sh.el (tramp-sh-handle-write-region):
      * src/fileio.c (write_region): Put file name at the beginning and move
      number of characters to the end of the message.
    • Kaushal Modi's avatar
      Check that file argument is a string · 75824977
      Kaushal Modi authored
      * lisp/vc/ediff-diff.el (ediff-exec-process): Check that the argument
        passed to `file-local-copy' is a string (Bug#26378).  Also fix
        the existing comment for this function, and convert it to its
    • Noam Postavsky's avatar
      Fix handling of non-integer START param to write-region · 9e27e0d1
      Noam Postavsky authored
      The previous patch for Bug#354 incorrectly assumed that START would
      always be an integer.
      * lisp/epa-file.el (epa-file-write-region):
      * lisp/jka-compr.el (jka-compr-write-region):
      * lisp/net/ange-ftp.el (ange-ftp-write-region):
      * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-write-region):
      * lisp/net/tramp-sh.el (tramp-sh-handle-write-region):
      * src/fileio.c (write_region): Handle nil and string values of START.
    • Glenn Morris's avatar
    • Michael Albinus's avatar
      Add Tramp versions to `customize-package-emacs-version-alist' · 5c6b0136
      Michael Albinus authored
      * lisp/net/trampver.el (customize-package-emacs-version-alist):
      Add Tramp versions to `customize-package-emacs-version-alist'.
    • Tom Tromey's avatar
    • Lars Brinkhoff's avatar
    • Paul Eggert's avatar
      More casefiddle minor fixes · 2012839a
      Paul Eggert authored
      * src/casefiddle.c (case_character_impl): Omit unnecessary casts.
      (case_character_impl): Avoid reevaluation of CHAR_TABLE_REF.
      (GREEK_CAPITAL_LETTER_SIGMA): Fix typo in my previous change.
    • Paul Eggert's avatar
      ; Spelling and punctuation fixes · cea942e5
      Paul Eggert authored
    • Jeff Clough's avatar
      Output number of characters added to file (Bug#354) · cd0a7951
      Jeff Clough authored
      * fileio.c (write_region):
      * epa-file.el (epa-file-write-region):
      * jka-compr.el (jka-compr-write-region):
      * ange-ftp.el (ange-ftp-write-region):
      * tramp-gvfs.el (tramp-gvfs-handle-write-region):
      * tramp-sh.el (tramp-sh-handle-write-region):
      * mm-util.el (mm-append-to-file): Functions now output
      characters written in addition to file name.
      * files.texi: Added documentation to write-region and
      append-to-file describing their output.
    • Noam Postavsky's avatar
      Fix ‘!NILP (Vpurify_flag)’ assertion failure during temacs bootstrap · 4b3db0da
      Noam Postavsky authored
      The recent changes to src/casefiddle.c cause build failure as seen
          Starting program: /home/npostavs/src/emacs/emacs-bootstrapping/src/temacs
      	--batch --load loadup bootstrap
          [Thread debugging using libthread_db enabled]
          Using host libthread_db library "/usr/lib/libthread_db.so.1".
          Loading loadup.el (source)...
          Using load-path (/home/npostavs/src/emacs/emacs-bootstrapping/lisp
          Loading emacs-lisp/byte-run (source)...
          Loading emacs-lisp/backquote (source)...
          Loading subr (source)...
          Loading version (source)...
          Loading widget (source)...
          Loading custom (source)...
          Loading emacs-lisp/map-ynp (source)...
          Loading international/mule (source)...
          Loading international/mule-conf (source)...
          lread.c:3914: Emacs fatal error: assertion failed: !NILP (Vpurify_flag)
          Breakpoint 1, terminate_due_to_signal at emacs.c:363
          363	  signal (sig, SIG_DFL);
          (gdb) bt
          #0  0x0000000000579826 in terminate_due_to_signal at emacs.c:363
          #1  0x000000000060ec33 in die at alloc.c:7352
          #2  0x000000000066db40 in intern_c_string_1 at lread.c:3914
          #3  0x0000000000576884 in intern_c_string at lisp.h:3790
          #4  0x00000000005dc84f in prepare_casing_context at casefiddle.c:69
          #5  0x00000000005dd37f in casify_object at casefiddle.c:311
          #6  0x00000000005dd47f in Fcapitalize at casefiddle.c:356
          #7  0x00000000006325ac in eval_sub at eval.c:2219
          #8  0x0000000000632368 in eval_sub at eval.c:2184
          #9  0x000000000063446c in apply_lambda at eval.c:2875
          #10 0x00000000006329af in eval_sub at eval.c:2294
          #11 0x000000000062d462 in Fprogn at eval.c:449
          #12 0x000000000062d4cf in prog_ignore at eval.c:461
          #13 0x000000000062f19c in Fwhile at eval.c:982
          #14 0x00000000006321f4 in eval_sub at eval.c:2172
          #15 0x000000000062d462 in Fprogn at eval.c:449
          #16 0x000000000062f0c4 in Flet at eval.c:963
          #17 0x00000000006321f4 in eval_sub at eval.c:2172
          #18 0x0000000000632963 in eval_sub at eval.c:2290
          #19 0x000000000062d462 in Fprogn at eval.c:449
          #20 0x000000000062f0c4 in Flet at eval.c:963
          #21 0x00000000006321f4 in eval_sub at eval.c:2172
          #22 0x0000000000668caa in readevalloop at lread.c:1927
          #23 0x0000000000667253 in Fload at lread.c:1332
          #24 0x0000000000632683 in eval_sub at eval.c:2233
          #25 0x0000000000668caa in readevalloop at lread.c:1927
          #26 0x0000000000667253 in Fload at lread.c:1332
          #27 0x0000000000632683 in eval_sub at eval.c:2233
          #28 0x0000000000631be5 in Feval at eval.c:2041
          #29 0x000000000057e1af in top_level_2 at keyboard.c:1121
          #30 0x000000000062ffc7 in internal_condition_case at eval.c:1324
          #31 0x000000000057e1f0 in top_level_1 at keyboard.c:1129
          #32 0x000000000062f51e in internal_catch at eval.c:1091
          #33 0x000000000057e0ea in command_loop at keyboard.c:1090
          #34 0x000000000057d6d5 in recursive_edit_1 at keyboard.c:697
          #35 0x000000000057d8b4 in Frecursive_edit at keyboard.c:768
          #36 0x000000000057b55b in main at emacs.c:1687
          Lisp Backtrace:
          "capitalize" (0xffffcf70)
          "format" (0xffffd130)
          "define-charset" (0xffffd370)
          "while" (0xffffd560)
          "let" (0xffffd7c0)
          "dolist" (0xffffd910)
          "let" (0xffffdb70)
          "load" (0xffffdfe0)
          "load" (0xffffe4a0)
      * src/casefiddle.c (syms_of_casefiddle): Declare four new symbols:
      Qtitlecase, Qspecial_uppercase, Qspecial_lowercase and
      (prepare_casing_context): Use aforementioned symbols.
  3. 06 Apr, 2017 18 commits
    • Paul Eggert's avatar
      Merge from gnulib · 02275595
      Paul Eggert authored
      This merges some getopt fixes from Zack Weinberg, and affects only
      non-GNUish platforms.  It incorporates:
      2017-04-06 getopt-gnu: omit some duplicate code
      2017-04-06 getopt-posix: use angle-bracket include
      2017-04-06 getopt: annotate files with relationship to glibc
      2017-04-06 getopt: split up getopt.in.h and eliminate __need_getopt
      2017-04-06 getopt: better handling of ambiguous options
      2017-04-06 getopt: refactor long-option handling
      2017-04-06 getopt: tidy up _getopt_initialize a bit
      2017-04-06 getopt: merge from glibc: repetition reduction
      2017-04-06 getopt: clean up error reporting
      2017-04-06 getopt: fix fencepost error in ambiguous-W-option handling
      2017-04-06 getopt: clean up getopt.c and getopt1.c file headers
      2017-04-06 getopt: harmonize comments with glibc
      2017-04-06 getopt: remove USE_NONOPTION_FLAGS
      2017-04-06 getopt: tabify, in preparation for merge with glibc
      2017-04-06 md5, sha1, sha256, sha512: Add comments re correctness
      * build-aux/config.sub, doc/misc/texinfo.tex, lib/getopt.c:
      * lib/getopt.in.h, lib/getopt1.c, lib/getopt_int.h, lib/md5.c:
      * lib/md5.h, lib/sha1.c, lib/sha1.h, lib/sha256.c, lib/sha256.h:
      * lib/sha512.c, lib/sha512.h, lib/unistd.in.h, m4/getopt.m4:
      Copy from gnulib.
      * lib/getopt_cdefs.in.h, lib/getopt_core.h, lib/getopt_ext.h:
      * lib/getopt_pfx_core.h, lib/getopt_pfx_ext.h:
      New files, taken from gnulib.
      * lib/gnulib.mk.in, m4/gnulib-comp.m4:
    • Paul Eggert's avatar
      Minor casefiddle.c cleanups · 451a0c8b
      Paul Eggert authored
      * src/casefiddle.c: Redo recent changes to match GNU style,
      and prefer C99-style decls within blocks.
      we are merely using the Unicode name, and make it a constant
      rather than a macro.  All uses changed.
      (SMALL_SIGMA): Remove; unused.
      and make it a constant rather than a macro.  All uses changed.
      (do_casify_multibyte_string): Use ‘verify’ rather than an
      unportable static_assertion local.
    • Paul Eggert's avatar
    • Paul Eggert's avatar
      Fix 'make clean' in lib subdirectory · 360b2bf2
      Paul Eggert authored
      * lib/Makefile.in (clean): Remove *-t files.
      (mostlyclean): Remove MOSTLYCLEANFILES that are not *-t files.
      This removes files like lib/getopt.h that should be removed
      even if this configuration did not need to build them.
      (maintainer-clean): Remove TAGS here, not in distclean,
      to be consistent with ../src/Makefile.in.
    • Michael Albinus's avatar
      Add new Tramp syntax · 69061fd1
      Michael Albinus authored
      * lisp/net/tramp-cmds.el (tramp-change-syntax): New defun.
      * lisp/net/tramp.el (tramp-syntax): Change default to `def'.
      Add :set function.
      (tramp-prefix-port-format): Simplify.
      (tramp-file-name-regexp-separate): Remove.
      (tramp-initial-completion-file-name-regexp): New defconst.
      (tramp-prefix-format, tramp-prefix-regexp)
      (tramp-method-regexp, tramp-postfix-method-format)
      (tramp-postfix-method-regexp, tramp-prefix-ipv6-format)
      (tramp-prefix-ipv6-regexp, tramp-postfix-ipv6-format)
      (tramp-postfix-host-format, tramp-postfix-host-regexp)
      (tramp-file-name-structure, tramp-file-name-regexp)
      (tramp-rfn-eshadow-update-overlay-regexp): Change them to be defuns.
      (tramp-tramp-file-p, tramp-find-method)
      (tramp-dissect-file-name, tramp-make-tramp-file-name)
      (tramp-completion-dissect-file-name, tramp-clear-passwd):
      * lisp/net/tramp-ftp.el (tramp-ftp-file-name-handler):
      * lisp/net/tramp-sh.el (tramp-sh-handle-vc-registered)
      (tramp-compute-multi-hops): Use them.
    • Michal Nazarewicz's avatar
      Implement special sigma casing rule (bug#24603) · c1fa0722
      Michal Nazarewicz authored
      In Greek, a sigma character has two lower case forms which depend on
      their position in the word.  Implement logic determining it.
      * src/casefiddle.c (struct casing_context, case_character_impl): Don’t
      assume inword is true when flag is CASE_UP and false when flag is
      CASE_DOWN.  For final sigma detection we need this information tracked
      Unicode code point of different forms of sigma letter.
      (case_character): Implement support for final sigma casing.
      (do_casify_multibyte_string, do_casify_multibyte_region): Update after
      changes to case_character.
      * test/src/casefiddle-tests.el (casefiddle-tests-casing): Add test
      cases for final sigma.
    • Michal Nazarewicz's avatar
      Support casing characters which map into multiple code points (bug#24603) · b3b9b258
      Michal Nazarewicz authored
      Implement unconditional special casing rules defined in Unicode standard.
      Among other things, they deal with cases when a single code point is
      replaced by multiple ones because single character does not exist (e.g.
      ‘fi’ ligature turning into ‘FL’) or is not commonly used (e.g. ß turning
      into SS).
      * admin/unidata/SpecialCasing.txt: New data file pulled from Unicode
      standard distribution.
      * admin/unidata/README: Mention SpecialCasing.txt.
      * admin/unidata/unidata-get.el (unidata-gen-table-special-casing,
      unidata-gen-table-special-casing--do-load): New functions generating
      ‘special-uppercase’, ‘special-lowercase’ and ‘special-titlecase’
      character Unicode properties built from the SpecialCasing.txt Unicode
      data file.
      * src/casefiddle.c (struct casing_str_buf): New structure for
      representing short strings used to handle one-to-many character
      (case_character_imlp): New function which can handle one-to-many
      character mappings.
      (case_character, case_single_character): Wrappers for the above
      functions.  The former may map one character to multiple (or no)
      code points while the latter does what the former used to do (i.e.
      handles one-to-one mappings only).
      (do_casify_natnum, do_casify_unibyte_string,
      do_casify_unibyte_region): Use case_single_character.
      (do_casify_multibyte_string, do_casify_multibyte_region): Support new
      features of case_character.
      * (do_casify_region): Updated to reflact do_casify_multibyte_string
      (casify_word): Handle situation when one character-length of a word
      can change affecting where end of the word is.
      (upcase, capitalize, upcase-initials): Update documentation to mention
      limitations when working on characters.
      * test/src/casefiddle-tests.el (casefiddle-tests-char-properties):
      Add test cases for the newly introduced character properties.
      (casefiddle-tests-casing): Update test cases which are now passing.
      * test/lisp/char-fold-tests.el (char-fold--ascii-upcase,
      char-fold--ascii-downcase): New functions which behave like old ‘upcase’
      and ‘downcase’.
      (char-fold--test-match-exactly): Use the new functions.  This is needed
      because otherwise fi and similar characters are turned into their multi-
      -character representation.
      * doc/lispref/strings.texi: Describe issue with casing characters versus
      * doc/lispref/nonascii.texi: Describe the new character properties.
    • Michal Nazarewicz's avatar
      Split up casify_region function (bug#24603) · 2c87dabd
      Michal Nazarewicz authored
      No functional changes at this time but splitting casify_region into
      a function dealing with multibyte and another dealing with unibyte
      buffers will make future code changes slightly easier.
      * src/casefiddle.c (casify_region): Move most of the code into two
      new functions:
      (do_casify_multibyte_region, do_casify_unibyte_region): new functions.
    • Michal Nazarewicz's avatar
      Add support for title-casing letters (bug#24603) · 13d813b1
      Michal Nazarewicz authored
      * src/casefiddle.c (struct casing_context, prepare_casing_context): Add
      titlecase_char_table member.  It’s set to the ‘titlecase’ Unicode
      property table if capitalisation has been requested.
      (case_character): Make use of the titlecase_char_table to title-case
      initial characters when capitalising.
      * test/src/casefiddle-tests.el (casefiddle-tests--characters,
      casefiddle-tests-casing): Update test cases which are now passing.
    • Michal Nazarewicz's avatar
      Introduce case_character function · 8e5b909f
      Michal Nazarewicz authored
      Move single-character casing logic into a separate function so that
      it is collected in a single place.  This will make future changes to
      the logic easier.  This commit introduces no functionality changes.
      * src/casefiddle.c (struct casing_context, prepare_casing_context): New
      sturcture for saving casing context and function to initialise it.
      (case_character): New function which cases character base on provided
      (do_casify_integer, do_casify_multibyte_string,
      do_casify_unibyte_string, casify_object, casify_region): Convert to
      use casing_context and case_character.
    • Michal Nazarewicz's avatar
      Split casify_object into multiple functions · ec2d002f
      Michal Nazarewicz authored
      casify_object had three major cases to cover and those were mostly
      independent of each other.  Move those branches to separate function
      so it’s easier to comprehend each individual case.
      While at it, use somewhat more descriptive ch and cased variable names
      rather than c and c1.
      This commit introduces no functional changes.
      * src/casefiddle.c (casify_object): Split into…
      (do_casify_integer, do_casify_multibyte_string,
      do_casify_unibyte_string): …new functions.
    • Lars Brinkhoff's avatar
      Update documentation for type semantics of records. · 4753f3f0
      Lars Brinkhoff authored
      * objects.texi (Record Type): improve description of what
      `type-of' returns for records.
      (Type Descriptors): new section.
      * elisp.texi: reference it.
      * records.texi (Records): reference it.  Document behaviour when type
      slot is a record.
      * alloc.c (Fmake_record, Frecord): mention type desciptors.
    • Stefan Monnier's avatar
    • Tom Tromey's avatar
      require cl-lib to fix fallout from mhtml series · f23c82d1
      Tom Tromey authored
      * lisp/align.el, lisp/calc/calc-embed.el, lisp/cedet/semantic.el,
      lisp/emulation/viper.el: Require cl-lib.
    • Ken Raeburn's avatar
      In CANNOT_DUMP builds, allow editing of files named "dump". · 7a21bdce
      Ken Raeburn authored
      * lisp/loadup.el: Perform the "dump" or "bootstrap" actions like
      calling dump-emacs only if dump-emacs is defined; otherwise, don't
      treat those command-line argument specially.
    • Ken Raeburn's avatar
      In CANNOT_DUMP builds, don't prepare for unexec. · 8ca2bd1c
      Ken Raeburn authored
      Having a command-line argument of "dump" or "bootstrap" would trigger
      behavior like not installing signal handlers.  In CANNOT_DUMP modes,
      we should get signal handlers installed regardless of whatever funny
      file names we decide to edit.
      src/emacs.c (main) [CANNOT_DUMP]: Don't enable the "dumping"
      alterations to initialization that prepares the process for unexec.
    • Ken Raeburn's avatar
      Allow a CANNOT_DUMP build to use exec-path during bootstrap. · dd09e72e
      Ken Raeburn authored
      During a bootstrap, loading rmail.el invokes movemail to determine its
      flavor, but call-process doesn't work if exec-path is nil.
      * lisp/loadup.el: Only clear exec-path if dumping.
    • Ken Raeburn's avatar
      Fix CANNOT_DUMP build on Darwin/macOS. · d15719d3
      Ken Raeburn authored
      * src/conf_post.h (malloc, realloc, free) [DARWIN_OS && emacs &&
      CANNOT_DUMP]: Don't define as unexec_malloc, etc.
      * src/emacs.c (main): Don't call unexec_init_emacs_zone.
  4. 05 Apr, 2017 1 commit
    • Tom Tromey's avatar
      add two more mhtml tests · 04a5ce0b
      Tom Tromey authored
      * test/manual/indent/html-multi-2.html: New file.
      * test/manual/indent/html-multi-3.html: New file.