From c3c79f67cc7366e7032bd63efed5c0557fe20989 Mon Sep 17 00:00:00 2001 From: Martin Sivak Date: Mon, 8 Apr 2013 16:40:47 +0200 Subject: [PATCH] Update ECB, CEDET and auto-complete and use distribution's python.el --- .gitmodules | 3 + ac-dict/ada-mode | 72 + ac-dict/c++-mode | 74 + ac-dict/c-mode | 37 + ac-dict/caml-mode | 231 + ac-dict/clojure-mode | 475 + ac-dict/clojurescript-mode | 475 + ac-dict/coq-mode | 278 + ac-dict/css-mode | 747 + ac-dict/erlang-mode | 216 + ac-dict/go-mode | 25 + ac-dict/haskell-mode | 679 + ac-dict/java-mode | 50 + ac-dict/javascript-mode | 148 + ac-dict/lua-mode | 21 + ac-dict/php-mode | 62 + ac-dict/python-mode | 104 + ac-dict/ruby-mode | 181 + ac-dict/scheme-mode | 216 + ac-dict/sclang-mode | 1481 ++ ac-dict/sh-mode | 182 + ac-dict/tcl-mode | 172 + ac-dict/ts-mode | 797 + ac-dict/tuareg-mode | 231 + ac-dict/verilog-mode | 313 + auto-complete-config.el | 483 + auto-complete-pkg.el | 4 + auto-complete.el | 1897 ++ cedet-bzr/trunk/.bzrignore | 19 + cedet-bzr/trunk/.cvsignore | 1 + cedet-bzr/trunk/.ede-ignore | 1 + cedet-bzr/trunk/CEDET_STYLE_GUIDE | 79 + cedet-bzr/trunk/INSTALL | 202 + cedet-bzr/trunk/Makefile | 128 + cedet-bzr/trunk/Makefile.wwwinfo | 19 + cedet-bzr/trunk/NEWS | 213 + cedet-bzr/trunk/PRERELEASE_CHECKLIST | 276 + cedet-bzr/trunk/USING_CEDET_FROM_BZR | 350 + cedet-bzr/trunk/cedet-build.el | 240 + cedet-bzr/trunk/cedet-devel-load.el | 125 + cedet-bzr/trunk/cedet-ediff.el | 123 + cedet-bzr/trunk/cedet-emacs-merge.el | 536 + cedet-bzr/trunk/cedet-remove-builtin.el | 66 + cedet-bzr/trunk/cedet-update-changelog.el | 248 + cedet-bzr/trunk/cedet-update-version.el | 101 + cedet-bzr/trunk/contrib/.cvsignore | 6 + cedet-bzr/trunk/contrib/INSTALL | 49 + cedet-bzr/trunk/contrib/Makefile | 80 + cedet-bzr/trunk/contrib/Project.ede | 47 + cedet-bzr/trunk/contrib/cedet-contrib-load.el | 50 + cedet-bzr/trunk/contrib/cedet-contrib.el | 34 + cedet-bzr/trunk/contrib/contrib-loaddefs.el | 125 + cedet-bzr/trunk/contrib/eassist.el | 392 + cedet-bzr/trunk/contrib/ede-gnustep.el | 1295 ++ .../trunk/contrib/semantic-ectag-scala.el | 82 + .../trunk/contrib/semantic-tag-folding.el | 757 + cedet-bzr/trunk/contrib/wisent-csharp-wy.el | Bin 0 -> 25005 bytes cedet-bzr/trunk/contrib/wisent-csharp.el | 374 + cedet-bzr/trunk/contrib/wisent-csharp.wy | 1257 ++ cedet-bzr/trunk/contrib/wisent-php-wy.el | 843 + cedet-bzr/trunk/contrib/wisent-php.el | 146 + cedet-bzr/trunk/contrib/wisent-php.wy | 850 + cedet-bzr/trunk/contrib/wisent-ruby-wy.el | 614 + cedet-bzr/trunk/contrib/wisent-ruby.el | 323 + cedet-bzr/trunk/contrib/wisent-ruby.wy | 579 + cedet-bzr/trunk/doc/ONEWS-semantic | 558 + cedet-bzr/trunk/doc/OONEWS-semantic | 108 + cedet-bzr/trunk/doc/info/bovine.info | 875 + cedet-bzr/trunk/doc/info/cedet.info | 1630 ++ cedet-bzr/trunk/doc/info/cogre.info | 264 + cedet-bzr/trunk/doc/info/dir | 32 + cedet-bzr/trunk/doc/info/ede.info | 4549 ++++ cedet-bzr/trunk/doc/info/eieio.info | 1959 ++ cedet-bzr/trunk/doc/info/grammar-fw.info | Bin 0 -> 77968 bytes cedet-bzr/trunk/doc/info/semantic-appdev.info | 4559 ++++ .../trunk/doc/info/semantic-langdev.info | 1948 ++ cedet-bzr/trunk/doc/info/semantic-user.info | 2780 +++ cedet-bzr/trunk/doc/info/semantic.info | 1339 ++ cedet-bzr/trunk/doc/info/srecode.info | 2358 +++ cedet-bzr/trunk/doc/info/wisent.info | 2325 +++ cedet-bzr/trunk/doc/texi/Makefile | 69 + cedet-bzr/trunk/doc/texi/Project.ede | 33 + cedet-bzr/trunk/doc/texi/cedet.info | 1630 ++ cedet-bzr/trunk/doc/texi/cedet.texi | 1310 ++ cedet-bzr/trunk/doc/texi/cogre.info | 264 + cedet-bzr/trunk/doc/texi/cogre.texi | 270 + cedet-bzr/trunk/doc/texi/doclicense.texi | 507 + cedet-bzr/trunk/doc/texi/ede.info | 4549 ++++ cedet-bzr/trunk/doc/texi/ede.texi | 4482 ++++ cedet-bzr/trunk/doc/texi/eieio.info | 1959 ++ cedet-bzr/trunk/doc/texi/eieio.texi | 1959 ++ cedet-bzr/trunk/doc/texi/semantic/.cvsignore | 1 + cedet-bzr/trunk/doc/texi/semantic/Makefile | 72 + cedet-bzr/trunk/doc/texi/semantic/Project.ede | 49 + .../doc/texi/semantic/app-dev-guide.texi | 2773 +++ cedet-bzr/trunk/doc/texi/semantic/bovine.info | 875 + cedet-bzr/trunk/doc/texi/semantic/bovine.texi | 474 + cedet-bzr/trunk/doc/texi/semantic/fdl.texi | 369 + .../trunk/doc/texi/semantic/glossary.texi | 68 + .../trunk/doc/texi/semantic/grammar-fw-ov.dia | 1829 ++ .../trunk/doc/texi/semantic/grammar-fw-ov.png | Bin 0 -> 29675 bytes .../trunk/doc/texi/semantic/grammar-fw-ov.txt | 30 + .../trunk/doc/texi/semantic/grammar-fw.info | Bin 0 -> 77968 bytes .../trunk/doc/texi/semantic/grammar-fw.texi | 1606 ++ .../trunk/doc/texi/semantic/installation.texi | 323 + .../trunk/doc/texi/semantic/internals.texi | 310 + .../doc/texi/semantic/lang-support-guide.texi | 1627 ++ .../trunk/doc/texi/semantic/minor-modes.texi | 387 + .../trunk/doc/texi/semantic/overview.texi | 227 + .../doc/texi/semantic/semantic-appdev.info | 4559 ++++ .../doc/texi/semantic/semantic-langdev.info | 1948 ++ .../doc/texi/semantic/semantic-user.info | 2780 +++ .../trunk/doc/texi/semantic/semantic.info | 1339 ++ .../trunk/doc/texi/semantic/semantic.texi | 195 + .../doc/texi/semantic/semanticheader.texi | 36 + cedet-bzr/trunk/doc/texi/semantic/tags.texi | 1064 + .../trunk/doc/texi/semantic/user-guide.texi | 1888 ++ cedet-bzr/trunk/doc/texi/semantic/wisent.info | 2325 +++ cedet-bzr/trunk/doc/texi/semantic/wisent.texi | 2045 ++ cedet-bzr/trunk/doc/texi/srecode.info | 2358 +++ cedet-bzr/trunk/doc/texi/srecode.texi | 1797 ++ cedet-bzr/trunk/etc/ede/proj-skel.el | 338 + cedet-bzr/trunk/etc/fallback-libraries/README | 5 + .../trunk/etc/fallback-libraries/autoload.el | 739 + cedet-bzr/trunk/etc/images/cogre-arrow.xpm | 29 + cedet-bzr/trunk/etc/images/cogre-class.xpm | 29 + cedet-bzr/trunk/etc/images/cogre-hasa.xpm | 29 + cedet-bzr/trunk/etc/images/cogre-instance.xpm | 29 + cedet-bzr/trunk/etc/images/cogre-isa.xpm | 29 + cedet-bzr/trunk/etc/images/cogre-link.xpm | 29 + cedet-bzr/trunk/etc/images/cogre-node.xpm | 29 + cedet-bzr/trunk/etc/images/cogre-note.xpm | 29 + cedet-bzr/trunk/etc/images/cogre-package.xpm | 29 + cedet-bzr/trunk/etc/semantic/bovine/skel.el | 126 + .../trunk/etc/semantic/bovine/skeleton.by | 80 + cedet-bzr/trunk/etc/semantic/db-skel.el | 234 + cedet-bzr/trunk/etc/semantic/example.el | 148 + cedet-bzr/trunk/etc/semantic/semanticdb.sh | 58 + cedet-bzr/trunk/etc/srecode/Makefile | 50 + cedet-bzr/trunk/etc/srecode/Project.ede | 28 + cedet-bzr/trunk/etc/srecode/android-java.srt | 96 + cedet-bzr/trunk/etc/srecode/arduino-pde.srt | 53 + cedet-bzr/trunk/etc/srecode/c.srt | 164 + cedet-bzr/trunk/etc/srecode/cogre-default.srt | 43 + cedet-bzr/trunk/etc/srecode/cpp.srt | 137 + cedet-bzr/trunk/etc/srecode/default.srt | 61 + cedet-bzr/trunk/etc/srecode/doc-cpp.srt | 84 + cedet-bzr/trunk/etc/srecode/doc-default.srt | 80 + cedet-bzr/trunk/etc/srecode/doc-java.srt | 85 + cedet-bzr/trunk/etc/srecode/ede-autoconf.srt | 54 + cedet-bzr/trunk/etc/srecode/ede-make.srt | 82 + cedet-bzr/trunk/etc/srecode/el.srt | 307 + cedet-bzr/trunk/etc/srecode/getset-cpp.srt | 49 + cedet-bzr/trunk/etc/srecode/html.srt | 40 + cedet-bzr/trunk/etc/srecode/java.srt | 198 + cedet-bzr/trunk/etc/srecode/make.srt | 79 + cedet-bzr/trunk/etc/srecode/proj-test.srt | 37 + cedet-bzr/trunk/etc/srecode/srecode-dot.srt | 79 + cedet-bzr/trunk/etc/srecode/template.srt | 224 + cedet-bzr/trunk/etc/srecode/test.srt | 220 + cedet-bzr/trunk/etc/srecode/texi.srt | 168 + cedet-bzr/trunk/etc/srecode/wisent.srt | 94 + cedet-bzr/trunk/gettodos.sh | 3 + cedet-bzr/trunk/lisp/Makefile | 56 + cedet-bzr/trunk/lisp/Project.ede | 6 + cedet-bzr/trunk/lisp/cedet/Makefile | 92 + cedet-bzr/trunk/lisp/cedet/Project.ede | 41 + cedet-bzr/trunk/lisp/cedet/cedet-android.el | 313 + cedet-bzr/trunk/lisp/cedet/cedet-compat.el | 239 + cedet-bzr/trunk/lisp/cedet/cedet-cscope.el | 176 + cedet-bzr/trunk/lisp/cedet/cedet-edebug.el | 133 + cedet-bzr/trunk/lisp/cedet/cedet-files.el | 111 + cedet-bzr/trunk/lisp/cedet/cedet-global.el | 190 + cedet-bzr/trunk/lisp/cedet/cedet-graphviz.el | 113 + cedet-bzr/trunk/lisp/cedet/cedet-idutils.el | 204 + cedet-bzr/trunk/lisp/cedet/cedet-java.el | 329 + cedet-bzr/trunk/lisp/cedet/cedet-m3.el | 205 + cedet-bzr/trunk/lisp/cedet/cedet.el | 137 + cedet-bzr/trunk/lisp/cedet/cogre.el | 1119 + cedet-bzr/trunk/lisp/cedet/cogre/Makefile | 89 + cedet-bzr/trunk/lisp/cedet/cogre/Project.ede | 58 + cedet-bzr/trunk/lisp/cedet/cogre/ascii.el | 179 + cedet-bzr/trunk/lisp/cedet/cogre/convert.el | 340 + cedet-bzr/trunk/lisp/cedet/cogre/dot-mode.el | 123 + cedet-bzr/trunk/lisp/cedet/cogre/layout.el | 113 + cedet-bzr/trunk/lisp/cedet/cogre/loaddefs.el | 209 + cedet-bzr/trunk/lisp/cedet/cogre/mode.el | 903 + cedet-bzr/trunk/lisp/cedet/cogre/periodic.el | 104 + .../trunk/lisp/cedet/cogre/picture-hack.el | 339 + cedet-bzr/trunk/lisp/cedet/cogre/semantic.el | 443 + cedet-bzr/trunk/lisp/cedet/cogre/srecode.el | 163 + cedet-bzr/trunk/lisp/cedet/cogre/test.dot | 9 + cedet-bzr/trunk/lisp/cedet/cogre/uml.el | 443 + .../trunk/lisp/cedet/cogre/wisent-dot-wy.el | 283 + .../trunk/lisp/cedet/cogre/wisent-dot.el | 102 + .../trunk/lisp/cedet/cogre/wisent-dot.wy | 196 + cedet-bzr/trunk/lisp/cedet/data-debug.el | 1112 + cedet-bzr/trunk/lisp/cedet/ede.el | 1506 ++ cedet-bzr/trunk/lisp/cedet/ede/Makefile | 78 + cedet-bzr/trunk/lisp/cedet/ede/Project.ede | 50 + cedet-bzr/trunk/lisp/cedet/ede/android.el | 473 + cedet-bzr/trunk/lisp/cedet/ede/ant.el | 217 + cedet-bzr/trunk/lisp/cedet/ede/arduino.el | 634 + cedet-bzr/trunk/lisp/cedet/ede/auto.el | 339 + .../trunk/lisp/cedet/ede/autoconf-edit.el | 462 + cedet-bzr/trunk/lisp/cedet/ede/base.el | 656 + cedet-bzr/trunk/lisp/cedet/ede/cpp-root.el | 583 + cedet-bzr/trunk/lisp/cedet/ede/custom.el | 215 + cedet-bzr/trunk/lisp/cedet/ede/dired.el | 87 + cedet-bzr/trunk/lisp/cedet/ede/emacs.el | 317 + cedet-bzr/trunk/lisp/cedet/ede/files.el | 539 + cedet-bzr/trunk/lisp/cedet/ede/generic.el | 492 + cedet-bzr/trunk/lisp/cedet/ede/java-root.el | 417 + cedet-bzr/trunk/lisp/cedet/ede/jvm-base.el | 174 + cedet-bzr/trunk/lisp/cedet/ede/lein2.el | 143 + cedet-bzr/trunk/lisp/cedet/ede/linux.el | 305 + cedet-bzr/trunk/lisp/cedet/ede/loaddefs.el | 370 + cedet-bzr/trunk/lisp/cedet/ede/locate.el | 367 + cedet-bzr/trunk/lisp/cedet/ede/m3.el | 71 + cedet-bzr/trunk/lisp/cedet/ede/make.el | 108 + .../trunk/lisp/cedet/ede/makefile-edit.el | 130 + cedet-bzr/trunk/lisp/cedet/ede/maven2.el | 253 + cedet-bzr/trunk/lisp/cedet/ede/pconf.el | 187 + cedet-bzr/trunk/lisp/cedet/ede/pmake.el | 693 + .../trunk/lisp/cedet/ede/proj-archive.el | 64 + cedet-bzr/trunk/lisp/cedet/ede/proj-aux.el | 48 + cedet-bzr/trunk/lisp/cedet/ede/proj-comp.el | 360 + cedet-bzr/trunk/lisp/cedet/ede/proj-elisp.el | 421 + cedet-bzr/trunk/lisp/cedet/ede/proj-info.el | 186 + cedet-bzr/trunk/lisp/cedet/ede/proj-misc.el | 95 + cedet-bzr/trunk/lisp/cedet/ede/proj-obj.el | 323 + cedet-bzr/trunk/lisp/cedet/ede/proj-prog.el | 144 + cedet-bzr/trunk/lisp/cedet/ede/proj-scheme.el | 49 + cedet-bzr/trunk/lisp/cedet/ede/proj-shared.el | 210 + cedet-bzr/trunk/lisp/cedet/ede/proj.el | 701 + cedet-bzr/trunk/lisp/cedet/ede/project-am.el | 1017 + cedet-bzr/trunk/lisp/cedet/ede/shell.el | 82 + cedet-bzr/trunk/lisp/cedet/ede/source.el | 173 + cedet-bzr/trunk/lisp/cedet/ede/speedbar.el | 358 + cedet-bzr/trunk/lisp/cedet/ede/srecode.el | 94 + cedet-bzr/trunk/lisp/cedet/ede/system.el | 146 + cedet-bzr/trunk/lisp/cedet/ede/util.el | 99 + cedet-bzr/trunk/lisp/cedet/fame.el | 420 + cedet-bzr/trunk/lisp/cedet/inversion.el | 550 + cedet-bzr/trunk/lisp/cedet/loaddefs.el | 382 + cedet-bzr/trunk/lisp/cedet/mode-local.el | 786 + cedet-bzr/trunk/lisp/cedet/pprint.el | 467 + cedet-bzr/trunk/lisp/cedet/pulse.el | 258 + cedet-bzr/trunk/lisp/cedet/semantic.el | 1220 ++ cedet-bzr/trunk/lisp/cedet/semantic/Makefile | 140 + .../trunk/lisp/cedet/semantic/Project.ede | 74 + cedet-bzr/trunk/lisp/cedet/semantic/adebug.el | 431 + .../trunk/lisp/cedet/semantic/analyze.el | 821 + .../lisp/cedet/semantic/analyze/Makefile | 52 + .../lisp/cedet/semantic/analyze/Project.ede | 19 + .../lisp/cedet/semantic/analyze/complete.el | 284 + .../lisp/cedet/semantic/analyze/debug.el | 613 + .../trunk/lisp/cedet/semantic/analyze/fcn.el | 319 + .../trunk/lisp/cedet/semantic/analyze/refs.el | 360 + cedet-bzr/trunk/lisp/cedet/semantic/ast.el | 104 + cedet-bzr/trunk/lisp/cedet/semantic/bovine.el | 296 + .../trunk/lisp/cedet/semantic/bovine/Makefile | 68 + .../lisp/cedet/semantic/bovine/Project.ede | 31 + .../trunk/lisp/cedet/semantic/bovine/c-by.el | 2229 ++ .../trunk/lisp/cedet/semantic/bovine/c.by | 1216 ++ .../trunk/lisp/cedet/semantic/bovine/c.el | 2243 ++ .../trunk/lisp/cedet/semantic/bovine/clang.el | 295 + .../trunk/lisp/cedet/semantic/bovine/debug.el | 147 + .../trunk/lisp/cedet/semantic/bovine/el.el | 958 + .../lisp/cedet/semantic/bovine/erlang-by.el | 1826 ++ .../lisp/cedet/semantic/bovine/erlang.by | 1081 + .../lisp/cedet/semantic/bovine/erlang.el | 109 + .../lisp/cedet/semantic/bovine/f90-by.el | 575 + .../trunk/lisp/cedet/semantic/bovine/f90.by | 273 + .../trunk/lisp/cedet/semantic/bovine/f90.el | 557 + .../trunk/lisp/cedet/semantic/bovine/gcc.el | 242 + .../cedet/semantic/bovine/grammar-macros.el | 128 + .../lisp/cedet/semantic/bovine/grammar.el | 377 + .../lisp/cedet/semantic/bovine/make-by.el | 400 + .../trunk/lisp/cedet/semantic/bovine/make.by | 169 + .../trunk/lisp/cedet/semantic/bovine/make.el | 241 + .../lisp/cedet/semantic/bovine/scm-by.el | 205 + .../trunk/lisp/cedet/semantic/bovine/scm.by | 85 + .../trunk/lisp/cedet/semantic/bovine/scm.el | 118 + .../lisp/cedet/semantic/canned-configs.el | 228 + cedet-bzr/trunk/lisp/cedet/semantic/chart.el | 171 + .../trunk/lisp/cedet/semantic/complete.el | 2258 ++ cedet-bzr/trunk/lisp/cedet/semantic/ctxt.el | 702 + cedet-bzr/trunk/lisp/cedet/semantic/custom.el | 282 + .../trunk/lisp/cedet/semantic/db-cscope.el | 253 + .../trunk/lisp/cedet/semantic/db-debug.el | 110 + .../trunk/lisp/cedet/semantic/db-ebrowse.el | 663 + cedet-bzr/trunk/lisp/cedet/semantic/db-el.el | 334 + .../trunk/lisp/cedet/semantic/db-file.el | 458 + .../trunk/lisp/cedet/semantic/db-find.el | 1382 ++ .../trunk/lisp/cedet/semantic/db-global.el | 237 + .../trunk/lisp/cedet/semantic/db-javap.el | 1002 + .../lisp/cedet/semantic/db-javascript.el | 309 + cedet-bzr/trunk/lisp/cedet/semantic/db-mk.el | 77 + .../trunk/lisp/cedet/semantic/db-mode.el | 220 + .../trunk/lisp/cedet/semantic/db-mozrepl.el | 383 + cedet-bzr/trunk/lisp/cedet/semantic/db-ref.el | 174 + .../trunk/lisp/cedet/semantic/db-search.el | 452 + .../trunk/lisp/cedet/semantic/db-typecache.el | 634 + cedet-bzr/trunk/lisp/cedet/semantic/db.el | 1061 + cedet-bzr/trunk/lisp/cedet/semantic/debug.el | 569 + .../trunk/lisp/cedet/semantic/decorate.el | 299 + .../lisp/cedet/semantic/decorate/Makefile | 52 + .../lisp/cedet/semantic/decorate/Project.ede | 19 + .../lisp/cedet/semantic/decorate/include.el | 890 + .../lisp/cedet/semantic/decorate/mode.el | 524 + cedet-bzr/trunk/lisp/cedet/semantic/dep.el | 234 + cedet-bzr/trunk/lisp/cedet/semantic/doc.el | 133 + .../trunk/lisp/cedet/semantic/ectags/Makefile | 52 + .../lisp/cedet/semantic/ectags/Project.ede | 19 + .../trunk/lisp/cedet/semantic/ectags/db.el | 97 + .../trunk/lisp/cedet/semantic/ectags/lang.el | 118 + .../trunk/lisp/cedet/semantic/ectags/lang2.el | 142 + .../trunk/lisp/cedet/semantic/ectags/parse.el | 465 + .../trunk/lisp/cedet/semantic/ectags/util.el | 209 + .../trunk/lisp/cedet/semantic/ede-grammar.el | 220 + cedet-bzr/trunk/lisp/cedet/semantic/edit.el | 977 + cedet-bzr/trunk/lisp/cedet/semantic/elp.el | 787 + cedet-bzr/trunk/lisp/cedet/semantic/find.el | 719 + cedet-bzr/trunk/lisp/cedet/semantic/format.el | 722 + cedet-bzr/trunk/lisp/cedet/semantic/fw.el | 517 + .../lisp/cedet/semantic/gram-wy-fallback.el | 487 + .../trunk/lisp/cedet/semantic/grammar-wy.el | 495 + .../trunk/lisp/cedet/semantic/grammar.el | 1918 ++ .../trunk/lisp/cedet/semantic/grammar.wy | 439 + cedet-bzr/trunk/lisp/cedet/semantic/html.el | 265 + cedet-bzr/trunk/lisp/cedet/semantic/ia-sb.el | 370 + cedet-bzr/trunk/lisp/cedet/semantic/ia.el | 487 + cedet-bzr/trunk/lisp/cedet/semantic/idle.el | 1347 ++ cedet-bzr/trunk/lisp/cedet/semantic/imenu.el | 537 + cedet-bzr/trunk/lisp/cedet/semantic/java.el | 483 + .../trunk/lisp/cedet/semantic/lex-spp.el | 1261 ++ cedet-bzr/trunk/lisp/cedet/semantic/lex.el | 2049 ++ .../trunk/lisp/cedet/semantic/loaddefs.el | 2103 ++ cedet-bzr/trunk/lisp/cedet/semantic/m3.el | 299 + .../trunk/lisp/cedet/semantic/mru-bookmark.el | 405 + cedet-bzr/trunk/lisp/cedet/semantic/sb.el | 428 + cedet-bzr/trunk/lisp/cedet/semantic/scope.el | 820 + .../trunk/lisp/cedet/semantic/senator.el | 1518 ++ cedet-bzr/trunk/lisp/cedet/semantic/sort.el | 568 + cedet-bzr/trunk/lisp/cedet/semantic/symref.el | 513 + .../trunk/lisp/cedet/semantic/symref/Makefile | 52 + .../lisp/cedet/semantic/symref/Project.ede | 19 + .../lisp/cedet/semantic/symref/cscope.el | 94 + .../lisp/cedet/semantic/symref/filter.el | 161 + .../lisp/cedet/semantic/symref/global.el | 73 + .../trunk/lisp/cedet/semantic/symref/grep.el | 190 + .../lisp/cedet/semantic/symref/idutils.el | 75 + .../trunk/lisp/cedet/semantic/symref/list.el | 540 + .../trunk/lisp/cedet/semantic/tag-file.el | 216 + cedet-bzr/trunk/lisp/cedet/semantic/tag-ls.el | 465 + .../trunk/lisp/cedet/semantic/tag-write.el | 178 + cedet-bzr/trunk/lisp/cedet/semantic/tag.el | 1359 ++ cedet-bzr/trunk/lisp/cedet/semantic/texi.el | 690 + .../trunk/lisp/cedet/semantic/util-modes.el | 1013 + cedet-bzr/trunk/lisp/cedet/semantic/util.el | 439 + cedet-bzr/trunk/lisp/cedet/semantic/wisent.el | 345 + .../trunk/lisp/cedet/semantic/wisent/Makefile | 72 + .../lisp/cedet/semantic/wisent/Project.ede | 37 + .../cedet/semantic/wisent/bison-wisent.el | 165 + .../lisp/cedet/semantic/wisent/calc-wy.el | 149 + .../trunk/lisp/cedet/semantic/wisent/calc.el | 142 + .../trunk/lisp/cedet/semantic/wisent/calc.wy | 117 + .../trunk/lisp/cedet/semantic/wisent/comp.el | 3553 ++++ .../trunk/lisp/cedet/semantic/wisent/debug.el | 160 + .../trunk/lisp/cedet/semantic/wisent/expr.el | 141 + .../cedet/semantic/wisent/grammar-macros.el | 231 + .../lisp/cedet/semantic/wisent/grammar.el | 187 + .../cedet/semantic/wisent/java-tags-wy.el | Bin 0 -> 19470 bytes .../lisp/cedet/semantic/wisent/java-tags.el | 151 + .../lisp/cedet/semantic/wisent/java-tags.wy | 758 + .../lisp/cedet/semantic/wisent/java-wy.el | Bin 0 -> 46686 bytes .../trunk/lisp/cedet/semantic/wisent/java.el | 139 + .../trunk/lisp/cedet/semantic/wisent/java.wy | 2151 ++ .../cedet/semantic/wisent/javascript-wy.el | 501 + .../lisp/cedet/semantic/wisent/javascript.el | 151 + .../lisp/cedet/semantic/wisent/javascript.wy | 528 + .../lisp/cedet/semantic/wisent/python-wy.el | 799 + .../lisp/cedet/semantic/wisent/python.el | 635 + .../lisp/cedet/semantic/wisent/python.wy | 1180 ++ .../lisp/cedet/semantic/wisent/wisent.el | 478 + cedet-bzr/trunk/lisp/cedet/srecode.el | 55 + cedet-bzr/trunk/lisp/cedet/srecode/Makefile | 74 + .../trunk/lisp/cedet/srecode/Project.ede | 32 + cedet-bzr/trunk/lisp/cedet/srecode/android.el | 44 + cedet-bzr/trunk/lisp/cedet/srecode/args.el | 211 + cedet-bzr/trunk/lisp/cedet/srecode/compile.el | 668 + cedet-bzr/trunk/lisp/cedet/srecode/cpp.el | 240 + cedet-bzr/trunk/lisp/cedet/srecode/ctxt.el | 247 + .../trunk/lisp/cedet/srecode/dictionary.el | 679 + .../trunk/lisp/cedet/srecode/document.el | 840 + cedet-bzr/trunk/lisp/cedet/srecode/el.el | 112 + .../trunk/lisp/cedet/srecode/expandproto.el | 132 + cedet-bzr/trunk/lisp/cedet/srecode/extract.el | 242 + cedet-bzr/trunk/lisp/cedet/srecode/fields.el | 450 + cedet-bzr/trunk/lisp/cedet/srecode/filters.el | 58 + cedet-bzr/trunk/lisp/cedet/srecode/find.el | 286 + cedet-bzr/trunk/lisp/cedet/srecode/getset.el | 366 + cedet-bzr/trunk/lisp/cedet/srecode/insert.el | 1079 + cedet-bzr/trunk/lisp/cedet/srecode/java.el | 83 + .../trunk/lisp/cedet/srecode/loaddefs.el | 295 + cedet-bzr/trunk/lisp/cedet/srecode/m3.el | 61 + cedet-bzr/trunk/lisp/cedet/srecode/map.el | 422 + cedet-bzr/trunk/lisp/cedet/srecode/mode.el | 416 + .../trunk/lisp/cedet/srecode/semantic.el | 437 + .../trunk/lisp/cedet/srecode/srt-mode.el | 747 + cedet-bzr/trunk/lisp/cedet/srecode/srt-wy.el | 315 + cedet-bzr/trunk/lisp/cedet/srecode/srt.el | 113 + cedet-bzr/trunk/lisp/cedet/srecode/srt.wy | 286 + cedet-bzr/trunk/lisp/cedet/srecode/table.el | 290 + .../trunk/lisp/cedet/srecode/template.el | 75 + cedet-bzr/trunk/lisp/cedet/srecode/texi.el | 288 + cedet-bzr/trunk/lisp/cedet/working.el | 646 + cedet-bzr/trunk/lisp/eieio/Makefile | 68 + cedet-bzr/trunk/lisp/eieio/Project.ede | 40 + cedet-bzr/trunk/lisp/eieio/chart.el | 759 + cedet-bzr/trunk/lisp/eieio/eieio-base.el | 496 + cedet-bzr/trunk/lisp/eieio/eieio-core.el | 2240 ++ cedet-bzr/trunk/lisp/eieio/eieio-custom.el | 476 + cedet-bzr/trunk/lisp/eieio/eieio-datadebug.el | 148 + cedet-bzr/trunk/lisp/eieio/eieio-opt.el | 804 + cedet-bzr/trunk/lisp/eieio/eieio-speedbar.el | 425 + cedet-bzr/trunk/lisp/eieio/eieio.el | 909 + cedet-bzr/trunk/lisp/eieio/linemark.el | 461 + cedet-bzr/trunk/lisp/eieio/loaddefs.el | 97 + cedet-bzr/trunk/lisp/speedbar/Makefile | 63 + cedet-bzr/trunk/lisp/speedbar/Project.ede | 27 + cedet-bzr/trunk/lisp/speedbar/README | 3 + cedet-bzr/trunk/lisp/speedbar/loaddefs.el | 62 + cedet-bzr/trunk/lisp/speedbar/rpm.el | 195 + cedet-bzr/trunk/lisp/speedbar/sb-ant.el | 110 + cedet-bzr/trunk/lisp/speedbar/sb-html.el | 118 + cedet-bzr/trunk/lisp/speedbar/sb-info.el | 254 + cedet-bzr/trunk/lisp/speedbar/sb-rmail.el | 160 + cedet-bzr/trunk/lisp/speedbar/sb-texinfo.el | 219 + .../trunk/obsolete/doc/semantic/C99-gram.texi | 935 + cedet-bzr/trunk/obsolete/doc/speedbar.texi | 1251 ++ .../obsolete/etc/images/ezimage/bits.xpm | 20 + .../obsolete/etc/images/ezimage/bitsbang.xpm | 21 + .../obsolete/etc/images/ezimage/box-minus.xpm | 22 + .../obsolete/etc/images/ezimage/box-plus.xpm | 22 + .../trunk/obsolete/etc/images/ezimage/box.xpm | 22 + .../obsolete/etc/images/ezimage/checkmark.xpm | 20 + .../obsolete/etc/images/ezimage/dir-minus.xpm | 23 + .../obsolete/etc/images/ezimage/dir-plus.xpm | 23 + .../trunk/obsolete/etc/images/ezimage/dir.xpm | 23 + .../obsolete/etc/images/ezimage/doc-minus.xpm | 23 + .../obsolete/etc/images/ezimage/doc-plus.xpm | 23 + .../trunk/obsolete/etc/images/ezimage/doc.xpm | 23 + .../obsolete/etc/images/ezimage/info.xpm | 22 + .../trunk/obsolete/etc/images/ezimage/key.xpm | 23 + .../obsolete/etc/images/ezimage/label.xpm | 22 + .../obsolete/etc/images/ezimage/lock.xpm | 23 + .../obsolete/etc/images/ezimage/mail.xpm | 22 + .../etc/images/ezimage/page-minus.xpm | 23 + .../obsolete/etc/images/ezimage/page-plus.xpm | 23 + .../obsolete/etc/images/ezimage/page.xpm | 23 + .../obsolete/etc/images/ezimage/tag-gt.xpm | 22 + .../obsolete/etc/images/ezimage/tag-minus.xpm | 22 + .../obsolete/etc/images/ezimage/tag-plus.xpm | 22 + .../obsolete/etc/images/ezimage/tag-type.xpm | 22 + .../obsolete/etc/images/ezimage/tag-v.xpm | 22 + .../trunk/obsolete/etc/images/ezimage/tag.xpm | 22 + .../obsolete/etc/images/ezimage/unlock.xpm | 23 + .../obsolete/lisp/cedet/cedet-autogen.el | 229 + .../lisp/cedet/ede/autoconf-compat.el | 139 + .../lisp/cedet/semantic/bovine/erlang-edoc.el | 240 + .../obsolete/lisp/cedet/semantic/db-java.el | 298 + .../obsolete/lisp/cedet/semantic/db-system.el | 303 + .../obsolete/lisp/cedet/semantic/fold.el | 242 + .../trunk/obsolete/lisp/cedet/semantic/inc.el | 69 + .../lisp/cedet/semantic/semanticdb-java.clj | 7 + .../lisp/cedet/semantic/wisent/awk.wy | 356 + .../obsolete/lisp/cedet/semantic/wisent/c.el | 397 + .../obsolete/lisp/cedet/semantic/wisent/c.wy | 637 + .../lisp/cedet/semantic/wisent/cim.wy | 661 + .../trunk/obsolete/lisp/eieio/call-tree.el | 141 + .../trunk/obsolete/lisp/eieio/eieio-comp.el | 155 + .../trunk/obsolete/lisp/eieio/eieio-doc.el | 378 + .../trunk/obsolete/lisp/eieio/eieio-xml.el | 166 + .../trunk/obsolete/lisp/eieio/eieiocomp.el | 49 + .../trunk/obsolete/lisp/eieio/lmcompile.el | 214 + cedet-bzr/trunk/obsolete/lisp/eieio/psql.el | 159 + cedet-bzr/trunk/obsolete/lisp/eieio/tree.el | 626 + .../trunk/obsolete/lisp/ezimage/ezimage.el | 352 + .../trunk/obsolete/lisp/speedbar/bigclock.el | 163 + .../trunk/obsolete/lisp/speedbar/dframe.el | 998 + .../trunk/obsolete/lisp/speedbar/fsum.el | 259 + .../trunk/obsolete/lisp/speedbar/sb-gud.el | 242 + .../trunk/obsolete/lisp/speedbar/sb-image.el | 107 + .../trunk/obsolete/lisp/speedbar/sb-w3.el | 145 + .../trunk/obsolete/lisp/speedbar/speedbar.el | 4155 ++++ cedet-bzr/trunk/testdist.sh | 86 + cedet-bzr/trunk/testprojects/README | 9 + cedet-bzr/trunk/tests/.cvsignore | 1 + cedet-bzr/trunk/tests/Makefile | 67 + cedet-bzr/trunk/tests/Project.ede | 33 + cedet-bzr/trunk/tests/README | 13 + cedet-bzr/trunk/tests/cedet-files-utests.el | 68 + cedet-bzr/trunk/tests/cedet-integ-test.el | 496 + cedet-bzr/trunk/tests/cedet-utests.el | 360 + cedet-bzr/trunk/tests/cedet-uutil.el | 233 + cedet-bzr/trunk/tests/cedet/cogre/Makefile | 38 + .../trunk/tests/cedet/cogre/convert-utest.el | 98 + .../trunk/tests/cedet/cogre/periodic-utest.el | 68 + .../trunk/tests/cedet/cogre/testclasses.hh | 117 + cedet-bzr/trunk/tests/cedet/cogre/utest.el | 143 + cedet-bzr/trunk/tests/cedet/ede/locate.el | 51 + .../trunk/tests/cedet/semantic/complete.el | 6 + .../trunk/tests/cedet/semantic/db-ebrowse.el | 18 + .../trunk/tests/cedet/semantic/db-find.el | 9 + .../trunk/tests/cedet/semantic/db-global.el | 27 + cedet-bzr/trunk/tests/cedet/semantic/find.el | 42 + .../trunk/tests/cedet/semantic/fmt-utest.el | 160 + .../trunk/tests/cedet/semantic/format.el | 22 + .../trunk/tests/cedet/semantic/gcc-utest.el | 135 + .../trunk/tests/cedet/semantic/ia-utest.el | 583 + cedet-bzr/trunk/tests/cedet/semantic/idle.el | 7 + .../tests/cedet/semantic/lex-spp-utest.el | 50 + .../trunk/tests/cedet/semantic/lex-utest.el | 60 + .../trunk/tests/cedet/semantic/regtest.el | 914 + .../trunk/tests/cedet/semantic/stltest.el | 103 + .../trunk/tests/cedet/semantic/tag-write.el | 11 + .../trunk/tests/cedet/semantic/tests/Makefile | 38 + .../tests/cedet/semantic/tests/Project.ede | 13 + .../tests/cedet/semantic/tests/gr-test.wy | 103 + .../semantic/tests/maven2-testproject/README | 11 + .../rootproject/child1project/pom.xml | 18 + .../java/cedet/test/child1project/App.java | 13 + .../cedet/test/child1project/AppTest.java | 38 + .../rootproject/child2project/pom.xml | 18 + .../java/cedet/test/child2project/App.java | 13 + .../cedet/test/child2project/AppTest.java | 38 + .../maven2-testproject/rootproject/pom.xml | 23 + .../tests/cedet/semantic/tests/scopetest.cpp | 47 + .../tests/cedet/semantic/tests/scopetest.java | 25 + .../tests/cedet/semantic/tests/templates.cpp | 129 + .../tests/cedet/semantic/tests/test-fmt.cpp | 90 + .../tests/cedet/semantic/tests/test-fmt.el | 65 + .../trunk/tests/cedet/semantic/tests/test.c | 222 + .../trunk/tests/cedet/semantic/tests/test.cpp | 593 + .../trunk/tests/cedet/semantic/tests/test.el | 141 + .../tests/cedet/semantic/tests/test.make | 60 + .../trunk/tests/cedet/semantic/tests/test.py | 579 + .../cedet/semantic/tests/testdoublens.cpp | 163 + .../cedet/semantic/tests/testdoublens.hpp | 53 + .../tests/cedet/semantic/tests/testf90.f90 | 73 + .../cedet/semantic/tests/testfriends.cpp | 37 + .../cedet/semantic/tests/testjavacomp.java | 79 + .../tests/cedet/semantic/tests/testmodule.f90 | 48 + .../tests/cedet/semantic/tests/testnsp.cpp | 78 + .../cedet/semantic/tests/testpolymorph.cpp | 131 + .../tests/cedet/semantic/tests/testspp.c | 84 + .../cedet/semantic/tests/testsppcomplete.c | 45 + .../cedet/semantic/tests/testsppcond.cpp | 227 + .../cedet/semantic/tests/testsppreplace.c | 175 + .../cedet/semantic/tests/testsppreplaced.c | 117 + .../tests/cedet/semantic/tests/teststruct.cpp | 66 + .../cedet/semantic/tests/testsubclass.cpp | 251 + .../cedet/semantic/tests/testsubclass.hh | 176 + .../cedet/semantic/tests/testtemplates.cpp | 90 + .../cedet/semantic/tests/testtypedefs.cpp | 122 + .../tests/cedet/semantic/tests/testusing.cpp | 196 + .../tests/cedet/semantic/tests/testusing.hh | 141 + .../tests/cedet/semantic/tests/testvarnames.c | 71 + .../trunk/tests/cedet/semantic/utest-c.el | 124 + .../trunk/tests/cedet/semantic/utest-fw.el | 64 + .../trunk/tests/cedet/semantic/utest-parse.el | 1110 + .../trunk/tests/cedet/srecode/document.el | 47 + .../trunk/tests/cedet/srecode/fields-utest.el | 249 + .../trunk/tests/cedet/srecode/test-getset.el | 164 + cedet-bzr/trunk/tests/cedet/srecode/test.el | 377 + cedet-bzr/trunk/tests/cit-android.el | 69 + cedet-bzr/trunk/tests/cit-arduino.el | 130 + cedet-bzr/trunk/tests/cit-cpp.el | 276 + cedet-bzr/trunk/tests/cit-cpproot.el | 150 + cedet-bzr/trunk/tests/cit-dist.el | 74 + cedet-bzr/trunk/tests/cit-el.el | 124 + cedet-bzr/trunk/tests/cit-externaldb.el | 187 + cedet-bzr/trunk/tests/cit-extra-cpp.srt | 47 + cedet-bzr/trunk/tests/cit-gnustep.el | 116 + cedet-bzr/trunk/tests/cit-javaroot.el | 153 + cedet-bzr/trunk/tests/cit-load.el | 59 + cedet-bzr/trunk/tests/cit-proj-cpp.srt | 39 + cedet-bzr/trunk/tests/cit-projvar.el | 97 + cedet-bzr/trunk/tests/cit-srec.el | 100 + cedet-bzr/trunk/tests/cit-symref.el | 115 + cedet-bzr/trunk/tests/cit-test.sh | 28 + cedet-bzr/trunk/tests/cit-texi.el | 97 + cedet-bzr/trunk/tests/cit-uml.cgr | 53 + cedet-bzr/trunk/tests/cit-uml.el | 81 + cedet-bzr/trunk/tests/eieio/eieio-perftest.el | 154 + .../tests/eieio/eieio-test-methodinvoke.el | 453 + cedet-bzr/trunk/tests/eieio/eieio-test-mro.el | 293 + .../trunk/tests/eieio/eieio-test-persist.el | 202 + cedet-bzr/trunk/tests/eieio/eieio-tests.el | 1108 + .../trunk/tests/integ_src/cpproot/main.cpp | 49 + .../integ_src/cpproot/projinc/projincmacros.h | 27 + .../trunk/tests/integ_src/cpproot/sppmacros.h | 9 + .../trunk/tests/integ_src/cpproot/test.h | 19 + .../trunk/tests/integ_src/fauxsyslib/README | 6 + .../tests/integ_src/fauxsyslib/TestSys.jar | Bin 0 -> 699 bytes .../tests/integ_src/fauxsyslib/cpprootsys.h | 27 + .../integ_src/fauxsyslib/java/syslib/Makefile | 34 + .../fauxsyslib/java/syslib/TestSysJar.java | 42 + .../tests/integ_src/javaroot/TestLib.java | 25 + .../tests/integ_src/javaroot/TestMain.java | 37 + .../integ_src/javaroot/projjar/TestProj.jar | Bin 0 -> 698 bytes .../integ_src/javaroot/src/testproj/Makefile | 34 + .../javaroot/src/testproj/TestInJar.java | 42 + .../integ_src/javaroot/test/TestTest.java | 26 + cedet-bzr/trunk/tests/inversion-utest.el | 84 + cedet-bzr/trunk/tests/pulse-utest.el | 78 + ecb | 2 +- ecb-snap/CVS/Entries | 45 - ecb-snap/CVS/Repository | 1 - ecb-snap/CVS/Root | 1 - ecb-snap/CYCLE_PROPOSAL | 162 - ecb-snap/Makefile | 259 - ecb-snap/Makefile.~1.119.~ | 259 - ecb-snap/NEWS | 3135 --- ecb-snap/README | 210 - ecb-snap/RELEASE_NOTES | 288 - ecb-snap/TODO | 34 - ecb-snap/ecb-advice-test.el | 281 - ecb-snap/ecb-advice-test.elc | Bin 9967 -> 0 bytes ecb-snap/ecb-analyse.el | 714 - ecb-snap/ecb-analyse.elc | Bin 32748 -> 0 bytes ecb-snap/ecb-autogen.el | 160 - ecb-snap/ecb-autogen.elc | Bin 3631 -> 0 bytes ecb-snap/ecb-buffertab.el | 114 - ecb-snap/ecb-buffertab.elc | Bin 2143 -> 0 bytes ecb-snap/ecb-cedet-wrapper.el | 368 - ecb-snap/ecb-cedet-wrapper.elc | Bin 12829 -> 0 bytes ecb-snap/ecb-common-browser.el | 2178 -- ecb-snap/ecb-common-browser.elc | Bin 83779 -> 0 bytes ecb-snap/ecb-compatibility.el | 369 - ecb-snap/ecb-compatibility.elc | Bin 10735 -> 0 bytes ecb-snap/ecb-compilation.el | 312 - ecb-snap/ecb-compilation.elc | Bin 10368 -> 0 bytes ecb-snap/ecb-create-layout.el | 862 - ecb-snap/ecb-create-layout.elc | Bin 27514 -> 0 bytes ecb-snap/ecb-cycle.el | 137 - ecb-snap/ecb-cycle.elc | Bin 2360 -> 0 bytes ecb-snap/ecb-eshell.el | 394 - ecb-snap/ecb-eshell.elc | Bin 12120 -> 0 bytes ecb-snap/ecb-examples.el | 560 - ecb-snap/ecb-examples.elc | Bin 16938 -> 0 bytes ecb-snap/ecb-face.el | 768 - ecb-snap/ecb-face.elc | Bin 37955 -> 0 bytes ecb-snap/ecb-file-browser.el | 4898 ----- ecb-snap/ecb-file-browser.elc | Bin 230432 -> 0 bytes ecb-snap/ecb-help.el | 458 - ecb-snap/ecb-help.elc | Bin 14060 -> 0 bytes ecb-snap/ecb-images/CVS/Entries | 4 - ecb-snap/ecb-images/CVS/Repository | 1 - ecb-snap/ecb-images/CVS/Root | 1 - ecb-snap/ecb-images/default/CVS/Entries | 9 - ecb-snap/ecb-images/default/CVS/Repository | 1 - ecb-snap/ecb-images/default/CVS/Root | 1 - .../ecb-images/default/height-10/CVS/Entries | 10 - .../default/height-10/CVS/Repository | 1 - .../ecb-images/default/height-10/CVS/Root | 1 - .../default/height-10/ecb-close.xpm | 48 - .../default/height-10/ecb-empty.xpm | 41 - .../default/height-10/ecb-end-guide.xpm | 15 - .../default/height-10/ecb-guide.xpm | 15 - .../default/height-10/ecb-handle.xpm | 16 - .../ecb-images/default/height-10/ecb-leaf.xpm | 34 - .../default/height-10/ecb-no-guide.xpm | 14 - .../default/height-10/ecb-no-handle.xpm | 15 - .../ecb-images/default/height-10/ecb-open.xpm | 50 - .../ecb-images/default/height-14/CVS/Entries | 10 - .../default/height-14/CVS/Repository | 1 - .../ecb-images/default/height-14/CVS/Root | 1 - .../default/height-14/ecb-close.xpm | 51 - .../default/height-14/ecb-empty.xpm | 277 - .../default/height-14/ecb-end-guide.xpm | 277 - .../default/height-14/ecb-guide.xpm | 277 - .../default/height-14/ecb-handle.xpm | 19 - .../ecb-images/default/height-14/ecb-leaf.xpm | 277 - .../default/height-14/ecb-no-guide.xpm | 277 - .../default/height-14/ecb-no-handle.xpm | 18 - .../ecb-images/default/height-14/ecb-open.xpm | 53 - .../ecb-images/default/height-15/CVS/Entries | 10 - .../default/height-15/CVS/Repository | 1 - .../ecb-images/default/height-15/CVS/Root | 1 - .../default/height-15/ecb-close.xpm | 53 - .../default/height-15/ecb-empty.xpm | 278 - .../default/height-15/ecb-end-guide.xpm | 278 - .../default/height-15/ecb-guide.xpm | 278 - .../default/height-15/ecb-handle.xpm | 21 - .../ecb-images/default/height-15/ecb-leaf.xpm | 278 - .../default/height-15/ecb-no-guide.xpm | 278 - .../default/height-15/ecb-no-handle.xpm | 20 - .../ecb-images/default/height-15/ecb-open.xpm | 55 - .../ecb-images/default/height-16/CVS/Entries | 10 - .../default/height-16/CVS/Repository | 1 - .../ecb-images/default/height-16/CVS/Root | 1 - .../default/height-16/ecb-close.xpm | 54 - .../default/height-16/ecb-empty.xpm | 279 - .../default/height-16/ecb-end-guide.xpm | 279 - .../default/height-16/ecb-guide.xpm | 279 - .../default/height-16/ecb-handle.xpm | 22 - .../ecb-images/default/height-16/ecb-leaf.xpm | 279 - .../default/height-16/ecb-no-guide.xpm | 279 - .../default/height-16/ecb-no-handle.xpm | 21 - .../ecb-images/default/height-16/ecb-open.xpm | 56 - .../ecb-images/default/height-17/CVS/Entries | 10 - .../default/height-17/CVS/Repository | 1 - .../ecb-images/default/height-17/CVS/Root | 1 - .../default/height-17/ecb-close.xpm | 55 - .../default/height-17/ecb-empty.xpm | 280 - .../default/height-17/ecb-end-guide.xpm | 280 - .../default/height-17/ecb-guide.xpm | 280 - .../default/height-17/ecb-handle.xpm | 23 - .../ecb-images/default/height-17/ecb-leaf.xpm | 280 - .../default/height-17/ecb-no-guide.xpm | 280 - .../default/height-17/ecb-no-handle.xpm | 22 - .../ecb-images/default/height-17/ecb-open.xpm | 57 - .../ecb-images/default/height-18/CVS/Entries | 10 - .../default/height-18/CVS/Repository | 1 - .../ecb-images/default/height-18/CVS/Root | 1 - .../default/height-18/ecb-close.xpm | 56 - .../default/height-18/ecb-empty.xpm | 281 - .../default/height-18/ecb-end-guide.xpm | 281 - .../default/height-18/ecb-guide.xpm | 281 - .../default/height-18/ecb-handle.xpm | 24 - .../ecb-images/default/height-18/ecb-leaf.xpm | 281 - .../default/height-18/ecb-no-guide.xpm | 281 - .../default/height-18/ecb-no-handle.xpm | 23 - .../ecb-images/default/height-18/ecb-open.xpm | 58 - .../ecb-images/default/height-19/CVS/Entries | 10 - .../default/height-19/CVS/Repository | 1 - .../ecb-images/default/height-19/CVS/Root | 1 - .../default/height-19/ecb-close.xpm | 57 - .../default/height-19/ecb-empty.xpm | 282 - .../default/height-19/ecb-end-guide.xpm | 282 - .../default/height-19/ecb-guide.xpm | 282 - .../default/height-19/ecb-handle.xpm | 25 - .../ecb-images/default/height-19/ecb-leaf.xpm | 282 - .../default/height-19/ecb-no-guide.xpm | 282 - .../default/height-19/ecb-no-handle.xpm | 24 - .../ecb-images/default/height-19/ecb-open.xpm | 59 - .../ecb-images/default/height-20/CVS/Entries | 10 - .../default/height-20/CVS/Repository | 1 - .../ecb-images/default/height-20/CVS/Root | 1 - .../default/height-20/ecb-close.xpm | 58 - .../default/height-20/ecb-empty.xpm | 283 - .../default/height-20/ecb-end-guide.xpm | 283 - .../default/height-20/ecb-guide.xpm | 283 - .../default/height-20/ecb-handle.xpm | 26 - .../ecb-images/default/height-20/ecb-leaf.xpm | 283 - .../default/height-20/ecb-no-guide.xpm | 283 - .../default/height-20/ecb-no-handle.xpm | 25 - .../ecb-images/default/height-20/ecb-open.xpm | 60 - .../ecb-images/default/height-21/CVS/Entries | 10 - .../default/height-21/CVS/Repository | 1 - .../ecb-images/default/height-21/CVS/Root | 1 - .../default/height-21/ecb-close.xpm | 59 - .../default/height-21/ecb-empty.xpm | 284 - .../default/height-21/ecb-end-guide.xpm | 284 - .../default/height-21/ecb-guide.xpm | 284 - .../default/height-21/ecb-handle.xpm | 27 - .../ecb-images/default/height-21/ecb-leaf.xpm | 284 - .../default/height-21/ecb-no-guide.xpm | 284 - .../default/height-21/ecb-no-handle.xpm | 26 - .../ecb-images/default/height-21/ecb-open.xpm | 61 - ecb-snap/ecb-images/directories/CVS/Entries | 9 - .../ecb-images/directories/CVS/Repository | 1 - ecb-snap/ecb-images/directories/CVS/Root | 1 - .../directories/height-10/CVS/Entries | 5 - .../directories/height-10/CVS/Repository | 1 - .../ecb-images/directories/height-10/CVS/Root | 1 - .../directories/height-10/ecb-close.xpm | 62 - .../directories/height-10/ecb-empty.xpm | 38 - .../directories/height-10/ecb-leaf.xpm | 32 - .../directories/height-10/ecb-open.xpm | 33 - .../directories/height-14/CVS/Entries | 5 - .../directories/height-14/CVS/Repository | 1 - .../ecb-images/directories/height-14/CVS/Root | 1 - .../directories/height-14/ecb-close.xpm | 277 - .../directories/height-14/ecb-empty.xpm | 277 - .../directories/height-14/ecb-leaf.xpm | 277 - .../directories/height-14/ecb-open.xpm | 277 - .../directories/height-15/CVS/Entries | 5 - .../directories/height-15/CVS/Repository | 1 - .../ecb-images/directories/height-15/CVS/Root | 1 - .../directories/height-15/ecb-close.xpm | 278 - .../directories/height-15/ecb-empty.xpm | 32 - .../directories/height-15/ecb-leaf.xpm | 278 - .../directories/height-15/ecb-open.xpm | 278 - .../directories/height-16/CVS/Entries | 5 - .../directories/height-16/CVS/Repository | 1 - .../ecb-images/directories/height-16/CVS/Root | 1 - .../directories/height-16/ecb-close.xpm | 279 - .../directories/height-16/ecb-empty.xpm | 33 - .../directories/height-16/ecb-leaf.xpm | 279 - .../directories/height-16/ecb-open.xpm | 279 - .../directories/height-17/CVS/Entries | 5 - .../directories/height-17/CVS/Repository | 1 - .../ecb-images/directories/height-17/CVS/Root | 1 - .../directories/height-17/ecb-close.xpm | 280 - .../directories/height-17/ecb-empty.xpm | 34 - .../directories/height-17/ecb-leaf.xpm | 280 - .../directories/height-17/ecb-open.xpm | 280 - .../directories/height-18/CVS/Entries | 5 - .../directories/height-18/CVS/Repository | 1 - .../ecb-images/directories/height-18/CVS/Root | 1 - .../directories/height-18/ecb-close.xpm | 281 - .../directories/height-18/ecb-empty.xpm | 35 - .../directories/height-18/ecb-leaf.xpm | 281 - .../directories/height-18/ecb-open.xpm | 281 - .../directories/height-19/CVS/Entries | 5 - .../directories/height-19/CVS/Repository | 1 - .../ecb-images/directories/height-19/CVS/Root | 1 - .../directories/height-19/ecb-close.xpm | 282 - .../directories/height-19/ecb-empty.xpm | 36 - .../directories/height-19/ecb-leaf.xpm | 282 - .../directories/height-19/ecb-open.xpm | 282 - .../directories/height-20/CVS/Entries | 5 - .../directories/height-20/CVS/Repository | 1 - .../ecb-images/directories/height-20/CVS/Root | 1 - .../directories/height-20/ecb-close.xpm | 283 - .../directories/height-20/ecb-empty.xpm | 37 - .../directories/height-20/ecb-leaf.xpm | 283 - .../directories/height-20/ecb-open.xpm | 283 - .../directories/height-21/CVS/Entries | 5 - .../directories/height-21/CVS/Repository | 1 - .../ecb-images/directories/height-21/CVS/Root | 1 - .../directories/height-21/ecb-close.xpm | 284 - .../directories/height-21/ecb-empty.xpm | 38 - .../directories/height-21/ecb-leaf.xpm | 284 - .../directories/height-21/ecb-open.xpm | 284 - ecb-snap/ecb-images/methods/CVS/Entries | 1 - ecb-snap/ecb-images/methods/CVS/Repository | 1 - ecb-snap/ecb-images/methods/CVS/Root | 1 - .../methods/height-14_to_21/CVS/Entries | 61 - .../methods/height-14_to_21/CVS/Repository | 1 - .../methods/height-14_to_21/CVS/Root | 1 - .../ecb-abstract-class-private.xpm | 49 - .../ecb-abstract-class-protected.xpm | 55 - .../ecb-abstract-class-public.xpm | 49 - .../ecb-abstract-class-unknown.xpm | 48 - .../ecb-abstract-constructor-private.xpm | 35 - .../ecb-abstract-constructor-protected.xpm | 42 - .../ecb-abstract-constructor-public.xpm | 34 - .../ecb-abstract-constructor-unknown.xpm | 32 - .../ecb-abstract-function-private-static.xpm | 61 - .../ecb-abstract-function-private.xpm | 37 - ...ecb-abstract-function-protected-static.xpm | 68 - .../ecb-abstract-function-protected.xpm | 44 - .../ecb-abstract-function-public-static.xpm | 61 - .../ecb-abstract-function-public.xpm | 36 - .../ecb-abstract-function-unknown-static.xpm | 60 - .../ecb-abstract-function-unknown.xpm | 35 - .../ecb-abstract-variable-private-static.xpm | 64 - .../ecb-abstract-variable-private.xpm | 48 - ...ecb-abstract-variable-protected-static.xpm | 68 - .../ecb-abstract-variable-protected.xpm | 54 - .../ecb-abstract-variable-public-static.xpm | 65 - .../ecb-abstract-variable-public.xpm | 48 - .../ecb-abstract-variable-unknown-static.xpm | 63 - .../ecb-abstract-variable-unknown.xpm | 46 - .../height-14_to_21/ecb-class-private.xpm | 57 - .../height-14_to_21/ecb-class-protected.xpm | 65 - .../height-14_to_21/ecb-class-public.xpm | 56 - .../height-14_to_21/ecb-class-unknown.xpm | 55 - .../ecb-constructor-bucket.xpm | 111 - .../ecb-constructor-private.xpm | 39 - .../ecb-constructor-protected.xpm | 48 - .../ecb-constructor-public.xpm | 39 - .../ecb-constructor-unknown.xpm | 36 - .../height-14_to_21/ecb-enum-private.xpm | 24 - .../height-14_to_21/ecb-enum-protected.xpm | 33 - .../height-14_to_21/ecb-enum-public.xpm | 23 - .../height-14_to_21/ecb-enum-unknown.xpm | 22 - .../height-14_to_21/ecb-function-bucket.xpm | 120 - .../ecb-function-private-static.xpm | 70 - .../height-14_to_21/ecb-function-private.xpm | 37 - .../ecb-function-protected-static.xpm | 77 - .../ecb-function-protected.xpm | 45 - .../ecb-function-public-static.xpm | 68 - .../height-14_to_21/ecb-function-public.xpm | 36 - .../ecb-function-unknown-static.xpm | 67 - .../height-14_to_21/ecb-function-unknown.xpm | 35 - .../height-14_to_21/ecb-parent-bucket.xpm | 205 - .../height-14_to_21/ecb-parent-private.xpm | 127 - .../height-14_to_21/ecb-parent-protected.xpm | 136 - .../height-14_to_21/ecb-parent-public.xpm | 126 - .../height-14_to_21/ecb-parent-unknown.xpm | 122 - .../height-14_to_21/ecb-variable-bucket.xpm | 133 - .../ecb-variable-private-static.xpm | 72 - .../height-14_to_21/ecb-variable-private.xpm | 56 - .../ecb-variable-protected-static.xpm | 80 - .../ecb-variable-protected.xpm | 64 - .../ecb-variable-public-static.xpm | 72 - .../height-14_to_21/ecb-variable-public.xpm | 56 - .../ecb-variable-unknown-static.xpm | 70 - .../height-14_to_21/ecb-variable-unknown.xpm | 54 - ecb-snap/ecb-images/sources/CVS/Entries | 1 - ecb-snap/ecb-images/sources/CVS/Repository | 1 - ecb-snap/ecb-images/sources/CVS/Root | 1 - .../sources/height-14_to_21/CVS/Entries | 9 - .../sources/height-14_to_21/CVS/Repository | 1 - .../sources/height-14_to_21/CVS/Root | 1 - .../sources/height-14_to_21/ecb-leaf.xpm | 277 - .../sources/height-14_to_21/ecb-vc-added.xpm | 27 - .../sources/height-14_to_21/ecb-vc-edited.xpm | 27 - .../height-14_to_21/ecb-vc-ignored.xpm | 27 - .../height-14_to_21/ecb-vc-needs-merge.xpm | 27 - .../height-14_to_21/ecb-vc-needs-patch.xpm | 28 - .../height-14_to_21/ecb-vc-unknown.xpm | 27 - .../height-14_to_21/ecb-vc-up-to-date.xpm | 27 - ecb-snap/ecb-jde.el | 179 - ecb-snap/ecb-jde.elc | Bin 4124 -> 0 bytes ecb-snap/ecb-layout-defs.el | 990 - ecb-snap/ecb-layout-defs.elc | Bin 57549 -> 0 bytes ecb-snap/ecb-layout.el | 6327 ------ ecb-snap/ecb-layout.elc | Bin 208779 -> 0 bytes ecb-snap/ecb-makedef.mk | 63 - ecb-snap/ecb-method-browser.el | 4798 ----- ecb-snap/ecb-method-browser.elc | Bin 179072 -> 0 bytes ecb-snap/ecb-mode-line.el | 339 - ecb-snap/ecb-mode-line.elc | Bin 10602 -> 0 bytes ecb-snap/ecb-multiframe.el | 195 - ecb-snap/ecb-multiframe.elc | Bin 3584 -> 0 bytes ecb-snap/ecb-navigate.el | 385 - ecb-snap/ecb-navigate.elc | Bin 10680 -> 0 bytes ecb-snap/ecb-semantic-wrapper.el | 412 - ecb-snap/ecb-semantic-wrapper.elc | Bin 15791 -> 0 bytes ecb-snap/ecb-semantic.el | 142 - ecb-snap/ecb-semantic.elc | Bin 3922 -> 0 bytes ecb-snap/ecb-speedbar.el | 567 - ecb-snap/ecb-speedbar.elc | Bin 18074 -> 0 bytes ecb-snap/ecb-symboldef.el | 649 - ecb-snap/ecb-symboldef.elc | Bin 17385 -> 0 bytes ecb-snap/ecb-tod.el | 149 - ecb-snap/ecb-tod.elc | Bin 8090 -> 0 bytes ecb-snap/ecb-upgrade.el | 1295 -- ecb-snap/ecb-upgrade.elc | Bin 39906 -> 0 bytes ecb-snap/ecb-util.el | 2363 --- ecb-snap/ecb-util.elc | Bin 71299 -> 0 bytes ecb-snap/ecb-winman-support.el | 319 - ecb-snap/ecb-winman-support.elc | Bin 12635 -> 0 bytes ecb-snap/ecb.el | 1954 -- ecb-snap/ecb.elc | Bin 51838 -> 0 bytes ecb-snap/ecb.texi | 15945 -------------- ecb-snap/ecb2/CVS/Entries | 7 - ecb-snap/ecb2/CVS/Repository | 1 - ecb-snap/ecb2/CVS/Root | 1 - ecb-snap/ecb2/jn-file-tree.el | 63 - ecb-snap/ecb2/jn-tree-node.el | 267 - ecb-snap/ecb2/jn-tree-view.el | 220 - ecb-snap/ecb2/jn-utils.el | 42 - ecb-snap/ecb2/jn-window.el | 237 - ecb-snap/ecb2/test.el | 83 - ecb-snap/html/CVS/Entries | 9 - ecb-snap/html/CVS/Repository | 1 - ecb-snap/html/CVS/Root | 1 - ecb-snap/html/Makefile | 161 - ecb-snap/html/bullet.gif | Bin 54 -> 0 bytes ecb-snap/html/ecb-html.el | 517 - ecb-snap/html/ecb_logo.gif | Bin 1198 -> 0 bytes ecb-snap/html/html-helper.el | 244 - ecb-snap/html/index.html | 21 - ecb-snap/html/mail.gif | Bin 199 -> 0 bytes ecb-snap/html/screenshots/1-thumb.png | Bin 53990 -> 0 bytes ecb-snap/html/screenshots/1.png | Bin 355558 -> 0 bytes ecb-snap/html/screenshots/10-thumb.png | Bin 42403 -> 0 bytes ecb-snap/html/screenshots/10.png | Bin 173157 -> 0 bytes ecb-snap/html/screenshots/11-thumb.png | Bin 46282 -> 0 bytes ecb-snap/html/screenshots/11.png | Bin 142622 -> 0 bytes ecb-snap/html/screenshots/12-thumb.png | Bin 41300 -> 0 bytes ecb-snap/html/screenshots/12.png | Bin 261414 -> 0 bytes ecb-snap/html/screenshots/2-thumb.png | Bin 47128 -> 0 bytes ecb-snap/html/screenshots/2.png | Bin 34230 -> 0 bytes ecb-snap/html/screenshots/3-thumb.png | Bin 56915 -> 0 bytes ecb-snap/html/screenshots/3.png | Bin 45075 -> 0 bytes ecb-snap/html/screenshots/4-thumb.png | Bin 50413 -> 0 bytes ecb-snap/html/screenshots/4.png | Bin 80814 -> 0 bytes ecb-snap/html/screenshots/5-thumb.png | Bin 32861 -> 0 bytes ecb-snap/html/screenshots/5.png | Bin 48450 -> 0 bytes ecb-snap/html/screenshots/6-thumb.png | Bin 34526 -> 0 bytes ecb-snap/html/screenshots/6.png | Bin 45793 -> 0 bytes ecb-snap/html/screenshots/7-thumb.png | Bin 44111 -> 0 bytes ecb-snap/html/screenshots/7.png | Bin 60804 -> 0 bytes ecb-snap/html/screenshots/8-thumb.png | Bin 33227 -> 0 bytes ecb-snap/html/screenshots/8.png | Bin 33492 -> 0 bytes ecb-snap/html/screenshots/9-thumb.png | Bin 56080 -> 0 bytes ecb-snap/html/screenshots/9.png | Bin 198399 -> 0 bytes ecb-snap/html/screenshots/CVS/Entries | 26 - ecb-snap/html/screenshots/CVS/Repository | 1 - ecb-snap/html/screenshots/CVS/Root | 1 - ecb-snap/html/screenshots/index.html | 120 - ecb-snap/html/smiley.gif | Bin 93 -> 0 bytes ecb-snap/make.bat | 74 - ecb-snap/silentcomp.el | 210 - ecb-snap/silentcomp.elc | Bin 3476 -> 0 bytes ecb-snap/tree-buffer.el | 3525 ---- ecb-snap/tree-buffer.elc | Bin 199598 -> 0 bytes fuzzy.el | 255 + org-mode | 1 - popup.el | 1061 + python-mode.el | 17308 ---------------- 1010 files changed, 249036 insertions(+), 101819 deletions(-) create mode 100644 ac-dict/ada-mode create mode 100644 ac-dict/c++-mode create mode 100644 ac-dict/c-mode create mode 100644 ac-dict/caml-mode create mode 100644 ac-dict/clojure-mode create mode 100644 ac-dict/clojurescript-mode create mode 100644 ac-dict/coq-mode create mode 100644 ac-dict/css-mode create mode 100644 ac-dict/erlang-mode create mode 100644 ac-dict/go-mode create mode 100644 ac-dict/haskell-mode create mode 100644 ac-dict/java-mode create mode 100644 ac-dict/javascript-mode create mode 100644 ac-dict/lua-mode create mode 100644 ac-dict/php-mode create mode 100644 ac-dict/python-mode create mode 100644 ac-dict/ruby-mode create mode 100644 ac-dict/scheme-mode create mode 100644 ac-dict/sclang-mode create mode 100644 ac-dict/sh-mode create mode 100644 ac-dict/tcl-mode create mode 100644 ac-dict/ts-mode create mode 100644 ac-dict/tuareg-mode create mode 100644 ac-dict/verilog-mode create mode 100644 auto-complete-config.el create mode 100644 auto-complete-pkg.el create mode 100644 auto-complete.el create mode 100644 cedet-bzr/trunk/.bzrignore create mode 100644 cedet-bzr/trunk/.cvsignore create mode 100644 cedet-bzr/trunk/.ede-ignore create mode 100644 cedet-bzr/trunk/CEDET_STYLE_GUIDE create mode 100644 cedet-bzr/trunk/INSTALL create mode 100644 cedet-bzr/trunk/Makefile create mode 100644 cedet-bzr/trunk/Makefile.wwwinfo create mode 100644 cedet-bzr/trunk/NEWS create mode 100644 cedet-bzr/trunk/PRERELEASE_CHECKLIST create mode 100644 cedet-bzr/trunk/USING_CEDET_FROM_BZR create mode 100644 cedet-bzr/trunk/cedet-build.el create mode 100644 cedet-bzr/trunk/cedet-devel-load.el create mode 100644 cedet-bzr/trunk/cedet-ediff.el create mode 100644 cedet-bzr/trunk/cedet-emacs-merge.el create mode 100644 cedet-bzr/trunk/cedet-remove-builtin.el create mode 100644 cedet-bzr/trunk/cedet-update-changelog.el create mode 100644 cedet-bzr/trunk/cedet-update-version.el create mode 100644 cedet-bzr/trunk/contrib/.cvsignore create mode 100644 cedet-bzr/trunk/contrib/INSTALL create mode 100644 cedet-bzr/trunk/contrib/Makefile create mode 100644 cedet-bzr/trunk/contrib/Project.ede create mode 100644 cedet-bzr/trunk/contrib/cedet-contrib-load.el create mode 100644 cedet-bzr/trunk/contrib/cedet-contrib.el create mode 100644 cedet-bzr/trunk/contrib/contrib-loaddefs.el create mode 100644 cedet-bzr/trunk/contrib/eassist.el create mode 100644 cedet-bzr/trunk/contrib/ede-gnustep.el create mode 100644 cedet-bzr/trunk/contrib/semantic-ectag-scala.el create mode 100644 cedet-bzr/trunk/contrib/semantic-tag-folding.el create mode 100644 cedet-bzr/trunk/contrib/wisent-csharp-wy.el create mode 100644 cedet-bzr/trunk/contrib/wisent-csharp.el create mode 100644 cedet-bzr/trunk/contrib/wisent-csharp.wy create mode 100644 cedet-bzr/trunk/contrib/wisent-php-wy.el create mode 100644 cedet-bzr/trunk/contrib/wisent-php.el create mode 100644 cedet-bzr/trunk/contrib/wisent-php.wy create mode 100644 cedet-bzr/trunk/contrib/wisent-ruby-wy.el create mode 100644 cedet-bzr/trunk/contrib/wisent-ruby.el create mode 100644 cedet-bzr/trunk/contrib/wisent-ruby.wy create mode 100644 cedet-bzr/trunk/doc/ONEWS-semantic create mode 100644 cedet-bzr/trunk/doc/OONEWS-semantic create mode 100644 cedet-bzr/trunk/doc/info/bovine.info create mode 100644 cedet-bzr/trunk/doc/info/cedet.info create mode 100644 cedet-bzr/trunk/doc/info/cogre.info create mode 100644 cedet-bzr/trunk/doc/info/dir create mode 100644 cedet-bzr/trunk/doc/info/ede.info create mode 100644 cedet-bzr/trunk/doc/info/eieio.info create mode 100644 cedet-bzr/trunk/doc/info/grammar-fw.info create mode 100644 cedet-bzr/trunk/doc/info/semantic-appdev.info create mode 100644 cedet-bzr/trunk/doc/info/semantic-langdev.info create mode 100644 cedet-bzr/trunk/doc/info/semantic-user.info create mode 100644 cedet-bzr/trunk/doc/info/semantic.info create mode 100644 cedet-bzr/trunk/doc/info/srecode.info create mode 100644 cedet-bzr/trunk/doc/info/wisent.info create mode 100644 cedet-bzr/trunk/doc/texi/Makefile create mode 100644 cedet-bzr/trunk/doc/texi/Project.ede create mode 100644 cedet-bzr/trunk/doc/texi/cedet.info create mode 100644 cedet-bzr/trunk/doc/texi/cedet.texi create mode 100644 cedet-bzr/trunk/doc/texi/cogre.info create mode 100644 cedet-bzr/trunk/doc/texi/cogre.texi create mode 100644 cedet-bzr/trunk/doc/texi/doclicense.texi create mode 100644 cedet-bzr/trunk/doc/texi/ede.info create mode 100644 cedet-bzr/trunk/doc/texi/ede.texi create mode 100644 cedet-bzr/trunk/doc/texi/eieio.info create mode 100644 cedet-bzr/trunk/doc/texi/eieio.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/.cvsignore create mode 100644 cedet-bzr/trunk/doc/texi/semantic/Makefile create mode 100644 cedet-bzr/trunk/doc/texi/semantic/Project.ede create mode 100644 cedet-bzr/trunk/doc/texi/semantic/app-dev-guide.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/bovine.info create mode 100644 cedet-bzr/trunk/doc/texi/semantic/bovine.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/fdl.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/glossary.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/grammar-fw-ov.dia create mode 100644 cedet-bzr/trunk/doc/texi/semantic/grammar-fw-ov.png create mode 100644 cedet-bzr/trunk/doc/texi/semantic/grammar-fw-ov.txt create mode 100644 cedet-bzr/trunk/doc/texi/semantic/grammar-fw.info create mode 100644 cedet-bzr/trunk/doc/texi/semantic/grammar-fw.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/installation.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/internals.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/lang-support-guide.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/minor-modes.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/overview.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/semantic-appdev.info create mode 100644 cedet-bzr/trunk/doc/texi/semantic/semantic-langdev.info create mode 100644 cedet-bzr/trunk/doc/texi/semantic/semantic-user.info create mode 100644 cedet-bzr/trunk/doc/texi/semantic/semantic.info create mode 100644 cedet-bzr/trunk/doc/texi/semantic/semantic.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/semanticheader.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/tags.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/user-guide.texi create mode 100644 cedet-bzr/trunk/doc/texi/semantic/wisent.info create mode 100644 cedet-bzr/trunk/doc/texi/semantic/wisent.texi create mode 100644 cedet-bzr/trunk/doc/texi/srecode.info create mode 100644 cedet-bzr/trunk/doc/texi/srecode.texi create mode 100644 cedet-bzr/trunk/etc/ede/proj-skel.el create mode 100644 cedet-bzr/trunk/etc/fallback-libraries/README create mode 100644 cedet-bzr/trunk/etc/fallback-libraries/autoload.el create mode 100644 cedet-bzr/trunk/etc/images/cogre-arrow.xpm create mode 100644 cedet-bzr/trunk/etc/images/cogre-class.xpm create mode 100644 cedet-bzr/trunk/etc/images/cogre-hasa.xpm create mode 100644 cedet-bzr/trunk/etc/images/cogre-instance.xpm create mode 100644 cedet-bzr/trunk/etc/images/cogre-isa.xpm create mode 100644 cedet-bzr/trunk/etc/images/cogre-link.xpm create mode 100644 cedet-bzr/trunk/etc/images/cogre-node.xpm create mode 100644 cedet-bzr/trunk/etc/images/cogre-note.xpm create mode 100644 cedet-bzr/trunk/etc/images/cogre-package.xpm create mode 100644 cedet-bzr/trunk/etc/semantic/bovine/skel.el create mode 100644 cedet-bzr/trunk/etc/semantic/bovine/skeleton.by create mode 100644 cedet-bzr/trunk/etc/semantic/db-skel.el create mode 100644 cedet-bzr/trunk/etc/semantic/example.el create mode 100755 cedet-bzr/trunk/etc/semantic/semanticdb.sh create mode 100644 cedet-bzr/trunk/etc/srecode/Makefile create mode 100644 cedet-bzr/trunk/etc/srecode/Project.ede create mode 100644 cedet-bzr/trunk/etc/srecode/android-java.srt create mode 100644 cedet-bzr/trunk/etc/srecode/arduino-pde.srt create mode 100644 cedet-bzr/trunk/etc/srecode/c.srt create mode 100644 cedet-bzr/trunk/etc/srecode/cogre-default.srt create mode 100644 cedet-bzr/trunk/etc/srecode/cpp.srt create mode 100644 cedet-bzr/trunk/etc/srecode/default.srt create mode 100644 cedet-bzr/trunk/etc/srecode/doc-cpp.srt create mode 100644 cedet-bzr/trunk/etc/srecode/doc-default.srt create mode 100644 cedet-bzr/trunk/etc/srecode/doc-java.srt create mode 100644 cedet-bzr/trunk/etc/srecode/ede-autoconf.srt create mode 100644 cedet-bzr/trunk/etc/srecode/ede-make.srt create mode 100644 cedet-bzr/trunk/etc/srecode/el.srt create mode 100644 cedet-bzr/trunk/etc/srecode/getset-cpp.srt create mode 100644 cedet-bzr/trunk/etc/srecode/html.srt create mode 100644 cedet-bzr/trunk/etc/srecode/java.srt create mode 100644 cedet-bzr/trunk/etc/srecode/make.srt create mode 100644 cedet-bzr/trunk/etc/srecode/proj-test.srt create mode 100644 cedet-bzr/trunk/etc/srecode/srecode-dot.srt create mode 100644 cedet-bzr/trunk/etc/srecode/template.srt create mode 100644 cedet-bzr/trunk/etc/srecode/test.srt create mode 100644 cedet-bzr/trunk/etc/srecode/texi.srt create mode 100644 cedet-bzr/trunk/etc/srecode/wisent.srt create mode 100755 cedet-bzr/trunk/gettodos.sh create mode 100644 cedet-bzr/trunk/lisp/Makefile create mode 100644 cedet-bzr/trunk/lisp/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/Makefile create mode 100644 cedet-bzr/trunk/lisp/cedet/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/cedet-android.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cedet-compat.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cedet-cscope.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cedet-edebug.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cedet-files.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cedet-global.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cedet-graphviz.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cedet-idutils.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cedet-java.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cedet-m3.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cedet.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/Makefile create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/ascii.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/convert.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/dot-mode.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/layout.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/loaddefs.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/mode.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/periodic.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/picture-hack.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/semantic.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/srecode.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/test.dot create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/uml.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/wisent-dot-wy.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/wisent-dot.el create mode 100644 cedet-bzr/trunk/lisp/cedet/cogre/wisent-dot.wy create mode 100644 cedet-bzr/trunk/lisp/cedet/data-debug.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/Makefile create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/android.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/ant.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/arduino.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/auto.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/autoconf-edit.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/base.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/cpp-root.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/custom.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/dired.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/emacs.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/files.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/generic.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/java-root.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/jvm-base.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/lein2.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/linux.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/loaddefs.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/locate.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/m3.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/make.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/makefile-edit.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/maven2.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/pconf.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/pmake.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/proj-archive.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/proj-aux.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/proj-comp.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/proj-elisp.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/proj-info.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/proj-misc.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/proj-obj.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/proj-prog.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/proj-scheme.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/proj-shared.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/proj.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/project-am.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/shell.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/source.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/speedbar.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/srecode.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/system.el create mode 100644 cedet-bzr/trunk/lisp/cedet/ede/util.el create mode 100644 cedet-bzr/trunk/lisp/cedet/fame.el create mode 100644 cedet-bzr/trunk/lisp/cedet/inversion.el create mode 100644 cedet-bzr/trunk/lisp/cedet/loaddefs.el create mode 100644 cedet-bzr/trunk/lisp/cedet/mode-local.el create mode 100644 cedet-bzr/trunk/lisp/cedet/pprint.el create mode 100644 cedet-bzr/trunk/lisp/cedet/pulse.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/Makefile create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/adebug.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/analyze.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/analyze/Makefile create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/analyze/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/analyze/complete.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/analyze/debug.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/analyze/fcn.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/analyze/refs.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ast.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/Makefile create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/c-by.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/c.by create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/c.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/clang.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/debug.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/el.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/erlang-by.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/erlang.by create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/erlang.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/f90-by.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/f90.by create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/f90.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/gcc.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/grammar-macros.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/grammar.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/make-by.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/make.by create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/make.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/scm-by.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/scm.by create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/bovine/scm.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/canned-configs.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/chart.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/complete.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ctxt.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/custom.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-cscope.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-debug.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-ebrowse.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-el.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-file.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-find.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-global.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-javap.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-javascript.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-mk.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-mode.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-mozrepl.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-ref.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-search.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db-typecache.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/db.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/debug.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/decorate.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/decorate/Makefile create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/decorate/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/decorate/include.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/decorate/mode.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/dep.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/doc.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ectags/Makefile create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ectags/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ectags/db.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ectags/lang.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ectags/lang2.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ectags/parse.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ectags/util.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ede-grammar.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/edit.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/elp.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/find.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/format.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/fw.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/gram-wy-fallback.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/grammar-wy.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/grammar.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/grammar.wy create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/html.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ia-sb.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/ia.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/idle.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/imenu.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/java.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/lex-spp.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/lex.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/loaddefs.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/m3.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/mru-bookmark.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/sb.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/scope.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/senator.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/sort.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/symref.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/symref/Makefile create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/symref/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/symref/cscope.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/symref/filter.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/symref/global.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/symref/grep.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/symref/idutils.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/symref/list.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/tag-file.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/tag-ls.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/tag-write.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/tag.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/texi.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/util-modes.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/util.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/Makefile create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/bison-wisent.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/calc-wy.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/calc.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/calc.wy create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/comp.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/debug.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/expr.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/grammar-macros.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/grammar.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/java-tags-wy.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/java-tags.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/java-tags.wy create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/java-wy.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/java.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/java.wy create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/javascript-wy.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/javascript.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/javascript.wy create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/python-wy.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/python.el create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/python.wy create mode 100644 cedet-bzr/trunk/lisp/cedet/semantic/wisent/wisent.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/Makefile create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/Project.ede create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/android.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/args.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/compile.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/cpp.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/ctxt.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/dictionary.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/document.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/el.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/expandproto.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/extract.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/fields.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/filters.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/find.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/getset.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/insert.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/java.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/loaddefs.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/m3.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/map.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/mode.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/semantic.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/srt-mode.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/srt-wy.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/srt.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/srt.wy create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/table.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/template.el create mode 100644 cedet-bzr/trunk/lisp/cedet/srecode/texi.el create mode 100644 cedet-bzr/trunk/lisp/cedet/working.el create mode 100644 cedet-bzr/trunk/lisp/eieio/Makefile create mode 100644 cedet-bzr/trunk/lisp/eieio/Project.ede create mode 100644 cedet-bzr/trunk/lisp/eieio/chart.el create mode 100644 cedet-bzr/trunk/lisp/eieio/eieio-base.el create mode 100644 cedet-bzr/trunk/lisp/eieio/eieio-core.el create mode 100644 cedet-bzr/trunk/lisp/eieio/eieio-custom.el create mode 100644 cedet-bzr/trunk/lisp/eieio/eieio-datadebug.el create mode 100644 cedet-bzr/trunk/lisp/eieio/eieio-opt.el create mode 100644 cedet-bzr/trunk/lisp/eieio/eieio-speedbar.el create mode 100644 cedet-bzr/trunk/lisp/eieio/eieio.el create mode 100644 cedet-bzr/trunk/lisp/eieio/linemark.el create mode 100644 cedet-bzr/trunk/lisp/eieio/loaddefs.el create mode 100644 cedet-bzr/trunk/lisp/speedbar/Makefile create mode 100644 cedet-bzr/trunk/lisp/speedbar/Project.ede create mode 100644 cedet-bzr/trunk/lisp/speedbar/README create mode 100644 cedet-bzr/trunk/lisp/speedbar/loaddefs.el create mode 100644 cedet-bzr/trunk/lisp/speedbar/rpm.el create mode 100644 cedet-bzr/trunk/lisp/speedbar/sb-ant.el create mode 100644 cedet-bzr/trunk/lisp/speedbar/sb-html.el create mode 100644 cedet-bzr/trunk/lisp/speedbar/sb-info.el create mode 100644 cedet-bzr/trunk/lisp/speedbar/sb-rmail.el create mode 100644 cedet-bzr/trunk/lisp/speedbar/sb-texinfo.el create mode 100644 cedet-bzr/trunk/obsolete/doc/semantic/C99-gram.texi create mode 100644 cedet-bzr/trunk/obsolete/doc/speedbar.texi create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/bits.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/bitsbang.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/box-minus.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/box-plus.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/box.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/checkmark.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/dir-minus.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/dir-plus.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/dir.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/doc-minus.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/doc-plus.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/doc.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/info.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/key.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/label.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/lock.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/mail.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/page-minus.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/page-plus.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/page.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/tag-gt.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/tag-minus.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/tag-plus.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/tag-type.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/tag-v.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/tag.xpm create mode 100644 cedet-bzr/trunk/obsolete/etc/images/ezimage/unlock.xpm create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/cedet-autogen.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/ede/autoconf-compat.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/semantic/bovine/erlang-edoc.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/semantic/db-java.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/semantic/db-system.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/semantic/fold.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/semantic/inc.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/semantic/semanticdb-java.clj create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/semantic/wisent/awk.wy create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/semantic/wisent/c.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/semantic/wisent/c.wy create mode 100644 cedet-bzr/trunk/obsolete/lisp/cedet/semantic/wisent/cim.wy create mode 100644 cedet-bzr/trunk/obsolete/lisp/eieio/call-tree.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/eieio/eieio-comp.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/eieio/eieio-doc.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/eieio/eieio-xml.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/eieio/eieiocomp.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/eieio/lmcompile.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/eieio/psql.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/eieio/tree.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/ezimage/ezimage.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/speedbar/bigclock.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/speedbar/dframe.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/speedbar/fsum.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/speedbar/sb-gud.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/speedbar/sb-image.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/speedbar/sb-w3.el create mode 100644 cedet-bzr/trunk/obsolete/lisp/speedbar/speedbar.el create mode 100755 cedet-bzr/trunk/testdist.sh create mode 100644 cedet-bzr/trunk/testprojects/README create mode 100644 cedet-bzr/trunk/tests/.cvsignore create mode 100644 cedet-bzr/trunk/tests/Makefile create mode 100644 cedet-bzr/trunk/tests/Project.ede create mode 100644 cedet-bzr/trunk/tests/README create mode 100644 cedet-bzr/trunk/tests/cedet-files-utests.el create mode 100644 cedet-bzr/trunk/tests/cedet-integ-test.el create mode 100644 cedet-bzr/trunk/tests/cedet-utests.el create mode 100644 cedet-bzr/trunk/tests/cedet-uutil.el create mode 100644 cedet-bzr/trunk/tests/cedet/cogre/Makefile create mode 100644 cedet-bzr/trunk/tests/cedet/cogre/convert-utest.el create mode 100644 cedet-bzr/trunk/tests/cedet/cogre/periodic-utest.el create mode 100644 cedet-bzr/trunk/tests/cedet/cogre/testclasses.hh create mode 100644 cedet-bzr/trunk/tests/cedet/cogre/utest.el create mode 100644 cedet-bzr/trunk/tests/cedet/ede/locate.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/complete.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/db-ebrowse.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/db-find.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/db-global.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/find.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/fmt-utest.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/format.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/gcc-utest.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/ia-utest.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/idle.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/lex-spp-utest.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/lex-utest.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/regtest.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/stltest.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tag-write.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/Makefile create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/Project.ede create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/gr-test.wy create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/maven2-testproject/README create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/maven2-testproject/rootproject/child1project/pom.xml create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/maven2-testproject/rootproject/child1project/src/main/java/cedet/test/child1project/App.java create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/maven2-testproject/rootproject/child1project/src/test/java/cedet/test/child1project/AppTest.java create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/maven2-testproject/rootproject/child2project/pom.xml create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/maven2-testproject/rootproject/child2project/src/main/java/cedet/test/child2project/App.java create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/maven2-testproject/rootproject/child2project/src/test/java/cedet/test/child2project/AppTest.java create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/maven2-testproject/rootproject/pom.xml create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/scopetest.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/scopetest.java create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/templates.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/test-fmt.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/test-fmt.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/test.c create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/test.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/test.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/test.make create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/test.py create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testdoublens.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testdoublens.hpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testf90.f90 create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testfriends.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testjavacomp.java create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testmodule.f90 create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testnsp.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testpolymorph.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testspp.c create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testsppcomplete.c create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testsppcond.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testsppreplace.c create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testsppreplaced.c create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/teststruct.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testsubclass.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testsubclass.hh create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testtemplates.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testtypedefs.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testusing.cpp create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testusing.hh create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/tests/testvarnames.c create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/utest-c.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/utest-fw.el create mode 100644 cedet-bzr/trunk/tests/cedet/semantic/utest-parse.el create mode 100644 cedet-bzr/trunk/tests/cedet/srecode/document.el create mode 100644 cedet-bzr/trunk/tests/cedet/srecode/fields-utest.el create mode 100644 cedet-bzr/trunk/tests/cedet/srecode/test-getset.el create mode 100644 cedet-bzr/trunk/tests/cedet/srecode/test.el create mode 100644 cedet-bzr/trunk/tests/cit-android.el create mode 100644 cedet-bzr/trunk/tests/cit-arduino.el create mode 100644 cedet-bzr/trunk/tests/cit-cpp.el create mode 100644 cedet-bzr/trunk/tests/cit-cpproot.el create mode 100644 cedet-bzr/trunk/tests/cit-dist.el create mode 100644 cedet-bzr/trunk/tests/cit-el.el create mode 100644 cedet-bzr/trunk/tests/cit-externaldb.el create mode 100644 cedet-bzr/trunk/tests/cit-extra-cpp.srt create mode 100644 cedet-bzr/trunk/tests/cit-gnustep.el create mode 100644 cedet-bzr/trunk/tests/cit-javaroot.el create mode 100644 cedet-bzr/trunk/tests/cit-load.el create mode 100644 cedet-bzr/trunk/tests/cit-proj-cpp.srt create mode 100644 cedet-bzr/trunk/tests/cit-projvar.el create mode 100644 cedet-bzr/trunk/tests/cit-srec.el create mode 100644 cedet-bzr/trunk/tests/cit-symref.el create mode 100755 cedet-bzr/trunk/tests/cit-test.sh create mode 100644 cedet-bzr/trunk/tests/cit-texi.el create mode 100644 cedet-bzr/trunk/tests/cit-uml.cgr create mode 100644 cedet-bzr/trunk/tests/cit-uml.el create mode 100644 cedet-bzr/trunk/tests/eieio/eieio-perftest.el create mode 100644 cedet-bzr/trunk/tests/eieio/eieio-test-methodinvoke.el create mode 100644 cedet-bzr/trunk/tests/eieio/eieio-test-mro.el create mode 100644 cedet-bzr/trunk/tests/eieio/eieio-test-persist.el create mode 100644 cedet-bzr/trunk/tests/eieio/eieio-tests.el create mode 100644 cedet-bzr/trunk/tests/integ_src/cpproot/main.cpp create mode 100644 cedet-bzr/trunk/tests/integ_src/cpproot/projinc/projincmacros.h create mode 100644 cedet-bzr/trunk/tests/integ_src/cpproot/sppmacros.h create mode 100644 cedet-bzr/trunk/tests/integ_src/cpproot/test.h create mode 100644 cedet-bzr/trunk/tests/integ_src/fauxsyslib/README create mode 100644 cedet-bzr/trunk/tests/integ_src/fauxsyslib/TestSys.jar create mode 100644 cedet-bzr/trunk/tests/integ_src/fauxsyslib/cpprootsys.h create mode 100644 cedet-bzr/trunk/tests/integ_src/fauxsyslib/java/syslib/Makefile create mode 100644 cedet-bzr/trunk/tests/integ_src/fauxsyslib/java/syslib/TestSysJar.java create mode 100644 cedet-bzr/trunk/tests/integ_src/javaroot/TestLib.java create mode 100644 cedet-bzr/trunk/tests/integ_src/javaroot/TestMain.java create mode 100644 cedet-bzr/trunk/tests/integ_src/javaroot/projjar/TestProj.jar create mode 100644 cedet-bzr/trunk/tests/integ_src/javaroot/src/testproj/Makefile create mode 100644 cedet-bzr/trunk/tests/integ_src/javaroot/src/testproj/TestInJar.java create mode 100644 cedet-bzr/trunk/tests/integ_src/javaroot/test/TestTest.java create mode 100644 cedet-bzr/trunk/tests/inversion-utest.el create mode 100644 cedet-bzr/trunk/tests/pulse-utest.el mode change 120000 => 160000 ecb delete mode 100644 ecb-snap/CVS/Entries delete mode 100644 ecb-snap/CVS/Repository delete mode 100644 ecb-snap/CVS/Root delete mode 100644 ecb-snap/CYCLE_PROPOSAL delete mode 100644 ecb-snap/Makefile delete mode 100644 ecb-snap/Makefile.~1.119.~ delete mode 100644 ecb-snap/NEWS delete mode 100644 ecb-snap/README delete mode 100644 ecb-snap/RELEASE_NOTES delete mode 100644 ecb-snap/TODO delete mode 100755 ecb-snap/ecb-advice-test.el delete mode 100644 ecb-snap/ecb-advice-test.elc delete mode 100644 ecb-snap/ecb-analyse.el delete mode 100644 ecb-snap/ecb-analyse.elc delete mode 100644 ecb-snap/ecb-autogen.el delete mode 100644 ecb-snap/ecb-autogen.elc delete mode 100644 ecb-snap/ecb-buffertab.el delete mode 100644 ecb-snap/ecb-buffertab.elc delete mode 100755 ecb-snap/ecb-cedet-wrapper.el delete mode 100644 ecb-snap/ecb-cedet-wrapper.elc delete mode 100644 ecb-snap/ecb-common-browser.el delete mode 100644 ecb-snap/ecb-common-browser.elc delete mode 100644 ecb-snap/ecb-compatibility.el delete mode 100644 ecb-snap/ecb-compatibility.elc delete mode 100644 ecb-snap/ecb-compilation.el delete mode 100644 ecb-snap/ecb-compilation.elc delete mode 100644 ecb-snap/ecb-create-layout.el delete mode 100644 ecb-snap/ecb-create-layout.elc delete mode 100644 ecb-snap/ecb-cycle.el delete mode 100644 ecb-snap/ecb-cycle.elc delete mode 100644 ecb-snap/ecb-eshell.el delete mode 100644 ecb-snap/ecb-eshell.elc delete mode 100644 ecb-snap/ecb-examples.el delete mode 100644 ecb-snap/ecb-examples.elc delete mode 100644 ecb-snap/ecb-face.el delete mode 100644 ecb-snap/ecb-face.elc delete mode 100644 ecb-snap/ecb-file-browser.el delete mode 100644 ecb-snap/ecb-file-browser.elc delete mode 100644 ecb-snap/ecb-help.el delete mode 100644 ecb-snap/ecb-help.elc delete mode 100644 ecb-snap/ecb-images/CVS/Entries delete mode 100644 ecb-snap/ecb-images/CVS/Repository delete mode 100644 ecb-snap/ecb-images/CVS/Root delete mode 100644 ecb-snap/ecb-images/default/CVS/Entries delete mode 100644 ecb-snap/ecb-images/default/CVS/Repository delete mode 100644 ecb-snap/ecb-images/default/CVS/Root delete mode 100644 ecb-snap/ecb-images/default/height-10/CVS/Entries delete mode 100644 ecb-snap/ecb-images/default/height-10/CVS/Repository delete mode 100644 ecb-snap/ecb-images/default/height-10/CVS/Root delete mode 100644 ecb-snap/ecb-images/default/height-10/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/default/height-10/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/default/height-10/ecb-end-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-10/ecb-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-10/ecb-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-10/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/default/height-10/ecb-no-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-10/ecb-no-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-10/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/default/height-14/CVS/Entries delete mode 100644 ecb-snap/ecb-images/default/height-14/CVS/Repository delete mode 100644 ecb-snap/ecb-images/default/height-14/CVS/Root delete mode 100644 ecb-snap/ecb-images/default/height-14/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/default/height-14/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/default/height-14/ecb-end-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-14/ecb-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-14/ecb-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-14/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/default/height-14/ecb-no-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-14/ecb-no-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-14/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/default/height-15/CVS/Entries delete mode 100644 ecb-snap/ecb-images/default/height-15/CVS/Repository delete mode 100644 ecb-snap/ecb-images/default/height-15/CVS/Root delete mode 100644 ecb-snap/ecb-images/default/height-15/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/default/height-15/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/default/height-15/ecb-end-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-15/ecb-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-15/ecb-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-15/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/default/height-15/ecb-no-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-15/ecb-no-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-15/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/default/height-16/CVS/Entries delete mode 100644 ecb-snap/ecb-images/default/height-16/CVS/Repository delete mode 100644 ecb-snap/ecb-images/default/height-16/CVS/Root delete mode 100644 ecb-snap/ecb-images/default/height-16/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/default/height-16/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/default/height-16/ecb-end-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-16/ecb-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-16/ecb-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-16/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/default/height-16/ecb-no-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-16/ecb-no-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-16/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/default/height-17/CVS/Entries delete mode 100644 ecb-snap/ecb-images/default/height-17/CVS/Repository delete mode 100644 ecb-snap/ecb-images/default/height-17/CVS/Root delete mode 100644 ecb-snap/ecb-images/default/height-17/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/default/height-17/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/default/height-17/ecb-end-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-17/ecb-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-17/ecb-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-17/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/default/height-17/ecb-no-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-17/ecb-no-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-17/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/default/height-18/CVS/Entries delete mode 100644 ecb-snap/ecb-images/default/height-18/CVS/Repository delete mode 100644 ecb-snap/ecb-images/default/height-18/CVS/Root delete mode 100644 ecb-snap/ecb-images/default/height-18/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/default/height-18/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/default/height-18/ecb-end-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-18/ecb-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-18/ecb-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-18/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/default/height-18/ecb-no-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-18/ecb-no-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-18/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/default/height-19/CVS/Entries delete mode 100644 ecb-snap/ecb-images/default/height-19/CVS/Repository delete mode 100644 ecb-snap/ecb-images/default/height-19/CVS/Root delete mode 100644 ecb-snap/ecb-images/default/height-19/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/default/height-19/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/default/height-19/ecb-end-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-19/ecb-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-19/ecb-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-19/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/default/height-19/ecb-no-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-19/ecb-no-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-19/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/default/height-20/CVS/Entries delete mode 100644 ecb-snap/ecb-images/default/height-20/CVS/Repository delete mode 100644 ecb-snap/ecb-images/default/height-20/CVS/Root delete mode 100644 ecb-snap/ecb-images/default/height-20/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/default/height-20/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/default/height-20/ecb-end-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-20/ecb-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-20/ecb-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-20/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/default/height-20/ecb-no-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-20/ecb-no-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-20/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/default/height-21/CVS/Entries delete mode 100644 ecb-snap/ecb-images/default/height-21/CVS/Repository delete mode 100644 ecb-snap/ecb-images/default/height-21/CVS/Root delete mode 100644 ecb-snap/ecb-images/default/height-21/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/default/height-21/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/default/height-21/ecb-end-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-21/ecb-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-21/ecb-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-21/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/default/height-21/ecb-no-guide.xpm delete mode 100644 ecb-snap/ecb-images/default/height-21/ecb-no-handle.xpm delete mode 100644 ecb-snap/ecb-images/default/height-21/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/directories/CVS/Entries delete mode 100644 ecb-snap/ecb-images/directories/CVS/Repository delete mode 100644 ecb-snap/ecb-images/directories/CVS/Root delete mode 100644 ecb-snap/ecb-images/directories/height-10/CVS/Entries delete mode 100644 ecb-snap/ecb-images/directories/height-10/CVS/Repository delete mode 100644 ecb-snap/ecb-images/directories/height-10/CVS/Root delete mode 100644 ecb-snap/ecb-images/directories/height-10/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-10/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-10/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-10/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-14/CVS/Entries delete mode 100644 ecb-snap/ecb-images/directories/height-14/CVS/Repository delete mode 100644 ecb-snap/ecb-images/directories/height-14/CVS/Root delete mode 100644 ecb-snap/ecb-images/directories/height-14/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-14/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-14/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-14/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-15/CVS/Entries delete mode 100644 ecb-snap/ecb-images/directories/height-15/CVS/Repository delete mode 100644 ecb-snap/ecb-images/directories/height-15/CVS/Root delete mode 100644 ecb-snap/ecb-images/directories/height-15/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-15/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-15/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-15/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-16/CVS/Entries delete mode 100644 ecb-snap/ecb-images/directories/height-16/CVS/Repository delete mode 100644 ecb-snap/ecb-images/directories/height-16/CVS/Root delete mode 100644 ecb-snap/ecb-images/directories/height-16/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-16/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-16/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-16/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-17/CVS/Entries delete mode 100644 ecb-snap/ecb-images/directories/height-17/CVS/Repository delete mode 100644 ecb-snap/ecb-images/directories/height-17/CVS/Root delete mode 100644 ecb-snap/ecb-images/directories/height-17/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-17/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-17/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-17/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-18/CVS/Entries delete mode 100644 ecb-snap/ecb-images/directories/height-18/CVS/Repository delete mode 100644 ecb-snap/ecb-images/directories/height-18/CVS/Root delete mode 100644 ecb-snap/ecb-images/directories/height-18/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-18/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-18/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-18/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-19/CVS/Entries delete mode 100644 ecb-snap/ecb-images/directories/height-19/CVS/Repository delete mode 100644 ecb-snap/ecb-images/directories/height-19/CVS/Root delete mode 100644 ecb-snap/ecb-images/directories/height-19/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-19/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-19/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-19/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-20/CVS/Entries delete mode 100644 ecb-snap/ecb-images/directories/height-20/CVS/Repository delete mode 100644 ecb-snap/ecb-images/directories/height-20/CVS/Root delete mode 100644 ecb-snap/ecb-images/directories/height-20/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-20/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-20/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-20/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-21/CVS/Entries delete mode 100644 ecb-snap/ecb-images/directories/height-21/CVS/Repository delete mode 100644 ecb-snap/ecb-images/directories/height-21/CVS/Root delete mode 100644 ecb-snap/ecb-images/directories/height-21/ecb-close.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-21/ecb-empty.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-21/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/directories/height-21/ecb-open.xpm delete mode 100644 ecb-snap/ecb-images/methods/CVS/Entries delete mode 100644 ecb-snap/ecb-images/methods/CVS/Repository delete mode 100644 ecb-snap/ecb-images/methods/CVS/Root delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/CVS/Entries delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/CVS/Repository delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/CVS/Root delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-class-private.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-class-protected.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-class-public.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-class-unknown.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-constructor-private.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-constructor-protected.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-constructor-public.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-constructor-unknown.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-function-private-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-function-private.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-function-protected-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-function-protected.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-function-public-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-function-public.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-function-unknown-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-function-unknown.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-variable-private-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-variable-private.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-variable-protected-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-variable-protected.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-variable-public-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-variable-public.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-variable-unknown-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-abstract-variable-unknown.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-class-private.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-class-protected.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-class-public.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-class-unknown.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-constructor-bucket.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-constructor-private.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-constructor-protected.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-constructor-public.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-constructor-unknown.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-enum-private.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-enum-protected.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-enum-public.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-enum-unknown.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-function-bucket.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-function-private-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-function-private.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-function-protected-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-function-protected.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-function-public-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-function-public.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-function-unknown-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-function-unknown.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-parent-bucket.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-parent-private.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-parent-protected.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-parent-public.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-parent-unknown.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-variable-bucket.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-variable-private-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-variable-private.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-variable-protected-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-variable-protected.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-variable-public-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-variable-public.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-variable-unknown-static.xpm delete mode 100644 ecb-snap/ecb-images/methods/height-14_to_21/ecb-variable-unknown.xpm delete mode 100644 ecb-snap/ecb-images/sources/CVS/Entries delete mode 100644 ecb-snap/ecb-images/sources/CVS/Repository delete mode 100644 ecb-snap/ecb-images/sources/CVS/Root delete mode 100644 ecb-snap/ecb-images/sources/height-14_to_21/CVS/Entries delete mode 100644 ecb-snap/ecb-images/sources/height-14_to_21/CVS/Repository delete mode 100644 ecb-snap/ecb-images/sources/height-14_to_21/CVS/Root delete mode 100644 ecb-snap/ecb-images/sources/height-14_to_21/ecb-leaf.xpm delete mode 100644 ecb-snap/ecb-images/sources/height-14_to_21/ecb-vc-added.xpm delete mode 100644 ecb-snap/ecb-images/sources/height-14_to_21/ecb-vc-edited.xpm delete mode 100644 ecb-snap/ecb-images/sources/height-14_to_21/ecb-vc-ignored.xpm delete mode 100644 ecb-snap/ecb-images/sources/height-14_to_21/ecb-vc-needs-merge.xpm delete mode 100644 ecb-snap/ecb-images/sources/height-14_to_21/ecb-vc-needs-patch.xpm delete mode 100644 ecb-snap/ecb-images/sources/height-14_to_21/ecb-vc-unknown.xpm delete mode 100644 ecb-snap/ecb-images/sources/height-14_to_21/ecb-vc-up-to-date.xpm delete mode 100644 ecb-snap/ecb-jde.el delete mode 100644 ecb-snap/ecb-jde.elc delete mode 100644 ecb-snap/ecb-layout-defs.el delete mode 100644 ecb-snap/ecb-layout-defs.elc delete mode 100644 ecb-snap/ecb-layout.el delete mode 100644 ecb-snap/ecb-layout.elc delete mode 100644 ecb-snap/ecb-makedef.mk delete mode 100644 ecb-snap/ecb-method-browser.el delete mode 100644 ecb-snap/ecb-method-browser.elc delete mode 100644 ecb-snap/ecb-mode-line.el delete mode 100644 ecb-snap/ecb-mode-line.elc delete mode 100644 ecb-snap/ecb-multiframe.el delete mode 100644 ecb-snap/ecb-multiframe.elc delete mode 100644 ecb-snap/ecb-navigate.el delete mode 100644 ecb-snap/ecb-navigate.elc delete mode 100644 ecb-snap/ecb-semantic-wrapper.el delete mode 100644 ecb-snap/ecb-semantic-wrapper.elc delete mode 100755 ecb-snap/ecb-semantic.el delete mode 100644 ecb-snap/ecb-semantic.elc delete mode 100644 ecb-snap/ecb-speedbar.el delete mode 100644 ecb-snap/ecb-speedbar.elc delete mode 100644 ecb-snap/ecb-symboldef.el delete mode 100644 ecb-snap/ecb-symboldef.elc delete mode 100644 ecb-snap/ecb-tod.el delete mode 100644 ecb-snap/ecb-tod.elc delete mode 100644 ecb-snap/ecb-upgrade.el delete mode 100644 ecb-snap/ecb-upgrade.elc delete mode 100644 ecb-snap/ecb-util.el delete mode 100644 ecb-snap/ecb-util.elc delete mode 100644 ecb-snap/ecb-winman-support.el delete mode 100644 ecb-snap/ecb-winman-support.elc delete mode 100644 ecb-snap/ecb.el delete mode 100644 ecb-snap/ecb.elc delete mode 100644 ecb-snap/ecb.texi delete mode 100644 ecb-snap/ecb2/CVS/Entries delete mode 100644 ecb-snap/ecb2/CVS/Repository delete mode 100644 ecb-snap/ecb2/CVS/Root delete mode 100644 ecb-snap/ecb2/jn-file-tree.el delete mode 100644 ecb-snap/ecb2/jn-tree-node.el delete mode 100644 ecb-snap/ecb2/jn-tree-view.el delete mode 100644 ecb-snap/ecb2/jn-utils.el delete mode 100644 ecb-snap/ecb2/jn-window.el delete mode 100644 ecb-snap/ecb2/test.el delete mode 100644 ecb-snap/html/CVS/Entries delete mode 100644 ecb-snap/html/CVS/Repository delete mode 100644 ecb-snap/html/CVS/Root delete mode 100644 ecb-snap/html/Makefile delete mode 100644 ecb-snap/html/bullet.gif delete mode 100644 ecb-snap/html/ecb-html.el delete mode 100644 ecb-snap/html/ecb_logo.gif delete mode 100644 ecb-snap/html/html-helper.el delete mode 100644 ecb-snap/html/index.html delete mode 100644 ecb-snap/html/mail.gif delete mode 100644 ecb-snap/html/screenshots/1-thumb.png delete mode 100644 ecb-snap/html/screenshots/1.png delete mode 100644 ecb-snap/html/screenshots/10-thumb.png delete mode 100644 ecb-snap/html/screenshots/10.png delete mode 100644 ecb-snap/html/screenshots/11-thumb.png delete mode 100644 ecb-snap/html/screenshots/11.png delete mode 100644 ecb-snap/html/screenshots/12-thumb.png delete mode 100644 ecb-snap/html/screenshots/12.png delete mode 100644 ecb-snap/html/screenshots/2-thumb.png delete mode 100644 ecb-snap/html/screenshots/2.png delete mode 100644 ecb-snap/html/screenshots/3-thumb.png delete mode 100644 ecb-snap/html/screenshots/3.png delete mode 100644 ecb-snap/html/screenshots/4-thumb.png delete mode 100644 ecb-snap/html/screenshots/4.png delete mode 100644 ecb-snap/html/screenshots/5-thumb.png delete mode 100644 ecb-snap/html/screenshots/5.png delete mode 100644 ecb-snap/html/screenshots/6-thumb.png delete mode 100644 ecb-snap/html/screenshots/6.png delete mode 100644 ecb-snap/html/screenshots/7-thumb.png delete mode 100644 ecb-snap/html/screenshots/7.png delete mode 100644 ecb-snap/html/screenshots/8-thumb.png delete mode 100644 ecb-snap/html/screenshots/8.png delete mode 100644 ecb-snap/html/screenshots/9-thumb.png delete mode 100644 ecb-snap/html/screenshots/9.png delete mode 100644 ecb-snap/html/screenshots/CVS/Entries delete mode 100644 ecb-snap/html/screenshots/CVS/Repository delete mode 100644 ecb-snap/html/screenshots/CVS/Root delete mode 100644 ecb-snap/html/screenshots/index.html delete mode 100644 ecb-snap/html/smiley.gif delete mode 100755 ecb-snap/make.bat delete mode 100644 ecb-snap/silentcomp.el delete mode 100644 ecb-snap/silentcomp.elc delete mode 100644 ecb-snap/tree-buffer.el delete mode 100644 ecb-snap/tree-buffer.elc create mode 100644 fuzzy.el delete mode 160000 org-mode create mode 100644 popup.el delete mode 100644 python-mode.el diff --git a/.gitmodules b/.gitmodules index 1224286..7d7acb6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "emacs-flymake"] path = emacs-flymake url = git://github.com/illusori/emacs-flymake.git +[submodule "ecb"] + path = ecb + url = https://github.com/alexott/ecb.git diff --git a/ac-dict/ada-mode b/ac-dict/ada-mode new file mode 100644 index 0000000..bea538f --- /dev/null +++ b/ac-dict/ada-mode @@ -0,0 +1,72 @@ +abort +abs +abstract +accept +access +aliased +all +and +array +at +begin +body +case +constant +declare +delay +delta +digits +do +else +elsif +end +entry +exception +exit +for +function +generic +goto +if +in +interface +is +limited +loop +mod +new +not +null +of +or +others +out +overriding +package +pragma +private +procedure +protected +raise +range +record +rem +renames +requeue +return +reverse +select +separate +subtype +synchronized +tagged +task +terminate +then +type +until +use +when +while +with +xor diff --git a/ac-dict/c++-mode b/ac-dict/c++-mode new file mode 100644 index 0000000..e3cd8ae --- /dev/null +++ b/ac-dict/c++-mode @@ -0,0 +1,74 @@ +and +and_eq +asm +auto +bitand +bitor +bool +break +case +catch +char +class +compl +const +const_cast +continue +default +delete +do +double +dynamic_cast +else +enum +explicit +export +extern +false +float +for +friend +goto +if +inline +int +long +mutable +namespace +new +not +not_eq +operator +or +or_eq +private +protected +public +register +reinterpret_cast +return +short +signed +sizeof +static +static_cast +struct +switch +template +this +throw +true +try +typedef +typeid +typename +union +unsigned +using +virtual +void +volatile +wchar_t +while +xor +xor_eq diff --git a/ac-dict/c-mode b/ac-dict/c-mode new file mode 100644 index 0000000..496f904 --- /dev/null +++ b/ac-dict/c-mode @@ -0,0 +1,37 @@ +auto +_Bool +break +case +char +_Complex +const +continue +default +do +double +else +enum +extern +float +for +goto +if +_Imaginary +inline +int +long +register +restrict +return +short +signed +sizeof +static +struct +switch +typedef +union +unsigned +void +volatile +while diff --git a/ac-dict/caml-mode b/ac-dict/caml-mode new file mode 100644 index 0000000..e709f9f --- /dev/null +++ b/ac-dict/caml-mode @@ -0,0 +1,231 @@ +# OCaml 3.12.1 + +# Keywords +and +as +assert +begin +class +constraint +do +done +downto +else +end +exception +external +false +for +fun +function +functor +if +in +include +inherit +initializer +lazy +let +match +method +module +mutable +new +object +of +open +or +private +rec +sig +struct +then +to +true +try +type +val +virtual +when +while +with + +# Pervasives +! +!= +& +&& +* +** +*. ++ ++. +- +-. +/ +/. +:= +< +<= +<> += +== +> +>= +@ +FP_infinite +FP_nan +FP_normal +FP_subnormal +FP_zero +LargeFile +Open_append +Open_binary +Open_creat +Open_nonblock +Open_rdonly +Open_text +Open_trunc +Open_wronly +Oupen_excl +^ +^^ +abs +abs_float +acos +asin +asr +at_exit +atan +atan2 +bool_of_string +ceil +char_of_int +classify_float +close_in +close_in_noerr +close_out +close_out_noerr +compare +cos +cosh +decr +do_at_exit +epsilon_float +exit +exp +expm1 +failwith +float +float_of_int +float_of_string +floor +flush +flush_all +format +format4 +format_of_string +fpclass +frexp +fst +ignore +in_channel +in_channel_length +incr +infinity +input +input_binary_int +input_byte +input_char +input_line +input_value +int_of_char +int_of_float +int_of_string +invalid_arg +land +ldexp +lnot +log +log10 +log1p +lor +lsl +lsr +lxor +max +max_float +max_int +min +min_float +min_int +mod +mod_float +modf +nan +neg_infinity +not +open_flag +open_in +open_in_bin +open_in_gen +open_out +open_out_bin +open_out_gen +or +out_channel +out_channel_length +output +output_binary_int +output_byte +output_char +output_string +output_value +pos_in +pos_out +pred +prerr_char +prerr_endline +prerr_float +prerr_int +prerr_newline +prerr_string +print_char +print_endline +print_float +print_int +print_newline +print_string +raise +read_float +read_int +read_line +really_input +ref +seek_in +seek_out +set_binary_mode_in +set_binary_mode_out +sin +sinh +snd +sqrt +stderr +stdin +stdout +string_of_bool +string_of_float +string_of_format +string_of_int +succ +tan +tanh +truncate +unsafe_really_input +valid_float_lexem +|| +~ +~+ +~+. +~- +~-. diff --git a/ac-dict/clojure-mode b/ac-dict/clojure-mode new file mode 100644 index 0000000..16348ed --- /dev/null +++ b/ac-dict/clojure-mode @@ -0,0 +1,475 @@ +*agent* +*clojure-version* +*command-line-args* +*compile-files* +*compile-path* +*err* +*file* +*flush-on-newline* +*in* +*ns* +*out* +*print-dup* +*print-length* +*print-level* +*print-meta* +*print-readably* +*read-eval* +*warn-on-reflection* +accessor +aclone +add-classpath +add-watch +agent +agent-error +agent-errors +aget +alength +alias +all-ns +alter +alter-meta! +alter-var-root +amap +ancestors +and +apply +areduce +array-map +aset +aset-boolean +aset-byte +aset-char +aset-double +aset-float +aset-int +aset-long +aset-short +assert +assoc +assoc! +assoc-in +associative? +atom +await +await-for +bases +bean +bigdec +bigint +binding +bit-and +bit-and-not +bit-clear +bit-flip +bit-not +bit-or +bit-set +bit-shift-left +bit-shift-right +bit-test +bit-xor +boolean +boolean-array +booleans +bound-fn +bound-fn* +butlast +byte +byte-array +bytes +case +cast +char +char-array +char-escape-string +char-name-string +char? +chars +class +class? +clear-agent-errors +clojure-version +coll? +comment +commute +comp +comparator +compare +compare-and-set! +compile +complement +concat +cond +condp +conj +conj! +cons +constantly +construct-proxy +contains? +count +counted? +create-ns +create-struct +cycle +dec +decimal? +declare +definline +defmacro +defmethod +defmulti +defn +defn- +defonce +defprotocol +defstruct +deftype +delay +delay? +deliver +deref +derive +descendants +disj +disj! +dissoc +dissoc! +distinct +distinct? +doall +doc +dorun +doseq +dosync +dotimes +doto +double +double-array +doubles +drop +drop-last +drop-while +dtype +empty +empty? +ensure +enumeration-seq +error-handler +error-mode +eval +even? +every? +extend +extend-class +extend-protocol +extend-type +extenders +extends? +false? +ffirst +file-seq +filter +find +find-doc +find-ns +find-var +first +float +float-array +float? +floats +flush +fn +fn? +fnext +for +force +format +future +future-call +future-cancel +future-cancelled? +future-done? +future? +gen-class +gen-interface +gensym +get +get-in +get-method +get-proxy-class +get-thread-bindings +get-validator +hash +hash-map +hash-set +identical? +identity +if-let +if-not +ifn? +import +in-ns +inc +init-proxy +instance? +int +int-array +integer? +interleave +intern +interpose +into +into-array +ints +io! +isa? +iterate +iterator-seq +juxt +key +keys +keyword +keyword? +last +lazy-cat +lazy-seq +let +letfn +line-seq +list +list* +list? +load +load-file +load-reader +load-string +loaded-libs +locking +long +long-array +longs +loop +macroexpand +macroexpand-1 +make-array +make-hierarchy +map +map? +mapcat +max +max-key +memfn +memoize +merge +merge-with +meta +methods +min +min-key +mod +name +namespace +neg? +newline +next +nfirst +nil? +nnext +not +not-any? +not-empty +not-every? +not= +ns +ns-aliases +ns-imports +ns-interns +ns-map +ns-name +ns-publics +ns-refers +ns-resolve +ns-unalias +ns-unmap +nth +nthnext +num +number? +object-array +odd? +or +parents +partial +partition +pcalls +peek +persistent! +pmap +pop +pop! +pop-thread-bindings +pos? +pr +pr-str +prefer-method +prefers +print +print-namespace-doc +print-str +printf +println +println-str +prn +prn-str +promise +proxy +proxy-mappings +proxy-super +push-thread-bindings +pvalues +quot +rand +rand-int +range +ratio? +rationalize +re-find +re-groups +re-matcher +re-matches +re-pattern +re-seq +read +read-line +read-string +reduce +ref +ref-history-count +ref-max-history +ref-min-history +ref-set +refer +refer-clojure +reify +release-pending-sends +rem +remove +remove-method +remove-ns +remove-watch +repeat +repeatedly +replace +replicate +require +reset! +reset-meta! +resolve +rest +restart-agent +resultset-seq +reverse +reversible? +rseq +rsubseq +satisfies? +second +select-keys +send +send-off +seq +seq? +seque +sequence +sequential? +set +set-error-handler! +set-error-mode! +set-validator! +set? +short +short-array +shorts +shutdown-agents +slurp +some +sort +sort-by +sorted-map +sorted-map-by +sorted-set +sorted-set-by +sorted? +special-form-anchor +special-symbol? +split-at +split-with +str +stream? +string? +struct +struct-map +subs +subseq +subvec +supers +swap! +symbol +symbol? +sync +syntax-symbol-anchor +take +take-last +take-nth +take-while +test +the-ns +time +to-array +to-array-2d +trampoline +transient +tree-seq +true? +type +unchecked-add +unchecked-dec +unchecked-divide +unchecked-inc +unchecked-multiply +unchecked-negate +unchecked-remainder +unchecked-subtract +underive +update-in +update-proxy +use +val +vals +var-get +var-set +var? +vary-meta +vec +vector +vector-of +vector? +when +when-first +when-let +when-not +while +with-bindings +with-bindings* +with-in-str +with-local-vars +with-meta +with-open +with-out-str +with-precision +xml-seq +zero? +zipmap \ No newline at end of file diff --git a/ac-dict/clojurescript-mode b/ac-dict/clojurescript-mode new file mode 100644 index 0000000..16348ed --- /dev/null +++ b/ac-dict/clojurescript-mode @@ -0,0 +1,475 @@ +*agent* +*clojure-version* +*command-line-args* +*compile-files* +*compile-path* +*err* +*file* +*flush-on-newline* +*in* +*ns* +*out* +*print-dup* +*print-length* +*print-level* +*print-meta* +*print-readably* +*read-eval* +*warn-on-reflection* +accessor +aclone +add-classpath +add-watch +agent +agent-error +agent-errors +aget +alength +alias +all-ns +alter +alter-meta! +alter-var-root +amap +ancestors +and +apply +areduce +array-map +aset +aset-boolean +aset-byte +aset-char +aset-double +aset-float +aset-int +aset-long +aset-short +assert +assoc +assoc! +assoc-in +associative? +atom +await +await-for +bases +bean +bigdec +bigint +binding +bit-and +bit-and-not +bit-clear +bit-flip +bit-not +bit-or +bit-set +bit-shift-left +bit-shift-right +bit-test +bit-xor +boolean +boolean-array +booleans +bound-fn +bound-fn* +butlast +byte +byte-array +bytes +case +cast +char +char-array +char-escape-string +char-name-string +char? +chars +class +class? +clear-agent-errors +clojure-version +coll? +comment +commute +comp +comparator +compare +compare-and-set! +compile +complement +concat +cond +condp +conj +conj! +cons +constantly +construct-proxy +contains? +count +counted? +create-ns +create-struct +cycle +dec +decimal? +declare +definline +defmacro +defmethod +defmulti +defn +defn- +defonce +defprotocol +defstruct +deftype +delay +delay? +deliver +deref +derive +descendants +disj +disj! +dissoc +dissoc! +distinct +distinct? +doall +doc +dorun +doseq +dosync +dotimes +doto +double +double-array +doubles +drop +drop-last +drop-while +dtype +empty +empty? +ensure +enumeration-seq +error-handler +error-mode +eval +even? +every? +extend +extend-class +extend-protocol +extend-type +extenders +extends? +false? +ffirst +file-seq +filter +find +find-doc +find-ns +find-var +first +float +float-array +float? +floats +flush +fn +fn? +fnext +for +force +format +future +future-call +future-cancel +future-cancelled? +future-done? +future? +gen-class +gen-interface +gensym +get +get-in +get-method +get-proxy-class +get-thread-bindings +get-validator +hash +hash-map +hash-set +identical? +identity +if-let +if-not +ifn? +import +in-ns +inc +init-proxy +instance? +int +int-array +integer? +interleave +intern +interpose +into +into-array +ints +io! +isa? +iterate +iterator-seq +juxt +key +keys +keyword +keyword? +last +lazy-cat +lazy-seq +let +letfn +line-seq +list +list* +list? +load +load-file +load-reader +load-string +loaded-libs +locking +long +long-array +longs +loop +macroexpand +macroexpand-1 +make-array +make-hierarchy +map +map? +mapcat +max +max-key +memfn +memoize +merge +merge-with +meta +methods +min +min-key +mod +name +namespace +neg? +newline +next +nfirst +nil? +nnext +not +not-any? +not-empty +not-every? +not= +ns +ns-aliases +ns-imports +ns-interns +ns-map +ns-name +ns-publics +ns-refers +ns-resolve +ns-unalias +ns-unmap +nth +nthnext +num +number? +object-array +odd? +or +parents +partial +partition +pcalls +peek +persistent! +pmap +pop +pop! +pop-thread-bindings +pos? +pr +pr-str +prefer-method +prefers +print +print-namespace-doc +print-str +printf +println +println-str +prn +prn-str +promise +proxy +proxy-mappings +proxy-super +push-thread-bindings +pvalues +quot +rand +rand-int +range +ratio? +rationalize +re-find +re-groups +re-matcher +re-matches +re-pattern +re-seq +read +read-line +read-string +reduce +ref +ref-history-count +ref-max-history +ref-min-history +ref-set +refer +refer-clojure +reify +release-pending-sends +rem +remove +remove-method +remove-ns +remove-watch +repeat +repeatedly +replace +replicate +require +reset! +reset-meta! +resolve +rest +restart-agent +resultset-seq +reverse +reversible? +rseq +rsubseq +satisfies? +second +select-keys +send +send-off +seq +seq? +seque +sequence +sequential? +set +set-error-handler! +set-error-mode! +set-validator! +set? +short +short-array +shorts +shutdown-agents +slurp +some +sort +sort-by +sorted-map +sorted-map-by +sorted-set +sorted-set-by +sorted? +special-form-anchor +special-symbol? +split-at +split-with +str +stream? +string? +struct +struct-map +subs +subseq +subvec +supers +swap! +symbol +symbol? +sync +syntax-symbol-anchor +take +take-last +take-nth +take-while +test +the-ns +time +to-array +to-array-2d +trampoline +transient +tree-seq +true? +type +unchecked-add +unchecked-dec +unchecked-divide +unchecked-inc +unchecked-multiply +unchecked-negate +unchecked-remainder +unchecked-subtract +underive +update-in +update-proxy +use +val +vals +var-get +var-set +var? +vary-meta +vec +vector +vector-of +vector? +when +when-first +when-let +when-not +while +with-bindings +with-bindings* +with-in-str +with-local-vars +with-meta +with-open +with-out-str +with-precision +xml-seq +zero? +zipmap \ No newline at end of file diff --git a/ac-dict/coq-mode b/ac-dict/coq-mode new file mode 100644 index 0000000..219448f --- /dev/null +++ b/ac-dict/coq-mode @@ -0,0 +1,278 @@ +# Generated by the following form. +# (loop for regexp in (append +# coq-solve-tactics +# coq-keywords +# coq-reserved +# coq-tactics +# coq-tacticals +# (list "Set" "Type" "Prop")) +# append (split-string regexp (regexp-quote "\\s-+")) into words +# finally (loop initially (goto-char (point-max)) +# for word in (delete-dups (sort words 'string<)) +# do (insert word) (newline))) + +Abort +About +Abstract +Add +Admit +Admitted +All +Arguments +AutoInline +Axiom +Bind +Canonical +Cd +Chapter +Check +Close +CoFixpoint +CoInductive +Coercion +Coercions +Comments +Conjecture +Constant +Constructors +Corollary +Declare +Defined +Definition +Delimit +Dependent +Depth +Derive +End +Eval +Export +Extern +Extract +Extraction +Fact +False +Field +File +Fixpoint +Focus +Function +Functional +Goal +Hint +Hypotheses +Hypothesis +Hyps +Identity +If +Immediate +Implicit +Import +Inductive +Infix +Inline +Inlined +Inspect +Inversion +Language +Lemma +Let +Library +Limit +LoadPath +Local +Locate +Ltac +ML +Module +Morphism +Next Obligation +NoInline +Notation +Notations +Obligation +Obligations +Off +On +Opaque +Open +Optimize +Parameter +Parameters +Path +Print +Printing +Program +Proof +Prop +Pwd +Qed +Rec +Record +Recursive +Remark +Remove +Require +Reserved +Reset +Resolve +Rewrite +Ring +Save +Scheme +Scope +Search +SearchAbout +SearchPattern +SearchRewrite +Section +Semi +Set +Setoid +Show +Solve +Sort +Strict +Structure +Synth +Tactic +Test +Theorem +Time +Transparent +True +Type +Undo +Unfocus +Unfold +Unset +Variable +Variables +Width +Wildcard +abstract +absurd +after +apply +as +assert +assumption +at +auto +autorewrite +beta +by +case +cbv +change +clear +clearbody +cofix +coinduction +compare +compute +congruence +constructor +contradiction +cut +cutrewrite +decide +decompose +delta +dependent +dest +destruct +discrR +discriminate +do +double +eapply +eauto +econstructor +eexists +eleft +elim +else +end +equality +esplit +exact +exists +fail +field +first +firstorder +fix +fold +forall +fourier +fun +functional +generalize +hnf +idtac +if +in +induction +info +injection +instantiate +into +intro +intros +intuition +inversion +inversion_clear +iota +lapply +lazy +left +let +linear +load +match +move +omega +pattern +pose +progress +prolog +quote +record +red +refine +reflexivity +rename +repeat +replace +return +rewrite +right +ring +set +setoid +setoid_replace +setoid_rewrite +simpl +simple +simplify_eq +solve +specialize +split +split_Rabs +split_Rmult +stepl +stepr +struct +subst +sum +symmetry +tauto +then +transitivity +trivial +try +unfold +until +using +with +zeta diff --git a/ac-dict/css-mode b/ac-dict/css-mode new file mode 100644 index 0000000..4ec8f7d --- /dev/null +++ b/ac-dict/css-mode @@ -0,0 +1,747 @@ +!important +ActiveBorder +ActiveCaption +Alpha +AppWorkspace +Background +Barn +BasicImage +Blinds +Blur +ButtonFace +ButtonHighlight +ButtonShadow +ButtonText +CaptionText +CheckerBoard +Chroma +Compositor +CradientWipe +DXImageTransform +DropShadow +Emboss +Engrave +Fade +FlipH +FlipV +Glow +Gray +GrayText +Highlight +HighlightText +Hz +ICMFilter +InactiveBorder +InactiveCaption +InactiveCaptionText +InfoBackground +InfoText +Inset +Invert +Iris +Light +MaskFilter +Matrix +Menu +MenuText +Microsoft +MotionBlur +Pixelate +RadialWipe +RandomBars +RandomDissolve +RevealTrans +Scrollbar +Shadow +Slide +Spiral +Stretch +Strips +ThreeDDarkShadow +ThreeDFace +ThreeDHighlight +ThreeDLightShadow +ThreeDShadow +Wave +Wheel +Window +WindowFrame +WindowText +Xray +Zigzag +_azimuth +_background +_background-position-x +_background-position-y +_border +_bottom +_caption +_clear +_clip +_color +_content +_counter +_cue +_cursor +_direction +_display +_elevation +_empty +_filter +_filter:progid:DXImageTransform.Microsoft +_float +_font +_height +_ime +_ime-mode +_layout +_layout-flow +_layout-grid +_layout-grid-char +_layout-grid-line +_layout-grid-mode +_layout-grid-type +_left +_letter +_line +_line-break +_list +_margin +_orphans +_outline +_overflow +_overflow-x +_overflow-y +_padding +_page +_pause +_pitch +_play +_position +_quotes +_richness +_right +_ruby +_ruby-align +_ruby-overhang +_ruby-position +_scrollbar +_scrollbar-3dlight-color +_scrollbar-arrow-color +_scrollbar-base-color +_scrollbar-darkshadow-color +_scrollbar-face-color +_scrollbar-highlight-color +_scrollbar-track-color +_speak +_speech +_stress +_table +_text +_text-align-last +_text-autospace +_text-justify +_text-kashida-space +_text-overflow +_text-underline-position +_top +_unicode +_vertical +_visibility +_voice +_volume +_white +_widows +_width +_word +_word-break +_word-wrap +_writing +_writing-mode +_z +_zoom +above +active +adjust +after +aliceblue +align +always +antiquewhite +aqua +aquamarine +armenian +arrow +attachment +auto +autospace +avoid +azimuth +azure +background +background-attachment +background-color +background-image +background-position +background-repeat +bar +base +baseline +before +behind +beige +below +bidi +bidi-override +bisque +black +blanchedalmond +blink +block +blue +blueviolet +bold +bolder +border +border-bottom +border-bottom-color +border-bottom-style +border-bottom-width +border-collapse +border-color +border-left +border-left-color +border-left-style +border-left-width +border-right +border-right-color +border-right-style +border-right-width +border-spacing +border-style +border-top +border-top-color +border-top-style +border-top-width +border-width +both +bottom +box +break +brown +burlwood +cadetblue +capitalize +caps +caption +caption-side +cell +cells +center +center-left +center-right +char +chartreuse +chocolate +circle +cjk +cjk-ideographic +clear +clip +close +close-quote +cm +code +collapse +color +column +compact +condensed +content +continuous +coral +cornflowerblue +cornsilk +counter +counter-increment +counter-reset +crimson +crop +cross +crosshair +cue +cue-after +cue-before +cursive +cursor +cyan +darkblue +darkcyan +darkgoldenrod +darkgray +darkgreen +darkkhaki +darkmagenta +darkolivegreen +darkorange +darkorchid +darkred +darksalmon +darkseagreen +darkshadow +darkslateblue +darkslategray +darkturquoise +darkviolet +dashed +decimal +decimal-leading-zero +decoration +deeppink +deepskyblue +default +deg +digits +dimgray +direction +disc +display +dodgerblue +dotted +double +during +e +e-resize +elevation +em +embed +empty +empty-cells +ex +expanded +extra +extra-condensed +extra-expanded +face +family +fantasy +far +far-left +far-right +fast +faster +firebrick +first +first-child +first-letter +first-line +fixed +float +floralwhite +flow +focus +font +font-family +font-size +font-size-adjust +font-stretch +font-style +font-variant +font-weight +footer +forestgreen +fuchsia +gainsboro +georgian +ghostwhite +gold +goldenrod +gray +greek +green +greenyellow +grid +groove +group +header +hebrew +height +help +hidden +hide +high +higher +hiragana +hiragana-iroha +honeydew +hotpink +hover +icon +ideographic +image +in +increment +indent +index +indianred +indigo +inherit +inline +inline-block +inline-table +inset +inside +iroha +italic +item +ivory +justify +kHz +kashida +katakana +katakana-iroha +khaki +landscape +lang() +large +larger +last +latin +lavender +lavenderblush +lawngreen +layout +leading +left +left-side +leftwards +lenonchiffon +letter +letter-spacing +level +lightblue +lightcoral +lightcyan +lighter +lightgoldenrodyellow +lightgray +lightgreen +lightgrey +lightpink +lightsalmon +lightseagreen +lightskyblue +lightslategray +lightsteelblue +lightyellow +lime +limegreen +line +line-height +line-through +linen +link +list +list-item +list-style +list-style-image +list-style-position +list-style-type +loud +low +lower +lower-alpha +lower-greek +lower-latin +lower-roman +lowercase +ltr +magenta +margin +margin-bottom +margin-left +margin-right +margin-top +marker +marker-offset +marks +maroon +max +max-height +max-width +medium +mediumaquamarine +mediumblue +mediumorchid +mediumpurple +mediumseagreen +mediumslateblue +mediumspringgreen +mediumturquoise +mediumvioletred +menu +message +message-box +middle +midnightblue +min +min-height +min-width +mintcream +mistyrose +mix +mm +moccasin +mode +monospace +move +ms +n +n-resize +naby +narrower +navajowhite +ne +ne-resize +no +no-close-quote +no-open-quote +no-repeat +none +normal +nowrap +number +numeral +nw +nw-resize +oblique +offset +oldlace +olive +olivedrab +once +open +open-quote +orange +orangered +orchid +orphans +out +outline +outline-color +outline-style +outline-width +outset +outside +overflow +overhang +overline +override +padding +padding-bottom +padding-left +padding-right +padding-top +page +page-break-after +page-break-before +page-break-inside +palegoldenrod +palegreen +paleturquoise +palevioletred +papayawhip +pause +pause-after +pause-before +pc +peachpuff +peru +pink +pitch +pitch-range +play +play-during +plum +pointer +portarait +position +powderblue +pre +pre-line +pre-wrap +progid +progress +pt +punctuation +purple +px +quote +quotes +rad +range +rate +red +relative +repeat +repeat-x +repeat-y +reset +resize +richness +ridge +right +right-side +rightwards +roman +rosybrown +row +royalblue +rtl +run +run-in +s +s-resize +saddlebrown +salmon +sandybrown +sans-serif +scroll +se +se-resize +seagreen +seashell +semi +semi-condensed +semi-expanded +separate +serif +shadow +show +side +sienna +silent +silever +silver +size +skyblue +slateblue +slategray +slow +slower +small +small-caps +small-caption +smaller +snow +soft +solid +space +spacing +speak +speak-header +speak-numeral +speak-punctuation +specific +specific-voice +speech +speech-rate +spell +spell-out +springgreen +square +static +status +status-bar +steelblue +stress +stretch +style +sub +super +sw +sw-resize +table +table-caption +table-cell +table-column +table-column-group +table-footer-group +table-header-group +table-layout +table-row +table-row-group +tan +teal +text +text-align +text-bottom +text-decoration +text-indent +text-shadow +text-top +text-transform +thick +thin +thistle +through +tomato +top +track +transform +transparent +turquoise +type +ultra +ultra-condensed +ultra-expanded +underline +unicode +unicode-bidi +upper +upper-alpha +upper-latin +upper-roman +uppercase +variant +vertical +vertical-align +violet +visibility +visible +visited +voice +voice-family +volume +w +w-resize +wait +weight +wheat +white +white-space +whitesmoke +wider +widows +width +word +word-spacing +wrap +x +x-fast +x-high +x-large +x-loud +x-low +x-slow +x-small +x-soft +xx +xx-large +xx-small +y +yellow +yellowgreen +z +z-index +zero diff --git a/ac-dict/erlang-mode b/ac-dict/erlang-mode new file mode 100644 index 0000000..960f2b8 --- /dev/null +++ b/ac-dict/erlang-mode @@ -0,0 +1,216 @@ +after +begin +catch +case +cond +end +fun +if +let +of +query +receive +try +when +and +andalso +band +bnot +bor +bsl +bsr +bxor +div +not +or +orelse +rem +xor +is_atom +is_binary +is_bitstring +is_boolean +is_float +is_function +is_integer +is_list +is_number +is_pid +is_port +is_record +is_reference +is_tuple +atom +binary +bitstring +boolean +function +integer +list +number +pid +port +record +reference +tuple +abs +adler32 +adler32_combine +alive +apply +atom_to_binary +atom_to_list +binary_to_atom +binary_to_existing_atom +binary_to_list +binary_to_term +bit_size +bitstring_to_list +byte_size +check_process_code +contact_binary +crc32 +crc32_combine +date +decode_packet +delete_module +disconnect_node +element +erase +exit +float +float_to_list +garbage_collect +get +get_keys +group_leader +halt +hd +integer_to_list +internal_bif +iolist_size +iolist_to_binary +is_alive +is_atom +is_binary +is_bitstring +is_boolean +is_float +is_function +is_integer +is_list +is_number +is_pid +is_port +is_process_alive +is_record +is_reference +is_tuple +length +link +list_to_atom +list_to_binary +list_to_bitstring +list_to_existing_atom +list_to_float +list_to_integer +list_to_pid +list_to_tuple +load_module +make_ref +module_loaded +monitor_node +node +node_link +node_unlink +nodes +notalive +now +open_port +pid_to_list +port_close +port_command +port_connect +port_control +pre_loaded +process_flag +process_info +processes +purge_module +put +register +registered +round +self +setelement +size +spawn +spawn_link +spawn_monitor +spawn_opt +split_binary +statistics +term_to_binary +time +throw +tl +trunc +tuple_size +tuple_to_list +unlink +unregister +whereis +append_element +bump_reductions +cancel_timer +demonitor +display +fun_info +fun_to_list +function_exported +get_cookie +get_stacktrace +hash +integer_to_list +is_builtin +list_to_integer +loaded +localtime +localtime_to_universaltime +make_tuple +max +md5 +md5_final +md5_init +md5_update +memory +min +monitor +monitor_node +phash +phash2 +port_call +port_info +port_to_list +ports +process_display +read_timer +ref_to_list +resume_process +send +send_after +send_nosuspend +set_cookie +start_timer +suspend_process +system_flag +system_info +system_monitor +system_profile +trace +trace_delivered +trace_info +trace_pattern +universaltime +universaltime_to_localtime +yield diff --git a/ac-dict/go-mode b/ac-dict/go-mode new file mode 100644 index 0000000..b943a16 --- /dev/null +++ b/ac-dict/go-mode @@ -0,0 +1,25 @@ +break +case +chan +const +continue +default +defer +else +fallthrough +for +func +go +goto +if +import +interface +map +package +range +return +select +struct +switch +type +var diff --git a/ac-dict/haskell-mode b/ac-dict/haskell-mode new file mode 100644 index 0000000..9ad1b99 --- /dev/null +++ b/ac-dict/haskell-mode @@ -0,0 +1,679 @@ +Arrows +BangPatterns +Bool +Bounded +CPP +Char +Complex +ConstrainedClassMethods +Control.Applicative +Control.Arrow +Control.Category +Control.Concurrent +Control.Concurrent.MVar +Control.Concurrent.QSem +Control.Concurrent.QSemN +Control.Concurrent.STM +Control.Concurrent.STM.TArray +Control.Concurrent.STM.TChan +Control.Concurrent.STM.TMVar +Control.Concurrent.STM.TVar +Control.Concurrent.SampleVar +Control.Exception +Control.Exception.Base +Control.Monad +Control.Monad.Cont +Control.Monad.Cont.Class +Control.Monad.Error +Control.Monad.Error.Class +Control.Monad.Fix +Control.Monad.Identity +Control.Monad.Instances +Control.Monad.List +Control.Monad.RWS +Control.Monad.RWS.Class +Control.Monad.RWS.Lazy +Control.Monad.RWS.Strict +Control.Monad.Reader +Control.Monad.Reader.Class +Control.Monad.ST +Control.Monad.ST.Lazy +Control.Monad.ST.Strict +Control.Monad.STM +Control.Monad.State +Control.Monad.State.Class +Control.Monad.State.Lazy +Control.Monad.State.Strict +Control.Monad.Trans +Control.Monad.Writer +Control.Monad.Writer.Class +Control.Monad.Writer.Lazy +Control.Monad.Writer.Strict +Control.OldException +Control.Parallel +Control.Parallel.Strategies +DEPRECATED +Data.Array +Data.Array.Diff +Data.Array.IArray +Data.Array.IO +Data.Array.IO.Internals +Data.Array.MArray +Data.Array.Paralell +Data.Array.Paralell.Arr +Data.Array.Paralell.Base +Data.Array.Paralell.Int +Data.Array.Paralell.Lifted +Data.Array.Paralell.PArray +Data.Array.Paralell.Prelude +Data.Array.Paralell.Prelude.Double +Data.Array.Paralell.Stream +Data.Array.Paralell.Unlifted +Data.Array.Paralell.Unlifted.Distributed +Data.Array.Paralell.Unlifted.Paralell +Data.Array.Paralell.Unlifted.Sqeuential +Data.Array.Paralell.Word8 +Data.Array.ST +Data.Array.Storable +Data.Array.Unboxed +Data.Bits +Data.Bool +Data.ByteString +Data.ByteString.Char8 +Data.ByteString.Fusion +Data.ByteString.Internal +Data.ByteString.Lazy +Data.ByteString.Lazy.Char8 +Data.ByteString.Lazy.Fusion +Data.ByteString.Lazy.Internal +Data.ByteString.Unsafe +Data.Char +Data.Complex +Data.Data +Data.Dynamic +Data.Either +Data.Eq +Data.Fixed +Data.Foldable +Data.Function +Data.Generics +Data.Generics.Aliases +Data.Generics.Basics +Data.Generics.Instances +Data.Generics.Schemes +Data.Generics.Text +Data.Generics.Twins +Data.Graph +Data.HashTable +Data.IORef +Data.Int +Data.IntMap +Data.IntSet +Data.Ix +Data.List +Data.Map +Data.Maybe +Data.Monoid +Data.Ord +Data.Ratio +Data.STRef +Data.STRef.Lazy +Data.STRef.Strict +Data.Sequence +Data.Set +Data.String +Data.Time +Data.Time.Calendar +Data.Time.Calendar.Easter +Data.Time.Calendar.Julian +Data.Time.Calendar.MonthDay +Data.Time.Calendar.OrdinalDate +Data.Time.Calendar.WeekDate +Data.Time.Clock +Data.Time.Clock.POSIX +Data.Time.Clock.TAI +Data.Time.Format +Data.Time.LocalTime +Data.Traversable +Data.Tree +Data.Tuple +Data.Typeable +Data.Unique +Data.Version +Data.Word +Debug.Trace +DeriveDataTypeable +DisambiguateRecordFields +Distribution.Compat.ReadP +Distribution.Compiler +Distribution.InstalledPackageInfo +Distribution.License +Distribution.Make +Distribution.ModuleName +Distribution.Package +Distribution.PackageDescription +Distribution.PackageDescription.Check +Distribution.PackageDescription.Configuration +Distribution.PackageDescription.Parse +Distribution.ParseUtils +Distribution.ReadE +Distribution.Simple +Distribution.Simple.Build +Distribution.Simple.Build.Macros +Distribution.Simple.Build.PathsModule +Distribution.Simple.BuildPaths +Distribution.Simple.Command +Distribution.Simple.Compiler +Distribution.Simple.Configure +Distribution.Simple.GHC +Distribution.Simple.Haddock +Distribution.Simple.Hugs +Distribution.Simple.Install +Distribution.Simple.InstallDirs +Distribution.Simple.JHC +Distribution.Simple.LocalBuildInfo +Distribution.Simple.NHC +Distribution.Simple.PackageIndex +Distribution.Simple.PreProcess +Distribution.Simple.PreProcess.Unlit +Distribution.Simple.Program +Distribution.Simple.Register +Distribution.Simple.Setup +Distribution.Simple.SrcDist +Distribution.Simple.UserHooks +Distribution.Simple.Utils +Distribution.System +Distribution.Text +Distribution.Verbosity +Distribution.Version +Double +EQ +Either +EmptyDataDecls +Enum +Eq +ExistentialQuantification +ExtendedDefaultRules +False +FilePath +FlexibleContexts +FlexibleInstances +Float +Floating +Foreign +Foreign.C +Foreign.C.Error +Foreign.C.String +Foreign.C.Types +Foreign.Concurrent +Foreign.ForeignPtr +Foreign.Marshal +Foreign.Marshal.Alloc +Foreign.Marshal.Array +Foreign.Marshal.Error +Foreign.Marshal.Pool +Foreign.Marshal.Utils +Foreign.Ptr +Foreign.StablePtr +Foreign.Storable +ForeignFunctionInterface +Fractional +FunctionnalDependencies +Functor +GADTs +GHC.Arr +GHC.Bool +GHC.Conc +GHC.ConsoleHandler +GHC.Desugar +GHC.Environment +GHC.Err +GHC.Exts +GHC.Generics +GHC.Handle +GHC.Ordering +GHC.PArr +GHC.Prim +GHC.PrimopWrappers +GHC.Tuple +GHC.Types +GHC.Unicode +GHC.Unit +GT +GeneralizedNewtypeDeriving +Generics +INCLUDE +INLINE +IO +IOError +IOException +ImplicitParams +ImplicitPrelude +ImpredicativeTypes +IncoherentInstances +Int +Integer +Integral +Just +KindSignatures +LANGUAGE +LINE +LT +Language.Haskell.Extension +Language.Haskell.Lexer +Language.Haskell.ParseMonad +Language.Haskell.ParseUtils +Language.Haskell.Parser +Language.Haskell.Pretty +Language.Haskell.Syntax +Language.Haskell.TH +Language.Haskell.TH.Lib +Language.Haskell.TH.Ppr +Language.Haskell.TH.PprLib +Language.Haskell.TH.Quote +Language.Haskell.TH.Syntax +Left +LiberalTypeSynonyms +MagicHash +Maybe +Monad +MonoPatBinds +MonomorphismRestriction +MultiParamTypeClasses +NOINLINE +NamedFieldPuns +Network +Network.BSD +Network.Socket +Network.URI +NewQualifiedOperators +NoArrows +NoBangPatterns +NoCPP +NoConstrainedClassMethods +NoDeriveDataTypeable +NoDisambiguateRecordFields +NoEmptyDataDecls +NoExistentialQuantification +NoExtendedDefaultRules +NoFlexibleContexts +NoFlexibleInstances +NoForeignFunctionInterface +NoFunctionnalDependencies +NoGADTs +NoGeneralizedNewtypeDeriving +NoGenerics +NoImplicitParams +NoImplicitPrelude +NoImpredicativeTypes +NoIncoherentInstances +NoKindSignatures +NoLiberalTypeSynonyms +NoMagicHash +NoMonoPatBinds +NoMonomorphismRestriction +NoMultiParamTypeClasses +NoNamedFieldPuns +NoNewQualifiedOperators +NoOverlappingInstances +NoOverloadedStrings +NoPArr +NoPackageImports +NoParallelListComp +NoPatternGuards +NoPolymorphicComponents +NoQuasiQuotes +NoRank2Types +NoRankNTypes +NoRecordWildCards +NoRecursiveDo +NoRelaxedPolyRec +NoScopedTypeVariables +NoStandaloneDeriving +NoTemplateHaskell +NoTransformListComp +NoTypeFamilies +NoTypeOperators +NoTypeSynonymInstances +NoUnboxedTuples +NoUndecidableInstances +NoUnicodeSyntax +NoUnliftedFFITypes +NoViewPatterns +Nothing +Num +Numeric +OPTIONS_GHC +Ord +Ordering +OverlappingInstances +OverloadedStrings +PArr +PackageImports +ParallelListComp +PatternGuards +PolymorphicComponents +Prelude +QuasiQuotes +RULES +Rank2Types +RankNTypes +Ratio +Read +ReadS +Real +RealFloat +RealFrac +RecordWildCards +RecursiveDo +RelaxedPolyRec +Right +SOURCE +SPECIALIZE +ScopedTypeVariables +ShowS +StandaloneDeriving +String +System.CPUTime +System.Cmd +System.Console.Editline +System.Console.GetOpt +System.Console.Readline +System.Directory +System.Environment +System.Exit +System.FilePath +System.FilePath.Posix +System.FilePath.Windows +System.IO +System.IO.Error +System.IO.Unsafe +System.Info +System.Locale +System.Mem +System.Mem.StableName +System.Mem.Weak +System.Posix +System.Posix.Directory +System.Posix.DynamicLinker +System.Posix.DynamicLinker.Module +System.Posix.DynamicLinker.Prim +System.Posix.Env +System.Posix.Error +System.Posix.Files +System.Posix.IO +System.Posix.Process +System.Posix.Process.Internals +System.Posix.Resource +System.Posix.Semaphore +System.Posix.SharedMem +System.Posix.Signals +System.Posix.Signals.Exts +System.Posix.Temp +System.Posix.Terminal +System.Posix.Time +System.Posix.Types +System.Posix.Unistd +System.Posix.User +System.Process +System.Random +System.Time +System.Timeout +TemplateHaskell +Test.HUnit +Test.HUnit.Base +Test.HUnit.Lang +Test.HUnit.Terminal +Test.HUnit.Text +Test.QuickCheck +Test.QuickCheck.Batch +Test.QuickCheck.Poly +Test.QuickCheck.Utils +Text.Html +Text.Html.BlockTable +Text.ParserCombinators.Parsec +Text.ParserCombinators.Parsec.Char +Text.ParserCombinators.Parsec.Combinator +Text.ParserCombinators.Parsec.Error +Text.ParserCombinators.Parsec.Expr +Text.ParserCombinators.Parsec.Language +Text.ParserCombinators.Parsec.Perm +Text.ParserCombinators.Parsec.Pos +Text.ParserCombinators.Parsec.Prim +Text.ParserCombinators.Parsec.Token +Text.ParserCombinators.ReadP +Text.ParserCombinators.ReadPrec +Text.PrettyPrint +Text.PrettyPrint.HughesPJ +Text.Printf +Text.Read +Text.Read.Lex +Text.Regex.Base +Text.Regex.Base.Context +Text.Regex.Base.Impl +Text.Regex.Base.RegexLike +Text.Regex.Posix +Text.Regex.Posix.ByteString +Text.Regex.Posix.String +Text.Regex.Posix.Wrap +Text.Show +Text.Show.Functions +Text.XHtml +Text.XHtml.Debug +Text.XHtml.Frameset +Text.XHtml.Strict +Text.XHtml.Table +Text.XHtml.Transitional +Trace.Hpc.Mix +Trace.Hpc.Reflect +Trace.Hpc.Tix +Trace.Hpc.Util +TransformListComp +True +TypeFamilies +TypeOperators +TypeSynonymInstances +UNPACK +UnboxedTuples +UndecidableInstances +UnicodeSyntax +UnliftedFFITypes +Unsafe.Coerce +ViewPatterns +WARNING +abs +acos +acosh +all +and +any +appendFile +as +asTypeOf +asin +asinh +atan +atan2 +atanh +break +case +catch +ceiling +class +compare +concat +concatMap +const +cos +cosh +curry +cycle +data +decodeFloat +default +deriving +div +divMod +do +drop +dropWhile +either +elem +else +encodeFloat +enumFrom +enumFromThen +enumFromThenTo +enumFromTo +error +exp +exponent +fail +filter +flip +floatDigits +floatRadix +floatRange +floor +fmap +fold +fold1 +foldr +foldr1 +fromEnum +fromInteger +fromIntegral +fromRational +fst +gcd +getChar +getContents +getLine +head +hiding +id +if +import +in +infix +infixl +infixr +init +instance +intract +ioError +isDenormalized +isIEEE +isInfinite +isNan +isNegativeZero +iterate +last +lcm +length +let +lex +lines +log +logBase +lookup +map +mapM +mapM_ +max +maxBound +maximum +maybe +min +minBound +minimum +mod +module +negate +newtype +not +notElem +null +odd +of +or +otherwise +pi +pred +print +product +properFraction +putChar +putStr +putStrLn +qualified +quot +quotRem +read +readFile +readIO +readList +readLn +readParen +reads +readsPrec +realtoFrac +recip +rem +repeat +replicate +return +reverse +round +scaleFloat +scanl +scanl1 +scanr +scanr1 +seq +sequence +sequence_ +show +showChar +showList +showParen +showString +shows +showsPrec +significand +signum +sin +sinh +snd +span +splitAt +sqrt +subtract +succ +sum +tail +take +takeWhile +tan +tanh +then +toEnum +toInteger +toRational +truncate +type +uncurry +undefined +unlines +until +unwords +unzip +unzip3 +userError +where +words +writeFile +zip +zip3 +zipWith +zipWith3 \ No newline at end of file diff --git a/ac-dict/java-mode b/ac-dict/java-mode new file mode 100644 index 0000000..8ed3d04 --- /dev/null +++ b/ac-dict/java-mode @@ -0,0 +1,50 @@ +abstract +assert +boolean +break +byte +case +catch +char +class +const +continue +default +do +double +else +enum +extends +final +finally +float +for +goto +if +implements +import +instanceof +int +interface +long +native +new +package +private +protected +public +return +short +static +strictfp +super +switch +synchronized +this +throw +throws +transient +try +void +volatile +while diff --git a/ac-dict/javascript-mode b/ac-dict/javascript-mode new file mode 100644 index 0000000..3d83f84 --- /dev/null +++ b/ac-dict/javascript-mode @@ -0,0 +1,148 @@ +Anchor +Area +Array +Boolean +Button +Checkbox +Date +Document +Element +FileUpload +Form +Frame +Function +Hidden +History +Image +Infinity +JavaArray +JavaClass +JavaObject +JavaPackage +Link +Location +Math +MimeType +NaN +Navigator +Number +Object +Option +Packages +Password +Plugin +Radio +RegExp +Reset +Select +String +Submit +Text +Textarea +Window +alert +arguments +assign +blur +break +callee +caller +captureEvents +case +clearInterval +clearTimeout +close +closed +comment +confirm +constructor +continue +default +defaultStatus +delete +do +document +else +escape +eval +export +find +focus +for +frames +function +getClass +history +home +if +import +in +innerHeight +innerWidth +isFinite +isNan +java +label +length +location +locationbar +menubar +moveBy +moveTo +name +navigate +navigator +netscape +new +onBlur +onError +onFocus +onLoad +onUnload +open +opener +outerHeight +outerWidth +pageXoffset +pageYoffset +parent +parseFloat +parseInt +personalbar +print +prompt +prototype +ref +releaseEvents +resizeBy +resizeTo +return +routeEvent +scroll +scrollBy +scrollTo +scrollbars +self +setInterval +setTimeout +status +statusbar +stop +sun +switch +taint +this +toString +toolbar +top +typeof +unescape +untaint +unwatch +valueOf +var +void +watch +while +window +with diff --git a/ac-dict/lua-mode b/ac-dict/lua-mode new file mode 100644 index 0000000..d0de6a4 --- /dev/null +++ b/ac-dict/lua-mode @@ -0,0 +1,21 @@ +and +break +do +else +elseif +end +false +for +function +if +in +local +nil +not +or +repeat +return +then +true +until +while diff --git a/ac-dict/php-mode b/ac-dict/php-mode new file mode 100644 index 0000000..04352d8 --- /dev/null +++ b/ac-dict/php-mode @@ -0,0 +1,62 @@ +and +array +as +break +case +catch +cfunction +class +clone +const +continue +declare +default +die +do +echo +else +elseif +empty +enddeclare +endfor +endforeach +endif +endswitch +endwhile +eval +exit +extends +final +for +foreach +function +global +goto +if +implements +include +include_once +instanceof +interface +isset +list +namespace +new +old_function +or +print +private +protected +public +require +require_once +return +static +switch +throw +try +unset +use +var +while +xor diff --git a/ac-dict/python-mode b/ac-dict/python-mode new file mode 100644 index 0000000..33b4b32 --- /dev/null +++ b/ac-dict/python-mode @@ -0,0 +1,104 @@ +__import__ +abs +and +any +apply +as +assert +basestring +bin +bool +break +buffer +class +cmp +coerce +complex +continue +def +del +delattr +dict +dir +divmod +elif +else +enumerate +eval +except +exec +execfile +file +filter +finally +float +for +format +from +frozenset +getattr +global +globals +hasattr +hash +help +hex +id +if +import +in +input +int +intern +is +isinstance +issubclass +iter +lambda +len +list +locals +long +map +max +min +next +not +object +oct +open +or +ord +pass +pow +print +print +property +raise +range +raw_input +reduce +reload +repr +return +reversed +round +set +setattr +slice +sorted +staticmethod +str +sum +super +try +tuple +type +unichr +unicode +vars +while +with +xrange +yield +zip diff --git a/ac-dict/ruby-mode b/ac-dict/ruby-mode new file mode 100644 index 0000000..90b4fc9 --- /dev/null +++ b/ac-dict/ruby-mode @@ -0,0 +1,181 @@ +$! +$" +$$ +$& +$' +$* +$+ +$, +$-0 +$-F +$-I +$-K +$-a +$-d +$-i +$-l +$-p +$-v +$-w +$. +$/ +$0 +$1 +$10 +$11 +$2 +$3 +$4 +$5 +$6 +$7 +$8 +$9 +$: +$; +$< +$= +$> +$? +$@ +$DEBUG +$FILENAME +$KCODE +$LOADED_FEATURES +$LOAD_PATH +$PROGRAM_NAME +$SAFE +$VERBOSE +$\ +$_ +$` +$deferr +$defout +$stderr +$stdin +$stdout +$~ +ARGF +ARGV +Array +BEGIN +DATA +END +ENV +FALSE +Float +Integer +NIL +PLATFORM +RELEASE_DATE +RUBY_COPYRIGHT +RUBY_DESCRIPTION +RUBY_PATCHLEVEL +RUBY_PLATFORM +RUBY_RELEASE_DATE +RUBY_VERSION +SCRIPT_LINES__ +STDERR +STDIN +STDOUT +String +TOPLEVEL_BINDING +TRUE +VERSION +__method__ +` +abort +alias +and +at_exit +autoload +autoload? +begin +binding +block_given +break +callcc +caller +case +catch +chomp +chomp! +chop +chop +class +def +defined? +do +else +elsif +end +ensure +eval +exec +exit +exit! +fail +false +for +fork +format +getc +gets +global_variables +gsub +gsub! +if +in +iterator? +lambda +load +local_varaibles +loop +module +next +nil +not +open +or +p +printf +proc +putc +puts +raise +rand +readline +readlines +redo +require +require_relative +rescue +retry +return +scan +select +self +set_trace_func +sleep +split +sprintf +srand +sub +sub! +super +syscall +system +test +then +throw +trace_var +trap +true +undef +unless +until +untrace_var +warn +when +while +yield diff --git a/ac-dict/scheme-mode b/ac-dict/scheme-mode new file mode 100644 index 0000000..e5cca61 --- /dev/null +++ b/ac-dict/scheme-mode @@ -0,0 +1,216 @@ +case-lambda +call/cc +class +define-class +exit-handler +field +import +inherit +init-field +interface +let*-values +let-values +let/ec +mixin +opt-lambda +override +protect +provide +public +rename +require +require-for-syntax +syntax +syntax-case +syntax-error +unit/sig +unless +when +with-syntax +and +begin +call-with-current-continuation +call-with-input-file +call-with-output-file +case +cond +define +define-syntax +delay +do +dynamic-wind +else +for-each +if +lambda +let +let* +let-syntax +letrec +letrec-syntax +map +or +syntax-rules +abs +acos +angle +append +apply +asin +assoc +assq +assv +atan +boolean? +caar +cadr +call-with-input-file +call-with-output-file +call-with-values +car +cdddar +cddddr +cdr +ceiling +char->integer +char-alphabetic? +char-ci<=? +char-ci=? +char-ci>? +char-downcase +char-lower-case? +char-numeric? +char-ready? +char-upcase +char-upper-case? +char-whitespace? +char<=? +char=? +char>? +char? +close-input-port +close-output-port +complex? +cons +cos +current-input-port +current-output-port +denominator +display +eof-object? +eq? +equal? +eqv? +eval +even? +exact->inexact +exact? +exp +expt +#f +floor +force +gcd +imag-part +inexact->exact +inexact? +input-port? +integer->char +integer? +interaction-environment +lcm +length +list +list->string +list->vector +list-ref +list-tail +list? +load +log +magnitude +make-polar +make-rectangular +make-string +make-vector +max +member +memq +memv +min +modulo +negative? +newline +not +null-environment +null? +number->string +number? +numerator +odd? +open-input-file +open-output-file +output-port? +pair? +peek-char +port? +positive? +procedure? +quasiquote +quote +quotient +rational? +rationalize +read +read-char +real-part +real? +remainder +reverse +round +scheme-report-environment +set! +set-car! +set-cdr! +sin +sqrt +string +string->list +string->number +string->symbol +string-append +string-ci<=? +string-ci=? +string-ci>? +string-copy +string-fill! +string-length +string-ref +string-set! +string<=? +string=? +string>? +string? +substring +symbol->string +symbol? +#t +tan +transcript-off +transcript-on +truncate +values +vector +vector->list +vector-fill! +vector-length +vector-ref +vector-set! diff --git a/ac-dict/sclang-mode b/ac-dict/sclang-mode new file mode 100644 index 0000000..2b92135 --- /dev/null +++ b/ac-dict/sclang-mode @@ -0,0 +1,1481 @@ +A2K +A2K +abs +absdif +AbstractFunction +AbstractIn +AbstractOut +AbstractServerAction +acos +addition +Adverbs +AllpassC +AllpassL +AllpassN +amclip +AmpComp +AmpComp +AmpCompA +AmpCompA +ampdb +Amplitude +Amplitude +APF +AppClock +Archive +Array +Array2D +ArrayedCollection +asin +Assignment +Association +asTarget +atan +atan2 +AudioControl +AudioIn +audio_rate_mapping +AutoClassHelper +Bag +Balance2 +Balance2 +Ball +Ball +BAllPass +BAllPass +BasicOpUGen +basic_live_coding_techniques +BBandPass +BBandPass +BBandStop +BBandStop +BeatTrack +BeatTrack +BeatTrack +BeatTrack2 +BeatTrack2 +BeatTrack2 +BEQSuite +BEQSuite +BHiPass +BHiPass +BHiPass4 +BHiShelf +BHiShelf +BinaryOpFunction +BinaryOpStream +BinaryOpUGen +BiPanB2 +BiPanB2 +Blip +Blip +BLowPass +BLowPass +BLowPass4 +BLowShelf +BLowShelf +Boolean +BPeakEQ +BPeakEQ +BPF +BPF +BPZ2 +BPZ2 +BRF +BRF +BrownNoise +BrownNoise +BRZ2 +BRZ2 +BufAllpassC +BufAllpassL +BufAllpassN +BufChannels +BufChannels +BufCombC +BufCombL +BufCombN +BufDelayC +BufDelayL +BufDelayN +BufDur +BufDur +Buffer +Buffers +BufFrames +BufFrames +BufRateScale +BufRateScale +BufRd +BufRd +BufSampleRate +BufSampleRate +BufSamples +BufSamples +BufWr +BufWr +bundledCommands +Bus +BusPlug +Busses +Button +CCResponder +ceil +Changed +Changed +ChaosGen +Char +CheckBadValues +Class +Classes +ClassHelpTemplate +ClearBuf +ClientVsServer +Clip +Clip +clip2 +ClipNoise +ClipNoise +Clock +CmdPeriod +cmds +CocoaMenuItem +CoinGate +CoinGate +Collection +Collections +Color +CombC +CombL +CombN +Comments +Compander +Compander +CompanderD +Complex +CompositeView +Condition +ContiguousBlockAllocator +Control +Control-Structures +ControlDur +ControlName +ControlRate +ControlSpec +convertRhythm +Convolution +Convolution2 +Convolution2L +Convolution3 +cos +COsc +COsc +cosh +cpsmidi +cpsoct +Crackle +Crackle +Creating-Standalone-Applications +Crossplatform +CSVFileReader +cubed +CuspL +CuspL +CuspN +CuspN +Date +dbamp +Dbrown +Dbrown +Dbufrd +Dbufrd +Dbufwr +Dbufwr +DC +DC +Debugging-tips +DebugNodeWatcher +Decay +Decay +Decay2 +Decay2 +DecodeB2 +DecodeB2 +default_group +DegreeToKey +DegreeToKey +Delay1 +Delay2 +DelayC +DelayL +DelayN +DelTapRd +DelTapRd +DelTapWr +DelTapWr +Demand +Demand +DemandEnvGen +DemandEnvGen +DemandEnvGen +DetectIndex +DetectIndex +DetectSilence +DetectSilence +DetectSilence +Dgeom +Dgeom +Dialog +Dibrown +Dictionary +difsqr +DiskIn +DiskIn +DiskIn +DiskOut +DiskOut +DiskOut +distort +division +Diwhite +Document +DocumentAutoCompletion +Donce +Done +Done +DoubleArray +Dpoll +Dpoll +DragBoth +DragSink +DragSource +Drand +Drand +Dreset +Dreset +Dseq +Dseq +Dser +Dser +Dseries +Dseries +Dshuf +Dshuf +Dstutter +Dstutter +Dswitch +Dswitch +Dswitch1 +Dswitch1 +DUGen +Dunique +Dust +Dust +Dust2 +Dust2 +Duty +Duty +Dwhite +Dwhite +Dwrand +Dwrand +Dxrand +DynKlang +DynKlang +DynKlank +DynKlank +DynKlank +EmacsEditor +EmacsGUI +Env +EnvelopeView +EnvGate +EnvGen +EnvGen +EnvirGui +Environment +EnvironmentRedirect +Error +Event +EventPatternProxy +EventPatternProxy +EventStream +EventStreamPlayer +Event_types +Exception +excess +exp +exponentiation +ExpRand +ExpRand +ExpRand +Expression-Sequence +EZGui +EZKnob +EZLists +EZListView +EZNumber +EZPopUpMenu +EZRanger +EZScroller +EZSlider +EZText +False +FBSineC +FBSineC +FBSineL +FBSineL +FBSineN +FBSineN +Fdef +FFT +FFTTrigger +File +FileReader +Filter +FilterPattern +FilterPattern +Float +FloatArray +floor +FlowLayout +FlowView +Fold +Fold +fold2 +Font +Formant +Formant +Formlet +Formlet +FOS +FOS +frac +Frame +Free +Free +FreeSelf +FreeSelf +FreeSelfWhenDone +FreeSelfWhenDone +FreeVerb +FreeVerb2 +FreqScope +FreqScopeView +FreqShift +FreqShift +FreqShift +FSinOsc +FSinOsc +FuncFilterPattern +Function +FunctionDef +FunctionList +Functions +Gate +GbmanL +GbmanL +GbmanN +GbmanN +Gendy1 +Gendy1 +Gendy2 +Gendy2 +Gendy3 +Gendy3 +GeneralHID +GeneralHIDDevice +GeneralHIDSlot +GeneralHIDSpec +Glossary +Gradient +GrainBuf +GrainBuf +GrainFM +GrainIn +GrainSin +GrayNoise +GrayNoise +greaterorequalthan +greaterthan +Group +Groups +GUI +gui +GUI-Classes +GUI-Overview +GVerb +Harmonics +Hasher +Hasher +Help +HelpDocsLicensing +Helper +HelpSearchResult +HenonC +HenonC +HenonL +HenonL +HenonN +HenonN +HIDDeviceService +Hilbert +HilbertFIR +HiliteGradient +History +HistoryGui +HLayoutView +How-to-Use-the-Interpreter +HPF +HPF +HPZ1 +HPZ1 +HPZ2 +HPZ2 +hypot +hypotApx +IdentityBag +IdentityDictionary +IdentitySet +IEnvGen +IEnvGen +if +IFFT +Impulse +Impulse +In +Index +Index +IndexInBetween +IndexInBetween +IndexL +IndexL +InFeedback +Infinitum +initClass +InRange +InRange +InRect +InRect +Int16Array +Int32Array +Int8Array +Integer +Integrator +Integrator +Integrator +Internal-Snooping +InterplEnv +InterplPairs +InterplXYC +Interpreter +Interval +InTrig +Intro-to-Objects +Introductory_tutorial +IRand +IRand +IRand +isKindOf +isNegative +isPositive +isStrictlyPositive +JITGui +JITLib +jitlib_asCompileString +jitlib_basic_concepts_01 +jitlib_basic_concepts_02 +jitlib_basic_concepts_03 +jitlib_basic_concepts_04 +jitlib_efficiency +jitlib_fading +jitlib_networking +J_concepts_in_SC +K2A +K2A +KeyState +KeyState +KeyTrack +KeyTrack +Klang +Klang +Klang +Klank +Klank +Klank +Knob +Lag +Lag +Lag2 +Lag2 +Lag2UD +Lag2UD +Lag3 +Lag3 +Lag3UD +Lag3UD +LagControl +LagIn +LagUD +LagUD +LastValue +Latch +Latch +LatoocarfianC +LatoocarfianC +LatoocarfianL +LatoocarfianL +LatoocarfianN +LatoocarfianN +LazyEnvir +LeakDC +LeakDC +LeastChange +LeastChange +lessorequalthan +lessthan +LFClipNoise +LFClipNoise +LFCub +LFCub +LFDClipNoise +LFDClipNoise +LFDNoise0 +LFDNoise0 +LFDNoise1 +LFDNoise1 +LFDNoise3 +LFDNoise3 +LFGauss +LFGauss +LFNoise0 +LFNoise0 +LFNoise1 +LFNoise1 +LFNoise2 +LFNoise2 +LFPar +LFPar +LFPulse +LFPulse +LFSaw +LFSaw +LFTri +LFTri +Library +LibraryBase +Licensing +LID +Limiter +Limiter +LinCongC +LinCongC +LinCongL +LinCongL +LinCongN +LinCongN +Line +Line +Linen +Linen +LinExp +LinExp +LinkedList +LinkedListNode +LinLin +LinLin +LinPan2 +LinPan2 +LinRand +LinRand +LinRand +LinSelectX +Linux_udev_setup +LinXFade2 +LinXFade2 +List +ListComprehensions +ListDUGen +ListPattern +ListPattern +ListView +Literals +LocalBuf +LocalBuf +LocalIn +LocalOut +log +log10 +log2 +Logistic +Logistic +loop +LorenzL +LorenzL +Loudness +Loudness +LPF +LPF +LPZ1 +LPZ1 +LPZ2 +LPZ2 +Magnitude +Main +MantissaMask +MantissaMask +matchItem +max +MaxLocalBufs +MaxLocalBufs +Maybe +Median +Median +Method +Method-Calls +MFCC +MFCC +MidEQ +MidEQ +MIDI +midicps +MIDIIn +MIDIOut +MIDIResponder +min +Mix +modifiers +Modifying_Standalones +modulo +Monitor +MonitorGui +MoogFF +MoogFF +More-On-Getting-Help +MostChange +MostChange +MouseButton +MouseButton +MouseX +MouseX +MouseY +MouseY +MovieView +MulAdd +MultiChannel +MultiLevelIdentityDictionary +MultiOutUGen +multiplication +MultiSliderView +MultiTap +NamedControl +NAryOpFunction +NAryOpStream +Ndef +NdefGui +NdefMixer +NdefMixerOld +NdefParamGui +neg +NetAddr +Nil +Node +NodeControl +NodeEvent +NodeMap +NodeMessaging +NodeProxy +NodeProxyEditor +NodeProxy_roles +NodeWatcher +Non-Realtime-Synthesis +Normalizer +Normalizer +NoteOnResponder +Notes-on-the-HTML-Help-System +NotificationCenter +NRand +NRand +NRand +NumAudioBuses +Number +NumberBox +NumBuffers +NumControlBuses +NumInputBuses +NumOutputBuses +NumRunningSynths +Object +ObjectGui +ObjectTable +octcps +OffsetOut +OnePole +OnePole +OneZero +OneZero +Onsets +Onsets +Operators +Order +Order-of-execution +OrderedIdentitySet +Osc +Osc +OSCBundle +OscN +OscN +OSCpathResponder +OSCresponder +OSCresponderNode +OSC_communication +Out +OutputProxy +PAbstractGroup +PackFFT +Padd +Padd +Paddp +Paddp +Paddpre +Paddpre +Pair +Pan2 +Pan2 +Pan4 +Pan4 +PanAz +PanAz +PanB +PanB +PanB2 +PanB2 +Panner +PartConv +Partial-Application +PathName +Pattern +PatternConductor +PatternProxy +PatternProxy +PatternsDocumentedAndNot +Pause +Pause +PauseSelf +PauseSelf +PauseSelfWhenDone +Pavaroh +Pavaroh +Pbeta +Pbeta +Pbind +Pbind +Pbindef +Pbindef +Pbindf +Pbindf +PbindProxy +PbindProxy +Pbinop +Pbinop +Pbrown +Pbrown +Pbus +Pbus +Pcauchy +Pcauchy +Pchain +Pchain +Pclump +Pclutch +Pclutch +Pcollect +Pcollect +Pconst +Pconst +Pdef +Pdef +PdefAllGui +PdefEditor +PdefGui +Pdefn +Pdefn +PdegreeToKey +PdegreeToKey +Pdfsm +Pdfsm +Pdict +Pdict +Pdiff +Pdrop +PdurStutter +PdurStutter +Peak +Peak +PeakFollower +PeakFollower +Pen +Penvir +Penvir +Pevent +Peventmod +Pexprand +Pexprand +PfadeIn +PfadeOut +Pfin +Pfin +Pfindur +Pfindur +PfinQuant +Pfinval +Pfinval +Pflatten +Pflow +Pflow +Pfpar +Pfset +Pfset +Pfsm +Pfsm +Pfunc +Pfunc +Pfuncn +Pfuncn +Pfx +Pfx +Pfxb +Pfxb +Pgate +Pgate +Pgauss +Pgauss +Pgbrown +Pgbrown +Pgeom +Pgeom +Pget +Pgpar +Pgpar +Pgroup +Pgroup +Pgtpar +PG_01_Introduction +PG_02_Basic_Vocabulary +PG_03_What_Is_Pbind +PG_04_Words_to_Phrases +PG_05_Math_on_Patterns +PG_060_Filter_Patterns +PG_06a_Repetition_Contraint_Patterns +PG_06b_Time_Based_Patterns +PG_06c_Composition_of_Patterns +PG_06d_Parallel_Patterns +PG_06e_Language_Control +PG_06f_Server_Control +PG_06g_Data_Sharing +PG_07_Value_Conversions +PG_08_Event_Types_and_Parameters +PG_Cookbook01_Basic_Sequencing +PG_Cookbook02_Manipulating_Patterns +PG_Cookbook03_External_Control +PG_Cookbook04_Sending_MIDI +PG_Cookbook05_Using_Samples +PG_Cookbook06_Phrase_Network +PG_Cookbook07_Rhythmic_Variations +PG_Ref01_Pattern_Internals +Phasor +Phasor +Phid +Phid +PhidKey +PhidKey +PhidSlot +PhidSlot +Phprand +Phprand +Pif +Pif +Pindex +Pindex +PingPong +PinkerNoise +PinkNoise +PinkNoise +Pipe +Pitch +Pitch +Pitch +PitchShift +PitchShift +Pkey +Pkey +Place +Place +Plag +Plambda +Plambda +Platform +play +PlayBuf +PlayBuf +playN +Plazy +Plazy +PlazyEnvir +PlazyEnvir +PlazyEnvirN +PlazyEnvirN +Plet +plot +Plotter +Plprand +Plprand +Pluck +Pluck +Pmeanrand +Pmeanrand +Pmono +Pmono +PmonoArtic +PmonoArtic +PMOsc +PMOsc +Pmul +Pmul +Pmulp +Pmulp +Pmulpre +Pmulpre +Pn +Pn +Pnaryop +Pnaryop +Pnsym +Pnsym +Pnsym1 +Point +Polar +Poll +Poll +Polymorphism +PopUpMenu +Post +pow +Ppar +Ppar +PparGroup +Ppatlace +Ppatlace +Ppatmod +Ppatmod +Pplayer +Ppoisson +Ppoisson +Pprob +Pprob +Pprotect +Pprotect +Pproto +Pproto +Prand +Prand +Preject +Preject +Prewrite +Prewrite +PriorityQueue +Process +Prorate +Prorate +Prout +Prout +Proutine +Proutine +ProxyMixer +ProxyMixerOld +ProxyMonitorGui +ProxySpace +proxyspace_examples +ProxySynthDef +Pseed +Pseed +Pseg +Pseg +Pselect +Pselect +Pseq +Pseq +Pser +Pser +Pseries +Pseries +Pset +Pset +Psetp +Psetp +Psetpre +Psetpre +Pshuf +Pshuf +PSinGrain +Pslide +Pslide +Pspawn +Pspawn +Pspawner +Pspawner +Pstep +Pstep +Pstep2add +Pstep3add +PstepNadd +PstepNadd +PstepNfunc +PstepNfunc +Pstretch +Pstretchp +Pstutter +Pstutter +Pswitch +Pswitch +Pswitch1 +Pswitch1 +Psym +Psym +Psym1 +Psync +Psync +Ptime +Ptime +Ptpar +Ptpar +Ptrace +Ptsym +Ptuple +Ptuple +publishing_code +Pulse +Pulse +PulseCount +PulseDivider +Punop +Punop +pvcalc +pvcalc2 +pvcollect +PV_Add +PV_BinScramble +PV_BinShift +PV_BinWipe +PV_BrickWall +PV_ChainUGen +PV_ChainUGen +PV_ConformalMap +PV_Conj +PV_Copy +PV_CopyPhase +PV_Diffuser +PV_Div +PV_HainsworthFoote +PV_JensenAndersen +PV_LocalMax +PV_MagAbove +PV_MagBelow +PV_MagClip +PV_MagDiv +PV_MagFreeze +PV_MagMul +PV_MagNoise +PV_MagShift +PV_MagSmear +PV_MagSquared +PV_Max +PV_Min +PV_Mul +PV_PhaseShift +PV_PhaseShift270 +PV_PhaseShift90 +PV_RandComb +PV_RandWipe +PV_RectComb +PV_RectComb2 +Pwalk +Pwalk +Pwhile +Pwhile +Pwhite +Pwhite +Pwrand +Pwrand +Pwrap +Pwrap +Pxrand +Pxrand +QuadC +QuadC +QuadL +QuadL +QuadN +QuadN +Quant +Quark +Quarks +RadiansPerSample +Ramp +Ramp +Rand +Rand +Rand +RandID +RandID +Randomness +randomSeed +RandSeed +RandSeed +RangeSlider +RawArray +RawPointer +reciprocal +RecNodeProxy +RecordBuf +RecordBuf +Rect +recursive_phrasing +Ref +RefCopy +Regenerate-GUI-Help +ReplaceOut +resize +Resonz +Resonz +RHPF +RHPF +ring1 +ring2 +ring3 +ring4 +Ringz +Ringz +RLPF +RLPF +RootNode +Rossler +Rotate2 +Rotate2 +round +Routine +runMe +runMe2 +RunningMax +RunningMax +RunningMin +RunningMin +RunningSum +RunningSum +SampleDur +SampleRate +Saw +Saw +SC2DSlider +SC2DTabletSlider +Scale +scaleneg +SCButton +SCCompositeView +SCContainerView +SCControlView +SCDragBoth +SCDragSink +SCDragSource +SCDragView +SCEnvelopeEdit +SCEnvelopeView +SCFont +SCFreqScope +SCFreqScopeWindow +Scheduler +SCHLayoutView +Schmidt +Schmidt +SCImage +SCImageFilter +SCImageKernel +SCKnob +SCLayoutView +SCLevelIndicator +SCListView +SCMenuGroup +SCMenuItem +SCMenuSeparator +SCModalSheet +SCModalWindow +SCMovieView +SCMultiSliderView +SCNumberBox +Scope +ScopeOut +ScopeOut2 +ScopeView +Score +SCPen +SCPopUpMenu +SCQuartzComposerView +SCRangeSlider +ScrollView +SCScope +SCScrollTopView +SCScrollView +SCSlider +SCSliderBase +SCSoundFileView +SCStaticText +SCStaticTextBase +SCStethoscope +SCTabletView +SCTextField +SCTextView +SCTopView +SCUserView +SCUserView-Subclassing +SCView +SCVLayoutView +SCWindow +Select +Select +SelectX +SelectX +SelectXFocus +SelectXFocus +Semaphore +SendPeakRMS +SendReply +SendTrig +SequenceableCollection +SerialPort +Server +Server-Architecture +Server-Command-Reference +ServerBoot +ServerOptions +ServerQuit +ServerTiming +ServerTree +Set +SetBuf +SetResetFF +Shaper +Shaper +SharedIn +SharedOut +Shortcuts +sign +Signal +Silent +Silent +SimpleController +SimpleNumber +sin +sinh +SinOsc +SinOsc +SinOscFB +SkipJack +Slew +Slew +Slider +Slider2D +Slope +Slope +Slope +softclip +softPut +softSet +softVol_ +somepage +SortedList +SOS +SOS +SoundFile +SoundFileView +SoundFileViewProgressWindow +SoundIn +SparseArray +Spawner +Spec +SpecCentroid +SpecCentroid +SpecFlatness +SpecFlatness +SpecPcile +SpecPcile +Splay +SplayAz +SplayZ +Spring +Spring +sqrdif +sqrsum +sqrt +squared +StandardL +StandardL +StandardN +StandardN +StartUp +StaticText +Stepper +StereoConvolution2L +Stethoscope +Stream +StreamClutch +Streams +Streams-Patterns-Events1 +Streams-Patterns-Events2 +Streams-Patterns-Events3 +Streams-Patterns-Events4 +Streams-Patterns-Events5 +Streams-Patterns-Events6 +Streams-Patterns-Events7 +String +StubTemplate +SubsampleOffset +subtraction +sumsqr +Sweep +switch +Symbol +SymbolArray +SymbolicNotations +SyncSaw +SyncSaw +Syntax-Shortcuts +Synth +Synth-Controlling-UGens +Synth-Definition-File-Format +SynthDef +SynthDesc +SynthDescLib +SystemClock +T2A +T2A +T2K +T2K +TabFileReader +TabletSlider2D +TabletView +tan +tanh +Tap +Tap +Task +TaskProxy +TaskProxy +TaskProxyGui +TBall +TBall +TChoose +Tdef +Tdef +TdefAllGui +TdefEditor +TdefGui +TDelay +TDelay +TDuty +TDuty +TempoBusClock +TempoClock +TExpRand +TExpRand +TextField +TextView +TGrains +TGrains +TGrains +the_lazy_proxy +Thread +thresh +Thunk +Timer +TIRand +TIRand +ToggleFF +TopicHelpTemplate +Tour_of_UGens +TRand +TRand +Trig +Trig1 +TrigControl +True +trunc +Tuning +Tutorial +TWChoose +TWChoose +TWindex +TWindex +TwoPole +TwoPole +TwoWayIdentityDictionary +TwoZero +TwoZero +UGen +UGen-doneActions +UGenHelpTemplate +UGens +UGens-and-Synths +UnaryOpFunction +UnaryOpStream +UnaryOpUGen +Understanding-Errors +Undocumented-Classes +UniqueID +UnixFILE +Unpack1FFT +UnpackFFT +UserView +Using-Extensions +Using-the-Startup-File +UsingMIDI +VarLag +VarSaw +VarSaw +VDiskIn +VDiskIn +VDiskIn +Vibrato +View +ViewRedirect +VLayoutView +Volume +VOsc +VOsc +VOsc3 +VOsc3 +Warp +Warp1 +Warp1 +Warp1 +Wavetable +WhiteNoise +WhiteNoise +WidthFirstUGen +WiiMote +WikiUsage +Window +Wrap +Wrap +wrap2 +WrapIndex +WrapIndex +Writing-Classes +Writing_Unit_Generators +XFade +XFade2 +XFade2 +XLine +XLine +XOut +ZeroCrossing +ZeroCrossing diff --git a/ac-dict/sh-mode b/ac-dict/sh-mode new file mode 100644 index 0000000..df66ae3 --- /dev/null +++ b/ac-dict/sh-mode @@ -0,0 +1,182 @@ +# Bash Family Shell Dictionary +# http://www.gnu.org/software/bash/manual/bash.html + +. +: +[ +alias +bg +bind +break +builtin +caller +cd +command +compgen +complete +compopt +continue +declare +dirs +disown +echo +enable +eval +exec +exit +export +fc +fg +getopts +hash +help +history +jobs +kill +let +local +logout +mapfile +popd +printf +pushd +pwd +read +readarray +readonly +return +set +shift +shopt +source +suspend +test +times +trap +type +typeset +ulimit +umask +unalias +unset +wait +! +[[ +]] +case +do +done +elif +else +esac +fi +for +function +if +in +select +then +time +until +while +{ +} +! +# +$ +* +- +0 +? +@ +_ +BASH +BASH_ALIASES +BASH_ARGC +BASH_ARGV +BASH_CMDS +BASH_COMMAND +BASH_ENV +BASH_EXECUTION_STRING +BASH_LINENO +BASH_REMATCH +BASH_SOURCE +BASH_SUBSHELL +BASH_VERSINFO +BASH_VERSION +BASH_XTRACEFD +BASHOPTS +BASHPID +CDPATH +COLUMNS +COMP_CWORD +COMP_KEY +COMP_LINE +COMP_POINT +COMP_TYPE +COMP_WORDBREAKS +COMP_WORDS +COMPREPLY +DIRSTACK +EMACS +EUID +FCEDIT +FIGNORE +FUNCNAME +GLOBIGNORE +GROUPS +HISTCMD +HISTCONTROL +HISTFILE +HISTFILESIZE +HISTIGNORE +HISTSIZE +HISTTIMEFORMAT +HOME +HOSTFILE +HOSTNAME +HOSTTYPE +IFS +IGNOREEOF +INPUTRC +LANG +LC_ALL +LC_COLLATE +LC_CTYPE +LC_MESSAGES +LC_MESSAGES +LC_NUMERIC +LINENO +LINES +MACHTYPE +MAIL +MAILCHECK +MAILPATH +OLDPWD +OPTARG +OPTERR +OPTIND +OSTYPE +PATH +PIPESTATUS +POSIXLY_CORRECT +PPID +PROMPT_COMMAND +PROMPT_DIRTRIM +PS1 +PS2 +PS3 +PS4 +PWD +RANDOM +REPLY +SECONDS +SHELL +SHELLOPTS +SHLVL +TEXTDOMAIN +TEXTDOMAINDIR +TIMEFORMAT +TMOUT +TMPDIR +UID diff --git a/ac-dict/tcl-mode b/ac-dict/tcl-mode new file mode 100644 index 0000000..07a1281 --- /dev/null +++ b/ac-dict/tcl-mode @@ -0,0 +1,172 @@ +after +append +apply +array +auto_execok +auto_import +auto_load +auto_load_index +auto_mkindex +auto_mkindex_old +auto_qualify +auto_reset +bell +binary +bind +bindtags +break +button +canvas +case +catch +cd +chan +checkbutton +clipboard +clock +close +concat +continue +destroy +dict +encoding +entry +eof +error +eval +event +exec +exit +expr +fblocked +fconfigure +fcopy +file +fileevent +flush +focus +font +for +foreach +format +frame +gets +glob +global +grab +grid +if +image +incr +info +interp +join +label +labelframe +lappend +lassign +lindex +linsert +list +listbox +llength +load +lower +lrange +lrepeat +lreplace +lreverse +lsearch +lset +lsort +menu +menubutton +message +namespace +open +option +pack +package +panedwindow +pid +pkg_mkIndex +place +proc +puts +pwd +radiobutton +raise +read +regexp +registry +regsub +rename +return +scale +scan +scrollbar +seek +selection +set +socket +source +spinbox +split +string +subst +switch +tclLog +tclPkgSetup +tclPkgUnknown +tcl_findLibrary +tell +text +time +tk +tk_chooseColor +tk_chooseDirectory +tk_getOpenFile +tk_getSaveFile +tk_menuSetFocus +tk_messageBox +tk_popup +tk_textCopy +tk_textCut +tk_textPaste +tkwait +toplevel +ttk::button +ttk::checkbutton +ttk::combobox +ttk::entry +ttk::focusFirst +ttk::frame +ttk::label +ttk::labelframe +ttk::menubutton +ttk::notebook +ttk::paned +ttk::panedwindow +ttk::progressbar +ttk::radiobutton +ttk::scale +ttk::scrollbar +ttk::separator +ttk::setTheme +ttk::sizegrip +ttk::style +ttk::takefocus +ttk::themes +ttk::treeview +trace +unknown +unload +unset +update +uplevel +upvar +variable +vwait +while +winfo +wm diff --git a/ac-dict/ts-mode b/ac-dict/ts-mode new file mode 100644 index 0000000..ffe377f --- /dev/null +++ b/ac-dict/ts-mode @@ -0,0 +1,797 @@ +absRefPrefix +accessibility +accessibilityWrap +accessKey +ACT +ACTIFSUB +ACTIVSUBRO +ACTRO +addAttributes +addExtUrlsAndShortCuts +additionalHeaders +additionalParams +addParams +addQueryString +addQueryString +adjustItemsH +adjustSubItemsH +adminPanelStyles +after +age +align +align.field +all +allowedAttribs +allowedGroups +allowEdit +allowNew +allowTags +allStdWrap +allWrap +alternativeSortingField +alternativeTempPath +altImgResource +altTarget +altText +alwaysActivePIDlist +alwaysLink +andWhere +angle +antiAlias +append +applyTotalH +applyTotalW +arrayReturnMode +arrowACT +arrowImgParams +arrowNO +ATagBeforeWrap +ATagParams +ATagTitle +atLeast +atMost +authcodeFields +autoInsertPID +autostart +backColor +badMess +base64 +baseURL +beforeImg +beforeImgLink +beforeImgTagParams +beforeROImg +beforeWrap +begin +begin +beginAtLevel +beLoginLinkIPList +beLoginLinkIPList_login +beLoginLinkIPList_logout +beUserLogin +bgImg +blankStrEqFalse +blur +bm +bodyTag +bodyTag +bodyTagAdd +bodyTagCObject +bodyTagMargins +border +border +borderCol +bordersWithin +borderThick +bottomContent +bottomHeight +br +breakSpace +breakWidth +brTag +bytes +c +cache_clearAtMidnight +cached +cache_period +caption +captionAlign +captionSplit +case +case +CASE +casesensitiveComp +cellpadding +cellspacing +char +charcoal +clearCacheOfPages +cMargins +COA +COA_INT +cObject +cObjNum +code +collapse +color +color1 +color2 +color3 +color.default +color.field +colRelations +cols +cols +colSpace +COLUMNS +COMMENT +commentWrap +compensateFieldWidth +compX +compY +concatenateJsAndCss +conf +config +config +CONFIG +constants +CONTENT +content_fallback +content_from_pid_allowOutsideDomain +controllerActionName +controllerExtensionName +controllerName +crop +cropHTML +csConv +cssInline +CSS_inlineStyle +CTABLE +CUR +CURIFSUB +CURIFSUBRO +current +CURRO +cWidth +data +dataArray +dataWrap +date +debug +debugData +debugFunc +debugItemConf +debugRenumberedObject +decimals +dec_point +default +defaultAlign +defaultCmd +defaultCode +defaultGetVars +delete +denyTags +depth +dimensions +directImageLink +directionLeft +directionUp +directReturn +disableAllHeaderCode +disableAltText +disableCharsetHeader +disableImgBorderAttr +disablePageExternalUrl +disablePrefixComment +disablePreviewNotification +displayActiveOnLoad +displayActiveOnLoad +displayrecord +distributeX +distributeY +doctype +doctypeSwitch +doNotLinkIt +doNotShowLink +doNotStripHTML +dontCheckPid +dontFollowMouse +dontHideOnMouseUp +dontLinkIfSubmenu +dontMd5FieldNames +dontWrapInTable +doubleBrTag +doublePostCheck +dWorkArea +edge +edit +editIcons +editIcons +editPanel +EDITPANEL +EDITPANEL +effects +email +emailMess +emboss +emptyTitleHandling +emptyTitleHandling +emptyTitleHandling +enable +enableContentLengthHeader +encapsLines +encapsLinesStdWrap +encapsTagList +entryLevel +equalH +equals +evalErrors +evalFunc +excludeDoktypes +excludeNoSearchPages +excludeUidList +expAll +explode +ext +extbase +externalBlocks +extOnReady +extTarget +face.default +face.field +FEData +fe_userEditSelf +fe_userOwnSelf +field +fieldPrefix +fieldRequired +fieldWrap +file +FILE +filelink +fileList +fileTarget +firstLabel +firstLabelGeneral +flip +flop +foldSpeed +foldTimer +fontFile +fontSize +fontSizeMultiplicator +fontTag +footerData +forceAbsoluteUrl +forceTypeValue +FORM +format +formName +formurl +frame +frameReloadIfNotInFrameset +frameSet +freezeMouseover +ftu +gamma +gapBgCol +gapLineCol +gapLineThickness +gapWidth +gif +GIFBUILDER +globalNesting +GMENU +goodMess +gray +gr_list +groupBy +headerComment +headerData +headTag +height +hiddenFields +hide +hideButCreateMap +hideMenuTimer +hideMenuWhenNotOver +hideNonTranslated +highColor +HMENU +hover +hoverStyle +HRULER +HTML +html5 +htmlmail +HTMLparser +htmlSpecialChars +htmlTag_dir +htmlTag_langKey +htmlTag_setParams +http +icon +iconCObject +icon_image_ext_list +icon_link +icon_thumbSize +if +ifBlank +ifEmpty +IFSUB +IFSUBRO +ignore +IMAGE +image_compression +image_effects +image_frames +imgList +imgMap +imgMapExtras +imgMax +imgNameNotRandom +imgNamePrefix +imgObjNum +imgParams +imgPath +imgStart +IMGTEXT +import +inBranch +includeCSS +includeJS +includeJSFooter +includeJSFooterlibs +includeJSlibs +includeLibrary +includeLibs +includeNotInMenu +incT3Lib_htmlmail +index_descrLgd +index_enable +index_externals +index_metatags +infomail +inlineJS +inlineLanguageLabel +inlineSettings +inlineStyle2TempFile +innerStdWrap_all +innerWrap +innerWrap2 +inputLevels +insertClassesFromRTE +insertData +intensity +intTarget +intval +invert +IProcFunc +isFalse +isGreaterThan +isInList +isLessThan +isPositive +isTrue +itemArrayProcFunc +items +iterations +javascriptLibs +join +jpg +jsFooterInline +jsInline +JSMENU +JSwindow +JSwindow.altUrl +JSwindow.altUrl_noDefaultParams +JSwindow.expand +JSwindow.newWindow +JSwindow_params +jumpurl +jumpurl_enable +jumpurl_mailto_disable +keep +keepNonMatchedTags +keywords +keywordsField +labelStdWrap +labelWrap +lang +language +language_alt +languageField +layer_menu_id +layerStyle +layout +layoutRootPath +leftjoin +leftOffset +levels +limit +lineColor +lineThickness +linkAccessRestrictedPages +linkParams +linkVars +linkWrap +list +listNum +lm +LOAD_REGISTER +locale_all +localNesting +locationData +lockFilePath +lockPosition +lockPosition_addSelf +lockPosition_adjust +loginUser +longdescURL +loop +lowColor +lower +mailto +main +mainScript +makelinks +markers +markerWrap +mask +max +maxAge +maxH +maxHeight +maxItems +maxW +maxWidth +maxWInText +m.bgImg +m.bottomImg +m.bottomImg_mask +md5 +meaningfulTempFilePrefix +menuBackColor +menuHeight +menuOffset +menuWidth +message_page_is_being_generated +message_preview +message_preview_workspace +meta +metaCharset +method +minH +minifyCSS +minifyJS +minItems +minItems +minW +m.mask +moveJsFromHeaderToFooter +MP_defaults +MP_disableTypolinkClosestMPvalue +MP_mapRootPoints +MULTIMEDIA +name +namespaces +negate +newRecordFromTable +newRecordInPid +next +niceText +NO +noAttrib +noBlur +no_cache +noCols +noLink +noLinkUnderline +nonCachedSubst +none +nonTypoTagStdWrap +nonTypoTagUserFunc +nonWrappedTag +noOrderBy +noPageTitle +noResultObj +normalWhenNoLanguage +noRows +noScale +noScaleUp +noscript +noStretchAndMarginCells +notification_email_charset +notification_email_encoding +notification_email_urlmode +noTrimWrap +noValueInsert +noWrapAttr +numberFormat +numRows +obj +offset +offset +_offset +offsetWrap +onlyCurrentPid +opacity +options +orderBy +OTABLE +outerWrap +outline +output +outputLevels +override +overrideAttribs +overrideEdit +overrideId +PAGE +pageGenScript +pageRendererTemplateFile +pageTitleFirst +parameter +params +parseFunc +parseFunc +parseValues +partialRootPath +path +pidInList +pixelSpaceFontSizeRef +plainTextStdWrap +pluginNames +png +postCObject +postUserFunc +postUserFunkInt +preCObject +prefixComment +prefixLocalAnchors +prefixLocalAnchors +prefixRelPathWith +preIfEmptyListNum +prepend +preUserFunc +prev +previewBorder +printBeforeContent +prioriCalc +processScript +properties +protect +protectLvar +quality +quality +radioInputWrap +radioWrap +range +range +rawUrlEncode +recipient +RECORDS +recursive +redirect +reduceColors +relativeToParentLayer +relativeToTriggerItem +relPathPrefix +remap +remapTag +removeBadHTML +removeDefaultJS +removeIfEquals +removeIfFalse +removeObjectsOfDummy +removePrependedNumbers +removeTags +removeWrapping +renderCharset +renderObj +renderWrap +REQ +required +required +resources +resultObj +returnKey +returnLast +reverseOrder +rightjoin +rm +rmTagIfNoAttrib +RO_chBgColor +rootline +rotate +rows +rowSpace +sample +sample +section +sectionIndex +select +sendCacheHeaders +sendCacheHeaders_onlyWhenLoginDeniedInBranch +separator +setContentToCurrent +setCurrent +setfixed +setFixedHeight +setFixedWidth +setJS_mouseOver +setJS_openPic +setKeywords +shadow +sharpen +shear +short +shortcutIcon +showAccessRestrictedPages +showActive +showFirst +simulateStaticDocuments +simulateStaticDocuments_addTitle +simulateStaticDocuments_dontRedirectPathInfoError +simulateStaticDocuments_noTypeIfNoTitle +simulateStaticDocuments_pEnc +simulateStaticDocuments_pEnc_onlyP +simulateStaticDocuments_replacementChar +sitetitle +size +size.default +size.field +slide +smallFormFields +solarize +source +space +spaceAfter +spaceBefore +spaceBelowAbove +spaceLeft +spaceRight +spacing +spamProtectEmailAddresses +spamProtectEmailAddresses_atSubst +spamProtectEmailAddresses_lastDotSubst +SPC +special +split +splitRendering +src +stat +stat_apache +stat_apache_logfile +stat_apache_niceTitle +stat_apache_noHost +stat_apache_noRoot +stat_apache_notExtended +stat_apache_pagenames +stat_excludeBEuserHits +stat_excludeIPList +stat_mysql +stat_pageLen +stat_titleLen +stat_typeNumList +stayFolded +stdWrap +stdWrap2 +strftime +stripHtml +stripProfile +stylesheet +submenuObjSuffixes +subMenuOffset +subparts +subst_elementUid +subst_elementUid +substMarksSeparately +substring +swirl +sword +sword_noMixedCase +sword_standAlone +sys_language_mode +sys_language_overlay +sys_language_softExclude +sys_language_softMergeIfNotBlank +sys_language_uid +sys_page +table +tableParams +tables +tableStdWrap +tableStyle +tags +target +TCAselectItem +TDparams +template +TEMPLATE +templateFile +text +TEXT +textMargin +textMargin_outOfText +textMaxLength +textObjNum +textPos +textStyle +thickness +thousands_sep +title +titleTagFunction +titleText +titleText +tm +TMENU +token +topOffset +totalWidth +transparentBackground +transparentColor +trim +twice +typeNum +types +typolink +typolinkCheckRootline +typolinkEnableLinksAcrossDomains +typolinkLinkAccessRestrictedPages +typolinkLinkAccessRestrictedPages_addParams +uid +uidInList +uniqueGlobal +uniqueLinkVars +uniqueLocal +unset +unsetEmpty +upper +url +useCacheHash +useLargestItemX +useLargestItemY +USER +USERDEF1 +USERDEF1RO +USERDEF2RO +USERFEF2 +userFunc +userFunc_updateArray +userIdColumn +USER_INT +USERNAME_substToken +USERUID_substToken +USR +USRRO +value +variables +wave +where +width +wordSpacing +workArea +workOnSubpart +wrap +wrap2 +wrap3 +wrapAlign +wrapFieldName +wrapItemAndSub +wrapNoWrappedLines +wraps +xhtml_11 +xhtml_2 +xhtml_basic +xhtml_cleaning +xhtmlDoctype +xhtml_frames +xhtml+rdfa_10 +xhtml_strict +xhtml_trans +xml_10 +xml_11 +xmlprologue +xPosOffset +yPosOffset diff --git a/ac-dict/tuareg-mode b/ac-dict/tuareg-mode new file mode 100644 index 0000000..e709f9f --- /dev/null +++ b/ac-dict/tuareg-mode @@ -0,0 +1,231 @@ +# OCaml 3.12.1 + +# Keywords +and +as +assert +begin +class +constraint +do +done +downto +else +end +exception +external +false +for +fun +function +functor +if +in +include +inherit +initializer +lazy +let +match +method +module +mutable +new +object +of +open +or +private +rec +sig +struct +then +to +true +try +type +val +virtual +when +while +with + +# Pervasives +! +!= +& +&& +* +** +*. ++ ++. +- +-. +/ +/. +:= +< +<= +<> += +== +> +>= +@ +FP_infinite +FP_nan +FP_normal +FP_subnormal +FP_zero +LargeFile +Open_append +Open_binary +Open_creat +Open_nonblock +Open_rdonly +Open_text +Open_trunc +Open_wronly +Oupen_excl +^ +^^ +abs +abs_float +acos +asin +asr +at_exit +atan +atan2 +bool_of_string +ceil +char_of_int +classify_float +close_in +close_in_noerr +close_out +close_out_noerr +compare +cos +cosh +decr +do_at_exit +epsilon_float +exit +exp +expm1 +failwith +float +float_of_int +float_of_string +floor +flush +flush_all +format +format4 +format_of_string +fpclass +frexp +fst +ignore +in_channel +in_channel_length +incr +infinity +input +input_binary_int +input_byte +input_char +input_line +input_value +int_of_char +int_of_float +int_of_string +invalid_arg +land +ldexp +lnot +log +log10 +log1p +lor +lsl +lsr +lxor +max +max_float +max_int +min +min_float +min_int +mod +mod_float +modf +nan +neg_infinity +not +open_flag +open_in +open_in_bin +open_in_gen +open_out +open_out_bin +open_out_gen +or +out_channel +out_channel_length +output +output_binary_int +output_byte +output_char +output_string +output_value +pos_in +pos_out +pred +prerr_char +prerr_endline +prerr_float +prerr_int +prerr_newline +prerr_string +print_char +print_endline +print_float +print_int +print_newline +print_string +raise +read_float +read_int +read_line +really_input +ref +seek_in +seek_out +set_binary_mode_in +set_binary_mode_out +sin +sinh +snd +sqrt +stderr +stdin +stdout +string_of_bool +string_of_float +string_of_format +string_of_int +succ +tan +tanh +truncate +unsafe_really_input +valid_float_lexem +|| +~ +~+ +~+. +~- +~-. diff --git a/ac-dict/verilog-mode b/ac-dict/verilog-mode new file mode 100644 index 0000000..acc2f32 --- /dev/null +++ b/ac-dict/verilog-mode @@ -0,0 +1,313 @@ +`define +`else +`endif +`ifdef +`ifndef +`macromodule +`module +`primitive +`timescale +above +abs +absdelay +ac_stim +acos +acosh +alias +aliasparam +always +always_comb +always_ff +always_latch +analog +analysis +and +asin +asinh +assert +assign +assume +atan +atan2 +atanh +automatic +before +begin +bind +bins +binsof +bit +branch +break +buf +bufif0 +bufif1 +byte +case +casex +casez +cell +chandle +class +clocking +cmos +config +connectmodule +connectrules +const +constraint +context +continue +cos +cosh +cover +covergroup +coverpoint +cross +ddt +ddx +deassign +default +define +defparam +design +disable +discipline +dist +do +driver_update +edge +else +end +endcase +endclass +endclocking +endconfig +endconnectrules +enddiscipline +endfunction +endgenerate +endgroup +endif +endinterface +endmodule +endnature +endpackage +endparamset +endprimitive +endprogram +endproperty +endsequence +endspecify +endtable +endtask +enum +event +exclude +exp +expect +export +extends +extern +final +final_step +first_match +flicker_noise +floor +flow +for +force +foreach +forever +fork +forkjoin +from +function +generate +genvar +ground +highz0 +highz1 +hypot +idt +idtmod +if +ifdef +iff +ifndef +ifnone +ignore_bins +illegal_bins +import +incdir +include +inf +initial +initial_step +inout +input +inside +instance +int +integer +interface +intersect +join +join_any +join_none +laplace_nd +laplace_np +laplace_zd +laplace_zp +large +last_crossing +liblist +library +limexp +ln +local +localparam +log +logic +longint +macromodule +mailbox +matches +max +medium +min +modport +module +nand +nand +nature +negedge +net_resolution +new +nmos +nmos +noise_table +nor +noshowcancelled +not +notif0 +notif1 +null +or +output +package +packed +parameter +paramset +pmos +pmos +posedge +potential +pow +primitive +priority +program +property +protected +pull0 +pull1 +pullup +pulsestyle_ondetect +pulsestyle_onevent +pure +rand +randc +randcase +randcase +randsequence +rcmos +real +realtime +ref +reg +release +repeat +return +rnmos +rpmos +rtran +rtranif0 +rtranif1 +scalared +semaphore +sequence +shortint +shortreal +showcancelled +signed +sin +sinh +slew +small +solve +specify +specparam +sqrt +static +string +strong0 +strong1 +struct +super +supply +supply0 +supply1 +table +tagged +tan +tanh +task +then +this +throughout +time +timeprecision +timer +timescale +timeunit +tran +tran +tranif0 +tranif1 +transition +tri +tri +tri0 +tri1 +triand +trior +trireg +type +typedef +union +unique +unsigned +use +uwire +var +vectored +virtual +void +wait +wait_order +wand +weak0 +weak1 +while +white_noise +wildcard +wire +with +within +wor +wreal +xnor +xor +zi_nd +zi_np +zi_zd diff --git a/auto-complete-config.el b/auto-complete-config.el new file mode 100644 index 0000000..ec44a9c --- /dev/null +++ b/auto-complete-config.el @@ -0,0 +1,483 @@ +;;; auto-complete-config.el --- auto-complete additional configuations + +;; Copyright (C) 2009, 2010 Tomohiro Matsuyama + +;; Author: Tomohiro Matsuyama +;; Keywords: convenience +;; Version: 1.3.1 + +;; 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 3 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, see . + +;;; Commentary: + +;; + +;;; Code: + +(eval-when-compile + (require 'cl)) + +(require 'auto-complete) + + + +;;;; Additional sources + +;; imenu + +(defvar ac-imenu-index nil) + +(ac-clear-variable-every-10-minutes 'ac-imenu-index) + +(defun ac-imenu-candidates () + (loop with i = 0 + with stack = (progn + (unless (local-variable-p 'ac-imenu-index) + (make-local-variable 'ac-imenu-index)) + (or ac-imenu-index + (setq ac-imenu-index + (ignore-errors + (with-no-warnings + (imenu--make-index-alist)))))) + with result + while (and stack (or (not (integerp ac-limit)) + (< i ac-limit))) + for node = (pop stack) + if (consp node) + do + (let ((car (car node)) + (cdr (cdr node))) + (if (consp cdr) + (mapc (lambda (child) + (push child stack)) + cdr) + (when (and (stringp car) + (string-match (concat "^" (regexp-quote ac-prefix)) car)) + ;; Remove extra characters + (if (string-match "^.*\\(()\\|=\\|<>\\)$" car) + (setq car (substring car 0 (match-beginning 1)))) + (push car result) + (incf i)))) + finally return (nreverse result))) + +(ac-define-source imenu + '((depends imenu) + (candidates . ac-imenu-candidates) + (symbol . "s"))) + +;; gtags + +(defface ac-gtags-candidate-face + '((t (:background "lightgray" :foreground "navy"))) + "Face for gtags candidate" + :group 'auto-complete) + +(defface ac-gtags-selection-face + '((t (:background "navy" :foreground "white"))) + "Face for the gtags selected candidate." + :group 'auto-complete) + +(defun ac-gtags-candidate () + (ignore-errors + (split-string (shell-command-to-string (format "global -ci %s" ac-prefix)) "\n"))) + +(ac-define-source gtags + '((candidates . ac-gtags-candidate) + (candidate-face . ac-gtags-candidate-face) + (selection-face . ac-gtags-selection-face) + (requires . 3) + (symbol . "s"))) + +;; yasnippet + +(defface ac-yasnippet-candidate-face + '((t (:background "sandybrown" :foreground "black"))) + "Face for yasnippet candidate." + :group 'auto-complete) + +(defface ac-yasnippet-selection-face + '((t (:background "coral3" :foreground "white"))) + "Face for the yasnippet selected candidate." + :group 'auto-complete) + +(defun ac-yasnippet-table-hash (table) + (cond + ((fboundp 'yas/snippet-table-hash) + (yas/snippet-table-hash table)) + ((fboundp 'yas/table-hash) + (yas/table-hash table)))) + +(defun ac-yasnippet-table-parent (table) + (cond + ((fboundp 'yas/snippet-table-parent) + (yas/snippet-table-parent table)) + ((fboundp 'yas/table-parent) + (yas/table-parent table)))) + +(defun ac-yasnippet-candidate-1 (table) + (with-no-warnings + (let ((hashtab (ac-yasnippet-table-hash table)) + (parent (ac-yasnippet-table-parent table)) + candidates) + (maphash (lambda (key value) + (push key candidates)) + hashtab) + (setq candidates (all-completions ac-prefix (nreverse candidates))) + (if parent + (setq candidates + (append candidates (ac-yasnippet-candidate-1 parent)))) + candidates))) + +(defun ac-yasnippet-candidates () + (with-no-warnings + (if (fboundp 'yas/get-snippet-tables) + ;; >0.6.0 + (apply 'append (mapcar 'ac-yasnippet-candidate-1 (yas/get-snippet-tables major-mode))) + (let ((table + (if (fboundp 'yas/snippet-table) + ;; <0.6.0 + (yas/snippet-table major-mode) + ;; 0.6.0 + (yas/current-snippet-table)))) + (if table + (ac-yasnippet-candidate-1 table)))))) + +(ac-define-source yasnippet + '((depends yasnippet) + (candidates . ac-yasnippet-candidates) + (action . yas/expand) + (candidate-face . ac-yasnippet-candidate-face) + (selection-face . ac-yasnippet-selection-face) + (symbol . "a"))) + +;; semantic + +(defun ac-semantic-candidates (prefix) + (with-no-warnings + (delete "" ; semantic sometimes returns an empty string + (mapcar 'semantic-tag-name + (ignore-errors + (or (semantic-analyze-possible-completions + (semantic-analyze-current-context)) + (senator-find-tag-for-completion prefix))))))) + +(ac-define-source semantic + '((available . (or (require 'semantic-ia nil t) + (require 'semantic/ia nil t))) + (candidates . (ac-semantic-candidates ac-prefix)) + (prefix . c-dot-ref) + (requires . 0) + (symbol . "m"))) + +(ac-define-source semantic-raw + '((available . (or (require 'semantic-ia nil t) + (require 'semantic/ia nil t))) + (candidates . (ac-semantic-candidates ac-prefix)) + (symbol . "s"))) + +;; eclim + +(defun ac-eclim-candidates () + (with-no-warnings + (loop for c in (eclim/java-complete) + collect (nth 1 c)))) + +(ac-define-source eclim + '((candidates . ac-eclim-candidates) + (prefix . c-dot) + (requires . 0) + (symbol . "f"))) + +;; css + +;; Copied from company-css.el +(defconst ac-css-property-alist + ;; see http://www.w3.org/TR/CSS21/propidx.html + '(("azimuth" angle "left-side" "far-left" "left" "center-left" "center" + "center-right" "right" "far-right" "right-side" "behind" "leftwards" + "rightwards") + ("background" background-color background-image background-repeat + background-attachment background-position) + ("background-attachment" "scroll" "fixed") + ("background-color" color "transparent") + ("background-image" uri "none") + ("background-position" percentage length "left" "center" "right" percentage + length "top" "center" "bottom" "left" "center" "right" "top" "center" + "bottom") + ("background-repeat" "repeat" "repeat-x" "repeat-y" "no-repeat") + ("border" border-width border-style border-color) + ("border-bottom" border) + ("border-bottom-color" border-color) + ("border-bottom-style" border-style) + ("border-bottom-width" border-width) + ("border-collapse" "collapse" "separate") + ("border-color" color "transparent") + ("border-left" border) + ("border-left-color" border-color) + ("border-left-style" border-style) + ("border-left-width" border-width) + ("border-right" border) + ("border-right-color" border-color) + ("border-right-style" border-style) + ("border-right-width" border-width) + ("border-spacing" length length) + ("border-style" border-style) + ("border-top" border) + ("border-top-color" border-color) + ("border-top-style" border-style) + ("border-top-width" border-width) + ("border-width" border-width) + ("bottom" length percentage "auto") + ("caption-side" "top" "bottom") + ("clear" "none" "left" "right" "both") + ("clip" shape "auto") + ("color" color) + ("content" "normal" "none" string uri counter "attr()" "open-quote" + "close-quote" "no-open-quote" "no-close-quote") + ("counter-increment" identifier integer "none") + ("counter-reset" identifier integer "none") + ("cue" cue-before cue-after) + ("cue-after" uri "none") + ("cue-before" uri "none") + ("cursor" uri "*" "auto" "crosshair" "default" "pointer" "move" "e-resize" + "ne-resize" "nw-resize" "n-resize" "se-resize" "sw-resize" "s-resize" + "w-resize" "text" "wait" "help" "progress") + ("direction" "ltr" "rtl") + ("display" "inline" "block" "list-item" "run-in" "inline-block" "table" + "inline-table" "table-row-group" "table-header-group" "table-footer-group" + "table-row" "table-column-group" "table-column" "table-cell" + "table-caption" "none") + ("elevation" angle "below" "level" "above" "higher" "lower") + ("empty-cells" "show" "hide") + ("float" "left" "right" "none") + ("font" font-style font-variant font-weight font-size "/" line-height + font-family "caption" "icon" "menu" "message-box" "small-caption" + "status-bar") + ("font-family" family-name generic-family) + ("font-size" absolute-size relative-size length percentage) + ("font-style" "normal" "italic" "oblique") + ("font-variant" "normal" "small-caps") + ("font-weight" "normal" "bold" "bolder" "lighter" "100" "200" "300" "400" + "500" "600" "700" "800" "900") + ("height" length percentage "auto") + ("left" length percentage "auto") + ("letter-spacing" "normal" length) + ("line-height" "normal" number length percentage) + ("list-style" list-style-type list-style-position list-style-image) + ("list-style-image" uri "none") + ("list-style-position" "inside" "outside") + ("list-style-type" "disc" "circle" "square" "decimal" "decimal-leading-zero" + "lower-roman" "upper-roman" "lower-greek" "lower-latin" "upper-latin" + "armenian" "georgian" "lower-alpha" "upper-alpha" "none") + ("margin" margin-width) + ("margin-bottom" margin-width) + ("margin-left" margin-width) + ("margin-right" margin-width) + ("margin-top" margin-width) + ("max-height" length percentage "none") + ("max-width" length percentage "none") + ("min-height" length percentage) + ("min-width" length percentage) + ("orphans" integer) + ("outline" outline-color outline-style outline-width) + ("outline-color" color "invert") + ("outline-style" border-style) + ("outline-width" border-width) + ("overflow" "visible" "hidden" "scroll" "auto") + ("padding" padding-width) + ("padding-bottom" padding-width) + ("padding-left" padding-width) + ("padding-right" padding-width) + ("padding-top" padding-width) + ("page-break-after" "auto" "always" "avoid" "left" "right") + ("page-break-before" "auto" "always" "avoid" "left" "right") + ("page-break-inside" "avoid" "auto") + ("pause" time percentage) + ("pause-after" time percentage) + ("pause-before" time percentage) + ("pitch" frequency "x-low" "low" "medium" "high" "x-high") + ("pitch-range" number) + ("play-during" uri "mix" "repeat" "auto" "none") + ("position" "static" "relative" "absolute" "fixed") + ("quotes" string string "none") + ("richness" number) + ("right" length percentage "auto") + ("speak" "normal" "none" "spell-out") + ("speak-header" "once" "always") + ("speak-numeral" "digits" "continuous") + ("speak-punctuation" "code" "none") + ("speech-rate" number "x-slow" "slow" "medium" "fast" "x-fast" "faster" + "slower") + ("stress" number) + ("table-layout" "auto" "fixed") + ("text-align" "left" "right" "center" "justify") + ("text-decoration" "none" "underline" "overline" "line-through" "blink") + ("text-indent" length percentage) + ("text-transform" "capitalize" "uppercase" "lowercase" "none") + ("top" length percentage "auto") + ("unicode-bidi" "normal" "embed" "bidi-override") + ("vertical-align" "baseline" "sub" "super" "top" "text-top" "middle" + "bottom" "text-bottom" percentage length) + ("visibility" "visible" "hidden" "collapse") + ("voice-family" specific-voice generic-voice "*" specific-voice + generic-voice) + ("volume" number percentage "silent" "x-soft" "soft" "medium" "loud" + "x-loud") + ("white-space" "normal" "pre" "nowrap" "pre-wrap" "pre-line") + ("widows" integer) + ("width" length percentage "auto") + ("word-spacing" "normal" length) + ("z-index" "auto" integer)) + "A list of CSS properties and their possible values.") + +(defconst ac-css-value-classes + '((absolute-size "xx-small" "x-small" "small" "medium" "large" "x-large" + "xx-large") + (border-style "none" "hidden" "dotted" "dashed" "solid" "double" "groove" + "ridge" "inset" "outset") + (color "aqua" "black" "blue" "fuchsia" "gray" "green" "lime" "maroon" "navy" + "olive" "orange" "purple" "red" "silver" "teal" "white" "yellow" + "rgb") + (counter "counter") + (family-name "Courier" "Helvetica" "Times") + (generic-family "serif" "sans-serif" "cursive" "fantasy" "monospace") + (generic-voice "male" "female" "child") + (margin-width "auto") ;; length percentage + (relative-size "larger" "smaller") + (shape "rect") + (uri "url")) + "A list of CSS property value classes and their contents.") + +(defconst ac-css-pseudo-classes + '("active" "after" "before" "first" "first-child" "first-letter" "first-line" + "focus" "hover" "lang" "left" "link" "right" "visited") + "Identifiers for CSS pseudo-elements and pseudo-classes.") + +(defvar ac-css-property nil + "Current editing property.") + +(defun ac-css-prefix () + (when (save-excursion (re-search-backward "\\_<\\(.+?\\)\\_>\\s *:.*\\=" nil t)) + (setq ac-css-property (match-string 1)) + (or (ac-prefix-symbol) (point)))) + +(defun ac-css-property-candidates () + (or (loop with list = (assoc-default ac-css-property ac-css-property-alist) + with seen = nil + with value + while (setq value (pop list)) + if (symbolp value) + do (unless (memq value seen) + (push value seen) + (setq list + (append list + (or (assoc-default value ac-css-value-classes) + (assoc-default (symbol-name value) ac-css-property-alist))))) + else collect value) + ac-css-pseudo-classes)) + +(defvar ac-source-css-property + '((candidates . ac-css-property-candidates) + (prefix . ac-css-prefix) + (requires . 0))) + + + +;;;; Not maintained sources + +;; ropemacs + +(defvar ac-ropemacs-loaded nil) +(defun ac-ropemacs-require () + (with-no-warnings + (unless ac-ropemacs-loaded + (pymacs-load "ropemacs" "rope-") + (if (boundp 'ropemacs-enable-autoimport) + (setq ropemacs-enable-autoimport t)) + (setq ac-ropemacs-loaded t)))) + +(defun ac-ropemacs-setup () + (ac-ropemacs-require) + ;(setq ac-sources (append (list 'ac-source-ropemacs) ac-sources)) + (setq ac-omni-completion-sources '(("\\." ac-source-ropemacs)))) + +(defun ac-ropemacs-initialize () + (autoload 'pymacs-apply "pymacs") + (autoload 'pymacs-call "pymacs") + (autoload 'pymacs-eval "pymacs" nil t) + (autoload 'pymacs-exec "pymacs" nil t) + (autoload 'pymacs-load "pymacs" nil t) + (add-hook 'python-mode-hook 'ac-ropemacs-setup) + t) + +(defvar ac-ropemacs-completions-cache nil) +(defvar ac-source-ropemacs + '((init + . (lambda () + (setq ac-ropemacs-completions-cache + (mapcar + (lambda (completion) + (concat ac-prefix completion)) + (ignore-errors + (rope-completions)))))) + (candidates . ac-ropemacs-completions-cache))) + +;; rcodetools + +(defvar ac-source-rcodetools + '((init . (lambda () + (require 'rcodetools) + (condition-case x + (save-excursion + (rct-exec-and-eval rct-complete-command-name "--completion-emacs-icicles")) + (error) (setq rct-method-completion-table nil)))) + (candidates . (lambda () + (all-completions + ac-prefix + (mapcar + (lambda (completion) + (replace-regexp-in-string "\t.*$" "" (car completion))) + rct-method-completion-table)))))) + + + +;;;; Default settings + +(defun ac-common-setup () + (add-to-list 'ac-sources 'ac-source-filename)) + +(defun ac-emacs-lisp-mode-setup () + (setq ac-sources (append '(ac-source-features ac-source-functions ac-source-yasnippet ac-source-variables ac-source-symbols) ac-sources))) + +(defun ac-cc-mode-setup () + (setq ac-sources (append '(ac-source-yasnippet ac-source-gtags) ac-sources))) + +(defun ac-ruby-mode-setup () + (make-local-variable 'ac-ignores) + (add-to-list 'ac-ignores "end")) + +(defun ac-css-mode-setup () + (setq ac-sources (append '(ac-source-css-property) ac-sources))) + +(defun ac-config-default () + (setq-default ac-sources '(ac-source-abbrev ac-source-dictionary ac-source-words-in-same-mode-buffers)) + (add-hook 'emacs-lisp-mode-hook 'ac-emacs-lisp-mode-setup) + (add-hook 'c-mode-common-hook 'ac-cc-mode-setup) + (add-hook 'ruby-mode-hook 'ac-ruby-mode-setup) + (add-hook 'css-mode-hook 'ac-css-mode-setup) + (add-hook 'auto-complete-mode-hook 'ac-common-setup) + (global-auto-complete-mode t)) + +(provide 'auto-complete-config) +;;; auto-complete-config.el ends here diff --git a/auto-complete-pkg.el b/auto-complete-pkg.el new file mode 100644 index 0000000..cdd69d0 --- /dev/null +++ b/auto-complete-pkg.el @@ -0,0 +1,4 @@ +(define-package "auto-complete" + "1.4.0" + "Auto Completion for GNU Emacs" + '((popup "0.5.0"))) diff --git a/auto-complete.el b/auto-complete.el new file mode 100644 index 0000000..286c2d4 --- /dev/null +++ b/auto-complete.el @@ -0,0 +1,1897 @@ +;;; auto-complete.el --- Auto Completion for GNU Emacs + +;; Copyright (C) 2008, 2009, 2010 Tomohiro Matsuyama + +;; Author: Tomohiro Matsuyama +;; URL: http://cx4a.org/software/auto-complete +;; Keywords: completion, convenience +;; Version: 1.3.1 + +;; 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 3 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, see . + +;;; Commentary: +;; +;; This extension provides a way to complete with popup menu like: +;; +;; def-!- +;; +-----------------+ +;; |defun::::::::::::| +;; |defvar | +;; |defmacro | +;; | ... | +;; +-----------------+ +;; +;; You can complete by typing and selecting menu. +;; +;; Entire documents are located in doc/ directory. +;; Take a look for information. +;; +;; Enjoy! + +;;; Code: + + + +(eval-when-compile + (require 'cl)) + +(require 'popup) + +;;;; Global stuff + +(defun ac-error (&optional var) + "Report an error and disable `auto-complete-mode'." + (ignore-errors + (message "auto-complete error: %s" var) + (auto-complete-mode -1) + var)) + + + +;;;; Customization + +(defgroup auto-complete nil + "Auto completion." + :group 'completion + :prefix "ac-") + +(defcustom ac-delay 0.1 + "Delay to completions will be available." + :type 'float + :group 'auto-complete) + +(defcustom ac-auto-show-menu 0.8 + "Non-nil means completion menu will be automatically shown." + :type '(choice (const :tag "Yes" t) + (const :tag "Never" nil) + (float :tag "Timer")) + :group 'auto-complete) + +(defcustom ac-show-menu-immediately-on-auto-complete t + "Non-nil means menu will be showed immediately on `auto-complete'." + :type 'boolean + :group 'auto-complete) + +(defcustom ac-expand-on-auto-complete t + "Non-nil means expand whole common part on first time `auto-complete'." + :type 'boolean + :group 'auto-complete) + +(defcustom ac-disable-faces '(font-lock-comment-face font-lock-string-face font-lock-doc-face) + "Non-nil means disable automatic completion on specified faces." + :type '(repeat symbol) + :group 'auto-complete) + +(defcustom ac-stop-flymake-on-completing t + "Non-nil means disble flymake temporarily on completing." + :type 'boolean + :group 'auto-complete) + +(defcustom ac-use-fuzzy t + "Non-nil means use fuzzy matching." + :type 'boolean + :group 'auto-complete) + +(defcustom ac-fuzzy-cursor-color "red" + "Cursor color in fuzzy mode." + :type 'string + :group 'auto-complete) + +(defcustom ac-use-comphist t + "Non-nil means use intelligent completion history." + :type 'boolean + :group 'auto-complete) + +(defcustom ac-comphist-threshold 0.7 + "Percentage of ignoring low scored candidates." + :type 'float + :group 'auto-complete) + +(defcustom ac-comphist-file + (expand-file-name (concat (if (boundp 'user-emacs-directory) + user-emacs-directory + "~/.emacs.d/") + "/ac-comphist.dat")) + "Completion history file name." + :type 'string + :group 'auto-complete) + +(defcustom ac-use-quick-help t + "Non-nil means use quick help." + :type 'boolean + :group 'auto-complete) + +(defcustom ac-quick-help-delay 1.5 + "Delay to show quick help." + :type 'float + :group 'auto-complete) + +(defcustom ac-menu-height 10 + "Max height of candidate menu." + :type 'integer + :group 'auto-complete) +(defvaralias 'ac-candidate-menu-height 'ac-menu-height) + +(defcustom ac-quick-help-height 20 + "Max height of quick help." + :type 'integer + :group 'auto-complete) + +(defcustom ac-quick-help-prefer-x t + "Prefer X tooltip than overlay popup for displaying quick help." + :type 'boolean + :group 'auto-complete) + +(defcustom ac-candidate-limit nil + "Limit number of candidates. Non-integer means no limit." + :type 'integer + :group 'auto-complete) +(defvaralias 'ac-candidate-max 'ac-candidate-limit) + +(defcustom ac-modes + '(emacs-lisp-mode + lisp-interaction-mode + c-mode cc-mode c++-mode + java-mode clojure-mode scala-mode + scheme-mode + ocaml-mode tuareg-mode + perl-mode cperl-mode python-mode ruby-mode + ecmascript-mode javascript-mode js-mode js2-mode php-mode css-mode + makefile-mode sh-mode fortran-mode f90-mode ada-mode + xml-mode sgml-mode) + "Major modes `auto-complete-mode' can run on." + :type '(repeat symbol) + :group 'auto-complete) + +(defcustom ac-compatible-packages-regexp + "^ac-" + "Regexp to indicate what packages can work with auto-complete." + :type 'string + :group 'auto-complete) + +(defcustom ac-trigger-commands + '(self-insert-command) + "Trigger commands that specify whether `auto-complete' should start or not." + :type '(repeat symbol) + :group 'auto-complete) + +(defcustom ac-trigger-commands-on-completing + '(delete-backward-char + backward-delete-char + backward-delete-char-untabify) + "Trigger commands that specify whether `auto-complete' should continue or not." + :type '(repeat symbol) + :group 'auto-complete) + +(defcustom ac-trigger-key nil + "Non-nil means `auto-complete' will start by typing this key. +If you specify this TAB, for example, `auto-complete' will start by typing TAB, +and if there is no completions, an original command will be fallbacked." + :type 'string + :group 'auto-complete + :set (lambda (symbol value) + (set-default symbol value) + (when (and value + (fboundp 'ac-set-trigger-key)) + (ac-set-trigger-key value)))) + +(defcustom ac-auto-start 2 + "Non-nil means completion will be started automatically. +Positive integer means if a length of a word you entered is larger than the value, +completion will be started automatically. +If you specify `nil', never be started automatically." + :type '(choice (const :tag "Yes" t) + (const :tag "Never" nil) + (integer :tag "Require")) + :group 'auto-complete) + +(defcustom ac-ignores nil + "List of string to ignore completion." + :type '(repeat string) + :group 'auto-complete) + +(defcustom ac-ignore-case 'smart + "Non-nil means auto-complete ignores case. +If this value is `smart', auto-complete ignores case only when +a prefix doen't contain any upper case letters." + :type '(choice (const :tag "Yes" t) + (const :tag "Smart" smart) + (const :tag "No" nil)) + :group 'auto-complete) + +(defcustom ac-dwim t + "Non-nil means `auto-complete' works based on Do What I Mean." + :type 'boolean + :group 'auto-complete) + +(defcustom ac-use-menu-map nil + "Non-nil means a special keymap `ac-menu-map' on completing menu will be used." + :type 'boolean + :group 'auto-complete) + +(defcustom ac-use-overriding-local-map nil + "Non-nil means `overriding-local-map' will be used to hack for overriding key events on auto-copletion." + :type 'boolean + :group 'auto-complete) + +(defface ac-completion-face + '((t (:foreground "darkgray" :underline t))) + "Face for inline completion" + :group 'auto-complete) + +(defface ac-candidate-face + '((t (:background "lightgray" :foreground "black"))) + "Face for candidate." + :group 'auto-complete) + +(defface ac-selection-face + '((t (:background "steelblue" :foreground "white"))) + "Face for selected candidate." + :group 'auto-complete) + +(defvar auto-complete-mode-hook nil + "Hook for `auto-complete-mode'.") + + + +;;;; Internal variables + +(defvar auto-complete-mode nil + "Dummy variable to suppress compiler warnings.") + +(defvar ac-cursor-color nil + "Old cursor color.") + +(defvar ac-inline nil + "Inline completion instance.") + +(defvar ac-menu nil + "Menu instance.") + +(defvar ac-show-menu nil + "Flag to show menu on timer tick.") + +(defvar ac-last-completion nil + "Cons of prefix marker and selected item of last completion.") + +(defvar ac-quick-help nil + "Quick help instance") + +(defvar ac-completing nil + "Non-nil means `auto-complete-mode' is now working on completion.") + +(defvar ac-buffer nil + "Buffer where auto-complete is started.") + +(defvar ac-point nil + "Start point of prefix.") + +(defvar ac-last-point nil + "Last point of updating pattern.") + +(defvar ac-prefix nil + "Prefix string.") +(defvaralias 'ac-target 'ac-prefix) + +(defvar ac-selected-candidate nil + "Last selected candidate.") + +(defvar ac-common-part nil + "Common part string of meaningful candidates. +If there is no common part, this will be nil.") + +(defvar ac-whole-common-part nil + "Common part string of whole candidates. +If there is no common part, this will be nil.") + +(defvar ac-prefix-overlay nil + "Overlay for prefix string.") + +(defvar ac-timer nil + "Completion idle timer.") + +(defvar ac-show-menu-timer nil + "Show menu idle timer.") + +(defvar ac-quick-help-timer nil + "Quick help idle timer.") + +(defvar ac-triggered nil + "Flag to update.") + +(defvar ac-limit nil + "Limit number of candidates for each sources.") + +(defvar ac-candidates nil + "Current candidates.") + +(defvar ac-candidates-cache nil + "Candidates cache for individual sources.") + +(defvar ac-fuzzy-enable nil + "Non-nil means fuzzy matching is enabled.") + +(defvar ac-dwim-enable nil + "Non-nil means DWIM completion will be allowed.") + +(defvar ac-mode-map (make-sparse-keymap) + "Auto-complete mode map. It is also used for trigger key command. See also `ac-trigger-key'.") + +(defvar ac-completing-map + (let ((map (make-sparse-keymap))) + (define-key map "\t" 'ac-expand) + (define-key map "\r" 'ac-complete) + (define-key map (kbd "M-TAB") 'auto-complete) + (define-key map "\C-s" 'ac-isearch) + + (define-key map "\M-n" 'ac-next) + (define-key map "\M-p" 'ac-previous) + (define-key map [down] 'ac-next) + (define-key map [up] 'ac-previous) + + (define-key map [f1] 'ac-help) + (define-key map [M-f1] 'ac-persist-help) + (define-key map (kbd "C-?") 'ac-help) + (define-key map (kbd "C-M-?") 'ac-persist-help) + + (define-key map [C-down] 'ac-quick-help-scroll-down) + (define-key map [C-up] 'ac-quick-help-scroll-up) + (define-key map "\C-\M-n" 'ac-quick-help-scroll-down) + (define-key map "\C-\M-p" 'ac-quick-help-scroll-up) + + (dotimes (i 9) + (let ((symbol (intern (format "ac-complete-%d" (1+ i))))) + (fset symbol + `(lambda () + (interactive) + (when (and (ac-menu-live-p) (popup-select ac-menu ,i)) + (ac-complete)))) + (define-key map (read-kbd-macro (format "M-%s" (1+ i))) symbol))) + + map) + "Keymap for completion.") +(defvaralias 'ac-complete-mode-map 'ac-completing-map) + +(defvar ac-menu-map + (let ((map (make-sparse-keymap))) + (define-key map "\C-n" 'ac-next) + (define-key map "\C-p" 'ac-previous) + (set-keymap-parent map ac-completing-map) + map) + "Keymap for completion on completing menu.") + +(defvar ac-current-map + (let ((map (make-sparse-keymap))) + (set-keymap-parent map ac-completing-map) + map)) + +(defvar ac-match-function 'all-completions + "Default match function.") + +(defvar ac-prefix-definitions + '((symbol . ac-prefix-symbol) + (file . ac-prefix-file) + (valid-file . ac-prefix-valid-file) + (c-dot . ac-prefix-c-dot) + (c-dot-ref . ac-prefix-c-dot-ref)) + "Prefix definitions for common use.") + +(defvar ac-sources '(ac-source-words-in-same-mode-buffers) + "Sources for completion.") +(make-variable-buffer-local 'ac-sources) + +(defvar ac-compiled-sources nil + "Compiled source of `ac-sources'.") + +(defvar ac-current-sources nil + "Current working sources. This is sublist of `ac-compiled-sources'.") + +(defvar ac-omni-completion-sources nil + "Do not use this anymore.") + +(defvar ac-current-prefix-def nil) + +(defvar ac-ignoring-prefix-def nil) + + + +;;;; Intelligent completion history + +(defvar ac-comphist nil + "Database of completion history.") + +(defsubst ac-comphist-make-tab () + (make-hash-table :test 'equal)) + +(defsubst ac-comphist-tab (db) + (nth 0 db)) + +(defsubst ac-comphist-cache (db) + (nth 1 db)) + +(defun ac-comphist-make (&optional tab) + (list (or tab (ac-comphist-make-tab)) (make-hash-table :test 'equal :weakness t))) + +(defun ac-comphist-get (db string &optional create) + (let* ((tab (ac-comphist-tab db)) + (index (gethash string tab))) + (when (and create (null index)) + (setq index (make-vector (length string) 0)) + (puthash string index tab)) + index)) + +(defun ac-comphist-add (db string prefix) + (setq prefix (min prefix (1- (length string)))) + (when (<= 0 prefix) + (setq string (substring-no-properties string)) + (let ((stat (ac-comphist-get db string t))) + (incf (aref stat prefix)) + (remhash string (ac-comphist-cache db))))) + +(defun ac-comphist-score (db string prefix) + (setq prefix (min prefix (1- (length string)))) + (if (<= 0 prefix) + (let ((cache (gethash string (ac-comphist-cache db)))) + (or (and cache (aref cache prefix)) + (let ((stat (ac-comphist-get db string)) + (score 0.0)) + (when stat + (loop for p from 0 below (length string) + ;; sigmoid function + with a = 5 + with d = (/ 6.0 a) + for x = (- d (abs (- prefix p))) + for r = (/ 1.0 (1+ (exp (* (- a) x)))) + do + (incf score (* (aref stat p) r)))) + ;; Weight by distance + (incf score (max 0.0 (- 0.3 (/ (- (length string) prefix) 100.0)))) + (unless cache + (setq cache (make-vector (length string) nil)) + (puthash string cache (ac-comphist-cache db))) + (aset cache prefix score) + score))) + 0.0)) + +(defun ac-comphist-sort (db collection prefix &optional threshold) + (let (result + (n 0) + (total 0) + (cur 0)) + (setq result (mapcar (lambda (a) + (when (and cur threshold) + (if (>= cur (* total threshold)) + (setq cur nil) + (incf n) + (incf cur (cdr a)))) + (car a)) + (sort (mapcar (lambda (string) + (let ((score (ac-comphist-score db string prefix))) + (incf total score) + (cons string score))) + collection) + (lambda (a b) (< (cdr b) (cdr a)))))) + (if threshold + (cons n result) + result))) + +(defun ac-comphist-serialize (db) + (let (alist) + (maphash (lambda (k v) + (push (cons k v) alist)) + (ac-comphist-tab db)) + (list alist))) + +(defun ac-comphist-deserialize (sexp) + (condition-case nil + (ac-comphist-make (let ((tab (ac-comphist-make-tab))) + (mapc (lambda (cons) + (puthash (car cons) (cdr cons) tab)) + (nth 0 sexp)) + tab)) + (error (message "Invalid comphist db.") nil))) + +(defun ac-comphist-init () + (ac-comphist-load) + (add-hook 'kill-emacs-hook 'ac-comphist-save)) + +(defun ac-comphist-load () + (interactive) + (let ((db (if (file-exists-p ac-comphist-file) + (ignore-errors + (with-temp-buffer + (insert-file-contents ac-comphist-file) + (goto-char (point-min)) + (ac-comphist-deserialize (read (current-buffer)))))))) + (setq ac-comphist (or db (ac-comphist-make))))) + +(defun ac-comphist-save () + (interactive) + (require 'pp) + (ignore-errors + (with-temp-buffer + (pp (ac-comphist-serialize ac-comphist) (current-buffer)) + (write-region (point-min) (point-max) ac-comphist-file)))) + + + +;;;; Auto completion internals + +(defun ac-menu-at-wrapper-line-p () + "Return non-nil if current line is long and wrapped to next visual line." + (and (not truncate-lines) + (eq (line-beginning-position) + (save-excursion + (vertical-motion 1) + (line-beginning-position))))) + +(defun ac-prefix-symbol () + "Default prefix definition function." + (require 'thingatpt) + (car-safe (bounds-of-thing-at-point 'symbol))) +(defalias 'ac-prefix-default 'ac-prefix-symbol) + +(defun ac-prefix-file () + "File prefix." + (let ((point (re-search-backward "[\"<>' \t\r\n]" nil t))) + (if point (1+ point)))) + +(defun ac-prefix-valid-file () + "Existed (or to be existed) file prefix." + (let* ((line-beg (line-beginning-position)) + (end (point)) + (start (or (let ((point (re-search-backward "[\"<>'= \t\r\n]" line-beg t))) + (if point (1+ point))) + line-beg)) + (file (buffer-substring start end))) + (if (and file (or (string-match "^/" file) + (and (setq file (and (string-match "^[^/]*/" file) + (match-string 0 file))) + (file-directory-p file)))) + start))) + +(defun ac-prefix-c-dot () + "C-like languages dot(.) prefix." + (if (re-search-backward "\\.\\(\\(?:[a-zA-Z0-9][_a-zA-Z0-9]*\\)?\\)\\=" nil t) + (match-beginning 1))) + +(defun ac-prefix-c-dot-ref () + "C-like languages dot(.) and reference(->) prefix." + (if (re-search-backward "\\(?:\\.\\|->\\)\\(\\(?:[a-zA-Z0-9][_a-zA-Z0-9]*\\)?\\)\\=" nil t) + (match-beginning 1))) + +(defun ac-define-prefix (name prefix) + "Define new prefix definition. +You can not use it in source definition like (prefix . `NAME')." + (push (cons name prefix) ac-prefix-definitions)) + +(defun ac-match-substring (prefix candidates) + (loop with regexp = (regexp-quote prefix) + for candidate in candidates + if (string-match regexp candidate) + collect candidate)) + +(defsubst ac-source-entity (source) + (if (symbolp source) + (symbol-value source) + source)) + +(defun ac-source-available-p (source) + (if (and (symbolp source) + (get source 'available)) + (eq (get source 'available) t) + (let* ((src (ac-source-entity source)) + (avail-pair (assq 'available src)) + (avail-cond (cdr avail-pair)) + (available (and (if avail-pair + (cond + ((symbolp avail-cond) + (funcall avail-cond)) + ((listp avail-cond) + (eval avail-cond))) + t) + (loop for feature in (assoc-default 'depends src) + unless (require feature nil t) return nil + finally return t)))) + (if (symbolp source) + (put source 'available (if available t 'no))) + available))) + +(defun ac-compile-sources (sources) + "Compiled `SOURCES' into expanded sources style." + (loop for source in sources + if (ac-source-available-p source) + do + (setq source (ac-source-entity source)) + (flet ((add-attribute (name value &optional append) (add-to-list 'source (cons name value) append))) + ;; prefix + (let* ((prefix (assoc 'prefix source)) + (real (assoc-default (cdr prefix) ac-prefix-definitions))) + (cond + (real + (add-attribute 'prefix real)) + ((null prefix) + (add-attribute 'prefix 'ac-prefix-default)))) + ;; match + (let ((match (assq 'match source))) + (cond + ((eq (cdr match) 'substring) + (setcdr match 'ac-match-substring))))) + and collect source)) + +(defun ac-compiled-sources () + (or ac-compiled-sources + (setq ac-compiled-sources + (ac-compile-sources ac-sources)))) + +(defsubst ac-menu-live-p () + (popup-live-p ac-menu)) + +(defun ac-menu-create (point width height) + (setq ac-menu + (popup-create point width height + :around t + :face 'ac-candidate-face + :selection-face 'ac-selection-face + :symbol t + :scroll-bar t + :margin-left 1))) + +(defun ac-menu-delete () + (when ac-menu + (popup-delete ac-menu) + (setq ac-menu))) + +(defsubst ac-inline-marker () + (nth 0 ac-inline)) + +(defsubst ac-inline-overlay () + (nth 1 ac-inline)) + +(defsubst ac-inline-live-p () + (and ac-inline (ac-inline-overlay) t)) + +(defun ac-inline-show (point string) + (unless ac-inline + (setq ac-inline (list (make-marker) nil))) + (save-excursion + (let ((overlay (ac-inline-overlay)) + (width 0) + (string-width (string-width string)) + (length 0) + (original-string string)) + ;; Calculate string space to show completion + (goto-char point) + (let (c) + (while (and (not (eolp)) + (< width string-width) + (setq c (char-after)) + (not (eq c ?\t))) ; special case for tab + (incf width (char-width c)) + (incf length) + (forward-char))) + + ;; Show completion + (goto-char point) + (cond + ((= width 0) + (set-marker (ac-inline-marker) point) + (let ((buffer-undo-list t)) + (insert " ")) + (setq width 1 + length 1)) + ((<= width string-width) + ;; No space to show + ;; Do nothing + ) + ((> width string-width) + ;; Need to fill space + (setq string (concat string (make-string (- width string-width) ? ))))) + (setq string (propertize string 'face 'ac-completion-face)) + (if overlay + (progn + (move-overlay overlay point (+ point length)) + (overlay-put overlay 'invisible nil)) + (setq overlay (make-overlay point (+ point length))) + (setf (nth 1 ac-inline) overlay) + (overlay-put overlay 'priority 9999) + ;; Help prefix-overlay in some cases + (overlay-put overlay 'keymap ac-current-map)) + (overlay-put overlay 'display (substring string 0 1)) + ;; TODO no width but char + (overlay-put overlay 'after-string (substring string 1)) + (overlay-put overlay 'string original-string)))) + +(defun ac-inline-delete () + (when (ac-inline-live-p) + (ac-inline-hide) + (delete-overlay (ac-inline-overlay)) + (setq ac-inline nil))) + +(defun ac-inline-hide () + (when (ac-inline-live-p) + (let ((overlay (ac-inline-overlay)) + (marker (ac-inline-marker)) + (buffer-undo-list t)) + (when overlay + (when (marker-position marker) + (save-excursion + (goto-char marker) + (delete-char 1) + (set-marker marker nil))) + (move-overlay overlay (point-min) (point-min)) + (overlay-put overlay 'invisible t) + (overlay-put overlay 'display nil) + (overlay-put overlay 'after-string nil))))) + +(defun ac-inline-update () + (if (and ac-completing ac-prefix (stringp ac-common-part)) + (let ((common-part-length (length ac-common-part)) + (prefix-length (length ac-prefix))) + (if (> common-part-length prefix-length) + (progn + (ac-inline-hide) + (ac-inline-show (point) (substring ac-common-part prefix-length))) + (ac-inline-delete))) + (ac-inline-delete))) + +(defun ac-put-prefix-overlay () + (unless ac-prefix-overlay + (let (newline) + ;; Insert newline to make sure that cursor always on the overlay + (when (and (eq ac-point (point-max)) + (eq ac-point (point))) + (popup-save-buffer-state + (insert "\n")) + (setq newline t)) + (setq ac-prefix-overlay (make-overlay ac-point (1+ (point)) nil t t)) + (overlay-put ac-prefix-overlay 'priority 9999) + (overlay-put ac-prefix-overlay 'keymap (make-sparse-keymap)) + (overlay-put ac-prefix-overlay 'newline newline)))) + +(defun ac-remove-prefix-overlay () + (when ac-prefix-overlay + (when (overlay-get ac-prefix-overlay 'newline) + ;; Remove inserted newline + (popup-save-buffer-state + (goto-char (point-max)) + (if (eq (char-before) ?\n) + (delete-char -1)))) + (delete-overlay ac-prefix-overlay))) + +(defun ac-activate-completing-map () + (if (and ac-show-menu ac-use-menu-map) + (set-keymap-parent ac-current-map ac-menu-map)) + (when (and ac-use-overriding-local-map + (null overriding-terminal-local-map)) + (setq overriding-terminal-local-map ac-current-map)) + (when ac-prefix-overlay + (set-keymap-parent (overlay-get ac-prefix-overlay 'keymap) ac-current-map))) + +(defun ac-deactivate-completing-map () + (set-keymap-parent ac-current-map ac-completing-map) + (when (and ac-use-overriding-local-map + (eq overriding-terminal-local-map ac-current-map)) + (setq overriding-terminal-local-map nil)) + (when ac-prefix-overlay + (set-keymap-parent (overlay-get ac-prefix-overlay 'keymap) nil))) + +(defsubst ac-selected-candidate () + (if ac-menu + (popup-selected-item ac-menu))) + +(defun ac-prefix (requires ignore-list) + (loop with current = (point) + with point + with prefix-def + with sources + for source in (ac-compiled-sources) + for prefix = (assoc-default 'prefix source) + for req = (or (assoc-default 'requires source) requires 1) + + if (null prefix-def) + do + (unless (member prefix ignore-list) + (save-excursion + (setq point (cond + ((symbolp prefix) + (funcall prefix)) + ((stringp prefix) + (and (re-search-backward (concat prefix "\\=") nil t) + (or (match-beginning 1) (match-beginning 0)))) + ((stringp (car-safe prefix)) + (let ((regexp (nth 0 prefix)) + (end (nth 1 prefix)) + (group (nth 2 prefix))) + (and (re-search-backward (concat regexp "\\=") nil t) + (funcall (if end 'match-end 'match-beginning) + (or group 0))))) + (t + (eval prefix)))) + (if (and point + (integerp req) + (< (- current point) req)) + (setq point nil)) + (if point + (setq prefix-def prefix)))) + + if (equal prefix prefix-def) do (push source sources) + + finally return + (and point (list prefix-def point (nreverse sources))))) + +(defun ac-init () + "Initialize current sources to start completion." + (setq ac-candidates-cache nil) + (loop for source in ac-current-sources + for function = (assoc-default 'init source) + if function do + (save-excursion + (cond + ((functionp function) + (funcall function)) + (t + (eval function)))))) + +(defun ac-candidates-1 (source) + (let* ((do-cache (assq 'cache source)) + (function (assoc-default 'candidates source)) + (action (assoc-default 'action source)) + (document (assoc-default 'document source)) + (symbol (assoc-default 'symbol source)) + (ac-limit (or (assoc-default 'limit source) ac-limit)) + (face (or (assoc-default 'face source) (assoc-default 'candidate-face source))) + (selection-face (assoc-default 'selection-face source)) + (cache (and do-cache (assq source ac-candidates-cache))) + (candidates (cdr cache))) + (unless cache + (setq candidates (save-excursion + (cond + ((functionp function) + (funcall function)) + (t + (eval function))))) + ;; Convert (name value) format candidates into name with text properties. + (setq candidates (mapcar (lambda (candidate) + (if (consp candidate) + (propertize (car candidate) 'value (cdr candidate)) + candidate)) + candidates)) + (when do-cache + (push (cons source candidates) ac-candidates-cache))) + (setq candidates (funcall (or (assoc-default 'match source) + ac-match-function) + ac-prefix candidates)) + ;; Remove extra items regarding to ac-limit + (if (and (integerp ac-limit) (> ac-limit 1) (> (length candidates) ac-limit)) + (setcdr (nthcdr (1- ac-limit) candidates) nil)) + ;; Put candidate properties + (setq candidates (mapcar (lambda (candidate) + (popup-item-propertize candidate + 'action action + 'symbol symbol + 'document document + 'popup-face face + 'selection-face selection-face)) + candidates)) + candidates)) + +(defun ac-candidates () + "Produce candidates for current sources." + (loop with completion-ignore-case = (or (eq ac-ignore-case t) + (and (eq ac-ignore-case 'smart) + (let ((case-fold-search nil)) (not (string-match "[[:upper:]]" ac-prefix))))) + with case-fold-search = completion-ignore-case + with prefix-len = (length ac-prefix) + for source in ac-current-sources + append (ac-candidates-1 source) into candidates + finally return + (progn + (delete-dups candidates) + (if (and ac-use-comphist ac-comphist) + (if ac-show-menu + (let* ((pair (ac-comphist-sort ac-comphist candidates prefix-len ac-comphist-threshold)) + (n (car pair)) + (result (cdr pair)) + (cons (if (> n 0) (nthcdr (1- n) result))) + (cdr (cdr cons))) + (if cons (setcdr cons nil)) + (setq ac-common-part (try-completion ac-prefix result)) + (setq ac-whole-common-part (try-completion ac-prefix candidates)) + (if cons (setcdr cons cdr)) + result) + (setq candidates (ac-comphist-sort ac-comphist candidates prefix-len)) + (setq ac-common-part (if candidates (popup-x-to-string (car candidates)))) + (setq ac-whole-common-part (try-completion ac-prefix candidates)) + candidates) + (setq ac-common-part (try-completion ac-prefix candidates)) + (setq ac-whole-common-part ac-common-part) + candidates)))) + +(defun ac-update-candidates (cursor scroll-top) + "Update candidates of menu to `ac-candidates' and redraw it." + (setf (popup-cursor ac-menu) cursor + (popup-scroll-top ac-menu) scroll-top) + (setq ac-dwim-enable (= (length ac-candidates) 1)) + (if ac-candidates + (progn + (setq ac-completing t) + (ac-activate-completing-map)) + (setq ac-completing nil) + (ac-deactivate-completing-map)) + (ac-inline-update) + (popup-set-list ac-menu ac-candidates) + (if (and (not ac-fuzzy-enable) + (<= (length ac-candidates) 1)) + (popup-hide ac-menu) + (if ac-show-menu + (popup-draw ac-menu)))) + +(defun ac-reposition () + "Force to redraw candidate menu with current `ac-candidates'." + (let ((cursor (popup-cursor ac-menu)) + (scroll-top (popup-scroll-top ac-menu))) + (ac-menu-delete) + (ac-menu-create ac-point (popup-preferred-width ac-candidates) (popup-height ac-menu)) + (ac-update-candidates cursor scroll-top))) + +(defun ac-cleanup () + "Cleanup auto completion." + (if ac-cursor-color + (set-cursor-color ac-cursor-color)) + (when (and ac-use-comphist ac-comphist) + (when (and (null ac-selected-candidate) + (member ac-prefix ac-candidates)) + ;; Assume candidate is selected by just typing + (setq ac-selected-candidate ac-prefix) + (setq ac-last-point ac-point)) + (when ac-selected-candidate + (ac-comphist-add ac-comphist + ac-selected-candidate + (if ac-last-point + (- ac-last-point ac-point) + (length ac-prefix))))) + (ac-deactivate-completing-map) + (ac-remove-prefix-overlay) + (ac-remove-quick-help) + (ac-inline-delete) + (ac-menu-delete) + (ac-cancel-timer) + (ac-cancel-show-menu-timer) + (ac-cancel-quick-help-timer) + (setq ac-cursor-color nil + ac-inline nil + ac-show-menu nil + ac-menu nil + ac-completing nil + ac-point nil + ac-last-point nil + ac-prefix nil + ac-prefix-overlay nil + ac-selected-candidate nil + ac-common-part nil + ac-whole-common-part nil + ac-triggered nil + ac-limit nil + ac-candidates nil + ac-candidates-cache nil + ac-fuzzy-enable nil + ac-dwim-enable nil + ac-compiled-sources nil + ac-current-sources nil + ac-current-prefix-def nil + ac-ignoring-prefix-def nil)) + +(defsubst ac-abort () + "Abort completion." + (ac-cleanup)) + +(defun ac-expand-string (string &optional remove-undo-boundary) + "Expand `STRING' into the buffer and update `ac-prefix' to `STRING'. +This function records deletion and insertion sequences by `undo-boundary'. +If `remove-undo-boundary' is non-nil, this function also removes `undo-boundary' +that have been made before in this function." + (when (not (equal string (buffer-substring ac-point (point)))) + (undo-boundary) + ;; We can't use primitive-undo since it undoes by + ;; groups, divided by boundaries. + ;; We don't want boundary between deletion and insertion. + ;; So do it manually. + ;; Delete region silently for undo: + (if remove-undo-boundary + (progn + (let (buffer-undo-list) + (save-excursion + (delete-region ac-point (point)))) + (setq buffer-undo-list + (nthcdr 2 buffer-undo-list))) + (delete-region ac-point (point))) + (insert string) + ;; Sometimes, possible when omni-completion used, (insert) added + ;; to buffer-undo-list strange record about position changes. + ;; Delete it here: + (when (and remove-undo-boundary + (integerp (cadr buffer-undo-list))) + (setcdr buffer-undo-list (nthcdr 2 buffer-undo-list))) + (undo-boundary) + (setq ac-selected-candidate string) + (setq ac-prefix string))) + +(defun ac-set-trigger-key (key) + "Set `ac-trigger-key' to `KEY'. It is recommemded to use this function instead of calling `setq'." + ;; Remove old mapping + (when ac-trigger-key + (define-key ac-mode-map (read-kbd-macro ac-trigger-key) nil)) + + ;; Make new mapping + (setq ac-trigger-key key) + (when key + (define-key ac-mode-map (read-kbd-macro key) 'ac-trigger-key-command))) + +(defun ac-set-timer () + (unless ac-timer + (setq ac-timer (run-with-idle-timer ac-delay ac-delay 'ac-update-greedy)))) + +(defun ac-cancel-timer () + (when (timerp ac-timer) + (cancel-timer ac-timer) + (setq ac-timer nil))) + +(defun ac-update (&optional force) + (when (and auto-complete-mode + ac-prefix + (or ac-triggered + force) + (not isearch-mode)) + (ac-put-prefix-overlay) + (setq ac-candidates (ac-candidates)) + (let ((preferred-width (popup-preferred-width ac-candidates))) + ;; Reposition if needed + (when (or (null ac-menu) + (>= (popup-width ac-menu) preferred-width) + (<= (popup-width ac-menu) (- preferred-width 10)) + (and (> (popup-direction ac-menu) 0) + (ac-menu-at-wrapper-line-p))) + (ac-inline-hide) ; Hide overlay to calculate correct column + (ac-menu-delete) + (ac-menu-create ac-point preferred-width ac-menu-height))) + (ac-update-candidates 0 0) + t)) + +(defun ac-update-greedy (&optional force) + (let (result) + (while (when (and (setq result (ac-update force)) + (null ac-candidates)) + (add-to-list 'ac-ignoring-prefix-def ac-current-prefix-def) + (ac-start :force-init t) + ac-current-prefix-def)) + result)) + +(defun ac-set-show-menu-timer () + (when (and (or (integerp ac-auto-show-menu) (floatp ac-auto-show-menu)) + (null ac-show-menu-timer)) + (setq ac-show-menu-timer (run-with-idle-timer ac-auto-show-menu ac-auto-show-menu 'ac-show-menu)))) + +(defun ac-cancel-show-menu-timer () + (when (timerp ac-show-menu-timer) + (cancel-timer ac-show-menu-timer) + (setq ac-show-menu-timer nil))) + +(defun ac-show-menu () + (when (not (eq ac-show-menu t)) + (setq ac-show-menu t) + (ac-inline-hide) + (ac-remove-quick-help) + (ac-update t))) + +(defun ac-help (&optional persist) + (interactive "P") + (when ac-menu + (popup-menu-show-help ac-menu persist))) + +(defun ac-persist-help () + (interactive) + (ac-help t)) + +(defun ac-last-help (&optional persist) + (interactive "P") + (when ac-last-completion + (popup-item-show-help (cdr ac-last-completion) persist))) + +(defun ac-last-persist-help () + (interactive) + (ac-last-help t)) + +(defun ac-set-quick-help-timer () + (when (and ac-use-quick-help + (null ac-quick-help-timer)) + (setq ac-quick-help-timer (run-with-idle-timer ac-quick-help-delay ac-quick-help-delay 'ac-quick-help)))) + +(defun ac-cancel-quick-help-timer () + (when (timerp ac-quick-help-timer) + (cancel-timer ac-quick-help-timer) + (setq ac-quick-help-timer nil))) + +(defun ac-pos-tip-show-quick-help (menu &optional item &rest args) + (let* ((point (plist-get args :point)) + (around nil) + (parent-offset (popup-offset menu)) + (doc (popup-menu-documentation menu item))) + (when (stringp doc) + (if (popup-hidden-p menu) + (setq around t) + (setq point nil)) + (with-no-warnings + (pos-tip-show doc + 'popup-tip-face + (or point + (and menu + (popup-child-point menu parent-offset)) + (point)) + nil 0 + popup-tip-max-width + nil nil + (and (not around) 0)) + (unless (plist-get args :nowait) + (clear-this-command-keys) + (unwind-protect + (push (read-event (plist-get args :prompt)) unread-command-events) + (pos-tip-hide)) + t))))) + +(defun ac-quick-help (&optional force) + (interactive) + (when (and (or force (null this-command)) + (ac-menu-live-p) + (null ac-quick-help)) + (setq ac-quick-help + (funcall (if (and ac-quick-help-prefer-x + (eq window-system 'x) + (featurep 'pos-tip)) + 'ac-pos-tip-show-quick-help + 'popup-menu-show-quick-help) + ac-menu nil + :point ac-point + :height ac-quick-help-height + :nowait t)))) + +(defun ac-remove-quick-help () + (when ac-quick-help + (popup-delete ac-quick-help) + (setq ac-quick-help nil))) + +(defun ac-last-quick-help () + (interactive) + (when (and ac-last-completion + (eq (marker-buffer (car ac-last-completion)) + (current-buffer))) + (let ((doc (popup-item-documentation (cdr ac-last-completion))) + (point (marker-position (car ac-last-completion)))) + (when (stringp doc) + (if (and ac-quick-help-prefer-x + (eq window-system 'x) + (featurep 'pos-tip)) + (with-no-warnings (pos-tip-show doc nil point nil 0)) + (popup-tip doc + :point point + :around t + :scroll-bar t + :margin t)))))) + +(defmacro ac-define-quick-help-command (name arglist &rest body) + (declare (indent 2)) + `(progn + (defun ,name ,arglist ,@body) + (put ',name 'ac-quick-help-command t))) + +(ac-define-quick-help-command ac-quick-help-scroll-down () + (interactive) + (when ac-quick-help + (popup-scroll-down ac-quick-help))) + +(ac-define-quick-help-command ac-quick-help-scroll-up () + (interactive) + (when ac-quick-help + (popup-scroll-up ac-quick-help))) + + + +;;;; Auto completion isearch + +(defun ac-isearch-callback (list) + (setq ac-dwim-enable (eq (length list) 1))) + +(defun ac-isearch () + (interactive) + (when (ac-menu-live-p) + (ac-cancel-show-menu-timer) + (ac-cancel-quick-help-timer) + (ac-show-menu) + (popup-isearch ac-menu :callback 'ac-isearch-callback))) + + + +;;;; Auto completion commands + +(defun auto-complete (&optional sources) + "Start auto-completion at current point." + (interactive) + (let ((menu-live (ac-menu-live-p)) + (inline-live (ac-inline-live-p))) + (ac-abort) + (let ((ac-sources (or sources ac-sources))) + (if (or ac-show-menu-immediately-on-auto-complete + inline-live) + (setq ac-show-menu t)) + (ac-start)) + (when (ac-update-greedy t) + ;; TODO Not to cause inline completion to be disrupted. + (if (ac-inline-live-p) + (ac-inline-hide)) + ;; Not to expand when it is first time to complete + (when (and (or (and (not ac-expand-on-auto-complete) + (> (length ac-candidates) 1) + (not menu-live)) + (not (let ((ac-common-part ac-whole-common-part)) + (ac-expand-common)))) + ac-use-fuzzy + (null ac-candidates)) + (ac-fuzzy-complete))))) + +(defun ac-fuzzy-complete () + "Start fuzzy completion at current point." + (interactive) + (when (require 'fuzzy nil) + (unless (ac-menu-live-p) + (ac-start)) + (let ((ac-match-function 'fuzzy-all-completions)) + (unless ac-cursor-color + (setq ac-cursor-color (frame-parameter (selected-frame) 'cursor-color))) + (if ac-fuzzy-cursor-color + (set-cursor-color ac-fuzzy-cursor-color)) + (setq ac-show-menu t) + (setq ac-fuzzy-enable t) + (setq ac-triggered nil) + (ac-update t))) + t) + +(defun ac-next () + "Select next candidate." + (interactive) + (when (ac-menu-live-p) + (popup-next ac-menu) + (setq ac-show-menu t) + (if (eq this-command 'ac-next) + (setq ac-dwim-enable t)))) + +(defun ac-previous () + "Select previous candidate." + (interactive) + (when (ac-menu-live-p) + (popup-previous ac-menu) + (setq ac-show-menu t) + (if (eq this-command 'ac-previous) + (setq ac-dwim-enable t)))) + +(defun ac-expand () + "Try expand, and if expanded twice, select next candidate." + (interactive) + (unless (ac-expand-common) + (let ((string (ac-selected-candidate))) + (when string + (when (equal ac-prefix string) + (ac-next) + (setq string (ac-selected-candidate))) + (ac-expand-string string (eq last-command this-command)) + ;; Do reposition if menu at long line + (if (and (> (popup-direction ac-menu) 0) + (ac-menu-at-wrapper-line-p)) + (ac-reposition)) + (setq ac-show-menu t) + string)))) + +(defun ac-expand-common () + "Try to expand meaningful common part." + (interactive) + (if (and ac-dwim ac-dwim-enable) + (ac-complete) + (when (and (ac-inline-live-p) + ac-common-part) + (ac-inline-hide) + (ac-expand-string ac-common-part (eq last-command this-command)) + (setq ac-common-part nil) + t))) + +(defun ac-complete () + "Try complete." + (interactive) + (let* ((candidate (ac-selected-candidate)) + (action (popup-item-property candidate 'action)) + (fallback nil)) + (when candidate + (unless (ac-expand-string candidate) + (setq fallback t)) + ;; Remember to show help later + (when (and ac-point candidate) + (unless ac-last-completion + (setq ac-last-completion (cons (make-marker) nil))) + (set-marker (car ac-last-completion) ac-point ac-buffer) + (setcdr ac-last-completion candidate))) + (ac-abort) + (cond + (action + (funcall action)) + (fallback + (ac-fallback-command))) + candidate)) + +(defun* ac-start (&key + requires + force-init) + "Start completion." + (interactive) + (if (not auto-complete-mode) + (message "auto-complete-mode is not enabled") + (let* ((info (ac-prefix requires ac-ignoring-prefix-def)) + (prefix-def (nth 0 info)) + (point (nth 1 info)) + (sources (nth 2 info)) + prefix + (init (or force-init (not (eq ac-point point))))) + (if (or (null point) + (member (setq prefix (buffer-substring-no-properties point (point))) + ac-ignores)) + (prog1 nil + (ac-abort)) + (unless ac-cursor-color + (setq ac-cursor-color (frame-parameter (selected-frame) 'cursor-color))) + (setq ac-show-menu (or ac-show-menu (if (eq ac-auto-show-menu t) t)) + ac-current-sources sources + ac-buffer (current-buffer) + ac-point point + ac-prefix prefix + ac-limit ac-candidate-limit + ac-triggered t + ac-current-prefix-def prefix-def) + (when (or init (null ac-prefix-overlay)) + (ac-init)) + (ac-set-timer) + (ac-set-show-menu-timer) + (ac-set-quick-help-timer) + (ac-put-prefix-overlay))))) + +(defun ac-stop () + "Stop completiong." + (interactive) + (setq ac-selected-candidate nil) + (ac-abort)) + +(defun ac-trigger-key-command (&optional force) + (interactive "P") + (if (or force (ac-trigger-command-p last-command)) + (auto-complete) + (ac-fallback-command 'ac-trigger-key-command))) + + + +;;;; Basic cache facility + +(defvar ac-clear-variables-every-minute-timer nil) +(defvar ac-clear-variables-after-save nil) +(defvar ac-clear-variables-every-minute nil) +(defvar ac-minutes-counter 0) + +(defun ac-clear-variable-after-save (variable &optional pred) + (add-to-list 'ac-clear-variables-after-save (cons variable pred))) + +(defun ac-clear-variables-after-save () + (dolist (pair ac-clear-variables-after-save) + (if (or (null (cdr pair)) + (funcall (cdr pair))) + (set (car pair) nil)))) + +(defun ac-clear-variable-every-minutes (variable minutes) + (add-to-list 'ac-clear-variables-every-minute (cons variable minutes))) + +(defun ac-clear-variable-every-minute (variable) + (ac-clear-variable-every-minutes variable 1)) + +(defun ac-clear-variable-every-10-minutes (variable) + (ac-clear-variable-every-minutes variable 10)) + +(defun ac-clear-variables-every-minute () + (incf ac-minutes-counter) + (dolist (pair ac-clear-variables-every-minute) + (if (eq (% ac-minutes-counter (cdr pair)) 0) + (set (car pair) nil)))) + + + +;;;; Auto complete mode + +(defun ac-cursor-on-diable-face-p (&optional point) + (memq (get-text-property (or point (point)) 'face) ac-disable-faces)) + +(defun ac-trigger-command-p (command) + "Return non-nil if `COMMAND' is a trigger command." + (and (symbolp command) + (or (memq command ac-trigger-commands) + (string-match "self-insert-command" (symbol-name command)) + (string-match "electric" (symbol-name command))))) + +(defun ac-fallback-command (&optional except-command) + (let* ((auto-complete-mode nil) + (keys (this-command-keys-vector)) + (command (if keys (key-binding keys)))) + (when (and (commandp command) + (not (eq command except-command))) + (setq this-command command) + (call-interactively command)))) + +(defun ac-compatible-package-command-p (command) + "Return non-nil if `COMMAND' is compatible with auto-complete." + (and (symbolp command) + (string-match ac-compatible-packages-regexp (symbol-name command)))) + +(defun ac-handle-pre-command () + (condition-case var + (if (or (setq ac-triggered (and (not ac-fuzzy-enable) ; ignore key storkes in fuzzy mode + (or (eq this-command 'auto-complete) ; special case + (ac-trigger-command-p this-command) + (and ac-completing + (memq this-command ac-trigger-commands-on-completing))) + (not (ac-cursor-on-diable-face-p)))) + (ac-compatible-package-command-p this-command)) + (progn + (if (or (not (symbolp this-command)) + (not (get this-command 'ac-quick-help-command))) + (ac-remove-quick-help)) + ;; Not to cause inline completion to be disrupted. + (ac-inline-hide)) + (ac-abort)) + (error (ac-error var)))) + +(defun ac-handle-post-command () + (condition-case var + (when (and ac-triggered + (or ac-auto-start + ac-completing) + (not isearch-mode)) + (setq ac-last-point (point)) + (ac-start :requires (unless ac-completing ac-auto-start)) + (ac-inline-update)) + (error (ac-error var)))) + +(defun ac-setup () + (if ac-trigger-key + (ac-set-trigger-key ac-trigger-key)) + (if ac-use-comphist + (ac-comphist-init)) + (unless ac-clear-variables-every-minute-timer + (setq ac-clear-variables-every-minute-timer (run-with-timer 60 60 'ac-clear-variables-every-minute))) + (if ac-stop-flymake-on-completing + (defadvice flymake-on-timer-event (around ac-flymake-stop-advice activate) + (unless ac-completing + ad-do-it)) + (ad-disable-advice 'flymake-on-timer-event 'around 'ac-flymake-stop-advice))) + +(define-minor-mode auto-complete-mode + "AutoComplete mode" + :lighter " AC" + :keymap ac-mode-map + :group 'auto-complete + (if auto-complete-mode + (progn + (ac-setup) + (add-hook 'pre-command-hook 'ac-handle-pre-command nil t) + (add-hook 'post-command-hook 'ac-handle-post-command nil t) + (add-hook 'after-save-hook 'ac-clear-variables-after-save nil t) + (run-hooks 'auto-complete-mode-hook)) + (remove-hook 'pre-command-hook 'ac-handle-pre-command t) + (remove-hook 'post-command-hook 'ac-handle-post-command t) + (remove-hook 'after-save-hook 'ac-clear-variables-after-save t) + (ac-abort))) + +(defun auto-complete-mode-maybe () + "What buffer `auto-complete-mode' prefers." + (if (and (not (minibufferp (current-buffer))) + (memq major-mode ac-modes)) + (auto-complete-mode 1))) + +(define-global-minor-mode global-auto-complete-mode + auto-complete-mode auto-complete-mode-maybe + :group 'auto-complete) + + + +;;;; Compatibilities with other extensions + +(defun ac-flyspell-workaround () + "Flyspell uses `sit-for' for delaying its process. Unfortunatelly, +it stops auto completion which is trigger with `run-with-idle-timer'. +This workaround avoid flyspell processes when auto completion is being started." + (interactive) + (defadvice flyspell-post-command-hook (around ac-flyspell-workaround activate) + (unless ac-triggered + ad-do-it))) + + + +;;;; Standard sources + +(defmacro ac-define-source (name source) + "Source definition macro. It defines a complete command also." + (declare (indent 1)) + `(progn + (defvar ,(intern (format "ac-source-%s" name)) + ,source) + (defun ,(intern (format "ac-complete-%s" name)) () + (interactive) + (auto-complete '(,(intern (format "ac-source-%s" name))))))) + +;; Words in buffer source +(defvar ac-word-index nil) + +(defun ac-candidate-words-in-buffer (point prefix limit) + (let ((i 0) + candidate + candidates + (regexp (concat "\\_<" (regexp-quote prefix) "\\(\\sw\\|\\s_\\)+\\_>"))) + (save-excursion + ;; Search backward + (goto-char point) + (while (and (or (not (integerp limit)) (< i limit)) + (re-search-backward regexp nil t)) + (setq candidate (match-string-no-properties 0)) + (unless (member candidate candidates) + (push candidate candidates) + (incf i))) + ;; Search backward + (goto-char (+ point (length prefix))) + (while (and (or (not (integerp limit)) (< i limit)) + (re-search-forward regexp nil t)) + (setq candidate (match-string-no-properties 0)) + (unless (member candidate candidates) + (push candidate candidates) + (incf i))) + (nreverse candidates)))) + +(defun ac-incremental-update-word-index () + (unless (local-variable-p 'ac-word-index) + (make-local-variable 'ac-word-index)) + (if (null ac-word-index) + (setq ac-word-index (cons nil nil))) + ;; Mark incomplete + (if (car ac-word-index) + (setcar ac-word-index nil)) + (let ((index (cdr ac-word-index)) + (words (ac-candidate-words-in-buffer ac-point ac-prefix (or (and (integerp ac-limit) ac-limit) 10)))) + (dolist (word words) + (unless (member word index) + (push word index) + (setcdr ac-word-index index))))) + +(defun ac-update-word-index-1 () + (unless (local-variable-p 'ac-word-index) + (make-local-variable 'ac-word-index)) + (when (and (not (car ac-word-index)) + (< (buffer-size) 1048576)) + ;; Complete index + (setq ac-word-index + (cons t + (split-string (buffer-substring-no-properties (point-min) (point-max)) + "\\(?:^\\|\\_>\\).*?\\(?:\\_<\\|$\\)"))))) + +(defun ac-update-word-index () + (dolist (buffer (buffer-list)) + (when (or ac-fuzzy-enable + (not (eq buffer (current-buffer)))) + (with-current-buffer buffer + (ac-update-word-index-1))))) + +(defun ac-word-candidates (&optional buffer-pred) + (loop initially (unless ac-fuzzy-enable (ac-incremental-update-word-index)) + for buffer in (buffer-list) + if (and (or (not (integerp ac-limit)) (< (length candidates) ac-limit)) + (if buffer-pred (funcall buffer-pred buffer) t)) + append (funcall ac-match-function + ac-prefix + (and (local-variable-p 'ac-word-index buffer) + (cdr (buffer-local-value 'ac-word-index buffer)))) + into candidates + finally return candidates)) + +(ac-define-source words-in-buffer + '((candidates . ac-word-candidates))) + +(ac-define-source words-in-all-buffer + '((init . ac-update-word-index) + (candidates . ac-word-candidates))) + +(ac-define-source words-in-same-mode-buffers + '((init . ac-update-word-index) + (candidates . (ac-word-candidates + (lambda (buffer) + (derived-mode-p (buffer-local-value 'major-mode buffer))))))) + +;; Lisp symbols source +(defvar ac-symbols-cache nil) +(ac-clear-variable-every-10-minutes 'ac-symbols-cache) + +(defun ac-symbol-file (symbol type) + (if (fboundp 'find-lisp-object-file-name) + (find-lisp-object-file-name symbol type) + (let ((file-name (with-no-warnings + (describe-simplify-lib-file-name + (symbol-file symbol type))))) + (when (equal file-name "loaddefs.el") + ;; Find the real def site of the preloaded object. + (let ((location (condition-case nil + (if (eq type 'defun) + (find-function-search-for-symbol symbol nil + "loaddefs.el") + (find-variable-noselect symbol file-name)) + (error nil)))) + (when location + (with-current-buffer (car location) + (when (cdr location) + (goto-char (cdr location))) + (when (re-search-backward + "^;;; Generated autoloads from \\(.*\\)" nil t) + (setq file-name (match-string 1))))))) + (if (and (null file-name) + (or (eq type 'defun) + (integerp (get symbol 'variable-documentation)))) + ;; It's a object not defined in Elisp but in C. + (if (get-buffer " *DOC*") + (if (eq type 'defun) + (help-C-file-name (symbol-function symbol) 'subr) + (help-C-file-name symbol 'var)) + 'C-source) + file-name)))) + +(defun ac-symbol-documentation (symbol) + (if (stringp symbol) + (setq symbol (intern-soft symbol))) + (ignore-errors + (with-temp-buffer + (let ((standard-output (current-buffer))) + (prin1 symbol) + (princ " is ") + (cond + ((fboundp symbol) + (let ((help-xref-following t)) + (describe-function-1 symbol)) + (buffer-string)) + ((boundp symbol) + (let ((file-name (ac-symbol-file symbol 'defvar))) + (princ "a variable") + (when file-name + (princ " defined in `") + (princ (if (eq file-name 'C-source) + "C source code" + (file-name-nondirectory file-name)))) + (princ "'.\n\n") + (princ (or (documentation-property symbol 'variable-documentation t) + "Not documented.")) + (buffer-string))) + ((facep symbol) + (let ((file-name (ac-symbol-file symbol 'defface))) + (princ "a face") + (when file-name + (princ " defined in `") + (princ (if (eq file-name 'C-source) + "C source code" + (file-name-nondirectory file-name)))) + (princ "'.\n\n") + (princ (or (documentation-property symbol 'face-documentation t) + "Not documented.")) + (buffer-string))) + (t + (let ((doc (documentation-property symbol 'group-documentation t))) + (when doc + (princ "a group.\n\n") + (princ doc) + (buffer-string))))))))) + +(defun ac-symbol-candidates () + (or ac-symbols-cache + (setq ac-symbols-cache + (loop for x being the symbols + if (or (fboundp x) + (boundp x) + (symbol-plist x)) + collect (symbol-name x))))) + +(ac-define-source symbols + '((candidates . ac-symbol-candidates) + (document . ac-symbol-documentation) + (symbol . "s") + (cache))) + +;; Lisp functions source +(defvar ac-functions-cache nil) +(ac-clear-variable-every-10-minutes 'ac-functions-cache) + +(defun ac-function-candidates () + (or ac-functions-cache + (setq ac-functions-cache + (loop for x being the symbols + if (fboundp x) + collect (symbol-name x))))) + +(ac-define-source functions + '((candidates . ac-function-candidates) + (document . ac-symbol-documentation) + (symbol . "f") + (prefix . "(\\(\\(?:\\sw\\|\\s_\\)+\\)") + (cache))) + +;; Lisp variables source +(defvar ac-variables-cache nil) +(ac-clear-variable-every-10-minutes 'ac-variables-cache) + +(defun ac-variable-candidates () + (or ac-variables-cache + (setq ac-variables-cache + (loop for x being the symbols + if (boundp x) + collect (symbol-name x))))) + +(ac-define-source variables + '((candidates . ac-variable-candidates) + (document . ac-symbol-documentation) + (symbol . "v") + (cache))) + +;; Lisp features source +(defvar ac-emacs-lisp-features nil) +(ac-clear-variable-every-10-minutes 'ac-emacs-lisp-features) + +(defun ac-emacs-lisp-feature-candidates () + (or ac-emacs-lisp-features + (if (fboundp 'find-library-suffixes) + (let ((suffix (concat (regexp-opt (find-library-suffixes) t) "\\'"))) + (setq ac-emacs-lisp-features + (append (mapcar 'prin1-to-string features) + (loop for dir in load-path + if (file-directory-p dir) + append (loop for file in (directory-files dir) + if (string-match suffix file) + collect (substring file 0 (match-beginning 0)))))))))) + +(ac-define-source features + '((depends find-func) + (candidates . ac-emacs-lisp-feature-candidates) + (prefix . "require +'\\(\\(?:\\sw\\|\\s_\\)*\\)") + (requires . 0))) + +(defvaralias 'ac-source-emacs-lisp-features 'ac-source-features) + +;; Abbrev source +(ac-define-source abbrev + '((candidates . (mapcar 'popup-x-to-string (append (vconcat local-abbrev-table global-abbrev-table) nil))) + (action . expand-abbrev) + (symbol . "a") + (cache))) + +;; Files in current directory source +(ac-define-source files-in-current-dir + '((candidates . (directory-files default-directory)) + (cache))) + +;; Filename source +(defvar ac-filename-cache nil) + +(defun ac-filename-candidate () + (unless (file-regular-p ac-prefix) + (ignore-errors + (loop with dir = (file-name-directory ac-prefix) + with files = (or (assoc-default dir ac-filename-cache) + (let ((files (directory-files dir nil "^[^.]"))) + (push (cons dir files) ac-filename-cache) + files)) + for file in files + for path = (concat dir file) + collect (if (file-directory-p path) + (concat path "/") + path))))) + +(ac-define-source filename + '((init . (setq ac-filename-cache nil)) + (candidates . ac-filename-candidate) + (prefix . valid-file) + (requires . 0) + (action . ac-start) + (limit . nil))) + +;; Dictionary source +(defcustom ac-user-dictionary nil + "User dictionary" + :type '(repeat string) + :group 'auto-complete) + +(defcustom ac-user-dictionary-files '("~/.dict") + "User dictionary files." + :type '(repeat string) + :group 'auto-complete) + +(defcustom ac-dictionary-directories nil + "Dictionary directories." + :type '(repeat string) + :group 'auto-complete) + +(defvar ac-dictionary nil) +(defvar ac-dictionary-cache (make-hash-table :test 'equal)) + +(defun ac-clear-dictionary-cache () + (interactive) + (clrhash ac-dictionary-cache)) + +(defun ac-read-file-dictionary (filename) + (let ((cache (gethash filename ac-dictionary-cache 'none))) + (if (and cache (not (eq cache 'none))) + cache + (let (result) + (ignore-errors + (with-temp-buffer + (insert-file-contents filename) + (setq result (split-string (buffer-string) "\n")))) + (puthash filename result ac-dictionary-cache) + result)))) + +(defun ac-buffer-dictionary () + (apply 'append + (mapcar 'ac-read-file-dictionary + (mapcar (lambda (name) + (loop for dir in ac-dictionary-directories + for file = (concat dir "/" name) + if (file-exists-p file) + return file)) + (list (symbol-name major-mode) + (ignore-errors + (file-name-extension (buffer-file-name)))))))) + +(defun ac-dictionary-candidates () + (apply 'append `(,ac-user-dictionary + ,(ac-buffer-dictionary) + ,@(mapcar 'ac-read-file-dictionary + ac-user-dictionary-files)))) + +(ac-define-source dictionary + '((candidates . ac-dictionary-candidates) + (symbol . "d"))) + +(provide 'auto-complete) +;;; auto-complete.el ends here diff --git a/cedet-bzr/trunk/.bzrignore b/cedet-bzr/trunk/.bzrignore new file mode 100644 index 0000000..ec7be12 --- /dev/null +++ b/cedet-bzr/trunk/.bzrignore @@ -0,0 +1,19 @@ +cedet-1.*/ +contrib/wisent-*-wy.el +lisp/cedet/semantic/grammar-wy.el +lisp/cedet/semantic/bovine/*-by.el +lisp/cedet/semantic/wisent/*-wy.el +lisp/cedet/srecode/srt-wy.el +lisp/cedet/cogre/wisent-dot-wy.el +*.info +*.elc +loaddefs.el +*-ps*.pt +ChangeLog +test-p.el +tests/cedet/cogre/Subclass.dot +doc/info/dir +*-compile-script +*-make-script +*-loaddefs.el +*.class \ No newline at end of file diff --git a/cedet-bzr/trunk/.cvsignore b/cedet-bzr/trunk/.cvsignore new file mode 100644 index 0000000..c32b546 --- /dev/null +++ b/cedet-bzr/trunk/.cvsignore @@ -0,0 +1 @@ +*.tar.gz \ No newline at end of file diff --git a/cedet-bzr/trunk/.ede-ignore b/cedet-bzr/trunk/.ede-ignore new file mode 100644 index 0000000..4d976ee --- /dev/null +++ b/cedet-bzr/trunk/.ede-ignore @@ -0,0 +1 @@ +EDE should never select this directory as a project root. \ No newline at end of file diff --git a/cedet-bzr/trunk/CEDET_STYLE_GUIDE b/cedet-bzr/trunk/CEDET_STYLE_GUIDE new file mode 100644 index 0000000..e98bc3d --- /dev/null +++ b/cedet-bzr/trunk/CEDET_STYLE_GUIDE @@ -0,0 +1,79 @@ +CEDET Developer's style guide + +This document is a set of guidelines for CEDET developers to keep in +mind while working on CEDET. + + +Documentation Strings: + + In general, please start with the Emacs Lisp Developer's guide. In + particular chapters labeled: "Documentation" + + Specific items to keep in mind are: + * All functions, no matter how small, should have a doc string. + * If you are unsure of all the Emacs doc string rules, run the + command "checkdoc" in the file with your changes to check. + +Use of CL: + + Use of the CL package in Emacs is restricted, but it is OK to use + macros that are compiled out (thus not requiring CL at run time.) + +Autoload cookies: + + Autoload cookies are the ";;;#autoload" comments that allows Emacs + to know about a function without loading the file. + + Autoload cookies can be used for: + * User commands. (They have an `interactive' call in them.) + * EIEIO classes that users would create as part of a configuration + as long as the class is in a file in a subdirectory of lisp/cedet + + Autoload cookies cannot be used for: + * EIEIO methods. + * EIEIO classes in lisp, lisp/cedet, or lisp/ + + All files that have an autoload cookie must have a local variables + section that sets generated-autoload-file. For example: + +;; Local variables: +;; generated-autoload-file: "loaddefs.el" +;; generated-autoload-load-name: "ede/cpp-root" +;; End: + + If your file has circular dependencies and you want to resolve + compile warnings, use 'declare-function'. + +Compatibility + + Your code should work on Emacs 23.2 and newer. The Buildbot at + + http://www.randomsample.de/cedet-buildbot + + will compile all new revisions on several Emacs versions, and also + run the unit and integration tests. If something fails, it will + send you an e-mail. + +Compiler Warnings + + Our goal is that CEDET compiles on the current Emacs stable release + without warnings. Even if you know that a warning is harmless, you + should change your code so that it compiles without it. Otherwise, + new and possibly serious warnings will become harder to spot. + + As a last resort, you can use the `with-no-warnings' macro to wrap + problematic code, but then you should document why you have to use + it. + + Warnings on older Emacs versions or on current Emacs trunk are OK, + as long as you are sure that they don't indicate real problems. + +Checking code into BZR: + + Check in each file with its own comment, and format the comments in + ChangeLog form. The check-in comments are later extracted to create + the ChangeLog files. + + Having good check-in comments expressing exactly which functions + where modified and why can be very helpful later when trying to + determine why a change was made. diff --git a/cedet-bzr/trunk/INSTALL b/cedet-bzr/trunk/INSTALL new file mode 100644 index 0000000..17b2b19 --- /dev/null +++ b/cedet-bzr/trunk/INSTALL @@ -0,0 +1,202 @@ +CEDET: Collection of Emacs Development Environment Tools + +CEDET is a top-level project containing several individual packages for Emacs, +including: + + EIEIO - CLOS layer for Emacs Lisp + Semantic - Parser Infrastructure for Emacs + EDE - File manager/ Makefile generator + SRecode - Template manager/ code generator + COGRE - Connected Graph Editor + +REQUIREMENTS: + + The full CEDET suite requires Emacs 23.2 or newer. + + Compilation of CEDET currently requires GNU Make. + +INSTALL: + +- Byte Compilation + + Byte compilation is done by entering the top directory and calling + + make + + If you want to byte-compile with a specific Emacs version, use + + make EMACS= + + CEDET is designed to be used 'in-place', so you do *not* have to + call 'make install' afterwards. + +- Documentation + + By default, info files containing the CEDET documentation will be + generated through the above 'make' call and put into + + /doc/info + + where they will be automatically made known to Emacs when CEDET is + loaded (so usually, you can stop reading here). Like the EMACS + variable above, you can specify binaries for makeinfo and + install-info, as well as the location for the generated info files, + by using the 'MAKEINFO', 'INSTALL-INFO' and 'INFODIR' variables, + respectively. Note that if you use another INFODIR than the + default, you have to make sure that they are found by Emacs + yourself. Additionally, if writing into your custom INFODIR + requires special permissions, you'll have to call + + make install-info + + manually as root or via sudo. + +- Install CEDET into your Emacs init files (.emacs): + + To enable the CEDET development version in Emacs you need to + override the CEDET that comes with Emacs. To do that, load the + cedet-devel-load.el file that is next to this INSTALL file. + + You should place the `cedet-devel-load.el' command near the + beginning of your init file, otherwise parts of CEDET like EIEIO + might already be loaded from core Emacs. For more details on other + configuration options topic, see the info file common/cedet.info. + + This code snippet can be copied into your .emacs file to enable the + development version of cedet, and turn on all the features.' + +----------- +;; Load CEDET. +;; See cedet/common/cedet.info for configuration details. +;; IMPORTANT: Tou must place this *before* any CEDET component (including +;; EIEIO) gets activated by another package (Gnus, auth-source, ...). +(load-file "/home/user/cedet/cedet-devel-load.el") + +;; Add further minor-modes to be enabled by semantic-mode. +;; See doc-string of `semantic-default-submodes' for other things +;; you can use here. +(add-to-list 'semantic-default-submodes 'global-semantic-idle-summary-mode t) +(add-to-list 'semantic-default-submodes 'global-semantic-idle-completions-mode t) +(add-to-list 'semantic-default-submodes 'global-cedet-m3-minor-mode t) + +;; Enable Semantic +(semantic-mode 1) + +;; Enable EDE (Project Management) features +(global-ede-mode 1) + +----------- + +- Build Issues + + If running MAKE fails due to other issues such as bad loaddef files, + custom-autoload or incomprehensible run time errors during a byte + compilation, do a + + make clean-all + + and try again. If you're running the development version from bzr, + you can also do + + bzr revert + bzr clean-tree + bzr clean-tree --ignore + + to get a clean slate of all files (deleting all new files you've + created and all changes you've made, of course). + + If you're getting error messages about Makefiles that have to be + regenerated, or maybe this regeneration is triggered automatically + and it fails, you can always enforce the current Makefiles by + updating their timestamps through + + make touch-makefiles + +- For Package Maintainers: Unpack CEDET sources + + Do not put the copy of CEDET's standalone sources under Emacs' lisp + directory. If you do, Emacs will attempt to add too much into the + load-path, and this will not work. + + When installing CEDET standalone sources over an existing Emacs, put the + sources outside of Emacs' regular load path. Use the install + instructions above for initializing CEDET use in Emacs. + + https://sourceforge.net/tracker/?func=detail&atid=117886&aid=3585232&group_id=17886 + +- Install CEDET CONTRIB files into your emacs init files (.emacs) + + When you install CEDET standalone, you have the option of also + installing CEDET's "contrib" files. These are additional programs + that work with CEDET for which Authors were unable to provide + copyright to the FSF for inclusion into Emacs. They are kept + separately, and must be compiled and installed separately. First + you have to compile them by entering the 'contrib' directory and + simply call 'make'. You can then load them in your init file by + doing + +----------- +;; Load CEDET CONTRIB. +(load-file "/home/user/cedet/cedet-contrib-load.el") +----------- + + +BUGS/COMMENTS + + To send bug reports, or participate in discussions on these + packages, there are three lists available: + + For general discussions on CEDET, use cedet-devel@sourceforge.net + via the URL + + http://lists.sourceforge.net/lists/listinfo/cedet-devel + + For discussions specific to Semantic use the mailing list + cedet-semantic@sourceforge.net via the URL: + + http://lists.sourceforge.net/lists/listinfo/cedet-semantic + + For EIEIO, use the mailing list cedet-eieio@sourceforge.net + via the URL: + + http://lists.sourceforge.net/lists/listinfo/cedet-eieio + + All mailing lists are also available via Gmane (gmane.org) as + + gmane.emacs.cedet + gmane.emacs.semantic + gmane.emacs.eieio + +OTHER OPTIONAL REQUIREMENTS: + + You may also need to download some of the following files for more + obscure features. + + To use Exuberant CTags to parse files: + http://ctags.sourceforge.net/ + + To use GNU Global integration: + http://www.gnu.org/software/global + + To use ID Utils integration: + http://www.gnu.org/software/idutils/ + + To use CScope integration: + http://cscope.sourceforge.net/ + + To use C/C++ completion with clang: + http://clang.llvm.org/ + + To use Javascript completions through Firefox and mozrepl: + https://github.com/bard/mozrepl/wiki + + To use the JavaScript parser on older Emacsen you will need + javascript-mode.el (this only applies to version 23.1; version 23.2 + and newer will have it included): + http://www.emacswiki.org/cgi-bin/wiki/JavaScriptMode + + To use COGRE with Graphviz Dot integration: + http://www.graphviz.org/ + + And a major mode for dot (not required): + http://users.skynet.be/ppareit/projects/graphviz-dot-mode/graphviz-dot-mode.html diff --git a/cedet-bzr/trunk/Makefile b/cedet-bzr/trunk/Makefile new file mode 100644 index 0000000..eda50b8 --- /dev/null +++ b/cedet-bzr/trunk/Makefile @@ -0,0 +1,128 @@ +# Toplevel Makefile +# +# (C) 2011, 2012 CEDET Developers +# +# 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 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. + +PROJECTS=lisp/cedet lisp/eieio lisp/speedbar lisp/cedet/cogre lisp/cedet/semantic \ +lisp/cedet/ede lisp/cedet/srecode lisp/cedet/semantic/bovine lisp/cedet/semantic/wisent \ +lisp/cedet/semantic/analyze lisp/cedet/semantic/decorate lisp/cedet/semantic/ectags \ +lisp/cedet/semantic/symref doc/texi doc/texi/semantic + +PROJECTS_AUTOLOADS=lisp/cedet lisp/eieio lisp/speedbar lisp/cedet/cogre lisp/cedet/semantic \ +lisp/cedet/ede lisp/cedet/srecode + +EMACS=emacs +EMACSFLAGS=-batch --no-site-file -l cedet-remove-builtin.el +LOADDEFS=loaddefs.el +BOOTSTRAP=(progn (global-ede-mode) (find-file "$(CURDIR)/lisp/Project.ede") (ede-proj-regenerate) (find-file "$(CURDIR)/doc/texi/Project.ede") (ede-proj-regenerate)) +UTEST=(progn (add-to-list (quote load-path) "$(CURDIR)/tests") (add-to-list (quote load-path) "$(CURDIR)/tests/eieio") (require (quote cedet-utests)) (semantic-mode)) +SHOWVERSION=(message "Emacs version: %s %s on %s " emacs-version (bound-and-true-p emacs-bzr-version) (symbol-name system-type)) +RM=rm +FIND=find +INSTALL-INFO=install-info +INFO_FILES=$(shell $(FIND) $(CURDIR)/doc/texi -type f -name '*.info') +INFODIR=$(CURDIR)/doc/info + +all: showversion clean-autoloads autoloads touch-makefiles compile info install-info + +compile: + $(MAKE) -C lisp + +makefiles: $(addsuffix /Makefile,$(PROJECTS)) +$(addsuffix /Makefile,$(PROJECTS)): $(addsuffix /Project.ede,$(PROJECTS)) + @echo "Creating Makefiles using EDE." + @$(EMACS) $(EMACSFLAGS) --eval '(setq cedet-bootstrap-in-progress t ede-project-directories t)' -f toggle-debug-on-error -l cedet-devel-load.el --eval '$(BOOTSTRAP)' + +makefiles-bootstrap: + @echo "Creating Makefiles using EDE and builtin Emacs-CEDET as fallback." + @$(EMACS) -batch --no-site-file --eval '(setq cedet-bootstrap-in-progress t ede-project-directories t)' -l cedet-devel-load.el --eval '$(BOOTSTRAP)' + +touch-makefiles: + @echo Updating timestamps on all Makefiles. + $(FIND) . -name "Makefile" -exec touch '{}' \; + +autoloads: + @echo "Generating autoloads." + @$(foreach proj,$(PROJECTS_AUTOLOADS),cd $(CURDIR)/$(proj) && $(MAKE) autoloads;) + +info: + $(MAKE) -C doc -C texi + +install-info: + @echo Installing info files under $(INFODIR) + @mkdir -p $(INFODIR) + @$(foreach infofile,$(INFO_FILES),cp $(infofile) $(INFODIR);$(INSTALL-INFO) --info-dir=$(INFODIR) $(infofile);) + +clean-autoloads: + @echo Removing loaddefs.el files from subprojects. + @$(foreach proj,$(PROJECTS_AUTOLOADS),cd $(CURDIR)/$(proj) && if [ -f $(LOADDEFS) ];then $(RM) -f $(LOADDEFS);fi;) + +clean-all: clean-autoloads + @echo Calling \"$(MAKE) clean\" in all projects. + @$(foreach proj,$(PROJECTS),echo " > $(proj)";cd $(CURDIR)/$(proj) && $(MAKE) clean;) + +utest: + $(EMACS) -Q -l cedet-devel-load.el --eval '$(UTEST)' -f cedet-utest + +utest-batch: + $(EMACS) $(EMACSFLAGS) -l cedet-devel-load.el --eval '$(UTEST)' -f cedet-utest-batch + +itest: itest-make itest-automake itest-cpproot itest-javaroot + +itest-make: + cd $(CURDIR)/tests;./cit-test.sh Make + +itest-automake: + cd $(CURDIR)/tests;./cit-test.sh Automake + +itest-cpproot: + cd $(CURDIR)/tests;./cit-test.sh cpproot + +itest-javaroot: + cd $(CURDIR)/tests;./cit-test.sh javaroot + +itest-android: + cd $(CURDIR)/tests;./cit-test.sh Android + +itest-arduino: + cd $(CURDIR)/tests;./cit-test.sh Arduino + +itest-batch: itest-make-batch itest-automake-batch itest-cpproot-batch itest-javaroot-batch + +itest-make-batch: + cd $(CURDIR)/tests;./cit-test.sh Make --batch + +itest-automake-batch: + cd $(CURDIR)/tests;./cit-test.sh Automake --batch + +itest-cpproot-batch: + cd $(CURDIR)/tests;./cit-test.sh cpproot --batch + +itest-javaroot-batch: + cd $(CURDIR)/tests;./cit-test.sh javaroot --batch + +itest-android-batch: + cd $(CURDIR)/tests;./cit-test.sh Android --batch + +itest-arduino-batch: + cd $(CURDIR)/tests;./cit-test.sh Arduino --batch + +itest-stl-batch: + $(EMACS) $(EMACSFLAGS) -l cedet-devel-load.el -l $(CURDIR)/tests/cedet/semantic/stltest.el + +showversion: + @$(EMACS) -Q --batch --eval '$(SHOWVERSION)' diff --git a/cedet-bzr/trunk/Makefile.wwwinfo b/cedet-bzr/trunk/Makefile.wwwinfo new file mode 100644 index 0000000..23593c4 --- /dev/null +++ b/cedet-bzr/trunk/Makefile.wwwinfo @@ -0,0 +1,19 @@ +# Makefile for creating HTML documentation for CEDET project. +# + +DEST=~/cedet/htdocs/info +DIR=$(shell pwd) +VPATH= eieio speedbar semantic/doc ede cogre + +all: $(DEST)/eieio.html \ + $(DEST)/speedbar.html \ + $(DEST)/semantic.html \ + $(DEST)/ede.html \ + $(DEST)/cogre.html + + +$(DEST)/%.html: %.texi + cd $(DEST) ; \ + makeinfo --html -I $(dir $(DIR)/$<) -o $@ $(DIR)/$< + +#end \ No newline at end of file diff --git a/cedet-bzr/trunk/NEWS b/cedet-bzr/trunk/NEWS new file mode 100644 index 0000000..175024c --- /dev/null +++ b/cedet-bzr/trunk/NEWS @@ -0,0 +1,213 @@ +CEDET NEWS -- History of major user visible changes. + +Copyright (C) 2012, Free Software Foundation, Inc. + +This file contains news for CEDET 1.1 starting after + CEDET 1.0 (released 2010-08-27). + + +* Support for Android Development + +** common/cedet-android.el - New support for calling android SDK utilities, +including adb, android, and ddms. + +** ede/ede-android.el - New support for detecting android projects, +including support for compilation, debugging, AndroidManifest, and +installing projects on a device. + +** srecode/srecode-android.el - New support for android looksups + +** srecode/templates/android-java.srt - + + +* Support for Arduino Development + +** ede/ede-arduino.el - Project support for Arduino sketches. +Includes support for automatic compilation and uploading of projects. + +** arduino-mode: supported as a sub-mode of C++. + +** tag searches includes auto-included arduino header (based on arduino version) + +** srecode/templates/arduino-pde.srt - templates for arduino-mode. + +** ede/templates/make.srt - support the Arduino makefile template + + +* Support for Java Development + +** common/cedet-java.el - New support for java utility function +integration, including calling java, jar, and javap + +** semantic/semanticdb-javap.el - New semantic database back-end that reads +symbols from jar files. + +** EDE projects can now provide a java classpath. + +** Parsing support for javap output. + +** semantic-decorate-includes +*** support for includes that have a tag table, but no associated file. +This can happen for tags created with semanticdb-javap. + +** Smart Completion support for Java: +*** Support 'this' in tag lookups. +*** symbol splitting (on .) for fully qualified names. +*** remove recursive searches through imported symbols. + +** SRecode support for more package name differentiation + + +* Universal context menu + +** common/cedet-m3.el - New (mouse 3 universal context menu support). +To enable, use `cedet-m3-minor-mode'. + +** ede/ede-m3.el - New m3 support for projects (compile) +** semantic/semantic-m3.el - New m3 support for Semantic +(smart completion, tag info, etc) +** srecode/srecode-m3.el - New m3 support for SRecode +(inserting templates) + + +* EDE Changes + +** Security Fixes: +*** ede-project-directories: New variable tracking safe projects. +*** Avoid loading projects unless they are "safe". +*** Some project types are automatically 'safe' if they do not load code from disk. + +** Menu support for the Configuration feature. Allows users to choose the +active configuration (such as debug or install) from a menu. + +** ede-set : new command to interactively set project-local variables. + +** Generic projects +*** Support for compile, debug, and running. + +** Disable local variable reading if EDE needs to pull an Emacs Lisp file +into a buffer temporarilly. + +** Fixed vc-dir support + +** Autoconf editing support for M4 macros with complex arguments. + +** EDE developers can now flush the directory hash, forcing EDE to re-check +a directory for the project it belongs to. + +** Linux project type - support compilation + +** EDE autoload structures no longer load the ede project Emacs Lisp code +unless a project of that type exists. + +** When building a project keymap, combine target and project keybindings +together. + +** Fix bug allowing new targets to be created in dired-mode + +** Deprecated: ede-simple.el + + +* Semantic Changes + +** C/C++ +*** Parsing includes inside a namespace. +*** Use c-scan-conditionals when available during lexical analysis +*** Improved extern "C" support +*** Support to ignore more common special preprocessor symbols, such as +__nonnull, and __asm. +*** Add __cplusplus macro when parsing C++. +*** Use cdefs.h as a source of preprocessor symbols. +*** Improved function pointer parsing. + +** clang +*** New support for clang for smart completion. + +** Javascript +*** Support for js-mode and js2-mode + +** Fortran - New parser support +*** semantic/bovine/f90.by, semantic/bovine/semantic-f90.el - New parser +support for Fortran + +** Python +*** Support to convert imports to include files names. +*** Ability to dynamically determine the python load path. +*** Support for WITH & AT keywords +*** Python3k support + +** Exuberent CTags +*** Support for Debian installs of ctags + +** Replace semantic-analyze-tag-prototype-p with semantic-tag-prototype-p. + +** semantic-create-tag-proxy, semantic-tag-set-proxy, semantic-tag-resolve-proxy +new utilities to enable the creation of tags that represent things that +does not resolve to code in a buffer. eg - directory package names in java. + +** semantic-complete - improve tooltip completion list display. + + +* SRecode Changes + +** Tag generation supports constructor/destructor settings + +** Tag generation supports system include differentiation + +** Added 'Framework' support. Frameworks are specified when a particular +kind of library (such as Android) is needed in a common language mode (like +Java). + +** Support nested templates and have variables override based on priority. + +** Support merging tables from multiple related modes, such as the stack of +modes: default -> c++ -> arduino + + +* COGRE Changes + + +* EIEIO + +** Security Fixes: eieio-persistent-read now takes an extra argument +specifying the class being loaded. +*** Any other class is never read in. +*** New specialized reader for pulling in classes, and erroring without +evaluation suspicious code. +*** All slots that contain objects must have a :type. Slots with lists of +objects must use a new type predicate for a list of an object type. + +** classes produce a new predicates that returns t on an input that is a +list of that object type. + +** Added filename support to generated symbols to support find-function and +similar utilities. + + +* General changes + +** Continued support for Emacs 22, Emacs 23 + +** Support for Emacs 24 and lexbind compatibility. + +** Improved error messages if CEDET is installed incorrectly. + +** Update cscope support for version 15.7 + +** Support for SXEmacs +*** Version number checking in SXEmacs +*** SXEmacs source code support in EDE +*** Bug fixes + + +** Many Updated test suites. + +** Many bug fixes + + + + +Local variables: +mode: outline +paragraph-separate: "[ ]*$" +end: diff --git a/cedet-bzr/trunk/PRERELEASE_CHECKLIST b/cedet-bzr/trunk/PRERELEASE_CHECKLIST new file mode 100644 index 0000000..b082466 --- /dev/null +++ b/cedet-bzr/trunk/PRERELEASE_CHECKLIST @@ -0,0 +1,276 @@ +Prerelease Checklist: +-------------------- + + This is a list of things to do/try before posting a release to make sure + the release will work as well as can be expected: + +Before a dist is made: +--------------------- + +Update all version numbers + + * M-x load-file RET ~/cedet/cedet-update-version.el + * M-x cuv-update + - Answer all questions, updating verion numbers as needed. + +Add a CVS tag + + * Create a new copy of CVS TRUNK + - mkdir + - cvs -d @cedet.cvs.sourceforge.net:/cvsroot/cedet co cedet + - mv cedet cedet- # (such as cedet-1p0beta3) + - cd cedet-branchname + - touch `find . -name Makefile` + - make dist + - ./testdist.sh # Test out that basic stuff is working before tagging. + - cvs tag -b + + * update new sandbox to branch + - cvs update -r + + * Apply patches to above while resolving other issues. + + * Build the new area: + - touch `find . -name Makefile` + - make EMACS=semacs + +Update Changelogs + + * Use a fresh emacs + - emacs -q + - M-x load-file RET common/cedet.el RET + * Update the Log from CVS + - M-x load-file RET cedet-update-changelog.el RET + - M-x cuc-update-all-changelogs RET + +Build a DIST file + + * touch `find . -name Makefile` + * make + * make dist + +After a dist is made: +-------------------- + +CEDET Unit tests + * From a CVS area: + * make utest + +CEDET integration test + * From a CVS area: + * make itest + +CEDET Full distribution testing + * From a CVS area: + * make dist + * ./testdist.sh EMACS + - where EMACS is the version of emacs you want to test with + +CEDET & Common area + + * Uncompress/Untar release archive. + * Compile with Makefile: + make + make EMACS=xemacs + * Build on multiple platforms + - Linux + - Windows + - Other + + * Check version numbers of different tools. + + - Verify output of: + M-x cedet-version RET + - Check the declared version numbers. + - Make sure that if changes were made to those modules, the version + is updated. + + * Start in a clean Emacs: + - Start emacs this way: + + emacs -q + -or- + xemacs -q + + M-x load-file RET cedet/common/cedet.el RET + M-x semantic-load-enable-minimum-features RET + + * All individual CEDET unit test + + M-x cedet-utest RET + - Note: Runs all automated unit tests. These tests are repeated below. + - Note: This runs a couple more tests than the MAKE command above. + + * Test ezimage + + M-x ezimage-image-association-dump RET + - Verify some common images for Emacs and XEmacs. + M-x ezimage-image-dump RET + - Verify the default registered images for Emacs and XEmacs. + + NOTE: These are in cedet-utest, but pictures need verification. + + * Test pulse + M-x pulse-test RET + - Verify pulse does what messages say. + - Try in Emacs 22, and older Emacs, or XEmacs. (different behaviors) + + NOTE: This is in cedet-utest. Needs additional x-platform care. + +EIEIO + + * M-x eieio-browse RET + + This will list the currently loaded class hierarcies. After using + the test harness, and loading semantic, this should be a long list. + + * Running tests for semantic/semanticdb, and EDE both test + other basic EIEIO features. + +Semantic + + * Make sure the semanticdb inversion check against persistent file loading + is updated if the file-format has changed. + + * In a clean Emacs + + Visit files for different modes. Include: + All files in cedet/semantic/tests. + .html file of your choice. + .texi files from the doc directory. + A lisp file, such as semantic.el. + C# file + .js javascript file + Makefile + + Start with: + M-x toggle-debug-on-error RET - Enable debugging within the + parser and incremental parser. (Usually hidden.) + + For each supported mode: + M-x bovinate RET - verify tags are accurate. + M-x speedbar RET - Open the file and verify tags. + - Check the TAGS menu for tags in that file. + + M-x global-semantic-highlight-edits-mode RET + - Edit a file. See the highlight of newly inserted text. + - Customize `semantic-edits-verbose-flag' to be non-nil. + - Wait for the idle scheduler, it should clean up the edits. + - observe messages from incremental parser. Do they relate + to the edits? + - M-x bovinate RET - verify your changes are reflected. + + Visit the menu Senator->Modes + - Enable that mode (if not already enabled) and verify the + advertised behavior. + + - Test aspects of the Senator navigation menu. + + M-x semantic-analyze-current-context RET + - Do this in different contexts in your language + files. Verify that reasonable results are returned + such as identification of assignments, function arguments, etc. + + - Optionally, use `semantic-speedbar-analysis' instead of + 'semantic-analyze-current-context'. + + - At a location with incomplete syntax (a list of arguments + with no close paren for instance: repeat previous step. + + M-x semanticdb-find-test-translate-path RET + - Verify the list matches the include files. + You may need to check the value of + `semanticdb-find-default-throttle' to determine what should, or + should not be on the list. + + - With cursor on different types of declarations: + M-x semantic-test-all-format-tag-functions RET + - Verify all formats work. + + - Use your favorite semantic-enabled tool. + + * Try semantic-regtest.el (from CVS). + +Speedbar + + * In a clean Emacs + + M-x speedbar RET + + - browse through directories, expand tags in some files. + - Special support files to try: + - texinfo files (speedbar.texi) + - html files + - rmail files (RMAIL) + + M-x Info-speedbar-browser RET + + - browse through the manuals + +EDE + + * In a clean Emacs + + - Examine files in the ede directory, such as: + ede.el + ede.texi + NEWS + + - For files in these project, verify the Project menu + - Try builds for these files + - Try some other menu items + +COGRE + + * In a clean Emacs + + M-x cogre RET mygraph RET + + Create a block diagram. + + * In a clean Emacs + + from cogre.el, put cursor on `cogre-graph-element' + + M-x cogre-uml-quick-class RET RET + + - Verify the grpah. (on parent, some direct children.) + - Move some blocks around (M-f, M-b, M-n, M-p) + +SRecode + + * Verify menu working in SRT, C++, and Emacs Lisp. + * Make sure srecode-mode is on. + + * Try inserting file:empty in some modes, and then a function + to make sure prompts work. + + * Check the maps: + M-x srecode-get-maps RET + + Note: In cedet-utest, but make sure the output contains the known + templates. + +GENERAL + + * Run `checkdoc' against various source files to make sure + doc strings are conforming. + +DEPENDANT TOOLS +--------------- + + * Test this new release against dependent tools, including: + - JDEE + - ECB + +After patches are applied: +------------------------- + +After patches are applied to the release branch, merge them back into +TRUNK. + + In a sandbox with TRUNK/HEAD active. + * cvs update -j filename + + - This merges changes from the branch into the trunk. + - Use emacs to check these branch merges in. \ No newline at end of file diff --git a/cedet-bzr/trunk/USING_CEDET_FROM_BZR b/cedet-bzr/trunk/USING_CEDET_FROM_BZR new file mode 100644 index 0000000..d3cc860 --- /dev/null +++ b/cedet-bzr/trunk/USING_CEDET_FROM_BZR @@ -0,0 +1,350 @@ +-*- mode: org -*- +* Goal + + The goal of this document is twofold: + - describe a workflow that will produce a repository history like [[http://doc.bazaar.canonical.com/bzr.2.2/en/user-guide/zen.html][this one]] + - concisely describe the bazaar commands necessary for such a workflow + + The reason for such a workflow is that someone looking at the logs of the main + branches will directly see which features have been added, bugs fixed, + etc. Or, in other words, we should be able to use the log messages as the NEWS + contents. + + This will not only make it nice and clear to traverse the log history, but + will also facilitate the task of managing changes and deciding which of them + must be published on each release. That is, it will be much easier for the + release managers to pick pre-arranged groups of closely related changes + instead of manually selecting changes one by one when releasing a new version. + +* Organization + + The main repository is hosted at [[http://sourceforge.net/projects/cedet/][SourceForge]]. There, code is organized into + two main types of branches: + + - =code/trunk= :: Main development branch, where new features, bug fixes, + etc. are merged into by developers. + + - =code/cedet-= :: Major release branches. These are managed only by + release managers, whose tasks consist of: + + - Creating a new major release branch every time a new major release is + about to be produced. + + - Tagging the =trunk= branch on every new major release. + + - Cherry picking changes from =trunk= into the release branch, in order + to advance it into new minor releases. + + - Tagging the release branch on every new minor release. + + Any other branch is only temporarily available while a new complex feature or + bug fix is being collaboratively developed by many developers. Once the + development of such branch is considered stable, the branch might be deleted. + +* The workflow in commands + + First of all, the information sources: + + - SourceForce repository URLs + https://sourceforge.net/scm/?type=bzr&group_id=17886 + You must login to see URLs for read/write acess + + - SourceForge-specific information when using bazaar + https://sourceforge.net/apps/trac/sourceforge/wiki/Bazaar + *NOTE*: It is very important to correctly set /whoami/ + + - Bazaar documentation + http://doc.bazaar.canonical.com + + - The workflow adopted at Emacs + http://www.emacswiki.org/emacs/BzrForEmacsDevs + The current document is heavily based on this document, and you can refer to + it for more thorough descriptions and discussions on alternative simplified + workflows. + + If you need an introduction on basic terminology and concepts, please read + these: + - http://wiki.bazaar.canonical.com/BzrForCVSUsers + - http://doc.bazaar.canonical.com/bzr.2.2/en/user-guide/core_concepts.html + +** Developer workflow + + The developer is assumed to develop new features and fix bugs by working on + separate (probably local) branches, that are later merged into the mainline + (the =code/trunk= branch on the CEDET repository). + + This precise workflow is a tuned version of the workflows described on this + documents: + - http://doc.bazaar.canonical.com/bzr.2.2/en/user-guide/organizing_branches.html + - http://www.emacswiki.org/emacs/BzrForEmacsDevs + +*** Setting up the environment + + First you will have to create a /shared repository/ to work on your machine: + + #+BEGIN_SRC sh + export DEVHOME=~/Projects/ # suit to your taste + cd $DEVHOME + bzr init-repo cedet/ + #+END_SRC + + Next step is to create a mirror of the mainline (=code/trunk=), from which + all other branches will be derived: + + #+BEGIN_SRC sh + bzr checkout bzr+ssh://USERNAME@cedet.bzr.sourceforge.net/bzrroot/cedet/code/trunk trunk + #+END_SRC + + *NOTE*: Here /USERNAME/ stands for your SourceForge username. If you do not + have commit access to the CEDET repositories you should use the read-only + URL instead: bzr://cedet.bzr.sourceforge.net/bzrroot/cedet/code/trunk + + Finally, you have to tell bazaar the identity you want to use for your + commits: + + #+BEGIN_SRC sh + mkdir -p ~/.bazaar/ + echo "[$DEVHOME/cedet]" >> ~/.bazaar/locations.conf + echo "email = USERNAME " >> ~/.bazaar.locations.conf + #+END_SRC + + *NOTE*: If you do not have a SourceForge account you can use your name and + e-mail instead. + + *NOTE*: Setting the information on =~/.bazaar/locations.conf= is probably + much more convenient than using the straightforward =bzr whoami --branch + "..."= command on *every* new branch, or using =bzr whoami "..."= to set + the information *globally*. + +*** Creating a task branch + + Once merged back into mainline, all changes added to this branch will appear + grouped under a single log entry (although separate changes are still + available), which makes the review and release management process much + easier. + + #+BEGIN_SRC sh + cd $DEVHOME/cedet/ + bzr branch trunk/ TASKNAME/ + #+END_SRC + + Here, /TASKNAME/ could be something like the ticket number of the bug that + is being fixed, or a short descriptive name of a new feature. + +*** Working in a task branch + + This contains the typical development loop. + +**** Making changes + + Do not fear committing mutiple small changes if they are conceptually + different, even if they are not complete when separate. Your commits will + not be seen by others until you tell bazaar to do so. + + On each commit, you would typically: + + - =bzr status= ::: + + Check the current state of your local branch. + + - =bzr add ...= ::: + + Add new files or directories to the repository. + + - =bzr remove ...= ::: + + Remove files or directories from the repository. + + - =bzr mv ...= ::: + + Move files or directories on the repository. Moved (renamed) files or + directories will still retain their full history. + + - =bzr revert ...= ::: + Undo uncommitted changes. + + - =bzr shelve/unshelve ...= ::: + Temporally undo/redo uncommitted changes. + + - =bzr commit ...= ::: + + Commit changes on current branch. + + If given the =-m "..."= flag, the given one-line message will be used as + the commit message; otherwise, your default editor will be fired up for + you to fill-in the message. + + *NOTE*: You can use Emacs' [[http://www.gnu.org/software/emacs/manual/html_node/emacs/Version-Control.html][Version Control]] package to simplify the task + with a few simple keystrokes. + + If you're committing patches contributed by other people, you + should use their names as authors by using the =--author= + switch, for example + + =bzr commit --author "some guy " somefile.el= + +**** Refreshing your mirror of mainline (updating trunk) + + The official mainline will change from time to time, so you should refresh + it whenever you want to work with the changes: + + #+BEGIN_SRC sh + cd $DEVHOME/cedet/trunk + bzr update + #+END_SRC + +**** Merging the latest mainline into your branch (merging from trunk) + + Changes on the mainline could conflict with changes you have added on your + local branch, or you might even want to use them. Thus, after updating + trunk you should merge its changes into your local branch: + + #+BEGIN_SRC sh + cd $DEVHOME/cedet/TASKNAME/ + bzr merge ../trunk + <> + bzr commit -m "Merge from trunk" + #+END_SRC + + You can see the missing pieces before updating with =bzr missing + OTHER_BRANCH=, which will show you what you're missing from /OTHER_BRANCH/, + as well as what /OTHER_BRANCH/ is missing from you. + + *NOTE*: You can use a directory instead of a remote URL, so that the + process will be much faster. + +*** Publishing a task branch + + As said, some tasks require collaboration from multiple developers, or a + thorough review from others. The easiest way to accomplish this is to + publish your branch. + + If you have commit access on the CEDET repositories, you can simply: + + #+BEGIN_SRC sh + cd $DEVHOME/cedet/TASKNAME/ + bzr push bzr+ssh://USERNAME@cedet.bzr.sourceforge.net/bzrroot/cedet/code/TASKNAME + #+END_SRC + + If you don't have commit access you can still publish branches on your user + space in SourceForge or Launchpad. + + If you want to follow the development of a published task branch, you can: + + #+BEGIN_SRC sh + cd $DEVHOME/cedet/ + bzr branch bzr+ssh://USERNAME@cedet.bzr.sourceforge.net/bzrroot/cedet/code/TASKNAME + #+END_SRC + + And you can update its contents anytime with: + + #+BEGIN_SRC sh + cd $DEVHOME/cedet/TASKNAME/ + bzr pull + #+END_SRC + +**** Changing repository permissions and reorganizing directories + + When publishing a task branch, SourceForge is configured to give write + permissions (commit) only to the user puslishing the branch. + + Once published, if you want othe users to be able to commit into it, you + must login into SF and change the filesystem permissions for the directory + holding the selected task branch: + + #+BEGIN_SRC sh + ssh -t USERNAME,cedet@shell.sourceforge.net create + chmod -R g+w /home/scm_bzr/c/ce/cedet/code/TASKNAME/ + #+END_SRC + + Similarly, you can change the name of a branch and move it around with + simple file movement commands: + + #+BEGIN_SRC sh + ssh -t USERNAME,cedet@shell.sourceforge.net create + mv /home/scm_bzr/c/ce/cedet/code/TASKNAME/ /home/scm_bzr/c/ce/cedet/code/NEW_TASKNAME/ + #+END_SRC + +*** Sending a bundle for review + + Instead of publishing your branch, you can submit your changes for review + through e-mail, where others can look at your changes and decide if they are + suited to be merged into the mainline. + + If it's not accepted, don't worry; you can still modify files, make some + more commits to your local branch and generate a new bundle to send. + + #+BEGIN_SRC sh + bzr send -o TASKNAME-v1.txt + #+END_SRC + +*** Merging into the mainline (merging into trunk) + + Once the modifications are ready for integration into mainline, the steps + are: + + #+BEGIN_SRC sh + cd $DEVHOME/cedet/TASKNAME/ + bzr missing # see what we and others are missing + cd $DEVHOME/cedet/trunk/ + bzr update # make sure we are up-to-date + bzr merge ../TASKNAME/ + bzr status # optionally see what has changed + <> + bzr commit # immediately pushes changes + #+END_SRC + + The most important note here is that the commit message in here will be the + only one displayed by default on the mainline log for all the changes of + /TASKNAME/ that you have done. + + *NOTE*: You can still see all the "intermediate" commits inside every merge + with =bzr log -n0=. + + *BIG NOTE*: It is very important to perform one separate merge for each + clearly different feature addition or fix of a ticket on the bug + tracker. Otherwise, if multiple of them are merged at once, they will + appear as a single entry on the "simplified" log, and it will be harder for + release managers to pick them up separately in case they need to. + +*** After you've finished your task + + You can simply remove the directory =$DEVHOME/cedet/TASKNAME/= and start + with a fresh new branch to develop other features. + + If you had published the branch, you should also =bzr rmbranch + bzr+ssh://USERNAME@cedet.bzr.sourceforge.net/bzrroot/cedet/code/TASKNAME=. + +** Common workflow shortcuts + +*** Performing quick fixes + + Some feel that it is uncomfortable to create a new branch for every new + feature, specially when such a feature is just a trivial fix that can be + contained on a single commit. + + As /trunk/ is a /checkout/ of mainline (as opposed to a /branch/), it can be + directly used for trivial changes. + + The difference between a /checkout/ and a /branch/ is that the former + automatically (and atomically) performs a =push= operation immediately after + each =commit=, as well as it can be updated with =update= instead of =pull=. + + The net result is that a /checkout/ provides a workflow very similar to + other well-known centralized version control systems. + + *See also*: =bzr help branches=, =bzr help checkouts=. + +** TODO Release manager workflow + + How to handle merges into release branches. + +* TODO Log messages + + How merge log messages should be written. This should allow others to quickly + see which subsystem or feature the merge is about, as well as if it is an + enhancement or a bug fix. + + Merge messages should probably *not* follow the usual ChangeLog style, but + provide a concise description on the first line and, if necessary, any + clarifications and/or explanations on the following lines. diff --git a/cedet-bzr/trunk/cedet-build.el b/cedet-bzr/trunk/cedet-build.el new file mode 100644 index 0000000..50203a2 --- /dev/null +++ b/cedet-bzr/trunk/cedet-build.el @@ -0,0 +1,240 @@ +;;; cedet-build.el --- Build CEDET within Emacs. + +;; Copyright (C) 2008, 2009, 2012, 2013 Eric M. Ludlam + +;; Author: Eric M. Ludlam + +;; 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; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; Build all the CEDET parts interactively through EDE. +;; +;; NOTE: This does not support XEmacs, which cannot use +;; `batch-update-autoloads' in interactive mode. +;; +;;; USAGE: +;; +;; emacs -Q -l cedet-build.el -f cedet-build +;; +;; or, if -Q isn't supported +;; +;; emacs -q --no-site-file -l cedet-build.el -f cedet-build + + +;;; Code: +(defvar cedet-build-location + (let ((dir (file-name-directory + (or load-file-name (buffer-file-name))))) + ;; (add-to-list 'load-path dir) + dir) + "Root of the CEDET tree.") + +(defun cedet-build-in-default-emacs() + "Build CEDET in a new Emacs instance started with -Q." + (interactive) + (let ((default-directory cedet-build-location)) + (call-process (expand-file-name invocation-name invocation-directory) + nil 0 nil + "-Q" "-l" "cedet-build.el" "-f" "cedet-build") + (message "Started new Emacs instance to build CEDET ..."))) + +(defun cedet-build-in-this-emacs () + "Build CEDET in this version of Emacs. +This only works if EIEIO does not need to be compiled." + (interactive) + (let ((src "eieio/eieio.el") (dst "eieio/eieio.elc")) + (if (file-newer-than-file-p src dst) + (when (y-or-n-p "EIEIO needs to be recompiled. Use subprocess? ") + (cedet-build-in-default-emacs)) + (cedet-build t)))) + +(defun cedet-build-msg (fmt &rest args) + "Show a build message." + (if noninteractive + (princ (apply 'format fmt args) t) + (switch-to-buffer "*CEDET BYTECOMPILE*" t) + (goto-char (point-max)) + (insert (apply 'format fmt args)) + (delete-other-windows) + (sit-for 0))) + +(defun cedet-build-autoloads-for-dir (basedir &rest dirs) + "Create loaddefs.el for basedir, including all DIRS in the loaddefs." + (save-excursion + (let* ((default-directory (expand-file-name basedir)) + (genfile (expand-file-name "loaddefs.el")) + (load-path (cons default-directory load-path))) + ;; Delete it if it is there. There is a bug in updating + ;; an existing file. + (when (file-exists-p genfile) (delete-file genfile)) + (apply 'call-process + (expand-file-name invocation-name invocation-directory) + nil nil nil + "-Q" "-batch" + "-L" default-directory + "--eval" (concat "(setq generated-autoload-file \"" + genfile + "\")") + "-f" "batch-update-autoloads" dirs) + ))) + +(defun cedet-build (&optional override-check) + "Build CEDET via EDE. +OVERRIDE-CHECK to override cedet short-cicuit." + (setq inhibit-splash-screen t) + + ;; Make sure CEDET is not loaded + (if (and (not override-check) (featurep 'cedet)) + (error "To use cedet-build, start Emacs with -q")) + + ;; Setup a logging buffer + (switch-to-buffer "*CEDET BYTECOMPILE*") + (delete-other-windows) + (erase-buffer) + (cedet-build-msg "CEDET BYTE COMPILATION STATUS:\n\n") + (cedet-build-msg "Step 1: Byte compile EIEIO...") + + ;; Get EIEIO built first. + (save-excursion + (let ((src "lisp/eieio/eieio.el") (dst "eieio/eieio.elc")) + (if (file-newer-than-file-p src dst) + (progn + (when (featurep 'eieio) + (error "You should not recompile EIEIO after it has been loaded")) + (byte-compile-file src) + (cedet-build-msg "done\n")) + (cedet-build-msg "not needed\n"))) + ) + + ;; Get eieio loaddefs + (cedet-build-msg "Step 2: Creating autoloads ...\n") + (cedet-build-msg "Step 2.1: EIEIO Autoloads...") + (cedet-build-autoloads-for-dir "lisp/eieio/" ".") + (cedet-build-msg "done.\n") + + ;; Get core CEDET autoloads built... + (cedet-build-msg "Step 2.2: CEDET Autoloads...") + (cedet-build-autoloads-for-dir "lisp/cedet/" ".") + (cedet-build-msg "done.\n") + + ;; Get EDE autoloads built... + (cedet-build-msg "Step 2.3: EDE Autoloads...") + (cedet-build-autoloads-for-dir "lisp/cedet/ede/" ".") + (cedet-build-msg "done.\n") + + ;; Get Semantic autoloads built... + (cedet-build-msg "Step 2.4: Semantic Autoloads...") + (cedet-build-autoloads-for-dir "lisp/cedet/semantic/" "." "./bovine" "./wisent" "./analyze" "./decorate" "./ectags" "./symref") + (cedet-build-msg "done.\n") + + ;; Get SRecode autoloads built... + (cedet-build-msg "Step 2.5: SRecode Autoloads...") + (cedet-build-autoloads-for-dir "lisp/cedet/srecode/" ".") + (cedet-build-msg "done.\n") + + ;; Get Cogre autoloads built... + (cedet-build-msg "Step 2.6: COGRE Autoloads...") + (cedet-build-autoloads-for-dir "lisp/cedet/cogre/" ".") + (cedet-build-msg "done.\n") + + ;; Speedbar + (cedet-build-msg "Step 2.7: Speedbar Autoloads...") + (cedet-build-autoloads-for-dir "lisp/speedbar/" ".") + (cedet-build-msg "done.\n") + + ;; Fire up CEDET and EDE + (cedet-build-msg "Step 3: initialize CEDET from external repository ...") + + (setq cedet-minimum-setup t) + (load-file (expand-file-name "cedet-devel-load.el" cedet-build-location)) + ;; Set srecode-map-load-path to nil, otherwise the setter function + ;; for it will break the build. + (setq srecode-map-load-path nil) + + (cedet-build-msg "done\nStep 4: Turning on EDE and Semantic ...") + (save-excursion + ;; Enable EDE and Semantic + (global-ede-mode 1) + ;;Disable most new buffer setup functions to speed things up. + (setq semantic-new-buffer-setup-functions nil) + ;; Enable Semantic + (semantic-mode 1) + ;; Disable using cached files for parse results. + (setq semanticdb-new-database-class 'semanticdb-project-database) + ;; Require grammar compilation. + (require 'semantic/ede-grammar) + (require 'semantic/wisent)) + (cedet-build-msg "done.\n\n") + + ;; Load in the Makefile + (let ((buf (get-buffer-create "CEDET MAKE")) + (pkgs nil) + (subdirs '("lisp")) + ) + (cedet-build-msg "Step 5: Build Targets in: ") + (cedet-build-msg "%S\n\n" subdirs) + + (cedet-build-msg "Build Emacs Lisp Targets:\n-------------------------\n") + (dolist (d subdirs) + ;; For each directory, get the project, and then targets + ;; and run a build on them. + (cedet-build-msg "Building directory %s\n" d) + + (let* ((ede-project-directories t) + (Tproj (ede-load-project-file (file-name-as-directory + (expand-file-name + d cedet-build-location)))) + ) + (cedet-build-project Tproj)) + (cedet-build-msg "\n\nDone.\n") + ))) + +(defun cedet-build-project (Tproj) + "Build the project TPROJ. Recurse into sub projects." + (cedet-build-msg " Project: %s\n" (object-name-string Tproj)) + (dolist (targ (oref Tproj targets)) + (when (and (or (ede-proj-target-elisp-p targ) + ;;(ede-proj-target-elisp-autoloads-p targ) + (semantic-ede-proj-target-grammar-p targ)) + (condition-case nil + (oref targ :partofall) + (error nil))) + + (let ((ns (object-name-string targ))) + (cedet-build-msg " Target %s...%s" ns + (make-string (- 20 (length ns)) ? ))) + + ;; If it is an elisp target, then do that work here. + (let ((ans (save-excursion + (project-compile-target targ)))) + (switch-to-buffer "*CEDET BYTECOMPILE*") + (delete-other-windows) + (redisplay) + (if (and (consp ans) + (numberp (car ans))) + (cedet-build-msg "%d compiled, %d up to date.\n" + (car ans) (cdr ans)) + (cedet-build-msg "done.\n")) + )) ) + + ;; Recurse, and build all the sub projects. + (dolist (proj (oref Tproj subproj)) + (cedet-build-project proj))) + + +(provide 'cedet-build) +;;; cedet-build.el ends here diff --git a/cedet-bzr/trunk/cedet-devel-load.el b/cedet-bzr/trunk/cedet-devel-load.el new file mode 100644 index 0000000..8d6cdb5 --- /dev/null +++ b/cedet-bzr/trunk/cedet-devel-load.el @@ -0,0 +1,125 @@ +;;; cedet-devel-load.el --- Use CEDET from SourceForge, not Emacs + +;; Copyright (C) 2011, 2013 by Eric M. Ludlam + +;; This file is not part of Emacs, and will STAY a part of CEDET/Standalone + +;; 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; 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 is for using the CEDET from the CEDET standalone bzr +;; repository, replacing the version that comes with Emacs 23.x and greater. + +;;; Code: +(when (featurep 'cedet-devel-load) + (error "CEDET Version %s already loaded." cedet-version)) + +;; This file must be in "" where 'cedet.el' that +;; comes with the associated repository is in: "/lisp/cedet/cedet.el". +(let ((CEDETDIR (file-name-directory + (or load-file-name (buffer-file-name))))) + + (unless (boundp 'cedet-bootstrap-in-progress) + ;; Remove builtin CEDET from load path and autoloaded symbols + (load-file (expand-file-name "cedet-remove-builtin.el" CEDETDIR))) + + ;; SETUP LOAD PATHS + (add-to-list 'load-path CEDETDIR) + (add-to-list 'load-path (expand-file-name "lisp/cedet" CEDETDIR)) + (add-to-list 'load-path (expand-file-name "lisp/eieio" CEDETDIR)) + (add-to-list 'load-path (expand-file-name "lisp/speedbar" CEDETDIR)) + + (require 'eieio) + (require 'ede) + + ;; Load in all the loaddefs unless we're bootstrapping the system + (unless (boundp 'cedet-bootstrap-in-progress) + (message "Loading autoloads from CEDET development.") + (load (expand-file-name "lisp/eieio/loaddefs.el" CEDETDIR) nil t t) + (load (expand-file-name "lisp/speedbar/loaddefs.el" CEDETDIR) nil t t) + (load (expand-file-name "lisp/cedet/loaddefs.el" CEDETDIR) nil t t) + (load (expand-file-name "lisp/cedet/ede/loaddefs.el" CEDETDIR) nil t t) + (load (expand-file-name "lisp/cedet/cogre/loaddefs.el" CEDETDIR) nil t t) + (load (expand-file-name "lisp/cedet/srecode/loaddefs.el" CEDETDIR) nil t t) + (load (expand-file-name "lisp/cedet/semantic/loaddefs.el" CEDETDIR) nil t t) + (setq Info-directory-list + (cons (expand-file-name "doc/info" CEDETDIR) + Info-default-directory-list))) + + ;; Load in COMPAT code - This is because NEW CEDET code may use this + ;; for compatibility reasons, but Emacs integrated code removes it. + (require 'cedet-compat) + ) + +;; Skip the rest if we just want to absolute minimum (during compilation). +(unless (bound-and-true-p cedet-minimum-setup) + + (require 'cedet) ;; Get standard CEDET variables loaded. + + ;; Load the canned configurations + (require 'semantic/canned-configs) + + ;; Add some autoloads by hand due to: + ;; New code + ;; Things disabled by core Emacs + ;; + ;; @TODO - generate autoloads. + (autoload 'semantic-default-elisp-setup "semantic/bovine/el" + "Setup hook function for Emacs Lisp files and Semantic.") + + ;; Get SRecode initialized + (require 'srecode) + (require 'srecode/map) ;; Get the srecode load-path filled in. + + (let ((CEDETDIR (file-name-directory + (or load-file-name (buffer-file-name)))) + (REMOVEME (expand-file-name "srecode" data-directory))) + ;; Add in the devel data directory. + (add-to-list 'srecode-map-load-path (expand-file-name "etc/srecode" CEDETDIR)) + ;; Remove the system level data directory. + (setq srecode-map-load-path (remove REMOVEME srecode-map-load-path))) + + ;; Currently, Emacs proper doesn't track EIEIO methods. Until it + ;; does, we have to advice `describe-variable' and `describe-function' + ;; for EIEIO methods to get better help buffers. + + (require 'advice) + (require 'eieio-opt) + + (defadvice describe-variable (around eieio-describe activate) + "Display the full documentation of FUNCTION (a symbol). +Returns the documentation as a string, also." + (if (class-p (ad-get-arg 0)) + (eieio-describe-class (ad-get-arg 0)) + ad-do-it)) + + (defadvice describe-function (around eieio-describe activate) + "Display the full documentation of VARIABLE (a symbol). +Returns the documentation as a string, also." + (if (generic-p (ad-get-arg 0)) + (eieio-describe-generic (ad-get-arg 0)) + (if (class-p (ad-get-arg 0)) + (eieio-describe-constructor (ad-get-arg 0)) + ad-do-it))) + + ;; This adds further formatting and hyperlinks. + (add-hook 'temp-buffer-show-hook 'eieio-help-mode-augmentation-maybee t) +) + +(provide 'cedet-devel-load) + +;; End diff --git a/cedet-bzr/trunk/cedet-ediff.el b/cedet-bzr/trunk/cedet-ediff.el new file mode 100644 index 0000000..f484e5a --- /dev/null +++ b/cedet-bzr/trunk/cedet-ediff.el @@ -0,0 +1,123 @@ +;;; cedet-ediff --- Ediffing utilities for CEDET maintenance. + +;;; Copyright (C) 2008, 2009, 2010 Eric M. Ludlam + +;; Author: Eric M. Ludlam + +;; This file is not part of GNU Emacs. + +;; Semantic 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., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; M-x cedet-ediff-emacs +;; +;; To compare the current buffer vs a matching buffer in CEDET/Emacs +;; repositories. Set the repository locations to start using this +;; utility to run ediff between repository versions. +;; + +;;; Code: +(defvar cedet-ediff-emacs-repository (expand-file-name "~/src/emacs.cedet/lisp") + "Location of the Emacs repository.") + +(defvar cedet-ediff-cedet-repository (expand-file-name "~/cedet") + "Location of the Emacs repository.") + +(defun cedet-ediff-emacs () + "Ediff the current buffer to a match in the Emacs repository." + (interactive) + (let ((src (buffer-file-name (current-buffer))) + (destfile nil) + (buff nil)) + + ;; Find a repository match + (cond ((string-match (concat "^" cedet-ediff-cedet-repository) src) + (setq destfile (cedet-repository-map-cedet->emacs src))) + ((string-match (concat "^" cedet-ediff-emacs-repository) src) + (setq destfile (cedet-repository-map-emacs->cedet src))) + ) + + (when (not destfile) + (error "No destination found")) + + (setq buff (find-file-noselect destfile)) + + (ediff-buffers (current-buffer) buff) + + )) + +(defvar cedet-ediff-file-map + '( + ;; CEDET regexp . Emacs regexp + ("ede/ede-" . "cedet/ede/") + ("ede/project-am.el" . "cedet/ede/project-am.el") + ("ede/ede\\.el" . "cedet/ede\\.el") + ("srecode/srecode-" . "cedet/srecode") + ("ede/srecode\\.el" . "cedet/srecode\\.el") + ("semantic/semantic-" . "cedet/semantic/") + ("semantic/wisent/wisent/wisent.el" . "cedet/semantic/wisent.el") + ("semantic/wisent/wisent-" . "cedet/semantic/wisent/") + ("semantic/semanticdb-" . "cedet/semantic/db-") + ("common/" . "cedet/") + ("eieio/" . "emacs-lisp/") + ) + "Map files names in the CEDET repository to files in the Emacs repository.") + +(defun cedet-repository-map-cedet->emacs (&optional file) + "Map FILE from a CEDET repository name to an Emacs repository name." + (interactive) + (when (not file) (setq file (buffer-file-name (current-buffer)))) + + (if (not (string-match (concat "^" cedet-ediff-cedet-repository) file)) + (error "Not in your cedet repository")) + + (setq file (replace-match cedet-ediff-emacs-repository t t file)) + + (let ((map cedet-ediff-file-map) + ans) + (while (and map (not ans)) + (when (string-match (car (car map)) file) + (setq ans (replace-match (cdr (car map)) nil t file)) + ) + (setq map (cdr map))) + (when (interactive-p) (message "Translation: %S" ans)) + ans)) + +(defun cedet-repository-map-emacs->cedet (&optional file) + "Map FILE from a Emacs repository name to an CEDET repository name." + (interactive) + (when (not file) (setq file (buffer-file-name (current-buffer)))) + + (if (not (string-match (concat "^" cedet-ediff-emacs-repository) file)) + (error "Not in your cedet repository")) + + (setq file (replace-match cedet-ediff-cedet-repository t t file)) + + (let ((map cedet-ediff-file-map) + ans) + (while (and map (not ans)) + (when (string-match (cdr (car map)) file) + (setq ans (replace-match (car (car map)) nil t file)) + ) + (setq map (cdr map))) + (when (interactive-p) (message "Translation: %S" ans)) + ans)) + + +(provide 'cedet-ediff) + +;;; cedet-ediff.el ends here diff --git a/cedet-bzr/trunk/cedet-emacs-merge.el b/cedet-bzr/trunk/cedet-emacs-merge.el new file mode 100644 index 0000000..0f3bb74 --- /dev/null +++ b/cedet-bzr/trunk/cedet-emacs-merge.el @@ -0,0 +1,536 @@ +;;; ceemme --- CEDET <-> Emacs merge helper + +;;; Copyright (C) 2012 David Engster + +;; Author: David Engster + +;; This file is not part of GNU Emacs. + +;; CEDET 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., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; This is a helper package for merging CEDET with Emacs which at +;; least takes care of the most tedious stuff when doing cross-project +;; merges, but still won't make it a thrilling experience (sorry). +;; Since it will only ever be used by CEDET maintainers, I didn't +;; polish it very much, and documentation is... well, sparse. +;; However, frobbing `ceemme-emacs-trunk' and `ceemme-cedet-repo' and +;; calling `ceemme' should give you an idea (be prepared to wait for +;; bzr, though). +;; +;; Basic workflow: +;; - Fire up ceemme. +;; - Look at commits which aren't yet marked. +;; - Mark commits like "merge from trunk" and the like as ignored +;; using 'm i'. +;; - Look at details with RET and list affected files with 'f'. +;; - Test commit with 't' and investigate failed hunks. +;; - Apply the patch with 'a' and use ediff to manually deal with +;; failed hunks. +;; - Generate commit message with 'c' (it will also be in the kill-ring). +;; - Call up vc-dir with 'v'. +;; - Commit, yank generated commit message, edit at will. +;; - Mark commit as applied or partly applied (the latter will require a +;; comment regarding why). +;; - Check other commands with '?'. +;; +;; State of merge will be saved as soon as you mark a commit. You +;; should commit that state to the repository when you're done so that +;; others know what great deeds you've accomplished. +;; +;; IMPORTANT: This tool will only work with files which are in the +;; Emacs repository, so adding new files has to be done manually. + +(require 'esh-util) ; For flatten lists +(require 'faces) + +;; Location of Emacs trunk +(defvar ceemme-emacs-trunk (expand-file-name "~/emacs/trunk")) +;; Location of CEDET repository +;; The branches 'trunk', 'to-emacs' and 'from-emacs' must be present. +(defvar ceemme-cedet-repo (expand-file-name "~/cedet")) + +(defvar ceemme-cedet-files nil) + +(defvar ceemme-files-regexp "\\.\\(el\\|srt\\)$") +(defvar ceemme-files-ignore-regexp "\\(loaddefs\\|-wy\\|-by\\)\\.el") + +(defvar ceemme-emacs-log-file (expand-file-name "~/.ceemme-emacstrunk-log.txt")) + +(defvar ceemme-cedet-file-regexp + "\\(?:lisp/cedet\\|lisp/emacs-lisp/eieio\\)") + +(defvar ceemme-state nil) + +(defvar ceemme-log-regexp1 + "^\\s-*\\([0-9.]+\\): \\(.+?\\) \\([0-9-]+\\) \\(.*\\)$") +(defvar ceemme-log-regexp2 + "^\\s-*\\([0-9.]+\\): \\(.+?\\) \\([0-9-]+\\) \\(\\[merge\\]\\) \\(.*\\)$") +(defvar ceemme-patch-out-regexp1 + "^Patching file \\(.+\\) using.*$") +(defvar ceemme-patch-out-regexp2 + "^\\(Hunk #[0-9]+\\) \\(FAILED\\) at.*$") +(defvar ceemme-patch-out-regexp3 + "^\\(Hunk #[0-9]+\\) \\(succeeded\\) at.*$") +(defvar ceemme-patch-out-regexp4 + "^\\(Reversed .or previously applied. patch detected.\\)") +(defvar ceemme-patch-out-regexp5 + "^\\(Hunk #[0-9]+\\) \\(ignored\\) at.*$") + +(defvar ceemme-merge-from-trunk-regexp + "\\[merge\\]\\s-*[mM]erge \\(from \\)?[tT]runk") + +(defvar ceemme-patch-program "/usr/bin/patch") + +;; Direction of merges; can be 'e2c or 'c2e. +(defvar ceemme-merge-direction 'e2c) + +(defvar ceemme-log-entries nil) + +(defvar ceemme-first-emacs-revision 106349) +(defvar ceemme-first-cedet-revision 7000) + +(defvar ceemme-buffer-name "*ceemme main*") +(defvar ceemme-out-buffer-name "*ceemme out*") + +(defvar ceemme-from nil) +(defvar ceemme-to nil) + +(defsubst ceemme-buffer () + (with-current-buffer (get-buffer-create ceemme-buffer-name) + (setq buffer-read-only nil) + (current-buffer))) + +(defsubst ceemme-out-buffer () + (with-current-buffer (get-buffer-create ceemme-out-buffer-name) + (setq buffer-read-only nil) + (current-buffer))) + +(defvar ceemme-mark-faces + '((applied ceemme-applied-face) + (ignore ceemme-ignore-face) + (partly ceemme-partly-face))) + +(defface ceemme-applied-face + '((t :background "dark green")) + "Applied face.") + +(defface ceemme-ignore-face + '((t :background "dim gray" :foreground "black")) + "Applied face.") + +(defface ceemme-ignore-face + '((t :background "dark blue")) + "Applied face.") + +(defvar ceemme-key->symbol + '((?a applied) + (?i ignore) + (?p partly))) + +(defvar ceemme-mode-map + (let ((map (make-keymap))) + (define-key map [(return)] 'ceemme-show-details) + (define-key map [(d)] 'ceemme-show-diff) + (define-key map [(f)] 'ceemme-show-affected-files) + (define-key map [(\?)] 'ceemme-show-commands) + (define-key map [(m)] 'ceemme-mark-revno) + (define-key map [(i)] 'ceemme-ignore-merge-from-trunk) + (define-key map [(h)] 'ceemme-toggle-visibility) + (define-key map [(t)] 'ceemme-test-patch) + (define-key map [(a)] 'ceemme-apply) + (define-key map [(c)] 'ceemme-commit-message) + (define-key map [(v)] 'ceemme-vc-dir) + map) + "keymap") + +(defvar ceemme-patch-output-mode-map + (let ((map (make-keymap))) + (define-key map [(return)] 'ceemme-patch-goto) + map) + "keymap") + +(defvar ceemme-patch-out-font-lock-keywords) +(defun ceemme-patch-output-mode () + "Major mode for patch output." + (interactive) + (kill-all-local-variables) + (setq major-mode 'ceemme-pach-output-mode) + (setq mode-name "ceemme-patch") + (set-syntax-table text-mode-syntax-table) + (use-local-map ceemme-patch-output-mode-map) + (make-local-variable 'font-lock-defaults) + (setq ceemme-patch-out-font-lock-keywords + `((,ceemme-patch-out-regexp1 + (1 'link)) + (,ceemme-patch-out-regexp2 + (1 'link) + (2 'warning)) + (,ceemme-patch-out-regexp3 + (1 'link) + (2 'success)) + (,ceemme-patch-out-regexp4 + (1 'warning)) + (,ceemme-patch-out-regexp5 + (1 'link) + (2 'error)))) + (setq buffer-read-only t) + (setq font-lock-defaults '(ceemme-patch-out-font-lock-keywords))) + +(defun ceemme-toggle-visibility () + (interactive) + (dolist (ov (overlays-in (point-min) (point-max))) + (if (overlay-get ov 'invisible) + (overlay-put ov 'invisible nil) + (overlay-put ov 'invisible t)))) + +(defun ceemme-vc-dir () + (interactive) + (message "Calling vc-dir on %s" ceemme-to) + (vc-dir ceemme-to)) + +(defun ceemme-commit-message () + (interactive) + (let ((revno (ceemme-get-revno)) + author message) + (pop-to-buffer (ceemme-out-buffer)) + (erase-buffer) + (ceemme-call-bzr "log" "-r" revno ceemme-from) + (goto-char (point-min)) + (setq author + (save-excursion + (or (re-search-forward "^author: \\(.+\\)$" nil t) + (re-search-forward "^committer: \\(.+\\)$" nil t)) + (match-string 1))) + (setq message + (save-excursion + (re-search-forward "^message:\n\\([^\0]*\\)" nil t) + (match-string 1))) + (replace-regexp-in-string "^\\(\\s-*\\)" "" message nil nil 1) + (erase-buffer) + (insert "Author: " author "\n\n") + (insert "Merged Emacs rev. " revno ".\n\n") + (insert message) + (kill-new (buffer-substring-no-properties (point-min) (point-max))) + (message "Copied commit message to kill-ring."))) + +(defun ceemme-patch-goto () + (interactive) + (save-excursion + (let ((props (text-properties-at (point))) + file hunk) + (when (member 'link props) + (beginning-of-line) + (when (looking-at "^Patching file \\(.+\\) using.*$") + (setq file (match-string-no-properties 1)) + (find-file (concat (file-name-as-directory ceemme-to) file))) + (when (looking-at "^Hunk #\\([0-9]+\\)") + (setq hunk (match-string-no-properties 1)) + (re-search-backward "^Patching file \\(.+\\) using.*$") + (setq file (match-string-no-properties 1)) + (pop-to-buffer (ceemme-out-buffer)) + (goto-char (point-min)) + (re-search-forward (concat "=== modified file.*" (regexp-quote file))) + (diff-hunk-next (string-to-number hunk))))))) + +(defun ceemme-get-revno () + (save-excursion + (beginning-of-line) + (looking-at "\\s-*\\([0-9.]+\\):") + (match-string-no-properties 1))) + +(defun ceemme-is-merge () + (save-excursion + (beginning-of-line) + (search-forward "[merge]" (point-at-eol) t))) + +(defun ceemme-save-state () + (with-temp-buffer + (prin1 ceemme-state (current-buffer)) + ;; Just cosmetics to make it more human readable + (goto-char (point-min)) + (while (search-forward ")" nil t) + (insert "\n")) + (write-region (point-min) (point-max) + (expand-file-name "ceemme-state" ceemme-to )) + (message "Saved ceemme state to %s." (expand-file-name "ceemme-state" ceemme-to)))) + +(defun ceemme-show-commands () + (interactive) + (save-selected-window + (pop-to-buffer (ceemme-out-buffer)) + (erase-buffer) + (insert "Available commands on a commit:\n" + "RET - Show details\n" + "d - Show diff\n" + "f - Show affected files in CEDET repository\n" + "t - Test: Dry run of patch\n" + "a - Apply this patch\n" + "m - Mark commit\n" + "i - Ignore all \"merge from trunk\" commits\n" + "c - Generate commit message\n" + "h - Hide/Unhide all marked commits\n" + "v - Call vc-dir on target repository\n" + "? - This"))) + +(defun ceemme-mark-revno (mark &optional dontsave) + (interactive "cMark (a=applied, p=partly applied, i=ignore): ") + (let* ((revno (ceemme-get-revno)) + (entry (assoc revno ceemme-state)) + comment) + (setq mark (cadr (assoc mark ceemme-key->symbol))) + (unless mark + (error "Unknown mark.")) + (when (or (equal mark 'partly) + (and (equal mark 'ignore) + (not (ceemme-is-merge)))) + (setq comment (read-from-minibuffer "Comment: "))) + (if entry + (setcdr entry (list mark comment)) + (push (list revno mark comment) ceemme-state))) + (ceemme-set-mark-overlays) + (unless dontsave + (ceemme-save-state))) + +(defun ceemme-ignore-merge-from-trunk () + (interactive) + (goto-char (point-min)) + (while (not (eobp)) + (let* ((revno (ceemme-get-revno)) + (entry (assoc revno ceemme-state))) + (when (and (not entry) + (re-search-forward ceemme-merge-from-trunk-regexp + (point-at-eol) t)) + (ceemme-mark-revno ?i t)) + (forward-line 1))) + (ceemme-save-state)) + +(defun ceemme-set-mark-overlays () + (interactive) + (remove-overlays) + (save-excursion + (goto-char (point-min)) + (while (not (eobp)) + (let* ((revno (ceemme-get-revno)) + (entry (assoc revno ceemme-state)) + ov) + (when entry + (setq ov (make-overlay (point-at-bol) (1+ (point-at-eol)))) + (overlay-put ov 'face + (cadr (assoc (cadr entry) ceemme-mark-faces))))) + (forward-line 1)))) + +(defun ceemme-show-details () + (interactive) + (save-selected-window + (let ((revno (ceemme-get-revno))) + (pop-to-buffer (ceemme-out-buffer)) + (erase-buffer) + (ceemme-call-bzr-cedet-files "log" "-v" "-r" revno) + (goto-char (point-min)) + (setq buffer-read-only t) + (fundamental-mode)))) + +(defun ceemme-show-diff () + (interactive) + (let ((revno (ceemme-get-revno))) + (pop-to-buffer (ceemme-out-buffer)) + (erase-buffer) + (ceemme-call-bzr-cedet-files "diff" "-c" revno) + (goto-char (point-min)) + (setq buffer-read-only t) + (diff-mode))) + +(defun ceemme-apply (&optional dry-run) + (interactive) + (let ((revno (ceemme-get-revno))) + (pop-to-buffer (ceemme-out-buffer)) + (setq default-directory ceemme-to) + (erase-buffer) + (ceemme-call-bzr-cedet-files "diff" "-c" revno) + (goto-char (point-min)) + (ceemme-adapt-paths) + (diff-mode) + (setq buffer-read-only t) + (if dry-run + (ceemme-call-patch (current-buffer) ceemme-to + "-p0" "--verbose" "-u" "--dry-run" + "--no-backup-if-mismatch" "-r" "-") + (ceemme-call-patch (current-buffer) ceemme-to + "-p0" "--verbose" "-u" "--no-backup-if-mismatch" + "-r" "-")) + (pop-to-buffer "*ceemme patch output*") + (goto-char (point-min)) + (when dry-run + (insert "DRY RUN!\n\n")) + (save-excursion + (while (re-search-forward + "^Hmm.*like a unified[^\0]*?\nPatching file" nil t) + (replace-match "Patching file"))) + (ceemme-patch-output-mode))) + +(defun ceemme-test-patch () + (interactive) + (ceemme-apply t)) + +(defun ceemme-call-patch (buf dir &rest options) + (with-current-buffer buf + (let ((default-directory (file-name-as-directory dir)) + (outbuf (get-buffer-create "*ceemme patch output*"))) + (with-current-buffer outbuf + (setq buffer-read-only nil) + (erase-buffer)) + (apply 'call-process-region (point-min) (point-max) + ceemme-patch-program + nil outbuf t options)))) + +(defun ceemme-build-filelist () + (eshell-flatten-list + (append + (ceemme-get-cedet-files-under + (concat ceemme-emacs-trunk "/lisp/cedet")) + (mapcar + (lambda (x) + (concat ceemme-emacs-trunk "/lisp/emacs-lisp/" x)) + (directory-files + (concat ceemme-emacs-trunk "/lisp/emacs-lisp") + nil "eieio.*\\.el$"))))) + +(defun ceemme-get-cedet-files-under (dir) + (let ((files (directory-files-and-attributes dir))) + (delq nil + (mapcar + (lambda (file) + (let ((x (car file))) + (if (and (eq t (cadr file)) + (not (or (string= x ".") + (string= x "..")))) + (ceemme-get-cedet-files-under + (concat (file-name-as-directory dir) x)) + (when (and (string-match ceemme-files-regexp x) + (not (string-match ceemme-files-ignore-regexp x))) + (concat (file-name-as-directory dir) x))))) + files)))) + +(defun ceemme-adapt-paths () + (save-excursion + (goto-char (point-min)) + (if (eq ceemme-merge-direction 'e2c) + (while (re-search-forward + (concat "^[+=-]\\{3\\} " + "\\(?:modified file '\\)?" + "\\(lisp/emacs-lisp/\\)") nil t) + (replace-match "lisp/eieio/" nil nil nil 1)) + (while (re-search-forward "^[+=-]\\{3\\} \\(lisp/eieio/\\)" nil t) + (replace-match "lisp/emacs-lisp/" nil nil nil 1))))) + +(defun ceemme-show-affected-files () + (interactive) + (let ((revno (ceemme-get-revno))) + (pop-to-buffer (ceemme-out-buffer)) + (ceemme-call-bzr "log" "-v" "-r" revno ceemme-from) + (goto-char (point-min)) + (if (re-search-forward "^\\s-*\\(removed\\|added\\|modified\\|renamed\\):$" nil t) + (progn + (forward-line 1) + (delete-region (point-min) (point)) + (while (not (eobp)) + (if (or (looking-at (concat "^\\s-*" ceemme-cedet-file-regexp)) + (looking-at "^\\s-*\\(removed\\|added\\|modified\\|renamed\\):$")) + (forward-line 1) + (delete-region (point-at-bol) (1+ (point-at-eol)))))))) + (setq buffer-read-only t)) + +(defsubst ceemme-call-bzr (command &rest args) + (apply 'call-process "bzr" nil (current-buffer) nil command args)) + +(defsubst ceemme-call-bzr-cedet-files (command &rest args) + (apply 'call-process "bzr" nil (current-buffer) nil command (append args ceemme-cedet-files))) + +(defvar ceemme-mode-font-lock-keywords) + +(defun ceemme-mode () + "Major mode for CEDET Emacs merging." + (interactive) + (kill-all-local-variables) + (setq major-mode 'ceemme-mode) + (setq mode-name "ceemme") + (set-syntax-table text-mode-syntax-table) + (use-local-map ceemme-mode-map) + (make-local-variable 'font-lock-defaults) + (setq ceemme-mode-font-lock-keywords + (list (list ceemme-log-regexp1 + '(1 font-lock-constant-face) + '(2 font-lock-string-face) + '(3 font-lock-keyword-face)) + (list ceemme-log-regexp2 + '(1 font-lock-constant-face) + '(2 font-lock-string-face) + '(3 font-lock-keyword-face) + '(4 font-lock-warning-face)))) + (ceemme-set-mark-overlays) + (setq buffer-read-only t) + (message "CEDET <-> Emacs merge mode. Type '?' to get list of available commands.") + (setq font-lock-defaults '(ceemme-mode-font-lock-keywords))) + +(defun ceemme-load-state () + (when (file-exists-p (expand-file-name "ceemme-state" ceemme-to)) + (with-temp-buffer + (insert "(setq ceemme-state '") + (insert-file-contents (expand-file-name "ceemme-state" ceemme-to)) + (goto-char (point-max)) + (insert ")") + (eval-buffer)))) + +(defun ceemme-filelist-c2e (filelist) + (let ((l (length ceemme-emacs-trunk))) + (mapcar + (lambda (x) + (when (string-match "/lisp/emacs-lisp/" x) + (setq x (replace-match "/lisp/eieio/" nil t x))) + (concat ceemme-cedet-repo (substring x l))) + filelist))) + +(defun ceemme () + (interactive) + (switch-to-buffer (ceemme-buffer)) + (erase-buffer) + (if (eq ceemme-merge-direction 'e2c) + (setq ceemme-cedet-files (ceemme-build-filelist) + ceemme-from ceemme-emacs-trunk + ceemme-to (expand-file-name "from-emacs" ceemme-cedet-repo)) + (setq ceemme-cedet-files + (ceemme-filelist-c2e + (ceemme-build-filelist)) + ceemme-from (expand-file-name "trunk" ceemme-cedet-repo) + ceemme-to (expand-file-name "to-emacs" ceemme-cedet-repo))) + (if (and (eq ceemme-merge-direction 'e2c) + (file-exists-p ceemme-emacs-log-file) + (y-or-n-p "Use cached Emacs revisions? ")) + (insert-file-contents ceemme-emacs-log-file) + (message "Generating list of revisions.") + (if (eq ceemme-merge-direction 'e2c) + (ceemme-call-bzr-cedet-files "log" "-n0" "--line" "-r" + (format "%d.." ceemme-first-emacs-revision)) + (ceemme-call-bzr-cedet-files "log" "-n0" "--line" "-r" + (format "%d.." ceemme-first-cedet-revision))) + (when (eq ceemme-merge-direction 'e2c) + (write-region (point-min) (point-max) ceemme-emacs-log-file))) + (ceemme-load-state) + (ceemme-mode) + (setq default-directory (file-name-as-directory ceemme-from)) + (font-lock-mode)) diff --git a/cedet-bzr/trunk/cedet-remove-builtin.el b/cedet-bzr/trunk/cedet-remove-builtin.el new file mode 100644 index 0000000..03e5ac8 --- /dev/null +++ b/cedet-bzr/trunk/cedet-remove-builtin.el @@ -0,0 +1,66 @@ +;;; cedet-remove-builtin.el --- Remove CEDET version shipping with Emacs +;; +;; Copyright (C) 2011 Eric M. Ludlam +;; +;; Author: Eric M. Ludlam +;; +;; 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; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Code: + +(defvar cedet-remove-builtin-package-list + '(eieio semantic srecode ede data-debug) + "CEDET packages part of Emacs proper that should be removed. + The 'cedet' package itself is implicitly included.") + +(defun cedet-remove-builtin () + "Force any CEDET package on load-path to be removed. +Force all symbols that belong to CEDET to be unloaded. This +should also (hopefully) remove additional CEDET installations +installed through package managers or similar. This is a needed +first step in getting CEDET installed from outside sources." + (interactive) + (when (featurep 'cedet) + (error "Cannot unload builtin CEDET since it is already loaded.")) + + (dolist (package cedet-remove-builtin-package-list) + (when (featurep package) + (error "%s is already loaded. Removing CEDET now would be unwise." + (symbol-name package)))) + + ;; Remove from load-path. + (let (clp) + (while (setq clp (locate-library "cedet")) + (setq load-path (delete (directory-file-name (file-name-directory clp)) + load-path)) + (setq load-path (delete (file-name-directory (file-name-directory clp)) + load-path)))) + + ;; Find ALL autoloaded symbols related to CEDET, and delete them. + (dolist (R (append '(cedet) cedet-remove-builtin-package-list)) + (dolist (S (append (apropos-internal (concat "^" (symbol-name R) "-")) + (apropos-internal (concat "^global-" (symbol-name R) "-")))) + (when (and (fboundp S) + (let ((sf (symbol-function S))) + (and (listp sf) (eq (car sf) 'autoload)))) + (fmakunbound S)))) + ) + +(cedet-remove-builtin) + +(provide 'cedet-remove-builtin) + +;;; cedet-remove-builtin.el ends here diff --git a/cedet-bzr/trunk/cedet-update-changelog.el b/cedet-bzr/trunk/cedet-update-changelog.el new file mode 100644 index 0000000..a064feb --- /dev/null +++ b/cedet-bzr/trunk/cedet-update-changelog.el @@ -0,0 +1,248 @@ +;;; cedet-update-changelog --- Utility for updating changelogs in CEDET. + +;;; Copyright (C) 2005, 2008, 2009, 2010, 2012 Eric M. Ludlam +;;; 2012 David Engster + +;; Author: Eric M. Ludlam + +;; This file is not part of GNU Emacs. + +;; Semantic 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., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; The CEDET project does not maintain ChangeLog files under version +;; control. However, since people often find them useful, they are +;; generated from the version control logs and shipped with CEDET +;; releases. In the CVS days, this was done through rcs2log, but this +;; obviously does not work with bzr. While bzr does support ChangeLog +;; generation through the '--gnu-changelog' option, this has a few +;; quirks, which is why we do the conversion ourselves. + +;;; History: +;; +;; Mostly rewritten in 3/2012 to support conversion from bzr logs. + +(require 'cedet) + +;;; Code: + +(defvar cuc-bzr-log-regexp + (concat + "^\\s-*revno: \\(.+\\)" + "\\(?:\n\\s-*tags: \\(.+\\)\\)?" + "\\(?:\n\\s-*author: \\(.+\\)\\)?" + "\n\\s-*committer: \\(.+\\)" + "\n\\s-*branch nick: \\(.+\\)" + "\n\\s-*timestamp: \\(.+\\)" + "\n\\s-*message:\\([^\0]*?\\)" + "\n\\s-*\\(removed\\|added\\|modified\\|renamed\\):") + "Regexp for parsing the bzr log output.") + +(defvar cuc-committer-names + '( + ;; Eric + ("zappo" "Eric M. Ludlam ") + ;; David (I) + ("ponced" "David Ponce ") + ("david_ponce" "David Ponce ") + ;; Richard + ("emacsman" "Richard Y. Kim ") + ;; Klaus + ("berndl" "Klaus Berndl ") + ;; Suraj + ("surajacharya" "Suraj Acharya ") + ;; Marco + ("safanaj" "Marco (Bj) Bardelli ") + ;; Anton + ("kpoxman" "Anton V. Belyaev ") + ;; Dan + ("airboss" "Dan Debertin ") + ;; Jan + ("scymtym" "Jan Moringen ") + ;; David (II) + ("davenar" "David Engster ") + ;; Alex + ("ottalex" "Alex Ott ") + ;; Joakim + ("joakimv" "Joakim Verona ") + ;; Lluís + ("xscript" "Lluís ")) + "Sourceforge names of committers from the older CVS imports. +Newer bzr commits should have proper names in them.") + +(defvar cuc-entries nil) + +(defvar cuc-dirs + (let ((pack cedet-packages) + (dirs nil)) + (while pack + (setq dirs + (cons (file-name-directory (locate-library + (symbol-name (car (car pack))))) + dirs) + pack + (cdr pack))) + (let* ((base (file-name-directory (car dirs))) + (root (file-name-directory (directory-file-name base))) + ) + (setq dirs (cons (expand-file-name "tests/" root) dirs))) + (nreverse dirs)) + "List of directories we need to change the ChangeLog in.") + +(defun cuc-update-changelog (dir) + "Update the changelog in DIR." + (interactive "DDir: ") + (find-file (concat dir "ChangeLog")) + (erase-buffer) + (goto-char (point-min)) + (sit-for 0) + (message "Calling bzr log on %s..." + (file-name-nondirectory (directory-file-name dir))) + (call-process "bzr" nil (current-buffer) t + "log" "-n0" "-v" (expand-file-name (directory-file-name dir))) + ;; Symmetry makes things easier. + (goto-char (point-max)) + (insert "------------------------------------------------------------") + ;; Generate ChangeLog. + (cuc-convert-to-changelog) + (save-buffer)) + +(defun cuc-convert-to-changelog () + "Convert bzr log output to ChangeLog format." + (interactive) + (goto-char (point-min)) + (setq cuc-entries nil) + (while (progn + (forward-line 1) + (looking-at "^\\s-*revno: ")) + (if (null + (re-search-forward cuc-bzr-log-regexp + (save-excursion + (re-search-forward "^\\s-*------------------------------" nil t) + (point)) t)) + (error "Could not correctly parse this log entry") + (let* ((revision (match-string-no-properties 1)) + (tags (match-string-no-properties 2)) + (author (or (match-string-no-properties 3) (match-string-no-properties 4))) + (branch (match-string-no-properties 5)) + (timestamp (match-string-no-properties 6)) + (message (match-string-no-properties 7)) + (ismerge (string-match "\\[merge\\]" revision)) + files type added removed renamed modified tmp) + ;; Parse modified/added/removed files + (beginning-of-line) + (while (looking-at "^\\s-*\\(added\\|removed\\|modified\\|renamed\\):$") + (forward-line 1) + (let ((type (intern (match-string-no-properties 1)))) + (while (looking-at "^\\s-+\\([^- ].+\\)$") + (let ((tmp (match-string-no-properties 1))) + (unless (string-match "/$" tmp) + (set type (cons (match-string-no-properties 1) (symbol-value type))))) + (forward-line 1)))) + (push (list timestamp ismerge author modified added removed renamed message) + cuc-entries)))) + (erase-buffer) + (change-log-mode) + (cuc-generate-changelog)) + +(defun cuc-generate-changelog () + "Generate ChangeLog from `cuc-entries'." + (let (cur (last '("" . ""))) + ;; Sort according to timestamp. + (setq cuc-entries + (sort cuc-entries + (lambda (x y) + (> (float-time (date-to-time (car x))) + (float-time (date-to-time (car y))))))) + ;; Insert entries. + (while (setq cur (pop cuc-entries)) + (setq last (cuc-insert-changelog-entry cur (car last) (cdr last))) + (sit-for 0))) + ;; Make things prettier. + (delete-trailing-whitespace) + (fill-region (point-min) (point-max) t)) + +(defun cuc-insert-changelog-entry (entry lasttime lastauthor) + "Insert one ChangeLog entry from ENTRY. +Don't insert the TIME/AUTHOR combo if it matches the LASTTIME and LASTAUTHOR. +Return Time String & Author." + (let ((time (car entry)) + (author (nth 2 entry)) + (message (nth 7 entry)) + (ismerge (nth 1 entry)) + (modded (nth 3 entry)) + (added (nth 4 entry)) + (removed (nth 5 entry)) + (renamed (nth 6 entry)) + timestr + name) + ;; Ommit 'merge from trunk' messages from feature branches. + (unless (and ismerge + (string-match "[Mm]erge from trunk" message)) + ;; Fix old CVS author names. + (string-match "\\(.+\\) <" author) + (setq author (or (cadr (assoc (match-string 1 author) + cuc-committer-names)) + author)) + (setq timestr (nth 1 (split-string time))) + (when (not (and (string= timestr lasttime) + (string= author lastauthor))) + (when (not (bobp)) (insert "\n")) + (insert timestr " " author "\n")) + (if ismerge + ;; This is a regular merge commit. + (insert "\n\t[Branch merge]\n" message "\n\n") + ;; This is a regular commit + ;; Let's try to see if the committer already provided file information. + (if (string-match "^\\s-*\\* [a-zA-Z]+" message) + (insert message "\n") + ;; If not, add it from the bzr log. + (setq message (progn (string-match "^[ \n\t]*\\([^\0]*\\)" message) + (match-string-no-properties 1 message))) + ;; Check if committer provided an initial summary line. + (when (string-match "^\\([^(][A-Z].+\\)\n\\s-*\n\\s-*(" message) + (insert "\n\t" (match-string 1 message) "\n") + (setq message (substring message (1- (match-end 0))))) + (insert + (concat + (when removed + (mapconcat (lambda (x) (concat "\n\t* " x ": Removed.")) removed "")) + (when added + (mapconcat (lambda (x) (concat "\n\t* " x ": New file.")) added "")) + (when renamed + (mapconcat (lambda (x) (concat "\n\t* " x ": Renamed.")) renamed "")) + (when modded + (mapconcat (lambda (x) (concat "\n\t* " x ":")) modded "")))) + (when (string-match "^(" message) + (backward-delete-char 1)) + (insert " " message "\n"))) + + ;; Return the timestr and author + (cons timestr author) + ))) + +(defun cuc-update-all-changelogs () + "Update all ChangeLogs for CEDET." + (interactive) + (let ((d cuc-dirs)) + (while d + (cuc-update-changelog (car d)) + (setq d (cdr d))))) + +(provide 'cedet-update-changelog) + +;;; cedet-update-changelog.el ends here diff --git a/cedet-bzr/trunk/cedet-update-version.el b/cedet-bzr/trunk/cedet-update-version.el new file mode 100644 index 0000000..2d6af1f --- /dev/null +++ b/cedet-bzr/trunk/cedet-update-version.el @@ -0,0 +1,101 @@ +;;; cedet-update-version --- Update version numberes in all cedet packages. + +;;; Copyright (C) 2005, 2006 Eric M. Ludlam + +;; Author: Eric M. Ludlam + +;; This file is not part of GNU Emacs. + +;; Semantic 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., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; Maintaining all these version numbers is a real pain. +;; Try to make it a little bit easier on me. +;; +;; M-x cuv-update RET + +;;; History: +;; + +;;; Code: +(if (not (featurep 'cedet)) + (error "You need to have cedet loaded to manage the update versions")) + +(require 'semantic/find) +(require 'semantic/decorate) +(semantic-mode 1) +(global-ede-mode 1) +(setq ede-project-directories t) + +(defun cuv-load-package-file (package) + "Get the file name for PACKAGE." + (setq package (symbol-name package)) + (find-library package)) + +(defun cuv-update-package-version (package) + "Update the version number for the package PACKAGE." + (cuv-load-package-file package) + ;; Find the version tag. + (let ((tag (car + (semantic-find-tags-by-name + (concat (symbol-name package) "-version") + (current-buffer))))) + (goto-char (semantic-tag-start tag)) + (semantic-momentary-highlight-tag tag)) + ;; EDE will manage version numbers in files, and also + ;; manage updating the Project files. + (call-interactively 'ede-update-version) + ;; Update Makefiles. + (when (y-or-n-p "Update Makefiles from Projects? ") + (ede-proj-regenerate))) + +(defun cuv-update-all-cedet-packages () + "Update all package version numbers one by one." + (cuv-load-package-file 'cedet) + (let ((p cedet-packages) + (cep (current-buffer)) + (tag (car + (semantic-find-tags-by-name "cedet-packages" + (current-buffer))))) + (while p + (cuv-update-package-version (car (car p))) + (when (not (eq (car (car p)) 'cedet)) + ;; Update the constant in cedet.el also! + (let* ((eo (ede-toplevel)) + (v (oref eo :version))) + (switch-to-buffer cep) + (goto-char (semantic-tag-start tag)) + (re-search-forward (concat "(" (symbol-name (car (car p))) " +\"") + (semantic-tag-end tag)) + (forward-char -1) + (when (y-or-n-p "Update this location also? ") + (kill-sexp 1) + (insert (format "%S" v)) + (sit-for 2)) + )) + (setq p (cdr p))))) + +(defun cuv-update () + "Interactively update all CEDET features before a release." + (interactive) + (cuv-update-all-cedet-packages) + (message "Revision Number Updates Complete.") + ) + +(provide 'cedet-update-version) + +;;; cedet-update-version.el ends here diff --git a/cedet-bzr/trunk/contrib/.cvsignore b/cedet-bzr/trunk/contrib/.cvsignore new file mode 100644 index 0000000..b8c43b1 --- /dev/null +++ b/cedet-bzr/trunk/contrib/.cvsignore @@ -0,0 +1,6 @@ +*-compile-script +contrib-loaddefs.el +*-make-script +wisent-csharp-wy.el +wisent-php-wy.el +wisent-ruby-wy.el diff --git a/cedet-bzr/trunk/contrib/INSTALL b/cedet-bzr/trunk/contrib/INSTALL new file mode 100644 index 0000000..fedfee2 --- /dev/null +++ b/cedet-bzr/trunk/contrib/INSTALL @@ -0,0 +1,49 @@ +Installation Instruction for the CONTRIB directory + +This is a list of the different contributed tools that work with CEDET +and what they do, and any specific install instructions needed to use them. + +These instructions assume that you are using the default CEDET install +methods which will set up most aspects of these contributed files +automatically. + +-------------------- +eassist.el: + Written by Anton V. Belyaev + Provides a fancy way to navigate to tags similar to VisualAssist. + + To use, add something like this to your .emacs file: + + (defun my-c-mode-common-hook () + (define-key c-mode-base-map (kbd "M-o") 'eassist-switch-h-cpp) + (define-key c-mode-base-map (kbd "M-m") 'eassist-list-methods)) + (add-hook 'c-mode-common-hook 'my-c-mode-common-hook) + + To check out how it works, do the following: + + 1) Open any C++ file with class definithion, press M-m. Try to type + any method name. + + 2) Open any .cpp file. Press M-o. If there is .h or .hpp file in the + same folder, it will be opened. + +semantic-tag-folding.el: + Written by Suraj Acharya + Provides a fancy folding mode that takes advantage of the latest + features of GNU/Emacs 22.1 (CVS only at the time of this writing.) + + Add this to your .emacs file to use: + (global-semantic-tag-folding-mode 1) + +wisent-csharp.wy: +wisent-csharp.el: + Written by David Shilvock + Provides csharp semantic parsing. Loads automatically if you use + csharp-mode. + +wisent-javascript-jv.wy +wisent-javascript.el + Written by Eric Ludlam, Joakim Verona. + JAVE (of which this is based) Alex Walker + Provides javascript parsing in javascript-mode, or ecmascript-mode. + Automatically loads when you use those modes. \ No newline at end of file diff --git a/cedet-bzr/trunk/contrib/Makefile b/cedet-bzr/trunk/contrib/Makefile new file mode 100644 index 0000000..eaee10c --- /dev/null +++ b/cedet-bzr/trunk/contrib/Makefile @@ -0,0 +1,80 @@ +# Automatically Generated Makefile by EDE. +# For use with: make +# +# DO NOT MODIFY THIS FILE OR YOUR CHANGES MAY BE LOST. +# EDE is the Emacs Development Environment. +# http://cedet.sourceforge.net/ede.shtml +# +setup_LISP=cedet-contrib.el +require=$(foreach r,$(1),(require (quote $(r)))) +EMACSFLAGS=-batch --no-site-file --eval '(setq debug-on-error t)' -l "../cedet-remove-builtin.el" +EMACS=@echo " > $@";emacs +AUTOGENFLAGS=-L ../lisp/cedet --eval '(progn (require (quote cedet-compat)) (require (quote mode-local)))' + +top= +ede_FILES=Project.ede Makefile + +misc_AUX=ChangeLog +LOADDEFS=contrib-loaddefs.el +LOADDIRS=. +init_LISP=cedet-contrib-load.el +LOADPATH= ../lisp/cedet/ ../lisp/eieio/ ../ ./ +wy_SEMANTIC_GRAMMAR=wisent-csharp.wy wisent-ruby.wy wisent-php.wy +wy_SEMANTIC_GRAMMAR_EL=wisent-csharp-wy.el wisent-ruby-wy.el wisent-php-wy.el +lisp_LISP=wisent-csharp.el semantic-tag-folding.el eassist.el wisent-ruby.el wisent-php.el ede-gnustep.el semantic-ectag-scala.el +VERSION=1.1 +DISTDIR=$(top)Contrib-$(VERSION) + + + +all: autoloads init setup wy lisp + +.PHONY: clean-autoloads +clean-autoloads: + rm -f $(LOADDEFS) + +.PHONY: autoloads +autoloads: + $(EMACS) $(EMACSFLAGS) $(AUTOGENFLAGS) $(addprefix -L ,$(LOADPATH)) --eval '(progn $(call require, $(PRELOADS)) (setq generated-autoload-file "$(abspath $(LOADDEFS))"))' -f batch-update-autoloads $(abspath $(LOADDIRS)) + + +%.elc: %.el + $(EMACS) $(EMACSFLAGS) $(addprefix -L ,$(LOADPATH)) --eval '(progn $(call require, $(PRELOADS)))' -f batch-byte-compile $^ + +.PHONY: init +init: $(addsuffix c, $(init_LISP)) + +.PHONY: setup +setup: $(addsuffix c, $(setup_LISP)) + +%-wy.el: %.wy + $(EMACS) $(EMACSFLAGS) $(addprefix -L ,$(LOADPATH)) --eval '(progn $(call require,$(PRELOADS)))' -f semantic-grammar-batch-build-packages $^ + +.PHONY: wy +wy: $(addsuffix -wy.elc, $(basename $(wy_SEMANTIC_GRAMMAR))) +wy: PRELOADS=cedet-devel-load cedet-compat semantic/grammar semantic/bovine/grammar semantic/wisent/grammar + +wy: EMACSFLAGS+= --eval '(setq max-specpdl-size 1500 max-lisp-eval-depth 700 cedet-minimum-setup t)' +.PHONY: lisp +lisp: $(addsuffix c, $(lisp_LISP)) + +tags: + + +clean: + rm -f *-by.el *-wy.el *.elc + +.PHONY: dist + +dist: autoloads $(wy_SEMANTIC_GRAMMAR_EL) + mkdir $(DISTDIR) + cp $(misc_AUX) contrib-loaddefs.el $(init_LISP) $(setup_LISP) $(wy_SEMANTIC_GRAMMAR) $(wy_SEMANTIC_GRAMMAR_EL) $(lisp_LISP) $(ede_FILES) $(DISTDIR) + +Makefile: Project.ede + @echo Makefile is out of date! It needs to be regenerated by EDE. + @echo If you have not modified Project.ede, you can use 'touch' to update the Makefile time stamp. + @false + + + +# End of Makefile diff --git a/cedet-bzr/trunk/contrib/Project.ede b/cedet-bzr/trunk/contrib/Project.ede new file mode 100644 index 0000000..b16755b --- /dev/null +++ b/cedet-bzr/trunk/contrib/Project.ede @@ -0,0 +1,47 @@ +;; Object Contrib +;; EDE Project Files are auto generated: Do Not Edit +(ede-proj-project "Contrib" + :file "Project.ede" + :name "Contrib" + :version "1.1" + :targets (list + (ede-proj-target-aux "misc" + :name "misc" + :path "" + :source '("ChangeLog") + ) + (ede-proj-target-elisp-autoloads "autoloads" + :name "autoloads" + :path "" + :autoload-file "contrib-loaddefs.el" + ) + (ede-proj-target-elisp "init" + :name "init" + :path "" + :source '("cedet-contrib-load.el") + ) + (ede-proj-target-elisp "setup" + :name "setup" + :path "" + :source '("cedet-contrib.el") + :versionsource '("cedet-contrib.el") + :aux-packages '("cedet-devel-load" "cedet-compat" "semantic") + ) + (semantic-ede-proj-target-grammar "wy" + :name "wy" + :path "" + :source '("wisent-csharp.wy" "wisent-ruby.wy" "wisent-php.wy") + :aux-packages '("cedet-devel-load" "semantic" "cedet-compat") + :pre-load-packages '("cedet-devel-load" "cedet-compat" "semantic/grammar" "semantic/bovine/grammar" "semantic/wisent/grammar") + ) + (ede-proj-target-elisp "lisp" + :name "lisp" + :path "" + :source '("wisent-csharp.el" "semantic-tag-folding.el" "eassist.el" "wisent-ruby.el" "wisent-php.el" "ede-gnustep.el" "semantic-ectag-scala.el") + :aux-packages '("cedet-devel-load" "cedet-contrib-load") + ) + ) + :variables '(("EMACSFLAGS" . "-batch --no-site-file --eval '(setq debug-on-error t)' -l \"../cedet-remove-builtin.el\"") ("EMACS" . "@echo \" > $@\";emacs") ("AUTOGENFLAGS" . "-L ../lisp/cedet --eval '(progn (require (quote cedet-compat)) (require (quote mode-local)))'")) + :configuration-variables 'nil + :metasubproject 't + ) diff --git a/cedet-bzr/trunk/contrib/cedet-contrib-load.el b/cedet-bzr/trunk/contrib/cedet-contrib-load.el new file mode 100644 index 0000000..c5d10a3 --- /dev/null +++ b/cedet-bzr/trunk/contrib/cedet-contrib-load.el @@ -0,0 +1,50 @@ +;;; cedet-contrib-load.el --- Autoload definitions for cedet contrib + +;;; Copyright (C) 2004, 2012, 2013 Eric Ludlam + +;; Author: Eric Ludlam + +;; CEDET 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., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; Initialize CEDET's contributed libraries for all supported +;; conditions. + +;;; Code: +;; + +;;; Contrib autoloads +;; +(unless (featurep 'cedet-devel-load) + (error "CEDET must be loaded to use CEDET's contrib utilities.")) + +;; This file must be in the same directory as all the files that +;; it is preparing for use. +(let ((CEDETCONTRIBDIR (file-name-directory + (or load-file-name (buffer-file-name))))) + + (add-to-list 'load-path CEDETCONTRIBDIR) + + (message "Installing CEDET contrib packages in %s" CEDETCONTRIBDIR) + +) + +(load "contrib-loaddefs" nil t) + +(provide 'cedet-contrib-load) + +;;; cedet-contrib-load.el ends here diff --git a/cedet-bzr/trunk/contrib/cedet-contrib.el b/cedet-bzr/trunk/contrib/cedet-contrib.el new file mode 100644 index 0000000..d022329 --- /dev/null +++ b/cedet-bzr/trunk/contrib/cedet-contrib.el @@ -0,0 +1,34 @@ +;;; cedet-contrib.el --- Setup CEDET's contrib environment + +;;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Eric Ludlam + +;; Author: Eric Ludlam + +(defvar cedet-contrib-version "1.2" + "Current version of contributed libraries.") + +;; CEDET 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., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; Setup environment of CEDET's contributed libraries. + +;;; Code: +;; + +(provide 'cedet-contrib) + +;;; cedet-contrib.el ends here diff --git a/cedet-bzr/trunk/contrib/contrib-loaddefs.el b/cedet-bzr/trunk/contrib/contrib-loaddefs.el new file mode 100644 index 0000000..b6d2a0b --- /dev/null +++ b/cedet-bzr/trunk/contrib/contrib-loaddefs.el @@ -0,0 +1,125 @@ +;;; contrib-loaddefs.el --- automatically extracted autoloads +;; +;;; Code: + + +;;;### (autoloads (eassist-list-methods eassist-switch-h-cpp) "eassist" +;;;;;; "eassist.el" (20790 39373 0 0)) +;;; Generated autoloads from eassist.el + +(defvar eassist-header-switches '(("h" "cpp" "cc" "c") ("hpp" "cpp" "cc") ("cpp" "h" "hpp") ("c" "h") ("C" "H") ("H" "C" "CPP" "CC") ("cc" "h" "hpp")) "\ +This variable defines possible switches for `eassist-switch-h-cpp' function. +Its format is list of (from . (to1 to2 to3...)) elements. From and toN are +strings which are extentions of the files.") + +(autoload 'eassist-switch-h-cpp "eassist" "\ +Switch header and body file according to `eassist-header-switches' var. +The current buffer's file name extention is searched in +`eassist-header-switches' variable to find out extention for file's counterpart, +for example *.hpp <--> *.cpp. + +\(fn)" t nil) + +(autoload 'eassist-list-methods "eassist" "\ +Show method/function list of current buffer in a newly created buffer. +This function is recommended to be bound to some convinient hotkey. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads nil "ede-gnustep" "ede-gnustep.el" (20624 54762 +;;;;;; 0 0)) +;;; Generated autoloads from ede-gnustep.el + +(ede-add-project-autoload (ede-project-autoload "edegnustep" :name "GNUstep-Make" :file 'ede-gnustep :proj-file "ProjStep.ede" :load-type 'ede-step-load :class-sym 'ede-step-project)) + +(ede-add-project-autoload (ede-project-autoload "gnustep-root" :name "GNUstep-make Top Most" :file 'ede-gnustep :proj-file "RootProjStep.ede" :initializers '(:project-mode scanner) :load-type 'ede-gnustep-load :class-sym 'ede-step-project)) + +(ede-add-project-autoload (ede-project-autoload "gnustep" :name "GNUstep-Make in scanner mode" :file 'ede-gnustep :proj-file "ProjStep.ede" :initializers '(:project-mode scanner) :load-type 'ede-gnustep-load :class-sym 'ede-step-project)) + +(add-to-list 'auto-mode-alist '("\\(Root\\)?ProjStep\\.ede" . emacs-lisp-mode)) + +;;;*** + +;;;### (autoloads (semantic-tag-folding-mode global-semantic-tag-folding-mode +;;;;;; global-semantic-tag-folding-mode) "semantic-tag-folding" +;;;;;; "semantic-tag-folding.el" (20786 45916 0 0)) +;;; Generated autoloads from semantic-tag-folding.el + +(defvar global-semantic-tag-folding-mode nil "\ +*If non-nil enable global use of variable `semantic-tag-folding-mode'. +With this mode enabled, a new folding decoration mode is added. +Clicking on a + or - in the fringe will fold that tag.") + +(custom-autoload 'global-semantic-tag-folding-mode "semantic-tag-folding" nil) + +(defvar global-semantic-tag-folding-mode nil "\ +Non-nil if Global-Semantic-Tag-Folding mode is enabled. +See the command `global-semantic-tag-folding-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `global-semantic-tag-folding-mode'.") + +(custom-autoload 'global-semantic-tag-folding-mode "semantic-tag-folding" nil) + +(autoload 'global-semantic-tag-folding-mode "semantic-tag-folding" "\ +Toggle global use of option `semantic-tag-folding-mode'. +If ARG is positive or nil, enable, if it is negative, disable. + +\(fn &optional ARG)" t nil) + +(autoload 'semantic-tag-folding-mode "semantic-tag-folding" "\ +Minor mode mark semantic tags for folding. +This mode will display +/- icons in the fringe. Clicking on them +will fold the current tag. +With prefix argument ARG, turn on if positive, otherwise off. The +minor mode can be turned on only if semantic feature is available and +the current buffer was set up for parsing. Return non-nil if the +minor mode is enabled. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (wisent-csharp-default-setup) "wisent-csharp" "wisent-csharp.el" +;;;;;; (20580 44388 0 0)) +;;; Generated autoloads from wisent-csharp.el + +(autoload 'wisent-csharp-default-setup "wisent-csharp" "\ + + +\(fn)" nil nil) + +(add-hook 'csharp-mode-hook #'wisent-csharp-default-setup) + +;;;*** + +;;;### (autoloads (wisent-php-default-setup) "wisent-php" "wisent-php.el" +;;;;;; (20580 44388 0 0)) +;;; Generated autoloads from wisent-php.el + +(autoload 'wisent-php-default-setup "wisent-php" "\ +Hook run to setup Semantic in `php-mode'. +Use the alternate LALR(1) parser. + +\(fn)" nil nil) + +(add-hook 'php-mode-hook #'wisent-php-default-setup) + +;;;*** + +;;;### (autoloads nil nil ("cedet-contrib-load.el" "cedet-contrib.el" +;;;;;; "semantic-ectag-scala.el" "wisent-ruby.el") (20828 18085 +;;;;;; 147566 912000)) + +;;;*** + +(provide 'contrib-loaddefs) +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; coding: utf-8 +;; End: +;;; contrib-loaddefs.el ends here diff --git a/cedet-bzr/trunk/contrib/eassist.el b/cedet-bzr/trunk/contrib/eassist.el new file mode 100644 index 0000000..c864d5b --- /dev/null +++ b/cedet-bzr/trunk/contrib/eassist.el @@ -0,0 +1,392 @@ +;;; eassist.el --- EmacsAssist, C/C++/Java/Python/ELisp method/function navigator. + +;; Copyright (C) 2006, 2007, 2010 Anton V. Belyaev +;; Author: Anton V. Belyaev + +;; This file is *NOT* part of GNU Emacs. + +;; 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 + +;; Version: 0.9 +;; CEDET CVS Version: $Id: eassist.el,v 1.7 2010-02-08 23:29:59 zappo Exp $ + +;; Compatibility: Emacs 22 or 23, CEDET 1.0pre4 + +;;; Commentary: + +;; Contains some useful functions features for C/C++ developers similar to +;; those from VisualAssist. Remember that convenient M-o, M-g and M-m? + +;; 1) Method navigation. +;; When eassist-list-methods called when c/c++ body file buffer is active +;; a new buffer is shown, containing list of methods and functions in the +;; format: return type, class, method name. You can select the method +;; moving to its line and press ENTER to jump to the method. You also can +;; type a string in the buffer and method list will be reduced to those +;; which contain the string as a substring. Nice highlight is implemented. +;; This function is recommended to be bound to M-m in c-mode. + +;; 2) Header <-> Body file switch. +;; You can easily switch between body (c, cpp, cc...) and its corresponding +;; header file (h, hpp...) using eassist-switch-h-cpp. The counterpart file +;; is first searched in opened buffers and if there is no match the file is +;; searched in the same directory. You can adjust body to header correspondence +;; customizing eassist-header-switches variable. +;; This function is recommended to be bound to M-o in c-mode. + +;; EmacsAssist uses Semantic (http://cedet.sourceforge.net/semantic.shtml) +;; EmacsAssist is a part of CEDET project (current CVS version of CEDET contains +;; EmacsAssist) +;; EmacsAssist works with current (22) and development (23) versions of Emacs and +;; does not work with version 21. +;; EmacsAssist works with CEDET 1.0pre4 and subsequent CVS versions of CEDET. + +;; EmacsAssist has a page at Emacs Wiki, where you can always find the latest +;; version: http://www.emacswiki.org/cgi-bin/wiki/EAssist + +;; Usage: + +;; 1) Install CEDET package for Emacs (if you don't have CEDET already). +;; 2) Add convenient keymaps for fast EmacsAssist calls in c-mode and (or) python-mode +;; and for lisp: +;; +;; (defun my-c-mode-common-hook () +;; (define-key c-mode-base-map (kbd "M-o") 'eassist-switch-h-cpp) +;; (define-key c-mode-base-map (kbd "M-m") 'eassist-list-methods)) +;; (add-hook 'c-mode-common-hook 'my-c-mode-common-hook) +;; +;; (defun my-python-mode-hook () +;; (define-key python-mode-map (kbd "M-m") 'eassist-list-methods)) +;; (add-hook 'python-mode-hook 'my-python-mode-hook) +;; +;; (define-key lisp-mode-shared-map (kbd "M-m") 'eassist-list-methods) +;; +;; 3) Open any C++ file with class definition, press M-m. Try to type +;; any method name. +;; 4) Open any .cpp file. Press M-o. If there is .h or .hpp file in the +;; same folder, it will be opened. + +;;; Changelog: + +;; 27 mar 2006 -- v0.1 Initial version created. +;; 29 mar 2006 -- v0.2 Code is more readable now. +;; Thanks to Thien-Thi Nguyen for code review! +;; 17 apr 2006 -- v0.3 Added Java and Python support. Coloring based on faces. +;; Multiple string matching. +;; 12 sep 2006 -- v0.4 Fixed ELisp code handling. Reduced string matching to function name only. +;; 23 feb 2007 -- v0.5 Added (require 'semantic) to fix possible issues. +;; Thanks to Damien Deville for the patch. +;; 13 mar 2007 -- v0.6 Added documentation to functions. +;; Thanks to Eric Ludlam for CHECKDOC tool suggestion. +;; 23 jun 2007 -- v0.7 EAssist is now a part of CEDET project. +;; Added autoload cookies for some vars and funs. +;; 29 aug 2007 -- v0.8 "M-o" function now tries first to use already opened buffers +;; and if there are no counterparts, tries to search them in the +;; current directory. +;; Thanks to Alekseenko Dimitry for great feature suggestion. +;; 23 feb 2008 -- v0.9 "M-m" buffer comes up with current function highlighted. +;; Thanks to Christoph Conrad for great suggestions and patches. + +;;; Code: + +(eval-when-compile + (require 'cl)) + +(require 'semantic) +(require 'semantic/find) + +;; ================================== My STRING utils ======================== +(defun eassist-string-without-last (string n) + "This function truncates from the STRING last N characters." + (substring string 0 (max 0(- (length string) n)))) + +(defun eassist-string-ends-with (string end) + "Check whether STRING ends with END substring." + (string= end (substring string (- (length end))))) +;; ================================== My STRING utils end ==================== + +;; ================================== CPP-H switch =========================== +;;;###autoload +(defvar eassist-header-switches '(("h" . ("cpp" "cc" "c")) + ("hpp" . ("cpp" "cc")) + ("cpp" . ("h" "hpp")) + ("c" . ("h")) + ("C" . ("H")) + ("H" . ("C" "CPP" "CC")) + ("cc" . ("h" "hpp"))) + "This variable defines possible switches for `eassist-switch-h-cpp' function. +Its format is list of (from . (to1 to2 to3...)) elements. From and toN are +strings which are extentions of the files.") + +;;;###autoload +(defun eassist-switch-h-cpp () + "Switch header and body file according to `eassist-header-switches' var. +The current buffer's file name extention is searched in +`eassist-header-switches' variable to find out extention for file's counterpart, +for example *.hpp <--> *.cpp." + (interactive) + (let* ((ext (file-name-extension (buffer-file-name))) + (base-name (eassist-string-without-last (buffer-name) (length ext))) + (base-path (eassist-string-without-last (buffer-file-name) (length ext))) + (count-ext (cdr (find-if (lambda (i) (string= (car i) ext)) eassist-header-switches)))) + (cond + (count-ext + (unless + (or + (loop for b in (mapcar (lambda (i) (concat base-name i)) count-ext) + when (bufferp (get-buffer b)) return + (if (get-buffer-window b) + (switch-to-buffer-other-window b) + (if (get-buffer-window b t) + (switch-to-buffer-other-frame b) + (switch-to-buffer b)))) + (loop for c in (mapcar (lambda (count-ext) (concat base-path count-ext)) count-ext) + when (file-exists-p c) return (find-file c))) + (message "There is no corresponding pair (header or body) file."))) + (t + (message "It is not a header or body file! See eassist-header-switches variable."))))) +;; ================================== CPP-H switch end ========================= + +;; ================================== Method navigator ========================= +(defvar eassist-current-tag nil + "Current Semantic tag in source buffer.") +(defvar eassist-buffer nil + "Buffer used to selecting tags in EAssist.") +(defvar eassist-names-column nil + "Column used when selecting tags in EAssist.") +(defvar eassist-methods nil + "Collection of methods used when searching for current selection.") +(defvar eassist-actual-methods nil + "Collection of actual methods used when searching for current selection.") +(defvar eassist-search-string nil + "The current search string during a search.") +(defvar eassist-overlays nil + "List of active overlays.") + +(defun eassist-function-tags () + "Return all function tags from the current buffer using Semantic API. +The function first gets all toplevel function tags from the current buffer. +Then it searches for all toplevel type tags and gets all function tags that +are children to toplevel type tags. Secondlevel function (member) tags are +annotated (without side effect) with :parent attribute to have the same +structure as toplevel function tags." + (nconc + ;; for C++/C + (semantic-find-tags-by-class 'function (semantic-something-to-tag-table eassist-buffer)) + ;; for Java and Python: getting classes and then methods for each class. + ;; Adding parent property for each method, beacause semantic does not provide parents for + ;; methods which are inside body of the class. This is true for Java class methods, + ;; for C++ header definitions and for Python class methods. + (mapcan + (lambda (type) + (mapcar + (lambda (tag) (semantic-tag-put-attribute-no-side-effect tag :parent (semantic-tag-name type))) + (semantic-find-tags-by-class 'function (semantic-tag-type-members type)))) + (semantic-find-tags-by-class 'type (semantic-something-to-tag-table eassist-buffer))))) + +(defun eassist-car-if-list (thing) + "Return car of THING if it is a list or THING itself, if not." + (cond ((listp thing) (car thing)) + (t thing))) + +(defun eassist-function-string-triplet (f) + "Return a list of three strings, representing type, parent and name of tag F." + (list + (eassist-car-if-list (semantic-tag-type f)) + (semantic-tag-function-parent f) + (semantic-tag-name f))) + +(defun eassist-format-triplets (f) + "Return a list of formatted (whitespaces, faces, delimeters) methods/function. +F - list of triplets of tag type, parent and name." + (let ((return-width (reduce 'max (mapcar 'length (mapcar 'car f)) :initial-value 0)) + (class-width (reduce 'max (mapcar 'length (mapcar 'cadr f)) :initial-value 0)) + (name-width (reduce 'max (mapcar 'length (mapcar 'caddr f)) :initial-value 0))) + (setq eassist-names-column (+ return-width class-width 4)) + (mapcar + (lambda (tri) + (let ((retrn (car tri)) + (class (cadr tri)) + (name (caddr tri))) + (setq retrn (if retrn (propertize retrn 'face 'font-lock-type-face) "")) + (if class + (setq class (propertize class 'face 'font-lock-type-face))) + (setq name (propertize name 'face 'font-lock-function-name-face)) + (cond + (class (format (format "%%%ds %%%ds :: %%s\n" return-width class-width) retrn class name)) + (t (format (format "%%%ds %%%ds %%s\n" return-width class-width) retrn "" name))))) + f))) + +;;;###autoload +(defun eassist-list-methods () + "Show method/function list of current buffer in a newly created buffer. +This function is recommended to be bound to some convinient hotkey." + (interactive) + (setq eassist-buffer (current-buffer)) + (setq eassist-current-tag (semantic-current-tag)) + (switch-to-buffer (get-buffer-create (concat (buffer-name (current-buffer)) " method list")) t) + (eassist-mode)) + +(defun eassist-jump-to-method () + "Jump to a method/function, corresponding the current line in method buffer. +When called standing on a line of method/function list, it closes the list +buffer and sets the point to a method/function, corresponding the line." + (interactive) + (let ((method-record (nth (1- (line-number-at-pos)) eassist-actual-methods))) + (cond + (method-record + (kill-buffer (current-buffer)) + (switch-to-buffer eassist-buffer t) + (goto-char (eassist-method-position method-record)) + (recenter)) + (t (message "The line does not contain method description!"))))) + +(defun eassist-matches-all (string substrings) + "Return non-nil if STRING contain each of SUBSTRINGS as a substring." + (reduce (lambda (prev part) (and prev (string-match part string))) substrings :initial-value t)) + +(defun eassist-search-string-updated () + "Update method/function list according to search string." + (message eassist-search-string) + (setq eassist-actual-methods + (remove-if-not + (lambda (elt) (eassist-matches-all (eassist-method-name elt) (split-string eassist-search-string))) + eassist-methods)) + (erase-buffer) + (dolist (i eassist-overlays) + (delete-overlay i)) + (setq eassist-overlays nil) + (loop for i in (mapcar 'eassist-method-full-line eassist-actual-methods) + with pos = 1 + with strings = (split-string eassist-search-string) + do + (insert i) + (dolist (j strings) + (let ((p (string-match j i eassist-names-column))) + (when p + (push (make-overlay (+ pos p) (+ pos p (length j))) eassist-overlays) + (overlay-put (car eassist-overlays) 'face '(background-color . "yellow"))))) + (setq pos (+ pos (length i)))) + (goto-line (/ (count-lines (point-min) (point-max)) 2))) + +(defun eassist-key-pressed (key) + "Called when KEY is pressed." + (setq eassist-search-string (concat eassist-search-string (char-to-string key))) + (eassist-search-string-updated)) + +(defun eassist-backspace-pressed () + "Called when Backspace is pressed." + (interactive) + (setq eassist-search-string (eassist-string-without-last eassist-search-string 1)) + (eassist-search-string-updated)) + +(defun eassist-make-key-function (key) + "Return a function for KEY." + `(lambda () (interactive) (eassist-key-pressed ,key))) + +(defun eassist-key-itself (map key) + "Maps in the MAP KEY to its function." + (define-key map (char-to-string key) (eassist-make-key-function key))) + +(defun eassist-escape () + "Kill method list buffer." + (interactive) + (kill-buffer (current-buffer)) + (switch-to-buffer eassist-buffer)) + +(defvar eassist-mode-map + (let ((map (make-sparse-keymap))) + (suppress-keymap map) + (do ((k (string-to-char "a") (+ 1 k))) ((> k (string-to-char "z"))) + (define-key + map + (read-kbd-macro (char-to-string k)) + (eassist-make-key-function k))) + (do ((k (string-to-char "A") (+ 1 k))) ((> k (string-to-char "Z"))) + (define-key + map + (read-kbd-macro (char-to-string k)) + (eassist-make-key-function k))) + (do ((k (string-to-char "0") (+ 1 k))) ((> k (string-to-char "9"))) + (define-key + map + (read-kbd-macro (char-to-string k)) + (eassist-make-key-function k))) + (dolist (k (string-to-list "=><&!")) + (define-key + map + (read-kbd-macro (char-to-string k)) + (eassist-make-key-function k))) + + (eassist-key-itself map (string-to-char " ")) + (eassist-key-itself map (string-to-char "_")) + + (define-key map (kbd "") 'eassist-jump-to-method) + (define-key map (kbd "") 'eassist-backspace-pressed) + (define-key map (kbd "") 'eassist-escape) + map) + "Keymap for `eassist-mode'.") + +(defstruct eassist-method + (full-line) + (name) + (position) + (tag)) + +(defun eassist-mode-init () + "Initialize method/function list mode." + (make-local-variable 'eassist-search-string) ;; current method search string + (make-local-variable 'eassist-methods) ;; list of eassist-method structures + (make-local-variable 'eassist-actual-methods) ;; subset of eassist-methods that contain eassist-search string in the name string + (make-local-variable 'eassist-names-column) ;; this is the column where method name fields starts + (make-local-variable 'eassist-overlays) ;; overlays used to highligh search string matches in method names + (setq eassist-overlays nil) + (setq eassist-search-string "") + + (setq eassist-methods + (let* ((method-tags (eassist-function-tags)) + (method-triplets (mapcar 'eassist-function-string-triplet method-tags))) + (mapcar* '(lambda (full-line name position tag) + (make-eassist-method :full-line full-line :name name :position position :tag tag)) + (eassist-format-triplets method-triplets) + (mapcar 'caddr method-triplets) + (mapcar 'semantic-tag-start method-tags) + method-tags))) + (eassist-search-string-updated) + + ;; Set current line corresponding to the current function/method if any + (let ((line (position-if + (lambda (item) (eq eassist-current-tag (eassist-method-tag item))) + eassist-methods))) + (when line + (goto-line (1+ line)))) + + ;;(setq b1 (current-buffer)) + ;;(setq ov1 (make-overlay 1 30 b1)) + ;;(overlay-put ov1 'face '(background-color . "yellow")) + (hl-line-mode)) + +(define-derived-mode eassist-mode nil "Eassist methods" + "EmacsAssist method selection mode. + \\{eassist-mode-map} + Turning on Text mode runs the normal hook `eassist-mode-hook'." + (eassist-mode-init)) + +;; ================================== Method navigator end ====================== + +(provide 'eassist) + +;;; eassist.el ends here diff --git a/cedet-bzr/trunk/contrib/ede-gnustep.el b/cedet-bzr/trunk/contrib/ede-gnustep.el new file mode 100644 index 0000000..c14ba52 --- /dev/null +++ b/cedet-bzr/trunk/contrib/ede-gnustep.el @@ -0,0 +1,1295 @@ +;;; ede-gnustep.el --- EDE GNUstep Project file driver + +;;; Copyright (C) 2008,2009,2010,2012 Marco Bardelli + +;; Author: Marco (Bj) Bardelli +;; Keywords: project, make, gnustep, gnustep-make +;; RCS: $Id: ede-gnustep.el,v 1.13 2010-06-12 00:44:16 zappo Exp $ + +;; This software 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., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; GNUstep-Make is a system (a set of makefiles) to compile various object. +;; To write a functional GNUmakefile, we haven't to write any rule, +;; but only set some variables. + +;; #A tipical GNUmakefile to work with GNUstep-Make: + +;; ifeq ($(GNUSTEP_MAKEFILES),) +;; GNUSTEP_MAKEFILES := $(shell gnustep-config \ +;; --variable=GNUSTEP_MAKEFILES 2> /dev/null) +;; endif +;; INSTALLATION_DOMAIN = LOCAL +;; include $(GNUSTEP_MAKEFILES)/common.make +;; TOOL_NAME = xxx +;; APP_NAME = aaa +;; LIBRARY_NAME = lll + +;; xxx_C_FILES = xxx.c +;; aaa_OBJC_FILES = aaa.m +;; lll_C_FILES = lll.c +;; lll_OBJC_FILES = lll.m + +;; ... + +;; -include GNUmakefile.preamble +;; include $(GNUSTEP_MAKEFILES)/tool.make +;; include $(GNUSTEP_MAKEFILES)/application.make +;; include $(GNUSTEP_MAKEFILES)/library.make +;; -include GNUmakefile.postamble + +;; # end of Makefile +;; in this example we define three targets (xxx,aaa,lll) of several types. +;; various variables and rules should be added in preamble and postamble +;; respectively, for convention. +;; +;; I focused on the method `ede-proj-makefile-create' to write a working +;; GNUmakefile. + +;; Provide a class `ede-step-project' child of ede-project, it has a +;; :project-mode attribute for 'scanner or 'writer mode. +;; difference is in direction of generation +;; scanner: parse *makefile* to write *project file* +;; writer : parse *project file* to write *makefile* + +;; To show what's TODO +;; M-x occur XXX\|todo\|TODO\|fix\|FIX + + +(eval-and-compile + (require 'ede) + (require 'ede/proj) + (require 'semantic/edit) + ;; to easy parsing of GNUmakefiles + (require 'semantic) + (require 'semantic/find) + (require 'semantic/tag-file) + ) + +(unless (fboundp 'string-file-contents) + (defun string-file-contents (file) + "Get the plain contents of FILE." + (with-temp-buffer + (insert-file-contents file) + (buffer-substring-no-properties (point-min)(point-max)))) + ) + + + +;;; Class Definitions: +;; Source + +(defvar ede-source-gnustep-objc + (ede-sourcecode "ede-gnustep-source-objc" + :name "GNUsetp ObjC" + :sourcepattern "\\.m$" + :auxsourcepattern "\\.h$" + :garbagepattern '("*.o" "obj/*")) + "Objective-C source code definition (for using with GNUstep-make).") + +(defvar ede-source-header-gnustep-objc + (ede-sourcecode "ede-gnustep-source-header-objc" + :name "GNUsetp Header ObjC" + :sourcepattern "\\.h$" +;; :auxsourcepattern "\\.h$" + :garbagepattern nil) + "Objective-C source code definition (for using with GNUstep-make).") + +(defvar ede-source-gnustep-c + (ede-sourcecode "ede-gnustep-source-c" + :name "GNUsetp C" + :sourcepattern "\\.c$" + :auxsourcepattern "\\.h$" + :garbagepattern '("*.o" "obj/*")) + "C source code definition (for using with GNUstep-make).") + +(defvar ede-source-header-gnustep-c + (ede-sourcecode "ede-gnustep-source-header-c" + :name "GNUsetp Header C" + :sourcepattern "\\.h$" +;; :auxsourcepattern "\\.h$" + :garbagepattern nil) + "C source code definition (for using with GNUstep-make).") + +;; XXX @todo sources for C++ and Objective-C++ + +(defvar ede-source-gnustep-texi + (ede-sourcecode "ede-gnustep-source-texi" + :name "GNUsetp Texinfo" + :sourcepattern "\\.texi$" +; :auxsourcepattern "\\.h$" + :garbagepattern '("*.pdf" "*.info" "*.html")) + "Texinfo source definition (for using with GNUstep-make).") + + +;; Target +;(defclass ede-step-target (ede-proj-target) ;; may be don't need +(defclass ede-step-target (ede-target) + ((makefile :initarg :makefile ;;:initform "GNUmakefile" + :type string + :custom string + :label "Parent Makefile" + :group make + :documentation "File name of generated Makefile.") + (type :initarg :type + :initform ctool + :type symbol + :custom (choice (const ctool)(const tool) + (const library)(const clibrary) + (const application)(const documentation) + (const framework)(const bundle) + (const subproject)) + :label "Target Type" + :group make + :documentation "Type of GNUstep-Make target.") + (include-dirs :initarg :include-dirs + :initform nil + :type list + :custom (choice (const :tag "None" nil) + (repeat + (string :tag "Include dirs cpp flags"))) + :label "Include Dirs -I flags" + :group make + :documentation "Include directories like cpp flags -I. +Include some dir via the -I preprocessor flag, for this target.") + (auxsource :initarg :auxsource + :initform nil + :type list + :custom (repeat (string :tag "File")) + :label "Auxiliary Source Files" + :group (default source) + :documentation "Auxiliary source files included in this target. +Each of these is considered equivalent to a source file, but it is not +distributed, and each should have a corresponding rule to build it.") + (dirty :initform nil + :type boolean + :documentation "Non-nil when generated files needs updating.") + ) +"Abstract class for ede-step targets.") + +(defclass ede-step-target-ctool (ede-step-target) + ((sourcetype :initform '(ede-source-gnustep-c + ede-source-header-gnustep-c)) + (type :initform 'ctool) + (cflags :initarg :cflags + :initform nil + :type list + :group make + :custom (repeat (string :tag "Compiler Flags"))) + (ldflags :initarg :ldflags + :initform nil + :type list + :group make + :custom (repeat (string :tag "Linker Flags")))) + "Class for CTool targets.") + +(defclass ede-step-target-tool (ede-step-target) + ((sourcetype :initform '(ede-source-gnustep-objc + ede-source-gnustep-c + ede-source-header-gnustep-c + ede-source-header-gnustep-objc)) + (type :initform 'tool) + (cflags :initarg :cflags + :initform nil + :type list + :group make + :custom (repeat (string :tag "Compiler Flags"))) + (ldflags :initarg :ldflags + :initform nil + :type list + :group make + :custom (repeat (string :tag "Linker Flags")))) + "Class for Tool targets.") + +;; FIX XXX : _LIBS_DEPEND +(defclass ede-step-target-clibrary (ede-step-target) + ((sourcetype :initform '(ede-source-gnustep-c + ede-source-header-gnustep-c)) + (type :initform 'clibrary) +;;; (header-install-dir :initarg :header-install-dir +;;; :initform "" +;;; :type string +;;; :group make +;;; :custom string +;;; :label "Header Installation Directory") + (cflags :initarg :cflags + :initform nil + :type list + :group make + :custom (repeat (string :tag "Compiler Flags"))) + (ldflags :initarg :ldflags + :initform nil + :type list + :group make + :custom (repeat (string :tag "Linker Flags")))) + "Class for CLib targets.") + +(defclass ede-step-target-library (ede-step-target) + ((sourcetype :initform '(ede-source-gnustep-objc + ede-source-gnustep-c + ede-source-header-gnustep-objc + ede-source-header-gnustep-c)) + (type :initform 'library) +;;; (header-install-dir :initarg :header-install-dir +;;; :initform "" +;;; :type string +;;; :group make +;;; :custom string +;;; :label "Header Installation Directory") + (cflags :initarg :cflags + :initform nil + :type list + :group make + :custom (repeat (string :tag "Compiler Flags"))) + (ldflags :initarg :ldflags + :initform nil + :type list + :group make + :custom (repeat (string :tag "Linker Flags")))) + "Class for Lib targets.") + +(defclass ede-step-target-application (ede-step-target) + ((sourcetype :initform '(ede-source-gnustep-objc + ede-source-gnustep-c + ede-source-header-gnustep-objc + ede-source-header-gnustep-c)) + (type :initform 'application) + (cflags :initarg :cflags + :initform nil + :type list + :group make + :custom (repeat (string :tag "Compiler Flags"))) + (ldflags :initarg :ldflags + :initform nil + :type list + :group make + :custom (repeat (string :tag "Linker Flags")))) + "Class for App targets.") + +(defclass ede-step-target-documentation (ede-step-target) + ((sourcetype :initform '(ede-source-gnustep-texi)) + (type :initform 'documentation)) + "Class for Doc targets.") + +;; ;; (defclass ede-step-target-subproject (ede-step-target) +;; ;; () +;; ;; "Class for Subproject targets.") +;; (defclass ede-step-target-aggregate (ede-target) +;; () ;; this allow the parent to track subprojects in targets. +;; "Dummy class for aggregate target, really a subprojet.") +;; (defmethod project-rescan ((this ede-step-target-aggregate) &optional unused) +;; "A dummy method. Do nothing." nil) + +;;; XXX FIX: add files.make for inclusion (aka tool.make) +(defvar ede-step-target-alist + '(("ctool" ede-step-target-ctool "CTOOL_NAME") + ("objc" ede-step-target-tool "OBJC_PROGRAM_NAME") + ("tool" ede-step-target-tool "TOOL_NAME") + ("test-tool" ede-step-target-tool "TEST_TOOL_NAME") + ("app" ede-step-target-application "APP_NAME") + ("test-app" ede-step-target-application "TEST_APP_NAME") + ("doc" ede-step-target-documentation "DOCUMENT_NAME") + ("clib" ede-step-target-clibrary "CLIBRARY_NAME") + ("lib" ede-step-target-library "LIBRARY_NAME") + ("framework" ede-step-target-library "FRAMEWORK_NAME") + ("subproject" ede-step-project "SUBPROJECTS") + ) + "Alist of names to class target-types available by GNUstep-Make.") + +(defun ede-step-register-target (name class &optional macro) + "Register a new target class with NAME and class symbol CLASS. +This enables the creation of your target type." + (let ((a (assoc name ede-step-target-alist))) + (if a + (setcdr a (list class macro)) + (setq ede-step-target-alist + (cons (cons name class) ede-step-target-alist))))) + +;(defcustom ede-gnustep-project-mode-default 'scanner) + +(defclass ede-step-project (ede-project) +;(defclass ede-step-project (ede-proj-project) ;; to mix several project types, but don't solve ... + ((project-mode :initarg :project-mode :initform writer + :type symbol + :custom (choice (const :tag "Scanner Mode" scanner) + (const :tag "Writer Mode" writer)) + :group (settings) + :documentation "In scanner mode, `ede-proj-makefile-create' +is useless, the project-rescan methods change their behavoir to scan +GNUmakefiles, and possibly a ProjStep.ede could be created. In writer mode, +the behavoir is the same that in any ede-proj-project, scan ProjStep.ede to +write Makefiles") + + (init-variables + :initarg :init-variables + :initform nil + :type list + :custom (repeat (cons (string :tag "Name X") + (string :tag "Value"))) + :group (make settings) + :documentation "Variables to set in this Makefile, at top of file.") + + (additional-variables + :initarg :additional-variables + :initform nil + :type (or null list) + :custom (repeat + (cons (choice (const :tag "None" nil) + (string :tag "GNU Makefile preamble")) + (repeat (cons (string :tag "Name") + (string :tag "Value"))))) + :label "Additional variables" + :group make + :documentation + "Arbitrary variables needed from this project. +It is safe to leave this blank.") + (additional-rules + :initarg :additional-rules + :initform nil + :type (or null list) + :custom (repeat + (cons (choice (const :tag "None" nil) + (string :tag "GNU Makefile postamble")) + (repeat (object :objecttype ede-makefile-rule)))) + :label "Additional Rules" + :group make + :documentation + "Arbitrary rules and dependencies needed to make this target. +It is safe to leave this blank.") + + (menu :initform + ( + [ "Regenerate Makefiles" ede-proj-regenerate t ] + [ "Upload Distribution" ede-upload-distribution t ] + ) + ) + + (installation-domain :initarg :installation-domain + :initform user + :type symbol + :custom (choice (const user) + (const local) + ;(const network) + (const system)) + :group (default make settings) + :documentation "Installation domain specification. +The variable GNUSTEP_INSTALLATION_DOMAIN is set at this value.") + (preamble :initarg :preamble + :initform '("GNUmakefile.preamble") + :type (or null list) + :custom (repeat (string :tag "Makefile")) + :group make + :documentation "The auxiliary makefile for additional variables. +Included just before the specific target files.") + (included-makefiles :initarg :included-makefiles + :type (or null list) + :custom (repeat (string :tag "Makefile")) + :group make + :documentation "The auxiliary makefile for targets rules. +Included common and specific target files.") + (postamble :initarg :postamble + :initform '("GNUmakefile.postamble") + :type (or null list) + :custom (repeat (string :tag "Makefile")) + :group make + :documentation "The auxiliary makefile for additional rules. +Included just after the specific target files.") + + (metasubproject + :initarg :metasubproject + :initform nil + :type boolean + :custom boolean + :group (default settings) + :documentation + "Non-nil if this is a metasubproject. +Usually, a subproject is determined by a parent project. If multiple top level +projects are grouped into a large project not maintained by EDE, then you need +to set this to non-nil. The only effect is that the `dist' rule will then avoid +making a tar file.") + ) + "The EDE-STEP project definition class.") + +;;; Code: +(defun ede-gnustep-load (proj &optional rootproj) + "Load project from the topmost GNUmakefile in PROJ directory." + (let* ((mf (ede-gnustep-get-valid-makefile + (expand-file-name proj rootproj))) + (dir (directory-file-name + (or (file-name-directory (or mf "")) ""))) + pkgname pkgversion proj-obj prj-file) + + ;; check for the file project root. + ;; this allow to touch a RootProjStep.ede and `M-x ede' + ;; to load a root gnustep package. + (if (file-exists-p (expand-file-name "RootProjStep.ede" dir)) + (setq prj-file "RootProjStep.ede") + (setq prj-file "ProjStep.ede")) + (and mf + ;; To FIX, maybe VCS_MODULE ??? + (setq pkgname + (or + (with-temp-buffer + (insert-file-contents mf) + (goto-char (point-min)) + (car (makefile-macro-file-list "PACKAGE_NAME")) + ;; (ede-gnustep-semantic-value-for-tag + ;; (car (semantic-find-tags-by-name + ;; "PACKAGE_NAME" + ;; (semantic-find-tags-by-class + ;; 'variable (current-buffer))))) + ) + (file-name-nondirectory + (directory-file-name dir)))) + (setq pkgversion + (or + (with-temp-buffer + (insert-file-contents mf) + (goto-char (point-min)) + (or + (car (makefile-macro-file-list "PACKAGE_VERSION")) + ;; (ede-gnustep-semantic-value-for-tag + ;; (car (semantic-find-tags-by-name + ;; "PACKAGE_VERSION" + ;; (semantic-find-tags-by-class + ;; 'variable (current-buffer))))) + (car (makefile-macro-file-list "VERSION")))) + ;; (ede-gnustep-semantic-value-for-tag + ;; (car (semantic-find-tags-by-name + ;; "VERSION" + ;; (semantic-find-tags-by-class + ;; 'variable (current-buffer))))))) + "1.0")) + + ;; use dirinode to check for existence + (unless (setq proj-obj + (object-assoc (ede--inode-for-dir dir) + 'dirinode ede-projects)) + (setq proj-obj + (ede-step-project pkgname :name pkgname + :version pkgversion + :project-mode 'scanner + :directory (file-name-as-directory dir) + :file (expand-file-name prj-file dir) +; :makefile (file-name-nondirectory mf) + ;; bind :targets + :targets nil)) + (oset proj-obj :project-mode 'scanner))) + (when (ede-step-project-p proj-obj) + (project-rescan proj-obj) + (ede-step-save proj-obj)) + proj-obj)) + +;(defalias 'ede-proj-load 'ede-step-load) +(defun ede-step-load (project &optional rootproj) + "Load a project file from PROJECT directory. +If optional ROOTPROJ is provided then ROOTPROJ is the root project +for the tree being read in. If ROOTPROJ is nil, then assume that +the PROJECT being read in is the root project." + (save-excursion + (let ((ret nil) + (prj-file (car (directory-files project nil "\\(Root\\)?ProjStep.ede" nil))) + (subdirs (directory-files project nil "[^.].*" nil))) + (set-buffer (get-buffer-create " *tmp proj read*")) + (unwind-protect + (progn + (insert-file-contents (expand-file-name prj-file project) + nil nil nil t) + (goto-char (point-min)) + (setq ret (read (current-buffer))) + (if (not (eq (car ret) 'ede-step-project)) + (error "Corrupt project file")) + (setq ret (eval ret)) + (oset ret file (concat project "ProjStep.ede")) + (oset ret directory project) + (oset ret rootproject rootproj) + ) + (kill-buffer " *tmp proj read*")) + (while subdirs + (let ((sd (file-name-as-directory + (expand-file-name (car subdirs) project)))) + (if (and (file-directory-p sd) + (ede-directory-project-p sd)) + (oset ret subproj + (cons (ede-step-load sd (or rootproj ret)) + (oref ret subproj)))) + (setq subdirs (cdr subdirs)))) + (if (eq 'scanner (oref ret :project-mode)) (project-rescan ret)) + ret))) + +(defun ede-step-save (&optional project) + "Write out object PROJECT into its file." + (save-excursion + (if (not project) (setq project (ede-current-project))) + (let ((b (set-buffer (get-buffer-create " *tmp proj write*"))) + (cfn (oref project file))) + (unwind-protect + (save-excursion + (erase-buffer) + (let ((standard-output (current-buffer))) + (oset project file (file-name-nondirectory cfn)) + (object-write project ";; EDE project file.")) + (write-file cfn nil) + ) + ;; Restore the :file on exit. + (oset project file cfn) + (kill-buffer b))))) + +(defmethod ede-commit-local-variables ((proj ede-step-project)) + "Commit change to local variables in PROJ." + (ede-step-save proj)) + +(defmethod eieio-done-customizing ((proj ede-step-project)) + "Call this when a user finishes customizing this object. +Argument PROJ is the project to save." + (call-next-method) + (ede-step-save proj)) + +(defmethod eieio-done-customizing ((target ede-step-target)) + "Call this when a user finishes customizing this object. +Argument TARGET is the project we are completing customization on." + (call-next-method) + (ede-step-save (ede-current-project))) + +(defmethod ede-commit-project ((proj ede-step-project)) + "Commit any change to PROJ to its file." + (ede-step-save proj)) + +(defmethod ede-buffer-mine ((this ede-step-project) buffer) + "Return t if object THIS lays claim to the file in BUFFER." + (let ((f (ede-convert-path this (buffer-file-name buffer)))) + (or (string= (file-name-nondirectory (oref this file)) f) + (string= (ede-proj-dist-makefile this) f) + (string-match "GNUmakefile\\(\\.in\\|\\.preamble\\|\\.postamble\\)?" f) + (string-match "Makefile\\(\\.\\(preamble\\|postamble\\)\\)?" f) + ))) + +(defmethod ede-buffer-mine ((this ede-step-target) buffer) + "Return t if object THIS lays claim to the file in BUFFER." + (or (call-next-method) + (ede-target-buffer-in-sourcelist this buffer (oref this auxsource)))) + + +;;; Makefile Creation +;; XXX @TODO to use better gnustep-make, using standard variables an standard rule {before,internal,after}-*:: +(defmethod ede-proj-makefile-create ((this ede-step-project) mfilename) + "Create a GNUmakefile for all Makefile targets in THIS. +MFILENAME is the makefile to generate." + (when (eq 'writer (oref this :project-mode)) + (let ((mt nil) tmp + (isdist (string= mfilename (ede-proj-dist-makefile this))) + (depth 0) + ) + ;; ;; Find out how deep this project is. + ;; (let ((tmp this)) + ;; (while (setq tmp (ede-parent-project tmp)) + ;; (setq depth (1+ depth)))) + ;; ;; Collect the targets that belong in a makefile. + ;; (mapcar + ;; (lambda (obj) + ;; (if (and (obj-of-class-p obj 'ede-step-target) + ;; (string= (oref obj makefile) mfilename)) + ;; (setq mt (cons obj mt)))) + ;; (oref this targets)) + ;; ;; Fix the order so things compile in the right direction. + ;; (setq mt (nreverse mt)) + ;; Add in the header part of the Makefile* + (save-excursion + (set-buffer (find-file-noselect mfilename)) + (goto-char (point-min)) + (if (and + (not (eobp)) + (not (looking-at "# Automatically Generated \\w+ by EDE."))) + (if (not (y-or-n-p (format "Really replace %s?" mfilename))) + (error "Not replacing Makefile.")) + (message "Replace EDE Makefile")) + (erase-buffer) + ;; Insert a giant pile of stuff that is common between + ;; one of our Makefiles, and a Makefile.in + (insert + "# Automatically Generated " (file-name-nondirectory mfilename) + " by EDE.\n" + "# For use with: gnustep-make" + "\n#\n" + "# DO NOT MODIFY THIS FILE OR YOUR CHANGES MAY BE LOST.\n" + "# EDE is the Emacs Development Environment.\n" + "# http://cedet.sourceforge.net/ede.shtml\n" + "# \n") + (insert "\nede_FILES=" (file-name-nondirectory (oref this file)) " " + (file-name-nondirectory (ede-proj-dist-makefile this)) "\n") + (insert "\n\n") + ;; Standard prologe in a GNUmakefile + (insert ;; init-variables of project + "ifeq ($(GNUSTEP_MAKEFILES),)\n" + " GNUSTEP_MAKEFILES := $(shell gnustep-config" + "--variable=GNUSTEP_MAKEFILES 2>/dev/null)\n" + "endif\n\n" + "include $(GNUSTEP_MAKEFILES)/common.make\n\n# Stuff\n") + + ;; FIX XXX package,vcs repository ... variables + ;; ... + ;; Just this project's targets variables + (ede-map-targets this + (lambda (tx) + (cond ((or (eq (oref tx type) 'ctool)(eq (oref tx type) 'tool)) + (ede-pmake-insert-variable-shared "TOOL_NAME" + (insert (ede-name tx)))) + ((eq (oref tx type) 'library) + (ede-pmake-insert-variable-shared "LIBRARY_NAME" + (insert (ede-name tx)))) + ((eq (oref tx type) 'application) + (ede-pmake-insert-variable-shared "APP_NAME" + (insert (ede-name tx)))) + ((eq (oref tx type) 'subproject) + (ede-pmake-insert-variable-shared "SUBPROJECTS" + (insert (ede-name tx))))))) + + ;; Just this target's variables, sources and flags + (insert "\n\n") + (ede-map-targets this + (lambda (tx) + (progn + (let ((file (oref tx source))) + (while file + (cond ((or + (ede-want-file-source-p ede-source-header-gnustep-c (car file)) + (ede-want-file-source-p ede-source-header-gnustep-objc (car file))) + (ede-pmake-insert-variable-shared + (concat (oref tx name) "_HEADER_FILES") + (insert (car file)))) + ((ede-want-file-source-p ede-source-gnustep-c (car file)) + (ede-pmake-insert-variable-shared + (concat (oref tx name) "_C_FILES") + (insert (car file)))) + ((ede-want-file-source-p ede-source-gnustep-objc (car file)) + (ede-pmake-insert-variable-shared + (concat (oref tx name) "_OBJC_FILES") + (insert (car file))))) + (setq file (cdr file)))) + ;; Just target's CFLAGS, LDFLAGS and INCLUDE_DIRS + (let ((cflags (oref tx cflags)) + (ldflags (oref tx ldflags)) + (incldirs (oref tx include-dirs)) + (single t)) + (while (and (sequencep cflags) cflags) + (if single + (or (setq single nil) + (insert + (concat (oref tx name) "_CFLAGS = " (car cflags) "\n"))) + (insert + (concat (oref tx name) "_CFLAGS += " (car cflags) "\n"))) + (setq cflags (cdr cflags))) + (setq single t) + (while (and (sequencep ldflags) ldflags) + (if single + (or (setq single nil) + (insert + (concat (oref tx name) "_LDFLAGS = " (car ldflags) "\n"))) + (insert + (concat (oref tx name) "_LDFLAGS += " (car ldflags) "\n"))) + (setq ldflags (cdr ldflags))) + (setq single t) + (while (and (sequencep incldirs) incldirs) + (if single + (or (setq single nil) + (insert + (concat (oref tx name) + "_INCLUDE_DIRS = " (car ldflags) "\n"))) + (insert + (concat (oref tx name) + "_INCLUDE_DIRS += " (car ldflags) "\n"))) + (setq incldirs (cdr incldirs)))) + (insert "\n") +;;;XXXX +;;; (if (or +;;; (eq (oref tx type) 'clibrary) +;;; (eq (oref tx type) 'library)) +;;; (if (oref tx header-install-dir) +;;; (insert +;;; (concat +;;; (oref tx name) +;;; "_HEADER_INSTALLATION_DIR = " +;;; (oref tx header-install-dir))))) + ))) ;; end of `ede-targets' + + ;; Yet Other project's variables + ;; Just Additional Variables ... + (insert "\n") + ;; XXX @TODO put additional variables in the preamble if specified. + (let ((addvars (oref this additional-variables)) vars mkf) + (while addvars + (if (car addvars) ;; useless ?? + (setq mkf (caar addvars) + vars (cdar addvars))) + (while vars + (if mkf + (save-excursion + (set-buffer (find-file-noselect mkf)) +; (ede-pmake-insert-variable-shared (caar vars)(cdar vars)) + (insert (caar vars) " += " (cdar vars) "\n") + (save-buffer)) +; (ede-pmake-insert-variable-shared (caar vars)(cdar vars))) + (insert (caar vars) " += " (cdar vars) "\n")) + (setq vars (cdr vars))) + (setq addvars (cdr addvars)))) + + ;; Include Preambles + (insert "\n\n") + (let ((preambles (oref this preamble))) + (while preambles + (insert "-include " (car preambles) "\n") + (setq preambles (cdr preambles)))) + ;; Include target type specific Makefile + (insert "\n") + (let (types) + (ede-map-targets this (lambda (x) (add-to-list 'types (oref x type)))) + (while types + (if (eq (car types) 'subproject) + (insert "include $(GNUSTEP_MAKEFILES)/aggregate.make\n") + (insert "include $(GNUSTEP_MAKEFILES)/" (symbol-name (car types)) ".make\n")) + (setq types (cdr types)))) + ;; Include Postambles + (insert "\n") + (let ((postambles (oref this postamble))) + (while postambles + (insert "-include " (car postambles) "\n") + (setq postambles (cdr postambles)))) + + ;; Just Additional Rules ... + ;; XXX @TODO put additional rules in the postamble if specified. + + ;; END + (save-buffer) + (goto-char (point-min)))))) + +;;; EDE command functions +;; +(defvar ede-step-target-history nil + "History when querying for a target type.") + +(defmethod project-new-target ((this ede-step-project) + &optional name type autoadd) + "Create a new target in THIS based on the current buffer." + (if (eq (oref this :project-mode) 'scanner) + (warn "This ProjStep is in Scanner Mode, are u sure what are u doing?")) + (let* ((name (or name (read-string "Name: " ""))) + (type (or type + (completing-read "Type: " ede-step-target-alist + nil t nil '(ede-step-target-history . 1)))) + (ot nil) + (src (if (and (buffer-file-name) + (if (and autoadd (stringp autoadd)) + (string= autoadd "y") + (y-or-n-p (format "Add %s to %s? " (buffer-name) name)))) + (buffer-file-name)))) + (setq ot (funcall (nth 1 (assoc type ede-step-target-alist)) name :name name + :path (ede-convert-path this default-directory) + :makefile "GNUmakefile" + :source (if src + (list (file-name-nondirectory src)) + nil))) + ;; If we added it, set the local buffer's object. + (if src (progn + (setq ede-object ot) + (ede-apply-object-keymap))) + ;; Add it to the project object + ;;(oset this targets (cons ot (oref this targets))) + ;; New form: Add to the end using fancy eieio function. + ;; @todone - Some targets probably want to be in the front. + ;; How to do that? + ;; @ans - See elisp autoloads for answer + (object-add-to-list this 'targets ot t) + ;; And save + (ede-step-save this))) + +(defmethod project-new-target-custom ((this ede-step-project)) + "Create a new target in THIS for custom." + (if (eq (oref this :project-mode) 'scanner) + (warn "This ProjStep is in Scanner Mode, are u sure what are u doing?")) + (let* ((name (read-string "Name: " "")) + (type (completing-read "Type: " ede-step-target-alist + nil t nil '(ede-step-target-history . 1)))) + (funcall (nth 1 (assoc type ede-step-target-alist)) name :name name + :path (ede-convert-path this default-directory) + :source nil))) + +(defmethod project-delete-target ((this ede-step-target)) + "Delete the current target THIS from it's parent project." + (if (eq (oref (ede-current-project (oref this :path)) :project-mode) 'scanner) + (warn "This ProjStep is in Scanner Mode, are u sure what are u doing?")) + (let ((p (ede-current-project)) + (ts (oref this source))) + ;; Loop across all sources. If it exists in a buffer, + ;; clear it's object. + (while ts + (let* ((default-directory (oref this path)) + (b (get-file-buffer (car ts)))) + (if b + (save-excursion + (set-buffer b) + (if (eq ede-object this) + (progn + (setq ede-object nil) + (ede-apply-object-keymap)))))) + (setq ts (cdr ts))) + ;; Remove THIS from it's parent. + ;; The two vectors should be pointer equivalent. + (oset p targets (delq this (oref p targets))) + (ede-step-save (ede-current-project)))) + +(defmethod project-add-file ((this ede-step-target) file) + "Add to target THIS the current buffer represented as FILE." + (if (eq (oref (ede-current-project (oref this :path)) :project-mode) 'scanner) + (warn "This ProjStep is in Scanner Mode, are u sure what are u doing?")) + (let ((file (ede-convert-path this file)) + (src (ede-target-sourcecode this)) + (aux nil)) + (while (and src (not (ede-want-file-p (car src) file))) + (setq src (cdr src))) + (when src + (setq src (car src)) + (cond ((ede-want-file-source-p this file) + (object-add-to-list this 'source file t)) + ((ede-want-file-auxiliary-p this file) + (object-add-to-list this 'auxsource file t)) + (t (error "`project-add-file(ede-target)' source mismatch error"))) + (ede-step-save)))) + +(defmethod project-remove-file ((target ede-step-target) file) + "For TARGET, remove FILE. +FILE must be massaged by `ede-convert-path'." + (if (eq (oref (ede-current-project (oref this :path)) :project-mode) 'scanner) + (warn "This ProjStep is in Scanner Mode, are u sure what are u doing?")) + ;; Speedy delete should be safe. + (object-remove-from-list target 'source (ede-convert-path target file)) + (object-remove-from-list target 'auxsource (ede-convert-path target file)) + (ede-step-save)) + +(defmethod project-update-version ((this ede-step-project)) + "The :version of project THIS has changed." + (ede-step-save)) + +(defmethod project-make-dist ((this ede-step-project)) + "Build a distribution for the project based on THIS target." + ;; I'm a lazy bum, so I'll make a makefile for doing this sort + ;; of thing, and rely only on that small section of code. + (let ((pm (ede-proj-dist-makefile this)) + (df (project-dist-files this))) + (if (and (file-exists-p (car df)) + (not (y-or-n-p "Dist file already exists. Rebuild? "))) + (error "Try `ede-update-version' before making a distribution")) + (ede-proj-setup-buildenvironment this) + (if (string= pm "Makefile.am") (setq pm "Makefile")) + (compile (concat "make -f " pm " dist")) + )) + +(defmethod project-dist-files ((this ede-step-project)) + "Return a list of files that constitutes a distribution of THIS project." + (list + ;; Note to self, keep this first for the above fn to check against. + (concat (oref this name) "-" (oref this version) ".tar.gz") + )) + +(defmethod project-compile-project ((proj ede-step-project) &optional command) + "Compile the entire current project PROJ. +Argument COMMAND is the command to use when compiling." + (let ((pm (ede-proj-dist-makefile proj)) + (default-directory (file-name-directory (oref proj file)))) + (ede-proj-setup-buildenvironment proj) +; (if (string= pm "Makefile.am") (setq pm "Makefile")) + (compile (concat "make -f " pm " all")))) + +;;; Target type specific compilations/debug +;; +(defmethod project-compile-target ((obj ede-step-target) &optional command) + "Compile the current target OBJ. +Argument COMMAND is the command to use for compiling the target." + (ede-proj-setup-buildenvironment (ede-current-project)) + (compile (concat "make -f " (oref obj makefile) " " + (ede-proj-makefile-target-name obj)))) + +(defmethod project-debug-target ((obj ede-step-target)) + "Run the current project target OBJ in a debugger." + (error "Debug-target not supported by %s" (object-name obj))) + +(defmethod ede-proj-makefile-target-name ((this ede-step-target)) + "Return the name of the main target for THIS target." + (ede-name this)) + +;;; Compiler and source code generators +;; +(defmethod ede-want-file-auxiliary-p ((this ede-target) file) + "Return non-nil if THIS target wants FILE." + ;; By default, all targets reference the source object, and let it decide. + (let ((src (ede-target-sourcecode this))) + (while (and src (not (ede-want-file-auxiliary-p (car src) file))) + (setq src (cdr src))) + src)) + + +;;; Target type specific autogenerating gobbldegook. +;; I would implement the ede-proj interface. +(eval-when-compile + (require 'ede/pmake) + (require 'ede/pconf)) + +(defmethod ede-proj-dist-makefile ((this ede-step-project)) + "Return the name of the Makefile with the DIST target in it for THIS." + (or (ede-gnustep-get-topmost-makefile (oref this directory)) + (concat (file-name-directory (oref this file)) "GNUmakefile"))) + +;; This Func is implemented elsewhere, probably in ede.el +;; (defun ede-proj-regenerate () +;; "Regenerate Makefiles for and edeproject project." +;; (interactive) +;; (and (eq 'writer (oref (ede-current-project) :project-mode)) +;; (ede-proj-setup-buildenvironment (ede-current-project) t))) + +(defmethod ede-proj-makefile-create-maybe ((this ede-step-project) mfilename) + "Create a Makefile for all Makefile targets in THIS if needed. +MFILENAME is the makefile to generate." + ;; For now, pass through until dirty is implemented. + (require 'ede/pmake) + (if (or (not (file-exists-p mfilename)) + (file-newer-than-file-p (oref this file) mfilename)) + (ede-proj-makefile-create this mfilename))) + +(defmethod ede-proj-setup-buildenvironment ((this ede-step-project) + &optional force) + "Setup the build environment for project THIS. +Handles the Makefile, or a Makefile.am configure.in combination. +Optional argument FORCE will force items to be regenerated." + (if (not force) + (ede-proj-makefile-create-maybe this (ede-proj-dist-makefile this)) +; (require 'ede/pmake) + (ede-proj-makefile-create this (ede-proj-dist-makefile this))) + ;; Rebuild all subprojects + (ede-map-subprojects + this (lambda (sproj) (ede-proj-setup-buildenvironment sproj force))) + ) + + +;;; Lower level overloads +;; +;; utils using semantic for parsing. +(defsubst ede-gnustep-semantic-tags-named () + (semantic--find-tags-by-function + '(lambda (tag)(string-match "_NAME$" (car tag))) + (semantic-find-tags-by-class 'variable (current-buffer)))) + +(defsubst ede-gnustep-semantic-tags-subprojects () + (semantic--find-tags-by-function + '(lambda (tag)(string-match "^SUBPROJECTS$" (car tag))) + (semantic-find-tags-by-class 'variable (current-buffer)))) + +(defsubst ede-gnustep-semantic-tags-included-files () + (semantic-find-tags-by-class 'include (current-buffer))) + +(defsubst ede-gnustep-semantic-tags-all-variables () + (semantic-find-tags-by-class 'variable (current-buffer))) + +(defsubst ede-gnustep-semantic-value-for-tag (tag) + (cadr (caddr tag))) + +(defun ede-gnustep-semantic-tag-for-value (name) + (let ((tags (semantic-fetch-tags))(found nil)) + (while (and tags (not found)) + (and (member name (ede-gnustep-semantic-value-for-tag (car tags))) + (setq found (car tags))) + (setq tags (cdr tags))) + found)) + +;; maybe require some makefile utils +(defmethod project-rescan ((this ede-step-project)) + "Rescan the EDE proj project THIS." + (cond ((eq 'writer (oref this :project-mode)) + (ede-with-projectfile this + (goto-char (point-min)) + (let ((l (read (current-buffer))) + (fields (object-slots this)) + (targets (oref this targets))) + (setq l (cdr (cdr l))) ;; objtype and name skip + (while fields ; reset to defaults those that dont appear. + (if (and (not (assoc (car fields) l)) + (not (eq (car fields) 'file))) + (let ((eieio-skip-typecheck t)) + ;; This is a hazardous thing, for some elements + ;; might not be bound. Skip typechecking and duplicate + ;; unbound slots along the way. + (eieio-oset this (car fields) + (eieio-oref-default this (car fields))))) + (setq fields (cdr fields))) + (while l + (let ((field (car l)) (val (car (cdr l)))) + (cond ((eq field targets) + (let ((targets (oref this targets)) + (newtarg nil)) + (setq val (cdr val)) ;; skip the `list' + (while val + (let ((o (object-assoc (car (cdr (car val))) ; name + 'name targets))) + (if o + (project-rescan o (car val)) + (setq o (eval (car val)))) + (setq newtarg (cons o newtarg))) + (setq val (cdr val))) + (oset this targets newtarg))) + (t + (eieio-oset this field val)))) + (setq l (cdr (cdr l))))))) ;; field/value + + ;; Scanner-mode + ((eq 'scanner (oref this :project-mode)) + (let ((mf (ede-gnustep-get-valid-makefile (oref this :directory))) + (otargets (oref this targets)) + (osubproj (oref this subproj)) + (pn (oref this :name)) (ntargets nil) (nsubproj nil)) + (when mf +; (oset this :makefile (file-name-nondirectory mf)) + (with-temp-buffer + (insert-file-contents mf) + (goto-char (point-min)) + (let (;; XXX : Why these don't work ??? + (named (ede-gnustep-semantic-tags-named)) + (subprojs (ede-gnustep-semantic-tags-subprojects)) + (included (ede-gnustep-semantic-tags-included-files)) + (allvariables (ede-gnustep-semantic-tags-all-variables)) + inst-domain) + (oset this included-makefiles included) + (setq inst-domain + (ede-gnustep-semantic-value-for-tag + (assoc "GNUSTEP_INSTALLATION_DOMAIN" allvariables))) + (cond ((string= "USER" inst-domain)(oset this installation-domain 'user)) + ((string= "SYSTEM" inst-domain)(oset this installation-domain 'system)) + ((string= "NETWORK" inst-domain)(oset this installation-domain 'network)) + (t (oset this installation-domain 'local))) + (mapc + ;; Map all the different types + (lambda (typecar) + (let ((macro (nth 2 typecar)) + (class (nth 1 typecar)) + ) + (let ((tmp nil)(targets + (makefile-macro-file-list macro) + ;; (ede-gnustep-semantic-value-for-tag + ;; (car (semantic-find-tags-by-name + ;; macro + ;; (semantic-find-tags-by-class + ;; 'variable (current-buffer))))) + )) + (setq targets (remove-duplicates targets :test 'equal)) + (while targets + (setq tmp (object-assoc (car targets) 'name otargets)) + (when (not tmp) + (if (eq class 'ede-step-project) + ;; I found a sub project. + (let ((spdir + (file-name-as-directory + (expand-file-name (car targets)(oref this :directory)))) mf) + (when (and + (file-directory-p spdir) + (ede-gnustep-get-valid-makefile spdir)) + ;; For each project id found, see if we need to recycle, + ;; and if we do not, then make a new one. Check the deep + ;; rescan value for behavior patterns. + (setq tmp (object-assoc spdir 'directory osubproj)) + (unless tmp + (setq tmp + (condition-case nil + ;; In case of problem, ignore it. + (ede-step-project + (car targets) :name (car targets) + :project-mode 'scanner + :directory spdir + :file (expand-file-name "ProjStep.ede" spdir) + :targets nil) + (error nil))) + ;; new subproject + (and (ede-step-project-child-p tmp) + (setq nsubproj (cons tmp nsubproj)))) + (when tmp + ;; force to be a subproject and in scanner mode + ;;(oset tmp rootproj (or (oref this rootproj) this)) + (oset tmp :project-mode 'scanner) + ;; rescan subproj after, in tail + ;; (if ede-deep-rescan (project-rescan tmp)) + ))) + + ;; I found a non-subproject target. + (setq tmp (apply class (car targets) :name (car targets) + ;; XXX check for possible relative path + ;; in names, like Library/SubLibTarget + ;;:path "" + ;; FIX: we need an absolute path + ;; because ede-object-progect var don't work, + ;; we can't use it in `project-rescan'(target) + :path (file-name-directory mf) + :makefile (file-name-nondirectory mf) + nil)) + ;; force :makefile, i don't know why !!! + (oset tmp :makefile (file-name-nondirectory mf)) + (setq ntargets (cons tmp ntargets)) + )) + ;; If we have tmp, then rescan it only if deep mode. + (if (and ede-deep-rescan (ede-step-target-child-p tmp)) + (project-rescan tmp)) + (setq targets (cdr targets)))))) + ede-step-target-alist) + ) ;; close temp buffer, we don't need makefile-macro-file-list + (oset this :targets (append ntargets otargets)) + (oset this subproj (append nsubproj osubproj)) + (ede-step-save this) + (if ede-deep-rescan + (dolist (SP (oref this subproj)) + (project-rescan SP))) + )))))) + +(defmethod project-rescan ((this ede-step-target) &optional readstream) + "Rescan target THIS from the read list READSTREAM." + ;; use the root project to distinguish between scanner/writer mode. + ;; FIX is better something like `ede-target-parent' ??? non force topmost. + (let ((this-step-root-project + (ede-current-project + (file-name-directory + (or (ede-gnustep-get-topmost-makefile (oref this :path)) (oref this :makefile) ""))))) + ;;(when (ede-step-project-child-p ede-object-project) + (when (ede-step-project-child-p this-step-root-project) + (cond ((eq 'writer (oref this-step-root-project :project-mode)) + (progn + (setq readstream (cdr (cdr readstream))) ;; constructor/name + (while readstream + (let ((tag (car readstream)) + (val (car (cdr readstream)))) + (eieio-oset this tag val)) + (setq readstream (cdr (cdr readstream)))))) + ;;((eq 'scanner (oref ede-object-project :project-mode)) + ((eq 'scanner (oref this-step-root-project :project-mode)) + ;;(let ((mf (ede-gnustep-get-valid-makefile (oref ede-object-project :directory))) + (let ((mf ;;(ede-gnustep-get-valid-makefile (oref this-step-root-project :directory))) + (oref this :makefile)) + (allsource nil)) + (with-temp-buffer + (insert-file-contents mf) + (goto-char (point-min)) + ;; FIX add all available _MACROS_FOR_TARGETS by gnustep-make, + ;; or find a way to do it. + (let ((c-src + (makefile-macro-file-list (concat (oref this :name) "_C_FILES")) + ;; (ede-gnustep-semantic-value-for-tag ;;was makefile-macro-file-list + ;; (car (semantic-find-tags-by-name + ;; (concat (oref this :name) "_C_FILES") + ;; (semantic-find-tags-by-class + ;; 'variable (current-buffer))))) + ) + (objc-src + (makefile-macro-file-list (concat (oref this :name) "_OBJC_FILES")) + ;; (ede-gnustep-semantic-value-for-tag ;;was makefile-macro-file-list + ;; (car (semantic-find-tags-by-name + ;; (concat (oref this :name) "_OBJC_FILES") + ;; (semantic-find-tags-by-class + ;; 'variable (current-buffer))))) + ) + (h-src + (makefile-macro-file-list (concat (oref this :name) "_HEADER_FILES")) + ;; (ede-gnustep-semantic-value-for-tag ;;was makefile-macro-file-list + ;; (car (semantic-find-tags-by-name + ;; (concat (oref this :name) "_HEADER_FILES") + ;; (semantic-find-tags-by-class + ;; 'variable (current-buffer))))) + ) + ) + (if c-src (setq allsource (append c-src allsource))) + (if objc-src (setq allsource (append objc-src allsource))) + (if h-src (setq allsource (append h-src allsource))))) + (oset this :source allsource))))) + )) + +;; XXX regexp to validate a makefile may be customizable list. &&'d, OR'd ??? +;; if we use a list of regexp, thier have to match "every or any" element ??? +(defun ede-gnustep-get-valid-makefile (dir) + "Return the absolute path of a valid GNUmakefile in DIR. +Check match of a line for validity." + (let ((rexp-ok "^include \\$(GNUSTEP_MAKEFILES)/common\\.make") + (mfs (directory-files dir t "^\\(GNU\\)?[mM]akefile.*")) (found nil)) + (while (and (not found) mfs) + (if (string-match rexp-ok (string-file-contents (car mfs))) + (setq found (car mfs))) + (setq mfs (cdr mfs))) + found)) + +(defun ede-gnustep-get-topmost-makefile (&optional dir) + "Find the top most valid (for gnustep) GNUmakefile." + (let* ((newdir (expand-file-name (or dir default-directory))) + (valid (ede-gnustep-get-valid-makefile newdir)) + (found nil) olddir) + (while (and (not found) (not (equal olddir newdir))) + (setq olddir newdir) ;; to prevent loop at / + ;; check for RootProjStep.ede file presence, + ;; for a valid ede-step-project root, would be the topmost. + (if (file-readable-p (expand-file-name "RootProjStep.ede" newdir)) + (setq found valid)) + (unless (or found (ede-gnustep-get-valid-makefile + (file-name-directory + (directory-file-name newdir)))) + (setq found valid)) + ;; up to .. + (setq newdir (file-name-directory (directory-file-name newdir))) + (setq valid (ede-gnustep-get-valid-makefile newdir))) + found)) + + +;;;###autoload +;; @todo - below is not compatible w/ Emacs 20! +(ede-add-project-autoload + (ede-project-autoload "edegnustep" + :name "GNUstep-Make" :file 'ede-gnustep + :proj-file "ProjStep.ede" + :load-type 'ede-step-load + :class-sym 'ede-step-project)) + +;;;###autoload +;; ;; @todo - below is not compatible w/ Emacs 20! ede-project-class-files +(ede-add-project-autoload + (ede-project-autoload "gnustep-root" + :name "GNUstep-make Top Most" :file 'ede-gnustep + :proj-file "RootProjStep.ede" + :initializers '(:project-mode scanner) + :load-type 'ede-gnustep-load + :class-sym 'ede-step-project)) + +;;;###autoload +;; @todo - below is not compatible w/ Emacs 20! +(ede-add-project-autoload + (ede-project-autoload "gnustep" + :name "GNUstep-Make in scanner mode" :file 'ede-gnustep + :proj-file "ProjStep.ede" + :initializers '(:project-mode scanner) + :load-type 'ede-gnustep-load + :class-sym 'ede-step-project)) + +;;;###autoload +(add-to-list 'auto-mode-alist '("\\(Root\\)?ProjStep\\.ede" . emacs-lisp-mode)) + +;; (assoc "gnustep" (object-assoc-list 'name ede-project-class-files)) + + +(provide 'ede-gnustep) + +;;; ede/proj.el ends here + + + diff --git a/cedet-bzr/trunk/contrib/semantic-ectag-scala.el b/cedet-bzr/trunk/contrib/semantic-ectag-scala.el new file mode 100644 index 0000000..15d8e39 --- /dev/null +++ b/cedet-bzr/trunk/contrib/semantic-ectag-scala.el @@ -0,0 +1,82 @@ +;;; semantic-ectag-scala.el --- Scala support for ctags +;; +;; Copyright (C) 2009 Raymond Paul Racine +; +;;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; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; The file contains Exuberent CTags support for the Scala language. + +;;; Code: + +;;; Scala Mode +;; + +(defvar-mode-local scala-mode semantic-ectag-lang "scala" + "Language name for Exuberent CTags.") + +(defvar-mode-local scala-mode semantic-ectag-lang-kind + "cotmnafVvTip" + "Kinds of Exuberent CTags available.") + +;; FIXME - Need to skip commented code. +;; i.e., --regex-Scala=/^[^\*\/]*class[ \t]*([a-zA-Z0-9_]+)/\1/c,classes/ +(defvar-mode-local scala-mode semantic-ectag-lang-extra-flags + '("--langdef=scala" + "--langmap=scala:.scala" + "--regex-Scala=/^[ \t]*class[ \t]*([a-zA-Z0-9_]+)/\\1/c,class/" + "--regex-Scala=/^[ \t]*object[ \t]*([a-zA-Z0-9_]+)/\\1/o,class/" + "--regex-Scala=/^[ \t]*class[ \t]*([a-zA-Z0-9_]+)/\\1/c,class/" + "--regex-Scala=/^[ \t]*object[ \t]*([a-zA-Z0-9_]+)/\\1/o,class/" + "--regex-scala=/^[ \t]*trait[ \t]*([a-zA-Z0-9_]+)/\\1/t,class/" + "--regex-Scala=/^[ \t]*case[ \t]*class[ \t]*([a-zA-Z0-9_]+)/\\1/m,class/" + "--regex-Scala=/^[ \t]*case[ \t]*object[ \t]*([a-zA-Z0-9_]+)/\\1/n,class/" + "--regex-Scala=/^[ \t]*abstract[ \t]*class[ \t]*([a-zA-Z0-9_]+)/\\1/a,class/" + "--regex-Scala=/^[ \t]*def[ \t]*([a-zA-Z0-9_]+)[ \t]*.*[:=]/\\1/f,function/" + "--regex-Scala=/[ \t]*val[ \t]*([a-zA-Z0-9_]+)[ \t]*[:=]/\\1/V,value/" + "--regex-Scala=/[ \t]*var[ \t]*([a-zA-Z0-9_]+)[ \t]*[:=]/\\1/v,variable/" + "--regex-Scala=/^[ \t]*type[ \t]*([a-zA-Z0-9_]+)[ \t]*[\[<>=]/\\1/T,classs/" + "--regex-Scala=/^[ \t]*import[ \t]*([a-zA-Z0-9_{}., \t=>]+$)/\\1/i,include/" + "--regex-Scala=/^[ \t]*package[ \t]*([a-zA-Z0-9_.]+$)/\\1/p,package/") + "Regex for Scala symbols from syntax.") + +(defvar-mode-local scala-mode semantic-symbol->name-assoc-list + '((type . "Types") + (variable . "Variables") + (value . "Values") + (function . "Functions") + (include . "Dependencies") + (package . "Providers")) + "List of tag classes and describing strings.") + +;; CEDET has lots of ways of getting you to various levels of semantic parsing support. +;; The following incantation works. +(defun semantic-scala-cedet-support () + "Enable CEDET for Scala based upon exuberant ctags support as the primary parser." + (interactive) + (semantic-load-enable-code-helpers) + (global-srecode-minor-mode 1) + (semantic-load-enable-primary-exuberent-ctags-support) + (add-hook 'scala-mode-hook 'semantic-ectag-simple-setup)) + +(semantic-scala-cedet-support) + +;;(add-hook 'scala-mode-hook 'semantic-scala-cedet-support) + +(provide 'semantic-ectag-scala) + +;;; semantic-ectag-scala.el ends here diff --git a/cedet-bzr/trunk/contrib/semantic-tag-folding.el b/cedet-bzr/trunk/contrib/semantic-tag-folding.el new file mode 100644 index 0000000..06962ea --- /dev/null +++ b/cedet-bzr/trunk/contrib/semantic-tag-folding.el @@ -0,0 +1,757 @@ +;;; semantic-tag-folding.el --- semantic decoration style to enable folding of semantic tags +;; Time-stamp: <2010-09-15 16:20:59 (lluis)> + +;;; Copyright (C) 2005, 2009, 2010, 2013 Suraj Acharya + +;; Author: Suraj Acharya + +;; This file is not part of GNU Emacs. + +;; semantic-tag-folding.el 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., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;;; +;;; Defines a `semantic-decoration-mode' style which allows semantic +;;; tags to be expanded or collapsed in the style of folding mode and +;;; hideshow mode. In addition to regular semantic tag, comments +;;; preceding tags can also be folded, and consecutive 'include tags +;;; are folded as a single unit. A semantic minor mode +;;; `semantic-tag-folding-mode' is also created. So M-x +;;; semantic-tag-folding-mode can be used to turn this mode on and +;;; off, it will also turn on `semantic-deocration-mode' if required. +;;; +;;; To use feature, add this file to your load path and put the +;;; following line in your .emacs: (require 'semantic-tag-folding) +;;; +;;; Customize `semantic-tag-folding-allow-folding-of' to choose which +;;; tags you want to be able to fold. You can also choose which tags +;;; types are folded by default when semantic-decoration-mode is +;;; enabled. +;;; +;;; M-x semantic-tag-folding-mode to enable tag folding in a buffer, +;;; M-x global-semantic-tag-folding-mode turns on folding in all +;;; semantic enabled buffers. +;;; +;; Features: +;; 1. Indicators in the fringe to show which tags which can be +;; expanded or hidden, clicking on the fringe symbols toggles the +;; associated block's state +;; 2. `semantic-tag-folding-allow-folding-of' lets you customize which +;; tags can be folded, and which of those tags are folded by +;; default when this mode is first activated. +;; 3. semantic-tag-folding-mode which toggles this mode, without +;; having to turn on semantic-decoration-mode +;; 4. hs-mode style commands to fold and show all tags, all child tags +;; or only the current tag. +;; +;; TODO: +;; * semantic-tag-folding-tag and semantic-tag-folding-comment attributes should be ignored +;; when calling fold-all or show-all (or the yet to be implemented show-children functions) +;; * make tooltips behave well (turn them off when the region is +;; expanded, consistent location, no truncation, update tooltips when +;; the text changes) +;; * make the ellipsis clickable +;; * investigate occasional windows cvs Emacs crashes + + + +(require 'semantic/decorate/mode) +(eval-when-compile (require 'cl)) + +;;; Code: + +;; xemacs compatibility +;; http://www.opensource.apple.com/darwinsource/10.3/emacs-56/emacs/lisp/progmodes/hideshow.el +(when (or (not (fboundp 'add-to-invisibility-spec)) + (not (fboundp 'remove-from-invisibility-spec))) + ;; `buffer-invisibility-spec' mutators snarfed from Emacs 20.3 lisp/subr.el + (defun add-to-invisibility-spec (arg) + (cond + ((or (null buffer-invisibility-spec) (eq buffer-invisibility-spec t)) + (setq buffer-invisibility-spec (list arg))) + (t + (setq buffer-invisibility-spec + (cons arg buffer-invisibility-spec))))) + (defun remove-from-invisibility-spec (arg) + (when buffer-invisibility-spec + (setq buffer-invisibility-spec + (delete arg buffer-invisibility-spec))))) + +;; http://list-archive.xemacs.org/xemacs-patches/200206/msg00144.html +;; `propertize' is a builtin in GNU Emacs 21. +(when (not (fboundp 'propertize)) + (defun propertize (string &rest properties) + "Return a copy of STRING with text properties added. +First argument is the string to copy. +Remaining arguments form a sequence of PROPERTY VALUE pairs for text +properties to add to the result." + (let ((str (copy-sequence string))) + (add-text-properties 0 (length str) + properties + str) + str))) + +;;;###autoload +(defcustom global-semantic-tag-folding-mode nil + "*If non-nil enable global use of variable `semantic-tag-folding-mode'. +With this mode enabled, a new folding decoration mode is added. +Clicking on a + or - in the fringe will fold that tag." + :group 'semantic + :group 'semantic-modes + :type 'boolean + :require 'semantic-util-modes + :initialize 'custom-initialize-default + :set (lambda (sym val) + (global-semantic-tag-folding-mode (if val 1 -1)))) + +;;;###autoload +(define-minor-mode global-semantic-tag-folding-mode + "Toggle global use of option `semantic-tag-folding-mode'. +If ARG is positive or nil, enable, if it is negative, disable." + :global t :group 'semantic :group 'semantic-modes + (semantic-toggle-minor-mode-globally + 'semantic-tag-folding-mode (if global-semantic-tag-folding-mode 1 -1))) + +(defcustom semantic-tag-folding-mode-hook nil + "*Hook run at the end of function `semantic-tag-folding-mode'." + :group 'semantic + :type 'hook) + +(defvar semantic-tag-folding-mode-map + (let ((km (make-sparse-keymap))) + (define-key km [left-fringe mouse-1] 'semantic-tag-folding-click) + km) + "Keymap for folding minor mode.") + +(defvar semantic-tag-folding-mode nil + "Non-nil if folding minor mode is enabled. +Use the command `semantic-tag-folding-mode' to change this variable.") + +(make-variable-buffer-local 'semantic-tag-folding-mode) + +(defvar semantic-tag-folding-decoration-mode-hook-enabled t + "Used to disable `semantic-tag-folding-decoration-mode-hook'. +This is done when semantic-tag-folding mode turns on semantic-decoration mode.") + + +(defvar semantic-tag-folding-saved-decoration-styles nil +"The saved value of `semantic-decoration-styles'.") +(make-variable-buffer-local 'semantic-tag-folding-saved-decoration-styles) + +(defvar semantic-tag-folding-decoration-style + '(("semantic-tag-folding" . t)) + "Only turn on semantic-tag-folding decorations. +A value for variable `semantic-decoration-styles'.") + +(defun semantic-tag-folding-mode-setup () + "Setup option `semantic-tag-folding-mode'. +The minor mode can be turned on only if semantic feature is available +and the current buffer was set up for parsing. In addition, +`semantic-tag-folding-mode' is only available when fringe images are available +in Emacs 20.4." + (if semantic-tag-folding-mode + (if (not (and (featurep 'semantic) (semantic-active-p) + )) + (progn + ;; Disable minor mode if semantic stuff not available + (setq semantic-tag-folding-mode nil) + (error "Buffer %s cannot be folded by semantic" + (buffer-name))) + ;; Enable decoration mode + (add-to-invisibility-spec '(semantic-tag-fold . t)) + (if (featurep 'xemacs) + (set (make-local-variable 'line-move-ignore-invisible) t)) + (setq semantic-tag-folding-saved-decoration-styles semantic-decoration-styles) + (if semantic-decoration-mode + ;; if decoration mode is already on, ensure that semantic-tag-folding is enabled + (let ((style (assoc "semantic-tag-folding" semantic-decoration-styles))) + (when (not (cdr style)) + (setcdr style t) + (semantic-decoration-mode 1))) + ;; else, turn on decoration mode with only semantic-tag-folding on + (setq semantic-tag-folding-saved-decoration-styles semantic-decoration-styles) + (setq semantic-decoration-styles semantic-tag-folding-decoration-style) + (let ((semantic-tag-folding-decoration-mode-hook-enabled nil)) + (semantic-decoration-mode 1)))) + ;; Remove hooks + ;; Disable the decoration. + (when semantic-decoration-mode + (if (eq semantic-decoration-styles semantic-tag-folding-decoration-style) + ;; if no calls were made to + (progn (semantic-decoration-mode -1) + (setq semantic-decoration-styles semantic-tag-folding-saved-decoration-styles)) + ;; else + (setq semantic-decoration-styles semantic-tag-folding-saved-decoration-styles) + (semantic-decoration-mode 1)))) + semantic-tag-folding-mode) + +(add-hook 'semantic-decoration-mode-hook 'semantic-tag-folding-decoration-mode-hook) + +(defun semantic-tag-folding-decoration-mode-hook () + "Hook function used to manage folding icons in decoration-mode." + (when semantic-tag-folding-decoration-mode-hook-enabled + (cond + ((and semantic-decoration-mode semantic-tag-folding-mode) + ;; when turning on decoration-mode with tag folding already on, + ;; use the saved value of `semantic-decoration-styles' and ensure + ;; that tag folding decorations are turned on + (setq semantic-decoration-styles semantic-tag-folding-saved-decoration-styles) + (let ((style (assoc "semantic-tag-folding" semantic-decoration-styles))) + (when (not (cdr style)) + (setcdr style t) + (semantic-decoration-mode 1) + ))) + ((and semantic-decoration-mode (not semantic-tag-folding-mode)) + ;; when turning on decorations with out tag folding, ensure that + ;; tag-folding decorations are not enabled + (let ((style (assoc "semantic-tag-folding" semantic-decoration-styles))) + (when (cdr style) + (setcdr style nil) + (semantic-decoration-mode 1) + ))) + ((and (not semantic-decoration-mode) semantic-tag-folding-mode) + ;; if turning off decoration mode with semantic tag folding on, + ;; turn off semantic tag foldng mode + (if (eq semantic-decoration-styles semantic-tag-folding-decoration-style) + ;; M-x tag-folding -> M-x decoration , turn on all the deocration mode styles + (semantic-decoration-mode 1) + ;; M-x tag-folding -> M-x decoration M-x decoration, only keep + ;; the semantic-tag-folding-decoration-style active + (semantic-tag-folding-mode 1)))))) + +;;;###autoload +(define-minor-mode semantic-tag-folding-mode + "Minor mode mark semantic tags for folding. +This mode will display +/- icons in the fringe. Clicking on them +will fold the current tag. +With prefix argument ARG, turn on if positive, otherwise off. The +minor mode can be turned on only if semantic feature is available and +the current buffer was set up for parsing. Return non-nil if the +minor mode is enabled." + :lighter nil + :keymap semantic-tag-folding-mode-map + (setq semantic-tag-folding-mode + (if arg + (> + (prefix-numeric-value arg) + 0) + (not semantic-tag-folding-mode))) + (semantic-tag-folding-mode-setup) + (run-hooks 'semantic-tag-folding-mode-hook) + (if (cedet-called-interactively-p) + (message "folding minor mode %sabled" + (if semantic-tag-folding-mode "en" "dis"))) + semantic-tag-folding-mode) + +(semantic-add-minor-mode 'semantic-tag-folding-mode "fold") + + +(define-semantic-decoration-style semantic-tag-folding "Enables folding of tags.") + +;; this needs to go after defining the decoration style, until +;; define-semantic-decoration-style uses setq-default instead of +;; add-to-list when setting the value of semantic-decoration-styles +(make-variable-buffer-local 'semantic-decoration-styles) + + +(defcustom semantic-tag-folding-allow-folding-of + '((type . nil) (function . nil) (variable . nil) (include . nil) + (comment . nil) (package . nil)) + "A set of semantic classes. Tags of these classes will be allowed to be folded and unfolded by this mode." + :group 'semantic + :type ;; '(alist :key-type symbol :value-type boolean :options (type function variable include package code)) + '(set (cons :format "%v" (const :tag "Types" type) + (choice :tag "Fold by default" + (const :tag "Outer type(s) as well as inner types" all) + (const :tag "Only inner types" inner) + (const :tag "Neither" ))) + (cons :format "%v" + (const :tag "Function/method declarations" function) + (boolean :tag "Fold by default")) + (cons :format "%v" + (const :tag "Varible declarations" variable) + (boolean :tag "Fold by default")) + (cons :format "%v" + (const :tag "Blocks of consecutive include/import statements" include) + (boolean :tag "Fold by default")) + (cons :format "%v" + (const :tag "Comment blocks preceding tags" comment) + (boolean :tag "Fold by default")) + (cons :format "%v" + (const :tag "Package declarations" package) + (boolean :tag "Fold by default")) + (cons :format "%v" + (const :tag "Code regions" code) + (boolean :tag "Fold by default")) + (cons :format "%v" + (const :tag "Code regions" block) + (boolean :tag "Fold by default")) + (repeat :tag "Other Semantic classes" + (cons :format "%v" (symbol :tag "Semantic class" code) + (boolean :tag "Fold by default"))) + )) +(make-variable-buffer-local 'semantic-tag-folding-allow-folding-of) + +(defcustom semantic-tag-folding-tag-higlight-time 1 + "The time in seconds for which a fringe highlight appears. +This higlight shows extent of the tag body when a tag is +expanded. Set this to nil for no extent indication." + :group 'semantic :type 'number) + +(defcustom semantic-tag-folding-highlight-tags-shown-by-reveal-mode nil + "If non-nil the extent tags unfolded by reveal mode is not highlighted." + :group 'semantic + :type 'boolean) + +(defcustom semantic-tag-folding-show-tooltips nil + "Display tooltips for folded tag bodies.. +If set to t, the body of a hidden tag is shown as a tooltip + when the mouse hovers over the first line of the tag. This is + not very pretty because the tooltip sometimes appears above the + cursor and not below where the tag body is, and the tootltip + text is truncated at some limit so large tag bodies are often + cut short." + :group 'semantic :type 'boolean) + +(defvar semantic-tag-folding-function 'semantic-tag-folding-function-default + "Default folding of tags. +Function which determines whether a tag should be folded by +default when `semantic-tag-folding' is activated." ) + +(defun semantic-tag-folding-set-fringe-image-style (&optional symbol value) + "Set the bitmaps for this folding \"fringe style\". +This function is called when customizing +`semantic-tag-folding-fringe-image-style'. SYMBOL is +`semantic-tag-folding-fringe-image-style' and VALUE is the fringe +style selected. +Five bitmaps are needed for each style: +* semantic-tag-folding-folded - the image in the fringe which +indicates that there is a folded tag on this line +* semantic-tag-folding-unfolded - this image indicates that the +tag starting on this line can be folded +* semantic-tag-folding-highlight-{top,middle,bottom} - when +`semantic-tag-folding-tag-higlight-time' is non-nil these three +bitmaps are used to indicate the extent of a tag when it is +unfolded." + (if symbol (set-default symbol value)) + (cond + ((not (functionp 'define-fringe-bitmap)) nil) + ((eq value 'plusminus) + + (define-fringe-bitmap 'semantic-tag-folding-folded + ;; a plus sign + [#b00011000 + #b00011000 + #b00011000 + #b11111111 + #b11111111 + #b00011000 + #b00011000 + #b00011000]) + + (define-fringe-bitmap 'semantic-tag-folding-unfolded + ;; a minus sign + [#b11111111 + #b11111111]) + + (define-fringe-bitmap 'semantic-tag-folding-highlight-top + ;; a minus sign + [#b11111111 + #b11111111]) + + (define-fringe-bitmap 'semantic-tag-folding-highlight-middle + ;; a vertical bar + [#b00011000] nil nil '(center t)) + + (define-fringe-bitmap 'semantic-tag-folding-highlight-bottom + ;; a minus sign + [#b11111111 + #b11111111])) + + ((eq value 'triangles) + + (define-fringe-bitmap 'semantic-tag-folding-unfolded + ;; a triangle pointing downwards + [#b11111110 + #b01000100 + #b00101000 + #b00010000]) + + (define-fringe-bitmap 'semantic-tag-folding-folded + ;; a filled triangle pointing to the right + [#b100000 + #b110000 + #b111000 + #b111100 + #b111100 + #b111000 + #b110000 + #b100000]) + + (define-fringe-bitmap 'semantic-tag-folding-highlight-top + ;; a triangle pointing downwards + [#b11111110 + #b01000100 + #b00101000 + #b00010000]) + + (define-fringe-bitmap 'semantic-tag-folding-highlight-middle + ;; a vertical bar + [#b00010000] nil nil '(center t)) + + (define-fringe-bitmap 'semantic-tag-folding-highlight-bottom + ;; a triangle pointing upwards + [#b00010000 + #b00101000 + #b01000100 + #b11111110]) + ) + )) + +(defcustom semantic-tag-folding-fringe-image-style 'triangles + "Fringe image style. +This variable determines the bitmaps drawn in the fringe to + indicate folded or unfolded (expanded) tags." + :group 'semantic + :type '(choice (const triangles) + (const plusminus)) + :set 'semantic-tag-folding-set-fringe-image-style) + +(defun semantic-tag-folding-allow-folding-of (class) + "Is folding of tags of semantic class CLASS allowed?" + (or + (assq class semantic-tag-folding-allow-folding-of) + (assq class (car (last semantic-tag-folding-allow-folding-of))) + )) + +(defun semantic-tag-folding-hidden-by-default (class) +"Are tags of semantic class CLASS to be hidden by default?" + (cdr (semantic-tag-folding-allow-folding-of class))) + +(defun semantic-tag-folding-function-default (tag comment) + "The default `semantic-tag-folding-function'. +Returns non-nil if the body of TAG is to be hidden when the mode +is started. COMMENT is non-nil to indicate that the comment above +TAG is what is being hidden, not the body of TAG." + (if comment + (semantic-tag-folding-hidden-by-default 'comment) + (let* ((c (semantic-tag-class tag)) + (default (semantic-tag-folding-hidden-by-default c))) + ;; `default' is the value to be returned, unless TAG is a type + ;; and only inner types are to be hidden + (if (and default (eq c 'type) (eq default 'inner)) + ;; the outermost type has no parent + (semantic-find-tag-parent-by-overlay tag) + default)))) + +(defun semantic-tag-folding-p-default (tag) + "Return non-nil if TAG is to be considered for folding. +TAG has to have valid start and end locations in the +buffer. Customize variable `semantic-tag-folding-allow-folding-of' to +influence the output of this function." + (let ((c (semantic-tag-class tag))) + (and + (semantic-tag-with-position-p tag) + (or (semantic-tag-folding-allow-folding-of 'comment) + (semantic-tag-folding-allow-folding-of c)) + ;; we only want the first include from a block of includes + (or (not (eq c 'include)) + (not (semantic-find-tag-by-overlay-prev (semantic-tag-start tag))) + (not (eq (semantic-tag-class + (semantic-find-tag-by-overlay-prev (semantic-tag-start tag))) 'include))) + ))) + +(defun semantic-tag-folding-highlight-default (tag) + "Create decoration overlays for TAG. +Also put a marker in the fringe for each thing that can be +collapsed." + (when (semantic-tag-buffer tag) + (with-current-buffer (semantic-tag-buffer tag) + (let ((point (point)) + (tag-start (semantic-tag-start tag)) + (tag-end (semantic-tag-end tag))) + ;; fold the comment preceding this tag + (if (semantic-tag-folding-allow-folding-of 'comment) + (let ((start (progn + (goto-char tag-start) + (when (forward-comment -1) + (do ((ret (point-at-eol) (point-at-eol))) + ( ;; until we see an empty line, or there are + ;; no more comments, or we reach the + ;; beginning of the buffer + (or (re-search-backward "\n\n" (- (point) 2) t) + (not (forward-comment -1)) + (bobp)) + ;; return + ret))))) + (end (progn + (goto-char tag-start) + (- (point-at-bol) 1)))) + (semantic-tag-folding-create-folding-overlays tag start end point t))) + ;; Fold the body of this tag. + ;; If folding comments is enabled all tags are passed into this + ;; function, so we need to check if folding is enabled for this + ;; tag type + (if (or (not (semantic-tag-folding-allow-folding-of 'comment)) (semantic-tag-folding-allow-folding-of (semantic-tag-class tag))) + (let ((start (progn + (goto-char tag-start) + (point-at-eol))) + (end (if (eq (semantic-tag-class tag) 'include) + (progn + (let ((tag-cursor tag) (last-tag-cursor tag)) + (while (eq (semantic-tag-class tag-cursor) 'include) + (setq last-tag-cursor tag-cursor) + (setq tag-cursor (semantic-find-tag-by-overlay-next (semantic-tag-end tag-cursor)))) + (semantic-tag-end last-tag-cursor))) + tag-end))) + (semantic-tag-folding-create-folding-overlays tag start end point nil))) + (goto-char point))))) + + +(defun semantic-tag-folding-get-attribute-overlay (tag create-if-null) + "Get the overlay used to store the fold state for TAG. +Create the overlay if CREATE-IF-NULL is non-nil." + (let* ((pos (semantic-tag-start tag)) + (ov (car (remove-if-not + (lambda (ov) + (semantic-overlay-get ov 'semantic-tag-folding-attributes)) + (semantic-overlays-at pos))))) + (when (and create-if-null (null ov)) + (setq ov (semantic-make-overlay (- pos 1) (+ 1 pos))) + (semantic-overlay-put ov 'semantic-tag-folding-attributes t)) + ov)) + +(defun semantic-tag-folding-get-folding-attribute (comment) + "Return the symbol used to store the fold state. +The symbol returned is for a tag (COMMENT is nil) or the comment +preceding a tag (COMMENT is non-nil)" + (if comment + 'semantic-tag-folding-comment + 'semantic-tag-folding-tag)) + +(defun semantic-tag-folding-get-fold-state (tag comment) + "Return the fold state for TAG. +If COMMENT is non-nil return the fold state for the comment preceding TAG." + (let* ((attr (semantic-tag-folding-get-folding-attribute comment)) + (ov (semantic-tag-folding-get-attribute-overlay tag nil))) + (and ov (semantic-overlay-get ov attr)))) + +(defun semantic-tag-folding-set-fold-state (tag comment state) + "Set the fold state for TAG to STATE. +If COMMENT is non-nil set the fold state for the comment preceding TAG." + (let* ((attr (semantic-tag-folding-get-folding-attribute comment)) + (ov (semantic-tag-folding-get-attribute-overlay tag t))) + (semantic-overlay-put ov attr state))) + + +(defun semantic-tag-folding-create-folding-overlays (tag start end point comment) +"Create an overlay for `semantic-tag-overlay'. +Create an overlay associated TAG. START and END are buffer +positions, usually inside TAG, but can be outside for comment and +include block overlays. POINT is the saved location of point, +this is used to unfold any TAGS around point by default. COMMENT +is non-nil if the fold region is a comment." + (let ((fold (if (functionp semantic-tag-folding-function) + (apply semantic-tag-folding-function (list tag comment)) + semantic-tag-folding-function))) + (when (and start end (< start end) (> (count-lines start end) 1)) + (let* ((ov (semantic-decorate-tag tag start end)) + (start2 (if comment + (save-excursion + (goto-char start) + (backward-char) + (point-at-bol)) + (semantic-tag-start tag))) + (ov2 (semantic-decorate-tag tag start2 (+ start2 1))) + (marker-string "+")) + (semantic-overlay-put ov 'semantic-tag-folding t) + (semantic-overlay-put ov 'isearch-open-invisible + 'semantic-tag-folding-show-block) + + ;; check for fold state attributes + (if (functionp semantic-tag-folding-function) + (let ((state (semantic-tag-folding-get-fold-state tag comment))) + (if state + (setq fold (eq state 'fold))))) + + ;; don't fold this region if point is inside it + (if (and (> end point) (< start point)) + (setq fold nil)) + + (if (not fold) + ;; just display the unfolded bitmap in the fringe + (setq marker-string (propertize + marker-string 'display + '((left-fringe semantic-tag-folding-unfolded) + "-"))) + ;; fold the body and display a + in the fringe + (semantic-overlay-put ov 'invisible 'semantic-tag-fold) + (setq marker-string (propertize + marker-string + 'display + '((left-fringe semantic-tag-folding-folded) + "+" )))) + + ;; store the marker string and tag as a property of the + ;; overlay so we use it to change the displayed fold state + ;; later (in semantic-tag-folding-set-overlay-visibility) + (semantic-overlay-put ov 'semantic-tag-folding-marker-string marker-string) + (semantic-overlay-put ov 'semantic-tag-folding-tag tag) + (semantic-overlay-put ov 'semantic-tag-folding-comment-overlay comment) + + (semantic-overlay-put ov2 'before-string marker-string) + + ;; store fold state as a function of the tag (unless the default state is being set) + (unless (functionp semantic-tag-folding-function) + (semantic-tag-folding-set-fold-state tag comment fold)) + + ;; tooltips + (when semantic-tag-folding-show-tooltips + (semantic-overlay-put ov2 'mouse-face 'highlight) + (semantic-overlay-put ov2 'help-echo (buffer-substring (+ 1 start) end))))))) + +(defun semantic-tag-folding-fold-block () + "Fold the smallest enclosing tag at point." + (interactive) + (semantic-tag-folding-set-overlay-visibility + (semantic-tag-folding-get-overlay) t)) + +(defun semantic-tag-folding-show-block (&optional ov) + "Unfold overlay OV, or the smallest enclosing tag at point." + (interactive) + (semantic-tag-folding-set-overlay-visibility + (or ov (semantic-tag-folding-get-overlay)) nil)) + +(defun semantic-tag-folding-show-all () + "Unfold all the tags in this buffer." + (interactive) + (semantic-tag-folding-fold-or-show-tags + (semantic-fetch-available-tags) nil)) + +(defun semantic-tag-folding-fold-all () + "Fold all the tags in this buffer." + (interactive) + (semantic-tag-folding-fold-or-show-tags + (semantic-fetch-available-tags) t)) + +(defun semantic-tag-folding-show-children () + "Unfold all the tags in this buffer." + (interactive) + (semantic-tag-folding-fold-or-show-tags + (cons (semantic-current-tag) + (semantic-tag-components (semantic-current-tag))) + nil)) + +(defun semantic-tag-folding-fold-children () + "Unfold all the tags in this buffer." + (interactive) + (semantic-tag-folding-fold-or-show-tags + (cons (semantic-current-tag) + (semantic-tag-components (semantic-current-tag))) + t)) + +(defun semantic-tag-folding-fold-or-show-tags (tags fold) +"Change the fold state of TAGS to FOLD." + (lexical-let ((fold fold)) + (when semantic-decoration-mode + (semantic-decorate-clear-decorations tags) + (let ((semantic-tag-folding-function fold)) + (semantic-decorate-add-decorations tags))))) + +(defun semantic-tag-folding-get-overlay () + "Return the innermost semantic-tag-folding-folding overlay at point." + (labels ((semantic-overlay-size (ov) + (- (semantic-overlay-end ov) (semantic-overlay-start ov)))) + (car + (sort + (remove-if-not (lambda (ov) (semantic-overlay-get ov 'semantic-tag-folding)) + (semantic-overlays-at (point-at-eol))) + (lambda (x y) + (< (semantic-overlay-size x) (semantic-overlay-size y))))))) + +(defun semantic-tag-folding-set-overlay-visibility (ov fold &optional called-by-reveal-mode) + "Change the visibility of overlay OV. +If FOLD is non-nil OV is hidden. Also changes the fringe bitmap +to indcate the new state. CALLED-BY-REVEAL-MODE is t when this +overlay is folded or expanded by reveal mode." + (when (and (semantic-overlay-p ov) + ;; if reveal mode is hiding an overlay, it should've been folded by reveal mode + (or (not called-by-reveal-mode) (not fold) (semantic-overlay-get ov 'semantic-tag-reveal-mode))) + (semantic-overlay-put ov 'invisible (if fold 'semantic-tag-fold)) + (let ((tag (semantic-overlay-get ov 'semantic-tag-folding-tag))) + + (when tag + (semantic-tag-folding-set-fold-state tag (semantic-overlay-get ov 'semantic-tag-folding-comment-overlay) (if fold 'fold 'show)) + (if fold + (put-text-property 0 1 'display '((left-fringe semantic-tag-folding-folded) "+") + (semantic-overlay-get ov 'semantic-tag-folding-marker-string)) + ;; show + (put-text-property 0 1 'display '((left-fringe semantic-tag-folding-unfolded) "-") + (semantic-overlay-get ov 'semantic-tag-folding-marker-string)) + (semantic-overlay-put ov 'semantic-tag-reveal-mode called-by-reveal-mode) + (semantic-tag-folding-highlight-overlay ov)))))) + +;; set the function to be called when regions are revealed and hidden by reveal-mode. +(put 'semantic-tag-fold 'reveal-toggle-invisible 'semantic-tag-folding-set-overlay-visibility-for-reveal-mode) + +(defun semantic-tag-folding-set-overlay-visibility-for-reveal-mode (ov fold) +"Fold/unfold function called from reveal mode. +OV is the overlay whose state must change, FOLD is non-nil to fold the overlay." + (let ((semantic-tag-folding-tag-higlight-time + (if semantic-tag-folding-highlight-tags-shown-by-reveal-mode + semantic-tag-folding-tag-higlight-time + nil))) + (semantic-tag-folding-set-overlay-visibility ov fold t))) + +(defun semantic-tag-folding-highlight-overlay (ov) + "Temporarily draw attention to the overlay OV. +This is done by drawing a vertical bar in the fringe for the +lines that OV extends over for +`semantic-tag-folding-tag-higlight-time' seconds." + (when semantic-tag-folding-tag-higlight-time + (let ((overlays nil)) + (labels ((make-fringe (fringe string) + (setq overlays (cons (semantic-make-overlay (point-at-bol) (+ 1(point-at-bol))) overlays) ) + (semantic-overlay-put (car overlays) 'before-string + (propertize string 'display `(left-fringe ,fringe))))) + (save-excursion + (goto-char (semantic-overlay-start ov)) + (make-fringe 'semantic-tag-folding-highlight-top "+") + (forward-line) + (while (< (point-at-eol) (semantic-overlay-end ov)) + (make-fringe 'semantic-tag-folding-highlight-middle "|") + (forward-line)) + (make-fringe 'semantic-tag-folding-highlight-bottom "+")) + (sit-for semantic-tag-folding-tag-higlight-time) + (mapc 'semantic-overlay-delete overlays))))) + +(defun semantic-tag-folding-click (event) + "Handle fringe click EVENT by folding/unfolding blocks." + (interactive "e") + (when (event-start event) + (let* ((start (event-start event)) + (point (posn-point start)) + (window (posn-window start))) + (select-window window) + (goto-char point) + (let ((bitmaps (fringe-bitmaps-at-pos point))) + (if (member 'semantic-tag-folding-folded bitmaps) + (semantic-tag-folding-set-overlay-visibility (semantic-tag-folding-get-overlay) nil)) + (if (member 'semantic-tag-folding-unfolded bitmaps) + (semantic-tag-folding-set-overlay-visibility (semantic-tag-folding-get-overlay) t)))))) + +(provide 'semantic-tag-folding) +;;; semantic-tag-folding.el ends here diff --git a/cedet-bzr/trunk/contrib/wisent-csharp-wy.el b/cedet-bzr/trunk/contrib/wisent-csharp-wy.el new file mode 100644 index 0000000000000000000000000000000000000000..a1020fe0cfbb7c43a8884e77bebfa43e6b3d2fd3 GIT binary patch literal 25005 zcmd^I{c;;ej=z7`bq~=|c_Vrg%C_W>oUCY%mPR%&6seGu6Q9>njmVKSXOg3ENZHyr z_iFn{_X_s|&>xuLkd{AEw^f&l%^@0%Mxy~V8fcE6Jb7Z?rg<`%)d%@SJiV;Hz1~Ph zre3d`XUQa)#+rso$kQ`@^^Ht*frGW+pW zIyAkDbaa&s-Y`~UKD)@K+vYHy&eDnLrC0GAvop@=^WV?2>3KFu@?EAkO=!Grkh;HB zzxSXHg7+V9-@m`T_3)c}pif9YB-d}V=`i0m`SoNLza!Ys_3mD8+uUvrZ}X7-i!^68 z4L&E?jAk%1*_nCPJ~q)f9^@MV?{b=*PvbG6o=ua)qxCHl=~b*)To3CfIy3gotJriJ2wSaZZEL7aC9mIWkA{(@{Dwt#pt~ z^2EeBQMe>vegP?;UUQEF;-P1GFb5e3$Fnq>d~1>v6sP7YndbOzwlD@!pkXY{Z%sBe zwRlFHPfd17{qBI>YcqmieOEPkH(8o}nB>r4p@{B9c8LjHfFh>&HXV)3X=3JiayB1* zOJhSK=BH-=dFQxq8ts?nr$)EiX!l=|R$rQcM$~oyL>dwdMXW>h3*9 zm&Vg(tJ!}^6F6x0+flD)4mw@aFh`AUzqxnZYIM!fardaxi#CkuK}J@*#KsZ{pMlso zny&|hL*b8t5rnv3`SA<$E-O8{osh=H9>D*)le-Y~QqHGT-->zNRE*$)H; zmg=6SI*4b33nH-B=x&!fE`qA&#rHRoCEwHm!J5tb~| z>9l)61^~l5&zZ%&PP^Z19|tyv$siraJk|YZuX)%Av&CA)^AXE+KRRd}w*tvwGD^+xEoH(g~RpwH!3tWPYmYorwIP`Lh!E*(i&7 zkb_pI5k`O)Vj`WeY5*m%tTCKi)KIH@o-m1LQ6O-h%~)8^I{hH7^o)o$4?I)sU+pZL zhoxDjJi}&~T`GcVDlq|+OwZy0uK^mO?m=TOECV+~Bs?s&LMCBwRdRcNq%XEZ8r|1-jN=5lDwrZ?dT`pBRl=CL@c@U^gkkH$JngkMnv45 zqo~{HE16?6B0|`y0wHXr({#ua?!1V)-R6FnFG7ZR%+taS)Hn=NyPP6&5v@MzHeYC^ z#vU*OYoZ)S-A*6eDFxxZen4CtLBpGSo)KunFq??7K^^uxZKZ9~gqOM-g|(h0!A7DkDFl!)SDdEIem7Y9?E2D9uK)5# zPi{UDe{!rXXzmpJxYbcy&nJTm@1>91Wj{Tij@ij)N0j0996QA!M=vs;UmbPcVFRLu&thf|6TLFZB-I*E9~j25v^8KHhF!jY854{YGIwNXmDCy z)kHSo;jj?%8!vIb`@4C?fl6%$o^p((4-Ht7*XEVoKm+`Bn4Pu2K$tAjh!PnkAZOPe zQ2<`uegh9UO6_n^Q)eCA7QM?^Gr)!oP(1kc?|}{HPdxcT6B}7&llU#)qyku_uj1a! zZyblc_q*$RQQzO4t`ziF`%F(>F=c&iRg-vU-_pcxj+lRhb4fZ*XE@%l{+n8TYxD7= z@60SS^zitOqE0^F6VPzkB&wQZTd8Ofn^W|x5x$Z|eyvy8ZD*Bau(ede-Hut&==NFP z)EEqsJU1f*h$FQ^g7CaXeqx+Ep{MyJGG&Qva-oPCNRDTIm?Q5P`QQd`U%$+-5Y|u9 zem+X-mq-q!l5g9rpCSv^jH1Xqe)vE+&a;%ygPyV)(;XsxTX748^G8O851L`04BeA= zq}<1z$<^(Sv1Dr3`^5dxLN? zq#JxM#ivVC__lH+L4hR9m9rT>SWvNo&w+RffqF=u_(lhUUXJ3^WVBn@@i<;l(_3vi zHk0FN?@?x_=vo-Xh7^h~ckb|AbsMFVe8W)=ISA>a1@x!SwPolg$tK&SQ7OE7IES*^W{w90T`g*7}rlrR4Z1o}AC)^TgO}Y)&Vzm1)~q_6AAf6-ir?kZ-5&%x8VZ3P{n9LhpNpWFY~mWhw0_q?Tf4XR(2X+1b$~7!m;c5z=J@ zt1Fg!(P4A1gVYQ)_(LXYmkzeA2sB>^qjwco`^^{B^{zrgbp{ZhfiSg0B+h%%wXV7{ znEzs~>VZT61{k#ButA952G~){(fvlzB`EzN+Ui0pZwvh6@SlNr`03lT<7-kVz_LTb?AbDG9hqI-&>Vij#M|)v$y8uph?sFiG!+ zsb)E0pSW1cbFOl+_9s=jyHxVCQ?0o|om2tqw%8~nkTtYZ>B@}kY^@xvK&+_s3h9Mp zso9kyH4*(Gy%L2Z-Lxu-52zOFwN-gG5N|2;00glyu|8#;{D|g#3_|vfKa5OnBRCN8 zFR&bORQ3aiY-0Fi&j)|VZqj;C?_s?MCg&_(8xQQg+4=LPP}oe$n^V}okUOUox!-n* z`=qaRn#Mi^)Z_A{A!_C+RVNKq15jr~t(l9B2DSJu{^Cla;ld#Vg*qYq%{4((^0)wq zPpS_2y`OI*&jEnuY7G_ZVGF0qBdCRy` zmT9)}f1mzHVM?A*gfb|HvnQaWyYUqyDj69m5E)ktqUw)vl^(iTfVz&cMI3zEdX25l z7*~nG!vX$Kp#>jQRxw;ffj&^p1Rs6F33?+H5GrTbT8FJ{*hQibR4t6uD5Q|jB?yC> zgOLh@p^Adx0)p|i0z6S=z(^ecA6Ri?bNoo%H}`%1-blLM8n1!BaF4Z7io;|)y7i|T zf~gRwz=Q!QDVP9@swJ?Zep$c7Wpo^!IpcUju^iEqQj?IUq7y$!C4(PrRfC_Yj3Pk) z#5ELwg-6m)Jt&UnIJ4n?!O#y&QxRHR>S7AgjhJ%vYX*zH3bGV!8C=1Ftu%78nwOf5 z2&+5^sRVI1H(k3sAb53x!Z~3?MS|f8WyK7x$GkboFOhek!a;t5dpsauYB)6FC}nQn zH@7!soYL%X*fTIdS8=Yr;8wHoX)ILq3d2`S6iY-pi`h!)1c#?J+EB4_C2Xw)rKSpO zxH}&*lz3Wuh0UEuDB}bc7$q=XloSnDgz)YWd~|uhjWu(7ONLZP0PuYjC`OUm2`-4u z76)Ol-NuR?+;};Lfx5^@6(~fP+r!B5^n6Ztk(fAX9>(RM19L32Y4H~th|vPTvglyK zP58DrHc=p#OXVD-?dc91FAq8IGE9FDlme7!g>QT}Pl&-6j`bWkBZK4mNx&}l)yUMD zTCGbJithG-d@Grz0QG89f30vlMHT)?55lm)tN`dD1f$BW9)9HFHb3$0B(yt4ay-#s z2$`fO1wi2`eB;nZ8bUxM-#Of}O`U!J5dA2R2)X=&es=8?huKbi2$5$A#4KEnP4We? zmwjly@DGj_pVkEGh)NJ7Jh1K`2BMYzffxvukk?o3tTh^A8TgfhdZT zMhfNRiQ+kV!X*S=rv^U5D#_(JP7IvT#R6I_t|y-iaqDhC#XITdizX*3mm^KImlUCa zeu);5mk=W8BLY@RSLtoYN4wzIxCnn5zs2$491wN&4uCrD>D1H7U^E{l=Jo>$Jj^=C z#qdGcta#Eg=9e2~lSTpUFwsi+u z{#YvqvT1S-FULY1;Ev{P`F@|+!L~mvLDmD)M(81^l{He`c+rQfT4T=c zmAcT+n#2)(RM2`x^+y|LV%wxZ^8ty$Ko|K#LQM;++6h)M%F6i9!f05V1&(MA#VEqy zViA7ba)MYK={LlUVc#Yr<{-bYZ7bmuwGgjDnzfq5%g`gY%U6;oOnus?NapiS1?6G# z;?B9yOdLpIhLnJ!CxS?gMnm{^QxJ~WvY1J^$#!N!L7JRpG_EbkC1ALKqm*!>pFA)v z`q73KDBZUT91+_gXsV_vS1^KyrU~BYOzUi$b|z%g7X9L_KjA+K8gXgr_9lP#K7;f| zvmUr(sT5ha1&NTAHU9(*S41{NuHE8El*(?PWM45~zeU(We)P*po=!{aF7l#S!Holx zeOQpXYhVV5`!5^1dh+V%TQt5Z4C3P^AuBFUo>cW0)4&gPmb3;#TSlR{j#PE?XZ;)5 zhTBkRA;>VuhX_}}9EoahkTJC*Rh{M@-P=q{by zSnt2w+!xLs#YqiOh_5xdZO>gRcpu_?V7!}${9m;{6UX=C)y)yUAfBF$eg{s ze3ZutlK&)zgVI$nL8AY%UZ*t3Qs1*2k9fL?2f~HJB|e5I$gek+AOx8#BU02!x~32e z(HG!c!87OsAr}2g0XdAjg1zFTV?JMq9qh~G)8Fr3-akaDceNevNSxk>I)Nn2P08-@#E zB^vtK4}Kakq!bLCtNetTxT>rShFTUimrzs%vGPJmr~~3!mGFn_Tk_!RhOTPnt8BWw zr%QBn$4dID@}#Tkx!Pc;?$OmOtrBjkK5@cFV||n;8s-8%j50Wjn{ff>MKf4_G{JoJb1kdW@$;;x%k^ql`FsEG|Yh(UnyYg zB7&Y4Q!bw|L%>g6X;RKy*J@<_d|Q&hR7%6N1OJ>oTTFJ+kYNufu1{5$&s`$&msZ{g zZtc2JJ?=(}P|Xp|A)M=~#Vy%GJAak6qTq+Lfs>qzi3vSmsTW42@SFyh`UqVWF!o}m zyN$u?#Q~N(tp|K|$RETHE4Vr%O>~znq!Lc?;^?PY8y3r*PD*D8-hY(R$o{L4(BJ)MNvX>UssuYW0 z#*+J}TqL^-NvYg^Bqp9WSB7Y%lk}J4sY;qvi(Ab*ZxV|4PdfsCeg;46NjFP3 z2hCYf(&~w-+?$&2=P1gD6IfNn3W;l7Jp<9Yjrb9n>)<@hufoQvXUI#r;!OXU=?(l= z)1?#;3{_lXDI_u;6=qYu4_2H&F&3iN&FSq#LTQo*y=#SU(i^7t$=k_e8w}B|Z*D*0 zoci+E=VN&NJiZ=s481!3@*@yiUpD$;(z0)rGAg=-#{HxiOA*m~j;?hsL$MbovHNfl z5Js~Ev$$5l&iOod6PFttnJ>4Pb&d|rjLZ|04@as%pRV>YR>ftMPZ<_byBal2yXppI zk*A_9xmQB|VcVvhG2jVTpZ{*e;~%w+-jK&2Wxv8;+no>yc9PRYaX1ZDr}*-6bZyor zSoZw6ngC;_KH~}d?<)kh&iGYl| z#_*#~)3q&9SC-a70ksqkaz1kYZ(eDH?HR(=RLw-y`uRdpIBr*pi~iYHmm@jmzgC|d)S&Uo>+ z9_5VQpzYr1QqNAMUR3CTe;uIw3huxqbtg}eujs4Z14ClRJID93(Fi*i-k*;*nB%>c zL;G5PysS^Z*`Tlp{F-l8i26mAy)o;SNxZ-w70w~O$x8-utAtGvi--#JP4UU6VmaO9 zg~z(*u`d7g0Eff~y>8hTnK$qvuWQ^b<+qs2+s-36EBChZTQxWd{PPHSkGdo5{>=rD Wpck;0!SqitB$Huo@ZSIA*8c*2<)gX) literal 0 HcmV?d00001 diff --git a/cedet-bzr/trunk/contrib/wisent-csharp.el b/cedet-bzr/trunk/contrib/wisent-csharp.el new file mode 100644 index 0000000..3450187 --- /dev/null +++ b/cedet-bzr/trunk/contrib/wisent-csharp.el @@ -0,0 +1,374 @@ +;;; wisent-csharp.el --- LALR grammar for C# +;; +;; Some Changes Copyright (C) 2006, 2010 Eric M. Ludlam +;; Copyright (C) 2003, 2007 David Shilvock + +;; Time-stamp: <2010-09-15 16:21:00 (lluis)> +;; +;; Author: David Shilvock +;; Maintainer: David Shilvock +;; Created: November 2003 +;; Keywords: syntax +;; +;; This file is not part of GNU Emacs. +;; +;; 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 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., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; This file contains the csharp parser created from the grammar +;; specified in wisent-csharp.wy file. It also has some support code. +;; A bunch of this is ripped from semantic/wisent/java-tags.el (David Ponce) +;; +;;; Code: + +(require 'semantic/wisent) +(require 'semantic/format) +(require 'semantic/ctxt) +(require 'wisent-csharp-wy) + + +;;;---------------------------------------------------------------------- +;;; * Lexer/Parser Support Code +;;;---------------------------------------------------------------------- + +(defconst wysent-csharp-number-re + (eval-when-compile + (concat "\\(" + "\\<[0-9]+[.][0-9]+\\([eE][-+]?[0-9]+\\)?[fFdD]?\\>" + "\\|" + "\\<[0-9]+[.][eE][-+]?[0-9]+[fFdD]?\\>" + "\\|" + "\\<[0-9]+[.][fFdD]\\>" + "\\|" + "\\<[0-9]+[.]" + "\\|" + "[.][0-9]+\\([eE][-+]?[0-9]+\\)?[fFdD]?\\>" + "\\|" + "\\<[0-9]+[eE][-+]?[0-9]+[fFdD]?\\>" + "\\|" + "\\<0[xX][0-9a-fA-F]+[lL]?\\>" + "\\|" + "\\<[0-9]+[lLfFdD]?\\>" + "\\)" + )) + "Lexer regexp to match Java number terminals. +Following is the specification of Java number literals. + +DECIMAL_LITERAL: + [1-9][0-9]* + ; +HEX_LITERAL: + 0[xX][0-9a-fA-F]+ + ; +OCTAL_LITERAL: + 0[0-7]* + ; +INTEGER_LITERAL: + [lL]? + | [lL]? + | [lL]? + ; +EXPONENT: + [eE][+-]?[09]+ + ; +FLOATING_POINT_LITERAL: + [0-9]+[.][0-9]*?[fFdD]? + | [.][0-9]+?[fFdD]? + | [0-9]+[fFdD]? + | [0-9]+?[fFdD] + ;") + +(defconst wisent-csharp-string-re "@?['\"]" + "Regexp matching beginning of a csharp string.") + +(defun wisent-csharp-expand-tag (tag) + "Expand TAG into a list of equivalent tags, or nil. +Expand multiple variable declarations in the same statement, that is +tags of class `variable' whose name is equal to a list of elements of +the form (NAME DEFAULT START . END). NAME is a variable name. DEFAULT is the +variable default value. START and END are the bounds in the declaration, +related to this variable NAME." + (let (elts elt clone def start end xpand) + (when (and (eq 'variable (semantic-tag-class tag)) + (consp (setq elts (semantic-tag-name tag)))) + ;; There are multiple names in the same variable declaration. + (while elts + ;; For each name element, clone the initial tag and give it + ;; the name of the element. + (setq elt (car elts) + elts (cdr elts) + clone (semantic-tag-clone tag (car elt)) + def (if elt (nth 1 elt) nil) + start (if elts (car (nth 2 elt)) (semantic-tag-start tag)) + end (if xpand (cdr (nth 2 elt)) (semantic-tag-end tag)) + xpand (cons clone xpand)) + ;; Set the bounds of the cloned tag with those of the name + ;; element. + (semantic-tag-set-bounds clone start end) + ;; i don't think this is doing the right thing + (if def + (semantic-tag-put-attribute clone :default-value def)) + ) + xpand))) + +;;;---------------------------------------------------------------------- +;;; * Semantic Support Code +;;;---------------------------------------------------------------------- + +;; types - special formatting for ref/out parameters +(define-mode-overload-implementation semantic-format-tag-type + csharp-mode (tag color) + "" + (let ((text (semantic-format-tag-type-default tag color)) + (mods (semantic-tag-get-attribute tag 'typemodifiers))) + (concat text (or (and (member "ref" mods) "&") + (and (member "out" mods) "*"))))) + +;; special formatting for certain csharp tags +(define-mode-overload-implementation semantic-format-tag-uml-prototype + csharp-mode (tag &optional parent color) + "" + (let ((property-p (semantic-tag-get-attribute tag 'property)) + (accessors (semantic-tag-get-attribute tag 'accessors))) + (cond + ;; properties: protection propname {get,set}: type + ((and property-p accessors) + (let ((name (semantic-format-tag-name tag parent color)) + (type (semantic--format-tag-uml-type tag color)) + (prot (semantic-format-tag-uml-protection tag parent color)) + (accesstext nil) + (text nil)) + (setq accesstext + (concat " {" + (mapconcat + #'(lambda (tag) + (semantic--format-colorize-text + (semantic-tag-name tag) 'function)) + accessors ",") + "}")) + (setq text (concat prot name accesstext type)) + (if color + (setq text (semantic--format-uml-post-colorize text tag parent))) + text)) + ;; rest - default format + (t + (semantic-format-tag-uml-prototype-default tag parent color))))) + +;; symbols modifiers that equate to abstract +(define-mode-overload-implementation semantic-tag-abstract + csharp-mode (tag &optional parent) + "Return non nil if TAG is abstract." + (let ((mods (semantic-tag-modifiers tag)) + (abs nil)) + (while (and (not abs) mods) + (if (stringp (car mods)) + (setq abs (or (string= (car mods) "abstract") + (string= (car mods) "virtual") + (string= (car mods) "override")))) + (setq mods (cdr mods))) + abs)) + +(defvar wisent-csharp-internal-is-protected-p t + "Says whether to show tags with internal protection as protected. +If non-nil any tags marked internal will be displayed as if they were +protected.") + +;; map tag protection string to symbol +(define-mode-overload-implementation semantic-tag-protection + csharp-mode (tag &optional parent) + "" + (let ((mods (semantic-tag-modifiers tag)) + (prot nil)) + (while (and (not prot) mods) + (if (stringp (car mods)) + (let ((s (car mods))) + (setq prot + ;; A few silly defaults to get things started. + (cond ((string= s "public") + 'public) + ((string= s "private") + 'private) + ((string= s "protected") + 'protected) + ((string= s "internal") + (if wisent-csharp-internal-is-protected-p + 'protected 'internal)))))) + (setq mods (cdr mods))) + prot)) + + +;; override semantic-format-uml-protection-to-string to return "%" for 'internal + +;; add to semantic-format-tag-protection-image-alist for 'internal + + +;; Local context +(define-mode-overload-implementation semantic-get-local-variables + csharp-mode () + "Get local values from a specific context. +Parse the current context for `local_variable_declaration' nonterminals to +collect tags, such as local variables or prototypes. +This function overrides `get-local-variables'." + (let ((vars nil) + ;; We want nothing to do with funny syntaxing while doing this. + (semantic-unmatched-syntax-hook nil) + (origp (point)) + start end) + (save-excursion + (while (not (semantic-up-context (point) 'function)) + (save-excursion + (forward-char 1) + (setq start (point) + end (min (progn (semantic-end-of-context) (point)) origp)) + (setq vars + (append (semantic-parse-region + start end + ;;'field_declaration + 'local_variable_declaration + 0 t) + vars)))) + vars))) + + +;;;---------------------------------------------------------------------- +;;; * Lexer +;;;---------------------------------------------------------------------- + +(define-lex-regex-analyzer wisent-csharp-lex-ignore-region + "Ignore # type macros for C sharp." + "\\s-*#region\\>" + (goto-char (match-end 0)) + (forward-word 1) + (setq semantic-lex-end-point (point)) + nil) + +(define-lex-regex-analyzer wisent-csharp-lex-ignore-endregion + "Ignore # type macros for C sharp." + "\\s-*#endregion\\>" + (setq semantic-lex-end-point (match-end 0)) + nil) + +(define-lex-analyzer wisent-csharp-lex-string + "Detect and create a string token for csharp strings." + (looking-at wisent-csharp-string-re) + (semantic-lex-push-token + (semantic-lex-token + 'STRING_LITERAL (point) + (save-excursion + (semantic-lex-unterminated-syntax-protection 'STRING_LITERAL + ;; skip over "@" character if any + (goto-char (1- (match-end 0))) + (forward-sexp 1) + (point)))))) + +(define-lex-simple-regex-analyzer wisent-csharp-lex-number + "Detect and create number tokens." + semantic-lex-number-expression 'NUMBER_LITERAL) + +(define-lex-regex-analyzer wisent-csharp-lex-symbol + "Detect and create identifier or keyword tokens." + "\\(\\sw\\|\\s_\\)+" + (semantic-lex-push-token + (semantic-lex-token + (or (semantic-lex-keyword-p (match-string 0)) + 'IDENTIFIER) + (match-beginning 0) + (match-end 0)))) + +(define-lex-block-analyzer wisent-csharp-lex-blocks + "Detect and create a open, close or block token." + (PAREN_BLOCK ("(" LPAREN) (")" RPAREN)) + (BRACE_BLOCK ("{" LBRACE) ("}" RBRACE)) + (BRACK_BLOCK ("[" LBRACK) ("]" RBRACK)) + ) + +(define-lex wisent-csharp-lexer + "Lexical analyzer for csharp code. +It ignores whitespaces, newlines and comments." + semantic-lex-ignore-whitespace + semantic-lex-ignore-newline + semantic-lex-ignore-comments + wisent-csharp-lex-ignore-region + wisent-csharp-lex-ignore-endregion + wisent-csharp-lex-number + wisent-csharp-lex-string + wisent-csharp-lex-symbol + semantic-lex-punctuation-type + wisent-csharp-lex-blocks + semantic-lex-default-action) + + +;;;---------------------------------------------------------------------- +;;; * Parser +;;;---------------------------------------------------------------------- + +;;;###autoload +(defun wisent-csharp-default-setup () + (wisent-csharp-wy--install-parser) + (setq + ;; Lexical analysis + semantic-lex-number-expression wysent-csharp-number-re + semantic-lex-analyzer #'wisent-csharp-lexer + ;; Parsing + semantic-tag-expand-function 'wisent-csharp-expand-tag + ;; Environment + semantic-type-relation-separator-character '(".") + semantic-command-separation-character ";" + ;; Imenu setup + semantic-imenu-summary-function 'semantic-format-tag-uml-prototype + imenu-create-index-function 'semantic-create-imenu-index + ;; speedbar and imenu bucket names + ;; .. in type parts + semantic-symbol->name-assoc-list-for-type-parts + '((type . "Types") + (variable . "Variables") + (function . "Methods")) + ;; .. everywhere + semantic-symbol->name-assoc-list + (append semantic-symbol->name-assoc-list-for-type-parts + '((include . "Using"))) + ;; navigation inside 'type children + senator-step-at-tag-classes '(function variable) + )) + +;;;###autoload +(add-hook 'csharp-mode-hook #'wisent-csharp-default-setup) + + +;;;---------------------------------------------------------------------- +;;; * Test +;;;---------------------------------------------------------------------- + +(defun wisent-csharp-lex-buffer (&optional arg) + "Run `wisent-csharp-lexer' on current buffer." + (interactive "P") + (semantic-lex-init) + (setq semantic-lex-analyzer 'wisent-csharp-lexer) + (let ((token-stream + (semantic-lex (point-min) (point-max) + (if arg (prefix-numeric-value arg))))) + (with-current-buffer + (get-buffer-create "*wisent-csharp-lexer*") + (erase-buffer) + (pp token-stream (current-buffer)) + (goto-char (point-min)) + (pop-to-buffer (current-buffer))))) + + +(provide 'wisent-csharp) + +;;; wisent-csharp.el ends here diff --git a/cedet-bzr/trunk/contrib/wisent-csharp.wy b/cedet-bzr/trunk/contrib/wisent-csharp.wy new file mode 100644 index 0000000..c9c8bfc --- /dev/null +++ b/cedet-bzr/trunk/contrib/wisent-csharp.wy @@ -0,0 +1,1257 @@ +;;; wisent-csharp.wy -- LALR grammar for C# +;; +;; Copyright (C) 2003 David Shilvock +;; Time-stamp: <2003-12-08 19:11:48 dave> +;; +;; Author: David Shilvock +;; Maintainer: David Shilvock +;; Created: November 2003 +;; Keywords: syntax +;; +;; This file is not part of GNU Emacs. +;; +;; 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 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., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; This is a LALR parser for the C# language. It tries to follow the C# +;; language definition as closely as possible, but in some cases allows syntax +;; that the compiler would reject. +;; A bunch of this is ripped from wisent-java-tags.wy (David Ponce) + +;;----------- +;; * Settings +;;----------- + +;;%package wisent-csharp-wy + +%languagemode csharp-mode + +;; The default start symbol +%start compilation_unit +;; Alternate entry points - for partial re-parse +%start using_directive +%start namespace_declaration +%start class_declaration +%start const_declaration +%start field_declaration +%start constructor_declaration +%start method_declaration +%start property_declaration +%start indexer_declaration +%start event_declaration +%start fixed_parameter +%start interface_declaration +%start delegate_declaration +;; - Needed by EXPANDFULL clauses +%start namespace_member_declaration +%start class_member_declaration +%start struct_member_declaration +%start interface_member_declaration +%start accessor_declaration +%start event_accessor_declaration +%start formal_parameters +%start indexer_parameters +%start enum_members +;; - Need for semantic-get-local-variables +%start local_variable_declaration +%start local_foreach_declaration + +;;------------------------ +;; * Parenthesis terminals +;;------------------------ +%token LPAREN "(" +%token RPAREN ")" +%token LBRACE "{" +%token RBRACE "}" +%token LBRACK "[" +%token RBRACK "]" + +;;------------------ +;; * Block terminals +;;------------------ +%token PAREN_BLOCK "^(" +%token BRACE_BLOCK "^{" +%token BRACK_BLOCK "^\\[" + +;;--------------------- +;; * Operator terminals +;;--------------------- +%token NOT "!" +%token NOTEQ "!=" +%token MOD "%" +%token MODEQ "%=" +%token AND "&" +%token ANDAND "&&" +%token ANDEQ "&=" +%token MULT "*" +%token MULTEQ "*=" +%token PLUS "+" +%token PLUSPLUS "++" +%token PLUSEQ "+=" +%token COMMA "," +%token MINUS "-" +%token MINUSMINUS "--" +%token MINUSEQ "-=" +%token DOT "." +%token DIV "/" +%token DIVEQ "/=" +%token COLON ":" +%token SEMICOLON ";" +%token DEREF "->" +%token LT "<" +%token LSHIFT "<<" +%token LSHIFTEQ "<<=" +%token LTEQ "<=" +%token EQ "=" +%token EQEQ "==" +%token GT ">" +%token GTEQ ">=" +%token RSHIFT ">>" +%token RSHIFTEQ ">>=" +%token QUESTION "?" +%token XOR "^" +%token XOREQ "^=" +%token OR "|" +%token OREQ "|=" +%token OROR "||" +%token COMP "~" + +;;-------------------- +;; * Literal terminals +;;-------------------- +%token NULL_LITERAL "null" +%token BOOLEAN_LITERAL "false" +%token BOOLEAN_LITERAL "true" +%token IDENTIFIER +%token STRING_LITERAL +%token NUMBER_LITERAL + +;;-------------------- +;; * Keyword terminals +;;-------------------- +%token ABSTRACT "abstract" +%put ABSTRACT summary +"Class|Method declaration modifier: abstract {class|} ..." + +%token ADD "add" +%put ADD summary +"" + +%token AS "as" +%put AS summary +"" + +%token BASE "base" +%put BASE summary +"" + +%token BOOL "bool" +%put BOOL summary +"Primitive logical quantity type (true or false)" + +%token BREAK "break" +%put BREAK summary +"break [