Compare commits

...

2 Commits
main ... master

Author SHA1 Message Date
83017133de Remove all packages, just keep the emacsmirror repo 2024-03-22 10:18:19 +01:00
Kai Tetzlaff (mokal.tetzco.de)
f7e79ab403 Remove local packages, use package.el instead 2018-10-03 19:42:46 +02:00
464 changed files with 1 additions and 172383 deletions

246
Makefile Executable file → Normal file
View File

@ -6,7 +6,7 @@ endif
all: elisp-all
elisp-all: org-mode auctex sunrise-commander
elisp-all:
#elisp-all: ess
#apel flim semi wanderlust
@ -24,12 +24,6 @@ post_clone_cmd-emacswiki :=\
echo '!*' > .git/info/sparse-checkout &&\
echo '[a-z]*.el' >> .git/info/sparse-checkout
GIT_DIRS += use-package
URL-use-package := https://github.com/jwiegley/use-package.git
GIT_DIRS += yaml-mode
URL-yaml-mode := https://github.com/yoshiki/yaml-mode.git
#GIT_DIRS += apel
#URL-apel := http://github.com/wanderlust/apel.git
@ -42,44 +36,6 @@ URL-yaml-mode := https://github.com/yoshiki/yaml-mode.git
#GIT_DIRS += wanderlust
#URL-wanderlust := http://github.com/wanderlust/wanderlust.git
GIT_DIRS += org-mode
URL-org-mode := https://code.orgmode.org/bzg/org-mode.git
ifeq (${HOSTENV},w32)
post_clone_cmd-emacswiki :=\
cd org-mode &&\
git config core.filemode false
endif
#GIT_DIRS += gnus
#URL-gnus := http://git.gnus.org/gnus.git
#GIT_DIRS += w3
#URL-w3 := http://git.savannah.gnu.org/r/w3.git
GIT_DIRS += bbdb
URL-bbdb := http://git.savannah.gnu.org/r/bbdb.git
GIT_DIRS += auctex
URL-auctex := http://git.savannah.gnu.org/r/auctex.git
GIT_DIRS += emacs-jabber
URL-emacs-jabber := http://git.code.sf.net/p/emacs-jabber/git
GIT_DIRS += doxymacs
URL-doxymacs := git://doxymacs.git.sourceforge.net/gitroot/doxymacs/doxymacs
GIT_DIRS += htmlize
URL-htmlize := http://github.com/emacsmirror/htmlize.git
#GIT_DIRS += ess
#URL-ess := https://github.com/emacs-ess/ESS.git
GIT_DIRS += sunrise-commander
URL-sunrise-commander := https://github.com/escherdragon/sunrise-commander.git
#BZR_DIRS += dvc
#URL-dvc := http://bzr.xsteve.at/dvc
$(foreach d,$(HG_DIRS) ,$(call eval-vcs-template,HG_TMPL,$d))
$(foreach d,$(GIT_DIRS),$(call eval-vcs-template,GIT_TMPL,$d))
#$(foreach d,$(GIT_DIRS),$(call info-vcs-template,GIT_TMPL,$d))
@ -87,206 +43,6 @@ $(foreach d,$(BZR_DIRS),$(call eval-vcs-template,BZR_TMPL,$d))
$(foreach d,$(SVN_DIRS),$(call eval-vcs-template,SVN_TMPL,$d))
$(foreach d,$(CVS_DIRS),$(call eval-vcs-template,CVS_TMPL,$d))
# #########################################################################
# auctex
# #########################################################################
.PHONY: auctex
auctex/configure: auctex/autogen.sh auctex/configure.ac
cd $(@D) && ./autogen.sh
auctex/Makefile: auctex/configure Makefile | $(DOT_DIR)/share/texmf/.dir
cd $(@D) && ./configure\
--infodir=$(INFO_DIR)\
--datarootdir=$(DOT_DIR)/share\
--localstatedir=$(DOT_DIR)/var\
--with-lispdir=$(LISP_DIR)\
--with-texmf-dir=$(DOT_DIR)/share/texmf\
auctex: auctex/Makefile
$(MAKE) -C $(DIR-$@) clean
$(MAKE) -C $(DIR-$@) lisp info install\
EMACS="$(EMACS) --eval '(setq vc-handled-backends nil)'"
# #########################################################################
# reftex
# #########################################################################
.PHONY: reftex
cd reftex:
$(MAKE) -C $(DIR-$@) clean
$(MAKE) -C $(DIR-$@) lisp info install\
infodir=$(INFO_DIR)\
lispdir=$(LISP_DIR)/reftex\
EMACS=$(EMACS)
# #########################################################################
# ess
# #########################################################################
.PHONY: ess
ess:
-install-info --info-dir=$(INFO_DIR) --remove $(INFO_DIR)/ess.info
$(MAKE) -C $(DIR-$@) all install\
PREFIX=$(DOT_DIR)\
LISPDIR=$(LISP_DIR)/ess\
ETCDIR=$(LISP_DIR)/ess/etc\
INFODIR=$(INFO_DIR)\
EMACS=$(or $(EMACS_CYGWIN),$(call fixpath-shell,$(EMACS)))
# #########################################################################
# doxymacs
# #########################################################################
.PHONY: doxymacs
doxymacs/configure: doxymacs/bootstrap doxymacs/configure.ac $(MAKEFILE_LIST)
cd $(@D) && ./bootstrap
doxymacs/Makefile: doxymacs/configure Makefile
cd $(@D) && ./configure\
--prefix=$(LISP_DIR)/doxymacs\
--bindir=$(BIN_DIR)\
--with-lispdir=$(LISP_DIR)/doxymacs\
doxymacs: doxymacs/Makefile $(wildcard doxymacs/lisp/*.el)
$(MAKE) -C $(DIR-$@) clean
$(MAKE) -C $(DIR-$@) all install\
EMACS=$(EMACS)
# EMACSFLAGS
# #########################################################################
# gnus
# #########################################################################
.PHONY: gnus
gnus/configure :| gnus/.git
gnus/Makefile: $(MAKEFILE_LIST) gnus/configure
cd $(@D) && ./configure\
--prefix=$(LISP_DIR)/gnus\
--infodir=$(INFO_DIR)\
gnus: gnus/Makefile
$(MAKE) -C $(DIR-$@) clean
$(MAKE) -C $(DIR-$@) all\
EMACS="$(EMACS) --eval '(setq vc-handled-backends nil)'"\
# #########################################################################
# dvc
# #########################################################################
.PHONY: dvc
dvc/configure: $(MAKEFILE_LIST) dvc/configure.ac
cd $(@D) && autoreconf
dvc/Makefile: dvc/configure Makefile
cd $(@D) && ./configure\
--prefix=$(LISP_DIR)/dvc\
--with-lispdir=$(LISP_DIR)/dvc\
--bindir=$(BIN_DIR)\
--infodir=$(INFO_DIR)\
dvc: dvc/Makefile
-install-info --info-dir=$(INFO_DIR) --remove $(INFO_DIR)/dvc.info
$(MAKE) -C $(DIR-$@) clean
$(MAKE) -C $(DIR-$@) all install\
EMACS="$(EMACS) --eval '(setq vc-handled-backends nil)'"\
# #########################################################################
# org-mode
# #########################################################################
.PHONY: org-mode
org-mode:
-install-info --info-dir=$(INFO_DIR) --remove $(INFO_DIR)/org
$(MAKE) -C $(DIR-$@) cleanall\
prefix=$(DOT_DIR)\
infodir=$(INFO_DIR)\
lispdir=$(LISP_DIR)/org-mode\
datadir=$(DOT_DIR)/share/org-mode
$(MAKE) -C $(DIR-$@) doc install install-info install-lisp\
EMACS="$(EMACS) --eval '(setq vc-handled-backends nil)'"\
prefix=$(DOT_DIR)\
infodir=$(INFO_DIR)\
lispdir=$(LISP_DIR)/org-mode\
datadir=$(DOT_DIR)/share/org-mode
# #########################################################################
# emacs-jabber
# #########################################################################
.PHONY: emacs-jabber
emacs-jabber/configure : $(MAKEFILE_LIST)
cd $(@D) && autoreconf -i
emacs-jabber/Makefile: emacs-jabber/configure
cd $(@D) && ./configure
emacs-jabber: emacs-jabber/Makefile
$(MAKE) -C $(DIR-$@) install\
EMACS=$(EMACS)\
prefix=$(DOT_DIR)\
lispdir=$(LISP_DIR)/jabber\
infodir=$(INFO_DIR)\
libexecdir=$(LISP_DIR)/jabber/bin\
abs_builddir=$(call emacspath,$(ELISP_DIR)/emacs-jabber)
# #########################################################################
# bbdb
# #########################################################################
.PHONY: bbdb
bbdb/configure : $(MAKEFILE_LIST) bbdb/configure.ac
cd $(@D) && autoreconf -i
bbdb/Makefile :\
bbdb/configure\
bbdb/Makefile.in\
bbdb/doc/Makefile.in\
bbdb/lisp/Makefile.in\
bbdb/tex/Makefile.in\
| $(DOT_DIR)/share/texmf/.dir
cd $(@D) && ./configure\
EMACS=$(call fixpath-shell,$(EMACS))\
--prefix=$(DOT_DIR)\
--datarootdir=$(DOT_DIR)\
--datadir=$(DOT_DIR)/share/texmf\
--with-lispdir=$(LISP_DIR)/bbdb\
bbdb: bbdb/Makefile
$(MAKE) -C $(DIR-$@) install
# #########################################################################
# w3
# #########################################################################
.PHONY: w3
w3/Makefile : $(MAKEFILE_LIST)\
w3/configure
cd $(@D) && ./configure\
--with-emacs=$(call fixpath-shell,$(EMACS))\
--prefix=$(DOT_DIR)\
--with-lispdir=$(LISP_DIR)/w3\
--libexecdir=$(LISP_DIR)/w3/bin\
--datadir=$(DOT_DIR)/share\
--infodir=$(INFO_DIR)\
# --with-gnus=$(ELISP_DIR)/gnus\
w3: w3/Makefile
$(MAKE) -C $(DIR-$@) install
# #########################################################################
# yaml-mode
# #########################################################################
.PHONY: yaml-mode
yaml-mode:
$(MAKE) -C $(DIR-$@) install\
EMACS=$(EMACS)\
INSTALLLIBDIR=$(LISP_DIR)\
# #########################################################################
# apel
# #########################################################################

View File

@ -1,130 +0,0 @@
#!/usr/bin/env python3
import sys
import os.path as path
from shutil import copyfile
from glob import glob
SCRIPTNAME = path.basename(sys.argv[0])
SCRIPTDIR = sys.path[0]
EL_OBSOLETE = [
'appt.el',
'buff-menu+.el',
'cal-opts.el',
'calendar+.el',
'cc-mode+.el',
'character-fold+.el',
'def-face-const.el',
'dired-details+.el',
'highlight-fns.el',
'line-num.el',
'sort+.el',
'vc+.el',
'vc-.el',
'vc-hooks+.el',
]
EL_INVESTIGATE = [
'cmds-menu.el',
'delsel.el',
'descr-text+.el',
'doremi-cmd.el',
'doremi-frm.el',
'doremi-mac.el',
'doremi.el',
'face-remap+.el',
'facemenu+.el',
'filesets+.el',
'find-func+.el',
'font-lock-menus.el',
'fuzzy-match.el',
'help-macro+.el',
'highlight-chars.el',
'hl-defined.el',
'hl-spotlight.el',
'imenu+.el',
'isearch-prop.el',
'lib-requires.el',
'mkhtml.el',
'modeline-win.el',
'mouse3.el',
'narrow-indirect.el',
'oneonone.el',
'palette.el',
'pretty-lambdada.el',
'setup-keys.el',
'showkey.el',
'start-opt.el',
'subr+.el',
'ucs-cmds.el',
'unaccent.el',
'zoom-frm.el',
]
EL_EXCLUDE = [
'autofit-frame.el',
'delsel.el',
'echo-bell.el',
'emacs-init.el',
'emacsbug+.el',
'eyedropper.el',
'modeline-char.el',
'naked.el',
'reveal-next.el',
'setup-cygwin.el',
'setup.el',
'start.el',
'thumb-frm.el',
'w32browser-dlgopen.el',
'wimpy-del.el',
'yes-no.el',
]
EL_IGNORED = EL_OBSOLETE + EL_INVESTIGATE + EL_EXCLUDE
EL_FILES = sorted([x for x in glob('*.el') + glob('*/*.el')
if path.basename(x) not in EL_IGNORED],
key=lambda x: path.basename(x))
DST_DIRS = [
path.realpath(path.join(SCRIPTDIR, '../../lisp/icicles')),
path.realpath(path.join(SCRIPTDIR, '../../lisp/bmkp')),
path.realpath(path.join(SCRIPTDIR, '../../lisp/adams')),
#path.realpath(path.join(SCRIPTDIR, '../../lisp')),
]
def find_destinations(p, dirs):
ret = []
for dst in dirs:
if path.exists(path.join(dst, path.basename(p))):
ret.append(path.join(dst, path.basename(p)))
if len(ret) == 0:
return None
elif len(ret) == 1:
return ret[0]
return ret
def main():
for el in EL_FILES:
dst = find_destinations(el, DST_DIRS)
if dst:
if isinstance(dst, str):
copyfile(el, dst)
else:
print('[WRN] duplicate destination:', dst)
else:
print('[WRN] could not find', path.basename(el))
if __name__ == '__main__':
ret = 200
try:
ret = main()
except Exception as e:
print(e)
finally:
pass
sys.exit(ret)

View File

@ -1,138 +0,0 @@
appt
apropos-fn-var
apropos-plus
apu
autofit-frame
autoload-plus
bindings-plus
bookmark-plus
browse-kill-ring-plus
buff-menu-plus
cal-opts
calendar-plus
cc-mode-plus
character-fold-plus
character-fold-plus
cmds-menu
col-highlight
compile-
compile-20
compile-plus
crosshairs
cursor-chg
cus-edit-plus
def-face-const
delsel
descr-text-plus
diff-plus
diff-plus20
dired-details-plus
dired-plus
dired-sort-menu-plus
doremi
doremi-cmd
doremi-frm
doremi-mac
echo-bell
ediff-plus
emacs-init
emacsbug-plus
eyedropper
face-remap-plus
facemenu-plus
faces-plus
ffap-
files-plus
filesets-plus
find-dired-
find-dired-plus
find-func-plus
finder-plus
fit-frame
font-lock-menus
font-lock-plus
frame-cmds
frame-fns
fuzzy-match
grep-plus
help-fns-plus
help-macro-plus
help-mode-plus
help-plus
help-plus20
hexrgb
hide-comnt
highlight
highlight-chars
highlight-fns
hl-defined
hl-line-plus
hl-spotlight
icicles
icomplete-plus
imenu-plus
info-20
info-plus
isearch-plus
isearch-prop
lacarte
lib-requires
line-num
ls-lisp-20
ls-lisp-plus
macros-plus
mb-depth-plus
menu-bar-plus
misc-cmds
misc-fns
mkhtml
modeline-char
modeline-posn
modeline-win
mouse-plus
mouse3
naked
narrow-indirect
novice-plus
oneonone
options-plus
outline-plus
palette
pp-c-l
pp-plus
pretty-lambdada
replace-plus
reveal-next
ring-plus
savehist-20-plus
second-sel
setnu-plus
setup
setup-cygwin
setup-keys
showkey
simple-plus
sort-plus
start
start-opt
strings
subr-21
subr-plus
synonyms
thing-cmds
thingatpt-plus
thump-frm
timer-plus
tool-bar-plus
ucs-cmds
unaccent
vc-
vc-hooks-plus
vc-plus
w32-browser
w32browser-dlgopen
wid-edit-plus
wimpy-del
window-plus
yes-no
zoom-frm

23
doxymacs/.gitignore vendored
View File

@ -1,23 +0,0 @@
aclocal.m4
autom4te.cache/*
c/.deps/*
c/doxymacs_parser
c/doxymacs_parser.o
c/Makefile
c/Makefile.in
config.log
config.status
configure
depcomp
install-sh
lisp/doxymacs.el
lisp/doxymacs.elc
lisp/elc-stamp
lisp/Makefile
lisp/Makefile.in
lisp/xml-parse.elc
Makefile
Makefile.in
missing
no-autoconf/Makefile
no-autoconf/Makefile.in

View File

@ -1,6 +0,0 @@
$Id: AUTHORS,v 1.8 2005/04/01 00:31:44 ryants Exp $
Ryan T. Sammartino <ryan.sammartino at gmail dot com>
Kris Verbeeck <kris.verbeeck at advalvas dot be>

View File

@ -1,342 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
$Id: COPYING,v 1.1 2001/03/25 00:41:47 ryants Exp $

View File

@ -1,327 +0,0 @@
2010-03-07 Ryan T. Sammartino <ryan.sammartino@gmail.com>
* lisp/doxymacs.el.in: Feature #1569376: Insert doxygen commands
interactively:
(doxymacs-insert-command-history, doxymacs-commands,
doxymacs-insert-command, doxymacs-read-arg): New variables and
functions for feature #1569376.
2010-02-19 Ryan T. Sammartino <ryan.sammartino@gmail.com>
* lisp/doxymacs.el.in: Patch #2954452: New C++! documentation
style (thanks Robert Jørgensgaard Engdahl).
(doxymacs-JavaDoc-function-comment-template): Bug #1862867: Remove
unnecessary tailing whitespace.
2010-02-18 Ryan T. Sammartino <ryan.sammartino@gmail.com>
* lisp/doxymacs.el.in: support new tparam doxygen command.
2007-06-10 Ryan T. Sammartino <ryan.sammartino@gmail.com> (1.8.0)
* NEWS, configure.ac: prepare for new version release.
* lisp/doxymacs.el.in: documentation update.
2007-02-02 Ryan T. Sammartino <ryan.sammartino@gmail.com>
* lisp/doxymacs.el.in:
(doxymacs-mode, doxymacs-doxygan-keywords): Bug #1490021:
Allow spaces in @param [in] style documentation.
(doxymacs-user-mail-address): Bug #1496399:
New function.
(doxymacs-JavaDoc-file-comment-template,
doxymacs-Qt-file-comment-template,
doxymacs-C++-file-comment-template): Use new function to
get user's e-mail address.
2006-04-22 Ryan T. Sammartino <ryan.sammartino@gmail.com> (1.7.0)
* doxymacs_parser.c:
Bug #1459026: Fix compile warning with gcc 4.0.
* lisp/doxymacs.el.in: minor documentation updates.
(doxymacs-mode): Feature #1338245: Add tokens to filladapt
to match doxygen markup.
* example/doc/*: Update to use doxygen 1.4.4 output.
* NEWS, README, configure.ac: prepare for new version release.
2005-06-04 Ryan T. Sammartino <ryan.sammartino@gmail.com> (1.6.0)
* NEWS, README: prepare for new version release.
* lisp/doxymacs.el.in: minor documentation updates.
* c/doxymacs_parser.c: minor documentation updates.
2005-04-14 Ryan T. Sammartino <ryan.sammartino@gmail.com>
* lisp/doxymacs.el.in:
(doxymacs-url-exists-p): New function.
(doxymacs-load-tags): Use new function.
(doxymacs-symbol-near-point): New function (to clean up
symbol-near-point hack).
(doxymacs-lookup): Use new function.
2005-04-13 Ryan T. Sammartino <ryan.sammartino@gmail.com>
* lisp/doxymacs.el.in: feature request #868413
(doxymacs-browse-url-function): New customizable variable.
(doxymacs-display-url): Use new variable.
2005-04-12 Ryan T. Sammartino <ryan.sammartino@gmail.com>
* lisp/doxymacs.el.in: bug #990123
(doxymacs-group-comment-start),
(doxymacs-group-comment-end): New strings for grouping comments.
(doxymacs-insert-grouping-comments): Use new strings instead of
old templates.
(doxymacs-group-begin-comment-template),
(doxymacs-group-end-comment-template),
(doxymacs-JavaDoc-group-begin-comment-template),
(doxymacs-JavaDoc-group-end-comment-template),
(doxymacs-Qt-group-begin-comment-template),
(doxymacs-Qt-group-end-comment-template),
(doxymacs-C++-group-begin-comment-template),
(doxymacs-C++-group-end-comment-template): Remove old templates
for grouping comments.
(doxymacs-doxygen-keywords): New doxygen keywords.
2005-04-01 Ryan T. Sammartino <ryan.sammartino@gmail.com>
* AUTHORS, README: update contact info.
* example/src/doxy.conf: update for new doxygen.
* example/src/aclass.h: try new @param[in] etc.
* example/doc/html/*: regenerate.
* lisp/doxymacs.el.in (doxymacs-doxygen-keywords): patch #1102042:
handle @param[in], etc.
(doxymacs-font-lock): patch #1024026: use font-lock-add-keywords,
if available.
* aclocal/libxml.m4: update from libxml source.
* c/Makefile.am: fix link issues with newer libxml.
* configure.ac: update libxml2 version requirements to match what
was used for libxml.m4.
2003-01-25 Ryan T. Sammartino <ryants@shaw.ca> (1.5.0)
* NEWS: version 1.5.0 news.
* INSTALL: add instructions on avoiding byte compiling and
configuring.
* configure.ac: set version to 1.5.0.
* no-autoconf/Makefile.am: new file.
2003-01-20 Georg Drenkhahn <georg-d at users dot sourceforge dot net>
* lisp/doxymacs.el.in (doxymacs-doxygen-keywords): patch 667164:
fix retval fontification
2003-01-12 Ryan T. Sammartino <ryants@shaw.ca>
* configure.ac: add "C++" to help string for --with-default-style.
2003-01-11 Ryan T. Sammartino <ryants@shaw.ca>
Feature #665470: C++ style.
Bug #665099: @var missing.
Bug #665372: @example not fontified properly.
* lisp/doxymacs.el.in (doxymacs-doxygen-keywords): fix var,
example, image, dotfile, other commands.
(doxymacs-doxygen-style): new C++ style.
(doxymacs-command-character): new variable.
(doxymacs-C++-blank-multiline-comment-template): new template.
(doxymacs-C++-blank-singleline-comment-template): new template.
(doxymacs-doxygen-command-char): new function.
(doxymacs-JavaDoc-file-comment-template): use
doxymacs-doxygen-command-char
(doxymacs-Qt-file-comment-template): ditto.
(doxymacs-JavaDoc-function-comment-template): ditto.
(doxymacs-Qt-function-comment-template): ditto.
(doxymacs-parm-tempo-element): ditto and add C++ style.
(doxymacs-C++-file-comment-template): new template.
(doxymacs-C++-function-comment-template): new template.
(doxymacs-C++-group-begin-comment-template): new template.
(doxymacs-C++-group-end-comment-template): new template.
(doxymacs-invalid-style): add C++ style.
(doxymacs-insert-member-comment): add C++ style.
2003-01-06 Ryan T. Sammartino <ryants at shaw dot ca>
* configure.ac: mention EMACSLOADPATH in the help.
* INSTALL, lisp/doxymacs.el.in: mention EMACS, EMACSLOADPATH;
other documentation fixups.
2003-01-05 Ryan T. Sammartino <ryants at shaw dot ca> (1.4.0)
* Autoconf-ise the project.
2002-12-09 Ryan T. Sammartino <ryants at shaw dot ca>
* c/doxymacs_parser.c: terminate Encoded string with \0.
* lisp/doxymacs.el: set the doxytags buffer modified flag to false
to avoid asking user if OK to kill modified buffer.
2002-12-08 Ryan T. Sammartino <ryants at shaw dot ca>
* lisp/doxymacs.el, c/doxymacs_parser.c: work around apparent bug in
Doxygen 1.2.18.
* c/doxymacs_parser.c: fix memory leak.
2002-12-08 Ryan T. Sammartino <ryants at shaw dot ca>
* lisp/doxymacs.el: move to association lists to support multiple
Doxygen generates.
* INSTALL: update instructions.
* TODO: update.
2002-11-30 Georg Drenkhahn <georg-d at users dot sourceforge dot net>
* lisp/doxymacs.el: several FIXMEs fixed, user-defined "void" types
(doxymacs-void-types).
2002-08-31 Ryan T. Sammartino <ryants at shaw dot ca> (1.3.2)
* lisp/doxymacs.el: functions with blank lines in their argument
list confused doxymacs-extract-args-list fixed.
2002-09-05 Ryan T. Sammartino <ryants at shaw dot ca> (1.3.1)
* c/doxymacs_parser.c: fix compilation issues on Mac OS X.
2002-04-01 Ryan T. Sammartino <ryants at shaw dot ca>
* lisp/doxymacs.el, README: make note of the fact that doxymacs
seems to work with GNU Emacs 21.2.1 and XEmacs 21.4 (patch 6)
2001-11-19 Ryan T. Sammartino <ryants at shaw dot ca>
* lisp/doxymacs.el, README: make note of the fact that doxymacs
seems to work with XEmacs 21.4 (patch 5) and GNU Emacs 21.1.1
2001-11-04 Ryan T. Sammartino <ryants at shaw dot ca> (1.3.0)
* lisp/doxymacs.el: add documentation for default templates.
Implement grouping comments (C-c d @).
2001-11-01 Ryan T. Sammartino <ryants at shaw dot ca>
* README, AUTHORS, ...: make note that Ryan's homepage and e-mail
address have changed.
2001-09-30 Ryan T. Sammartino <ryants at home dot com>
* lisp/doxymacs.el, README: make note of the fact that doxymacs
seems to work with XEmacs 21.4 (patch 4)
2001-09-15 Ryan T. Sammartino <ryants at home dot com> (1.2.1)
* lisp/doxymacs.el: fix bug #460396: invalid number of arguments
to doxymacs-parm-tempo-element in
doxymacs-Qt-function-comment-template
2001-08-26 Ryan T. Sammartino <ryants at home dot com> (1.2.0)
* lisp/doxymacs.el: implement feature request #454122 (single line
member comments) and feature request #454123 (key bindings
description in mode help). Clean up template code to make it
easier to add new templates and catch bad settings. Clean up
documentation to be more standards conforming.
* INSTALL: documentation update.
* README: if people have success/failure with untested {X}Emacs
versions, let the authors know.
2001-08-23 Ryan T. Sammartino <ryants at home dot com> (1.1.4)
* lisp/doxymacs.el: fix bug #454563... missing @endlink in
fontification; fix @b, @em, @c, @p, and @link fontification. Also
clean up the fontification code a bit.
2001-07-08 Ryan T. Sammartino <ryants at home dot com> (1.1.3)
* c/doxymacs_parser.c, c/Makefile: Make the external XML parser
work with the latest libxml2. Now we require libxml2 version
2.3.4 or greater.
2001-07-04 Ryan T. Sammartino <ryants at home dot com> (1.1.2)
* lisp/doxymacs.el: GNU Emacs doesn't support ?: in regexps, so
take them out.
2001-06-20 Ryan T. Sammartino <ryants at home dot com> (1.1.1)
* lisp/doxymacs.el: fix bug #432837 missing @see keyword and fix
bug #432836 Font lock for @ingroup not correct
2001-06-12 Ryan T. Sammartino <ryants at home dot com> (1.1.0)
* lisp/doxymacs.el: add font lock keywords for Doxygen keywords
2001-06-06 Ryan T. Sammartino <ryants at home dot com> (1.0.0)
* lisp/doxymacs.el: fix bug #427660 "mouse selection problems".
2001-05-26 Ryan T. Sammartino <ryants at home dot com> (0.2.1)
* lisp/doxymacs.el: fix bug #427351 "thinks "void" is a parameter"
and bug #427350 "can't document constructors/destructors", and
generally made the whole doxymacs-find-next-func function much
more robust. Small update to default styles when inserting
functions that return "void"
* INSTALL: a tip on automatically going into doxymacs-mode
whenever in C/C++ mode
2001-05-21 Ryan T. Sammartino <ryants at home dot com> (0.2.0)
* lisp/doxymacs.el: now can optionally use the external XML parser
to speed things up. Some documentation updates.
* c/doxymacs_parser.c, c/Makefile: new files. doxymacs_parser.c is
the external XML parser.
* INSTALL: documentation updates.
2001-05-12 Ryan T. Sammartino <ryants at home dot com> (0.1.2)
* lisp/doxymacs.el: bug fixes for GNU Emacs: symbol-near-point and
user-mail-address
* lisp/xml-parse.el: make sure progress-function is bound before
calling.
* TODO: removed "test on other version of {X}Emacs" item.
* README: let people know on which versions of {X}Emacs this has been
tested on.
2001-05-09 Ryan T. Sammartino <ryants at home dot com> (0.1.1)
* lisp/doxymacs.el: change C-? to C-c d ?, add progress info while
parsing XML file, and some small optimisations.
2001-05-07 Ryan T. Sammartino <ryants at home dot com> (0.1.0)
* lisp/doxymacs.el: Minor mode (thanks to Kris) and default key
bindings.
* INSTALL: some better instructions (I hope)
2001-05-06 Ryan T. Sammartino <ryants at home dot com>
* lisp/doxymacs.el: Now using tempo templates for inserting comments.
Also allows for user-defined styles.
* TODO: we need some good end-user documentation.
* AUTHORS: acknowledge patch from Andreas Fuchs.
2001-04-29 Ryan T. Sammartino <ryants at home dot com>
* lisp/doxymacs.el: Now parse XML tags file generated by doxygen
directly.
* lisp/xml-parse.el: Add this file so that people don't need to go
download things from all over the place just to get doxymacs working.
* perl/doxytags.pl: No longer necessary, now that we can parse the
XML tags file generated by doxygen.
2001-04-22 Ryan T. Sammartino <ryants at home dot com>
* lisp/doxymacs.el: Function documentation
2001-04-18 Ryan T. Sammartino <ryants at home dot com>
* lisp/doxymacs.el: Going with Kris' "new style" look up
code. It's excellent, and exactly what I wanted. Thanks Kris. Also
incorprated Andreas Fuchs' patch for loading tags from a URL.
2001-04-11 Ryan T. Sammartino <ryants at home dot com>
* lisp/doxymacs.el: insert blank or "file" doxygen comments with style
specified by the user.
2001-03-31 Ryan T. Sammartino <ryants at home dot com>
* lisp/doxymacs.el: if symbol matches more than one entry in the tags,
you can now select which one you really mean (but please take a look
at the FIXME comment before doxymacs-choose-match) and slightly
changed the format of the list that doxymacs-get-matches returns.
* perl/doxytag.pl, example/doc/doxy.tag: added some more info to the
third column of doxytag.pl's output.
* TODO: removed the "choose which symbol you really mean" item (yay!).
2001-03-28 Ryan T. Sammartino <ryants at home dot com>
* lisp/doxymacs.el: applied patch from Kris Verbeeck so that
doxymacs customisation stuff is under the "Tools" group. Also
removed doxymacs-browser, since we'll just use the user's default
browser anyways. Minor formatting changes as well.
* README: added doxymacs' URL
2001-03-24 Ryan T. Sammartino <ryants at home dot com>
* doxymacs: Initial CVS check in.

View File

@ -1,84 +0,0 @@
$Id: INSTALL,v 1.15 2003/01/26 01:49:55 ryants Exp $
Doxymacs depends on the following packages:
- W3 http://www.cs.indiana.edu/usr/local/www/elisp/w3/docs.html
- tempo http://www.lysator.liu.se/~davidk/elisp/
- libxml2 http://www.libxml.org/
Be sure these are properly configured and installed before proceeding.
- Use the configure script to configure doxymacs:
$ ./configure
$ make
$ make install
Use ./configure --help for help on customising your configuration.
If you get
!! File error (("Cannot open load file" "url"))
(or something similar) then set the variable EMACSLOADPATH before
doing make:
$ EMACSLOADPATH=... make
where ... is a colon separated list of directories to search for
packages. To byte compile with XEmacs, set the variable EMACS:
$ EMACS=xemacs make
If you would rather not byte compile the .el files at all, then do:
$ make ELCFILES=
$ make install ELCFILES=
If you do not want to run or cannot run configure then some pre-baked
.el files are available in the no-autoconf/ directory; simply copy
these to somewhere in your load-path.
- Customise the variable doxymacs-doxygen-dirs.
Doxymacs customisation can be done from the Options | Customize menu,
under Emacs | Programming | Tools | Doxymacs.
- If your tags file is quite large (say, > 1 MB), consider setting
doxymacs-use-external-xml-parser to t and be sure to set
doxymacs-external-xml-parser-executable to the right value (the
default should usually be fine). A suitable program is distributed
in the directory doxymacs/c/. With an 11 MB XML tag file, the
internal process takes 20 minutes on a PIII 800 with 1 GB of RAM,
whereas the external process takes 12 seconds.
- Put (require 'doxymacs) in your .emacs
- Invoke doxymacs-mode with M-x doxymacs-mode. To have doxymacs-mode invoked
automatically when in C/C++ mode, put
(add-hook 'c-mode-common-hook 'doxymacs-mode)
in your .emacs.
- If you want Doxygen keywords fontified use M-x doxymacs-font-lock.
To do it automatically, add the following to your .emacs:
(defun my-doxymacs-font-lock-hook ()
(if (or (eq major-mode 'c-mode) (eq major-mode 'c++-mode))
(doxymacs-font-lock)))
(add-hook 'font-lock-mode-hook 'my-doxymacs-font-lock-hook)
This will add the Doxygen keywords to c-mode and c++-mode only.
- Default key bindings are:
- C-c d ? will look up documentation for the symbol under the point.
- C-c d r will rescan your Doxygen tags file.
- C-c d RET will prompt you for a Doxygen command to enter, and its
arguments.
- C-c d f will insert a Doxygen comment for the next function.
- C-c d i will insert a Doxygen comment for the current file.
- C-c d ; will insert a Doxygen comment for the current member.
- C-c d m will insert a blank multi-line Doxygen comment.
- C-c d s will insert a blank single-line Doxygen comment.
- C-c d @ will insert grouping comments around the current region.

View File

@ -1,4 +0,0 @@
## Process this file with automake to produce Makefile.in
# $Id: Makefile.am,v 1.2 2003/01/26 01:49:55 ryants Exp $
SUBDIRS = c lisp no-autoconf

View File

@ -1,82 +0,0 @@
$Id: NEWS,v 1.20 2007/06/10 13:17:24 ryants Exp $
10/06/2007 Version 1.8.0 released.
Fix bug #1490021: Allow spaces in @param [in] style documentation.
Fix bug #1496399: Use better way to get user's e-mail address.
22/04/2006 Version 1.7.0 released.
Fix bug #1459026: compile warning with gcc 4.0.
Feature request #1338245: make filladapt mode doxygen aware
of @param to nicely indent parameter lists.
Update the example HTML files with doxygen 1.4.4.
04/06/2005 Version 1.6.0 released.
Many bug fixes for newer versions of {X}emacs. Some additions to
fontification to handle new Doxygen constructs. Can now customise
the browser that doxymacs uses to display documentation.
NOTE: doxymacs-group-comment-start and doxymacs-group-comment-end
are no longer tempo templates but are now just plain strings.
25/01/2003 Version 1.5.0 released.
New C++ style. Pre-baked .el files for people who do not have
autoconf. Several small fontification bug fixes.
05/01/2003 Version 1.4.0 released.
doxymacs now uses autoconf to configure, build and install itself.
31/08/2002 Version 1.3.2 released.
Fix bug #601028: functions with blank lines in their argument lists
confused doxymacs-extract-args-list.
09/05/2002 Version 1.3.1 released.
Fix issues compiling doxymacs_parser.c on Mac OS X.
04/11/2001 Version 1.3.0 released.
Implement new grouping command (C-c d @) which inserts Doxygen
grouping comments around the current region.
15/09/2001 Version 1.2.1 released.
Fix a bug in Qt style comments.
26/08/2001 Version 1.2.0 released.
Better on-line documentation. New "member comment" command which
works much like M-; (indent-for-comment).
23/08/2001 Version 1.1.4 released.
minor bugfixes.
08/07/2001 Version 1.1.3 released.
The external XML parser now requires libxml2 version 2.3.4 or
greater.
04/07/2001 Version 1.1.2 released.
GNU Emacs doesn't understand ?: in regexps, so take them out.
20/06/2001 Version 1.1.1 released.
Fix bug #432837 missing @see keyword and fix bug #432836 Font
lock for @ingroup not correct.
12/06/2001 Version 1.1.0 released.
New feature: font lock for Doxygen keywords.
06/06/2001 Version 1.0.0 released.
The first stable release. There are still some bugs left (see
the FIXMEs in lisp/doxymacs.el), but they are both sufficiently
rare and hard to fix that they don't warrant holding up a stable
release.
26/05/2001 Version 0.2.1 released.
Er... forgot to update this file the past few releases.
Oh well. Look at the ChangeLog if you really care.
09/05/2001 Version 0.1.1 released.
Bug fix: C-? is a bad choice for "look up", since it causes the
DEL key to be mapped to "look up"... changed it to C-c d ?.
Feature add: Progress info as it parses XML tag file.
07/05/2001 Version 0.1.0 (Alpha) released.
This represents the first public release of doxymacs. It works for us,
now let's see if it works for other people too.

View File

@ -1,45 +0,0 @@
doxymacs
Copyright (C) 2001-2010 Ryan T. Sammartino
ryan.sammartino at gmail dot com
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-------------------------------------------------------------------------------
doxymacs is an e-lisp package for making doxygen usage easier under XEmacs.
doxymacs homepage: http://doxymacs.sourceforge.net/
Doxymacs has been tested on and works with:
- GNU Emacs 20.7.1, 21.1.1, 21.2.1, 21.3, 21.4.1, 23.1.1
- XEmacs 21.1 (patch 14), 21.4 (patch 4, 5, 6, 17)
If you have success or failure with other versions of {X}Emacs, please
let the authors know.
See COPYING for the full text of the license under which is this work
is being made available.
See ChangeLog for recent changes.
See AUTHORS for a list of people to blame for this mess.
See TODO for a list of things that you can help out with.
See INSTALL for instructions on how to install and use this.
Feel free to contact me about any issues you may have, or to volunteer
to help out.
Ryan T. Sammartino
ryan.sammartino at gmail dot com
$Id: README,v 1.13 2006/04/23 01:20:15 ryants Exp $

View File

@ -1,11 +0,0 @@
$Id: TODO,v 1.15 2003/01/06 00:45:30 ryants Exp $
lisp/doxymacs.el.in:
- fix all FIXMEs (of course)
- automatic testing (DejaGnu).
- other stuff?
README:
INSTALL:
- better end-user documentation

View File

@ -1,188 +0,0 @@
# Configure paths for LIBXML2
# Mike Hommey 2004-06-19
# use CPPFLAGS instead of CFLAGS
# Toshio Kuratomi 2001-04-21
# Adapted from:
# Configure paths for GLIB
# Owen Taylor 97-11-3
dnl AM_PATH_XML2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
dnl Test for XML, and define XML_CPPFLAGS and XML_LIBS
dnl
AC_DEFUN([AM_PATH_XML2],[
AC_ARG_WITH(xml-prefix,
[ --with-xml-prefix=PFX Prefix where libxml is installed (optional)],
xml_config_prefix="$withval", xml_config_prefix="")
AC_ARG_WITH(xml-exec-prefix,
[ --with-xml-exec-prefix=PFX Exec prefix where libxml is installed (optional)],
xml_config_exec_prefix="$withval", xml_config_exec_prefix="")
AC_ARG_ENABLE(xmltest,
[ --disable-xmltest Do not try to compile and run a test LIBXML program],,
enable_xmltest=yes)
if test x$xml_config_exec_prefix != x ; then
xml_config_args="$xml_config_args"
if test x${XML2_CONFIG+set} != xset ; then
XML2_CONFIG=$xml_config_exec_prefix/bin/xml2-config
fi
fi
if test x$xml_config_prefix != x ; then
xml_config_args="$xml_config_args --prefix=$xml_config_prefix"
if test x${XML2_CONFIG+set} != xset ; then
XML2_CONFIG=$xml_config_prefix/bin/xml2-config
fi
fi
AC_PATH_PROG(XML2_CONFIG, xml2-config, no)
min_xml_version=ifelse([$1], ,2.0.0,[$1])
AC_MSG_CHECKING(for libxml - version >= $min_xml_version)
no_xml=""
if test "$XML2_CONFIG" = "no" ; then
no_xml=yes
else
XML_CPPFLAGS=`$XML2_CONFIG $xml_config_args --cflags`
XML_LIBS=`$XML2_CONFIG $xml_config_args --libs`
xml_config_major_version=`$XML2_CONFIG $xml_config_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
xml_config_minor_version=`$XML2_CONFIG $xml_config_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
xml_config_micro_version=`$XML2_CONFIG $xml_config_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
if test "x$enable_xmltest" = "xyes" ; then
ac_save_CPPFLAGS="$CPPFLAGS"
ac_save_LIBS="$LIBS"
CPPFLAGS="$CPPFLAGS $XML_CPPFLAGS"
LIBS="$XML_LIBS $LIBS"
dnl
dnl Now check if the installed libxml is sufficiently new.
dnl (Also sanity checks the results of xml2-config to some extent)
dnl
rm -f conf.xmltest
AC_TRY_RUN([
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <libxml/xmlversion.h>
int
main()
{
int xml_major_version, xml_minor_version, xml_micro_version;
int major, minor, micro;
char *tmp_version;
system("touch conf.xmltest");
/* Capture xml2-config output via autoconf/configure variables */
/* HP/UX 9 (%@#!) writes to sscanf strings */
tmp_version = (char *)strdup("$min_xml_version");
if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
printf("%s, bad version string from xml2-config\n", "$min_xml_version");
exit(1);
}
free(tmp_version);
/* Capture the version information from the header files */
tmp_version = (char *)strdup(LIBXML_DOTTED_VERSION);
if (sscanf(tmp_version, "%d.%d.%d", &xml_major_version, &xml_minor_version, &xml_micro_version) != 3) {
printf("%s, bad version string from libxml includes\n", "LIBXML_DOTTED_VERSION");
exit(1);
}
free(tmp_version);
/* Compare xml2-config output to the libxml headers */
if ((xml_major_version != $xml_config_major_version) ||
(xml_minor_version != $xml_config_minor_version) ||
(xml_micro_version != $xml_config_micro_version))
{
printf("*** libxml header files (version %d.%d.%d) do not match\n",
xml_major_version, xml_minor_version, xml_micro_version);
printf("*** xml2-config (version %d.%d.%d)\n",
$xml_config_major_version, $xml_config_minor_version, $xml_config_micro_version);
return 1;
}
/* Compare the headers to the library to make sure we match */
/* Less than ideal -- doesn't provide us with return value feedback,
* only exits if there's a serious mismatch between header and library.
*/
LIBXML_TEST_VERSION;
/* Test that the library is greater than our minimum version */
if ((xml_major_version > major) ||
((xml_major_version == major) && (xml_minor_version > minor)) ||
((xml_major_version == major) && (xml_minor_version == minor) &&
(xml_micro_version >= micro)))
{
return 0;
}
else
{
printf("\n*** An old version of libxml (%d.%d.%d) was found.\n",
xml_major_version, xml_minor_version, xml_micro_version);
printf("*** You need a version of libxml newer than %d.%d.%d. The latest version of\n",
major, minor, micro);
printf("*** libxml is always available from ftp://ftp.xmlsoft.org.\n");
printf("***\n");
printf("*** If you have already installed a sufficiently new version, this error\n");
printf("*** probably means that the wrong copy of the xml2-config shell script is\n");
printf("*** being found. The easiest way to fix this is to remove the old version\n");
printf("*** of LIBXML, but you can also set the XML2_CONFIG environment to point to the\n");
printf("*** correct copy of xml2-config. (In this case, you will have to\n");
printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
printf("*** so that the correct libraries are found at run-time))\n");
}
return 1;
}
],, no_xml=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
if test "x$no_xml" = x ; then
AC_MSG_RESULT(yes (version $xml_config_major_version.$xml_config_minor_version.$xml_config_micro_version))
ifelse([$2], , :, [$2])
else
AC_MSG_RESULT(no)
if test "$XML2_CONFIG" = "no" ; then
echo "*** The xml2-config script installed by LIBXML could not be found"
echo "*** If libxml was installed in PREFIX, make sure PREFIX/bin is in"
echo "*** your path, or set the XML2_CONFIG environment variable to the"
echo "*** full path to xml2-config."
else
if test -f conf.xmltest ; then
:
else
echo "*** Could not run libxml test program, checking why..."
CPPFLAGS="$CPPFLAGS $XML_CPPFLAGS"
LIBS="$LIBS $XML_LIBS"
AC_TRY_LINK([
#include <libxml/xmlversion.h>
#include <stdio.h>
], [ LIBXML_TEST_VERSION; return 0;],
[ echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding LIBXML or finding the wrong"
echo "*** version of LIBXML. If it is not finding LIBXML, you'll need to set your"
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
echo "*** to the installed location Also, make sure you have run ldconfig if that"
echo "*** is required on your system"
echo "***"
echo "*** If you have an old version installed, it is best to remove it, although"
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
[ echo "*** The test program failed to compile or link. See the file config.log for the"
echo "*** exact error that occured. This usually means LIBXML was incorrectly installed"
echo "*** or that you have moved LIBXML since it was installed. In the latter case, you"
echo "*** may want to edit the xml2-config script: $XML2_CONFIG" ])
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
XML_CPPFLAGS=""
XML_LIBS=""
ifelse([$3], , :, [$3])
fi
AC_SUBST(XML_CPPFLAGS)
AC_SUBST(XML_LIBS)
rm -f conf.xmltest
])

