]> git.ipfire.org Git - thirdparty/bash.git/blame - pcomplete.h
Bash-4.3 patch 7
[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)
ac50fbac
CR
74#define COPT_NOQUOTE (1<<4)
75#define COPT_NOSPACE (1<<5)
76#define COPT_BASHDEFAULT (1<<6)
77#define COPT_PLUSDIRS (1<<7)
bb70624e
JA
78
79/* List of items is used by the code that implements the programmable
80 completions. */
81typedef struct _list_of_items {
82 int flags;
f73dda09 83 int (*list_getter) __P((struct _list_of_items *)); /* function to call to get the list */
bb70624e
JA
84
85 STRINGLIST *slist;
86
87 /* These may or may not be used. */
88 STRINGLIST *genlist; /* for handing to the completion code one item at a time */
89 int genindex; /* index of item last handed to completion code */
90
91} ITEMLIST;
92
93/* Values for ITEMLIST -> flags */
94#define LIST_DYNAMIC 0x001
95#define LIST_DIRTY 0x002
96#define LIST_INITIALIZED 0x004
97#define LIST_MUSTSORT 0x008
98#define LIST_DONTFREE 0x010
99#define LIST_DONTFREEMEMBERS 0x020
100
0001803f
CR
101#define EMPTYCMD "_EmptycmD_"
102#define DEFAULTCMD "_DefaultCmD_"
103
bb70624e
JA
104extern HASH_TABLE *prog_completes;
105extern int prog_completion_enabled;
106
107/* Not all of these are used yet. */
108extern ITEMLIST it_aliases;
109extern ITEMLIST it_arrayvars;
110extern ITEMLIST it_bindings;
111extern ITEMLIST it_builtins;
112extern ITEMLIST it_commands;
113extern ITEMLIST it_directories;
114extern ITEMLIST it_disabled;
115extern ITEMLIST it_enabled;
116extern ITEMLIST it_exports;
117extern ITEMLIST it_files;
118extern ITEMLIST it_functions;
f73dda09 119extern ITEMLIST it_groups;
ac50fbac 120extern ITEMLIST it_helptopics;
bb70624e
JA
121extern ITEMLIST it_hostnames;
122extern ITEMLIST it_jobs;
123extern ITEMLIST it_keywords;
124extern ITEMLIST it_running;
7117c2d2 125extern ITEMLIST it_services;
bb70624e
JA
126extern ITEMLIST it_setopts;
127extern ITEMLIST it_shopts;
128extern ITEMLIST it_signals;
129extern ITEMLIST it_stopped;
130extern ITEMLIST it_users;
131extern ITEMLIST it_variables;
132
3185942a
JA
133extern COMPSPEC *pcomp_curcs;
134extern const char *pcomp_curcmd;
135
bb70624e 136/* Functions from pcomplib.c */
7117c2d2
JA
137extern COMPSPEC *compspec_create __P((void));
138extern void compspec_dispose __P((COMPSPEC *));
139extern COMPSPEC *compspec_copy __P((COMPSPEC *));
bb70624e 140
7117c2d2
JA
141extern void progcomp_create __P((void));
142extern void progcomp_flush __P((void));
143extern void progcomp_dispose __P((void));
bb70624e 144
7117c2d2 145extern int progcomp_size __P((void));
bb70624e 146
7117c2d2
JA
147extern int progcomp_insert __P((char *, COMPSPEC *));
148extern int progcomp_remove __P((char *));
bb70624e 149
7117c2d2 150extern COMPSPEC *progcomp_search __P((const char *));
bb70624e 151
7117c2d2 152extern void progcomp_walk __P((hash_wfunc *));
bb70624e
JA
153
154/* Functions from pcomplete.c */
155extern void set_itemlist_dirty __P((ITEMLIST *));
156
f73dda09
JA
157extern STRINGLIST *completions_to_stringlist __P((char **));
158
0001803f 159extern STRINGLIST *gen_compspec_completions __P((COMPSPEC *, const char *, const char *, int, int, int *));
28ef6c31 160extern char **programmable_completions __P((const char *, const char *, int, int, int *));
bb70624e 161
3185942a
JA
162extern void pcomp_set_readline_variables __P((int, int));
163extern void pcomp_set_compspec_options __P((COMPSPEC *, int, int));
bb70624e 164#endif /* _PCOMPLETE_H_ */