mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-10 18:31:14 -03:00
Compare commits
145 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bc42309dd8 | ||
|
|
877b602d6b | ||
|
|
37eb6c340d | ||
|
|
7cd98a670b | ||
|
|
db0eccdc86 | ||
|
|
0f10a3a277 | ||
|
|
312c7ab7b2 | ||
|
|
2e35e1ea60 | ||
|
|
b9c88f4c83 | ||
|
|
5054492c6a | ||
|
|
5893154823 | ||
|
|
4a4e1788e5 | ||
|
|
3d56d7ee32 | ||
|
|
18d06cf10f | ||
|
|
452558624c | ||
|
|
b7ef6852c7 | ||
|
|
fef420d648 | ||
|
|
f2c4becde7 | ||
|
|
e0d6b5c438 | ||
|
|
265d016721 | ||
|
|
495460066c | ||
|
|
8df21a1cb1 | ||
|
|
ba177b48d5 | ||
|
|
29c488c6dc | ||
|
|
14ae10daf7 | ||
|
|
ecdc5bdbc7 | ||
|
|
64fee9865e | ||
|
|
89eb80f3a4 | ||
|
|
9853286bf9 | ||
|
|
7d645ccc53 | ||
|
|
820da6e7f7 | ||
|
|
3466f55ea0 | ||
|
|
b969a175d4 | ||
|
|
bb079f5446 | ||
|
|
250d20bfa8 | ||
|
|
58761f82e7 | ||
|
|
0ccc657aa6 | ||
|
|
7f01570caf | ||
|
|
0dadd83fdd | ||
|
|
3e3541a05a | ||
|
|
a824646d61 | ||
|
|
74fb5bd5e5 | ||
|
|
f2d6ae3220 | ||
|
|
487c275926 | ||
|
|
2f143303b7 | ||
|
|
78296d4fac | ||
|
|
fea22833cd | ||
|
|
b9b09babbe | ||
|
|
ba261cbb55 | ||
|
|
4eb3370edf | ||
|
|
f7a5ca5f1f | ||
|
|
f3c93c1690 | ||
|
|
e55bd063eb | ||
|
|
bdf4214b1f | ||
|
|
9fd20e63cf | ||
|
|
a47065f648 | ||
|
|
70351b0e4f | ||
|
|
12a0f6d72b | ||
|
|
d2c12e760c | ||
|
|
e0c2ce24fb | ||
|
|
1e7dd4f928 | ||
|
|
3259da8f4a | ||
|
|
619f076958 | ||
|
|
588bc1103a | ||
|
|
13e94c0617 | ||
|
|
efd01ae6c6 | ||
|
|
9017df15a8 | ||
|
|
5340d2a18a | ||
|
|
e5298a99f8 | ||
|
|
05736978bb | ||
|
|
e15c7fd7e0 | ||
|
|
509b3598f7 | ||
|
|
aa783fc657 | ||
|
|
84bbbe4252 | ||
|
|
90fbe5eb0b | ||
|
|
d5f4df15d4 | ||
|
|
fd78f67d35 | ||
|
|
28c29f569b | ||
|
|
064581c7f8 | ||
|
|
94b1c4c076 | ||
|
|
85c87fe267 | ||
|
|
5bd66ee2ce | ||
|
|
e593f9be53 | ||
|
|
25e363e729 | ||
|
|
5db192347c | ||
|
|
18bbb5ad01 | ||
|
|
24ca6ceb47 | ||
|
|
3607c555be | ||
|
|
cad14db27b | ||
|
|
2fb5632212 | ||
|
|
56ad85d8a8 | ||
|
|
ee66520863 | ||
|
|
83629e28c8 | ||
|
|
645af56d77 | ||
|
|
9501dc83e6 | ||
|
|
9942e2f19f | ||
|
|
6d6644b907 | ||
|
|
11273a7be0 | ||
|
|
1562b8148d | ||
|
|
d7b659d8e8 | ||
|
|
6050850081 | ||
|
|
95d68e48f2 | ||
|
|
2b7781d3cb | ||
|
|
f0b2d7532a | ||
|
|
6b91433881 | ||
|
|
16cb9dfa05 | ||
|
|
10fec8abb6 | ||
|
|
da058aa141 | ||
|
|
67333a23f1 | ||
|
|
72bb5ae06f | ||
|
|
d4034fc253 | ||
|
|
be9208412a | ||
|
|
f66689d415 | ||
|
|
aca0511762 | ||
|
|
68df730980 | ||
|
|
032a736840 | ||
|
|
d9663a4ec4 | ||
|
|
5392533f33 | ||
|
|
bf0957d8dd | ||
|
|
630abb56f6 | ||
|
|
c45e457492 | ||
|
|
fef1e1db32 | ||
|
|
8ed80deb6b | ||
|
|
b7c551a348 | ||
|
|
810d9104fc | ||
|
|
54c502c3cf | ||
|
|
faa23a33ec | ||
|
|
ae511451fe | ||
|
|
ce689e69d5 | ||
|
|
906495d713 | ||
|
|
690648e1b0 | ||
|
|
b33d3f78b1 | ||
|
|
343c280dbf | ||
|
|
f6b2b9f9a5 | ||
|
|
6a0460f51e | ||
|
|
e12902fe3c | ||
|
|
48030576e4 | ||
|
|
33177e75a6 | ||
|
|
c1304a05d9 | ||
|
|
038d7e725e | ||
|
|
6408486336 | ||
|
|
ec43c635cc | ||
|
|
26de6ba26b | ||
|
|
8f121dce9c | ||
|
|
7eec1a6625 |
18
INSTALL
18
INSTALL
@@ -33,10 +33,13 @@ broken.
|
||||
Simple install procedure
|
||||
========================
|
||||
|
||||
If you have downloaded the darcs repository of fish, you need to run
|
||||
autoconf.
|
||||
|
||||
% ./configure
|
||||
% make #Compile fish
|
||||
% make install #Install fish
|
||||
% echo /usr/local/bin/fish >>/etc/shells #Add fish to list of shells
|
||||
% make # Compile fish
|
||||
% make install # Install fish
|
||||
% echo /usr/local/bin/fish >>/etc/shells # Add fish to list of shells
|
||||
|
||||
If you wish to use fish as your default shell, use the following
|
||||
command:
|
||||
@@ -49,6 +52,9 @@ chsh will prompt you for your password, and change your default shell.
|
||||
Local install procedure
|
||||
=======================
|
||||
|
||||
If you have downloaded the darcs repository of fish, you need to run
|
||||
autoconf first.
|
||||
|
||||
To install fish in your own home directory (typically as non-root),
|
||||
type:
|
||||
|
||||
@@ -57,6 +63,6 @@ type:
|
||||
% make install # Install fish
|
||||
|
||||
You will not be able to use fish as the default shell unless you also
|
||||
add the corresponding line to /etc/shells, which kind of defeats the
|
||||
point of a local install. But you can at least build and run fish.
|
||||
|
||||
add the corresponding line to /etc/shells, which mostly defeats the
|
||||
point of a local install. As a workaround, you can add fish as the
|
||||
last command of the init files for your regular shell.
|
||||
|
||||
293
Makefile.in
293
Makefile.in
@@ -28,16 +28,19 @@
|
||||
# hallucinations.
|
||||
#
|
||||
|
||||
# Compiler flags
|
||||
|
||||
# Programs
|
||||
CC := @CC@
|
||||
INSTALL:=@INSTALL@
|
||||
|
||||
# Compiler flags
|
||||
CFLAGS := @CFLAGS@ @INCLUDEDIR@ -Wall -std=gnu99 -fno-strict-aliasing
|
||||
CPPFLAGS=@CPPFLAGS@
|
||||
LDFLAGS:= -l@CURSESLIB@ @LIBS@ @LDFLAGS@ @LIBDIR@
|
||||
INSTALL:=@INSTALL@
|
||||
|
||||
# Installation directories
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
datadir = @datadir@
|
||||
bindir = @bindir@
|
||||
mandir = @mandir@
|
||||
sysconfdir = @sysconfdir@
|
||||
@@ -46,28 +49,45 @@ fishfile = @fishfile@
|
||||
fishinputfile = @fishinputfile@
|
||||
docdir = @docdir@
|
||||
|
||||
#Init files to install
|
||||
INIT_DIR_INSTALL = init/fish_interactive.fish init/fish_function.fish init/fish_complete.fish
|
||||
|
||||
# Set to 1 if we have gettext
|
||||
HAVE_GETTEXT=@HAVE_GETTEXT@
|
||||
|
||||
# All objects used by fish, that are compiled from an ordinary .c file
|
||||
# using an ordinary .h file.
|
||||
COMMON_OBJS := function.o builtin.o common.o complete.o env.o exec.o \
|
||||
expand.o highlight.o history.o kill.o parser.o proc.o reader.o \
|
||||
sanity.o tokenizer.o util.o wildcard.o wgetopt.o wutil.o input.o \
|
||||
output.o intern.o env_universal.o env_universal_common.o \
|
||||
input_common.o event.o signal.o io.o
|
||||
input_common.o event.o signal.o io.o translate.o
|
||||
|
||||
# builtin_help.h exists, but builtin_help.c is autogenerated
|
||||
COMMON_OBJS_WITH_HEADER := builtin_help.o
|
||||
|
||||
# main.c exists, but main.h does not, etc.
|
||||
COMMON_OBJS_WITH_CODE := builtin_set.o builtin_commandline.o builtin_ulimit.c
|
||||
COMMON_OBJS_WITH_CODE := builtin_set.o builtin_commandline.o \
|
||||
builtin_ulimit.c builtin_complete.o
|
||||
|
||||
# All objects that the system needs to build fish
|
||||
FISH_OBJS := $(COMMON_OBJS) $(COMMON_OBJS_WITH_CODE) $(COMMON_OBJS_WITH_HEADER) main.o
|
||||
FISH_PAGER_OBJS := fish_pager.o common.o output.o util.o wutil.o tokenizer.o input_common.o env_universal.o env_universal_common.o
|
||||
FISH_TESTS_OBJS := $(COMMON_OBJS) $(COMMON_OBJS_WITH_CODE) $(COMMON_OBJS_WITH_HEADER) fish_tests.o
|
||||
FISH_OBJS := $(COMMON_OBJS) $(COMMON_OBJS_WITH_CODE) \
|
||||
$(COMMON_OBJS_WITH_HEADER) main.o
|
||||
|
||||
# All objects that the system needs to build fish_pager
|
||||
FISH_PAGER_OBJS := fish_pager.o common.o output.o util.o wutil.o \
|
||||
tokenizer.o input_common.o env_universal.o env_universal_common.o \
|
||||
translate.o
|
||||
|
||||
# All objects that the system needs to build fish_tests
|
||||
FISH_TESTS_OBJS := $(COMMON_OBJS) $(COMMON_OBJS_WITH_CODE) \
|
||||
$(COMMON_OBJS_WITH_HEADER) fish_tests.o
|
||||
|
||||
# All objects that the system needs to build fishd
|
||||
FISHD_OBJS := fishd.o env_universal_common.o common.o util.o wutil.o \
|
||||
doc_src/fishd.o
|
||||
|
||||
|
||||
#All objects that the system needs to build mimedb
|
||||
# All objects needed to build mimedb
|
||||
MIME_OBJS := mimedb.o xdgmimealias.o xdgmime.o xdgmimeglob.o \
|
||||
xdgmimeint.o xdgmimemagic.o xdgmimeparent.o wutil.o
|
||||
|
||||
@@ -76,7 +96,6 @@ MIME_OBJS := mimedb.o xdgmimealias.o xdgmime.o xdgmimeglob.o \
|
||||
# alphabetically, since this is the order in which they will be written
|
||||
# in the help file.
|
||||
#
|
||||
|
||||
BUILTIN_DOC_SRC := doc_src/source.txt doc_src/and.txt \
|
||||
doc_src/begin.txt doc_src/bg.txt doc_src/bind.txt \
|
||||
doc_src/block.txt doc_src/break.txt doc_src/builtin.txt \
|
||||
@@ -100,12 +119,11 @@ BUILTIN_DOC_HDR := $(BUILTIN_DOC_SRC:.txt=.doxygen)
|
||||
# alphabetically, since this is the order in which they will be written
|
||||
# in the help file.
|
||||
#
|
||||
|
||||
CMD_DOC_SRC := doc_src/count.txt doc_src/dirh.txt doc_src/dirs.txt \
|
||||
doc_src/fishd.txt doc_src/help.txt doc_src/mimedb.txt \
|
||||
doc_src/nextd.txt doc_src/open.txt doc_src/popd.txt \
|
||||
doc_src/prevd.txt doc_src/psub.txt doc_src/pushd.txt \
|
||||
doc_src/set_color.txt doc_src/tokenize.txt doc_src/trap.txt \
|
||||
doc_src/fish_pager.txt doc_src/fishd.txt doc_src/help.txt \
|
||||
doc_src/mimedb.txt doc_src/nextd.txt doc_src/open.txt \
|
||||
doc_src/popd.txt doc_src/prevd.txt doc_src/psub.txt \
|
||||
doc_src/pushd.txt doc_src/set_color.txt doc_src/trap.txt \
|
||||
doc_src/type.txt doc_src/umask.txt doc_src/vared.txt
|
||||
|
||||
#
|
||||
@@ -113,6 +131,9 @@ CMD_DOC_SRC := doc_src/count.txt doc_src/dirh.txt doc_src/dirs.txt \
|
||||
#
|
||||
CMD_DOC_HDR := $(CMD_DOC_SRC:.txt=.doxygen)
|
||||
|
||||
#
|
||||
# Files in the test directory
|
||||
#
|
||||
TEST_IN := $(wildcard tests/test*.in)
|
||||
|
||||
#
|
||||
@@ -126,12 +147,12 @@ DOC_SRC_DIR_FILES := doc_src/Doxyfile.in doc_src/doc.hdr \
|
||||
# Files in ./
|
||||
MAIN_DIR_FILES := Doxyfile Doxyfile.user Makefile.in configure \
|
||||
configure.ac config.h.in install-sh set_color.c count.c \
|
||||
key_reader.c tokenize.c gen_hdr.sh gen_hdr2.c $(MIME_OBJS:.o=.h) \
|
||||
key_reader.c gen_hdr.sh gen_hdr2.c $(MIME_OBJS:.o=.h) \
|
||||
$(MIME_OBJS:.o=.c) $(COMMON_OBJS_WITH_HEADER:.o=.h) \
|
||||
$(COMMON_OBJS:.o=.h) $(COMMON_OBJS_WITH_CODE:.o=.c) \
|
||||
$(COMMON_OBJS:.o=.c) builtin_help.hdr fish.spec.in INSTALL README \
|
||||
user_doc.head.html xsel-0.9.6.tar ChangeLog config.sub \
|
||||
config.guess fish_tests.c main.c fish_pager.c fishd.c
|
||||
config.guess fish_tests.c main.c fish_pager.c fishd.c seq.in
|
||||
|
||||
# Files in ./init/
|
||||
INIT_DIR_FILES :=init/fish.in init/fish_complete.fish.in \
|
||||
@@ -145,23 +166,35 @@ TESTS_DIR_FILES := $(TEST_IN) $(TEST_IN:.in=.out) $(TEST_IN:.in=.err) \
|
||||
COMPLETIONS_DIR_FILES := $(wildcard init/completions/*.fish)
|
||||
|
||||
# Programs to build
|
||||
PROGRAMS:=fish set_color tokenize @XSEL@ mimedb count fish_pager fishd
|
||||
PROGRAMS:=fish set_color @XSEL@ @SEQ_FALLBACK@ mimedb count fish_pager fishd
|
||||
|
||||
# Manuals to install
|
||||
MANUALS:=doc_src/fish.1 @XSEL_MAN_PATH@ \
|
||||
doc_src/builtin_doc/man/man1/mimedb.1 \
|
||||
doc_src/builtin_doc/man/man1/set_color.1 \
|
||||
doc_src/builtin_doc/man/man1/tokenize.1 \
|
||||
doc_src/builtin_doc/man/man1/count.1
|
||||
doc_src/builtin_doc/man/man1/count.1 \
|
||||
doc_src/builtin_doc/man/man1/fishd.1 \
|
||||
doc_src/builtin_doc/man/man1/fish_pager.1
|
||||
|
||||
#All translation message catalogs
|
||||
TRANSLATIONS_SRC := $(wildcard po/*.po)
|
||||
TRANSLATIONS := $(TRANSLATIONS_SRC:.po=.gmo)
|
||||
|
||||
#Make everything needed for installing fish
|
||||
all: $(PROGRAMS) user_doc
|
||||
all: $(PROGRAMS) user_doc
|
||||
@echo fish has now been built.
|
||||
@echo Use \'make install\' to install fish.
|
||||
.PHONY: all
|
||||
|
||||
debug:
|
||||
make fish CFLAGS="-O0 -Wno-unused -Werror -g @INCLUDEDIR@ -Wall -std=gnu99 -fno-strict-aliasing"
|
||||
.PHONY: debug
|
||||
|
||||
# User documentation, describing the features of the fish shell.
|
||||
user_doc: doc.h Doxyfile.user user_doc.head.html
|
||||
doxygen Doxyfile.user
|
||||
|
||||
#Source code documentation. Also includes user documentation.
|
||||
# Source code documentation. Also includes user documentation.
|
||||
doc: *.h *.c doc.h Doxyfile builtin_help.c
|
||||
doxygen;
|
||||
|
||||
@@ -175,6 +208,7 @@ doc/refman.pdf: doc
|
||||
|
||||
test: $(PROGRAMS) fish_tests
|
||||
./fish_tests; cd tests; ../fish <test.fish;
|
||||
.PHONY: test
|
||||
|
||||
xsel-0.9.6:
|
||||
tar -xf xsel-0.9.6.tar
|
||||
@@ -205,6 +239,33 @@ doc.h:$(BUILTIN_DOC_SRC) $(CMD_DOC_SRC) doc_src/doc.hdr
|
||||
cat $*.txt >>$@;
|
||||
echo "*/" >>$@
|
||||
|
||||
# Compile translation file
|
||||
%.gmo:
|
||||
if test $(HAVE_GETTEXT) = 1; then \
|
||||
msgfmt $*.po -o $*.gmo; \
|
||||
fi
|
||||
|
||||
# Update existing po file or copy messages.pot
|
||||
%.po:messages.pot
|
||||
if test $(HAVE_GETTEXT) = 1;then \
|
||||
if test -f $*.po; then \
|
||||
msgmerge -U --backup=existing $*.po messages.pot;\
|
||||
else \
|
||||
cp messages.pot $*.po;\
|
||||
fi; \
|
||||
fi
|
||||
|
||||
# Create a template translation object
|
||||
messages.pot: *.c *.h init/*.in init/*.fish init/completions/*.fish seq
|
||||
if test $(HAVE_GETTEXT) = 1;then \
|
||||
xgettext -k_ -kN_ -kcomplete_desc *.c *.h -o messages.pot; \
|
||||
if ! xgettext -j -k_ -LShell init/*.in init/*.fish init/completions/*.fish seq -o messages.pot; then \
|
||||
echo "Your xgettext version is too old to build the messages.pot file"\
|
||||
rm messages.pot\
|
||||
false;\
|
||||
fi; \
|
||||
fi
|
||||
|
||||
# Generate the internal help functions by making doxygen create
|
||||
# man-pages which are then converted into C code. The convertion path
|
||||
# looks like this:
|
||||
@@ -240,6 +301,7 @@ doc.h:$(BUILTIN_DOC_SRC) $(CMD_DOC_SRC) doc_src/doc.hdr
|
||||
builtin_help.c: $(BUILTIN_DOC_HDR) doc_src/count.doxygen gen_hdr2 gen_hdr.sh builtin_help.hdr $(CMD_DOC_HDR)
|
||||
cd doc_src; doxygen; cd ..;
|
||||
cp builtin_help.hdr builtin_help.c;
|
||||
chmod 755 gen_hdr.sh
|
||||
for i in $(BUILTIN_DOC_HDR) doc_src/count.doxygen ; do \
|
||||
echo ' hash_put( &tbl, L"'`basename $$i .doxygen`'",' >>$@; \
|
||||
./gen_hdr.sh $$i >>$@; \
|
||||
@@ -261,12 +323,17 @@ builtin_help.c: $(BUILTIN_DOC_HDR) doc_src/count.doxygen gen_hdr2 gen_hdr.sh bui
|
||||
echo "void print_help()" >>$@
|
||||
echo "{" >>$@
|
||||
echo ' printf( "%s",' >>$@
|
||||
chmod 755 gen_hdr.sh
|
||||
./gen_hdr.sh $*.doxygen >>$@
|
||||
echo ");" >>$@
|
||||
echo "}" >>$@
|
||||
#man -- doc_src/builtin_doc/man/man1/`basename $@ .c`.1 | cat -s | ./gen_hdr2 >>$@
|
||||
|
||||
install: all
|
||||
#
|
||||
# The build rules for installing/uninstalling
|
||||
#
|
||||
|
||||
install: all install-translations
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(bindir)
|
||||
for i in $(PROGRAMS); do\
|
||||
$(INSTALL) -m 755 $$i $(DESTDIR)$(bindir) ; \
|
||||
@@ -274,7 +341,7 @@ install: all
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(sysconfdir)$(fishdir)
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(sysconfdir)$(fishdir)/completions
|
||||
$(INSTALL) -m 644 init/fish $(DESTDIR)$(sysconfdir)$(fishfile)
|
||||
for i in init/fish_interactive.fish init/fish_function.fish init/fish_complete.fish ; do \
|
||||
for i in $(INIT_DIR_INSTALL); do \
|
||||
$(INSTALL) -m 644 $$i $(DESTDIR)$(sysconfdir)$(fishdir); \
|
||||
done;
|
||||
for i in $(COMPLETIONS_DIR_FILES); do \
|
||||
@@ -291,10 +358,17 @@ install: all
|
||||
for i in $(MANUALS); do \
|
||||
$(INSTALL) -m 644 $$i $(DESTDIR)$(mandir)/man1/; \
|
||||
done;
|
||||
@echo If you want to use fish as the default shell, remember to first
|
||||
@echo add the line \'$(DESTDIR)$(bindir)/fish\' to the file \'/etc/shells\'.
|
||||
@echo fish is now installed on your system.
|
||||
@echo To run fish, type \'fish\' in your terminal.
|
||||
@echo
|
||||
@echo To use fish as your login shell:
|
||||
@echo \* add the line \'$(DESTDIR)$(bindir)/fish\' to the file \'/etc/shells\'.
|
||||
@echo \* use the command \'chsh -s $(DESTDIR)$(bindir)/fish\'.
|
||||
@echo
|
||||
@echo Have fun!
|
||||
.PHONY: install
|
||||
|
||||
uninstall:
|
||||
uninstall: uninstall-translations
|
||||
for i in $(PROGRAMS); do \
|
||||
rm -f $(DESTDIR)$(bindir)/$$i; \
|
||||
done;
|
||||
@@ -303,18 +377,40 @@ uninstall:
|
||||
rm -f $(DESTDIR)$(sysconfdir)$(fishinputfile)
|
||||
rm -r $(DESTDIR)$(sysconfdir)$(fishdir)
|
||||
rm -r $(DESTDIR)$(docdir)
|
||||
for i in fish.1* @XSEL_MAN@ mimedb.1* set_color.1* tokenize.1* count.1*; do \
|
||||
for i in fish.1* @XSEL_MAN@ mimedb.1* fishd.1* set_color.1* count.1*; do \
|
||||
rm $(DESTDIR)$(mandir)/man1/$$i; \
|
||||
done;
|
||||
.PHONY: uninstall
|
||||
|
||||
install-translations: $(TRANSLATIONS)
|
||||
if test $(HAVE_GETTEXT) = 1; then \
|
||||
for i in $(TRANSLATIONS); do \
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(datadir)/locale/`basename $$i .gmo`/LC_MESSAGES; \
|
||||
$(INSTALL) -m 644 $$i $(DESTDIR)$(datadir)/locale/`basename $$i .gmo`/LC_MESSAGES/fish.mo; \
|
||||
echo $(DESTDIR)$(datadir)/locale/`basename $$i .gmo`/LC_MESSAGES/fish.mo;\
|
||||
done; \
|
||||
fi
|
||||
.PHONY: install-translations
|
||||
|
||||
uninstall-translations:
|
||||
if test $(HAVE_GETTEXT) = 1; then \
|
||||
for i in $(TRANSLATIONS_SRC); do \
|
||||
rm -f $(DESTDIR)$(datadir)/locale/`basename $$i .po`/LC_MESSAGES/fish.mo; \
|
||||
done; \
|
||||
fi
|
||||
.PHONY: uninstall-translations
|
||||
|
||||
#
|
||||
# The build rules for all the commands
|
||||
#
|
||||
|
||||
# The fish shell
|
||||
fish: $(FISH_OBJS)
|
||||
$(CC) $(FISH_OBJS) $(LDFLAGS) -o $@
|
||||
|
||||
fish_pager: $(FISH_PAGER_OBJS)
|
||||
$(CC) $(FISH_PAGER_OBJS) $(LDFLAGS) -o $@
|
||||
|
||||
fishd: $(FISHD_OBJS)
|
||||
fishd: $(FISHD_OBJS)
|
||||
$(CC) $(FISHD_OBJS) $(LDFLAGS) -o $@
|
||||
|
||||
fish_tests: $(FISH_TESTS_OBJS)
|
||||
@@ -327,18 +423,20 @@ mimedb: $(MIME_OBJS) util.o common.o doc_src/mimedb.c
|
||||
set_color: set_color.o doc_src/set_color.c
|
||||
$(CC) set_color.o doc_src/set_color.c $(LDFLAGS) -o $@
|
||||
|
||||
tokenize: tokenize.o doc_src/tokenize.c
|
||||
$(CC) tokenize.o doc_src/tokenize.c $(LDFLAGS) -o $@
|
||||
|
||||
# Test program for the tokenizer library
|
||||
tokenizer_test: tokenizer.c tokenizer.h util.o wutil.o common.o
|
||||
$(CC) ${CFLAGS} tokenizer.c util.o wutil.o common.o -D TOKENIZER_TEST $(LDFLAGS) -o $@
|
||||
|
||||
# Neat little program to show output from terminal
|
||||
key_reader: key_reader.o input_common.o common.o env_universal.o env_universal_common.o util.o wutil.o
|
||||
$(CC) key_reader.o input_common.o common.o env_universal.o env_universal_common.o util.o wutil.o $(LDFLAGS) -o $@
|
||||
|
||||
#
|
||||
# Update dependencies
|
||||
#
|
||||
depend:
|
||||
makedepend -fMakefile.in -Y *.c
|
||||
.PHONY: depend
|
||||
|
||||
# Copy all the source files into a new directory and use tar to create
|
||||
# an archive from it. Simplest way I could think of to make an archive
|
||||
@@ -346,18 +444,20 @@ depend:
|
||||
#
|
||||
# Uses install instead of mkdir so build won't fail if the directory
|
||||
# exists
|
||||
fish-@PACKAGE_VERSION@.tar: $(DOC_SRC_DIR_FILES) $(MAIN_DIR_FILES) $(INIT_DIR_FILES) $(TEST_DIR_FILES) $(COMPLETIONS_DIR_FILES) ChangeLog
|
||||
fish-@PACKAGE_VERSION@.tar: $(DOC_SRC_DIR_FILES) $(MAIN_DIR_FILES) $(INIT_DIR_FILES) $(TEST_DIR_FILES) $(COMPLETIONS_DIR_FILES) ChangeLog
|
||||
rm -rf fish-@PACKAGE_VERSION@
|
||||
$(INSTALL) -d fish-@PACKAGE_VERSION@
|
||||
$(INSTALL) -d fish-@PACKAGE_VERSION@/doc_src
|
||||
$(INSTALL) -d fish-@PACKAGE_VERSION@/init
|
||||
$(INSTALL) -d fish-@PACKAGE_VERSION@/init/completions
|
||||
$(INSTALL) -d fish-@PACKAGE_VERSION@/tests
|
||||
$(INSTALL) -d fish-@PACKAGE_VERSION@/po
|
||||
cp -f $(DOC_SRC_DIR_FILES) fish-@PACKAGE_VERSION@/doc_src
|
||||
cp -f $(MAIN_DIR_FILES) fish-@PACKAGE_VERSION@/
|
||||
cp -f $(INIT_DIR_FILES) fish-@PACKAGE_VERSION@/init/
|
||||
cp -f $(COMPLETIONS_DIR_FILES) fish-@PACKAGE_VERSION@/init/completions/
|
||||
cp -f $(TESTS_DIR_FILES) fish-@PACKAGE_VERSION@/tests/
|
||||
cp -f $(TRANSLATIONS_SRC) fish-@PACKAGE_VERSION@/po/
|
||||
tar -c fish-@PACKAGE_VERSION@ >fish-@PACKAGE_VERSION@.tar
|
||||
rm -rf fish-@PACKAGE_VERSION@
|
||||
|
||||
@@ -375,16 +475,22 @@ rpm: fish-@PACKAGE_VERSION@.tar.bz2
|
||||
rpmbuild -ba --clean /usr/src/redhat/SPECS/fish.spec
|
||||
mv /usr/src/redhat/RPMS/*/fish*@PACKAGE_VERSION@*.rpm .
|
||||
mv /usr/src/redhat/SRPMS/fish*@PACKAGE_VERSION@*.src.rpm .
|
||||
.PHONY: rpm
|
||||
|
||||
#
|
||||
# Cleanup targets
|
||||
#
|
||||
|
||||
distclean: clean
|
||||
rm -f fish.spec doc_src/fish.1 doc_src/Doxyfile
|
||||
rm -f init/fish init/fish_interactive.fish init/fish_complete.fish
|
||||
rm -f config.status config.log config.h Makefile
|
||||
.PHONY: distclean
|
||||
|
||||
clean:
|
||||
rm -f *.o doc.h doc_src/*.doxygen doc_src/*.c builtin_help.c
|
||||
rm -f tests/tmp.err tests/tmp.out tests/tmp.status tests/foo.txt
|
||||
rm -f tokenizer_test fish key_reader set_color tokenize gen_hdr2 mimedb
|
||||
rm -f tokenizer_test fish key_reader set_color gen_hdr2 mimedb
|
||||
rm -f fishd fish_pager count
|
||||
rm -f fish-@PACKAGE_VERSION@.tar
|
||||
rm -f fish-@PACKAGE_VERSION@.tar.gz
|
||||
@@ -394,70 +500,91 @@ clean:
|
||||
rm -rf doc_src/builtin_doc
|
||||
rm -rf fish-@PACKAGE_VERSION@
|
||||
rm -rf xsel-0.9.6/
|
||||
rm -f $(TRANSLATIONS)
|
||||
.PHONY: clean
|
||||
|
||||
# DO NOT DELETE THIS LINE -- make depend depends on it.
|
||||
|
||||
builtin.o: config.h util.h wutil.h builtin.h function.h complete.h proc.h
|
||||
builtin.o: parser.h reader.h env.h expand.h common.h wgetopt.h sanity.h
|
||||
builtin.o: io.h parser.h reader.h env.h expand.h common.h wgetopt.h sanity.h
|
||||
builtin.o: tokenizer.h builtin_help.h wildcard.h input_common.h input.h
|
||||
builtin.o: intern.h
|
||||
builtin_commandline.o: config.h util.h builtin.h common.h wgetopt.h reader.h
|
||||
builtin_commandline.o: proc.h parser.h tokenizer.h input_common.h input.h
|
||||
builtin.o: intern.h event.h signal.h translate.h
|
||||
builtin_commandline.o: signal.h config.h util.h builtin.h common.h wgetopt.h
|
||||
builtin_commandline.o: reader.h proc.h io.h parser.h tokenizer.h
|
||||
builtin_commandline.o: input_common.h input.h translate.h
|
||||
builtin_help.o: config.h util.h common.h builtin_help.h
|
||||
builtin_set.o: config.h util.h builtin.h env.h expand.h common.h wgetopt.h
|
||||
builtin_set.o: proc.h parser.h
|
||||
common.o: config.h util.h wutil.h common.h expand.h proc.h wildcard.h
|
||||
common.o: parser.h
|
||||
complete.o: config.h util.h tokenizer.h wildcard.h proc.h parser.h function.h
|
||||
complete.o: complete.h builtin.h env.h exec.h expand.h common.h reader.h
|
||||
complete.o: history.h intern.h wutil.h
|
||||
env.o: config.h util.h wutil.h proc.h common.h env.h sanity.h expand.h
|
||||
env.o: history.h reader.h parser.h env_universal.h env_universal_common.h
|
||||
env_universal.o: util.h common.h wutil.h env_universal_common.h
|
||||
env_universal.o: env_universal.h
|
||||
env_universal_common.o: util.h common.h wutil.h env_universal_common.h
|
||||
exec.o: config.h util.h common.h wutil.h proc.h exec.h parser.h builtin.h
|
||||
exec.o: function.h env.h wildcard.h sanity.h expand.h env_universal.h
|
||||
exec.o: env_universal_common.h
|
||||
expand.o: config.h util.h common.h wutil.h env.h proc.h parser.h expand.h
|
||||
expand.o: wildcard.h exec.h tokenizer.h complete.h
|
||||
fishd.o: util.h common.h wutil.h env_universal_common.h
|
||||
fish_pager.o: config.h util.h wutil.h common.h complete.h output.h
|
||||
builtin_set.o: signal.h config.h util.h builtin.h env.h expand.h common.h
|
||||
builtin_set.o: wgetopt.h proc.h io.h parser.h translate.h
|
||||
builtin_ulimit.o: config.h util.h builtin.h common.h wgetopt.h translate.h
|
||||
common.o: config.h signal.h util.h wutil.h common.h expand.h proc.h io.h
|
||||
common.o: wildcard.h parser.h
|
||||
complete.o: signal.h config.h util.h tokenizer.h wildcard.h proc.h io.h
|
||||
complete.o: parser.h function.h complete.h builtin.h env.h exec.h expand.h
|
||||
complete.o: common.h reader.h history.h intern.h translate.h wutil.h
|
||||
env.o: config.h signal.h util.h wutil.h proc.h io.h common.h env.h sanity.h
|
||||
env.o: expand.h history.h reader.h parser.h env_universal.h
|
||||
env.o: env_universal_common.h input_common.h event.h translate.h
|
||||
env_universal.o: config.h signal.h util.h common.h wutil.h
|
||||
env_universal.o: env_universal_common.h env_universal.h
|
||||
env_universal_common.o: signal.h util.h common.h wutil.h
|
||||
env_universal_common.o: env_universal_common.h
|
||||
event.o: signal.h config.h util.h function.h proc.h io.h parser.h common.h
|
||||
event.o: event.h translate.h
|
||||
exec.o: signal.h config.h util.h common.h wutil.h proc.h io.h exec.h parser.h
|
||||
exec.o: builtin.h function.h env.h wildcard.h sanity.h expand.h
|
||||
exec.o: env_universal.h env_universal_common.h translate.h
|
||||
expand.o: signal.h config.h util.h common.h wutil.h env.h proc.h io.h
|
||||
expand.o: parser.h expand.h wildcard.h exec.h tokenizer.h complete.h
|
||||
fishd.o: signal.h util.h common.h wutil.h env_universal_common.h
|
||||
fish_pager.o: config.h signal.h util.h wutil.h common.h complete.h output.h
|
||||
fish_pager.o: input_common.h env_universal.h env_universal_common.h
|
||||
fish_tests.o: config.h util.h common.h proc.h reader.h builtin.h function.h
|
||||
fish_tests.o: complete.h wutil.h env.h expand.h parser.h tokenizer.h
|
||||
function.o: config.h util.h function.h proc.h parser.h common.h intern.h
|
||||
highlight.o: config.h util.h wutil.h highlight.h tokenizer.h proc.h parser.h
|
||||
highlight.o: builtin.h function.h env.h expand.h sanity.h common.h complete.h
|
||||
highlight.o: output.h
|
||||
fish_tests.o: config.h signal.h util.h common.h proc.h io.h reader.h
|
||||
fish_tests.o: builtin.h function.h complete.h wutil.h env.h expand.h parser.h
|
||||
fish_tests.o: tokenizer.h output.h exec.h event.h
|
||||
function.o: signal.h config.h util.h function.h proc.h io.h parser.h common.h
|
||||
function.o: intern.h event.h
|
||||
highlight.o: signal.h config.h util.h wutil.h highlight.h tokenizer.h proc.h
|
||||
highlight.o: io.h parser.h builtin.h function.h env.h expand.h sanity.h
|
||||
highlight.o: common.h complete.h output.h
|
||||
history.o: config.h util.h wutil.h history.h common.h reader.h env.h sanity.h
|
||||
input.o: config.h util.h wutil.h reader.h proc.h common.h sanity.h
|
||||
input.o: input_common.h input.h parser.h env.h expand.h
|
||||
input.o: config.h signal.h util.h wutil.h reader.h proc.h io.h common.h
|
||||
input.o: sanity.h input_common.h input.h parser.h env.h expand.h event.h
|
||||
input.o: translate.h
|
||||
input_common.o: config.h util.h common.h wutil.h input_common.h
|
||||
input_common.o: env_universal.h env_universal_common.h
|
||||
intern.o: config.h util.h common.h intern.h
|
||||
kill.o: config.h util.h wutil.h kill.h proc.h sanity.h common.h env.h
|
||||
kill.o: expand.h exec.h parser.h
|
||||
main.o: config.h util.h common.h reader.h builtin.h function.h complete.h
|
||||
main.o: wutil.h env.h sanity.h proc.h parser.h expand.h intern.h
|
||||
io.o: config.h util.h wutil.h exec.h proc.h io.h common.h translate.h
|
||||
key_reader.o: input_common.h
|
||||
kill.o: signal.h config.h util.h wutil.h kill.h proc.h io.h sanity.h common.h
|
||||
kill.o: env.h expand.h exec.h parser.h
|
||||
main.o: config.h signal.h util.h common.h reader.h builtin.h function.h
|
||||
main.o: complete.h wutil.h env.h sanity.h proc.h io.h parser.h expand.h
|
||||
main.o: intern.h exec.h event.h output.h translate.h
|
||||
mimedb.o: config.h xdgmime.h util.h
|
||||
output.o: config.h util.h wutil.h expand.h common.h output.h highlight.h
|
||||
parser.o: config.h util.h common.h wutil.h proc.h parser.h tokenizer.h exec.h
|
||||
parser.o: wildcard.h function.h builtin.h builtin_help.h env.h expand.h
|
||||
parser.o: reader.h sanity.h env_universal.h env_universal_common.h
|
||||
proc.o: config.h util.h wutil.h proc.h common.h reader.h sanity.h env.h
|
||||
reader.o: config.h util.h wutil.h highlight.h reader.h proc.h parser.h
|
||||
reader.o: complete.h history.h common.h sanity.h env.h exec.h expand.h
|
||||
reader.o: tokenizer.h kill.h input_common.h input.h function.h output.h
|
||||
sanity.o: config.h util.h common.h sanity.h proc.h history.h reader.h kill.h
|
||||
sanity.o: wutil.h
|
||||
output.o: config.h signal.h util.h wutil.h expand.h common.h output.h
|
||||
output.o: highlight.h
|
||||
parser.o: signal.h config.h util.h common.h wutil.h proc.h io.h parser.h
|
||||
parser.o: tokenizer.h exec.h wildcard.h function.h builtin.h builtin_help.h
|
||||
parser.o: env.h expand.h reader.h sanity.h env_universal.h
|
||||
parser.o: env_universal_common.h event.h translate.h
|
||||
proc.o: config.h signal.h util.h wutil.h proc.h io.h common.h reader.h
|
||||
proc.o: sanity.h env.h parser.h event.h translate.h
|
||||
reader.o: config.h signal.h util.h wutil.h highlight.h reader.h proc.h io.h
|
||||
reader.o: parser.h complete.h history.h common.h sanity.h env.h exec.h
|
||||
reader.o: expand.h tokenizer.h kill.h input_common.h input.h function.h
|
||||
reader.o: output.h translate.h
|
||||
sanity.o: signal.h config.h util.h common.h sanity.h proc.h io.h history.h
|
||||
sanity.o: reader.h kill.h wutil.h
|
||||
set_color.o: config.h
|
||||
tokenize.o: config.h
|
||||
signal.o: config.h signal.h common.h util.h wutil.h event.h reader.h proc.h
|
||||
signal.o: io.h translate.h
|
||||
tokenizer.o: config.h util.h wutil.h tokenizer.h common.h wildcard.h
|
||||
tokenizer.o: translate.h
|
||||
translate.o: config.h common.h util.h
|
||||
util.o: config.h util.h common.h wutil.h
|
||||
wgetopt.o: config.h wgetopt.h wutil.h
|
||||
wildcard.o: config.h util.h wutil.h complete.h common.h wildcard.h reader.h
|
||||
wildcard.o: expand.h
|
||||
wildcard.o: expand.h translate.h
|
||||
wutil.o: config.h util.h common.h wutil.h
|
||||
xdgmimealias.o: xdgmimealias.h xdgmime.h xdgmimeint.h
|
||||
xdgmime.o: xdgmime.h xdgmimeint.h xdgmimeglob.h xdgmimemagic.h xdgmimealias.h
|
||||
|
||||
32
builtin.h
32
builtin.h
@@ -20,31 +20,42 @@ enum
|
||||
/**
|
||||
Error message on missing argument
|
||||
*/
|
||||
#define BUILTIN_ERR_MISSING L": Expected argument"
|
||||
#define BUILTIN_ERR_MISSING _( L"%ls: Expected argument\n" )
|
||||
|
||||
/**
|
||||
Error message on invalid combination of options
|
||||
*/
|
||||
#define BUILTIN_ERR_COMBO L": Invalid combination of options"
|
||||
#define BUILTIN_ERR_COMBO _( L"%ls: Invalid combination of options\n" )
|
||||
|
||||
/**
|
||||
Error message on invalid combination of options
|
||||
*/
|
||||
#define BUILTIN_ERR_COMBO2 _( L"%ls: Invalid combination of options,\n%ls\n" )
|
||||
|
||||
/**
|
||||
Error message on multiple scope levels for variables
|
||||
*/
|
||||
#define BUILTIN_ERR_GLOCAL L": Variable can only be one of universal, global and local"
|
||||
#define BUILTIN_ERR_GLOCAL _( L"%ls: Variable scope can only be one of universal, global and local\n%ls\n" )
|
||||
|
||||
/**
|
||||
Error message for specifying both export and unexport to set/read
|
||||
*/
|
||||
#define BUILTIN_ERR_EXPUNEXP L": Variable can't be both exported and unexported"
|
||||
#define BUILTIN_ERR_EXPUNEXP _( L"%ls: Variable can't be both exported and unexported\n%ls\n" )
|
||||
|
||||
/**
|
||||
Error message for unknown switch
|
||||
*/
|
||||
#define BUILTIN_ERR_UNKNOWN L": Unknown option"
|
||||
#define BUILTIN_ERR_UNKNOWN _( L"%ls: Unknown option '%ls'\n" )
|
||||
|
||||
#define BUILTIN_ERR_VARCHAR L"%ls: Invalid character in variable name: '%lc'. Only alphanumerical characters and underscores are valid in a variable name.\n"
|
||||
/**
|
||||
Error message for invalid character in variable name
|
||||
*/
|
||||
#define BUILTIN_ERR_VARCHAR _( L"%ls: Invalid character '%lc' in variable name. Only alphanumerical characters and underscores are valid in a variable name.\n" )
|
||||
|
||||
#define BUILTIN_ERR_VARNAME_ZERO L"%ls: Variable name can not be the empty string\n"
|
||||
/**
|
||||
Error message for invalid (empty) variable name
|
||||
*/
|
||||
#define BUILTIN_ERR_VARNAME_ZERO _( L"%ls: Variable name can not be the empty string\n" )
|
||||
|
||||
/**
|
||||
Stringbuffer used to represent standard output
|
||||
@@ -141,6 +152,13 @@ int builtin_commandline(wchar_t **argv);
|
||||
*/
|
||||
int builtin_ulimit(wchar_t **argv);
|
||||
|
||||
/**
|
||||
The complete builtin. Used for specifying programmable
|
||||
tab-completions. Calls the functions in complete.c for any heavy
|
||||
lifting.
|
||||
*/
|
||||
int builtin_complete(wchar_t **argv);
|
||||
|
||||
/**
|
||||
This function works like wperror, but it prints its result into
|
||||
the sb_err string_buffer_t instead of to stderr. Used by the builtin
|
||||
|
||||
@@ -13,6 +13,7 @@ Functions used for implementing the commandline builtin.
|
||||
|
||||
#include "config.h"
|
||||
#include "util.h"
|
||||
#include "wutil.h"
|
||||
#include "builtin.h"
|
||||
#include "common.h"
|
||||
#include "wgetopt.h"
|
||||
@@ -22,6 +23,7 @@ Functions used for implementing the commandline builtin.
|
||||
#include "tokenizer.h"
|
||||
#include "input_common.h"
|
||||
#include "input.h"
|
||||
#include "translate.h"
|
||||
|
||||
/**
|
||||
Which part of the comandbuffer are we operating on
|
||||
@@ -260,13 +262,10 @@ int builtin_commandline( wchar_t **argv )
|
||||
case 0:
|
||||
if(long_options[opt_index].flag != 0)
|
||||
break;
|
||||
sb_append2( sb_err,
|
||||
argv[0],
|
||||
BUILTIN_ERR_UNKNOWN,
|
||||
L" ",
|
||||
long_options[opt_index].name,
|
||||
L"\n",
|
||||
(void *)0 );
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_UNKNOWN,
|
||||
argv[0],
|
||||
long_options[opt_index].name );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
|
||||
return 1;
|
||||
@@ -322,10 +321,11 @@ int builtin_commandline( wchar_t **argv )
|
||||
*/
|
||||
if( buffer_part || cut_at_cursor || append_mode || tokenize )
|
||||
{
|
||||
sb_printf(sb_err,
|
||||
BUILTIN_ERR_COMBO,
|
||||
argv[0] );
|
||||
|
||||
sb_append2(sb_err,
|
||||
argv[0],
|
||||
BUILTIN_ERR_COMBO,
|
||||
L"\n",
|
||||
parser_current_line(),
|
||||
L"\n",
|
||||
(void *)0);
|
||||
@@ -335,10 +335,11 @@ int builtin_commandline( wchar_t **argv )
|
||||
|
||||
if( argc == woptind )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_MISSING,
|
||||
argv[0] );
|
||||
|
||||
sb_append2( sb_err,
|
||||
argv[0],
|
||||
BUILTIN_ERR_MISSING,
|
||||
L"\n",
|
||||
parser_current_line(),
|
||||
L"\n",
|
||||
(void *)0 );
|
||||
@@ -394,22 +395,23 @@ int builtin_commandline( wchar_t **argv )
|
||||
if( (tokenize || cut_at_cursor) && (argc-woptind) )
|
||||
{
|
||||
|
||||
sb_append2( sb_err,
|
||||
argv[0],
|
||||
BUILTIN_ERR_COMBO,
|
||||
L",\n --cut-at-cursor and --tokenize can not be used when setting the commandline",
|
||||
(void *)0 );
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_COMBO2,
|
||||
argv[0],
|
||||
L"--cut-at-cursor and --tokenize can not be used when setting the commandline" );
|
||||
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
|
||||
if( append_mode && !(argc-woptind) )
|
||||
{
|
||||
sb_append2( sb_err,
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_COMBO2,
|
||||
argv[0],
|
||||
BUILTIN_ERR_COMBO,
|
||||
L",\n insertion mode switches can not be used when not in insertion mode",
|
||||
(void *)0 );
|
||||
L"insertion mode switches can not be used when not in insertion mode" );
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
|
||||
485
builtin_complete.c
Normal file
485
builtin_complete.c
Normal file
@@ -0,0 +1,485 @@
|
||||
/** \file builtin_complete.c Functions defining the complete builtin
|
||||
|
||||
Functions used for implementing the complete builtin.
|
||||
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <wchar.h>
|
||||
#include <wctype.h>
|
||||
#include <sys/types.h>
|
||||
#include <termios.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "util.h"
|
||||
#include "wutil.h"
|
||||
#include "builtin.h"
|
||||
#include "common.h"
|
||||
#include "complete.h"
|
||||
#include "wgetopt.h"
|
||||
#include "parser.h"
|
||||
#include "translate.h"
|
||||
|
||||
/*
|
||||
builtin_complete_* are a set of rather silly looping functions that
|
||||
make sure that all the proper combinations of complete_add or
|
||||
complete_remove get called.
|
||||
*/
|
||||
|
||||
static void builtin_complete_add2( const wchar_t *cmd,
|
||||
int cmd_type,
|
||||
const wchar_t *short_opt,
|
||||
array_list_t *gnu_opt,
|
||||
array_list_t *old_opt,
|
||||
int result_mode,
|
||||
int authorative,
|
||||
const wchar_t *condition,
|
||||
const wchar_t *comp,
|
||||
const wchar_t *desc )
|
||||
{
|
||||
int i;
|
||||
const wchar_t *s;
|
||||
|
||||
for( s=short_opt; *s; s++ )
|
||||
{
|
||||
complete_add( cmd,
|
||||
cmd_type,
|
||||
*s,
|
||||
0,
|
||||
0,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
for( i=0; i<al_get_count( gnu_opt ); i++ )
|
||||
{
|
||||
complete_add( cmd,
|
||||
cmd_type,
|
||||
0,
|
||||
(wchar_t *)al_get(gnu_opt, i ),
|
||||
0,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
for( i=0; i<al_get_count( old_opt ); i++ )
|
||||
{
|
||||
complete_add( cmd,
|
||||
cmd_type,
|
||||
0,
|
||||
(wchar_t *)al_get(old_opt, i ),
|
||||
1,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
if( al_get_count( old_opt )+al_get_count( gnu_opt )+wcslen(short_opt) == 0 )
|
||||
{
|
||||
complete_add( cmd,
|
||||
cmd_type,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
}
|
||||
|
||||
static void builtin_complete_add( array_list_t *cmd,
|
||||
array_list_t *path,
|
||||
const wchar_t *short_opt,
|
||||
array_list_t *gnu_opt,
|
||||
array_list_t *old_opt,
|
||||
int result_mode,
|
||||
int authorative,
|
||||
const wchar_t *condition,
|
||||
const wchar_t *comp,
|
||||
const wchar_t *desc )
|
||||
{
|
||||
int i;
|
||||
|
||||
for( i=0; i<al_get_count( cmd ); i++ )
|
||||
{
|
||||
builtin_complete_add2( al_get( cmd, i ),
|
||||
COMMAND,
|
||||
short_opt,
|
||||
gnu_opt,
|
||||
old_opt,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
for( i=0; i<al_get_count( path ); i++ )
|
||||
{
|
||||
builtin_complete_add2( al_get( path, i ),
|
||||
PATH,
|
||||
short_opt,
|
||||
gnu_opt,
|
||||
old_opt,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void builtin_complete_remove3( wchar_t *cmd,
|
||||
int cmd_type,
|
||||
wchar_t short_opt,
|
||||
array_list_t *long_opt )
|
||||
{
|
||||
int i;
|
||||
|
||||
for( i=0; i<al_get_count( long_opt ); i++ )
|
||||
{
|
||||
complete_remove( cmd,
|
||||
cmd_type,
|
||||
short_opt,
|
||||
(wchar_t *)al_get( long_opt, i ) );
|
||||
}
|
||||
}
|
||||
|
||||
static void builtin_complete_remove2( wchar_t *cmd,
|
||||
int cmd_type,
|
||||
const wchar_t *short_opt,
|
||||
array_list_t *gnu_opt,
|
||||
array_list_t *old_opt )
|
||||
{
|
||||
const wchar_t *s = (wchar_t *)short_opt;
|
||||
if( *s )
|
||||
{
|
||||
for( ; *s; s++ )
|
||||
{
|
||||
if( al_get_count( old_opt) + al_get_count( gnu_opt ) == 0 )
|
||||
{
|
||||
complete_remove(cmd,
|
||||
cmd_type,
|
||||
*s,
|
||||
0 );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
builtin_complete_remove3( cmd,
|
||||
cmd_type,
|
||||
*s,
|
||||
gnu_opt );
|
||||
builtin_complete_remove3( cmd,
|
||||
cmd_type,
|
||||
*s,
|
||||
old_opt );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
builtin_complete_remove3( cmd,
|
||||
cmd_type,
|
||||
0,
|
||||
gnu_opt );
|
||||
builtin_complete_remove3( cmd,
|
||||
cmd_type,
|
||||
0,
|
||||
old_opt );
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
static void builtin_complete_remove( array_list_t *cmd,
|
||||
array_list_t *path,
|
||||
const wchar_t *short_opt,
|
||||
array_list_t *gnu_opt,
|
||||
array_list_t *old_opt )
|
||||
{
|
||||
|
||||
int i;
|
||||
|
||||
for( i=0; i<al_get_count( cmd ); i++ )
|
||||
{
|
||||
builtin_complete_remove2( (wchar_t *)al_get( cmd, i ),
|
||||
COMMAND,
|
||||
short_opt,
|
||||
gnu_opt,
|
||||
old_opt );
|
||||
}
|
||||
|
||||
for( i=0; i<al_get_count( path ); i++ )
|
||||
{
|
||||
builtin_complete_remove2( (wchar_t *)al_get( path, i ),
|
||||
PATH,
|
||||
short_opt,
|
||||
gnu_opt,
|
||||
old_opt );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
int builtin_complete( wchar_t **argv )
|
||||
{
|
||||
int res=0;
|
||||
int argc=0;
|
||||
int result_mode=SHARED;
|
||||
int remove = 0;
|
||||
int authorative = 1;
|
||||
|
||||
string_buffer_t short_opt;
|
||||
array_list_t gnu_opt, old_opt;
|
||||
wchar_t *comp=L"", *desc=L"", *condition=L"", *load=0;
|
||||
|
||||
array_list_t cmd;
|
||||
array_list_t path;
|
||||
|
||||
al_init( &cmd );
|
||||
al_init( &path );
|
||||
sb_init( &short_opt );
|
||||
al_init( &gnu_opt );
|
||||
al_init( &old_opt );
|
||||
|
||||
argc = builtin_count_args( argv );
|
||||
|
||||
woptind=0;
|
||||
|
||||
while( res == 0 )
|
||||
{
|
||||
const static struct woption
|
||||
long_options[] =
|
||||
{
|
||||
{
|
||||
L"exclusive", no_argument, 0, 'x'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"no-files", no_argument, 0, 'f'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"require-parameter", no_argument, 0, 'r'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"path", required_argument, 0, 'p'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"command", required_argument, 0, 'c'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"short-option", required_argument, 0, 's'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"long-option", required_argument, 0, 'l' }
|
||||
,
|
||||
{
|
||||
L"old-option", required_argument, 0, 'o'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"description", required_argument, 0, 'd'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"arguments", required_argument, 0, 'a'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"erase", no_argument, 0, 'e'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"unauthorative", no_argument, 0, 'u'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"condition", required_argument, 0, 'n'
|
||||
}
|
||||
,
|
||||
{
|
||||
L"load", required_argument, 0, 'y'
|
||||
}
|
||||
,
|
||||
{
|
||||
0, 0, 0, 0
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
int opt_index = 0;
|
||||
|
||||
int opt = wgetopt_long( argc,
|
||||
argv,
|
||||
L"a:c:p:s:l:o:d:frxeun:y:",
|
||||
long_options,
|
||||
&opt_index );
|
||||
if( opt == -1 )
|
||||
break;
|
||||
|
||||
switch( opt )
|
||||
{
|
||||
case 0:
|
||||
if(long_options[opt_index].flag != 0)
|
||||
break;
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_UNKNOWN,
|
||||
argv[0],
|
||||
long_options[opt_index].name );
|
||||
sb_append( sb_err,
|
||||
parser_current_line() );
|
||||
// builtin_print_help( argv[0], sb_err );
|
||||
|
||||
|
||||
res = 1;
|
||||
break;
|
||||
|
||||
case 'x':
|
||||
result_mode |= EXCLUSIVE;
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
result_mode |= NO_FILES;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
result_mode |= NO_COMMON;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
al_push( &cmd, unescape( woptarg, 1));
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
al_push( &cmd, unescape( woptarg, 1) );
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
desc = woptarg;
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
authorative=0;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
sb_append( &short_opt, woptarg );
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
al_push( &gnu_opt, woptarg );
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
al_push( &old_opt, woptarg );
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
comp = woptarg;
|
||||
break;
|
||||
|
||||
|
||||
case 'e':
|
||||
remove = 1;
|
||||
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
condition = woptarg;
|
||||
break;
|
||||
|
||||
case 'y':
|
||||
load = woptarg;
|
||||
break;
|
||||
|
||||
|
||||
case '?':
|
||||
// builtin_print_help( argv[0], sb_err );
|
||||
|
||||
res = 1;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if( res != 0 )
|
||||
{
|
||||
}
|
||||
else if( woptind != argc )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
_( L"%ls: Too many arguments\n" ),
|
||||
argv[0] );
|
||||
sb_append( sb_err,
|
||||
parser_current_line() );
|
||||
// builtin_print_help( argv[0], sb_err );
|
||||
|
||||
res = 1;
|
||||
}
|
||||
else if( load )
|
||||
{
|
||||
complete_load( load, 1 );
|
||||
}
|
||||
else if( (al_get_count( &cmd) == 0 ) && (al_get_count( &path) == 0 ) )
|
||||
{
|
||||
/* No arguments specified, meaning we print the definitions of
|
||||
* all specified completions to stdout.*/
|
||||
complete_print( sb_out );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( remove )
|
||||
{
|
||||
builtin_complete_remove( &cmd,
|
||||
&path,
|
||||
(wchar_t *)short_opt.buff,
|
||||
&gnu_opt,
|
||||
&old_opt );
|
||||
}
|
||||
else
|
||||
{
|
||||
builtin_complete_add( &cmd,
|
||||
&path,
|
||||
(wchar_t *)short_opt.buff,
|
||||
&gnu_opt,
|
||||
&old_opt,
|
||||
result_mode,
|
||||
authorative,
|
||||
condition,
|
||||
comp,
|
||||
desc );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
al_foreach( &cmd, (void (*)(const void *))&free );
|
||||
al_foreach( &path, (void (*)(const void *))&free );
|
||||
|
||||
al_destroy( &cmd );
|
||||
al_destroy( &path );
|
||||
sb_destroy( &short_opt );
|
||||
al_destroy( &gnu_opt );
|
||||
al_destroy( &old_opt );
|
||||
|
||||
return res;
|
||||
}
|
||||
@@ -13,6 +13,7 @@ Functions used for implementing the set builtin.
|
||||
|
||||
#include "config.h"
|
||||
#include "util.h"
|
||||
#include "wutil.h"
|
||||
#include "builtin.h"
|
||||
#include "env.h"
|
||||
#include "expand.h"
|
||||
@@ -20,6 +21,7 @@ Functions used for implementing the set builtin.
|
||||
#include "wgetopt.h"
|
||||
#include "proc.h"
|
||||
#include "parser.h"
|
||||
#include "translate.h"
|
||||
|
||||
/**
|
||||
Extract the name from a destination argument of the form name[index1 index2...]
|
||||
@@ -92,9 +94,7 @@ static int parse_fill_indexes( array_list_t *indexes,
|
||||
long l_ind = wcstol(src, &end, 10);
|
||||
if (end == src)
|
||||
{
|
||||
wchar_t sbuf[256];
|
||||
swprintf(sbuf, 255, L"Invalid index starting at %ls\n", src);
|
||||
sb_append(sb_err, sbuf);
|
||||
sb_printf(sb_err, _(L"%ls: Invalid index starting at '%ls'\n"), L"set", src);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -362,13 +362,11 @@ int builtin_set( wchar_t **argv )
|
||||
|
||||
if( query && (erase || list || global || local || universal || export || unexport ) )
|
||||
{
|
||||
sb_append2(sb_err,
|
||||
sb_printf(sb_err,
|
||||
BUILTIN_ERR_COMBO2,
|
||||
argv[0],
|
||||
BUILTIN_ERR_COMBO,
|
||||
L"\n",
|
||||
parser_current_line(),
|
||||
L"\n",
|
||||
(void *)0);
|
||||
parser_current_line() );
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
@@ -377,13 +375,11 @@ int builtin_set( wchar_t **argv )
|
||||
/* Check operation and modifiers sanity */
|
||||
if( erase && list )
|
||||
{
|
||||
sb_append2(sb_err,
|
||||
sb_printf(sb_err,
|
||||
BUILTIN_ERR_COMBO2,
|
||||
argv[0],
|
||||
BUILTIN_ERR_COMBO,
|
||||
L"\n",
|
||||
parser_current_line(),
|
||||
L"\n",
|
||||
(void *)0);
|
||||
parser_current_line() );
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
@@ -391,9 +387,8 @@ int builtin_set( wchar_t **argv )
|
||||
if( local + global + universal > 1 )
|
||||
{
|
||||
sb_printf( sb_err,
|
||||
L"%ls%ls\n%ls\n",
|
||||
argv[0],
|
||||
BUILTIN_ERR_GLOCAL,
|
||||
argv[0],
|
||||
parser_current_line() );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
@@ -401,13 +396,10 @@ int builtin_set( wchar_t **argv )
|
||||
|
||||
if( export && unexport )
|
||||
{
|
||||
sb_append2(sb_err,
|
||||
argv[0],
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_EXPUNEXP,
|
||||
L"\n",
|
||||
parser_current_line(),
|
||||
L"\n",
|
||||
(void *)0);
|
||||
argv[0],
|
||||
parser_current_line() );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
return 1;
|
||||
}
|
||||
@@ -493,12 +485,11 @@ int builtin_set( wchar_t **argv )
|
||||
/* No arguments -- display name & value for all variables in scope */
|
||||
if( erase )
|
||||
{
|
||||
sb_append2( sb_err,
|
||||
argv[0],
|
||||
L": Erase needs a variable name\n",
|
||||
parser_current_line(),
|
||||
L"\n",
|
||||
(void *)0 );
|
||||
sb_printf( sb_err,
|
||||
_(L"%ls: Erase needs a variable name\n%ls\n"),
|
||||
argv[0],
|
||||
parser_current_line() );
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
retcode = 1;
|
||||
}
|
||||
@@ -531,12 +522,11 @@ int builtin_set( wchar_t **argv )
|
||||
/* There are some arguments, we have at least a variable name */
|
||||
if( erase && al_get_count(&values) != 0 )
|
||||
{
|
||||
sb_append2( sb_err,
|
||||
argv[0],
|
||||
L": Values cannot be specfied with erase\n",
|
||||
parser_current_line(),
|
||||
L"\n",
|
||||
(void *)0 );
|
||||
sb_printf( sb_err,
|
||||
_(L"%ls: Values cannot be specfied with erase\n%ls\n"),
|
||||
argv[0],
|
||||
parser_current_line() );
|
||||
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
retcode = 1;
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ Functions used for implementing the ulimit builtin.
|
||||
#include "builtin.h"
|
||||
#include "common.h"
|
||||
#include "wgetopt.h"
|
||||
#include "translate.h"
|
||||
|
||||
/**
|
||||
Struct describing a resource limit
|
||||
@@ -344,13 +345,10 @@ int builtin_ulimit( wchar_t ** argv )
|
||||
case 0:
|
||||
if(long_options[opt_index].flag != 0)
|
||||
break;
|
||||
sb_append2( sb_err,
|
||||
argv[0],
|
||||
BUILTIN_ERR_UNKNOWN,
|
||||
L" ",
|
||||
long_options[opt_index].name,
|
||||
L"\n",
|
||||
(void *)0 );
|
||||
sb_printf( sb_err,
|
||||
BUILTIN_ERR_UNKNOWN,
|
||||
argv[0],
|
||||
long_options[opt_index].name );
|
||||
builtin_print_help( argv[0], sb_err );
|
||||
|
||||
return 1;
|
||||
|
||||
262
common.c
262
common.c
@@ -45,8 +45,11 @@ parts of fish.
|
||||
#include <termio.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_TERM_H
|
||||
#include <term.h>
|
||||
|
||||
#elif HAVE_NCURSES_TERM_H
|
||||
#include <ncurses/term.h>
|
||||
#endif
|
||||
|
||||
#include "util.h"
|
||||
#include "wutil.h"
|
||||
@@ -85,8 +88,6 @@ int error_max=1;
|
||||
|
||||
wchar_t ellipsis_char;
|
||||
|
||||
static int c1=0, c2=0, c3=0, c4=0, c5;
|
||||
|
||||
char *profile=0;
|
||||
|
||||
wchar_t *program_name;
|
||||
@@ -104,9 +105,19 @@ static struct winsize termsize;
|
||||
*/
|
||||
static int block_count=0;
|
||||
|
||||
/**
|
||||
String buffer used by the wsetlocale function
|
||||
*/
|
||||
static string_buffer_t *setlocale_buff=0;
|
||||
|
||||
|
||||
void common_destroy()
|
||||
{
|
||||
debug( 3, L"Calls: wcsdupcat %d, wcsdupcat2 %d, wcsndup %d, str2wcs %d, wcs2str %d", c1, c2, c3, c4, c5 );
|
||||
if( setlocale_buff )
|
||||
{
|
||||
sb_destroy( setlocale_buff );
|
||||
free( setlocale_buff );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -244,8 +255,6 @@ void sort_list( array_list_t *comp )
|
||||
|
||||
wchar_t *str2wcs( const char *in )
|
||||
{
|
||||
c4++;
|
||||
|
||||
wchar_t *res;
|
||||
|
||||
res = malloc( sizeof(wchar_t)*(strlen(in)+1) );
|
||||
@@ -253,7 +262,6 @@ wchar_t *str2wcs( const char *in )
|
||||
if( !res )
|
||||
{
|
||||
die_mem();
|
||||
|
||||
}
|
||||
|
||||
if( (size_t)-1 == mbstowcs( res, in, sizeof(wchar_t)*(strlen(in)) +1) )
|
||||
@@ -288,9 +296,8 @@ void error_reset()
|
||||
|
||||
char *wcs2str( const wchar_t *in )
|
||||
{
|
||||
c5++;
|
||||
|
||||
char *res = malloc( MAX_UTF8_BYTES*wcslen(in)+1 );
|
||||
|
||||
if( res == 0 )
|
||||
{
|
||||
die_mem();
|
||||
@@ -300,7 +307,7 @@ char *wcs2str( const wchar_t *in )
|
||||
in,
|
||||
MAX_UTF8_BYTES*wcslen(in)+1 );
|
||||
|
||||
// res = realloc( res, strlen( res )+1 );
|
||||
res = realloc( res, strlen( res )+1 );
|
||||
|
||||
return res;
|
||||
}
|
||||
@@ -329,15 +336,11 @@ char **wcsv2strv( const wchar_t **in )
|
||||
|
||||
wchar_t *wcsdupcat( const wchar_t *a, const wchar_t *b )
|
||||
{
|
||||
c1++;
|
||||
|
||||
return wcsdupcat2( a, b, 0 );
|
||||
}
|
||||
|
||||
wchar_t *wcsdupcat2( const wchar_t *a, ... )
|
||||
{
|
||||
c2++;
|
||||
|
||||
int len=wcslen(a);
|
||||
int pos;
|
||||
va_list va, va2;
|
||||
@@ -393,87 +396,6 @@ wchar_t **strv2wcsv( const char **in )
|
||||
}
|
||||
|
||||
|
||||
#ifndef HAVE_WCSNDUP
|
||||
wchar_t *wcsndup( const wchar_t *in, int c )
|
||||
{
|
||||
c3++;
|
||||
|
||||
wchar_t *res = malloc( sizeof(wchar_t)*(c+1) );
|
||||
if( res == 0 )
|
||||
{
|
||||
die_mem();
|
||||
}
|
||||
wcsncpy( res, in, c );
|
||||
res[c] = L'\0';
|
||||
return res;
|
||||
}
|
||||
#endif
|
||||
|
||||
long convert_digit( wchar_t d, int base )
|
||||
{
|
||||
long res=-1;
|
||||
if( (d <= L'9') && (d >= L'0') )
|
||||
{
|
||||
res = d - L'0';
|
||||
}
|
||||
else if( (d <= L'z') && (d >= L'a') )
|
||||
{
|
||||
res = d + 10 - L'a';
|
||||
}
|
||||
else if( (d <= L'Z') && (d >= L'A') )
|
||||
{
|
||||
res = d + 10 - L'A';
|
||||
}
|
||||
if( res >= base )
|
||||
{
|
||||
res = -1;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
long wcstol(const wchar_t *nptr,
|
||||
wchar_t **endptr,
|
||||
int base)
|
||||
{
|
||||
long long res=0;
|
||||
int is_set=0;
|
||||
if( base > 36 )
|
||||
{
|
||||
errno = EINVAL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
while( 1 )
|
||||
{
|
||||
long nxt = convert_digit( *nptr, base );
|
||||
if( endptr != 0 )
|
||||
*endptr = (wchar_t *)nptr;
|
||||
if( nxt < 0 )
|
||||
{
|
||||
if( !is_set )
|
||||
{
|
||||
errno = EINVAL;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
res = (res*base)+nxt;
|
||||
is_set = 1;
|
||||
if( res > LONG_MAX )
|
||||
{
|
||||
errno = ERANGE;
|
||||
return LONG_MAX;
|
||||
}
|
||||
if( res < LONG_MIN )
|
||||
{
|
||||
errno = ERANGE;
|
||||
return LONG_MIN;
|
||||
}
|
||||
nptr++;
|
||||
}
|
||||
}
|
||||
|
||||
/*$OpenBSD: strlcat.c,v 1.11 2003/06/17 21:56:24 millert Exp $*/
|
||||
|
||||
/*
|
||||
@@ -575,75 +497,6 @@ wcslcpy(wchar_t *dst, const wchar_t *src, size_t siz)
|
||||
/* count does not include NUL */
|
||||
}
|
||||
|
||||
#ifndef HAVE_WCSDUP
|
||||
wchar_t *wcsdup( const wchar_t *in )
|
||||
{
|
||||
size_t len=wcslen(in);
|
||||
wchar_t *out = malloc( sizeof( wchar_t)*(len+1));
|
||||
if( out == 0 )
|
||||
{
|
||||
die_mem();
|
||||
}
|
||||
|
||||
memcpy( out, in, sizeof( wchar_t)*(len+1));
|
||||
return out;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_WCSLEN
|
||||
size_t wcslen(const wchar_t *in)
|
||||
{
|
||||
const wchar_t *end=in;
|
||||
while( *end )
|
||||
end++;
|
||||
return end-in;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef HAVE_WCSCASECMP
|
||||
int wcscasecmp( const wchar_t *a, const wchar_t *b )
|
||||
{
|
||||
if( *a == 0 )
|
||||
{
|
||||
return (*b==0)?0:-1;
|
||||
}
|
||||
else if( *b == 0 )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
int diff = towlower(*a)-towlower(*b);
|
||||
if( diff != 0 )
|
||||
return diff;
|
||||
else
|
||||
return wcscasecmp( a+1,b+1);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef HAVE_WCSNCASECMP
|
||||
int wcsncasecmp( const wchar_t *a, const wchar_t *b, int count )
|
||||
{
|
||||
if( count == 0 )
|
||||
return 0;
|
||||
|
||||
if( *a == 0 )
|
||||
{
|
||||
return (*b==0)?0:-1;
|
||||
}
|
||||
else if( *b == 0 )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
int diff = towlower(*a)-towlower(*b);
|
||||
if( diff != 0 )
|
||||
return diff;
|
||||
else
|
||||
return wcsncasecmp( a+1,b+1, count-1);
|
||||
}
|
||||
#endif
|
||||
|
||||
int wcsvarname( wchar_t *str )
|
||||
{
|
||||
while( *str )
|
||||
@@ -659,23 +512,6 @@ int wcsvarname( wchar_t *str )
|
||||
|
||||
}
|
||||
|
||||
#if !HAVE_WCWIDTH
|
||||
/**
|
||||
Return the number of columns used by a character.
|
||||
|
||||
In locales without a native wcwidth, Unicode is probably so broken
|
||||
that it isn't worth trying to implement a real wcwidth. This
|
||||
wcwidth assumes any printing character takes up one column.
|
||||
*/
|
||||
int wcwidth( wchar_t c )
|
||||
{
|
||||
if( c < 32 )
|
||||
return 0;
|
||||
if ( c == 127 )
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
The glibc version of wcswidth seems to hang on some strings. fish uses this replacement.
|
||||
@@ -720,26 +556,33 @@ wchar_t *quote_end( const wchar_t *in )
|
||||
}
|
||||
|
||||
|
||||
void fish_setlocale(int category, const wchar_t *locale)
|
||||
const wchar_t *wsetlocale(int category, const wchar_t *locale)
|
||||
{
|
||||
char *lang = wcs2str( locale );
|
||||
setlocale(category,lang);
|
||||
|
||||
char *lang = locale?wcs2str( locale ):0;
|
||||
char * res = setlocale(category,lang);
|
||||
|
||||
free( lang );
|
||||
|
||||
/*
|
||||
Use ellipsis if on known unicode system, otherwise use $
|
||||
*/
|
||||
if( wcslen( locale ) )
|
||||
char *ctype = setlocale( LC_CTYPE, (void *)0 );
|
||||
ellipsis_char = (strstr( ctype, ".UTF")||strstr( ctype, ".utf") )?L'\u2026':L'$';
|
||||
|
||||
if( !res )
|
||||
return 0;
|
||||
|
||||
if( !setlocale_buff )
|
||||
{
|
||||
ellipsis_char = wcsstr( locale, L".UTF")?L'\u2026':L'$';
|
||||
}
|
||||
else
|
||||
{
|
||||
char *lang = getenv( "LANG" );
|
||||
if( lang )
|
||||
ellipsis_char = strstr( lang, ".UTF")?L'\u2026':L'$';
|
||||
else
|
||||
ellipsis_char = L'$';
|
||||
setlocale_buff = malloc( sizeof(string_buffer_t) );
|
||||
sb_init( setlocale_buff);
|
||||
}
|
||||
|
||||
sb_clear( setlocale_buff );
|
||||
sb_printf( setlocale_buff, L"%s", res );
|
||||
|
||||
return (wchar_t *)setlocale_buff->buff;
|
||||
}
|
||||
|
||||
int contains_str( const wchar_t *a, ... )
|
||||
@@ -784,18 +627,19 @@ int writeb( tputs_arg_t b )
|
||||
|
||||
void die_mem()
|
||||
{
|
||||
debug( 0, L"Out of memory, shutting down fish." );
|
||||
/*
|
||||
Do not translate this message, and do not send it through the
|
||||
usual channels. This increases the odds that the message gets
|
||||
through correctly, even if we are out of memory.
|
||||
*/
|
||||
fwprintf( stderr, L"Out of memory, shutting down fish.\n" );
|
||||
exit(1);
|
||||
}
|
||||
|
||||
void debug( int level, wchar_t *msg, ... )
|
||||
void debug( int level, const wchar_t *msg, ... )
|
||||
{
|
||||
va_list va;
|
||||
string_buffer_t sb;
|
||||
wchar_t *start, *pos;
|
||||
int line_width = 0;
|
||||
int tok_width = 0;
|
||||
int screen_width = common_get_width();
|
||||
|
||||
if( level > debug_level )
|
||||
return;
|
||||
@@ -806,10 +650,22 @@ void debug( int level, wchar_t *msg, ... )
|
||||
sb_printf( &sb, L"%ls: ", program_name );
|
||||
sb_vprintf( &sb, msg, va );
|
||||
va_end( va );
|
||||
|
||||
write_screen( (wchar_t *)sb.buff );
|
||||
|
||||
sb_destroy( &sb );
|
||||
}
|
||||
|
||||
void write_screen( const wchar_t *msg )
|
||||
{
|
||||
const wchar_t *start, *pos;
|
||||
int line_width = 0;
|
||||
int tok_width = 0;
|
||||
int screen_width = common_get_width();
|
||||
|
||||
if( screen_width )
|
||||
{
|
||||
start = pos = (wchar_t *)sb.buff;
|
||||
start = pos = msg;
|
||||
while( 1 )
|
||||
{
|
||||
int overflow = 0;
|
||||
@@ -881,11 +737,9 @@ void debug( int level, wchar_t *msg, ... )
|
||||
}
|
||||
else
|
||||
{
|
||||
fwprintf( stderr, L"%ls", sb.buff );
|
||||
|
||||
fwprintf( stderr, L"%ls", msg );
|
||||
}
|
||||
putwc( L'\n', stderr );
|
||||
sb_destroy( &sb );
|
||||
}
|
||||
|
||||
wchar_t *escape( const wchar_t *in,
|
||||
|
||||
92
common.h
92
common.h
@@ -134,33 +134,6 @@ wchar_t *wcsdupcat( const wchar_t *a, const wchar_t *b );
|
||||
*/
|
||||
wchar_t *wcsdupcat2( const wchar_t *a, ... );
|
||||
|
||||
#ifndef HAVE_WCSNDUP
|
||||
/**
|
||||
Returns a newly allocated wide character string wich is a copy of
|
||||
the string in, but of length c or shorter. The returned string is
|
||||
always null terminated, and the null is not included in the string
|
||||
length.
|
||||
*/
|
||||
wchar_t *wcsndup( const wchar_t *in, int c );
|
||||
#endif
|
||||
|
||||
/**
|
||||
Converts from wide char to digit in the specified base. If d is not
|
||||
a valid digit in the specified base, return -1.
|
||||
*/
|
||||
long convert_digit( wchar_t d, int base );
|
||||
|
||||
|
||||
/**
|
||||
Convert a wide character string to a number in the specified
|
||||
base. This functions is the wide character string equivalent of
|
||||
strtol. For bases of 10 or lower, 0..9 are used to represent
|
||||
numbers. For bases below 36, a-z and A-Z are used to represent
|
||||
numbers higher than 9. Higher bases than 36 are not supported.
|
||||
*/
|
||||
long wcstol(const wchar_t *nptr,
|
||||
wchar_t **endptr,
|
||||
int base);
|
||||
|
||||
/**
|
||||
Appends src to string dst of size siz (unlike wcsncat, siz is the
|
||||
@@ -185,61 +158,12 @@ size_t wcslcat( wchar_t *dst, const wchar_t *src, size_t siz );
|
||||
*/
|
||||
size_t wcslcpy( wchar_t *dst, const wchar_t *src, size_t siz );
|
||||
|
||||
#ifndef HAVE_WCSDUP
|
||||
/**
|
||||
Create a duplicate string. Wide string version of strdup. Will
|
||||
automatically exit if out of memory.
|
||||
*/
|
||||
wchar_t *wcsdup(const wchar_t *in);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_WCSLEN
|
||||
size_t wcslen(const wchar_t *in);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_WCSCASECMP
|
||||
/**
|
||||
Case insensitive string compare function. Wide string version of
|
||||
strcasecmp.
|
||||
|
||||
This implementation of wcscasecmp does not take into account
|
||||
esoteric locales where uppercase and lowercase do not cleanly
|
||||
transform between each other. Hopefully this should be fine since
|
||||
fish only uses this function with one of the strings supplied by
|
||||
fish and guaranteed to be a sane, english word. Using wcscasecmp on
|
||||
a user-supplied string should be considered a bug.
|
||||
*/
|
||||
int wcscasecmp( const wchar_t *a, const wchar_t *b );
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_WCSNCASECMP
|
||||
/**
|
||||
Case insensitive string compare function. Wide string version of
|
||||
strncasecmp.
|
||||
|
||||
This implementation of wcsncasecmp does not take into account
|
||||
esoteric locales where uppercase and lowercase do not cleanly
|
||||
transform between each other. Hopefully this should be fine since
|
||||
fish only uses this function with one of the strings supplied by
|
||||
fish and guaranteed to be a sane, english word. Using wcsncasecmp on
|
||||
a user-supplied string should be considered a bug.
|
||||
*/
|
||||
int wcsncasecmp( const wchar_t *a, const wchar_t *b, int count );
|
||||
#endif
|
||||
|
||||
/**
|
||||
Test if the given string is a valid variable name
|
||||
*/
|
||||
|
||||
int wcsvarname( wchar_t *str );
|
||||
|
||||
/**
|
||||
The prototype for this function is missing in some libc
|
||||
implementations. Fish has a fallback implementation in case the
|
||||
implementation is missing altogether.
|
||||
*/
|
||||
int wcwidth( wchar_t c );
|
||||
|
||||
|
||||
/**
|
||||
A wcswidth workalike. Fish uses this since the regular wcswidth seems flaky.
|
||||
@@ -266,9 +190,12 @@ wchar_t *quote_end( const wchar_t *in );
|
||||
void error_reset();
|
||||
|
||||
/**
|
||||
Set the locale, also change the ellipsis character
|
||||
This function behaves exactly like a wide character equivalent of
|
||||
the C function setlocale, except that it will also try to detect if
|
||||
the user is using a Unicode character set, and if so, use the
|
||||
unicode ellipsis character as ellipsis, instead of '$'.
|
||||
*/
|
||||
void fish_setlocale( int category, const wchar_t *locale );
|
||||
const wchar_t *wsetlocale( int category, const wchar_t *locale );
|
||||
|
||||
/**
|
||||
Checks if \c needle is included in the list of strings specified
|
||||
@@ -314,7 +241,7 @@ void common_destroy();
|
||||
|
||||
will print the string 'fish: Pi = 3.141', given that debug_level is 1 or higher, and that program_name is 'fish'.
|
||||
*/
|
||||
void debug( int level, wchar_t *msg, ... );
|
||||
void debug( int level, const wchar_t *msg, ... );
|
||||
|
||||
/**
|
||||
Replace special characters with backslash escape sequences. Newline is
|
||||
@@ -387,5 +314,12 @@ int common_get_height();
|
||||
*/
|
||||
void common_handle_winch( int signal );
|
||||
|
||||
/**
|
||||
Write paragraph of output to screen. Ignore newlines in message and
|
||||
perform internal line-breaking.
|
||||
*/
|
||||
void write_screen( const wchar_t *msg );
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
495
complete.c
495
complete.c
@@ -35,6 +35,7 @@
|
||||
#include "reader.h"
|
||||
#include "history.h"
|
||||
#include "intern.h"
|
||||
#include "translate.h"
|
||||
|
||||
#include "wutil.h"
|
||||
|
||||
@@ -48,63 +49,67 @@
|
||||
/**
|
||||
Description for ~USER completion
|
||||
*/
|
||||
#define COMPLETE_USER_DESC COMPLETE_SEP_STR L"User home"
|
||||
#define COMPLETE_USER_DESC _( L"User home" )
|
||||
|
||||
/**
|
||||
Description for short variables. The value is concatenated to this description
|
||||
*/
|
||||
#define COMPLETE_VAR_DESC_VAL COMPLETE_SEP_STR L"Variable: "
|
||||
#define COMPLETE_VAR_DESC_VAL _( L"Variable: " )
|
||||
|
||||
/**
|
||||
Description for generic executable
|
||||
*/
|
||||
#define COMPLETE_EXEC_DESC COMPLETE_SEP_STR L"Executable"
|
||||
#define COMPLETE_EXEC_DESC _( L"Executable" )
|
||||
/**
|
||||
Description for link to executable
|
||||
*/
|
||||
#define COMPLETE_EXEC_LINK_DESC COMPLETE_SEP_STR L"Executable link"
|
||||
#define COMPLETE_EXEC_LINK_DESC _( L"Executable link" )
|
||||
|
||||
/**
|
||||
Description for regular file
|
||||
*/
|
||||
#define COMPLETE_FILE_DESC COMPLETE_SEP_STR L"File"
|
||||
#define COMPLETE_FILE_DESC _( L"File" )
|
||||
/**
|
||||
Description for character device
|
||||
*/
|
||||
#define COMPLETE_CHAR_DESC COMPLETE_SEP_STR L"Character device"
|
||||
#define COMPLETE_CHAR_DESC _( L"Character device" )
|
||||
/**
|
||||
Description for block device
|
||||
*/
|
||||
#define COMPLETE_BLOCK_DESC COMPLETE_SEP_STR L"Block device"
|
||||
#define COMPLETE_BLOCK_DESC _( L"Block device" )
|
||||
/**
|
||||
Description for fifo buffer
|
||||
*/
|
||||
#define COMPLETE_FIFO_DESC COMPLETE_SEP_STR L"Fifo"
|
||||
#define COMPLETE_FIFO_DESC _( L"Fifo" )
|
||||
/**
|
||||
Description for symlink
|
||||
*/
|
||||
#define COMPLETE_SYMLINK_DESC COMPLETE_SEP_STR L"Symbolic link"
|
||||
#define COMPLETE_SYMLINK_DESC _( L"Symbolic link" )
|
||||
/**
|
||||
Description for Rotten symlink
|
||||
*/
|
||||
#define COMPLETE_ROTTEN_SYMLINK_DESC COMPLETE_SEP_STR L"Rotten symbolic link"
|
||||
#define COMPLETE_ROTTEN_SYMLINK_DESC _( L"Rotten symbolic link" )
|
||||
/**
|
||||
Description for symlink loop
|
||||
*/
|
||||
#define COMPLETE_LOOP_SYMLINK_DESC _( L"Symbolic link loop" )
|
||||
/**
|
||||
Description for socket
|
||||
*/
|
||||
#define COMPLETE_SOCKET_DESC COMPLETE_SEP_STR L"Socket"
|
||||
#define COMPLETE_SOCKET_DESC _( L"Socket" )
|
||||
/**
|
||||
Description for directory
|
||||
*/
|
||||
#define COMPLETE_DIRECTORY_DESC COMPLETE_SEP_STR L"Directory"
|
||||
#define COMPLETE_DIRECTORY_DESC _( L"Directory" )
|
||||
|
||||
/**
|
||||
Description for function
|
||||
*/
|
||||
#define COMPLETE_FUNCTION_DESC COMPLETE_SEP_STR L"Function"
|
||||
#define COMPLETE_FUNCTION_DESC _( L"Function" )
|
||||
/**
|
||||
Description for builtin command
|
||||
*/
|
||||
#define COMPLETE_BUILTIN_DESC COMPLETE_SEP_STR L"Builtin"
|
||||
#define COMPLETE_BUILTIN_DESC _( L"Builtin" )
|
||||
|
||||
/**
|
||||
The command to run to get a description from a file suffix
|
||||
@@ -204,6 +209,12 @@ static hash_table_t *condition_cache=0;
|
||||
*/
|
||||
static hash_table_t *loaded_completions=0;
|
||||
|
||||
/**
|
||||
String buffer used by complete_get_desc
|
||||
*/
|
||||
static string_buffer_t *get_desc_buff=0;
|
||||
|
||||
|
||||
void complete_init()
|
||||
{
|
||||
}
|
||||
@@ -321,18 +332,21 @@ static void clear_hash_value( const void *key, const void *data )
|
||||
void complete_destroy()
|
||||
{
|
||||
complete_entry *i=first_entry, *prev;
|
||||
|
||||
while( i )
|
||||
{
|
||||
prev = i;
|
||||
i=i->next;
|
||||
complete_free_entry( prev );
|
||||
}
|
||||
|
||||
first_entry = 0;
|
||||
|
||||
if( suffix_hash )
|
||||
{
|
||||
hash_foreach( suffix_hash, &clear_hash_entry );
|
||||
hash_destroy( suffix_hash );
|
||||
free( suffix_hash );
|
||||
suffix_hash=0;
|
||||
}
|
||||
|
||||
if( loaded_completions )
|
||||
@@ -341,8 +355,16 @@ void complete_destroy()
|
||||
&clear_hash_value );
|
||||
hash_destroy( loaded_completions );
|
||||
free( loaded_completions );
|
||||
loaded_completions = 0;
|
||||
}
|
||||
|
||||
|
||||
if( get_desc_buff )
|
||||
{
|
||||
sb_destroy( get_desc_buff );
|
||||
free( get_desc_buff );
|
||||
get_desc_buff = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -376,8 +398,6 @@ void complete_add( const wchar_t *cmd,
|
||||
complete_entry *c =
|
||||
complete_find_exact_entry( cmd, cmd_type );
|
||||
complete_entry_opt *opt;
|
||||
wchar_t *tmp;
|
||||
|
||||
|
||||
if( c == 0 )
|
||||
{
|
||||
@@ -418,15 +438,13 @@ void complete_add( const wchar_t *cmd,
|
||||
opt->result_mode = result_mode;
|
||||
opt->old_mode=old_mode;
|
||||
|
||||
opt->comp = intern(comp);
|
||||
opt->condition = intern(condition);
|
||||
opt->long_opt = intern( long_opt );
|
||||
opt->comp = intern(comp?comp:L"");
|
||||
opt->condition = intern(condition?condition:L"");
|
||||
opt->long_opt = intern( long_opt?long_opt:L"" );
|
||||
|
||||
if( desc && wcslen( desc ) )
|
||||
{
|
||||
tmp = wcsdupcat( COMPLETE_SEP_STR, desc );
|
||||
opt->desc = intern( tmp );
|
||||
free( tmp );
|
||||
opt->desc = intern( desc );
|
||||
}
|
||||
else
|
||||
opt->desc = L"";
|
||||
@@ -746,7 +764,7 @@ int complete_is_valid_option( const wchar_t *str,
|
||||
str[0] = opt[j];
|
||||
str[1]=0;
|
||||
al_push( errors,
|
||||
wcsdupcat2(L"Unknown option \'", str, L"\'", 0) );
|
||||
wcsdupcat2(_( L"Unknown option: " ), L"'", str, L"'", 0) );
|
||||
}
|
||||
|
||||
opt_found = 0;
|
||||
@@ -765,12 +783,12 @@ int complete_is_valid_option( const wchar_t *str,
|
||||
if( hash_get_count( &gnu_match_hash )==0)
|
||||
{
|
||||
al_push( errors,
|
||||
wcsdupcat2(L"Unknown option \'", opt, L"\'", 0) );
|
||||
wcsdupcat2( _(L"Unknown option: "), L"'", opt, L"\'", 0) );
|
||||
}
|
||||
else
|
||||
{
|
||||
al_push( errors,
|
||||
wcsdupcat2(L"Multiple matches for option \'", opt, L"\'", 0) );
|
||||
wcsdupcat2( _(L"Multiple matches for option: "), L"'", opt, L"\'", 0) );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -847,13 +865,13 @@ static const wchar_t *complete_get_desc_suffix( const wchar_t *suff_orig )
|
||||
wchar_t *ln = (wchar_t *)al_get(&l, 0 );
|
||||
if( wcscmp( ln, L"unknown" ) != 0 )
|
||||
{
|
||||
desc = wcsdupcat( COMPLETE_SEP_STR, ln);
|
||||
desc = wcsdup( ln);
|
||||
/*
|
||||
I have decided I prefer to have the description
|
||||
begin in uppercase and the whole universe will just
|
||||
have to accept it. Hah!
|
||||
*/
|
||||
desc[1]=towupper(desc[1]);
|
||||
desc[0]=towupper(desc[0]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -880,87 +898,101 @@ static const wchar_t *complete_get_desc_suffix( const wchar_t *suff_orig )
|
||||
const wchar_t *complete_get_desc( const wchar_t *filename )
|
||||
{
|
||||
struct stat buf;
|
||||
const wchar_t *desc = COMPLETE_FILE_DESC;
|
||||
|
||||
|
||||
if( !get_desc_buff )
|
||||
{
|
||||
get_desc_buff = malloc(sizeof(string_buffer_t) );
|
||||
sb_init( get_desc_buff );
|
||||
}
|
||||
else
|
||||
{
|
||||
sb_clear( get_desc_buff );
|
||||
}
|
||||
|
||||
if( lwstat( filename, &buf )==0)
|
||||
{
|
||||
if( waccess( filename, X_OK ) == 0 )
|
||||
{
|
||||
desc = COMPLETE_EXEC_DESC;
|
||||
}
|
||||
|
||||
{
|
||||
if( S_ISCHR(buf.st_mode) )
|
||||
desc= COMPLETE_CHAR_DESC;
|
||||
{
|
||||
sb_printf( get_desc_buff, L"%lc%ls", COMPLETE_SEP, COMPLETE_CHAR_DESC );
|
||||
}
|
||||
else if( S_ISBLK(buf.st_mode) )
|
||||
desc = COMPLETE_BLOCK_DESC;
|
||||
sb_printf( get_desc_buff, L"%lc%ls", COMPLETE_SEP, COMPLETE_BLOCK_DESC );
|
||||
else if( S_ISFIFO(buf.st_mode) )
|
||||
desc = COMPLETE_FIFO_DESC;
|
||||
sb_printf( get_desc_buff, L"%lc%ls", COMPLETE_SEP, COMPLETE_FIFO_DESC );
|
||||
else if( S_ISLNK(buf.st_mode))
|
||||
{
|
||||
struct stat buf2;
|
||||
desc = COMPLETE_SYMLINK_DESC;
|
||||
|
||||
if( waccess( filename, X_OK ) == 0 )
|
||||
desc = COMPLETE_EXEC_LINK_DESC;
|
||||
|
||||
if( wstat( filename, &buf2 ) == 0 )
|
||||
{
|
||||
if( S_ISDIR(buf2.st_mode) )
|
||||
{
|
||||
desc = L"/" COMPLETE_SYMLINK_DESC;
|
||||
sb_printf( get_desc_buff, L"/%lc%ls", COMPLETE_SEP, COMPLETE_SYMLINK_DESC );
|
||||
}
|
||||
else if( waccess( filename, X_OK ) == 0 )
|
||||
sb_printf( get_desc_buff, L"%lc%ls", COMPLETE_SEP, COMPLETE_EXEC_LINK_DESC );
|
||||
else
|
||||
sb_printf( get_desc_buff, L"%lc%ls", COMPLETE_SEP, COMPLETE_SYMLINK_DESC );
|
||||
}
|
||||
else
|
||||
{
|
||||
switch( errno )
|
||||
{
|
||||
case ENOENT:
|
||||
desc = COMPLETE_ROTTEN_SYMLINK_DESC;
|
||||
sb_printf( get_desc_buff, L"%lc%ls", COMPLETE_SEP, COMPLETE_ROTTEN_SYMLINK_DESC );
|
||||
break;
|
||||
|
||||
case EACCES:
|
||||
break;
|
||||
|
||||
default:
|
||||
wperror( L"stat" );
|
||||
if( errno == ELOOP )
|
||||
{
|
||||
sb_printf( get_desc_buff, L"%lc%ls", COMPLETE_SEP, COMPLETE_LOOP_SYMLINK_DESC );
|
||||
}
|
||||
|
||||
/*
|
||||
Some kind of broken symlink. We ignore it
|
||||
here, and it will get a 'file' description,
|
||||
or one based on suffix.
|
||||
*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if( S_ISSOCK(buf.st_mode))
|
||||
desc= COMPLETE_SOCKET_DESC;
|
||||
sb_printf( get_desc_buff, L"%lc%ls", COMPLETE_SEP, COMPLETE_SOCKET_DESC );
|
||||
else if( S_ISDIR(buf.st_mode) )
|
||||
desc= L"/" COMPLETE_DIRECTORY_DESC;
|
||||
sb_printf( get_desc_buff, L"/%lc%ls", COMPLETE_SEP, COMPLETE_DIRECTORY_DESC );
|
||||
else if( waccess( filename, X_OK ) == 0 )
|
||||
{
|
||||
sb_printf( get_desc_buff, L"%lc%ls", COMPLETE_SEP, COMPLETE_EXEC_DESC );
|
||||
}
|
||||
|
||||
}
|
||||
/* else
|
||||
{
|
||||
|
||||
switch( errno )
|
||||
{
|
||||
case EACCES:
|
||||
break;
|
||||
|
||||
default:
|
||||
fprintf( stderr, L"The following error happened on file %ls\n", filename );
|
||||
wperror( L"lstat" );
|
||||
break;
|
||||
}
|
||||
}
|
||||
*/
|
||||
if( desc == COMPLETE_FILE_DESC )
|
||||
if( wcslen((wchar_t *)get_desc_buff->buff) == 0 )
|
||||
{
|
||||
wchar_t *suffix = wcsrchr( filename, L'.' );
|
||||
if( suffix != 0 )
|
||||
if( suffix != 0 && !wcsrchr( suffix, L'/' ) )
|
||||
{
|
||||
if( !wcsrchr( suffix, L'/' ) )
|
||||
{
|
||||
desc = complete_get_desc_suffix( suffix );
|
||||
}
|
||||
sb_printf( get_desc_buff,
|
||||
L"%lc%ls",
|
||||
COMPLETE_SEP,
|
||||
complete_get_desc_suffix( suffix ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
sb_printf( get_desc_buff,
|
||||
L"%lc%ls",
|
||||
COMPLETE_SEP,
|
||||
COMPLETE_FILE_DESC );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return desc;
|
||||
return (wchar_t *)get_desc_buff->buff;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -976,7 +1008,7 @@ const wchar_t *complete_get_desc( const wchar_t *filename )
|
||||
|
||||
\param comp_out the destination list
|
||||
\param wc_escaped the prefix, possibly containing wildcards. The wildcard should not have been unescaped, i.e. '*' should be used for any string, not the ANY_STRING character.
|
||||
\param desc the default description, used for completions with no embedded description
|
||||
\param desc the default description, used for completions with no embedded description. The description _may_ contain a COMPLETE_SEP character, if not, one will be prefixed to it
|
||||
\param desc_func the function that generates a description for those completions witout an embedded description
|
||||
\param possible_comp the list of possible completions to iterate over
|
||||
*/
|
||||
@@ -1006,6 +1038,7 @@ static void copy_strings_with_prefix( array_list_t *comp_out,
|
||||
|
||||
wildcard_complete( next_str, wc, desc, desc_func, comp_out );
|
||||
}
|
||||
|
||||
free( wc );
|
||||
|
||||
}
|
||||
@@ -1028,8 +1061,11 @@ static void complete_cmd_desc( const wchar_t *cmd, array_list_t *comp )
|
||||
if( !cmd )
|
||||
return;
|
||||
|
||||
cmd_start=wcschr(cmd, L'/');
|
||||
if( !cmd_start )
|
||||
cmd_start=wcsrchr(cmd, L'/');
|
||||
|
||||
if( cmd_start )
|
||||
cmd_start++;
|
||||
else
|
||||
cmd_start = cmd;
|
||||
|
||||
cmd_len = wcslen(cmd_start);
|
||||
@@ -1049,131 +1085,127 @@ static void complete_cmd_desc( const wchar_t *cmd, array_list_t *comp )
|
||||
|
||||
esc = expand_escape( cmd_start, 1 );
|
||||
|
||||
if( esc )
|
||||
if( whatis_path )
|
||||
{
|
||||
apropos_cmd =wcsdupcat2( L"grep ^/dev/null -F <", whatis_path, L" ", esc, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
apropos_cmd = wcsdupcat( L"apropos ^/dev/null ", esc );
|
||||
}
|
||||
free(esc);
|
||||
|
||||
if( whatis_path )
|
||||
al_init( &list );
|
||||
hash_init( &lookup, &hash_wcs_func, &hash_wcs_cmp );
|
||||
|
||||
/*
|
||||
First locate a list of possible descriptions using a single
|
||||
call to apropos or a direct search if we know the location
|
||||
of the whatis database. This can take some time on slower
|
||||
systems with a large set of manuals, but it should be ok
|
||||
since apropos is only called once.
|
||||
*/
|
||||
exec_subshell( apropos_cmd, &list );
|
||||
/*
|
||||
Then discard anything that is not a possible completion and put
|
||||
the result into a hashtable with the completion as key and the
|
||||
description as value.
|
||||
|
||||
Should be reasonably fast, since no memory allocations are needed.
|
||||
*/
|
||||
for( i=0; i<al_get_count( &list); i++ )
|
||||
{
|
||||
wchar_t *el = (wchar_t *)al_get( &list, i );
|
||||
wchar_t *key, *key_end, *val_begin;
|
||||
|
||||
if( !el )
|
||||
continue;
|
||||
|
||||
//fwprintf( stderr, L"%ls\n", el );
|
||||
if( wcsncmp( el, cmd_start, cmd_len ) != 0 )
|
||||
continue;
|
||||
//fwprintf( stderr, L"%ls\n", el );
|
||||
key = el + cmd_len;
|
||||
|
||||
key_end = wcschr( el, L' ' );
|
||||
if( !key_end )
|
||||
{
|
||||
apropos_cmd =wcsdupcat2( L"grep ^/dev/null -F <", whatis_path, L" ", esc, 0 );
|
||||
key_end = wcschr( el, L'\t' );
|
||||
if( !key_end )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
*key_end = 0;
|
||||
val_begin=key_end+1;
|
||||
|
||||
//fwprintf( stderr, L"Key %ls\n", el );
|
||||
|
||||
while( *val_begin != L'-' && *val_begin)
|
||||
{
|
||||
val_begin++;
|
||||
}
|
||||
|
||||
if( !*val_begin )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
val_begin++;
|
||||
|
||||
while( *val_begin == L' ' || *val_begin == L'\t' )
|
||||
{
|
||||
val_begin++;
|
||||
}
|
||||
|
||||
if( !*val_begin )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
And once again I make sure the first character is uppercased
|
||||
because I like it that way, and I get to decide these
|
||||
things.
|
||||
*/
|
||||
val_begin[0]=towupper(val_begin[0]);
|
||||
hash_put( &lookup, key, val_begin );
|
||||
}
|
||||
|
||||
/*
|
||||
Then do a lookup on every completion and if a match is found,
|
||||
change to the new description.
|
||||
|
||||
This needs to do a reallocation for every description added, but
|
||||
there shouldn't be that many completions, so it should be ok.
|
||||
*/
|
||||
for( i=0; i<al_get_count(comp); i++ )
|
||||
{
|
||||
wchar_t *el = (wchar_t *)al_get( comp, i );
|
||||
wchar_t *cmd_end = wcschr( el,
|
||||
COMPLETE_SEP );
|
||||
wchar_t *new_desc;
|
||||
|
||||
if( cmd_end )
|
||||
*cmd_end = 0;
|
||||
|
||||
new_desc = (wchar_t *)hash_get( &lookup,
|
||||
el );
|
||||
|
||||
if( new_desc )
|
||||
{
|
||||
wchar_t *new_el = wcsdupcat2( el,
|
||||
COMPLETE_SEP_STR,
|
||||
new_desc,
|
||||
0 );
|
||||
al_set( comp, i, new_el );
|
||||
free( el );
|
||||
}
|
||||
else
|
||||
{
|
||||
apropos_cmd = wcsdupcat( L"apropos ^/dev/null ", esc );
|
||||
}
|
||||
free(esc);
|
||||
|
||||
al_init( &list );
|
||||
hash_init( &lookup, &hash_wcs_func, &hash_wcs_cmp );
|
||||
|
||||
/*
|
||||
First locate a list of possible descriptions using a single
|
||||
call to apropos or a direct search if we know the location
|
||||
of the whatis database. This can take some time on slower
|
||||
systems with a large set of manuals, but it should be ok
|
||||
since apropos is only called once.
|
||||
*/
|
||||
exec_subshell( apropos_cmd, &list );
|
||||
/*
|
||||
Then discard anything that is not a possible completion and put
|
||||
the result into a hashtable with the completion as key and the
|
||||
description as value.
|
||||
|
||||
Should be reasonably fast, since no memory allocations are needed.
|
||||
*/
|
||||
for( i=0; i<al_get_count( &list); i++ )
|
||||
{
|
||||
wchar_t *el = (wchar_t *)al_get( &list, i );
|
||||
wchar_t *key, *key_end, *val_begin;
|
||||
|
||||
if( !el )
|
||||
continue;
|
||||
|
||||
//fwprintf( stderr, L"%ls\n", el );
|
||||
if( wcsncmp( el, cmd_start, cmd_len ) != 0 )
|
||||
continue;
|
||||
//fwprintf( stderr, L"%ls\n", el );
|
||||
key = el + cmd_len;
|
||||
|
||||
key_end = wcschr( el, L' ' );
|
||||
if( !key_end )
|
||||
{
|
||||
key_end = wcschr( el, L'\t' );
|
||||
if( !key_end )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
*key_end = 0;
|
||||
val_begin=key_end+1;
|
||||
|
||||
//fwprintf( stderr, L"Key %ls\n", el );
|
||||
|
||||
while( *val_begin != L'-' && *val_begin)
|
||||
{
|
||||
val_begin++;
|
||||
}
|
||||
|
||||
if( !val_begin )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
val_begin++;
|
||||
|
||||
while( *val_begin == L' ' || *val_begin == L'\t' )
|
||||
{
|
||||
val_begin++;
|
||||
}
|
||||
|
||||
if( !*val_begin )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
And once again I make sure the first character is uppercased
|
||||
because I like it that way, and I get to decide these
|
||||
things.
|
||||
*/
|
||||
val_begin[0]=towupper(val_begin[0]);
|
||||
hash_put( &lookup, key, val_begin );
|
||||
}
|
||||
|
||||
/*
|
||||
Then do a lookup on every completion and if a match is found,
|
||||
change to the new description.
|
||||
|
||||
This needs to do a reallocation for every description added, but
|
||||
there shouldn't be that many completions, so it should be ok.
|
||||
*/
|
||||
for( i=0; i<al_get_count(comp); i++ )
|
||||
{
|
||||
wchar_t *el = (wchar_t *)al_get( comp, i );
|
||||
wchar_t *cmd_end = wcschr( el,
|
||||
COMPLETE_SEP );
|
||||
wchar_t *new_desc;
|
||||
|
||||
if( cmd_end )
|
||||
*cmd_end = 0;
|
||||
|
||||
new_desc = (wchar_t *)hash_get( &lookup,
|
||||
el );
|
||||
|
||||
if( new_desc )
|
||||
{
|
||||
wchar_t *new_el = wcsdupcat2( el,
|
||||
COMPLETE_SEP_STR,
|
||||
new_desc,
|
||||
0 );
|
||||
al_set( comp, i, new_el );
|
||||
free( el );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( cmd_end )
|
||||
*cmd_end = COMPLETE_SEP;
|
||||
}
|
||||
*cmd_end = COMPLETE_SEP;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1184,6 +1216,17 @@ static void complete_cmd_desc( const wchar_t *cmd, array_list_t *comp )
|
||||
free( apropos_cmd );
|
||||
}
|
||||
|
||||
static const wchar_t *complete_function_desc( const wchar_t *fn )
|
||||
{
|
||||
const wchar_t *res = function_get_desc( fn );
|
||||
|
||||
if( !res )
|
||||
res = function_get_definition( fn );
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Complete the specified command name. Search for executables in the
|
||||
path, executables defined using an absolute path, functions,
|
||||
@@ -1191,7 +1234,7 @@ static void complete_cmd_desc( const wchar_t *cmd, array_list_t *comp )
|
||||
|
||||
\param cmd the command string to find completions for
|
||||
|
||||
B\param comp the list to add all completions to
|
||||
\param comp the list to add all completions to
|
||||
*/
|
||||
static void complete_cmd( const wchar_t *cmd,
|
||||
array_list_t *comp )
|
||||
@@ -1263,7 +1306,7 @@ static void complete_cmd( const wchar_t *cmd,
|
||||
|
||||
al_init( &possible_comp );
|
||||
function_get_names( &possible_comp, cmd[0] == L'_' );
|
||||
copy_strings_with_prefix( comp, cmd, COMPLETE_FUNCTION_DESC, &function_get_desc, &possible_comp );
|
||||
copy_strings_with_prefix( comp, cmd, COMPLETE_FUNCTION_DESC, &complete_function_desc, &possible_comp );
|
||||
al_truncate( &possible_comp, 0 );
|
||||
|
||||
builtin_get_names( &possible_comp );
|
||||
@@ -1303,15 +1346,18 @@ static void complete_cmd( const wchar_t *cmd,
|
||||
wchar_t *nxt = (wchar_t *)al_get( &tmp, i );
|
||||
|
||||
wchar_t *desc = wcsrchr( nxt, COMPLETE_SEP );
|
||||
int is_valid = (desc && (wcscmp(desc,
|
||||
COMPLETE_DIRECTORY_DESC)==0));
|
||||
if( is_valid )
|
||||
if( desc )
|
||||
{
|
||||
al_push( comp, nxt );
|
||||
}
|
||||
else
|
||||
{
|
||||
free(nxt);
|
||||
int is_valid = desc && (wcscmp(desc+1,
|
||||
COMPLETE_DIRECTORY_DESC)==0);
|
||||
if( is_valid )
|
||||
{
|
||||
al_push( comp, nxt );
|
||||
}
|
||||
else
|
||||
{
|
||||
free(nxt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1325,10 +1371,10 @@ static void complete_cmd( const wchar_t *cmd,
|
||||
|
||||
/**
|
||||
Evaluate the argument list (as supplied by complete -a) and insert
|
||||
any return matching completions. Matching is done using\c
|
||||
any return matching completions. Matching is done using \c
|
||||
copy_strings_with_prefix, meaning the completion may contain
|
||||
wildcards. Logically, this is not always the right thing to do, but
|
||||
I have yet to come up with a case where one would not want this.
|
||||
I have yet to come up with a case where this matters.
|
||||
|
||||
\param str The string to complete.
|
||||
\param args The list of option arguments to be evaluated.
|
||||
@@ -1340,12 +1386,24 @@ static void complete_from_args( const wchar_t *str,
|
||||
const wchar_t *desc,
|
||||
array_list_t *comp_out )
|
||||
{
|
||||
int was_interactive = is_interactive;
|
||||
|
||||
array_list_t possible_comp;
|
||||
int i;
|
||||
|
||||
al_init( &possible_comp );
|
||||
|
||||
is_interactive=0;
|
||||
eval_args( args, &possible_comp );
|
||||
|
||||
debug( 3, L"desc is '%ls', %d long\n", desc, wcslen(desc) );
|
||||
is_interactive=was_interactive;
|
||||
|
||||
/* We need to unescape these strings before matching them */
|
||||
for( i=0; i< al_get_count( &possible_comp ); i++ )
|
||||
{
|
||||
wchar_t *next = (wchar_t *)al_get( &possible_comp, i );
|
||||
al_set( &possible_comp , i, unescape( next, 0 ) );
|
||||
free( next );
|
||||
}
|
||||
|
||||
copy_strings_with_prefix( comp_out, str, desc, 0, &possible_comp );
|
||||
|
||||
@@ -1489,7 +1547,6 @@ void complete_load( wchar_t *cmd,
|
||||
|
||||
expand_variable_array( path_var, &path_list );
|
||||
|
||||
|
||||
/*
|
||||
Iterate over path searching for suitable completion files
|
||||
*/
|
||||
@@ -1507,13 +1564,6 @@ void complete_load( wchar_t *cmd,
|
||||
wchar_t *esc = expand_escape( (wchar_t *)path.buff, 1 );
|
||||
wchar_t *src_cmd = wcsdupcat( L". ", esc );
|
||||
|
||||
/* if( tm )
|
||||
debug( 0, L"Reload %ls completions, old time was %d, new time is %d",
|
||||
cmd,
|
||||
tm?*tm:-1,
|
||||
buf.st_mtime);
|
||||
*/
|
||||
|
||||
if( !tm )
|
||||
{
|
||||
tm = malloc(sizeof(time_t));
|
||||
@@ -1526,7 +1576,6 @@ void complete_load( wchar_t *cmd,
|
||||
intern( cmd ),
|
||||
tm );
|
||||
|
||||
|
||||
free( esc );
|
||||
|
||||
complete_remove( cmd, COMMAND, 0, 0 );
|
||||
@@ -1549,8 +1598,6 @@ void complete_load( wchar_t *cmd,
|
||||
*/
|
||||
if( !tm )
|
||||
{
|
||||
// debug( 0, L"Insert null timestamp for command %ls", cmd );
|
||||
|
||||
tm = malloc(sizeof(time_t));
|
||||
if( !tm )
|
||||
die_mem();
|
||||
@@ -1603,7 +1650,7 @@ static int complete_param( wchar_t *cmd_orig,
|
||||
if( str[0] == L'-' )
|
||||
{
|
||||
/* Check if we are entering a combined option and argument
|
||||
* (like --color=auto or -I/usr/include) */
|
||||
(like --color=auto or -I/usr/include) */
|
||||
for( o = i->first_option; o; o=o->next )
|
||||
{
|
||||
wchar_t *arg;
|
||||
@@ -1621,7 +1668,7 @@ static int complete_param( wchar_t *cmd_orig,
|
||||
else if( popt[0] == L'-' )
|
||||
{
|
||||
/* Check if the previous option has any specified
|
||||
* arguments to match against */
|
||||
arguments to match against */
|
||||
int found_old = 0;
|
||||
|
||||
/*
|
||||
@@ -1700,12 +1747,13 @@ static int complete_param( wchar_t *cmd_orig,
|
||||
short_ok( str, o->short_opt, i->short_opt_str ) )
|
||||
{
|
||||
wchar_t *next_opt =
|
||||
malloc( sizeof(wchar_t)*(2 + wcslen(o->desc)));
|
||||
malloc( sizeof(wchar_t)*(3 + wcslen(o->desc)));
|
||||
if( !next_opt )
|
||||
die_mem();
|
||||
|
||||
next_opt[0]=o->short_opt;
|
||||
next_opt[1]=L'\0';
|
||||
next_opt[1]=COMPLETE_SEP;
|
||||
next_opt[2]=L'\0';
|
||||
wcscat( next_opt, o->desc );
|
||||
al_push( comp_out, next_opt );
|
||||
}
|
||||
@@ -1732,14 +1780,14 @@ static int complete_param( wchar_t *cmd_orig,
|
||||
if( o->old_mode || !(o->result_mode & NO_COMMON ) )
|
||||
{
|
||||
al_push( comp_out,
|
||||
wcsdupcat(&((wchar_t *)whole_opt.buff)[wcslen(str)], o->desc) );
|
||||
wcsdupcat2(&((wchar_t *)whole_opt.buff)[wcslen(str)], COMPLETE_SEP_STR, o->desc, (void *)0) );
|
||||
// fwprintf( stderr, L"Add without param %ls\n", o->long_opt );
|
||||
}
|
||||
|
||||
if( !o->old_mode && ( wcslen(o->comp) || (o->result_mode & NO_COMMON ) ) )
|
||||
{
|
||||
al_push( comp_out,
|
||||
wcsdupcat2(&((wchar_t *)whole_opt.buff)[wcslen(str)], L"=", o->desc, 0) );
|
||||
wcsdupcat2(&((wchar_t *)whole_opt.buff)[wcslen(str)], L"=", COMPLETE_SEP_STR, o->desc, (void *)0) );
|
||||
// fwprintf( stderr, L"Add with param %ls\n", o->long_opt );
|
||||
}
|
||||
|
||||
@@ -1809,7 +1857,7 @@ static int complete_variable( const wchar_t *var,
|
||||
/*
|
||||
Variable description is 'Variable: VALUE
|
||||
*/
|
||||
blarg = wcsdupcat2( &name[varlen], COMPLETE_VAR_DESC_VAL, value, 0 );
|
||||
blarg = wcsdupcat2( &name[varlen], COMPLETE_SEP_STR, COMPLETE_VAR_DESC_VAL, value, 0 );
|
||||
|
||||
if( blarg )
|
||||
{
|
||||
@@ -1936,6 +1984,7 @@ static int try_complete_user( const wchar_t *cmd,
|
||||
{
|
||||
wchar_t *blarg = wcsdupcat2( &pw_name[name_len],
|
||||
L"/",
|
||||
COMPLETE_SEP_STR,
|
||||
COMPLETE_USER_DESC,
|
||||
0 );
|
||||
if( blarg != 0 )
|
||||
|
||||
91
configure.ac
91
configure.ac
@@ -1,23 +1,28 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(fish,1.19.0,fish-users@lists.sf.net)
|
||||
AC_INIT(fish,1.20.0,fish-users@lists.sf.net)
|
||||
|
||||
AC_CANONICAL_TARGET
|
||||
|
||||
if test $target_cpu = powerpc; then
|
||||
AC_DEFINE([TPUTS_KLUDGE],[1],[Evil kludge to get Power based machines to work])
|
||||
# If needed, run autoheader automatically
|
||||
if test ! -f ./config.h.in -o config.h.in -ot configure.ac; then
|
||||
if which autoheader >/dev/null; then
|
||||
echo running autoheader...
|
||||
autoheader
|
||||
else
|
||||
echo Could not find the autoheader program in your path.
|
||||
echo This program is needed because the configure.ac file has been modified.
|
||||
echo Please install it and try again.
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED([CPU],[L"$target_cpu"],[CPU type])
|
||||
|
||||
# Tell autoconf to create config.h header
|
||||
AC_CONFIG_HEADERS(config.h)
|
||||
|
||||
# Checks for programs.
|
||||
# Set up various programs needed for install
|
||||
AC_PROG_CC
|
||||
AC_PROG_CPP
|
||||
AC_PROG_INSTALL
|
||||
#AC_ISC_POSIX
|
||||
#AC_PROG_MAKE_SET
|
||||
|
||||
# Check for doxygen, which is needed to build
|
||||
AC_CHECK_PROG( has_doxygen, [doxygen], "true")
|
||||
|
||||
if ! test $has_doxygen = "true"; then
|
||||
@@ -27,6 +32,9 @@ if ! test $has_doxygen = "true"; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for seq program. If missing, install fallback shellscript implementation
|
||||
AC_CHECK_PROG( SEQ_FALLBACK, seq, [ ], [seq])
|
||||
|
||||
# Optionally drop xsel
|
||||
AC_ARG_WITH( xsel,
|
||||
AC_HELP_STRING([--without-xsel],
|
||||
@@ -44,6 +52,17 @@ else
|
||||
AC_SUBST( XSEL_MAN_PATH,[ ])
|
||||
fi
|
||||
|
||||
# Test cpu for special handling of ppc
|
||||
AC_CANONICAL_TARGET
|
||||
|
||||
if test $target_cpu = powerpc; then
|
||||
AC_DEFINE([TPUTS_KLUDGE],[1],[Evil kludge to get Power based machines to work])
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED([CPU],[L"$target_cpu"],[CPU type])
|
||||
|
||||
|
||||
# Set up installation directories
|
||||
if [[ "$prefix" = NONE ]]; then
|
||||
AC_DEFINE_UNQUOTED( [PREFIX], L"/usr/local", [Installation directory])
|
||||
AC_SUBST( PREFIX, /usr/local)
|
||||
@@ -67,6 +86,10 @@ AC_DEFINE_UNQUOTED( DOCDIR, [L"$(eval echo $docdir)"], [Documentation directory]
|
||||
AC_DEFINE_UNQUOTED( SYSCONFDIR, [L"$(eval echo $sysconfdir)"], [System configuration directory] )
|
||||
AC_SUBST( SYSCONFDIR, ["$(eval echo $sysconfdir)"] )
|
||||
|
||||
# Set up locale directory
|
||||
AC_DEFINE_UNQUOTED( [LOCALEDIR], "$(eval echo $datadir)/locale", [Locale directory])
|
||||
AC_SUBST( [LOCALEDIR], [$datadir/locale])
|
||||
|
||||
# See if Linux procfs is present
|
||||
AC_CHECK_FILES([/proc/self/stat])
|
||||
|
||||
@@ -74,9 +97,6 @@ AC_CHECK_FILES([/proc/self/stat])
|
||||
AC_CHECK_FILE([/usr/pkg/lib],[AC_SUBST(LIBDIR,[-L/usr/pkg/lib\ -R/usr/pkg/lib])])
|
||||
AC_CHECK_FILE([/usr/pkg/include],[AC_SUBST(INCLUDEDIR,[-I/usr/pkg/include])])
|
||||
|
||||
AC_CHECK_FUNCS( [wprintf futimes wcwidth wcswidth getopt_long] )
|
||||
AC_CHECK_HEADERS([getopt.h termio.h sys/resource.h])
|
||||
|
||||
# Check for RLIMIT_AS in sys/resource.h.
|
||||
AC_MSG_CHECKING([for RLIMIT_AS in sys/resource.h])
|
||||
AC_TRY_COMPILE([#include <sys/resource.h>],
|
||||
@@ -113,6 +133,7 @@ else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
|
||||
# Check for RLIMIT_NPROC in sys/resource.h.
|
||||
AC_MSG_CHECKING([for RLIMIT_NPROC in sys/resource.h])
|
||||
AC_TRY_COMPILE([#include <sys/resource.h>],
|
||||
@@ -126,18 +147,52 @@ else
|
||||
fi
|
||||
|
||||
|
||||
# Check for libraries
|
||||
AC_CHECK_LIB(socket, connect)
|
||||
AC_CHECK_LIB(rt, nanosleep)
|
||||
AC_CHECK_LIB(intl, gettext)
|
||||
|
||||
AC_CHECK_FUNCS(wcsdup wcsndup wcslen wcscasecmp wcsncasecmp)
|
||||
# Check for various header files
|
||||
AC_CHECK_HEADERS([getopt.h termio.h sys/resource.h term.h ncurses/term.h libintl.h])
|
||||
|
||||
AC_CHECK_HEADER([regex.h],
|
||||
[AC_DEFINE([HAVE_REGEX_H], [1], [Define to 1 if you have the <regex.h> header file.])],
|
||||
[AC_MSG_ERROR([Could not find the header regex.h, needed to build fish])])
|
||||
|
||||
|
||||
# Check for various functions, and insert results into config.h
|
||||
AC_CHECK_FUNCS( wcsdup wcsndup wcslen wcscasecmp wcsncasecmp gettext fwprintf )
|
||||
AC_CHECK_FUNCS( futimes wcwidth wcswidth getopt_long wcstok fputwc fgetwc )
|
||||
AC_CHECK_FUNCS( wcstol dcgettext )
|
||||
|
||||
# Check again for gettext library, and insert results into the Makefile
|
||||
AC_CHECK_FUNC(gettext, AC_SUBST(HAVE_GETTEXT,1), AC_SUBST(HAVE_GETTEXT,0) )
|
||||
|
||||
# Check for _nl_msg_cat_cntr symbol
|
||||
AC_MSG_CHECKING([for _nl_msg_cat_cntr symbol])
|
||||
AC_TRY_LINK([#if HAVE_LIBINTL_H]
|
||||
[#include <libintl.h>]
|
||||
[#endif],
|
||||
[extern int _nl_msg_cat_cntr;]
|
||||
[int tmp = _nl_msg_cat_cntr;], have__nl_msg_cat_cntr=yes, have__nl_msg_cat_cntr=no)
|
||||
if test "$have__nl_msg_cat_cntr" = yes; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE([HAVE__NL_MSG_CAT_CNTR], [1],
|
||||
[Define to 1 if the _nl_msg_cat_cntr symbol is exported.])
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
# Check if we have ncurses, and use it rather than curses if possible.
|
||||
AC_CHECK_HEADERS([ncurses.h],[AC_SUBST(CURSESLIB,[ncurses]) AC_DEFINE(HAVE_NCURSES_H)],[AC_SUBST(CURSESLIB,[curses])])
|
||||
|
||||
#Force use of ncurses if it is avialable via NetBSD pkgsrc. This is an
|
||||
#ugly kludge to force NetBSD to use ncurses, since NetBSDs own version
|
||||
#does not properly support terminfo.
|
||||
# Force use of ncurses if it is avialable via NetBSD pkgsrc. This is an
|
||||
# ugly kludge to force NetBSD to use ncurses, since NetBSDs own version
|
||||
# does not properly support terminfo.
|
||||
AC_CHECK_FILE([/usr/pkg/include/ncurses.h],[AC_SUBST(CURSESLIB,[ncurses]) AC_DEFINE(HAVE_NCURSES_H)])
|
||||
|
||||
AC_CONFIG_FILES([Makefile fish.spec doc_src/fish.1 doc_src/Doxyfile init/fish init/fish_interactive.fish init/fish_complete.fish])
|
||||
AC_CONFIG_FILES([Makefile fish.spec doc_src/fish.1 doc_src/Doxyfile init/fish init/fish_interactive.fish init/fish_complete.fish seq])
|
||||
AC_OUTPUT
|
||||
|
||||
echo "Now run 'make' and 'make install' to built and install fish."
|
||||
echo "Good luck!"
|
||||
|
||||
@@ -2,22 +2,16 @@
|
||||
\section and and - Conditionally execute a command
|
||||
|
||||
\subsection and-synopsis Synopsis
|
||||
<tt>and COMMAND1; COMMAND2</tt>
|
||||
<tt>COMMAND1; and COMMAND2</tt>
|
||||
|
||||
\subsection and-description Description
|
||||
|
||||
The \c and builtin is used to execute one command, and if it returns
|
||||
zero status, also execute a second command.
|
||||
The \c and builtin is used to execute a command if the current exit status (as set by the last previous command) is zero
|
||||
|
||||
\subsection and-example Example
|
||||
|
||||
The following code runs the \c make command to build a program, and if it suceeds, it runs <tt>make install</tt>, which installs the program.
|
||||
The following code runs the \c make command to build a program, and if it succeeds, it runs <tt>make install</tt>, which installs the program.
|
||||
<pre>
|
||||
and make; make install
|
||||
make; and make install
|
||||
</pre>
|
||||
|
||||
\c or and \c and can be nested, as in this example, that attempts to build and install a program, and removed the files created by the build process on failiure
|
||||
|
||||
<pre>
|
||||
or and make; make install; make clean
|
||||
</pre>
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
\subsection begin-description Description
|
||||
|
||||
The \c begin builtin is used to create a new block of code. The block
|
||||
is unconditionally erxecuted. Begin is equivalent to <tt>if
|
||||
is unconditionally executed. Begin is equivalent to <tt>if
|
||||
true</tt>. The begin command is used to group any number of commands
|
||||
into a block. The reason for this is usually either to introduce a new
|
||||
variable scope or to redirect the input ot output of this set of
|
||||
variable scope or to redirect the input to output of this set of
|
||||
commands as a group.
|
||||
|
||||
\subsection begin-example Example
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
The \c break builtin is used to halt a currently running loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
|
||||
|
||||
\subsection break-example Example
|
||||
The following code searches all .c files for smurfs, and halts at the first occurance.
|
||||
The following code searches all .c files for smurfs, and halts at the first occurrence.
|
||||
<p>
|
||||
<tt>for i in *.c;
|
||||
<br> if grep smurf $i;
|
||||
|
||||
@@ -23,7 +23,7 @@ switch $animal
|
||||
echo evil
|
||||
case wolf dog human moose dolphin whale
|
||||
echo mammal
|
||||
case duck goose albatros
|
||||
case duck goose albatross
|
||||
echo bird
|
||||
case shark trout stingray
|
||||
echo fish
|
||||
|
||||
@@ -25,14 +25,14 @@ or updated
|
||||
- \c -b or \c --current-buffer select the entire buffer (default)
|
||||
- \c -j or \c --current-job select the current job
|
||||
- \c -p or \c --current-process select the current process
|
||||
- \c -t or \c --current_token select the current token.
|
||||
- \c -t or \c --current_token select the current token.
|
||||
|
||||
The following switch changes the way \c commandline prints the current
|
||||
commandline
|
||||
|
||||
- \c -c or \c --cut-at-cursor only print selection up until the
|
||||
current cursor position
|
||||
- \c o or \c --tokenize tokenize the selection and print one string-type token per line
|
||||
- \c -o or \c --tokenize tokenize the selection and print one string-type token per line
|
||||
|
||||
Other switches
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
\section complete complete - edit command specific tab-completions.
|
||||
\section complete complete - edit command specific tab-completions.
|
||||
|
||||
\subsection complete-synopsis Synopsis
|
||||
<tt>complete (-c|--command|-p|--path) COMMAND [(-s|--short-option) SHORT_OPTION] [(-l|--long-option|-o|--old-option) LONG_OPTION [(-a||--arguments) OPTION_ARGUMENTS] [(-d|--description) DESCRIPTION] </tt>
|
||||
@@ -16,8 +16,8 @@ the fish manual.
|
||||
- <tt>DESCRIPTION</tt> is a description of what the option and/or option arguments do
|
||||
- <tt>-e</tt> or <tt>--erase</tt> implies that the specified completion should be deleted
|
||||
- <tt>-f</tt> or <tt>--no-files</tt> specifies that the option specified by this completion may not be followed by a filename
|
||||
- <tt>-n</tt> or <tt>--condition</tt> specides a shell command that must return 0 if the completion is to be used. This makes it possible to specify completions that should only be used in some cases.
|
||||
- <tt>-o</tt> or <tt>--old-option</tt> implies that the command uses old long style options with only one dash
|
||||
- <tt>-n</tt> or <tt>--condition</tt> specifies a shell command that must return 0 if the completion is to be used. This makes it possible to specify completions that should only be used in some cases.
|
||||
- <tt>-o</tt> or <tt>--old-option</tt> implies that the command uses old long style options with only one dash
|
||||
- <tt>-p</tt> or <tt>--path</tt> implies that the string COMMAND is the full path of the command
|
||||
- <tt>-r</tt> or <tt>--require-parameter</tt> specifies that the option specified by this completion always must have an option argument, i.e. may not be followed by another option
|
||||
- <tt>-u</tt> or <tt>--unauthorative</tt> implies that there may be more options than the ones specified, and that fish should not assume that options not listed are spelling errors
|
||||
@@ -30,13 +30,14 @@ that do not begin with a hyphen. Fish recognizes three styles of
|
||||
options, the same styles as the GNU version of the getopt
|
||||
library. These styles are:
|
||||
|
||||
- Short options, like '-a'. Short options are a single character long, are preceeded by a single hyphen and may ge grouped together (like '-la', which is equivalent to '-l -a'). Option arguments may be specified in the following parameter ('-w 32') or by appending the option with the value ('-w32').
|
||||
- Old style long options, like '-Wall'. Old style long options are more than one character long, are preceeded by a single hyphen and may not be grouped together. Option arguments are specified in the following parameter ('-ao null').
|
||||
- GNU style long options, like '--colors'. GNU style long options are more than one character long, are preceeded by two hyphens, and may not be grouped together. Option arguments may be specified in the following parameter ('--quoting-style shell') or by appending the option with a '=' and the value ('--quoting-style=shell'). GNU style long options may be abbrevated so long as the abbrevation is unique ('--h' is equivalent to '--help' if help is the only long option beginning with an 'h').
|
||||
- Short options, like '-a'. Short options are a single character long, are preceded by a single hyphen and may be grouped together (like '-la', which is equivalent to '-l -a'). Option arguments may be specified in the following parameter ('-w 32') or by appending the option with the value ('-w32').
|
||||
- Old style long options, like '-Wall'. Old style long options are more than one character long, are preceded by a single hyphen and may not be grouped together. Option arguments are specified in the following parameter ('-ao null').
|
||||
- GNU style long options, like '--colors'. GNU style long options are more than one character long, are preceded by two hyphens, and may not be grouped together. Option arguments may be specified in the following parameter ('--quoting-style shell') or by appending the option with a '=' and the value ('--quoting-style=shell'). GNU style long options may be abbreviated so long as the abbreviation is unique ('--h' is equivalent to '--help' if help is the only long option beginning with an 'h').
|
||||
|
||||
\c complete only allows one of old style long options and GNU style
|
||||
long options to be used on a specific command, but short options can
|
||||
always be specified.
|
||||
The options for specifying command name, command path, or command
|
||||
switches may all be used multiple times to specify multiple commands
|
||||
which have the same completion or multiple switches accepted by a
|
||||
command.
|
||||
|
||||
When erasing completions, it is possible to either erase all
|
||||
completions for a specific command by specifying <tt>complete -e -c
|
||||
@@ -70,5 +71,5 @@ This can be written as:
|
||||
"Don't check dependencies"</tt>
|
||||
|
||||
where \c __fish_contains_opt is a function that checks the commandline
|
||||
buffer for the presense of a specified set of options.
|
||||
buffer for the presence of a specified set of options.
|
||||
|
||||
|
||||
178
doc_src/doc.hdr
178
doc_src/doc.hdr
@@ -23,7 +23,7 @@ Example:
|
||||
calls the \c echo command. \c echo is a command which will write its
|
||||
arguments to the screen. In the example above, the output will be
|
||||
'hello world'. Everything in fish is done with commands. There are
|
||||
commands for performing a set of command multiple times, commands for
|
||||
commands for performing a set of commands multiple times, commands for
|
||||
assigning variables, commands for treating a group of commands as a
|
||||
single command, etc.. And every single command follows the same simple
|
||||
syntax.
|
||||
@@ -38,7 +38,7 @@ topic. There are manual pages for almost every command on most
|
||||
computers. There are also manual pages for many other things, such as
|
||||
system libraries and important files.
|
||||
|
||||
Every program on a computer can be used as a command in \c fish. If
|
||||
Every program on your computer can be used as a command in \c fish. If
|
||||
the program file is located in one of the directories in the <a
|
||||
href="#variables-special">PATH</a>, it is sufficient to type the name
|
||||
of the program to use it. Otherwise the whole filename, including the
|
||||
@@ -78,7 +78,11 @@ Example:
|
||||
|
||||
<tt>rm "cumbersome filename.txt"</tt>
|
||||
|
||||
Will remove the file 'cumbersome filename.txt'.
|
||||
Will remove the file 'cumbersome filename.txt', while
|
||||
|
||||
<tt>rm cumbersome filename.txt</tt>
|
||||
|
||||
would remove the two files 'cumbersome' and 'filenmae.txt'.
|
||||
|
||||
\subsection escapes Escaping characters
|
||||
|
||||
@@ -138,8 +142,8 @@ which directs the output of the echo command to the file error.txt.
|
||||
<tt>DESTINATION</tt> can be one of the following:
|
||||
|
||||
- A filename. The output will be written to the specified file.
|
||||
- An ampersand (\&) followed by the number of a file descriptor. The file descriptor will be a duplicate of the specified file descriptor.
|
||||
- A minus sign (-). The FD will be closed.
|
||||
- An ampersand (\&) followed by the number of another file descriptor. The file descriptor will be a duplicate of the specified file descriptor.
|
||||
- A minus sign (-). The file descriptor will be closed.
|
||||
|
||||
Example:
|
||||
|
||||
@@ -239,15 +243,16 @@ type <tt>fg -h</tt> or <tt>help fg</tt>.
|
||||
|
||||
Tab completion is one of the most time saving features of any modern
|
||||
shell. By tapping the tab key, the user asks \c fish to guess the rest
|
||||
of the command or parameter that the user is currently typing. If
|
||||
there is only one possible completion, \c fish will write it out. If
|
||||
there is more than one completion, \c fish will write out the longest
|
||||
common prefix that all completions have in common. If all completions
|
||||
differ on the first character, a list of all possible completions is
|
||||
printed. The list features descriptions of the completions and if the
|
||||
list doesn't fit the screen, it is scrollable by using the arrow keys,
|
||||
the page up/page down keys or the space bar. Press any other key will
|
||||
exit the list and insert the pressed key into the command line.
|
||||
of the command or parameter that the user is currently typing. If \c
|
||||
fish can only find one possible completion, \c fish will write it
|
||||
out. If there is more than one completion, \c fish will write out the
|
||||
longest common prefix that all completions have in common. If all
|
||||
completions differ on the first character, a list of all possible
|
||||
completions is printed. The list features descriptions of the
|
||||
completions and if the list doesn't fit the screen, it is scrollable
|
||||
by using the arrow keys, the page up/page down keys or the space
|
||||
bar. Press any other key will exit the list and insert the pressed key
|
||||
into the command line.
|
||||
|
||||
These are the general purpose tab completions that \c fish provides:
|
||||
|
||||
@@ -261,20 +266,20 @@ These are the general purpose tab completions that \c fish provides:
|
||||
of these completions are simple options like the \c -l option for \c
|
||||
ls, but some are more advanced. The latter include:
|
||||
|
||||
- The programs 'man' and 'whatis' complete using all installed
|
||||
manual pages.
|
||||
- The 'make' program complete using all targets in the Makefile in
|
||||
the current directory.
|
||||
- The 'mount' command complete using all mount points specified in fstab.
|
||||
- The 'ssh' command complete using all hosts in that are stored
|
||||
in the known_hosts file. (see the ssh documentation for more information)
|
||||
- The 'su' command complete using all users on the system
|
||||
- The \c apt-get, \c rpm and \c tym commands complete using all installed packages.
|
||||
- The programs 'man' and 'whatis' show all installed
|
||||
manual pages as completions.
|
||||
- The 'make' program uses all targets in the Makefile in
|
||||
the current directory as completions.
|
||||
- The 'mount' command uses all mount points specified in fstab as completions.
|
||||
- The 'ssh' command uses all hosts in that are stored
|
||||
in the known_hosts file as completions. (see the ssh documentation for more information)
|
||||
- The 'su' command uses all users on the system as completions.
|
||||
- The \c apt-get, \c rpm and \c yum commands use all installed packages as completions.
|
||||
|
||||
\subsection completion-own Writing your own completions
|
||||
|
||||
Specifying your own completions is not complicated. To specify a
|
||||
completion, one simply uses the \c complete command. \c complete takes
|
||||
completion, use the \c complete command. \c complete takes
|
||||
as a parameter the name of the command to specify a completion
|
||||
for. For example, to add a completion for the program \c myprog, one
|
||||
would start the completion command with <tt>complete -c myprog
|
||||
@@ -361,7 +366,7 @@ PNG format.
|
||||
|
||||
\subsection expand-brace Brace expansion
|
||||
|
||||
A comma separated list of characters enclosed en curly braces will be
|
||||
A comma separated list of characters enclosed in curly braces will be
|
||||
expanded so each element of the list becomes a new parameter.
|
||||
|
||||
Example:
|
||||
@@ -403,8 +408,9 @@ there once along the way was a '}' in there somewhere, and } is not a
|
||||
valid character in a variable name. So anything after the otherwise
|
||||
pointless bracket expansion becomes NOT a part of the variable name,
|
||||
even if it happens to be a legal variable name character. That's why
|
||||
'{$USER}san' works. A case of one syntax just lending itself so nicely
|
||||
to solving an unrelated problem in it's spare time.
|
||||
'{$USER}san' looks for the variable '$USER' and not for the variable
|
||||
'$USERsan'. It's a case of one syntax lending itself nicely to
|
||||
solving an unrelated problem in it's spare time.
|
||||
|
||||
Variable expansion is the only type of expansion performed on double
|
||||
quoted strings. There is, however, an important difference in how
|
||||
@@ -637,7 +643,7 @@ echo $smurf
|
||||
\subsection variables-special Special variables
|
||||
|
||||
The user can change the settings of \c fish by changing the values of
|
||||
certain environment variables.
|
||||
certain environment variables.
|
||||
|
||||
- \c BROWSER, which is the users preferred web browser. If this variable is set, fish will use the specified browser instead of the system default browser to display the fish documentation.
|
||||
- \c CDPATH, which is an array of directories in which to search for the new directory for the \c cd builtin.
|
||||
@@ -655,6 +661,7 @@ values of these variables. They are:
|
||||
- \c PWD, which is the current working directory.
|
||||
- \c status, which is the exit status of the last foreground job to exit. If a job contains pipelines, the status of the last command in the pipeline is the status for the job.
|
||||
- \c USER, which is the username. This variable can only be changed by the root user.
|
||||
- \c LANG, \c LC_ALL, \c LC_COLLATE, \c LC_CTYPE, \c LC_MESSAGES, \c LC_MONETARY, \c LC_NUMERIC and \c LC_TIME set the language option for the shell and subprograms. See the section <a href='#variables-locale'>Locale variables</a> for more information.
|
||||
|
||||
Variables whose name are in uppercase are exported to the commands
|
||||
started by fish. This rule is not enforced by fish, but it is good
|
||||
@@ -663,6 +670,22 @@ unexported variables. \c fish also uses several variables
|
||||
internally. Such variables are prefixed with the string __FISH or
|
||||
__fish. These should be ignored by the user.
|
||||
|
||||
\subsection variables-locale Locale variables
|
||||
|
||||
The most common way to set the locale to use a command like 'set -x
|
||||
LANG en_GB.utf8', which sets the current locale to be the english
|
||||
language, as used in Great Britain, using the UTF-8 character set. For
|
||||
a list of available locales, use 'locale -a'.
|
||||
|
||||
\c LANG, \c LC_ALL, \c LC_COLLATE, \c LC_CTYPE, \c LC_MESSAGES, \c
|
||||
LC_MONETARY, \c LC_NUMERIC and LC_TIME set the language option for the
|
||||
shell and subprograms. These variables work as follows: \c LC_ALL
|
||||
forces all the aspects of the locale to the specified value. If LC_ALL
|
||||
is set, all other locale variables will be ignored. The other LC_
|
||||
variables set the specified aspect of the locale information. LANG
|
||||
is a fallback value, it will be used if none of the LC_ variables are
|
||||
specified.
|
||||
|
||||
\section builtin-overview Builtins
|
||||
|
||||
Many other shells have a large library of builtin commands. Most of
|
||||
@@ -678,6 +701,7 @@ The following commands are distributed with fish. Many of them are
|
||||
builtins or shellscript functions, and can only be used inside fish.
|
||||
|
||||
- <a href="builtins.html#source">.</a>, read and execute the commands in a file
|
||||
- <a href="builtins.html#and">and</a>, execute command if previous command suceeded
|
||||
- <a href="builtins.html#bg">bg</a>, set a command to the background
|
||||
- <a href="builtins.html#begin">begin</a>, execute a block of commands
|
||||
- <a href="builtins.html#bind">bind</a>, change keyboard bindings
|
||||
@@ -709,6 +733,7 @@ builtins or shellscript functions, and can only be used inside fish.
|
||||
- <a href="commands.html#mimedb">mimedb</a>, view mimedata about a file
|
||||
- <a href="commands.html#nextd">nextd</a>, move forward in the directory history
|
||||
- <a href="builtins.html#not">not</a>, negates the exit status of any command
|
||||
- <a href="builtins.html#or">or</a>, execute a command if previous command failed
|
||||
- <a href="commands.html#popd">popd</a>, move to the topmost directory on the directory stack
|
||||
- <a href="commands.html#prevd">prevd</a>, move backwards in the direcotry stack
|
||||
- <a href="commands.html#pushd">pushd</a>, push the surrent directory onto the directory stack
|
||||
@@ -720,7 +745,7 @@ builtins or shellscript functions, and can only be used inside fish.
|
||||
- <a href="builtins.html#switch">switch</a>, conditionally execute a block of commands
|
||||
- <a href="commands.html#tokenize">tokenize</a>, split a string up into multiple tokens
|
||||
- <a href="builtins.html#ulimit">ulimit</a>, set or get the shells resurce usage limits
|
||||
- <a href="commandss.html#umask">umask</a>, set or get the file creation mask
|
||||
- <a href="commands.html#umask">umask</a>, set or get the file creation mask
|
||||
- <a href="builtins.html#while">while</a>, perform a block of commands while a condition is met
|
||||
|
||||
For more information about these commands, use the <tt>--help</tt>
|
||||
@@ -750,7 +775,7 @@ Here are some of the commands available in the editor:
|
||||
- Alt-d move next word to the <a href="#killring">killring</a>
|
||||
- Alt-w prints a short description of the command under the cursor
|
||||
- Alt-l lists the contents of the current directory, unless the cursor is over a directory argument, in which case the contents of that directory will be listed
|
||||
- Alt-p adds the string '| less;' to the end of the job under the cursor. The result is that the output of the command will be paged.aadddddssss
|
||||
- Alt-p adds the string '| less;' to the end of the job under the cursor. The result is that the output of the command will be paged.
|
||||
|
||||
You can change these key bindings by making an inputrc file. To do
|
||||
this, copy the file /etc/fish_inputrc to your home directory and
|
||||
@@ -900,11 +925,15 @@ fish_color_substitution, \c fish_color_redirection, \c fish_color_end,
|
||||
\c fish_color_error, \c fish_color_param, \c fish_color_comment, \c
|
||||
fish_color_match, \c fish_color_search_match, \c fish_color_cwd, \c
|
||||
fish_pager_color_prefix, \c fish_pager_color_completion, \c
|
||||
fish_pager_color_description and \c fish_pager_color_progress. Valid
|
||||
values are \c black, \c red, \c green, \c brown, \c yellow, \c blue,
|
||||
\c magenta, \c purple, \c cyan, \c white or \c normal. Setting one of
|
||||
the above variables to normal will mean that the text color will be
|
||||
set to the default foreground color for the terminal.
|
||||
fish_pager_color_description and \c
|
||||
fish_pager_color_progress. Usually, the value of these variables will
|
||||
be one of \c black, \c red, \c green, \c brown, \c yellow, \c blue, \c
|
||||
magenta, \c purple, \c cyan, \c white or \c normal, but they can be an
|
||||
array containing any color options for the set_color command.
|
||||
|
||||
Issuing <code>set fish_color_error black --background=red
|
||||
--bold</code> will make all commandline errors be written in a black,
|
||||
bold font, with a red background.
|
||||
|
||||
\subsection prompt Programmable prompt
|
||||
|
||||
@@ -922,6 +951,9 @@ function fish_prompt -d "Write out the prompt"
|
||||
printf '\%s\@\%s\%s\%s\%s> ' (whoami) (hostname|cut -d . -f 1) (set_color \$fish_color_cwd) (prompt_pwd) (set_color normal)
|
||||
end
|
||||
</pre>
|
||||
|
||||
where \c prompt_pwd is a shellscript function that displays a condensed version of the current working direcotry.
|
||||
|
||||
</p>
|
||||
|
||||
|
||||
@@ -975,7 +1007,68 @@ it's initalization files to function properly. To solve this
|
||||
problem, either copy the initialization files to each fish users home
|
||||
directory, or install them in /etc.
|
||||
|
||||
\section i18n Translating fish to other languages
|
||||
|
||||
Fish uses the GNU gettext library to implement translation to multiple
|
||||
languages. If fish is not available in your language, please consider
|
||||
making a translation. Currently, only the shell itself can be
|
||||
translated, a future version of fish should also include translated
|
||||
manuals.
|
||||
|
||||
To make a translation of fish, you will first need the sourcecode,
|
||||
available from the <a href='http://roo.no-ip.org/fish'>fish
|
||||
homepage</a>. Download the latest version, and then extract it using a
|
||||
command like <code>tar -zxf fish-VERSION.tar.gz</code>.
|
||||
|
||||
Next, cd into the newly created fish directory using <code>cd
|
||||
fish-VERSION</code>.
|
||||
|
||||
You will now need to configure the sourcecode using the command
|
||||
<code>./configure</code>. This step might take a while.
|
||||
|
||||
Before you continue, you will need to know the ISO 639 language code
|
||||
of the language you are translating to. These codes can be found <a
|
||||
href='http://www.w3.org/WAI/ER/IG/ert/iso639.htm'>here</a>. For
|
||||
example, the language code for Uighur is ug.
|
||||
|
||||
Now you have the sourcecode and it is properly configured. Lets start
|
||||
translating. To do this, first create an empty translation table for
|
||||
the language you wish to translate to by writing <code>make
|
||||
po/[LANGUAGE CODE].po</code> in the fish terminal. For example, if you
|
||||
are translating to Uighur, you should write <code>make
|
||||
po/ug.po</code>. This should create the file po/ug.po, a template
|
||||
translation table containing all the strings that need to be
|
||||
translated.
|
||||
|
||||
Now you are all set up to translate fish to a new language. Open the
|
||||
newly created .po file in your editor of choice, and start
|
||||
translating. The .po file format is rather simple. It contains pairs
|
||||
of string in a format like:
|
||||
|
||||
<pre>
|
||||
msgid "%ls: No suitable job\n"
|
||||
msgstr ""
|
||||
</pre>
|
||||
|
||||
The first line is the english string to translate, the second line
|
||||
should contain your translation. For example, in swedish the above
|
||||
might become:
|
||||
|
||||
<pre>
|
||||
msgid "%ls: No suitable job\n"
|
||||
msgstr "%ls: Inget jobb matchar\n"
|
||||
</pre>
|
||||
|
||||
\%s, \%ls, %\d and other tokens beginning with a '\%' are
|
||||
placeholders. These will be replaced by a value by fish at
|
||||
runtime. You must always take care to use exactly the same
|
||||
placeholders in the same order in your translation. (Actually, there
|
||||
are ways to avoid this, but they are to complicated for this short
|
||||
introduction. See the full manual for the printf C function for more
|
||||
information.)
|
||||
|
||||
Once you have provided a translation for fish, please send it to <a
|
||||
href='fish-users@lists.sf.net'>fish-users@lists.sf.net</a>.
|
||||
|
||||
\section todo Missing features and bugs
|
||||
|
||||
@@ -983,18 +1076,19 @@ directory, or install them in /etc.
|
||||
|
||||
- Complete vi-mode key bindings
|
||||
- next-history-complete
|
||||
- builtin wait command
|
||||
- More completions (for example xterm, vim,
|
||||
konsole, gnome-terminal, dcop, cdrecord, cron, xargs
|
||||
rlogin, telnet, rsync, arch, finger, nice, locate,
|
||||
bibtex, patch, aspell, xpdf,
|
||||
zip, compress, wine, xmms, dig, wine, batch, cron,
|
||||
compress, wine, xmms, dig, wine, batch, cron,
|
||||
g++, javac, java, gcj, lpr, doxygen, whois, find)
|
||||
- Undo support
|
||||
- Check keybinding commands for output - if non has happened, don't repaint to reduce flicker
|
||||
- Check keybinding commands for output - if nothing has happened, don't repaint to reduce flicker
|
||||
- The jobs builtin should be able to give information on a specific job, such as the pids of the processes in the job
|
||||
- Syntax highlighting should mark cd to non-existing directories as an error
|
||||
- wait shellscript
|
||||
- Signal handler to save the history file before exiting from a signal
|
||||
|
||||
|
||||
\subsection todo-possible Possible features
|
||||
|
||||
@@ -1006,7 +1100,6 @@ g++, javac, java, gcj, lpr, doxygen, whois, find)
|
||||
- mouse support like zsh has with http://stchaz.free.fr/mouse.zsh
|
||||
installed would be awesome
|
||||
- suggest a completion on unique matches by writing it out in an understated color
|
||||
- Maybe some functions should only be available from key-bindings. That way one could implement a large part of all the key-binding functions as regular fish functions without worrying about cluttering up the function name space.
|
||||
- With a bit of tweakage, quite a few of the readline key-binding functions could be implemented in shellscript.
|
||||
- Highlight beginning/end of block when moving over a block command
|
||||
- Inclusion guards for the init files to make them evaluate only once, even if the user has installed fish both in /etc and in $HOME
|
||||
@@ -1019,18 +1112,18 @@ g++, javac, java, gcj, lpr, doxygen, whois, find)
|
||||
- Descriptions for variables using 'set -d'.
|
||||
- Parse errors should when possible honor IO redirections
|
||||
|
||||
|
||||
\subsection bugs Known bugs
|
||||
|
||||
- Completion for gcc -\#\#\# option doesn't work.
|
||||
- Many completions are made specifically for the GNU
|
||||
version of a POSIX command
|
||||
- Yanking weird characters from clipboard prints Unicode escapes
|
||||
- Suspending and then resuming pipelines containing a builtin seems to be broken.
|
||||
- Suspending and then resuming pipelines containing a builtin is broken. How should this be handled?
|
||||
|
||||
If you think you have found a bug not described here, please send a
|
||||
report to <a href="mailto:axel@liljencrantz.se"> axel@liljencrantz.se
|
||||
</a>.
|
||||
|
||||
|
||||
\subsection issues Known issues
|
||||
|
||||
Older versions of Doxygen has bugs in the man-page generation which
|
||||
@@ -1045,6 +1138,7 @@ changes when upgrading from pre1.9.2 to 1.9.2 or later. You may also
|
||||
run into such problems when switching between using a package and
|
||||
personal builds.
|
||||
|
||||
|
||||
*/
|
||||
/** \page design Design document
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
\subsection exec-description Description
|
||||
|
||||
The \c exec builtin is used to replace the currently running shells
|
||||
process image with a new command. On sucessfull completion, exec never
|
||||
returns. exec can not be used inside a pipeline.
|
||||
process image with a new command. On successful completion, exec never
|
||||
returns. exec can not be used inside a pipeline.
|
||||
|
||||
\subsection exec-example Example
|
||||
|
||||
|
||||
@@ -2,50 +2,24 @@
|
||||
\section fishd fishd - Universal variable daemon
|
||||
|
||||
\subsection fishd-synopsis Synopsis
|
||||
<tt>fishd [SECTION]</tt>
|
||||
<tt>fishd [(-h|--help|-v|--version)]</tt>
|
||||
|
||||
\subsection fishd-description Description
|
||||
|
||||
The \c fishd daemon is used to load, save and distribute universal
|
||||
variable information. fish automtically connects to fishd via a socket
|
||||
variable information. fish automatically connects to fishd via a socket
|
||||
on startup. If no instance of fishd is running, fish spawns a new
|
||||
fishd instance. fishd will create a socket in /tmp, and wait for
|
||||
incoming connections from universal variable clents, such as fish,
|
||||
incoming connections from universal variable clients, such as fish,
|
||||
When no clients are connected, fishd will automatically shut down.
|
||||
|
||||
\subsection fishd-commands Commands
|
||||
|
||||
Fishd works by sending and recieving sommands. Each command is ended
|
||||
with a newline. These are the commands supported by fishd:
|
||||
|
||||
<pre>set KEY:VALUE
|
||||
set_export KEY:VALUE
|
||||
</pre>
|
||||
|
||||
These commands update the value of a variable. The only difference
|
||||
between the two is that <tt>set_export</tt>-variables should be
|
||||
exported to children of the process using them. The variable value may
|
||||
be escaped using C-style backslash escapes. In fact, this is required
|
||||
for newline characters, which would otherwise be interpreted as end of
|
||||
command.
|
||||
|
||||
<pre>erase KEY
|
||||
</pre>
|
||||
|
||||
Erase the variable with the specified name.
|
||||
|
||||
<pre>barrier
|
||||
barrier_reply
|
||||
</pre>
|
||||
|
||||
A \c barrier command will result in a barrier_reply beeing added to
|
||||
the end of the senders queue of unsent messages. These commands are
|
||||
used to synchronize clients, since once the reply for a barrier
|
||||
message returns, the sender can know that any updates available at the
|
||||
time the original barrier request was sent have been recieved.
|
||||
- <tt>-h</tt> or <tt>--help</tt> displays this help message and then exits
|
||||
- <tt>-v</tt> or <tt>--version</tt> displays the current fish version and then exits
|
||||
|
||||
\subsection fishd-files Files
|
||||
|
||||
~/.fishd.HOSTNAME permenent storage location for universal variale
|
||||
~/.fishd.HOSTNAME permanent storage location for universal variable
|
||||
data. The data is stored as a set of \c set and \c set_export commands
|
||||
such as would be parsed by fishd.
|
||||
such as would be parsed by fishd. If an instance of fishd is running
|
||||
(which is generally the case), manual modifications to ~/.fishd.HOSTNAME
|
||||
will be lost.
|
||||
|
||||
@@ -5,22 +5,22 @@
|
||||
|
||||
\subsection function-description Description
|
||||
|
||||
- \c -b or \c --key-binding specifies that the function is a key biding. Key binding functions work exactly like regular functions except that they can not be tab-completed, and may contain the '-' character.
|
||||
- \c -b or \c --key-binding specifies that the function is a key biding. Key binding functions work exactly like regular functions except that they can not be tab-completed, and may contain the '-' character.
|
||||
- <tt>-d DESCRIPTION</tt> or \c --description=DESCRIPTION is a description of what the function does, suitable as a completion description
|
||||
- <tt>-j PID</tt> or <tt> --on-job-exit PID</tt> tells fish to run this function when the job with group id PID exits
|
||||
- <tt>-p PID</tt> or <tt> --on-process-exit PID</tt> tells fish to run this function when the fish child process with process id PID exits
|
||||
- <tt>-s</tt> or <tt>--on-signal SIGSPEC</tt> tells fish to run this function when the signal SIGSPEC is delivered. SIGSPEC can be a singal number, or the signal name, such as SIGHUP (or just HUP)
|
||||
- <tt>-s</tt> or <tt>--on-signal SIGSPEC</tt> tells fish to run this function when the signal SIGSPEC is delivered. SIGSPEC can be a signal number, or the signal name, such as SIGHUP (or just HUP)
|
||||
- <tt>-v</tt> or <tt>--on-variable VARIABLE_NAME</tt> tells fish to run this function when the variable VARIABLE_NAME changes value
|
||||
|
||||
This builtin command is used to create a new function. A Function is a
|
||||
list of commands that will be executed when the name of the function
|
||||
is entered. The function
|
||||
is entered. The function
|
||||
|
||||
<pre>
|
||||
function hi
|
||||
echo hello
|
||||
end
|
||||
</pre>
|
||||
</pre>
|
||||
|
||||
will write <tt>hello</tt> whenever the user enters \c hi.
|
||||
|
||||
@@ -29,7 +29,7 @@ are inserted into the environment variable <a href="index.html#variables-arrays"
|
||||
|
||||
\subsection function-example Example
|
||||
|
||||
<pre>function ll
|
||||
<pre>function ll
|
||||
ls -l $argv
|
||||
end
|
||||
</pre>
|
||||
@@ -39,18 +39,18 @@ will run the \c ls command, using the \c -l option, while passing on any additio
|
||||
<pre>
|
||||
function mkdir -d "Create a directory and set CWD"
|
||||
mkdir $argv
|
||||
if test $status = 0
|
||||
if test $status = 0
|
||||
switch $argv[(count $argv)]
|
||||
case '-*'
|
||||
|
||||
|
||||
case '*'
|
||||
cd $argv[(count $argv)]
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
</pre>
|
||||
</pre>
|
||||
|
||||
will run the mkdir command, and if it is succesfull, change the
|
||||
will run the mkdir command, and if it is successful, change the
|
||||
current working directory to the one just created.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
\section help help - Display fish documantation
|
||||
\section help help - Display fish documentation
|
||||
|
||||
\subsection help-synopsis Synopsis
|
||||
<tt>help [SECTION]</tt>
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
|
||||
\subsection jobs-description Description
|
||||
The <tt>jobs</tt> builtin causes fish to print a list of the currently
|
||||
running jobs and their status.
|
||||
running jobs and their status.
|
||||
|
||||
jobs accepts the following switches:
|
||||
|
||||
- <tt>-c</tt> or <tt>--command</tt> print the command name for each process in jobs
|
||||
- <tt>-g</tt> or <tt>--group</tt> only print the group id of each job
|
||||
- <tt>-l</tt> or <tt>--last</tt> only the last job to be started is printed
|
||||
- <tt>-p</tt> or <tt>--process</tt> print the procces id for each process in all jobs
|
||||
- <tt>-p</tt> or <tt>--process</tt> print the process id for each process in all jobs
|
||||
|
||||
On systems that supports this feature, jobs will print the CPU usage
|
||||
of each job since the last command was executed. The CPU usage is
|
||||
|
||||
@@ -2,22 +2,16 @@
|
||||
\section or or - Conditionally execute a command
|
||||
|
||||
\subsection or-synopsis Synopsis
|
||||
<tt>or COMMAND1; COMMAND2</tt>
|
||||
<tt>COMMAND1; or COMMAND2</tt>
|
||||
|
||||
\subsection or-description Description
|
||||
|
||||
The \c or builtin is used to execute one command, and if it returns
|
||||
non-zero status, also execute a second command.
|
||||
The \c or builtin is used to execute a command if the current exit status (as set by the last previous command) is non-zero
|
||||
|
||||
\subsection or-example Example
|
||||
|
||||
The following code runs the \c make command to build a program, or if it fails, it runs <tt>make clean</tt>, which removes the files created by the build process
|
||||
<pre>
|
||||
or make; make clean
|
||||
make; or make clean
|
||||
</pre>
|
||||
|
||||
\c or and \c and can be nested, as in this example, that attempts to build and install a program, and removed the files created by the build process on failiure
|
||||
|
||||
<pre>
|
||||
or and make; make install; make clean
|
||||
</pre>
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
\section set set - Handle environment variables.
|
||||
|
||||
\subsection set-synopsis Synopsis
|
||||
<tt>set [OPTIONS] VARIABLE_NAME [VALUES...]</tt>
|
||||
<code>set [OPTIONS] [VARIABLE_NAME [VALUES...]]</code>
|
||||
|
||||
The <tt>set</tt> builtin causes fish to assign the variable <tt>VARIABLE_NAME</tt> the values <tt>VALUES...</tt>.
|
||||
The <code>set</code> builtin causes fish to assign the variable <code>VARIABLE_NAME</code> the values <code>VALUES...</code>.
|
||||
|
||||
\subsection set-description Description
|
||||
- <tt>-e</tt> or <tt>--erase</tt> causes the specified environment variable to be erased
|
||||
- <tt>-g</tt> or <tt>--global</tt> causes the specified environment variable to be made global. If this option is not supplied, the specified variable will dissapear when the current block ends
|
||||
- <tt>-l</tt> or <tt>--local</tt> forces the specified environment variable to be made local to the current block, even if the variable already exists and is non-local
|
||||
- <tt>-n</tt> or <tt>--names</tt> List only the names of all defined variables
|
||||
- <tt>-q</tt> or <tt>--query</tt> test if the specified variable names are defined. Does not output anything, but the builtins exit status is the number of variables specified that were not defined.
|
||||
- <tt>-u</tt> or <tt>--unexport</tt> causes the specified environment not to be exported to child processes
|
||||
- <tt>-U</tt> or <tt>--universal</tt> causes the specified environment variable to be made universal. If this option is supplied, the variable will be shared between all the current users fish instances on the current computer, and will be preserved across restarts of the shell.
|
||||
- <tt>-x</tt> or <tt>--export</tt> causes the specified environment variable to be exported to child processes
|
||||
- <code>-e</code> or <code>--erase</code> causes the specified environment variable to be erased
|
||||
- <code>-g</code> or <code>--global</code> causes the specified environment variable to be made global. If this option is not supplied, the specified variable will disappear when the current block ends
|
||||
- <code>-l</code> or <code>--local</code> forces the specified environment variable to be made local to the current block, even if the variable already exists and is non-local
|
||||
- <code>-n</code> or <code>--names</code> List only the names of all defined variables
|
||||
- <code>-q</code> or <code>--query</code> test if the specified variable names are defined. Does not output anything, but the builtins exit status is the number of variables specified that were not defined.
|
||||
- <code>-u</code> or <code>--unexport</code> causes the specified environment not to be exported to child processes
|
||||
- <code>-U</code> or <code>--universal</code> causes the specified environment variable to be made universal. If this option is supplied, the variable will be shared between all the current users fish instances on the current computer, and will be preserved across restarts of the shell.
|
||||
- <code>-x</code> or <code>--export</code> causes the specified environment variable to be exported to child processes
|
||||
|
||||
If set is called with no arguments, the names and values of all
|
||||
environment variables are printed.
|
||||
environment variables are printed. If some of the scope or export
|
||||
flags have been given, only the variables matching the specified scope
|
||||
are printed.
|
||||
|
||||
If the \c -e or \c --erase option is specified, the variable
|
||||
specified by the following arguments will be erased
|
||||
@@ -25,13 +27,15 @@ If a variable is set to more than one value, the variable will be an
|
||||
array with the specified elements. If a variable is set to zero
|
||||
elements, it will become an array with zero elements.
|
||||
|
||||
If the variable name is one or more array elements, such as <tt>PATH[1
|
||||
3 7]</tt>, only those array elements specified will be changed.
|
||||
If the variable name is one or more array elements, such as <code>PATH[1
|
||||
3 7]</code>, only those array elements specified will be changed.
|
||||
|
||||
\subsection set-example Example
|
||||
|
||||
<tt>set foo hi</tt> sets the value of the variable foo to be hi.
|
||||
<code>set -xg</code> will print all global, exported variables.
|
||||
|
||||
<tt>set -e smurf</tt> removes the variable \c smurf.
|
||||
<code>set foo hi</code> sets the value of the variable foo to be hi.
|
||||
|
||||
<tt>set PATH[4] ~/bin</tt> changes the fourth element of the \c PATH array to \c ~/bin
|
||||
<code>set -e smurf</code> removes the variable \c smurf.
|
||||
|
||||
<code>set PATH[4] ~/bin</code> changes the fourth element of the \c PATH array to \c ~/bin
|
||||
|
||||
@@ -20,3 +20,8 @@ purple, cyan, white and normal.
|
||||
Calling <tt>set_color normal</tt> will set the terminal color to
|
||||
whatever is the default color of the terminal.
|
||||
|
||||
Some terminals use the --bold escape sequence to switch to a brighter
|
||||
color set. On such terminals, <code>set_color white</code> will result
|
||||
in a grey font color, while <code>set_color --bold white</code> will
|
||||
result in a white font color.
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<tt>status [OPTION]</tt>
|
||||
|
||||
\subsection status-description Description
|
||||
- <tt>-c</tt> or <tt>--is-command-substitution</tt> returns 0 if fish is currently executing a command usbstitution
|
||||
- <tt>-c</tt> or <tt>--is-command-substitution</tt> returns 0 if fish is currently executing a command substitution
|
||||
- <tt>-b</tt> or <tt>--is-block</tt> returns 0 if fish is currently executing a block of code
|
||||
- <tt>-i</tt> or <tt>--is-interactive</tt> returns 0 if fish is interactive, i.e.connected to a keyboard
|
||||
- <tt>-l</tt> or <tt>--is-login</tt> returns 0 if fish is a login shell, i.e. if fish should perform login tasks such as setting up the PATH.
|
||||
- <tt>-l</tt> or <tt>--is-login</tt> returns 0 if fish is a login shell, i.e. if fish should perform login tasks such as setting up the PATH.
|
||||
|
||||
@@ -12,7 +12,7 @@ wildcarded values.
|
||||
|
||||
\subsection switch-example Example
|
||||
|
||||
If the variable \$animal contins the name of an animal, the
|
||||
If the variable \$animal contains the name of an animal, the
|
||||
following code would attempt to classify it:
|
||||
|
||||
<p>
|
||||
@@ -22,7 +22,7 @@ switch $animal
|
||||
echo evil
|
||||
case wolf dog human moose dolphin whale
|
||||
echo mammal
|
||||
case duck goose albatros
|
||||
case duck goose albatross
|
||||
echo bird
|
||||
case shark trout stingray
|
||||
echo fish
|
||||
@@ -32,6 +32,6 @@ end
|
||||
<p>
|
||||
|
||||
If the above code was run with \$animal set to \c whale, the output
|
||||
would be \c mammal.
|
||||
would be \c mammal.
|
||||
|
||||
</p>
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
|
||||
\section tokenize tokenize - tokenize a string
|
||||
|
||||
\subsection tokenize-synopsis Synopsis
|
||||
<tt>tokenize [STRING...]</tt>
|
||||
|
||||
\subsection tokenize-description Description
|
||||
- STRING is the string or list of strings to tokenize. Each token will be printed on a line by itself
|
||||
- \c -e, \c --with-empty allow empty tokens
|
||||
- \c -n, \c --no-empty ignore empty tokens (Default)
|
||||
- <tt>-d DELIMITER</tt>, <tt>--delimiter=DELIMITER</tt> is the list of characters that will be used as delimiters. If unspecified, the IFS environment variable will be used as the delimiter string,
|
||||
- \c -h, \c --help Display help message and exit
|
||||
- \c -v, \c --version Display version and exit
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
\section trap trap - perform an action when the shell recives a signal
|
||||
\section trap trap - perform an action when the shell receives a signal
|
||||
|
||||
\subsection trap-synopsis Synopsis
|
||||
<tt>trap [OPTIONS] [[ARG] SIGSPEC ... ]</tt>
|
||||
@@ -8,10 +8,10 @@
|
||||
|
||||
Trap is a shellscript wrapper around the fish event delivery
|
||||
framework. IT is defined for backwards compatibility reasons. For
|
||||
other uses, it is recomended to define a <a
|
||||
other uses, it is recommended to define a <a
|
||||
href='index.html#event'>event handler</a>.
|
||||
|
||||
- ARG is the command to be executed on signal delivary
|
||||
- ARG is the command to be executed on signal delivery
|
||||
- SIGSPEC is the name of the signal to trap
|
||||
- \c -h or \c --help Display help and exit
|
||||
- \c -l or \c --list-signals print a list of signal names
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
\subsection type-description Description
|
||||
|
||||
With no options, indicate how each name would be interpreted if used as a command name.
|
||||
With no options, indicate how each name would be interpreted if used as a command name.
|
||||
|
||||
- \c -h or \c --help print this message
|
||||
- \c -a or \c --all print all of possible definitions of the specified names
|
||||
- \c -f or \c --no-functions supresses function and builtin lookup
|
||||
- \c -f or \c --no-functions suppresses function and builtin lookup
|
||||
- \c -t or \c --type print a string which is one of alias, keyword, function, builtin, or file if name is an alias, shell reserved word, function, builtin, or disk file, respectively
|
||||
- \c -p or \c --path either return the name of the disk file that would be executed if name were specified as a command name, or nothing if 'type -t name' would not return 'file'
|
||||
- \c -P or \c --force-path either return the name of the disk file that would be executed if name were specified as a command name, or nothing no file with the specified name could be found in the PATH
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
\section ulimit ulimit - Set or get the shells resurce usage limits
|
||||
\section ulimit ulimit - Set or get the shells resource usage limits
|
||||
|
||||
\subsection ulimit-synopsis Synopsis
|
||||
<tt>ulimit [OPTIONS] [LIMIT]</tt>
|
||||
@@ -38,7 +38,7 @@ except for -t, which is in seconds and -n and -u, which are unscaled
|
||||
values. The return status is 0 unless an invalid option or argument is
|
||||
supplied, or an error occurs while setting a new limit.
|
||||
|
||||
The fish implementation of ulimit should behave identically to the implementation in bash, except for these differences:
|
||||
The fish implementation of ulimit should behave identically to the implementation in bash, except for these differences:
|
||||
|
||||
- Fish ulimit supports GNU-style long options for all switches
|
||||
- Fish ulimit does not support the -p option for getting the pipe size. The bash implementation consists of a compile-time check that empirically guesses this number by writing to a pipe and waiting for SIGPIPE.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
\section umask umask - Set or get the shells resurce usage limits
|
||||
\section umask umask - Set or get the shells resource usage limits
|
||||
|
||||
\subsection umask-synopsis Synopsis
|
||||
<code>umask [OPTIONS] [MASK]</code>
|
||||
@@ -10,7 +10,7 @@ With no argument, the current file-creation mask is printed, if an
|
||||
argument is specified, it is the new file creation mask. The mask may
|
||||
be specified as an octal number, in which case it is interpreted as
|
||||
the rights that should be masked away, i.e. it is the inverse of the
|
||||
file permissions any new files will have.
|
||||
file permissions any new files will have.
|
||||
|
||||
If a symbolic mask is specified, the actual file permission bits, and
|
||||
not the inverse, should be specified. A symbolic mask is a comma
|
||||
@@ -19,7 +19,7 @@ separated list of rights. Each right consists of three parts:
|
||||
- The first part specifies to whom this set of right applies, and can
|
||||
be one of \c u, \c g, \c o or \c a, where \c u specifies the user who
|
||||
owns the file, \c g specifies the group owner of the file, \c o
|
||||
specifiec other users rights and \c a specifies all three should be
|
||||
specific other users rights and \c a specifies all three should be
|
||||
changed.
|
||||
- The second part of a right specifies the mode, and can be one of \c
|
||||
=, \c + or \c -, where \c = specifies that the rights should be set to
|
||||
@@ -27,7 +27,7 @@ the new value, \c + specifies that the specified right should be added
|
||||
to those previously specified and \c - specifies that the specified
|
||||
rights should be removed from those previously specified.
|
||||
- The third part of a right specifies what rights should be changed
|
||||
and can be any compination of \c r, \c w and \c x, representing
|
||||
and can be any combination of \c r, \c w and \c x, representing
|
||||
read, write and execute rights.
|
||||
|
||||
If the first and second parts are skipped, they are assumed to be \c a
|
||||
|
||||
358
env.c
358
env.c
@@ -25,7 +25,12 @@
|
||||
#include <termio.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_TERM_H
|
||||
#include <term.h>
|
||||
#elif HAVE_NCURSES_TERM_H
|
||||
#include <ncurses/term.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include "util.h"
|
||||
@@ -41,6 +46,8 @@
|
||||
#include "env_universal.h"
|
||||
#include "input_common.h"
|
||||
#include "event.h"
|
||||
#include "translate.h"
|
||||
#include "complete.h"
|
||||
|
||||
/**
|
||||
Command used to start fishd
|
||||
@@ -141,19 +148,6 @@ static buffer_t export_buffer;
|
||||
*/
|
||||
static int has_changed = 1;
|
||||
|
||||
/**
|
||||
Free hash key and hash value
|
||||
*/
|
||||
static void clear_hash_entry( const void *key, const void *data )
|
||||
{
|
||||
var_entry_t *entry = (var_entry_t *)data;
|
||||
if( entry->export )
|
||||
has_changed = 1;
|
||||
|
||||
free( (void *)key );
|
||||
free( (void *)data );
|
||||
}
|
||||
|
||||
/**
|
||||
This stringbuffer is used to store the value of dynamically
|
||||
generated variables, such as history.
|
||||
@@ -171,6 +165,36 @@ static int get_names_show_exported;
|
||||
*/
|
||||
static int get_names_show_unexported;
|
||||
|
||||
/**
|
||||
List of all locale variable names
|
||||
*/
|
||||
static const wchar_t *locale_variable[] =
|
||||
{
|
||||
L"LANG",
|
||||
L"LC_ALL",
|
||||
L"LC_COLLATE",
|
||||
L"LC_CTYPE",
|
||||
L"LC_MESSAGES",
|
||||
L"LC_MONETARY",
|
||||
L"LC_NUMERIC",
|
||||
L"LC_TIME",
|
||||
(void *)0
|
||||
}
|
||||
;
|
||||
|
||||
/**
|
||||
Free hash key and hash value
|
||||
*/
|
||||
static void clear_hash_entry( const void *key, const void *data )
|
||||
{
|
||||
var_entry_t *entry = (var_entry_t *)data;
|
||||
if( entry->export )
|
||||
has_changed = 1;
|
||||
|
||||
free( (void *)key );
|
||||
free( (void *)data );
|
||||
}
|
||||
|
||||
/**
|
||||
When fishd isn't started, this function is provided to
|
||||
env_universal as a callback, it tries to start up fishd. It's
|
||||
@@ -182,7 +206,7 @@ static void start_fishd()
|
||||
{
|
||||
string_buffer_t cmd;
|
||||
struct passwd *pw;
|
||||
|
||||
|
||||
sb_init( &cmd );
|
||||
pw = getpwuid(getuid());
|
||||
|
||||
@@ -190,7 +214,7 @@ static void start_fishd()
|
||||
|
||||
if( !pw )
|
||||
{
|
||||
debug( 0, L"Could not get user information" );
|
||||
debug( 0, _( L"Could not get user information" ) );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -213,6 +237,90 @@ static mode_t get_umask()
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
Checks if the specified variable is a locale variable
|
||||
*/
|
||||
static int is_locale( const wchar_t *key )
|
||||
{
|
||||
int i;
|
||||
for( i=0; locale_variable[i]; i++ )
|
||||
if( wcscmp(locale_variable[i], key ) == 0 )
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
Properly sets all locale information
|
||||
*/
|
||||
static void handle_locale()
|
||||
{
|
||||
const wchar_t *lc_all = env_get( L"LC_ALL" );
|
||||
const wchar_t *lang;
|
||||
int i;
|
||||
wchar_t *old = wcsdup(wsetlocale( LC_MESSAGES, (void *)0 ));
|
||||
|
||||
/*
|
||||
Array of locale constants corresponding to the local variable names defined in locale_variable
|
||||
*/
|
||||
static const int cat[] =
|
||||
{
|
||||
0,
|
||||
LC_ALL,
|
||||
LC_COLLATE,
|
||||
LC_CTYPE,
|
||||
LC_MESSAGES,
|
||||
LC_MONETARY,
|
||||
LC_NUMERIC,
|
||||
LC_TIME
|
||||
}
|
||||
;
|
||||
|
||||
if( lc_all )
|
||||
{
|
||||
wsetlocale( LC_ALL, lc_all );
|
||||
}
|
||||
else
|
||||
{
|
||||
lang = env_get( L"LANG" );
|
||||
if( lang )
|
||||
{
|
||||
wsetlocale( LC_ALL, lang );
|
||||
}
|
||||
|
||||
for( i=2; locale_variable[i]; i++ )
|
||||
{
|
||||
const wchar_t *val = env_get( locale_variable[i] );
|
||||
if( val )
|
||||
wsetlocale( cat[i], val );
|
||||
}
|
||||
}
|
||||
|
||||
if( wcscmp( wsetlocale( LC_MESSAGES, (void *)0 ), old ) != 0 )
|
||||
{
|
||||
|
||||
/* Try to make change known to gettext. */
|
||||
#ifdef HAVE__NL_MSG_CAT_CNTR
|
||||
{
|
||||
extern int _nl_msg_cat_cntr;
|
||||
++_nl_msg_cat_cntr;
|
||||
}
|
||||
#elif HAVE_DCGETTEXT
|
||||
dcgettext("fish","Changing language to English",LC_MESSAGES);
|
||||
#endif
|
||||
|
||||
if( is_interactive )
|
||||
{
|
||||
complete_destroy();
|
||||
complete_init();
|
||||
|
||||
debug( 0, _(L"Changing language to English") );
|
||||
}
|
||||
}
|
||||
free( old );
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Universal variable callback function. This function makes sure the
|
||||
proper events are triggered when an event occurs.
|
||||
@@ -223,6 +331,9 @@ static void universal_callback( int type,
|
||||
{
|
||||
wchar_t *str=0;
|
||||
|
||||
if( is_locale( name ) )
|
||||
handle_locale();
|
||||
|
||||
switch( type )
|
||||
{
|
||||
case SET:
|
||||
@@ -253,22 +364,99 @@ static void universal_callback( int type,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Make sure the PATH variable contains the essaential directories
|
||||
*/
|
||||
static void setup_path()
|
||||
{
|
||||
wchar_t *path;
|
||||
|
||||
int i, j;
|
||||
array_list_t l;
|
||||
|
||||
const wchar_t *path_el[] =
|
||||
{
|
||||
L"/bin",
|
||||
L"/usr/bin",
|
||||
PREFIX L"/bin",
|
||||
0
|
||||
}
|
||||
;
|
||||
|
||||
path = env_get( L"PATH" );
|
||||
if( !path )
|
||||
{
|
||||
env_set( L"PATH", 0, ENV_EXPORT | ENV_GLOBAL | ENV_USER );
|
||||
path=0;
|
||||
}
|
||||
|
||||
al_init( &l );
|
||||
|
||||
if( path )
|
||||
expand_variable_array( path, &l );
|
||||
|
||||
for( j=0; path_el[j]; j++ )
|
||||
{
|
||||
int has_el=0;
|
||||
|
||||
for( i=0; i<al_get_count( &l); i++ )
|
||||
{
|
||||
wchar_t * el = (wchar_t *)al_get( &l, i );
|
||||
size_t len = wcslen( el );
|
||||
while( (len > 0) && (el[len-1]==L'/') )
|
||||
len--;
|
||||
if( (wcslen( path_el[j] ) == len) && (wcsncmp( el, path_el[j], len)==0) )
|
||||
{
|
||||
has_el = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if( !has_el )
|
||||
{
|
||||
string_buffer_t b;
|
||||
|
||||
debug( 3, L"directory %ls was missing", path_el[j] );
|
||||
|
||||
sb_init( &b );
|
||||
if( path )
|
||||
{
|
||||
sb_append( &b, path );
|
||||
}
|
||||
|
||||
sb_append2( &b,
|
||||
ARRAY_SEP_STR,
|
||||
path_el[j],
|
||||
(void *)0 );
|
||||
|
||||
env_set( L"PATH", (wchar_t *)b.buff, ENV_GLOBAL | ENV_EXPORT );
|
||||
|
||||
sb_destroy( &b );
|
||||
|
||||
al_foreach( &l, (void (*)(const void *))&free );
|
||||
path = env_get( L"PATH" );
|
||||
al_truncate( &l, 0 );
|
||||
expand_variable_array( path, &l );
|
||||
}
|
||||
}
|
||||
|
||||
al_foreach( &l, (void (*)(const void *))&free );
|
||||
al_destroy( &l );
|
||||
}
|
||||
|
||||
void env_init()
|
||||
{
|
||||
char **p;
|
||||
struct passwd *pw;
|
||||
wchar_t *uname, *path;
|
||||
wchar_t *uname;
|
||||
|
||||
sb_init( &dyn_var );
|
||||
|
||||
b_init( &export_buffer );
|
||||
|
||||
|
||||
/*
|
||||
These variables can not be altered directly by the user
|
||||
*/
|
||||
hash_init( &env_read_only, &hash_wcs_func, &hash_wcs_cmp );
|
||||
|
||||
|
||||
hash_put( &env_read_only, L"status", L"" );
|
||||
hash_put( &env_read_only, L"history", L"" );
|
||||
hash_put( &env_read_only, L"_", L"" );
|
||||
@@ -301,6 +489,11 @@ void env_init()
|
||||
hash_init( &top->env, &hash_wcs_func, &hash_wcs_cmp );
|
||||
global_env = top;
|
||||
global = &top->env;
|
||||
|
||||
/*
|
||||
Now the environemnt variable handling is set up, the next step
|
||||
is to insert valid data
|
||||
*/
|
||||
|
||||
/*
|
||||
Import environment variables
|
||||
@@ -338,77 +531,14 @@ void env_init()
|
||||
free(key);
|
||||
}
|
||||
|
||||
path = env_get( L"PATH" );
|
||||
if( !path )
|
||||
{
|
||||
env_set( L"PATH", L"/bin" ARRAY_SEP_STR L"/usr/bin", ENV_EXPORT | ENV_GLOBAL );
|
||||
path = env_get( L"PATH" );
|
||||
}
|
||||
else
|
||||
{
|
||||
int i, j;
|
||||
array_list_t l;
|
||||
|
||||
al_init( &l );
|
||||
expand_variable_array( path, &l );
|
||||
/*
|
||||
Set up the PATH variable
|
||||
*/
|
||||
setup_path();
|
||||
|
||||
debug( 3, L"PATH is %ls", path );
|
||||
|
||||
|
||||
const wchar_t *path_el[] =
|
||||
{
|
||||
L"/bin",
|
||||
L"/usr/bin",
|
||||
PREFIX L"/bin",
|
||||
0
|
||||
}
|
||||
;
|
||||
|
||||
for( j=0; path_el[j]; j++ )
|
||||
{
|
||||
int has_el=0;
|
||||
|
||||
debug( 3, L"Check directory %ls", path_el[j] );
|
||||
|
||||
|
||||
for( i=0; i<al_get_count( &l); i++ )
|
||||
{
|
||||
wchar_t * el = (wchar_t *)al_get( &l, i );
|
||||
size_t len = wcslen( el );
|
||||
while( (len > 0) && (el[len-1]==L'/') )
|
||||
len--;
|
||||
if( (wcslen( path_el[j] ) == len) && (wcsncmp( el, path_el[j], len)==0) )
|
||||
{
|
||||
has_el = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if( !has_el )
|
||||
{
|
||||
string_buffer_t b;
|
||||
debug( 3, L"directory %ls was missing", path_el[j] );
|
||||
sb_init( &b );
|
||||
sb_append2( &b, path,
|
||||
ARRAY_SEP_STR,
|
||||
path_el[j],
|
||||
(void *)0 );
|
||||
|
||||
env_set( L"PATH", (wchar_t *)b.buff, ENV_GLOBAL | ENV_EXPORT );
|
||||
sb_destroy( &b );
|
||||
path = env_get( L"PATH" );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
debug( 3, L"After: PATH is %ls", path );
|
||||
|
||||
al_foreach( &l, (void (*)(const void *))&free );
|
||||
al_destroy( &l );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Set up the USER variable
|
||||
*/
|
||||
pw = getpwuid( getuid() );
|
||||
if( pw )
|
||||
{
|
||||
@@ -417,7 +547,7 @@ void env_init()
|
||||
free( uname );
|
||||
}
|
||||
|
||||
env_universal_init( env_get( L"FISHD_SOKET_DIR"),
|
||||
env_universal_init( env_get( L"FISHD_SOCKET_DIR"),
|
||||
env_get( L"USER" ),
|
||||
&start_fishd,
|
||||
&universal_callback );
|
||||
@@ -474,7 +604,7 @@ static env_node_t *env_get_node( const wchar_t *key )
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void env_set( const wchar_t *key,
|
||||
const wchar_t *val,
|
||||
int var_mode )
|
||||
@@ -489,18 +619,13 @@ void env_set( const wchar_t *key,
|
||||
|
||||
event_t ev;
|
||||
int is_universal = 0;
|
||||
|
||||
|
||||
if( (var_mode & ENV_USER ) &&
|
||||
hash_get( &env_read_only, key ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if( wcscmp(key, L"LANG" )==0 )
|
||||
{
|
||||
fish_setlocale(LC_ALL,val);
|
||||
}
|
||||
|
||||
if( wcscmp( key, L"umask" ) == 0)
|
||||
{
|
||||
wchar_t *end;
|
||||
@@ -524,12 +649,11 @@ void env_set( const wchar_t *key,
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Zero element arrays are internaly not coded as null but as this placeholder string
|
||||
*/
|
||||
if( !val && ( var_mode & ENV_USER ) )
|
||||
if( !val )
|
||||
{
|
||||
val = ENV_NULL;
|
||||
}
|
||||
@@ -616,7 +740,8 @@ void env_set( const wchar_t *key,
|
||||
else
|
||||
{
|
||||
/*
|
||||
New variable with unspecified scope. The default scope is the innermost scope that is shadowing
|
||||
New variable with unspecified scope. The default
|
||||
scope is the innermost scope that is shadowing
|
||||
*/
|
||||
node = top;
|
||||
while( node->next && !node->new_scope )
|
||||
@@ -676,9 +801,15 @@ void env_set( const wchar_t *key,
|
||||
// debug( 1, L"env_set: return from event firing" );
|
||||
al_destroy( &ev.arguments );
|
||||
}
|
||||
|
||||
|
||||
if( is_locale( key ) )
|
||||
{
|
||||
handle_locale();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Attempt to remove/free the specified key/value pair from the
|
||||
specified hash table.
|
||||
@@ -726,6 +857,10 @@ void env_remove( const wchar_t *key, int var_mode )
|
||||
{
|
||||
env_universal_remove( key );
|
||||
}
|
||||
|
||||
if( is_locale( key ) )
|
||||
handle_locale();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -754,7 +889,7 @@ wchar_t *env_get( const wchar_t *key )
|
||||
wchar_t *next = history_get( i-add_current );
|
||||
if( !next )
|
||||
{
|
||||
debug( 1, L"No history at idx %d\n", i );
|
||||
debug( 1, _( L"No history item at index %d\n" ), i );
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -898,8 +1033,20 @@ void env_pop()
|
||||
{
|
||||
if( &top->env != global )
|
||||
{
|
||||
int i;
|
||||
int locale_changed = 0;
|
||||
|
||||
env_node_t *killme = top;
|
||||
|
||||
for( i=0; locale_variable[i]; i++ )
|
||||
{
|
||||
if( hash_get( &killme->env, locale_variable[i] ) )
|
||||
{
|
||||
locale_changed = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if( killme->new_scope )
|
||||
{
|
||||
has_changed |= killme->export || local_scope_exports( killme->next );
|
||||
@@ -909,12 +1056,15 @@ void env_pop()
|
||||
hash_foreach( &killme->env, &clear_hash_entry );
|
||||
hash_destroy( &killme->env );
|
||||
free( killme );
|
||||
|
||||
if( locale_changed )
|
||||
handle_locale();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
debug( 0,
|
||||
L"Tried to pop empty environment stack." );
|
||||
_( L"Tried to pop empty environment stack." ) );
|
||||
sanity_lose();
|
||||
}
|
||||
}
|
||||
@@ -931,7 +1081,9 @@ static void add_key_to_hash( const void *key,
|
||||
var_entry_t *e = (var_entry_t *)data;
|
||||
if( ( e->export && get_names_show_exported) ||
|
||||
( !e->export && get_names_show_unexported) )
|
||||
{
|
||||
hash_put( (hash_table_t *)aux, key, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,12 +11,19 @@
|
||||
#include <pwd.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#if HAVE_NCURSES_H
|
||||
#include <ncurses.h>
|
||||
#else
|
||||
#include <curses.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_TERM_H
|
||||
#include <term.h>
|
||||
#elif HAVE_NCURSES_TERM_H
|
||||
#include <ncurses/term.h>
|
||||
#endif
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
#include "util.h"
|
||||
@@ -112,7 +119,7 @@ static int get_socket( int fork_ok )
|
||||
local.sun_family = AF_UNIX;
|
||||
strcpy(local.sun_path, name );
|
||||
free( name );
|
||||
len = strlen(local.sun_path) + sizeof(local.sun_family);
|
||||
len = sizeof(local);
|
||||
|
||||
if( connect( s, (struct sockaddr *)&local, len) == -1 )
|
||||
{
|
||||
|
||||
12
event.c
12
event.c
@@ -13,12 +13,14 @@
|
||||
|
||||
#include "config.h"
|
||||
#include "util.h"
|
||||
#include "wutil.h"
|
||||
#include "function.h"
|
||||
#include "proc.h"
|
||||
#include "parser.h"
|
||||
#include "common.h"
|
||||
#include "event.h"
|
||||
#include "signal.h"
|
||||
#include "translate.h"
|
||||
|
||||
/**
|
||||
Number of signals that can be queued before an overflow occurs
|
||||
@@ -153,7 +155,9 @@ static event_t *event_copy( event_t *event, int copy_arguments )
|
||||
return e;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Test if specified event is blocked
|
||||
*/
|
||||
static int event_is_blocked( event_t *e )
|
||||
{
|
||||
block_t *block;
|
||||
@@ -324,7 +328,6 @@ static void event_fire_internal( event_t *event )
|
||||
array_list_t *fire=0;
|
||||
|
||||
int was_subshell = is_subshell;
|
||||
int was_interactive = is_interactive;
|
||||
|
||||
/*
|
||||
First we free all events that have been removed
|
||||
@@ -401,7 +404,6 @@ static void event_fire_internal( event_t *event )
|
||||
they are marked as non-interactive and as a subshell
|
||||
*/
|
||||
is_subshell=1;
|
||||
is_interactive=0;
|
||||
eval( (wchar_t *)b->buff, 0, TOP );
|
||||
|
||||
}
|
||||
@@ -410,7 +412,6 @@ static void event_fire_internal( event_t *event )
|
||||
Restore interactivity flags
|
||||
*/
|
||||
is_subshell = was_subshell;
|
||||
is_interactive = was_interactive;
|
||||
|
||||
if( b )
|
||||
{
|
||||
@@ -486,7 +487,7 @@ static void event_fire_delayed()
|
||||
|
||||
if( lst->overflow )
|
||||
{
|
||||
debug( 0, L"Signal list overflow. Signals have been ignored" );
|
||||
debug( 0, _( L"Signal list overflow. Signals have been ignored." ) );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -530,7 +531,6 @@ void event_fire( event_t *event )
|
||||
sig_list[active_list].signal[sig_list[active_list].count++]=event->param1.signal;
|
||||
else
|
||||
sig_list[active_list].overflow=1;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
1
event.h
1
event.h
@@ -112,7 +112,6 @@ int event_get( event_t *criterion, array_list_t *out );
|
||||
dispatched.
|
||||
|
||||
\param event the specific event whose handlers should fire
|
||||
\param arguments the argument string to send to the event handler function
|
||||
*/
|
||||
void event_fire( event_t *event );
|
||||
|
||||
|
||||
280
exec.c
280
exec.c
@@ -36,6 +36,7 @@
|
||||
#include "expand.h"
|
||||
#include "signal.h"
|
||||
#include "env_universal.h"
|
||||
#include "translate.h"
|
||||
|
||||
/**
|
||||
Prototype for the getpgid library function. The prototype for this
|
||||
@@ -48,15 +49,15 @@ pid_t getpgid( pid_t pid );
|
||||
/**
|
||||
file descriptor redirection error message
|
||||
*/
|
||||
#define FD_ERROR L"An error occurred while redirecting file descriptor %d"
|
||||
#define FD_ERROR _( L"An error occurred while redirecting file descriptor %d" )
|
||||
/**
|
||||
file redirection error message
|
||||
*/
|
||||
#define FILE_ERROR L"An error occurred while redirecting file '%ls'"
|
||||
#define FILE_ERROR _( L"An error occurred while redirecting file '%ls'" )
|
||||
/**
|
||||
fork error message
|
||||
*/
|
||||
#define FORK_ERROR L"Could not create child process - exiting"
|
||||
#define FORK_ERROR _( L"Could not create child process - exiting" )
|
||||
|
||||
|
||||
/**
|
||||
@@ -235,14 +236,14 @@ void free_fd( io_data_t *io, int fd )
|
||||
redirections described by \c io.
|
||||
|
||||
\param io the list of IO redirections for the child
|
||||
\param exit_on_error whether to call exit() on errors
|
||||
|
||||
\return 1 on sucess, 0 on failiure
|
||||
*/
|
||||
static void handle_child_io( io_data_t *io )
|
||||
static int handle_child_io( io_data_t *io, int exit_on_error )
|
||||
{
|
||||
|
||||
close_unused_internal_pipes( io );
|
||||
|
||||
if( env_universal_server.fd >= 0 )
|
||||
exec_close( env_universal_server.fd );
|
||||
|
||||
for( ; io; io=io->next )
|
||||
{
|
||||
@@ -276,7 +277,14 @@ static void handle_child_io( io_data_t *io )
|
||||
io->param1.filename );
|
||||
|
||||
wperror( L"open" );
|
||||
exit(1);
|
||||
if( exit_on_error )
|
||||
{
|
||||
exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else if( tmp != io->fd)
|
||||
{
|
||||
@@ -288,7 +296,14 @@ static void handle_child_io( io_data_t *io )
|
||||
FD_ERROR,
|
||||
io->fd );
|
||||
wperror( L"dup2" );
|
||||
exit(1);
|
||||
if( exit_on_error )
|
||||
{
|
||||
exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
exec_close( tmp );
|
||||
}
|
||||
@@ -298,19 +313,21 @@ static void handle_child_io( io_data_t *io )
|
||||
case IO_FD:
|
||||
{
|
||||
close(io->fd);
|
||||
/* debug( 3, L"Redirect fd %d in process %ls (%d) from fd %d",
|
||||
io->fd,
|
||||
p->actual_cmd,
|
||||
p->pid,
|
||||
io->old_fd );
|
||||
*/
|
||||
|
||||
if( dup2( io->param1.old_fd, io->fd ) == -1 )
|
||||
{
|
||||
debug( 1,
|
||||
FD_ERROR,
|
||||
io->fd );
|
||||
wperror( L"dup2" );
|
||||
exit(1);
|
||||
if( exit_on_error )
|
||||
{
|
||||
exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -318,21 +335,23 @@ static void handle_child_io( io_data_t *io )
|
||||
case IO_BUFFER:
|
||||
case IO_PIPE:
|
||||
{
|
||||
close(io->fd);
|
||||
|
||||
/* debug( 3, L"Pipe fd %d in process %ls (%d) (Through fd %d)",
|
||||
io->fd,
|
||||
p->actual_cmd,
|
||||
p->pid,
|
||||
io->pipe_fd[io->fd] );
|
||||
*/
|
||||
int fd_to_dup = io->fd;
|
||||
|
||||
close(io->fd);
|
||||
|
||||
if( dup2( io->param1.pipe_fd[fd_to_dup?1:0], io->fd ) == -1 )
|
||||
{
|
||||
debug( 1, PIPE_ERROR );
|
||||
wperror( L"dup2" );
|
||||
exit(1);
|
||||
if( exit_on_error )
|
||||
{
|
||||
exit(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if( fd_to_dup != 0 )
|
||||
@@ -341,28 +360,21 @@ static void handle_child_io( io_data_t *io )
|
||||
exec_close( io->param1.pipe_fd[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
exec_close( io->param1.pipe_fd[0] );
|
||||
}
|
||||
|
||||
/*
|
||||
if( close( io[i].pipe_fd[ io->fd ] ) == -1 )
|
||||
{
|
||||
wperror( L"close" );
|
||||
exit(1);
|
||||
}
|
||||
*/
|
||||
/* if( close( io[i].pipe_fd[1] ) == -1 )
|
||||
{
|
||||
wperror( L"close" );
|
||||
exit(1);
|
||||
}
|
||||
*/
|
||||
|
||||
/* fprintf( stderr, "fd %d points to fd %d\n", i, io[i].fd[i>0?1:0] );*/
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if( env_universal_server.fd >= 0 )
|
||||
exec_close( env_universal_server.fd );
|
||||
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -371,10 +383,17 @@ static void handle_child_io( io_data_t *io )
|
||||
process is put in the jobs group, all signal handlers are reset,
|
||||
SIGCHLD is unblocked (the exec call blocks blocks SIGCHLD), and all
|
||||
IO redirections and other file descriptor actions are performed.
|
||||
|
||||
\param j the job to set up the IO for
|
||||
\param p the child process to set up
|
||||
|
||||
\return 1 on sucess, 0 on failiure
|
||||
*/
|
||||
static void setup_child_process( job_t *j )
|
||||
static int setup_child_process( job_t *j, process_t *p )
|
||||
{
|
||||
if( is_interactive && !is_subshell && !is_block)
|
||||
int res;
|
||||
|
||||
if( j->terminal )
|
||||
{
|
||||
pid_t pid;
|
||||
/*
|
||||
@@ -399,14 +418,19 @@ static void setup_child_process( job_t *j )
|
||||
}
|
||||
}
|
||||
|
||||
res = handle_child_io( j->io, (p==0) );
|
||||
|
||||
/* Set the handling for job control signals back to the default. */
|
||||
signal_reset_handlers();
|
||||
|
||||
handle_child_io( j->io );
|
||||
|
||||
if( res )
|
||||
{
|
||||
signal_reset_handlers();
|
||||
}
|
||||
|
||||
/* Remove all signal blocks */
|
||||
signal_unblock();
|
||||
|
||||
return res;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -418,10 +442,11 @@ static void setup_child_process( job_t *j )
|
||||
*/
|
||||
static void launch_process( process_t *p )
|
||||
{
|
||||
// debug( 1, L"exec '%ls'", p->argv[0] );
|
||||
|
||||
execve (wcs2str(p->actual_cmd), wcsv2strv( (const wchar_t **) p->argv), env_export_arr( 0 ) );
|
||||
debug( 0,
|
||||
L"Failed to execute process %ls",
|
||||
_( L"Failed to execute process '%ls'" ),
|
||||
p->actual_cmd );
|
||||
wperror( L"execve" );
|
||||
exit(1);
|
||||
@@ -438,11 +463,33 @@ static int has_fd( io_data_t *d, int fd )
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Free a transmogrified io chain. Only the chain itself and resources
|
||||
used by a transmogrified IO_FILE redirection are freed, since the
|
||||
original chain may still be needed.
|
||||
*/
|
||||
static void io_untransmogrify( io_data_t * in, io_data_t *out )
|
||||
{
|
||||
if( !out )
|
||||
return;
|
||||
io_untransmogrify( in->next, out->next );
|
||||
switch( in->io_mode )
|
||||
{
|
||||
case IO_FILE:
|
||||
exec_close( out->param1.old_fd );
|
||||
break;
|
||||
}
|
||||
free(out);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Make a copy of the specified io redirection chain, but change file
|
||||
redirection into fd redirection. This makes the redirection chain
|
||||
suitable for use as block-level io, since the file won't be
|
||||
repeatedly reopened for every command in the block.
|
||||
|
||||
\return the transmogrified chain on sucess, or 0 on failiure
|
||||
*/
|
||||
static io_data_t *io_transmogrify( io_data_t * in )
|
||||
{
|
||||
@@ -458,7 +505,8 @@ static io_data_t *io_transmogrify( io_data_t * in )
|
||||
out->fd = in->fd;
|
||||
out->io_mode = IO_FD;
|
||||
out->param2.close_old = 1;
|
||||
|
||||
out->next=0;
|
||||
|
||||
switch( in->io_mode )
|
||||
{
|
||||
/*
|
||||
@@ -487,7 +535,8 @@ static io_data_t *io_transmogrify( io_data_t * in )
|
||||
in->param1.filename );
|
||||
|
||||
wperror( L"open" );
|
||||
exit(1);
|
||||
free( out );
|
||||
return 0;
|
||||
}
|
||||
|
||||
out->param1.old_fd = fd;
|
||||
@@ -495,31 +544,19 @@ static io_data_t *io_transmogrify( io_data_t * in )
|
||||
}
|
||||
}
|
||||
|
||||
out->next = io_transmogrify( in->next );
|
||||
if( in->next)
|
||||
{
|
||||
out->next = io_transmogrify( in->next );
|
||||
if( !out->next )
|
||||
{
|
||||
io_untransmogrify( in, out );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
/**
|
||||
Free a transmogrified io chain. Only the chain itself and resources
|
||||
used by a transmogrified IO_FILE redirection are freed, since the
|
||||
original chain may still be needed.
|
||||
*/
|
||||
static void io_untransmogrify( io_data_t * in, io_data_t *out )
|
||||
{
|
||||
if( !in )
|
||||
return;
|
||||
io_untransmogrify( in->next, out->next );
|
||||
switch( in->io_mode )
|
||||
{
|
||||
case IO_FILE:
|
||||
exec_close( out->param1.old_fd );
|
||||
break;
|
||||
}
|
||||
free(out);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Morph an io redirection chain into redirections suitable for
|
||||
passing to eval, call eval, and clean up morphed redirections.
|
||||
@@ -529,32 +566,32 @@ static void io_untransmogrify( io_data_t * in, io_data_t *out )
|
||||
\param io the io redirections to be performed on this block
|
||||
*/
|
||||
|
||||
static int internal_exec_helper( const wchar_t *def,
|
||||
static void internal_exec_helper( const wchar_t *def,
|
||||
int block_type,
|
||||
io_data_t *io )
|
||||
{
|
||||
int res=0;
|
||||
io_data_t *io_internal = io_transmogrify( io );
|
||||
int is_block_old=is_block;
|
||||
is_block=1;
|
||||
|
||||
signal_unblock();
|
||||
/*
|
||||
Did the transmogrification fail - if so, set error status and return
|
||||
*/
|
||||
if( io && !io_internal )
|
||||
{
|
||||
proc_set_last_status( 1 );
|
||||
return;
|
||||
}
|
||||
|
||||
signal_unblock();
|
||||
|
||||
eval( def, io_internal, block_type );
|
||||
|
||||
|
||||
signal_block();
|
||||
|
||||
/*
|
||||
io_data_t *buff = io_get( io, 1 );
|
||||
if( buff && buff->io_mode == IO_BUFFER )
|
||||
fwprintf( stderr, L"block %ls produced %d bytes of output\n",
|
||||
def,
|
||||
buff->out_buffer->used );
|
||||
*/
|
||||
|
||||
io_untransmogrify( io, io_internal );
|
||||
job_reap( 0 );
|
||||
is_block=is_block_old;
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -565,7 +602,7 @@ static int internal_exec_helper( const wchar_t *def,
|
||||
static int handle_new_child( job_t *j, process_t *p )
|
||||
{
|
||||
|
||||
if(is_interactive && !is_subshell && !is_block)
|
||||
if( j->terminal )
|
||||
{
|
||||
int new_pgid=0;
|
||||
|
||||
@@ -580,7 +617,7 @@ static int handle_new_child( job_t *j, process_t *p )
|
||||
if( getpgid( p->pid) != j->pgid )
|
||||
{
|
||||
debug( 1,
|
||||
L"Could not send process %d from group %d to group %d",
|
||||
_( L"Could not send process %d from group %d to group %d" ),
|
||||
p->pid,
|
||||
getpgid( p->pid),
|
||||
j->pgid );
|
||||
@@ -592,7 +629,7 @@ static int handle_new_child( job_t *j, process_t *p )
|
||||
{
|
||||
if( tcsetpgrp (0, j->pgid) )
|
||||
{
|
||||
debug( 1, L"Could not send job %d ('%ls')to foreground",
|
||||
debug( 1, _( L"Could not send job %d ('%ls') to foreground" ),
|
||||
j->job_id,
|
||||
j->command );
|
||||
wperror( L"tcsetpgrp" );
|
||||
@@ -604,7 +641,7 @@ static int handle_new_child( job_t *j, process_t *p )
|
||||
{
|
||||
if( tcsetpgrp (0, j->pgid) )
|
||||
{
|
||||
debug( 1, L"Could not send job %d ('%ls')to foreground",
|
||||
debug( 1, _( L"Could not send job %d ('%ls') to foreground" ),
|
||||
j->job_id,
|
||||
j->command );
|
||||
wperror( L"tcsetpgrp" );
|
||||
@@ -642,7 +679,7 @@ void exec( job_t *j )
|
||||
int exec_error=0;
|
||||
|
||||
|
||||
debug( 4, L"Exec job %ls with id %d", j->command, j->job_id );
|
||||
debug( 4, L"Exec job '%ls' with id %d", j->command, j->job_id );
|
||||
|
||||
if( j->first_process->type==INTERNAL_EXEC )
|
||||
{
|
||||
@@ -654,13 +691,21 @@ void exec( job_t *j )
|
||||
/*
|
||||
setup_child_process make sure signals are propelry set up
|
||||
*/
|
||||
setup_child_process( j );
|
||||
launch_process( j->first_process );
|
||||
/*
|
||||
launch_process _never_ returns...
|
||||
*/
|
||||
}
|
||||
|
||||
if( setup_child_process( j, 0 ) )
|
||||
{
|
||||
/*
|
||||
launch_process never returns
|
||||
*/
|
||||
launch_process( j->first_process );
|
||||
}
|
||||
else
|
||||
{
|
||||
j->constructed=1;
|
||||
j->first_process->completed=1;
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
pipe_read.fd=0;
|
||||
pipe_write.fd=1;
|
||||
@@ -761,22 +806,37 @@ void exec( job_t *j )
|
||||
wchar_t **arg;
|
||||
int i;
|
||||
string_buffer_t sb;
|
||||
|
||||
|
||||
const wchar_t * def = function_get_definition( p->argv[0] );
|
||||
// fwprintf( stderr, L"run function %ls\n", argv[0] );
|
||||
if( def == 0 )
|
||||
{
|
||||
debug( 0, L"Unknown function %ls", p->argv[0] );
|
||||
debug( 0, _( L"Unknown function '%ls'" ), p->argv[0] );
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
These two lines must be called before the new block is pushed
|
||||
*/
|
||||
int lineno = parser_get_lineno();
|
||||
wchar_t *file = parser_current_filename()?wcsdup(parser_current_filename()):0;
|
||||
|
||||
parser_push_block( FUNCTION_CALL );
|
||||
|
||||
al_init( ¤t_block->param2.function_vars );
|
||||
current_block->param1.function_name = wcsdup( p->argv[0] );
|
||||
current_block->param3.function_lineno = lineno;
|
||||
current_block->param4.function_filename = file;
|
||||
|
||||
if( builtin_count_args(p->argv)>1 )
|
||||
{
|
||||
sb_init( &sb );
|
||||
|
||||
for( i=1, arg=p->argv+1; *arg; i++, arg++ )
|
||||
{
|
||||
al_push( ¤t_block->param2.function_vars,
|
||||
escape(*arg, 1) );
|
||||
|
||||
if( i != 1 )
|
||||
sb_append( &sb, ARRAY_SEP_STR );
|
||||
sb_append( &sb, *arg );
|
||||
@@ -785,6 +845,11 @@ void exec( job_t *j )
|
||||
env_set( L"argv", (wchar_t *)sb.buff, ENV_LOCAL );
|
||||
sb_destroy( &sb );
|
||||
}
|
||||
else
|
||||
{
|
||||
env_set( L"argv", 0, ENV_LOCAL );
|
||||
}
|
||||
|
||||
parser_forbid_function( p->argv[0] );
|
||||
|
||||
if( p->next )
|
||||
@@ -874,7 +939,7 @@ void exec( job_t *j )
|
||||
{
|
||||
builtin_stdin=-1;
|
||||
debug( 1,
|
||||
L"Unknown input redirection type %d",
|
||||
_( L"Unknown input redirection type %d" ),
|
||||
in->io_mode);
|
||||
break;
|
||||
}
|
||||
@@ -969,13 +1034,14 @@ void exec( job_t *j )
|
||||
if( io_buffer->param2.out_buffer->used != 0 )
|
||||
{
|
||||
pid = fork();
|
||||
|
||||
if( pid == 0 )
|
||||
{
|
||||
/*
|
||||
This is the child process. Write out the contents of the pipeline.
|
||||
*/
|
||||
p->pid = getpid();
|
||||
setup_child_process( j );
|
||||
setup_child_process( j, p );
|
||||
write( io_buffer->fd,
|
||||
io_buffer->param2.out_buffer->buff,
|
||||
io_buffer->param2.out_buffer->used );
|
||||
@@ -1063,7 +1129,7 @@ void exec( job_t *j )
|
||||
This is the child process.
|
||||
*/
|
||||
p->pid = getpid();
|
||||
setup_child_process( j );
|
||||
setup_child_process( j, p );
|
||||
if( sb_out->used )
|
||||
fwprintf( stdout, L"%ls", sb_out->buff );
|
||||
if( sb_err->used )
|
||||
@@ -1105,7 +1171,7 @@ void exec( job_t *j )
|
||||
This is the child process.
|
||||
*/
|
||||
p->pid = getpid();
|
||||
setup_child_process( j );
|
||||
setup_child_process( j, p );
|
||||
launch_process( p );
|
||||
|
||||
/*
|
||||
@@ -1201,7 +1267,7 @@ int exec_subshell( const wchar_t *cmd,
|
||||
if( !cmd )
|
||||
{
|
||||
debug( 1,
|
||||
L"Sent null command to subshell. This is a fish bug. If it can be reproduced, please send a bug report to %s",
|
||||
_( L"Sent null command to subshell. This is a fish bug. If it can be reproduced, please send a bug report to %s." ),
|
||||
PACKAGE_BUGREPORT );
|
||||
return 0;
|
||||
}
|
||||
@@ -1247,7 +1313,14 @@ int exec_subshell( const wchar_t *cmd,
|
||||
wchar_t *el;
|
||||
*end=0;
|
||||
el = str2wcs( begin );
|
||||
al_push( l, el );
|
||||
if( !el )
|
||||
{
|
||||
debug( 0, _( L"Subshell '%ls' returned illegal string, discarded one entry" ), cmd );
|
||||
}
|
||||
else
|
||||
{
|
||||
al_push( l, el );
|
||||
}
|
||||
begin = end+1;
|
||||
break;
|
||||
}
|
||||
@@ -1257,5 +1330,6 @@ int exec_subshell( const wchar_t *cmd,
|
||||
}
|
||||
|
||||
io_buffer_destroy( io_buffer );
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
2
exec.h
2
exec.h
@@ -16,7 +16,7 @@
|
||||
/**
|
||||
pipe redirection error message
|
||||
*/
|
||||
#define PIPE_ERROR L"An error occurred while setting up pipe"
|
||||
#define PIPE_ERROR _(L"An error occurred while setting up pipe")
|
||||
|
||||
/**
|
||||
Initialize the exec library
|
||||
|
||||
109
expand.c
109
expand.c
@@ -38,39 +38,58 @@ parameter expansion.
|
||||
#include "exec.h"
|
||||
#include "tokenizer.h"
|
||||
#include "complete.h"
|
||||
#include "translate.h"
|
||||
|
||||
/**
|
||||
Description for child process
|
||||
*/
|
||||
#define COMPLETE_CHILD_PROCESS_DESC COMPLETE_SEP_STR L"Child process"
|
||||
#define COMPLETE_CHILD_PROCESS_DESC _( L"Child process")
|
||||
|
||||
/**
|
||||
Description for non-child process
|
||||
*/
|
||||
#define COMPLETE_PROCESS_DESC COMPLETE_SEP_STR L"Process"
|
||||
#define COMPLETE_PROCESS_DESC _( L"Process")
|
||||
|
||||
/**
|
||||
Description for long job
|
||||
*/
|
||||
#define COMPLETE_JOB_DESC COMPLETE_SEP_STR L"Job"
|
||||
#define COMPLETE_JOB_DESC _( L"Job")
|
||||
|
||||
/**
|
||||
Description for short job. The job command is concatenated
|
||||
*/
|
||||
#define COMPLETE_JOB_DESC_VAL COMPLETE_SEP_STR, L"Job: "
|
||||
#define COMPLETE_JOB_DESC_VAL _( L"Job: ")
|
||||
|
||||
/**
|
||||
Description for the shells own pid
|
||||
*/
|
||||
#define COMPLETE_SELF_DESC COMPLETE_SEP_STR L"Shell process"
|
||||
#define COMPLETE_SELF_DESC _( L"Shell process")
|
||||
|
||||
/**
|
||||
Description for the shells own pid
|
||||
*/
|
||||
#define COMPLETE_LAST_DESC COMPLETE_SEP_STR L"Last background job"
|
||||
#define COMPLETE_LAST_DESC _( L"Last background job")
|
||||
|
||||
/**
|
||||
Error issued on invalid variable name
|
||||
*/
|
||||
#define COMPLETE_VAR_DESC _( L"The '$' character begins a variable name. The character '%lc', which directly followed a '$', is not allowed as a part of a variable name, and variable names may not be zero characters long. To learn more about variable expansion in fish, type 'help expand-variable'.")
|
||||
|
||||
/**
|
||||
Error issued on invalid variable name
|
||||
*/
|
||||
#define COMPLETE_VAR_NULL_DESC _( L"The '$' begins a variable name. It was given at the end of an argument. Variable names may not be zero characters long. To learn more about variable expansion in fish, type 'help expand-variable'.")
|
||||
|
||||
/**
|
||||
Error issued on invalid variable name
|
||||
*/
|
||||
#define COMPLETE_VAR_BRACKET_DESC _( L"Did you mean {$VARIABLE}? The '$' character begins a variable name. A bracket, which directly followed a '$', is not allowed as a part of a variable name, and variable names may not be zero characters long. To learn more about variable expansion in fish, type 'help expand-variable'." )
|
||||
|
||||
/**
|
||||
Error issued on invalid variable name
|
||||
*/
|
||||
#define COMPLETE_VAR_PARAN_DESC _( L"Did you mean (COMMAND)? In fish, the '$' character is only used for accessing variables. To learn more about command substitution in fish, type 'help expand-command-substitution'.")
|
||||
|
||||
#define COMPLETE_VAR_DESC L"Variable name is zero characters long."
|
||||
#define COMPLETE_VAR2_DESC L"Variable name is zero characters long. Did you mean{$VARIABLE}? To learn about variable expansion in fish, type 'help expand-variable'."
|
||||
|
||||
/**
|
||||
String in process expansion denoting ourself
|
||||
@@ -393,8 +412,10 @@ static int find_process( const wchar_t *proc,
|
||||
{
|
||||
al_push( out,
|
||||
wcsdupcat2( jid+wcslen(proc),
|
||||
COMPLETE_JOB_DESC_VAL, j->command,
|
||||
0 ) );
|
||||
COMPLETE_SEP_STR,
|
||||
COMPLETE_JOB_DESC_VAL,
|
||||
j->command,
|
||||
(void *)0 ) );
|
||||
|
||||
|
||||
}
|
||||
@@ -435,8 +456,10 @@ static int find_process( const wchar_t *proc,
|
||||
{
|
||||
if( flags & ACCEPT_INCOMPLETE )
|
||||
{
|
||||
wchar_t *res = wcsdupcat( j->command + wcslen(proc),
|
||||
COMPLETE_JOB_DESC );
|
||||
wchar_t *res = wcsdupcat2( j->command + wcslen(proc),
|
||||
COMPLETE_SEP_STR,
|
||||
COMPLETE_JOB_DESC,
|
||||
(void *)0 );
|
||||
// fwprintf( stderr, L"Woot %ls\n", res );
|
||||
|
||||
al_push( out, res );
|
||||
@@ -474,8 +497,10 @@ static int find_process( const wchar_t *proc,
|
||||
{
|
||||
if( flags & ACCEPT_INCOMPLETE )
|
||||
{
|
||||
wchar_t *res = wcsdupcat( p->actual_cmd + wcslen(proc),
|
||||
COMPLETE_CHILD_PROCESS_DESC );
|
||||
wchar_t *res = wcsdupcat2( p->actual_cmd + wcslen(proc),
|
||||
COMPLETE_SEP_STR,
|
||||
COMPLETE_CHILD_PROCESS_DESC,
|
||||
(void *)0);
|
||||
al_push( out, res );
|
||||
}
|
||||
else
|
||||
@@ -584,8 +609,10 @@ static int find_process( const wchar_t *proc,
|
||||
{
|
||||
if( flags & ACCEPT_INCOMPLETE )
|
||||
{
|
||||
wchar_t *res = wcsdupcat( cmd + wcslen(proc),
|
||||
COMPLETE_PROCESS_DESC );
|
||||
wchar_t *res = wcsdupcat2( cmd + wcslen(proc),
|
||||
COMPLETE_SEP_STR,
|
||||
COMPLETE_PROCESS_DESC,
|
||||
(void *)0);
|
||||
if( res )
|
||||
al_push( out, res );
|
||||
}
|
||||
@@ -627,12 +654,12 @@ static int expand_pid( wchar_t *in,
|
||||
{
|
||||
if( wcsncmp( in+1, SELF_STR, wcslen(in+1) )==0 )
|
||||
{
|
||||
wchar_t *res = wcsdupcat( SELF_STR+wcslen(in+1), COMPLETE_SELF_DESC );
|
||||
wchar_t *res = wcsdupcat2( SELF_STR+wcslen(in+1), COMPLETE_SEP_STR, COMPLETE_SELF_DESC, (void *)0 );
|
||||
al_push( out, res );
|
||||
}
|
||||
else if( wcsncmp( in+1, LAST_STR, wcslen(in+1) )==0 )
|
||||
{
|
||||
wchar_t *res = wcsdupcat( LAST_STR+wcslen(in+1), COMPLETE_LAST_DESC );
|
||||
wchar_t *res = wcsdupcat2( LAST_STR+wcslen(in+1), COMPLETE_SEP_STR, COMPLETE_LAST_DESC, (void *)0 );
|
||||
al_push( out, res );
|
||||
}
|
||||
}
|
||||
@@ -735,20 +762,44 @@ static int expand_variables( wchar_t *in, array_list_t *out )
|
||||
|
||||
if( var_len == 0 )
|
||||
{
|
||||
if( in[stop_pos] == BRACKET_BEGIN )
|
||||
switch( in[stop_pos] )
|
||||
{
|
||||
|
||||
error( SYNTAX_ERROR,
|
||||
-1, COMPLETE_VAR_DESC
|
||||
COMPLETE_VAR2_DESC );
|
||||
}
|
||||
else
|
||||
{
|
||||
error( SYNTAX_ERROR,
|
||||
-1,
|
||||
COMPLETE_VAR_DESC);
|
||||
case BRACKET_BEGIN:
|
||||
{
|
||||
error( SYNTAX_ERROR,
|
||||
-1,
|
||||
COMPLETE_VAR_BRACKET_DESC );
|
||||
break;
|
||||
}
|
||||
|
||||
case INTERNAL_SEPARATOR:
|
||||
{
|
||||
error( SYNTAX_ERROR,
|
||||
-1,
|
||||
COMPLETE_VAR_PARAN_DESC );
|
||||
break;
|
||||
}
|
||||
|
||||
case 0:
|
||||
{
|
||||
error( SYNTAX_ERROR,
|
||||
-1,
|
||||
COMPLETE_VAR_NULL_DESC,
|
||||
in[stop_pos] );
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
error( SYNTAX_ERROR,
|
||||
-1,
|
||||
COMPLETE_VAR_DESC,
|
||||
in[stop_pos] );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
is_ok = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -51,14 +51,14 @@ fi
|
||||
%_mandir/man1/xsel.1x*
|
||||
%_mandir/man1/mimedb.1*
|
||||
%_mandir/man1/set_color.1*
|
||||
%_mandir/man1/tokenize.1*
|
||||
%_mandir/man1/count.1*
|
||||
%_mandir/man1/fishd.1*
|
||||
%_mandir/man1/fish_pager.1*
|
||||
%attr(0755,root,root) %_bindir/fish
|
||||
%attr(0755,root,root) %_bindir/fishd
|
||||
%attr(0755,root,root) %_bindir/fish_pager
|
||||
%attr(0755,root,root) %_bindir/xsel
|
||||
%attr(0755,root,root) %_bindir/set_color
|
||||
%attr(0755,root,root) %_bindir/tokenize
|
||||
%attr(0755,root,root) %_bindir/mimedb
|
||||
%attr(0755,root,root) %_bindir/count
|
||||
%config %_sysconfdir/fish
|
||||
@@ -67,6 +67,7 @@ fi
|
||||
%config %_sysconfdir/fish.d/fish_*.fish
|
||||
%dir %_sysconfdir/fish.d/completions
|
||||
%config %_sysconfdir/fish.d/completions/*.fish
|
||||
%_datadir/locale/*/LC_MESSAGES/fish.mo
|
||||
|
||||
%changelog
|
||||
* Tue Nov 29 2005 Axel Liljencrantz <axel@liljencrantz.se> 1.17.0-0
|
||||
|
||||
16
fish_pager.c
16
fish_pager.c
@@ -27,7 +27,12 @@
|
||||
#include <termio.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_TERM_H
|
||||
#include <term.h>
|
||||
#elif HAVE_NCURSES_TERM_H
|
||||
#include <ncurses/term.h>
|
||||
#endif
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
#include "util.h"
|
||||
@@ -422,9 +427,10 @@ static void printed_length( wchar_t *str,
|
||||
case L'^':
|
||||
case L'<':
|
||||
case L'>':
|
||||
case L'@':
|
||||
case L'(':
|
||||
case L')':
|
||||
case L'[':
|
||||
case L']':
|
||||
case L'{':
|
||||
case L'}':
|
||||
case L'?':
|
||||
@@ -432,6 +438,11 @@ static void printed_length( wchar_t *str,
|
||||
case L'|':
|
||||
case L';':
|
||||
case L':':
|
||||
case L'\'':
|
||||
case L'"':
|
||||
case L'%':
|
||||
case L'~':
|
||||
|
||||
if( has_description )
|
||||
desc_len++;
|
||||
else
|
||||
@@ -839,8 +850,7 @@ static void init()
|
||||
{
|
||||
struct sigaction act;
|
||||
program_name = L"fish_pager";
|
||||
fish_setlocale( LC_ALL, L"" );
|
||||
|
||||
wsetlocale( LC_ALL, L"" );
|
||||
|
||||
int out = dup( 1 );
|
||||
close(1);
|
||||
|
||||
122
fishd.c
122
fishd.c
@@ -2,11 +2,45 @@
|
||||
|
||||
The universal variable server. fishd is automatically started by fish
|
||||
if a fishd server isn't already running. fishd reads any saved
|
||||
variables from ~/.fishd, and takes care of commonication between fish
|
||||
variables from ~/.fishd, and takes care of communication between fish
|
||||
instances. When no clients are running, fishd will automatically shut
|
||||
down and save.
|
||||
|
||||
\subsection fishd-commands Commands
|
||||
|
||||
Fishd works by sending and receiving commands. Each command is ended
|
||||
with a newline. These are the commands supported by fishd:
|
||||
|
||||
<pre>set KEY:VALUE
|
||||
set_export KEY:VALUE
|
||||
</pre>
|
||||
|
||||
These commands update the value of a variable. The only difference
|
||||
between the two is that <tt>set_export</tt>-variables should be
|
||||
exported to children of the process using them. The variable value may
|
||||
be escaped using C-style backslash escapes. In fact, this is required
|
||||
for newline characters, which would otherwise be interpreted as end of
|
||||
command.
|
||||
|
||||
<pre>erase KEY
|
||||
</pre>
|
||||
|
||||
Erase the variable with the specified name.
|
||||
|
||||
<pre>barrier
|
||||
barrier_reply
|
||||
</pre>
|
||||
|
||||
A \c barrier command will result in a barrier_reply being added to
|
||||
the end of the senders queue of unsent messages. These commands are
|
||||
used to synchronize clients, since once the reply for a barrier
|
||||
message returns, the sender can know that any updates available at the
|
||||
time the original barrier request was sent have been received.
|
||||
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <wchar.h>
|
||||
@@ -19,6 +53,10 @@ down and save.
|
||||
#include <pwd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#ifdef HAVE_GETOPT_H
|
||||
#include <getopt.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#include <locale.h>
|
||||
#include <signal.h>
|
||||
@@ -35,6 +73,15 @@ down and save.
|
||||
#define UNIX_PATH_MAX 100
|
||||
#endif
|
||||
|
||||
/**
|
||||
Fallback if MSG_DONTWAIT isn't defined. That's actually prerry bad,
|
||||
and may lead to strange fishd behaviour, but at least it should
|
||||
work most of the time.
|
||||
*/
|
||||
#ifndef MSG_DONTWAIT
|
||||
#define MSG_DONTWAIT 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
Small greeting to show that fishd is running
|
||||
*/
|
||||
@@ -75,6 +122,11 @@ static int sock;
|
||||
*/
|
||||
static int quit=0;
|
||||
|
||||
/**
|
||||
Dynamically generated function, made from the documentation in doc_src.
|
||||
*/
|
||||
void print_help();
|
||||
|
||||
/**
|
||||
Constructs the fish socket filename
|
||||
*/
|
||||
@@ -174,8 +226,8 @@ static int get_socket()
|
||||
|
||||
local.sun_family = AF_UNIX;
|
||||
strcpy( local.sun_path, sock_name );
|
||||
len = strlen( local.sun_path ) + sizeof( local.sun_family );
|
||||
|
||||
len = sizeof(local);
|
||||
|
||||
debug(1, L"Connect to socket at %s", sock_name);
|
||||
|
||||
if( ( s = socket( AF_UNIX, SOCK_STREAM, 0 ) ) == -1 )
|
||||
@@ -396,11 +448,9 @@ static void save()
|
||||
*/
|
||||
static void init()
|
||||
{
|
||||
program_name=L"fishd";
|
||||
|
||||
sock = get_socket();
|
||||
daemonize();
|
||||
fish_setlocale( LC_ALL, L"" );
|
||||
env_universal_common_init( &broadcast );
|
||||
|
||||
load();
|
||||
@@ -419,8 +469,68 @@ int main( int argc, char ** argv )
|
||||
|
||||
fd_set read_fd, write_fd;
|
||||
|
||||
init();
|
||||
program_name=L"fishd";
|
||||
wsetlocale( LC_ALL, L"" );
|
||||
|
||||
/*
|
||||
Parse options
|
||||
*/
|
||||
while( 1 )
|
||||
{
|
||||
#ifdef HAVE_GETOPT_LONG
|
||||
static struct option
|
||||
long_options[] =
|
||||
{
|
||||
{
|
||||
"help", no_argument, 0, 'h'
|
||||
}
|
||||
,
|
||||
{
|
||||
"version", no_argument, 0, 'v'
|
||||
}
|
||||
,
|
||||
{
|
||||
0, 0, 0, 0
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
int opt_index = 0;
|
||||
|
||||
int opt = getopt_long( argc,
|
||||
argv,
|
||||
"hv",
|
||||
long_options,
|
||||
&opt_index );
|
||||
|
||||
#else
|
||||
int opt = getopt( argc,
|
||||
argv,
|
||||
"hv" );
|
||||
#endif
|
||||
if( opt == -1 )
|
||||
break;
|
||||
|
||||
switch( opt )
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
print_help();
|
||||
exit(0);
|
||||
|
||||
case 'v':
|
||||
debug( 0, L"%ls, version %s\n", program_name, PACKAGE_VERSION );
|
||||
exit( 0 );
|
||||
|
||||
case '?':
|
||||
return 1;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
init();
|
||||
while(1)
|
||||
{
|
||||
connection_t *c;
|
||||
|
||||
56
function.c
56
function.c
@@ -9,6 +9,7 @@
|
||||
#include <signal.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "wutil.h"
|
||||
#include "util.h"
|
||||
#include "function.h"
|
||||
#include "proc.h"
|
||||
@@ -16,6 +17,7 @@
|
||||
#include "common.h"
|
||||
#include "intern.h"
|
||||
#include "event.h"
|
||||
#include "reader.h"
|
||||
|
||||
|
||||
/**
|
||||
@@ -27,6 +29,8 @@ typedef struct
|
||||
wchar_t *cmd;
|
||||
/** Function description */
|
||||
wchar_t *desc;
|
||||
const wchar_t *definition_file;
|
||||
int definition_offset;
|
||||
int is_binding;
|
||||
}
|
||||
function_data_t;
|
||||
@@ -61,6 +65,19 @@ void function_destroy()
|
||||
hash_destroy( &function );
|
||||
}
|
||||
|
||||
static int count_lineno( const wchar_t *str, int len )
|
||||
{
|
||||
int res = 0;
|
||||
int i;
|
||||
for( i=0; i<len; i++ )
|
||||
{
|
||||
if( str[i] == L'\n' )
|
||||
res++;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
void function_add( const wchar_t *name,
|
||||
const wchar_t *val,
|
||||
const wchar_t *desc,
|
||||
@@ -68,16 +85,28 @@ void function_add( const wchar_t *name,
|
||||
int is_binding )
|
||||
{
|
||||
int i;
|
||||
wchar_t *cmd_end;
|
||||
|
||||
|
||||
if( function_exists( name ) )
|
||||
function_remove( name );
|
||||
|
||||
|
||||
|
||||
function_data_t *d = malloc( sizeof( function_data_t ) );
|
||||
d->definition_offset = count_lineno( parser_get_buffer(), current_block->tok_pos );
|
||||
d->cmd = wcsdup( val );
|
||||
cmd_end = d->cmd + wcslen(d->cmd)-1;
|
||||
while( (cmd_end>d->cmd) && wcschr( L"\n\r\t ", *cmd_end ) )
|
||||
{
|
||||
*cmd_end-- = 0;
|
||||
}
|
||||
|
||||
d->desc = desc?wcsdup( desc ):0;
|
||||
d->is_binding = is_binding;
|
||||
d->definition_file = reader_current_filename()?intern(reader_current_filename()):0;
|
||||
hash_put( &function, intern(name), d );
|
||||
|
||||
|
||||
for( i=0; i<al_get_count( events ); i++ )
|
||||
{
|
||||
event_add_handler( (event_t *)al_get( events, i ) );
|
||||
@@ -127,7 +156,7 @@ const wchar_t *function_get_desc( const wchar_t *argv )
|
||||
if( data == 0 )
|
||||
return 0;
|
||||
|
||||
return data->desc?data->desc:data->cmd;
|
||||
return data->desc;
|
||||
}
|
||||
|
||||
void function_set_desc( const wchar_t *name, const wchar_t *desc )
|
||||
@@ -163,3 +192,26 @@ void function_get_names( array_list_t *list, int get_hidden )
|
||||
|
||||
}
|
||||
|
||||
const wchar_t *function_get_definition_file( const wchar_t *argv )
|
||||
{
|
||||
function_data_t *data =
|
||||
(function_data_t *)hash_get( &function, argv );
|
||||
if( data == 0 )
|
||||
return 0;
|
||||
|
||||
return data->definition_file;
|
||||
}
|
||||
|
||||
|
||||
int function_get_definition_offset( const wchar_t *argv )
|
||||
{
|
||||
function_data_t *data =
|
||||
(function_data_t *)hash_get( &function, argv );
|
||||
if( data == 0 )
|
||||
return -1;
|
||||
|
||||
return data->definition_offset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -69,4 +69,8 @@ int function_exists( const wchar_t *name );
|
||||
void function_get_names( array_list_t *list,
|
||||
int get_hidden );
|
||||
|
||||
const wchar_t *function_get_definition_file( const wchar_t *name );
|
||||
|
||||
int function_get_definition_offset( const wchar_t *name );
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#apm
|
||||
complete -f -c apm -s V -l version -d "print version"
|
||||
complete -f -c apm -s v -l verbose -d "print APM info"
|
||||
complete -f -c apm -s m -l minutes -d "print time remaining"
|
||||
complete -f -c apm -s M -l monitor -d "monitor status info"
|
||||
complete -f -c apm -s S -l standby -d "request APM standby mode"
|
||||
complete -f -c apm -s s -l suspend -d "request APM suspend mode"
|
||||
complete -f -c apm -s d -l debug -d "APM status debuggin info"
|
||||
complete -f -c apm -s V -l version -d (_ "Display version and exit")
|
||||
complete -f -c apm -s v -l verbose -d (_ "Print APM info")
|
||||
complete -f -c apm -s m -l minutes -d (_ "Print time remaining")
|
||||
complete -f -c apm -s M -l monitor -d (_ "Monitor status info")
|
||||
complete -f -c apm -s S -l standby -d (_ "Request APM standby mode")
|
||||
complete -f -c apm -s s -l suspend -d (_ "Request APM suspend mode")
|
||||
complete -f -c apm -s d -l debug -d (_ "APM status debugging info")
|
||||
|
||||
@@ -6,16 +6,16 @@ function __fish_complete_apropos
|
||||
end
|
||||
end
|
||||
|
||||
complete -xc apropos -a '(__fish_complete_apropos)' -d "Whatis entry"
|
||||
complete -xc apropos -a '(__fish_complete_apropos)' -d (_ "whatis entry")
|
||||
|
||||
complete -c apropos -s h -l help -d "apropos command help"
|
||||
complete -f -c apropos -s d -l debug -d "print debugging info"
|
||||
complete -f -c apropos -s v -l verbose -d "print verbose warning"
|
||||
complete -f -c apropos -s r -l regex -d "keyword as regex"
|
||||
complete -f -c apropos -s w -l wildcard -d "keyword as wildwards"
|
||||
complete -f -c apropos -s e -l exact -d "keyword as exactly match"
|
||||
complete -x -c apropos -s m -l system -d "search for other system"
|
||||
complete -x -c apropos -s M -l manpath -a '(echo $MANPATH)' -d "specify man path"
|
||||
complete -x -c apropos -s C -l config-file -d "specify a conf file"
|
||||
complete -f -c apropos -s V -l version -d "Display version"
|
||||
complete -c apropos -s h -l help -d (_ "Display help and exit")
|
||||
complete -f -c apropos -s d -l debug -d (_ "Print debugging info")
|
||||
complete -f -c apropos -s v -l verbose -d (_ "Verbose mode")
|
||||
complete -f -c apropos -s r -l regex -d (_ "Keyword as regex")
|
||||
complete -f -c apropos -s w -l wildcard -d (_ "Keyword as wildwards")
|
||||
complete -f -c apropos -s e -l exact -d (_ "Keyword as exactly match")
|
||||
complete -x -c apropos -s m -l system -d (_ "Search for other system")
|
||||
complete -x -c apropos -s M -l manpath -a '(echo $MANPATH)' -d (_ "Specify man path")
|
||||
complete -x -c apropos -s C -l config-file -d (_ "Specify a configuration file")
|
||||
complete -f -c apropos -s V -l version -d (_ "Display version and exit")
|
||||
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
|
||||
#apt-build
|
||||
complete -c apt-build -l help -d "apt-build command help"
|
||||
complete -f -c apt-build -a update -d "update list of packages"
|
||||
complete -f -c apt-build -a upgrade -d "upgrade packages"
|
||||
complete -f -c apt-bulid -a world -d "rebuild your system"
|
||||
complete -x -c apt-build -a install -d "build and install a new pkg"
|
||||
complete -x -c apt-build -a source -d "download and extract a src"
|
||||
complete -x -c apt-build -a info -d "info on a pkg"
|
||||
complete -x -c apt-build -a remove -d "remove packages"
|
||||
complete -x -c apt-build -a clean-build -d "erase built pkgs"
|
||||
complete -x -c apt-build -a build-source -d "build src without install"
|
||||
complete -x -c apt-build -a clean-sources -d "clean src dirs"
|
||||
complete -x -c apt-build -a update-source -d "update src and rebuild them"
|
||||
complete -x -c apt-build -a update-repository -d "update the repository"
|
||||
complete -f -c apt-build -l nowrapper -d "do not use gcc wrapper"
|
||||
complete -f -c apt-build -l remove-builddep -d "remove build-dep"
|
||||
complete -f -c apt-build -l no-source -d "do not download source"
|
||||
complete -f -c apt-build -l build-dir -d "specify build-dir"
|
||||
complete -f -c apt-build -l rebuild -d "rebuild a package"
|
||||
complete -f -c apt-build -l reinstall -d "rebuild and install an installed pkg"
|
||||
complete -r -f -c apt-build -l build-command -d "use <command> to build"
|
||||
complete -r -c apt-build -l patch -d "apply <file> patch"
|
||||
complete -c apt-build -s p -l patch-strip -d "prefix to strip on patch"
|
||||
complete -c apt-build -s y -l yes -d "assume yes"
|
||||
complete -c apt-build -l purge -d "use purge instead of remove"
|
||||
complete -c apt-build -l noupdate -d "do not run update"
|
||||
complete -r -c apt-build -l source-list -d "specify sources.list file"
|
||||
complete -f -c apt-build -s v -l version -d "show version"
|
||||
complete -c apt-build -l help -d (_ "Display help and exit")
|
||||
complete -f -c apt-build -a update -d (_ "Update list of packages")
|
||||
complete -f -c apt-build -a upgrade -d (_ "Upgrade packages")
|
||||
complete -f -c apt-bulid -a world -d (_ "Rebuild your system")
|
||||
complete -x -c apt-build -a install -d (_ "Build and install a new package")
|
||||
complete -x -c apt-build -a source -d (_ "Download and extract a source")
|
||||
complete -x -c apt-build -a info -d (_ "Info on a package")
|
||||
complete -x -c apt-build -a remove -d (_ "Remove packages")
|
||||
complete -x -c apt-build -a clean-build -d (_ "Erase built packages")
|
||||
complete -x -c apt-build -a build-source -d (_ "Build source without install")
|
||||
complete -x -c apt-build -a clean-sources -d (_ "Clean source directories")
|
||||
complete -x -c apt-build -a update-source -d (_ "Update source and rebuild")
|
||||
complete -x -c apt-build -a update-repository -d (_ "Update the repository")
|
||||
complete -f -c apt-build -l nowrapper -d (_ "Do not use gcc wrapper")
|
||||
complete -f -c apt-build -l remove-builddep -d (_ "Remove build-dep")
|
||||
complete -f -c apt-build -l no-source -d (_ "Do not download source")
|
||||
complete -f -c apt-build -l build-dir -d (_ "Specify build-dir")
|
||||
complete -f -c apt-build -l rebuild -d (_ "Rebuild a package")
|
||||
complete -f -c apt-build -l reinstall -d (_ "Rebuild and install an installed package")
|
||||
complete -r -f -c apt-build -l build-command -d (_ "Use <command> to build")
|
||||
complete -r -c apt-build -l patch -d (_ "Apply <file> patch")
|
||||
complete -c apt-build -s p -l patch-strip -d (_ "Prefix to strip on patch")
|
||||
complete -c apt-build -s y -l yes -d (_ "Assume yes to all questions")
|
||||
complete -c apt-build -l purge -d (_ "Use purge instead of remove")
|
||||
complete -c apt-build -l noupdate -d (_ "Do not run update")
|
||||
complete -r -c apt-build -l source-list -d (_ "Specify sources.list file")
|
||||
complete -f -c apt-build -s v -l version -d (_ "Display version and exit")
|
||||
|
||||
@@ -1,33 +1,31 @@
|
||||
#apt-cache
|
||||
complete -c apt-cache -s h -l help -d "apt-cache command help"
|
||||
complete -c apt-cache -a add -d "add index files Debug only"
|
||||
complete -f -c apt-cache -a gencaches -d "build apt cache"
|
||||
complete -x -c apt-cache -a showpkg -d "show package info"
|
||||
complete -f -c apt-cache -a stats -d "show cache statistics"
|
||||
complete -x -c apt-cache -a showsrc -d "show source package"
|
||||
complete -f -c apt-cache -a dump -d "show packages in cache"
|
||||
complete -f -c apt-cache -a dumpavail -d "print available list"
|
||||
complete -f -c apt-cache -a unmet -d "list unmet dep in cache"
|
||||
complete -x -c apt-cache -a show -d "display package record"
|
||||
complete -x -c apt-cache -a search -d "search pkgname by REGEX"
|
||||
complete -c apt-cache -l full -a search -d "search full package name"
|
||||
complete -x -c apt-cache -l names-only -a search -d "search pkgname only"
|
||||
complete -x -c apt-cache -a depends -d "list dep for the package"
|
||||
complete -x -c apt-cache -a rdepends -d "list reverse dep for the package"
|
||||
complete -x -c apt-cache -a pkgnames -d "print package name by prefix"
|
||||
complete -x -c apt-cache -a dotty -d "generate dotty output for packages"
|
||||
complete -x -c apt-cache -a policy -d "debug preferences file"
|
||||
complete -x -c apt-cache -a madison -d "mimic madison"
|
||||
complete -r -c apt-cache -s p -l pkg-cache -d "select file to store pkg cache"
|
||||
complete -r -c apt-cache -s s -l src-cache -d "select file to store src cache"
|
||||
complete -f -c apt-cache -s q -l quiet -d "quiet output"
|
||||
complete -f -c apt-cache -s i -l important -d "print important deps"
|
||||
complete -f -c apt-cache -s a -l all-versions -d "print full records"
|
||||
complete -f -c apt-cache -s g -l generate -d "auto-gen package cache"
|
||||
complete -f -c apt-cache -l all-names -d "print all names"
|
||||
complete -f -c apt-cache -l recurse -d "dep and rdep recursive"
|
||||
complete -f -c apt-cache -l installed -d "limit to installed"
|
||||
complete -f -c apt-cache -s v -l version -d "show version"
|
||||
complete -r -c apt-cache -s c -l config-file -d "specify config file"
|
||||
complete -x -c apt-cache -s o -l option -d "specify options"
|
||||
complete -c apt-cache -s h -l help -d (_ "Display help and exit")
|
||||
complete -f -c apt-cache -a gencaches -d (_ "Build apt cache")
|
||||
complete -x -c apt-cache -a showpkg -d (_ "Show package info")
|
||||
complete -f -c apt-cache -a stats -d (_ "Show cache statistics")
|
||||
complete -x -c apt-cache -a showsrc -d (_ "Show source package")
|
||||
complete -f -c apt-cache -a dump -d (_ "Show packages in cache")
|
||||
complete -f -c apt-cache -a dumpavail -d (_ "Print available list")
|
||||
complete -f -c apt-cache -a unmet -d (_ "List unmet dependencies in cache")
|
||||
complete -x -c apt-cache -a show -d (_ "Display package record")
|
||||
complete -x -c apt-cache -a search -d (_ "Search packagename by REGEX")
|
||||
complete -c apt-cache -l full -a search -d (_ "Search full package name")
|
||||
complete -x -c apt-cache -l names-only -a search -d (_ "Search packagename only")
|
||||
complete -x -c apt-cache -a depends -d (_ "List dependencies for the package")
|
||||
complete -x -c apt-cache -a rdepends -d (_ "List reverse dependencies for the package")
|
||||
complete -x -c apt-cache -a pkgnames -d (_ "Print package name by prefix")
|
||||
complete -x -c apt-cache -a dotty -d (_ "Generate dotty output for packages")
|
||||
complete -x -c apt-cache -a policy -d (_ "Debug preferences file")
|
||||
complete -r -c apt-cache -s p -l pkg-cache -d (_ "Select file to store package cache")
|
||||
complete -r -c apt-cache -s s -l src-cache -d (_ "Select file to store source cache")
|
||||
complete -f -c apt-cache -s q -l quiet -d (_ "Quiet mode")
|
||||
complete -f -c apt-cache -s i -l important -d (_ "Print important dependencies")
|
||||
complete -f -c apt-cache -s a -l all-versions -d (_ "Print full records")
|
||||
complete -f -c apt-cache -s g -l generate -d (_ "Auto-gen package cache")
|
||||
complete -f -c apt-cache -l all-names -d (_ "Print all names")
|
||||
complete -f -c apt-cache -l recurse -d (_ "Dep and rdep recursive")
|
||||
complete -f -c apt-cache -l installed -d (_ "Limit to installed")
|
||||
complete -f -c apt-cache -s v -l version -d (_ "Display version and exit")
|
||||
complete -r -c apt-cache -s c -l config-file -d (_ "Specify config file")
|
||||
complete -x -c apt-cache -s o -l option -d (_ "Specify options")
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#apt-cdrom
|
||||
complete -c apt-cdrom -s h -l help -d "apt-cdrom command help"
|
||||
complete -r -c apt-cdrom -a add -d "add new disc to source list"
|
||||
complete -x -c apt-cdrom -a ident -d "report identity of disc"
|
||||
complete -r -c apt-cdrom -s d -l cdrom -d "mount point"
|
||||
complete -f -c apt-cdrom -s r -l rename -d "rename a disc"
|
||||
complete -f -c apt-cdrom -s m -l no-mount -d "no mounting"
|
||||
complete -f -c apt-cdrom -s f -l fast -d "fast copy"
|
||||
complete -f -c apt-cdrom -s a -l thorough -d "thorough pkg scan"
|
||||
complete -f -c apt-cdrom -s n -l no-act -d "no changes"
|
||||
complete -f -c apt-cdrom -s v -l version -d "show version"
|
||||
complete -r -c apt-cdrom -s c -l config-file -d "specify config file"
|
||||
complete -x -c apt-cdrom -s o -l option -d "specify options"
|
||||
complete -c apt-cdrom -s h -l help -d (_ "Display help and exit")
|
||||
complete -r -c apt-cdrom -a add -d (_ "Add new disc to source list")
|
||||
complete -x -c apt-cdrom -a ident -d (_ "Report identity of disc")
|
||||
complete -r -c apt-cdrom -s d -l cdrom -d (_ "Mount point")
|
||||
complete -f -c apt-cdrom -s r -l rename -d (_ "Rename a disc")
|
||||
complete -f -c apt-cdrom -s m -l no-mount -d (_ "No mounting")
|
||||
complete -f -c apt-cdrom -s f -l fast -d (_ "Fast copy")
|
||||
complete -f -c apt-cdrom -s a -l thorough -d (_ "Thorough package scan")
|
||||
complete -f -c apt-cdrom -s n -l no-act -d (_ "No changes")
|
||||
complete -f -c apt-cdrom -s v -l version -d (_ "Display version and exit")
|
||||
complete -r -c apt-cdrom -s c -l config-file -d (_ "Specify config file")
|
||||
complete -x -c apt-cdrom -s o -l option -d (_ "Specify options")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#apt-config
|
||||
complete -c apt-config -s h -l help -d "apt-config command help"
|
||||
complete -c apt-config -a shell -d "access config file from shell"
|
||||
complete -f -c apt-config -a dump -d "dump contents of config file"
|
||||
complete -f -c apt-config -s v -l version -d "show version"
|
||||
complete -r -c apt-config -s c -l config-file -d "specify config file"
|
||||
complete -x -c apt-config -s o -l option -d "specify options"
|
||||
complete -c apt-config -s h -l help -d (_ "Display help and exit")
|
||||
complete -c apt-config -a shell -d (_ "Access config file from shell")
|
||||
complete -f -c apt-config -a dump -d (_ "Dump contents of config file")
|
||||
complete -f -c apt-config -s v -l version -d (_ "Display version and exit")
|
||||
complete -r -c apt-config -s c -l config-file -d (_ "Specify config file")
|
||||
complete -x -c apt-config -s o -l option -d (_ "Specify options")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
#apt-extracttemplates
|
||||
complete -c apt-extracttemplates -s h -l help -d "apt-extracttemplates command help"
|
||||
complete -r -c apt-extracttemplates -s t -d "set temp dir"
|
||||
complete -r -c apt-extracttemplates -s c -d "specifiy config file"
|
||||
complete -r -c apt-extracttemplates -s o -d "specify options"
|
||||
complete -c apt-extracttemplates -s h -l help -d (_ "Display help and exit")
|
||||
complete -r -c apt-extracttemplates -s t -d (_ "Set temp dir")
|
||||
complete -r -c apt-extracttemplates -s c -d (_ "Specifiy config file")
|
||||
complete -r -c apt-extracttemplates -s o -d (_ "Specify options")
|
||||
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
#apt-file
|
||||
complete -c apt-file -s h -l help -d "apt-file command help"
|
||||
complete -x -c apt-file -a update -d "resync pkg contents from source"
|
||||
complete -r -c apt-file -a search -d "search pkg containing pattern"
|
||||
complete -r -c apt-file -a list -d "list contents of a pkg matching pattern"
|
||||
complete -x -c apt-file -a purge -d "remove all gz files from cache"
|
||||
complete -r -c apt-file -s c -l cache -d "set cache dir"
|
||||
complete -f -c apt-file -s v -l verbose -d "run in verbose"
|
||||
complete -c apt-file -s d -l cdrom-mount -d "use cdrom-mount-point"
|
||||
complete -f -c apt-file -s i -l ignore-case -d "do not expand pattern"
|
||||
complete -f -c apt-file -s x -l regexp -d "pattern is regexp"
|
||||
complete -f -c apt-file -s V -l version -d "show version"
|
||||
complete -f -c apt-file -s a -l architecture -d "set arch"
|
||||
complete -r -c apt-file -s s -l sources-list -a "(ls /etc/apt)" -d "set sources.list file"
|
||||
complete -f -c apt-file -s l -l package-only -d "only display pkg name"
|
||||
complete -f -c apt-file -s F -l fixed-string -d "do not expand pattern"
|
||||
complete -f -c apt-file -s y -l dummy -d "run in dummy mode"
|
||||
complete -c apt-file -s h -l help -d (_ "Display help and exit")
|
||||
complete -x -c apt-file -a update -d (_ "Resync package contents from source")
|
||||
complete -r -c apt-file -a search -d (_ "Search package containing pattern")
|
||||
complete -r -c apt-file -a list -d (_ "List contents of a package matching pattern")
|
||||
complete -x -c apt-file -a purge -d (_ "Remove all gz files from cache")
|
||||
complete -r -c apt-file -s c -l cache -d (_ "Set cache dir")
|
||||
complete -f -c apt-file -s v -l verbose -d (_ "Verbose mode")
|
||||
complete -c apt-file -s d -l cdrom-mount -d (_ "Use cdrom-mount-point")
|
||||
complete -f -c apt-file -s i -l ignore-case -d (_ "Do not expand pattern")
|
||||
complete -f -c apt-file -s x -l regexp -d (_ "Pattern is regexp")
|
||||
complete -f -c apt-file -s V -l version -d (_ "Display version and exit")
|
||||
complete -f -c apt-file -s a -l architecture -d (_ "Set arch")
|
||||
complete -r -c apt-file -s s -l sources-list -a "(ls /etc/apt)" -d (_ "Set sources.list file")
|
||||
complete -f -c apt-file -s l -l package-only -d (_ "Only display package name")
|
||||
complete -f -c apt-file -s F -l fixed-string -d (_ "Do not expand pattern")
|
||||
complete -f -c apt-file -s y -l dummy -d (_ "Run in dummy mode")
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
#apt-ftparchive
|
||||
complete -c apt-ftparchive -s h -l help -d "apt-ftparchive command help"
|
||||
complete -f -c apt-ftparchive -a packages -d "generate pkg from source"
|
||||
complete -f -c apt-ftparchive -a sources -d "generate source index file"
|
||||
complete -f -c apt-ftparchive -a contents -d "generate contents file"
|
||||
complete -f -c apt-ftparchive -a release -d "generate release file"
|
||||
complete -f -c apt-ftparchive -a clean -d "remove records"
|
||||
complete -f -c apt-ftparchive -l md5 -d "generate MD5 sums"
|
||||
complete -f -c apt-ftparchive -s d -l db -d "use a binary db"
|
||||
complete -f -c apt-ftparchive -s q -l quiet -d "quiet mode"
|
||||
complete -f -c apt-ftparchive -l delink -d "perform delinking"
|
||||
complete -f -c apt-ftparchive -l contents -d "perform contents generation"
|
||||
complete -c apt-ftparchive -s s -l source-override -d "use source override"
|
||||
complete -f -c apt-ftparchive -l readonly -d "make caching db readonly"
|
||||
complete -f -c apt-ftparchive -s v -l version -d "show version"
|
||||
complete -r -c apt-ftparchive -s c -l config-file -d "use config file"
|
||||
complete -r -c apt-ftparchive -s o -l option -d "set config options"
|
||||
complete -c apt-ftparchive -s h -l help -d (_ "Display help and exit")
|
||||
complete -f -c apt-ftparchive -a packages -d (_ "Generate package from source")
|
||||
complete -f -c apt-ftparchive -a sources -d (_ "Generate source index file")
|
||||
complete -f -c apt-ftparchive -a contents -d (_ "Generate contents file")
|
||||
complete -f -c apt-ftparchive -a release -d (_ "Generate release file")
|
||||
complete -f -c apt-ftparchive -a clean -d (_ "Remove records")
|
||||
complete -f -c apt-ftparchive -l md5 -d (_ "Generate MD5 sums")
|
||||
complete -f -c apt-ftparchive -s d -l db -d (_ "Use a binary db")
|
||||
complete -f -c apt-ftparchive -s q -l quiet -d (_ "Quiet mode")
|
||||
complete -f -c apt-ftparchive -l delink -d (_ "Perform delinking")
|
||||
complete -f -c apt-ftparchive -l contents -d (_ "Perform contents generation")
|
||||
complete -c apt-ftparchive -s s -l source-override -d (_ "Use source override")
|
||||
complete -f -c apt-ftparchive -l readonly -d (_ "Make caching db readonly")
|
||||
complete -f -c apt-ftparchive -s v -l version -d (_ "Display version and exit")
|
||||
complete -r -c apt-ftparchive -s c -l config-file -d (_ "Use config file")
|
||||
complete -r -c apt-ftparchive -s o -l option -d (_ "Set config options")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#completion for apt-get
|
||||
|
||||
function __fish_apt_no_subcommand -d 'test if apt has yet to be given the subcommand'
|
||||
function __fish_apt_no_subcommand -d (_ 'Test if apt has yet to be given the subcommand')
|
||||
for i in (commandline -opc)
|
||||
if contains -- $i update upgrade dselect-upgrade dist-upgrade install remove source build-dep check clean autoclean
|
||||
return 1
|
||||
@@ -9,7 +9,7 @@ function __fish_apt_no_subcommand -d 'test if apt has yet to be given the subcom
|
||||
return 0
|
||||
end
|
||||
|
||||
function __fish_apt_use_package -d 'Test if apt command should have packages as potential completion'
|
||||
function __fish_apt_use_package -d (_ 'Test if apt command should have packages as potential completion')
|
||||
for i in (commandline -opc)
|
||||
if contains -- $i contains install remove build-dep
|
||||
return 0
|
||||
@@ -18,47 +18,47 @@ function __fish_apt_use_package -d 'Test if apt command should have packages as
|
||||
return 1
|
||||
end
|
||||
|
||||
complete -c apt-get -n '__fish_apt_use_package' -a '(__fish_print_packages)' -d 'Package'
|
||||
complete -c apt-get -n '__fish_apt_use_package' -a '(__fish_print_packages)' -d (_ 'Package')
|
||||
|
||||
complete -c apt-get -s h -l help -d 'apt-get command help'
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'update' -d 'update sources'
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'upgrade' -d 'upgrade or install newest packages'
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'dselect-upgrade' -d 'use with dselect front-end'
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'dist-upgrade' -d 'distro upgrade'
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'install' -d 'install one or more packages'
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'remove' -d 'remove one or more packages'
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'source' -d 'fetch source packages'
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'build-dep' -d 'install/remove packages for dependencies'
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'check' -d 'update cache and check dep'
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'clean' -d 'clean local caches and packages'
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'autoclean' -d 'clean packages no longer be downloaded'
|
||||
complete -c apt-get -s d -l download-only -d 'Download Only'
|
||||
complete -c apt-get -s f -l fix-broken -d 'correct broken deps'
|
||||
complete -c apt-get -s m -l fix-missing -d 'ignore missing packages'
|
||||
complete -c apt-get -l no-download -d 'Disable downloading packages'
|
||||
complete -c apt-get -s q -l quiet -d 'quiet output'
|
||||
complete -c apt-get -s s -l simulate -d 'perform a siulation'
|
||||
complete -c apt-get -s y -l assume-yes -d 'automatic yes to prompts'
|
||||
complete -c apt-get -s u -l show-upgraded -d 'show upgraded packages'
|
||||
complete -c apt-get -s V -l verbose-versions -d 'show full versions for packages'
|
||||
complete -c apt-get -s b -l compile -d 'compile source packages'
|
||||
complete -c apt-get -s b -l build -d 'compile source packages'
|
||||
complete -c apt-get -l ignore-hold -d 'ignore package Holds'
|
||||
complete -c apt-get -l no-upgrade -d 'Do not upgrade packages'
|
||||
complete -c apt-get -l force-yes -d 'Force yes'
|
||||
complete -c apt-get -l print-uris -d 'print the URIs'
|
||||
complete -c apt-get -l purge -d 'use purge instead of remove'
|
||||
complete -c apt-get -l reinstall -d 'reinstall packages'
|
||||
complete -c apt-get -l list-cleanup -d 'erase obsolete files'
|
||||
complete -c apt-get -s t -l target-release -d 'control default input to the policy engine'
|
||||
complete -c apt-get -l trivial-only -d 'only perform operations that are trivial'
|
||||
complete -c apt-get -l no-remove -d 'abort if any packages are to be removed'
|
||||
complete -c apt-get -l only-source -d 'only accept source packages'
|
||||
complete -c apt-get -l diff-only -d 'download only diff file'
|
||||
complete -c apt-get -l tar-only -d 'download only tar file'
|
||||
complete -c apt-get -l arch-only -d 'only process arch-dep build-deps'
|
||||
complete -c apt-get -l allow-unauthenticated -d 'ignore non-authenticated packages'
|
||||
complete -c apt-get -s v -l version -d 'show program version'
|
||||
complete -r -c apt-get -s c -l config-file -d 'specify a config file'
|
||||
complete -r -c apt-get -s o -l option -d 'set a config option'
|
||||
complete -c apt-get -s h -l help -d (_ 'Display help and exit')
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'update' -d (_ 'Update sources')
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'upgrade' -d (_ 'Upgrade or install newest packages')
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'dselect-upgrade' -d (_ 'Use with dselect front-end')
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'dist-upgrade' -d (_ 'Distro upgrade')
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'install' -d (_ 'Install one or more packages')
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'remove' -d (_ 'Remove one or more packages')
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'source' -d (_ 'Fetch source packages')
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'build-dep' -d (_ 'Install/remove packages for dependencies')
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'check' -d (_ 'Update cache and check dependencies')
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'clean' -d (_ 'Clean local caches and packages')
|
||||
complete -f -n '__fish_apt_no_subcommand' -c apt-get -a 'autoclean' -d (_ 'Clean packages no longer be downloaded')
|
||||
complete -c apt-get -s d -l download-only -d (_ 'Download Only')
|
||||
complete -c apt-get -s f -l fix-broken -d (_ 'Correct broken dependencies')
|
||||
complete -c apt-get -s m -l fix-missing -d (_ 'Ignore missing packages')
|
||||
complete -c apt-get -l no-download -d (_ 'Disable downloading packages')
|
||||
complete -c apt-get -s q -l quiet -d (_ 'Quiet mode')
|
||||
complete -c apt-get -s s -l simulate -d (_ 'Perform a simulation')
|
||||
complete -c apt-get -s y -l assume-yes -d (_ 'Automatic yes to prompts')
|
||||
complete -c apt-get -s u -l show-upgraded -d (_ 'Show upgraded packages')
|
||||
complete -c apt-get -s V -l verbose-versions -d (_ 'Show full versions for packages')
|
||||
complete -c apt-get -s b -l compile -d (_ 'Compile source packages')
|
||||
complete -c apt-get -s b -l build -d (_ 'Compile source packages')
|
||||
complete -c apt-get -l ignore-hold -d (_ 'Ignore package Holds')
|
||||
complete -c apt-get -l no-upgrade -d (_ "Do not upgrade packages")
|
||||
complete -c apt-get -l force-yes -d (_ 'Force yes')
|
||||
complete -c apt-get -l print-uris -d (_ 'Print the URIs')
|
||||
complete -c apt-get -l purge -d (_ 'Use purge instead of remove')
|
||||
complete -c apt-get -l reinstall -d (_ 'Reinstall packages')
|
||||
complete -c apt-get -l list-cleanup -d (_ 'Erase obsolete files')
|
||||
complete -c apt-get -s t -l target-release -d (_ 'Control default input to the policy engine')
|
||||
complete -c apt-get -l trivial-only -d (_ 'Only perform operations that are trivial')
|
||||
complete -c apt-get -l no-remove -d (_ 'Abort if any packages are to be removed')
|
||||
complete -c apt-get -l only-source -d (_ 'Only accept source packages')
|
||||
complete -c apt-get -l diff-only -d (_ 'Download only diff file')
|
||||
complete -c apt-get -l tar-only -d (_ 'Download only tar file')
|
||||
complete -c apt-get -l arch-only -d (_ 'Only process arch-dependant build-dependencies')
|
||||
complete -c apt-get -l allow-unauthenticated -d (_ 'Ignore non-authenticated packages')
|
||||
complete -c apt-get -s v -l version -d (_ 'Display version and exit')
|
||||
complete -r -c apt-get -s c -l config-file -d (_ 'Specify a config file')
|
||||
complete -r -c apt-get -s o -l option -d (_ 'Set a config option')
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#apt-key
|
||||
complete -r -c apt-key -a add -d "add a new key"
|
||||
complete -f -c apt-key -a del -d "remove a key"
|
||||
complete -f -c apt-key -a list -d "list trusted keys"
|
||||
complete -r -c apt-key -a add -d (_ "Add a new key")
|
||||
complete -f -c apt-key -a del -d (_ "Remove a key")
|
||||
complete -f -c apt-key -a list -d (_ "List trusted keys")
|
||||
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
#apt-listbugs
|
||||
complete -c apt-listbugs -s h -l help -d "apt-listbugs command help"
|
||||
complete -f -c apt-listbugs -s s -l severity -a "critical grave" -d "set severity"
|
||||
complete -f -c apt-listbugs -s T -l tag -d "Targs you want to see"
|
||||
complete -f -c apt-listbugs -s S -l stats -d "outstanding 'pending upload' resolved done open" -d "status you want to see"
|
||||
complete -f -c apt-listbugs -s l -l showless -d "ignore bugs in your system"
|
||||
complete -f -c apt-listbugs -s g -l showgreater -d "ignore newer bugs than upgrade pkgs"
|
||||
complete -f -c apt-listbugs -s D -l show-downgrade -d "bugs for downgrade pkgs"
|
||||
complete -f -c apt-listbugs -s H -l hostname -a "osdn.debian.or.jp" -d "Bug Tracking system"
|
||||
complete -f -c apt-listbugs -s p -l port -d "specify port for web interface"
|
||||
complete -f -c apt-listbugs -s R -l release-critical -d "use daily bug report"
|
||||
complete -f -c apt-listbugs -s I -l index -d "use the raw index.db"
|
||||
complete -f -c apt-listbugs -s X -l indexdir -d "specify index dir"
|
||||
complete -f -c apt-listbugs -s P -l pin-priority -d "specify Pin-Priority value"
|
||||
complete -f -c apt-listbugs -l title -d "specify the title of rss"
|
||||
complete -f -c apt-listbugs -s f -l force-download -d "retrieve fresh bugs"
|
||||
complete -f -c apt-listbugs -s q -l quiet -d "do not display progress bar"
|
||||
complete -f -c apt-listbugs -s c -l cache-dir -a "/var/cache/apt-listbugs/" -d "specify local cache dir"
|
||||
complete -f -c apt-listbugs -s t -l timer -d "specify the expire cache timer"
|
||||
complete -c apt-listbugs -s C -l aptconf -d "specify apt config file"
|
||||
complete -f -c apt-listbugs -s y -l force-yes -d "assume all yes"
|
||||
complete -f -c apt-listbugs -s n -l force-no -d "assume all no"
|
||||
complete -c apt-listbugs -a list -d "list bugs from pkgs"
|
||||
complete -c apt-listbugs -a rss -d "list bugs in rss format"
|
||||
complete -c apt-listbugs -s h -l help -d (_ "Display help and exit")
|
||||
complete -f -c apt-listbugs -s s -l severity -a "critical grave" -d (_ "Set severity")
|
||||
complete -f -c apt-listbugs -s T -l tag -d (_ "Tags you want to see")
|
||||
complete -f -c apt-listbugs -s S -l stats -a "outstanding 'pending upload' resolved done open" -d (_ "Bug-status you want to see")
|
||||
complete -f -c apt-listbugs -s l -l showless -d (_ "Ignore bugs in your system")
|
||||
complete -f -c apt-listbugs -s g -l showgreater -d (_ "Ignore newer bugs than upgrade packages")
|
||||
complete -f -c apt-listbugs -s D -l show-downgrade -d (_ "Bugs for downgrade packages")
|
||||
complete -f -c apt-listbugs -s H -l hostname -a "osdn.debian.or.jp" -d (_ "Bug Tracking system")
|
||||
complete -f -c apt-listbugs -s p -l port -d (_ "Specify port for web interface")
|
||||
complete -f -c apt-listbugs -s R -l release-critical -d (_ "Use daily bug report")
|
||||
complete -f -c apt-listbugs -s I -l index -d (_ "Use the raw index.db")
|
||||
complete -f -c apt-listbugs -s X -l indexdir -d (_ "Specify index dir")
|
||||
complete -f -c apt-listbugs -s P -l pin-priority -d (_ "Specify Pin-Priority value")
|
||||
complete -f -c apt-listbugs -l title -d (_ "Specify the title of rss")
|
||||
complete -f -c apt-listbugs -s f -l force-download -d (_ "Retrieve fresh bugs")
|
||||
complete -f -c apt-listbugs -s q -l quiet -d (_ "Do not display progress bar")
|
||||
complete -f -c apt-listbugs -s c -l cache-dir -a "/var/cache/apt-listbugs/" -d (_ "Specify local cache dir")
|
||||
complete -f -c apt-listbugs -s t -l timer -d (_ "Specify the expire cache timer")
|
||||
complete -c apt-listbugs -s C -l aptconf -d (_ "Specify apt config file")
|
||||
complete -f -c apt-listbugs -s y -l force-yes -d (_ "Assume yes to all questions")
|
||||
complete -f -c apt-listbugs -s n -l force-no -d (_ "Assume no to all questions")
|
||||
complete -c apt-listbugs -a list -d (_ "List bugs from packages")
|
||||
complete -c apt-listbugs -a rss -d (_ "List bugs in rss format")
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#apt-listchanges
|
||||
complete -c apt-listchanges -l help -d "apt-listchanges command help"
|
||||
complete -c apt-listchanges -l apt -d "read filenames from pipe"
|
||||
complete -f -c apt-listchanges -s v -l verbose -d "verbose info"
|
||||
complete -f -c apt-listchanges -s f -l frontend -a "pager browser xterm-pager xterm-browser text mail none" -d "select fronend interface"
|
||||
complete -r -f -c apt-listchanges -l email-address -d "specify email address"
|
||||
complete -f -c apt-listchanges -s c -l confirm -d "ask confirmation"
|
||||
complete -f -c apt-listchanges -s a -l all -d "display all changelogs"
|
||||
complete -r -c apt-listchanges -l save_seen -d "avoid changelogs from db in named file"
|
||||
complete -r -f -c apt-listchanges -l which -a "news changelogs both" -d "select display"
|
||||
complete -f -c apt-listchanges -s h -l headers -d "insert header"
|
||||
complete -f -c apt-listchanges -l debug -d "display debug info"
|
||||
complete -r -c apt-listchanges -l profile -d "select an option profile"
|
||||
complete -c apt-listchanges -l help -d (_ "Display help and exit")
|
||||
complete -c apt-listchanges -l apt -d (_ "Read filenames from pipe")
|
||||
complete -f -c apt-listchanges -s v -l verbose -d (_ "Verbose mode")
|
||||
complete -f -c apt-listchanges -s f -l frontend -a "pager browser xterm-pager xterm-browser text mail none" -d (_ "Select fronend interface")
|
||||
complete -r -f -c apt-listchanges -l email-address -d (_ "Specify email address")
|
||||
complete -f -c apt-listchanges -s c -l confirm -d (_ "Ask confirmation")
|
||||
complete -f -c apt-listchanges -s a -l all -d (_ "Display all changelogs")
|
||||
complete -r -c apt-listchanges -l save_seen -d (_ "Avoid changelogs from db in named file")
|
||||
complete -r -f -c apt-listchanges -l which -a "news changelogs both" -d (_ "Select display")
|
||||
complete -f -c apt-listchanges -s h -l headers -d (_ "Insert header")
|
||||
complete -f -c apt-listchanges -l debug -d (_ "Display debug info")
|
||||
complete -r -c apt-listchanges -l profile -d (_ "Select an option profile")
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
#apt-move
|
||||
complete -c apt-move -a get -d "generate master file"
|
||||
complete -c apt-move -a getlocal -d "alias of get"
|
||||
complete -f -c apt-move -a move -d "move pkgs to local tree"
|
||||
complete -f -c apt-move -a delete -d "delete obsolete pkg files"
|
||||
complete -f -c apt-move -a packages -d "build new local files"
|
||||
complete -f -c apt-move -a fsck -d "rebuild index files"
|
||||
complete -f -c apt-move -a update -d "move pkgs from cache to local mirror"
|
||||
complete -f -c apt-move -a local -d "alias to move delete packages"
|
||||
complete -f -c apt-move -a localupdate -d "alias for update"
|
||||
complete -f -c apt-move -a mirror -d "download pkg missing from mirror"
|
||||
complete -f -c apt-move -a sync -d "sync pkgs installed"
|
||||
complete -c apt-move -a get -d (_ "Generate master file")
|
||||
complete -c apt-move -a getlocal -d (_ "Alias for 'get'")
|
||||
complete -f -c apt-move -a move -d (_ "Move packages to local tree")
|
||||
complete -f -c apt-move -a delete -d (_ "Delete obsolete package files")
|
||||
complete -f -c apt-move -a packages -d (_ "Build new local files")
|
||||
complete -f -c apt-move -a fsck -d (_ "Rebuild index files")
|
||||
complete -f -c apt-move -a update -d (_ "Move packages from cache to local mirror")
|
||||
complete -f -c apt-move -a local -d (_ "Alias for 'move delete packages'")
|
||||
complete -f -c apt-move -a localupdate -d (_ "Alias for 'update'")
|
||||
complete -f -c apt-move -a mirror -d (_ "Download package missing from mirror")
|
||||
complete -f -c apt-move -a sync -d (_ "Sync packages installed")
|
||||
complete -f -c apt-move -a exclude -d 'test $LOCALDIR/.exclude file'
|
||||
complete -c apt-move -a movefile -d "move file from CLI"
|
||||
complete -f -c apt-move -a listbin -d "mirror|sync|repo"
|
||||
complete -f -c apt-move -a mirrorbin -d "fetch pkg from STDIN"
|
||||
complete -f -c apt-move -a mirrorsrc -d "fetch src pkg from STDIN"
|
||||
complete -f -c apt-move -s a -d "process all pkgs"
|
||||
complete -c apt-move -s c -d "use specific conffile"
|
||||
complete -f -c apt-move -s d -d "use specific dist"
|
||||
complete -f -c apt-move -s f -d "force deletion"
|
||||
complete -f -c apt-move -s q -d "suppresses normal output"
|
||||
complete -f -c apt-move -s t -d "test run"
|
||||
complete -c apt-move -a movefile -d (_ "Move file specified on commandline")
|
||||
complete -f -c apt-move -a listbin -d (_ "List packags that may serve as input to mirrorbin or mirrorsource" )
|
||||
complete -f -c apt-move -a mirrorbin -d (_ "Fetch package from STDIN")
|
||||
complete -f -c apt-move -a mirrorsrc -d (_ "Fetch source package from STDIN")
|
||||
complete -f -c apt-move -s a -d (_ "Process all packages")
|
||||
complete -c apt-move -s c -d (_ "Use specific conffile")
|
||||
complete -f -c apt-move -s f -d (_ "Force deletion")
|
||||
complete -f -c apt-move -s q -d (_ "Suppresses normal output")
|
||||
complete -f -c apt-move -s t -d (_ "Test run")
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#apt-proxy-import
|
||||
complete -c apt-proxy-import -s h -l help -d 'apt-proxy-import command help'
|
||||
complete -f -c apt-proxy-import -s V -l version -d 'print version'
|
||||
complete -f -c apt-proxy-import -s v -l verbose -d 'verbose info'
|
||||
complete -f -c apt-proxy-import -s q -l quiet -d 'no message to STDOUT'
|
||||
complete -f -c apt-proxy-import -s r -l recursive -d 'recurse into subdir'
|
||||
complete -r -c apt-proxy-import -s i -l import-dir -a '(ls -Fp|grep /$)' -d 'dir to import'
|
||||
complete -r -c apt-proxy-import -s u -l user -a '(__fish_complete_users)' -d 'change to user'
|
||||
complete -r -c apt-proxy-import -s d -l debug -d 'debug level[default 0]'
|
||||
complete -c apt-proxy-import -s h -l help -d (_ 'Display help and exit')
|
||||
complete -f -c apt-proxy-import -s V -l version -d (_ 'Display version and exit')
|
||||
complete -f -c apt-proxy-import -s v -l verbose -d (_ 'Verbose mode')
|
||||
complete -f -c apt-proxy-import -s q -l quiet -d (_ 'No message to STDOUT')
|
||||
complete -f -c apt-proxy-import -s r -l recursive -d (_ 'Recurse into subdir')
|
||||
complete -r -c apt-proxy-import -s i -l import-dir -a '(ls -Fp|grep /$)' -d (_ 'Dir to import')
|
||||
complete -r -c apt-proxy-import -s u -l user -a '(__fish_complete_users)' -d (_ 'Change to user')
|
||||
complete -r -c apt-proxy-import -s d -l debug -d (_ 'Debug level[default 0]')
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#apt-rdepends
|
||||
complete -c apt-rdepends -l help -d "apt-rdepends command help"
|
||||
complete -f -c apt-rdepends -s b -l build-depends -d "show bulid deps"
|
||||
complete -f -c apt-rdepends -s d -l dotty -d "generate a dotty graph"
|
||||
complete -f -c apt-rdepends -s p -l print-state -d "show state of deps"
|
||||
complete -f -c apt-rdepends -s r -l reverse -d "list pkgs depending on"
|
||||
complete -r -f -c apt-rdepends -s f -l follow -d "only follow DEPENDS recursively"
|
||||
complete -r -f -c apt-rdepends -s s -l show -d "only show DEPENDS"
|
||||
complete -r -f -c apt-rdepends -l state-follow -d "only follow STATES recursively"
|
||||
complete -r -f -c apt-rdepends -l state-show -d "only show STATES"
|
||||
complete -f -c apt-rdepends -l man -d "display man page"
|
||||
complete -f -c apt-rdepends -l version -d "print version"
|
||||
complete -c apt-rdepends -l help -d (_ "Display help and exit")
|
||||
complete -f -c apt-rdepends -s b -l build-depends -d (_ "Show bulid dependencies")
|
||||
complete -f -c apt-rdepends -s d -l dotty -d (_ "Generate a dotty graph")
|
||||
complete -f -c apt-rdepends -s p -l print-state -d (_ "Show state of dependencies")
|
||||
complete -f -c apt-rdepends -s r -l reverse -d (_ "List packages depending on")
|
||||
complete -r -f -c apt-rdepends -s f -l follow -d (_ "Comma-separated list of dependancy types to follow recursively")
|
||||
complete -r -f -c apt-rdepends -s s -l show -d (_ "Comma-separated list of dependancy types to show")
|
||||
complete -r -f -c apt-rdepends -l state-follow -d (_ "Comma-separated list of package installation states to follow recursively")
|
||||
complete -r -f -c apt-rdepends -l state-show -d (_ "Comma-separated list of package installation states to show")
|
||||
complete -f -c apt-rdepends -l man -d (_ "Display man page")
|
||||
complete -f -c apt-rdepends -l version -d (_ "Display version and exit")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#apt-setup
|
||||
complete -c apt-setup -a probe -d "probe a CD"
|
||||
complete -c apt-setup -s N -d "run in noninteractive mode"
|
||||
complete -c apt-setup -a probe -d (_ "Probe a CD")
|
||||
complete -c apt-setup -s N -d (_ "Run in noninteractive mode")
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#apt-show-source
|
||||
complete -c apt-show-source -s h -l help -d 'apt-show-source command help'
|
||||
complete -r -c apt-show-source -l status-file -d 'read pkg from FILE' -f
|
||||
complete -r -c apt-show-source -o stf -d 'read pkg from FILE' -f
|
||||
complete -r -c apt-show-source -l list-dir -a '(ls -Fp .|grep /$) /var/lib/apt/lists' -d 'specify APT list dir'
|
||||
complete -r -c apt-show-source -o ld -a '(ls -Fp .|grep /$) /var/lib/apt/lists' -d 'specify APT list dir'
|
||||
complete -r -c apt-show-source -s p -l package -a '(apt-cache pkgnames)' -d 'list PKG info'
|
||||
complete -f -c apt-show-source -l version-only -d 'print version only'
|
||||
complete -f -c apt-show-source -s a -l all -d 'print all src pkgs with version'
|
||||
complete -f -c apt-show-source -s v -l verbose -d 'verbose message'
|
||||
complete -c apt-show-source -s h -l help -d (_ 'Display help and exit')
|
||||
complete -r -c apt-show-source -l status-file -d (_ 'Read package from file') -f
|
||||
complete -r -c apt-show-source -o stf -d (_ 'Read package from file') -f
|
||||
complete -r -c apt-show-source -l list-dir -a '(ls -Fp .|grep /$) /var/lib/apt/lists' -d (_ 'Specify APT list dir')
|
||||
complete -r -c apt-show-source -o ld -a '(ls -Fp .|grep /$) /var/lib/apt/lists' -d (_ 'Specify APT list dir')
|
||||
complete -r -c apt-show-source -s p -l package -a '(apt-cache pkgnames)' -d (_ 'List PKG info')
|
||||
complete -f -c apt-show-source -l version-only -d (_ 'Display version and exit')
|
||||
complete -f -c apt-show-source -s a -l all -d (_ 'Print all source packages with version')
|
||||
complete -f -c apt-show-source -s v -l verbose -d (_ 'Verbose mode')
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
#apt-show-versions
|
||||
complete -c apt-show-source -s h -l help -d 'apt-show-versions command help'
|
||||
complete -r -c apt-show-versions -s p -l packages -a '(apt-cache pkgnames)' -d 'print PKG versions'
|
||||
complete -f -c apt-show-versions -s r -l regex -d 'using regex'
|
||||
complete -f -c apt-show-versions -s u -l upgradeable -d 'print only upgradeable pkgs'
|
||||
complete -f -c apt-show-versions -s a -l allversions -d 'print all versions'
|
||||
complete -f -c apt-show-versions -s b -l brief -d 'print pkg name/distro'
|
||||
complete -f -c apt-show-versions -s v -l verbose -d 'print verbose info'
|
||||
complete -f -c apt-show-versions -s i -l initialize -d 'init or update cache only'
|
||||
complete -r -c apt-show-versions -l status-file -d 'read pkg from FILE'
|
||||
complete -r -c apt-show-versions -o stf -d 'read pkg from FILE'
|
||||
complete -r -c apt-show-versions -l list-dir -a '(ls -Fp .|grep /$) /var/lib/apt/lists /var/state/apt/lists' -d 'specify APT list dir'
|
||||
complete -r -c apt-show-versions -o ld -a '(ls -Fp .|grep /$) /var/lib/apt/lists /var/state/apt/lists' -d 'specify APT list dir'
|
||||
complete -c apt-show-source -s h -l help -d (_ 'Display help and exit')
|
||||
complete -r -c apt-show-versions -s p -l packages -a '(apt-cache pkgnames)' -d (_ 'Print PKG versions')
|
||||
complete -f -c apt-show-versions -s r -l regex -d (_ 'Using regex')
|
||||
complete -f -c apt-show-versions -s u -l upgradeable -d (_ 'Print only upgradeable packages')
|
||||
complete -f -c apt-show-versions -s a -l allversions -d (_ 'Print all versions')
|
||||
complete -f -c apt-show-versions -s b -l brief -d (_ 'Print package name/distro')
|
||||
complete -f -c apt-show-versions -s v -l verbose -d (_ 'Print verbose info')
|
||||
complete -f -c apt-show-versions -s i -l initialize -d (_ 'Init or update cache only')
|
||||
complete -r -c apt-show-versions -l status-file -d (_ 'Read package from file')
|
||||
complete -r -c apt-show-versions -o stf -d (_ 'Read package from file')
|
||||
complete -r -c apt-show-versions -l list-dir -a '(ls -Fp .|grep /$) /var/lib/apt/lists /var/state/apt/lists' -d (_ 'Specify APT list dir')
|
||||
complete -r -c apt-show-versions -o ld -a '(ls -Fp .|grep /$) /var/lib/apt/lists /var/state/apt/lists' -d (_ 'Specify APT list dir')
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#apt-sortpkgs
|
||||
complete -c apt-sortpkgs -s h -l help -d "apt-sortpkgs command help"
|
||||
complete -f -c apt-sortpkgs -s s -l source -d "use source index field"
|
||||
complete -f -c apt-sortpkgs -s v -l version -d "show version"
|
||||
complete -r -c apt-sortpkgs -s c -l conf-file -d "specify conffile"
|
||||
complete -r -f -c apt-sortpkgs -s o -l option -d "set config options"
|
||||
complete -c apt-sortpkgs -s h -l help -d (_ "Display help and exit")
|
||||
complete -f -c apt-sortpkgs -s s -l source -d (_ "Use source index field")
|
||||
complete -f -c apt-sortpkgs -s v -l version -d (_ "Display version and exit")
|
||||
complete -r -c apt-sortpkgs -s c -l conf-file -d (_ "Specify conffile")
|
||||
complete -r -f -c apt-sortpkgs -s o -l option -d (_ "Set config options")
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
#apt-spy
|
||||
complete -c apt-spy -s h -d "apt-spy command help"
|
||||
complete -f -c apt-spy -s d -a "stable testing unstable" -d "Debian distribtion"
|
||||
complete -f -c apt-spy -s a -a "Africa Asia Europe North-America Oceania South-America" -d "servers in the areas"
|
||||
complete -c apt-spy -s c -d "conf file"
|
||||
complete -f -c apt-spy -s e -d "finish after number of servers"
|
||||
complete -c apt-spy -s f -d "file to grab servers"
|
||||
complete -c apt-spy -s i -d "file as input"
|
||||
complete -c apt-spy -s m -d "mirror-list file"
|
||||
complete -c apt-spy -s o -d "output sources.list file"
|
||||
complete -f -c apt-spy -s p -d "use proxy server"
|
||||
complete -f -c apt-spy -s s -d "comma separated country list"
|
||||
complete -f -c apt-spy -s t -d "how long in sec to download"
|
||||
complete -f -c apt-spy -s u -d "custom URL to get mirror list"
|
||||
complete -c apt-spy -s w -d "write top servers to file"
|
||||
complete -f -c apt-spy -s n -d "number of top servers"
|
||||
complete -f -c apt-spy -a "update" -d "update mirror list"
|
||||
complete -f -c apt-spy -s v -d "version number"
|
||||
complete -c apt-spy -s h -d (_ "Display help and exit")
|
||||
complete -f -c apt-spy -s d -a "stable testing unstable" -d (_ "Debian distribtion")
|
||||
complete -f -c apt-spy -s a -a "Africa Asia Europe North-America Oceania South-America" -d (_ "Servers in the areas")
|
||||
complete -c apt-spy -s c -d (_ "Conf file")
|
||||
complete -f -c apt-spy -s e -d (_ "Finish after number of servers")
|
||||
complete -c apt-spy -s f -d (_ "File to grab servers")
|
||||
complete -c apt-spy -s i -d (_ "File as input")
|
||||
complete -c apt-spy -s m -d (_ "Mirror-list file")
|
||||
complete -c apt-spy -s o -d (_ "Output sources.list file")
|
||||
complete -f -c apt-spy -s p -d (_ "Use proxy server")
|
||||
complete -f -c apt-spy -s s -d (_ "Comma separated country list")
|
||||
complete -f -c apt-spy -s t -d (_ "How long in sec to download")
|
||||
complete -f -c apt-spy -s u -d (_ "Custom URL to get mirror list")
|
||||
complete -c apt-spy -s w -d (_ "Write top servers to file")
|
||||
complete -f -c apt-spy -s n -d (_ "Number of top servers")
|
||||
complete -f -c apt-spy -a "update" -d (_ "Update mirror list")
|
||||
complete -f -c apt-spy -s v -d (_ "Version number")
|
||||
|
||||
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
#apt-src
|
||||
complete -c apt-src -s h -l help -d "apt-src command help"
|
||||
complete -f -c apt-src -a "update" -d "update list of src pkgs"
|
||||
complete -f -c apt-src -a "install" -d "install src pkgs"
|
||||
complete -f -c apt-src -a "upgrade" -d "upgrade src pkgs"
|
||||
complete -f -c apt-src -a "remove" -d "remove src pkgs"
|
||||
complete -f -c apt-src -a "build" -d "build src pkgs"
|
||||
complete -f -c apt-src -a "clean" -d "clean src pkgs"
|
||||
complete -f -c apt-src -a "import" -d "detect known src tree"
|
||||
complete -f -c apt-src -a "list" -d "list installed src pkg\(s\)"
|
||||
complete -f -c apt-src -a "location" -d "root src tree"
|
||||
complete -f -c apt-src -a "version" -d "version of src pkg"
|
||||
complete -f -c apt-src -a "name" -d "name of the src pkg"
|
||||
complete -f -c apt-src -s b -l build -d "build src pkgs"
|
||||
complete -f -c apt-src -s i -l installdebs -d "install after build"
|
||||
complete -f -c apt-src -s p -l patch -d "patch local changes"
|
||||
complete -r -c apt-src -s l -l location -d "specify a dir"
|
||||
complete -c apt-src -s c -l here -d "run on current dir"
|
||||
complete -f -c apt-src -l upstream-version -d "omit debian version"
|
||||
complete -f -c apt-src -s k -l keep-built -d "do not del built files"
|
||||
complete -f -c apt-src -s n -l no-delete-source -d "do not del source files"
|
||||
complete -f -c apt-src -l version -d "source tree version"
|
||||
complete -f -c apt-src -s q -l quiet -d "output to /dev/null"
|
||||
complete -f -c apt-src -s t -l trace -d "output trace"
|
||||
complete -c apt-src -s h -l help -d (_ "Display help and exit")
|
||||
complete -f -c apt-src -a "update" -d (_ "Update list of source packages")
|
||||
complete -f -c apt-src -a "install" -d (_ "Install source packages")
|
||||
complete -f -c apt-src -a "upgrade" -d (_ "Upgrade source packages")
|
||||
complete -f -c apt-src -a "remove" -d (_ "Remove source packages")
|
||||
complete -f -c apt-src -a "build" -d (_ "Build source packages")
|
||||
complete -f -c apt-src -a "clean" -d (_ "Clean source packages")
|
||||
complete -f -c apt-src -a "import" -d (_ "Detect known source tree")
|
||||
complete -f -c apt-src -a "list" -d (_ "List installed source package\(s\)")
|
||||
complete -f -c apt-src -a "location" -d (_ "Root source tree")
|
||||
complete -f -c apt-src -a "version" -d (_ "Version of source package")
|
||||
complete -f -c apt-src -a "name" -d (_ "Name of the source package")
|
||||
complete -f -c apt-src -s b -l build -d (_ "Build source packages")
|
||||
complete -f -c apt-src -s i -l installdebs -d (_ "Install after build")
|
||||
complete -f -c apt-src -s p -l patch -d (_ "Patch local changes")
|
||||
complete -r -c apt-src -s l -l location -d (_ "Specify a dir")
|
||||
complete -c apt-src -s c -l here -d (_ "Run on current dir")
|
||||
complete -f -c apt-src -l upstream-version -d (_ "Omit debian version")
|
||||
complete -f -c apt-src -s k -l keep-built -d (_ "Do not del built files")
|
||||
complete -f -c apt-src -s n -l no-delete-source -d (_ "Do not del source files")
|
||||
complete -f -c apt-src -l version -d (_ "Source tree version")
|
||||
complete -f -c apt-src -s q -l quiet -d (_ "Output to /dev/null")
|
||||
complete -f -c apt-src -s t -l trace -d (_ "Output trace")
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#apt-zip-inst
|
||||
complete -c apt-zip-inst -s h -l help -d "apt-zip-inst command help"
|
||||
complete -f -c apt-zip-inst -s V -l version -d "show version"
|
||||
complete -c apt-zip-inst -s m -l medium -d "removable medium"
|
||||
complete -f -c apt-zip-inst -s a -l aptgetaction -a "dselect-upgrade upgrade dist-upgrade" -d "select an action"
|
||||
complete -c apt-zip-inst -s p -l packages -d "list of pkgs to install"
|
||||
complete -f -c apt-zip-inst -s f -l fix-broken -d "fix broken option"
|
||||
complete -c apt-zip-inst -l skip-mount -d "specify a non-mountpoint dir"
|
||||
complete -c apt-zip-inst -s h -l help -d (_ "Display help and exit")
|
||||
complete -f -c apt-zip-inst -s V -l version -d (_ "Display version and exit")
|
||||
complete -c apt-zip-inst -s m -l medium -d (_ "Removable medium")
|
||||
complete -f -c apt-zip-inst -s a -l aptgetaction -a "dselect-upgrade upgrade dist-upgrade" -d (_ "Select an action")
|
||||
complete -c apt-zip-inst -s p -l packages -d (_ "List of packages to install")
|
||||
complete -f -c apt-zip-inst -s f -l fix-broken -d (_ "Fix broken option")
|
||||
complete -c apt-zip-inst -l skip-mount -d (_ "Specify a non-mountpoint dir")
|
||||
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#apt-zip-list
|
||||
complete -c apt-zip-list -s h -l help -d "apt-zip-list command help"
|
||||
complete -f -c apt-zip-list -s V -l version -d "show version"
|
||||
complete -c apt-zip-list -s m -l medium -d "removable medium"
|
||||
complete -f -c apt-zip-list -s a -l aptgetaction -a "dselect-upgrade upgrade dist-upgrade" -d "select an action"
|
||||
complete -c apt-zip-list -s p -l packages -d "list of pkgs to install"
|
||||
complete -f -c apt-zip-list -s f -l fix-broken -d "fix broken option"
|
||||
complete -c apt-zip-list -l skip-mount -d "specify a non-mountpoint dir"
|
||||
complete -c apt-zip-list -s M -l method -d "select a method"
|
||||
complete -c apt-zip-list -s o -l options -a "tar restart" -d "specify options"
|
||||
complete -c apt-zip-list -s A -l accept -a "http ftp" -d "accept protocols"
|
||||
complete -c apt-zip-list -s R -l reject -a "http ftp" -d "reject protocols"
|
||||
complete -c apt-zip-list -s h -l help -d (_ "Display help and exit")
|
||||
complete -f -c apt-zip-list -s V -l version -d (_ "Display version and exit")
|
||||
complete -c apt-zip-list -s m -l medium -d (_ "Removable medium")
|
||||
complete -f -c apt-zip-list -s a -l aptgetaction -a "dselect-upgrade upgrade dist-upgrade" -d (_ "Select an action")
|
||||
complete -c apt-zip-list -s p -l packages -d (_ "List of packages to install")
|
||||
complete -f -c apt-zip-list -s f -l fix-broken -d (_ "Fix broken option")
|
||||
complete -c apt-zip-list -l skip-mount -d (_ "Specify a non-mountpoint dir")
|
||||
complete -c apt-zip-list -s M -l method -d (_ "Select a method")
|
||||
complete -c apt-zip-list -s o -l options -a "tar restart" -d (_ "Specify options")
|
||||
complete -c apt-zip-list -s A -l accept -a "http ftp" -d (_ "Accept protocols")
|
||||
complete -c apt-zip-list -s R -l reject -a "http ftp" -d (_ "Reject protocols")
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#completion for arp
|
||||
complete -c arp -s v -l verbose -d "verbose mode"
|
||||
complete -c arp -s n -l numeric -d "numerical address"
|
||||
complete -x -c arp -s H -l tw-type -a "ether arcnet pronet ax25 netrom" -d "class of hw type"
|
||||
complete -c arp -s a -l display -x -a "(__fish_print_hostnames)" -d "show arp entries"
|
||||
complete -x -c arp -s d -l delete -a "(__fish_print_hostnames)" -d "remove an entry for hostname"
|
||||
complete -c arp -s D -l use-device -d "use hardware address"
|
||||
complete -x -c arp -s i -l device -a "(__fish_print_interfaces)" -d "select interface"
|
||||
complete -x -c arp -s s -l set -d "Manually create ARP address" -a "(__fish_print_hostnames)"
|
||||
complete -f -c arp -s f -l file -d "taken addr from filename, default /etc/ethers"
|
||||
complete -c arp -s v -l verbose -d (_ "Verbose mode")
|
||||
complete -c arp -s n -l numeric -d (_ "Numerical address")
|
||||
complete -x -c arp -s H -l tw-type -a "ether arcnet pronet ax25 netrom" -d (_ "Class of hw type")
|
||||
complete -c arp -s a -l display -x -a "(__fish_print_hostnames)" -d (_ "Show arp entries")
|
||||
complete -x -c arp -s d -l delete -a "(__fish_print_hostnames)" -d (_ "Remove an entry for hostname")
|
||||
complete -c arp -s D -l use-device -d (_ "Use hardware address")
|
||||
complete -x -c arp -s i -l device -a "(__fish_print_interfaces)" -d (_ "Select interface")
|
||||
complete -x -c arp -s s -l set -d (_ "Manually create ARP address") -a "(__fish_print_hostnames)"
|
||||
complete -f -c arp -s f -l file -d (_ "Take addr from filename, default /etc/ethers")
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#at
|
||||
complete -f -c at -s V -d "print version"
|
||||
complete -f -c at -s q -d "use specified queue"
|
||||
complete -f -c at -s m -d "send mail to user"
|
||||
complete -c at -s f -x -a "(__fish_complete_suffix (commandline -ct) '' 'At job')" -d "Read job from file"
|
||||
complete -f -c at -s l -d "alias for atq"
|
||||
complete -f -c at -s d -d "alias for atrm"
|
||||
complete -f -c at -s v -d "show the time"
|
||||
complete -f -c at -s c -d "cat the jobs listed"
|
||||
complete -f -c at -s V -d (_ "Display version and exit")
|
||||
complete -f -c at -s q -d (_ "Use specified queue")
|
||||
complete -f -c at -s m -d (_ "Send mail to user")
|
||||
complete -c at -s f -x -a "(__fish_complete_suffix (commandline -ct) '' 'At job')" -d (_ "Read job from file")
|
||||
complete -f -c at -s l -d (_ "Alias for atq")
|
||||
complete -f -c at -s d -d (_ "Alias for atrm")
|
||||
complete -f -c at -s v -d (_ "Show the time")
|
||||
complete -f -c at -s c -d (_ "Print the jobs listed")
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#atd
|
||||
complete -f -c atd -s l -d "limiting load factor"
|
||||
complete -f -c atd -s b -d "minimum interval in seconds"
|
||||
complete -f -c atd -s d -d "Debug mode"
|
||||
complete -f -c atd -s s -d "process at queue only once"
|
||||
complete -f -c atd -s l -d (_ "Limiting load factor")
|
||||
complete -f -c atd -s b -d (_ "Minimum interval in seconds")
|
||||
complete -f -c atd -s d -d (_ "Debug mode")
|
||||
complete -f -c atd -s s -d (_ "Process at queue only once")
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#atq
|
||||
complete -f -c atq -s V -d "print version"
|
||||
complete -f -c atq -s q -d "use specified queue"
|
||||
complete -f -c atq -s V -d (_ "Display version and exit")
|
||||
complete -f -c atq -s q -d (_ "Use specified queue")
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
#atrm
|
||||
complete -f -c atrm -s V -d "print version"
|
||||
complete -f -c atrm -s V -d (_ "Display version and exit")
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Completions for the binary calculator
|
||||
|
||||
complete -c bc -s i -l interactive -d "Force interactive mode"
|
||||
complete -c bc -s l -l math-lib -d "Define math library"
|
||||
complete -c bc -s w -l warn -d "Give warnings for extensions to POSIX bc"
|
||||
complete -c bc -s s -l standard -d "Process exactly POSIX bc"
|
||||
complete -c bc -s q -l quiet -d "Do not print the GNU welcome"
|
||||
complete -c bc -s v -l version -d "Display version and exit"
|
||||
complete -c bc -s h -l help -d "Display help and exit"
|
||||
complete -c bc -s i -l interactive -d (_ "Force interactive mode")
|
||||
complete -c bc -s l -l math-lib -d (_ "Define math library")
|
||||
complete -c bc -s w -l warn -d (_ "Give warnings for extensions to POSIX bc")
|
||||
complete -c bc -s s -l standard -d (_ "Process exactly POSIX bc")
|
||||
complete -c bc -s q -l quiet -d (_ "Do not print the GNU welcome")
|
||||
complete -c bc -s v -l version -d (_ "Display version and exit")
|
||||
complete -c bc -s h -l help -d (_ "Display help and exit")
|
||||
|
||||
@@ -1,34 +1,33 @@
|
||||
# Bittorrent commands
|
||||
|
||||
for i in btdownloadcurses.py btdownloadheadless.py;
|
||||
complete -c $i -l max_uploads -x -d "Maximum uploads at once"
|
||||
complete -c $i -l keepalive_interval -x -d "Number of seconds between keepalives"
|
||||
complete -c $i -l download_slice_size -x -d "Bytes per request"
|
||||
complete -c $i -l request_backlog -x -d "Requests per pipe"
|
||||
complete -c $i -l max_message_length -x -d "Maximum length prefix encoding"
|
||||
complete -c $i -l ip -d "IP to report to the tracker" -x -a "(__fish_print_addresses)"
|
||||
complete -c $i -l minport -d "Minimum port to listen to"
|
||||
complete -c $i -l maxport -d "Maximum port to listen to"
|
||||
complete -c $i -l responsefile -r -d "File for server response"
|
||||
complete -c $i -l url -x -d "URL to get file from"
|
||||
complete -c $i -l saveas -r -d "Local file target"
|
||||
complete -c $i -l timeout -x -d "Time to close inactive socket"
|
||||
complete -c $i -l timeout_check_interval -x -d "Time between checking timeouts"
|
||||
complete -c $i -l max_slice_length -x -d "Maximum outgoing slice length"
|
||||
complete -c $i -l max_rate_period -x -d "Maximum time to guess rate"
|
||||
complete -c $i -l bind -x -d "IP to bind to locally" -a "(__fish_print_addresses)"
|
||||
complete -c $i -l upload_rate_fudge -x -d "time equivalent of writing to kernel-level TCP buffer"
|
||||
complete -c $i -l display_interval -x -d "Time between screen updates"
|
||||
complete -c $i -l rerequest_interval -x -d "Time to wait between requesting more peers"
|
||||
complete -c $i -l min_peers -x -d "Minimum number of peers to not do requesting"
|
||||
complete -c $i -l http_timeout -x -d "Number of seconds before assuming http timeout"
|
||||
complete -c $i -l max_initiate -x -d "Number of peers at which to stop initiating new connections"
|
||||
complete -c $i -l max_allow_in -x -d "Maximum number of connections to allow"
|
||||
complete -c $i -l check_hashes -x -d "Whether to check hashes on disk"
|
||||
complete -c $i -l max_upload_rate -x -d "Maximum kB/s to upload at"
|
||||
complete -c $i -l snub_time -x -d "Seconds to wait for data to come in before assuming choking"
|
||||
complete -c $i -l spew -x -d "Whether to display diagnostic info"
|
||||
complete -c $i -l rarest_first_cutoff -x -d "Number of downloads at which to switch from random to rarest first"
|
||||
complete -c $i -l min_uploads -x -d "Number of uploads to fill out to with optimistic unchokes"
|
||||
complete -c $i -l report_hash_failiures -x -d "Whether to inform the user that hash failures occur"
|
||||
complete -c $i -l max_uploads -x -d (_ "Maximum uploads at once")
|
||||
complete -c $i -l keepalive_interval -x -d (_ "Number of seconds between keepalives")
|
||||
complete -c $i -l download_slice_size -x -d (_ "Bytes per request")
|
||||
complete -c $i -l request_backlog -x -d (_ "Requests per pipe")
|
||||
complete -c $i -l max_message_length -x -d (_ "Maximum length prefix encoding")
|
||||
complete -c $i -l ip -d (_ "IP to report to the tracker") -x -a "(__fish_print_addresses)"
|
||||
complete -c $i -l minport -d (_ "Minimum port to listen to")
|
||||
complete -c $i -l maxport -d (_ "Maximum port to listen to")
|
||||
complete -c $i -l responsefile -r -d (_ "File for server response")
|
||||
complete -c $i -l url -x -d (_ "URL to get file from")
|
||||
complete -c $i -l saveas -r -d (_ "Local file target")
|
||||
complete -c $i -l timeout -x -d (_ "Time to close inactive socket")
|
||||
complete -c $i -l timeout_check_interval -x -d (_ "Time between checking timeouts")
|
||||
complete -c $i -l max_slice_length -x -d (_ "Maximum outgoing slice length")
|
||||
complete -c $i -l max_rate_period -x -d (_ "Maximum time to guess rate")
|
||||
complete -c $i -l bind -x -d (_ "IP to bind to locally") -a "(__fish_print_addresses)"
|
||||
complete -c $i -l display_interval -x -d (_ "Time between screen updates")
|
||||
complete -c $i -l rerequest_interval -x -d (_ "Time to wait between requesting more peers")
|
||||
complete -c $i -l min_peers -x -d (_ "Minimum number of peers to not do requesting")
|
||||
complete -c $i -l http_timeout -x -d (_ "Number of seconds before assuming http timeout")
|
||||
complete -c $i -l max_initiate -x -d (_ "Number of peers at which to stop initiating new connections")
|
||||
complete -c $i -l max_allow_in -x -d (_ "Maximum number of connections to allow")
|
||||
complete -c $i -l check_hashes -x -d (_ "Whether to check hashes on disk")
|
||||
complete -c $i -l max_upload_rate -x -d (_ "Maximum kB/s to upload at")
|
||||
complete -c $i -l snub_time -x -d (_ "Seconds to wait for data to come in before assuming choking")
|
||||
complete -c $i -l spew -x -d (_ "Whether to display diagnostic info")
|
||||
complete -c $i -l rarest_first_cutoff -x -d (_ "Number of downloads at which to switch from random to rarest first")
|
||||
complete -c $i -l min_uploads -x -d (_ "Number of uploads to fill out to with optimistic unchokes")
|
||||
complete -c $i -l report_hash_failiures -x -d (_ "Whether to inform the user that hash failures occur")
|
||||
end;
|
||||
|
||||
@@ -6,10 +6,10 @@ complete -c bunzip2 -x -a "(
|
||||
)
|
||||
"
|
||||
|
||||
complete -c bunzip2 -s c -l stdout -d "Decompress to stdout"
|
||||
complete -c bunzip2 -s f -l force -d "Overwrite"
|
||||
complete -c bunzip2 -s k -l keep -d "Do not overwrite"
|
||||
complete -c bunzip2 -s s -l small -d "Reduce memory usage"
|
||||
complete -c bunzip2 -s v -l verbose -d "Print compression ratios"
|
||||
complete -c bunzip2 -s L -l license -d "Print license"
|
||||
complete -c bunzip2 -s V -l version -d "Print version"
|
||||
complete -c bunzip2 -s c -l stdout -d (_ "Decompress to stdout")
|
||||
complete -c bunzip2 -s f -l force -d (_ "Overwrite")
|
||||
complete -c bunzip2 -s k -l keep -d (_ "Do not overwrite")
|
||||
complete -c bunzip2 -s s -l small -d (_ "Reduce memory usage")
|
||||
complete -c bunzip2 -s v -l verbose -d (_ "Print compression ratios")
|
||||
complete -c bunzip2 -s L -l license -d (_ "Print license")
|
||||
complete -c bunzip2 -s V -l version -d (_ "Display version and exit")
|
||||
|
||||
@@ -5,4 +5,4 @@ complete -c bzcat -x -a "(
|
||||
__fish_complete_suffix (commandline -ct) .tbz2 'Compressed archive'
|
||||
)
|
||||
"
|
||||
complete -c bzcat -s s -l small -d "Reduce memory usage"
|
||||
complete -c bzcat -s s -l small -d (_ "Reduce memory usage")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
complete -c bzip2 -s c -l stdout -d "Compress to stdout"
|
||||
complete -c bzip2 -s c -l stdout -d (_ "Compress to stdout")
|
||||
complete -c bzip2 -s d -l decompress -x -a "(
|
||||
__fish_complete_suffix (commandline -ct) .bz 'Compressed file'
|
||||
__fish_complete_suffix (commandline -ct) .bz2 'Compressed file'
|
||||
@@ -6,14 +6,14 @@ complete -c bzip2 -s d -l decompress -x -a "(
|
||||
__fish_complete_suffix (commandline -ct) .tbz2 'Compressed archive'
|
||||
)
|
||||
"
|
||||
complete -c bzip2 -s z -l compress -d "Compress file"
|
||||
complete -c bzip2 -s t -l test -d "Check integrity"
|
||||
complete -c bzip2 -s f -l force -d "Overwrite"
|
||||
complete -c bzip2 -s k -l keep -d "Do not overwrite"
|
||||
complete -c bzip2 -s s -l small -d "Reduce memory usage"
|
||||
complete -c bzip2 -s q -l quiet -d "Supress errors"
|
||||
complete -c bzip2 -s v -l verbose -d "Print compression ratios"
|
||||
complete -c bzip2 -s L -l license -d "Print license"
|
||||
complete -c bzip2 -s V -l version -d "Print version"
|
||||
complete -c bzip2 -s 1 -l fast -d "Small block size"
|
||||
complete -c bzip2 -s 9 -l best -d "Large block size"
|
||||
complete -c bzip2 -s z -l compress -d (_ "Compress file")
|
||||
complete -c bzip2 -s t -l test -d (_ "Check integrity")
|
||||
complete -c bzip2 -s f -l force -d (_ "Overwrite")
|
||||
complete -c bzip2 -s k -l keep -d (_ "Do not overwrite")
|
||||
complete -c bzip2 -s s -l small -d (_ "Reduce memory usage")
|
||||
complete -c bzip2 -s q -l quiet -d (_ "Supress errors")
|
||||
complete -c bzip2 -s v -l verbose -d (_ "Print compression ratios")
|
||||
complete -c bzip2 -s L -l license -d (_ "Print license")
|
||||
complete -c bzip2 -s V -l version -d (_ "Display version and exit")
|
||||
complete -c bzip2 -s 1 -l fast -d (_ "Small block size")
|
||||
complete -c bzip2 -s 9 -l best -d (_ "Large block size")
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
complete -c cat -s A -l show-all -d 'Escape all non-printing characters'
|
||||
complete -c cat -s b -l number-nonblank -d 'Number nonblank lines'
|
||||
complete -c cat -s e -d 'Escape non-printing characters except tab'
|
||||
complete -c cat -s E -l show-ends -d 'Display $ at end of line'
|
||||
complete -c cat -s n -l number -d 'Number all lines'
|
||||
complete -c cat -s s -l squeeze-blank -d 'Never more than single blank line'
|
||||
complete -c cat -s t -d 'Escape non-printing characters except newline'
|
||||
complete -c cat -s T -l show-tabs -d 'Escape tab'
|
||||
complete -c cat -s v -d 'Escape non-printing except newline and tab'
|
||||
complete -c cat -l help -d 'Display help and exit'
|
||||
complete -c cat -l version -d 'Display version and exit'
|
||||
complete -c cat -s A -l show-all -d (_ "Escape all non-printing characters")
|
||||
complete -c cat -s b -l number-nonblank -d (_ "Number nonblank lines")
|
||||
complete -c cat -s e -d (_ "Escape non-printing characters except tab")
|
||||
complete -c cat -s E -l show-ends -d (_ "Display \$ at end of line")
|
||||
complete -c cat -s n -l number -d (_ "Number all lines")
|
||||
complete -c cat -s s -l squeeze-blank -d (_ "Never more than single blank line")
|
||||
complete -c cat -s t -d (_ "Escape non-printing characters except newline")
|
||||
complete -c cat -s T -l show-tabs -d (_ "Escape tab")
|
||||
complete -c cat -s v -d (_ "Escape non-printing except newline and tab")
|
||||
complete -c cat -l help -d (_ "Display help and exit")
|
||||
complete -c cat -l version -d (_ "Display version and exit")
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
|
||||
complete -c chgrp -s c -l changes -d "Output diagnostic for changed files"
|
||||
complete -c chgrp -l dereference -d "Dereferense symbolic links"
|
||||
complete -c chgrp -s h -l no-dereference -d "Do not dereference symbolic links"
|
||||
complete -c chgrp -l from -d "Change from owner/group"
|
||||
complete -c chgrp -s f -l silent -d "Supress errors"
|
||||
complete -c chgrp -l reference -d "Use same owner/group as file" -r
|
||||
complete -c chgrp -s R -l recursive -d "Operate recursively"
|
||||
complete -c chgrp -s v -l verbose -d "Output diagnostic for every file"
|
||||
complete -c chgrp -s h -l help -d "Display help and exit"
|
||||
complete -c chgrp -l version -d "Display version and exit"
|
||||
complete -c chgrp -s c -l changes -d (_ "Output diagnostic for changed files")
|
||||
complete -c chgrp -l dereference -d (_ "Dereferense symbolic links")
|
||||
complete -c chgrp -s h -l no-dereference -d (_ "Do not dereference symbolic links")
|
||||
complete -c chgrp -l from -d (_ "Change from owner/group")
|
||||
complete -c chgrp -s f -l silent -d (_ "Supress errors")
|
||||
complete -c chgrp -l reference -d (_ "Use same owner/group as file") -r
|
||||
complete -c chgrp -s R -l recursive -d (_ "Operate recursively")
|
||||
complete -c chgrp -s v -l verbose -d (_ "Output diagnostic for every file")
|
||||
complete -c chgrp -s h -l help -d (_ "Display help and exit")
|
||||
complete -c chgrp -l version -d (_ "Display version and exit")
|
||||
complete -c chgrp -d Group -a "(__fish_complete_groups)"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
complete -c chown -s c -l changes -d "Output diagnostic for changed files"
|
||||
complete -c chown -l dereference -d "Dereferense symbolic links"
|
||||
complete -c chown -s h -l no-dereference -d "Do not dereference symbolic links"
|
||||
complete -c chown -l from -d "Change from owner/group"
|
||||
complete -c chown -s f -l silent -d "Supress errors"
|
||||
complete -c chown -l reference -d "Use same owner/group as file" -r
|
||||
complete -c chown -s R -l recursive -d "Operate recursively"
|
||||
complete -c chown -s v -l verbose -d "Output diagnostic for every file"
|
||||
complete -c chown -s h -l help -d "Display help and exit"
|
||||
complete -c chown -l version -d "Display version and exit"
|
||||
complete -c chown -d "Username" -a "(__fish_print_users):"
|
||||
complete -c chown -d "Username" -a "(echo (commandline -ct)|grep -o '.*:')(cat /etc/group |cut -d : -f 1)"
|
||||
complete -c chown -s c -l changes -d (_ "Output diagnostic for changed files")
|
||||
complete -c chown -l dereference -d (_ "Dereferense symbolic links")
|
||||
complete -c chown -s h -l no-dereference -d (_ "Do not dereference symbolic links")
|
||||
complete -c chown -l from -d (_ "Change from owner/group")
|
||||
complete -c chown -s f -l silent -d (_ "Supress errors")
|
||||
complete -c chown -l reference -d (_ "Use same owner/group as file") -r
|
||||
complete -c chown -s R -l recursive -d (_ "Operate recursively")
|
||||
complete -c chown -s v -l verbose -d (_ "Output diagnostic for every file")
|
||||
complete -c chown -s h -l help -d (_ "Display help and exit")
|
||||
complete -c chown -l version -d (_ "Display version and exit")
|
||||
complete -c chown -d (_ "Username") -a "(__fish_print_users):"
|
||||
complete -c chown -d (_ "Username") -a "(echo (commandline -ct)|grep -o '.*:')(cat /etc/group |cut -d : -f 1)"
|
||||
|
||||
10
init/completions/chsh.fish
Normal file
10
init/completions/chsh.fish
Normal file
@@ -0,0 +1,10 @@
|
||||
#
|
||||
# Completions for the chsh command
|
||||
#
|
||||
|
||||
complete -c chsh -s s -l shell -x -a "(chsh -l)" -d "Specify your login shell"
|
||||
complete -c chsh -s l -l list-shells -d "Display the list of shells listed in /etc/shells and exit"
|
||||
complete -c chsh -s u -l help -d "Display help and exit"
|
||||
complete -c chsh -s v -l version -d "Display version and exit"
|
||||
complete -x -c chsh -a "(__fish_complete_users)"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
complete -c commandline -s a -l append -d "Add text to the end of commandline"
|
||||
complete -c commandline -s i -l insert -d "Add text at cursor"
|
||||
complete -c commandline -s r -l replace -d "Replace selected part of buffer (replace)"
|
||||
complete -c commandline -s a -l append -d (_ "Add text to the end of the selected area")
|
||||
complete -c commandline -s i -l insert -d (_ "Add text at cursor")
|
||||
complete -c commandline -s r -l replace -d (_ "Replace selected part")
|
||||
|
||||
complete -c commandline -s j -l current-job -d "Operate only on job under cursor"
|
||||
complete -c commandline -s p -l current-process -d "Operate only on process under cursor"
|
||||
complete -c commandline -s t -l current-token -d "Operate only on tokenizer token under cursor"
|
||||
complete -c commandline -s b -l current-buffer -d "Operate on entire buffer (default)"
|
||||
complete -c commandline -s j -l current-job -d (_ "Select job under cursor")
|
||||
complete -c commandline -s p -l current-process -d (_ "Select process under cursor")
|
||||
complete -c commandline -s t -l current-token -d (_ "Select token under cursor")
|
||||
complete -c commandline -s b -l current-buffer -d (_ "Select entire command line (default)")
|
||||
|
||||
complete -c commandline -s c -l cut-at-cursor -d "Only return part of commandline before the cursor"
|
||||
complete -c commandline -s f -l function -d "Inject readline functions to reader"
|
||||
complete -c commandline -s c -l cut-at-cursor -d (_ "Only return that part of the command line before the cursor")
|
||||
complete -c commandline -s f -l function -d (_ "Inject readline functions to reader")
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
complete -c complete -s c -l command -d "Command to add completion to" -r
|
||||
complete -c complete -s p -l path -d "Path to add completion to"
|
||||
complete -c complete -s s -l short-option -d "Posix-style option to complete"
|
||||
complete -c complete -s l -l long-option -d "GNU-style option to complete"
|
||||
complete -c complete -s o -l old-option -d "Old style long option to complete"
|
||||
complete -c complete -s f -l no-files -d "Do not use file completion"
|
||||
complete -c complete -s r -l require-parameter -d "Require parameter"
|
||||
complete -c complete -s x -l exclusive -d "Require parameter and do not use file completion"
|
||||
complete -c complete -s a -l arguments -d "A list of possible arguments"
|
||||
complete -c complete -s d -l description -d "Description of this completions"
|
||||
complete -c complete -s u -l unauthorative -d "Option list is not complete"
|
||||
complete -c complete -s e -l erase -d "Remove completion"
|
||||
complete -c complete -s h -l help -d "Display help and exit"
|
||||
complete -c complete -s c -l command -d (_ "Command to add completion to") -r
|
||||
complete -c complete -s p -l path -d (_ "Path to add completion to")
|
||||
complete -c complete -s s -l short-option -d (_ "Posix-style option to complete")
|
||||
complete -c complete -s l -l long-option -d (_ "GNU-style option to complete")
|
||||
complete -c complete -s o -l old-option -d (_ "Old style long option to complete")
|
||||
complete -c complete -s f -l no-files -d (_ "Do not use file completion")
|
||||
complete -c complete -s r -l require-parameter -d (_ "Require parameter")
|
||||
complete -c complete -s x -l exclusive -d (_ "Require parameter and do not use file completion")
|
||||
complete -c complete -s a -l arguments -d (_ "A list of possible arguments")
|
||||
complete -c complete -s d -l description -d (_ "Description of this completions")
|
||||
complete -c complete -s u -l unauthorative -d (_ "Option list is not complete")
|
||||
complete -c complete -s e -l erase -d (_ "Remove completion")
|
||||
complete -c complete -s h -l help -d (_ "Display help and exit")
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
complete -c configure -s h -l help -x -a "short recursive" -d "Display help and exit"
|
||||
complete -c configure -s V -l version -d "Display version and exit"
|
||||
complete -c configure -s q -l quiet -d "Be less verbose"
|
||||
complete -c configure -l cache-file -f -d "Cache test results in specified file"
|
||||
complete -c configure -s C -l config-cache -d "Cache test results in file config.cache"
|
||||
complete -c configure -s n -l no-create -d "Do not create output files"
|
||||
complete -c configure -l srcdir -d "Set source directory" -a "__fish_complete_directory (commandline -ct)" -x
|
||||
complete -c configure -l prefix -d "Architecture-independent install directory" -a "__fish_complete_directory (commandline -ct)" -x
|
||||
complete -c configure -l exec-prefix -d "Architecture-dependent install directory" -a "__fish_complete_directory (commandline -ct)" -x
|
||||
complete -c configure -l build -d "configure for building on BUILD" -x
|
||||
complete -c configure -l host -d "cross-compile to build programs to run on HOST" -x
|
||||
complete -c configure -l target -d "configure for building compilers for TARGET" -x -u
|
||||
complete -c configure -s h -l help -x -a "short recursive" -d (_ "Display help and exit")
|
||||
complete -c configure -s V -l version -d (_ "Display version and exit")
|
||||
complete -c configure -s q -l quiet -d (_ "Quiet mode")
|
||||
complete -c configure -l cache-file -f -d (_ "Cache test results in specified file")
|
||||
complete -c configure -s C -l config-cache -d (_ "Cache test results in file config.cache")
|
||||
complete -c configure -s n -l no-create -d (_ "Do not create output files")
|
||||
complete -c configure -l srcdir -d (_ "Set source directory") -a "__fish_complete_directory (commandline -ct)" -x
|
||||
complete -c configure -l prefix -d (_ "Architecture-independent install directory") -a "__fish_complete_directory (commandline -ct)" -x
|
||||
complete -c configure -l exec-prefix -d (_ "Architecture-dependent install directory") -a "__fish_complete_directory (commandline -ct)" -x
|
||||
complete -c configure -l build -d (_ "Configure for building on BUILD") -x
|
||||
complete -c configure -l host -d (_ "Cross-compile to build programs to run on HOST") -x
|
||||
complete -c configure -l target -d (_ "Configure for building compilers for TARGET") -x -u
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
complete -c cut -s b -l bytes -x -d "Ouput byte range"
|
||||
complete -c cut -s c -l characters -x -d "Output character range"
|
||||
complete -c cut -s d -l delimiter -x -d "Select field delimiter"
|
||||
complete -c cut -s d -l fields -x -d "Select fields"
|
||||
complete -c cut -s n -d "Dont split mutibyte characters"
|
||||
complete -c cut -s s -l only-delimited -d "Do not print lines without delimiter"
|
||||
complete -c cut -l output-delimiter -d "Select output delimiter"
|
||||
complete -c cut -l help -d "Display help and exit"
|
||||
complete -c cut -l version -d "Display version and exit"
|
||||
complete -c cut -s b -l bytes -x -d (_ "Ouput byte range")
|
||||
complete -c cut -s c -l characters -x -d (_ "Output character range")
|
||||
complete -c cut -s d -l delimiter -x -d (_ "Select field delimiter")
|
||||
complete -c cut -s d -l fields -x -d (_ "Select fields")
|
||||
complete -c cut -s n -d (_ "Dont split mutibyte characters")
|
||||
complete -c cut -s s -l only-delimited -d (_ "Do not print lines without delimiter")
|
||||
complete -c cut -l output-delimiter -d (_ "Select output delimiter")
|
||||
complete -c cut -l help -d (_ "Display help and exit")
|
||||
complete -c cut -l version -d (_ "Display version and exit")
|
||||
|
||||
|
||||
@@ -2,52 +2,52 @@
|
||||
# I don't use CVS, so these completions are probably not all that good.
|
||||
#
|
||||
|
||||
complete -c cvs -x -a 'add' -d 'Add a new file/directory to the repository'
|
||||
complete -c cvs -x -a 'admin' -d 'Administration front end for rcs'
|
||||
complete -c cvs -x -a 'annotate' -d 'Show last revision where each line was modified'
|
||||
complete -c cvs -x -a 'checkout' -d 'Checkout sources for editing'
|
||||
complete -c cvs -x -a 'commit' -d 'Check files into the repository'
|
||||
complete -c cvs -x -a 'diff' -d 'Show differences between revisions'
|
||||
complete -c cvs -x -a 'edit' -d 'Get ready to edit a watched file'
|
||||
complete -c cvs -x -a 'editors' -d 'See who is editing a watched file'
|
||||
complete -c cvs -x -a 'export' -d 'Export sources from CVS, similar to checkout'
|
||||
complete -c cvs -x -a 'history' -d 'Show repository access history'
|
||||
complete -c cvs -x -a 'import' -d 'Import sources into CVS, using vendor branches'
|
||||
complete -c cvs -x -a 'init' -d 'Create a CVS repository if it doesnt exist'
|
||||
complete -c cvs -x -a 'kserver' -d 'Kerberos server mode'
|
||||
complete -c cvs -x -a 'log' -d 'Print out history information for files'
|
||||
complete -c cvs -x -a 'login' -d 'Prompt for password for authenticating server'
|
||||
complete -c cvs -x -a 'logout' -d 'Removes entry in .cvspass for remote repository'
|
||||
complete -c cvs -x -a 'pserver' -d 'Password server mode'
|
||||
complete -c cvs -x -a 'rannotate' -d 'Show last revision where each line of module was modified'
|
||||
complete -c cvs -x -a 'rdiff' -d 'Create "patch" format diffs between releases'
|
||||
complete -c cvs -x -a 'release' -d 'Indicate that a Module is no longer in use'
|
||||
complete -c cvs -x -a 'remove' -d 'Remove an entry from the repository'
|
||||
complete -c cvs -x -a 'rlog' -d 'Print out history information for a module'
|
||||
complete -c cvs -x -a 'rtag' -d 'Add a symbolic tag to a module'
|
||||
complete -c cvs -x -a 'server' -d 'Server mode'
|
||||
complete -c cvs -x -a 'status' -d 'Display status information on checked out files'
|
||||
complete -c cvs -x -a 'tag' -d 'Add a symbolic tag to checked out version of files'
|
||||
complete -c cvs -x -a 'unedit' -d 'Undo an edit command'
|
||||
complete -c cvs -x -a 'update' -d 'Bring work tree in sync with repository'
|
||||
complete -c cvs -x -a 'version' -d 'Show current CVS version(s)'
|
||||
complete -c cvs -x -a 'watch' -d 'Set watches'
|
||||
complete -c cvs -x -a 'watchers' -d 'See who is watching a file'
|
||||
complete -c cvs -x -a 'add' -d (_ "Add a new file/directory to the repository")
|
||||
complete -c cvs -x -a 'admin' -d (_ "Administration front end for rcs")
|
||||
complete -c cvs -x -a 'annotate' -d (_ "Show last revision where each line was modified")
|
||||
complete -c cvs -x -a 'checkout' -d (_ "Checkout sources for editing")
|
||||
complete -c cvs -x -a 'commit' -d (_ "Check files into the repository")
|
||||
complete -c cvs -x -a 'diff' -d (_ "Show differences between revisions")
|
||||
complete -c cvs -x -a 'edit' -d (_ "Get ready to edit a watched file")
|
||||
complete -c cvs -x -a 'editors' -d (_ "See who is editing a watched file")
|
||||
complete -c cvs -x -a 'export' -d (_ "Export sources from CVS, similar to checkout")
|
||||
complete -c cvs -x -a 'history' -d (_ "Show repository access history")
|
||||
complete -c cvs -x -a 'import' -d (_ "Import sources into CVS, using vendor branches")
|
||||
complete -c cvs -x -a 'init' -d (_ "Create a CVS repository if it doesnt exist")
|
||||
complete -c cvs -x -a 'kserver' -d (_ "Kerberos server mode")
|
||||
complete -c cvs -x -a 'log' -d (_ "Print out history information for files")
|
||||
complete -c cvs -x -a 'login' -d (_ "Prompt for password for authenticating server")
|
||||
complete -c cvs -x -a 'logout' -d (_ "Removes entry in .cvspass for remote repository")
|
||||
complete -c cvs -x -a 'pserver' -d (_ "Password server mode")
|
||||
complete -c cvs -x -a 'rannotate' -d (_ "Show last revision where each line of module was modified")
|
||||
complete -c cvs -x -a 'rdiff' -d (_ "Create "patch" format diffs between releases")
|
||||
complete -c cvs -x -a 'release' -d (_ "Indicate that a Module is no longer in use")
|
||||
complete -c cvs -x -a 'remove' -d (_ "Remove an entry from the repository")
|
||||
complete -c cvs -x -a 'rlog' -d (_ "Print out history information for a module")
|
||||
complete -c cvs -x -a 'rtag' -d (_ "Add a symbolic tag to a module")
|
||||
complete -c cvs -x -a 'server' -d (_ "Server mode")
|
||||
complete -c cvs -x -a 'status' -d (_ "Display status information on checked out files")
|
||||
complete -c cvs -x -a 'tag' -d (_ "Add a symbolic tag to checked out version of files")
|
||||
complete -c cvs -x -a 'unedit' -d (_ "Undo an edit command")
|
||||
complete -c cvs -x -a 'update' -d (_ "Bring work tree in sync with repository")
|
||||
complete -c cvs -x -a 'version' -d (_ "Display version and exit")
|
||||
complete -c cvs -x -a 'watch' -d (_ "Set watches")
|
||||
complete -c cvs -x -a 'watchers' -d (_ "See who is watching a file")
|
||||
|
||||
complete -c cvs -x -s H -d 'Displays usage information for command'
|
||||
complete -c cvs -x -s Q -d 'Cause CVS to be really quiet'
|
||||
complete -c cvs -x -s q -d 'Cause CVS to be somewhat quiet'
|
||||
complete -c cvs -x -s r -d 'Make checked-out files read-only'
|
||||
complete -c cvs -x -s w -d 'Make checked-out files read-write (default)'
|
||||
complete -c cvs -x -s n -d 'Do not execute anything that will change the disk'
|
||||
complete -c cvs -x -s t -d 'Show trace of program execution -- try with -n'
|
||||
complete -c cvs -x -s v -d 'CVS version and copyright'
|
||||
complete -c cvs -x -s T -r -d 'Use "tmpdir" for temporary files'
|
||||
complete -c cvs -x -s e -r -d 'Use "editor" for editing log information'
|
||||
complete -c cvs -x -s d -r -d 'Overrides $CVSROOT as the root of the CVS tree'
|
||||
complete -c cvs -x -s f -d 'Do not use the ~/.cvsrc file'
|
||||
complete -c cvs -x -s z -d 'Compression level for net traffic' -x -a '1 2 3 4 5 6 7 8 9'
|
||||
complete -c cvs -x -s x -d 'Encrypt all net traffic'
|
||||
complete -c cvs -x -s a -d 'Authenticate all net traffic'
|
||||
complete -c cvs -x -s s -d 'Set CVS user variable' -x
|
||||
complete -c cvs -x -s H -d (_ "Displays usage information for command")
|
||||
complete -c cvs -x -s Q -d (_ "Cause CVS to be really quiet")
|
||||
complete -c cvs -x -s q -d (_ "Cause CVS to be somewhat quiet")
|
||||
complete -c cvs -x -s r -d (_ "Make checked-out files read-only")
|
||||
complete -c cvs -x -s w -d (_ "Make checked-out files read-write (default)")
|
||||
complete -c cvs -x -s n -d (_ "Do not execute anything that will change the disk")
|
||||
complete -c cvs -x -s t -d (_ "Show trace of program execution -- try with -n")
|
||||
complete -c cvs -x -s v -d (_ "Display version and exit")
|
||||
complete -c cvs -x -s T -r -d (_ "Use "tmpdir" for temporary files")
|
||||
complete -c cvs -x -s e -r -d (_ "Use "editor" for editing log information")
|
||||
complete -c cvs -x -s d -r -d (_ "Overrides $CVSROOT as the root of the CVS tree")
|
||||
complete -c cvs -x -s f -d (_ "Do not use the ~/.cvsrc file")
|
||||
complete -c cvs -x -s z -d (_ "Compression level for net traffic") -x -a '1 2 3 4 5 6 7 8 9'
|
||||
complete -c cvs -x -s x -d (_ "Encrypt all net traffic")
|
||||
complete -c cvs -x -s a -d (_ "Authenticate all net traffic")
|
||||
complete -c cvs -x -s s -d (_ "Set CVS user variable") -x
|
||||
|
||||
|
||||
@@ -25,177 +25,212 @@ end
|
||||
# If no subcommand has been specified, complete using all available subcommands
|
||||
#
|
||||
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa "
|
||||
initialize\t'Create new project'
|
||||
get\t'Create a local copy of another repository'
|
||||
add\t'Add one or more new files or directories'
|
||||
remove\t'Remove one or more files or directories from the repository'
|
||||
mv\t'Move/rename one or more files or directories'
|
||||
replace\t'Replace a token with a new value for that token'
|
||||
record\t'Save changes in the working copy to the repository as a patch'
|
||||
pull\t'Copy and apply patches from another repository to this one'
|
||||
send\t'Send by email a bundle of one or more patches'
|
||||
apply\t'Apply patches (from an email bundle) to the repository'
|
||||
push\t'Copy and apply patches from this repository to another one'
|
||||
whatsnew\t'Display unrecorded changes in the working copy'
|
||||
changes\t'Gives a changelog style summary of the repo history'
|
||||
unrecord\t'Remove recorded patches without changing the working copy'
|
||||
amend-record\t'Replace a recorded patch with a better version'
|
||||
revert\t'Revert to the recorded version (safe the first time only)'
|
||||
unrevert\t'Undo the last revert (may fail if changes after the revert)'
|
||||
unpull\t'Opposite of pull; unsafe if the patch is not in remote repo'
|
||||
rollback\t'Record an inverse patch without changing the working directory'
|
||||
tag\t'Tag the contents of the repository with a version name'
|
||||
setpref\t'Set a value for a preference (test, predist, ...)'
|
||||
diff\t'Create a diff between two versions of the repository'
|
||||
annotate\t'Display which patch last modified something'
|
||||
optimize\t'Optimize the repository'
|
||||
check\t'Check the repository for consistency'
|
||||
resolve\t'Mark any conflicts to the working copy for manual resolution'
|
||||
dist\t'Create a distribution tarball'
|
||||
trackdown\t'Locate the most recent version lacking an error'
|
||||
repair\t'Repair the corrupted repository'
|
||||
"
|
||||
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'initialize\t"'(_ "Create new project")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'get\t"'(_ "Create a local copy of another repository")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'add\t"'(_ "Add one or more new files or directories")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'remove\t"'(_ "Remove one or more files or directories from the repository")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'mv\t"'(_ "Move/rename one or more files or directories")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'replace\t"'(_ "Replace a token with a new value for that token")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'record\t"'(_ "Save changes in the working copy to the repository as a patch")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'pull\t"'(_ "Copy and apply patches from another repository to this one")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'send\t"'(_ "Send by email a bundle of one or more patches")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'apply\t"'(_ "Apply patches (from an email bundle) to the repository")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'push\t"'(_ "Copy and apply patches from this repository to another one")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'whatsnew\t"'(_ "Display unrecorded changes in the working copy")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'changes\t"'(_ "Gives a changelog style summary of the repo history")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'unrecord\t"'(_ "Remove recorded patches without changing the working copy")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'amend-record\t"'(_ "Replace a recorded patch with a better version")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'revert\t"'(_ "Revert to the recorded version (safe the first time only)" )'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'unrevert\t"'(_ "Undo the last revert (may fail if changes after the revert)")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'unpull\t"'(_ "Opposite of pull; unsafe if the patch is not in remote repo")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'rollback\t"'(_ "Record an inverse patch without changing the working copy" )'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'tag\t"'(_ "Tag the contents of the repository with a version name")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'setpref\t"'(_ "Set a value for a preference (test, predist, ...)")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'diff\t"'(_ "Create a diff between two versions of the repository")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'annotate\t"'(_ "Display which patch last modified something")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'optimize\t"'(_ "Optimize the repository")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'check\t"'(_ "Check the repository for consistency")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'resolve\t"'(_ "Mark any conflicts to the working copy for manual resolution")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'dist\t"'(_ "Create a distribution tarball")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'trackdown\t"'(_ "Locate the most recent version lacking an error")'"'
|
||||
complete -c darcs -n '__fish_use_subcommand' -xa 'repair\t"'(_ "Repair the corrupted repository")'"'
|
||||
|
||||
#
|
||||
# These switches are universal
|
||||
#
|
||||
complete -c darcs -s h -l help -d "shows brief description of command and its arguments"
|
||||
complete -c darcs -l disable -d "Disable this command"
|
||||
complete -c darcs -l repodir -d "Specify the repository directory in which to run" -x -a '(__fish_complete_directory (commandline -ct))'
|
||||
complete -c darcs -s v -l verbose -d "give verbose output"
|
||||
complete -c darcs -s h -l help -d (_ "Shows brief description of command and its arguments")
|
||||
complete -c darcs -l disable -d (_ "Disable this command")
|
||||
complete -c darcs -l repodir -d (_ "Specify the repository directory in which to run") -x -a '(__fish_complete_directory (commandline -ct))'
|
||||
complete -c darcs -s v -l verbose -d (_ "Verbose mode")
|
||||
complete -c darcs -l standard-verbosity -d (_ "Neither verbose nor quiet output")
|
||||
|
||||
#
|
||||
# Here follows a huge list of subcommand-specific completions
|
||||
# Here follows a huge list of subcommand-specific completions. These are incomplete.
|
||||
#
|
||||
|
||||
set -- record_opt -c darcs -n 'contains record (commandline -poc)'
|
||||
complete $record_opt -s m -l patch-name -d "Name of patch" -x
|
||||
complete $record_opt -s A -l author -d "Specify author id" -x
|
||||
complete $record_opt -l logfile -d "Give patch name and comment in file" -r
|
||||
complete $record_opt -s a -l all -d "answer yes to all patches"
|
||||
complete $record_opt -s l -l look-for-adds -d "In addition to modifications, look for files that are not boring, and thus are potentially pending addition"
|
||||
complete $record_opt -l delete-logfile -d "Delete the logfile when done"
|
||||
complete $record_opt -l standard-verbosity -d "Don"\'"t give verbose output"
|
||||
complete $record_opt -l no-test -d "Don"\'"t run the test script"
|
||||
complete $record_opt -l test -d "Run the test script"
|
||||
complete $record_opt -l leave-test-directory -d "Don"\'"t remove the test directory"
|
||||
complete $record_opt -l remove-test-directory -d "Remove the test directory"
|
||||
complete $record_opt -l compress -d "Create compressed patches"
|
||||
complete $record_opt -l dont-compress -d "Don"\'"t create compressed patches"
|
||||
complete $record_opt -l pipe -d "Expect to receive input from a pipe"
|
||||
complete $record_opt -l interactive -d "Prompt user interactively"
|
||||
complete $record_opt -l ask-deps -d "Ask for extra dependencies"
|
||||
complete $record_opt -l no-ask-deps -d "Don"\'"t ask for extra dependencies"
|
||||
complete $record_opt -l edit-long-comment -d "Edit the long comment by default"
|
||||
complete $record_opt -l skip-long-comment -d "Don"\'"t give a long comment"
|
||||
complete $record_opt -l prompt-long-comment -d "Prompt for whether to edit the long comment"
|
||||
complete $record_opt -l ignore-times -d "Don"\'"t trust the file modification times"
|
||||
complete $record_opt -l dont-look-for-adds -d "Don"\'"t look for any files or directories that could be added, and don"\'"t add them automatically"
|
||||
set -e record_opt
|
||||
set -l record_opt -c darcs -n 'contains record (commandline -poc)'
|
||||
complete $record_opt -s m -l patch-name -d (_ "Name of patch") -x
|
||||
complete $record_opt -s A -l author -d (_ "Specify author id") -x
|
||||
complete $record_opt -l logfile -d (_ "Give patch name and comment in file") -r
|
||||
complete $record_opt -s a -l all -d (_ "Answer yes to all patches")
|
||||
complete $record_opt -s l -l look-for-adds -d (_ "In addition to modifications, look for files that are not boring, and thus are potentially pending addition")
|
||||
complete $record_opt -l delete-logfile -d (_ "Delete the logfile when done")
|
||||
complete $record_opt -l no-test -d (_ "Don't run the test script")
|
||||
complete $record_opt -l test -d (_ "Run the test script")
|
||||
complete $record_opt -l leave-test-directory -d (_ "Don't remove the test directory")
|
||||
complete $record_opt -l remove-test-directory -d (_ "Remove the test directory")
|
||||
complete $record_opt -l compress -d (_ "Create compressed patches")
|
||||
complete $record_opt -l dont-compress -d (_ "Don't create compressed patches")
|
||||
complete $record_opt -l pipe -d (_ "Expect to receive input from a pipe")
|
||||
complete $record_opt -l interactive -d (_ "Prompt user interactively")
|
||||
complete $record_opt -l ask-deps -d (_ "Ask for extra dependencies")
|
||||
complete $record_opt -l no-ask-deps -d (_ "Don't ask for extra dependencies")
|
||||
complete $record_opt -l edit-long-comment -d (_ "Edit the long comment by default")
|
||||
complete $record_opt -l skip-long-comment -d (_ "Don't give a long comment")
|
||||
complete $record_opt -l prompt-long-comment -d (_ "Prompt for whether to edit the long comment")
|
||||
complete $record_opt -l ignore-times -d (_ "Don't trust the file modification times")
|
||||
complete $record_opt -l dont-look-for-adds -d (_ "Don't look for any files or directories that could be added, and don't add them automatically")
|
||||
|
||||
|
||||
set -- pull_opt -c darcs -n 'contains pull (commandline -poc)'
|
||||
complete $pull_opt -s p -l patches -d "select patches matching REGEXP" -x
|
||||
complete $pull_opt -s t -l tags -d "select tags matching REGEXP" -x
|
||||
complete $pull_opt -s a -l all -d "answer yes to all patches"
|
||||
complete $pull_opt -s s -l summary -d "summarize changes"
|
||||
complete $pull_opt -s q -l quiet -d "suppress informational output"
|
||||
complete $pull_opt -l matches -d "select patches matching PATTERN" -x
|
||||
complete $pull_opt -l external-merge -d "Use external tool to merge conflicts" -x
|
||||
complete $pull_opt -l interactive -d "prompt user interactively"
|
||||
complete $pull_opt -l compress -d "create compressed patches"
|
||||
complete $pull_opt -l dont-compress -d "don"\'"t create compressed patches"
|
||||
complete $pull_opt -l test -d "run the test script"
|
||||
complete $pull_opt -l no-test -d "don"\'"t run the test script"
|
||||
complete $pull_opt -l dry-run -d "don"\'"t actually take the action"
|
||||
complete $pull_opt -l no-summary -d "don"\'"t summarize changes"
|
||||
complete $pull_opt -l standard-verbosity -d "neither verbose nor quiet output"
|
||||
complete $pull_opt -l ignore-times -d "don"\'"t trust the file modification times"
|
||||
complete $pull_opt -l no-deps -d "don"\'"t automatically fulfill dependencies"
|
||||
complete $pull_opt -l set-default -d "set default repository [DEFAULT]"
|
||||
complete $pull_opt -l no-set-default -d "don"\'"t set default repository"
|
||||
complete $pull_opt -l set-scripts-executable -d "make scripts executable"
|
||||
complete $pull_opt -l dont-set-scripts-executable -d "don"\'"t make scripts executable"
|
||||
set -e pull_opt
|
||||
set -l pull_opt -c darcs -n 'contains pull (commandline -poc)'
|
||||
complete $pull_opt -s p -l patches -d (_ "Select patches matching REGEXP") -x
|
||||
complete $pull_opt -s t -l tags -d (_ "Select tags matching REGEXP") -x
|
||||
complete $pull_opt -s a -l all -d (_ "Answer yes to all patches")
|
||||
complete $pull_opt -s s -l summary -d (_ "Summarize changes")
|
||||
complete $pull_opt -s q -l quiet -d (_ "Suppress informational output")
|
||||
complete $pull_opt -l matches -d (_ "Select patches matching PATTERN") -x
|
||||
complete $pull_opt -l external-merge -d (_ "Use external tool to merge conflicts") -x
|
||||
complete $pull_opt -l interactive -d (_ "Prompt user interactively")
|
||||
complete $pull_opt -l compress -d (_ "Create compressed patches")
|
||||
complete $pull_opt -l dont-compress -d (_ "Don't create compressed patches")
|
||||
complete $pull_opt -l test -d (_ "Run the test script")
|
||||
complete $pull_opt -l no-test -d (_ "Don't run the test script")
|
||||
complete $pull_opt -l dry-run -d (_ "Don't actually take the action")
|
||||
complete $pull_opt -l no-summary -d (_ "Don't summarize changes")
|
||||
complete $pull_opt -l ignore-times -d (_ "Don't trust the file modification times")
|
||||
complete $pull_opt -l no-deps -d (_ "Don't automatically fulfill dependencies")
|
||||
complete $pull_opt -l set-default -d (_ "Set default repository [DEFAULT]")
|
||||
complete $pull_opt -l no-set-default -d (_ "Don't set default repository")
|
||||
complete $pull_opt -l set-scripts-executable -d (_ "Make scripts executable")
|
||||
complete $pull_opt -l dont-set-scripts-executable -d (_ "Don't make scripts executable")
|
||||
|
||||
|
||||
set -- apply_opt -c darcs -n 'contains apply (commandline -poc)'
|
||||
complete $apply_opt -s a -l all -d "answer yes to all patches"
|
||||
complete $apply_opt -l verify -d "verify that the patch was signed by a key in PUBRING" -r
|
||||
complete $apply_opt -l verify-ssl -d "verify using openSSL with authorized keys from file "\'"KEYS"\'"" -r
|
||||
complete $apply_opt -l sendmail-command -d "specify sendmail command" -r
|
||||
complete $apply_opt -l reply -d "reply to email-based patch using FROM address" -x
|
||||
complete $apply_opt -l cc -d "mail results to additional EMAIL(s). Requires --reply" -x
|
||||
complete $apply_opt -l external-merge -d "Use external tool to merge conflicts" -r
|
||||
complete $apply_opt -l no-verify -d "don"\'"t verify patch signature"
|
||||
complete $apply_opt -l standard-verbosity -d "don"\'"t give verbose output"
|
||||
complete $apply_opt -l ignore-times -d "don"\'"t trust the file modification times"
|
||||
complete $apply_opt -l compress -d "create compressed patches"
|
||||
complete $apply_opt -l dont-compress -d "don"\'"t create compressed patches"
|
||||
complete $apply_opt -l interactive -d "prompt user interactively"
|
||||
complete $apply_opt -l mark-conflicts -d "mark conflicts"
|
||||
complete $apply_opt -l allow-conflicts -d "allow conflicts, but don"\'"t mark them"
|
||||
complete $apply_opt -l no-resolve-conflicts -d "equivalent to --dont-allow-conflicts, for backwards compatibility"
|
||||
complete $apply_opt -l dont-allow-conflicts -d "fail on patches that create conflicts [DEFAULT]"
|
||||
complete $apply_opt -l no-test -d "don"\'"t run the test script"
|
||||
complete $apply_opt -l test -d "run the test script"
|
||||
complete $apply_opt -l happy-forwarding -d "forward unsigned messages without extra header"
|
||||
complete $apply_opt -l leave-test-directory -d "don"\'"t remove the test directory"
|
||||
complete $apply_opt -l remove-test-directory -d "remove the test directory"
|
||||
complete $apply_opt -l set-scripts-executable -d "make scripts executable"
|
||||
complete $apply_opt -l dont-set-scripts-executable -d "don"\'"t make scripts executable"
|
||||
set -e apply_opt
|
||||
set -l apply_opt -c darcs -n 'contains apply (commandline -poc)'
|
||||
complete $apply_opt -s a -l all -d (_ "Answer yes to all patches")
|
||||
complete $apply_opt -l verify -d (_ "Verify that the patch was signed by a key in PUBRING") -r
|
||||
complete $apply_opt -l verify-ssl -d (_ "Verify using openSSL with authorized keys from specified file") -r
|
||||
complete $apply_opt -l sendmail-command -d (_ "Specify sendmail command") -r
|
||||
complete $apply_opt -l reply -d (_ "Reply to email-based patch using FROM address") -x
|
||||
complete $apply_opt -l cc -d (_ "Mail results to additional EMAIL(s). Requires --reply") -x
|
||||
complete $apply_opt -l external-merge -d (_ "Use external tool to merge conflicts") -r
|
||||
complete $apply_opt -l no-verify -d (_ "Don't verify patch signature")
|
||||
complete $apply_opt -l ignore-times -d (_ "Don't trust the file modification times")
|
||||
complete $apply_opt -l compress -d (_ "Create compressed patches")
|
||||
complete $apply_opt -l dont-compress -d (_ "Don't create compressed patches")
|
||||
complete $apply_opt -l interactive -d (_ "Prompt user interactively")
|
||||
complete $apply_opt -l mark-conflicts -d (_ "Mark conflicts")
|
||||
complete $apply_opt -l allow-conflicts -d (_ "Allow conflicts, but don't mark them")
|
||||
complete $apply_opt -l dont-allow-conflicts -d (_ "Fail on patches that create conflicts [DEFAULT]")
|
||||
complete $apply_opt -l no-test -d (_ "Don't run the test script")
|
||||
complete $apply_opt -l test -d (_ "Run the test script")
|
||||
complete $apply_opt -l happy-forwarding -d (_ "Forward unsigned messages without extra header")
|
||||
complete $apply_opt -l leave-test-directory -d (_ "Don't remove the test directory")
|
||||
complete $apply_opt -l remove-test-directory -d (_ "Remove the test directory")
|
||||
complete $apply_opt -l set-scripts-executable -d (_ "Make scripts executable")
|
||||
complete $apply_opt -l dont-set-scripts-executable -d (_ "Don't make scripts executable")
|
||||
|
||||
set -- check_opt -c darcs -n 'contains check (commandline -poc)'
|
||||
complete $check_opt -s v -l verbose -d "give verbose output"
|
||||
complete $check_opt -s q -l quiet -d "suppress informational output"
|
||||
complete $check_opt -l complete -d "check the entire repository"
|
||||
complete $check_opt -l partial -d "check patches since latest checkpoint"
|
||||
complete $check_opt -l standard-verbosity -d "neither verbose nor quiet output"
|
||||
complete $check_opt -l no-test -d "don"\'"t run the test script"
|
||||
complete $check_opt -l test -d "run the test script"
|
||||
complete $check_opt -l leave-test-directory -d "don"\'"t remove the test directory"
|
||||
complete $check_opt -l remove-test-directory -d "remove the test directory"
|
||||
set -e check_opt
|
||||
|
||||
set -- mv_opt -c darcs -n 'contains mv (commandline -poc)'
|
||||
complete $mv_opt -s v -l verbose -d "give verbose output"
|
||||
complete $mv_opt -l case-ok -d "don"\'"t refuse to add files differing only in case"
|
||||
complete $mv_opt -l standard-verbosity -d "don"\'"t give verbose output"
|
||||
set -e mv_opt
|
||||
set -l check_opt -c darcs -n 'contains check (commandline -poc)'
|
||||
complete $check_opt -s v -l verbose -d (_ "Verbose mode")
|
||||
complete $check_opt -s q -l quiet -d (_ "Suppress informational output")
|
||||
complete $check_opt -l complete -d (_ "Check the entire repository")
|
||||
complete $check_opt -l partial -d (_ "Check patches since latest checkpoint")
|
||||
complete $check_opt -l no-test -d (_ "Don't run the test script")
|
||||
complete $check_opt -l test -d (_ "Run the test script")
|
||||
complete $check_opt -l leave-test-directory -d (_ "Don't remove the test directory")
|
||||
complete $check_opt -l remove-test-directory -d (_ "Remove the test directory")
|
||||
|
||||
set -- send_opt -c darcs -n 'contains send (commandline -poc)'
|
||||
complete $send_opt -s v -l verbose -d "give verbose output"
|
||||
complete $send_opt -s q -l quiet -d "suppress informational output"
|
||||
complete $send_opt -xs p -l patches -d "select patches matching REGEXP"
|
||||
complete $send_opt -xs t -l tags -d "select tags matching REGEXP"
|
||||
complete $send_opt -s a -l all -d "answer yes to all patches"
|
||||
complete $send_opt -xs A -l author -d "specify author id"
|
||||
complete $send_opt -rs o -l output -d "specify output filename"
|
||||
complete $send_opt -s u -l unified -d "output patch in a darcs-specific format similar to diff -u"
|
||||
complete $send_opt -s s -l summary -d "summarize changes"
|
||||
complete $send_opt -l standard-verbosity -d "neither verbose nor quiet output"
|
||||
complete $send_opt -xl matches -d "select patches matching PATTERN"
|
||||
complete $send_opt -l interactive -d "prompt user interactively"
|
||||
complete $send_opt -xl from -d "specify email address"
|
||||
complete $send_opt -xl to -d "specify destination email"
|
||||
complete $send_opt -xl cc -d "mail results to additional EMAIL(s). Requires --reply"
|
||||
complete $send_opt -l sign -d "sign the patch with your gpg key"
|
||||
complete $send_opt -xl sign-as -d "sign the patch with a given keyid"
|
||||
complete $send_opt -rl sign-ssl -d "sign the patch using openssl with a given private key"
|
||||
complete $send_opt -l dont-sign -d "do not sign the patch"
|
||||
complete $send_opt -l dry-run -d "don"\'"t actually take the action"
|
||||
complete $send_opt -l no-summary -d "don"\'"t summarize changes"
|
||||
complete $send_opt -rl context -d "send to context stored in FILENAME"
|
||||
complete $send_opt -l edit-description -d "edit the patch bundle description"
|
||||
complete $send_opt -l set-default -d "set default repository [DEFAULT]"
|
||||
complete $send_opt -l no-set-default -d "don"\'"t set default repository"
|
||||
complete $send_opt -rl sendmail-command -d "specify sendmail command"
|
||||
set -e send_opt
|
||||
|
||||
set -- init_opt -c darcs -n 'contains initialize (commandline -poc)'
|
||||
complete $init_opt -l plain-pristine-tree -d "Use a plain pristine tree [DEFAULT]"
|
||||
complete $init_opt -l no-pristine-tree -d "Use no pristine tree"
|
||||
set -e init_opt
|
||||
set -l mv_opt -c darcs -n 'contains mv (commandline -poc)'
|
||||
complete $mv_opt -s v -l verbose -d (_ "Verbose mode")
|
||||
complete $mv_opt -l case-ok -d (_ "Don't refuse to add files differing only in case")
|
||||
|
||||
|
||||
set -l send_opt -c darcs -n 'contains send (commandline -poc)'
|
||||
complete $send_opt -s v -l verbose -d (_ "Verbose mode")
|
||||
complete $send_opt -s q -l quiet -d (_ "Suppress informational output")
|
||||
complete $send_opt -xs p -l patches -d (_ "Select patches matching REGEXP")
|
||||
complete $send_opt -xs t -l tags -d (_ "Select tags matching REGEXP")
|
||||
complete $send_opt -s a -l all -d (_ "Answer yes to all patches")
|
||||
complete $send_opt -xs A -l author -d (_ "Specify author id")
|
||||
complete $send_opt -rs o -l output -d (_ "Specify output filename")
|
||||
complete $send_opt -s u -l unified -d (_ "Output patch in a darcs-specific format similar to diff -u")
|
||||
complete $send_opt -s s -l summary -d (_ "Summarize changes")
|
||||
complete $send_opt -xl matches -d (_ "Select patches matching PATTERN")
|
||||
complete $send_opt -l interactive -d (_ "Prompt user interactively")
|
||||
complete $send_opt -xl from -d (_ "Specify email address")
|
||||
complete $send_opt -xl to -d (_ "Specify destination email")
|
||||
complete $send_opt -xl cc -d (_ "Mail results to additional EMAIL(s). Requires --reply")
|
||||
complete $send_opt -l sign -d (_ "Sign the patch with your gpg key")
|
||||
complete $send_opt -xl sign-as -d (_ "Sign the patch with a given keyid")
|
||||
complete $send_opt -rl sign-ssl -d (_ "Sign the patch using openssl with a given private key")
|
||||
complete $send_opt -l dont-sign -d (_ "Do not sign the patch")
|
||||
complete $send_opt -l dry-run -d (_ "Don't actually take the action")
|
||||
complete $send_opt -l no-summary -d (_ "Don't summarize changes")
|
||||
complete $send_opt -rl context -d (_ "Send to context stored in FILENAME")
|
||||
complete $send_opt -l edit-description -d (_ "Edit the patch bundle description")
|
||||
complete $send_opt -l set-default -d (_ "Set default repository [DEFAULT]")
|
||||
complete $send_opt -l no-set-default -d (_ "Don't set default repository")
|
||||
complete $send_opt -rl sendmail-command -d (_ "Specify sendmail command")
|
||||
|
||||
|
||||
set -l init_opt -c darcs -n 'contains initialize (commandline -poc)'
|
||||
complete $init_opt -l plain-pristine-tree -d (_ "Use a plain pristine tree [DEFAULT]")
|
||||
complete $init_opt -l no-pristine-tree -d (_ "Use no pristine tree")
|
||||
|
||||
|
||||
set -l annotate_opt -c darcs -n 'contains annotate (commandline -poc)'
|
||||
complete $annotate_opt -s s -l summary -d (_ "Summarize changes")
|
||||
complete $annotate_opt -l no-summary -d (_ "Don't summarize changes")
|
||||
complete $annotate_opt -s u -l unified -d (_ "Output patch in a darcs-specific format similar to diff -u")
|
||||
complete $annotate_opt -l human-readable -d (_ "Give human readable output")
|
||||
complete $annotate_opt -l xml-output -d (_ "Generate XML formatted output")
|
||||
complete $annotate_opt -l match -x -d (_ "Select patch matching PATTERN")
|
||||
complete $annotate_opt -s p -l patch -x -d (_ "Select patch matching REGEXP")
|
||||
complete $annotate_opt -s t -l tag -x -d (_ "Select tag matching REGEXP")
|
||||
complete $annotate_opt -l creator-hash -x -d (_ "Specify hash of creator patch (see docs)")
|
||||
|
||||
|
||||
set -l changes_opt -c darcs -n 'contains changes (commandline -poc)'
|
||||
complete $changes_opt -l to-match -x -d (_ "Select changes up to a patch matching PATTERN")
|
||||
complete $changes_opt -l to-patch -x -d (_ "Select changes up to a patch matching REGEXP")
|
||||
complete $changes_opt -l to-tag -x -d (_ "Select changes up to a tag matching REGEXP")
|
||||
complete $changes_opt -l from-match -x -d (_ "Select changes starting with a patch matching PATTERN")
|
||||
complete $changes_opt -l from-patch -x -d (_ "Select changes starting with a patch matching REGEXP")
|
||||
complete $changes_opt -l from-tag -x -d (_ "Select changes starting with a tag matching REGEXP")
|
||||
complete $changes_opt -l last -x -d (_ "Select the last NUMBER patches")
|
||||
complete $changes_opt -l matches -x -d (_ "Select patches matching PATTERN")
|
||||
complete $changes_opt -s p -l patches -x -d (_ "Select patches matching REGEXP")
|
||||
complete $changes_opt -s t -l tags -x -d (_ "Select tags matching REGEXP")
|
||||
complete $changes_opt -l context -d (_ "Give output suitable for get --context")
|
||||
complete $changes_opt -l xml-output -d (_ "Generate XML formatted output")
|
||||
complete $changes_opt -l human-readable -d (_ "Give human-readable output")
|
||||
complete $changes_opt -s s -l summary -d (_ "Summarize changes")
|
||||
complete $changes_opt -l no-summary -d (_ "Don't summarize changes")
|
||||
complete $changes_opt -s q -l quiet -d (_ "Suppress informational output")
|
||||
complete $changes_opt -l reverse -d (_ "Show changes in reverse order")
|
||||
complete $changes_opt -l repo -x -d (_ "Specify the repository URL")
|
||||
|
||||
|
||||
set -l add_opt -c darcs -n 'contains add (commandline -poc)'
|
||||
complete $add_opt -l boring -d (_ "Don't skip boring files")
|
||||
complete $add_opt -l case-ok -d (_ "Don't refuse to add files differing only in case")
|
||||
complete $add_opt -s r -l recursive -d (_ "Add contents of subdirectories")
|
||||
complete $add_opt -l not-recursive -d (_ "Don't add contents of subdirectories")
|
||||
complete $add_opt -l date-trick -d (_ "Add files with date appended to avoid conflict. [EXPERIMENTAL]")
|
||||
complete $add_opt -l no-date-trick -d (_ "Don't use experimental date appending trick. [DEFAULT]")
|
||||
complete $add_opt -s q -l quiet -d (_ "Suppress informational output")
|
||||
complete $add_opt -l dry-run -d (_ "Don't actually take the action")
|
||||
complete $add_opt -s q -l quiet -d (_ "Suppress informational output")
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
complete -c date -s d -l date -d "Display date described by string" -x
|
||||
complete -c date -s f -l file -d "Display date for each line in file" -r
|
||||
complete -c date -s I -l iso-8601 -d "Output in ISO 8601 format" -x -a "date hours minutes seconds"
|
||||
complete -c date -s s -l set -d "Set time" -x
|
||||
complete -c date -s R -l rfc-2822 -d "Output RFC-2822 compliant date string"
|
||||
complete -c date -s r -l reference -d "display the last modification time of file" -r
|
||||
complete -c date -s u -l utc -d "print or set Coordinated Universal Time"
|
||||
complete -c date -l universal -d "print or set Coordinated Universal Time"
|
||||
complete -c date -s h -l help -d "Display help and exit"
|
||||
complete -c date -s v -l version -d "Display version and exit"
|
||||
complete -c date -s d -l date -d (_ "Display date described by string") -x
|
||||
complete -c date -s f -l file -d (_ "Display date for each line in file") -r
|
||||
complete -c date -s I -l iso-8601 -d (_ "Output in ISO 8601 format") -x -a "date hours minutes seconds"
|
||||
complete -c date -s s -l set -d (_ "Set time") -x
|
||||
complete -c date -s R -l rfc-2822 -d (_ "Output RFC-2822 compliant date string")
|
||||
complete -c date -s r -l reference -d (_ "Display the last modification time of file") -r
|
||||
complete -c date -s u -l utc -d (_ "Print or set Coordinated Universal Time")
|
||||
complete -c date -l universal -d (_ "Print or set Coordinated Universal Time")
|
||||
complete -c date -s h -l help -d (_ "Display help and exit")
|
||||
complete -c date -s v -l version -d (_ "Display version and exit")
|
||||
|
||||
|
||||
@@ -1,18 +1,43 @@
|
||||
#
|
||||
# Completions for df
|
||||
#
|
||||
|
||||
#
|
||||
# Completions for mount define the $__fish_filesystems variable
|
||||
#
|
||||
complete -y mount
|
||||
|
||||
complete -c df -s a -l all -d "Include empty filesystems"
|
||||
complete -c df -s B -l block-size -r -d "Block size"
|
||||
complete -c df -s h -l human-readable -d "Human readable sizes"
|
||||
complete -c df -s H -l si -d "Human readable sizes, powers of 1000"
|
||||
complete -c df -s i -l inodes -d "List inode information"
|
||||
complete -c df -s k -d "Use 1KB block size"
|
||||
complete -c df -s l -l local -d "List only local filesystems"
|
||||
complete -c df -l no-sync -d "Do not sync before getting usage info"
|
||||
complete -c df -s P -l portability -d "Use Posix format"
|
||||
complete -c df -l sync -d "Sync before getting usage info"
|
||||
complete -c df -s t -l type -r -d "Filesystem type" -x -a $__fish_filesystems
|
||||
complete -c df -s T -l print-type -d "Print filesystem type"
|
||||
complete -c df -s x -l exclude-type -d "Excluded filesystem type" -r -x -a $__fish_filesystems
|
||||
complete -c df -l help -d "Display help and exit"
|
||||
complete -c df -l version -d "Display version and exit"
|
||||
#
|
||||
# Test if we are using GNU sed
|
||||
#
|
||||
|
||||
set -l is_gnu
|
||||
df --version >/dev/null ^/dev/null; and set is_gnu --is-gnu
|
||||
|
||||
__fish_gnu_complete -c df -s h -l human-readable -d (_ "Human readable sizes") $is_gnu
|
||||
__fish_gnu_complete -c df -s i -l inodes -d (_ "List inode information") $is_gnu
|
||||
__fish_gnu_complete -c df -s k -d (_ "Use 1kB block size") $is_gnu
|
||||
__fish_gnu_complete -c df -s l -l local -d (_ "List only local filesystems") $is_gnu
|
||||
__fish_gnu_complete -c df -s P -l portability -d (_ "Use Posix format") $is_gnu
|
||||
__fish_gnu_complete -c df -s t -l type -r -d (_ "Show filesystems of specified type") $is_gnu -x -a $__fish_filesystems
|
||||
|
||||
if test -n "$is_gnu"
|
||||
|
||||
complete -c df -s a -l all -d (_ "Include empty filesystems")
|
||||
complete -c df -s B -l block-size -r -d (_ "Block size")
|
||||
complete -c df -s H -l si -d (_ "Human readable sizes, powers of 1000")
|
||||
complete -c df -l no-sync -d (_ "Do not sync before getting usage info")
|
||||
complete -c df -l sync -d (_ "Sync before getting usage info")
|
||||
complete -c df -s T -l print-type -d (_ "Print filesystem type")
|
||||
complete -c df -s x -l exclude-type -d (_ "Excluded filesystem type") -r -x -a $__fish_filesystems
|
||||
complete -c df -l help -d (_ "Display help and exit")
|
||||
complete -c df -l version -d (_ "Display version and exit")
|
||||
|
||||
else
|
||||
|
||||
complete -c df -s a -d (_ "Show all filesystems")
|
||||
complete -c df -s g -d (_ "Show sizes in gigabytes")
|
||||
complete -c df -s m -d (_ "Show sizes in megabytes")
|
||||
complete -c df -s n -d (_ "Print out the previously obtained statistics from the file systems")
|
||||
|
||||
end
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
# Completions for diff
|
||||
complete -c diff -s i -l ignore-case -d "Ignore case differences"
|
||||
complete -c diff -l ignore-file-name-case -d "Ignore case when comparing file names"
|
||||
complete -c diff -l no-ignore-file-name-case -d "Consider case when comparing file names"
|
||||
complete -c diff -s E -l ignore-tab-expansion -d "Ignore changes due to tab expansion"
|
||||
complete -c diff -s b -l ignore-space-change -d "Ignore changes in the amount of white space"
|
||||
complete -c diff -s w -l ignore-all-space -d "Ignore all white space"
|
||||
complete -c diff -s B -l ignore-blank-lines -d "Ignore changes whose lines are all blank"
|
||||
complete -c diff -s I -l ignore-matching-lines -x -d "Ignore changes whose lines match the RE"
|
||||
complete -c diff -s a -l text -d "Treat all files as text"
|
||||
complete -c diff -s r -l recursive -d "Recursively compare subdirectories"
|
||||
complete -c diff -s N -l new-file -d "Treat absent files as empty"
|
||||
complete -c diff -s C -l context -x -d "Output NUM lines of copied context"
|
||||
complete -c diff -s c -d "Output 3 lines of copied context"
|
||||
complete -c diff -s U -l unified -x -d "Output NUM lines of unified context"
|
||||
complete -c diff -s u -d "Output 3 lines of unified context"
|
||||
complete -c diff -s q -l brief -d "Output only whether the files differ"
|
||||
complete -c diff -l normal -d "Output a normal diff"
|
||||
complete -c diff -s y -l side-by-side -d "Output in two columns"
|
||||
complete -c diff -s W -l width -x -d "Output at most NUM print columns"
|
||||
complete -c diff -s d -l minimal -d "Try to find a smaller set of changes"
|
||||
complete -c diff -l from-file -r -d "Compare FILE1 to all operands"
|
||||
complete -c diff -l to-file -r -d "Compare FILE2 to all operands"
|
||||
complete -c diff -s l -l paginate -d "Pass the output through 'pr'"
|
||||
complete -c diff -s v -l version -d "Output version info"
|
||||
complete -c diff -l help -d "Output usage information"
|
||||
complete -c diff -s i -l ignore-case -d (_ "Ignore case differences")
|
||||
complete -c diff -l ignore-file-name-case -d (_ "Ignore case when comparing file names")
|
||||
complete -c diff -l no-ignore-file-name-case -d (_ "Consider case when comparing file names")
|
||||
complete -c diff -s E -l ignore-tab-expansion -d (_ "Ignore changes due to tab expansion")
|
||||
complete -c diff -s b -l ignore-space-change -d (_ "Ignore changes in the amount of white space")
|
||||
complete -c diff -s w -l ignore-all-space -d (_ "Ignore all white space")
|
||||
complete -c diff -s B -l ignore-blank-lines -d (_ "Ignore changes whose lines are all blank")
|
||||
complete -c diff -s I -l ignore-matching-lines -x -d (_ "Ignore changes whose lines match the REGEX")
|
||||
complete -c diff -s a -l text -d (_ "Treat all files as text")
|
||||
complete -c diff -s r -l recursive -d (_ "Recursively compare subdirectories")
|
||||
complete -c diff -s N -l new-file -d (_ "Treat absent files as empty")
|
||||
complete -c diff -s C -l context -x -d (_ "Output NUM lines of copied context")
|
||||
complete -c diff -s c -d (_ "Output 3 lines of copied context")
|
||||
complete -c diff -s U -l unified -x -d (_ "Output NUM lines of unified context")
|
||||
complete -c diff -s u -d (_ "Output 3 lines of unified context")
|
||||
complete -c diff -s q -l brief -d (_ "Output only whether the files differ")
|
||||
complete -c diff -l normal -d (_ "Output a normal diff")
|
||||
complete -c diff -s y -l side-by-side -d (_ "Output in two columns")
|
||||
complete -c diff -s W -l width -x -d (_ "Output at most NUM print columns")
|
||||
complete -c diff -s d -l minimal -d (_ "Try to find a smaller set of changes")
|
||||
complete -c diff -l from-file -r -d (_ "Compare FILE1 to all operands")
|
||||
complete -c diff -l to-file -r -d (_ "Compare FILE2 to all operands")
|
||||
complete -c diff -s l -l paginate -d (_ "Pass the output through 'pr'")
|
||||
complete -c diff -s v -l version -d (_ "Display version and exit")
|
||||
complete -c diff -l help -d (_ "Display help and exit")
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
complete -c du -s a -l all -d "Write size for all files"
|
||||
complete -c du -l apparent-size -d "Print file size, not disk usage"
|
||||
complete -c du -s B -l block-size -d "Block size"
|
||||
complete -c du -s b -l bytes -d "Use 1B block size"
|
||||
complete -c du -s c -l total -d "Produce grand total"
|
||||
complete -c du -s D -l dereference-args -d "Dereference file symlinks"
|
||||
complete -c du -s h -l human-readable -d "Human readable sizes"
|
||||
complete -c du -s H -l si -d "Human readable sizes, powers of 1000"
|
||||
complete -c du -s k -d "Use iKB block size"
|
||||
complete -c du -s l -l count-links -d "Count hard links multiple times"
|
||||
complete -c du -s L -l dereference -d "Dereference all symlinks"
|
||||
complete -c du -s S -l separate-dirs -d "Do not include subdirectory size"
|
||||
complete -c du -s s -l summarize -d "Display only a total for each argument"
|
||||
complete -c du -s x -l one-file-system -d "Skip other filesystems"
|
||||
complete -c du -s X -l exclude-from -r -d "Exclude files thet match pattern in file"
|
||||
complete -c du -l exclude -r -d "Exclude files that match pattern"
|
||||
complete -c du -l max-depth -r -d "Recursion limit"
|
||||
complete -c du -l help -d "Display help and exit"
|
||||
complete -c du -l version -d "Display version and exit"
|
||||
complete -c du -s a -l all -d (_ "Write size for all files")
|
||||
complete -c du -l apparent-size -d (_ "Print file size, not disk usage")
|
||||
complete -c du -s B -l block-size -d (_ "Block size")
|
||||
complete -c du -s b -l bytes -d (_ "Use 1B block size")
|
||||
complete -c du -s c -l total -d (_ "Produce grand total")
|
||||
complete -c du -s D -l dereference-args -d (_ "Dereference file symlinks")
|
||||
complete -c du -s h -l human-readable -d (_ "Human readable sizes")
|
||||
complete -c du -s H -l si -d (_ "Human readable sizes, powers of 1000")
|
||||
complete -c du -s k -d (_ "Use 1kB block size")
|
||||
complete -c du -s l -l count-links -d (_ "Count hard links multiple times")
|
||||
complete -c du -s L -l dereference -d (_ "Dereference all symlinks")
|
||||
complete -c du -s S -l separate-dirs -d (_ "Do not include subdirectory size")
|
||||
complete -c du -s s -l summarize -d (_ "Display only a total for each argument")
|
||||
complete -c du -s x -l one-file-system -d (_ "Skip other filesystems")
|
||||
complete -c du -s X -l exclude-from -r -d (_ "Exclude files thet match pattern in file")
|
||||
complete -c du -l exclude -r -d (_ "Exclude files that match pattern")
|
||||
complete -c du -l max-depth -r -d (_ "Recursion limit")
|
||||
complete -c du -l help -d (_ "Display help and exit")
|
||||
complete -c du -l version -d (_ "Display version and exit")
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
complete -c echo -s n -d "No newline"
|
||||
complete -c echo -s e -d "Use backslashe-escaped characters"
|
||||
complete -c echo -s E -d "Do not use backslash escaped characters"
|
||||
complete -c echo -l help -d "Display help and exit"
|
||||
complete -c echo -l version -d "Display version and exit"
|
||||
complete -c echo -s n -d (_ "No newline")
|
||||
complete -c echo -s e -d (_ "Use backslash escaped characters")
|
||||
complete -c echo -s E -d (_ "Do not use backslash escaped characters")
|
||||
complete -c echo -l help -d (_ "Display help and exit")
|
||||
complete -c echo -l version -d (_ "Display version and exit")
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#
|
||||
# These completions are uncomplete
|
||||
#
|
||||
complete -c emacs -s q -d "Do not load init files"
|
||||
complete -c emacs -s u -d "Load users init file" -xa "(__fish_complete_users)"
|
||||
complete -c emacs -s t -d "Use file as terminal" -r
|
||||
complete -c emacs -s f -d "Execute Lisp function" -x
|
||||
complete -c emacs -s l -d "Load Lisp code from file" -r
|
||||
complete -c emacs -o nw -d "Do not use X interface"
|
||||
complete -uc emacs -s d -o display -d "Create window on the specified display" -x
|
||||
complete -c emacs -s q -d (_ "Do not load init files")
|
||||
complete -c emacs -s u -d (_ "Load users init file") -xa "(__fish_complete_users)"
|
||||
complete -c emacs -s t -d (_ "Use file as terminal") -r
|
||||
complete -c emacs -s f -d (_ "Execute Lisp function") -x
|
||||
complete -c emacs -s l -d (_ "Load Lisp code from file") -r
|
||||
complete -c emacs -o nw -d (_ "Do not use X interface")
|
||||
complete -uc emacs -s d -o display -d (_ "Create window on the specified display") -x
|
||||
|
||||
68
init/completions/emerge.fish
Normal file
68
init/completions/emerge.fish
Normal file
@@ -0,0 +1,68 @@
|
||||
#Completions for emerge
|
||||
|
||||
function __fish_emerge_use_package -d (_ 'Test if emerge command should have packages as potential completion')
|
||||
for i in (commandline -opc)
|
||||
if contains -- $i -a --ask -p --pretend --oneshot -O --nodeps -f --fetchonly
|
||||
return 0
|
||||
end
|
||||
end
|
||||
return 1
|
||||
end
|
||||
|
||||
function __fish_emerge_manipulate_package -d (_ 'Tests if emerge command should have package as potential completion for removal')
|
||||
for i in (commandline -opc)
|
||||
if contains -- $i -u --update -C --unmerge -P --prune
|
||||
return 0
|
||||
end
|
||||
end
|
||||
return 1
|
||||
end
|
||||
|
||||
function __fish_emerge_print_installed_pkgs -d (_ 'Prints completions for installed packages on the system from /var/db/pkg')
|
||||
if test -d /var/db/pkg
|
||||
find /var/db/pkg/ -type d | cut -d'/' -f6 | sort | uniq | sed 's/-[0-9]\{1,\}\..*$//'
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
complete -f -c emerge -n '__fish_emerge_use_package' -a '(__fish_print_packages)' -d (_ 'Package')
|
||||
complete -f -c emerge -n '__fish_emerge_manipulate_package' -a '(__fish_emerge_print_installed_pkgs)' -d (_ 'Package')
|
||||
complete -c emerge -s h -l help -d (_ "Display help and exit")
|
||||
complete -c emerge -s c -l clean -d (_ "Cleans the system by removing outdated packages")
|
||||
complete -c emerge -l depclean -d (_ "Cleans the system by removing packages that are not associated with explicitly merged packages")
|
||||
complete -c emerge -l info -d (_ "Displays important portage variables that will be exported to ebuild.sh when performing merges")
|
||||
complete -c emerge -l metadata -d (_ "Causes portage to process all the metacache files as is normally done on the tail end of an rsync update using emerge --sync")
|
||||
complete -c emerge -s P -l prune -d (_ "Removes all but the most recently installed version of a package from your system")
|
||||
complete -c emerge -l regen -d (_ "Causes portage to check and update the dependency cache of all ebuilds in the portage tree")
|
||||
complete -c emerge -s s -l search -d (_ "Searches for matches of the supplied string in the current local portage tree")
|
||||
complete -c emerge -s C -l unmerge -d (_ "Removes all matching packages completely from your system")
|
||||
complete -c emerge -s a -l ask -d (_ "Before performing the merge, display what ebuilds and tbz2s will be installed, in the same format as when using --pretend")
|
||||
complete -c emerge -s b -l buildpkg -d (_ "Tell emerge to build binary packages for all ebuilds processed in addition to actually merging the packages")
|
||||
complete -c emerge -s B -l buildpkgonly -d (_ "Creates a binary package, but does not merge it to the system")
|
||||
complete -c emerge -s l -l changelog -d (_ "When pretending, also display the ChangeLog entries for packages that will be upgraded")
|
||||
complete -c emerge -l columns -d (_ "Display the pretend output in a tabular form")
|
||||
complete -c emerge -s d -l debug -d (_ "Tell emerge to run the ebuild command in --debug mode")
|
||||
complete -c emerge -s d -l deep -d (_ "When used in conjunction with --update, this flag forces emerge to consider the entire dependency tree of packages, instead of checking only the immediate dependencies of the packages")
|
||||
complete -c emerge -s e -l emptytree -d (_ "Virtually tweaks the tree of installed packages to contain nothing")
|
||||
complete -c emerge -s f -l fetchonly -d (_ "Instead of doing any package building, just perform fetches for all packages (main package as well as all dependencies)")
|
||||
complete -c emerge -l fetch-all-uri -d (_ "Same as --fetchonly except that all package files, including those not required to build the package, will be processed")
|
||||
complete -c emerge -s g -l getbinpkg -d (_ "Using the server and location defined in PORTAGE_BINHOST, portage will download the information from each binary file there and it will use that information to help build the dependency list")
|
||||
complete -c emerge -s G -l getbinpkgonly -d (_ "This option is identical to -g, except it will not use ANY information from the local machine")
|
||||
complete -c emerge -l newuse -d (_ "Tells emerge to include installed packages where USE flags have changed since installation")
|
||||
complete -c emerge -l noconfmem -d (_ "Merge files in CONFIG_PROTECT to the live fs instead of silently dropping them")
|
||||
complete -c emerge -s O -l nodeps -d (_ "Merge specified packages, but don't merge any dependencies")
|
||||
complete -c emerge -s n -l noreplace -d (_ "Skip the packages specified on the command-line that have already been installed")
|
||||
complete -c emerge -l nospinner -d (_ "Disables the spinner regardless of terminal type")
|
||||
complete -c emerge -l oneshot -d (_ "Emerge as normal, but don't add packages to the world profile")
|
||||
complete -c emerge -s o -l onlydeps -d (_ "Only merge (or pretend to merge) the dependencies of the specified packages, not the packages themselves")
|
||||
complete -c emerge -s p -l pretend -d (_ "Do not merge, display what ebuilds and tbz2s would have been installed")
|
||||
complete -c emerge -s q -l quiet -d (_ "Reduced output from portage's displays")
|
||||
complete -c emerge -l resume -d (_ "Resumes the last merge operation")
|
||||
complete -c emerge -s S -l searchdesc -d (_ "Matches the search string against the description field as well the package's name")
|
||||
complete -c emerge -l skipfirst -d (_ "Remove the first package in the resume list so that a merge may continue in the presence of an uncorrectable or inconsequential error")
|
||||
complete -c emerge -s t -l tree -d (_ "Shows the dependency tree using indentation for dependencies")
|
||||
complete -c emerge -s u -l update -d (_ "Updates packages to the best version available")
|
||||
complete -c emerge -s k -l usepkg -d (_ "Tell emerge to use binary packages (from $PKGDIR) if they are available, thus possibly avoiding some time-consuming compiles")
|
||||
complete -c emerge -s K -l usepkgonly -d (_ "Like --usepkg, except this only allows the use of binary packages, and it will abort the emerge if the package is not available at the time of dependency calculation")
|
||||
complete -c emerge -s v -l verbose -d (_ "Increased or expanded display of content in portage's displays")
|
||||
complete -c emerge -s V -l version -d (_ "Displays the currently installed version of portage along with other information useful for quick reference on a system")
|
||||
@@ -1,5 +1,5 @@
|
||||
complete -c fish -s c -l "command" -d "Run fish with this command"
|
||||
complete -c fish -s h -l help -d "Display help and exit"
|
||||
complete -c fish -s v -l version -d "Display version and exit"
|
||||
complete -c fish -s i -l interactive -d "Run in interactive mode"
|
||||
complete -c fish -s p -l profile -d "Output profiling information to specified file" -f
|
||||
complete -c fish -s c -l "command" -d (_ "Run fish with this command")
|
||||
complete -c fish -s h -l help -d (_ "Display help and exit")
|
||||
complete -c fish -s v -l version -d (_ "Display version and exit")
|
||||
complete -c fish -s i -l interactive -d (_ "Run in interactive mode")
|
||||
complete -c fish -s p -l profile -d (_ "Output profiling information to specified file") -f
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
complete -c function -s d -l description -d "Set function description" -x
|
||||
complete -c function -xa "(functions -n)" -d "Function"
|
||||
complete -c function -xa "(builtin -n)" -d "Builtin"
|
||||
complete -c function -s j -l on-job-exit -d "Make the function a job exit event handler" -x
|
||||
complete -c function -s p -l on-process-exit -d "Make the function a process exit event handler" -x
|
||||
complete -c function -s s -l on-signal -d "Make the function a signal event handler" -x
|
||||
complete -c function -s v -l on-variable -d "Make the function a variable update event handler" -x
|
||||
complete -c function -s d -l description -d (_ "Set function description") -x
|
||||
complete -c function -xa "(functions -n)" -d (_ "Function")
|
||||
complete -c function -xa "(builtin -n)" -d (_ "Builtin")
|
||||
complete -c function -s j -l on-job-exit -d (_ "Make the function a job exit event handler") -x
|
||||
complete -c function -s p -l on-process-exit -d (_ "Make the function a process exit event handler") -x
|
||||
complete -c function -s s -l on-signal -d (_ "Make the function a signal event handler") -x
|
||||
complete -c function -s v -l on-variable -d (_ "Make the function a variable update event handler") -x
|
||||
complete -c function -s b -l key-binding -d (_ "Allow dash (-) in function name")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
complete -c functions -s e -l erase -d "Erase function" -x -a "(functions -n)"
|
||||
complete -c functions -xa "(functions -n)" -d "Function"
|
||||
complete -c functions -s a -l all -d "Show hidden functions"
|
||||
complete -c functions -s h -l help -d "Display help and exit"
|
||||
complete -c functions -s d -l description -d "Set function description" -x
|
||||
complete -c functions -s e -l erase -d (_ "Erase function") -x -a "(functions -n)"
|
||||
complete -c functions -xa "(functions -na)" -d (_ "Function")
|
||||
complete -c functions -s a -l all -d (_ "Show hidden functions")
|
||||
complete -c functions -s h -l help -d (_ "Display help and exit")
|
||||
complete -c functions -s d -l description -d (_ "Set function description") -x
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user