View File

@ -1,5 +0,0 @@
#! /bin/sh
aclocal
automake --gnu --add-missing
autoconf

View File

@ -1,12 +0,0 @@
## Process this file with automake to produce Makefile.in
# $Id: Makefile.am,v 1.2 2005/04/01 06:20:06 ryants Exp $
bin_PROGRAMS = doxymacs_parser
doxymacs_parser_SOURCES = doxymacs_parser.c
INCLUDES = $(XML_CPPFLAGS)
AM_CFLAGS = -Wall -Werror -fexpensive-optimizations -fomit-frame-pointer
doxymacs_parser_LDADD = $(XML_LIBS)

View File

@ -1,682 +0,0 @@
/*
* doxymacs_parser.c
* Copyright (C) 2001 Ryan T. Sammartino
* <ryan.sammartino at gmail dot com>
*
* A utility program used by doxymacs to speed up building the look up
* completion list from a Doxygen XML file.
*
* This file requires libxml version 2.6.13 or greater, which you can
* get from http://www.libxml.org/
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Doxymacs homepage: http://doxymacs.sourceforge.net/
*
* $Id: doxymacs_parser.c,v 1.12 2006/04/23 00:05:33 ryants Exp $
*
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
/* Our completion list */
typedef struct _desc_url_list
{
char *desc;
char *url;
struct _desc_url_list *next;
} desc_url_list;
typedef struct _completion_list
{
char *symbol;
desc_url_list *descs;
struct _completion_list *next;
} completion_list;
completion_list *comp_list = NULL;
/* A hash for quick look up of a symbol's entry in the completion list */
#define HASH_SIZE 11213
typedef struct _hash_entry
{
completion_list *cl;
struct _hash_entry *next;
} hash_entry;
hash_entry *symbol_hash[HASH_SIZE];
inline unsigned int hash(const char *s)
{
unsigned int h = 0;
while (*s)
{
h += *s++;
}
return abs(h % HASH_SIZE);
}
inline void AddToHash(completion_list *cl)
{
unsigned int h = hash(cl->symbol);
hash_entry **cur = &symbol_hash[h];
hash_entry *new = (hash_entry *)malloc(sizeof(hash_entry));
new->cl = cl;
new->next = *cur;
*cur = new;
}
/* mmmmm... free hash */
inline void FreeHash(void)
{
unsigned int i;
for (i = 0; i < HASH_SIZE; i++)
{
hash_entry *cur = symbol_hash[i];
while (cur)
{
hash_entry *tmp = cur;
cur = cur->next;
free(tmp);
}
}
}
/* XML Helper Functions */
inline char *XMLTagChild(xmlNodePtr node, const char *name)
{
xmlNodePtr cur = node->xmlChildrenNode;
while (cur)
{
if (!xmlStrcmp(cur->name, (const xmlChar *) name))
{
xmlNodePtr cur_child = cur->xmlChildrenNode;
if (cur_child)
{
return (char *)cur_child->content;
}
else
{
return NULL;
}
}
cur = cur->next;
}
return NULL;
}
inline char *XMLTagAttr(xmlNodePtr node, const char *attr)
{
xmlAttrPtr props = node->properties;
while (props)
{
if (!xmlStrcmp(props->name, (const xmlChar *) attr))
{
xmlNodePtr props_child = props->xmlChildrenNode;
if (props_child)
{
return (char *)props_child->content;
}
else
{
return NULL;
}
}
}
return NULL;
}
/* Look up functions for symbols and descriptions */
inline completion_list *LookUpSymbol(const char *symbol)
{
unsigned int h = hash(symbol);
hash_entry *cur = symbol_hash[h];
while (cur)
{
completion_list *cl = cur->cl;
if (!strcmp(cl->symbol, symbol))
{
return cl;
}
cur = cur->next;
}
return NULL;
}
inline desc_url_list *LookUpDesc(completion_list *entry, const char *desc)
{
desc_url_list *cur = entry->descs;
while (cur)
{
if (!strcmp(cur->desc, desc))
{
break;
}
cur = cur->next;
}
return cur;
}
/* Add the given name, description and url to our completion list */
inline int AddToCompletionList(const char *name,
const char *desc, const char *url)
{
completion_list *check;
check = LookUpSymbol(name);
if (check)
{
/* There is already a symbol with the same name in the list */
if (!LookUpDesc(check, desc))
{
/* If there is not yet a symbol with this desc, add it. */
/* FIXME: what to do if there is already a symbol?? */
desc_url_list *new_desc =
(desc_url_list *)malloc(sizeof(desc_url_list));
if (!new_desc)
{
fprintf(stderr, "malloc failed\n");
return -1;
}
new_desc->desc = (char *)desc;
new_desc->url = (char *)url;
new_desc->next = check->descs;
check->descs = new_desc;
}
/* Free the name, which was strdup'ed */
free((char*)name);
}
else
{
completion_list *new_entry =
(completion_list *)malloc(sizeof(completion_list));
if (!new_entry)
{
fprintf(stderr, "malloc failed\n");
return -1;
}
new_entry->symbol = (char *)name;
new_entry->descs = (desc_url_list *)malloc(sizeof(desc_url_list));
if (!new_entry->descs)
{
fprintf(stderr, "malloc failed\n");
return -1;
}
new_entry->descs->desc = (char *)desc;
new_entry->descs->url = (char *)url;
new_entry->descs->next = NULL;
new_entry->next = comp_list;
comp_list = new_entry;
AddToHash(new_entry);
}
return 0;
}
/* Encode the given string so that {X}Emacs will understand it */
inline char *Encode(const char *s)
{
unsigned int extra_len = 0;
char *c = (char *)s;
if (!s)
{
return NULL;
}
while (*c)
{
/* Is this all that needs to be escaped? */
if (*c == '\\' || *c == '"')
{
extra_len++;
}
c++;
}
if (!extra_len)
{
char *ret = strdup(s);
if (!ret)
{
fprintf(stderr, "malloc failed\n");
}
return ret;
}
else
{
char *ret = (char *)malloc(strlen(s) + extra_len + 1);
char *r = ret;
if (!ret)
{
fprintf(stderr, "malloc failed\n");
}
else
{
while (*s)
{
if (*s == '\\')
{
*r++ = '\\';
*r++ = '\\';
}
else if (*s == '"')
{
*r++ = '\\';
*r++ = '"';
}
else
{
*r++ = *s;
}
s++;
}
*r = '\0';
}
return ret;
}
}
/* Output the completion list in a way {X}Emacs can easily read in */
inline int OutputCompletionList(void)
{
completion_list *cur = comp_list;
printf("(");
while (cur)
{
desc_url_list *desc = cur->descs;
char *encoded_symbol = Encode(cur->symbol);
if (!encoded_symbol)
{
return -1;
}
printf("(\"%s\" ", encoded_symbol);
free(encoded_symbol);
while (desc)
{
char *encoded_desc = Encode(desc->desc);
char *encoded_url = Encode(desc->url);
if (!encoded_desc || !encoded_url)
{
return -1;
}
printf("(\"%s\" . \"%s\")", encoded_desc, encoded_url);
free(encoded_desc);
free(encoded_url);
if (desc->next)
{
printf(" ");
}
desc = desc->next;
}
printf(")");
if (cur->next)
{
printf(" ");
}
cur = cur->next;
}
printf(")\n");
return 0;
}
/* Clean up */
inline void FreeCompletionList(void)
{
completion_list *cur = comp_list;
while (cur)
{
desc_url_list *desc = cur->descs;
completion_list *tmp_cl = cur;
while (desc)
{
desc_url_list *tmp_desc = desc;
desc = desc->next;
free(tmp_desc->desc);
free(tmp_desc->url);
free(tmp_desc);
}
cur = cur->next;
free(tmp_cl->symbol);
free(tmp_cl);
}
}
/* Add the members of a compound to the completion list */
inline int AddCompoundMembers(xmlNodePtr compound,
const char *name, const char *url)
{
xmlNodePtr child = compound->xmlChildrenNode;
int ret = 0;
while (child && !ret)
{
if (!xmlStrcmp(child->name, (const xmlChar *) "member"))
{
char *member_name = XMLTagChild(child, "name");
char *member_anchor = XMLTagChild(child, "anchor");
char *member_args = XMLTagChild(child, "arglist");
/* member_args can be NULL... just means there's no args */
if (!member_name || !member_anchor)
{
fprintf(stderr, "Invalid Doxygen tags file\n");
ret = -1;
}
else
{
char *member_name_copy = strdup(member_name);
char *member_url = (char *)malloc(strlen(url) +
strlen(member_anchor) +
2);
char *member_desc = (char *)malloc(strlen(name) +
strlen(member_name) +
(member_args ?
strlen(member_args) : 0) +
3);
if (member_url && member_desc && member_name_copy)
{
sprintf(member_url, "%s#%s", url, member_anchor);
sprintf(member_desc,
"%s::%s%s",
name, member_name, member_args ? member_args : "");
if (AddToCompletionList(member_name_copy,
member_desc, member_url) < 0)
{
ret = -1;
}
}
else
{
fprintf(stderr, "malloc failed\n");
if (member_url)
{
free(member_url);
}
if (member_desc)
{
free(member_desc);
}
if (member_name_copy)
{
free(member_name_copy);
}
ret = -1;
}
}
}
child = child->next;
}
return ret;
}
int main(int argc, char *argv[])
{
xmlDocPtr doc = NULL;
xmlNodePtr cur;
int ret = 0;
int res;
#define BUFF_SIZE 25 * 1024
char buff[BUFF_SIZE];
LIBXML_TEST_VERSION;
comp_list = NULL;
memset(symbol_hash, 0, sizeof(symbol_hash));
res = fread(buff, 1, 4, stdin);
if (res > 0) {
xmlParserCtxtPtr ctxt = xmlCreatePushParserCtxt(NULL, NULL,
buff, res, "stdin");
if (!ctxt)
{
fprintf(stderr, "Failed to parse XML file\n");
ret = -1;
goto abort;
}
while ((res = fread(buff, 1, BUFF_SIZE, stdin)) > 0)
{
if (xmlParseChunk(ctxt, buff, res, 0) != 0)
{
fprintf(stderr, "Failed to parse XML file\n");
ret = -1;
xmlFreeParserCtxt(ctxt);
goto abort;
}
}
if (xmlParseChunk(ctxt, buff, 0, 1) != 0)
{
fprintf(stderr, "Failed to parse XML file\n");
ret = -1;
xmlFreeParserCtxt(ctxt);
goto abort;
}
doc = ctxt->myDoc;
xmlFreeParserCtxt(ctxt);
}
if (!doc)
{
fprintf(stderr, "Failed to parse XML file\n");
ret = -1;
goto abort;
}
cur = xmlDocGetRootElement(doc);
if (!cur)
{
fprintf(stderr, "Empty XML document\n");
ret = -1;
goto abort;
}
if (xmlStrcmp(cur->name, (const xmlChar *) "tagfile"))
{
fprintf(stderr, "Invalid Doxygen tag file, root node != tagfile\n");
ret = -1;
goto abort;
}
cur = cur->xmlChildrenNode;
while (cur)
{
if (cur->type == XML_ELEMENT_NODE)
{
char *compound_name = XMLTagChild(cur, "name");
char *compound_kind = XMLTagAttr(cur, "kind");
char *compound_url = XMLTagChild(cur, "filename");
char *compound_desc;
char *compound_name_copy;
char *compound_url_copy;
if (!compound_name || !compound_kind || !compound_url)
{
fprintf(stderr, "Invalid Doxygen tags file\n");
ret = -1;
goto abort;
}
compound_desc = (char *)malloc(strlen(compound_kind) +
strlen(compound_name) + 3);
if (!compound_desc)
{
fprintf(stderr, "malloc failed\n");
ret = -1;
goto abort;
}
sprintf(compound_desc, "%s %s", compound_kind, compound_name);
/* Workaround for apparent Doxygen 1.2.18 bug */
{
int copy_url = 1;
/* Some compounds don't get the .html in the URL */
if (strcmp(compound_url + strlen(compound_url)
- strlen(".html"),
".html") != 0)
{
compound_url_copy = (char *)malloc(strlen(compound_url) +
strlen(".html") + 1);
sprintf(compound_url_copy, "%s.html", compound_url);
compound_url = compound_url_copy;
copy_url = 0;
}
compound_name_copy = strdup(compound_name);
if (copy_url)
{
compound_url_copy = strdup(compound_url);
}
else
{
compound_url_copy = compound_url;
}
}
if (!compound_name_copy || !compound_url_copy)
{
fprintf(stderr, "malloc failed\n");
ret = -1;
if (compound_name_copy)
{
free(compound_name_copy);
}
if (compound_url_copy)
{
free(compound_url_copy);
}
goto abort;
}
if (AddToCompletionList(compound_name_copy,
compound_desc,
compound_url_copy) < 0)
{
ret = -1;
goto abort;
}
if (AddCompoundMembers(cur, compound_name, compound_url) < 0)
{
ret = -1;
goto abort;
}
}
cur = cur->next;
}
if (OutputCompletionList() < 0)
{
ret = -1;
goto abort;
}
abort:
FreeHash();
FreeCompletionList();
if (doc)
{
xmlFreeDoc(doc);
}
return ret;
}

View File

@ -1,58 +0,0 @@
dnl Process this file with autoconf to produce a configure script.
dnl $Id: configure.ac,v 1.11 2007/06/10 13:17:24 ryants Exp $
AC_INIT(doxymacs, 1.8.0, http://sourceforge.net/projects/doxymacs)
AC_PREREQ(2.57)
AC_REVISION($Revision: 1.11 $)
AC_CONFIG_SRCDIR(c/doxymacs_parser.c)
AM_INIT_AUTOMAKE(doxymacs, 1.8.0)
AC_PREFIX_DEFAULT(${HOME})
dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
AM_PATH_LISPDIR
dnl Checks for libraries.
AM_PATH_XML2(2.6.13)
dnl Checks for header files.
AC_HEADER_STDC
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
dnl Checks for library functions.
AC_CHECK_FUNCS(strdup)
dnl Doxymacs specific configure options
AC_ARG_WITH(default-style,
AC_HELP_STRING([--with-default-style=STYLE],
[Default Doxygen style to use. One of "JavaDoc", "Qt", "C++" or "C++!". Default "JavaDoc". ]),
DOXYMACS_DEFAULT_STYLE="$withval", DOXYMACS_DEFAULT_STYLE="JavaDoc")
AC_ARG_WITH(external-xml-parser,
AC_HELP_STRING([--with-external-xml-parser],
[Use external default xml parser by default. Default is to use internal xml parser.]),
DOXYMACS_USE_EXTERNAL_XML_PARSER="t", DOXYMACS_USE_EXTERNAL_XML_PARSER="nil")
AC_SUBST(DOXYMACS_DEFAULT_STYLE)
AC_SUBST(DOXYMACS_USE_EXTERNAL_XML_PARSER)
dnl Here is a hack to get the REAL bindir without any other
dnl embedded variables.
AC_CONFIG_COMMANDS_PRE([abs_bindir=${bindir} ; while echo ${abs_bindir} | grep '${[[A-Za-z0-9_]]\+}' > /dev/null ; do abs_bindir=`eval echo ${abs_bindir}` ; done ; DOXYMACS_PARSER=${abs_bindir}/doxymacs_parser${EXEEXT}])
AC_SUBST(DOXYMACS_PARSER)
AC_ARG_VAR(EMACS, [How to invoke emacs (e.g. EMACS=xemacs to use XEmacs).])
AC_ARG_VAR(EMACSLOADPATH, [Default load-path for EMACS.])
AC_CONFIG_FILES([Makefile c/Makefile lisp/Makefile lisp/doxymacs.el
no-autoconf/Makefile])
AC_OUTPUT

View File

@ -1,54 +0,0 @@
#!/bin/sh
# Copyright 1995 Free Software Foundation, Inc.
# François Pinard <pinard@iro.umontreal.ca>, 1995.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This script byte-compiles all `.el' files which are part of its
# arguments, using GNU Emacs, and put the resulting `.elc' files into
# the current directory, so disregarding the original directories used
# in `.el' arguments.
#
# This script manages in such a way that all Emacs LISP files to
# be compiled are made visible between themselves, in the event
# they require or load-library one another.
if test $# = 0; then
echo 1>&2 "No files given to $0"
exit 1
else
if test -z "$EMACS" || test "$EMACS" = "t"; then
# Value of "t" means we are running in a shell under Emacs.
# Just assume Emacs is called "emacs".
EMACS=emacs
fi
tempdir=elc.$$
mkdir $tempdir
cp $* $tempdir
cd $tempdir
echo "(setq load-path (cons \"..\" load-path))" > script
$EMACS -batch -q -l script -f batch-byte-compile *.el
mv *.elc ..
cd ..
rm -fr $tempdir
fi

View File

@ -1,134 +0,0 @@
<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>
<tagfile>
<compound kind="file">
<name>aclass.h</name>
<path>/home/rts/Projects/doxymacs/example/src/</path>
<filename>aclass_8h</filename>
<class kind="class">Foo</class>
<class kind="struct">blah</class>
<class kind="struct">baz</class>
<namespace>NameSpaceTest</namespace>
<member kind="define">
<type>#define</type>
<name>SOME_OBSCURE_DEFINE</name>
<anchorfile>aclass_8h.html</anchorfile>
<anchor>a7a597155a7a2c7edf98291e4196f6f37</anchor>
<arglist></arglist>
</member>
<member kind="enumeration">
<name>_blah</name>
<anchorfile>aclass_8h.html</anchorfile>
<anchor>aff7431c1e83d4cf5f4810ed8e9dc2e7e</anchor>
<arglist></arglist>
</member>
<member kind="enumvalue">
<name>FOO_SNAZ</name>
<anchorfile>aclass_8h.html</anchorfile>
<anchor>aff7431c1e83d4cf5f4810ed8e9dc2e7eaff576ecff55813a881ead287578a3611</anchor>
<arglist></arglist>
</member>
<member kind="enumvalue">
<name>Foo</name>
<anchorfile>aclass_8h.html</anchorfile>
<anchor>aff7431c1e83d4cf5f4810ed8e9dc2e7eaca2a3a2b2da8e517565fb654a86639b6</anchor>
<arglist></arglist>
</member>
<member kind="variable">
<type>int</type>
<name>foobazbar</name>
<anchorfile>namespaceNameSpaceTest.html</anchorfile>
<anchor>a5f0fd9588d8e6d4aaf2ff4ad20d7e60b</anchor>
<arglist></arglist>
</member>
</compound>
<compound kind="struct">
<name>baz</name>
<filename>structbaz.html</filename>
<member kind="variable">
<type>int</type>
<name>z</name>
<anchorfile>structbaz.html</anchorfile>
<anchor>aa5d83e88ff56e3e2511d5f9335106e78</anchor>
<arglist></arglist>
</member>
</compound>
<compound kind="struct">
<name>blah</name>
<filename>structblah.html</filename>
<member kind="variable">
<type>int</type>
<name>x</name>
<anchorfile>structblah.html</anchorfile>
<anchor>afa9a06361ecd9f06902546449295d4c7</anchor>
<arglist></arglist>
</member>
<member kind="variable">
<type>int</type>
<name>y</name>
<anchorfile>structblah.html</anchorfile>
<anchor>a7867e67a7099e4420c9de686a68eb6c8</anchor>
<arglist></arglist>
</member>
</compound>
<compound kind="class">
<name>Foo</name>
<filename>classFoo.html</filename>
<member kind="enumeration">
<name>blah_blah</name>
<anchorfile>classFoo.html</anchorfile>
<anchor>a9fbd006a5c0ff9ddb4f02a950d4e862c</anchor>
<arglist></arglist>
</member>
<member kind="enumvalue">
<name>BAZ</name>
<anchorfile>classFoo.html</anchorfile>
<anchor>a9fbd006a5c0ff9ddb4f02a950d4e862ca551af527291c62badc07f5731648c7ed</anchor>
<arglist></arglist>
</member>
<member kind="enumvalue">
<name>BAZ2</name>
<anchorfile>classFoo.html</anchorfile>
<anchor>a9fbd006a5c0ff9ddb4f02a950d4e862cacba6ac26da56f9234ebf45f6398cb9c0</anchor>
<arglist></arglist>
</member>
<member kind="function">
<type></type>
<name>Foo</name>
<anchorfile>classFoo.html</anchorfile>
<anchor>a400553bba3f44d1d4b82a0be2bf575b6</anchor>
<arglist>(int blah)</arglist>
</member>
<member kind="function">
<type></type>
<name>GetBlah</name>
<anchorfile>classFoo.html</anchorfile>
<anchor>a1d524237312eaafba8838e9c354df460</anchor>
<arglist>(void) const </arglist>
</member>
<member kind="function" protection="private">
<type></type>
<name>Foo</name>
<anchorfile>classFoo.html</anchorfile>
<anchor>aefff6cbdd4727b0b1da2c7c00f529a02</anchor>
<arglist>(int &amp;in, int &amp;out, int &amp;inout)</arglist>
</member>
<member kind="variable" protection="private">
<type>int</type>
<name>_blah</name>
<anchorfile>classFoo.html</anchorfile>
<anchor>a4e5ef452fe3f664199e8c5e91754e0e2</anchor>
<arglist></arglist>
</member>
</compound>
<compound kind="namespace">
<name>NameSpaceTest</name>
<filename>namespaceNameSpaceTest.html</filename>
<member kind="variable">
<type>int</type>
<name>foobazbar</name>
<anchorfile>namespaceNameSpaceTest.html</anchorfile>
<anchor>a5f0fd9588d8e6d4aaf2ff4ad20d7e60b</anchor>
<arglist></arglist>
</member>
</compound>
</tagfile>

View File

@ -1,65 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Test project: aclass.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>aclass.h</h1><a href="aclass_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// $Id: aclass_8h-source.html,v 1.6 2006/04/23 01:04:30 ryants Exp $</span>
<a name="l00002"></a>00002 <span class="comment">// This is just some silly sample file to test out doxymacs with.</span>
<a name="l00003"></a>00003 <span class="preprocessor">#ifndef _ACLASS_H_</span>
<a name="l00004"></a>00004 <span class="preprocessor"></span><span class="preprocessor">#define _ACLASS_H_</span>
<a name="l00005"></a>00005 <span class="preprocessor"></span>
<a name="l00006"></a>00006
<a name="l00007"></a><a class="code" href="aclass_8h.html#a0">00007</a> <span class="preprocessor">#define SOME_OBSCURE_DEFINE 76</span>
<a name="l00008"></a>00008 <span class="preprocessor"></span>
<a name="l00013"></a><a class="code" href="classFoo.html">00013</a> <span class="keyword">class </span><a class="code" href="classFoo.html">Foo</a>
<a name="l00014"></a>00014 {
<a name="l00015"></a>00015 <span class="keyword">public</span>:
<a name="l00021"></a><a class="code" href="classFoo.html#a0">00021</a> <a class="code" href="classFoo.html#a0">Foo</a>(<span class="keywordtype">int</span> <a class="code" href="structblah.html">blah</a>)
<a name="l00022"></a>00022 : <a class="code" href="aclass_8h.html#a4">_blah</a>(blah)
<a name="l00023"></a>00023 {}
<a name="l00024"></a>00024
<a name="l00028"></a><a class="code" href="classFoo.html#a1">00028</a> <a class="code" href="classFoo.html#a1">GetBlah</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="aclass_8h.html#a4">_blah</a>; }
<a name="l00029"></a>00029
<a name="l00030"></a><a class="code" href="classFoo.html#w2">00030</a> <span class="keyword">enum</span> <a class="code" href="classFoo.html#w2">blah_blah</a>
<a name="l00031"></a>00031 {
<a name="l00032"></a>00032 <a class="code" href="classFoo.html#w2w0">BAZ</a>,
<a name="l00033"></a>00033 <a class="code" href="classFoo.html#w2w1">BAZ2</a>,
<a name="l00034"></a>00034 };
<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keyword">private</span>:
<a name="l00037"></a>00037
<a name="l00045"></a><a class="code" href="classFoo.html#d0">00045</a> <a class="code" href="classFoo.html#a0">Foo</a>(<span class="keywordtype">int</span> &amp;in, <span class="keywordtype">int</span> &amp;out, <span class="keywordtype">int</span> &amp;inout) { out = in + inout; }
<a name="l00046"></a>00046
<a name="l00048"></a><a class="code" href="classFoo.html#r0">00048</a> <span class="keywordtype">int</span> <a class="code" href="aclass_8h.html#a4">_blah</a>;
<a name="l00049"></a>00049 };
<a name="l00050"></a>00050
<a name="l00052"></a><a class="code" href="structblah.html">00052</a> <span class="keyword">struct </span><a class="code" href="structblah.html">blah</a>
<a name="l00053"></a>00053 {
<a name="l00054"></a><a class="code" href="structblah.html#o0">00054</a> <span class="keywordtype">int</span> <a class="code" href="structblah.html#o0">x</a>;
<a name="l00055"></a><a class="code" href="structblah.html#o1">00055</a> <span class="keywordtype">int</span> <a class="code" href="structblah.html#o1">y</a>;
<a name="l00056"></a>00056 };
<a name="l00057"></a>00057
<a name="l00058"></a><a class="code" href="structbaz.html">00058</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>
<a name="l00059"></a>00059 <span class="keyword"></span>{
<a name="l00060"></a><a class="code" href="structbaz.html#o0">00060</a> <span class="keywordtype">int</span> z;
<a name="l00061"></a>00061 } <a class="code" href="structbaz.html">baz</a>;
<a name="l00062"></a>00062
<a name="l00064"></a><a class="code" href="aclass_8h.html#a4">00064</a> <span class="keyword">enum</span> <a class="code" href="aclass_8h.html#a4">_blah</a>
<a name="l00065"></a>00065 {
<a name="l00066"></a>00066 <a class="code" href="aclass_8h.html#a4a2">FOO_SNAZ</a>,
<a name="l00067"></a>00067 <a class="code" href="classFoo.html">Foo</a>
<a name="l00068"></a>00068 };
<a name="l00069"></a>00069
<a name="l00071"></a><a class="code" href="namespaceNameSpaceTest.html">00071</a> <span class="keyword">namespace </span>NameSpaceTest
<a name="l00072"></a>00072 {
<a name="l00073"></a><a class="code" href="namespaceNameSpaceTest.html#a0">00073</a> <span class="keywordtype">int</span> <a class="code" href="namespaceNameSpaceTest.html#a0">foobazbar</a>;
<a name="l00074"></a>00074 }
<a name="l00075"></a>00075
<a name="l00076"></a>00076 <span class="preprocessor">#endif // _ACLASS_H_</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sat Apr 22 17:58:57 2006 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>

