about summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
authorDaniel Shahaf <danielsh@apache.org>2020-01-15 22:49:09 +0000
committerDaniel Shahaf <danielsh@apache.org>2020-01-15 22:49:09 +0000
commite899c21863a69226b4e650940c327a3b460023c0 (patch)
tree58e626a6f5c3c38e88c729d756ad563c10a80787 /Src
parent22c0fe02a53bedb03f6aef5d0e476bbadc655995 (diff)
parentc7bc62aa0674d3677ce019333f4b8cd95aa8d189 (diff)
downloadzsh-e899c21863a69226b4e650940c327a3b460023c0.tar.gz
zsh-e899c21863a69226b4e650940c327a3b460023c0.tar.xz
zsh-e899c21863a69226b4e650940c327a3b460023c0.zip
Merge remote-tracking branch 'origin/master' into 5.9
Right now, as we're preparing to tag the 5.8 release, the 5.9 branch is
maintained as a topic branch off master.

* origin/master:
  45287: zshexpn: Describe parameter elision and add some introductory prose
  45302: bin_umask(): Queue signals around umask().
  users/24656: docs: Add an example of setting and querying zstyles
  users/24659: Cross-ref doc for matchers.
  45296: D02glob: Clean up after test from users/24633
  45290: New helper script for listing XFail tests.
  users/24633: Add an xfail test for users/24619.
  unposted: additional typo fix
  45280: _git: add -local variants
  users/24628 (fixed): More doc for selectw-word-style widgets.
  45266: Fix losetup completion, broken in da085b7a20729401c725f91ae930200d0deda64f (41720).
  unposted: Fix punctuation.
  use /dev/fd on Cygwin for process substitution
  unposted: Two additional typo fixes.
  Fix typos reported by codespell in shell code
  Fix typos reported by codespell in Src/
  45269: Fix misspellings in completions and elsewhere.
  45261: _gcc: Detect clang-as-gcc
  unposted: internal: Remove Vim modeline that interferes with ztst.vim.
  unposted: internal: ztst.vim: Use :syn-sync to work around (#x) and "`\\\\\\\\`" confusing the highlighting.
  unposted: internal: zyodl.vim: Support glob qualifiers in example()'s
  unposted: internal: zyodl.vim: Support yodl comments.
  github #44: Allow completion for picocom to list symlinks to character devices
  45245: _gcc: add some clang specific warnings
  45231: _rsync: When completing remote modules, ignore more of the motd.
  unposted: _tac: Eliminate superfluous variable
  45226: _man: Improve completion of file paths
  45184: Clarify documentation of %-sequences understood by compadd -[Xx]
  45239: Remove 'appendhistory' from zsh-newuser-install
  45218: add more options to swaks completion
  45196: fix completion after make -C, allowing for -C being used multiple times
  unposted (after 45183): Fix yodl error: "contrib.yo:4457: No macro: back(...)".
  45181: Fix workers/45164: ${(S)%%} will now consider the empty string as a potential match.
  45183: Improve documentation examples
  unposted: Add some tests for ${(S)}, including a regression test for workers/45164.
  45169/0002 (tweaked for trailing newlines): Add an expected-to-fail test for workers/44007.
  45169/0001: In the test suite, allow test cases to be marked as expected to fail.
  users/24582 + users/24583: Add regression tests for the previous commit.
  24581: Fix array assignments in shell word splitting and completion.
  45160: zshexpn: Expand documentation of (S)
  45150 + 45152: zshexpn: Use a more minimal example in the documentation of (#b).
  unposted: internal: Vim ztst support: Add an ftplugin in addition to the syntax highlighter.
  45130: _multi_parts: Always pass -f to compadd if given by caller
  unposted: zerrmsg(): Fix macro guard missed in previous commit
  unposted: ChangeLog for last commit
  internal: Allow %L in zerrmsg() in non-debug builds, too.
Diffstat (limited to 'Src')
-rw-r--r--Src/Modules/curses.c2
-rw-r--r--Src/Modules/db_gdbm.c2
-rw-r--r--Src/Modules/parameter.c2
-rw-r--r--Src/Modules/zftp.c2
-rw-r--r--Src/Zle/comp.h6
-rw-r--r--Src/Zle/compcore.c2
-rw-r--r--Src/Zle/compctl.c2
-rw-r--r--Src/Zle/complete.c2
-rw-r--r--Src/Zle/compmatch.c2
-rw-r--r--Src/Zle/compresult.c2
-rw-r--r--Src/Zle/computil.c2
-rw-r--r--Src/Zle/zle_keymap.c2
-rw-r--r--Src/Zle/zle_main.c2
-rw-r--r--Src/Zle/zle_refresh.c2
-rw-r--r--Src/Zle/zle_tricky.c4
-rw-r--r--Src/builtin.c5
-rw-r--r--Src/glob.c4
-rw-r--r--Src/hist.c10
-rw-r--r--Src/pattern.c2
-rw-r--r--Src/sort.c2
-rw-r--r--Src/utils.c4
-rw-r--r--Src/zsh.h4
-rw-r--r--Src/ztype.h2
23 files changed, 40 insertions, 29 deletions
diff --git a/Src/Modules/curses.c b/Src/Modules/curses.c
index a60dfcbf8..19f285e34 100644
--- a/Src/Modules/curses.c
+++ b/Src/Modules/curses.c
@@ -1519,7 +1519,7 @@ zccmd_resize(const char *nam, char **args)
             // is not available.
             return 0;
         } else {
-            // Without this call some window moves are innacurate. Tested on
+            // Without this call some window moves are inaccurate. Tested on
             // OS X ncurses 5.4, Homebrew ncursesw 6.0-2, Arch Linux ncursesw
             // 6.0, Ubuntu 14.04 ncurses 5.9, FreeBSD ncursesw.so.8
             //
diff --git a/Src/Modules/db_gdbm.c b/Src/Modules/db_gdbm.c
index 12dd839cf..b8e7c76c6 100644
--- a/Src/Modules/db_gdbm.c
+++ b/Src/Modules/db_gdbm.c
@@ -766,7 +766,7 @@ static int remove_tied_name( const char *name ) {
 
 /*
  * Unmetafy that:
- * - duplicates bufer to work on it,
+ * - duplicates buffer to work on it,
  * - does zalloc of exact size for the new string,
  * - restores work buffer to original content, to restore strlen
  */
diff --git a/Src/Modules/parameter.c b/Src/Modules/parameter.c
index 76824cf58..ef9148d7b 100644
--- a/Src/Modules/parameter.c
+++ b/Src/Modules/parameter.c
@@ -1552,7 +1552,7 @@ setpmnameddirs(Param pm, HashTable ht)
 	    }
 	}
 
-    /* The INTERACTIVE stuff ensures that the dirs are not immediatly removed
+    /* The INTERACTIVE stuff ensures that the dirs are not immediately removed
      * when the sub-pms are deleted. */
 
     i = opts[INTERACTIVE];
diff --git a/Src/Modules/zftp.c b/Src/Modules/zftp.c
index 8bebc020d..e8e239e76 100644
--- a/Src/Modules/zftp.c
+++ b/Src/Modules/zftp.c
@@ -237,7 +237,7 @@ enum {
 /*
  * We keep an fd open for communication between the main shell
  * and forked off bits and pieces.  This allows us to know
- * if something happend in a subshell:  mode changed, type changed,
+ * if something happened in a subshell:  mode changed, type changed,
  * connection was closed.  If something too substantial happened
  * in a subshell --- connection opened, ZFTP_USER and ZFTP_PWD changed
  * --- we don't try to track it because it's too complicated.
diff --git a/Src/Zle/comp.h b/Src/Zle/comp.h
index 743a2e3ac..2e3249b52 100644
--- a/Src/Zle/comp.h
+++ b/Src/Zle/comp.h
@@ -35,7 +35,7 @@ typedef struct cexpl *Cexpl;
 typedef struct cmgroup *Cmgroup;
 typedef struct cmatch *Cmatch;
 
-/* This is for explantion strings. */
+/* This is for explanation strings. */
 
 struct cexpl {
     int always;                 /* display even without matches */
@@ -126,8 +126,8 @@ struct cmatch {
 
 #define CMF_FILE     (1<< 0)	/* this is a file */
 #define CMF_REMOVE   (1<< 1)	/* remove the suffix */
-#define CMF_ISPAR    (1<< 2)	/* is paramter expansion */
-#define CMF_PARBR    (1<< 3)	/* paramter expansion with a brace */
+#define CMF_ISPAR    (1<< 2)	/* is parameter expansion */
+#define CMF_PARBR    (1<< 3)	/* parameter expansion with a brace */
 #define CMF_PARNEST  (1<< 4)	/* nested parameter expansion */
 #define CMF_NOLIST   (1<< 5)	/* should not be listed */
 #define CMF_DISPLINE (1<< 6)	/* display strings one per line */
diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c
index 9b8545360..7e3badc57 100644
--- a/Src/Zle/compcore.c
+++ b/Src/Zle/compcore.c
@@ -1492,7 +1492,7 @@ set_comp_sep(void)
      *     are specially handled (but currently only if RCQUOTES is not
      *     set, which isn't necessarily correct if the quotes were typed by
      *     the user).
-     * osq: c.f. odq, taking account of Snull's and embeded "'"'s.
+     * osq: c.f. odq, taking account of Snull's and embedded "'"'s.
      * qttype: type of quotes using standard QT_* definitions.
      * lsq: when quoting is single quotes (QT_SINGLE), counts the offset
      *      adjustment needed in the word being examined in the lexer loop.
diff --git a/Src/Zle/compctl.c b/Src/Zle/compctl.c
index 1dcec387d..08355d1b9 100644
--- a/Src/Zle/compctl.c
+++ b/Src/Zle/compctl.c
@@ -1726,7 +1726,7 @@ static Patprog patcomp, filecomp;
  * lppre/lpsuf -- the path prefix/suffix, unexpanded                       *
  * fpre/fsuf   -- prefix/suffix of the pathname component the cursor is in *
  * prpre       -- ppre in expanded form usable for opendir                 *
- * qipre, qisuf-- ingnored quoted string                                   *
+ * qipre, qisuf-- ignored quoted string                                   *
  *                                                                         *
  * The integer variables hold the lengths of lpre, lsuf, rpre, rsuf,       *
  * fpre, fsuf, lppre, and lpsuf.  noreal is non-zero if we have rpre/rsuf. */
diff --git a/Src/Zle/complete.c b/Src/Zle/complete.c
index 7d9751fa6..7beb6d847 100644
--- a/Src/Zle/complete.c
+++ b/Src/Zle/complete.c
@@ -84,7 +84,7 @@ char *compiprefix,
 Param *comprpms;
 
 /* 
- * An array of Param structures for elemens of $compstate; see
+ * An array of Param structures for elements of $compstate; see
  * 'compkparams' below.
  *
  * See CP_KEYPARAMS.
diff --git a/Src/Zle/compmatch.c b/Src/Zle/compmatch.c
index 1cdbb8a48..cc4c3eca9 100644
--- a/Src/Zle/compmatch.c
+++ b/Src/Zle/compmatch.c
@@ -1399,7 +1399,7 @@ pattern_match_restrict(Cpattern p, Cpattern wp, convchar_t *wsc, int wsclen,
 	if (prestrict->tp == CPAT_CHAR) {
 	    /*
 	     * Easy case: restricted to an exact character on
-	     * the line.  Procede as normal.
+	     * the line.  Proceed as normal.
 	     */
 	    c = prestrict->u.chr;
 	} else {
diff --git a/Src/Zle/compresult.c b/Src/Zle/compresult.c
index 05799399d..30fc60b78 100644
--- a/Src/Zle/compresult.c
+++ b/Src/Zle/compresult.c
@@ -827,7 +827,7 @@ do_ambiguous(void)
 	 * if the completion is completely ambiguous') is set, and some    *
 	 * prefix was inserted, return now, bypassing the list-displaying  *
 	 * code.  On the way, invalidate the list and note that we don't   *
-	 * want to enter an AUTO_MENU imediately.                          */
+	 * want to enter an AUTO_MENU immediately.                          */
 	if ((uselist == 3 ||
 	     (!uselist && isset(BASHAUTOLIST) && isset(LISTAMBIGUOUS))) &&
 	    la && iforcemenu != -1) {
diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c
index cb1c01042..90db8b4b8 100644
--- a/Src/Zle/computil.c
+++ b/Src/Zle/computil.c
@@ -967,7 +967,7 @@ struct caarg {
 #define CAA_RARGS  4
 #define CAA_RREST  5
 
-/* The cache of parsed descriptons. */
+/* The cache of parsed descriptions. */
 
 #define MAX_CACACHE 8
 static Cadef cadef_cache[MAX_CACACHE];
diff --git a/Src/Zle/zle_keymap.c b/Src/Zle/zle_keymap.c
index a5cf1011b..d13aed594 100644
--- a/Src/Zle/zle_keymap.c
+++ b/Src/Zle/zle_keymap.c
@@ -55,7 +55,7 @@ struct keymapname {
     HashNode next;	/* next in the hash chain */
     char *nam;		/* name of the keymap */
     int flags;		/* various flags (see below) */
-    Keymap keymap;	/* the keymap itsef */
+    Keymap keymap;	/* the keymap itself */
 };
 
 /* Can't be deleted (.safe) */
diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c
index 22cb21be3..be68f4722 100644
--- a/Src/Zle/zle_main.c
+++ b/Src/Zle/zle_main.c
@@ -893,7 +893,7 @@ getbyte(long do_keytmout, int *timeout, int full)
 		break;
 	    if (r == 0) {
 		/* The test for IGNOREEOF was added to make zsh ignore ^Ds
-		   that were typed while commands are running.  Unfortuantely
+		   that were typed while commands are running.  Unfortunately
 		   this caused trouble under at least one system (SunOS 4.1).
 		   Here shells that lost their xterm (e.g. if it was killed
 		   with -9) didn't fail to read from the terminal but instead
diff --git a/Src/Zle/zle_refresh.c b/Src/Zle/zle_refresh.c
index 9d46378cf..7b8593dec 100644
--- a/Src/Zle/zle_refresh.c
+++ b/Src/Zle/zle_refresh.c
@@ -388,7 +388,7 @@ zle_free_highlight(void)
 
 /*
  * Interface to the region_highlight ZLE parameter.
- * Converts betwen a format like "P32 42 underline,bold" to
+ * Converts between a format like "P32 42 underline,bold" to
  * the format in the region_highlights variable.  Note that
  * the region_highlights variable stores the internal (point/mark)
  * region in element zero.
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index 2b25d6b2e..fdd168763 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -1236,8 +1236,10 @@ get_comp_string(void)
 	else if (tok == OUTPAR) {
 	    if (parct)
 		parct--;
-	    else
+	    else if (linarr) {
 		linarr = 0;
+		incmdpos = 1;
+	    }
 	}
 	if (inredir && IS_REDIROP(tok)) {
             rdstr = rdstrbuf;
diff --git a/Src/builtin.c b/Src/builtin.c
index 0ecabf854..aa5767cf1 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -7287,8 +7287,11 @@ bin_umask(char *nam, char **args, Options ops, UNUSED(int func))
     char *s = *args;
 
     /* Get the current umask. */
-    um = umask(0);
+    queue_signals();
+    um = umask(0777);
     umask(um);
+    unqueue_signals();
+
     /* No arguments means to display the current setting. */
     if (!s) {
 	if (OPT_ISSET(ops,'S')) {
diff --git a/Src/glob.c b/Src/glob.c
index ca5846704..f67a376b9 100644
--- a/Src/glob.c
+++ b/Src/glob.c
@@ -3059,7 +3059,7 @@ igetmatch(char **sp, Patprog p, int fl, int n, char *replstr,
 	case (SUB_END|SUB_SUBSTR):
 	case (SUB_END|SUB_LONG|SUB_SUBSTR):
 	    /* Longest/shortest at end, matching substrings.       */
-	    if (!(fl & SUB_LONG)) {
+	    {
 		set_pat_start(p, l);
 		if (pattrylen(p, send, 0, 0, &patstralloc, umltot) &&
 		    !--n) {
@@ -3397,7 +3397,7 @@ igetmatch(char **sp, Patprog p, int fl, int n, char *replstr,
 	case (SUB_END|SUB_SUBSTR):
 	case (SUB_END|SUB_LONG|SUB_SUBSTR):
 	    /* Longest/shortest at end, matching substrings.       */
-	    if (!(fl & SUB_LONG)) {
+	    {
 		set_pat_start(p, l);
 		if (pattrylen(p, send, 0, 0, &patstralloc, uml) && !--n) {
 		    *sp = get_match_ret(&imd, uml, uml);
diff --git a/Src/hist.c b/Src/hist.c
index 74116e82f..5281e8718 100644
--- a/Src/hist.c
+++ b/Src/hist.c
@@ -3321,6 +3321,7 @@ bufferwords(LinkList list, char *buf, int *index, int flags)
     int owb = wb, owe = we, oadx = addedx, onc = nocomments;
     int ona = noaliases, ocs = zlemetacs, oll = zlemetall;
     int forloop = 0, rcquotes = opts[RCQUOTES];
+    int envarray = 0;
     char *p, *addedspaceptr;
 
     if (!list)
@@ -3404,6 +3405,14 @@ bufferwords(LinkList list, char *buf, int *index, int flags)
 	ctxtlex();
 	if (tok == ENDINPUT || tok == LEXERR)
 	    break;
+	/*
+	 * After an array assignment, return to the initial
+	 * start-of-command state.  There could be a second ENVARRAY.
+	 */
+	if (tok == OUTPAR && envarray) {
+	    incmdpos = 1;
+	    envarray = 0;
+	}
 	if (tok == FOR) {
 	    /*
 	     * The way for (( expr1 ; expr2; expr3 )) is parsed is:
@@ -3441,6 +3450,7 @@ bufferwords(LinkList list, char *buf, int *index, int flags)
 	    switch (tok) {
 	    case ENVARRAY:
 		p = dyncat(tokstr, "=(");
+		envarray = 1;
 		break;
 
 	    case DINPAR:
diff --git a/Src/pattern.c b/Src/pattern.c
index 95e5a79a0..c7c2c8bea 100644
--- a/Src/pattern.c
+++ b/Src/pattern.c
@@ -2492,7 +2492,7 @@ pattryrefs(Patprog prog, char *string, int stringlen, int unmetalenin,
 	     * Optimization: if we didn't find any Meta characters
 	     * to begin with, we don't need to look for them now.
 	     *
-	     * For patstralloc pased in, we want the unmetafied length.
+	     * For patstralloc passed in, we want the unmetafied length.
 	     */
 	    if (patstralloc == &patstralloc_struct &&
 		patstralloc->unmetalen != origlen) {
diff --git a/Src/sort.c b/Src/sort.c
index 562b89491..8faf9349c 100644
--- a/Src/sort.c
+++ b/Src/sort.c
@@ -250,7 +250,7 @@ strmetasort(char **array, int sortwhat, int *unmetalenp)
 	if (unmetalenp) {
 	    /*
 	     * Already unmetafied.  We just need to check for
-	     * embededded nulls.
+	     * embedded nulls.
 	     */
 	    int count = unmetalenp[arrptr-array];
 	    /* Remember this length for sorted array */
diff --git a/Src/utils.c b/Src/utils.c
index 086c0dfcb..f5667f389 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -287,9 +287,7 @@ zerrmsg(FILE *file, const char *fmt, va_list ap)
 {
     const char *str;
     int num;
-#ifdef DEBUG
     long lnum;
-#endif
 #ifdef HAVE_STRERROR_R
 #define ERRBUFSIZE (80)
     int olderrno;
@@ -325,12 +323,10 @@ zerrmsg(FILE *file, const char *fmt, va_list ap)
 		nicezputs(s, file);
 		break;
 	    }
-#ifdef DEBUG
 	    case 'L':
 		lnum = va_arg(ap, long);
 		fprintf(file, "%ld", lnum);
 		break;
-#endif
 	    case 'd':
 		num = va_arg(ap, int);
 		fprintf(file, "%d", num);
diff --git a/Src/zsh.h b/Src/zsh.h
index 657e6d8ec..834142895 100644
--- a/Src/zsh.h
+++ b/Src/zsh.h
@@ -1254,7 +1254,7 @@ enum {
 
 /*
  * Assignment has value?
- * If the assignment is an arrray, then it certainly has a value --- we
+ * If the assignment is an array, then it certainly has a value --- we
  * can only tell if there's an explicit assignment.
  */
 
@@ -2999,7 +2999,7 @@ struct sortelt {
     int origlen;
     /*
      * The length of the string, if needed, else -1.
-     * The length is only needed if there are embededded nulls.
+     * The length is only needed if there are embedded nulls.
      */
     int len;
 };
diff --git a/Src/ztype.h b/Src/ztype.h
index ae7236774..5c85b0cd7 100644
--- a/Src/ztype.h
+++ b/Src/ztype.h
@@ -66,7 +66,7 @@
  * shell initialisation.
  */
 #define ZTF_INIT     (0x0001) /* One-off initialisation done */
-#define ZTF_INTERACT (0x0002) /* Shell interative and reading from stdin */
+#define ZTF_INTERACT (0x0002) /* Shell interactive and reading from stdin */
 #define ZTF_SP_COMMA (0x0004) /* Treat comma as a special characters */
 #define ZTF_BANGCHAR (0x0008) /* Treat bangchar as a special character */