]> git.ipfire.org Git - thirdparty/bash.git/blame - pcomplete.h
Bash-4.2 direxpand with patch 27
[thirdparty/bash.git] / pcomplete.h
CommitLineData
bb70624e 1/* pcomplete.h - structure definitions and other stuff for programmable
0001803f 2 completion. */
bb70624e 3
3185942a 4/* Copyright (C) 1999-2009 Free Software Foundation, Inc.
bb70624e
JA
5
6 This file is part of GNU Bash, the Bourne Again SHell.
7
3185942a
JA
8 Bash is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
bb70624e 12
3185942a
JA
13 Bash is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
bb70624e 17
3185942a
JA
18 You should have received a copy of the GNU General Public License
19 along with Bash. If not, see <http://www.gnu.org/licenses/>.
20*/
bb70624e
JA
21
22#if !defined (_PCOMPLETE_H_)
23# define _PCOMPLETE_H_
24
25#include "stdc.h"
26#include "hashlib.h"
27
28typedef struct compspec {
29 int refcount;
30 unsigned long actions;
28ef6c31 31 unsigned long options;
bb70624e
JA
32 char *globpat;
33 char *words;
34 char *prefix;
35 char *suffix;
36 char *funcname;
37 char *command;
495aee44 38 char *lcommand;
bb70624e
JA
39 char *filterpat;
40} COMPSPEC;
41
42/* Values for COMPSPEC actions. These are things the shell knows how to
43 build internally. */
44#define CA_ALIAS (1<<0)
45#define CA_ARRAYVAR (1<<1)
46#define CA_BINDING (1<<2)
47#define CA_BUILTIN (1<<3)
48#define CA_COMMAND (1<<4)
49#define CA_DIRECTORY (1<<5)
50#define CA_DISABLED (1<<6)
51#define CA_ENABLED (1<<7)
52#define CA_EXPORT (1<<8)
53#define CA_FILE (1<<9)
54#define CA_FUNCTION (1<<10)
f73dda09
JA
55#define CA_GROUP (1<<11)
56#define CA_HELPTOPIC (1<<12)
57#define CA_HOSTNAME (1<<13)
58#define CA_JOB (1<<14)
59#define CA_KEYWORD (1<<15)
60#define CA_RUNNING (1<<16)
7117c2d2
JA
61#define CA_SERVICE (1<<17)
62#define CA_SETOPT (1<<18)
63#define CA_SHOPT (1<<19)
64#define CA_SIGNAL (1<<20)
65#define CA_STOPPED (1<<21)
66#define CA_USER (1<<22)
67#define CA_VARIABLE (1<<23)
bb70624e 68
28ef6c31
JA
69/* Values for COMPSPEC options field. */
70#define COPT_RESERVED (1<<0) /* reserved for other use */
71#define COPT_DEFAULT (1<<1)
72#define COPT_FILENAMES (1<<2)
73#define COPT_DIRNAMES (1<<3)
7117c2d2 74#define COPT_NOSPACE (1<<4)
b80f6443
JA
75#define COPT_BASHDEFAULT (1<<5)
76#define COPT_PLUSDIRS (1<<6)
bb70624e
JA
77
78/* List of items is used by the code that implements the programmable
79 completions. */
80typedef struct _list_of_items {
81 int flags;
f73dda09 82 int (*list_getter) __P((struct _list_of_items *)); /* function to call to get the list */
bb70624e
JA
83
84 STRINGLIST *slist;
85
86 /* These may or may not be used. */
87 STRINGLIST *genlist; /* for handing to the completion code one item at a time */
88 int genindex; /* index of item last handed to completion code */
89
90} ITEMLIST;
91
92/* Values for ITEMLIST -> flags */
93#define LIST_DYNAMIC 0x001
94#define LIST_DIRTY 0x002
95#define LIST_INITIALIZED 0x004
96#define LIST_MUSTSORT 0x008
97#define LIST_DONTFREE 0x010
98#define LIST_DONTFREEMEMBERS 0x020
99
0001803f
CR
100#define EMPTYCMD "_EmptycmD_"
101#define DEFAULTCMD "_DefaultCmD_"
102
bb70624e
JA
103extern HASH_TABLE *prog_completes;
104extern int prog_completion_enabled;
105
106/* Not all of these are used yet. */
107extern ITEMLIST it_aliases;
108extern ITEMLIST it_arrayvars;
109extern ITEMLIST it_bindings;
110extern ITEMLIST it_builtins;
111extern ITEMLIST it_commands;
112extern ITEMLIST it_directories;
113extern ITEMLIST it_disabled;
114extern ITEMLIST it_enabled;
115extern ITEMLIST it_exports;
116extern ITEMLIST it_files;
117extern ITEMLIST it_functions;
f73dda09 118extern ITEMLIST it_groups;
bb70624e
JA
119extern ITEMLIST it_hostnames;
120extern ITEMLIST it_jobs;
121extern ITEMLIST it_keywords;
122extern ITEMLIST it_running;
7117c2d2 123extern ITEMLIST it_services;
bb70624e
JA
124extern ITEMLIST it_setopts;
125extern ITEMLIST it_shopts;
126extern ITEMLIST it_signals;
127extern ITEMLIST it_stopped;
128extern ITEMLIST it_users;
129extern ITEMLIST it_variables;
130
3185942a
JA
131extern COMPSPEC *pcomp_curcs;
132extern const char *pcomp_curcmd;
133
bb70624e 134/* Functions from pcomplib.c */
7117c2d2
JA
135extern COMPSPEC *compspec_create __P((void));
136extern void compspec_dispose __P((COMPSPEC *));
137extern COMPSPEC *compspec_copy __P((COMPSPEC *));
bb70624e 138
7117c2d2
JA
139extern void progcomp_create __P((void));
140extern void progcomp_flush __P((void));
141extern void progcomp_dispose __P((void));
bb70624e 142
7117c2d2 143extern int progcomp_size __P((void));
bb70624e 144
7117c2d2
JA
145extern int progcomp_insert __P((char *, COMPSPEC *));
146extern int progcomp_remove __P((char *));
bb70624e 147
7117c2d2 148extern COMPSPEC *progcomp_search __P((const char *));
bb70624e 149
7117c2d2 150extern void progcomp_walk __P((hash_wfunc *));
bb70624e
JA
151
152/* Functions from pcomplete.c */
153extern void set_itemlist_dirty __P((ITEMLIST *));
154
f73dda09
JA
155extern STRINGLIST *completions_to_stringlist __P((char **));
156
0001803f 157extern STRINGLIST *gen_compspec_completions __P((COMPSPEC *, const char *, const char *, int, int, int *));
28ef6c31 158extern char **programmable_completions __P((const char *, const char *, int, int, int *));
bb70624e 159
3185942a
JA
160extern void pcomp_set_readline_variables __P((int, int));
161extern void pcomp_set_compspec_options __P((COMPSPEC *, int, int));
bb70624e 162#endif /* _PCOMPLETE_H_ */