View File

@ -1,108 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: aclass.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>aclass.h File Reference</h1>
<p><a href="aclass_8h_source.html">Go to the source code of this file.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFoo.html">Foo</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This class does <a class="el" href="structblah.html" title="This struct does something useless.">blah</a>. <a href="classFoo.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structblah.html">blah</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This struct does something useless. <a href="structblah.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbaz.html">baz</a></td></tr>
<tr><td colspan="2"><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceNameSpaceTest.html">NameSpaceTest</a></td></tr>
<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Some namespace. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="aclass_8h.html#a7a597155a7a2c7edf98291e4196f6f37">SOME_OBSCURE_DEFINE</a>&nbsp;&nbsp;&nbsp;76</td></tr>
<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7e">_blah</a> { <a class="el" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7eaff576ecff55813a881ead287578a3611">FOO_SNAZ</a>,
<a class="el" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7eaca2a3a2b2da8e517565fb654a86639b6">Foo</a>
}</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>This is a useless enum. </p>
<a href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7e">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceNameSpaceTest.html#a5f0fd9588d8e6d4aaf2ff4ad20d7e60b">NameSpaceTest::foobazbar</a></td></tr>
</table>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="a7a597155a7a2c7edf98291e4196f6f37"></a><!-- doxytag: member="aclass.h::SOME_OBSCURE_DEFINE" ref="a7a597155a7a2c7edf98291e4196f6f37" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SOME_OBSCURE_DEFINE&nbsp;&nbsp;&nbsp;76</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00007">7</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
</div>
</div>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="aff7431c1e83d4cf5f4810ed8e9dc2e7e"></a><!-- doxytag: member="aclass.h::_blah" ref="aff7431c1e83d4cf5f4810ed8e9dc2e7e" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7e">_blah</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>This is a useless enum. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="aff7431c1e83d4cf5f4810ed8e9dc2e7eaff576ecff55813a881ead287578a3611"></a><!-- doxytag: member="FOO_SNAZ" ref="aff7431c1e83d4cf5f4810ed8e9dc2e7eaff576ecff55813a881ead287578a3611" args="" -->FOO_SNAZ</em>&nbsp;</td><td>
<p>More silly stuff. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="aff7431c1e83d4cf5f4810ed8e9dc2e7eaca2a3a2b2da8e517565fb654a86639b6"></a><!-- doxytag: member="Foo" ref="aff7431c1e83d4cf5f4810ed8e9dc2e7eaca2a3a2b2da8e517565fb654a86639b6" args="" -->Foo</em>&nbsp;</td><td>
</td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00064">64</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
<p><div class="fragment"><pre class="fragment"><a name="l00065"></a>00065 {
<a name="l00066"></a>00066 <a class="code" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7eaff576ecff55813a881ead287578a3611" title="More silly stuff.">FOO_SNAZ</a>,
<a name="l00067"></a>00067 <a class="code" href="classFoo.html" title="This class does blah.">Foo</a>
<a name="l00068"></a>00068 };
</pre></div></p>
</div>
</div>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,84 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: aclass.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul>
</div>
<h1>aclass.h</h1><a href="aclass_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// $Id: aclass.h,v 1.3 2005/04/01 06:05:06 ryants Exp $</span>
<a name="l00002"></a>00002 <span class="comment">// This is just some silly sample file to test out doxymacs with.</span>
<a name="l00003"></a>00003 <span class="preprocessor">#ifndef _ACLASS_H_</span>
<a name="l00004"></a>00004 <span class="preprocessor"></span><span class="preprocessor">#define _ACLASS_H_</span>
<a name="l00005"></a>00005 <span class="preprocessor"></span>
<a name="l00006"></a>00006
<a name="l00007"></a><a class="code" href="aclass_8h.html#a7a597155a7a2c7edf98291e4196f6f37">00007</a> <span class="preprocessor">#define SOME_OBSCURE_DEFINE 76</span>
<a name="l00008"></a>00008 <span class="preprocessor"></span>
<a name="l00013"></a><a class="code" href="classFoo.html">00013</a> <span class="keyword">class </span><a class="code" href="classFoo.html" title="This class does blah.">Foo</a>
<a name="l00014"></a>00014 {
<a name="l00015"></a>00015 <span class="keyword">public</span>:
<a name="l00021"></a><a class="code" href="classFoo.html#a400553bba3f44d1d4b82a0be2bf575b6">00021</a> <a class="code" href="classFoo.html#a400553bba3f44d1d4b82a0be2bf575b6" title="The constructor.">Foo</a>(<span class="keywordtype">int</span> <a class="code" href="structblah.html" title="This struct does something useless.">blah</a>)
<a name="l00022"></a>00022 : <a class="code" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7e" title="This is a useless enum.">_blah</a>(blah)
<a name="l00023"></a>00023 {}
<a name="l00024"></a>00024
<a name="l00028"></a><a class="code" href="classFoo.html#a1d524237312eaafba8838e9c354df460">00028</a> <a class="code" href="classFoo.html#a1d524237312eaafba8838e9c354df460" title="Gets the current value of blah.">GetBlah</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7e" title="This is a useless enum.">_blah</a>; }
<a name="l00029"></a>00029
<a name="l00030"></a><a class="code" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862c">00030</a> <span class="keyword">enum</span> <a class="code" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862c">blah_blah</a>
<a name="l00031"></a>00031 {
<a name="l00032"></a><a class="code" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862ca551af527291c62badc07f5731648c7ed">00032</a> <a class="code" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862ca551af527291c62badc07f5731648c7ed">BAZ</a>,
<a name="l00033"></a><a class="code" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862cacba6ac26da56f9234ebf45f6398cb9c0">00033</a> <a class="code" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862cacba6ac26da56f9234ebf45f6398cb9c0">BAZ2</a>,
<a name="l00034"></a>00034 };
<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keyword">private</span>:
<a name="l00037"></a>00037
<a name="l00045"></a><a class="code" href="classFoo.html#aefff6cbdd4727b0b1da2c7c00f529a02">00045</a> <a class="code" href="classFoo.html#aefff6cbdd4727b0b1da2c7c00f529a02" title="Testing the in/out parameter stuff.">Foo</a>(<span class="keywordtype">int</span> &amp;in, <span class="keywordtype">int</span> &amp;out, <span class="keywordtype">int</span> &amp;inout) { out = in + inout; }
<a name="l00046"></a>00046
<a name="l00048"></a><a class="code" href="classFoo.html#a4e5ef452fe3f664199e8c5e91754e0e2">00048</a> <span class="keywordtype">int</span> <a class="code" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7e" title="This is a useless enum.">_blah</a>;
<a name="l00049"></a>00049 };
<a name="l00050"></a>00050
<a name="l00052"></a><a class="code" href="structblah.html">00052</a> <span class="keyword">struct </span><a class="code" href="structblah.html" title="This struct does something useless.">blah</a>
<a name="l00053"></a>00053 {
<a name="l00054"></a><a class="code" href="structblah.html#afa9a06361ecd9f06902546449295d4c7">00054</a> <span class="keywordtype">int</span> <a class="code" href="structblah.html#afa9a06361ecd9f06902546449295d4c7">x</a>;
<a name="l00055"></a><a class="code" href="structblah.html#a7867e67a7099e4420c9de686a68eb6c8">00055</a> <span class="keywordtype">int</span> <a class="code" href="structblah.html#a7867e67a7099e4420c9de686a68eb6c8">y</a>;
<a name="l00056"></a>00056 };
<a name="l00057"></a>00057
<a name="l00058"></a><a class="code" href="structbaz.html">00058</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>
<a name="l00059"></a>00059 {
<a name="l00060"></a><a class="code" href="structbaz.html#aa5d83e88ff56e3e2511d5f9335106e78">00060</a> <span class="keywordtype">int</span> z;
<a name="l00061"></a>00061 } <a class="code" href="structbaz.html">baz</a>;
<a name="l00062"></a>00062
<a name="l00064"></a><a class="code" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7e">00064</a> <span class="keyword">enum</span> <a class="code" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7e" title="This is a useless enum.">_blah</a>
<a name="l00065"></a>00065 {
<a name="l00066"></a><a class="code" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7eaff576ecff55813a881ead287578a3611">00066</a> <a class="code" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7eaff576ecff55813a881ead287578a3611" title="More silly stuff.">FOO_SNAZ</a>,
<a name="l00067"></a><a class="code" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7eaca2a3a2b2da8e517565fb654a86639b6">00067</a> <a class="code" href="classFoo.html" title="This class does blah.">Foo</a>
<a name="l00068"></a>00068 };
<a name="l00069"></a>00069
<a name="l00071"></a><a class="code" href="namespaceNameSpaceTest.html">00071</a> <span class="keyword">namespace </span>NameSpaceTest
<a name="l00072"></a>00072 {
<a name="l00073"></a><a class="code" href="namespaceNameSpaceTest.html#a5f0fd9588d8e6d4aaf2ff4ad20d7e60b">00073</a> <span class="keywordtype">int</span> <a class="code" href="namespaceNameSpaceTest.html#a5f0fd9588d8e6d4aaf2ff4ad20d7e60b">foobazbar</a>;
<a name="l00074"></a>00074 }
<a name="l00075"></a>00075
<a name="l00076"></a>00076 <span class="preprocessor">#endif // _ACLASS_H_</span>
</pre></div></div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,38 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="structbaz.html">baz</a></td><td class="indexvalue"></td></tr>
<tr><td class="indexkey"><a class="el" href="structblah.html">blah</a></td><td class="indexvalue">This struct does something useless </td></tr>
<tr><td class="indexkey"><a class="el" href="classFoo.html">Foo</a></td><td class="indexvalue">This class does <a class="el" href="structblah.html" title="This struct does something useless.">blah</a> </td></tr>
</table>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,41 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Foo Member List</h1>This is the complete list of members for <a class="el" href="classFoo.html">Foo</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classFoo.html#a4e5ef452fe3f664199e8c5e91754e0e2">_blah</a></td><td><a class="el" href="classFoo.html">Foo</a></td><td><code> [private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862ca551af527291c62badc07f5731648c7ed">BAZ</a> enum value</td><td><a class="el" href="classFoo.html">Foo</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862cacba6ac26da56f9234ebf45f6398cb9c0">BAZ2</a> enum value</td><td><a class="el" href="classFoo.html">Foo</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862c">blah_blah</a> enum name</td><td><a class="el" href="classFoo.html">Foo</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classFoo.html#a400553bba3f44d1d4b82a0be2bf575b6">Foo</a>(int blah)</td><td><a class="el" href="classFoo.html">Foo</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classFoo.html#aefff6cbdd4727b0b1da2c7c00f529a02">Foo</a>(int &amp;in, int &amp;out, int &amp;inout)</td><td><a class="el" href="classFoo.html">Foo</a></td><td><code> [inline, private]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classFoo.html#a1d524237312eaafba8838e9c354df460">GetBlah</a>(void) const </td><td><a class="el" href="classFoo.html">Foo</a></td><td><code> [inline]</code></td></tr>
</table></div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,219 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Foo Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Foo Class Reference</h1><!-- doxytag: class="Foo" -->
<p>This class does <a class="el" href="structblah.html" title="This struct does something useless.">blah</a>.
<a href="#_details">More...</a></p>
<p><code>#include &lt;<a class="el" href="aclass_8h_source.html">aclass.h</a>&gt;</code></p>
<p><a href="classFoo-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862c">blah_blah</a> { <a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862ca551af527291c62badc07f5731648c7ed">BAZ</a>,
<a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862cacba6ac26da56f9234ebf45f6398cb9c0">BAZ2</a>
}</td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFoo.html#a400553bba3f44d1d4b82a0be2bf575b6">Foo</a> (int <a class="el" href="structblah.html">blah</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The constructor. <a href="#a400553bba3f44d1d4b82a0be2bf575b6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFoo.html#a1d524237312eaafba8838e9c354df460">GetBlah</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the current value of <a class="el" href="structblah.html" title="This struct does something useless.">blah</a>. <a href="#a1d524237312eaafba8838e9c354df460"></a><br/></td></tr>
<tr><td colspan="2"><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFoo.html#aefff6cbdd4727b0b1da2c7c00f529a02">Foo</a> (int &amp;in, int &amp;out, int &amp;inout)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Testing the in/out parameter stuff. <a href="#aefff6cbdd4727b0b1da2c7c00f529a02"></a><br/></td></tr>
<tr><td colspan="2"><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFoo.html#a4e5ef452fe3f664199e8c5e91754e0e2">_blah</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is a measure of our blahness. <a href="#a4e5ef452fe3f664199e8c5e91754e0e2"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>This class does <a class="el" href="structblah.html" title="This struct does something useless.">blah</a>. </p>
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00013">13</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
<hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a9fbd006a5c0ff9ddb4f02a950d4e862c"></a><!-- doxytag: member="Foo::blah_blah" ref="a9fbd006a5c0ff9ddb4f02a950d4e862c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862c">Foo::blah_blah</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a9fbd006a5c0ff9ddb4f02a950d4e862ca551af527291c62badc07f5731648c7ed"></a><!-- doxytag: member="BAZ" ref="a9fbd006a5c0ff9ddb4f02a950d4e862ca551af527291c62badc07f5731648c7ed" args="" -->BAZ</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a9fbd006a5c0ff9ddb4f02a950d4e862cacba6ac26da56f9234ebf45f6398cb9c0"></a><!-- doxytag: member="BAZ2" ref="a9fbd006a5c0ff9ddb4f02a950d4e862cacba6ac26da56f9234ebf45f6398cb9c0" args="" -->BAZ2</em>&nbsp;</td><td>
</td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00030">30</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
<p><div class="fragment"><pre class="fragment"><a name="l00031"></a>00031 {
<a name="l00032"></a>00032 <a class="code" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862ca551af527291c62badc07f5731648c7ed">BAZ</a>,
<a name="l00033"></a>00033 <a class="code" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862cacba6ac26da56f9234ebf45f6398cb9c0">BAZ2</a>,
<a name="l00034"></a>00034 };
</pre></div></p>
</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a400553bba3f44d1d4b82a0be2bf575b6"></a><!-- doxytag: member="Foo::Foo" ref="a400553bba3f44d1d4b82a0be2bf575b6" args="(int blah)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Foo::Foo </td>
<td>(</td>
<td class="paramtype">int&nbsp;</td>
<td class="paramname"> <em>blah</em></td>
<td>&nbsp;)&nbsp;</td>
<td><code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>The constructor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em><a class="el" href="structblah.html" title="This struct does something useless.">blah</a></em>&nbsp;</td><td>Some kind of fish. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00021">21</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
<p><div class="fragment"><pre class="fragment"><a name="l00022"></a>00022 : <a class="code" href="classFoo.html#a4e5ef452fe3f664199e8c5e91754e0e2" title="This is a measure of our blahness.">_blah</a>(<a class="code" href="structblah.html" title="This struct does something useless.">blah</a>)
<a name="l00023"></a>00023 {}
</pre></div></p>
</div>
</div>
<a class="anchor" id="aefff6cbdd4727b0b1da2c7c00f529a02"></a><!-- doxytag: member="Foo::Foo" ref="aefff6cbdd4727b0b1da2c7c00f529a02" args="(int &amp;in, int &amp;out, int &amp;inout)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Foo::Foo </td>
<td>(</td>
<td class="paramtype">int &amp;&nbsp;</td>
<td class="paramname"> <em>in</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&nbsp;</td>
<td class="paramname"> <em>out</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int &amp;&nbsp;</td>
<td class="paramname"> <em>inout</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td><code> [inline, private]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Testing the in/out parameter stuff. </p>
<dl><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>in</em>&nbsp;</td><td>An "in" parameter </td></tr>
<tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>out</em>&nbsp;</td><td>An "out" parameter </td></tr>
<tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>inout</em>&nbsp;</td><td>An "inout" parameter </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00045">45</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
<p><div class="fragment"><pre class="fragment"><a name="l00045"></a>00045 { out = in + inout; }
</pre></div></p>
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a1d524237312eaafba8838e9c354df460"></a><!-- doxytag: member="Foo::GetBlah" ref="a1d524237312eaafba8838e9c354df460" args="(void) const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Foo::GetBlah </td>
<td>(</td>
<td class="paramtype">void&nbsp;</td>
<td class="paramname"></td>
<td>&nbsp;)&nbsp;</td>
<td> const<code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the current value of <a class="el" href="structblah.html" title="This struct does something useless.">blah</a>. </p>
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00028">28</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
<p><div class="fragment"><pre class="fragment"><a name="l00028"></a>00028 { <span class="keywordflow">return</span> <a class="code" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7e" title="This is a useless enum.">_blah</a>; }
</pre></div></p>
</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a4e5ef452fe3f664199e8c5e91754e0e2"></a><!-- doxytag: member="Foo::_blah" ref="a4e5ef452fe3f664199e8c5e91754e0e2" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="classFoo.html#a4e5ef452fe3f664199e8c5e91754e0e2">Foo::_blah</a><code> [private]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>This is a measure of our blahness. </p>
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00048">48</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="aclass_8h_source.html">aclass.h</a></li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,38 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Alphabetical List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Class Index</h1><div class="qindex"><a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a></div>
<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;B&nbsp;&nbsp;</div></td></tr></table>
</td><td><a class="el" href="structbaz.html">baz</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structblah.html">blah</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;F&nbsp;&nbsp;</div></td></tr></table>
</td><td><a class="el" href="classFoo.html">Foo</a>&nbsp;&nbsp;&nbsp;</td></tr></table><div class="qindex"><a class="qindex" href="#letter_B">B</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_F">F</a></div>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,498 +0,0 @@
/* The standard CSS for doxygen */
body, table, div, p, dl {
font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
font-size: 12px;
}
/* @group Heading Levels */
h1 {
text-align: center;
font-size: 150%;
}
h2 {
font-size: 120%;
}
h3 {
font-size: 100%;
}
dt {
font-weight: bold;
}
div.multicol {
-moz-column-gap: 1em;
-webkit-column-gap: 1em;
-moz-column-count: 3;
-webkit-column-count: 3;
}
p.startli, p.startdd {
margin-top: 2px;
}
p.endli {
margin-bottom: 0px;
}
p.enddd {
margin-bottom: 4px;
}
/* @end */
caption {
font-weight: bold;
}
span.legend {
font-size: 70%;
text-align: center;
}
div.qindex, div.navtab{
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
padding: 2px;
}
div.qindex, div.navpath {
width: 100%;
line-height: 140%;
}
div.navtab {
margin-right: 15px;
}
/* @group Link Styling */
a {
color: #153788;
font-weight: normal;
text-decoration: none;
}
.contents a:visited {
color: #1b77c5;
}
a:hover {
text-decoration: underline;
}
a.qindex {
font-weight: bold;
}
a.qindexHL {
font-weight: bold;
background-color: #6666cc;
color: #ffffff;
border: 1px double #9295C2;
}
.contents a.qindexHL:visited {
color: #ffffff;
}
a.el {
font-weight: bold;
}
a.elRef {
}
a.code {
}
a.codeRef {
}
/* @end */
dl.el {
margin-left: -1cm;
}
.fragment {
font-family: monospace, fixed;
font-size: 105%;
}
pre.fragment {
border: 1px solid #CCCCCC;
background-color: #f5f5f5;
padding: 4px 6px;
margin: 4px 8px 4px 2px;
}
div.ah {
background-color: black;
font-weight: bold;
color: #ffffff;
margin-bottom: 3px;
margin-top: 3px
}
div.groupHeader {
margin-left: 16px;
margin-top: 12px;
margin-bottom: 6px;
font-weight: bold;
}
div.groupText {
margin-left: 16px;
font-style: italic;
}
body {
background: white;
color: black;
margin-right: 20px;
margin-left: 20px;
}
td.indexkey {
background-color: #e8eef2;
font-weight: bold;
border: 1px solid #CCCCCC;
margin: 2px 0px 2px 0;
padding: 2px 10px;
}
td.indexvalue {
background-color: #e8eef2;
border: 1px solid #CCCCCC;
padding: 2px 10px;
margin: 2px 0px;
}
tr.memlist {
background-color: #f0f0f0;
}
p.formulaDsp {
text-align: center;
}
img.formulaDsp {
}
img.formulaInl {
vertical-align: middle;
}
div.center {
text-align: center;
margin-top: 0px;
margin-bottom: 0px;
padding: 0px;
}
div.center img {
border: 0px;
}
img.footer {
border: 0px;
vertical-align: middle;
}
/* @group Code Colorization */
span.keyword {
color: #008000
}
span.keywordtype {
color: #604020
}
span.keywordflow {
color: #e08000
}
span.comment {
color: #800000
}
span.preprocessor {
color: #806020
}
span.stringliteral {
color: #002080
}
span.charliteral {
color: #008080
}
span.vhdldigit {
color: #ff00ff
}
span.vhdlchar {
color: #000000
}
span.vhdlkeyword {
color: #700070
}
span.vhdllogic {
color: #ff0000
}
/* @end */
.search {
color: #003399;
font-weight: bold;
}
form.search {
margin-bottom: 0px;
margin-top: 0px;
}
input.search {
font-size: 75%;
color: #000080;
font-weight: normal;
background-color: #e8eef2;
}
td.tiny {
font-size: 75%;
}
.dirtab {
padding: 4px;
border-collapse: collapse;
border: 1px solid #84b0c7;
}
th.dirtab {
background: #e8eef2;
font-weight: bold;
}
hr {
height: 0;
border: none;
border-top: 1px solid #666;
}
/* @group Member Descriptions */
.mdescLeft, .mdescRight,
.memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
background-color: #FAFAFA;
border: none;
margin: 4px;
padding: 1px 0 0 8px;
}
.mdescLeft, .mdescRight {
padding: 0px 8px 4px 8px;
color: #555;
}
.memItemLeft, .memItemRight, .memTemplParams {
border-top: 1px solid #ccc;
}
.memItemLeft, .memTemplItemLeft {
white-space: nowrap;
}
.memTemplParams {
color: #606060;
white-space: nowrap;
}
/* @end */
/* @group Member Details */
/* Styles for detailed member documentation */
.memtemplate {
font-size: 80%;
color: #606060;
font-weight: normal;
margin-left: 3px;
}
.memnav {
background-color: #e8eef2;
border: 1px solid #84b0c7;
text-align: center;
margin: 2px;
margin-right: 15px;
padding: 2px;
}
.memitem {
padding: 0;
margin-bottom: 10px;
}
.memname {
white-space: nowrap;
font-weight: bold;
}
.memproto, .memdoc {
border: 1px solid #84b0c7;
}
.memproto {
padding: 0;
background-color: #d5e1e8;
font-weight: bold;
-webkit-border-top-left-radius: 8px;
-webkit-border-top-right-radius: 8px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-moz-border-radius-topleft: 8px;
-moz-border-radius-topright: 8px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
}
.memdoc {
padding: 2px 5px;
background-color: #eef3f5;
border-top-width: 0;
-webkit-border-bottom-left-radius: 8px;
-webkit-border-bottom-right-radius: 8px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-moz-border-radius-bottomleft: 8px;
-moz-border-radius-bottomright: 8px;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
}
.paramkey {
text-align: right;
}
.paramtype {
white-space: nowrap;
}
.paramname {
color: #602020;
white-space: nowrap;
}
.paramname em {
font-style: normal;
}
/* @end */
/* @group Directory (tree) */
/* for the tree view */
.ftvtree {
font-family: sans-serif;
margin: 0.5em;
}
/* these are for tree view when used as main index */
.directory {
font-size: 9pt;
font-weight: bold;
}
.directory h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
/*
The following two styles can be used to replace the root node title
with an image of your choice. Simply uncomment the next two styles,
specify the name of your image and be sure to set 'height' to the
proper pixel height of your image.
*/
/*
.directory h3.swap {
height: 61px;
background-repeat: no-repeat;
background-image: url("yourimage.gif");
}
.directory h3.swap span {
display: none;
}
*/
.directory > h3 {
margin-top: 0;
}
.directory p {
margin: 0px;
white-space: nowrap;
}
.directory div {
display: none;
margin: 0px;
}
.directory img {
vertical-align: -30%;
}
/* these are for tree view when not used as main index */
.directory-alt {
font-size: 100%;
font-weight: bold;
}
.directory-alt h3 {
margin: 0px;
margin-top: 1em;
font-size: 11pt;
}
.directory-alt > h3 {
margin-top: 0;
}
.directory-alt p {
margin: 0px;
white-space: nowrap;
}
.directory-alt div {
display: none;
margin: 0px;
}
.directory-alt img {
vertical-align: -30%;
}
/* @end */
address {
font-style: normal;
color: #333;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,36 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: File Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>File List</h1>Here is a list of all files with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="aclass_8h.html">aclass.h</a> <a href="aclass_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
</table>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,71 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
<li><a href="functions_enum.html"><span>Enumerations</span></a></li>
<li><a href="functions_eval.html"><span>Enumerator</span></a></li>
</ul>
</div>
</div>
<div class="contents">
Here is a list of all class members with links to the classes they belong to:<ul>
<li>_blah
: <a class="el" href="classFoo.html#a4e5ef452fe3f664199e8c5e91754e0e2">Foo</a>
</li>
<li>BAZ
: <a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862ca551af527291c62badc07f5731648c7ed">Foo</a>
</li>
<li>BAZ2
: <a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862cacba6ac26da56f9234ebf45f6398cb9c0">Foo</a>
</li>
<li>blah_blah
: <a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862c">Foo</a>
</li>
<li>Foo()
: <a class="el" href="classFoo.html#a400553bba3f44d1d4b82a0be2bf575b6">Foo</a>
</li>
<li>GetBlah()
: <a class="el" href="classFoo.html#a1d524237312eaafba8838e9c354df460">Foo</a>
</li>
<li>x
: <a class="el" href="structblah.html#afa9a06361ecd9f06902546449295d4c7">blah</a>
</li>
<li>y
: <a class="el" href="structblah.html#a7867e67a7099e4420c9de686a68eb6c8">blah</a>
</li>
<li>z
: <a class="el" href="structbaz.html#aa5d83e88ff56e3e2511d5f9335106e78">baz</a>
</li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,47 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class Members - Enumerations</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
<li class="current"><a href="functions_enum.html"><span>Enumerations</span></a></li>
<li><a href="functions_eval.html"><span>Enumerator</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;<ul>
<li>blah_blah
: <a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862c">Foo</a>
</li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,50 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class Members - Enumerator</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
<li><a href="functions_enum.html"><span>Enumerations</span></a></li>
<li class="current"><a href="functions_eval.html"><span>Enumerator</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;<ul>
<li>BAZ
: <a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862ca551af527291c62badc07f5731648c7ed">Foo</a>
</li>
<li>BAZ2
: <a class="el" href="classFoo.html#a9fbd006a5c0ff9ddb4f02a950d4e862cacba6ac26da56f9234ebf45f6398cb9c0">Foo</a>
</li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,50 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class Members - Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="functions.html"><span>All</span></a></li>
<li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
<li><a href="functions_enum.html"><span>Enumerations</span></a></li>
<li><a href="functions_eval.html"><span>Enumerator</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;<ul>
<li>Foo()
: <a class="el" href="classFoo.html#a400553bba3f44d1d4b82a0be2bf575b6">Foo</a>
</li>
<li>GetBlah()
: <a class="el" href="classFoo.html#a1d524237312eaafba8838e9c354df460">Foo</a>
</li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,56 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class Members - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li class="current"><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
<li><a href="functions_enum.html"><span>Enumerations</span></a></li>
<li><a href="functions_eval.html"><span>Enumerator</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;<ul>
<li>_blah
: <a class="el" href="classFoo.html#a4e5ef452fe3f664199e8c5e91754e0e2">Foo</a>
</li>
<li>x
: <a class="el" href="structblah.html#afa9a06361ecd9f06902546449295d4c7">blah</a>
</li>
<li>y
: <a class="el" href="structblah.html#a7867e67a7099e4420c9de686a68eb6c8">blah</a>
</li>
<li>z
: <a class="el" href="structbaz.html#aa5d83e88ff56e3e2511d5f9335106e78">baz</a>
</li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,55 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li class="current"><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
</div>
<div class="contents">
Here is a list of all file members with links to the files they belong to:<ul>
<li>_blah
: <a class="el" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7e">aclass.h</a>
</li>
<li>Foo
: <a class="el" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7eaca2a3a2b2da8e517565fb654a86639b6">aclass.h</a>
</li>
<li>FOO_SNAZ
: <a class="el" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7eaff576ecff55813a881ead287578a3611">aclass.h</a>
</li>
<li>SOME_OBSCURE_DEFINE
: <a class="el" href="aclass_8h.html#a7a597155a7a2c7edf98291e4196f6f37">aclass.h</a>
</li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,46 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li class="current"><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;<ul>
<li>SOME_OBSCURE_DEFINE
: <a class="el" href="aclass_8h.html#a7a597155a7a2c7edf98291e4196f6f37">aclass.h</a>
</li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,46 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li class="current"><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="globals.html"><span>All</span></a></li>
<li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;<ul>
<li>_blah
: <a class="el" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7e">aclass.h</a>
</li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,49 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li class="current"><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_enum.html"><span>Enumerations</span></a></li>
<li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
<li><a href="globals_defs.html"><span>Defines</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;<ul>
<li>Foo
: <a class="el" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7eaca2a3a2b2da8e517565fb654a86639b6">aclass.h</a>
</li>
<li>FOO_SNAZ
: <a class="el" href="aclass_8h.html#aff7431c1e83d4cf5f4810ed8e9dc2e7eaff576ecff55813a881ead287578a3611">aclass.h</a>
</li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,18 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Test project: Class Members</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindexHL" href="globals.html">File&nbsp;Members</a></div>
<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindexHL" href="globals_vars.html">Variables</a> | <a class="qindex" href="globals_enum.html">Enumerations</a> | <a class="qindex" href="globals_eval.html">Enumerator</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
<p>
<ul>
<li>foobazbar
: <a class="el" href="namespaceNameSpaceTest.html#a0">aclass.h</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Sat Apr 22 17:58:57 2006 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>

View File

@ -1,27 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Test project Documentation</h1></div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,58 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: NameSpaceTest Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="namespaces.html"><span>Namespace&nbsp;List</span></a></li>
<li><a href="namespacemembers.html"><span>Namespace&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>NameSpaceTest Namespace Reference</h1>
<p>Some namespace.
<a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceNameSpaceTest.html#a5f0fd9588d8e6d4aaf2ff4ad20d7e60b">foobazbar</a></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Some namespace. </p>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="a5f0fd9588d8e6d4aaf2ff4ad20d7e60b"></a><!-- doxytag: member="NameSpaceTest::foobazbar" ref="a5f0fd9588d8e6d4aaf2ff4ad20d7e60b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="namespaceNameSpaceTest.html#a5f0fd9588d8e6d4aaf2ff4ad20d7e60b">NameSpaceTest::foobazbar</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00073">73</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
</div>
</div>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,44 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="namespaces.html"><span>Namespace&nbsp;List</span></a></li>
<li class="current"><a href="namespacemembers.html"><span>Namespace&nbsp;Members</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
<li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
</ul>
</div>
</div>
<div class="contents">
Here is a list of all namespace members with links to the namespace documentation for each member:<ul>
<li>foobazbar
: <a class="el" href="namespaceNameSpaceTest.html#a5f0fd9588d8e6d4aaf2ff4ad20d7e60b">NameSpaceTest</a>
</li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,44 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="namespaces.html"><span>Namespace&nbsp;List</span></a></li>
<li class="current"><a href="namespacemembers.html"><span>Namespace&nbsp;Members</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="namespacemembers.html"><span>All</span></a></li>
<li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
</ul>
</div>
</div>
<div class="contents">
&nbsp;<ul>
<li>foobazbar
: <a class="el" href="namespaceNameSpaceTest.html#a5f0fd9588d8e6d4aaf2ff4ad20d7e60b">NameSpaceTest</a>
</li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,36 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Namespace Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li class="current"><a href="namespaces.html"><span>Namespace&nbsp;List</span></a></li>
<li><a href="namespacemembers.html"><span>Namespace&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>Namespace List</h1>Here is a list of all namespaces with brief descriptions:<table>
<tr><td class="indexkey"><a class="el" href="namespaceNameSpaceTest.html">NameSpaceTest</a></td><td class="indexvalue">Some namespace </td></tr>
</table>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,35 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>baz Member List</h1>This is the complete list of members for <a class="el" href="structbaz.html">baz</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="structbaz.html#aa5d83e88ff56e3e2511d5f9335106e78">z</a></td><td><a class="el" href="structbaz.html">baz</a></td><td></td></tr>
</table></div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,63 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: baz Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>baz Struct Reference</h1><!-- doxytag: class="baz" -->
<p><code>#include &lt;<a class="el" href="aclass_8h_source.html">aclass.h</a>&gt;</code></p>
<p><a href="structbaz-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbaz.html#aa5d83e88ff56e3e2511d5f9335106e78">z</a></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00058">58</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="aa5d83e88ff56e3e2511d5f9335106e78"></a><!-- doxytag: member="baz::z" ref="aa5d83e88ff56e3e2511d5f9335106e78" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="structbaz.html#aa5d83e88ff56e3e2511d5f9335106e78">baz::z</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00060">60</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="aclass_8h_source.html">aclass.h</a></li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,36 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>blah Member List</h1>This is the complete list of members for <a class="el" href="structblah.html">blah</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="structblah.html#afa9a06361ecd9f06902546449295d4c7">x</a></td><td><a class="el" href="structblah.html">blah</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="structblah.html#a7867e67a7099e4420c9de686a68eb6c8">y</a></td><td><a class="el" href="structblah.html">blah</a></td><td></td></tr>
</table></div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

View File

@ -1,83 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Test project: blah Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>blah Struct Reference</h1><!-- doxytag: class="blah" -->
<p>This struct does something useless.
<a href="#_details">More...</a></p>
<p><code>#include &lt;<a class="el" href="aclass_8h_source.html">aclass.h</a>&gt;</code></p>
<p><a href="structblah-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structblah.html#afa9a06361ecd9f06902546449295d4c7">x</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structblah.html#a7867e67a7099e4420c9de686a68eb6c8">y</a></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>This struct does something useless. </p>
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00052">52</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="afa9a06361ecd9f06902546449295d4c7"></a><!-- doxytag: member="blah::x" ref="afa9a06361ecd9f06902546449295d4c7" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="structblah.html#afa9a06361ecd9f06902546449295d4c7">blah::x</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00054">54</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
</div>
</div>
<a class="anchor" id="a7867e67a7099e4420c9de686a68eb6c8"></a><!-- doxytag: member="blah::y" ref="a7867e67a7099e4420c9de686a68eb6c8" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="structblah.html#a7867e67a7099e4420c9de686a68eb6c8">blah::y</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Definition at line <a class="el" href="aclass_8h_source.html#l00055">55</a> of file <a class="el" href="aclass_8h_source.html">aclass.h</a>.</p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="aclass_8h_source.html">aclass.h</a></li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on Sat Feb 27 15:34:03 2010 for Test project by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1,105 +0,0 @@
/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
DIV.tabs
{
float : left;
width : 100%;
background : url("tab_b.gif") repeat-x bottom;
margin-bottom : 4px;
}
DIV.tabs UL
{
margin : 0px;
padding-left : 10px;
list-style : none;
}
DIV.tabs LI, DIV.tabs FORM
{
display : inline;
margin : 0px;
padding : 0px;
}
DIV.tabs FORM
{
float : right;
}
DIV.tabs A
{
float : left;
background : url("tab_r.gif") no-repeat right top;
border-bottom : 1px solid #84B0C7;
font-size : 80%;
font-weight : bold;
text-decoration : none;
}
DIV.tabs A:hover
{
background-position: 100% -150px;
}
DIV.tabs A:link, DIV.tabs A:visited,
DIV.tabs A:active, DIV.tabs A:hover
{
color: #1A419D;
}
DIV.tabs SPAN
{
float : left;
display : block;
background : url("tab_l.gif") no-repeat left top;
padding : 5px 9px;
white-space : nowrap;
}
DIV.tabs #MSearchBox
{
float : right;
display : inline;
font-size : 1em;
}
DIV.tabs TD
{
font-size : 80%;
font-weight : bold;
text-decoration : none;
}
/* Commented Backslash Hack hides rule from IE5-Mac \*/
DIV.tabs SPAN {float : none;}
/* End IE5-Mac hack */
DIV.tabs A:hover SPAN
{
background-position: 0% -150px;
}
DIV.tabs LI.current A
{
background-position: 100% -150px;
border-width : 0px;
}
DIV.tabs LI.current SPAN
{
background-position: 0% -150px;
padding-bottom : 6px;
}
DIV.navpath
{
background : none;
border : none;
border-bottom : 1px solid #84B0C7;
text-align : center;
margin : 2px;
padding : 2px;
}

View File

@ -1,76 +0,0 @@
// $Id: aclass.h,v 1.3 2005/04/01 06:05:06 ryants Exp $
// This is just some silly sample file to test out doxymacs with.
#ifndef _ACLASS_H_
#define _ACLASS_H_
#define SOME_OBSCURE_DEFINE 76
/**
* This class does blah.
*
*/
class Foo
{
public:
/**
* The constructor.
*
* @param blah Some kind of fish.
*/
Foo(int blah)
: _blah(blah)
{}
/**
* Gets the current value of blah.
*/
GetBlah(void) const { return _blah; }
enum blah_blah
{
BAZ,
BAZ2,
};
private:
/**
* Testing the in/out parameter stuff.
*
* @param[in] in An "in" parameter
* @param[out] out An "out" parameter
* @param[in,out] inout An "inout" parameter
*/
Foo(int &in, int &out, int &inout) { out = in + inout; }
/** This is a measure of our blahness. */
int _blah;
};
/** This struct does something useless */
struct blah
{
int x;
int y;
};
typedef struct
{
int z;
} baz;
/** This is a useless enum */
enum _blah
{
FOO_SNAZ, /**< More silly stuff. */
Foo
};
/** Some namespace */
namespace NameSpaceTest
{
int foobazbar;
}
#endif // _ACLASS_H_

File diff suppressed because it is too large Load Diff

View File

@ -1,284 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Doxymacs = Doxygen + Emacs</title>
</head>
<body>
<h1>Doxymacs</h1>
<p>
Doxymacs is <a href="http://www.doxygen.org">Doxygen</a> +
{X}Emacs.
</p>
<p>
The purpose of the doxymacs project is to create a LISP package
that will make using Doxygen from within {X}Emacs easier.
</p>
<p>
<a
href="http://sourceforge.net/project/showfiles.php?group_id=23584&amp;release_id=514962">Version 1.8.0</a>,
released 2007-06-10, has the following features:
</p>
<ul>
<li>
ability to <a
href="http://sourceforge.net/project/screenshots.php?group_id=23584&amp;ssid=13275">look
up documentation</a> for symbols from {X}Emacs in the browser
of your choice.
</li>
<li>
<a
href="http://sourceforge.net/project/screenshots.php?group_id=23584&amp;ssid=13271">easily
insert Doxygen style comments</a> into source.
</li>
<li>
optionally use an "external" (<i>i.e.</i> written in C) XML
parser to speed up building the completion list.
</li>
<li>
<a
href="http://sourceforge.net/project/screenshots.php?group_id=23584&amp;ssid=13277">fontify
Doxygen keywords</a>.
</li>
</ul>
<p>
Please direct any bug reports or feature requests to the
appropriate forum on <a
href="http://sourceforge.net/projects/doxymacs/">Doxymacs'
SourceForge</a> page.
</p>
<h2>Requirements</h2>
Doxymacs depends on the following packages:
<ul>
<li>
<a href="http://www.cs.indiana.edu/usr/local/www/elisp/w3/docs.html">W3</a>
</li>
<li>
<a href="http://www.lysator.liu.se/~davidk/elisp/">tempo</a>
</li>
<li>
version 2.6.13 or greater of <a
href="http://www.libxml.org/">libxml2</a>.
</li>
</ul>
Make sure these are properly configured and installed before
proceeding.
<h2>Installation</h2>
<ul>
<li>
Use the configure script to configure and build doxymacs:
<pre>
$ ./configure
$ make
$ make install
</pre>
Be sure to put <code>${datadir}/share/${EMACS}/site-lisp</code>
in your <code>load-path</code> in your <code>.emacs</code>
file, or wherever you configured the .elc files to end up.
<br /><br />
<b>NOTE</b> If you get:
<pre>
!! File error (("Cannot open load file" "url"))
</pre>
(or something similar) when you do <code>make</code>,
then set the variable <code>EMACSLOADPATH</code>:
<pre>
$ EMACSLOADPATH=... make
</pre>
where <code>...</code> is a colon separated list of directories
to seach for packages.
<br /><br />
To byte compile with XEmacs, set the variable <code>EMACS</code>:
<pre>
$ EMACS=xemacs make
</pre>
If you want to avoid byte-compiling altogether:
<pre>
$ make ELCFILES=
$ make install ELCFILES=
</pre>
For a complete list of configuration options:
<pre>
$ ./configure --help
</pre>
If you do not want to run or cannot run <code>configure</code>
then pre-baked <code>.el</code> files are available in the
<code>no-autoconf/</code> directory; simply
copy these to somewhere in your <code>load-path</code>.
</li>
<li>
Customise the variables <code>doxymacs-doxygen-root</code> and
<code>doxymacs-doxygen-tags</code>. You can customise these
via the customisation menu Programming | Tools | Doxymacs.
</li>
<li>
(Optional) Customise <code>doxymacs-doxygen-style</code>. The
default is "JavaDoc". See <a
href="http://www.stack.nl/~dimitri/doxygen/docblocks.html#docblocks">the
Doxygen manual</a> for examples of the four available styles
(JavaDoc, Qt, C++ and C++!).
</li>
<li>
To use the external XML parser, set
<code>doxymacs-use-external-xml-parser</code> to non-nil (can
be done via the customisation menu).
</li>
<li>
Put <code>(require 'doxymacs)</code> in your <code>.emacs</code>
file.
</li>
<li>
Invoke <code>doxymacs-mode</code> with <code>M-x
doxymacs-mode</code>. To have <code>doxymacs-mode</code>
automatically come up whenever you visit a C/C++ file, put
<code>(add-hook 'c-mode-common-hook'doxymacs-mode)</code> in
your <code>.emacs</code>.
</li>
<li>
If you want Doxygen keywords fontified use <code>M-x
doxymacs-font-lock</code>. To do it automatically, add
the following to your <code>.emacs</code>:
<pre>
(defun my-doxymacs-font-lock-hook ()
(if (or (eq major-mode 'c-mode) (eq major-mode 'c++-mode))
(doxymacs-font-lock)))
(add-hook 'font-lock-mode-hook 'my-doxymacs-font-lock-hook)
</pre>
This will add the Doxygen keywords to c-mode and c++-mode
only.
</li>
<li>
Default key bindings are:
<ul>
<li>
<code>C-c d ?</code> will look up documentation for the symbol
under the point.
</li>
<li>
<code>C-c d r</code> will rescan your Doxygen tags file.
</li>
<li>
<code>C-c d f</code> will insert a Doxygen comment for the
next function.
</li>
<li>
<code>C-c d i</code> will insert a Doxygen comment for the
current file.
</li>
<li>
<code>C-c d ;</code> will insert a Doxygen comment for a
member variable on the current line (like <code>M-;</code>).
</li>
<li>
<code>C-c d m</code> will insert a blank multi-line Doxygen
comment.
</li>
<li>
<code>C-c d s</code> will insert a blank single-line Doxygen
comment.
</li>
<li>
<code>C-c d @</code> will insert grouping comments around the
current region.
</li>
</ul>
</li>
</ul>
Doxymacs has been tested on and works with:
<ul>
<li>GNU Emacs 20.7.1, 21.1.1, 21.2.1, 21.3, 21.4.1, 23.1.1.</li>
<li>XEmacs 21.1 (patch 14), XEmacs 21.4 (patch 4, 5, 6, 17).</li>
<li>Up to doxygen version 1.4.4</li>
</ul>
If you have success or failure with other versions of {X}Emacs and
doxygen, please let the authors know.
<p>
<h2>Links</h2>
<ul>
<li>
<a href="http://sourceforge.net/projects/doxymacs/">Doxymacs
SourceForge Project.</a> Go here to request help, submit a
patch, or ask for a feature.
</li>
<li>
<a
href="http://sourceforge.net/project/showfiles.php?group_id=23584&amp;release_id=514962">Release
1.8.0</a> Download it now.
</li>
<li>
<a href="https://sourceforge.net/scm/?type=git&group_id=23584">Git
Repository</a> For bleeding edge people and developers.
</li>
</ul>
<p>
<a href="http://sourceforge.net"> <img src="http://sourceforge.net/sflogo.php?group_id=23584" width="88" height="31" border="0" alt="SourceForge Logo"></A>
</p>
<p>
<a href="http://validator.w3.org/check/referer"><img border="0"
src="http://www.w3.org/Icons/valid-html401"
alt="Valid HTML 4.01!" height="31" width="88"></a>
</p>
<hr>
<address><a href="mailto:ryan.sammartino@gmail.com">Ryan T. Sammartino</a></address>
<!-- Created: Sun Jan 5 18:21:52 PST 2003 -->
<!-- hhmts start -->Last modified: Fri Feb 19 21:39:29 GMT 2010 <!-- hhmts end -->
</body>
</html>
<!-- Local Variables: -->
<!-- mode: html -->
<!-- sgml-indent-step: 2 -->
<!-- End: -->

View File

@ -1,6 +0,0 @@
## Process this file with automake to produce Makefile.in
# $Id: Makefile.am,v 1.2 2003/01/06 00:45:15 ryants Exp $
lisp_LISP = xml-parse.el doxymacs.el
EXTRA_DIST = xml-parse.el

File diff suppressed because it is too large Load Diff

View File

@ -1,379 +0,0 @@
;;; xml-parse --- code to efficiently read/write XML data with Elisp
;;;
;;; $Id: xml-parse.el,v 1.4 2001/05/12 22:36:13 ryants Exp $
;; Copyright (C) 2001 John Wiegley.
;; Author: John Wiegley <johnw@gnu.org>
;; Version: 1.5
;; Created: Feb 15, 2001
;; Keywords: convenience languages lisp xml parse data
;; URL: http://www.gci-net.com/~johnw/emacs.html
;; This file is NOT (yet) part of GNU Emacs.
;; This is free software; you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; This software is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.
;;; Commentary:
;;
;; XML is yet another way of expressing recursive, attributed data
;; structures -- something which Lisp has had the capacity to do for
;; decades.
;;
;; The approach taken by xml-parse.el is to read XML data into Lisp
;; structures, and allow those same Lisp structures to be written out
;; as XML. It should facilitate the manipulation and use of XML by
;; Elisp programs.
;; NOTE: This is not a validating parser, and makes no attempt to read
;; DTDs. See psgml.el if you need that kind of power.
;;
;; Also, tags beginning with <? or <! are not parsed, but merely
;; included in the resulting data structure as separate string
;; entries. These may be tested for using the function
;; `xml-tag-special-p'. If present, they are treated just like normal
;; text, and will be inserted along with everything else. If they
;; occur *before* the opening tag of an XML tree, they will not appear
;; in the parsed data, since such "pre-tags" are not the child of any
;; tag.
;; Here is the format of the Lisp data structure used:
;;
;; (TAG CHILD...)
;;
;; Where TAG is either a string (naming the tag) or a list. The list
;; form is used to identify attributes, and has the format:
;;
;; (TAG-NAME (ATTR-NAME . ATTR-VALUE)...)
;;
;; After the TAG, there can be zero or more child structures, which
;; are either literal strings, or the same "TAG CHILD..." structure as
;; the parent. See `insert-xml' for an EBNF grammar of this layout.
;; EXAMPLE: Given the following DocBook XML data:
;;
;; <book id="compiler">
;; <bookinfo>
;; <bookbiblio>
;; <title>My own book!</title>
;; <edition>First</edition>
;; <authorgroup>
;; <author>
;; <firstname>John</firstname>
;; <surname>Wiegley</surname>
;; </author>
;; </authorgroup>
;; </bookbiblio>
;; </bookinfo>
;; <chapter>
;; <title>A very small chapter</title>
;; <para>Wonder where the content is...</para>
;; </chapter>
;; </book>
;;
;; It would be parsed into this Lisp structure:
;;
;; '(("book" ("id" . "compiler"))
;; ("bookinfo"
;; ("bookbiblio"
;; ("title" "My own book!")
;; ("edition" "FIrst")
;; ("authorgroup"
;; ("author"
;; ("firstname" "John")
;; ("surname" "Wiegley")))))
;; ("chapter"
;; ("title" "A very small chapter")
;; ("para" "Wonder where the content is...")))
;;
;; Now it can easily be modified and interpreted using ordinary Lisp
;; code, without the ordeal of manipulating textual XML. When you're
;; done modifying it, you can write it back out (complete with proper
;; indentation and newlines) using:
;;
;; (insert-xml <DATA> t)
;;
;; See the documentation for `read-xml' and `insert-xml' for more
;; information.
;;
;; There are also a set of helper functions for accessing parts of a
;; parsed tag:
;;
;; xml-tag-name get the name of a tag
;; xml-tag-attrlist returns a tag's attribute alist
;; xml-tag-attr lookup a specific tag attribute
;; xml-tag-children returns a tag's child list
;; xml-tag-child lookup a specific child tag by name
;;
;; Also, the attribute list and child lists can be searched using
;; `assoc', since they roughly have the same format as an alist.
;;;###autoload
(defun read-xml (&optional progress-callback)
"Parse XML data at point into a Lisp structure.
See `insert-xml' for a description of the format of this structure.
Point is left at the end of the XML structure read."
(cdr (xml-parse-read progress-callback)))
(defsubst xml-tag-with-attributes-p (tag)
"Does the TAG have attributes or not?"
(listp (car tag)))
(defsubst xml-tag-name (tag)
"Return the name of an xml-parse'd XML TAG."
(cond ((xml-tag-text-p tag)
(car tag))
((xml-tag-with-attributes-p tag)
(caar tag))
(t (car tag))))
(defun xml-tag-text-p (tag)
"Is the given TAG really just a text entry?"
(stringp tag))
(defsubst xml-tag-special-p (tag)
"Return the name of an xml-parse'd XML TAG."
(and (xml-tag-text-p tag)
(eq (aref tag 0) ?\<)))
(defsubst xml-tag-attrlist (tag)
"Return the attribute list of an xml-parse'd XML TAG."
(and (not (stringp (car tag)))
(cdar tag)))
(defsubst xml-tag-attr (tag attr)
"Return a specific ATTR of an xml-parse'd XML TAG."
(cdr (assoc attr (xml-tag-attrlist tag))))
(defsubst xml-tag-children (tag)
"Return the list of child tags of an xml-parse'd XML TAG."
(cdr tag))
(defun xml-tag-child (tag name)
"Return the first child matching NAME, of an xml-parse'd XML TAG."
(catch 'found
(let ((children (xml-tag-children tag)))
(while children
(if (string= name (xml-tag-name (car children)))
(throw 'found (car children)))
(setq children (cdr children))))))
;;;###autoload
(defun insert-xml (data &optional add-newlines public system depth ret-depth)
"Insert DATA, a recursive Lisp structure, at point as XML.
DATA has the form:
ENTRY ::= (TAG CHILD*)
CHILD ::= STRING | ENTRY
TAG ::= TAG_NAME | (TAG_NAME ATTR+)
ATTR ::= (ATTR_NAME . ATTR_VALUE)
TAG_NAME ::= STRING
ATTR_NAME ::= STRING
ATTR_VALUE ::= STRING
If ADD-NEWLINES is non-nil, newlines and indentation will be added to
make the data user-friendly.
If PUBLIC and SYSTEM are non-nil, a !DOCTYPE tag will be added at the
top of the document to identify it as an XML document.
DEPTH is normally for internal use only, and controls the depth of the
indentation."
(when (and (not depth) public system)
(insert "<?xml version=\"1.0\"?>\n")
(insert "<!DOCTYPE " (if (stringp (car data))
(car data)
(caar data))
" PUBLIC \"" public "\"\n \"" system "\">\n"))
(if (stringp data)
(insert data)
(let ((node (car data)) (add-nl t))
(and depth (bolp)
(insert (make-string (* depth 2) ? )))
(if (stringp node)
(insert "<" node)
(setq node (caar data))
(insert "<" node)
(let ((attrs (cdar data)))
(while attrs
(insert " " (caar attrs) "=\"" (cdar attrs) "\"")
(setq attrs (cdr attrs)))))
(if (null (cdr data))
(insert "/>")
(insert ">")
(setq data (cdr data))
(while data
(and add-newlines add-nl
(not (stringp (car data)))
(insert ?\n))
(setq add-nl (insert-xml (car data) add-newlines
nil nil (1+ (or depth 0)))
data (cdr data)))
(when add-nl
(and add-newlines (insert ?\n))
(and depth (insert (make-string (* depth 2) ? ))))
(insert "</" node ">"))
t)))
;;;###autoload
(defun xml-reformat-tags ()
"If point is on the open bracket of an XML tag, reformat that tree.
Note that this only works if the opening tag starts at column 0."
(interactive)
(save-excursion
(let* ((beg (point)) (tags (read-xml)))
(delete-region beg (point))
(insert-xml tags t))))
;;; Internal Functions
;;; RTS did this 30/04/2001
(if (featurep 'xemacs)
(defalias 'match-string-no-properties 'match-string))
(defun xml-parse-profile ()
(interactive)
(let ((elp-function-list
'(buffer-substring-no-properties
char-after
char-before
forward-char
looking-at
match-string-no-properties
match-beginning
match-end
point
re-search-forward
read-xml
xml-parse-read
search-forward
string=
stringp
substring
xml-parse-concat)))
(elp-instrument-list)))
(defsubst xml-parse-skip-tag ()
(cond
((eq (char-after) ??)
(search-forward "?>"))
((looking-at "!--")
(search-forward "-->"))
(t ; must be <!...>
(re-search-forward "[[>]")
(if (eq (char-before) ?\[)
(let ((depth 1))
(while (and (> depth 0)
(if (re-search-forward "[][]")
t
(error "Pos %d: Unclosed open bracket in <! tag")))
(if (eq (char-before) ?\[)
(setq depth (1+ depth))
(setq depth (1- depth))))
(search-forward ">"))))))
(defsubst xml-parse-add-non-ws (text lst)
(let ((i 0) (l (length text)) non-ws)
(while (< i l)
(unless (memq (aref text i) '(?\n ?\t ? ))
(setq i l non-ws t))
(setq i (1+ i)))
(if (not non-ws)
lst
(setcdr lst (list text))
(cdr lst))))
(defsubst xml-parse-concat (beg end lst)
"Add the string from BEG to END to LST, ignoring pure whitespace."
(save-excursion
(goto-char beg)
(while (search-forward "<" end t)
(setq lst (xml-parse-add-non-ws
(buffer-substring-no-properties beg (1- (point))) lst)
beg (1- (point)))
(xml-parse-skip-tag)
(setq lst (xml-parse-add-non-ws
(buffer-substring-no-properties beg (point)) lst)
beg (point)))
(if (/= beg end)
(setq lst (xml-parse-add-non-ws
(buffer-substring-no-properties beg end) lst)))
lst))
(defun xml-parse-read (&optional progress-callback)
(let ((beg (search-forward "<" nil t)) after)
(if progress-callback
(funcall progress-callback
(* (/ (float (point)) (float (point-max))) 100)))
(while (and beg (memq (setq after (char-after)) '(?! ??)))
(xml-parse-skip-tag)
(setq beg (search-forward "<" nil t)))
(when beg
(if (eq after ?/)
(progn
(search-forward ">")
(cons (1- beg)
(buffer-substring-no-properties (1+ beg) (1- (point)))))
(skip-chars-forward "^ \t\n/>")
(cons
(1- beg)
(progn
(setq after (point))
(skip-chars-forward " \t\n")
(let* ((single (eq (char-after) ?/))
(tag (buffer-substring-no-properties beg after))
attrs data-beg data)
;; handle the attribute list, if present
(cond
(single
(skip-chars-forward " \t\n/>"))
((eq (char-after) ?\>)
(forward-char 1))
(t
(let* ((attrs (list t))
(lastattr attrs)
(end (search-forward ">")))
(goto-char after)
(while (re-search-forward
"\\([^ \t\n=]+\\)=\"\\([^\"]+\\)\"" end t)
(let ((attr (cons (match-string-no-properties 1)
(match-string-no-properties 2))))
(setcdr lastattr (list attr))
(setq lastattr (cdr lastattr))))
(goto-char end)
(setq tag (cons tag (cdr attrs))
single (eq (char-before (1- end)) ?/)))))
;; return the tag and its data
(if single
(list tag)
(setq tag (list tag))
(let ((data-beg (point)) (tag-end (last tag)))
(while (and (setq data (xml-parse-read progress-callback))
(not (stringp (cdr data))))
(setq tag-end (xml-parse-concat data-beg (car data)
tag-end)
data-beg (point))
(setcdr tag-end (list (cdr data)))
(setq tag-end (cdr tag-end)))
(xml-parse-concat data-beg (or (car data)
(point-max)) tag-end)
tag)))))))))
(provide 'xml-parse)
;;; xml-parse.el ends here

View File

@ -1,15 +0,0 @@
## Process this file with automake to produce Makefile.in
# $Id: Makefile.am,v 1.1 2003/01/26 01:49:56 ryants Exp $
# When creating the tarball, create .el files with default values
# substituted in the .el.in files for people who don't want to run
# autoconf.
EXTRA_DIST=doxymacs.el xml-parse.el
CONFIG_CLEAN_FILES=doxymacs.el xml-parse.el
doxymacs.el: ${top_srcdir}/lisp/doxymacs.el.in ${top_srcdir}/configure.ac
sed -e 's/\@VERSION\@/${VERSION}/g ; s/\@DOXYMACS_DEFAULT_STYLE\@/${DOXYMACS_DEFAULT_STYLE}/g ; s/\@DOXYMACS_USE_EXTERNAL_XML_PARSER\@/nil/g ; s/\@DOXYMACS_PARSER\@//g' < $< > $@
xml-parse.el: ${top_srcdir}/lisp/xml-parse.el
cp $< $@

View File

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@ -1,136 +0,0 @@
THE VERY QUICK INSTALLATION GUIDE
=================================
Since nobody reads long documentation, here's a very short
installation guide:
$ autoconf # only needed when the configure script is not present
$ cd dvc/
$ mkdir ++build/
$ cd ++build/
$ ../configure
$ make
[ possibly make install ]
And add
(load-file "/path/to/dvc/++build/dvc-load.el")
to your ~/.emacs.el
For the details, see below.
USING CONFIGURE
===============
0) If you get DVC from the revision control, the ./configure script is
not included. You have to run "autoreconf" or "autoconf" to recreate it.
1) Select your emacs flavor, this is the option --with-emacs and its
default is emacs (GNU Emacs). Choose a prefix for the installation
with --prefix, by default /usr/local.
The default locations are as follows:
a) GNU Emacs: lisp files goto ${prefix}/share/emacs/site-lisp and
info files to ${prefix}/info (overridable with --with-lispdir=...
and --infodir=...)
b) XEmacs: lisp files goto ${prefix}/lib/xemacs/site-packages/lisp/xtla and info
files to ${prefix}/lib/xemacs/site-packages/info, (overridable
with --with-infodir=... and --infodir=...)
ATTENTION: Files byte-compiled with GNU Emacs are NOT COMPATIBLE with the
XEmacs and you may experience strange problems during startup when doing
so. Thus ensure you are configuring with --with-emacs=xemacs when
installing DVC for XEmacs!
a) GNU Emacs users run:
./configure
b) XEmacs users run:
./configure --with-emacs=xemacs
It is possible to build DVC in a separate directory. For instance, type
mkdir emacs_build; cd emacs_build;
../configure --with-emacs=emacs
2) Compile the lisp files and info by running:
make
3) Installing the files
Run the following command:
make install
a) The easy way
The files dvc.el generated in the build directory and in
the install directory do everything for you: Manually, you can
run
M-x load-file RET /path/to/install/share/emacs/site-lisp/dvc/dvc-load.el RET
(usefull when you want to load DVC after starting "emacs -q"!),
or add
(load-file "/path/to/install/share/emacs/site-lisp/dvc/dvc-load.el")
to your ~/.emacs.el
The manual way
GNU Emacs: Put the lisp/info path as chosen above into your load-path,
i.e. add the following to your ~/.emacs.el (if you don't already have an
equivalent)
(add-to-list 'load-path "/path/to/install/share/emacs/site-lisp/dvc/lisp/")
(add-to-list 'Info-default-directory-list "/path/to/install/share/info/"))
Now, GNU Emacs knows where to find DVC, tell it to load it, by adding
(require 'dvc-autoloads)
to your ~/.emacs.el.
b) XEmacs: You are lucky nothing to do for you!
That's it! Restart Emacs and read the info or start using DVC. For
example, look at the DVC submenu in the Tools menu.
If you would prefer to run DVC from its source directory rather
than installing it, then add the following to your .xemacs/init.el
file.
(load-file "/path/to/dvc/dvc-load.el")
4) Integration of Xtla with Gnus
If you use Gnus and Xtla (support for tla and baz in DVC), you
probably want to add
(tla-insinuate-gnus)
to your ~/.gnus.el
INSTALLING BY HAND (for GNU Emacs)
==================
Basically you need to copy all the *.el files into a directory that is listed
in your `load-path' and the info file into a directory listed in your
`Info-directory-list'.
Then perform the steps from 3a) in the last section.
NOTES
=====
- XEmacs users will require the file ewoc.el which is also installed in the
package dir. It's provided in the contrib/ directory of DVC.
- xtla-browse.el is an add-on package for xtla.el. xtla-browse.el requires
tree-widget.el 2.0 or higher written by David Ponce. XEmacs users should
install the "jde" package. GNU Emacs in subversions.gnu.org CVS repository
contains tree-widget.el. If you are using older GNU Emacs or XEmacs, you can
get it from http://sourceforge.net/projects/emhacks/. xtla.el doesn't
require xtla-browse.el. xtla-browse.el is an option.

