diff options
author | Patrick McCarty <patrick.mccarty@linux.intel.com> | 2013-04-12 10:36:08 -0700 |
---|---|---|
committer | Patrick McCarty <patrick.mccarty@linux.intel.com> | 2013-04-12 10:36:08 -0700 |
commit | ea376ff581dd55e756901822fb7239687ba522f9 (patch) | |
tree | fa10c35b2546a862de8ef698f39c38cba886e2f0 /doc | |
download | cscope-upstream.tar.gz cscope-upstream.tar.bz2 cscope-upstream.zip |
Imported Upstream version 15.8aupstream/15.8aupstream
Diffstat (limited to 'doc')
-rw-r--r-- | doc/Makefile.am | 4 | ||||
-rw-r--r-- | doc/Makefile.in | 426 | ||||
-rw-r--r-- | doc/cscope.1 | 591 | ||||
-rw-r--r-- | doc/xcscope.1 | 574 |
4 files changed, 1595 insertions, 0 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..5d45d42 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,4 @@ +## Process this file with automake to produce Makefile.in + +man_MANS = cscope.1 +EXTRA_DIST = $(man_MANS) xcscope.1 diff --git a/doc/Makefile.in b/doc/Makefile.in new file mode 100644 index 0000000..f35b72e --- /dev/null +++ b/doc/Makefile.in @@ -0,0 +1,426 @@ +# Makefile.in generated by automake 1.11.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" +NROFF = nroff +MANS = $(man_MANS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES_INCLUDEDIR = @CURSES_INCLUDEDIR@ +CURSES_LIBS = @CURSES_LIBS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gnome1 = @gnome1@ +gnome2 = @gnome2@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +man_MANS = cscope.1 +EXTRA_DIST = $(man_MANS) xcscope.1 +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" + @list=''; test -n "$(man1dir)" || exit 0; \ + { for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @list='$(MANS)'; if test -n "$$list"; then \ + list=`for p in $$list; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ + if test -n "$$list" && \ + grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ + echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ + grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ + echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ + echo " typically \`make maintainer-clean' will remove them" >&2; \ + exit 1; \ + else :; fi; \ + else :; fi + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) +installdirs: + for dir in "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-man1 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ + uninstall-am uninstall-man uninstall-man1 + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/doc/cscope.1 b/doc/cscope.1 new file mode 100644 index 0000000..6a3a86b --- /dev/null +++ b/doc/cscope.1 @@ -0,0 +1,591 @@ +.PU +.TH CSCOPE "1" "January 2007" "The Santa Cruz Operation" +.SH NAME +cscope - interactively examine a C program +.SH SYNOPSIS +.B cscope +.B [\-bCcdehkLlqRTUuVv] +.BI [\-F symfile ] +.BI [\-f reffile ] +.BI [\-I incdir ] +.BI [\-i namefile ] +.BI [\-0123456789 pattern ] +.BI [\-p n ] +.BI [\-s dir ] +.BI [ files ] +.SH DESCRIPTION +.I cscope +is an interactive, screen-oriented tool that allows the user to +browse through C source files for specified elements of code. +.PP +By default, +.I cscope +examines the C (.c and .h), lex (.l), and yacc (.y) +source files in the current directory. +.I cscope +may also be invoked for +source files named on the command line. In either case, +.I cscope +searches the standard directories for #include files that it does not +find in the current directory. +.I cscope +uses a symbol cross-reference, called +cscope.out by default, to locate functions, function calls, macros, +variables, and preprocessor symbols in the files. +.PP +.I cscope +builds the symbol cross-reference the first time it is used on +the source files for the program being browsed. On a subsequent +invocation, +.I cscope +rebuilds the cross-reference only if a source file +has changed or the list of source files is different. When the +cross-reference is rebuilt, the data for the unchanged files are +copied from the old cross-reference, which makes rebuilding faster +than the initial build. +.SH OPTIONS +Some command line arguments can only occur as the only argument in +the execution of cscope. They cause the program to just print out +some output and exit immediately: +.TP +.B -h +View the long usage help display. +.TP +.B -V +Print on the first line of screen the version number of cscope. +.TP +.B --help +Same as +.B -h +.TP +.B --version +Same as +.B -V + +.PP +The following options can appear in any combination: +.TP +.B -b +Build the cross-reference only. +.TP +.B -C +Ignore letter case when searching. +.TP +.B -c +Use only ASCII characters in the cross-reference file, that is, +do not compress the data. +.TP +.B -d +Do not update the cross-reference. +.TP +.B -e +Suppress the <Ctrl>-e command prompt between files. +.TP +.BI -F symfile +Read symbol reference lines from +.I symfile. +(A symbol reference +file is created by > and >>, and can also be read using the < +command, described under ``Issuing Subsequent Requests'', +below.) +.TP +.BI -f reffile +Use +.I reffile +as the cross-reference file name instead of the default "cscope.out". +.TP +.BI -I incdir +Look in +.I incdir +(before looking in $INCDIR, the standard place +for header files, normally /usr/include) for any #include files +whose names do not begin with ``/'' and that are not specified +on the command line or in +.I namefile +below. (The #include files +may be specified with either double quotes or angle brackets.) +The incdir directory is searched in addition to the current +directory (which is searched first) and the standard list +(which is searched last). If more than one occurrence of -I +appears, the directories are searched in the order they appear +on the command line. +.TP +.BI -i namefile +Browse through all source files whose names are listed in +.I namefile +(file names separated by spaces, tabs, or new-lines) instead of the +default name list file, which is called cscope.files. If this option +is specified, cscope ignores any file names appearing on the command +line. The argument namefile can be set to ``-'' to accept a list of +files from the standard input. Filenames in the namefile that contain +whitespace have to be enclosed in "double quotes". Inside such quoted +filenames, any double-quote and backslash characters have to be +escaped by backslashes. +.TP +.B -k +``Kernel Mode'', turns off the use of the default include dir +(usually /usr/include) when building the database, since kernel +source trees generally do not use it. +.TP +.B -L +Do a single search with line-oriented output when used with the +-num pattern option. +.TP +.B -l +Line-oriented interface (see ``Line-Oriented Interface'' +below). +.TP +.BI -[ "0-9" ] pattern +Go to input field +.I num +(counting from 0) and find +.I pattern. +.TP +.BI -P path +Prepend +.I path +to relative file names in a pre-built cross-reference file so you do +not have to change to the directory where the cross-reference file was +built. This option is only valid with the -d option. +.TP +.BI -p n +Display the last +.I n +file path components instead of the default (1). Use +.I 0 +not to display the file name at all. +.TP +.B -q +Enable fast symbol lookup via an inverted index. This option +causes cscope to create 2 more files (default names +``cscope.in.out'' and ``cscope.po.out'') in addition to the normal +database. This allows a faster symbol search algorithm that +provides noticeably faster lookup performance for large projects. +.TP +.B -R +Recurse subdirectories during search for source files. +.TP +.BI -s dir +Look in +.I dir +for additional source files. This option is ignored if source files +are given on the command line. +.TP +.B -T +Use only the first eight characters to match against C symbols. +A regular expression containing special characters other than a +period (.) will not match any symbol if its minimum length is +greater than eight characters. +.TP +.B -U +Check file time stamps. This option will update the time stamp +on the database even if no files have changed. +.TP +.B -u +Unconditionally build the cross-reference file (assume that all +files have changed). +.TP +.B -v +Be more verbose in line-oriented mode. Output progress updates during +database building and searches. +.TP +.I files +A list of file names to operate on. +.PP +The -I, -c, -k, -p, -q, and -T options can also be in the cscope.files file. +.PP +.SS Requesting the initial search +.PP +After the cross-reference is ready, cscope will display this menu: +.PP +.B Find this C symbol: +.PD 0 +.TP +.B Find this function definition: +.TP +.B Find functions called by this function: +.TP +.B Find functions calling this function: +.TP +.B Find this text string: +.TP +.B Change this text string: +.TP +.B Find this egrep pattern: +.TP +.B Find this file: +.TP +.B Find files #including this file: +.PD 1 +.PP +Press the <Up> or <Down> keys repeatedly to move to the desired input +field, type the text to search for, and then press the <Return> key. +.PP +.SS "Issuing subsequent requests" +If the search is successful, any of these single-character commands +can be used: +.TP +.B 0-9a-zA-Z +Edit the file referenced by the given line number. +.TP +.B <Space> +Display next set of matching lines. +.TP +.B <Tab> +Alternate between the menu and the list of matching lines +.TP +.B <Up> +Move to the previous menu item (if the cursor is in the menu) +or move to the previous matching line (if the cursor is in the +matching line list.) +.TP +.B <Down> +Move to the next menu item (if the cursor is in the menu) +or move to the next matching line (if the cursor is in the +matching line list.) +.TP +.B + +Display next set of matching lines. +.TP +.B - +Display previous set of matching lines. +.TP +.B ^e +Edit displayed files in order. +.TP +.B > +Write the displayed list of lines to a file. +.TP +.B >> +Append the displayed list of lines to a file. +.TP +.B < +Read lines from a file that is in symbol reference format +(created by > or >>), just like the -F option. +.TP +.B ^ +Filter all lines through a shell command and display the +resulting lines, replacing the lines that were already there. +.TP +.B | +Pipe all lines to a shell command and display them without +changing them. +.PP +At any time these single-character commands can also be used: +.TP +.B <Return> +Move to next input field. +.TP +.B ^n +Move to next input field. +.TP +.B ^p +Move to previous input field. +.TP +.B ^y +Search with the last text typed. +.TP +.B ^b +Move to previous input field and search pattern. +.TP +.B ^f +Move to next input field and search pattern. +.TP +.B ^c +Toggle ignore/use letter case when searching. (When ignoring +letter case, search for ``FILE'' will match ``File'' and +``file''.) +.TP +.B ^r +Rebuild the cross-reference. +.TP +.B ! +Start an interactive shell (type ^d to return to cscope). +.TP +.B ^l +Redraw the screen. +.TP +.B ? +Give help information about cscope commands. +.TP +.B ^d +Exit cscope. +.PP +.PP +.B NOTE: If the first character of the text to be searched for matches +.B one of the above commands, escape it by typing a (backslash) first. +.PP +.B Substituting new text for old text +.PP +After the text to be changed has been typed, cscope will prompt for +the new text, and then it will display the lines containing the old +text. Select the lines to be changed with these single-character +commands: +.PP +.TP +.B 0-9a-zA-Z +Mark or unmark the line to be changed. +.TP +.B * +Mark or unmark all displayed lines to be changed. +.TP +.B <Space> +Display next set of lines. +.TP +.B + +Display next set of lines. +.TP +.B - +Display previous set of lines. +.TP +.B a +Mark or unmark all lines to be changed. +.TP +.B ^d +Change the marked lines and exit. +.TP +.B <Esc> +Exit without changing the marked lines. +.TP +.B ! +Start an interactive shell (type ^d to return to cscope). +.TP +.B ^l +Redraw the screen. +.TP +.B ? +Give help information about cscope commands. +.TP +.B Special keys +If your terminal has arrow keys that work in vi, you can use them +to move around the input fields. The up-arrow key is useful to move to +the previous +input field instead of using the <Tab> key repeatedly. If you have +<CLEAR>, <NEXT>, or <PREV> keys they will act as the ^l, +, and - +commands, respectively. +.PP +.SS Line-Oriented interface +.PP +The -l option lets you use cscope where a screen-oriented interface +would not be useful, for example, from another screen-oriented +program. +.PP +cscope will prompt with >> when it is ready for an input line starting +with the field number (counting from 0) immediately followed by the +search pattern, for example, ``lmain'' finds the definition of the +main function. +.PP +If you just want a single search, instead of the -l option use the -L +and -num pattern options, and you won't get the >> prompt. +.PP +For -l, cscope outputs the number of reference lines +cscope: 2 lines +.PP +For each reference found, cscope outputs a line consisting of the file +name, function name, line number, and line text, separated by spaces, +for example, +main.c main 161 main(argc, argv) +.PP +Note that the editor is not called to display a single reference, +unlike the screen-oriented interface. +.PP +You can use the c command to toggle ignore/use letter case when +searching. (When ignoring letter case, search for ``FILE'' will match +``File'' and ``file''.) +.PP +You can use the r command to rebuild the database. +.PP +cscope will quit when it detects end-of-file, or when the first +character of an input line is ``^d'' or ``q''. +.PP +.SH "ENVIRONMENT VARIABLES" +.TP +.B CSCOPE_EDITOR +Overrides the EDITOR and VIEWER variables. Use this if you wish to use +a different editor with cscope than that specified by your +EDITOR/VIEWER variables. +.TP +.B CSCOPE_LINEFLAG +Format of the line number flag for your editor. By default, cscope +invokes your editor via the equivalent of ``editor +N file'', where +``N'' is the line number that the editor should jump to. This format +is used by both emacs and vi. If your editor needs something +different, specify it in this variable, with ``%s'' as a placeholder +for the line number. Ex: if your editor needs to be invoked as +``editor -#103 file'' to go to line 103, set this variable to +``-#%s''. +.TP +.B CSCOPE_LINEFLAG_AFTER_FILE +Set this variable to ``yes'' if your editor needs to be invoked with +the line number option after the filename to be edited. To continue +the example from CSCOPE_LINEFLAG, above: if your editor needs to see +``editor file -#number'', set this environment variable. Users of most +standard editors (vi, emacs) do not need to set this variable. +.TP +.B EDITOR +Preferred editor, which defaults to vi. +.TP +.B HOME +Home directory, which is automatically set at login. +.TP +.B INCLUDEDIRS +Colon-separated list of directories to search for #include +files. +.TP +.B SHELL +Preferred shell, which defaults to sh. +.TP +.B SOURCEDIRS +Colon-separated list of directories to search for additional +source files. +.TP +.B TERM +Terminal type, which must be a screen terminal. +.TP +.B TERMINFO +Terminal information directory full path name. If your terminal +is not in the standard terminfo directory, see curses +and terminfo for how to make your own terminal description. +.TP +.B TMPDIR +Temporary file directory, which defaults to /var/tmp. +.TP +.B VIEWER +Preferred file display program (such as less), which overrides +EDITOR (see above). +.TP +.B VPATH +A colon-separated list of directories, each of which has the +same directory structure below it. If VPATH is set, cscope +searches for source files in the directories specified; if it +is not set, cscope searches only in the current directory. +.PP +.SH FILES +.TP +.B cscope.files +Default files containing -I, -p, -q, and -T options and the +list of source files (overridden by the -i option). +.TP +.B cscope.out +Symbol cross-reference file (overridden by the -f option), +which is put in the home directory if it cannot be created in +the current directory. +.TP +.PD 0 +.B cscope.in.out +.TP +.B cscope.po.out +.PD 1 +Default files containing the inverted index used for quick +symbol searching (-q option). If you use the -f option to +rename the cross-reference file (so it's not cscope.out), the +names for these inverted index files will be created by adding + .in and .po to the name you supply with -f. For example, if you +indicated -f xyz, then these files would be named xyz.in and +xyz.po. +.TP +.B INCDIR +Standard directory for #include files (usually /usr/include). +.SH Notices +.I cscope +recognizes function definitions of the form: +.PD 0 +.TP +fname blank ( args ) white arg_decs white { +.PD 1 +.TP +where: +.I fname +is the function name +.TP +.I blank +is zero or more spaces, tabs, vtabs, form feeds or carriage returns, +not including newlines +.TP +.I args +is any string that does not contain a ``"'' or a newline +.TP +.I white +is zero or more spaces, tabs, vtabs, form feeds, carriage returns or newlines +.TP +.I arg_decs +are zero or more argument declarations (arg_decs may include +comments and white space) +.PP +It is not necessary for a function declaration to start at the +beginning of a line. The return type may precede the function name; +cscope will still recognize the declaration. Function definitions that +deviate from this form will not be recognized by cscope. +.PP +The ``Function'' column of the search output for the menu option Find +functions called by this function: input field will only display the +first function called in the line, that is, for this function +.PP + e() + { + return (f() + g()); + } +.PP +the display would be +.PP + Functions called by this function: e + File Function Line + a.c f 3 return(f() + g()); +.PP +Occasionally, a function definition or call may not be recognized +because of braces inside #if statements. Similarly, the use of a +variable may be incorrectly recognized as a definition. +.PP +A +.B typedef +name preceding a preprocessor statement will be incorrectly +recognized as a global definition, for example, +.PP + LDFILE * + #if AR16WR +.PP +Preprocessor statements can also prevent the recognition of a global +definition, for example, +.PP + char flag + #ifdef ALLOCATE_STORAGE + = -1 + #endif + ; +.PP +A function declaration inside a function is incorrectly recognized as +a function call, for example, +.PP + f() + { + void g(); + } +.PP +is incorrectly recognized as a call to g. +.PP +.I cscope +recognizes C++ classes by looking for the class keyword, but +doesn't recognize that a struct is also a class, so it doesn't +recognize inline member function definitions in a structure. It also +doesn't expect the class keyword in a +.I typedef +, so it incorrectly +recognizes X as a definition in +.PP + typedef class X * Y; +.PP +It also doesn't recognize operator function definitions +.PP + Bool Feature::operator==(const Feature & other) + { + ... + } +.PP +Nor does it recognize function definitions with a function pointer +argument +.PP + ParseTable::Recognize(int startState, char *pattern, + int finishState, void (*FinalAction)(char *)) + { + ... + } diff --git a/doc/xcscope.1 b/doc/xcscope.1 new file mode 100644 index 0000000..fa4199c --- /dev/null +++ b/doc/xcscope.1 @@ -0,0 +1,574 @@ +'\" t +.\" The xcscope.el man page +.\" Origionally written by Darryl Okahata, Apr 2000 +.\" +.\" Converted to a man page July 20, 2004 by Neil Horman <nhorman@redhat.com> +.\" + +.de EX +.sp +.nf +.ft CW +.. +.de EE +.ft R +.fi +.sp +.. + +.TH XCSCOPE.EL "1" "April 2000" "Darryl Okahata" +.SH NAME +xcscope.el - xemacs cscope lisp support package +.SH DESCRIPTION +xcscope is a lisp package for use in integrating cscope +functionality into xemacs +.SH INSTALLATION +.P + Installation steps: + +.P + 0. (It is, of course, assumed that cscope is already properly + installed on the current system.) +.P + 1. Ensure that the location of cscope-indexer is located in your path + +.P + 2. Ensure that the location of xcscope.el is in the xemacs module load path + +.P + 3. Edit your ~/.emacs file to add the line: +.P +.BI (require 'xcscope) + +.P +5. If you intend to use xcscope.el often you can optionally edit your +~/.emacs file to add keybindings that reduce the number of keystrokes +required. For example, the following will add "C-f#" keybindings, +which are easier to type than the usual "C-c s" prefixed keybindings. +Note that specifying "global-map" instead of "cscope:map" makes the +keybindings available in all buffers: +.EX + (define-key global-map [(ctrl f3)] 'cscope-set-initial-directory) + (define-key global-map [(ctrl f4)] 'cscope-unset-initial-directory) + (define-key global-map [(ctrl f5)] 'cscope-find-this-symbol) + (define-key global-map [(ctrl f6)] 'cscope-find-global-definition) + (define-key global-map [(ctrl f7)] + cscope-find-global-definition-no-prompting) + (define-key global-map [(ctrl f8)] 'cscope-pop-mark) + (define-key global-map [(ctrl f9)] 'cscope-next-symbol) + (define-key global-map [(ctrl f10)] 'cscope-next-file) + (define-key global-map [(ctrl f11)] 'cscope-prev-symbol) + (define-key global-map [(ctrl f12)] 'cscope-prev-file) + (define-key global-map [(meta f9)] 'cscope-display-buffer) + (define-key global-map [(meta f10)] 'cscope-display-buffer-toggle) +.EE + +.P + 6. Restart (X)Emacs. That's it. + + +.SH USING THIS MODULE + +.SS * Basic usage: + +.P + If all of your C/C++/lex/yacc source files are in the same + directory, you can just start using this module. If your files are + spread out over multiple directories, see "Advanced usage", below. + +.P + Just edit a source file, and use the pull-down or pop-up (button 3) + menus to select one of: + +.EX + Find symbol + Find global definition + Find called functions + Find functions calling a function + Find text string + Find egrep pattern + Find a file + Find files #including a file +.EE + +.P +The cscope database will be automatically created in the same directory +as the source files (assuming that you've never used cscope before), and +a buffer will pop-up displaying the results. You can then use button 2 +(the middle button) on the mouse to edit the selected file, or you can +move the text cursor over a selection and press [Enter]. + +.P +Hopefully, the interface should be fairly intuitive. + +.SS * Locating the cscope databases: + +.P +This module will first use the variable, `cscope-database-regexps', +to search for a suitable database directory. If a database location +cannot be found using this variable then a search is begun at the +variable, `cscope-initial-directory', if set, or the current +directory otherwise. If the directory is not a cscope database +directory then the directory's parent, parent's parent, etc. is +searched until a cscope database directory is found, or the root +directory is reached. If the root directory is reached, the current +directory will be used. + +.P +A cscope database directory is one in which EITHER a cscope database +file (e.g., "cscope.out") OR a cscope file list (e.g., +"cscope.files") exists. If only "cscope.files" exists, the +corresponding "cscope.out" will be automatically created by cscope +when a search is done. By default, the cscope database file is called +"cscope.out", but this can be changed (on a global basis) via the +variable, `cscope-database-file'. There is limited support for cscope +databases that are named differently than that given by +`cscope-database-file', using the variable, `cscope-database-regexps'. + +.P +Note that the variable, `cscope-database-regexps', is generally not +needed, as the normal hierarchical database search is sufficient +for placing and/or locating the cscope databases. However, there +may be cases where it makes sense to place the cscope databases +away from where the source files are kept; in this case, this +variable is used to determine the mapping. One use for this +variable is when you want to share the database file with other +users; in this case, the database may be located in a directory +separate from the source files. + +.P +Setting the variable, `cscope-initial-directory', is useful when a +search is to be expanded by specifying a cscope database directory +that is a parent of the directory that this module would otherwise +use. For example, consider a project that contains the following +cscope database directories: + +.EX + /users/jdoe/sources + /users/jdoe/sources/proj1 + /users/jdoe/sources/proj2 +.EE + +.P +If a search is initiated from a .c file in /users/jdoe/sources/proj1 +then (assuming the variable, `cscope-database-regexps', is not set) +/users/jdoe/sources/proj1 will be used as the cscope data base directory. +Only matches in files in /users/jdoe/sources/proj1 will be found. This +can be remedied by typing "C-c s a" and then "M-del" to remove single +path element in order to use a cscope database directory of +/users/jdoe/sources. Normal searching can be restored by typing "C-c s A". + + + +.SS * Keybindings: + +.P +All keybindings use the "C-c s" prefix, but are usable only while +editing a source file, or in the cscope results buffer: + +.TS +lb li. +C-c s s Find symbol. +C-c s d Find global definition. +C-c s g Find global definition (alternate binding). +C-c s G Find global definition without prompting. +C-c s c Find functions calling a function. +C-c s C Find called functions (list functions called +C-c s t Find text string. +C-c s e Find egrep pattern. +C-c s f Find a file. +C-c s i Find files #including a file. +.TE + +These pertain to navigation through the search results: + +.TS +lb li. +C-c s b Display *cscope* buffer. +C-c s B Auto display *cscope* buffer toggle. +C-c s n Next symbol. +C-c s N Next file. +C-c s p Previous symbol. +C-c s P Previous file. +C-c s u Pop mark. +.TE + +.P +These pertain to setting and unsetting the variable, +`cscope-initial-directory', (location searched for the cscope database +directory): + +.TS +lb li. +C-c s a Set initial directory. +C-c s A Unset initial directory. +.TE + +.P +These pertain to cscope database maintenance: + +.TS +lb li. +C-c s L Create list of files to index. +C-c s I Create list and index. +C-c s E Edit list of files to index. +C-c s W T{ +Locate this buffer's cscope directory. +.br +("W" -> "where") +T} +C-c s S T{ +Locate this buffer's cscope directory. +.br +("S" --> "show") +T} +C-c s T T{ +Locate this buffer's cscope directory. +("T" --> "tell") +T} +C-c s D Dired this buffer's directory. +.TE + +.SS * Advanced usage: + +.P +If the source files are spread out over multiple directories, +you've got a few choices: + +.P +[ NOTE: you will need to have the script, "cscope-indexer", +properly installed in order for the following to work. ] + +.P +1. If all of the directories exist below a common directory +(without any extraneous, unrelated subdirectories), you can tell +this module to place the cscope database into the top-level, +common directory. This assumes that you do not have any cscope +databases in any of the subdirectories. If you do, you should +delete them; otherwise, they will take precedence over the +top-level database. + +.P +If you do have cscope databases in any subdirectory, the +following instructions may not work right. + +.P +It's pretty easy to tell this module to use a top-level, common +directory: + +.HP +a. Make sure that the menu pick, "Cscope/Index recursively", is +checked (the default value). + +.HP +b. Select the menu pick, "Cscope/Create list and index", and +specify the top-level directory. This will run the script, +"cscope-indexer", in the background, so you can do other +things if indexing takes a long time. A list of files to +index will be created in "cscope.files", and the cscope +database will be created in "cscope.out". + +.HP +Once this has been done, you can then use the menu picks +(described in "Basic usage", above) to search for symbols. + +.HP +Note, however, that, if you add or delete source files, you'll +have to either rebuild the database using the above procedure, +or edit the file, "cscope.files" to add/delete the names of the +source files. To edit this file, you can use the menu pick, +"Cscope/Edit list of files to index". + +.P +2. If most of the files exist below a common directory, but a few +are outside, you can use the menu pick, "Cscope/Create list of +files to index", and specify the top-level directory. Make sure +that "Cscope/Index recursively", is checked before you do so, +though. You can then edit the list of files to index using the +menu pick, "Cscope/Edit list of files to index". Just edit the +list to include any additional source files not already listed. + +.P +Once you've created, edited, and saved the list, you can then +use the menu picks described under "Basic usage", above, to +search for symbols. The first time you search, you will have to +wait a while for cscope to fully index the source files, though. +If you have a lot of source files, you may want to manually run +cscope to build the database: + +.EX + cd top-level-directory # or wherever + rm -f cscope.out # not always necessary + cscope -b +.EE + +.P + 3. If the source files are scattered in many different, unrelated + places, you'll have to manually create cscope.files and put a + list of all pathnames into it. Then build the database using: + +.EX + cd some-directory # wherever cscope.files exists + rm -f cscope.out # not always necessary + cscope -b +.EE + +.P +Next, read the documentation for the variable, +"cscope-database-regexps", and set it appropriately, such that +the above-created cscope database will be referenced when you +edit a related source file. + +.P +Once this has been done, you can then use the menu picks +described under "Basic usage", above, to search for symbols. + +.SS * Interesting configuration variables: + +.P +.B "cscope-truncate-lines" +.P +This is the value of `truncate-lines' to use in cscope +buffers; the default is the current setting of +`truncate-lines'. This variable exists because it can be +easier to read cscope buffers with truncated lines, while +other buffers do not have truncated lines. + +.P +.B "cscope-use-relative-paths" +.P +If non-nil, use relative paths when creating the list of files +to index. The path is relative to the directory in which the +cscope database will be created. If nil, absolute paths will +be used. Absolute paths are good if you plan on moving the +database to some other directory (if you do so, you'll +probably also have to modify `cscope-database-regexps'). +Absolute paths may also be good if you share the database file +with other users (you'll probably want to specify some +automounted network path for this). + +.P +.B "cscope-index-recursively" +.P +If non-nil, index files in the current directory and all +subdirectories. If nil, only files in the current directory +are indexed. This variable is only used when creating the +list of files to index, or when creating the list of files and +the corresponding cscope database. + +.P +.B "cscope-name-line-width" +.P +The width of the combined "function name:line number" field in +the cscope results buffer. If negative, the field is +left-justified. + +.P +.B "cscope-do-not-update-database" +.P +If non-nil, never check and/or update the cscope database when +searching. Beware of setting this to non-nil, as this will +disable automatic database creation, updating, and +maintenance. + +.P +.B "cscope-display-cscope-buffer" +.P +If non-nil, display the *cscope* buffer after each search +(default). This variable can be set in order to reduce the +number of keystrokes required to navigate through the matches. + +.P +.B "cscope-database-regexps" +.P +List to force directory-to-cscope-database mappings. +This is a list of `(REGEXP DBLIST [ DBLIST ... ])', where: + +.P +.B "REGEXP" +is a regular expression matched against the current buffer's +current directory. The current buffer is typically some source file, +and you're probably searching for some symbol in or related to this +file. Basically, this regexp is used to relate the current directory +to a cscope database. You need to start REGEXP with "^" if you want +to match from the beginning of the current directory. + +.P +.B "DBLIST" +is a list that contains one or more of: + +.EX + ( DBDIR ) + ( DBDIR ( OPTIONS ) ) + ( t ) + t +.EE + +.P +Here, +.B DBDIR +is a directory (or a file) that contains a cscope +database. If DBDIR is a directory, then it is expected that the +cscope database, if present, has the filename given by the variable, +`cscope-database-file'; if DBDIR is a file, then DBDIR is the path +name to a cscope database file (which does not have to be the same as +that given by `cscope-database-file'). If only DBDIR is specified, +then that cscope database will be searched without any additional +cscope command-line options. If OPTIONS is given, then OPTIONS is a +list of strings, where each string is a separate cscope command-line +option. + +.P + In the case of "( t )", this specifies that the search is to use the + normal hierarchical database search. This option is used to + explicitly search using the hierarchical database search either before + or after other cscope database directories. + +.P + If "t" is specified (not inside a list), this tells the searching + mechanism to stop searching if a match has been found (at the point + where "t" is encountered). This is useful for those projects that + consist of many subprojects. You can specify the most-used + subprojects first, followed by a "t", and then followed by a master + cscope database directory that covers all subprojects. This will + cause the most-used subprojects to be searched first (hopefully + quickly), and the search will then stop if a match was found. If not, + the search will continue using the master cscope database directory. + +.P + Here, `cscope-database-regexps' is generally not used, as the normal + hierarchical database search is sufficient for placing and/or locating + the cscope databases. However, there may be cases where it makes + sense to place the cscope databases away from where the source files + are kept; in this case, this variable is used to determine the + mapping. + +.P + This module searches for the cscope databases by first using this + variable; if a database location cannot be found using this variable, + then the current directory is searched, then the parent, then the + parent's parent, until a cscope database directory is found, or the + root directory is reached. If the root directory is reached, the + current directory will be used. + +.P +A cscope database directory is one in which EITHER a cscope database +file (e.g., "cscope.out") OR a cscope file list (e.g., +"cscope.files") exists. If only "cscope.files" exists, the +corresponding "cscope.out" will be automatically created by cscope +when a search is done. By default, the cscope database file is called +"cscope.out", but this can be changed (on a global basis) via the +variable, `cscope-database-file'. There is limited support for cscope +databases that are named differently than that given by +`cscope-database-file', using the variable, `cscope-database-regexps'. + +.P +Here is an example of `cscope-database-regexps': + +.EX + (setq cscope-database-regexps + '( + ( "^/users/jdoe/sources/proj1" + ( t ) + ( "/users/jdoe/sources/proj2") + ( "/users/jdoe/sources/proj3/mycscope.out") + ( "/users/jdoe/sources/proj4") + t + ( "/some/master/directory" ("-d" "-I/usr/local/include") ) + ) + ( "^/users/jdoe/sources/gnome/" + ( "/master/gnome/database" ("-d") ) + ) + )) +.EE + +.P +If the current buffer's directory matches the regexp, +"^/users/jdoe/sources/proj1", then the following search will be +done: + +.TP +1. First, the normal hierarchical database search will be used to +locate a cscope database. + +.TP +2. Next, searches will be done using the cscope database +directories, "/users/jdoe/sources/proj2", +"/users/jdoe/sources/proj3/mycscope.out", and +"/users/jdoe/sources/proj4". Note that, instead of the file, +"cscope.out", the file, "mycscope.out", will be used in the +directory "/users/jdoe/sources/proj3". + +.TP +3. If a match was found, searching will stop. + +.TP +4. If a match was not found, searching will be done using +"/some/master/directory", and the command-line options "-d" +and "-I/usr/local/include" will be passed to cscope. + +.TP +If the current buffer's directory matches the regexp, +"^/users/jdoe/sources/gnome", then the following search will be +done: + +.TP +The search will be done only using the directory, +"/master/gnome/database". The "-d" option will be passed to +cscope. + +.TP +If the current buffer's directory does not match any of the above +regexps, then only the normal hierarchical database search will be +done. + +.P +.SS * Other notes: + +.P +1. The script, "cscope-indexer", uses a sed command to determine +what is and is not a C/C++/lex/yacc source file. It's idea of a +source file may not correspond to yours. + +.P +2. This module is called, "xcscope", because someone else has +already written a "cscope.el" (although it's quite old). + +.SH KNOWN BUGS: + +.P +1. Cannot handle whitespace in directory or file names. + +.P +2. By default, colored faces are used to display results. If you happen +to use a black background, part of the results may be invisible +(because the foreground color may be black, too). There are at least +two solutions for this: + +.TP +.BI "2a. Turn off colored faces, by setting `cscope-use-face' to `nil', eg:" +.TP +.BI "(setq cscope-use-face nil)" + +.TP +.BI " 2b. Explicitly set colors for the faces used by cscope. The faces are" + +.EX + cscope-file-face + cscope-function-face + cscope-line-number-face + cscope-line-face + cscope-mouse-face +.EE + +.TP +The face most likely to cause problems (e.g., black-on-black +color) is `cscope-line-face'. + +.P +3. The support for cscope databases different from that specified by +`cscope-database-file' is quirky. If the file does not exist, it +will not be auto-created (unlike files names by +`cscope-database-file'). You can manually force the file to be +created by using touch(1) to create a zero-length file; the +database will be created the next time a search is done. |