summaryrefslogtreecommitdiff
path: root/Src/Zle/compctl.h
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>1999-10-26 15:36:11 +0000
committerTanaka Akira <akr@users.sourceforge.net>1999-10-26 15:36:11 +0000
commit65392c396bc521661593d1fa028b8a2d0b2461af (patch)
treee9ab8ff5c234264fdf3d57053250330bec88ee89 /Src/Zle/compctl.h
parent520116ec683392ccf8a905dd01768865a390de85 (diff)
downloadzsh-65392c396bc521661593d1fa028b8a2d0b2461af.tar.gz
zsh-65392c396bc521661593d1fa028b8a2d0b2461af.zip
Initial revision
Diffstat (limited to 'Src/Zle/compctl.h')
-rw-r--r--Src/Zle/compctl.h160
1 files changed, 160 insertions, 0 deletions
diff --git a/Src/Zle/compctl.h b/Src/Zle/compctl.h
new file mode 100644
index 000000000..9a8ba5692
--- /dev/null
+++ b/Src/Zle/compctl.h
@@ -0,0 +1,160 @@
+/*
+ * comp.h - header file for completion
+ *
+ * This file is part of zsh, the Z shell.
+ *
+ * Copyright (c) 1992-1997 Paul Falstad
+ * All rights reserved.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and to distribute modified versions of this software for any
+ * purpose, provided that the above copyright notice and the following
+ * two paragraphs appear in all copies of this software.
+ *
+ * In no event shall Paul Falstad or the Zsh Development Group be liable
+ * to any party for direct, indirect, special, incidental, or consequential
+ * damages arising out of the use of this software and its documentation,
+ * even if Paul Falstad and the Zsh Development Group have been advised of
+ * the possibility of such damage.
+ *
+ * Paul Falstad and the Zsh Development Group specifically disclaim any
+ * warranties, including, but not limited to, the implied warranties of
+ * merchantability and fitness for a particular purpose. The software
+ * provided hereunder is on an "as is" basis, and Paul Falstad and the
+ * Zsh Development Group have no obligation to provide maintenance,
+ * support, updates, enhancements, or modifications.
+ *
+ */
+
+#undef compctlread
+
+typedef struct compctlp *Compctlp;
+typedef struct compctl *Compctl;
+typedef struct compcond *Compcond;
+typedef struct patcomp *Patcomp;
+
+/* node for compctl hash table (compctltab) */
+
+struct compctlp {
+ HashNode next; /* next in hash chain */
+ char *nam; /* command name */
+ int flags; /* CURRENTLY UNUSED */
+ Compctl cc; /* pointer to the compctl desc. */
+};
+
+/* for the list of pattern compctls */
+
+struct patcomp {
+ Patcomp next;
+ char *pat;
+ Compctl cc;
+};
+
+/* compctl -x condition */
+
+struct compcond {
+ Compcond and, or; /* the next or'ed/and'ed conditions */
+ int type; /* the type (CCT_*) */
+ int n; /* the array length */
+ union { /* these structs hold the data used to */
+ struct { /* test this condition */
+ int *a, *b; /* CCT_POS, CCT_NUMWORDS */
+ }
+ r;
+ struct { /* CCT_CURSTR, CCT_CURPAT,... */
+ int *p;
+ char **s;
+ }
+ s;
+ struct { /* CCT_RANGESTR,... */
+ char **a, **b;
+ }
+ l;
+ }
+ u;
+};
+
+#define CCT_UNUSED 0
+#define CCT_POS 1
+#define CCT_CURSTR 2
+#define CCT_CURPAT 3
+#define CCT_WORDSTR 4
+#define CCT_WORDPAT 5
+#define CCT_CURSUF 6
+#define CCT_CURPRE 7
+#define CCT_CURSUB 8
+#define CCT_CURSUBC 9
+#define CCT_NUMWORDS 10
+#define CCT_RANGESTR 11
+#define CCT_RANGEPAT 12
+#define CCT_QUOTE 13
+
+/* Contains the real description for compctls */
+
+struct compctl {
+ int refc; /* reference count */
+ Compctl next; /* next compctl for -x */
+ unsigned long mask, mask2; /* masks of things to complete (CC_*) */
+ char *keyvar; /* for -k (variable) */
+ char *glob; /* for -g (globbing) */
+ char *str; /* for -s (expansion) */
+ char *func; /* for -K (function) */
+ char *explain; /* for -X (explanation) */
+ char *ylist; /* for -y (user-defined desc. for listing) */
+ char *prefix, *suffix; /* for -P and -S (prefix, suffix) */
+ char *subcmd; /* for -l (command name to use) */
+ char *substr; /* for -1 (command name to use) */
+ char *withd; /* for -w (with directory */
+ char *hpat; /* for -H (history pattern) */
+ int hnum; /* for -H (number of events to search) */
+ char *gname; /* for -J and -V (group name) */
+ Compctl ext; /* for -x (first of the compctls after -x) */
+ Compcond cond; /* for -x (condition for this compctl) */
+ Compctl xor; /* for + (next of the xor'ed compctls) */
+ Cmatcher matcher; /* matcher control (-M) */
+ char *mstr; /* matcher string */
+};
+
+/* objects to complete (mask) */
+#define CC_FILES (1<<0)
+#define CC_COMMPATH (1<<1)
+#define CC_REMOVE (1<<2)
+#define CC_OPTIONS (1<<3)
+#define CC_VARS (1<<4)
+#define CC_BINDINGS (1<<5)
+#define CC_ARRAYS (1<<6)
+#define CC_INTVARS (1<<7)
+#define CC_SHFUNCS (1<<8)
+#define CC_PARAMS (1<<9)
+#define CC_ENVVARS (1<<10)
+#define CC_JOBS (1<<11)
+#define CC_RUNNING (1<<12)
+#define CC_STOPPED (1<<13)
+#define CC_BUILTINS (1<<14)
+#define CC_ALREG (1<<15)
+#define CC_ALGLOB (1<<16)
+#define CC_USERS (1<<17)
+#define CC_DISCMDS (1<<18)
+#define CC_EXCMDS (1<<19)
+#define CC_SCALARS (1<<20)
+#define CC_READONLYS (1<<21)
+#define CC_SPECIALS (1<<22)
+#define CC_DELETE (1<<23)
+#define CC_NAMED (1<<24)
+#define CC_QUOTEFLAG (1<<25)
+#define CC_EXTCMDS (1<<26)
+#define CC_RESWDS (1<<27)
+#define CC_DIRS (1<<28)
+
+#define CC_EXPANDEXPL (1<<30)
+#define CC_RESERVED (1<<31)
+
+/* objects to complete (mask2) */
+#define CC_NOSORT (1<<0)
+#define CC_XORCONT (1<<1)
+#define CC_CCCONT (1<<2)
+#define CC_PATCONT (1<<3)
+#define CC_DEFCONT (1<<4)
+#define CC_UNIQCON (1<<5)
+#define CC_UNIQALL (1<<6)