View File

@ -1,26 +0,0 @@
* A poor mans installation guide
- The following files are generated by linux build scripts:
dvc-version.el
dvc-site.el
dvc-autoloads.el
- Copy these files from a working linux version to the dvc/lisp directory
- DVC.el needs a sh executable. Using cygwin should be a working option
If sh is not in the search PATH, set it via:
(setq dvc-sh-executable "c:/cygwin/bin/sh.exe")
- Add the following to your .emacs:
(add-to-list 'load-path "c:/emacs/site-lisp/dvc/lisp")
(require 'dvc-autoloads)
- The following tip shows how to configure the windows keys as super/hyper
Put these lines before the (require 'dvc-autoloads) in your .emacs
(setq w32-pass-lwindow-to-system nil
w32-pass-rwindow-to-system nil)
(setq w32-lwindow-modifier 'super) ; lwindow acts as super
(setq w32-rwindow-modifier 'hyper) ; rwindow acts as hyper
(defvar dvc-prefix-key '[(super t)])

View File

@ -1,123 +0,0 @@
@SET_MAKE@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
# location of required programms
AUTOCONF = autoconf
TAR = tar
RM = @RM@
prefix = @prefix@
datarootdir= @datarootdir@
info_dir = @info_dir@
srcdir = @srcdir@
lispdir= @lispdir@
SUBDIRS = lisp texinfo
MKDIR_P = @MKDIR_P@
##############################################################################
all: dvc info dvc-load.el
Makefile: config.status $(srcdir)/Makefile.in
./config.status $@
dvc-load.el: config.status $(srcdir)/dvc-load.el.in
./config.status $@
$(srcdir)/configure: $(srcdir)/configure.ac
cd $(srcdir) ; $(AUTOCONF)
./config.status --recheck
config.status: $(srcdir)/configure
./config.status --recheck
info pdf dvi html:
cd texinfo; $(MAKE) $@
dvc:
cd lisp; $(MAKE)
dvc-verbose:
cd lisp; $(MAKE) all-verbose
dvc-pkg.el: $(srcdir)/config.status
@echo Creating $@
@( echo ';;; $@ (ELPA generated installer file -- do not edit!)' ; \
echo '(define-package "dvc" "$(PACKAGE_VERSION)"' \
' "The Emacs interface to Distributed Version Control Systems")' ) \
> $@
lisp/dvc-version.el:
cd lisp; $(MAKE) dvc-version.el
%-recursive:
@for dir in $(SUBDIRS) ; do ( cd $$dir; $(MAKE) $* ) ; done
install: dvc-load.el install-recursive
sed -e 's|@''lispdir''@|'"$(lispdir)"'|' \
-e 's|@''info_dir''@|'"$(info_dir)"'|' \
$(srcdir)/dvc-load-install.el.in \
> $(lispdir)/dvc-load.el
uninstall: uninstall-recursive
rmdir $(lispdir) || true
clean: clean-recursive
rm -f dvc-load.el dvc-load-install.el
distclean: clean distclean-recursive
rm -rf configure config.status config.log autom4te.cache/ Makefile $(distdir) $(distdir).tar*
maintainer-clean: maintainer-clean-recursive
##############################################################################
distdir = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
lispfiles = lisp/Makefile.in lisp/dvc-site.el.in \
lisp/contrib/*.el lisp/tests/*.el lisp/*.el
docfiles = texinfo/Makefile.in texinfo/dvc.texinfo texinfo/dvc.info
miscfiles = Makefile.in COPYING INSTALL* install-sh \
dvc-load.el.in dvc-load-install.el.in \
lisp/dvc-version.el \
texinfo/dvc-version.texinfo \
texinfo/dvc-intro.texinfo \
texinfo/fdl.texinfo \
configure.ac configure
extradist =
distfiles = $(lispfiles) $(docfiles) $(miscfiles) $(extradist)
dist:
rm -rf $(distdir) $(distdir).tar.gz
mkdir $(distdir)
build=`pwd` ; dd=$$build/$(distdir) ; cd $(srcdir) ; \
for f in $(distfiles) ; do d='.' ; \
if [ -f $$build/$$f ] ; then d=$$build ; fi ; \
e=`dirname $$f` ; f=`basename $$f` ; \
test -d $$dd/$$e || $(MKDIR_P) $$dd/$$e ; \
cp -p $$d/$$e/$$f $$dd/$$e/$$f ; done
$(TAR) cf - $(distdir) | gzip --best > $(distdir).tar.gz
rm -rf $(distdir)
tarball:
$(MAKE) dist \
distdir=$(PACKAGE_TARNAME)-snapshot \
extradist='debian/* docs/* scripts/*'
package: dvc-pkg.el info lisp/dvc-version.el
rm -rf $(distdir) $(distdir).tar
mkdir $(distdir)
cp -r docs $(distdir)
cp COPYING $(distdir)
cp dvc-pkg.el lisp/*el texinfo/dvc.info $(distdir)
install-info --info-dir=$(distdir) $(distdir)/dvc.info
$(TAR) cf $(distdir).tar $(distdir)
.INTERMEDIATE: dvc-pkg.el
.PHONY: all info pdf dvi html dvc dvc-verbose \
install uninstall \
clean distclean maintainer-clean \
dist tarball package

View File

@ -1,185 +0,0 @@
# configure.ac --- configuration setup for DVC
# Copyright (C) 2004-2007 by all contributors
# Author: Robert Widhopf-Fenk <hack@robf.de>
# DVC is free software; you can redistribute it and/or modify
# it under the terms of the GNU Library General Public License as published
# by the Free Software Foundation; either version 2 of the License, or (at
# your option) any later version.
# DVC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Library General Public License for more details.
# You should have received a copy of the GNU Library General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# Process this file with autoconf to produce a new configure script
# Find a program. A failure is not fatal, just issue a warning
AC_DEFUN([DVC_PROG_WARN],
[ AC_SUBST([$1])
AC_ARG_WITH([$2],
[AS_HELP_STRING([--with-][$2]=PROG, [$3])],
[ [$1]=${withval} ],
[
AC_CHECK_PROG([$1], [$2], [$2])
if test "x${$1}" = "x" ; then
AC_MSG_WARN([*** No $2 program found.])
fi
])
])
# Find a program. A failure is not fatal.
AC_DEFUN([DVC_PROG],
[ AC_SUBST([$1])
AC_ARG_WITH([$2],
[AS_HELP_STRING([--with-][$2]=PROG, [$3])],
[ [$1]=${withval} ],
[
AC_CHECK_PROG([$1], [$2], [$2])
])
])
##############################################################################
AC_INIT([DVC], [0], [dvc-dev@gna.org])
AC_COPYRIGHT([Copyright (C) 2004-2007 Robert Widhopf-Fenk <hack@robf.de> and the DVC team])
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_FILES([Makefile lisp/Makefile texinfo/Makefile dvc-load.el lisp/dvc-site.el])
# Common system utilities checking:
AC_PROG_MAKE_SET
AC_PROG_INSTALL
AC_PROG_MKDIR_P
# External programs checking:
# Choose an Emacs flavor according to the --with-emacs user option, or
# try "emacs" and "xemacs". We use EMACS_PROG instead of EMACS to
# avoid colliding with Emacs' own internal environment.
AC_ARG_WITH([emacs],
[AS_HELP_STRING([--with-emacs=PROG], [choose which flavor of Emacs to use])],
[ EMACS_PROG="${withval}" ],
[ AC_CHECK_PROGS(EMACS_PROG, emacs xemacs) ])
if test "x${EMACS_PROG}" = "x" ; then
AC_MSG_ERROR([*** No Emacs program found.])
fi
AC_MSG_CHECKING([emacs-type of ${EMACS_PROG}])
if ${EMACS_PROG} --no-site-file --batch --eval \
'(kill-emacs (if (featurep (quote xemacs)) 0 1))'
then EMACS_FLAVOR=xemacs ; FLAGS='-no-site-file -no-autoloads'
else EMACS_FLAVOR=emacs ; FLAGS=--no-site-file
fi
AC_MSG_RESULT([${EMACS_FLAVOR}])
# Copied from gnus aclocal.m4
AC_ARG_WITH([lispdir],
[AS_HELP_STRING([--with-lispdir=DIR], [where to install lisp files])],
[lispdir=${withval}])
AC_MSG_CHECKING([where .elc files should go])
if test -z "$lispdir"; then
theprefix=$prefix
if test "x$theprefix" = "xNONE"; then
theprefix=$ac_default_prefix
fi
datadir="\$(prefix)/share"
if test "$EMACS_FLAVOR" = "xemacs"; then
datadir="\$(prefix)/lib"
lispdir="${datadir}/${EMACS_FLAVOR}/site-packages/lisp/dvc"
if test ! -d "${lispdir}"; then
if test -d "${theprefix}/share/${EMACS_FLAVOR}/site-lisp"; then
lispdir="\$(prefix)/lib/${EMACS_FLAVOR}/site-packages/lisp/dvc"
fi
fi
else
lispdir="${datadir}/${EMACS_FLAVOR}/site-lisp/dvc"
fi
fi
AC_MSG_RESULT([$lispdir])
AC_SUBST([lispdir])
AC_SUBST([EMACS_PROG])
AC_SUBST([FLAGS])
# Copied from gnus aclocal.m4 (AC_PATH_INFO_DIR)
AC_MSG_CHECKING([where the TeXinfo docs should go])
dnl Set default value. This must be an absolute path.
if test "$infodir" = "\${prefix}/info"; then
if test "$EMACS_FLAVOR" = "xemacs"; then
info_dir="\$(prefix)/${thedir}/${EMACS_FLAVOR}/site-packages/info"
else
info_dir="\$(prefix)/share/info"
fi
else
info_dir=$infodir
fi
AC_MSG_RESULT([$info_dir])
AC_SUBST([info_dir])
DVC_PROG([TLA], [tla], [tla program to use])
DVC_PROG([BAZ], [baz], [baz program to use])
AC_MSG_CHECKING([arch branch to use])
AC_ARG_WITH([arch],
[AS_HELP_STRING([--with-arch=BRANCH],
[which arch branch (one of: tla, baz, none) to use by default
(default is none)])],
[ARCH_BRANCH=$withval],
[ARCH_BRANCH=none])
case $ARCH_BRANCH in
tla|baz|none) blurb= ;;
*) blurb=" (ignored invalid --with-arch=$ARCH_BRANCH)"
ARCH_BRANCH=none ;;
esac
AC_MSG_RESULT([$ARCH_BRANCH$blurb])
AC_SUBST([ARCH_BRANCH])
DVC_PROG_WARN([DIFF], [diff], [diff program to use])
DVC_PROG_WARN([PATCH], [patch], [patch program to use])
AC_ARG_WITH([other-dirs],
[AS_HELP_STRING([--with-other-dirs=DIRS],
[push DIRS (list of space- or colon-separated paths)
onto `load-path' during build])],
[OTHERDIRS=`echo "$withval" | sed 'y/:/ /'`])
AC_SUBST([OTHERDIRS])
# tree widget
AC_MSG_CHECKING([whether tree-widget is in the load-path])
if ${EMACS_PROG} ${FLAGS} --batch --eval \
'(kill-emacs
(if (locate-library "tree-widget" nil
(append command-line-args-left load-path))
0 1))' \
$OTHERDIRS
then HAS_TREE_WIDGET=yes
else HAS_TREE_WIDGET=no
fi
AC_MSG_RESULT([${HAS_TREE_WIDGET}])
if test "x${HAS_TREE_WIDGET}" = "xno" ; then
AC_MSG_WARN([*** tree-widget.el not found in 'load-path.])
AC_MSG_WARN([*** tla-browse.el won't be available unless you install it.])
AC_MSG_WARN([*** See http://sourceforge.net/projects/emhacks/])
AC_MSG_WARN([*** Provide the path to tree-widget with --with-other-dirs])
AC_MSG_WARN([*** if tree-widget.el is already present on your system])
fi
AC_MSG_CHECKING([for the date utility flavor])
if date --version 2>/dev/null | grep GNU ; then
DATE_FLAVOR="GNU"
else
DATE_FLAVOR="BSD"
fi
AC_MSG_RESULT([${DATE_FLAVOR}])
AC_SUBST([DATE_FLAVOR])
AC_OUTPUT
# configure.ac ends here

View File

@ -1,6 +0,0 @@
This package is a rework of Milan Zamazal's packaging based on
Matthieu Moy <Matthieu.Moy@imag.fr>.
This package use cdbs.
-- Daniel Dehennin <dad@hati.baby-gnu.org>, Fri, 22 Aug 2008 07:04:29 +0200

View File

@ -1,7 +0,0 @@
dvc (0r20100420-1) unstable; urgency=low
* New snapshot.
* Add dvc.texinfo license to debian/copyright.
* Julien Danjou is the sponsor for DVC (Closes: #496930).
-- Daniel Dehennin <daniel.dehennin@baby-gnu.org> Tue, 20 Apr 2010 09:43:34 +0200

View File

@ -1 +0,0 @@
7

View File

@ -1,30 +0,0 @@
Source: dvc
Section: devel
Priority: optional
Maintainer: Daniel Dehennin <daniel.dehennin@baby-gnu.org>
Build-Depends: cdbs (>= 0.4.50), debhelper (>= 7)
Build-Depends-Indep: autoconf, emacs23 | emacs22 | emacs21 | xemacs21 | emacs-snapshot, texinfo
Standards-Version: 3.8.4
Vcs-Bzr: http://bzr.xsteve.at/dvc/
Homepage: http://download.gna.org/dvc/
Package: dvc
Architecture: all
Depends: emacs23 | emacs22 | emacs21 | xemacs21 | emacs-snapshot, dpkg (>= 1.15.4) | install-info, ${misc:Depends}
Recommends: tla | bazaar | bzr | git | mercurial | darcs | monotone
Description: Emacs front-end to distributed version control systems
DVC is an attempt to build a common infrastructure for various
distributed revision control systems. Actually supported are tla,
bazaar, bzr, git, mercurial, darcs and monotone.
.
DVC main features are:
* dvc-status: Intuitive interface for status viewing.
* dvc-log: Log viewer.
* dvc-diff: View uncommitted changes in your working directory.
* dvc-bookmarks: Bookmark manager with partner support.
* Integration with ediff, Emacs's graphical diff tool.
* dvc-missing: Interface to view missing patches from all your
partners with a single command.
* Send/receive/apply patches via the Gnus email client.
* Run many version control commands from Emacs (such as init and
pull).

View File

@ -1,70 +0,0 @@
This package was debianized by Matthieu Moy <Matthieu.Moy@imag.fr> on
Sun, 17 Oct 2004 17:15:25 +0200. Small additional changes were made by
Milan Zamazal <pdm@debian.org> and Daniel Dehennin
<daniel.dehennin@baby-gnu.org> completely repackage it.
It was downloaded from http://download.gna.org/dvc.
Copyright (C) 2004, 2005, 2006, 2007, 2008 DVC team
Upstream authors:
Alan Shutko <ats@acm.org>
Andrea Russo <rastandy@inventati.org>
Andre Kuehne <andre.kuehne@gmx.net>
Bojan Nikolic <bojan@bnikolic.co.uk>
Chris Gray <christopher.grayb@mail.mcgill.ca>
Christian Ohler <ohler+mtn@fastmail.net>
Daniel Dehennin <daniel.dehennin@baby-gnu.org>
Mark Triggs <mark@dishevelled.net>
Martin Brett Pool
Masatake YAMATO <jet@gyve.org>
Matthieu MOY <matthieu.moy@imag.fr>
Michael Olson <mwolson@gnu.org>
Milan Zamazal <pdm@zamazal.org>
Miles Bader <miles@gnu.org>
Robert Widhopf-Fenk <hack@robf.de>
Sam Steingold <sds@gnu.org>
Sascha Wilde <wilde@sha-bang.de>
Stefan Reichoer <stefan@xsteve.at>
Stephen Leake <stephen_leake@stephe-leake.org>
Steve Youngs <steve@sxemacs.org>
Takuzo O'hara <takuzo.ohara@gmail.com>
Vincent LADEUIL
License:
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 dated June, 1991, or
(at your option) any later version.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this package; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.
License for dvc.texinfo:
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by the author.

View File

@ -1,5 +0,0 @@
usr/share/doc/dvc
usr/share/emacs/site-lisp/dvc
usr/share/emacs/site-lisp/dvc/lisp
usr/share/emacs/site-lisp/dvc/lisp/contrib

View File

@ -1,10 +0,0 @@
debian/copyright
docs/ANNOUNCEMENTS
docs/ARCHIVES
docs/BINDINGS
docs/CONTRIBUTORS
docs/DVC-API
docs/FEATURES
docs/HACKING
docs/TODO
docs/xmtn-readme.txt

View File

@ -1,81 +0,0 @@
#! /bin/sh -e
# /usr/lib/emacsen-common/packages/install/dvc
# Written by Jim Van Zandt <jrv@vanzandt.mv.com>, borrowing heavily
# from the install scripts for gettext by Santiago Vila
# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
set -e
FLAVOR=$1
PACKAGE=dvc
if [ "x$FLAVOR" = "x" ]; then
echo Need argument to determin FLAVOR of emacs;
exit 1
fi
if [ "x$PACKAGE" = "x" ]; then
echo Internal error: need package name;
exit 1;
fi
ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
case "$FLAVOR" in
emacs |emacs20)
echo "Ignoring flavor ${FLAVOR}"
;;
*)
echo -n "install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}... "
# if ! which $FLAVOR 2>&1 > /dev/null; then
# echo "Could not find $FLAVOR. Exiting"
# exit 0;
# fi
if [ -d "$ELCDIR" ]; then
rm -rf $ELCDIR || true;
fi
install -m 755 -d ${ELCDIR}
cd ${ELDIR}/lisp
LOG=`tempfile`;
trap "test ! -f $LOG || mv -f $LOG $ELCDIR/install.log > /dev/null 2>&1" EXIT
make EMACS_PROG=/usr/bin/$FLAVOR > $LOG 2>&1
COMPILED=$(ls -1 *.elc)
if [ "x$COMPILED" = "x" ]; then
echo >&2 "No compiled files exist!!"
echo >&2 "Aborting!!"
echo "No compiled files exist!!" >> $LOG;
echo "Aborting!!" >> $LOG;
mv -f $LOG $ELCDIR/install.log
exit 1
fi
for file in *.elc; do
echo "Installing $file in $ELCDIR" >> $LOG
install -m 644 $file $ELCDIR;
done
# Include files in contrib/ if any
if ls contrib/*.elc > /dev/null 2>&1; then
for file in contrib/*.elc; do
echo "Installing $file in $ELCDIR" >> $LOG
install -m 644 $file $ELCDIR;
done
fi
rm -f dvc-version.el *autoloads.el custom-load.el *.elc contrib/*.elc|| true;
mv -f $LOG $ELCDIR/install.log;
chmod 644 $ELCDIR/install.log;
echo "done."
;;
esac
exit 0

View File

@ -1,29 +0,0 @@
#!/bin/sh -e
# /usr/lib/emacsen-common/packages/remove/dvc
FLAVOR=$1
PACKAGE=dvc
if [ "x$FLAVOR" = "x" ]; then
echo Need argument to determin FLAVOR of emacs;
exit 1
fi
if [ "x$PACKAGE" = "x" ]; then
echo Internal error: need package name;
exit 1;
fi
case "$FLAVOR" in
emacs | emacs20)
echo "Ignoring flavour ${FLAVOR}"
;;
*)
echo "remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}"
rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
;;
esac
exit 0

View File

@ -1,36 +0,0 @@
;; -*-emacs-lisp-*-
;;
;; Emacs startup file for the Debian dvc package
;;
;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
;; Modified by Dirk Eddelbuettel <edd@debian.org>
;; Adapted for dh-make by Jim Van Zandt <jrv@vanzandt.mv.com>
;; The dvc package follows the Debian/GNU Linux 'emacsen' policy and
;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
;; xemacs19, emacs20, xemacs20...). The compiled code is then
;; installed in a subdirectory of the respective site-lisp directory.
;; We have to add this to the load-path:
(let ((list (append '((lisp . "dvc") (source . "dvc/lisp")))))
(while list
(let ((elt (car list)))
(cond
((equal 'lisp (car elt))
(let ((dir (concat "/usr/share/"
(symbol-name debian-emacs-flavor)
"/site-lisp/" (cdr elt))))
(when (file-directory-p dir)
(if (fboundp 'debian-pkg-add-load-path-item)
(debian-pkg-add-load-path-item dir)
(add-to-list 'load-path dir 'append)))))
((equal 'source (car elt))
(let ((dir (concat "/usr/share/emacs/site-lisp/" (cdr elt))))
(when (file-directory-p dir)
(add-to-list 'load-path dir 'append))))))
(setq list (cdr list))))
(if (featurep 'xemacs)
(require 'auto-autoloads)
(require 'dvc-autoloads))

View File

@ -1 +0,0 @@
texinfo/dvc.info

View File

@ -1,7 +0,0 @@
config.status /usr/share/emacs/site-lisp/dvc
Makefile* /usr/share/emacs/site-lisp/dvc
lisp/Makefile* /usr/share/emacs/site-lisp/dvc/lisp/
lisp/Makefile* /usr/share/emacs/site-lisp/dvc/lisp/
lisp/*.el /usr/share/emacs/site-lisp/dvc/lisp/
lisp/dvc-site.el.in /usr/share/emacs/site-lisp/dvc/lisp/
lisp/contrib/*.el /usr/share/emacs/site-lisp/dvc/lisp/contrib/

View File

@ -1,17 +0,0 @@
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
export DH_VERBOSE=0
PREFIX := /usr
LISPDIR := /usr/share/emacs/site-lisp/dvc
include /usr/share/cdbs/1/rules/debhelper.mk
clean::
[ ! -f Makefile ] || $(MAKE) distclean
configure/dvc::
autoconf -f -i
./configure PACKAGE_VERSION=$(DEB_VERSION) --prefix=$(PREFIX) --with-lispdir=$(LISPDIR)
$(MAKE) info

View File

@ -1 +0,0 @@
3.0 (quilt)

View File

@ -1,99 +0,0 @@
; -*- mode: text -*-
Subject: Xtla 1.2 is out!!
The Xtla development team is proud to announce the release of Xtla,
version 1.2.
Xtla is the Emacs front-end to GNU Arch client (either tla or bazaar
branch, at your option). It mainly provides user-friendly wrappers for
native commands.
The 1.2 version of Xtla will most probably be the last version of Xtla
to contain new features. We are currently moving to a more generic
architecture, that we called DVC, which will support other RCS as
back-ends. We already have preliminary support for Mercurial and
Bazaar 2.
The main features are:
* PCL-CVS like interface for tla inventory and tla changes
* Archive browser - navigate painlessly through archives, categories,
branches, versions, etc.
* Good integration in Emacs - almost everything can be done from
within the editor
* Bookmark manager - keep the most frequently used arch locations in
your bookmark buffer
* Integration with ediff, Emacs's graphical diff tool
- to view changes made in a local tree.
- to view and resolve conflicts after a merge.
* Interface to view missing patches from all your partners with a
single command
* An Emacs mode for arch-related files (log files, =tagging-method,
"build-config" files)
* Support for baz, and for baz added commands like "switch",
"annotate", "status", "resolved"
* Integraton with Gnus.
The main new features for the 1.2 version are:
* M-x baz-update RET can use either merge, replay, or update
* changelog buffer, cat-log-mode buffers, and *Article* buffers (in
Gnus) show clickable buttons for revision names (and other Arch
names).
* A mail notification is available from the Changelog buffer (bound
to "M")
* Several bazaaz 1.5 compatibility issues solved
* Many bugfixes
Information about Xtla can be found here:
http://wiki.gnuarch.org/xtla
We also have a project page on http://gna.org (savannah.gnu.org-like),
where you can find information about the mailing list, the online
manual, the download area, and the bug tracker (also used for feature
requests):
https://gna.org/projects/xtla-el
You can install Xtla is from the archive found here:
https://www-verimag.imag.fr/~moy/arch/public
The version is
Matthieu.Moy@imag.fr--public/xtla--main--1.2
Xtla can also be downloaded as a tarball from here
http://download.gna.org/xtla-el/
Or installed as a Debian package. The package is now in Debian
unstable. You can also get it by adding
deb http://download.gna.org/xtla-el/apt/ unstable/
to your sources.list file if you use another .deb-based distribution.
Many thanks to all contributors and testers, in particular, for this
version:
Stefan Reichör, Original author of Xtla and integrator
Masatake Yamato, GNU Emacs hacker
; Robert Widhopf-Fenk, XEmacs integration and testing
Milan Zamazal, Debian developer
Mark Triggs

View File

@ -1,36 +0,0 @@
To test DVC backends quickly here I enumerate some
interesting(completely my subjective view - Masatake) archives or repositories:
Add archives(or repository) you are interested in.
* tla/baz
** dvc itself
$ bzr get http://bzr.xsteve.at/dvc/
* bzr
** bless binary editor
$ bzr branch http://download.gna.org/bless/bless.dev
* cg
** linux kernel
$ cg-clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
* hg
** Xen and linux related codes
$ hg clone http://xenbits.xensource.com/linux-2.6-xen.hg
$ hg clone http://xenbits.xensource.com/xen-3.0-testing.hg
* darcs
** Ion-3 window manager
$ darcs get --partial http://modeemi.fi/~tuomov/repos/ion-3

View File

@ -1,210 +0,0 @@
Some possible keybindings:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Bookmarks key bindings
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(when (not tla-bookmarks-mode-map)
(setq tla-bookmarks-mode-map (make-sparse-keymap))
;;; Commands for merging (M)
(define-key tla-bookmarks-mode-map [?M ?s] 'tla-bookmarks-star-merge)
(define-key tla-bookmarks-mode-map [?M ?m] 'tla-bookmarks-missing)
(define-key tla-bookmarks-mode-map [?M ?r] 'tla-bookmarks-replay)
;;; Commands for marking (*)
(define-key tla-bookmarks-mode-map "\M-\C-?" 'tla-bookmarks-unmark-all)
(define-key tla-bookmarks-mode-map [?* ?!] 'tla-bookmarks-unmark-all)
(define-key tla-bookmarks-mode-map [?* ?u] 'tla-bookmarks-unmark)
(define-key tla-bookmarks-mode-map [?* ?m] 'tla-bookmarks-mark)
;;; Navigation
(define-key tla-bookmarks-mode-map [?n] 'tla-bookmarks-next)
(define-key tla-bookmarks-mode-map [?p] 'tla-bookmarks-previous)
;;; Bookmark specific commands
(define-key tla-bookmarks-mode-map "\C-m" 'tla-bookmarks-goto)
(define-key tla-bookmarks-mode-map [?a] 'tla-bookmarks-add)
(define-key tla-bookmarks-mode-map [?e] 'tla-bookmarks-edit)
(define-key tla-bookmarks-mode-map [?d] 'tla-bookmarks-delete)
(define-key tla-bookmarks-mode-map [?o] 'tla-bookmarks-open-tree)
(define-key tla-bookmarks-mode-map [?i] 'tla-bookmarks-inventory)
(define-key tla-bookmarks-mode-map [?q] 'tla-buffer-quit)
(define-key tla-bookmarks-mode-map [?+ ?b] 'tla-bookmarks-add)
(define-key tla-bookmarks-mode-map [?+ ?t] 'tla-bookmarks-add-tree-interactive)
(define-key tla-bookmarks-mode-map [?- ?t] 'tla-bookmarks-delete-tree-interactive)
(define-key tla-bookmarks-mode-map [?+ ?p] 'tla-bookmarks-add-partner-interactive)
(define-key tla-bookmarks-mode-map [?- ?p] 'tla-bookmarks-delete-partner-interactive)
(define-key tla-bookmarks-mode-map [?+ ?g] 'tla-bookmarks-add-group-interactive)
(define-key tla-bookmarks-mode-map [?- ?g] 'tla-bookmarks-delete-group-interactive)
(define-key tla-bookmarks-mode-map [?* ?g] 'tla-bookmarks-select-by-group)
(define-key tla-bookmarks-mode-map [?N] 'tla-bookmarks-move-down)
(define-key tla-bookmarks-mode-map [?P] 'tla-bookmarks-move-up)
;;; Archive commands (A)
(define-key tla-bookmarks-mode-map [?>] 'tla-bookmarks-get)
(define-key tla-bookmarks-mode-map [?A ?g] 'tla-bookmarks-get)
;;; Toggle commands (T)
(define-key tla-bookmarks-mode-map [?T t] 'tla-bookmarks-toggle-details)
;;; Debugging commands (D)
(define-key tla-bookmarks-mode-map [?D p] 'tla-show-process-buffer)
;; Add me!
;; (define-key tla-bookmarks-mode-map [?D l] 'tla-show-tla-log)
;;; Misc
(define-key tla-bookmarks-mode-map [??] 'describe-mode)
(define-key tla-bookmarks-mode-map [(meta p)]
'tla-bookmarks-marked-are-partners)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Inventory key bindings
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(when (not tla-inventory-mode-map)
(setq tla-inventory-mode-map (make-sparse-keymap))
;;; Commands for merging (M)
(define-key tla-inventory-mode-map [?M ?s] 'tla-inventory-star-merge)
(define-key tla-inventory-mode-map [?M ?r] 'tla-inventory-replay)
;;; Commands for marking (*)
(define-key tla-inventory-mode-map "\M-\C-?" 'tla-inventory-unmark-all)
(define-key tla-inventory-mode-map [?* ?m] 'tla-inventory-mark-file)
(define-key tla-inventory-mode-map [?* ?u] 'tla-inventory-unmark-file)
(define-key tla-inventory-mode-map [?* ?!] 'tla-inventory-unmark-all)
;;; Navigation
(define-key tla-inventory-mode-map [?n] 'tla-inventory-next)
(define-key tla-inventory-mode-map [?p] 'tla-inventory-previous)
(define-key tla-inventory-mode-map [?^] 'tla-inventory-parent-directory)
(define-key tla-inventory-mode-map [left] 'tla-inventory-parent-directory)
;;; Inventory specific commands
(define-key tla-inventory-mode-map [?+ ?f] 'tla-inventory-add)
(define-key tla-inventory-mode-map [?- ?f] 'tla-inventory-remove)
(define-key tla-inventory-mode-map [?R] 'tla-inventory-move)
(define-key tla-inventory-mode-map [?e] 'tla-inventory-file-ediff)
(define-key tla-inventory-mode-map [?c] 'tla-inventory-edit-log) ;; mnemonic for commit
(define-key tla-inventory-mode-map [?f] 'tla-inventory-find-file)
(define-key tla-inventory-mode-map [return] 'tla-inventory-find-file)
(define-key tla-inventory-mode-map [right] 'tla-inventory-find-file)
(define-key tla-inventory-mode-map "\C-m" 'tla-inventory-find-file)
(define-key tla-inventory-mode-map [?o] 'tla-inventory-find-file-other-window)
(define-key tla-inventory-mode-map [?v] 'tla-inventory-view-file)
;; (define-key tla-inventory-mode-map [?d ?e] 'tla-inventory-file-ediff)
(define-key tla-inventory-mode-map [?d ?m] 'tla-inventory-missing)
(define-key tla-inventory-mode-map [?=] 'tla-changes)
(define-key tla-inventory-mode-map [?l] 'tla-changelog)
(define-key tla-inventory-mode-map [?L] 'tla-logs)
;;; Archive commands (A)
(define-key tla-inventory-mode-map [?A ?m] 'tla-inventory-mirror)
;;; Toggle commands (T)
(dolist (type-arg tla-inventory-file-types-manipulators)
(define-key tla-inventory-mode-map `[?T ,(cadddr type-arg)] (caddr type-arg)))
(define-key tla-inventory-mode-map [?T ?+] 'tla-inventory-set-all-toggle-variables)
(define-key tla-inventory-mode-map [?T ?-] 'tla-inventory-reset-all-toggle-variables)
(define-key tla-inventory-mode-map [?T ?~] 'tla-inventory-toggle-all-toggle-variables)
;;; Debugging commands (D)
(define-key tla-inventory-mode-map [?D p] 'tla-show-process-buffer)
;; Add me!
;; (define-key tla-inventory-mode-map [?D l] 'tla-show-tla-log)
;;; Misc
(define-key tla-inventory-mode-map [??] 'describe-mode)
(define-key tla-inventory-mode-map [?g] 'tla-generic-refresh)
(define-key tla-inventory-mode-map [?q] 'tla-buffer-quit)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Revision key bindings
;;;;;;;;;;;;;;;;;;;;;;;;;;;
(when (not tla-revision-list-mode-map)
(setq tla-revision-list-mode-map (make-sparse-keymap))
;;; Commands for merging/branching (M)
(define-key tla-revision-list-mode-map [?M ?s] 'tla-revision-star-merge)
(define-key tla-revision-list-mode-map [?M ?t] 'tla-revision-tag)
(define-key tla-revision-list-mode-map [?M ?r] 'tla-revision-replay)
;;; Commands for marking (*)
(define-key tla-revision-list-mode-map [?* ?m] 'tla-revision-mark-revision)
;; Add me!
;; (define-key tla-revision-list-mode-map [?* ?u]
;; 'tla-revision-unmark-revision)
;;; Navigation
(define-key tla-revision-list-mode-map [?^]
'tla-revision-list-parent-version)
(define-key tla-revision-list-mode-map [left]
'tla-revision-list-parent-version)
(define-key tla-revision-list-mode-map [down] 'tla-bookmarks-missing-next)
(define-key tla-revision-list-mode-map [up] 'tla-bookmarks-missing-prev)
(define-key tla-revision-list-mode-map [?n] 'tla-bookmarks-missing-next)
(define-key tla-revision-list-mode-map [?p] 'tla-bookmarks-missing-prev)
;;; Archive commands (A)
(define-key tla-revision-list-mode-map [?> ?g] 'tla-revision-get-revision)
(define-key tla-revision-list-mode-map [?> ?C] 'tla-revision-cache-revision)
(define-key tla-revision-list-mode-map [?> ?L] 'tla-revision-add-to-library)
(define-key tla-revision-list-mode-map [?A ?g] 'tla-revision-get-revision)
(define-key tla-revision-list-mode-map [?A ?c] 'tla-revision-cache-revision)
(define-key tla-revision-list-mode-map [?A ?l] 'tla-revision-add-to-library)
;;; Toggle commands (T)
(define-key tla-revision-list-mode-map [?T ?d] 'tla-revision-toggle-date)
(define-key tla-revision-list-mode-map [?T ?c] 'tla-revision-toggle-creator)
(define-key tla-revision-list-mode-map [?T ?s] 'tla-revision-toggle-summary)
(define-key tla-revision-list-mode-map [?T ?r] 'tla-revision-toggle-reverse)
;; ?t ?? is reserved. Not implemented yet.
(define-key tla-revision-list-mode-map [?T ??] 'tla-revision-list-toggles)
;;; Debugging commands (D)
(define-key tla-revision-list-mode-map [?D p] 'tla-show-process-buffer)
;; Add me!
;; (define-key tla-revision-mode-map [?D l] 'tla-show-tla-log)
;;; Revision specific commands
(define-key tla-revision-list-mode-map [?l] 'tla-revision-cat-log)
(define-key tla-revision-list-mode-map [?u] 'tla-revision-update)
(define-key tla-revision-list-mode-map "\C-m" 'tla-revision-return)
(define-key tla-revision-list-mode-map [return] 'tla-revision-return)
(define-key tla-revision-list-mode-map [right] 'tla-revision-return)
(define-key tla-revision-list-mode-map [?d] 'tla-revision-delta)
(define-key tla-revision-list-mode-map [?=] 'tla-revision-changeset)
(define-key tla-revision-list-mode-map [?i] 'tla-pop-to-inventory)
(define-key tla-revision-list-mode-map [?.] 'tla-revision-bookmarks-add)
;;; Misc
(define-key tla-revision-list-mode-map [?g] 'tla-generic-refresh)
(define-key tla-revision-list-mode-map [?q] 'tla-buffer-quit)
)

View File

@ -1,165 +0,0 @@
#!/bin/sh
#| -*- scheme -*- |#
:; exec gosh -- $0 "$@"
;;
;; We want to merge dvc tree to GNU Emacs. Thus, every contributor
;; must assign copyright for this changes to the FSF. This file
;; tracks contributors and their copyright assignment status.
;;
;; Before reporting your patch for merging DVC official source tree,
;; add your name to this file. The entry format is as follows:
;;
;; (contributor :name "yourname"
;; :signed done--or--not-yet--or--tiny-change
;; :mail-addresses "addr1@example1.com")
;;
;; or
;;
;; (contributor :name "yourname"
;; :signed done--or--not-yet--or--tiny-change
;; :mail-addresses ("addr1@example1.com" "addr2@example2.com" ...))
;;
;; You can use # instead of @ for circumventing the email-gathering
;; web spiders that spammers use. If you use a list for the
;; :mail-addresses field, the car is used for contacting the FSF.
;;
;; The first time :signed field may be `not-yet'. Then we will contact
;; you via email and send a copyright assignment templalte, which is
;; to be emailed to the FSF (at this point, :signed is changed to
;; `in-progress'). They will then send you the papers to sign. After
;; completing a paper work for it and getting the notification from
;; FSF, the :signed field will be changed to `done'.
;;
;; *The order is not meaningful.*
;;
(define contributors
'(
(contributor :name "Stefan Reichoer"
:signed done
:mail-addresses ("stefan#xsteve.at"
"stefan#pyramide"
"xsteve#nit.at"))
(contributor :name "Matthieu MOY"
:signed done
:mail-addresses ("Matthieu.Moy#imag.fr"
"matthieu.moy#imag.fr"
"moy#ecrins"
"moy#moy"))
(contributor :name "Miles Bader"
:signed done
:mail-addresses "miles#gnu.org")
(contributor :name "Andre Kuehne"
:signed done
:mail-addresses "andre.kuehne#gmx.net")
(contributor :name "Vincent LADEUIL"
:signed done)
(contributor :name "Stephen Leake"
:signed done
:mail-addresses ("stephen_leake#stephe-leake.org"
"stephe#ACS1100007992"
"stephe#LM000850872"))
(contributor :name "Takuzo O'hara"
:signed done
:mail-addresses "takuzo.ohara#gmail.com")
(contributor :name "Michael Olson"
:signed done
:mail-addresses ("mwolson#member.fsf.org"
"mwolson#gnu.org"
"mwolson#exabyte"))
(contributor :name "Martin Brett Pool"
:signed done)
(contributor :name "Andrea Russo"
:signed done
:mail-addresses ("rastandy#inventati.org"
"rast4ndy#gmail.com"))
(contributor :name "Alan Shutko"
:signed done-emacs-only
:mail-addresses "ats#acm.org")
(contributor :name "Sam Steingold"
:signed done
:mail-addresses "sds#gnu.org")
(contributor :name "Mark Triggs"
:signed done
:mail-addresses "mark#dishevelled.net")
(contributor :name "Robert Widhopf-Fenk"
:signed done
:mail-addresses "hack#robf.de")
(contributor :name "Sascha Wilde"
:signed done-emacs-only
:mail-addresses "wilde#sha-bang.de")
(contributor :name "Masatake YAMATO"
:signed done
:mail-addresses ("jet#gyve.org"
"jet#gps06"))
(contributor :name "Steve Youngs"
:signed done-emacs-only
:mail-addresses "steve#sxemacs.org")
(contributor :name "Milan Zamazal"
:signed done
:mail-addresses ("pdm#zamazal.org" "pdm#debian.org"))
;;
;; Assignment in progress
;;
;;
;; Does not need assignment yet
;;
(contributor :name "Daniel Dehennin"
:contacted yes
:changed-elisp no
:signed not-yet
:mail-addresses "daniel.dehennin@baby-gnu.org")
;;
;; Needs assignment (or investigation into changes made)
;;
(contributor :name "Christian Ohler"
:signed not-yet
:contacted yes
:mail-addresses "ohler+mtn#fastmail.net")
(contributor :signed "Chris Gray"
:signed not-yet
:contacted email-invalid
:mail-addresses "christopher.grayb#mail.mcgill.ca")
(contributor :signed "Bojan Nikolic"
:signed in-progress
:contacted yes
:mail-addresses "bojan#bnikolic.co.uk")
(contributor :name "James LewisMoss"
:signed tiny-change
:mail-addresses "jim@lewismoss.org")
;;
;; ADD YOUR NAME HERE.
;;
))
;;
;; This is a program to pick something like mail addresses from the output of
;; tla and bzr. The contributors mail address listed above are removed from the
;; picked addresses.
;;
;; tla changelog | docs/CONTRIBUTORS | sort | uniq
;; bzr log | docs/CONTRIBUTORS | sort | uniq
;;
(use srfi-1)
(let* ((droplist '("dvc-dev#gna.org"))
(addresses (map
(cute regexp-replace #/#/ <> "@")
(apply append droplist
(map (lambda (c)
(let1 addrs (get-keyword :mail-addresses (cdr c) (list))
(if (string? addrs) (list addrs) addrs)))
contributors))))
(registered? (lambda (line)
(any (lambda (a)
(string-scan line a))
addresses))))
(let loop ((line (read-line)))
(unless (eof-object? line)
(when (string-scan line "@")
(unless (registered? line)
(print line)))
(loop (read-line)))))

View File

@ -1,179 +0,0 @@
That file contains the documentation to build support for a different dvc,
using the dvc layer:
Conventions used in the document:
* <dvc> is used as placeholder for the dvc backend to implement
--------------------------------------------------------------------------------
* Base functions that are required for every supported dvc system
* That functions should be located in the <dvc>-dvc.el file
--------------------------------------------------------------------------------
When no function is provided, dvc-dvc-<postfix> is used instead.
- <dvc>-dvc-tree-root
(defun <dvc>-dvc-tree-root (&optional location no-error)
"Return the tree root for LOCATION, nil if not in a local tree.
If NO-ERROR is non-nil, don't raise an error if LOCATION is not a
<dvc> managed tree (but return nil)."
- <dvc>-dvc-log-edit-done
(defun <dvc>-dvc-log-edit-done ()
"Finish a commit for <dvc>."
- <dvc>-dvc-diff
(defun <dvc>-dvc-diff ()
"Shows the changes in the current <dvc> tree."
- <dvc>-dvc-log
(defun <dvc>-dvc-log ()
"Shows the changelog in the current <dvc> tree."
- <dvc>-dvc-command-version
(defun <dvc>-dvc-command-version ()
"Returns and/or shows the version identity string of backend command."
- <dvc>-dvc-file-has-conflict-p
(defun <dvc>-dvc-file-has-conflict-p (filename)
"Return non-nil if FILENAME is marked as having conflicts")
- <dvc>-dvc-resolved
(defun <dvc>-dvc-resolved (filename)
"Mark FILENAME as not having conflict anymore")
To handle the case of a workspace that is controlled by more than one
back-end, all dispatching interactive front-end functions dvc-foo
should have a corresponding function <dvc>-foo, that specifies which
back-end to use.
A simple way to provide <dvc>-foo is to put dvc-foo in
dvc-back-end-wrappers (in dvc-unified.el); then <dvc>-foo is
automatically generated by dvc-register-dvc. This defines
<dvc>-foo as (see dvc-register.el for the actual code):
(defun <dvc>-foo (<args>)
(interactive)
(let ((dvc-temp-current-active-dvc <dvc>))
(call-interactively 'dvc-foo)))
This means that back-ends may _not_ define a function <dvc>-foo.
Note that functions defined by dvc-define-unified-command dispatch
to <dvc>-dvc-foo. Calling <dvc>-dvc-foo is _not_ the same as
calling <dvc>-foo, since dvc-temp-current-active-dvc is not bound,
the interactive argument processing may be different, and
<dvc>-dvc-foo may not even exist (if the default dvc-dvc-foo is
sufficient).
-----------------------------------------------------------------------------
* Revision API
-----------------------------------------------------------------------------
Definition
==========
DVC deals with several RCS, with different ways to designate a
revision. We define a unified way to designate a revision in lisp,
which we call revision identifiers, or rev-id:
REVISION-ID :: (<dvc> BACK-END-ID)
;; <dvc> is one of 'tla, 'bzr, 'xhg, ...
BACK-END-ID :: (revision BACK-END-REVISION)
;; An already commited revision
;; The way to specify it depends on the back-end.
| (local-tree PATH)
;; Uncommited revision in the local tree PATH
| (last-revision PATH NUM)
;; Last commited revision in tree PATH if NUM = 1
;; Last but NUM-1 revision in tree PATH if NUM > 1
| (previous-revision BACK-END-REVISION NUM)
;; Nth Ancestor of BACK-END-ID.
(probably we'll need a (head REMOTE-BRANCH) too)
PATH :: string
;; must be a tree root directory
NUM :: number
REV-STRING :: string
For Xtla (tla and baz):
BACK-END-REVISION :: ("archive" "category" "branch" "version" "revision")
;; archive/category--branch--version--revision
For bzr:
BACK-END-REVISION :: (local "path" NUM)
| (remote "url" NUM)
| (tag REV-STRING)
For xhg:
TODO
For xgit:
BACK-END-REVISION :: (revision "sha1")
| (index)
;; content of the index (aka staging area).
Example
=======
(bzr (revision (local "/path/to/archive" 3)))
(baz (last-revision "/path/to/project" 1))
(baz (revision ("archive" "category" "branch" "version" "revision")))
(xgit (revision "c576304d512df18fa30b91bb3ac15478d5d4dfb1"))
Functions
=========
Based upon that, we define the functions:
dvc-revision-get-file-in-buffer: get the particular revision of a file
in a buffer.
-----------------------------------------------------------------------------
* Back-end specific features Vs Unification
-----------------------------------------------------------------------------
DVC provides the user an interface for multiple revision control
system, and does it using as much back-end independant code as
possible. This has several benefits :
* For the user:
- Similar user-interface, keybindings, ... for different back-ends.
- Unified interface for most operations : one menu, one set of
keybindings, and DVC detects which back-end to use automatically.
* For the developers:
- much less code to write than individual, independant interfaces.
However, some back-end features do not fit well in the DVC common
interface. For example, git differs from other common version control
systems in several regards (the index, for example, is something
probably unique to git, and it leads to a different flow to prepare a
commit).
In this case, there's nothing wrong providing additional functions,
which might not have a dvc-* dispatching command. The user can call
them with M-x <back-end>-command RET explicitly. Additionaly, one can
extend some DVC modes with additional keybindings and menus. See
`dvc-diff-mode' and `xgit-diff-mode' for an example.
-----------------------------------------------------------------------------
* External tools
-----------------------------------------------------------------------------
* 'sh' is required for dvc-run-sync and dvc-run-async.
In practice, that is not a problem for Unix users, but requires
cygwin or mingw for Windows users. 'sh' is used to separate stdout
from stderr; the Emacs function 'call-process' merges them. It may
be possible to do this with native Windows tools, if someone wants
to investigate.

View File

@ -1,204 +0,0 @@
This file is a annotated version of the output of tla help.
It should help us to identify the missing features of xtla regarding
tla itself. Don't forget that xtla is more than a "wrapper" around
tla, so, xtla should also have features not listed here to have a real
added value (the bookmarks feature is probably the best example).
There are currently 3 sections :
* TODO : Nothing was done for that
* DONE : Something was already done for that command. Probably it's
still not perfect yet.
* NOT NEEDED : Nothing was done, and nothing will be done for this
feature since it's meaningless in xtla.
After some time, there should be a fourth section :
* FINISHED : We consider this feature is fully implemented. At least
we mean that, additions to this feature are lowest
priority.
Moving an item from DONE to FINISHED or from TODO to NOT NEEDED should
be discussed on the mailing list.
tla sub-commands
----------------
* help
[DONE] help : provide help with arch
* User Commands
[DONE] my-id : print or change your id
[DONE] my-default-archive : print or change your default archive
[DONE] register-archive : change an archive location registration
[DONE] whereis-archive : print an archive location registration
[DONE] archives : Report registered archives and their locations.
* Project Tree Commands
[DONE] init-tree : initialize a new project tree
[DONE] tree-root : find and print the root of a project tree
[DONE] tree-version : print the default version for a project tree
[DONE] set-tree-version : set the default version for a project tree
[DONE] undo : undo and save changes in a project tree
[DONE] redo : redo changes in project tree
[DONE] changes : report about local changes in a project tree
[DONE] file-diffs : show local changes to a file
* Project Tree Inventory Commands
[DONE] inventory : inventory a source tree
[DONE] tree-lint : audit a source tree
[DONE] id : report the inventory id for a file
[DONE] id-tagging-method : print or change a project tree id tagging method
[DONE] add-id : add an explicit inventory id
[DONE] delete-id : remove an explicit inventory id
[DONE] rm : remove a file (or dir, or symlink) and its explicit inventory tag (if any)
[DONE] move-id : move an explicit inventory id
[DONE] mv : move a file (or dir, or symlink) and it's explicit inventory tag (if any)
[TODO] explicit-default : print or modify default ids
[TODO] id-tagging-defaults : print the default =tagging-method contents
* Patch Set Commands
[TODO] changeset : compute a whole-tree changeset
[DONE] apply-changeset : apply a whole-tree changeset
[DONE] show-changeset : generate a report from a changeset
* Archive Transaction Commands
[DONE] make-archive : create a new archive directory
[NOT NEEDED] archive-setup : create new categories, branches and versions
[DONE] make-category : create a new archive category
[DONE] make-branch : create a new archive branch
[DONE] make-version : create a new archive version
[DONE] import : archive a full-source base-0 revision
[DONE] commit : archive a changeset-based revision
[DONE] get : construct a project tree for a revision
[DONE] get-changeset : retrieve a changeset from an archive
[TODO] lock-revision : lock (or unlock) an archive revision
[DONE] archive-mirror : update an archive mirror
* Archive Commands
[DONE] abrowse : print an outline describing archive contents
[DONE] rbrowse : print an outline describing an archive's contents
[DONE] categories : list the categories in an archive
[DONE] branches : list the branches in an archive category
[DONE] versions : list the versions in an archive branch
[DONE] revisions : list the revisions in an archive version
[TODO] ancestry : display the ancestory of a revision
[TODO] ancestry-graph : display the ancestory of a revision
[DONE] cat-archive-log : print the contents of an archived log entry
[DONE] cacherev : cache a full source tree in an archive
[TODO] cachedrevs : list cached revisions in an archive
[TODO] uncacherev : remove a cached full source tree from an archive
[TODO] archive-meta-info : report meta-info from an archive
[TODO] archive-snapshot : update an archive snapshot
[TODO] archive-version : list the archive-version in an archive
[DONE] archive-fixup : fix ancillary files (e.g. .listing files) in an archive
* Patch Log Commands
[DONE] make-log : initialize a new log file entry
[TODO] log-versions : list patch log versions in a project tree
[TODO] add-log-version : add a patch log version to a project tree
[TODO] remove-log-version : remove a version's patch log from a project tree
[DONE] logs : list patch logs for a version in a project tree
[DONE] cat-log : print the contents of a project tree log entry
[DONE] changelog : generate a ChangeLog from a patch log
[DONE] log-for-merge : generate a log entry body for a merge
[TODO] merges : report where two branches have been merged
[TODO] new-merges : list tree patches new to a version
* Multi-project Configuration Commands
[DONE] build-config : instantiate a multi-project config
[DONE] cat-config : output information about a multi-project config
* Commands for Branching and Merging
[DONE] tag : create a continuation revision (aka tag or branch)
[DONE] update : update a project tree to reflect recent archived changes
[DONE] replay : apply revision changesets to a project tree
[DONE] star-merge : merge mutually merged branches
[TODO] apply-delta : Compute a changeset between any two trees or revisions and apply it to a project tree
[DONE] missing : print patches missing from a project tree
[TODO] join-branch : construct a project tree for a version
[DONE] sync-tree : unify a project tree's patch-log with a given revision
[DONE] delta : Compute a changeset (or diff) between any two trees or revisions
* Local Cache Commands
[DONE] changes : report about local changes in a project tree
[DONE] file-diffs : show local changes to a file
[DONE] file-find : find given version of file
[DONE] pristines : list pristine trees in a project tree
[TODO] lock-pristine : lock (or unlock) a pristine tree
[TODO] add-pristine : ensure that a project tree has a particular pristine revision
[TODO] find-pristine : find and print the path to a pristine revision
* Revision Library Commands
[DONE] my-revision-library : print or change your revision library path
[DONE] library-config : configure parameters of a revision library
[DONE] library-find : find and print the location of a revision in the revision library
[DONE] library-add : add a revision to the revision library
[TODO] library-remove : remove a revision from the revision library
[DONE] library-archives : list the archives in your revision library
[DONE] library-categories : list the categories in your revision library
[DONE] library-branches : list the branches in a library category
[DONE] library-versions : list the versions in a library branch
[DONE] library-revisions : list the revisions in a library version
[TODO] library-log : output a log message from the revision library
[TODO] library-file : find a file in a revision library
* Published Revisions Commands
[TODO] grab : grab a published revision
* Miscellaneous Scripting Support
[NOT NEEDED] parse-package-name : parse a package name
[NOT NEEDED] valid-package-name : test a package name for validity

View File

@ -1,263 +0,0 @@
-*- mode: text -*-
Developers
==========
DVC will be merged to GNU Emacs(we hope).
So the developers should be able to sign to FSF about
copyright assignment. In other words, we can accept
only patches whose author agrees to sign to FSF.
CONTRIBUTORS file is for tracking the contributors
and their copyright assignments.
CONTRIBUTORS file is maintained by Michael Olson.
GNU Emacs, XEmacs and its version
=================================
We will support both Emacs and XEmacs. The developers are using:
Stefan Reichoer <stefan at xsteve . at>: GNU Emacs 21.3.1, GNU Emacs in CVS repository
Matthieu Moy <Matthieu.Moy at imag . fr>: GNU Emacs 21.2 (Solaris and Linux)
Masatake YAMATO <jet at gyve . org>: GNU Emacs in CVS repository
Milan Zamazal <pdm at zamazal . org>: GNU Emacs 21.3, GNU Emacs CVS
Martin Pool <mbp at sourcefrog . net>: ???
Robert Widhopf-Fenk <hack at robf . de>: XEmacs 21.4.5
Mark Triggs <mst at dishevelled . net>: GNU Emacs in CVS repository
gnuarch version
===============
gnuarch version which xtla's developers are using:
Stefan Reichoer <stefan at xsteve . at>:
Matthieu Moy <Matthieu.Moy at imag . fr>:
tla 1.2, tla 1.2.2rc2
Masatake YAMATO <jet at gyve . org>:
tla lord@emf.net--2004/dists--devo--1.0--patch-9(configs/emf.net-tla/devo.tla-1.2) from regexps.com
Milan Zamazal <pdm at zamazal . org>: tla, from Debian/testing.
Martin Pool <mbp at sourcefrog . net>:
Robert Widhopf-Fenk <hack at robf . de>:
Mark Triggs <mst at dishevelled . net>:
Key bind conventions
====================
See xtla-defs.el.
Symbol name conventions
=======================
- Face: Do not use a `-face' suffix for face names.
(About the reason, see
http://mail.gnu.org/archive/html/emacs-devel/2004-03/msg00077.html)
- Functions and variables internal to xtla should be named tla--XXX
Functions and variables used by the user should be named tla-XXX
Menu item conventions
=====================
See xtla-defs.el.
Mail conversions
================
Matthieu MOY <Matthieu.Moy at imag dot fr> wrote
in Message-ID: <1084790609.40a8975194dcd@webmail.imag.fr>
I usually send a mail for a merge request only when the change
involves a big portion of the file, to tell everybody to make sure
they merge before doing any changes.
However, when you send a mail, your suggestion of [MERGE REQUEST] flag
is good.
Coding style
============
Robert Widhopf-Fenk <hack at robf dot de> wrote
in Message-ID: <16552.35294.211101.658893@gargle.gargle.HOWL>
I really would like to see no lines longer than 80 chars in xtla.el.
Please, strip trailing whitespaces from your source files.
;; remove trailing whitespaces when saving.
(add-hook 'write-file-hooks 'delete-trailing-whitespace)
in your ~/.emacs.el can help.
Also, don't include any tabs in your source code. You should use
(setq indent-tabs-mode nil)
If you do not want to enable it in general, use something like the following
in your ~/.emacs:
(defun rf-dvc-find-file-hook ()
(when (and (buffer-file-name)
(string-match "xtla\\|dvc" (buffer-file-name)))
(message "Enabled Xtla/DVC settings for buffer %s" (buffer-name))
(make-local-hook 'write-file-hooks)
(add-hook 'write-file-hooks 'delete-trailing-whitespace nil t)
(setq indent-tabs-mode nil)))
(add-hook 'find-file-hooks 'rf-dvc-find-file-hook)
Non-trivial macros should include the form:
(declare (indent INDENT-SPEC) (debug DEBUG-SPEC))
The INDENT-SPEC tells Emacs' indentation commands how to indent the form,
whereas DEBUG-SPEC tells Edebug how to instrument the form for debugging.
See: (info "(elisp) Indenting Macros") and
(info "(elisp) Edebug and Macros") for more info.
Indentation is not (completely) arbitrary. There are three steps,
the first of which need be done only once per editing session.
- Make sure you evaluate *all* `defmacro' forms so that Emacs knows
about each form's indentation spec (if any).
- Use C-M-q at top-level open-paren to canonicalize indentation.
- Apply stylistic exceptions (manual override). Common cases:
- `flet', `labels', `macrolet' -- Emacs does a poor job here, indenting
too much, so overriding it is almost a requirement (many examples);
- deliberate flush-left (to column 0) so that C-M-x "continues to work"
on an inner form (eg: dvc-capturing-lambda);
- end-of-line ";;"-comment alignment (eg: defstruct dvc-fileinfo-file).
Process management
==================
The function dvc--run-arch now creates two buffer each time it is
called: a process buffer, and an error buffer. If the process is ran
synchronously, then the buffers are scheduled for deletion. If not,
the scheduling for deletion occurs in the process sentinel.
This means you will need to clone the buffer if you need to run arch
again while parsing the output buffers. (This was already necessary
with the old mechanism)
The variables tla--last-process-buffer and tla--last-error-buffer are
set each time a new process or error buffer is created. The value is
therefore meaningfull only until a new process is started. Avoid using
them when you're not sure the piece of code you're writting will not
one day be made asynchronous: This become meaningless in a process
sentinel.
I (Mark) have thrown in my two cents on the process management
stuff. I've added two functions: one for running tla synchronously
(tla--run-tla-sync), and one for running it asynchronously
(tla--run-tla-async). Their syntax is pretty much identical, which is as
follows:
(tla--run-tla-(a)sync '("tla-arg1" "tla-arg2" .. "tla-argn")
:finished (lambda (output-buffer error-buffer status)
..)
:killed (lambda (output-buffer error-buffer status)
..)
:error (lambda (output-buffer error-buffer status)
..)
:output-buffer some-buffer
:error-buffer some-buffer
:related-buffer some-buffer)
The keywords :FINISHED, :KILLED and :ERROR supply callbacks, which are
functions that take four arguments:
* the buffer containing the process output
* the buffer containing the process error output; and
* some indicator of the processes status (which can either be a
return code or a string).
* the argument list that the command was run with (e.g. ("undo"))
The :FINISHED callback is called in the case where the program finishes
successfully. The :KILLED callback is called when the program was
unexpectedly killed while running, and the :ERROR callback is called
when the program fails for some reason.
If :OUTPUT-BUFFER or :ERROR-BUFFER are supplied, the process will write
its standard/error output to these instead of generating buffers
automatically. Where these keywords are not given, new buffers will be
created, filled with program output and passed to the callback
functions.
Although it shouldn't ordinarily matter, it is worth noting that if
:OUTPUT-BUFFER or :ERROR-BUFFER are not given, the temporary buffers
that are created will be killed immediately after the callback
exits. This just means that if you plan on keeping those buffers around
for longer than just the scope of the callback, you'll need to clone
them first.
As a quick example, here is how you could asynchronously run a "tla
abrowse -s" and send the output to a printer (I'm not sure why you would
want to do this, but that's the great thing about contrived examples!):
(defun print-archive (archive &optional postscript-output-file)
"Run an abrowse on ARCHIVE and send the result to the printer."
(tla--run-tla-async (list "abrowse" "-s" "-A" archive)
:finished `(lambda (output-buffer error-buffer
status arguments)
(with-current-buffer output-buffer
(ps-print-buffer ,postscript-output-file)
(message "Printed abrowse to %s."
(or ,postscript-output-file
"printer"))))))
The only really noteworthy thing is the use of the backquoted
lambda. This is kind of like a poor man's lexical scoping, but it's a
useful way of capturing variables from the containing environment.
Name manipulator
================
See xtla-core.el.
Release & distribution process
==============================
* Development version
---------------------
The prefered way to get a development version is to use either
Bazaar or Git to clone the latest repo.
Programs for maintainers:
(required) autoconf, tar, gzip, makeinfo
(optional) texi2dvi, etags
With the exception of gzip (which is invoked simply as "gzip"),
the invocation of each of these programs is influenced by a
makefile variable of the same name, but all upcased. For example,
you can choose a different tar for "make dist" using the command:
make dist TAR=/path/to/my/tar
The default values for these variables is simply the program name.
Historical note: We used to AC_PATH_PROG them in configure.ac, but
that did not benefit the end user (./configure && make all install),
so we stopped mid-2008.
* Official releases
-------------------
Official releases will be made by the release manager, after
discussion on the mailing list.
The release manager will modify configure.ac to set the second
arg of AC_INIT to 1.1, for example, and then type the commands
autoreconf
./configure (or ./config.status --recheck)
make
make dist

View File

@ -1,285 +0,0 @@
-*- mode: text -*-
TODO/Wish list for xtla.el
==========================
Mostly DONE section:
====================
* Some like file-diff-rev from the aba which gives you the changes to a
file between two specified revisions using the following:
diff -u $(tla file-find file.cpp $(tla tree-version)--patch-X)
$(tla file-find file.cpp $(tla tree-version)--patch-Y)
=> This is the function tla-file-ediff-rev. There should also be a
version without ediff, just showing the diff output with
diff-mode.
* Integration with ediff, which I usually prefer to diff-mode.
- This is done for M-x tla-ediff-buffer, `e' in *tla-changes*, 'd
e' in *tla-inventory*
- There is more to do from the *tla-revisions* buffer for example
(retrieve any two revisions and ediff them)
- a 3 way merge with ediff3 would be perfect. (Actually, ediff3
isn't sufficient because it shows you the differences even in the
absence of conflict.). smerge-mode, integrated in Emacs 21,
already does a very good job for this
* En entry "Branch from version" to create a symbolic tag from the
*tla-versions* buffer.
- Done for *tla-revisions*.
* Code cleaning. There are a lot of duplicates.
=> Some big code cleaning have been carried out, but such item can
never go to the "completely DONE" section ;-)
DONE section:
=============
* One line log from minibuffer to commit.
=> This should be handled in vc-arch.el?
* Add good doc strings for the functions
=> Most functions have one now.
* Recursive commands for projects using configurations.
=> implemented for tla-changes and tla-update
* Name reader should support complete location notation like:
Location: Matthieu.Moy@imag.fr--public/xtla--main--0.1
Current partial and incremental location reading is supported
like:
Archive: Matthieu.Moy@imag.fr--public
Category: xtla
Branch: main
Version: 0.1
=> The engine is implemented. Apply it to interactive functions.
* Add a texinfo file
- What should be the structure of this file?
=> Very short. Just a starting point for the users, but xtla should
be self-documented. Menus and docstrings should be sufficient
most of the time.
A demo with screenshots would be nice too. (to let people get
an idea of what xtla is in less than a minute.)
- Should we guide through the tla tutorial?
(Be carefull. I don't like people to learn a tool from the
front-end. I prefer let them understand the concepts with the
command line, and learn the front-end after. It takes a bit more
time but is much more pedagogical)
* M-x xtla should provide the buttons to jump tla-inventory,
tla-bookmarks and so on. This should be integrated with the command central?
* Optimize tla-archive-tree manipulator when it is updated.
I think using rbrowse and/or abrowse output is better than current
implementation.[Masatake] Not so much, because browsing a small
branch in a big archive would be slow (discussed on the ML)
[Matthieu]
* tla log font-lock (like ChangeLog)
* A "revert file" feature. Most of the code is already in
tla-file-ediff. (done in tla-file-revert)
* Archive mirroring.
[Matthieu Moy: I'm taking care of this]
* Prompt for saving buffer visiting files of the current tree for most
operations: commit, update, changes, ... (Which other ones ?)
* M-x xtla-update. Possibility to update from the bookmarks buffer.
* Merge xtla-fully-qualified-revision and xtla-name-construct.
[Masatake YAMATO]
* M-x tla-missing RET should be merged with tla-bookmarks-missing
* Bridge between smerge-mode and xtla.el.
[Masatake YAMATO
(Should completely replace my code -- Matthieu)
(No, I shouldn't. Each function has each necessity.)
* When there are no changes anymore, the `g' command in the
*tla-changes* buffer just prints a message in the echo area, and
doesn't update the buffer, which can be confusing; it would be
better to erase the buffer and perhaps insert the "No changes"
description to make it clear what's going on (so work slightly
differently than `M-x tla-changes' invoked from another buffer -- in
that case, just a message is good).
=> tla-changes now clears the *tla-changes* buffer before doing
anything else.
* More diff-mode commands should be bound in the *tla-changes* buffer,
e.g., `P', and `N'; maybe it can just inherit from the diff-mode
keymap?
=> We are already inheriting from diff-mode. However, the way the keymap
is managed in diff-mode is really strange, and you're right,
we're not inheriting `N' and `P'. But still, diff-file-next is
available with M-N for example. Strange ...
=> initializing tla-changes-mode-map from diff-mode-shared-map
did it.
* It would be nice if the `g' command in a *tla-changes* buffer would
would retain any existing marks (I often want to check the changes
just one last time before committing).
* Perhaps when `tla-make-log-function' is non-nil, `tla-make-log' should
check the return value, and if nil, make a normal log file. That way
the user's special version can only worry about special cases.
=> I (Matthieu MOY) did something a bit different.
tla-make-log-function now defaults to
tla-default-make-log-function, which calls "tla make-log". The
user can just write a wrapper around this function.
* Wrapper for tla import.
- From the working directory, M-x tla-start-project RET should run
. tla init-tree
. tla import --setup
. call tla-edit-log
[Mark Triggs: This is pretty much what I have done, except I have
used tla-inventory instead of tla-edit-log.]
- From the archive browser, there should be an option to offer the
user to create a new project, as you can already create new empty
categories, branches, and versions.
* There could be a menu to navigate buffers based on the variable
tla--buffers-tree. This could also be included in tla-browse.el
using tree-widget.
=> pulldown/popup menu is implemented. Maybe enough -- Masatake.
* undo modifications in local copy at tla-inventory buffer
Matthieu gave hit in the mailing list:
What I meant by "undo" was
cp `tla file-find foo.c` .
* Run missing, replay and star-merge against specified version.
* Eliminate all occurence of tla--run-arch.
* If not in a project tree, `tla-changes' should prompt for the tree
name similar to tla-inventory -- often I'd rather start out with
`changes' and skip `inventory' entirely.
* Modeline : I'd like to see something like the "compiling" item in
the modeline while compiling with M-x compile RET.
* An interface to tla help, giving the list of commands, and running
"tla <command> -H" on demand.
* Create archives with --listing and/or --signed
* make tla-inventory-toggle-* customizable
M-x customize-variable RET tla-inventory-display-* RET
* After committing from a *tla-changes* buffer, it would be good to
automatically update the buffer, so there's a clear indication
what's changed.
* Better management of buffers. xtla buffers should have a unique name
based on the directory or archive to which it refers. It should be
possible to run several tla-{change|inventory|revisions|...} in
different trees. We should keep a list of xtla related buffer to be
able to delete them afterwards. (The current regexp-based algorithm
is not satisfying in my opinion)
=> The function is there : tla--get-buffer-create, and used for
tla-changes and tla-inventory. It's used by default by
tla--show-last-process-buffer and tla--show-error-buffer.
* Tree widget based archive browser. [see tla-browse.el. -- Masatake]
- Libraries should be handled here.
* C-u C-c C-m generates buggy summary line patch numbers.
* Allow cherry picking by marking a set of revisions in a *tla-revisions*
buffer and the run replay with all of the marked revisions as argument. I
(Robert) just had a case where I would need this, i.e. I have a hacking
branch with related revisions (but they are interleaved by others) which I
want to combine into a single change set for the main branch. "tla delta"
does not help here.
* tla-browse should be stronger against errors.
Currently, when an error occur, a tree becomes broken.
[Masatake]
* Should we do something for revision libraries ?
Yes [Masatake].
- Revisions should be marked in *tla-revisions*(done)
- Adding(done)
- tla-library-tree is needed(done).
* Interface to store a changeset to a file(tla changeset?) in revisions buffer.
[?> ?=] or [?d ?>]
* Interface to apply a changeset directory to a local copy in inventory buffer.
[?M ?=] or [?< ?=] but ?< is serverd for mirror.
* M-x tla-review-last-patch RET. See my recent post "Improving
tla-changes and related commands." on xtla-el-dev@gna.org.
(Matthieu)
=> finally, I've called it tla-changes-last-revision
* I (Matthieu) have added a variable tla-buffer-refresh-function and
a function tla-generic-refresh calling it. This could be used in
all xtla modes.
* Define xtla own faces. These faces should be
derived from font-lock's standard face set.
* Don't use a string to refer xtla's buffer. Instead use symbol.
e.g.
Don't use: (get-buffer-create "*tla-missing*")
Use: (cdr (assoc 'missing tla--buffer-type-alist))
* Handle file renaming in changes buffer. Here is the example output:
[jet@localhost symresolver]$ tla changes
* looking for jet@gyve.org--inspector/symresolver--prototype--0.0--patch-9 to compare with
* comparing to jet@gyve.org--inspector/symresolver--prototype--0.0--patch-9
M Makefile.am
=> .arch-ids/symresolver.c.id .arch-ids/lib.c.id
=> symresolver.c lib.c
`=>' should be parsed.
* Interface to add entries to .arch-inventory
* Switching "default tree version " in inventory buffer
* Don't do (concat file "/"). Do (file-name-as-directory file) instead.
** Check the faces on non X, terminal environment
=> [Matthieu] I use xtla most of the time in text mode, but I have
a rather much customized Emacs. I've just checked with emacs -q,
both in dark and light background.
* We should definitely switch to ewoc.el to manage lists. This is what
pcl-cvs, dired and so are using. We would get a lot of feature (in
particular, mouse reactivity) almost for free. The code for marking
revisions could also be really improved by this. I already did this
for the *tla-bookmarks* buffer (Matthieu MOY) and for
*tla-bookmarks-missing* and *tla-revisions*, it's fairly easy to
use.
* Name read engine
-- Integrate with other parts of xtla
--- Get completion from bookmarks
* Run lint under a dedicated mode, so the user can jump to the position
where the lint reports the problem is.
=> There is now a tla tree-lint mode. It's almost finished by now,
but still not well tested and incomplete (no context menu[done], ...)
** (Again) Check `cd' usage. Its changes the default-directory of current buffer.
Sometimes it will cause bugs. (let ((default-directory ...))) may be
enough in many cases. [Matthieu] Should be OK now.

View File

@ -1,348 +0,0 @@
* General
xmtn is an Emacs Lisp package that provides a DVC backend for monotone
(the distributed version control system) as well as general facilities
for interacting with monotone from Emacs Lisp.
For more information about monotone, see http://monotone.ca/ .
xmtn's facilities for interacting with monotone are meant to be
reusable by code that is unrelated to DVC, even though they currently
depend on the subprocess handling utilities that DVC provides.
xmtn should work on GNU Emacs 21 or newer. Work on supporting XEmacs
has started but is unfinished; patches welcome. On XEmacs, xmtn
requires MULE.
* Download and installation
Follow the download and installation instructions for DVC. xmtn is
part of DVC.
In addition, the variable `xmtn-executable' needs to point to the
monotone executable. It defaults to "mtn", which will be sufficient
if mtn is in your PATH. Depending on your configuration, the PATH
that Emacs sees can differ from the PATH that you see in your shell.
Try M-x getenv RET PATH RET if in doubt.
You may wish to set `dvc-debug' to nil; DVC tends to be a bit chatty.
* Brief tutorial
(DVC's tutorial does not apply to xmtn, it seems to be specific to
tla.)
Start Emacs. Visit a file that is under version control by monotone.
Modify the file. While in the file's buffer, press C-x V d to see the
diff for this file.
Pressing C-x V = will bring up the tree diff buffer. (What monotone
calls a "workspace" is called a "tree" in DVC.) This buffer shows the
list of all modified files in the tree as well as the diffs for those
files. Use j to jump back and forth between the name of a file in the
list and the diffs for that file. Use RET with point inside a diff
hunk to go to the corresponding file at the corresponding position.
Like many other DVC buffers, the contents of the tree diff buffer can
be refreshed using g.
In the tree diff buffer, files to commit can be marked and unmarked
with m and u. Pressing c lets you commit the selected files; it will
bring up a log edit buffer where you can enter a commit message.
In the log edit buffer, the commit can be executed by pressing C-c
C-c. To abort the commit, simply don't press C-c C-c -- just switch
away from the buffer or kill it. The log edit buffer edits the file
_MTN/log.
To bring up the log edit buffer without going through the tree diff
buffer, use C-x V c.
To view the revision history, use C-x V l or C-x V L. The former
shows the full commit message for each revision, while the latter only
shows the first line. The resulting buffer is a so-called revlist
buffer. In revlist buffers, use cursor up/down to move between
revisions, RET to show details on the revision at point, = to show its
diff from its parent. Revisions can be marked and unmarked with m and
u.
M-x xmtn-view-heads-revlist shows a revlist buffer with just the heads
of the default branch of your tree. To update your tree to one of the
revisions in a revlist buffer, move point to it and use M-x
xmtn-revlist-update. To merge two head revisions, mark them and use
M-x xmtn-revlist-explicit-merge.
M-x xmtn-view-revlist-for-selector prompts for a monotone selector and
shows a revlist buffer with all matching revisions.
C-x V u performs mtn update. C-x V m shows a revlist buffer with the
revisions that mtn update would apply to your tree.
C-x V f a performs mtn add. M-x dvc-ignore-files and M-x
dvc-ignore-file-extensions can be used to add entries to .mt-ignore.
These commands can also be used from dired buffers.
C-x V s shows the status buffer. This currently shows modified,
renamed and unknown files. It's supposed to allow operations like
diff, commit, revert etc. (like pcl-cvs), but that's not implemented
yet. C-x V = is preferable at the moment, although it doesn't show
unknown files.
C-x V a can be used to add a ChangeLog entry to _MTN/log.
There are other useful operations, but these should be enough to get
started.
* Known limitations
xmtn currently just bails out when it needs to operate on a head of a
branch and notices that the branch is unmerged. It should prompt the
user to select a head instead. To update to a head of an unmerged
revision graph, use M-x xmtn-view-heads-revlist and M-x
xmtn-revlist-update.
`xmtn-dvc-diff' breaks when called in a workspace that has no base
revision (e.g. a newly created project). mtn diff works in this case.
Building a revlist buffer is currently a bit slow (or maybe very slow
for long histories?), and the revlist display is not very pretty.
For `dvc-ignore-files' and `dvc-ignore-file-extensions', xmtn operates
on the file .mtn-ignore. This may fail to have the intended effect if
the user has customized monotone's ignore_file hook in a way that
changes the meaning of this file.
The ability to perform operations such as diff and commit from the
status buffer is missing. For now, use the tree diff buffer for this.
xmtn doesn't define any key bindings for monotone-specific commands.
Only the backend-independent key bindings defined by DVC are available.
For now, I don't see the point of checking automate interface_version:
Many of xmtn's operations rely on non-automate commands, so a
compatible automate interface_version doesn't guarantee actual
compatibility; we have to check for a compatible command version
anyway, and that check subsumes the check of interface_version. And
declaring incompatibility whenever we see an automate
interface_version that is too high for us yields false positives too
easily to be useful.
xmtn currently uses mtn automate get_revision in places where it
should be using mtn automate inventory. This is because I was trying
to avoid having to implement a parser for mtn automate inventory, and
get_revision seemed to return almost the same information. However,
get_revision fails if there are missing files -- I discovered this too
late. This is part of the reason why many operations first check
whether files are missing from the tree, and abort if this is the
case.
DVC REVISION-IDs that refer to the "Nth ancestor" such as `(xmtn
(last-revision ...))' or `(xmtn (previous-revision ...))' are
ill-defined for non-linear history in monotone. xmtn currently
throws an error when it encounters a node that has multiple parents
while trying to resolve such IDs.
The support for international character sets/coding systems is partly
based on guesswork but works for my tests.
xmtn does not entirely follow DVC's philosophy: It only implements
DVC's protocols, but doesn't provide its own UI that parallels DVC's.
Hence, much of xmtn's functionality is only available through DVC.
This is because xmtn currently provides only few features beyond what
DVC requires, and implementing a redundant UI was not a high priority
for me.
Currently, the following parts of the DVC protocol are not implemented
by xmtn:
* xmtn-dvc-send-commit-notification, xmtn-dvc-submit-patch: These
commands send an e-mail. Probably useful to people who use a
certain work flow, but not to me right now. These will have to
wait until someone comes along who actually has a use for them.
* xmtn-insinuate-gnus: Need to find out what, precisely, this is
supposed to do. I don't use Gnus myself.
* xmtn-dvc-save-diff: xhg seems to be the only backend that
implements this. It really seems this could be moved into the
common part of DVC anyway. Won't bother implementing it right
now.
* xmtn-dvc-pull: Should be easy. But syncing via command line is
acceptable to me at the moment. The docstring looks like this
needs to do both mtn pull and mtn update -- but I doubt that this
is a good idea for monotone.
* Internals
This section describes some of the internals of xmtn and some of the
design decisions behind it.
** Conventions
monotone.el (from montone's contrib/ directory) already uses the
prefix mtn-. monotone- is already taken by Wim Oudshoorn's e-monotone
package. So this package is named xmtn. xhg, xcg, xdarcs seem to be
in similar situations.
The prefix xmtn- is for definitions exported for the user or for DVC,
the prefix xmtn-- is for internal definitions. Similarly,
xmtn-automate uses xmtn-automate- and xmtn-automate--, etc.
It seems like "monotone" is usually written in small letters. The
manual capitalizes it at the beginnings of sentences, but e.g. the web
page or mtn --version never capitalize it at all -- then again, the
web page doesn't capitalize much at all. In xmtn, we capitalize it
like a noun. xmtn and mtn (as a command name) are always in lower
case.
Monotone uses the term "workspace", DVC uses the term "tree". In our
UI, we use "tree" for consistency with DVC. The idea behind this
decision was that consistency with DVC (and other aspects of Emacs'
UI) is more important than consistency with other monotone front-ends.
But I'm not so sure about this any more; the term "workspace" is so
much more clear... But I guess it makes little sense for version
control systems that don't distinguish between workspaces and
branches.
** Architecture
This section is unlikely to stay fully up-to-date as xmtn's
implementation evolves, but should remain useful as a general
introduction to xmtn's architecture.
xmtn consists of several modules. One way of understanding their
relationship is to group them into layers.
User-visible functionality: xmtn-dvc.el, xmtn-revlist.el
Domain-specific utilities: xmtn-ids.el
High-level interface to mtn: xmtn-automate.el, xmtn-basic-io.el
Low-level interface to mtn: xmtn-run.el
Monotone-related definitions: xmtn-base.el
Support libraries: xmtn-compat.el
Language extensions: xmtn-match.el
Each module should only depend on modules at layers beneath it. (At
least, that's the idea; the code might not satisfy this perfectly.)
xmtn-dvc.el implements the protocols required by DVC, except for
functionality related to interactive display and manipulation of
revision history, which is in xmtn-revlist.el.
xmtn-ids.el contains code to resolve symbolic revision ids in a
certain syntax to explicit hash ids. DVC needs this, but xmtn
provides some useful extensions. For example, a symbolic id `(xmtn
(previous-revision (previous-revision (revision
"75da2575dfc565f6976ed5dd1997bc7afc0ce908"))))' resolves to `(revision
"721c3ab9b5099d3ed7d8b807e08382f3c95badec")'; i.e. the parent of the
parent of revision 75da2575dfc565f6976ed5dd1997bc7afc0ce908 is
revision 721c3ab9b5099d3ed7d8b807e08382f3c95badec.
xmtn-automate.el and xmtn-basic-io.el implement an interface to
monotone's automate functionality and a parser for monotone's basic_io
output format. These modules aren't specific to DVC and should be
reusable by other Emacs Lisp code that wants to use monotone.
xmtn-run.el provides functions for running individual (non-automate)
monotone commands and checking the version of the monotone executable.
The functionality of xmtn-run.el isn't specific to DVC, either, but
its current implementation depends on DVC's process handling
functions, so it's fairly heavyweight.
xmtn-base.el was supposed to contain definitions related to monotone
that are common to xmtn-run.el, xmtn-automate.el and/or
xmtn-basic-io.el, to avoid having to have dependencies on xmtn-run.el
in xmtn-automate.el or xmtn-basic-io.el. This refactoring is not
complete (yet?), though.
xmtn-compat.el contains compatibility wrappers for some Emacs Lisp
functions that are not fully portable across Emacs versions.
xmtn-match.el provides a pattern-matching facility for Emacs Lisp that
is very useful for destructuring DVC REVISION-IDs and processing
basic_io stanzas the way xmtn-basic-io.el parses them. But it is
rather generic and could also be useful for code entirely unrelated to
montone and DVC.
There are a few automated regression tests in
lisp/tests/xmtn-tests.el.
** Implementation details
*** Futures
For some subprocess interactions, xmtn uses a concept called
"futures". In this context, a future is a concurrent computation
represented by a zero-argument anonymous function that, when called,
blocks until the concurrent computation finishes, and returns its
result.
For example, the function `xmtn--unknown-files-future' returns a
future for the list of unknown files instead of returning the list of
unknown files directly. This allows Emacs Lisp code to ask monotone
for the list of unknown files, but then do something different while
monotone computes the list. Only when Emacs actually needs the list
in order to continue, it calls the future and waits for monotone to
finish (if it hasn't finished already).
If a future is called a second time or more often, it will just keep
returning the same result. (What a future does if the concurrent
computation terminates unsuccessfully isn't currently very
well-defined. It should probably signal an error when it is called.)
Spawning computations in parallel has yielded tremendous speed-ups for
certain parts of xmtn (at least in some versions -- I haven't profiled
it recently). Futures make this type of parallelism simple to deal
with.
*** Notes on variable names and dynamic bindings
In higher-order functions (functions that take functions as
arguments), xmtn attempts to avoid introducing spurious dynamic
bindings because they might shadow bindings that the caller wants to
provide to the argument function. xmtn uses `lexical-let' for this
purpose. Unfortunately, function arguments are always dynamic
bindings in Emacs Lisp. That's why the argument names of higher-order
functions in xmtn always have the prefix xmtn-- and are immediately
re-bound to (pseudo-)lexical variables using `lexical-let'. This
makes it unlikely that the arguments will collide with the caller's
variables.
The alternative would be to always use `lexical-let' for bindings that
should be passed through higher-order functions to closures. This is
the most reliable approach, and xmtn also follows it. But errors
resulting from accidental violations of this convention can be very
hard to debug, so the above is still useful for additional safety.
LocalWords: DVC minibuffer UI montone xmtn revlist unmerged docstring backend
LocalWords: backends destructuring mtn

View File

@ -1,24 +0,0 @@
; -*- mode: emacs-lisp -*-
;;
;; Load DVC easily ...
;;
;; Manually, you can run
;;
;; M-x load-file RET /path/to/dvc-load.el RET
;;
;; (usefull when you want to load DVC after starting "emacs -q"!), or
;; add
;;
;; (load-file "/path/to/this/file/in/installdir/dvc-load.el")
;;
;; to your ~/.emacs.el
(add-to-list 'load-path "@lispdir@/")
(add-to-list 'Info-default-directory-list "@info_dir@")
(if (featurep 'dvc-core)
(dvc-reload)
(if (featurep 'xemacs)
(require 'auto-autoloads)
(require 'dvc-autoloads)))

View File

@ -1,26 +0,0 @@
; -*- mode: emacs-lisp -*-
;;
;; Load DVC easily ...
;;
;; Manually, you can run
;;
;; M-x load-file RET /path/to/dvc-load.el RET
;;
;; (usefull when you want to load DVC after starting "emacs -q"!), or
;; add
;;
;; (load-file "/path/to/this/file/in/builddir/dvc-load.el")
;;
;; to your ~/.emacs.el
(add-to-list 'load-path "@abs_top_builddir@/lisp")
(unless (locate-library "ewoc")
(add-to-list 'load-path "@abs_top_builddir@/lisp/contrib"))
(add-to-list 'Info-default-directory-list "@abs_top_builddir@/texinfo")
(if (featurep 'dvc-core)
(dvc-reload)
(if (featurep 'xemacs)
(require 'dvc-autoloads "@abs_top_builddir@/lisp/auto-autoloads.elc")
(require 'dvc-autoloads)))

View File

@ -1,251 +0,0 @@
#!/bin/sh
#
# install - install a program, script, or datafile
# This comes from X11R5 (mit/util/scripts/install.sh).
#
# Copyright 1991 by the Massachusetts Institute of Technology
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of M.I.T. not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission. M.I.T. makes no representations about the
# suitability of this software for any purpose. It is provided "as is"
# without express or implied warranty.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
transformbasename=""
transform_arg=""
instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
chowncmd=""
chgrpcmd=""
stripcmd=""
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=""
dst=""
dir_arg=""
while [ x"$1" != x ]; do
case $1 in
-c) instcmd="$cpprog"
shift
continue;;
-d) dir_arg=true
shift
continue;;
-m) chmodcmd="$chmodprog $2"
shift
shift
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
-s) stripcmd="$stripprog"
shift
continue;;
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
shift
continue;;
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
shift
continue;;
*) if [ x"$src" = x ]
then
src=$1
else
# this colon is to work around a 386BSD /bin/sh bug
:
dst=$1
fi
shift
continue;;
esac
done
if [ x"$src" = x ]
then
echo "install: no input file specified"
exit 1
else
true
fi
if [ x"$dir_arg" != x ]; then
dst=$src
src=""
if [ -d $dst ]; then
instcmd=:
chmodcmd=""
else
instcmd=mkdir
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if [ -f $src -o -d $src ]
then
true
else
echo "install: $src does not exist"
exit 1
fi
if [ x"$dst" = x ]
then
echo "install: no destination specified"
exit 1
else
true
fi
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
if [ -d $dst ]
then
dst="$dst"/`basename $src`
else
true
fi
fi
## this sed command emulates the dirname command
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# this part is taken from Noah Friedman's mkinstalldirs script
# Skip lots of stat calls in the usual case.
if [ ! -d "$dstdir" ]; then
defaultIFS='
'
IFS="${IFS-${defaultIFS}}"
oIFS="${IFS}"
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
IFS="${oIFS}"
pathcomp=''
while [ $# -ne 0 ] ; do
pathcomp="${pathcomp}${1}"
shift
if [ ! -d "${pathcomp}" ] ;
then
$mkdirprog "${pathcomp}"
else
true
fi
pathcomp="${pathcomp}/"
done
fi
if [ x"$dir_arg" != x ]
then
$doit $instcmd $dst &&
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
else
# If we're going to rename the final executable, determine the name now.
if [ x"$transformarg" = x ]
then
dstfile=`basename $dst`
else
dstfile=`basename $dst $transformbasename |
sed $transformarg`$transformbasename
fi
# don't allow the sed command to completely eliminate the filename
if [ x"$dstfile" = x ]
then
dstfile=`basename $dst`
else
true
fi
# Make a temp file name in the proper directory.
dsttmp=$dstdir/#inst.$$#
# Move or copy the file name to the temp name
$doit $instcmd $src $dsttmp &&
trap "rm -f ${dsttmp}" 0 &&
# and set any options; do chmod last to preserve setuid bits
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
# Now rename the file to the real destination.
$doit $rmcmd -f $dstdir/$dstfile &&
$doit $mvcmd $dsttmp $dstdir/$dstfile
fi &&
exit 0

View File

@ -1,97 +0,0 @@
@SET_MAKE@
PACKAGE_VERSION = @PACKAGE_VERSION@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
##############################################################################
# location of required programms
prefix = @prefix@
RM = @RM@
ETAGS = etags
MKDIR_P = @MKDIR_P@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
top_srcdir = @top_srcdir@
srcdir = @srcdir@
datarootdir= @datarootdir@
lispdir = @lispdir@
EMACS_PROG = @EMACS_PROG@
FLAGS = @FLAGS@
# Other settings
OTHERDIRS = @OTHERDIRS@
ebatch = srcdir=$(srcdir) otherdirs="$(OTHERDIRS)" \
$(EMACS_PROG) -batch -q $(FLAGS) -l $(srcdir)/dvc-build.el -f
alldeps = dvc-version.el dvc-site.el
all: $(alldeps)
$(ebatch) dvc-build-all
all-verbose: $(alldeps)
$(ebatch) dvc-build-all verbose
# We install foo.el only if there is also foo.elc.
install: all
$(MKDIR_P) -m 0755 "$(lispdir)"
@dlist='$(srcdir) $(srcdir)/contrib' ; \
test '$(srcdir)' = '.' || dlist=". $$dlist" ; \
for elc in *.elc ; do \
el=`echo $$elc | sed 's/.$$//'` ; orig= ; \
for d in $$dlist ; do \
if [ -r "$$d/$$el" ] ; then \
orig="$$d/$$el" ; break ; fi ; done ; \
test "$$orig" || continue ; \
echo Installing $$el ; \
$(INSTALL_DATA) "$$orig" "$(lispdir)" ; \
echo Installing $$elc ; \
$(INSTALL_DATA) $$elc "$(lispdir)" ; \
done
$(INSTALL_DATA) $(srcdir)/xmtn-hooks.lua $(lispdir)
clean:
rm -f *.elc dvc-site.el \
dvc-autoloads.el auto-autoloads.el custom-load.el
Makefile: $(srcdir)/Makefile.in ../config.status
cd ..; ./config.status
distclean: clean
rm -f Makefile
maintainer-clean:
rm -f dvc-version.el
TAGS: $(SRCS)
@if test "x$(ETAGS)" = "x" ; then \
echo "Sorry, no \`etags' program available." ; \
else \
$(ETAGS) */*.el ; \
fi
##############################################################################
autoloads:
$(ebatch) dvc-build-autoloads $(srcdir)
##############################################################################
dvc-version.el: ../config.status
@echo Creating $@
@( echo ';;; $@ (generated file -- do not edit!)' ; \
echo '(defconst dvc-version "$(PACKAGE_VERSION)"' ; \
echo ' "Version of DVC loaded.' ; \
echo 'Please send bug reports to <$(PACKAGE_BUGREPORT)>.")' ; \
echo "(provide 'dvc-version)" ) \
> $@
dvc-site.el: ../config.status $(srcdir)/dvc-site.el.in
(cd .. ; ./config.status lisp/$@)
.PHONY: all all-verbose install \
clean distclean maintainer-clean

View File

@ -1,54 +0,0 @@
;;; baz-dvc.el --- The dvc layer for baz
;; Copyright (C) 2005, 2007 by all contributors
;; Author: Stefan Reichoer, <stefan@xsteve.at>
;; Contributors: Matthieu Moy, <Matthieu.Moy@imag.fr>
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; This file provides the common dvc layer for baz support
(require 'baz)
(eval-and-compile (require 'dvc-unified))
;;;###autoload
(dvc-register-dvc 'baz "Bazaar 1")
(defalias 'baz-dvc-tree-root 'baz-tree-root)
(defun baz-dvc-diff (base-rev path dont-switch)
(baz-changes nil base-rev))
(defalias 'baz-dvc-file-diff 'baz-file-diff)
(defalias 'baz-dvc-log-edit 'tla-dvc-log-edit)
(defun baz-dvc-add (file)
(baz-add nil file))
(defun baz-dvc-log (arg last-n)
"Shows the changelog in the current Arch tree."
(baz-logs))
(defun baz-dvc-search-file-in-diff (file)
(re-search-forward (concat "^\\+\\+\\+ mod/" file "$")))
(defalias 'baz-dvc-name-construct 'baz--name-construct)
(defun baz-dvc-revision-direct-ancestor (revision)
`(baz (revision ,(baz-revision-direct-ancestor (cadr (cadr revision))))))
(defun baz-dvc-log-edit-file-name-func ()
(baz-make-log))
;;;###autoload
(defalias 'baz-dvc-command-version 'baz-command-version)
(provide 'baz-dvc)
;;; baz-dvc.el ends here

View File

@ -1,337 +0,0 @@
;;; baz.el --- baz related code for dvc
;; Copyright (C) 2005-2007 Free Software Foundation, Inc.
;; Author: Matthieu Moy <Matthieu.Moy@imag.fr>
;; Keywords:
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;;
;;; Code:
;;;###autoload
(progn
(defvar baz-tla-only-commands '(tla-tag)
"List of commands available only with tla.")
(defun baz-make-alias-for-tla-commands ()
"Creates baz- aliases for tla- commands.
For each commands beginning with \"tla-\", except the ones in
`baz-tla-only-list', create the corresponding \"baz-\" alias.
Most functions in tla*.el are prefixed with tla-, but this allows you to
type M-x baz-whatever RET instead. Some functions are available only
with baz. They're prefixed with baz- and have no alias."
(interactive)
(dolist (tla-cmd (apropos-internal "^tla-" 'commandp))
(unless (member tla-cmd baz-tla-only-commands)
(let* ((tla-cmd-post (substring (symbol-name tla-cmd) 4))
(baz-cmd (intern (concat "baz-" tla-cmd-post))))
(unless (or (fboundp baz-cmd)
(string-match "^dvc" tla-cmd-post))
(defalias baz-cmd tla-cmd))))))
(baz-make-alias-for-tla-commands)
;; baz--name-construct is used in baz-dvc.el
(eval-after-load "tla"
'(progn (defalias 'baz--name-construct 'tla--name-construct) (baz-make-alias-for-tla-commands))))
(require 'tla)
;;;###autoload
(defun baz-branch (source-revision tag-version &optional cacherev synchronously)
"Create a tag from SOURCE-REVISION to TAG-VERSION.
Run baz branch.
If SYNCHRONOUSLY is non-nil, the process for tagging runs synchronously.
Else it runs asynchronously."
(interactive
(list (unless (y-or-n-p "Branch from local tree? ")
(tla--name-construct
(tla-name-read "Source revision (or version): "
'prompt 'prompt 'prompt 'prompt 'maybe)))
(tla--name-construct
(tla-name-read "New branch: "
'prompt 'prompt 'prompt 'prompt))
(tla--tag-does-cacherev)
nil))
(funcall (if synchronously 'tla--run-tla-sync 'tla--run-tla-async)
(list "branch"
(when (not cacherev) "--no-cacherev")
source-revision tag-version)))
;;;###autoload
(defun baz-status-goto (&optional root against)
"Switch to status buffer or run `baz-dvc-status'."
(interactive (list (dvc-read-project-tree-maybe
(format "Run %s in: "
(tla--changes-command)))
current-prefix-arg))
(unless (tla-has-status-command)
(error "status not available with this arch branch"))
(let* ((default-directory root)
(buffer (dvc-get-buffer 'status default-directory)))
(if buffer
(dvc-switch-to-buffer buffer)
(baz-dvc-status))))
(defun baz-dvc-status ()
"Run \"baz status\" in `default-directory', which must be a tree root.
Doesn't work with tla. Use `tla-changes' or `tla-tree-lint'
instead."
(unless (tla-has-status-command)
(error "status not available with this arch branch"))
(let* ((root default-directory)
(buffer (dvc-prepare-changes-buffer
(list 'last-revision root)
(list 'local-tree root)
'status
default-directory 'baz)))
(when dvc-switch-to-buffer-first
(dvc-switch-to-buffer buffer))
(with-current-buffer buffer
(let ((inhibit-read-only t))
(ewoc-enter-first
dvc-fileinfo-ewoc
(make-dvc-fileinfo-message
:text (concat "* Running baz status in tree " root
"...\n\n")))
(ewoc-enter-last dvc-fileinfo-ewoc
(make-dvc-fileinfo-legacy :data (list 'searching-subtrees)))
(ewoc-refresh dvc-fileinfo-ewoc)))
(dvc-save-some-buffers)
(baz--status-internal root buffer nil)
(tla--run-tla-async
'("inventory" "--nested" "--trees")
:related-buffer buffer
:finished
(lexical-let ((buffer-lex buffer))
(lambda (output error status arguments)
(let ((subtrees (delete ""
(split-string
(with-current-buffer
output (buffer-string)) "\n"))))
(with-current-buffer buffer-lex
(let ((subtree-message (car (tla--changes-find-subtree-message))))
(dolist (subtree subtrees)
(let ((buffer-sub (dvc-get-buffer-create
'status subtree)))
(with-current-buffer buffer-sub
(let ((inhibit-read-only t))
(erase-buffer))
(dvc-diff-mode)
(set (make-local-variable
'tla--changes-buffer-master-buffer)
buffer-lex))
(ewoc-enter-after dvc-fileinfo-ewoc
subtree-message
(make-dvc-fileinfo-legacy
:data (list 'subtree buffer-sub subtree
nil)))
(baz--status-internal
subtree
buffer-sub
buffer-lex)))
(dvc-ewoc-delete dvc-fileinfo-ewoc subtree-message))
(recenter))))))))
(defun baz--status-error-handle (output error status arguments root
buffer master-buffer)
"Handler for error in \"baz status\"."
(if (with-current-buffer error
(goto-char (point-min))
(looking-at "^Tree is not lint clean"))
(let ((buffer (tla--tree-lint-prepare-buffer
root
(lexical-let ((root-lex root) (buffer-lex buffer) (master-buffer-lex
master-buffer))
(lambda ()
(baz--status-internal root-lex buffer-lex
master-buffer-lex)
(switch-to-buffer buffer-lex))))))
(message "Tree is not lint clean")
(save-excursion
(tla--tree-lint-parse-buffer output buffer))
(with-current-buffer buffer
(tla--tree-lint-cursor-goto
(ewoc-nth tla--tree-lint-cookie 0)))
(switch-to-buffer buffer))
(dvc-show-changes-buffer output 'tla--parse-baz-status buffer
master-buffer "^[^*\\.]")
(with-current-buffer buffer
(setq dvc-buffer-refresh-function 'baz-dvc-status))
(when master-buffer
(with-current-buffer master-buffer
(ewoc-map (lambda (fi)
(let ((x (dvc-fileinfo-legacy-data fi)))
(when (and (eq (car x) 'subtree)
(eq (cadr x) buffer))
(setcar (cdddr x) 'changes)))
)
dvc-fileinfo-ewoc)))))
(defun baz--status-internal (root buffer master-buffer)
"Internal function to run \"baz status\".
Run the command in directory ROOT.
The output will be displayed in buffer BUFFER.
BUFFER must already be in changes mode, but mustn't contain any change
information. Only roots of subprojects are already in the ewoc.
If MASTER-BUFFER is non-nil, this run of tla changes is done in a
nested project of a bigger one. MASTER-BUFFER is the buffer in which
the root of the projects is displayed."
(with-current-buffer buffer
(tla--run-tla-async
`("status")
:finished
(lexical-let ((root-lex root) (buffer-lex buffer) (master-buffer-lex
master-buffer)
(-current-buffer--lex (current-buffer)))
(lambda (output error status arguments)
(if (with-current-buffer output
(goto-char (point-min))
(re-search-forward
tla--files-conflicted-regexp nil t))
(baz--status-error-handle
output error status arguments root-lex buffer-lex
master-buffer-lex)
(if master-buffer-lex
(message "No changes in subtree %s" root-lex)
(message "No changes in %s" root-lex))
(with-current-buffer -current-buffer--lex
(let ((inhibit-read-only t))
(dvc-fileinfo-delete-messages)
(ewoc-enter-last
dvc-fileinfo-ewoc
(make-dvc-fileinfo-message
:text (concat "* No changes in "
root-lex ".\n\n")))
(when master-buffer-lex
(with-current-buffer master-buffer-lex
(ewoc-map (lambda (fi)
(let ((x (dvc-fileinfo-legacy-data fi)))
(when (and (eq (car x) 'subtree)
(eq (cadr x) buffer-lex))
(setcar (cdddr x) 'no-changes)))
)
dvc-fileinfo-ewoc)))
(ewoc-refresh dvc-fileinfo-ewoc))))))
:error
(lexical-let ((root-lex root) (buffer-lex buffer) (master-buffer-lex
master-buffer))
(lambda (output error status arguments)
(baz--status-error-handle
output error status arguments root-lex buffer-lex master-buffer-lex)))
)))
;;;###autoload
(defalias 'baz-merge 'tla-star-merge)
;;;###autoload
(defun baz-annotate (file)
"Run \"baz annotate\" on FILE.
Shows the result in a buffer, and create an annotation table for the
annotated file's buffer. This allows you to run `baz-trace-line' and
`baz-trace-line-show-log'."
(interactive (list (read-file-name "Annotate file: "
nil nil t
(file-name-nondirectory
(or (buffer-file-name) "")))))
(let ((file (expand-file-name file))
(buffer (get-file-buffer file)))
(with-current-buffer buffer
(when (or (not (buffer-modified-p))
(y-or-n-p (concat "Save buffer "
(buffer-name buffer)
"? ")))
(save-buffer buffer))
(find-file-noselect file)
(let* ((default-directory (tla-tree-root file))
(buffer (dvc-get-buffer-create tla-arch-branch 'annotate)))
(when dvc-switch-to-buffer-first
(dvc-switch-to-buffer buffer))
(tla--run-tla-async
`("annotate"
,(tla-file-name-relative-to-root file))
:finished (lexical-let ((buffer-lex buffer) (file-lex file))
(lambda (output error status arguments)
(with-current-buffer buffer-lex
(erase-buffer)
(insert-buffer-substring output))
(tla-annotate-mode)
(baz-parse-annotate
output
(find-buffer-visiting file-lex))))
:error
(lambda (output error status arguments)
(dvc-show-error-buffer error)
(dvc-show-last-process-buffer)))))))
(defvar tla-annotation-table nil
"table line-number -> revision built by `baz-parse-annotate'.")
(defun baz-parse-annotate (annotate-buffer buffer)
"Builds a table line-number -> revision from ANNOTATE-BUFFER.
ANNOTATE-BUFFER must be the output of \"baz annotate\", and BUFFER is
the corresponding source buffer."
(set-buffer annotate-buffer)
(goto-char (point-min))
(re-search-forward "^[^ ]*:")
(beginning-of-line)
(let* ((nb-lines (1+ (count-lines (point)
(point-max))))
(table (make-vector nb-lines ""))
(n 0))
(while (looking-at "^\\([^ ]*\\):")
(aset table n (match-string 1))
(setq n (1+ n))
(forward-line 1))
(with-current-buffer buffer
(set (make-local-variable 'tla-annotation-table)
table))
))
(defun baz-trace-line (line buffer)
"Returns the changeset that lead to LINE in FILE."
(interactive (list (count-lines (point-min) (point))
(current-buffer)))
(unless tla-annotation-table
(error "No annotate table in buffer. Run baz-annotate first."))
(with-current-buffer buffer
(let ((changeset (aref tla-annotation-table line)))
(when (interactive-p)
(message changeset))
changeset)))
(defun baz-trace-line-show-log (line buffer)
"Show the log of the changeset that lead to LINE in FILE."
(interactive (list (count-lines (point-min) (point))
(current-buffer)))
(tla-cat-log (baz-trace-line line buffer)))
(provide 'baz)
;;; baz.el ends here

View File

@ -1,98 +0,0 @@
;;; bzr-core.el --- Core of support for Bazaar 2 in DVC
;; Copyright (C) 2005-2008 by all contributors
;; Author: Matthieu Moy <Matthieu.Moy@imag.fr>
;; Contributions from:
;; Stefan Reichoer, <stefan@xsteve.at>
;; Keywords: tools, vc
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;;
;;; Code:
;; TODO autoconf stuff.
(defvar bzr-executable (if (eq system-type 'windows-nt) "bzr.bat" "bzr")
"The executable used for the bzr command line client")
;;;###autoload
(defun bzr-tree-root (&optional location no-error interactive)
"Return the tree root for LOCATION, nil if not in a local tree.
Computation is done from withing Emacs, by looking at a .bzr/
directory in a parent buffer of LOCATION. This is therefore very
fast.
If NO-ERROR is non-nil, don't raise an error if LOCATION is not a
bzr-managed tree (but return nil)."
(interactive)
(dvc-tree-root-helper ".bzr/checkout/" (or interactive
(interactive-p))
"%S is not a bzr-managed tree"
location no-error))
;;;###autoload
(defun bzr-branch-root (&optional location no-error interactive)
"Return the branch root for LOCATION, nil if not in a branch.
This function allows DVC relevant functions (e.g., log) to work
on bzr branches with no tree."
(interactive)
(dvc-tree-root-helper ".bzr/branch/" (or interactive
(interactive-p))
"%S is not a bzr-managed branch"
location no-error))
;;;###autoload
(defun bzr-tree-id ()
"Call \"bzr log -r 1\" to get the tree-id.
Does anyone know of a better way to get this info?"
(interactive)
(let ((tree-id nil))
(dvc-run-dvc-sync
'bzr (list "log" "-r" "1")
:finished (lambda (output error status arguments)
(set-buffer output)
(goto-char (point-min))
(if (re-search-forward "^branch nick:\\s-*\\(.+\\)$" nil t)
(setq tree-id (match-string 1))
(setq tree-id "<unknown>")))
:error (lambda (output error status arguments)
(setq tree-id "<unknown>")))
(when (interactive-p)
(message "tree-id for %s: %s" default-directory tree-id))
tree-id))
;;;###autoload
(defun bzr-prepare-environment (env)
"Prepare the environment to run bzr."
(cons "BZR_PROGRESS_BAR=none" env))
;;;###autoload
(defun bzr-default-global-argument ()
"Disable aliases."
'("--no-aliases"))
(defun bzr-read-revision (prompt)
"Read a revision for the actual bzr working copy."
(read-string prompt (bzr-get-revision-at-point)))
(provide 'bzr-core)
;;; bzr-core.el ends here

View File

@ -1,135 +0,0 @@
;;; bzr-dvc.el --- Support for Bazaar 2 in DVC's unification layer
;; Copyright (C) 2005-2008 by all contributors
;; Author: Matthieu Moy <Matthieu.Moy@imag.fr>
;; Contributions from:
;; Stefan Reichoer, <stefan@xsteve.at>
;; Keywords: tools
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;;
;;; Code:
(eval-and-compile (require 'dvc-unified))
(require 'bzr)
;;;###autoload
(dvc-register-dvc 'bzr "Bazaar 2")
;;;###autoload
(defalias 'bzr-dvc-init 'bzr-init)
;;;###autoload
(defalias 'bzr-dvc-inventory 'bzr-inventory)
;;;###autoload
(defalias 'bzr-dvc-pull 'bzr-pull)
;;;###autoload
(defalias 'bzr-dvc-push 'bzr-push)
;;;###autoload
(defalias 'bzr-dvc-merge 'bzr-merge)
;;;###autoload
(defalias 'bzr-dvc-submit-patch 'bzr-submit-patch)
;;;###autoload
(defalias 'bzr-dvc-add 'bzr-add)
;;;###autoload
(defalias 'bzr-dvc-log-edit-done 'bzr-log-edit-done)
;;;###autoload
(defun bzr-dvc-search-file-in-diff (file)
(re-search-forward (concat "^=== .* '" file "'$")))
;;;###autoload
(defun bzr-dvc-name-construct (back-end-revision)
(nth 1 back-end-revision))
;;;###autoload
(defvar bzr-log-edit-file-name ".tmp-bzr-log-edit.txt"
"The filename, used to store the log message before commiting.
Usually that file is placed in the tree-root of the working tree.")
(add-to-list 'auto-mode-alist `(,(concat "^" (regexp-quote bzr-log-edit-file-name)
"$") . bzr-log-edit-mode))
;;;###autoload
(defalias 'bzr-dvc-command-version 'bzr-command-version)
(defalias 'bzr-dvc-revision-nth-ancestor 'bzr-revision-nth-ancestor)
(defalias 'bzr-dvc-log 'bzr-log)
;;;###autoload
(defalias 'bzr-dvc-save-diff 'bzr-save-diff)
(defalias 'bzr-dvc-changelog 'bzr-changelog)
(defun bzr-dvc-update ()
(interactive)
(bzr-update nil))
(defun bzr-dvc-edit-ignore-files ()
(interactive)
(find-file-other-window (concat (bzr-tree-root) ".bzrignore")))
(defun bzr-dvc-ignore-files (file-list)
(interactive (list (dvc-current-file-list)))
(when (y-or-n-p (format "Ignore %S for %s? " file-list (bzr-tree-root)))
(dolist (f-name file-list)
(bzr-ignore (format "./%s" f-name)))))
(defun bzr-dvc-backend-ignore-file-extensions (extension-list)
(dolist (ext-name extension-list)
(bzr-ignore (format "*.%s" ext-name))))
(autoload 'bzr-revlog-get-revision "bzr-revlog")
(defalias 'bzr-dvc-revlog-get-revision
'bzr-revlog-get-revision)
(defalias 'bzr-dvc-delta 'bzr-delta)
(defalias 'bzr-dvc-send-commit-notification 'bzr-send-commit-notification)
(defalias 'bzr-dvc-prepare-environment 'bzr-prepare-environment)
(defalias 'bzr-dvc-file-has-conflict-p 'bzr-file-has-conflict-p)
(defalias 'bzr-dvc-resolved 'bzr-resolved)
(defalias 'bzr-dvc-annotate-time 'bzr-annotate-time)
(defalias 'bzr-dvc-clone 'bzr-checkout)
(defalias 'bzr-dvc-export-via-email 'bzr-export-via-email)
(defun bzr-dvc-diff-against-url (path)
(let ((buffer (dvc-prepare-changes-buffer
nil
path
'diff default-directory 'bzr)))
(dvc-switch-to-buffer-maybe buffer)
(message "Running bzr merge --preview %s" path)
(dvc-run-dvc-async 'bzr (list "merge" "--preview" "--force" path)
:finished
(dvc-capturing-lambda (output error status arguments)
(dvc-show-changes-buffer output 'bzr-parse-diff
(capture buffer))))))
(provide 'bzr-dvc)
;;; bzr-dvc.el ends here

View File

@ -1,158 +0,0 @@
;;; bzr-gnus.el --- bzr dvc integration to gnus
;; Copyright (C) 2008 by all contributors
;; Author: Stefan Reichoer <stefan@xsteve.at>
;; DVC is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; DVC is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; gnus is optional. Load it at compile-time to avoid warnings.
(eval-when-compile
(condition-case nil
(progn
(require 'gnus)
(require 'gnus-art)
(require 'gnus-sum))
(error nil)))
;;;###autoload
(defun bzr-insinuate-gnus ()
"Integrate bzr into Gnus."
(interactive)
;; there is nothing special to do yet...
)
(defun bzr-gnus-article-view-patch (n)
"View MIME part N in a gnus article, as a bzr changeset.
The patch can be embedded or external. If external, the
parameter N is ignored."
(interactive)
(let ((num-of-mime-parts
(save-window-excursion
(gnus-summary-select-article-buffer)
(gnus-article-mime-total-parts))))
(if (> num-of-mime-parts 1)
(bzr-gnus-article-view-attached-patch 2)
(bzr-gnus-article-view-external-patch))))
(defun bzr-gnus-article-view-attached-patch (n)
"View MIME part N, as bzr patchset."
(interactive "p")
(error "bzr-gnus-article-view-attached-patch not yet implemented"))
(defun bzr-gnus-article-view-external-patch ()
"View an external patch that is referenced in this mail.
The mail must contain a line starting with 'Committed revision ' and ending
with the branch location."
(interactive)
(let ((revnr)
(archive-location)
(diff-buffer)
(window-conf (current-window-configuration)))
(gnus-summary-select-article-buffer)
(split-window-vertically)
(goto-char (point-min))
;; Committed revision 129 to http://my-arch.org/branch1
(when (re-search-forward "Committed revision \\([0-9]+\\) to \\(.+\\)$" nil t)
(setq revnr (match-string-no-properties 1))
(setq archive-location (match-string-no-properties 2)))
(gnus-article-show-summary)
(if (and revnr archive-location)
(progn
(message "Viewing bzr revison: %s, location: %s" revnr archive-location)
;; bzr diff -r128..129 http://my-arch.org/branch1
;; Note: this command needs at least bzr v1.1
(setq diff-buffer
(bzr-delta `(bzr (revision (local "" ,(- (string-to-number revnr) 1))))
`(bzr (revision (local "" ,(string-to-number revnr))))
nil
archive-location))
(save-excursion
(set-buffer diff-buffer)
(dvc-buffer-push-previous-window-config window-conf)))
(message "No external bzr patch found in this article.")
(set-window-configuration window-conf))))
(defun bzr-gnus-article-merge-bundle (n)
"Merge MIME part N, as bzr merge bundle."
(interactive "p")
(unless current-prefix-arg
(setq n 2))
(gnus-article-part-wrapper n 'bzr-gnus-merge-bundle))
(defvar bzr-merge-bundle-mapping nil
"*Project in which bzr bundles should be applied.
An alist of rules to map email addresses to target directories.
This is used by the `bzr-gnus-merge-bundle' function.
Example setting: '((\"dvc-dev@gna.org\" \"~/work/bzr/dvc\"))"
)
;; e.g.: (setq bzr-merge-bundle-mapping '(("dvc-dev@gna.org" "~/work/bzr/dvc")))
(defun bzr-gnus-merge-bundle (handle)
"Merge a bzr merge bundle via gnus. HANDLE should be the handle of the part."
(let ((patch-file-name (concat (dvc-make-temp-name "gnus-bzr-merge-") ".patch"))
(window-conf (current-window-configuration))
(to-addr (message-fetch-field "To"))
(import-dir))
(gnus-summary-select-article-buffer)
(dvc-gnus-article-extract-log-message)
(mm-save-part-to-file handle patch-file-name)
(dolist (m bzr-merge-bundle-mapping)
(when (string-match (regexp-quote (car m)) to-addr)
(setq import-dir (dvc-uniquify-file-name (cadr m)))))
(delete-other-windows)
(dvc-buffer-push-previous-window-config)
(find-file patch-file-name)
(setq import-dir (dvc-read-directory-name "Merge bzr bundle to: " nil nil t import-dir))
(when import-dir
(let ((default-directory import-dir))
(bzr-merge-bundle patch-file-name)))
(delete-file patch-file-name)
(kill-buffer (current-buffer)) ;; the patch file
(set-window-configuration window-conf)
(when (and import-dir (y-or-n-p "Run bzr status in merged tree? "))
(let ((default-directory import-dir))
(bzr-status)
(delete-other-windows)))))
(defun bzr-gnus-article-pull-bundle-in-branch (n)
"Merge MIME part N, as bzr merge bundle."
(interactive "p")
(unless current-prefix-arg
(setq n 2))
(gnus-article-part-wrapper n 'bzr-gnus-pull-bundle-in-branch))
(defun bzr-gnus-pull-bundle-in-branch (handle)
"Merge a bzr merge bundle via gnus. HANDLE should be the handle of the part."
(let ((patch-file-name (concat (dvc-make-temp-name "gnus-bzr-pull-bundle-") ".patch"))
(window-conf (current-window-configuration))
(to-addr (message-fetch-field "To"))
(import-dir))
(gnus-summary-select-article-buffer)
(dvc-gnus-article-extract-log-message)
(mm-save-part-to-file handle patch-file-name)
(message "bzr-gnus-pull-bundle-in-branch: implementation not finished (saved patch to %s)" patch-file-name)))
(provide 'bzr-gnus)
;;; bzr-gnus.el ends here

View File

@ -1,221 +0,0 @@
;;; bzr-revision.el --- Management of revision lists in bzr
;; Copyright (C) 2006 - 2008 by all contributors
;; Author: Matthieu Moy <Matthieu.Moy@imag.fr>
;; Contributions from:
;; Stefan Reichoer, <stefan@xsteve.at>
;; Keywords:
;; DVC is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; DVC is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;;
;;; Code:
(require 'dvc-revlist)
(eval-when-compile (require 'cl))
(defstruct (bzr-revision-st)
revno
message
creator
branch-nick
date
merges
)
;; bzr revision list
(defun bzr-revision-list-entry-patch-printer (elem)
"TODO"
(insert (if (dvc-revlist-entry-patch-marked elem)
(concat " " dvc-mark " ") " "))
(let ((struct (dvc-revlist-entry-patch-struct elem)))
(insert (dvc-face-add "revno: " 'dvc-header)
(dvc-face-add (int-to-string (or (bzr-revision-st-revno struct) -99))
'dvc-revision-name)
"\n")
(when dvc-revisions-shows-creator
(insert " " (dvc-face-add "committer: " 'dvc-header)
(or (bzr-revision-st-creator struct) "?") "\n"))
(when dvc-revisions-shows-date
(insert " " (dvc-face-add "timestamp: " 'dvc-header)
(or (bzr-revision-st-date struct) "?") "\n"))
(insert " " (dvc-face-add "branch nick: " 'dvc-header)
(or (bzr-revision-st-branch-nick struct) "?") "\n")
(when dvc-revisions-shows-summary
(insert " " (dvc-face-add "message: " 'dvc-header)
(or (bzr-revision-st-message struct) "?") "\n"))
))
;;; bzr log
(defun bzr-log-parse-remote (log-buffer location)
(bzr-log-parse log-buffer location t))
(defun bzr-missing-parse (log-buffer location)
"Parse the output of bzr missing."
(bzr-log-parse log-buffer location nil t))
(defun bzr-log-parse (log-buffer location &optional remote missing)
"Parse the output of bzr log."
;;(dvc-trace "location=%S" location)
(goto-char (point-min))
(let ((root location)
(intro-string)
(brief (with-current-buffer log-buffer dvc-revlist-brief)))
(when missing ;; skip the first status output
(unless (re-search-forward "^------------------------------------------------------------$" nil t)
(message "No missing revisions: Branches are up to date.")
(goto-char (point-max)))
(setq intro-string (buffer-substring-no-properties (point-min) (point)))
(with-current-buffer log-buffer
(let ((buffer-read-only nil))
(insert intro-string))))
(while (> (point-max) (point))
(forward-line 1)
(let ((start (point))
(message-start-pos)
(message-end-pos)
(elem (make-bzr-revision-st)))
(or (and (re-search-forward
"^------------------------------------------------------------$"
nil t)
(progn (beginning-of-line)
t))
(goto-char (point-max)))
(save-restriction
(save-excursion
(narrow-to-region start (- (point) 1))
;;(dvc-trace "parsing %S" (buffer-string))
(goto-char (point-min))
(while (re-search-forward "^\\([a-z][a-z ]*[a-z]\\):\\( \\|\n\\)" nil t)
;;(dvc-trace "match-string=%S" (match-string 1))
(cond ((string= (match-string 1) "revno")
(setf (bzr-revision-st-revno elem)
(string-to-number
(buffer-substring-no-properties
(point) (line-end-position)))))
((string= (match-string 1) "committer")
(setf (bzr-revision-st-creator elem)
(buffer-substring-no-properties
(point) (line-end-position))))
((string= (match-string 1) "branch nick")
(setf (bzr-revision-st-branch-nick elem)
(buffer-substring-no-properties
(point) (line-end-position))))
((string= (match-string 1) "timestamp")
(setf (bzr-revision-st-date elem)
(buffer-substring-no-properties
(point) (line-end-position))))
((string= (match-string 1) "message")
;;(dvc-trace "found message")
(re-search-forward "^[ \t]*")
(setq message-start-pos (point))
(setq message-end-pos
(if brief
(line-end-position)
(if (re-search-forward "^--------" nil t) (point) (point-max))))
(setf (bzr-revision-st-message elem)
(buffer-substring-no-properties
message-start-pos message-end-pos))
(goto-char (point-max)))
(t (dvc-trace "unmanaged field %S" (match-string 1))))
(forward-line 1)
(beginning-of-line))))
(forward-line 1)
(with-current-buffer log-buffer
(ewoc-enter-last
dvc-revlist-cookie
`(entry-patch
,(make-dvc-revlist-entry-patch
:dvc 'bzr
:struct elem
:rev-id `(bzr (revision
,(list (if remote 'remote 'local)
root (bzr-revision-st-revno
elem)))))))
(goto-char (point-min))
(dvc-revision-prev))))))
(defun bzr-log-refresh ()
"Refresh a log buffer."
(let ((cmd (remove
nil
(append
(list "log")
(if dvc-revlist-last-n
(list "-r" (format "last:%d.." dvc-revlist-last-n)))
(list dvc-revlist-path)))))
(dvc-build-revision-list
'bzr 'alog default-directory cmd 'bzr-log-parse
dvc-revlist-brief dvc-revlist-last-n dvc-revlist-path
'bzr-log-refresh))
(goto-char (point-min)))
;;;###autoload
(defun bzr-log (path last-n)
"Run bzr log for PATH and show only the first line of the log message.
LAST-N revisions are shown (default dvc-log-last-n). Note that the
LAST-N restriction is applied first, so if both PATH and LAST-N are
specified, fewer than LAST-N revisions may be shown."
(interactive (list default-directory (if current-prefix-arg (prefix-numeric-value current-prefix-arg) dvc-log-last-n)))
(let ((default-directory (bzr-branch-root (or path default-directory)))
(dvc-revlist-path path)
(dvc-revlist-brief t)
(dvc-revlist-last-n last-n))
(bzr-log-refresh)))
;;;###autoload
(defun bzr-log-remote (location)
"Run bzr log against a remote location."
(interactive (list (read-string "Location of the branch: ")))
(dvc-build-revision-list 'bzr 'remote-log location `("log" ,location)
'bzr-log-parse-remote t nil nil
(dvc-capturing-lambda ()
(bzr-log-remote (capture location))))
(goto-char (point-min)))
;;;###autoload
(defun bzr-changelog (&optional path)
"Run bzr log and show the full log message."
(interactive (list default-directory))
(let ((default-directory (bzr-branch-root (or path default-directory))))
(dvc-build-revision-list 'bzr 'alog default-directory '("log") 'bzr-log-parse nil nil path
(dvc-capturing-lambda ()
(bzr-changelog (capture path))))
(goto-char (point-min))))
;;;###autoload
(defun bzr-dvc-missing (&optional other)
"Run bzr missing."
(interactive "sBzr missing against other: ")
(when (string= other "")
(setq other nil))
;;(message "bzr-dvc-missing %S" other)
(dvc-build-revision-list 'bzr 'missing (bzr-tree-root)
`("missing" ,other)
'bzr-missing-parse
nil nil nil
(dvc-capturing-lambda ()
(bzr-dvc-missing (capture other))))
(goto-char (point-min)))
(provide 'bzr-revision)
;;; bzr-revision.el ends here

View File

@ -1,69 +0,0 @@
;;; bzr-revlog.el --- Show a log entry for a bzr branch
;; Copyright (C) 2006 by all contributors
;; Author: Matthieu Moy <Matthieu.Moy@imag.fr>
;; Keywords:
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;;
;;; Code:
(require 'dvc-core)
(require 'dvc-revlog)
(defun bzr-revlog-local (revno &optional path)
"Quick and dirty prototype of function using dvc-revlog-mode."
(interactive "MRevno: ")
(let ((default-directory (or path default-directory)))
(dvc-run-dvc-async 'bzr `("log"
"-r"
,revno)
:finished
(dvc-capturing-lambda (output error status
arguments)
(dvc-switch-to-buffer
(dvc-revlog-show-revision 'bzr output
(capture revno)))))))
(defun bzr-revlog-get-revision (rev-id)
(let ((data (car (dvc-revision-get-data rev-id))))
(dvc-trace "dd=%S" default-directory)
(dvc-trace "data=%S" data)
(cond ((eq (car data) 'local)
(let ((default-directory (nth 1 data)))
(dvc-run-dvc-sync 'bzr
`("log" "--revision"
,(int-to-string (nth 2 data)))
:finished 'dvc-output-buffer-handler)))
((eq (car data) 'remote)
(dvc-run-dvc-sync 'bzr
`("log" "--revision"
,(concat "revno:"
(int-to-string (nth 2 data))
":"
(nth 1 data)))
:finished 'dvc-output-buffer-handler))
(t (error (format "Revision ID %S not implemented" rev-id))))))
(provide 'bzr-revlog)
;;; bzr-revlog.el ends here

View File

@ -1,272 +0,0 @@
;;; bzr-submit.el --- Patch submission support for Bazaar 2 in DVC
;; Copyright (C) 2006 by all contributors
;; Author: Michael Olson <mwolson@gnu.org>
;; Keywords: tools, vc
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;;
;;; Code:
(require 'bzr-core)
(require 'bzr)
(require 'diff-mode)
(defgroup dvc-bzr-submit nil
"Submitting and applying patches via email for bzr."
:group 'dvc
:prefix "bzr-submit-")
(defcustom bzr-apply-patch-mapping nil
"*Project in which patches should be applied.
An alist of rules to map branch nicknames to target directories.
This is used by the `bzr-gnus-apply-patch' function.
Example setting: '((\"dvc-dev-bzr\" \"~/work/bzr/dvc\"))"
:type '(repeat (list :tag "Rule"
(string :tag "Branch nickname")
(string :tag "Target directory")))
:group 'dvc-bzr-submit)
(defcustom bzr-submit-patch-mapping
'(("dvc-dev-bzr" ("dvc-dev@gna.org" "dvc")))
"*Email addresses that should be used to send patches.
An alist of rules to map branch nicknames to target email
addresses and the base name to use in the attached patch.
This is used by the `bzr-submit-patch' function."
:type '(repeat (list :tag "Rule"
(string :tag "Branch nickname")
(list :tag "Target"
(string :tag "Email address")
(string :tag "Base name of patch"))))
:group 'dvc-bzr-submit)
(defcustom bzr-patch-sent-action 'keep-both
"*What shall be done, after sending a patch via mail.
The possible values are 'keep-patch, 'keep-changes, 'keep-both, 'keep-none."
:type '(choice (const keep-patch)
(const keep-changes)
(const keep-both)
(const keep-none))
:group 'dvc-bzr-submit)
(defvar bzr-patch-data nil)
(defun bzr-changed-files (&optional include-added)
"Retrieve a list of files in the current repo that have changed.
If INCLUDE-ADDED is specified, include files that are newly-added."
(let ((default-directory (bzr-tree-root))
(files nil))
(dvc-run-dvc-sync
'bzr (list "status")
:finished (dvc-capturing-lambda
(output error status arguments)
(set-buffer output)
(goto-char (point-min))
(when (and include-added
(re-search-forward "^added:" nil t))
(forward-line 1)
(while (looking-at "^ \\([^ ].*\\)$")
(setq files (cons (match-string 1) files))
(forward-line 1)))
(goto-char (point-min))
(when (re-search-forward "^modified:" nil t)
(forward-line 1)
(while (looking-at "^ \\([^ ].*\\)$")
(setq files (cons (match-string 1) files))
(forward-line 1))))
:error (lambda (output error status arguments)
(error "An error occurred")))
files))
(defun dvc-read-several-from-list (prompt items)
"Read several string ITEMS from list, using PROMPT."
(let ((chosen nil)
(table (mapcar #'list items))
item)
(while (progn
(and table
(setq item (dvc-completing-read prompt table nil t))
(stringp item)
(not (string= item ""))))
(setq chosen (cons item chosen))
(setq table (delete (list item) table)))
chosen))
(defun bzr-show-diff-from-file (file)
"Display the diff contained in FILE with DVC font-locking."
(with-temp-buffer
(insert-file-contents-literally file)
(let ((buffer (dvc-prepare-changes-buffer nil nil 'diff nil 'bzr))
(output (current-buffer)))
(when dvc-switch-to-buffer-first
(dvc-switch-to-buffer buffer))
;; Since we did not search for a tree root, some things may not work from the diff buffer.
(dvc-show-changes-buffer output 'bzr-parse-diff buffer))))
(defun bzr-changes-save-as-patch (file-name
&optional included-files prompt-files)
"Run \"bzr diff\" to create a .diff file.
The changes are stored in the patch file 'FILE-NAME.diff'.
INCLUDED-FILES lists the files whose changes will be included. If
this is nil, include changes to all files.
PROMPT-FILES indicates whether to prompt for the files to include in
the patch. This is only heeded when the function is not called
interactively."
(interactive
(list (read-file-name (concat "File to store the patch in "
"(without an extension): ")
nil "")
(dvc-read-several-from-list
"Files to include (all by default, RET ends): "
(bzr-changed-files t))))
(when (and (not (interactive-p)) prompt-files)
(setq included-files (dvc-read-several-from-list
"Files to include (all by default, RET ends): "
(bzr-changed-files t))))
(let ((patch-file-name (concat (expand-file-name file-name) ".diff"))
(default-directory (bzr-tree-root))
(continue t))
(dvc-run-dvc-sync
'bzr (nconc (list "diff") included-files)
:finished (lambda (output error status arguments)
(message "No changes occurred"))
:error (dvc-capturing-lambda
(output error status arguments)
(set-buffer output)
(write-file patch-file-name)))))
(defun bzr-undo-diff-from-file (file root-dir)
"Undo the changes contained in FILE to the bzr project whose
root is ROOT-DIR."
(with-temp-buffer
(insert-file-contents-literally file)
(diff-mode)
(goto-char (point-min))
(let ((default-directory root-dir)
(diff-advance-after-apply-hunk nil))
(while (re-search-forward diff-file-header-re nil t)
(condition-case nil
(while (progn (diff-apply-hunk t)
(re-search-forward diff-hunk-header-re nil t)))
(error nil))))))
;;;###autoload
(defun bzr-prepare-patch-submission (bzr-tree-root
patch-base-name email version-string
&optional description subject
prompt-files)
"Submit a patch to a bzr working copy (at BZR-TREE-ROOT) via email.
With this feature it is not necessary to branch a bzr archive.
You simply edit your checked out copy from your project and call this function.
The function will create a patch as a .diff file (based on PATCH-BASE-NAME)
and send it to the given email address EMAIL.
VERSION-STRING should indicate the version of bzr that the patch applies to.
DESCRIPTION is a brief descsription of the patch.
SUBJECT is the subject for the email message.
PROMPT-FILES indicates whether to prompt for the files to include in
the patch.
For an example, how to use this function see: `bzr-submit-patch'."
(interactive)
;; create the patch
(let* ((default-directory bzr-tree-root)
(patch-directory (expand-file-name ".tmp-dvc/" bzr-tree-root))
(patch-full-base-name (expand-file-name patch-base-name
patch-directory))
(patch-full-name (concat patch-full-base-name ".diff")))
(unless (file-exists-p patch-directory)
(make-directory patch-directory))
(bzr-changes-save-as-patch patch-full-base-name nil prompt-files)
(require 'reporter)
(delete-other-windows)
(reporter-submit-bug-report email nil nil nil nil description)
(set (make-local-variable 'bzr-patch-data)
(list patch-full-name bzr-tree-root patch-full-name))
(insert "[VERSION] " version-string "\n\n")
(insert bzr-command-version)
(goto-char (point-max))
(mml-attach-file patch-full-name "text/x-patch")
(bzr-show-diff-from-file patch-full-name)
(other-window 1)
(goto-char (point-min))
(mail-position-on-field "Subject")
(insert (or subject "[PATCH] "))))
(defun bzr-submit-patch-done ()
"Clean up after sending a patch via mail.
That function is usually called via `message-sent-hook'. Its
purpose is to revert the sent changes or to delete sent changeset
patch \(see: `bzr-patch-sent-action')."
(when bzr-patch-data
(when (memq bzr-patch-sent-action '(keep-patch keep-none))
(message "Reverting the sent changes in %s" (car bzr-patch-data))
(bzr-undo-diff-from-file (car bzr-patch-data) (cadr bzr-patch-data)))
(when (memq bzr-patch-sent-action '(keep-changes keep-none))
(message "Deleting the sent patch %s" (car (cddr bzr-patch-data)))
(delete-file (car (cddr bzr-patch-data))))
(when (memq bzr-patch-sent-action '(keep-both))
(message "Keeping the sent changes and the sent patch %s"
(car (cddr bzr-patch-data))))))
(add-hook 'message-sent-hook 'bzr-submit-patch-done)
;;;###autoload
(defun bzr-submit-patch ()
"Submit a patch for the current bzr project.
With this feature it is not necessary to tag an arch archive.
You simply edit your checked out copy and call this function.
The function will create a patch as *.tar.gz file and prepare a buffer to
send the patch via email.
The variable `bzr-submit-patch-mapping' allows to specify the
target email address and the base name of the sent tarball.
After the user has sent the message, `bzr-submit-patch-done' is called."
(interactive)
(if (string= (dvc-run-dvc-sync 'bzr '("status" "-V")
:finished 'dvc-output-buffer-handler)
"")
(message "No changes in this bzr working copy - please apply your patch locally and submit it.")
(bzr-command-version)
(let* ((tree-id (bzr-tree-id))
(submit-patch-info (cadr (assoc tree-id
bzr-submit-patch-mapping)))
(mail-address (or (nth 0 submit-patch-info) ""))
(patch-base-file-name (or (nth 1 submit-patch-info) "bzr")))
(bzr-prepare-patch-submission
(dvc-uniquify-file-name (bzr-tree-root))
(concat patch-base-file-name "-patch-"
(format-time-string "%Y-%m-%d_%H-%M-%S" (current-time)))
mail-address
tree-id
dvc-patch-email-message-body-template
nil
(interactive-p)))))
(provide 'bzr-submit)
;;; bzr-submit.el ends here

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More