summaryrefslogtreecommitdiffstats
path: root/emacs.d/nxhtml/tests
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2011-03-07 09:04:49 +0100
committerGravatar Tom Willemsen2011-03-07 09:04:49 +0100
commit94d2fc1815a919734353c942f224db1de4b4fcb8 (patch)
tree4168e816ead132bfa3510e272427837c3895f5e2 /emacs.d/nxhtml/tests
parentd0e7674fdb1de12c8de202d4028a5d7ed3669a6e (diff)
downloaddotfiles-94d2fc1815a919734353c942f224db1de4b4fcb8.tar.gz
dotfiles-94d2fc1815a919734353c942f224db1de4b4fcb8.zip
Django, org
* Added nxhtml, mostly for django support. * Changed some org settings.
Diffstat (limited to 'emacs.d/nxhtml/tests')
-rw-r--r--emacs.d/nxhtml/tests/angus77-setup-jde.el90
-rw-r--r--emacs.d/nxhtml/tests/emacstest-suites.el102
-rw-r--r--emacs.d/nxhtml/tests/ert.el2418
-rw-r--r--emacs.d/nxhtml/tests/ert2.el268
-rw-r--r--emacs.d/nxhtml/tests/hfy-test.el102
-rw-r--r--emacs.d/nxhtml/tests/in/3-heights.html42
-rw-r--r--emacs.d/nxhtml/tests/in/400415-index.phtml43
-rw-r--r--emacs.d/nxhtml/tests/in/asp.asp40
-rw-r--r--emacs.d/nxhtml/tests/in/bastien-test.mm38
-rw-r--r--emacs.d/nxhtml/tests/in/bigfile-stringerr-64000.html1850
-rw-r--r--emacs.d/nxhtml/tests/in/blorgit.rb313
-rw-r--r--emacs.d/nxhtml/tests/in/bug-080609.html9
-rw-r--r--emacs.d/nxhtml/tests/in/bug-1908494.php6
-rw-r--r--emacs.d/nxhtml/tests/in/bug-2010-02-17-delgado.mm10
-rw-r--r--emacs.d/nxhtml/tests/in/bug-2010-02-17-delgado.org3
-rw-r--r--emacs.d/nxhtml/tests/in/bug-290364.php66
-rw-r--r--emacs.d/nxhtml/tests/in/bug-300946-index.html24
-rw-r--r--emacs.d/nxhtml/tests/in/bug-311640-index.html24
-rw-r--r--emacs.d/nxhtml/tests/in/bug-311641.php7
-rw-r--r--emacs.d/nxhtml/tests/in/bug-373106-flipbook.html160
-rw-r--r--emacs.d/nxhtml/tests/in/bug-381191-dh-test.el23
-rw-r--r--emacs.d/nxhtml/tests/in/bug-381191-dh-test.php6
-rw-r--r--emacs.d/nxhtml/tests/in/bug-johan-2010-02-12.rhtml22
-rw-r--r--emacs.d/nxhtml/tests/in/bug-johan-2010-02-16.html.haml34
-rw-r--r--emacs.d/nxhtml/tests/in/bug-johan-2010-02-17-2.erb14
-rw-r--r--emacs.d/nxhtml/tests/in/bug-johan-2010-02-17.erb4
-rw-r--r--emacs.d/nxhtml/tests/in/bug261792.ghtml7
-rw-r--r--emacs.d/nxhtml/tests/in/bug271497.el14
-rw-r--r--emacs.d/nxhtml/tests/in/bug271497.txt7
-rw-r--r--emacs.d/nxhtml/tests/in/bug272871.php7
-rw-r--r--emacs.d/nxhtml/tests/in/bug290364-messages.txt97
-rw-r--r--emacs.d/nxhtml/tests/in/bug354363-index.php38
-rw-r--r--emacs.d/nxhtml/tests/in/bug354363-test.php3
-rw-r--r--emacs.d/nxhtml/tests/in/bug369800-load-history.txt9483
-rw-r--r--emacs.d/nxhtml/tests/in/bug370417.php10
-rw-r--r--emacs.d/nxhtml/tests/in/bug381979-2-bad-traceb.txt24
-rw-r--r--emacs.d/nxhtml/tests/in/bug381979-2.php6
-rw-r--r--emacs.d/nxhtml/tests/in/bug381979-svnlib.inc744
-rw-r--r--emacs.d/nxhtml/tests/in/bug384115-bt2.txt11
-rw-r--r--emacs.d/nxhtml/tests/in/bug388729-messages.txt292
-rw-r--r--emacs.d/nxhtml/tests/in/bug388729-nxhtml_test.php2
-rw-r--r--emacs.d/nxhtml/tests/in/bug393137-new.html.erb18
-rw-r--r--emacs.d/nxhtml/tests/in/bug400415-foo.php9
-rw-r--r--emacs.d/nxhtml/tests/in/bug400415-foo2.php9
-rw-r--r--emacs.d/nxhtml/tests/in/bug409183.html14
-rw-r--r--emacs.d/nxhtml/tests/in/bug416505-Body.mxml85
-rw-r--r--emacs.d/nxhtml/tests/in/bug416505-nxhtml.el45
-rw-r--r--emacs.d/nxhtml/tests/in/bug452676.php12
-rw-r--r--emacs.d/nxhtml/tests/in/bug463136.php5
-rw-r--r--emacs.d/nxhtml/tests/in/bug492366-test.php21
-rw-r--r--emacs.d/nxhtml/tests/in/bug495770-heredoc_demo.pl95
-rw-r--r--emacs.d/nxhtml/tests/in/bug505554-nxhtml-download-messages.txt98
-rw-r--r--emacs.d/nxhtml/tests/in/bug505554-sample.html.erb11
-rw-r--r--emacs.d/nxhtml/tests/in/bug505726-foo.html10
-rw-r--r--emacs.d/nxhtml/tests/in/bug509586.ghtml16
-rw-r--r--emacs.d/nxhtml/tests/in/bug523065.jsp9
-rw-r--r--emacs.d/nxhtml/tests/in/bug523065.php6
-rw-r--r--emacs.d/nxhtml/tests/in/bug529133-statemachine.py1491
-rw-r--r--emacs.d/nxhtml/tests/in/bug531328.rhtml1
-rw-r--r--emacs.d/nxhtml/tests/in/bug532500.rhtml7
-rw-r--r--emacs.d/nxhtml/tests/in/bug532759.djhtml17
-rw-r--r--emacs.d/nxhtml/tests/in/bug546027.html17
-rw-r--r--emacs.d/nxhtml/tests/in/bug552789-loremipsum.php10
-rw-r--r--emacs.d/nxhtml/tests/in/bug552789.php20
-rw-r--r--emacs.d/nxhtml/tests/in/bug556832-error-test.py23
-rw-r--r--emacs.d/nxhtml/tests/in/bug557700-2.erb5
-rw-r--r--emacs.d/nxhtml/tests/in/bug557700-3.erb3
-rw-r--r--emacs.d/nxhtml/tests/in/bug557700-4.erb11
-rw-r--r--emacs.d/nxhtml/tests/in/bug557700-5.erb4
-rw-r--r--emacs.d/nxhtml/tests/in/bug557700-6.erb11
-rw-r--r--emacs.d/nxhtml/tests/in/bug557700.erb3
-rw-r--r--emacs.d/nxhtml/tests/in/bug559772-TextHelper.php205
-rw-r--r--emacs.d/nxhtml/tests/in/bug565595.mako12
-rw-r--r--emacs.d/nxhtml/tests/in/bug568178.pl4
-rw-r--r--emacs.d/nxhtml/tests/in/bug568178.sh9
-rw-r--r--emacs.d/nxhtml/tests/in/bug569742-master-end.html37
-rw-r--r--emacs.d/nxhtml/tests/in/ch-2008-07-25-test.html.erb37
-rw-r--r--emacs.d/nxhtml/tests/in/chunks-in-chunks1.php19
-rw-r--r--emacs.d/nxhtml/tests/in/chunks.html63
-rw-r--r--emacs.d/nxhtml/tests/in/cr-lf.el2
-rw-r--r--emacs.d/nxhtml/tests/in/csr-080710-2.html23
-rw-r--r--emacs.d/nxhtml/tests/in/csr-080710.html24
-rw-r--r--emacs.d/nxhtml/tests/in/cvd-080805-ac.php21
-rw-r--r--emacs.d/nxhtml/tests/in/cvd-080805-cc.php18
-rw-r--r--emacs.d/nxhtml/tests/in/drechsler-080517-simple.xml3
-rw-r--r--emacs.d/nxhtml/tests/in/el-070424-duh.xml6
-rw-r--r--emacs.d/nxhtml/tests/in/el-070511-simple.html102
-rw-r--r--emacs.d/nxhtml/tests/in/el-070602-index.php54
-rw-r--r--emacs.d/nxhtml/tests/in/el-070604.html11
-rw-r--r--emacs.d/nxhtml/tests/in/el-070604.php11
-rw-r--r--emacs.d/nxhtml/tests/in/el-070722-comment-error.php6
-rw-r--r--emacs.d/nxhtml/tests/in/el-070722-index-2.el7
-rw-r--r--emacs.d/nxhtml/tests/in/el-070722-index-2.php48
-rw-r--r--emacs.d/nxhtml/tests/in/el-070722-index-noheader.php48
-rw-r--r--emacs.d/nxhtml/tests/in/el-070722-index.php55
-rw-r--r--emacs.d/nxhtml/tests/in/el-071217-foo.html13
-rw-r--r--emacs.d/nxhtml/tests/in/emacswiki-080119.php15
-rw-r--r--emacs.d/nxhtml/tests/in/emacswiki-erb-bug.el36
-rw-r--r--emacs.d/nxhtml/tests/in/err-line38.html768
-rw-r--r--emacs.d/nxhtml/tests/in/eval-in-html.elbin0 -> 22420 bytes
-rw-r--r--emacs.d/nxhtml/tests/in/fontif-err.html339
-rw-r--r--emacs.d/nxhtml/tests/in/fontif-err.php339
-rw-r--r--emacs.d/nxhtml/tests/in/genshi-HelloWorldPage.ghtml10
-rw-r--r--emacs.d/nxhtml/tests/in/genshi-auto-mode.html10
-rw-r--r--emacs.d/nxhtml/tests/in/genshi.ghtml23
-rw-r--r--emacs.d/nxhtml/tests/in/goesele-091110-testnote-orig.mm16
-rw-r--r--emacs.d/nxhtml/tests/in/goesele-091110-testnote-temp.mm16
-rw-r--r--emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm16
-rw-r--r--emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm.org5
-rw-r--r--emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm.org.mm16
-rw-r--r--emacs.d/nxhtml/tests/in/haml1.haml132
-rw-r--r--emacs.d/nxhtml/tests/in/heredoc.php61
-rw-r--r--emacs.d/nxhtml/tests/in/heredoc.pl11
-rw-r--r--emacs.d/nxhtml/tests/in/heredoc.py11
-rw-r--r--emacs.d/nxhtml/tests/in/heredoc.rb8
-rw-r--r--emacs.d/nxhtml/tests/in/heredoc.sh4
-rw-r--r--emacs.d/nxhtml/tests/in/hg-2008-03-22-ajax.xhtml38
-rw-r--r--emacs.d/nxhtml/tests/in/hq-070510-test.php12
-rw-r--r--emacs.d/nxhtml/tests/in/hq-070510-test.php.html44
-rw-r--r--emacs.d/nxhtml/tests/in/hq-070524-bug.php10
-rw-r--r--emacs.d/nxhtml/tests/in/hq-071006-index.php38
-rw-r--r--emacs.d/nxhtml/tests/in/html-syntactic-err-l164.html1474
-rw-r--r--emacs.d/nxhtml/tests/in/ind-0-error.php28
-rw-r--r--emacs.d/nxhtml/tests/in/indent-bug-html-mode.html18
-rw-r--r--emacs.d/nxhtml/tests/in/java.java13
-rw-r--r--emacs.d/nxhtml/tests/in/jcl-080802-index.html.erb16
-rw-r--r--emacs.d/nxhtml/tests/in/jcl-080802-messages_controller.rb57
-rw-r--r--emacs.d/nxhtml/tests/in/jj-081226.html26
-rw-r--r--emacs.d/nxhtml/tests/in/josh-091115-cancer_summary.xsl490
-rw-r--r--emacs.d/nxhtml/tests/in/jump-parse.html7
-rw-r--r--emacs.d/nxhtml/tests/in/jump-parse.rhtml9
-rw-r--r--emacs.d/nxhtml/tests/in/kp-080604.php4
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-1.html13
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-2.html174
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-2j.html174
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-3.html61
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-4.html58
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-5.html20
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-6.html58
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-7.html56
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-8.html57
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-9.html57
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-a-notabs.html57
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-a.html57
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-b.html55
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-c.html52
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-d.html51
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-e.html50
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-f.html49
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-g.html39
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-h.html27
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-i.html19
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-j.html19
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing-k.html19
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing.css36
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing.html174
-rw-r--r--emacs.d/nxhtml/tests/in/kubica-080516-freezing.txt10
-rw-r--r--emacs.d/nxhtml/tests/in/kwalo-080930.php23
-rw-r--r--emacs.d/nxhtml/tests/in/latex-clojre-mumamo-test.lclj17
-rw-r--r--emacs.d/nxhtml/tests/in/lg-080813-div.html16
-rw-r--r--emacs.d/nxhtml/tests/in/lg-080813-label.html15
-rw-r--r--emacs.d/nxhtml/tests/in/long-lines.txt1
-rw-r--r--emacs.d/nxhtml/tests/in/markdown.markdown16
-rw-r--r--emacs.d/nxhtml/tests/in/mason.mason46
-rw-r--r--emacs.d/nxhtml/tests/in/menu-err.txt10
-rw-r--r--emacs.d/nxhtml/tests/in/mjt-feed.html86
-rw-r--r--emacs.d/nxhtml/tests/in/mjt-imagesearch.html46
-rw-r--r--emacs.d/nxhtml/tests/in/mjt-minimal.html11
-rw-r--r--emacs.d/nxhtml/tests/in/mumamo-and-org.org20
-rw-r--r--emacs.d/nxhtml/tests/in/mumamo-and-org.org.mm45
-rw-r--r--emacs.d/nxhtml/tests/in/ng-080309-read-url.html11
-rw-r--r--emacs.d/nxhtml/tests/in/no-php-end-2.php18
-rw-r--r--emacs.d/nxhtml/tests/in/no-php-end-2.php-log.txt312
-rw-r--r--emacs.d/nxhtml/tests/in/no-php-end-2.php-log2.txt238
-rw-r--r--emacs.d/nxhtml/tests/in/no-php-end-3.php18
-rw-r--r--emacs.d/nxhtml/tests/in/no-php-end-4.php18
-rw-r--r--emacs.d/nxhtml/tests/in/no-php-end.php4
-rw-r--r--emacs.d/nxhtml/tests/in/nojump-parse.html9
-rw-r--r--emacs.d/nxhtml/tests/in/noweb1.now38
-rw-r--r--emacs.d/nxhtml/tests/in/nutshell.mako27
-rw-r--r--emacs.d/nxhtml/tests/in/nxml-bug.html11
-rw-r--r--emacs.d/nxhtml/tests/in/nxml-indent-2.html134
-rw-r--r--emacs.d/nxhtml/tests/in/nxml-indent-3.html134
-rw-r--r--emacs.d/nxhtml/tests/in/nxml-indent-noerr1.html192
-rw-r--r--emacs.d/nxhtml/tests/in/nxml-indent.el1
-rw-r--r--emacs.d/nxhtml/tests/in/nxml-indent.html192
-rw-r--r--emacs.d/nxhtml/tests/in/only-html.html11
-rw-r--r--emacs.d/nxhtml/tests/in/only-php.php10
-rw-r--r--emacs.d/nxhtml/tests/in/pavel-071116.djhtml31
-rw-r--r--emacs.d/nxhtml/tests/in/php-parseable.php11
-rw-r--r--emacs.d/nxhtml/tests/in/question43320.html35
-rw-r--r--emacs.d/nxhtml/tests/in/question44504-folding.html28
-rw-r--r--emacs.d/nxhtml/tests/in/question49234.sh41
-rw-r--r--emacs.d/nxhtml/tests/in/rgr-030809-indexbody.php57
-rw-r--r--emacs.d/nxhtml/tests/in/rgr-080307.php2
-rw-r--r--emacs.d/nxhtml/tests/in/rgr-080308-header-2.php56
-rw-r--r--emacs.d/nxhtml/tests/in/rgr-080308-header.php56
-rw-r--r--emacs.d/nxhtml/tests/in/rgr-080308-indexbody.php57
-rw-r--r--emacs.d/nxhtml/tests/in/rr-090524-header.php76
-rw-r--r--emacs.d/nxhtml/tests/in/rr-090923-header.php101
-rw-r--r--emacs.d/nxhtml/tests/in/rr-address-090304.php4
-rw-r--r--emacs.d/nxhtml/tests/in/rr-address-nxhtml.errbin0 -> 6647 bytes
-rw-r--r--emacs.d/nxhtml/tests/in/rr-min8.php6
-rw-r--r--emacs.d/nxhtml/tests/in/ryan-091104-literal.tpl148
-rw-r--r--emacs.d/nxhtml/tests/in/ryan-091111-wrong-side.tpl18
-rw-r--r--emacs.d/nxhtml/tests/in/schemas.xml3
-rw-r--r--emacs.d/nxhtml/tests/in/sd-080803-test.php14
-rw-r--r--emacs.d/nxhtml/tests/in/senny-091118.htm247
-rw-r--r--emacs.d/nxhtml/tests/in/sheit-2007-12-26.php9
-rw-r--r--emacs.d/nxhtml/tests/in/short-tags.php3
-rw-r--r--emacs.d/nxhtml/tests/in/single-question-sign.html11
-rw-r--r--emacs.d/nxhtml/tests/in/ssjs.ssjs9
-rw-r--r--emacs.d/nxhtml/tests/in/string-bug.php1
-rw-r--r--emacs.d/nxhtml/tests/in/style=.html12
-rw-r--r--emacs.d/nxhtml/tests/in/style=string-font.html18
-rw-r--r--emacs.d/nxhtml/tests/in/svg.svg1
-rw-r--r--emacs.d/nxhtml/tests/in/temp2.php48
-rw-r--r--emacs.d/nxhtml/tests/in/temp3.html44
-rw-r--r--emacs.d/nxhtml/tests/in/test-only-nxml.my-xhtml38
-rw-r--r--emacs.d/nxhtml/tests/in/test.tt11
-rw-r--r--emacs.d/nxhtml/tests/in/tut1.jsp5
-rw-r--r--emacs.d/nxhtml/tests/in/utf8-problem.el7
-rw-r--r--emacs.d/nxhtml/tests/in/wiki-080606-indent.php18
-rw-r--r--emacs.d/nxhtml/tests/in/wiki-080708-ind-problem.rhtml5
-rw-r--r--emacs.d/nxhtml/tests/in/wiki-090804-js.html32
-rw-r--r--emacs.d/nxhtml/tests/in/wiki-2008-01-30.rhtml1
-rw-r--r--emacs.d/nxhtml/tests/in/wiki-comments.php20
-rw-r--r--emacs.d/nxhtml/tests/in/wiki-strange-hili-080629.html5
-rw-r--r--emacs.d/nxhtml/tests/in/xml-as-string.php54
-rw-r--r--emacs.d/nxhtml/tests/in/ygne-2008-02-07-hotproperty.html.php1967
-rw-r--r--emacs.d/nxhtml/tests/in/zero-pi.html11
-rw-r--r--emacs.d/nxhtml/tests/in/zn-090529-doxysample.php37
-rw-r--r--emacs.d/nxhtml/tests/inemacs/bug1013.el35
-rw-r--r--emacs.d/nxhtml/tests/mumamo-test.el299
-rw-r--r--emacs.d/nxhtml/tests/nxhtmltest-Q.el114
-rw-r--r--emacs.d/nxhtml/tests/nxhtmltest-helpers.el156
-rw-r--r--emacs.d/nxhtml/tests/nxhtmltest-suites.el632
237 files changed, 31273 insertions, 0 deletions
diff --git a/emacs.d/nxhtml/tests/angus77-setup-jde.el b/emacs.d/nxhtml/tests/angus77-setup-jde.el
new file mode 100644
index 0000000..dd8f9ac
--- /dev/null
+++ b/emacs.d/nxhtml/tests/angus77-setup-jde.el
@@ -0,0 +1,90 @@
+;;; angus77-setup-jde.el ---
+;;
+;; Author: Lennart Borgman (lennart O borgman A gmail O com)
+;; Created: 2008-08-20T16:57:35+0200 Wed
+;; Version:
+;; Last-Updated:
+;; URL:
+;; Keywords:
+;; Compatibility:
+;;
+;; Features that might be required by this library:
+;;
+;; None
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Change log:
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; 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:
+
+;; Question #42407 on nXhtml changed:
+;; https://answers.launchpad.net/nxhtml/+question/42407
+
+;; Angus77 posted a new comment:
+
+(eval-when-compile (require 'cl))
+(let (
+ ;;(jde-lisp-dir "C:/jdee/jdee/trunk/jde/lisp/")
+ (jde-lisp-dir "C:/jdee/jdee/branches/phil_lord/dimitre_liotev_new_build/jde/lisp")
+ (cedet-root "c:/cedet/cedet/")
+ (elib-dir "C:/DL/emacs/elib-1.0")
+ )
+ (assert (file-directory-p jde-lisp-dir) t)
+ ;;(add-to-list 'load-path (expand-file-name "~/elisp/jde-2.3.5.1/lisp"))
+ (add-to-list 'load-path jde-lisp-dir)
+ ;;(add-to-list 'load-path (expand-file-name "~/elisp/cedet-1.0pre4/semantic"))
+ (add-to-list 'load-path (expand-file-name "semantic" cedet-root))
+ ;;(add-to-list 'load-path (expand-file-name "~/elisp/cedet-1.0pre4/speedbar"))
+ (add-to-list 'load-path (expand-file-name "speedbar" cedet-root))
+ ;;(add-to-list 'load-path (expand-file-name "~/elisp/elib"))
+ (add-to-list 'load-path elib-dir)
+ ;;(add-to-list 'load-path (expand-file-name "~/elisp/cedet-1.0pre4/eieio"))
+ (add-to-list 'load-path (expand-file-name "eieio" cedet-root))
+ ;;(add-to-list 'load-path (expand-file-name "~/elisp/cedet-1.0pre4/common"))
+ (add-to-list 'load-path (expand-file-name "common" cedet-root)))
+
+;; Initialize CEDET.
+;;(load-file (expand-file-name "~/elisp/cedet-1.0pre4/common/cedet.el"))
+(load-library "cedet.el")
+
+(setq defer-loading-jde t)
+
+(if defer-loading-jde
+ (progn
+ (autoload 'jde-mode "jde" "JDE mode." t)
+ (setq auto-mode-alist
+ (append
+ '(("\\.java\\'" . jde-mode))
+ auto-mode-alist)))
+ (require 'jde))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; angus77-setup-jde.el ends here
diff --git a/emacs.d/nxhtml/tests/emacstest-suites.el b/emacs.d/nxhtml/tests/emacstest-suites.el
new file mode 100644
index 0000000..5953fac
--- /dev/null
+++ b/emacs.d/nxhtml/tests/emacstest-suites.el
@@ -0,0 +1,102 @@
+;;; emacstest-suites.el --- Some unit tests for Emacs
+;;
+;; Author: Lennart Borgman (lennart O borgman A gmail O com)
+;; Created: 2008-09-21T22:34:11+0200 Sun
+;; Version:
+;; Last-Updated: 2008-09-22T00:36:11+0200 Sun
+;; URL:
+;; Keywords:
+;; Compatibility:
+;;
+;; Features that might be required by this library:
+;;
+;; `button', `cl', `debug', `ert', `ert2', `ewoc', `find-func',
+;; `help-fns', `help-mode', `view'.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;; Unit tests for some Emacs bug reports.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Change log:
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; 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:
+
+(eval-when-compile (require 'cl))
+(eval-when-compile
+ (let* ((this-file (or load-file-name
+ (when (boundp 'bytecomp-filename) bytecomp-filename)
+ buffer-file-name))
+ (this-dir (file-name-directory this-file))
+ (load-path (cons this-dir load-path)))
+ (require 'ert2)))
+
+(setq debug-on-error t)
+
+(defvar emacstest-bin
+ (file-name-directory (if load-file-name load-file-name buffer-file-name)))
+
+(pushnew emacstest-bin load-path)
+
+
+
+(defvar emacstest-files-root
+ (let* ((this-dir emacstest-bin)
+ (root (expand-file-name "inemacs/" this-dir)))
+ (unless (file-accessible-directory-p root)
+ (error (if (file-exists-p root)
+ "Can't read files in test directory %s"
+ "Can't find test directory %s")
+ root))
+ root))
+
+(let ((distr-in "c:/EmacsW32/nxhtml/tests/inemacs/"))
+ (when (file-directory-p distr-in)
+ (setq emacstest-files-root distr-in)))
+
+(defun emacstest-run ()
+ "Run Emacs tests."
+ (interactive)
+ (setq message-log-max t)
+ (setq ert-test-files-root emacstest-files-root)
+ (let ((selector "emacs-"))
+ (if noninteractive
+ (ert-run-tests-batch selector)
+ (ert-kill-temp-test-buffers)
+ (ert-run-tests-interactively selector)
+ (other-window 1)
+ (ert-list-temp-test-buffers))))
+
+(ert-deftest emacs-bug1013 ()
+ "Emacs bug 1013.
+See URL
+`http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=1013'."
+ (ert-with-temp-buffer-include-file "bug1013.el"
+ (eval-buffer)))
+
+(provide 'emacstest-suites)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; emacstest-suites.el ends here
diff --git a/emacs.d/nxhtml/tests/ert.el b/emacs.d/nxhtml/tests/ert.el
new file mode 100644
index 0000000..491d79f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/ert.el
@@ -0,0 +1,2418 @@
+;;; ert.el --- Emacs Lisp Regression Testing
+
+;; Modified by Lennart Borgman 2008-07-13 to make all global symbols
+;; use the "ert-" prefix.
+
+;; Copyright (C) 2007, 2008 Christian M. Ohler
+
+;; Author: Christian M. Ohler
+;; Version: 0.2
+;; Keywords: lisp, tools
+
+;; 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 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 `http://www.gnu.org/licenses/'.
+
+;;; Commentary:
+
+;; ERT is a tool for automated testing in Emacs Lisp. Its main
+;; features are facilities for defining and running test cases and
+;; reporting the results as well as for debugging test failures
+;; interactively.
+;;
+;; The main entry points are `ert-deftest', which is similar to
+;; `defun' but defines a test, and `ert-run-tests-interactively',
+;; which runs tests and offers an interactive interface for inspecting
+;; results and debugging. There is also `ert-run-tests-batch' for
+;; non-interactive use.
+;;
+;; The body of `ert-deftest' forms resembles a function body, but the
+;; additional operators `should', `should-not' and `should-error' are
+;; available. `should' is similar to cl's `assert', but signals a
+;; different error when its condition is violated that is caught and
+;; processed by ERT. In addition, it analyzes its argument form and
+;; records information that helps debugging (`assert' tries to do
+;; something similar when its second argument SHOW-ARGS is true, but
+;; `should' is more sophisticated). For information on `should-not'
+;; and `should-error', see their docstrings.
+;;
+;; For example,
+;;
+;; ;; Define a test named `foo'.
+;; (ert-deftest foo ()
+;; (ert-should (= (+ 1 2) 4)))
+;;
+;; ;; Run it.
+;; (ert-run-tests-interactively 'foo)
+;;
+;; generates the following output (in addition to some statistics) in
+;; the *ert* results buffer:
+;;
+;; F foo
+;; (ert-test-failed
+;; ((ert-should
+;; (=
+;; (+ 1 2)
+;; 4))
+;; :form
+;; (= 3 4)
+;; :value nil))
+;;
+;; This indicates that the test failed. The `should' form that failed
+;; was (ert-should (= (+ 1 2) 4)), because its inner form, after
+;; evaluation of its arguments, was the function call (= 3 4), which
+;; returned nil.
+;;
+;; Obviously, this is a bug in the test case, not in the functions `+'
+;; or `='. In the results buffer, with point on the test result, the
+;; key "." can be used to jump to the definition of the test to modify
+;; it to correct the bug. After evaluating the modified definition
+;; and switching back to the results buffer, the key "r" will re-run
+;; the test and show the new result.
+
+
+;; Test selectors
+;;
+;; Functions like `ert-run-tests-interactively' accept a test
+;; selector, which is a Lisp expression specifying a set of tests.
+;; Each test name is a selector that refers to that test, the selector
+;; `t' refers to all tests, and the selector `:failed' refers to all
+;; tests that failed; but more complex selectors are available. Test
+;; selector syntax is similar to cl's type specifier syntax. See the
+;; docstring of `ert-select-tests' for details.
+
+
+;; Comparison with other testing tools
+;;
+;; ERT allows test-driven development similar to *Unit frameworks for
+;; other languages. However, two common *Unit features are notably
+;; absent from ERT: fixtures and test suites.
+;;
+;; Fixtures, as used e.g. in SUnit or JUnit, have two main purposes:
+;; Setting up (and tearing down) an environment for a set of test
+;; cases, and making that environment accessible through object
+;; attributes that can be used like local variables.
+;;
+;; While fixtures are a great syntactic simplification in other
+;; languages, they are not very useful in Lisp, where higher-order
+;; functions and `unwind-protect' are available. One way to implement
+;; and use a fixture in ERT is
+;;
+;; (defun my-fixture (body)
+;; (unwind-protect
+;; (progn ...set up...
+;; (funcall body))
+;; ...tear down...))
+;;
+;; (ert-deftest my-test ()
+;; (my-fixture
+;; (lambda ()
+;; ...test code...)))
+;;
+;; (Another way would be a `with-my-fixture' macro.) This solves the
+;; set-up and tear-down part, and additionally allows any test case to
+;; use any combination of fixtures, so it is more general than what
+;; other tools typically allow.
+;;
+;; If the test case needs access to the environment the fixture sets
+;; up, the fixture can be modified to pass arguments to the body.
+;;
+;; These are standard Lisp idioms. Special syntax for them could be
+;; added easily enough, but would provide only a minor simplification.
+;;
+;; (Note that splitting set-up and tear-down into separate functions,
+;; like *Unit tools usually do, makes it impossible to establish
+;; dynamic `let' bindings as part of the fixture. So, blindly
+;; imitating the way fixtures are implemented in other languages would
+;; be counter-productive in Lisp.)
+;;
+;;
+;; The purpose of test suites is to group related test cases together.
+;; The most common use of this is to run just the tests for one
+;; particular module. Since symbol prefixes are the usual way of
+;; separating module namespaces in Emacs Lisp, test selectors already
+;; solve this by allowing regexp matching on test names; e.g., the
+;; selector "^ert-" selects ERT's self-tests.
+;;
+;; If test suites containing arbitrary sets of tests are found to be
+;; desirable, it would be easy to add a `define-test-selector'
+;; mechanism that introduces a new selector, defined in terms of
+;; existing ones; e.g.
+;;
+;; ;; Note that `define-test-selector' does not exist yet.
+;; (define-test-selector my-test-suite () `(member foo-test bar-test))
+;;
+;; would define a test suite named `my-test-suite' consisting of
+;; `foo-test' and `bar-test'. See also `deftype' in Common Lisp.
+
+
+;; TODO: Add `skip' feature for tests that can't run in current environment.
+
+
+;;; Code:
+
+(eval-when-compile (require 'cl))
+(require 'ewoc)
+(require 'find-func)
+(require 'debug)
+
+(defvar ert-debug-on-error nil
+ "Non-nil means enter debugger when a test fails or terminates with an error.")
+
+
+;;; Defining and locating tests.
+
+;; The data structure that represents a test case.
+(defstruct ert-test
+ (name nil)
+ (documentation nil)
+ (body (assert nil))
+ (most-recent-result nil)
+ (expected-result-type 'ert-test-passed))
+
+(defun ert-test-boundp (symbol)
+ "Return non-nil if SYMBOL names a test."
+ (and (get symbol 'ert-test) t))
+
+(defun ert-get-test (symbol)
+ "If SYMBOL names a test, return that. Signal an error otherwise."
+ (assert (ert-test-boundp symbol) t)
+ (get symbol 'ert-test))
+
+(defun ert-set-test (symbol doc definition)
+ "Make SYMBOL name the test DEFINITION, and return DEFINITION."
+ (when doc
+ (put symbol 'ert-test-documentation doc))
+ (put symbol 'ert-test definition)
+ definition)
+
+(defun ert-make-test-unbound (symbol)
+ "Make SYMBOL name no test. Return SYMBOL."
+ (remprop symbol 'ert-test)
+ symbol)
+
+(defun ert-test-result-expected-p (test result)
+ "Return non-nil if RESULT matches the expected result type for TEST."
+ (typep result (ert-test-expected-result-type test)))
+
+(defvar ert-find-test-regexp
+ (concat "^\\s-*(ert-deftest"
+ find-function-space-re
+ "%s\\(\\s-\\|$\\)")
+ "The regexp the `find-function' mechanisms use for locating test definitions.")
+
+(eval-and-compile
+ (defun ert-parse-keys-and-body (docstr keys-and-body)
+ "Split KEYS-AND-BODY into keyword-and-value pairs and the remaining body.
+
+KEYS-AND-BODY should have the form of a property list, with the
+exception that only keywords are permitted as keys and that the
+tail -- the body -- is a list of forms that does not start with a
+keyword.
+
+Returns a two-element list containing the keys-and-values plist
+and the body."
+ (unless (stringp docstr)
+ (when docstr
+ (setq keys-and-body (cons docstr keys-and-body))
+ (setq docstr nil)))
+ (let ((extracted-key-accu '())
+ (remaining keys-and-body))
+ (while (and (consp remaining) (keywordp (first remaining)))
+ (let ((keyword (pop remaining)))
+ (unless (consp remaining)
+ (error "Value expected after keyword %S in %S"
+ keyword keys-and-body))
+ (when (assoc keyword extracted-key-accu)
+ (warn "Keyword %S appears more than once in %S" keyword
+ keys-and-body))
+ (push (cons keyword (pop remaining)) extracted-key-accu)))
+ (setq extracted-key-accu (nreverse extracted-key-accu))
+ (list (loop for (key . value) in extracted-key-accu
+ collect key
+ collect value)
+ docstr
+ remaining))))
+
+(defvar ert-error-on-test-redefinition nil)
+
+;;;###autoload
+(defmacro* ert-deftest (name ()
+ &optional docstr
+ &body keys-and-body)
+ "Define NAME (a symbol) as a test.
+
+\(fn NAME () [:documentation DOCSTRING] [:expected-result TYPE] BODY...)"
+ ;; The :documentation would be unreadable. I have therefore added
+ ;; docstr that will look like documentation use to in Emacs. Maybe
+ ;; add function ert-describe-test?
+ (declare (indent 2)
+ (debug (&define :name test name sexp
+ [&optional [":documentation" stringp]]
+ [&optional [":expected-result" sexp]]
+ def-body)))
+ (destructuring-bind ((&key (expected-result nil expected-result-supplied-p)
+ (documentation nil documentation-supplied-p))
+ doc
+ body)
+ (ert-parse-keys-and-body docstr keys-and-body)
+ `(progn
+ ;; Guard against missing/badly named tests:
+ (when (and ert-error-on-test-redefinition
+ (symbolp ',name)
+ (get ',name 'ert-test))
+ (with-output-to-temp-buffer "*Ert Error*"
+ (with-current-buffer "*Ert Error*"
+ (insert "Test "
+ (format "%s" ',name)
+ " is already defined in "
+ (format "%s" (find-definition-noselect ',name 'ert-deftest))
+ "\n\n"
+ "Tip: Use `ert-delete-all-tests' or `ert-delete-test' before redefining tests."
+ )))
+ (if (y-or-n-p "Do you want to call ert-delete-all-tests and then continue? ")
+ ;; Fix-me: This does not work, why?
+ (ert-delete-all-tests)
+ (error "Test %s is already defined in %s"
+ ',name
+ (find-definition-noselect ',name 'ert-deftest))))
+ (ert-set-test ',name
+ nil ;;doc
+ (make-ert-test
+ :name ',name
+ :body (lambda () ,@body)
+ ,@(when expected-result-supplied-p
+ `(:expected-result-type ,expected-result))
+ ,@(when documentation-supplied-p
+ `(:documentation ,documentation))))
+ ;; This hack allows `symbol-file' to associate `ert-deftest'
+ ;; forms with files, and therefore enables `find-function' to
+ ;; work with tests. However, it leads to warnings in
+ ;; `unload-feature', which doesn't know how to undefine tests
+ ;; and has no mechanism for extension.
+ (push '(ert-deftest . ,name) current-load-list)
+ ',name)))
+
+(defun ert-read-test-name (prompt &optional default-value history)
+ "Read the name of a test and return it as a symbol.
+Prompt with PROMPT. By default, return DEFAULT-VALUE."
+ (when (symbolp default-value) (setq default-value (symbol-name default-value)))
+ (intern (completing-read prompt obarray #'ert-test-boundp
+ t nil history default-value nil)))
+
+(defun ert-find-test-other-window (test-name)
+ "Find, in another window, the definition of TEST-NAME."
+ (interactive (list (ert-read-test-name "Find test definition: ")))
+ (find-function-do-it test-name 'ert-deftest 'switch-to-buffer-other-window))
+
+(defun ert-delete-test (test-name)
+ "An interactive interface to `ert-make-test-unbound'."
+ (interactive (list (let ((default (thing-at-point 'symbol)))
+ (when default
+ (set-text-properties 0 (length default) nil default)
+ (when (or (string= default "nil") (intern-soft default))
+ (setq default (intern default)))
+ (unless (ert-test-boundp default)
+ (setq default nil)))
+ (completing-read (if (null default)
+ "Delete test: "
+ (format "Delete test (default %s): "
+ default))
+ obarray #'ert-test-boundp
+ 'really-require-match
+ nil nil default nil))))
+ (ert-make-test-unbound test-name))
+
+(defun ert-delete-all-tests ()
+ "Make all symbols in `obarray' name no test."
+ (interactive)
+ (when (interactive-p)
+ (unless (y-or-n-p "Delete all tests? ")
+ (error "Aborted")))
+ (mapc #'ert-delete-test (mapcar #'ert-test-name (ert-select-tests t t)))
+ t)
+
+
+(defun ert-make-end-marker (buffer must-exist)
+ "Return a marker to the end of buffer BUFFER.
+BUFFER may be a string or a buffer. If BUFFER does not exist
+return nil.
+
+The buffer must exist if MUST-EXIST is non-nil.
+
+See also:
+ `ert-end-of-messages'
+ `ert-end-of-warnings'"
+ (let ((buf (if must-exist
+ (get-buffer buffer)
+ (get-buffer-create buffer))))
+ (when (and buf
+ (bufferp buf)
+ (buffer-live-p buf))
+ (with-current-buffer buf
+ (save-restriction
+ (widen)
+ (point-max-marker))))))
+
+(defun ert-end-of-messages ()
+ "Return a marker to the end of *Messages* buffer."
+ (ert-make-end-marker "*Messages*" nil))
+
+(defun ert-end-of-warnings ()
+ "Return a marker to the end of *Warnings* buffer."
+ (ert-make-end-marker "*Warnings*" nil))
+
+(defun ert-search-after (after regexp)
+ "Search after marker in AFTER for regular expression REGEXP.
+Return a alist of position and matches. AFTER should have been
+created with `ert-make-end-marker'.
+
+This is supposed to be used for messages and trace buffers.
+
+See also
+ `ert-get-messages'"
+ (let ((buf (marker-buffer after)))
+ (with-current-buffer buf
+ (let ((here (point))
+ res)
+ (goto-char after)
+ (save-match-data
+ (while (re-search-forward regexp nil t)
+ (setq res (cons (match-data) res))))
+ (goto-char here)
+ (reverse res)))))
+;; fix-me: add a conventient way to look at the result of
+;; `ert-search-after'. Probably this means adding something more to
+;; the returned result.
+
+(defvar ert-messages-mark)
+(defun ert-get-messages (regexp)
+ "Search *Messages* buffer for regular expression REGEXP.
+This should be used within `ert-deftest'. Search begins where
+the buffer ended when test started.
+
+See also:
+ `ert-get-warnings'
+ `ert-search-after'"
+ (ert-search-after ert-messages-mark regexp))
+
+(defvar ert-warnings-mark)
+(defun ert-get-warnings (regexp)
+ "Search *Warnings* buffer for regular expression REGEXP.
+See `ert-get-messages' for more information."
+ (ert-search-after ert-warnings-mark regexp))
+
+
+;;; Test selectors.
+
+(defun ert-select-tests (selector universe)
+ "Select, from UNIVERSE, a set of tests according to SELECTOR.
+
+UNIVERSE should be a list of tests, or t, which refers to all
+tests named by symbols in `obarray'.
+
+Returns the set of tests as a list.
+
+Valid selectors:
+
+nil -- Selects the empty set.
+t -- Selects UNIVERSE.
+:new -- Selects all tests that have not been run yet.
+:failed, :passed, :error -- Select tests according to their most recent result.
+:expected, :unexpected -- Select tests according to their most recent result.
+a string -- Selects all tests that have a name that matches the string, a regexp.
+a test -- Selects that test.
+a symbol -- Selects the test that the symbol names, errors if none.
+\(member TESTS...\) -- Selects TESTS, a list of tests or symbols naming tests.
+\(eql TEST\) -- Selects TEST, a test or a symbol naming a test.
+\(and SELECTORS...\) -- Selects the tests that match all SELECTORS.
+\(or SELECTORS...\) -- Selects the tests that match any SELECTOR.
+\(not SELECTOR\) -- Selects all tests that do not match SELECTOR.
+\(satisfies PREDICATE\) -- Selects all tests that satisfy PREDICATE.
+
+Only selectors that require a superset of tests, such
+as (satisfies ...), strings, :new, etc. make use of UNIVERSE.
+Selectors that do not, such as \(member ...\), just return the
+set implied by them without checking whether it is really
+contained in UNIVERSE."
+ ;; This code needs to match the etypecase in
+ ;; `ert-insert-human-readable-selector'.
+ (etypecase selector
+ ((member nil) nil)
+ ((member t) (etypecase universe
+ (list universe)
+ ((member t) (ert-select-tests "" universe))))
+ ((member :new) (ert-select-tests
+ `(satisfies ,(lambda (test)
+ (typep (ert-test-most-recent-result test)
+ 'null)))
+ universe))
+ ((member :failed) (ert-select-tests
+ `(satisfies ,(lambda (test)
+ (typep (ert-test-most-recent-result test)
+ 'ert-test-failed)))
+ universe))
+ ((member :passed) (ert-select-tests
+ `(satisfies ,(lambda (test)
+ (typep (ert-test-most-recent-result test)
+ 'ert-test-passed)))
+ universe))
+ ((member :error) (ert-select-tests
+ `(satisfies ,(lambda (test)
+ (typep (ert-test-most-recent-result test)
+ 'ert-test-error)))
+ universe))
+ ((member :expected) (ert-select-tests
+ `(satisfies
+ ,(lambda (test)
+ (ert-test-result-expected-p
+ test
+ (ert-test-most-recent-result test))))
+ universe))
+ ((member :unexpected) (ert-select-tests `(not :expected) universe))
+ (string
+ (etypecase universe
+ ((member t) (mapcar #'ert-get-test
+ (apropos-internal selector #'ert-test-boundp)))
+ (list (remove-if-not (lambda (test)
+ (and (ert-test-name test)
+ (string-match selector (ert-test-name test))))
+ universe))))
+ (ert-test (list selector))
+ (symbol
+ (assert (ert-test-boundp selector))
+ (list (ert-get-test selector)))
+ (cons
+ (destructuring-bind (operator &rest operands) selector
+ (ecase operator
+ (member
+ (mapcar (lambda (purported-test)
+ (etypecase purported-test
+ (symbol (assert (ert-test-boundp purported-test))
+ (ert-get-test purported-test))
+ (ert-test purported-test)))
+ operands))
+ (eql
+ (assert (eql (length operands) 1))
+ (ert-select-tests `(member ,@operands) universe))
+ (and
+ ;; Do these definitions of AND, NOT and OR satisfy de
+ ;; Morgan's rules? Should they?
+ (case (length operands)
+ (0 (ert-select-tests 't universe))
+ (t (ert-select-tests `(and ,@(rest operands))
+ (ert-select-tests (first operands) universe)))))
+ (not
+ (assert (eql (length operands) 1))
+ (set-difference (ert-select-tests 't universe)
+ (ert-select-tests (first operands) universe)))
+ (or
+ (case (length operands)
+ (0 (ert-select-tests 'nil universe))
+ (t (union (ert-select-tests (first operands) universe)
+ (ert-select-tests `(or ,@(rest operands)) universe)))))
+ (satisfies
+ (assert (eql (length operands) 1))
+ (remove-if-not (first operands) (ert-select-tests 't universe))))))))
+
+(defun ert-insert-human-readable-selector (selector)
+ "Insert a human-readable presentation of SELECTOR into the current buffer."
+ ;; This is needed to avoid printing the (huge) contents of the
+ ;; `backtrace' slot of the result objects in the
+ ;; `most-recent-result' slots of test case objects in (eql ...) or
+ ;; (member ...) selectors.
+ (labels ((rec (selector)
+ ;; This code needs to match the etypecase in `ert-select-tests'.
+ (etypecase selector
+ ((or (member nil t
+ :new :failed :passed :error
+ :expected :unexpected)
+ string
+ symbol)
+ selector)
+ (ert-test
+ (if (ert-test-name selector)
+ (make-symbol (format "<%S>" (ert-test-name selector)))
+ (make-symbol "<unnamed test>")))
+ (cons
+ (destructuring-bind (operator &rest operands) selector
+ (ecase operator
+ ((member eql and not or)
+ `(,operator ,@(mapcar #'rec operands)))
+ (satisfies
+ selector)))))))
+ (insert (format "%S" (rec selector)))))
+
+
+;;; Running tests.
+
+(put 'ert-test-failed 'error-conditions '(error ert-test-failed))
+(put 'ert-test-failed 'error-message "Test failed")
+
+(defun ert-pass ()
+ "Terminate the current test and mark it passed. Does not return."
+ (throw 'ert-pass nil))
+
+(defun ert-fail (data)
+ "Terminate the current test and mark it failed. Does not return.
+DATA is displayed to the user and should state the reason of the failure."
+ (signal 'ert-test-failed (list data)))
+
+;; The data structures that represent the result of running a test.
+(defstruct ert-test-result
+ (messages nil)
+ )
+(defstruct (ert-test-passed (:include ert-test-result)))
+(defstruct (ert-test-result-with-condition (:include ert-test-result))
+ (condition (assert nil))
+ (backtrace (assert nil)))
+(defstruct (ert-test-error (:include ert-test-result-with-condition)))
+(defstruct (ert-test-quit (:include ert-test-result-with-condition)))
+(defstruct (ert-test-failed (:include ert-test-result-with-condition)))
+(defstruct (ert-test-aborted-with-non-local-exit (:include ert-test-result)))
+
+
+(defun ert-record-backtrace ()
+ "Record the current backtrace (as a list) and return it."
+ ;; Since the backtrace is stored in the result object, result
+ ;; objects must only be printed with appropriate limits
+ ;; (`print-level' and `print-length') in place. For interactive
+ ;; use, the cost of ensuring this possibly outweighs the advantage
+ ;; of storing the backtrace for
+ ;; `ert-results-pop-to-backtrace-for-test-at-point' given that we
+ ;; already have `ert-results-rerun-test-debugging-errors-at-point'.
+ ;; For batch use, however, printing the backtrace may be useful.
+ (loop
+ ;; 6 is the number of frames our own debugger adds (when
+ ;; compiled; more when interpreted). FIXME: Need to describe a
+ ;; procedure for determining this constant.
+ for i from 6
+ for frame = (backtrace-frame i)
+ while frame
+ collect frame))
+
+;; A container for the state of the execution of a single test and
+;; environment data needed during its execution.
+(defstruct ert-test-execution-info
+ (test (assert nil))
+ (result (assert nil))
+ ;; A thunk that may be called when RESULT has been set to its final
+ ;; value and test execution should be terminated. Should not
+ ;; return.
+ (exit-continuation (assert nil))
+ ;; The binding of `debugger' outside of the execution of the test.
+ next-debugger
+ ;; The binding of `ert-debug-on-error' that is in effect for the
+ ;; execution of the current test. We store it to avoid being
+ ;; affected by any new bindings the test itself may establish. (I
+ ;; don't remember whether this feature is important.)
+ ert-debug-on-error)
+
+(defun ert-run-test-debugger (info debugger-args)
+ "The function that `debugger' is bound to during the execution of tests.
+
+Records failures and errors and either terminates the test
+silently or calls the interactive debugger, as appropriate."
+ (destructuring-bind (first-debugger-arg &rest more-debugger-args) debugger-args
+ (ecase first-debugger-arg
+ ((lambda debug t exit nil)
+ (apply (ert-test-execution-info-next-debugger info) debugger-args))
+ (error
+ (let* ((condition (first more-debugger-args))
+ (type (case (car condition)
+ ((quit) 'quit)
+ ((ert-test-failed) 'failed)
+ (otherwise 'error)))
+ (backtrace (ert-record-backtrace)))
+ (setf (ert-test-execution-info-result info)
+ (ecase type
+ (quit
+ (make-ert-test-quit :condition condition
+ :backtrace backtrace))
+ (failed
+ (make-ert-test-failed :condition condition
+ :backtrace backtrace))
+ (error
+ (make-ert-test-error :condition condition
+ :backtrace backtrace))))
+ ;; Work around Emacs' heuristic (in eval.c) for detecting
+ ;; errors in the debugger.
+ (incf num-nonmacro-input-events)
+ ;; FIXME: We should probably implement more fine-grained
+ ;; control a la non-t `debug-on-error' here.
+ (cond
+ ((ert-test-execution-info-ert-debug-on-error info)
+ (apply (ert-test-execution-info-next-debugger info) debugger-args))
+ (t))
+ (funcall (ert-test-execution-info-exit-continuation info)))))))
+
+(defun ert-run-test-internal (ert-test-execution-info)
+ (lexical-let ((info ert-test-execution-info))
+ (setf (ert-test-execution-info-next-debugger info) debugger
+ (ert-test-execution-info-ert-debug-on-error info) ert-debug-on-error)
+ (catch 'ert-pass
+ ;; For now, each test gets its own temp buffer and its own
+ ;; window excursion, just to be safe. If this turns out to be
+ ;; too expensive, we can remove it.
+ (with-temp-buffer
+ (save-window-excursion
+ (let ((debugger (lambda (&rest debugger-args)
+ (ert-run-test-debugger info debugger-args)))
+ (debug-on-error t)
+ (debug-on-quit t)
+ ;; FIXME: Do we need to store the old binding of this
+ ;; and consider it in `ert-run-test-debugger'?
+ (debug-ignored-errors nil)
+ (ert-messages-mark (ert-end-of-messages))
+ (ert-warnings-mark (ert-end-of-warnings)))
+ (funcall (ert-test-body (ert-test-execution-info-test info))))))
+ (ert-pass))
+ (setf (ert-test-execution-info-result info) (make-ert-test-passed)))
+ nil)
+
+(defun ert-make-marker-in-messages-buffer ()
+ (with-current-buffer (get-buffer-create "*Messages*")
+ (set-marker (make-marker) (point-max))))
+
+(defun ert-force-message-log-buffer-truncation ()
+ (with-current-buffer (get-buffer-create "*Messages*")
+ ;; This is a reimplementation of this part of message_dolog() in xdisp.c:
+ ;; if (NATNUMP (Vmessage_log_max))
+ ;; {
+ ;; scan_newline (Z, Z_BYTE, BEG, BEG_BYTE,
+ ;; -XFASTINT (Vmessage_log_max) - 1, 0);
+ ;; del_range_both (BEG, BEG_BYTE, PT, PT_BYTE, 0);
+ ;; }
+ (when (and (integerp message-log-max) (>= message-log-max 0))
+ (let ((begin (point-min))
+ (end (save-excursion
+ (goto-char (point-max))
+ (forward-line (- message-log-max))
+ (point))))
+ (delete-region begin end)))))
+
+(defun ert-run-test (test)
+ "Run TEST. Return the result and store it in TEST's `most-recent-result' slot."
+ (setf (ert-test-most-recent-result test) nil)
+ (block error
+ (lexical-let* ((begin-marker (ert-make-marker-in-messages-buffer))
+ (info (make-ert-test-execution-info
+ :test test
+ :result (make-ert-test-aborted-with-non-local-exit)
+ :exit-continuation (lambda ()
+ (return-from error nil)))))
+ (unwind-protect
+ (let ((message-log-max t))
+ (ert-run-test-internal info))
+ (let ((result (ert-test-execution-info-result info)))
+ (setf (ert-test-result-messages result)
+ (with-current-buffer (get-buffer-create "*Messages*")
+ (buffer-substring begin-marker (point-max))))
+ (ert-force-message-log-buffer-truncation)
+ (setf (ert-test-most-recent-result test) result)))))
+ (ert-test-most-recent-result test))
+
+
+;;; The `should' macros.
+
+(eval-and-compile
+ (defun ert-special-operator-p (thing)
+ "Return non-nil if THING is a symbol naming a special operator."
+ (and (symbolp thing)
+ (let ((definition (indirect-function thing t)))
+ (and (subrp definition)
+ (eql (cdr (subr-arity definition)) 'unevalled)))))
+ (defun ert-expand-should (whole form env inner-expander)
+ "Helper function for the `should' macro and its variants.
+
+Analyzes FORM and produces an expression that has the same
+semantics under evaluation but records additional debugging
+information. INNER-EXPANDER adds the actual checks specific to
+the particular variant of `should'."
+ (let ((form (macroexpand form env)))
+ ;; It's sort of a wart that `inner-expander' can't influence the
+ ;; value the expansion returns.
+ (cond
+ ((atom form)
+ (funcall inner-expander form `(list ',whole :form ',form :value ,form)))
+ ((ert-special-operator-p (car form))
+ (let ((value (gensym "value-")))
+ `(let ((,value (make-symbol "ert-form-evaluation-aborted")))
+ ,(funcall inner-expander
+ `(setq ,value ,form)
+ `(list ',whole :form ',form :value ,value))
+ ,value)))
+ (t
+ (let ((fn-name (car form))
+ (arg-forms (cdr form)))
+ (assert (or (symbolp fn-name)
+ (and (consp fn-name)
+ (eql (car fn-name) 'lambda)
+ (listp (cdr fn-name)))))
+ (let ((fn (gensym "fn-"))
+ (args (gensym "args-"))
+ (value (gensym "value-"))
+ (default-value (gensym "ert-form-evaluation-aborted-")))
+ `(let ((,fn (function ,fn-name))
+ (,args (list ,@arg-forms)))
+ (let ((,value ',default-value))
+ ,(funcall inner-expander
+ `(setq ,value (apply ,fn ,args))
+ `(nconc (list ',whole)
+ (list :form `(,,fn ,@,args))
+ (unless (eql ,value ',default-value)
+ (list :value ,value))
+ (let ((-explainer-
+ (and (symbolp ',fn-name)
+ (get ',fn-name
+ 'ert-explainer))))
+ (when -explainer-
+ (list :explanation
+ (apply -explainer- ,args))))))
+ ,value)))))))))
+
+(defmacro* ert-should (form &environment env)
+ "Evaluate FORM. If it returns nil, abort the current test as failed.
+
+Returns the value of FORM."
+ (ert-expand-should `(ert-should ,form) form env
+ (lambda (inner-form form-description-form)
+ `(unless ,inner-form
+ (ert-fail ,form-description-form)))))
+
+(defmacro* ert-should-not (form &environment env)
+ "Evaluate FORM. If it returns non-nil, abort the current test as failed.
+
+Returns nil."
+ (ert-expand-should `(ert-should-not ,form) form env
+ (lambda (inner-form form-description-form)
+ `(unless (not ,inner-form)
+ (ert-fail ,form-description-form)))))
+
+(defun ert-should-error-handle-error (form-description-fn
+ condition type exclude-subtypes test)
+ "Helper function for `should-error'.
+
+Determines whether CONDITION matches TYPE, EXCLUDE-SUBTYPES and
+TEST, and aborts the current test as failed if it doesn't."
+ (let ((signalled-conditions (get (car condition) 'error-conditions))
+ (handled-conditions (etypecase type
+ (list type)
+ (symbol (list type)))))
+ (assert signalled-conditions)
+ (unless (intersection signalled-conditions handled-conditions)
+ (ert-fail (append
+ (funcall form-description-fn)
+ (list
+ :condition condition
+ :fail-reason (concat "the error signalled did not"
+ " have the expected type")))))
+ (when exclude-subtypes
+ (unless (member (car condition) handled-conditions)
+ (ert-fail (append
+ (funcall form-description-fn)
+ (list
+ :condition condition
+ :fail-reason (concat "the error signalled was a subtype"
+ " of the expected type"))))))
+ (unless (funcall test condition)
+ (ert-fail (append
+ (funcall form-description-fn)
+ (list
+ :condition condition
+ :fail-reason "the error signalled did not pass the test"))))))
+
+;; FIXME: The expansion will evaluate the keyword args (if any) in
+;; nonstandard order.
+(defmacro* ert-should-error (form &rest keys &key type exclude-subtypes test
+ &environment env)
+ "Evaluate FORM. Unless it signals an error, abort the current test as failed.
+
+The error signalled additionally needs to match TYPE and satisfy
+TEST. TYPE should be a condition name or a list of condition
+names. If EXCLUDE-SUBTYPES is nil, the error matches TYPE if one
+of its condition names is an element of TYPE. If
+EXCLUDE-SUBTYPES is non-nil, the error matches TYPE if it is an
+element of TYPE. TEST should be a predicate."
+ ;; Returns a gensym named `ert-form-evaluation-aborted-XXX', but
+ ;; that's a wart, so let's not document it.
+ (unless type (setq type ''error))
+ (unless test (setq test '(lambda (condition) t)))
+ (ert-expand-should
+ `(ert-should-error ,form ,@keys)
+ form env
+ (lambda (inner-form form-description-form)
+ (let ((errorp (gensym "errorp"))
+ (form-description-fn (gensym "form-description-fn-")))
+ `(let ((,errorp nil)
+ (,form-description-fn (lambda () ,form-description-form)))
+ (condition-case -condition-
+ ,inner-form
+ ;; We can't use ,type here because we want to evaluate it.
+ (error
+ (setq ,errorp t)
+ (ert-should-error-handle-error ,form-description-fn
+ -condition-
+ ,type ,exclude-subtypes ,test)
+ ;; It would make sense to have the `should-error' form
+ ;; return the error in this case, but `ert-expand-should'
+ ;; doesn't allow that at the moment.
+ ))
+ (unless ,errorp
+ (ert-fail (append
+ (funcall ,form-description-fn)
+ (list
+ :fail-reason "did not signal an error")))))))))
+
+
+;;; Explanation of `should' failures.
+
+(defun ert-proper-list-p (x)
+ "Return non-nil if X is a proper list, nil otherwise."
+ (loop
+ for firstp = t then nil
+ for fast = x then (cddr fast)
+ for slow = x then (cdr slow) do
+ (when (null fast) (return t))
+ (when (not (consp fast)) (return nil))
+ (when (null (cdr fast)) (return t))
+ (when (not (consp (cdr fast))) (return nil))
+ (when (and (not firstp) (eq fast slow)) (return nil))))
+
+(defun ert-explain-not-equal (a b)
+ "Return a programmer-readable explanation of why A and B are not `equal'.
+
+Returns nil if they are equal."
+ (if (not (equal (type-of a) (type-of b)))
+ `(different-types ,a ,b)
+ (etypecase a
+ (cons
+ (let ((a-proper-p (ert-proper-list-p a))
+ (b-proper-p (ert-proper-list-p b)))
+ (if (not (eql (not a-proper-p) (not b-proper-p)))
+ `(one-list-proper-one-improper ,a ,b)
+ (if a-proper-p
+ (if (not (equal (length a) (length b)))
+ ;; This would be even more helpful if it showed
+ ;; something like what `set-difference' would
+ ;; return.
+ `(proper-lists-of-different-length ,a ,b)
+ (loop for i from 0
+ for ai in a
+ for bi in b
+ for xi = (ert-explain-not-equal ai bi)
+ do (when xi (return `(list-elt ,i ,xi)))))
+ (let ((car-x (ert-explain-not-equal (car a) (car b))))
+ (if car-x
+ `(car ,car-x)
+ (let ((cdr-x (ert-explain-not-equal (cdr a) (cdr b))))
+ (if cdr-x
+ `(cdr ,cdr-x))
+ nil)))))))
+ (array (if (not (equal (length a) (length b)))
+ `(arrays-of-different-length ,a ,b)
+ (loop for i from 0
+ for ai across a
+ for bi across b
+ for xi = (ert-explain-not-equal ai bi)
+ do (when xi (return `(array-elt ,i ,xi))))))
+ (atom (if (not (equal a b))
+ `(different-atoms ,a ,b)
+ nil)))))
+(put 'equal 'ert-explainer 'ert-explain-not-equal)
+
+
+;;; Results display.
+
+;; The data structure that contains the set of tests being executed
+;; during one particular test run, their results, the state of the
+;; execution, and some statistics.
+;;
+;; The data about results and expected results of tests may seem
+;; redundant here, since the test objects also carry such information.
+;; However, the information in the test objects may be more recent, it
+;; may correspond to a different test run. We need the information
+;; that corresponds to this run in order to be able to update the
+;; statistics correctly when a test is re-run interactively and has a
+;; different result than before.
+(defstruct ert-stats
+ (selector (assert nil))
+ ;; The tests, in order.
+ (tests (assert nil) :type vector)
+ ;; A map of test names (or the test objects themselves for unnamed
+ ;; tests) to indices into the `tests' vector.
+ (test-map (assert nil) :type hash-table)
+ ;; The results of the tests during this run, in order.
+ (test-results (assert nil) :type vector)
+ ;; The expected result types of the tests, in order.
+ (test-results-expected (assert nil) :type vector)
+ (total (assert nil))
+ (passed-expected 0)
+ (passed-unexpected 0)
+ (failed-expected 0)
+ (failed-unexpected 0)
+ (error-expected 0)
+ (error-unexpected 0)
+ (start-time (assert nil))
+ (end-time nil)
+ (aborted-p nil)
+ (current-test nil))
+
+;; An entry in the results buffer ewoc. There is one entry per test.
+(defstruct ert-ewoc-entry
+ (test (assert nil))
+ (result nil)
+ ;; If the result of this test was expected, its ewoc entry is hidden
+ ;; initially.
+ (hidden-p (assert nil))
+ ;; An ewoc entry may be collapsed to hide details such as the error
+ ;; condition.
+ ;;
+ ;; I'm not sure the ability to expand and collapse entries is still
+ ;; a useful feature.
+ (expanded-p t)
+ ;; By default, the ewoc entry presents the error condition with
+ ;; certain limits on how much to print (`print-level',
+ ;; `print-length'). The user can interactively switch to a set of
+ ;; higher limits.
+ (extended-printer-limits-p nil))
+
+;; Variables local to the results buffer.
+
+;; The ewoc.
+(defvar ert-results-ewoc)
+;; The stats object.
+(defvar ert-results-stats)
+;; A string with one character per test. Each character represents
+;; the result of the corresponding test. The string is displayed near
+;; the top of the buffer and serves as a progress bar.
+(defvar ert-results-progress-bar-string)
+;; The position where the progress bar button begins.
+(defvar ert-results-progress-bar-button-begin)
+;; The test result listener that updates the buffer when tests are run.
+(defvar ert-results-listener)
+
+;; The same as `ert-results-stats', but dynamically bound. Used for
+;; the mode line progress indicator.
+(defvar ert-current-run-stats nil)
+
+(defun ert-format-time-iso8601 (time)
+ "Format TIME in the particular variant of ISO 8601 used for timestamps in ERT."
+ (format-time-string "%Y-%m-%d %T%z" time))
+
+(defun ert-insert-test-name-button (test-name)
+ (insert-text-button (format "%S" test-name)
+ :type 'ert-test-name-button
+ 'ert-test-name test-name))
+
+(defun ert-results-update-ewoc-hf (ewoc stats)
+ "Update the header and footer of EWOC to show certain information from STATS.
+
+Also sets `ert-results-progress-bar-button-begin'."
+ (let ((run-count (+ (ert-stats-passed-expected stats)
+ (ert-stats-passed-unexpected stats)
+ (ert-stats-failed-expected stats)
+ (ert-stats-failed-unexpected stats)
+ (ert-stats-error-expected stats)
+ (ert-stats-error-unexpected stats)))
+ (results-buffer (current-buffer)))
+ (ewoc-set-hf
+ ewoc
+ ;; header
+ (with-temp-buffer
+ (insert "Selector: ")
+ (ert-insert-human-readable-selector (ert-stats-selector stats))
+ (insert "\n")
+ (insert
+ (format (concat "Passed: %s (%s unexpected)\n"
+ "Failed: %s (%s unexpected)\n"
+ "Error: %s (%s unexpected)\n"
+ "Total: %s/%s\n\n")
+ (+ (ert-stats-passed-expected stats)
+ (ert-stats-passed-unexpected stats))
+ (ert-stats-passed-unexpected stats)
+ (+ (ert-stats-failed-expected stats)
+ (ert-stats-failed-unexpected stats))
+ (ert-stats-failed-unexpected stats)
+ (+ (ert-stats-error-expected stats)
+ (ert-stats-error-unexpected stats))
+ (ert-stats-error-unexpected stats)
+ run-count
+ (ert-stats-total stats)))
+ (insert
+ (format "Started at: %s\n"
+ (ert-format-time-iso8601 (ert-stats-start-time stats))))
+ ;; FIXME: This is ugly. Need to properly define invariants of
+ ;; the `stats' data structure.
+ (let ((state (cond ((ert-stats-aborted-p stats)
+ 'aborted)
+ ((ert-stats-current-test stats)
+ 'running)
+ ((ert-stats-end-time stats)
+ 'finished)
+ (t
+ 'preparing))))
+ (ecase state
+ (preparing
+ (insert ""))
+ (aborted
+ (cond ((ert-stats-current-test stats)
+ (insert "Aborted during test: ")
+ (ert-insert-test-name-button
+ (ert-test-name (ert-stats-current-test stats))))
+ (t
+ (insert "Aborted."))))
+ (running
+ (assert (ert-stats-current-test stats))
+ (insert "Running test: ")
+ (ert-insert-test-name-button (ert-test-name
+ (ert-stats-current-test stats))))
+ (finished
+ (assert (not (ert-stats-current-test stats)))
+ (insert "Finished.")))
+ (insert "\n")
+ (if (ert-stats-end-time stats)
+ (insert
+ (format "%s%s\n"
+ (if (ert-stats-aborted-p stats)
+ "Aborted at: "
+ "Finished at: ")
+ (ert-format-time-iso8601 (ert-stats-end-time stats))))
+ (insert "\n"))
+ (insert "\n"))
+ (let ((progress-bar-string (with-current-buffer results-buffer
+ ert-results-progress-bar-string)))
+ (let ((progress-bar-button-begin
+ (insert-text-button (substring progress-bar-string 0 run-count)
+ :type 'ert-results-progress-bar-button)))
+ (with-current-buffer results-buffer
+ (set (make-local-variable 'ert-results-progress-bar-button-begin)
+ progress-bar-button-begin)))
+ (insert (substring progress-bar-string run-count)))
+ (insert "\n\n")
+ (buffer-string))
+ ;; footer
+ ;;
+ ;; We actually want an empty footer, but that would trigger a bug
+ ;; in ewoc, sometimes clearing the entire buffer.
+ "\n")))
+
+(defun ert-results-update-stats-display (ewoc stats)
+ "Update EWOC and the mode line to show data from STATS."
+ (ert-results-update-ewoc-hf ewoc stats)
+ (force-mode-line-update)
+ (redisplay t))
+
+(defun ert-char-for-test-result (result expectedp)
+ "Return a character that represents the test result RESULT."
+ (let ((char
+ (etypecase result
+ (ert-test-passed ?.)
+ (ert-test-failed ?f)
+ (ert-test-error ?e)
+ (null ?-)
+ (ert-test-aborted-with-non-local-exit ?a))))
+ (if expectedp
+ char
+ (upcase char))))
+
+(defun ert-string-for-test-result (result expectedp)
+ "Return a string that represents the test result RESULT."
+ (etypecase result
+ (ert-test-passed "passed")
+ (ert-test-failed "failed")
+ (ert-test-error "error")
+ (null "unknown")
+ (ert-test-aborted-with-non-local-exit "aborted")))
+
+(defun ert-tests-running-mode-line-indicator ()
+ (let* ((stats ert-current-run-stats)
+ (tests-total (ert-stats-total stats))
+ (tests-completed (+ (ert-stats-passed-expected stats)
+ (ert-stats-passed-unexpected stats)
+ (ert-stats-failed-expected stats)
+ (ert-stats-failed-unexpected stats)
+ (ert-stats-error-expected stats)
+ (ert-stats-error-unexpected stats))))
+ (if (>= tests-completed tests-total)
+ (format " ERT(%s/%s,finished)" tests-completed tests-total)
+ (format " ERT(%s/%s):%s"
+ (1+ tests-completed)
+ tests-total
+ (if (null (ert-stats-current-test stats))
+ "?"
+ (format "%S"
+ (ert-test-name (ert-stats-current-test stats))))))))
+
+(defun ert-pp-with-indentation-and-newline (object)
+ "Pretty-print OBJECT, indenting it to the current column of point.
+Ensures a final newline is inserted."
+ (let ((begin (point)))
+ (pp object (current-buffer))
+ (unless (bolp) (insert "\n"))
+ (save-excursion
+ (goto-char begin)
+ (indent-sexp))))
+
+(defun ert-print-test-for-ewoc (entry)
+ "The ewoc print function for ewoc test entries."
+ (let* ((test (ert-ewoc-entry-test entry))
+ (result (ert-ewoc-entry-result entry))
+ (hiddenp (ert-ewoc-entry-hidden-p entry))
+ (expandedp (ert-ewoc-entry-expanded-p entry))
+ (extended-printer-limits-p (ert-ewoc-entry-extended-printer-limits-p
+ entry)))
+ (cond (hiddenp)
+ (t
+ (insert-text-button (format "%c"
+ (ert-char-for-test-result
+ result
+ (ert-test-result-expected-p test
+ result)))
+ :type 'ert-results-expand-collapse-button)
+ (insert " ")
+ (ert-insert-test-name-button (ert-test-name test))
+ (insert "\n")
+ (when (and expandedp (not (eql result 'nil)))
+ (etypecase result
+ (ert-test-passed
+ (insert " passed\n")
+ (insert ""))
+ (ert-test-result-with-condition
+ (insert " ")
+ (let ((print-escape-newlines t)
+ (print-level (if extended-printer-limits-p 10 5))
+ (print-length (if extended-printer-limits-p 100 10)))
+ (let ((begin (point)))
+ (ert-pp-with-indentation-and-newline
+ (ert-test-result-with-condition-condition result))
+ (save-restriction
+ (narrow-to-region begin (point))
+ ;; Inhibit optimization in `debugger-make-xrefs'
+ ;; that sometimes inserts unrelated backtrace
+ ;; info into our buffer.
+ (let ((debugger-previous-backtrace nil))
+ (debugger-make-xrefs))))))
+ (ert-test-aborted-with-non-local-exit
+ (insert " aborted\n")))
+ (insert "\n")))))
+ nil)
+
+(defun ert-setup-results-buffer (stats listener buffer-name)
+ "Set up a test results buffer."
+ (unless buffer-name (setq buffer-name "*ert*"))
+ (let ((buffer (let ((default-major-mode 'fundamental-mode))
+ (get-buffer-create buffer-name))))
+ (with-current-buffer buffer
+ (setq buffer-read-only t)
+ (let ((inhibit-read-only t))
+ (buffer-disable-undo)
+ (erase-buffer)
+ (ert-results-mode)
+ (set (make-local-variable 'ert-results-ewoc)
+ (ewoc-create 'ert-print-test-for-ewoc nil nil t))
+ (set (make-local-variable 'ert-results-stats) stats)
+ (set (make-local-variable 'ert-results-progress-bar-string)
+ (make-string (ert-stats-total stats)
+ (ert-char-for-test-result nil t)))
+ (set (make-local-variable 'ert-results-listener) listener)
+ (ert-results-update-ewoc-hf ert-results-ewoc ert-results-stats)
+ (goto-char (1- (point-max)))
+ buffer))))
+
+(defun ert-run-or-rerun-test (stats test listener)
+ "Run the single test TEST and record the result using STATS and LISTENER."
+ (let ((ert-current-run-stats stats)
+ (pos (ert-stats-test-index stats test))
+ (results (ert-stats-test-results stats))
+ (expected (ert-stats-test-results-expected stats)))
+ ;; Adjust stats to remove previous result.
+ (if (aref expected pos)
+ (etypecase (aref results pos)
+ (ert-test-passed (decf (ert-stats-passed-expected stats)))
+ (ert-test-failed (decf (ert-stats-failed-expected stats)))
+ (ert-test-error (decf (ert-stats-error-expected stats)))
+ (null)
+ (ert-test-aborted-with-non-local-exit))
+ (etypecase (aref results pos)
+ (ert-test-passed (decf (ert-stats-passed-unexpected stats)))
+ (ert-test-failed (decf (ert-stats-failed-unexpected stats)))
+ (ert-test-error (decf (ert-stats-error-unexpected stats)))
+ (null)
+ (ert-test-aborted-with-non-local-exit)))
+ (setf (aref results pos) nil)
+ ;; Call listener after setting/before resetting
+ ;; (ert-stats-current-test stats); the listener might refresh the
+ ;; mode line display, and if the value is not set yet/any more
+ ;; during this refresh, the mode line will flicker unnecessarily.
+ (setf (ert-stats-current-test stats) test)
+ (funcall listener 'test-started stats test)
+ (setf (ert-test-most-recent-result test) nil)
+ (unwind-protect
+ (ert-run-test test)
+ (let* ((result (ert-test-most-recent-result test))
+ (expectedp (typep result (ert-test-expected-result-type test))))
+ ;; Adjust stats to add new result.
+ (if expectedp
+ (etypecase result
+ (ert-test-passed (incf (ert-stats-passed-expected stats)))
+ (ert-test-failed (incf (ert-stats-failed-expected stats)))
+ (ert-test-error (incf (ert-stats-error-expected stats)))
+ (null)
+ (ert-test-aborted-with-non-local-exit))
+ (etypecase result
+ (ert-test-passed (incf (ert-stats-passed-unexpected stats)))
+ (ert-test-failed (incf (ert-stats-failed-unexpected stats)))
+ (ert-test-error (incf (ert-stats-error-unexpected stats)))
+ (null)
+ (ert-test-aborted-with-non-local-exit)))
+ (setf (aref results pos) result
+ (aref expected pos) expectedp)
+ (funcall listener 'test-ended stats test result))
+ (setf (ert-stats-current-test stats) nil))))
+
+(defun ert-run-tests (selector listener)
+ "Run the tests specified by SELECTOR, sending progress updates to LISTENER."
+ (let* ((tests (coerce (ert-select-tests selector t) 'vector))
+ (map (let ((map (make-hash-table :size (length tests))))
+ (loop for i from 0
+ for test across tests
+ for key = (or (ert-test-name test) test) do
+ (assert (not (gethash key map)))
+ (setf (gethash key map) i))
+ map))
+ (stats (make-ert-stats :selector selector
+ :tests tests
+ :test-map map
+ :test-results (make-vector (length tests) nil)
+ :test-results-expected (make-vector
+ (length tests) nil)
+ :total (length tests)
+ :start-time (current-time))))
+ (funcall listener 'run-started stats)
+ (let ((abortedp t))
+ (let ((ert-current-run-stats stats))
+ (force-mode-line-update)
+ (unwind-protect
+ (progn
+ (loop for test across tests do
+ (ert-run-or-rerun-test stats test listener))
+ (setq abortedp nil))
+ (setf (ert-stats-aborted-p stats) abortedp)
+ (setf (ert-stats-end-time stats) (current-time))
+ (funcall listener 'run-ended stats abortedp)))
+ stats)))
+
+(defun ert-stats-test-index (stats test)
+ "Return the index of TEST in the run represented by STATS."
+ (gethash (or (ert-test-name test) test) (ert-stats-test-map stats)))
+
+(defvar ert-selector-history nil
+ "List of recent test selectors read from terminal.")
+
+;; Fix-me: return (regep (list of matches))?
+;; Fix-me: Add prompt parameter?
+(defun ert-read-test-selector ()
+ "Read a regexp for test selection from minibuffer.
+The user can use TAB to see which tests match."
+ (let* ((all-tests
+ (mapcar (lambda (rec) (format "%s" (elt rec 1)))
+ (ert-select-tests "" t))
+ ;;'("ert-group1-1" "ert-group1-2" "ert-other")
+ )
+ regexp
+ ret
+ (get-completions
+ (lambda ()
+ (let* ((ret (save-match-data
+ (mapcar (lambda (alt)
+ (when (string-match regexp alt)
+ alt))
+ all-tests))))
+ (setq ret (delq nil ret))
+ ret))))
+ (setq all-tests (append all-tests
+ '(":new"
+ ":failed" ":passed" ":error"
+ )
+ nil))
+ (let ((mini-map (copy-keymap minibuffer-local-map)))
+ (define-key mini-map [?\t]
+ (lambda () (interactive)
+ (with-output-to-temp-buffer "*Completions*"
+ (display-completion-list
+ (progn
+ (setq regexp (minibuffer-contents))
+ (set-text-properties 0 (length regexp) nil regexp)
+ (funcall get-completions))))))
+ (setq regexp
+ (let* ((sym-here (thing-at-point 'symbol))
+ (test-here (when (and sym-here
+ (memq sym-here all-tests))
+ sym-here))
+ (default (if sym-here
+ (substring-no-properties sym-here)
+ (if ert-selector-history
+ (first ert-selector-history)
+ "t"))))
+ (read-from-minibuffer
+ (if (null default)
+ "Run tests, use TAB to see matches: "
+ (format "Run tests, use TAB to see matches (default %s): "
+ default))
+ nil ;; initial-contents
+ mini-map ;; keymap
+ nil ;; read
+ 'ert-selector-history
+ default nil))))
+ (setq ret regexp)
+ (when (string= "t" ret)
+ (setq ret t))
+ ret))
+
+;; Should OUTPUT-BUFFER-NAME and MESSAGE-FN really be arguments here?
+;; They are needed only for our automated self-tests at the moment.
+;; Or should there be some other mechanism?
+;;;###autoload
+(defun ert-run-tests-interactively (selector
+ &optional output-buffer-name message-fn)
+ "Run the tests specified by SELECTOR and display the results in a buffer."
+ (interactive
+;;; (list (let ((default (if ert-selector-history
+;;; (first ert-selector-history)
+;;; "t")))
+;;; (read-from-minibuffer (if (null default)
+;;; "Run tests: "
+;;; (format "Run tests (default %s): " default))
+;;; ;;nil nil t 'ert-selector-history
+;;; ;;
+;;; ;; fix-me: seems like I am misunderstanding Christians intent here.
+;;; nil nil nil 'ert-selector-history
+;;; default nil))
+;;; nil nil))
+ (list (ert-read-test-selector)
+ nil nil))
+ (unless message-fn (setq message-fn 'message))
+ (lexical-let ((output-buffer-name output-buffer-name)
+ buffer
+ listener
+ (message-fn message-fn))
+ (setq listener
+ (lambda (event-type &rest event-args)
+ (ecase event-type
+ (run-started
+ (destructuring-bind (stats) event-args
+ (setq buffer (ert-setup-results-buffer stats
+ listener
+ output-buffer-name))
+ (pop-to-buffer buffer)))
+ (run-ended
+ (destructuring-bind (stats abortedp) event-args
+ (funcall message-fn
+ "%sRan %s tests, %s results were as expected%s"
+ (if (not abortedp)
+ ""
+ "Aborted: ")
+ (ert-stats-total stats)
+ (+ (ert-stats-passed-expected stats)
+ (ert-stats-failed-expected stats)
+ (ert-stats-error-expected stats))
+ (let ((unexpected
+ (+ (ert-stats-passed-unexpected stats)
+ (ert-stats-failed-unexpected stats)
+ (ert-stats-error-unexpected stats))))
+ (if (zerop unexpected)
+ ""
+ (format ", %s unexpected" unexpected))))
+ (ert-results-update-stats-display (with-current-buffer buffer
+ ert-results-ewoc)
+ stats)))
+ (test-started
+ (destructuring-bind (stats test) event-args
+ (with-current-buffer buffer
+ (let* ((ewoc ert-results-ewoc)
+ (pos (ert-stats-test-index stats test))
+ (node (ewoc-nth ewoc pos)))
+ (unless node
+ ;; FIXME: How expensive is this assertion?
+ (assert (or (zerop pos) (ewoc-nth ewoc (1- pos)))
+ t)
+ (setq node (ewoc-enter-last
+ ewoc
+ (make-ert-ewoc-entry :test test
+ :hidden-p t))))
+ (setf (ert-ewoc-entry-test (ewoc-data node)) test)
+ (setf (ert-ewoc-entry-result (ewoc-data node)) nil)
+ (aset ert-results-progress-bar-string pos
+ (ert-char-for-test-result nil t))
+ (ert-results-update-stats-display ewoc stats)
+ (ewoc-invalidate ewoc node)))))
+ (test-ended
+ (destructuring-bind (stats test result) event-args
+ (with-current-buffer buffer
+ (let* ((ewoc ert-results-ewoc)
+ (pos (ert-stats-test-index stats test))
+ (node (ewoc-nth ewoc pos)))
+ (setf (ert-ewoc-entry-result (ewoc-data node)) result)
+ (when (ert-ewoc-entry-hidden-p (ewoc-data node))
+ (setf (ert-ewoc-entry-hidden-p (ewoc-data node))
+ (ert-test-result-expected-p test result)))
+ (aset ert-results-progress-bar-string pos
+ (ert-char-for-test-result result
+ (ert-test-result-expected-p
+ test result)))
+ (ert-results-update-stats-display ewoc stats)
+ (ewoc-invalidate ewoc node))))))))
+ (ert-run-tests
+ selector
+ listener)))
+
+(defvar ert-batch-backtrace-right-margin 70
+ "*The maximum line length for printing backtraces in `ert-run-tests-batch'.")
+
+(defun ert-run-tests-batch (selector)
+ "Run the tests specified by SELECTOR, printing results to the terminal.
+
+Returns the stats object."
+ (ert-run-tests
+ selector
+ (lambda (event-type &rest event-args)
+ (ecase event-type
+ (run-started
+ (destructuring-bind (stats) event-args
+ (message "Running %s tests (%s)"
+ (length (ert-stats-tests stats))
+ (ert-format-time-iso8601 (ert-stats-start-time stats)))))
+ (run-ended
+ (destructuring-bind (stats abortedp) event-args
+ (let ((unexpected (+ (ert-stats-passed-unexpected stats)
+ (ert-stats-failed-unexpected stats)
+ (ert-stats-error-unexpected stats))))
+ (message "\n%sRan %s tests, %s results were as expected%s (%s)\n"
+ (if (not abortedp)
+ ""
+ "Aborted: ")
+ (ert-stats-total stats)
+ (+ (ert-stats-passed-expected stats)
+ (ert-stats-failed-expected stats)
+ (ert-stats-error-expected stats))
+ (if (zerop unexpected)
+ ""
+ (format ", %s unexpected" unexpected))
+ (ert-format-time-iso8601 (ert-stats-end-time stats)))
+ (unless (zerop unexpected)
+ (message "%s unexpected results:" unexpected)
+ (loop for test across (ert-stats-tests stats)
+ for result = (ert-test-most-recent-result test) do
+ (when (not (ert-test-result-expected-p test result))
+ (message "%9s %S"
+ (ert-string-for-test-result result nil)
+ (ert-test-name test))))
+ (message "%s" "")))))
+ (test-started
+ )
+ (test-ended
+ (destructuring-bind (stats test result) event-args
+ (etypecase result
+ (ert-test-passed)
+ (ert-test-result-with-condition
+ (message "Test %S backtrace:" (ert-test-name test))
+ (with-temp-buffer
+ (ert-print-backtrace (ert-test-result-with-condition-backtrace result))
+ (goto-char (point-min))
+ (while (not (eobp))
+ (let ((start (point))
+ (end (progn (end-of-line) (point))))
+ (setq end (min end
+ (+ start ert-batch-backtrace-right-margin)))
+ (message "%s" (buffer-substring-no-properties
+ start end)))
+ (forward-line 1)))
+ (with-temp-buffer
+ (insert " ")
+ (let ((print-escape-newlines t)
+ (print-level 5)
+ (print-length 10))
+ (let ((begin (point)))
+ (ert-pp-with-indentation-and-newline
+ (ert-test-result-with-condition-condition result))))
+ (goto-char (1- (point-max)))
+ (assert (looking-at "\n"))
+ (delete-char 1)
+ (message "Test %S condition:" (ert-test-name test))
+ (message "%s" (buffer-string))))
+ (ert-test-aborted-with-non-local-exit))
+ (let* ((max (prin1-to-string (length (ert-stats-tests stats))))
+ (format-string (concat "%9s %"
+ (prin1-to-string (length max))
+ "s/" max " %S")))
+ (message format-string
+ (ert-string-for-test-result result
+ (ert-test-result-expected-p
+ test result))
+ (1+ (ert-stats-test-index stats test))
+ (ert-test-name test)))))))))
+
+
+;;; Commands and button actions for the results buffer.
+
+(define-derived-mode ert-results-mode fundamental-mode "ERT-Results"
+ "Major mode for viewing results of ERT test runs.")
+
+(loop for (key binding) in
+ '(("j" ert-results-jump-between-summary-and-result)
+ ("." ert-results-find-test-at-point-other-window)
+ ("r" ert-results-rerun-test-at-point)
+ ("d" ert-results-rerun-test-at-point-debugging-errors)
+ ("b" ert-results-pop-to-backtrace-for-test-at-point)
+ ("m" ert-results-pop-to-messages-for-test-at-point)
+ ("p" ert-results-toggle-printer-limits-for-test-at-point)
+ ("D" ert-delete-test)
+ ([?\t] forward-button)
+ ([backtab] backward-button)
+ )
+ do
+ (define-key ert-results-mode-map key binding))
+
+(define-button-type 'ert-results-progress-bar-button
+ 'action #'ert-results-progress-bar-button-action
+ 'help-echo "mouse-2, RET: Reveal test result")
+
+(define-button-type 'ert-test-name-button
+ 'action #'ert-test-name-button-action
+ 'help-echo "mouse-2, RET: Find test definition")
+
+(define-button-type 'ert-results-expand-collapse-button
+ 'action #'ert-results-expand-collapse-button-action
+ 'help-echo "mouse-2, RET: Expand/collapse test result")
+
+(defun ert-results-test-node-or-null-at-point ()
+ "If point is on a valid ewoc node, return it; return nil otherwise.
+
+To be used in the ERT results buffer."
+ (let* ((ewoc ert-results-ewoc)
+ (node (ewoc-locate ewoc)))
+ ;; `ewoc-locate' will return an arbitrary node when point is on
+ ;; header or footer, or when all nodes are invisible. So we need
+ ;; to validate its return value here.
+ (if (and (>= (point) (ewoc-location node))
+ (not (ert-ewoc-entry-hidden-p (ewoc-data node))))
+ node
+ nil)))
+
+(defun ert-results-test-node-at-point ()
+ "If point is on a valid ewoc node, return it; signal an error otherwise.
+
+To be used in the ERT results buffer."
+ (or (ert-results-test-node-or-null-at-point)
+ (error "No test at point")))
+
+(defun ert-results-expand-collapse-button-action (button)
+ "Expand or collapse the test node BUTTON belongs to."
+ (let* ((ewoc ert-results-ewoc)
+ (node (save-excursion
+ (goto-char (ert-button-action-position))
+ (ert-results-test-node-at-point)))
+ (entry (ewoc-data node)))
+ (setf (ert-ewoc-entry-expanded-p entry)
+ (not (ert-ewoc-entry-expanded-p entry)))
+ (ewoc-invalidate ewoc node)))
+
+(defun ert-results-find-test-at-point-other-window ()
+ "Find the definition of the test at point in another window.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let* ((node (ert-results-test-node-at-point))
+ (entry (ewoc-data node))
+ (test (ert-ewoc-entry-test entry))
+ (name (ert-test-name test)))
+ (ert-find-test-other-window name)))
+
+(defun ert-test-name-button-action (button)
+ "Find the definition of the test BUTTON belongs to, in another window."
+ (let ((name (button-get button 'ert-test-name)))
+ (ert-find-test-other-window name)))
+
+(defun ert-ewoc-position (ewoc node)
+ "Return the position of NODE in EWOC, or nil if NODE is not in EWOC."
+ (loop for i from 0
+ for node-here = (ewoc-nth ewoc 0) then (ewoc-next ewoc node-here)
+ do (when (eql node node-here)
+ (return i))
+ finally (return nil)))
+
+(defun ert-results-jump-between-summary-and-result ()
+ "Jump back and forth between the test run summary and individual test results.
+
+From an ewoc node, jumps to the character that represents the
+same test in the progress bar, and vice versa.
+
+To be used in the ERT results buffer."
+ ;; Maybe this command isn't actually needed much, but if it is, it
+ ;; seems like an indication that the UI design is not optimal. If
+ ;; jumping back and forth between a summary at the top of the buffer
+ ;; and the error log in the remainder of the buffer is useful, then
+ ;; the summary apparently needs to be easily accessible from the
+ ;; error log, and perhaps it would be better to have it in a
+ ;; separate buffer to keep it visible.
+ (interactive)
+ (let ((ewoc ert-results-ewoc)
+ (progress-bar-begin ert-results-progress-bar-button-begin))
+ (cond ((ert-results-test-node-or-null-at-point)
+ (let* ((node (ert-results-test-node-at-point))
+ (pos (ert-ewoc-position ewoc node)))
+ (goto-char (+ progress-bar-begin pos))))
+ ((and (<= progress-bar-begin (point))
+ (< (point) (button-end (button-at progress-bar-begin))))
+ (let* ((node (ewoc-nth ewoc (- (point) progress-bar-begin)))
+ (entry (ewoc-data node)))
+ (when (ert-ewoc-entry-hidden-p entry)
+ (setf (ert-ewoc-entry-hidden-p entry) nil)
+ (ewoc-invalidate ewoc node))
+ (ewoc-goto-node ewoc node)))
+ (t
+ (goto-char progress-bar-begin)))))
+
+(defun ert-button-action-position ()
+ "The buffer position where the last button action was triggered."
+ (cond ((integerp last-command-event)
+ (point))
+ ((eventp last-command-event)
+ (posn-point (event-start last-command-event)))
+ (t (assert nil))))
+
+(defun ert-results-progress-bar-button-action (button)
+ "Find the ewoc node that represents the same test as the character clicked on."
+ (goto-char (ert-button-action-position))
+ (ert-results-jump-between-summary-and-result))
+
+(defun ert-results-rerun-test-at-point ()
+ "Re-run the test at point.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let* ((ewoc ert-results-ewoc)
+ (node (ert-results-test-node-at-point))
+ (entry (ewoc-data node))
+ (old-test (ert-ewoc-entry-test entry))
+ (test-name (ert-test-name old-test))
+ ;; FIXME: Write a test for this lookup.
+ (test (if test-name
+ (if (ert-test-boundp test-name)
+ (ert-get-test test-name)
+ (error "No such test: %S" test-name))
+ old-test))
+ (stats ert-results-stats)
+ (pos (gethash test (ert-stats-test-map stats)))
+ (progress-message (format "Running test %S" (ert-test-name test))))
+ ;; Need to save and restore point manually here: When point is on
+ ;; the first visible ewoc entry while the header is updated, point
+ ;; moves to the top of the buffer. This is undesirable, and a
+ ;; simple `save-excursion' doesn't prevent it.
+ (let ((point (point)))
+ (unwind-protect
+ (unwind-protect
+ (progn
+ (message "%s..." progress-message)
+ (ert-run-or-rerun-test stats test
+ ert-results-listener))
+ (ert-results-update-stats-display ewoc stats)
+ (message "%s...%s"
+ progress-message
+ (let ((result (ert-test-most-recent-result test)))
+ (ert-string-for-test-result
+ result (ert-test-result-expected-p test result)))))
+ (goto-char point)))))
+
+(defun ert-results-rerun-test-at-point-debugging-errors ()
+ "Re-run the test at point with `ert-debug-on-error' bound to t.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let ((ert-debug-on-error t))
+ (ert-results-rerun-test-at-point)))
+
+(defun ert-print-backtrace (backtrace)
+ "Format the backtrace BACKTRACE to the current buffer."
+ ;; This is essentially a reimplementation of Fbacktrace
+ ;; (src/eval.c), but for a saved backtrace, not the current one.
+ (let ((print-escape-newlines t)
+ (print-level 8)
+ (print-length 50))
+ (dolist (frame backtrace)
+ (ecase (first frame)
+ ((nil)
+ ;; Special operator.
+ (destructuring-bind (special-operator &rest arg-forms)
+ (cdr frame)
+ (insert
+ (format " %S\n" (list* special-operator arg-forms)))))
+ ((t)
+ ;; Function call.
+ (destructuring-bind (fn &rest args) (cdr frame)
+ (insert (format " %S(" fn))
+ (loop for firstp = t then nil
+ for arg in args do
+ (unless firstp
+ (insert " "))
+ (insert (format "%S" arg)))
+ (insert ")\n")))))))
+
+(defun ert-results-pop-to-backtrace-for-test-at-point ()
+ "Display the backtrace for the test at point.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let* ((node (ert-results-test-node-at-point))
+ (entry (ewoc-data node))
+ (test (ert-ewoc-entry-test entry))
+ (result (ert-ewoc-entry-result entry)))
+ (etypecase result
+ (ert-test-passed (error "Test passed, no backtrace available"))
+ (ert-test-result-with-condition
+ (let ((backtrace (ert-test-result-with-condition-backtrace result))
+ (buffer
+ (let ((default-major-mode 'fundamental-mode))
+ (get-buffer-create "*ERT Backtrace*"))))
+ (pop-to-buffer buffer)
+ (setq buffer-read-only t)
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ ;; Use unibyte because `debugger-setup-buffer' also does so.
+ (set-buffer-multibyte nil)
+ (setq truncate-lines t)
+ (ert-print-backtrace backtrace)
+ (debugger-make-xrefs)
+ (goto-char (point-min))))))))
+
+(defun ert-results-pop-to-messages-for-test-at-point ()
+ "Display the part of the *Messages* buffer generated during the test at point.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let* ((node (ert-results-test-node-at-point))
+ (entry (ewoc-data node))
+ (test (ert-ewoc-entry-test entry))
+ (result (ert-ewoc-entry-result entry)))
+ (let ((buffer
+ (let ((default-major-mode 'fundamental-mode))
+ (get-buffer-create "*ERT Messages*"))))
+ (pop-to-buffer buffer)
+ (setq buffer-read-only t)
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (insert (ert-test-result-messages result))
+ (goto-char (point-min))
+ (insert "Messages for test `")
+ (ert-insert-test-name-button (ert-test-name test))
+ (insert "':\n")))))
+
+(defun ert-results-toggle-printer-limits-for-test-at-point ()
+ "Toggle how much of the condition to print for the test at point.
+
+To be used in the ERT results buffer."
+ (interactive)
+ (let* ((ewoc ert-results-ewoc)
+ (node (ert-results-test-node-at-point))
+ (entry (ewoc-data node)))
+ (setf (ert-ewoc-entry-extended-printer-limits-p entry)
+ (not (ert-ewoc-entry-extended-printer-limits-p entry)))
+ (ewoc-invalidate ewoc node)))
+
+(defun ert-activate-font-lock-keywords ()
+ (font-lock-add-keywords
+ nil
+ '(("(\\(\\<ert-deftest\\)\\>\\s *\\(\\sw+\\)?"
+ (1 font-lock-keyword-face nil t)
+ (2 font-lock-function-name-face nil t)))))
+
+(defun* ert-remove-from-list (list-var element &key key test)
+ "Remove ELEMENT from the value of LIST-VAR if present.
+
+This is an inverse of `add-to-list'."
+ (unless key (setq key #'identity))
+ (unless test (setq test #'equal))
+ (setf (symbol-value list-var)
+ (remove* element
+ (symbol-value list-var)
+ :key key
+ :test test)))
+
+
+;;; Actions on load/unload.
+
+(add-to-list 'find-function-regexp-alist '(ert-deftest . ert-find-test-regexp))
+(add-to-list 'minor-mode-alist '(ert-current-run-stats
+ (:eval
+ (ert-tests-running-mode-line-indicator))))
+(add-to-list 'emacs-lisp-mode-hook 'ert-activate-font-lock-keywords)
+
+(defun ert-unload-function ()
+ (ert-remove-from-list 'find-function-regexp-alist 'ert-deftest :key #'car)
+ (ert-remove-from-list 'minor-mode-alist 'ert-current-run-stats :key #'car)
+ (ert-remove-from-list 'emacs-lisp-mode-hook 'ert-activate-font-lock-keywords)
+ nil)
+
+(defvar ert-unload-hook '())
+(add-hook 'ert-unload-hook 'ert-unload-function)
+
+
+;;; Self-tests.
+
+(ert-delete-all-tests)
+
+;; Test that test bodies are actually run.
+(defvar ert-test-body-was-run)
+(ert-deftest ert-test-body-runs ()
+ (setq ert-test-body-was-run t))
+
+
+;; Test that nested test bodies run.
+(ert-deftest ert-nested-test-body-runs ()
+ (lexical-let ((was-run nil))
+ (let ((test (make-ert-test :body (lambda ()
+ (setq was-run t)))))
+ (assert (not was-run))
+ (ert-run-test test)
+ (assert was-run))))
+
+
+;; Test that pass/fail works.
+(ert-deftest ert-test-pass ()
+ (let ((test (make-ert-test :body (lambda ()))))
+ (let ((result (ert-run-test test)))
+ (assert (typep result 'ert-test-passed)))))
+
+(ert-deftest ert-test-fail ()
+ (let ((test (make-ert-test :body (lambda () (ert-fail "failure message")))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (assert (typep result 'ert-test-failed) t)
+ (assert (equal (ert-test-result-with-condition-condition result)
+ '(ert-test-failed "failure message"))
+ t))))
+
+(ert-deftest ert-test-fail-debug-with-condition-case ()
+ (let ((test (make-ert-test :body (lambda () (ert-fail "failure message")))))
+ (condition-case condition
+ (progn
+ (let ((ert-debug-on-error t))
+ (ert-run-test test))
+ (assert nil))
+ ((error)
+ (assert (equal condition '(ert-test-failed "failure message")) t)))))
+
+(ert-deftest ert-test-fail-debug-with-debugger-1 ()
+ (let ((test (make-ert-test :body (lambda () (ert-fail "failure message")))))
+ (let ((debugger (lambda (&rest debugger-args)
+ (assert nil))))
+ (let ((ert-debug-on-error nil))
+ (ert-run-test test)))))
+
+(ert-deftest ert-test-fail-debug-with-debugger-2 ()
+ (let ((test (make-ert-test :body (lambda () (ert-fail "failure message")))))
+ (block nil
+ (let ((debugger (lambda (&rest debugger-args)
+ (return-from nil nil))))
+ (let ((ert-debug-on-error t))
+ (ert-run-test test))
+ (assert nil)))))
+
+(ert-deftest ert-test-fail-debug-nested-with-debugger ()
+ (let ((test (make-ert-test :body (lambda ()
+ (let ((ert-debug-on-error t))
+ (ert-fail "failure message"))))))
+ (let ((debugger (lambda (&rest debugger-args)
+ (assert nil nil "Assertion a"))))
+ (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (let ((test (make-ert-test :body (lambda ()
+ (let ((ert-debug-on-error nil))
+ (ert-fail "failure message"))))))
+ (block nil
+ (let ((debugger (lambda (&rest debugger-args)
+ (return-from nil nil))))
+ (let ((ert-debug-on-error t))
+ (ert-run-test test))
+ (assert nil nil "Assertion b")))))
+
+(ert-deftest ert-test-error ()
+ (let ((test (make-ert-test :body (lambda () (error "error message")))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (assert (typep result 'ert-test-error) t)
+ (assert (equal (ert-test-result-with-condition-condition result)
+ '(error "error message"))
+ t))))
+
+(ert-deftest ert-test-error-debug ()
+ (let ((test (make-ert-test :body (lambda () (error "error message")))))
+ (condition-case condition
+ (progn
+ (let ((ert-debug-on-error t))
+ (ert-run-test test))
+ (assert nil))
+ ((error)
+ (assert (equal condition '(error "error message")) t)))))
+
+
+;; Test that `should' works.
+(ert-deftest ert-test-should ()
+ (let ((test (make-ert-test :body (lambda () (ert-should nil)))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (assert (typep result 'ert-test-failed) t)
+ (assert (equal (ert-test-result-with-condition-condition result)
+ '(ert-test-failed ((ert-should nil) :form nil :value nil)))
+ t)))
+ (let ((test (make-ert-test :body (lambda () (ert-should t)))))
+ (let ((result (ert-run-test test)))
+ (assert (typep result 'ert-test-passed) t))))
+
+(ert-deftest ert-test-should-value ()
+ (ert-should (eql (ert-should 'foo) 'foo))
+ (ert-should (eql (ert-should 'bar) 'bar)))
+
+(ert-deftest ert-test-should-not ()
+ (let ((test (make-ert-test :body (lambda () (ert-should-not t)))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (assert (typep result 'ert-test-failed) t)
+ (assert (equal (ert-test-result-with-condition-condition result)
+ '(ert-test-failed ((ert-should-not t) :form t :value t)))
+ t)))
+ (let ((test (make-ert-test :body (lambda () (ert-should-not nil)))))
+ (let ((result (ert-run-test test)))
+ (assert (typep result 'ert-test-passed)))))
+
+
+(ert-deftest ert-test-should-error ()
+ ;; No error.
+ (let ((test (make-ert-test :body (lambda () (ert-should-error (progn))))))
+ (let ((result (let ((ert-debug-on-error nil))
+ (ert-run-test test))))
+ (ert-should (typep result 'ert-test-failed))
+ (ert-should (equal (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((ert-should-error (progn))
+ :form (progn)
+ :value nil
+ :fail-reason "did not signal an error"))))))
+ ;; A simple error.
+ (let ((test (make-ert-test :body (lambda () (ert-should-error (error "foo"))))))
+ (let ((result (ert-run-test test)))
+ (ert-should (typep result 'ert-test-passed))))
+ ;; Error of unexpected type, no test.
+ (let ((test (make-ert-test :body (lambda ()
+ (ert-should-error (error "foo")
+ :type 'singularity-error)))))
+ (let ((result (ert-run-test test)))
+ (ert-should (typep result 'ert-test-failed))
+ (ert-should (equal
+ (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((ert-should-error (error "foo") :type 'singularity-error)
+ :form (error "foo")
+ :condition (error "foo")
+ :fail-reason
+ "the error signalled did not have the expected type"))))))
+ ;; Error of the expected type, no test.
+ (let ((test (make-ert-test :body (lambda ()
+ (ert-should-error (signal 'singularity-error
+ nil)
+ :type 'singularity-error)))))
+ (let ((result (ert-run-test test)))
+ (ert-should (typep result 'ert-test-passed))))
+ ;; Error that fails the test, no type.
+ (let ((test (make-ert-test :body (lambda ()
+ (ert-should-error
+ (error "foo")
+ :test (lambda (error) nil))))))
+ (let ((result (ert-run-test test)))
+ (ert-should (typep result 'ert-test-failed))
+ (ert-should (equal (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((ert-should-error (error "foo") :test (lambda (error) nil))
+ :form (error "foo")
+ :condition (error "foo")
+ :fail-reason
+ "the error signalled did not pass the test"))))))
+ ;; Error that passes the test, no type.
+ (let ((test (make-ert-test :body (lambda ()
+ (ert-should-error (error "foo")
+ :test (lambda (error) t))))))
+ (let ((result (ert-run-test test)))
+ (ert-should (typep result 'ert-test-passed))))
+ ;; Error that has the expected type but fails the test.
+ (let ((test (make-ert-test :body (lambda ()
+ (ert-should-error
+ (signal 'singularity-error nil)
+ :type 'singularity-error
+ :test (lambda (error) nil))))))
+ (let ((result (ert-run-test test)))
+ (ert-should (typep result 'ert-test-failed))
+ (ert-should (equal (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((ert-should-error (signal 'singularity-error nil)
+ :type 'singularity-error
+ :test (lambda (error) nil))
+ :form (signal singularity-error nil)
+ :condition (singularity-error)
+ :fail-reason
+ "the error signalled did not pass the test"))))))
+ ;; Error that has the expected type and passes the test.
+ (let ((test (make-ert-test :body (lambda ()
+ (ert-should-error
+ (signal 'singularity-error nil)
+ :type 'singularity-error
+ :test (lambda (error) t))))))
+ (let ((result (ert-run-test test)))
+ (ert-should (typep result 'ert-test-passed))))
+ )
+
+(ert-deftest ert-test-should-error-subtypes ()
+ (let ((test (make-ert-test
+ :body (lambda ()
+ (ert-should-error (signal 'singularity-error nil)
+ :type 'singularity-error
+ :exclude-subtypes t)))))
+ (let ((result (ert-run-test test)))
+ (ert-should (typep result 'ert-test-passed))))
+ (let ((test (make-ert-test
+ :body (lambda ()
+ (ert-should-error (signal 'arith-error nil)
+ :type 'singularity-error)))))
+ (let ((result (ert-run-test test)))
+ (ert-should (typep result 'ert-test-failed))
+ (ert-should (equal
+ (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((ert-should-error (signal 'arith-error nil)
+ :type 'singularity-error)
+ :form (signal arith-error nil)
+ :condition (arith-error)
+ :fail-reason
+ "the error signalled did not have the expected type"))))))
+ (let ((test (make-ert-test
+ :body (lambda ()
+ (ert-should-error (signal 'arith-error nil)
+ :type 'singularity-error
+ :exclude-subtypes t)))))
+ (let ((result (ert-run-test test)))
+ (ert-should (typep result 'ert-test-failed))
+ (ert-should (equal
+ (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((ert-should-error (signal 'arith-error nil)
+ :type 'singularity-error
+ :exclude-subtypes t)
+ :form (signal arith-error nil)
+ :condition (arith-error)
+ :fail-reason
+ "the error signalled did not have the expected type"))))))
+ (let ((test (make-ert-test
+ :body (lambda ()
+ (ert-should-error (signal 'singularity-error nil)
+ :type 'arith-error
+ :exclude-subtypes t)))))
+ (let ((result (ert-run-test test)))
+ (ert-should (typep result 'ert-test-failed))
+ (ert-should (equal
+ (ert-test-result-with-condition-condition result)
+ '(ert-test-failed
+ ((ert-should-error (signal 'singularity-error nil)
+ :type 'arith-error
+ :exclude-subtypes t)
+ :form (signal singularity-error nil)
+ :condition (singularity-error)
+ :fail-reason
+ "the error signalled was a subtype of the expected type"))))))
+ )
+
+;; Test that `should' errors contain the information we expect them to.
+(defmacro ert-test-my-list (&rest args)
+ `(list ,@args))
+
+(ert-deftest ert-test-should-failure-debugging ()
+ (loop for (body expected-condition) in
+ `((,(lambda () (let ((x nil)) (ert-should x)))
+ (ert-test-failed ((ert-should x) :form x :value nil)))
+ (,(lambda () (let ((x t)) (ert-should-not x)))
+ (ert-test-failed ((ert-should-not x) :form x :value t)))
+ (,(lambda () (let ((x t)) (ert-should (not x))))
+ (ert-test-failed ((ert-should (not x)) :form (not t) :value nil)))
+ (,(lambda () (let ((x nil)) (ert-should-not (not x))))
+ (ert-test-failed ((ert-should-not (not x)) :form (not nil) :value t)))
+ (,(lambda () (let ((x t) (y nil)) (ert-should-not (ert-test-my-list x y))))
+ (ert-test-failed
+ ((ert-should-not (ert-test-my-list x y))
+ :form (list t nil)
+ :value (t nil))))
+ (,(lambda () (let ((x t)) (ert-should (error "foo"))))
+ (error "foo")))
+ do
+ (let ((test (make-ert-test :body body)))
+ (condition-case actual-condition
+ (progn
+ (let ((ert-debug-on-error t))
+ (ert-run-test test))
+ (assert nil))
+ ((error)
+ (ert-should (equal actual-condition expected-condition)))))))
+
+(ert-deftest ert-test-messages ()
+ (let* ((message-string "Test message")
+ (messages-buffer (get-buffer-create "*Messages*"))
+ (test (make-ert-test :body (lambda () (message "%s" message-string)))))
+ (with-current-buffer messages-buffer
+ (let ((result (ert-run-test test)))
+ (ert-should (equal (concat message-string "\n")
+ (ert-test-result-messages result)))))))
+
+(defun ert-call-with-temporary-messages-buffer (thunk)
+ (lexical-let ((new-buffer-name (generate-new-buffer-name
+ "*Messages* orig buffer")))
+ (unwind-protect
+ (progn
+ (with-current-buffer (get-buffer-create "*Messages*")
+ (rename-buffer new-buffer-name))
+ (get-buffer-create "*Messages*")
+ (funcall thunk))
+ (kill-buffer "*Messages*")
+ (with-current-buffer new-buffer-name
+ (rename-buffer "*Messages*")))))
+
+(ert-deftest ert-test-messages-on-log-truncation ()
+ (let ((test (make-ert-test
+ :body (lambda ()
+ ;; Emacs would combine messages if we
+ ;; generate the same message multiple
+ ;; times.
+ (message "a")
+ (message "b")
+ (message "c")
+ (message "d")))))
+ (let (result)
+ (ert-call-with-temporary-messages-buffer
+ (lambda ()
+ (let ((message-log-max 2))
+ (setq result (ert-run-test test)))
+ (ert-should (equal (with-current-buffer "*Messages*"
+ (buffer-string))
+ "c\nd\n"))))
+ (ert-should (equal (ert-test-result-messages result) "a\nb\nc\nd\n")))))
+
+;; Test `ert-select-tests'.
+(ert-deftest ert-test-select-regexp ()
+ (ert-should (equal (ert-select-tests "^ert-test-select-regexp$" t)
+ (list (ert-get-test 'ert-test-select-regexp)))))
+
+(ert-deftest ert-test-test-boundp ()
+ (ert-should (ert-test-boundp 'ert-test-test-boundp))
+ (ert-should-not (ert-test-boundp (make-symbol "ert-not-a-test"))))
+
+(ert-deftest ert-test-select-member ()
+ (ert-should (equal (ert-select-tests '(member ert-test-select-member) t)
+ (list (ert-get-test 'ert-test-select-member)))))
+
+(ert-deftest ert-test-select-test ()
+ (ert-should (equal (ert-select-tests (ert-get-test 'ert-test-select-test) t)
+ (list (ert-get-test 'ert-test-select-test)))))
+
+(ert-deftest ert-test-select-symbol ()
+ (ert-should (equal (ert-select-tests 'ert-test-select-symbol t)
+ (list (ert-get-test 'ert-test-select-symbol)))))
+
+(ert-deftest ert-test-select-and ()
+ (let ((test (make-ert-test
+ :name nil
+ :body nil
+ :most-recent-result (make-ert-test-failed
+ :condition nil
+ :backtrace nil))))
+ (ert-should (equal (ert-select-tests `(and (member ,test) :failed) t)
+ (list test)))))
+
+
+;; Test utility functions.
+(ert-deftest ert-proper-list-p ()
+ (ert-should (ert-proper-list-p '()))
+ (ert-should (ert-proper-list-p '(1)))
+ (ert-should (ert-proper-list-p '(1 2)))
+ (ert-should (ert-proper-list-p '(1 2 3)))
+ (ert-should (ert-proper-list-p '(1 2 3 4)))
+ (ert-should (not (ert-proper-list-p 'a)))
+ (ert-should (not (ert-proper-list-p '(1 . a))))
+ (ert-should (not (ert-proper-list-p '(1 2 . a))))
+ (ert-should (not (ert-proper-list-p '(1 2 3 . a))))
+ (ert-should (not (ert-proper-list-p '(1 2 3 4 . a))))
+ (let ((a (list 1)))
+ (setf (cdr (last a)) a)
+ (ert-should (not (ert-proper-list-p a))))
+ (let ((a (list 1 2)))
+ (setf (cdr (last a)) a)
+ (ert-should (not (ert-proper-list-p a))))
+ (let ((a (list 1 2 3)))
+ (setf (cdr (last a)) a)
+ (ert-should (not (ert-proper-list-p a))))
+ (let ((a (list 1 2 3 4)))
+ (setf (cdr (last a)) a)
+ (ert-should (not (ert-proper-list-p a))))
+ (let ((a (list 1 2)))
+ (setf (cdr (last a)) (cdr a))
+ (ert-should (not (ert-proper-list-p a))))
+ (let ((a (list 1 2 3)))
+ (setf (cdr (last a)) (cdr a))
+ (ert-should (not (ert-proper-list-p a))))
+ (let ((a (list 1 2 3 4)))
+ (setf (cdr (last a)) (cdr a))
+ (ert-should (not (ert-proper-list-p a))))
+ (let ((a (list 1 2 3)))
+ (setf (cdr (last a)) (cddr a))
+ (ert-should (not (ert-proper-list-p a))))
+ (let ((a (list 1 2 3 4)))
+ (setf (cdr (last a)) (cddr a))
+ (ert-should (not (ert-proper-list-p a))))
+ (let ((a (list 1 2 3 4)))
+ (setf (cdr (last a)) (cdddr a))
+ (ert-should (not (ert-proper-list-p a)))))
+
+(ert-deftest ert-parse-keys-and-body ()
+ (ert-should (equal (ert-parse-keys-and-body "doc" '(foo))
+ '(nil "doc" (foo))))
+ (ert-should (equal (ert-parse-keys-and-body "doc" '(:bar foo))
+ '((:bar foo) "doc" nil)))
+ (ert-should (equal (ert-parse-keys-and-body nil '(:bar foo))
+ '((:bar foo) nil nil)))
+ (ert-should (equal (ert-parse-keys-and-body "doc" '(:bar foo))
+ '((:bar foo) "doc" nil)))
+ (ert-should (equal (ert-parse-keys-and-body nil '(:bar foo a (b)))
+ '((:bar foo) nil (a (b)))))
+ (ert-should (equal (ert-parse-keys-and-body nil '(:bar foo :a (b)))
+ '((:bar foo :a (b)) nil nil)))
+ (ert-should (equal (ert-parse-keys-and-body nil '(bar foo :a (b)))
+ '(nil nil (bar foo :a (b)))))
+ (ert-should-error (ert-parse-keys-and-body nil '(:bar foo :a))))
+
+
+
+;; Test `ert-run-tests'.
+(ert-deftest ert-test-run-tests ()
+ (let ((passing-test (make-ert-test :name 'passing-test
+ :body (lambda () (ert-pass))))
+ (failing-test (make-ert-test :name 'failing-test
+ :body (lambda () (ert-fail
+ "failure message"))))
+ )
+ (let ((ert-debug-on-error nil))
+ (let* ((buffer-name (generate-new-buffer-name " *ert-test-run-tests*"))
+ (messages nil)
+ (mock-message-fn
+ (lambda (format-string &rest args)
+ (push (apply #'format format-string args) messages))))
+ (save-window-excursion
+ (unwind-protect
+ (let ((case-fold-search nil))
+ (ert-run-tests-interactively
+ `(member ,passing-test ,failing-test) buffer-name
+ mock-message-fn)
+ (ert-should (equal messages `(,(concat
+ "Ran 2 tests, 1 results were "
+ "as expected, 1 unexpected"))))
+ (with-current-buffer buffer-name
+ (goto-char (point-min))
+ (ert-should (equal
+ (buffer-substring (point-min)
+ (save-excursion
+ (forward-line 5)
+ (point)))
+ (concat
+ "Selector: (member <passing-test> <failing-test>)\n"
+ "Passed: 1 (0 unexpected)\n"
+ "Failed: 1 (1 unexpected)\n"
+ "Error: 0 (0 unexpected)\n"
+ "Total: 2/2\n")))))
+ (when (get-buffer buffer-name)
+ (kill-buffer buffer-name))))))))
+
+(ert-deftest ert-test-special-operator-p ()
+ (ert-should (ert-special-operator-p 'if))
+ (ert-should-not (ert-special-operator-p 'car))
+ (ert-should-not (ert-special-operator-p 'ert-special-operator-p))
+ (let ((b (gensym)))
+ (ert-should-not (ert-special-operator-p b))
+ (fset b 'if)
+ (ert-should (ert-special-operator-p b))))
+
+;; This test attempts to demonstrate that there is no way to force
+;; immediate truncation of the *Messages* buffer from Lisp (and hence
+;; justifies the existence of
+;; `ert-force-message-log-buffer-truncation'): The only way that came
+;; to my mind was (message ""), which doesn't have the desired effect.
+(ert-deftest ert-test-builtin-message-log-flushing ()
+ (ert-call-with-temporary-messages-buffer
+ (lambda ()
+ (with-current-buffer "*Messages*"
+ (let ((message-log-max 2))
+ (let ((message-log-max t))
+ (loop for i below 4 do
+ (message "%s" i))
+ (ert-should (eql (count-lines (point-min) (point-max)) 4)))
+ (ert-should (eql (count-lines (point-min) (point-max)) 4))
+ (message "")
+ (ert-should (eql (count-lines (point-min) (point-max)) 4))
+ (message "Test message")
+ (ert-should (eql (count-lines (point-min) (point-max)) 2)))))))
+
+(ert-deftest ert-test-force-message-log-buffer-truncation ()
+ (labels ((body ()
+ (loop for i below 5 do
+ (message "%s" i)))
+ (c (x)
+ (ert-call-with-temporary-messages-buffer
+ (lambda ()
+ (let ((message-log-max x))
+ (body))
+ (with-current-buffer "*Messages*"
+ (buffer-string)))))
+ (lisp (x)
+ (ert-call-with-temporary-messages-buffer
+ (lambda ()
+ (let ((message-log-max t))
+ (body))
+ (let ((message-log-max x))
+ (ert-force-message-log-buffer-truncation))
+ (with-current-buffer "*Messages*"
+ (buffer-string))))))
+ (loop for x in '(0 1 2 3 4 5 6 t) do
+ (ert-should (equal (c x) (lisp x))))))
+
+(defun ert-run-self-tests ()
+ ;; Run tests and make sure they actually ran.
+ (let ((window-configuration (current-window-configuration)))
+ (let ((ert-test-body-was-run nil))
+ ;; The buffer name chosen here should not compete with the default
+ ;; results buffer name for completion in `switch-to-buffer'.
+ (let ((stats (ert-run-tests-interactively "^ert-" " *ert self-tests*")))
+ (assert ert-test-body-was-run)
+ (when (zerop (+ (ert-stats-passed-unexpected stats)
+ (ert-stats-failed-unexpected stats)
+ (ert-stats-error-unexpected stats)))
+ ;; Hide results window only when everything went well.
+ (set-window-configuration window-configuration))))))
+
+(provide 'ert)
+
+;;; ert.el ends here
diff --git a/emacs.d/nxhtml/tests/ert2.el b/emacs.d/nxhtml/tests/ert2.el
new file mode 100644
index 0000000..1fe971c
--- /dev/null
+++ b/emacs.d/nxhtml/tests/ert2.el
@@ -0,0 +1,268 @@
+;;; ert2.el --- Additions to ert.el
+;;
+;; Author: Lennart Borgman (lennart O borgman A gmail O com)
+;; Created: 2008-09-02T11:46:03+0200 Tue
+;; Version:
+;; Last-Updated: 2009-01-06 Tue
+;; URL:
+;; Keywords:
+;; Compatibility:
+;;
+;; Features that might be required by this library:
+;;
+;; Cannot open load file: ert2.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Change log:
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; 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:
+
+(eval-when-compile (require 'cl))
+(eval-when-compile
+ (let* ((this-file (or load-file-name
+ (when (boundp 'bytecomp-filename) bytecomp-filename)
+ buffer-file-name))
+ (this-dir (file-name-directory this-file))
+ (load-path (cons this-dir load-path)))
+ (require 'ert)))
+
+(let* ((this-dir
+ (file-name-directory (if load-file-name load-file-name buffer-file-name)))
+ ;;(load-path (copy-list load-path)))
+ (load-path (copy-sequence load-path)))
+ (add-to-list 'load-path this-dir)
+ (require 'ert))
+
+
+(defvar ert-temp-test-buffer-test nil)
+(make-variable-buffer-local 'ert-temp-test-buffer-test)
+(put 'ert-temp-test-buffer-test 'permanent-local t)
+
+(defvar ert-temp-test-buffer-file nil)
+(make-variable-buffer-local 'ert-temp-test-buffer-file)
+(put 'ert-temp-test-buffer-file 'permanent-local t)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Test buffers
+
+(defvar ert-failed-tests-temp-buffers nil)
+
+(defvar ert-list-failed-buffers-name "*Ert Failed Test Buffers*")
+
+(defun ert-kill-temp-test-buffers ()
+ "Delete test buffers from unsuccessful tests."
+ (interactive)
+ (let ((failed (get-buffer ert-list-failed-buffers-name)))
+ (when failed (kill-buffer failed)))
+ (dolist (buf ert-failed-tests-temp-buffers)
+ (when (buffer-live-p buf)
+ (kill-buffer buf)))
+ (setq ert-failed-tests-temp-buffers nil))
+
+(defun ert-list-temp-test-buffers ()
+ "List test buffers from unsuccessful tests."
+ (interactive)
+ (setq ert-failed-tests-temp-buffers
+ (delq nil
+ (mapcar (lambda (buf)
+ (when (buffer-live-p buf)
+ buf))
+ ert-failed-tests-temp-buffers)))
+ (let ((ert-buffer (get-buffer "*ert*"))
+ (buffers ert-failed-tests-temp-buffers))
+ (when ert-buffer (setq buffers (cons ert-buffer buffers)))
+ (switch-to-buffer
+ (let ((Buffer-menu-buffer+size-width 40))
+ (list-buffers-noselect nil buffers)))
+ (rename-buffer ert-list-failed-buffers-name t))
+ (unless ert-failed-tests-temp-buffers
+ (message "No test buffers from unsuccessful tests")))
+
+(defvar ert-temp-test-buffer-minor-mode-map
+ (let ((map (make-sparse-keymap)))
+ ;; Add menu bar entries for test buffer and test function
+ (define-key map [(control ?c) ?? ?t] 'ert-temp-test-buffer-go-test)
+ (define-key map [(control ?c) ?? ?f] 'ert-temp-test-buffer-go-file)
+ map))
+(defun ert-temp-test-buffer-go-test ()
+ (interactive)
+ (ert-find-test-other-window ert-temp-test-buffer-test))
+(defun ert-temp-test-buffer-go-file ()
+ (interactive)
+ (find-file-other-window ert-temp-test-buffer-file))
+
+(define-minor-mode ert-temp-test-buffer-minor-mode
+ "Helpers for those buffers ..."
+ )
+(put 'ert-temp-test-buffer-minor-mode 'permanent-local t)
+
+;; Fix-me: doc
+(defvar ert-test-files-root nil)
+(defun ert-get-test-file-name (file-name)
+ (unless ert-test-files-root
+ (error "Please set ert-test-files-root for your tests"))
+ (unless (file-directory-p ert-test-files-root)
+ (error "Can't find directory %s" ert-test-files-root))
+ (expand-file-name file-name ert-test-files-root))
+
+(defmacro* ert-with-temp-buffer-include-file (file-name-form &body body)
+ "Insert FILE-NAME-FORM in a temporary buffer and eval BODY.
+If success then delete the temporary buffer, otherwise keep it.
+
+To access these temporary test buffers use
+- `ert-list-temp-test-buffers': list them
+- `ert-kill-temp-test-buffers': delete them"
+ (declare (indent 1) (debug t))
+ (let ((file-name (make-symbol "file-name-")))
+ `(let* ((,file-name (ert-get-test-file-name ,file-name-form))
+ (mode-line-buffer-identification (list (propertize "%b" 'face 'highlight)))
+ ;; Give the buffer a name that allows us to switch to it
+ ;; quickly when debugging a failure.
+ (temp-buf
+ (generate-new-buffer
+ (format "%s" (ert-this-test)))))
+ (unless (file-readable-p ,file-name)
+ (if (file-exists-p ,file-name)
+ (error "Can't read %s" ,file-name)
+ (error "Can't find %s" ,file-name)))
+ (message "Testing with file %s" ,file-name)
+ (setq ert-failed-tests-temp-buffers (cons temp-buf ert-failed-tests-temp-buffers))
+ (with-current-buffer temp-buf
+ (ert-temp-test-buffer-minor-mode 1)
+ (setq ert-temp-test-buffer-file ,file-name)
+ (setq ert-temp-test-buffer-test (ert-this-test))
+ ;; Avoid global font lock
+ (let ((font-lock-global-modes nil))
+ ;; Turn off font lock in buffer
+ (font-lock-mode -1)
+ (when (> emacs-major-version 22)
+ (assert (not font-lock-mode) t "%s %s" "in ert-with-temp-buffer-include-file"))
+ (insert-file-contents ,file-name)
+ (save-window-excursion
+ ;; Switch to buffer so it will show immediately when
+ ;; debugging a failure.
+ (switch-to-buffer-other-window (current-buffer))
+ ,@body)
+ ;; Fix-me: move to success list?
+ (kill-buffer temp-buf))))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Simulate commands
+
+(defvar ert-simulate-command-delay nil)
+
+(defvar ert-simulate-command-post-hook nil
+ "Normal hook to be run at end of `ert-simulate-command'.")
+
+;; Fix-me: use this in all tests where applicable.
+(defun ert-simulate-command (command run-idle-timers)
+ ;; Fix-me: run-idle-timers - use seconds
+ ;; Fix-me: add unread-events
+ "Simulate calling command COMMAND as in Emacs command loop.
+If RUN-IDLE-TIMERS is non-nil then run the idle timers after
+calling everything involved with the command.
+
+COMMAND should be a list where the car is the command symbol and
+the rest are arguments to the command.
+
+NOTE: Since the command is not called by `call-interactively'
+test for `called-interactively' in the command will fail.
+
+Return the value of calling the command, ie
+
+ (apply (car COMMAND) (cdr COMMAND)).
+
+Run the hook `ert-simulate-command-post-hook' at the very end."
+
+ (message "command=%s" command)
+ (ert-should (listp command))
+ (ert-should (commandp (car command)))
+ (ert-should (not unread-command-events))
+ (let (return-value
+ (font-lock-mode t))
+ ;; For the order of things here see command_loop_1 in keyboard.c
+ ;;
+ ;; The command loop will reset the command related variables so
+ ;; there is no reason to let bind them. They are set here however
+ ;; to be able to test several commands in a row and how they
+ ;; affect each other.
+ (setq deactivate-mark nil)
+ (setq this-original-command (car command))
+ ;; remap through active keymaps
+ (setq this-command (or (command-remapping this-original-command)
+ this-original-command))
+ (run-hooks 'pre-command-hook)
+ (setq return-value (apply (car command) (cdr command))) ;; <-----
+ (message "post-command-hook=%s" post-command-hook)
+ (run-hooks 'post-command-hook)
+ (when deferred-action-list
+ (run-hooks 'deferred_action_function))
+ (setq real-last-command (car command))
+ (setq last-repeatable-command real-last-command)
+ (setq last-command this-command)
+ (when (and deactivate-mark transient-mark-mode) (deactivate-mark))
+ ;;(message "ert-simulate-command.before idle-timers, point=%s" (point))
+ (when run-idle-timers
+ ;;(dolist (timer (copy-list timer-idle-list))
+ (dolist (timer (copy-sequence timer-idle-list))
+ (timer-event-handler timer)
+ ;;(message " after timer=%s, point=%s" timer (point))
+ )
+ (redisplay t))
+ ;;(message "ert-simulate-command.after idle-timers, point=%s" (point))
+ (when ert-simulate-command-delay
+ ;; Show user
+ ;;(message "After M-x %s" command)
+ (let ((old-buffer-name (buffer-name)))
+ (rename-buffer (propertize (format "After M-x %s" (car command))
+ 'face 'highlight)
+ t)
+ (sit-for ert-simulate-command-delay)
+ (rename-buffer old-buffer-name)))
+ (ert-should (not unread-command-events))
+ (run-hooks 'ert-simulate-command-post-hook)
+ return-value))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Misc
+
+(defun ert-this-test ()
+ "Return current `ert-deftest' function."
+ (elt test 1))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Self tests
+
+(provide 'ert2)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; ert2.el ends here
diff --git a/emacs.d/nxhtml/tests/hfy-test.el b/emacs.d/nxhtml/tests/hfy-test.el
new file mode 100644
index 0000000..4592d7b
--- /dev/null
+++ b/emacs.d/nxhtml/tests/hfy-test.el
@@ -0,0 +1,102 @@
+;;; hfy-test.el --- Test for htmlfontify + hfyview
+;;
+;; Author: Lennart Borgman (lennart O borgman A gmail O com)
+;; Created: 2008-10-17 Fri
+;; Version:
+;; Last-Updated:
+;; URL:
+;; Keywords:
+;; Compatibility:
+;;
+;; Features that might be required by this library:
+;;
+;; None
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Change log:
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; 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:
+(require 'winsav)
+(require 'emacsw32 nil t)
+(require 'grep)
+
+(defun hfy-test-setup-frame ()
+ (find-library "htmlfontify")
+ (occur "hfy-tmpfont-stack")
+ (unless grep-template (grep-compute-defaults))
+ (lgrep "hfy-tmpfont-stack" "*.el" ".")
+ (list-faces-display)
+ (list-colors-display)
+ (describe-function 'describe-function)
+ (delete-other-windows)
+
+ (split-window-vertically)
+ (split-window-vertically)
+ (balance-windows)
+ (split-window-vertically)
+ (balance-windows)
+ (split-window-vertically)
+ (balance-windows)
+
+ ;;(winsav-upper-left-window)
+ (frame-first-window)
+ (split-window-horizontally)
+ ;;(winsav-upper-left-window)
+ (frame-first-window)
+ (switch-to-buffer "*scratch*")
+
+ (select-window (next-window))
+ (switch-to-buffer "*Help*")
+
+ (select-window (next-window))
+ (switch-to-buffer "*Faces*")
+ (split-window-horizontally)
+
+ (select-window (next-window))
+ (switch-to-buffer "*Colors*")
+
+ (select-window (next-window))
+ (when (fboundp 'emacsw32-show-custstart)
+ (emacsw32-show-custstart))
+
+ (select-window (next-window))
+ (info)
+
+ (select-window (next-window))
+ (split-window-horizontally)
+ (switch-to-buffer "*grep*")
+
+ (select-window (next-window))
+ (switch-to-buffer "*Occur*")
+ )
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; hfy-test.el ends here
diff --git a/emacs.d/nxhtml/tests/in/3-heights.html b/emacs.d/nxhtml/tests/in/3-heights.html
new file mode 100644
index 0000000..339b5c2
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/3-heights.html
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>patika</title>
+<meta name="generator" content="emacs 23.0.60.1; htmlfontify 0.20" />
+<style type="text/css"><!--
+body { font-family: Courier New; font-stretch: normal; font-weight: 500; font-style: normal; color: #f5deb3; background: #2f4f4f; font-size: 10pt; text-decoration: none; }
+span.default { font-family: Courier New; font-stretch: normal; font-weight: 500; font-style: normal; color: #f5deb3; background: #2f4f4f; font-size: 10pt; text-decoration: none; }
+span.default a { font-family: Courier New; font-stretch: normal; font-weight: 500; font-style: normal; color: #f5deb3; background: #2f4f4f; font-size: 10pt; text-decoration: underline; }
+span.default-0004 { text-decoration: none; }
+span.default-0004 a { text-decoration: underline; }
+span.default-0002 { text-decoration: none; }
+span.default-0002 a { text-decoration: underline; }
+ --></style>
+
+ </head>
+ <body>
+
+ <script type="text/javascript">
+ // <![CDATA[
+
+function getObj(name) {
+ if (document.getElementById) {
+ this.obj = document.getElementById(name);
+ this.style = document.getElementById(name).style;
+ }
+}
+function hfy_toggle_display(name) {
+ var x = new getObj("hfy_invis_" + name);
+ var flag = x.style.display == 'inline';
+ x.style.display = (flag) ? 'none' : 'inline'
+}
+
+ // ]]>
+ </script>
+
+<pre>ajsha a<span class="default-0002">hsahs</span>jha<span class="default-0004">j sah</span>sja </pre>
+
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/400415-index.phtml b/emacs.d/nxhtml/tests/in/400415-index.phtml
new file mode 100644
index 0000000..de950e7
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/400415-index.phtml
@@ -0,0 +1,43 @@
+<h2>CLEO Memorandum Assignment #1. What&apos;s Next?</h2>
+<table cellpadding="0" cellspacing="0">
+ <thead>
+ <tr>
+ <th class="first author">Activity</th>
+<!-- <th class="time">Progress</th> -->
+ </tr>
+ </thead>
+
+ <tbody>
+ <?php
+ $AM = $this->activity_model;
+ foreach ($this->focus_transitions as $tran => $satisfied) {
+ $props = $AM->getTransitionProps($tran);
+ $url_params = $props['url_params'];
+ $link_text = $props['link_text'];
+ if (null !== $url_params and null !== $link_text) {
+ // TODO Add $sat class to <td>, style accordingly.
+ ?>
+ <tr>
+ <td class="first author"><a href="<?=
+ $this->url($url_params) ?>"><?= $link_text ?></a></td>
+<!-- <td><?=
+ // TODO $props['allotted']
+ $satisfied ? '&#x2714;' : '&nbsp;'
+ ?></td> -->
+ </tr>
+ <?php }} ?>
+ </tbody>
+</table>
+<!--
+<?php
+print_r($this->acts);
+print_r($this->states);
+print_r($this->payload);
+print_r($this->activity_model);
+?>
+-->
+<?php
+$foo = <<<MY_FOO
+I am a heredoc
+MY_FOO;
+?>
diff --git a/emacs.d/nxhtml/tests/in/asp.asp b/emacs.d/nxhtml/tests/in/asp.asp
new file mode 100644
index 0000000..a557cb6
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/asp.asp
@@ -0,0 +1,40 @@
+
+<%@LANGUAGE="VBScript"%>
+
+<SCRIPT LANGUAGE="JavaScript" RUNAT="Server">
+function JSGreeting()
+ {
+ return "Greetings from a JavaScript Function";
+ }
+</SCRIPT>
+
+<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
+Function VBGreeting()
+ VBGreeting="Greetings from a VBScript Function"
+End Function
+
+Function toDollars(x)
+ toDollars=FormatCurrency(x)
+End Function
+</SCRIPT>
+
+<%
+var a = 2;
+var b = 2;
+var c = add(a,b)
+c += " (Two numbers are added by JavaScript, "
+c += "and then formatted into currency by VBScript.)"
+
+function add(x,y)
+ {
+ result = x + y;
+ result = toDollars(result);
+ return result;
+ }
+
+Response.Write("<HTML>\r")
+Response.Write(JSGreeting() + "<BR>\r")
+Response.Write(VBGreeting() + "<BR>\r")
+Response.Write(c + " <BR>\r")
+Response.Write("</HTML>\r")
+%>
diff --git a/emacs.d/nxhtml/tests/in/bastien-test.mm b/emacs.d/nxhtml/tests/in/bastien-test.mm
new file mode 100644
index 0000000..1494a62
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bastien-test.mm
@@ -0,0 +1,38 @@
+<map version="0.9.0">
+<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
+<node BACKGROUND_COLOR="#00bfff" CREATED="1248161883687" ID="ID_4621171" MODIFIED="1248162997000" TEXT="test.org">
+<richcontent TYPE="NOTE"><html>
+ <head>
+
+ </head>
+ <body>
+ <p>
+ --org-mode: WHOLE FILE
+ </p>
+ </body>
+</html>
+</richcontent>
+<node CREATED="1248161883687" MODIFIED="1248161883687" POSITION="left" TEXT="Bonjour">
+<node CREATED="1248161883687" MODIFIED="1248161883687" TEXT="Ceci est un test">
+<node BACKGROUND_COLOR="#eeee00" CREATED="1248161883687" MODIFIED="1248161883687" STYLE="bubble">
+<richcontent TYPE="NODE"><html>
+<head>
+<style type="text/css">
+<!--
+p { margin-top: 0 }
+-->
+</style>
+</head>
+<body>
+<p><br/> lkxjdflkdsz _lskfdsdf_ alskdjf<br/></p>
+</body>
+</html></richcontent>
+<richcontent TYPE="NOTE"><html><head/><body><p>-- This is more about "Ceci est un test" --</p></body></html></richcontent>
+</node>
+</node>
+</node>
+<node CREATED="1248161883687" HGAP="-88" ID="ID_901848166" MODIFIED="1248162974171" POSITION="right" TEXT="Rebonjour" VSHIFT="76">
+<node CREATED="1248161883687" HGAP="85" ID="ID_1570634894" MODIFIED="1248162978203" TEXT="Ceci est un autre test" VSHIFT="-109"/>
+</node>
+</node>
+</map>
diff --git a/emacs.d/nxhtml/tests/in/bigfile-stringerr-64000.html b/emacs.d/nxhtml/tests/in/bigfile-stringerr-64000.html
new file mode 100644
index 0000000..e42ab6e
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bigfile-stringerr-64000.html
@@ -0,0 +1,1850 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>News and Notes about nXhtml</title>
+ <link href="wd/grapes/nxhtml-grapes.css" rel="StyleSheet" type="text/css" />
+<style type="text/css">
+#nxhtml-home a {
+ /* Image */
+ display: block;
+ background: transparent url("img/getitbuttons.png") 0 0 no-repeat;
+ overflow: hidden;
+ width: 200px;
+ xheight: 35px;
+ /* Text placement and size, etc */
+ text-align: center;
+ padding-top: 11px;
+ font-size: 12px;
+ padding-bottom: 9px;
+ text-decoration: none;
+ white-space: nowrap;
+ margin: 0;
+ border: none;
+}
+#nxhtml-home a:hover {
+ background-position: 0 -35px;
+ color: yellow;
+}
+
+</style>
+ </head>
+ <body>
+ <div id="container">
+
+ <div id="rgtcol">
+ <p id="nxhtml-home"><a href="nxhtml.html">To nXhtml main page</a></p>
+
+ <h1>News and Notes about nXhtml</h1>
+
+ <dl>
+
+ <dt id="hadron-bugs" style="margin-top:1em;">Thanks for testing!</dt>
+ <dd>
+ <p>
+ I want to thanks the testers (who have been many now),
+ especially to my first testers Hadron Quark and Eric
+ Lilja, for helping me by testing and pointing out bugs
+ and weaknesses, most of them related to editing of PHP.
+ </p>
+ <p>
+ Without testers all kind of problems I just can't
+ imagine myself would still be there in nXhtml. For
+ example Hadron told me once that he got the error
+ <i>(wrong-type-argument stringp nil)</i>. Eh, I replied, are
+ you sure. Yes he was. I tried the same file as him. No
+ error.
+ </p>
+ <p>
+ The error happened during fontification so the error
+ message above was all we had. A real black box for
+ me. Or perhaps black magic? After much confusion and
+ some hard work we finally found out what it was and I
+ implemented a better way to catch such errors. If Hadron
+ would have given up the problem would still have been
+ there. Some problems are just impossible to solve
+ without good cooperation. So, again, thanks Hadron.
+ </p>
+ <p>
+ BTW, I will perhaps add some even better way to Emacs to
+ catch these errors so other can benefit from our
+ insights too, but that requires some time and effort
+ which I can't afford right now.
+ </p>
+ </dd>
+
+ <dt id="state-of-the-art" style="margin-top:1em;
+ background-color: #66cd5c;
+ background-color: #96cd5c;
+ padding: 0.5em;
+ ">The State of the Art</dt>
+ <dd style="background-color: #f9e529; padding: 0.5em">
+ <p>
+ I wrote earlier that I thought that there were two parts
+ in nXhtml, nxhtml-mode and mumamo with a bit different
+ degree of maturity. I believe that is not that valid
+ any more. To my delight the second part, mumamo is now
+ also quite stable (from version 1.27).
+ </p>
+ </dd>
+
+ <dt id="magic-problems" style="margin-top:1em;">Magic major mode selection</dt>
+ <dd>
+ <p>
+ Sometimes the major mode that Emacs opens a file in is
+ not what you expect. This can happen with files like PHP
+ files. The reason might be that magic-mode-alist have
+ choosen a mode based on the content of the file. The way
+ this is done does not take files with mixes a mix of for
+ example XHTML and PHP into account.
+ </p>
+ <p>
+ You may try setting magic-mode-alist to nil if this is a
+ problem for you.
+ </p>
+ <p>
+ <em>
+ This is now no longer necessary since the introduction
+ of magic-fallback-mode-alist in CVS Emacs on 2007-05-16.
+ (If you have an Emacs newer than that, of course.)
+ </em>
+ </p>
+ </dd>
+
+ <dt id="underline-bug" style="margin-top:1em;">Long Red Underlines</dt>
+ <dd>
+ <p>
+ Because of a bug in Emacs 22.1 you can sometimes (at the
+ end of a line) get long red lines instead of just a
+ single underlined character. Many users (me included)
+ find this quite a bit disturbing. I have therefore added
+ a command to quickly hide/show the underlines. This is
+ on <em>C-c C-w</em>.
+ </p>
+ <p>
+ This is particular useful for example in the case where
+ you edit a PHP file and are bound to get a lot of XHTML
+ validation errors.
+ </p>
+ </dd>
+
+ <dt id="php-attribute-values" style="margin-top:1em;">Attribute values computed by PHP</dt>
+ <dd>
+ <p>
+ If you want to have attribute values computed by PHP
+ here is a way how to structure that to avoid breaking
+ completion and validation in the XHTML part unnessecary:
+ </p>
+ <p style="margin-left:2em">
+ &lt;img src=&quot;images/linux.png&quot; title=&quot;&lt;?php foo(&quot;bar&quot;);?&gt;&quot;/&gt;
+ </p>
+ <p>
+ Unfortunately that still breaks XHTML validation since
+ &lt; is not allowed in strings. In the long run I
+ believe the XML validator has to be broken up so that it
+ avoids parsing the string here (in PHP files).
+ </p>
+ <p>
+ For now I have implemented a workaround.
+ If you are using constructs like those above then turn on <em>nxhtml-strval-mode</em>.
+ This will temporarily replace the above with
+ </p>
+ <p style="margin-left:2em">
+ &lt;img src=&quot;images/linux.png&quot; title=&quot;&#171;?php foo(&quot;bar&quot;);?&#187;&quot;/&gt;
+ </p>
+ <p>
+ However on the screen you will still see the original
+ string and when writing to file the correct characters
+ will be used.
+ </p>
+ </dd>
+
+ <dt id="pi-note" style="margin-top:1em;">A note for PHP and its cousins</dt>
+ <dd>
+ <p>
+ The rules for a process instruction in XML, like &lt;?php
+ ... ?&gt; says that the text can contain any text except
+ <em>?&gt;</em>. So if you want to output that string
+ from PHP then break it up so it does not look as ?&gt; in
+ the source file.
+ </p>
+ <p>
+ It might be good to break up the beginning part of the
+ process instructions too. And please note that to use
+ XHTML validation or completion you should avoid using
+ &lt; in strings, since it is not allowed there.
+ </p>
+ </dd>
+
+<!-- <dt id="pi-note" style="margin-top:1em;">Perl Mode slow with Mumamo Mode</dt> -->
+<!-- <dd> -->
+<!-- <p> -->
+<!-- Perl mode used with MuMaMo mode sometimes makes the -->
+<!-- fontification slow for big files. I do not know the -->
+<!-- reason, but I am trying to find a solution for this. If -->
+<!-- you encounter this problem, just turn off mumamo-mode in -->
+<!-- that buffer. -->
+<!-- </p> -->
+<!-- </dd> -->
+
+ <dt id="tab-width-problems" style="margin-top:1em;">Tab width</dt>
+ <dd>
+ <p>
+ Do you have <em>tab-width</em> to something different than 8
+ (the default)? Then please change this to 8. I have got
+ reports of problem with indentation when it is not 8.
+ </p>
+ </dd>
+
+ <dt id="mmm-compat" style="margin-top:1em;">Why the chunks are not compatible with mmm</dt>
+ <dd>
+ <p>
+ Some people have asked why the way to specify chunks in
+ mumamo-mode is not compatible with the old mmm-mode. The
+ answer is that I was not sure that the way used in
+ mmm-mode for specifying the chunks was flexible enough.
+ </p>
+ <p>
+ And I am sure that even the way used in mumamo-mode is
+ not good enough for all cases, but I let it be the way
+ it is until I have a better understanding of the
+ problem. Suggestions and comments are welcome!
+ </p>
+ </dd>
+
+ </dl>
+
+ <h1 id="change-history">nXhtml Changes</h1>
+
+ <div>
+ <a href="#v0.89">v0.89</a>
+ <a href="#v0.90">v0.90</a>
+ <a href="#v0.91">v0.91</a>
+ <a href="#v0.92">v0.92</a>
+ <a href="#v0.93">v0.93</a>
+ <a href="#v0.94">v0.94</a>
+ <a href="#v0.95">v0.95</a>
+ <a href="#v0.96">v0.96</a>
+ <a href="#v0.97">v0.97</a>
+ <a href="#v0.98">v0.98</a>
+ <a href="#v0.99">v0.99</a>
+ <a href="#v1.00">v1.00</a>
+ <a href="#v1.01">v1.01</a>
+ <a href="#v1.02">v1.02</a>
+ <a href="#v1.03">v1.03</a>
+ <a href="#v1.04">v1.04</a>
+ <a href="#v1.10">v1.10</a>
+ <a href="#v1.11">v1.11</a>
+ <a href="#v1.12">v1.12</a>
+ <a href="#v1.13">v1.13</a>
+ <a href="#v1.14">v1.14</a>
+ <a href="#v1.15">v1.15</a>
+ <a href="#v1.16">v1.16</a>
+ <a href="#v1.17">v1.17</a>
+ <a href="#v1.18">v1.18</a>
+ <a href="#v1.19">v1.19</a>
+ <a href="#v1.20">v1.20</a>
+ <a href="#v1.21">v1.21</a>
+ <a href="#v1.22">v1.22</a>
+ <a href="#v1.23">v1.23</a>
+ <a href="#v1.24">v1.24</a>
+ <a href="#v1.25">v1.25</a>
+ <a href="#v1.26">v1.26</a>
+ <a href="#v1.27">v1.27</a>
+ <a href="#v1.28">v1.28</a>
+ <a href="#v1.29">v1.29</a>
+ <a href="#v1.30">v1.30</a>
+ <a href="#v1.31">v1.31</a>
+ <a href="#v1.32">v1.32</a>
+ <a href="#v1.33">v1.33</a>
+ <a href="#v1.34">v1.34</a>
+ <a href="#v1.35">v1.35</a>
+ <a href="#v1.36">v1.36</a>
+ <a href="#v1.37">v1.37</a>
+ <a href="#v1.38">v1.38</a>
+ <a href="#v1.39">v1.39</a>
+ </div>
+
+ <dl>
+ <dt id="v0.89">0.89</dt>
+ <dd>
+ <ul>
+ <li>
+ Corrected autostart for nXhtml when not used together with EmacsW32.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.90">0.90</dt>
+ <dd>
+ <ul>
+ <li>
+ Improved display of XML path.
+ </li>
+ <li>
+ Discontinued xmple-mode.
+ </li>
+ <li>
+ New major modes nxhtml-part-mode/nxml-part-mode replaces
+ minor mode xmlpe-mode. (While moving the code to
+ nxhtml-part.el I also fixed a bug in Xmple minor mode that
+ made Emacs take 99% of the CPU.)
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.91">0.91</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixed some calls to perl which prevented uploading of
+ a site of you did not have perl in the same location
+ as me.
+ </li>
+ <li>
+ Glued together things so that editing PHP files works
+ as I intended. (This means that Emacs switches between
+ php-mode and nxhtml-part-mode automatically when
+ moving point. And that you can use completion.)
+ </li>
+ <li>
+ Starting working on the documentation for nXhtml.
+ New layout to the documentation files.
+ Examples with images.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.92">0.92</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixes to make the switching between php and xhtml
+ style editing work better.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.93">0.93</dt>
+ <dd>
+ <ul>
+ <li>
+ Better error handling when switching to editing
+ embedded JavaScript and CSS.
+ </li>
+ <li>
+ Removed PHP spec from embedded switching since they
+ interfered with the automatic switching between php
+ and xhtml.
+ </li>
+ <li>
+ Gives an error message if web host is not defined in
+ site when trying to use View Uploaded File and
+ cousins.
+ </li>
+ <li>
+ Gives a ready message when finished uploading a single
+ file.
+ </li>
+ <li>
+ When using Mode Switching at &lt;? ... ?&gt; mode
+ switching could occur in wrong buffer. Fixed together
+ with some other buffer problems.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.94">0.94</dt>
+ <dd>
+ <ul>
+ <li>
+ Add http://www.w3.org/ to the help sites for CSS.
+ </li>
+ <li>
+ Included a CSS mode.
+ </li>
+ <li>
+ Added a menu entry for bug reporting.
+ </li>
+ <li>
+ Renamed menu bar entry from XHTML to nXhtml for clarity.
+ (But nXml menu bar entry is still called XML.)
+ </li>
+ <li>
+ Added work around for globalized minor modes in the
+ cases of MLinks, XML Path and mode switching at &lt;? ... ?&gt;.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.95">0.95</dt>
+ <dd>
+ <ul>
+ <li>
+ Added workaround for the problem with the first
+ keyboard key after automatically switching of mode at
+ &lt;? ... ?&gt;.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.96">0.96</dt>
+ <dd>
+ <ul>
+ <li>
+ Added support for multiple major modes with mumamo.el.
+ </li>
+ <li>
+ More conventient handling of links. They can now be
+ opened in the same window, 'other window' or in a new
+ frame.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.97">0.97</dt>
+ <dd>
+ <ul>
+ <li>
+ Schema was not setup after starting new page so
+ completion did not work. Fixed.
+ </li>
+ <li>
+ Added http://xhtml.com/ to help sites for XHTML.
+ </li>
+ <li>
+ Added the concept of <em>fictive XML validation
+ headers</em>. These are just text parsed by the nXml
+ validation parser to get a start state before starting
+ parsing a buffer. This allows the use of the nXml
+ completion in buffers where there are no XML header.
+ Such a header is often lacking for example in PHP code
+ since the XHTML header is often generated dynamically.
+ </li>
+ <li>
+ Because of the change above <em>nxhtml-part-mode</em>
+ is no longer needed and is therefore declared
+ obsolete.
+ </li>
+ <li>
+ Corrected a bug in mlinks.el that prevented opening an
+ HTML link in a other window or a new frame.
+ </li>
+ <li>
+ Added support for JSP, eRuby and some support for perl
+ in mumamo.el.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.98">0.98</dt>
+ <dd>
+ <ul>
+ <li>
+ Mumamo was not found when nXhtml was installed with
+ just the zip file. Corrected. (nXhtml is also
+ installed when you install EmacsW32.)
+ </li>
+ <li>
+ Enhancement to mumamo error handling when a bad mode
+ specifier for an embedded mode is found.
+ </li>
+ <li>
+ Introduced a bug for empty XHTML documents in
+ 0.97. Corrected.
+ </li>
+ <li>
+ Corrected a bug for chunks 1 character long.
+ </li>
+ <li>
+ There is what I consider is a bug in Emacs 22.1 in the
+ handling of global minor mode that are not distributed
+ with Emacs. If they are turned on by customization,
+ but loaded after Emacs have loaded the customizations
+ (usually in .emacs) then they are not turned on
+ correctly. Added work-around for this.
+ </li>
+ <li>
+ <em>Fictive XHTML Validation Header</em>:
+ <ul>
+ <li>
+ <em>Fictive XHTML Validation Header</em> state was not saved when moving between chunks. Fixed.
+ </li>
+ <li>
+ Tried to make the concept of <em>Fictive XHTML Validation Header</em>
+ more clear. Added this visually to the buffer.
+ </li>
+ <li>
+ <em>Fictive XHTML Validation Headers</em> can now be turned on
+ automatically based on file name.
+ </li>
+ </ul>
+ </li>
+ <li>
+ <em>nXhtml menu:</em>
+ <ul>
+ <li>
+ Reorganized the nXhtml menu.
+ </li>
+ <li>
+ Added <em>customization</em> groups for help libraries to nXhtml.
+ </li>
+ <li>
+ Added an entry for customization of nXhtml to the menus.
+ </li>
+ <li>
+ Added <em>Tidy</em> to the menus again.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Corrected bug in <em>XML Path</em> (nxml-where) for single tags.
+ Other small fixes to nxhtml-where.
+ </li>
+ <li>
+ Documentation enhancements.
+ Added <em>The Quick Guide</em>.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.99">0.99</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixed a serious bug in the cooperation between nxhtml-mode and mumamo-mode.
+ </li>
+ <li>
+ Turn on mumamo-mode by file name (mumamo-global-mode).
+ </li>
+ <li>
+ Fictive XHTML Validation Header:
+ <ul>
+ <li>
+ The Fictive XHTML Validation Header state were not saved when changing major mode in MuMaMo. Corrected.
+ </li>
+ <li>
+ Added more alternatives to the Fictive XHTML Validation Header list.
+ This should make it easier to use completion with for example PHP.
+ </li>
+ <li>
+ Added default value for the Fictive XHTML Validation Header.
+ </li>
+ <li>
+ Tried to make the use of Fictive XHTML Validation Header more automatic and therefore useful.
+ Also tried to make it play better with setting schema file.
+ (There is no need normally to set schema file by hand.)
+ </li>
+ <li>
+ To turn this on by default customize nxhtml-global-validation-header-mode.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Possible to hide validation warnings without turning
+ on validation (which would make completion in the
+ XHTML part impossible).
+ </li>
+ <li>
+ Some fixes to php-mode:
+ <ul>
+ <li>Using the character # for comments now works for most cases.</li>
+ <li>Now uses the fontification faces in a more standard way which calms down the look.</li>
+ <li>Initialization bug fixes.</li>
+ <li>Renamed php-mode-user-hook to php-mode-hook to follow standard.</li>
+ </ul>
+ </li>
+ <li>
+ Indentation fixes:
+ <ul>
+ <li>
+ Various corrections to indentation in mumamo.
+ </li>
+ <li>
+ Added the possibility to use TAB to indent regions
+ (indent-region-mode).
+ </li>
+ <li>
+ Warn about bad indentation in mixed PHP/HTML code
+ when using php-mode only.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Fontification now fontifies all text first in main
+ major mode and thereafter applies submodes. (This
+ avoids some problems with around a submode chunk.)
+ </li>
+ <li>
+ Reorganized the nXhtml menu:
+ <ul>
+ <li>
+ There is now a minor mode for the nXhtml
+ menu. This makes it possible to easier use common
+ features when in buffers not in nxhtml-mode.
+ </li>
+ <li>
+ The nXhtml menu does not disappear when moving
+ into a chunk where the major mode is not
+ nxhtml-mode. The changes also makes it easy to
+ access uploading functions functions etc from
+ other modes than nxhtml-mode since the
+ <em>nXhtml</em> may also be shown in them.
+ </li>
+ <li>
+ The nXhtml menu can be turned on globally by default.
+ Customize nxhtml-menu-mode for that.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.00">1.00</dt>
+ <dd>
+ <ul>
+ <li>
+ Reached version number 1.00 - which you maybe believe
+ means the bugs should be gone? Sorry, it is just that
+ I ran out of version numbers. However it looks like
+ much fewer bugs at least.
+ </li>
+ <li>
+ Fixed problems mostly related to global turn on of different features in nXhtml.
+ </li>
+ <li>
+ Small fixes to indentation.
+ <ul>
+ <li>
+ nxhtml-mode could get confused by php tags.
+ </li>
+ <li>
+ nxhtml-mode did not indent &lt;!DOCTYPE in a sensible way.
+ </li>
+ <li>
+ Electric keys now works in embedded php when using mumamo-mode.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Tidy was very misbehaving since the output buffer was
+ not erased between different files. But I have got no
+ bug reports on this.
+ </li>
+ <li>
+ Fixed a bug in validation that should up when using muamo-mode.
+ </li>
+ <li>
+ Fixed bug in &lt;script ...&gt; and &lt;style ...&gt; chunk dividing.
+ </li>
+ <li>
+ Added support for OpenLaszlo.
+ </li>
+ <li>
+ Corrections to mlinks-mode (visible mostly as links in
+ XHTML buffers):
+ <ul>
+ <li>
+ Links disappeared when a new file was
+ opened. Corrected.
+ </li>
+ <li>
+ Links were not correctly updated at changes in the
+ buffer when mumamo-mode was used. Fixed.
+ </li>
+ </ul>
+ </li>
+ <li>
+ The welcome message for nXhtml could be shown too
+ early sometimes when loading, before nXhtml actually
+ knew if it should be shown or not. Tried to fix it.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.01">1.01</dt>
+ <dd>
+ <ul>
+ <li>
+ Reported wrong version number for nXhtml in the menus. Fixed.
+ </li>
+ <li>
+ <em>If you use the zip file to install nXhtml please
+ notice that it has now a top level nxml.</em> Sorry for not
+ having zipped it like that before!
+ </li>
+ <li>
+ The url links in <em>Welcome to nXhtml</em> was a bit
+ incorrect and did not work on all OS:es. Fixed.
+ </li>
+ <li>
+ Added customization of popup completion to the 'nxhtml
+ customization group so they are easier to find.
+ </li>
+ <li>
+ MuMaMo
+ <ul>
+ <li>
+ Struggled a bit with the load sequences of the elisp
+ libraries used by nXhtml when using MuMaMo.
+ </li>
+ <li>
+ Tried to get the global turn on of mumam-mode to work
+ in all cases.
+ </li>
+ <li>
+ The screen was blinking when changing overlays after
+ changes in the buffer. Tried to fix this.
+ </li>
+ <li>
+ Minor fixes do syntax highlighting, like taking care of single ':s.
+ </li>
+ <li>
+ Fixes to the support for JSP and eRuby.
+ </li>
+ <li>
+ Made the support for perl here documents a bit better.
+ Large perl documents are however still quite slow when
+ using mumamo-mode. I do not know the reason yet.
+ </li>
+ <li>
+ Refontification could miss some parts when buffer
+ changes caused chunk division changes. Complex,
+ tried to fix it, but I am a bit unsure that it
+ always works.
+ </li>
+ <li>
+ Cleaned up mumamo.el a bit.
+ </li>
+ <li>
+ Rewrote mumamo-test.el and functions called from it in
+ mumamo.el a bit to make tracebacks from errors more
+ useful. Changed keybindings in mumamo-test.el from
+ global to a minor mode <em>mumamo-test-mode</em>.
+ Renamed mumamo-notest.el to mumamo-test.el. Added it
+ to the zipped distribution of nXhtml.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Fixed a bug related to links and buffer changes.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.02">1.02</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixed a refontification bug that occured after changes.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.03">1.03</dt>
+ <dd>
+ <ul>
+ <li>
+ Added the possibility to call GIMP.
+ </li>
+ <li>
+ Reworked the messages for fontification errors to try
+ to catch an error that shows up sometimes. Tried to
+ avoid disturbing normal use in spite of that error.
+ </li>
+ <li>
+ Reverted to using a short delay before switching major
+ mode when moving between buffers.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.04">1.04</dt>
+ <dd id="v1.04-dd">
+ <ul>
+ <li>
+ Enhanced the documentation for nXhtml. Starting from
+ <i>C-h f nxhtml-mode</i> it should now be easier to
+ get an overview.
+ </li>
+ <li>
+ Bug fixes etc:
+ <ul id="v1.04-bugs">
+ <li>
+ Completion on an empty page gave a faulty frameset page. Fixed.
+ </li>
+ <li>
+ Insert end tag did not work with a fictive
+ validation header. Fixed.
+ </li>
+ <li>
+ Insert end tag when all preceding tags where
+ closed gave a strange error message. Fixed.
+ </li>
+ <li>
+ Changed some key bindings to comply with
+ <i>(info "(elisp) Key Binding Conventions")</i>
+ </li>
+ <li>
+ Completion in empty buffers with a completion
+ header did not work. Fixed.
+ </li>
+ <li id="mumamo-bugs">
+ Multiple major modes:
+ <ul>
+ <li>
+ Fixed a bug that prevented mumamo-global-mode from
+ beeing turned on in a file opened in
+ fundamental-mode.
+ </li>
+ <li>
+ Better error tracing for some functions,
+ including the call of major mode functions.
+ </li>
+ <li>
+ Position was garbled when a ;-char was inserted in php-mode chunk. Fixed.
+ </li>
+ <li>
+ A bad check for if mlinks-mode where available was fixed.
+ </li>
+ <li>
+ Some bugs concerning turning off mumamo-mode was fixed.
+ </li>
+ <li>
+ Fixed a bug in <i>perl here doc</i> chunks. Suddenly the
+ problem with slowness when using mumamo-mode in
+ perl buffers seems gone. (Note quite sure, but I
+ can't see any problems now.)
+ </li>
+ <li>
+ Fixed a bug in mumamo-mode when current buffer was
+ switched before the major mode had been set from
+ the current chunk.
+ </li>
+ <li>
+ Fixed a long standing bug in php fontification of
+ strings and comments.
+ </li>
+ <li>
+ Fixed a bug where <i>sgml-xml-mode</i> was not defined.
+ </li>
+ <li>
+ Fixed a bug related to get-text-property which
+ gives an error when buffer is narrowed.
+ </li>
+ <li>
+ Tried to refontify things outside of a narrowed part. Fixed.
+ </li>
+ <li>
+ Too little where refontified after changes. I hope I have fixed this.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Fictive XHTML Validation Header:
+ <ul id="v1.04-fic-bugs">
+ <li>
+ View File did not work correctly when a fictive
+ XHTML validation header was used. Corrected.
+ </li>
+ <li>
+ Fictive XHTML validation headers are no longer
+ turned on by default in any buffers.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Indentation:
+ <ul>
+ <li>
+ Tried to fix a problem when using
+ newline-and-indent. When this was in a mode
+ derived from C the indentation sometimes became 0.
+ </li>
+ <li>
+ Speeded up the indentation of regions a bit when
+ using <i>mumamo-mode</i>.
+ </li>
+ <li>
+ Indentation: TAB now only indents a region if it
+ is visibly marked (see transient-mark-mode and
+ cua-mode).
+ </li>
+ <li>
+ Simplified the indentation code.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Fixed a problem where string fontification got out
+ of phase so that wrong parts of buffer could be
+ fontified as a string.
+ </li>
+ <li>
+ Added a workaround for <a
+ href="#php-attribute-values">Attribute values
+ computed by PHP</a>
+ </li>
+ <li>
+ Added .nosearch to subdirectories with no elisp files.
+ </li>
+ <li>
+ Fixed incorrect checks for mlinks-mode in menu building.
+ </li>
+ <li>
+ File extensions where used in a case sensitive way
+ in some places. Fixed.
+ </li>
+ <li>
+ appmenu: Worked only in html files. Fixed.
+ </li>
+ <li>
+ html-site: Fixed the error <em>Error
+ (html-site-current): Can't find site:
+ your-site-name</em>.
+ </li>
+ <li>
+ Fixed a problem with longlines-mode in the support
+ for Firefox add-on It's All Text. (Note however
+ that there are some bugs in longlines-mode
+ itself.) Rewrote the support to be more
+ general. It is now in the file as-external.el, see
+ this file.
+ </li>
+ <li>
+ Fixed an encoding problem in
+ <i>tidy-buffer</i>. Output from tidy was not read
+ using the same coding system as tidy was using.
+ </li>
+ <li>
+ Fixed some problems with face definitions, possibly bugs (not sure).
+ </li>
+ <li>
+ Made the fontification faster when using mumamo-mode.
+ (It is still slower than single mode fontification of course.)
+ </li>
+ <li>
+ nxml-where.el: Made it aware of mumamo.el.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Menu changes:
+ <ul>
+ <li>
+ Completion menu: Renamed to <i>Completion and
+ Validation</i> menu and reorganized a little bit to
+ make it more clear.
+ </li>
+ <li>
+ Renamed <i>view</i> to <i>browse</i> since this is
+ the normal emacs name for showing files in a web
+ browser. Also made corresponding changes to
+ function names. Put back the possibility to view
+ only the region in a web browser.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Uploading:
+ <ul>
+ <li>
+ Added remote dired to the menus.
+ </li>
+ <li>
+ Fixed problems with file names starting with ~.
+ </li>
+ <li>
+ Fixed more problems with file names with spaces.
+ </li>
+ </ul>
+ </li>
+ <li>
+ nxml-where:
+ <ul>
+ <li>
+ nxml-where now uses a timeout for more smooth performance.
+ </li>
+ <li>
+ nxml-where can now recognizes both id and name attribute.
+ </li>
+ <li>
+ Hyphens are now accepted in tag names.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Ruby
+ <ul>
+ <li>
+ Multiple major mode turned on by default for .rhtml files when this mode is global.
+ </li>
+ <li>
+ Multiple major mode is no longer turned on when rub-mode is turned on.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Added support for switching major mode dependent on if
+ Emacs was called as an external editor. This makes it
+ possible for example to switch to relevant major and
+ minor modes when Firefox add-on It's All Text.
+ </li>
+ <li>
+ Added the possibility to easily view the output of scripts on the server (if they require no parameters).
+ You can now do that from the nXhtml menu.
+ Previously only html files on the server could be viewed that way.
+ Image files can also be viewed this way.
+ </li>
+ <li>
+ Filling:
+ <ul>
+ <li>
+ Added functions for unfilling.
+ </li>
+ <li>
+ Added keybindings and menu entries for longlines-mode, fill-paragraph and unfill-paragraph.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Quoting:
+ Added HTML quoting of &amp; and &lt; in text areas. Bound to C-c C-q.
+ </li>
+ <li>
+ Images:
+ <ul>
+ <li>
+ Added image-mode to those that are encompassed by
+ nxhtml-global-minor-mode so that images can be
+ uploaded more easily.
+ </li>
+ <li>
+ Added <em>edit with GIMP</em> and <em>upload</em> to the popup menu for links.
+ This avoids the need to load the linked files in Emacs first.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Added <em>nxml-untag-element</em>.
+ </li>
+ <li>
+ Added a modified version of wikipedia-mode.el. Seems likely to be useful if you are doing web editing.
+ </li>
+ <li>
+ Added html-imenu.el
+ </li>
+ <li>
+ MuMaMo:
+ <ul>
+ <li>
+ Removed the lighter <i>"MuMaMo"</i> for
+ mumamo-mode. Instead the active major mode now has
+ <b>"/m"</b> appended to mode-name (that is what you see
+ in the mode line).
+ </li>
+ <li>
+ The normal way to turn on <i>mumamo-mode</i> has
+ changed. There are now functions that you can use
+ in <i>auto-mode-alist</i> to directly set up the
+ buffer for mumamo-mode. The available functions
+ are in the
+ variable <i>mumamo-defined-turn-on-functions</i>.
+ <p>
+ You are not supposed to call mumamo-mode
+ yourself any more and mumamo-global-mode is
+ gone. So is also mumamo-chunk-family-by-mode and
+ mumamo-filenames-list. The functionality those
+ gave are all replaced by the new functions for
+ turning on mumamo mode.
+ </p>
+ </li>
+ <li>
+ Added support for buffer local values in
+ hooks. This is necessary for example to support
+ minor modes that are meant to be buffer local but
+ not major mode specific. Instructions for authors
+ of this kind of minor modes are in the file
+ mumamo.el.
+ </li>
+ <li>
+ Added support for Django.
+ </li>
+ <li>
+ Added support for Embperl.
+ </li>
+ <li>
+ Added support for PHP Smarty. The <i>{literal}
+ ... {/literal}</i> construct is not supported.
+ This mean that you can not use &lt;style ..&gt; or &lt;script ..&gt;.
+ </li>
+ <li>
+ Added support for imenu for the main major mode.
+ Turned on this by default in nxhtml-mode.
+ </li>
+ <li>
+ Made the temporary replacement of the
+ attr="&lt;?php ... ?&gt;" a bit better. They are
+ now more visible and also still mumamo chunks
+ during the temporary replacement.
+ </li>
+ <li>
+ Added support for <i>flymake-mode</i>.
+ Maybe add support for checking chunks?
+ </li>
+ <li>
+ Printing: Added htmlfontify.el and
+ hfyview.el. These makes if possible to print a
+ buffer fontified with <i>mumamo-mode</i> on in
+ colors (through your web browser). There is an
+ example of the capabilities of htmlfontify <a
+ href="htmlfontify-example.html">here</a> (made
+ with a little function in hfyview.el).
+ </li>
+ </ul>
+ </li>
+ <li>
+ PHP:
+ <ul>
+ <li>
+ Did a first merge with Aaron Hawleys fixes for php-mode.el.
+ </li>
+ </ul>
+ </li>
+ <li>
+ CSS: Upgraded to Stefan's latest css-mode.el.
+ </li>
+ <li>
+ Fictive XHTML Validation Headers: Changed the way they
+ are turned on. They may now be turned on when
+ mumamo-mode is turned on.
+ </li>
+ <li>
+ Some users want to use their own patched version of
+ nXml. Next version of Emacs will come with
+ nXml. Therefore, the loading routine for nXhtml now
+ checks if nXml is is already loaded. Thanks to Eric
+ Lilja for testing this. Eric also made me aware of
+ that if nXhtml was placed in the site-lisp directory
+ tree then things did not work as I expected. I think I
+ have corrected that by placing a <i>.nosearch</i> file
+ at the top of the nxml tree in nXhtml.
+ </li>
+ <li>
+ Restructured the directories. Moved some files out of
+ the <i>nxhtml</i> subdir. Some of them went into the
+ <i>util</i> subdir (those are written by me) and some
+ to the new subdir <i>related</i> (those that are
+ inherited from others, maybe changed by me - most
+ often to work with mumamo-mode).
+ </li>
+ <li>
+ Changed all licenses to be GNU GPL.
+ </li>
+ <li>
+ Additions to tidy support: It is now possible to use
+ the tidy support to tidy the XHTML part of php etc.
+ (Thanks to Hadron for this suggestion.)
+ </li>
+ <li>
+ Added <i>winsize.el</i> which allows interactive resizing of
+ windows. Also added <i>winsav.el</i> which adds the
+ capability to rotate window configurations and also to
+ save window configuration to file.
+ </li>
+ <li>
+ Made nXhtml work with CVS Emacs 23.0.50.1.
+ </li>
+ <li>
+ Added freemind.el to the parcel. After all FreeMind
+ supports web publishing too so why not have the Emacs
+ support here ...
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.10">1.10</dt>
+ <dd id="v1.10-dd">
+ Just jumped the version number for the new release of
+ nXhtml. There are really significant changes in this
+ release, not only minor bug fixes.
+ </dd>
+ <dt id="v1.11">1.11</dt>
+ <dd id="v1.11-dd">
+ Minor bug fixes to completion. Added fictive validation
+ header to completion alternatives when buffer is empty and
+ mumamo is used.
+ </dd>
+ <dt id="v1.12">1.12</dt>
+ <dd id="v1.12-dd">
+ <ul>
+ <li>
+ Fixed a bug in image link insertion in nxhtml-mode, thanks Niels Giesen!
+ </li>
+ <li>
+ Restructured, reordered and documented mumamo.el. It is now two
+ separate files, mumamo.el and mumamo-fun.el.
+ </li>
+ <li>
+ Added move by chunk to the nXhtml menu.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.13">1.13</dt>
+ <dd id="v1.13-dd">
+ <ul>
+ <li>
+ Better handling of the case when no validation header
+ is needed and the user tries to turn it on.
+ </li>
+ <li>
+ Added .phtml as php file.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.14">1.14</dt>
+ <dd id="v1.14-dd">
+ <ul>
+ <li>
+ Completion of links in XHTML was broken. Fixed, thanks
+ to Niels Giesen.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.15">1.15</dt>
+ <dd id="v1.15-dd">
+ <ul>
+ <li>
+ Added `mumamo-map' keymap.
+ </li>
+ <li>
+ Added a keymap to all multi major modes.
+ </li>
+ <li>
+ Some more refinement to fictive validation headers.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.16">1.16</dt>
+ <dd id="v1.16-dd">
+ <ul>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Changes to indentation:
+ <ul>
+ <li>
+ Removed indent-region-mode since that
+ functionality is now in indent-for-tab-command in
+ Emacs 22.
+ </li>
+ <li>
+ Removed some code that checked if indentation was 0.
+ </li>
+ <li>
+ Added indent-for-tab-command to mumamo-map.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Reordering and renaming:
+ <ul>
+ <li>
+ Reordered and move some functions in mumamo.el et al.
+ Added new file nxhtml-mumamo.el.
+ </li>
+ <li>
+ Renamed <i>define-mumamo-turn-on</i> to
+ <i>define-mumamo-multi-major-mode</i>.
+ </li>
+ <li>
+ Removed the ending <i>-turn-on</i> from the
+ functions defined by the macro above.
+ </li>
+ <li>
+ Introduced <i>multi major mode</i> as a name for
+ the functions defined by the macro above. Those
+ works in many respects like major mode functions,
+ but they support multiple major modes in a buffer.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Added support for noweb as multiple major mode.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.17">1.17</dt>
+ <dd id="v1.17-dd">
+ <ul>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Added support for flyspell.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Bug fixes to the version of find-recursive.el that
+ ships with nXhtml. Thanks to Cezar Halmagean.
+ </li>
+ <li>
+ Added tabkey2.el which tries to make it easy to use
+ the Tab key for completion. (You must load it and turn
+ on tabkey2-mode to use it.)
+ </li>
+ <li>
+ Folding:
+ <ul>
+ <li>
+ Added <i>nxhtml-heading-element-name-regexp</i> as
+ default for nxml style folding.
+ </li>
+ <li>
+ Some changes to fold-dwim.el.
+ </li>
+ </ul>
+ </li>
+ <li>
+ AppMenu:
+ <ul>
+ <li>
+ Simplified: Removed the possibility to
+ automatically show minor and major mode menus.
+ There is now only one list, <i>appmenu-alist</i>.
+ </li>
+ <li>
+ Added menu item <i>At Current Point</i> for
+ bindings found in character and overlay keymaps at
+ point. Those you always forget.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Physical line:
+ <ul>
+ <li>
+ Added physical-line.el to nXhtml.
+ </li>
+ <li>
+ Added new functions to move to beginning and end
+ of line to ourcomments-util.el that supports
+ physical-line.el.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.18">1.18</dt>
+ <dd id="v1.18-dd">
+ <ul>
+ <li>
+ Better Tab completion in tabkey2.el.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.19">1.19</dt>
+ <dd id="v1.19-dd">
+ <ul>
+ <li>
+ Even better Tab completion in tabkey2.el.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.20">1.20</dt>
+ <dd id="v1.20-dd">
+ <ul>
+ <li>
+ Once again even better Tab completion in tabkey2.el.
+ </li>
+ <li>
+ Fixed bug in hiding of validation errors (they could
+ disappear totally).
+ </li>
+ <li>
+ Cleaned up menus in nXhtml.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.21">1.21</dt>
+ <dd id="v1.21-dd">
+ <ul>
+ <li>
+ Added a bit support for dired (upload, browse, browse
+ remote).
+ </li>
+ <li>
+ Fixed some strange menu problems (i hope).
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.22">1.22</dt>
+ <dd id="v1.22-dd">
+ <ul>
+ <li>
+ Bug fix.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.23">1.23</dt>
+ <dd id="v1.23-dd">
+ <ul>
+ <li>
+ Bug fix.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.24">1.24</dt>
+ <dd id="v1.24-dd">
+ <ul>
+ <li>
+ Tried again to make hexcolor-mode more readable.
+ </li>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Added support for <i>hi-lock-mode</i>. At present
+ it might however be very puzzling. The hilight
+ added by hi-lock-mode may be hidden by the
+ overlays used by mumamo. Tip: you can always use
+ the face <span
+ style="font-size:1.5em;">hi-black-hb</span>.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.25">1.25</dt>
+ <dd id="v1.25-dd">
+ <ul>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Handle hi-lock-mode in a more general way
+ using <i>font-lock-mode-hook</i>.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.26">1.26</dt>
+ <dd id="v1.26-dd">
+ <ul>
+ <li>
+ nxhtml-mode:
+ <ul>
+ <li>
+ Removed the indent line patch for nxml-mode.
+ </li>
+ <li>
+ Better test for empty page during completion.
+ </li>
+ </ul>
+ </li>
+ <li>
+ tabkey2-mode:
+ <ul>
+ <li>
+ A lot of improvements.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.27">1.27</dt>
+ <dd id="v1.27-dd">
+ <ul>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Worked with bugs in mumamo.el that was due to bad
+ handling of syntax-ppss et el. Looks like most of
+ them are fixed.
+ </li>
+ <li>
+ Fixed documentation and reordered code in mumamo.el
+ and mumamo-fun.el.
+ </li>
+ <li>
+ Changed javascript.el indentation to make it work with
+ mumamo.el.
+ </li>
+ <li>
+ Introduced the function
+ <i>mumamo-make-variable-buffer-permanent</i> as an aid for
+ minor mode authors.
+ </li>
+ <li>
+ Fixed quite a few indentation bugs.
+ There was one bug that could make Emacs loop after indentation.
+ </li>
+ </ul>
+ </li>
+ <li>
+ nxml-where, mlinks
+ <ul>
+ <li>
+ Fixed bugs with left over idle timers when buffer had
+ been killed (nxml-where.el, mlinks.el).
+ </li>
+ </ul>
+ </li>
+ <li>
+ html-site
+ <ul>
+ <li>
+ Fixed a bug in html-site when comparing file
+ names. File names where not made unique before
+ comparision.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Tabkey2
+ <ul>
+ <li>
+ Fixed tabkey2 bugs.
+ </li>
+ </ul>
+ </li>
+ <li>
+ freemind.el
+ <ul>
+ <li>
+ Fixed a problem in freemind-to-org-mode that
+ caused the error "wrong-type-argument string: nil"
+ in string-match("\\(?:^--org-mode: WHOLE FILE$\\)"
+ nil).
+ </li>
+ </ul>
+ </li>
+ <li>
+ Made nXhtml menu available in sub-chunks.
+ </li>
+ <li>
+ Included a slightly changed version of Steve Yegge's
+ js2.el + js2-fl-mode.el from 2008-04-24 with support for
+ jit-lock-mode. This support has some flaws and maybe
+ js2 is not ready for use, I am not sure. However if you want
+ to use this instead of Karl Landströms javascript-mode
+ then please customize <i>mumamo-major-modes</i>.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.28">1.28</dt>
+ <dd id="v1.28-dd">
+ <ul>
+ <li>
+ New version with mostly minor bug fixes from 1.27.
+ Unfortunately I put out 1.27 a bit too early.
+ Please upgrade.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.29">1.29</dt>
+ <dd id="v1.29-dd">
+ <ul>
+ <li>
+ MuMaMo:
+ <ul>
+ <li>
+ Fixed a bug causing emacs to loop when &lt;?&gt;
+ was encountered in an html style buffer.
+ </li>
+ <li>
+ Fixed some problems with &lt;? and ?&gt; in
+ strings in html style buffers.
+ </li>
+ <li>
+ Tried to avoid chunk dividers in strings and comments. (There are still some bugs there.)
+ </li>
+ <li>
+ Fixed an error that prevented byte compiling nxhtml-mumamo.el.
+ (Thanks Christoph Conrad.)
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.30">1.30</dt>
+ <dd id="v1.30-dd">
+ <ul>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Added support to handle specific rng
+ schemacs. With the help of this Genshi and MJT
+ templating languages are now handled.
+ </li>
+ <li>
+ Let the rng schema file name survive mumamo major
+ mode changes.
+ </li>
+ <li>
+ Added support for to let nxml-mode skip chunks it
+ can not parse. (This requires a patch to
+ rng-valid.el too which is not included, but which
+ I hope can go into Emacs soon.)
+ </li>
+ <li>
+ Chunk dividers can now be a part on their own. (Ie
+ there will be no parsing or syntax highlighting of
+ them by the chunk major mode. This is optional and
+ specified for each chunk types.)
+ </li>
+ <li>
+ Added support for Genshi and MJT. These multi
+ major modes support completion and error checking
+ in the XML/XHTML part according to their DTD
+ (which has some additions to the XHTML DTD).
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.31">1.31</dt>
+ <dd id="v1.31-dd">
+ <ul>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Fixed a bug that caused multi major modes to loop sometimes.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.32">1.32</dt>
+ <dd id="v1.32-dd">
+ <ul>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Fixed a bug in syntax-ppss advice.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.33">1.33</dt>
+ <dd id="v1.33-dd">
+ <ul>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Fixed another bug in syntax-ppss advice.
+ </li>
+ <li>
+ Added support for <i>fill-forward-paragraph-function</i>.
+ </li>
+ <li>
+ Made <i>longlines-mode</i> survive major mode changes in mumamo buffers.
+ </li>
+ <li>
+ Fixed a bug that made Emacs loop when it found
+ &lt;??&gt; in for example nxhtml-mumamo.
+ </li>
+ <li>
+ Made it usable with Emacs 22 again.
+ </li>
+ <li>
+ Moved some changes from rng-valid.el to
+ mumamo.el. This makes it possible to let nxml-mode
+ (and derivates) jump over parts when parsing the
+ buffer even if not using the patched version of
+ Emacs+EmacsW32.
+ </li>
+ </ul>
+ </li>
+ <li>
+ nxhtml:
+ <ul>
+ <li>
+ Added command to add CSS rollover images.
+ </li>
+ </ul>
+ </li>
+ <li>
+ mlinks:
+ <ul>
+ <li>
+ Tried to fix the error <i>invalid-read-syntax &quot;]
+ in a list&quot;</i> when loading <i>mlinks.el</i>
+ reported by some Asian users.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.34">1.34</dt>
+ <dd id="v1.34-dd">
+ <ul>
+ <li>
+ <span style="font-size: 1.2em; color: red ()"
+ >Changed top directory name from nxml to nxhtml</span>
+ <p>
+ This will of course case some problems if you do not
+ notice it when you upgrade nXhtml. If you are using
+ EmacsW32 and upgrade nXhtml you should change the
+ file <i>emacsw32.el</i>.
+ </p>
+ <p>
+ The reason for this change is that nXml will soon
+ normally not be part of nXhtml so keeping the old
+ top directory name would be confusing.
+ </p>
+ </li>
+ <li>
+ Added a test suite. See the file <i>nxml/tests/test-Q.el</i>.
+ </li>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Fixed indentation when the whole line is a sub chunk.
+ </li>
+ <li>
+ Tried a bit more to stop nxml from parsing non-xml
+ mode chunks. Because of this php support was
+ changed a bit (for the better I hope).
+ </li>
+ </ul>
+ </li>
+ <li>
+ GIMP:
+ <ul>
+ <li>
+ Registry value location for GIMP had changed.
+ </li>
+ </ul>
+ </li>
+ <li>
+ nXhtml:
+ <ul>
+ <li>
+ Added support for
+ <a href="http://hyperstruct.net/projects/mozlab">MozLab</a>. If
+ you install MozLab in Firefox then you can
+ directly use it from javascript mode without any
+ additional setup.
+ </li>
+ <li>
+ Added <a href="http://www.oak.homeunix.org/~marcel/blog/articles/2008/07/18/nested-imenu-for-php">php-imenu.el</a>.
+ </li>
+ <li>
+ Fixed a bug where I inadvertently
+ added <i>../../lisp</i> to load-path.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.35">1.35</dt>
+ <dd id="v1.35-dd">
+ <ul>
+ <li>
+ Fixed a small bug in sex-mode.el.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.36">1.36</dt>
+ <dd id="v1.36-dd">
+ <ul>
+ <li>
+ Added the function <i>emacs-Q-nxhtml</i> for easier
+ testing. It does the equivalent of <i>emacs -Q --load
+ PATH-TO/nxhtml/autostart.el</i>.
+ </li>
+ <li>
+ MuMaMo:
+ <ul>
+ <li>
+ Forgot to return php-mode in php short tags. Fixed.
+ </li>
+ <li>
+ Borders where not correctly calculated with php short tags. Fixed.
+ </li>
+ <li>
+ Subchunks not parseable by nxml-mode where marked as parseable. Fixed.
+ </li>
+ <li>
+ Debug messages from mumamo where not silenced.
+ </li>
+ <li>
+ Forgot font-lock-syntactic-keywords. This showed up in
+ bad fontification for strings sometimes. Fixed.
+ </li>
+ <li>
+ To fontify keywords font-lock-syntactically-fontified
+ must be set in each chunk. Fixed.
+ </li>
+ <li>
+ Find a way to at least temporarily work around the
+ problem with the last &quote; char in
+ syntax=&quote;...&quote; that could be seen in
+ large XHTML files, for example this file. The
+ drawback with the work around is that it bypasses
+ the cache for syntax-ppss, but this happens only
+ in multi major mode buffers and I notice no
+ performance problems here.
+ </li>
+ <li>
+ Fixed a number of problems with the defadvice for the syntax functions.
+ (I am afraid there are more left.)
+ </li>
+ <li>
+ Took a new grab on the indentation problems.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.37">1.37</dt>
+ <dd id="v1.37-dd">
+ <ul>
+ <li>
+ The command <i>emacs-Q-nxhtml</i> and cousins did not
+ work on all platform. Tried to fix it.
+ </li>
+ <li>
+ Got a report that editing Django was to slow. Tried to fix this.
+ </li>
+ <li>
+ Added a test to the unit test suite that test
+ scrolling and jumping.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.38">1.38</dt>
+ <dd id="v1.38-dd">
+ <ul>
+ <li>
+ Added a workaround that removes validation error marking in non-xhtml chunks.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.39">1.39</dt>
+ <dd id="v1.39-dd">
+ <ul>
+ <li>
+ Multi major modes where not allowed in defcustoms
+ nxhtml-magic-mode-alist and
+ nxhtml-auto-mode-alist. Fixed.
+ </li>
+ <li>
+ Added tests for the use of the lists above.
+ </li>
+ <li>
+ Fixed some bugs that could make a buffer became
+ modified during mumamo fontification actions.
+ </li>
+ </ul>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <hr class="footer"/>
+ <p class="footer">
+ Copyright &copy; <!-- this year -->2008<!-- end this year --> OurComments.org
+ --
+ Latest update <!-- today -->2008-06-28<!-- end today -->
+ </p>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/blorgit.rb b/emacs.d/nxhtml/tests/in/blorgit.rb
new file mode 100644
index 0000000..5ec40e5
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/blorgit.rb
@@ -0,0 +1,313 @@
+# blorgit --- blogging with org-mode
+require 'rubygems'
+require 'sinatra'
+require 'backend/rewrite_content_disposition'
+require 'yaml'
+$global_config ||= YAML.load(File.read(File.join(File.dirname(__FILE__), 'blorgit.yml')))
+$blogs_dir ||= File.expand_path($global_config[:blogs_dir])
+$url_prefix ||= $global_config[:url_prefix]
+require 'backend/init.rb'
+
+# Configuration (http://sinatra.rubyforge.org/book.html#configuration)
+#--------------------------------------------------------------------------------
+use RewriteContentDisposition, {"org" => "attachment"}
+set(:public, $blogs_dir)
+enable(:static)
+set(:app_file, __FILE__)
+set(:haml, { :format => :html5, :attr_wrapper => '"' })
+set(:url_prefix, $url_prefix)
+use_in_file_templates!
+mime(:org, 'text/org')
+
+# Routes (http://sinatra.rubyforge.org/book.html#routes)
+#--------------------------------------------------------------------------------
+get('/') do
+ if config['index']
+ redirect(path_for(config['index']))
+ else
+ "It seems you haven't yet configured a blogs directory. Try"+
+ " running <tt>rake new</tt> from the root. of your blorgit directory"
+ end
+end
+
+post(/^\/.search/) do
+ @query = params[:query]
+ @results = Blog.search(params[:query])
+ haml :results
+end
+
+get(/^\/\.edit\/(.*)?$/) do
+ pass unless config['editable']
+ path, format = split_format(params[:captures].first)
+ if @blog = Blog.find(path)
+ @title = @blog.title
+ @files = (Blog.files(path) or [])
+ haml :edit
+ else
+ "Nothing here to edit."
+ end
+end
+
+get(/^\/(.*)?$/) do
+ path, format = split_format(params[:captures].first)
+ @files = (Blog.files(path) or [])
+ @blog = Blog.find(path)
+ if @blog or File.directory?(Blog.expand(path))
+ if format == 'html'
+ @title = @blog ? @blog.title : path
+ haml :blog
+ elsif @blog
+ content_type(format)
+ attachment extension(@blog.path, format)
+ @blog.send("to_#{format}")
+ else
+ pass
+ end
+ elsif config['editable'] and extension(path, 'org').match(Blog.location_regexp)
+ pass if path.match(/^\./)
+ protected!
+ @path = path
+ haml :confirm_create
+ else
+ "Can't create a new page at #{path}"
+ end
+end
+
+post(/^\/(.*)?$/) do
+ path, format = split_format(params[:captures].first)
+ @blog = Blog.find(path)
+ if params[:comment]
+ pass unless (@blog and config['commentable'])
+ return "Sorry, review your math..." unless params[:checkout] == params[:captca]
+ @blog.add_comment(Comment.build(2, params[:title], params[:author], params[:body]))
+ @blog.save
+ redirect(path_for(@blog))
+ elsif config['editable']
+ protected!
+ if @blog and params[:edit]
+ @blog.body = params[:body]
+ @blog.change_log = params[:change_log] if params[:change_log]
+ @blog.save
+ redirect(path_for(@blog))
+ elsif extension(path, 'org').match(Blog.location_regexp)
+ @blog = Blog.new(:path => extension(path, 'org'),
+ :body => "# -*- mode: org -*-\n#+TITLE: #{File.basename(path)}\n#+OPTIONS: toc:nil ^:nil\n\n")
+ @blog.save
+ redirect(path_for(@blog))
+ elsif path.match(/^\./)
+ pass
+ else
+ "Can't create a new page at #{path}"
+ end
+ else
+ pass
+ end
+end
+
+# Helpers (http://sinatra.rubyforge.org/book.html#helpers)
+#--------------------------------------------------------------------------------
+helpers do
+ def config
+ $local_config_file ||= File.join($blogs_dir, '.blorgit.yml')
+ $local_config ||= $global_config[:config].merge(File.exists?($local_config_file) ? YAML.load(File.read($local_config_file)) : {})
+ config_file = File.join(File.dirname(File.join($blogs_dir, (params[:captures] ? params[:captures].first : ''))), '.blorgit.yml')
+ $local_config.merge((File.exists?(config_file)) ? YAML.load(File.read(config_file)) : {})
+ end
+
+ def split_format(url) url.match(/(.+)\.(.+)/) ? [$1, $2] : [url, 'html'] end
+
+ def path_for(path, opts ={})
+ path = (path.class == Blog ? path.path : path)
+ File.join(options.url_prefix, extension(path, (opts[:format] or nil)))
+ end
+
+ def show(blog, options={}) haml("%a{ :href => '#{path_for(blog)}' } #{blog.title}", :layout => false) end
+
+ def comment(blog, parent_comment) end
+
+ def extension(path, format = nil) (path.match(/^(.+)\..+$/) ? $1 : path)+(format ? "."+format : '') end
+
+ def time_ago(from_time)
+ distance_in_minutes = (((Time.now - from_time.to_time).abs)/60).round
+ case distance_in_minutes
+ when 0..1 then 'about a minute'
+ when 2..44 then "#{distance_in_minutes} minutes"
+ when 45..89 then 'about 1 hour'
+ when 90..1439 then "about #{(distance_in_minutes.to_f / 60.0).round} hours"
+ when 1440..2879 then '1 day'
+ when 2880..43199 then "#{(distance_in_minutes / 1440).round} days"
+ when 43200..86399 then 'about 1 month'
+ when 86400..525599 then "#{(distance_in_minutes / 43200).round} months"
+ when 525600..1051199 then 'about 1 year'
+ else "over #{(distance_in_minutes / 525600).round} years"
+ end
+ end
+
+ # from http://www.sinatrarb.com/faq.html#auth
+ def protected!
+ response['WWW-Authenticate'] = %(Basic realm="username and password required") and \
+ throw(:halt, [401, "Not authorized\n"]) and \
+ return unless ((not config['auth']) or authorized?)
+ end
+
+ def authorized?
+ @auth ||= Rack::Auth::Basic::Request.new(request.env)
+ @auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == config['auth']
+ end
+
+end
+
+# HAML Templates (http://haml.hamptoncatlin.com/)
+#--------------------------------------------------------------------------------
+__END__
+@@ layout
+!!!
+%html
+ %head
+ %meta{'http-equiv' => "content-type", :content => "text/html;charset=UTF-8"}
+ :javascript
+ function toggle(item) {
+ el = document.getElementById(item);
+ if(el.style.display == "none") { document.getElementById(item).style.display = "block" }
+ else { document.getElementById(item).style.display = "none" }
+ }
+ - if config['favicon']
+ %link{:rel => "icon", :type => "image/x-icon", :href => path_for(config['favicon'], :format => 'ico')}
+ %link{:rel => "stylesheet", :type => "text/css", :href => path_for(config['style'], :format => 'css')}
+ %title= "#{config['title']}: #{@title}"
+ %body
+ #container
+ #titlebar= render(:haml, :titlebar, :layout => false)
+ #insides
+ #sidebar= render(:haml, :sidebar, :locals => { :files => @files }, :layout => false)
+ #contents= yield
+
+@@ titlebar
+#title_pre
+#title
+ %a{ :href => path_for(''), :title => 'home' }= config['title']
+#title_post
+#search= haml :search, :layout => false
+- if @blog
+ #actions
+ %ul
+ - if config['editable']
+ %li
+ %a{ :href => path_for(File.join(".edit", @blog.path)), :title => "edit #{@title}" } edit
+ %li
+ %a{ :href => path_for(@blog, :format => 'org'), :title => 'download as org-mode' } .org
+ %li
+ %a{ :href => path_for(@blog, :format => 'tex'), :title => 'download as LaTeX' } .tex
+ %li
+ %a{ :href => path_for(@blog, :format => 'pdf'), :title => 'download as PDF' } .pdf
+#title_separator
+
+@@ sidebar
+- if (config['recent'] and (config['recent'] > 0))
+ #recent= haml :recent, :layout => false
+- if (config['dir_list'] and @files)
+ #dir= haml :dir, :locals => { :files => files }, :layout => false
+
+@@ search
+%form{ :action => path_for('.search'), :method => :post, :id => :search }
+ %ul
+ %li
+ %input{ :id => :query, :name => :query, :type => :text, :size => 12 }
+ %li
+ %input{ :id => :search, :name => :search, :value => :search, :type => :submit }
+
+@@ recent
+%label Recent
+%ul
+ - Blog.all.sort_by(&:ctime).reverse[(0..(config['recent'] - 1))].each do |blog|
+ %li
+ %a{ :href => path_for(blog)}= blog.title
+
+@@ dir
+%label Directory
+%ul
+ - files.each do |file|
+ %li
+ %a{ :href => path_for(file) + (File.directory?(Blog.expand(file)) ? "/" : "") }= File.basename(file)
+
+@@ results
+#results_list
+ %h1
+ Search Results for
+ %em= "/" + @query + "/"
+ %ul
+ - @results.sort_by{ |b,h| -h }.each do |blog, hits|
+ %li
+ %a{ :href => path_for(blog) }= blog.name
+ = "(#{hits})"
+
+@@ edit
+%h1= "Edit #{@title}"
+%form{ :action => path_for(@blog), :method => :post, :id => :comment_form }
+ %textarea{ :id => :body, :name => :body, :rows => 28, :cols => 82 }= @blog.body
+ %br
+ Change log:
+ %input{ :id => :change_log, :name => :change_log, :type => :text }
+ %input{ :id => :submit, :name => :edit, :value => :update, :type => :submit }
+ %a{ :href => path_for(@blog) } Cancel
+
+@@ blog
+- if @blog
+ #blog_body= @blog.to_html
+ - if (config['commentable'] and (not @blog.commentable == 'disabled'))
+ #comments= render(:haml, :comments, :locals => {:comments => @blog.comments, :commentable => @blog.commentable}, :layout => false)
+- else
+ #dir= haml :dir, :locals => { :files => @files }, :layout => false
+
+@@ comments
+#existing_commment
+ %label= "Comments (#{comments.size})"
+ %ul
+ - comments.each do |comment|
+ %li
+ %ul
+ %li
+ %label title
+ = comment.title
+ %li
+ %label author
+ = comment.author
+ %li
+ %label date
+ = time_ago(comment.date) + " ago"
+ %li
+ %label comment
+ %div= Blog.string_to_html(comment.body)
+- unless commentable == 'closed'
+ #new_comment
+ %label{ :onclick => "toggle('comment_form');"} Post a new Comment
+ %form{ :action => path_for(@blog), :method => :post, :id => :comment_form, :style => 'display:none' }
+ - equation = "#{rand(10)} #{['+', '*', '-'].sort_by{rand}.first} #{rand(10)}"
+ %ul
+ %li
+ %label name
+ %input{ :id => :author, :name => :author, :type => :text }
+ %li
+ %label title
+ %input{ :id => :title, :name => :title, :type => :text, :size => 36 }
+ %li
+ %label comment
+ %textarea{ :id => :body, :name => :body, :rows => 8, :cols => 68 }
+ %li
+ %input{ :id => :checkout, :name => :checkout, :type => :hidden, :value => eval(equation) }
+ %span
+ %p to protect against spam, please answer the following
+ = equation + " = "
+ %input{ :id => :captca, :name => :captca, :type => :text, :size => 4 }
+ %li
+ %input{ :id => :submit, :name => :comment, :value => :comment, :type => :submit }
+
+@@ confirm_create
+%form{ :action => path_for(@path), :method => 'post', :id => 'creation_form'}
+ %label
+ Create a new page at
+ %em= @path
+ ?
+ %input{ :id => 'submit', :name => 'submit', :value => 'create', :type => 'submit' }
+ %a{ :href => path_for('/') } cancel
+
diff --git a/emacs.d/nxhtml/tests/in/bug-080609.html b/emacs.d/nxhtml/tests/in/bug-080609.html
new file mode 100644
index 0000000..708a00a
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-080609.html
@@ -0,0 +1,9 @@
+<html>
+ <head>
+ <script>
+ function x () { return 1 > 0; }
+ </script>
+ </head>
+ <body class="foo">
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/bug-1908494.php b/emacs.d/nxhtml/tests/in/bug-1908494.php
new file mode 100644
index 0000000..778fb61
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-1908494.php
@@ -0,0 +1,6 @@
+<?php
+
+$parent_id = 5;
+var_dump($parent_id);
+
+?>
diff --git a/emacs.d/nxhtml/tests/in/bug-2010-02-17-delgado.mm b/emacs.d/nxhtml/tests/in/bug-2010-02-17-delgado.mm
new file mode 100644
index 0000000..990d000
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-2010-02-17-delgado.mm
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<map version="0.9.0">
+<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
+<node text="Title">
+<node text="Node 1">
+</node><!-- a -->
+<node text="Node 2">
+</node><!-- b -->
+</node><!-- c cl=3, bl=1, odd=t -->
+</map>
diff --git a/emacs.d/nxhtml/tests/in/bug-2010-02-17-delgado.org b/emacs.d/nxhtml/tests/in/bug-2010-02-17-delgado.org
new file mode 100644
index 0000000..5b9c3d5
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-2010-02-17-delgado.org
@@ -0,0 +1,3 @@
+* Title
+*** Node 1
+*** Node 2
diff --git a/emacs.d/nxhtml/tests/in/bug-290364.php b/emacs.d/nxhtml/tests/in/bug-290364.php
new file mode 100644
index 0000000..190b230
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-290364.php
@@ -0,0 +1,66 @@
+<?php
+include 'HTML/QuickForm.php';
+
+echo '<script type="text/javascript" src="library/javascript/prototype.js" language="javascript"></script>';
+echo '<script type="text/javascript" src="library/javascript/scriptaculous.js" language="javascript"></script>';
+echo '<script type="text/javascript" src="library/cropper/cropper.js" language="javascript"></script>';
+
+
+
+echo ' <img src="test.jpg" alt="Test image" id="testImage" width="500" height="333" />';
+
+echo ' <script type="text/javascript" language="javascript">';
+
+echo ' function onEndCrop( coords, dimensions ) {';
+// echo ' $( "x1" ).value = coords.x1;';
+// echo ' $( "y1" ).value = coords.y1;';
+// echo ' $( "x2" ).value = coords.x2;';
+// echo ' $( "y2" ).value = coords.y2;';
+// echo ' $( "width" ).value = dimensions.width;';
+// echo ' $( "height" ).value = dimensions.height;';
+// echo 'console.log(coords.x1);';
+// echo 'console.log(coords.x2);';
+// echo ' style = clip:rect( + coords.x1 + "px " + coords.y1 + "px " + coords.x2 + "px " + coords.y2 + "px)\n"';
+?>
+style = "clip:rect(0px 130px 130px 0px)";
+$("hidden_0").value = new Array (coords.x1, coords.x2, coords.y1, coords.y2);
+$("testImage").writeAttribute("style=" style);
+}
+function js_init () {
+ Event.observe( "button_0", "click", function() { } );
+ // $("file_0").writeAttribute("src", "")
+
+ new Cropper.Img("testImage", {minWidth: 220,previewWrap: "previewWrap", onEndCrop: onEndCrop });
+}
+
+
+
+Event.observe( window, "load", function() {
+ js_init ();
+ } );
+?>
+echo ' </script>';
+
+echo '<h1> Cropper votre image v0.1</h1>';
+
+$label = 'file_default';
+
+$form = new HTML_QuickForm ('cropper_form', "", "img-cropped.php", '', 'enctype=multipart/form-data');
+
+$form->addElement ('file', 'file_0', $label);
+$form->addElement ('hidden', 'hidden_0');
+$form->addElement ('button', 'button_0');
+$form->updateElementAttr(array('button_0'), array ('id' => 'button_0'));
+$form->addElement ('submit', 'submit_0', 'Envoyer!');
+$form->updateElementAttr(array('file_0'), array ('id' => 'file_0'));
+$form->updateElementAttr(array('hidden_0'), array ('id' => 'hidden_0'));
+echo $form->toHtml ();
+
+if (isset ($_POST['file_0'])):
+$image = $_POST['file_0'];
+tmpfile ($image);
+echo $_POST['file_0'];
+endif;
+echo sys_get_temp_dir ();
+var_dump ($_POST);
+?> \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/bug-300946-index.html b/emacs.d/nxhtml/tests/in/bug-300946-index.html
new file mode 100644
index 0000000..a90814a
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-300946-index.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+<head>
+<meta http-equiv="expires" content="Monday, February 2nd, 2004 7:51:17pm">
+<title>The ACSys Group Home Page</title>
+</head>
+ <frameset rows="113,*" framespacing="0" frameborder="0">
+
+ <frame name="logo" target="logo" src="logo.htm" marginwidth="4" marginheight="0">
+
+ <frameset cols="17%,*" framespacing="0" frameborder="0">
+ <frame name="menu" target="content" src="menu.htm" marginwidth="4" marginheight="0">
+ <frame name="content" target="_self" src="mission.htm" marginwidth="0" marginheight="0">
+ </frameset>
+
+ <noframes>
+ <body>
+ <p>This page uses frames, but your browser doesn't support them.</p>
+ </body>
+ </noframes>
+
+ </frameset>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/bug-311640-index.html b/emacs.d/nxhtml/tests/in/bug-311640-index.html
new file mode 100644
index 0000000..64bb09b
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-311640-index.html
@@ -0,0 +1,24 @@
+<script type="text/javascript">
+ // Set this to the URL you used to fetch recommendations, whether you
+ // fetched them on the client or the server.
+ var request_url = '%(json_url)s';
+
+ // This function is used track click-throughs by fetching a web
+ // beacon.n
+ function trackClickThrough(elem) {
+ var img = new Image();
+ img.src = '%(beacon_url)s' +
+ '?request_url=' + escape(request_url) +
+ '&click_through_url=' + escape(elem.href);
+ return true;
+ }
+</script>
+
+<p>
+ <!--
+ Imagine this is one of the recommendations that was returned.
+ Just add an onclick handler that calls trackClickThrough.
+ -->
+ <a href="http://www.google.com"
+ onclick="return trackClickThrough(this);">Click me!</a>
+</p>
diff --git a/emacs.d/nxhtml/tests/in/bug-311641.php b/emacs.d/nxhtml/tests/in/bug-311641.php
new file mode 100644
index 0000000..96109ba
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-311641.php
@@ -0,0 +1,7 @@
+<?
+
+try {
+} catch (PDOException $e) {
+ }
+
+?> \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/bug-373106-flipbook.html b/emacs.d/nxhtml/tests/in/bug-373106-flipbook.html
new file mode 100644
index 0000000..658d391
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-373106-flipbook.html
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+ <head>
+ <title>Flipbook (draft)</title>
+ <style type="text/css">
+ body {
+ background-color: black;
+ color: white;
+ }
+
+ .ui-effects-transfer {
+ border: 2px dotted gray;
+ }
+ </style>
+ <script type="text/javascript" src="jquery.js"></script>
+ <script type="text/javascript" src="jquery-ui.js"></script>
+ <script type="text/javascript" src="jquery.event.special.gesture.js"></script>
+ <script type="text/javascript" src="jquery.gestureable.js"></script>
+ <script type="text/javascript">
+ /* Code to do some fancy book-like effects
+ */
+
+ /* a closure-based class */
+ var ImageManager = function (images) {
+ var self = this;
+ var currentPage = 0;
+
+ self.getCurrentPages = function () {
+ return [images[currentPage],
+ images[currentPage+1]];
+ };
+
+ self.turnNext = function () {
+ currentPage += 2;
+ return self.getCurrentPages();
+ };
+
+ self.turnPrevious = function () {
+ currentPage -= 2;
+ return self.getCurrentPages();
+ };
+ };
+
+ function style_element(element) {
+ element.css('background-color', 'black');
+ element.css('width', '900px');
+ element.css('height', '650px');
+ element.css('border', '2px dashed white');
+ }
+
+ function small_gesture(event) {
+ /* called in mousedown of small images */
+ var container = $(event.target).closest('div');
+ var manager = container.data('manager');
+ var large = $(event.target).
+ attr('src').
+ replace(/small/, 'large');
+
+ switch (event.gesture) {
+ case 'U':
+ case 'D':
+ container.data('left').hide();
+ container.data('right').hide();
+ container.data('spacer').hide();
+ container.data('zoomed').attr('src', large).show('clip');
+ break;
+ case 'L':
+ var images = manager.turnPrevious();
+ container.data('left').attr('src', images[0] + '_small.jpg');
+ container.data('right').attr('src', images[1] + '_small.jpg');
+ break;
+ case 'R':
+ var images = manager.turnNext();
+ container.data('left').attr('src', images[0] + '_small.jpg');
+ container.data('right').attr('src', images[1] + '_small.jpg');
+ break;
+ }
+ }
+
+ function large_gesture(event) {
+ var container = $(event.target).closest('div');
+ switch (event.gesture) {
+ case 'U':
+ case 'D':
+ $(event.target).hide();
+ container.data('spacer').show();
+ container.data('left').show();
+ container.data('right').show();
+ }
+ }
+
+ function disable_scroll(event) {
+ /* Simply disables the dragging of elements */
+ return false;
+ }
+
+ function flipbook(element, images) {
+ var manager = new ImageManager(images);
+ element.data('manager', manager);
+
+ // apply the style
+ style_element(element);
+
+ // create a spacer div and attach it
+ var spacer = $('<div class="spacer"></div>');
+ spacer.css('height', '162px');
+ element.data('spacer', spacer);
+ element.append(spacer);
+
+ var zoomed = $('<img />');
+ zoomed.gestureable();
+ zoomed.mouseup(large_gesture).
+ mousedown(disable_scroll).
+ hide();
+
+ element.data('zoomed', zoomed);
+ element.append(zoomed);
+
+ // create the images
+ var currentImages = manager.getCurrentPages();
+ var left = $('<img src="' + currentImages[0] + '_small.jpg" />');
+ var right = $('<img src="' + currentImages[1] + '_small.jpg" />');
+ element.data('left', left);
+ element.data('right', right);
+
+ $([left, right]).each(function (key, value) {
+ // enable gestures
+ value.gestureable();
+ value.mouseup(small_gesture);
+ value.mousedown(disable_scroll);
+ // add to the display
+ element.append(value);
+ });
+ }
+
+ $(document).ready(function () {
+ flipbook($('#flipbook'),
+ ['image_01', 'image_02', 'image_03', 'image_04',
+ 'image_05', 'image_06', 'image_07', 'image_08',
+ 'image_09', 'image_10', 'image_11', 'image_12',
+ 'image_13', 'image_14', 'image_15']);
+ });
+ </script>
+ </head>
+ <body>
+ <div id="flipbook"></div>
+ <p>Usage: gesture left/right to change images, up/down to zoom in/out</p>
+ <p>The flipbook uses a number of libs:</p>
+ <p>
+ <ul>
+ <li>jQuery</li>
+ <li>jQuery UI</li>
+ <li>jQuery Special Event Gestures</li>
+ </ul>
+ </p>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/bug-381191-dh-test.el b/emacs.d/nxhtml/tests/in/bug-381191-dh-test.el
new file mode 100644
index 0000000..d960a10
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-381191-dh-test.el
@@ -0,0 +1,23 @@
+;; 3. Add a new c-indentation-style:
+
+(defconst drupal
+ '((c-basic-offset . 2)
+ (c-offsets-alist . ((arglist-close . c-lineup-close-paren)
+ (case-label . +)
+ (arglist-intro . +)
+ (arglist-cont-nonempty . c-lineup-math))))
+ "My Drupal Programming style")
+
+(c-add-style "drupal" drupal)
+
+;; 4. Open file test.php, attached.
+
+;; 5. Run `c-set-style' and select "drupal"
+
+;; 6. Select the whole buffer and press "C-M-\" (or any other indentation command,
+;; for that matter) and watch as the array elements are lined up with "array(",
+;; whereas they should be indented by 2.
+
+;; 7. Run M-x php-mode and c-set-style to drupal
+
+;; 8. Try indenting again to see that indentation now works properly.
diff --git a/emacs.d/nxhtml/tests/in/bug-381191-dh-test.php b/emacs.d/nxhtml/tests/in/bug-381191-dh-test.php
new file mode 100644
index 0000000..c9e450c
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-381191-dh-test.php
@@ -0,0 +1,6 @@
+<?php
+$a = array(
+ 'foo' => 'bar',
+ 'gaz' => 'gazonk',
+);
+?> \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/bug-johan-2010-02-12.rhtml b/emacs.d/nxhtml/tests/in/bug-johan-2010-02-12.rhtml
new file mode 100644
index 0000000..758a4b0
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-johan-2010-02-12.rhtml
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
+ <link rel="icon" href="/favicon.ico" />
+
+ <%= include_stylesheets :blueprint, :application, :media => 'all' %>
+<!--[if lt IE 8]>
+ <%= include_stylesheets :ie, :media => 'all' %>
+ <![endif]-->
+<%= include_javascripts :mootools, :application %>
+ </head>
+ <body>
+ <div id="container">
+ <%= render :partial => "layouts/application/header" %>
+<%= render :partial => "layouts/application/menu" %>
+ <%= render :partial => "layouts/application/search_bar" %>
+<%= render :partial => "layouts/application/contents" %>
+ <%= render :partial => "layouts/application/footer" %>
+</div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/bug-johan-2010-02-16.html.haml b/emacs.d/nxhtml/tests/in/bug-johan-2010-02-16.html.haml
new file mode 100644
index 0000000..4184a32
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-johan-2010-02-16.html.haml
@@ -0,0 +1,34 @@
+!!! Strict
+%html
+ %head
+ %title= t("site.title")
+ %meta{"http-equiv" => "Content-Type", :content => "text/html;charset=utf-8"}
+ = javascript_include_merged :mootools, :application
+ = stylesheet_link_merged :application
+ /[if lt IE 8]
+ = stylesheet_link_merged :ie
+
+ %body
+ = render :partial => "shared/fork"
+ #container
+ #logo
+ = link_to image_tag("logo.png"), root_url
+
+ = render :partial => "shared/user_panel"
+ = render :partial => "shared/menu"
+
+ #body
+ #contents
+ = render :partial => "shared/flash", :object => flash
+
+ .padder
+ #search_results
+
+ = yield
+
+ #sidebar
+ .padder
+ = render :partial => "shared/sidebar"
+
+ #footer
+ %p= t("site.copyright")
diff --git a/emacs.d/nxhtml/tests/in/bug-johan-2010-02-17-2.erb b/emacs.d/nxhtml/tests/in/bug-johan-2010-02-17-2.erb
new file mode 100644
index 0000000..67411a9
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-johan-2010-02-17-2.erb
@@ -0,0 +1,14 @@
+
+<% semantic_form_for @user_session do |form| %>
+<%= form.error_messages :header_tag => :h3 %>
+<%#= authlogic_facebook_login_button %>
+
+<% form.inputs do %>
+<%= form.input :email %>
+<%= form.input :password %>
+<% end %>
+
+<% form.buttons do %>
+<%= form.commit_button %>
+<% end %>
+<% end %>
diff --git a/emacs.d/nxhtml/tests/in/bug-johan-2010-02-17.erb b/emacs.d/nxhtml/tests/in/bug-johan-2010-02-17.erb
new file mode 100644
index 0000000..ebb5094
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug-johan-2010-02-17.erb
@@ -0,0 +1,4 @@
+<% collection.each do |item| %>
+<%= item.method %>
+<% end %>
+
diff --git a/emacs.d/nxhtml/tests/in/bug261792.ghtml b/emacs.d/nxhtml/tests/in/bug261792.ghtml
new file mode 100644
index 0000000..faec7f9
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug261792.ghtml
@@ -0,0 +1,7 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:py="http://genshi.edgewall.org/"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ lang="en">
+ <xi:include href="../layout.html" />
+ <head>
diff --git a/emacs.d/nxhtml/tests/in/bug271497.el b/emacs.d/nxhtml/tests/in/bug271497.el
new file mode 100644
index 0000000..7abe02e
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug271497.el
@@ -0,0 +1,14 @@
+;;; bug271497.el --- For bug report 271497 at Launchpad
+(require 'ada-mode)
+(require 'mumamo)
+
+(eval-and-compile
+ (defun mumamo-chunk-embjava (pos min max)
+ "Find JAVA_ON ... JAVA_OFF, return range and java-mode."
+ (mumamo-quick-static-chunk pos min max "JAVA_ON" "JAVA_OFF" nil 'java-mode nil))
+ )
+
+(define-mumamo-multi-major-mode bug271497-mumamo
+ "docstring"
+ ("ADA Mode" ada-mode
+ (mumamo-chunk-embjava)))
diff --git a/emacs.d/nxhtml/tests/in/bug271497.txt b/emacs.d/nxhtml/tests/in/bug271497.txt
new file mode 100644
index 0000000..7e4e8e5
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug271497.txt
@@ -0,0 +1,7 @@
+This is supposed to be ada code
+
+JAVA_ON
+and this is supposed to be java code
+JAVA_OFF
+
+This is also supposed to be ada code
diff --git a/emacs.d/nxhtml/tests/in/bug272871.php b/emacs.d/nxhtml/tests/in/bug272871.php
new file mode 100644
index 0000000..c205383
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug272871.php
@@ -0,0 +1,7 @@
+<?php
+function a()
+{
+ b($a, $b);
+ c($b, $c);
+}
+?> \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/bug290364-messages.txt b/emacs.d/nxhtml/tests/in/bug290364-messages.txt
new file mode 100644
index 0000000..4aaae9a
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug290364-messages.txt
@@ -0,0 +1,97 @@
+("/usr/bin/emacs22-gtk")
+Loading 00debian-vars...
+No /etc/mailname. Reverting to default...
+Loading 00debian-vars...done
+Loading /etc/emacs/site-start.d/20apel.el (source)...done
+Loading /etc/emacs/site-start.d/50cedet-common.el (source)...
+Loading advice...done
+Loading /etc/emacs/site-start.d/50cedet-common.el (source)...done
+Loading /etc/emacs/site-start.d/50css-mode.el (source)...done
+Loading /etc/emacs/site-start.d/50devhelp.el (source)...done
+Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...
+Loading debian-ispell...
+Loading /var/cache/dictionaries-common/emacsen-ispell-default.el (source)...done
+Loading debian-ispell...done
+Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...done
+Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...done
+Loading /etc/emacs/site-start.d/50eieio.el (source)...done
+Loading /etc/emacs/site-start.d/50eldav.el (source)...done
+Loading /etc/emacs/site-start.d/50elserv.el (source)...done
+Loading /etc/emacs/site-start.d/50emacs-extra.el (source)...done
+Loading /etc/emacs/site-start.d/50emacs-goodies-el.el (source)...done
+Loading /etc/emacs/site-start.d/50erc.el (source)...
+Loading erc-auto...done
+Loading /etc/emacs/site-start.d/50erc.el (source)...done
+Loading /etc/emacs/site-start.d/50flim.el (source)...done
+Loading /etc/emacs/site-start.d/50gettext.el (source)...done
+Loading /etc/emacs/site-start.d/50html-helper-mode.el (source)...done
+Loading /etc/emacs/site-start.d/50mmm-mode.el (source)...done
+Loading /etc/emacs/site-start.d/50php-elisp.el (source)...done
+Loading /etc/emacs/site-start.d/50php-mode.el (source)...done
+Loading /etc/emacs22/site-start.d/50psgml-init.el (source)...done
+Loading /etc/emacs/site-start.d/50psvn.el (source)...done
+Loading /etc/emacs/site-start.d/50tramp.el (source)...done
+Loading /etc/emacs/site-start.d/50w3m-el.el (source)...done
+Loading /etc/emacs/site-start.d/51ede.el (source)...done
+Loading /etc/emacs/site-start.d/51speedbar.el (source)...done
+Loading /etc/emacs/site-start.d/52semantic.el (source)...done
+Loading /etc/emacs/site-start.d/53cedet-contrib.el (source)...done
+Loading /etc/emacs/site-start.d/53cogre.el (source)...done
+Loading /etc/emacs/site-start.d/55ecb.el (source)...
+"/usr/share/emacs22/site-lisp/cedet-common/" added to `load-path'
+Setting up cedet...done
+Setting up cogre...done
+Setting up ede...
+Loading ede...
+Loading ede-speedbar...done
+Loading ede...done
+Setting up ede...done
+Setting up eieio...done
+Setting up semantic...
+Loading derived...done
+Setting up semantic...done
+Setting up speedbar...done
+Setting up cedet-contrib...done
+Loading /etc/emacs/site-start.d/55ecb.el (source)...done
+Loading /etc/emacs22/site-start.d/60nxml-mode.el (source)...
+Loading /usr/share/emacs22/site-lisp/nxml-mode/rng-auto.el (source)...done
+Loading /etc/emacs22/site-start.d/60nxml-mode.el (source)...done
+Loading /etc/emacs/site-start.d/60wysihtml-el.el (source)...done
+Loading /home/guillaume/elisp/nxhtml/autostart.el (source)...
+Nxml/Nxhtml Autostart.el loading ...
+Loading edmacro...done
+Loading easy-mmode...done
+Loading /home/guillaume/elisp/nxhtml/nxhtml-loaddefs.el (source)...done
+Loading /home/guillaume/elisp/nxhtml/etc/schema/schema-path-patch.el (source)...done
+xhtml-loader.rnc was ok
+(No changes need to be saved)
+Loading /home/guillaume/elisp/nxhtml/nxhtml/nxhtml-autoload.el (source)...
+Loading /home/guillaume/elisp/nxhtml/util/majmodpri.el (source)...done
+majmodpri-sort-lists running ...
+Loading /home/guillaume/elisp/nxhtml/nxhtml/nxhtml-autoload.el (source)...done
+Loading /home/guillaume/elisp/nxhtml/autostart.el (source)...done
+Loading /home/guillaume/elisp/nxhtml/nxhtml/nxhtml.el (source)...
+html-site-current (information): No current site set
+Loading /home/guillaume/elisp/nxhtml/nxhtml/nxhtml.el (source)...done
+Loading nxml-uchnm...done
+Loading rng-nxml...done
+Loading rng-cmpct...done
+Loading rng-xsd...done
+Using vacuous schema
+Loading /home/guillaume/elisp/nxhtml/nxhtml/nxhtml-menu.el (source)...done
+Loading /home/guillaume/elisp/nxhtml/util/mlinks.el (source)...done
+Loading imenu...done
+Loading /home/guillaume/elisp/nxhtml/nxhtml/nxhtml-mumamo.el (source)...
+Loading byte-opt...done
+Loading /home/guillaume/elisp/nxhtml/nxhtml/nxhtml-mumamo.el (source)...done
+Showing all blocks ... done
+Loading semantic-html...done
+Loading /home/guillaume/elisp/geben/geben.el (source)...done
+ispell.el is already loaded
+Using vacuous schema [4 times]
+Loading semantic-el...done
+let: Wrong type argument: stringp, nil [2 times]
+Making completion list...
+Loading eieio-opt...done
+Making completion list...
+let: Wrong type argument: stringp, nil \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/bug354363-index.php b/emacs.d/nxhtml/tests/in/bug354363-index.php
new file mode 100644
index 0000000..3644f5d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug354363-index.php
@@ -0,0 +1,38 @@
+<?php
+ define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application/'));
+set_include_path(
+ APPLICATION_PATH . '/../library'
+ . PATH_SEPARATOR . get_include_path()
+ );
+
+if(true){
+ echo 'test';
+ }
+else
+ {
+
+ }
+
+require_once "Zend/Loader.php";
+Zend_Loader::registerAutoload();
+
+try
+{
+ require '../application/bootstrap.php';
+ }
+catch(Exception $exception)
+{
+ echo '<html><body><center>'
+ . 'An exception occured while bootstrapping the application.';
+ if(defined('APPLICATION_ENVIRONMENT')
+ && APPLICATION_ENVIRONMENT != 'production'
+ ) {
+ echo '<br /><br />' . $exception->getMessage() . '<br />'
+ . '<div align="left">Stack Trace:'
+ . '<pre>' . $exception->getTraceAsString() . '</pre></div>';
+ }
+ echo '</center><body></html>';
+ exit(1);
+ }
+
+Zend_Controller_Front::getInstance()->dispatch();
diff --git a/emacs.d/nxhtml/tests/in/bug354363-test.php b/emacs.d/nxhtml/tests/in/bug354363-test.php
new file mode 100644
index 0000000..10e2c0d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug354363-test.php
@@ -0,0 +1,3 @@
+<?php
+echo 'test';
+?>
diff --git a/emacs.d/nxhtml/tests/in/bug369800-load-history.txt b/emacs.d/nxhtml/tests/in/bug369800-load-history.txt
new file mode 100644
index 0000000..aad863d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug369800-load-history.txt
@@ -0,0 +1,9483 @@
+load-history is a variable defined in `C source code'.
+Its value is shown below.
+
+Documentation:
+Alist mapping file names to symbols and features.
+Each alist element is a list that starts with a file name,
+except for one element (optional) that starts with nil and describes
+definitions evaluated from buffers not visiting files.
+
+The file name is absolute and is the true file name (i.e. it doesn't
+contain symbolic links) of the loaded file.
+
+The remaining elements of each list are symbols defined as variables
+and cons cells of the form `(provide . FEATURE)', `(require . FEATURE)',
+`(defun . FUNCTION)', `(autoload . SYMBOL)', `(defface . SYMBOL)'
+and `(t . SYMBOL)'. An element `(t . SYMBOL)' precedes an entry
+`(defun . FUNCTION)', and means that SYMBOL was an autoload before
+this file redefined it as a function.
+
+During preloading, the file name recorded is relative to the main Lisp
+directory. These file names are converted to absolute at startup.
+
+Value:
+(("/home/hobbes/nxhtml/autostart.el" nxhtml-install-dir
+ (defun . nxhtml-custom-autoload)
+ (defun . nxhtml-list-loaded-features)
+ (provide . nxhtml-autostart))
+ ("/home/hobbes/nxhtml/nxhtml/nxhtml-autoload.el"
+ (require . majmodpri)
+ (require . moz)
+ (defun . javascript-moz-setup)
+ nxhtml-src-dir
+ (provide . nxhtml-autoload))
+ ("/home/hobbes/nxhtml/related/moz.el"
+ (require . comint)
+ (require . cc-cmds)
+ moz-minor-mode-map moz-minor-mode
+ (t . moz-minor-mode)
+ (defun . moz-minor-mode)
+ (defun . run-mozilla)
+ moz-repl-name moz-input-separator moz-repl-host moz-repl-port moz-temporary-file
+ (defun . moz-temporary-file)
+ (defun . moz-send-region)
+ (defun . moz-send-defun)
+ (defun . moz-send-defun-and-go)
+ (defun . moz-save-buffer-and-send)
+ inferior-moz-buffer
+ (defun . inferior-moz-insert-moz-repl)
+ inferior-moz-mode-map inferior-moz-mode-map inferior-moz-mode-syntax-table inferior-moz-mode-abbrev-table inferior-moz-mode-abbrev-table
+ (t . inferior-moz-mode)
+ (defun . inferior-moz-mode)
+ (defun . inferior-moz-track-repl-name)
+ (defun . inferior-moz-self-insert-or-repl-name)
+ (defun . inferior-moz-input-sender)
+ (defun . inferior-moz-switch-to-mozilla)
+ (defun . inferior-moz-process)
+ (defun . inferior-moz-start-process)
+ (provide . moz))
+ ("/usr/share/emacs/23.0.93/lisp/progmodes/cc-cmds.elc"
+ (require . cc-defs)
+ (require . cc-vars)
+ (require . cc-engine)
+ c-fix-backslashes
+ (defun . c-indent-line)
+ (defun . c-newline-and-indent)
+ (defun . c-show-syntactic-information)
+ (defun . c-syntactic-information-on-region)
+ (defun . c-update-modeline)
+ (defun . c-toggle-syntactic-indentation)
+ (defun . c-toggle-auto-newline)
+ (defun . c-toggle-auto-state)
+ (defun . c-toggle-hungry-state)
+ (defun . c-toggle-auto-hungry-state)
+ (defun . c-toggle-electric-state)
+ (defun . c-electric-backspace)
+ (defun . c-hungry-delete-backwards)
+ (defun . c-hungry-backspace)
+ (defun . c-electric-delete-forward)
+ (defun . c-hungry-delete-forward)
+ (defun . c-electric-delete)
+ (defun . c-hungry-delete)
+ (defun . c-electric-pound)
+ (defun . c-point-syntax)
+ (defun . c-brace-newlines)
+ (defun . c-try-one-liner)
+ (defun . c-electric-brace)
+ (defun . c-electric-slash)
+ (defun . c-electric-star)
+ (defun . c-electric-semi&comma)
+ (defun . c-electric-colon)
+ (defun . c-electric-lt-gt)
+ (defun . c-electric-paren)
+ (defun . c-electric-continued-statement)
+ (defun . c-forward-into-nomenclature)
+ (defun . c-backward-into-nomenclature)
+ (defun . c-scope-operator)
+ (defun . c-in-function-trailer-p)
+ (defun . c-where-wrt-brace-construct)
+ (defun . c-backward-to-nth-BOF-{)
+ (defun . c-beginning-of-defun)
+ (defun . c-forward-to-nth-EOF-})
+ (defun . c-end-of-defun)
+ (defun . c-defun-name)
+ (defun . c-declaration-limits)
+ (defun . c-mark-function)
+ (defun . c-cpp-define-name)
+ (defun . c-in-comment-line-prefix-p)
+ (defun . c-narrow-to-comment-innards)
+ (defun . c-beginning-of-sentence-in-comment)
+ (defun . c-end-of-sentence-in-comment)
+ (defun . c-beginning-of-sentence-in-string)
+ (defun . c-end-of-sentence-in-string)
+ (defun . c-ascertain-preceding-literal)
+ (defun . c-ascertain-following-literal)
+ (defun . c-after-statement-terminator-p)
+ (defun . c-back-over-illiterals)
+ (defun . c-forward-over-illiterals)
+ (defun . c-one-line-string-p)
+ (defun . c-beginning-of-statement)
+ (defun . c-end-of-statement)
+ (defun . c-calc-comment-indent)
+ (defun . c-comment-indent)
+ (defun . c-outline-level)
+ (defun . c-up-conditional)
+ (defun . c-up-conditional-with-else)
+ (defun . c-down-conditional)
+ (defun . c-down-conditional-with-else)
+ (defun . c-backward-conditional)
+ (defun . c-forward-conditional)
+ (defun . c-indent-command)
+ (defun . c-indent-exp)
+ (defun . c-indent-defun)
+ (defun . c-indent-region)
+ (defun . c-fn-region-is-active-p)
+ (defun . c-indent-line-or-region)
+ c-progress-info
+ (defun . c-progress-init)
+ (defun . c-progress-update)
+ (defun . c-progress-fini)
+ (defun . c-backslash-region)
+ (defun . c-append-backslashes-forward)
+ (defun . c-delete-backslashes-forward)
+ c-auto-fill-prefix c-lit-limits c-lit-type
+ (defun . c-guess-fill-prefix)
+ (defun . c-mask-paragraph)
+ (defun . c-fill-paragraph)
+ (defun . c-do-auto-fill)
+ (defun . c-indent-new-comment-line)
+ (defun . c-comment-line-break-function)
+ (defun . c-context-line-break)
+ (defun . c-context-open-line)
+ (provide . cc-cmds))
+ ("/usr/share/emacs/23.0.93/lisp/progmodes/cc-engine.elc"
+ (require . cc-defs)
+ (require . cc-vars)
+ (defun . c-declare-lang-variables)
+ c++-template-syntax-table c-identifier-syntax-modifications c-identifier-syntax-table c-get-state-before-change-function c-before-font-lock-function c-symbol-start c-symbol-key c-nonsymbol-chars c-opt-identifier-concat-key c-identifier-start c-identifier-key c-string-escaped-newlines c-multiline-string-start-char c-opt-cpp-prefix c-anchored-cpp-prefix c-opt-cpp-start c-opt-cpp-macro-define-start c-opt-cpp-macro-define-id c-overloadable-operators-regexp c-opt-op-identifier-prefix c-nonsymbol-token-regexp c-assignment-op-regexp c-<>-multichar-token-regexp c-<-op-cont-regexp c->-op-cont-regexp c-stmt-delim-chars c-stmt-delim-chars-with-comma c-line-comment-starter c-comment-start-regexp c-block-comment-start-regexp c-literal-start-regexp c-doc-comment-start-regexp c-syntactic-ws-start c-syntactic-ws-end c-syntactic-eol c-at-vsemi-p-fn c-vsemi-status-unknown-p-fn c-paragraph-start c-paragraph-separate c-primitive-type-key c-type-prefix-key c-opt-type-modifier-key c-opt-type-component-key c-class-key c-brace-list-key c-other-decl-block-key c-other-decl-block-key-in-symbols-alist c-decl-hangon-key c-prefix-spec-kwds-re c-specifier-key c-not-decl-init-keywords c-opt-block-decls-with-vars-key c-colon-type-list-re c-opt-<>-sexp-key c-block-stmt-1-key c-block-stmt-2-key c-opt-block-stmt-key c-simple-stmt-key c-paren-stmt-key c-opt-asm-stmt-key c-case-kwds-regexp c-label-kwds-regexp c-opt-inexpr-brace-list-key c-decl-block-key c-opt-bitfield-key c-keywords-regexp c-keywords-obarray c-regular-keywords-regexp c-primary-expr-regexp c-decl-prefix-re c-decl-start-re c-decl-prefix-or-start-re c-cast-parens c-block-prefix-charset c-type-decl-prefix-key c-type-decl-suffix-key c-after-suffixed-type-decl-key c-after-suffixed-type-maybe-decl-key c-opt-type-concat-key c-opt-type-suffix-key c-known-type-key c-special-brace-lists c-recognize-knr-p c-recognize-typeless-decls c-recognize-<>-arglists c-recognize-paren-inits c-recognize-paren-inexpr-blocks c-opt-<>-arglist-start c-opt-<>-arglist-start-in-paren c-opt-postfix-decl-spec-key c-recognize-colon-labels c-label-prefix-re c-nonlabel-token-key c-opt-extra-label-key c-opt-friend-key c-opt-method-key c-type-decl-end-used c-hungry-delete-key c-electric-flag c-auto-newline
+ (defun . c-calculate-state)
+ c-in-literal-cache c-macro-start
+ (defun . c-query-and-set-macro-start)
+ (defun . c-query-macro-start)
+ (defun . c-beginning-of-macro)
+ (defun . c-end-of-macro)
+ (defun . c-forward-over-cpp-define-id)
+ (defun . c-forward-to-cpp-define-body)
+ (defun . c-syntactic-content)
+ (defun . c-shift-line-indentation)
+ (defun . c-keyword-sym)
+ (defun . c-keyword-member)
+ c-string-syntax c-string-syntax c-string-limit-regexp c-string-limit-regexp c-ws*-string-limit-regexp c-ws*-string-limit-regexp c-parsing-error
+ (defun . c-echo-parsing-error)
+ c-literal-faces
+ (defun . c-put-c-type-property)
+ (defun . c-clear-c-type-property)
+ (defun . c-debug-add-face)
+ (defun . c-debug-remove-face)
+ (defun . c-bos-push-state)
+ (defun . c-bos-pop-state)
+ (defun . c-bos-pop-state-and-retry)
+ (defun . c-bos-save-pos)
+ (defun . c-bos-restore-pos)
+ (defun . c-bos-save-error-info)
+ (defun . c-bos-report-error)
+ (defun . c-beginning-of-statement-1)
+ (defun . c-crosses-statement-barrier-p)
+ (defun . c-at-statement-start-p)
+ (defun . c-at-expression-start-p)
+ (defun . c-forward-single-comment)
+ (defun . c-forward-comments)
+ (defun . c-backward-single-comment)
+ (defun . c-backward-comments)
+ (defun . c-debug-sws-msg)
+ (defun . c-put-is-sws)
+ (defun . c-put-in-sws)
+ (defun . c-remove-is-sws)
+ (defun . c-remove-in-sws)
+ (defun . c-remove-is-and-in-sws)
+ (defun . c-invalidate-sws-region-after)
+ (defun . c-forward-sws)
+ (defun . c-backward-sws)
+ (defun . c-partial-ws-p)
+ c-state-cache c-state-cache-start c-state-cache-good-pos
+ (defun . c-invalidate-state-cache)
+ (defun . c-get-fallback-start-pos)
+ (defun . c-parse-state)
+ c-debug-parse-state
+ (defun . c-debug-parse-state)
+ (defun . c-toggle-parse-state-debug)
+ (defun . c-whack-state-before)
+ (defun . c-whack-state-after)
+ (defun . c-most-enclosing-brace)
+ (defun . c-least-enclosing-brace)
+ (defun . c-safe-position)
+ (defun . c-beginning-of-syntax)
+ (defun . c-on-identifier)
+ (defun . c-simple-skip-symbol-backward)
+ (defun . c-beginning-of-current-token)
+ (defun . c-end-of-current-token)
+ c-jump-syntax-balanced c-jump-syntax-balanced c-jump-syntax-unbalanced c-jump-syntax-unbalanced
+ (defun . c-forward-token-2)
+ (defun . c-backward-token-2)
+ (defun . c-forward-token-1)
+ (defun . c-backward-token-1)
+ (defun . c-syntactic-re-search-forward)
+ (defun . c-syntactic-skip-backward)
+ (defun . c-slow-in-literal)
+ (defun . c-fast-in-literal)
+ (defun . c-in-literal)
+ (defun . c-literal-limits)
+ (defun . c-literal-limits-fast)
+ (defun . c-collect-line-comments)
+ (defun . c-literal-type)
+ c-find-decl-syntactic-pos c-find-decl-match-pos
+ (defun . c-invalidate-find-decl-cache)
+ (defun . c-debug-put-decl-spot-faces)
+ (defun . c-debug-remove-decl-spot-faces)
+ (defun . c-find-decl-prefix-search)
+ (defun . c-find-decl-spots)
+ c-found-types
+ (defun . c-clear-found-types)
+ (defun . c-add-type)
+ (defun . c-unfind-type)
+ (defun . c-check-type)
+ (defun . c-list-found-types)
+ (defun . c-trim-found-types)
+ (defun . c-after-change-check-<>-operators)
+ c-promote-possible-types c-parse-and-markup-<>-arglists c-restricted-<>-arglists c-record-type-identifiers c-record-ref-identifiers c-last-identifier-range
+ (defun . c-record-type-id)
+ (defun . c-record-ref-id)
+ c-record-found-types
+ (defun . c-forward-keyword-prefixed-id)
+ (defun . c-forward-id-comma-list)
+ (defun . c-forward-keyword-clause)
+ (defun . c-forward-<>-arglist)
+ (defun . c-forward-<>-arglist-recur)
+ (defun . c-backward-<>-arglist)
+ (defun . c-forward-name)
+ (defun . c-forward-type)
+ (defun . c-fdoc-shift-type-backward)
+ (defun . c-forward-decl-or-cast-1)
+ (defun . c-forward-label)
+ (defun . c-forward-objc-directive)
+ (defun . c-beginning-of-inheritance-list)
+ (defun . c-in-method-def-p)
+ (defun . c-in-gcc-asm-p)
+ (defun . c-at-toplevel-p)
+ (defun . c-just-after-func-arglist-p)
+ (defun . c-in-knr-argdecl)
+ (defun . c-skip-conditional)
+ (defun . c-after-conditional)
+ (defun . c-after-special-operator-id)
+ (defun . c-backward-to-block-anchor)
+ (defun . c-backward-to-decl-anchor)
+ (defun . c-search-decl-header-end)
+ (defun . c-beginning-of-decl-1)
+ (defun . c-end-of-decl-1)
+ (defun . c-looking-at-decl-block)
+ (defun . c-search-uplist-for-classkey)
+ (defun . c-inside-bracelist-p)
+ (defun . c-looking-at-special-brace-list)
+ (defun . c-looking-at-bos)
+ (defun . c-looking-at-inexpr-block)
+ (defun . c-looking-at-inexpr-block-backward)
+ c-auto-newline-analysis
+ (defun . c-brace-anchor-point)
+ (defun . c-add-syntax)
+ (defun . c-append-syntax)
+ (defun . c-add-stmt-syntax)
+ (defun . c-add-class-syntax)
+ (defun . c-guess-continued-construct)
+ (t . c-guess-basic-syntax)
+ (defun . c-guess-basic-syntax)
+ (defun . c-evaluate-offset)
+ (defun . c-calc-offset)
+ (defun . c-get-offset)
+ (defun . c-get-syntactic-indentation)
+ (provide . cc-engine))
+ ("/usr/share/emacs/23.0.93/lisp/progmodes/cc-vars.elc"
+ (require . cc-defs)
+ (defun . c-constant-symbol)
+ c-style-variables c-fallback-style
+ (defun . c-set-stylevar-fallback)
+ (defun . defcustom-c-stylevar)
+ (defun . c-valid-offset)
+ c-strict-syntax-p c-echo-syntactic-information-p c-report-syntactic-errors c-basic-offset c-tab-always-indent c-insert-tab-function c-syntactic-indentation c-syntactic-indentation-in-macros c-comment-only-line-offset c-indent-comment-alist c-indent-comments-syntactically-p c-block-comment-prefix c-comment-prefix-regexp c-doc-comment-style c-ignore-auto-fill c-cleanup-list c-hanging-braces-alist c-max-one-liner-length c-hanging-colons-alist c-hanging-semi&comma-criteria c-backslash-column c-backslash-max-column c-auto-align-backslashes c-backspace-function c-delete-function c-require-final-newline c-electric-pound-behavior c-special-indent-hook c-label-minimum-indentation c-progress-interval c-objc-method-arg-min-delta-to-bracket c-objc-method-arg-unfinished-offset c-objc-method-parameter-offset c-default-style c-offsets-alist c-inside-block-syms c-inside-block-syms c-style-variables-are-local-p c-mode-hook c++-mode-hook objc-mode-hook java-mode-hook idl-mode-hook pike-mode-hook awk-mode-hook c-mode-common-hook c-initialization-hook c-enable-xemacs-performance-kludge-p c-old-style-variable-behavior
+ (defun . c-make-font-lock-extra-types-blurb)
+ c-font-lock-extra-types c++-font-lock-extra-types objc-font-lock-extra-types java-font-lock-extra-types idl-font-lock-extra-types pike-font-lock-extra-types c-file-style c-file-offsets c-indentation-style c-current-comment-prefix c-string-par-start c-string-par-separate c-sentence-end-with-esc-eol
+ (provide . cc-vars))
+ ("/usr/share/emacs/23.0.93/lisp/progmodes/cc-defs.elc"
+ (require . regexp-opt)
+ c-version c-version-sym c-version-sym c-buffer-is-cc-mode c-inside-eval-when-compile
+ (defun . cc-eval-when-compile)
+ (defun . c-point)
+ (defun . c-region-is-active-p)
+ (defun . c-set-region-active)
+ (defun . c-delete-and-extract-region)
+ (defun . c-safe)
+ (defun . c-int-to-char)
+ (defun . c-sentence-end)
+ (defun . c-default-value-sentence-end)
+ (defun . c-save-buffer-state)
+ (defun . c-tentative-buffer-changes)
+ (defun . c-tnt-chng-record-state)
+ (defun . c-tnt-chng-cleanup)
+ (defun . c-forward-syntactic-ws)
+ (defun . c-backward-syntactic-ws)
+ (defun . c-forward-sexp)
+ (defun . c-backward-sexp)
+ (defun . c-safe-scan-lists)
+ (defun . c-go-list-forward)
+ (defun . c-go-list-backward)
+ (defun . c-up-list-forward)
+ (defun . c-up-list-backward)
+ (defun . c-down-list-forward)
+ (defun . c-down-list-backward)
+ (defun . c-go-up-list-forward)
+ (defun . c-go-up-list-backward)
+ (defun . c-go-down-list-forward)
+ (defun . c-go-down-list-backward)
+ (defun . c-beginning-of-defun-1)
+ (defun . c-at-vsemi-p)
+ (defun . c-vsemi-status-unknown-p)
+ (defun . c-benign-error)
+ (defun . c-with-syntax-table)
+ (defun . c-skip-ws-forward)
+ (defun . c-skip-ws-backward)
+ c-langs-are-parametric
+ (defun . c-major-mode-is)
+ c-use-extents c-use-extents
+ (defun . c-put-char-property-fun)
+ (defun . c-put-char-property)
+ (defun . c-get-char-property)
+ (defun . c-clear-char-property-fun)
+ (defun . c-clear-char-property)
+ (defun . c-clear-char-properties)
+ (defun . c-clear-char-property-with-value-function)
+ (defun . c-clear-char-property-with-value)
+ (defun . c-put-overlay)
+ (defun . c-delete-overlay)
+ (defun . c-end-of-defun-1)
+ c-<-as-paren-syntax c-<-as-paren-syntax
+ (defun . c-mark-<-as-paren)
+ c->-as-paren-syntax c->-as-paren-syntax
+ (defun . c-mark->-as-paren)
+ (defun . c-intersect-lists)
+ (defun . c-lookup-lists)
+ (defun . c-langelem-sym)
+ (defun . c-langelem-pos)
+ (defun . c-langelem-col)
+ (defun . c-langelem-2nd-pos)
+ (defun . c-keep-region-active)
+ (defun . c-mode-symbol)
+ (defun . c-mode-var)
+ (defun . c-got-face-at)
+ (defun . c-face-name-p)
+ (defun . c-concat-separated)
+ (defun . c-make-keywords-re)
+ (defun . c-make-bare-char-alt)
+ (defun . c-regexp-opt)
+ (defun . c-regexp-opt-depth)
+ c-emacs-features c-alpha c-alpha c-alnum c-alnum c-digit c-digit c-upper c-upper c-lower c-lower
+ (defun . c-add-language)
+ c-lang-constants c-lang-const-expansion
+ (defun . c-get-current-file)
+ (defun . c-lang-defconst-eval-immediately)
+ (defun . c-lang-defconst)
+ (defun . c-define-lang-constant)
+ (defun . c-lang-const)
+ c-lang-constants-under-evaluation
+ (defun . c-get-lang-constant)
+ (defun . c-find-assignment-for-mode)
+ (defun . c-lang-major-mode-is)
+ (provide . cc-defs))
+ ("/home/hobbes/nxhtml/util/majmodpri.el" majmodpri:version majmodpri-idle-sort-timer
+ (defun . majmodpri-cancel-idle-sort)
+ (defun . majmodpri-start-idle-sort)
+ (defun . majmodpri-sort-lists-in-timer)
+ majmodpri-schwarzian-ordnum
+ (defun . majmodpri-schwarzian-in)
+ (defun . majmodpri-schwarzian-out)
+ majmodpri-no-nxml
+ (defun . majmodpri-priority)
+ (defun . majmodpri-compare-auto-modes)
+ (defun . majmodpri-sort-auto-mode-alist)
+ (defun . majmodpri-sort-magic-list)
+ (t . majmodpri-sort-lists)
+ (defun . majmodpri-sort-lists)
+ (t . majmodpri-apply)
+ (defun . majmodpri-apply)
+ (defun . majmodpri-sort-apply-to-current)
+ (t . majmodpri-apply-priorities)
+ (defun . majmodpri-apply-priorities)
+ majmodpri-mode-priorities majmodpri-lists-to-sort majmodpri-sort-after-load
+ (provide . majmodpri))
+ ("/home/hobbes/nxhtml/etc/schema/schema-path-patch.el" rncpp-this-dir
+ (defun . rncpp-get-nxml-schema-dir)
+ (defun . rncpp-patch-xhtml-loader))
+ ("/home/hobbes/nxhtml/nxhtml/nxhtml-menu.el" nxhtml-menu:version
+ (require . cl)
+ (require . cus-edit)
+ (require . dired)
+ (require . gimp)
+ (require . html-site)
+ (require . nxhtml-mode)
+ (require . css-color)
+ (require . flymake)
+ (require . flymake-php)
+ (require . flymake-js)
+ (require . udev-ecb)
+ (require . udev-cedet)
+ (require . udev-rinari)
+ (defun . nxhtml-nxhtml-in-buffer)
+ (defun . nxhtml-nxml-in-buffer)
+ (defun . nxhtml-html-in-buffer)
+ (defun . nxhtml-nxml-html-in-buffer)
+ (defun . nxhtml-this-file-can-have-toc)
+ (defun . nxhtml-buffer-possibly-local-viewable)
+ (defun . nxhtml-buffer-possibly-remote-viewable)
+ (defun . nxhtml-insert-menu-dynamically)
+ (defun . nxhtml-menu-image-file)
+ (defun . nxhtml-gimp-can-edit)
+ (t . nxhtml-edit-with-gimp)
+ (defun . nxhtml-edit-with-gimp)
+ (t . nxhtml-browse-file)
+ (defun . nxhtml-browse-file)
+ (t . nxhtml-browse-region)
+ (defun . nxhtml-browse-region)
+ nxhtml-browseable-buffer-file
+ (defun . nxhtml-save-browseable-temp-file)
+ nxhtml-minor-mode-menu-map nxhtml-minor-mode-map nxhtml-minor-mode
+ (defun . nxhtml-minor-mode)
+ nxhtml-minor-mode-modes
+ (defun . nxhtml-maybe-turn-on-minor-mode)
+ nxhtml-minor-mode-major-mode nxhtml-global-minor-mode
+ (t . nxhtml-global-minor-mode)
+ (defun . nxhtml-global-minor-mode)
+ nxhtml-global-minor-mode-buffers
+ (defun . nxhtml-global-minor-mode-enable-in-buffers)
+ (defun . nxhtml-global-minor-mode-check-buffers)
+ (defun . nxhtml-global-minor-mode-cmhh)
+ (defun . nxhtml-docfile)
+ (defun . nxhtml-docfile-url)
+ (defun . nxhtml-overview)
+ (defun . nxhtml-tutorials)
+ (defun . nxhtml-custom-valfaced)
+ (defun . nxhtml-custom-insert-nxhtml-row)
+ (defun . nxhtml-custom-h1)
+ (defun . widget-button-notify)
+ (defun . widget-insert-link)
+ (defun . widget-insert-button)
+ (defun . nxhtml-custom-url-link)
+ (defun . nxhtml-custom-describe-defun)
+ (defun . custom-set-and-prepare-save)
+ (defun . nxhtml-welcome)
+ nxhtml-skip-welcome
+ (defun . nxhtml-skip-welcome)
+ (defun . nxhtml-say-welcome-unless-skip)
+ (provide . nxhtml-menu))
+ ("/home/hobbes/nxhtml/util/udev-rinari.el" udev-rinari:version
+ (require . udev)
+ udev-rinari-dir udev-rinari-load-rinari udev-rinari-steps udev-rinari-update-buffer
+ (defun . udev-rinari-buffer-name)
+ (defun . udev-rinari-check-conflicts)
+ (defun . udev-rinari-setup-when-finished)
+ (t . udev-rinari-update)
+ (defun . udev-rinari-update)
+ udev-rinari-fetch-buffer
+ (defun . udev-rinari-fetch)
+ udev-rinari-diff-file udev-rinari-fetch-diff-buffer
+ (defun . udev-rinari-fetch-diff)
+ (defun . udev-rinari-check-diff)
+ (provide . udev-rinari))
+ ("/home/hobbes/nxhtml/util/udev-cedet.el" udev-cedet:version
+ (require . udev)
+ udev-cedet-dir
+ (defun . udev-cedet-load-cedet)
+ udev-cedet-load-cedet udev-cedet-steps
+ (defun . udev-cedet-buffer-name)
+ udev-cedet-update-buffer
+ (defun . udev-cedet-setup-when-finished)
+ (t . udev-cedet-update)
+ (defun . udev-cedet-update)
+ (defun . udev-cedet-fetch)
+ (defun . udev-cedet-cvs-dir)
+ (defun . udev-cedet-fetch-diff)
+ (defun . udev-cedet-check-diff)
+ (defun . udev-cedet-install-add-debug)
+ (defun . udev-cedet-install)
+ (provide . udev-cedet))
+ ("/home/hobbes/nxhtml/util/udev-ecb.el" udev-ecb:version
+ (require . udev)
+ udev-ecb-dir
+ (defun . udev-ecb-load-ecb)
+ udev-ecb-load-ecb udev-ecb-steps
+ (defun . udev-ecb-buffer-name)
+ udev-ecb-update-buffer
+ (defun . udev-ecb-check-cedet)
+ (defun . udev-ecb-setup-when-finished)
+ (t . udev-ecb-update)
+ (defun . udev-ecb-update)
+ (defun . udev-ecb-fetch)
+ (defun . udev-ecb-cvs-dir)
+ (defun . udev-ecb-fetch-diff)
+ (defun . udev-ecb-check-diff)
+ (defun . udev-ecb-install)
+ (provide . udev-ecb))
+ ("/home/hobbes/nxhtml/util/udev.el" udev:version
+ (require . cl)
+ (require . cus-edit)
+ udev-log-buffer udev-is-log-buffer
+ (defun . udev-check-is-log-buffer)
+ udev-this-chain udev-last-error
+ (defun . udev-set-last-error)
+ (defun . udev-chain)
+ (defun . udev-this-step)
+ (defun . udev-goto-next-step)
+ (defun . udev-num-steps)
+ (defun . udev-step-num)
+ (defun . udev-finish-function)
+ udev-control-mode-map udev-control-mode-map udev-control-mode-syntax-table udev-control-mode-abbrev-table udev-control-mode-abbrev-table
+ (defun . udev-control-mode)
+ (defun . udev-call-first-step)
+ udev-step-keymap
+ (defun . udev-step-at-point)
+ (defun . udev-rerun-this-step)
+ (defun . udev-continue-from-this-step)
+ (defun . udev-goto-this-step-source)
+ (defun . udev-call-this-step)
+ (defun . udev-call-next-step)
+ udev-orig-sentinel
+ (defun . udev-compilation-sentinel)
+ (defun . udev-set-compilation-end-message)
+ udev-continue-on-error-function
+ (defun . udev-buffer-name)
+ udev-this-dir
+ (defun . udev-batch-compile)
+ (defun . udev-fetch-cvs-diff)
+ (defun . udev-cvs-diff-continue)
+ (defun . udev-check-cvs-diff)
+ (defun . udev-send-buffer-process)
+ (provide . udev))
+ ("/home/hobbes/nxhtml/related/flymake-js.el"
+ (require . flymake)
+ flymake-allowed-js-file-name-masks flymake-js-err-line-pattern-re flymake-js-rhino-jar flymake-js-rhino-js flymake-js-engine
+ (defun . flymake-js-init)
+ (defun . flymake-js-load)
+ flymake-js-has-engine
+ (defun . flymake-js-has-engine)
+ (defun . flymake-js-turn-on)
+ flymake-js-on
+ (provide . flymake-js))
+ ("/home/hobbes/nxhtml/related/flymake-php.el"
+ (require . flymake)
+ flymake-allowed-php-file-name-masks flymake-php-err-line-pattern-re
+ (defun . flymake-php-init)
+ flymake-php-has-engine
+ (defun . flymake-php-has-engine)
+ (defun . flymake-php-turn-on)
+ flymake-php-on
+ (defun . flymake-php-load)
+ (provide . flymake-php))
+ ("/usr/share/emacs/23.0.93/lisp/progmodes/flymake.elc" flymake-is-running flymake-timer flymake-last-change-time flymake-check-start-time flymake-check-was-interrupted flymake-err-info flymake-new-err-info
+ (defun . flymake-makehash)
+ (defun . flymake-float-time)
+ (defun . flymake-replace-regexp-in-string)
+ (defun . flymake-split-string)
+ (defun . flymake-get-temp-dir)
+ (defun . flymake-line-beginning-position)
+ (defun . flymake-line-end-position)
+ (defun . flymake-posn-at-point-as-event)
+ (defun . flymake-popup-menu)
+ (defun . flymake-make-emacs-menu)
+ flymake-log-level
+ (defun . flymake-log)
+ (defun . flymake-ins-after)
+ (defun . flymake-set-at)
+ flymake-processes flymake-output-residual flymake-allowed-file-name-masks
+ (defun . flymake-get-file-name-mode-and-masks)
+ (defun . flymake-can-syntax-check-file)
+ (defun . flymake-get-init-function)
+ (defun . flymake-get-cleanup-function)
+ (defun . flymake-get-real-file-name-function)
+ flymake-find-buildfile-cache
+ (defun . flymake-get-buildfile-from-cache)
+ (defun . flymake-add-buildfile-to-cache)
+ (defun . flymake-clear-buildfile-cache)
+ (defun . flymake-find-buildfile)
+ (defun . flymake-fix-file-name)
+ (defun . flymake-same-files)
+ flymake-master-file-dirs flymake-master-file-count-limit
+ (defun . flymake-find-possible-master-files)
+ (defun . flymake-master-file-compare)
+ flymake-check-file-limit
+ (defun . flymake-check-patch-master-file-buffer)
+ (defun . flymake-replace-region)
+ (defun . flymake-read-file-to-temp-buffer)
+ (defun . flymake-copy-buffer-to-temp-buffer)
+ (defun . flymake-check-include)
+ (defun . flymake-find-buffer-for-file)
+ (defun . flymake-create-master-file)
+ (defun . flymake-save-buffer-in-file)
+ (defun . flymake-save-string-to-file)
+ (defun . flymake-read-file-to-string)
+ (defun . flymake-process-filter)
+ (defun . flymake-process-sentinel)
+ (defun . flymake-post-syntax-check)
+ (defun . flymake-parse-output-and-residual)
+ (defun . flymake-parse-residual)
+ (defun . flymake-er-make-er)
+ (defun . flymake-er-get-line)
+ (defun . flymake-er-get-line-err-info-list)
+ (defun . flymake-ler-file)
+ (defun . flymake-ler-line)
+ (defun . flymake-ler-type)
+ (defun . flymake-ler-text)
+ (defun . flymake-ler-full-file)
+ (defun . flymake-ler-p)
+ (defun . copy-flymake-ler)
+ (defun . flymake-ler-make-ler)
+ (defun . flymake-ler-set-file)
+ (defun . flymake-ler-set-full-file)
+ (defun . flymake-ler-set-line)
+ (defun . flymake-get-line-err-count)
+ (defun . flymake-get-err-count)
+ (defun . flymake-fix-line-numbers)
+ (defun . flymake-highlight-err-lines)
+ (defun . flymake-overlay-p)
+ (defun . flymake-make-overlay)
+ (defun . flymake-delete-own-overlays)
+ (defun . flymake-region-has-flymake-overlays)
+ (defface . flymake-errline)
+ (defface . flymake-warnline)
+ (defun . flymake-highlight-line)
+ (defun . flymake-parse-err-lines)
+ (defun . flymake-split-output)
+ (defun . flymake-reformat-err-line-patterns-from-compile-el)
+ (require . compile)
+ flymake-err-line-patterns
+ (defun . flymake-parse-line)
+ (defun . flymake-find-err-info)
+ (defun . flymake-line-err-info-is-less-or-equal)
+ (defun . flymake-add-line-err-info)
+ (defun . flymake-add-err-info)
+ (defun . flymake-get-project-include-dirs-imp)
+ flymake-get-project-include-dirs-function
+ (defun . flymake-get-project-include-dirs)
+ (defun . flymake-get-system-include-dirs)
+ flymake-project-include-dirs-cache
+ (defun . flymake-get-project-include-dirs-from-cache)
+ (defun . flymake-add-project-include-dirs-to-cache)
+ (defun . flymake-clear-project-include-dirs-cache)
+ (defun . flymake-get-include-dirs)
+ (defun . flymake-safe-delete-file)
+ (defun . flymake-safe-delete-directory)
+ flymake-compilation-prevents-syntax-check
+ (defun . flymake-start-syntax-check)
+ (defun . flymake-start-syntax-check-process)
+ (defun . flymake-kill-process)
+ (defun . flymake-stop-all-syntax-checks)
+ (defun . flymake-compilation-is-running)
+ (defun . flymake-compile)
+ flymake-no-changes-timeout
+ (defun . flymake-on-timer-event)
+ (defun . flymake-current-line-no)
+ (defun . flymake-count-lines)
+ (defun . flymake-display-err-menu-for-current-line)
+ (defun . flymake-make-err-menu-data)
+ (defun . flymake-goto-file-and-line)
+ flymake-mode-line flymake-mode-line-e-w flymake-mode-line-status
+ (defun . flymake-report-status)
+ (defun . flymake-display-warning)
+ flymake-gui-warnings-enabled
+ (defun . flymake-report-fatal-status)
+ flymake-start-syntax-check-on-find-file flymake-mode
+ (t . flymake-mode)
+ (defun . flymake-mode)
+ (t . flymake-mode-on)
+ (defun . flymake-mode-on)
+ (t . flymake-mode-off)
+ (defun . flymake-mode-off)
+ flymake-start-syntax-check-on-newline
+ (defun . flymake-after-change-function)
+ (defun . flymake-after-save-hook)
+ (defun . flymake-kill-buffer-hook)
+ (defun . flymake-find-file-hook)
+ (defun . flymake-get-first-err-line-no)
+ (defun . flymake-get-last-err-line-no)
+ (defun . flymake-get-next-err-line-no)
+ (defun . flymake-get-prev-err-line-no)
+ (defun . flymake-skip-whitespace)
+ (defun . flymake-goto-line)
+ (defun . flymake-goto-next-error)
+ (defun . flymake-goto-prev-error)
+ (defun . flymake-patch-err-text)
+ (defun . flymake-create-temp-inplace)
+ (defun . flymake-create-temp-with-folder-structure)
+ (defun . flymake-delete-temp-directory)
+ flymake-temp-source-file-name flymake-master-file-name flymake-temp-master-file-name flymake-base-dir
+ (defun . flymake-init-create-temp-buffer-copy)
+ (defun . flymake-simple-cleanup)
+ (defun . flymake-get-real-file-name)
+ (defun . flymake-get-full-patched-file-name)
+ (defun . flymake-get-full-nonpatched-file-name)
+ (defun . flymake-init-find-buildfile-dir)
+ (defun . flymake-init-create-temp-source-and-master-buffer-copy)
+ (defun . flymake-master-cleanup)
+ (defun . flymake-get-syntax-check-program-args)
+ (defun . flymake-get-make-cmdline)
+ (defun . flymake-get-ant-cmdline)
+ (defun . flymake-simple-make-init-impl)
+ (defun . flymake-simple-make-init)
+ (defun . flymake-master-make-init)
+ (defun . flymake-find-make-buildfile)
+ (defun . flymake-master-make-header-init)
+ (defun . flymake-simple-make-java-init)
+ (defun . flymake-simple-ant-java-init)
+ (defun . flymake-simple-java-cleanup)
+ (defun . flymake-perl-init)
+ (defun . flymake-php-init)
+ (defun . flymake-get-tex-args)
+ (defun . flymake-simple-tex-init)
+ (defun . flymake-master-tex-init)
+ (defun . flymake-get-include-dirs-dot)
+ (defun . flymake-xml-init)
+ (provide . flymake))
+ ("/home/hobbes/nxhtml/util/css-color.el" css-color:version
+ (require . cl)
+ (defun . css-color-turn-on-in-buffer)
+ css-color-mode-major-mode css-color-global-mode
+ (t . css-color-global-mode)
+ (defun . css-color-global-mode)
+ css-color-global-mode-buffers
+ (defun . css-color-global-mode-enable-in-buffers)
+ (defun . css-color-global-mode-check-buffers)
+ (defun . css-color-global-mode-cmhh)
+ css-color-hex-chars css-color-hex-re css-color-hsl-re css-color-rgb-re css-color-html-colors css-color-html-re css-color-color-re css-color-keywords css-color-mode
+ (t . css-color-mode)
+ (defun . css-color-mode)
+ (defun . css-color-font-lock-hook-fun)
+ css-color-map css-color-generic-map
+ (defun . css-color-pal-lumsig)
+ (defun . css-color-foreground-color)
+ (defun . css-color-normalize-hue)
+ (defun . css-color-within-bounds)
+ (defun . css-color-hex-to-rgb)
+ (defun . css-color-hex-to-hsv)
+ (defun . css-color-rgb-to-hex)
+ (defun . css-color-rgb-to-hsv)
+ (defun . css-color-rgb-to-hsl)
+ (defun . css-color-hsv-to-hsl)
+ (defun . css-color-hsv-to-hex)
+ (defun . css-color-hsv-to-rgb)
+ (defun . css-color-hsv-to-prop-hexstring)
+ (defun . css-color-hsl-to-rgb-fractions)
+ (defun . css-color-hsl-to-rgb)
+ (defun . css-color-hsl-to-hex)
+ (defun . css-color-hue-to-rgb)
+ (defun . css-color-parse-hsl)
+ (defun . css-color-inchue)
+ (defun . css-color-incsat)
+ (defun . css-color-incval)
+ (defun . css-color-hexval-beginning)
+ (defun . css-color-replcolor-at-p)
+ (defun . css-color-get-color-at-point)
+ (defun . css-color-adj-hue-at-p)
+ (defun . css-color-adj-saturation-at-p)
+ (defun . css-color-adj-value-at-p)
+ (defun . css-color-what-channel)
+ (defun . css-color-adjust-hex-at-p)
+ (defun . css-color-up)
+ (defun . css-color-down)
+ (defun . css-color-hue-up)
+ (defun . css-color-hue-down)
+ (defun . css-color-saturation-up)
+ (defun . css-color-saturation-down)
+ (defun . css-color-value-up)
+ (defun . css-color-value-down)
+ (defun . css-color-num-up)
+ (defun . css-color-num-down)
+ (defun . css-color-beginning-of-color)
+ (defun . css-color-end-of-color)
+ (defun . css-color-color-info)
+ css-color-type-circle
+ (defun . css-color-next-type)
+ (defun . css-color-cycle-type)
+ (defun . css-color-string-hex-to-hsl)
+ (defun . css-color-string-hsl-to-rgb)
+ (defun . css-color-string-rgb-to-name)
+ (defun . css-color-string-name-to-hex)
+ (defun . css-color-string-rgb-to-hex)
+ (defun . css-color-string-hsl-to-hex)
+ (defun . css-color-next-channel)
+ (defun . css-color-hexify-anystring)
+ (defun . css-color-toggle-percentage)
+ css-color-fg-history css-color-bg-history
+ (defun . css-color-test)
+ (defun . css-color-run-tests)
+ (provide . css-color))
+ ("/home/hobbes/nxhtml/nxhtml/nxhtml-mode.el"
+ (require . mumamo)
+ (require . cl)
+ (require . appmenu-fold)
+ (require . fold-dwim)
+ (require . typesetter)
+ (require . button)
+ (require . loadhist)
+ (require . nxml-mode)
+ (require . rngalt)
+ (require . url-parse)
+ (require . url-expand)
+ (require . popcmp)
+ (require . html-imenu)
+ (require . tidy-xhtml)
+ (require . html-quote)
+ (defun . nxhtml-version)
+ (defun . nxhtml-setup-for-fold-dwim)
+ (defun . nxhtml-outline-level)
+ (defun . nxhtml-hs-forward-element)
+ nxhtml-use-imenu nxhtml-default-encoding
+ (defun . nxhtml-insert-empty-frames-page)
+ (defun . nxhtml-insert-empty-page)
+ (defun . nxhtml-empty-page-completion)
+ nxhtml-mode-hook
+ (defun . nxhtml-help)
+ nxhtml-current-validation-header tidy-menu-symbol
+ (defun . tidy-menu-symbol)
+ (defun . nxhtml-change-mode)
+ nxhtml-heading-element-name-regexp nxhtml-mode-map nxhtml-mode-syntax-table nxhtml-mode-abbrev-table nxhtml-mode-abbrev-table
+ (t . nxhtml-mode)
+ (defun . nxhtml-mode)
+ (defun . nxhtml-quote-html)
+ nxhtml-single-tags
+ (defun . nxthml-is-single-tag)
+ nxhtml-help-attribute-name nxhtml-help-attribute-name-tag nxhtml-help-tag
+ (t . nxhtml-short-tag-help)
+ (defun . nxhtml-short-tag-help)
+ nxhtml-no-single-tags nxhtml-no-end-tags nxhtml-predicate-error
+ (defun . nxhtml-find-ids)
+ (defun . nxhtml-read-url)
+ (defun . nxhtml-read-url-type)
+ nxhtml-read-url-history nxhtml-read-web-url-history nxhtml-read-mail-url-history nxhtml-in-xml-attribute-value-regex
+ (defun . nxhtml-mailto-predicate)
+ nxhtml-image-completion-pattern
+ (defun . nxhtml-image-url-predicate)
+ nxhtml-css-completion-pattern
+ (defun . nxhtml-css-url-predicate)
+ nxhtml-script-completion-pattern
+ (defun . nxhtml-script-url-predicate)
+ (defun . nxhtml-coding-systems-complete)
+ nxhtml-in-proc-instr-back-regex nxhtml-in-proc-instr-forw-regex rngalt-in-pre-attribute-value-regex
+ (defun . nxhtml-check-where)
+ nxhtml-tag-sets nxhtml-attr-sets
+ (defun . nxhtml-complete-last-try)
+ (defun . nxhtml-img-tag-do-also)
+ (defun . nxhtml-redisplay-complete)
+ (defun . nxhtml-read-from-minibuffer)
+ (defun . nxhtml-meta-tag-do-also)
+ (defun . nxhtml-style-tag-do-also)
+ (defun . nxhtml-script-tag-do-also)
+ (defun . nxhtml-link-tag-do-also)
+ (defun . nxhtml-input-tag-do-also)
+ (defun . nxhtml-do-also-value)
+ (defun . nxhtml-form-tag-do-also)
+ nxhtml-complete-tag-do-also
+ (defun . nxhtml-complete-tag-do-also)
+ (defun . nxhtml-turn-onoff-tag-do-also)
+ nxhtml-tag-do-also
+ (defun . nxhtml-tag-do-also-toggle)
+ (defun . nxhtml-check-tag-do-also)
+ nxhtml-validation-header-mode
+ (t . nxhtml-validation-header-mode)
+ (defun . nxhtml-validation-header-mode)
+ (defun . nxhtml-can-insert-page-here)
+ (defun . nxhtml-complete-first-try)
+ (defun . nxhtml-completing-read-tag)
+ (defun . nxhtml-add-required-to-attr-set)
+ (defun . nxhtml-get-tag-specific-attr-help)
+ nxhtml-in-start-tag-regex
+ (defun . nxhtml-completing-read-attribute-name)
+ (defun . nxhtml-completing-read-attribute-value)
+ (defun . nxhtml-read-link-type)
+ (defun . nxhtml-read-link-media)
+ (defun . nxhtml-read-link-rel)
+ (defun . nxhtml-read-meta-name)
+ (defun . nxhtml-read-meta-content)
+ (defun . nxhtml-read-meta-scheme)
+ (defun . nxhtml-read-meta-http-equiv)
+ nxhtml-validation-headers nxhtml-default-validation-header
+ (defun . nxhtml-must-have-validation-headers)
+ nxhtml-set-validation-header-hist nxhtml-guess-validation-header-alist
+ (defun . nxhtml-guess-validation-header)
+ (defun . nxhtml-open-dir-saved-validation-headers)
+ (defun . nxhtml-get-saved-validation-header)
+ (defun . nxhtml-remove-saved-validation-header)
+ (defun . nxhtml-save-validation-header)
+ (defun . nxhtml-update-saved-validation-header)
+ (defun . nxhtml-get-default-validation-header)
+ (defun . nxhtml-set-validation-header)
+ (defun . nxhtml-apply-validation-header)
+ (defun . nxhtml-update-validation-header)
+ (defun . nxhtml-vhm-change-major)
+ (defun . nxhtml-recheck-validation-header)
+ (defun . nxhtml-validation-header-empty)
+ (defun . nxhtml-turn-on-validation-header-mode)
+ (defun . nxhtml-vhm-mumamo-change-major)
+ (defun . nxhtml-vhm-mumamo-after-change-major)
+ nxhtml-validation-headers-check nxhtml-validation-header-mumamo-modes
+ (defun . nxhtml-add-validation-header-if-mumamo)
+ nxhtml-validation-header-if-mumamo
+ (defun . nxhtml-validation-header-if-mumamo-toggle)
+ (defun . nxhtml-warnings-are-visible)
+ nxhtml-old-rng-error-face
+ (defun . nxhtml-toggle-visible-warnings)
+ nxml-untag-select
+ (defun . nxml-untag-element)
+ (defun . nxhtml-rollover-insert-2v)
+ (provide . nxhtml-mode))
+ ("/home/hobbes/nxhtml/nxhtml/html-quote.el" html-quote-html
+ (defun . html-quote-html-char)
+ (defun . html-quote-html-string)
+ (provide . html-quote))
+ ("/home/hobbes/nxhtml/nxhtml/tidy-xhtml.el" tidy-xhtml:version
+ (require . cl)
+ (require . ediff)
+ (require . mumamo)
+ (require . html-site)
+ (require . easymenu)
+ (require . compile)
+ (require . cus-edit)
+ (require . help-mode)
+ (defun . tidy-xemacs-p)
+ (defun . tidy-windows-p)
+ (defun . tidy-x-event-function)
+ (defun . tidy-x-event-object)
+ (defun . tidy-x-find-menu-item)
+ (defun . tidy-x-get-popup-menu-response)
+ (defun . tidy-x-make-event)
+ (defun . tidy-x-misc-user-event-p)
+ tidy-warnings tidy-errors tidy-message tidy-batch-last-file tidy-default-config-file tidy-config-file-parsed tidy-config-file tidy-shell-program tidy-temp-directory tidy-menu-lock tidy-menu-x-position tidy-debug
+ (defun . tidy-toggle-debug)
+ tidy-options-alist
+ (defun . tidy-build-options-alist)
+ tidy-xhtml-values
+ (defun . tidy-xhtml-options-ok)
+ (defun . tidy-show-xhtml-options)
+ (defun . tidy-set-xhtml-options)
+ current-menubar
+ (defun . tidy-menu-position)
+ (defun . tidy-menu-lock)
+ (defun . tidy-menu-lookup)
+ tidy-menu tidy-menu-position tidy-menu-state
+ (defun . tidy-menu-position)
+ (defun . tidy-menu-lock)
+ (defun . tidy-menu-lookup)
+ (defun . tidy-set)
+ (defun . tidy-boolean-entry)
+ (defun . tidy-list-entry)
+ (defun . tidy-set-string)
+ (defun . tidy-set-integer)
+ (defun . tidy-string-entry)
+ (defun . tidy-integer-entry)
+ (defun . tidy-exe-found)
+ tidy-top-menu tidy-newline-menu tidy-doctype-menu tidy-emacs-encoding-lbl
+ (defun . tidy-create-encoding-menu)
+ tidy-output-encoding-menu tidy-menu-symbol
+ (t . tidy-build-menu)
+ (defun . tidy-build-menu)
+ (defun . event-point)
+ (defun . tidy-describe-this-option-mouse)
+ (defun . tidy-describe-this-option)
+ (defun . tidy-quit-describe-options)
+ (defun . tidy-current-line)
+ (defun . tidy-describe-options)
+ (defun . tidy-parse-config-file)
+ (defun . tidy-save-settings)
+ tidy-markup
+ (defun . tidy-set-buffer-unmodified)
+ tidy-encodings-mime-charset-list
+ (defun . tidy-get-buffer-encoding)
+ (defun . tidy-get-tidy-encoding)
+ (defun . tidy-temp-config-file)
+ tidy-output-buf-name tidy-tidied-buffer
+ (defun . tidy-check-is-tidied)
+ tidy-control-buffer-name
+ (defun . tidy-buffer)
+ (defun . tidy-after-ediff)
+ (defun . tidy-ediff-buffers)
+ (defun . tidy-remove-ctrl-m)
+ tidy-html-files-re
+ (defun . tidy-is-html-file)
+ (defun . tidy-contains)
+ tidy-tree-files
+ (defun . tidy-tree-next)
+ (defun . tidy-tree)
+ (defun . tidy-html-site)
+ (defun . tidy-batch-sentinel)
+ (defun . tidy-batch-output-filter)
+ (defun . tidy-batch)
+ (defun . wab-compilation-button-at)
+ (defun . wab-click)
+ wab-errors-supress
+ (defun . wab-fb-errmsg)
+ (defun . wab-fb-helper)
+ wab-button-list
+ (defun . wab-fb)
+ (defun . wab-backward)
+ (defun . wab-forward)
+ wab-compilation-mode-map wab-compilation-mode-syntax-table wab-compilation-mode-abbrev-table wab-compilation-mode-abbrev-table
+ (defun . wab-compilation-mode)
+ tidy-menu-mode-map tidy-menu-mode
+ (defun . tidy-menu-mode)
+ (provide . tidy-xhtml))
+ ("/usr/share/emacs/23.0.93/lisp/ediff.elc" ediff-version ediff-date
+ (provide . ediff)
+ (require . ediff-init)
+ (require . ediff-mult)
+ ediff-use-last-dir ediff-last-dir-A ediff-last-dir-B ediff-last-dir-C ediff-last-dir-ancestor ediff-last-merge-autostore-dir
+ (defun . ediff-set-read-only-in-buf-A)
+ (defun . ediff-get-default-file-name)
+ (t . ediff-files)
+ (defun . ediff-files)
+ (t . ediff-files3)
+ (defun . ediff-files3)
+ (defun . ediff3)
+ (defun . ediff-find-file)
+ (defun . ediff-files-internal)
+ (defun . ediff)
+ (t . ediff-backup)
+ (defun . ediff-backup)
+ (t . ediff-buffers)
+ (defun . ediff-buffers)
+ (defun . ebuffers)
+ (t . ediff-buffers3)
+ (defun . ediff-buffers3)
+ (defun . ebuffers3)
+ (defun . ediff-buffers-internal)
+ (defun . ediff-get-default-directory-name)
+ (t . ediff-directories)
+ (defun . ediff-directories)
+ (defun . edirs)
+ (t . ediff-directory-revisions)
+ (defun . ediff-directory-revisions)
+ (defun . edir-revisions)
+ (t . ediff-directories3)
+ (defun . ediff-directories3)
+ (defun . edirs3)
+ (t . ediff-merge-directories)
+ (defun . ediff-merge-directories)
+ (defun . edirs-merge)
+ (t . ediff-merge-directories-with-ancestor)
+ (defun . ediff-merge-directories-with-ancestor)
+ (t . ediff-merge-directory-revisions)
+ (defun . ediff-merge-directory-revisions)
+ (defun . edir-merge-revisions)
+ (t . ediff-merge-directory-revisions-with-ancestor)
+ (defun . ediff-merge-directory-revisions-with-ancestor)
+ (defun . edir-merge-revisions-with-ancestor)
+ (defun . edirs-merge-with-ancestor)
+ (defun . ediff-directories-internal)
+ (defun . ediff-directory-revisions-internal)
+ (t . ediff-windows-wordwise)
+ (defun . ediff-windows-wordwise)
+ (t . ediff-windows-linewise)
+ (defun . ediff-windows-linewise)
+ (defun . ediff-windows)
+ (t . ediff-regions-wordwise)
+ (defun . ediff-regions-wordwise)
+ (t . ediff-regions-linewise)
+ (defun . ediff-regions-linewise)
+ (defun . ediff-regions-internal)
+ (defun . ediff-merge)
+ (defun . ediff-merge-on-startup)
+ (t . ediff-merge-files)
+ (defun . ediff-merge-files)
+ (t . ediff-merge-files-with-ancestor)
+ (defun . ediff-merge-files-with-ancestor)
+ (defun . ediff-merge-with-ancestor)
+ (t . ediff-merge-buffers)
+ (defun . ediff-merge-buffers)
+ (t . ediff-merge-buffers-with-ancestor)
+ (defun . ediff-merge-buffers-with-ancestor)
+ (t . ediff-merge-revisions)
+ (defun . ediff-merge-revisions)
+ (t . ediff-merge-revisions-with-ancestor)
+ (defun . ediff-merge-revisions-with-ancestor)
+ (t . ediff-patch-file)
+ (defun . ediff-patch-file)
+ (t . ediff-patch-buffer)
+ (defun . ediff-patch-buffer)
+ (defun . epatch)
+ (defun . epatch-buffer)
+ (t . ediff-revision)
+ (defun . ediff-revision)
+ (defun . erevision)
+ (defun . ediff-load-version-control)
+ (t . ediff-version)
+ (defun . ediff-version)
+ (t . ediff-documentation)
+ (defun . ediff-documentation)
+ (require . ediff-util))
+ ("/usr/share/emacs/23.0.93/lisp/ediff-util.elc"
+ (provide . ediff-util)
+ ediff-after-quit-hook-internal
+ (require . ediff-init)
+ (require . ediff-help)
+ (require . ediff-mult)
+ (require . ediff-wind)
+ (require . ediff-diff)
+ (require . ediff-merg)
+ (defun . ediff-mode)
+ ediff-mode-map
+ (defun . ediff-set-keys)
+ (defun . ediff-reload-keymap)
+ (defun . ediff-setup-keymap)
+ (defun . ediff-setup)
+ (defun . ediff-setup-control-buffer)
+ (defun . ediff-arrange-autosave-in-merge-jobs)
+ (defun . ediff-update-diffs)
+ (defun . ediff-revert-buffers-then-recompute-diffs)
+ (defun . ediff-recenter)
+ (defun . ediff-recenter-one-window)
+ (defun . ediff-recenter-ancestor)
+ (defun . ediff-toggle-split)
+ (defun . ediff-toggle-hilit)
+ (defun . ediff-toggle-autorefine)
+ (defun . ediff-show-ancestor)
+ (defun . ediff-make-or-kill-fine-diffs)
+ (defun . ediff-toggle-help)
+ (defun . ediff-toggle-read-only)
+ (defun . ediff-maybe-checkout)
+ (defun . ediff-file-checked-out-p)
+ (defun . ediff-file-checked-in-p)
+ (defun . ediff-file-compressed-p)
+ (defun . ediff-swap-buffers)
+ (defun . ediff-toggle-wide-display)
+ (t . ediff-toggle-multiframe)
+ (defun . ediff-toggle-multiframe)
+ (t . ediff-toggle-use-toolbar)
+ (defun . ediff-toggle-use-toolbar)
+ (defun . ediff-kill-bottom-toolbar)
+ (defun . ediff-make-bottom-toolbar)
+ (defun . ediff-toggle-show-clashes-only)
+ (defun . ediff-toggle-skip-changed-regions)
+ (defun . ediff-toggle-narrow-region)
+ (defun . ediff-visible-region)
+ (defun . ediff-operate-on-windows)
+ (defun . ediff-scroll-vertically)
+ (defun . ediff-scroll-horizontally)
+ (defun . ediff-position-region)
+ (defun . ediff-get-lines-to-region-end)
+ (defun . ediff-get-lines-to-region-start)
+ (defun . ediff-get-region-size-coefficient)
+ (defun . ediff-next-difference)
+ (defun . ediff-previous-difference)
+ (defun . ediff-jump-to-difference)
+ (defun . ediff-jump-to-difference-at-point)
+ (defun . ediff-diff-at-point)
+ (defun . ediff-diff-to-diff)
+ (defun . ediff-copy-A-to-B)
+ (defun . ediff-copy-B-to-A)
+ (defun . ediff-copy-A-to-C)
+ (defun . ediff-copy-B-to-C)
+ (defun . ediff-copy-C-to-B)
+ (defun . ediff-copy-C-to-A)
+ (defun . ediff-copy-diff)
+ (defun . ediff-save-diff-region)
+ (defun . ediff-test-save-region)
+ (defun . ediff-pop-diff)
+ (defun . ediff-restore-diff)
+ (defun . ediff-restore-diff-in-merge-buffer)
+ (defun . ediff-toggle-regexp-match)
+ (defun . ediff-toggle-skip-similar)
+ (defun . ediff-focus-on-regexp-matches)
+ (defun . ediff-hide-regexp-matches)
+ (defun . ediff-quit)
+ (defun . ediff-really-quit)
+ (defun . ediff-good-frame-under-mouse)
+ (defun . ediff-delete-temp-files)
+ (defun . ediff-cleanup-mess)
+ (defun . ediff-janitor)
+ (defun . ediff-dispose-of-variant-according-to-user)
+ (defun . ediff-maybe-save-and-delete-merge)
+ (defun . ediff-write-merge-buffer-and-maybe-kill)
+ (defun . ediff-default-suspend-function)
+ (defun . ediff-suspend)
+ (defun . ediff-status-info)
+ (defun . ediff-select-difference)
+ (defun . ediff-unselect-difference)
+ (defun . ediff-unselect-and-select-difference)
+ (defun . ediff-highlight-diff-in-one-buffer)
+ (defun . ediff-unhighlight-diff-in-one-buffer)
+ (defun . ediff-unhighlight-diffs-totally-in-one-buffer)
+ (defun . ediff-highlight-diff)
+ (defun . ediff-unhighlight-diff)
+ (defun . ediff-unhighlight-diffs-totally)
+ (defun . ediff-read-file-name)
+ (defun . ediff-make-temp-file)
+ (defun . ediff-make-empty-tmp-file)
+ (defun . ediff-verify-file-buffer)
+ (defun . ediff-verify-file-merge-buffer)
+ (defun . ediff-filename-magic-p)
+ (defun . ediff-save-buffer)
+ (defun . ediff-clone-buffer-for-region-comparison)
+ (defun . ediff-clone-buffer-for-window-comparison)
+ (defun . ediff-clone-buffer-for-current-diff-comparison)
+ (defun . ediff-make-cloned-buffer)
+ (defun . ediff-make-indirect-buffer)
+ (defun . ediff-compute-custom-diffs-maybe)
+ (defun . ediff-show-diff-output)
+ (defun . ediff-inferior-compare-regions)
+ (defun . ediff-remove-flags-from-buffer)
+ (defun . ediff-place-flags-in-buffer)
+ (defun . ediff-place-flags-in-buffer1)
+ (defun . ediff-empty-diff-region-p)
+ (defun . ediff-whitespace-diff-region-p)
+ (defun . ediff-get-region-contents)
+ (defun . ediff-get-diff-posn)
+ (defun . ediff-restore-highlighting)
+ (defun . ediff-clear-diff-vector)
+ (defun . ediff-make-bullet-proof-overlay)
+ (defun . ediff-make-current-diff-overlay)
+ (defun . ediff-other-buffer)
+ (defun . ediff-get-selected-buffers)
+ (defun . ediff-unique-buffer-name)
+ (defun . ediff-submit-report)
+ (defun . ediff-choose-syntax-table)
+ (defun . ediff-deactivate-mark)
+ (defun . ediff-activate-mark)
+ (defun . ediff-nuke-selective-display)
+ (defun . ediff-save-variables)
+ (defun . ediff-restore-variables)
+ (defun . ediff-change-saved-variable)
+ (defun . ediff-save-protected-variables)
+ (defun . ediff-restore-protected-variables)
+ (defun . ediff-save-buffer-in-file)
+ ediff-command-begin-time
+ (defun . ediff-calc-command-time)
+ (defun . ediff-save-time)
+ (defun . ediff-profile)
+ (defun . ediff-print-diff-vector)
+ (defun . ediff-debug-info)
+ (defun . ediff-member)
+ (defun . ediff-format-bindings-of)
+ (defun . ediff-intersection)
+ (defun . ediff-union)
+ (defun . ediff-set-difference)
+ (defun . ediff-add-to-history)
+ (defun . ediff-copy-list))
+ ("/usr/share/emacs/23.0.93/lisp/ediff-merg.elc"
+ (require . ediff-init)
+ ediff-quit-merge-hook ediff-default-variant ediff-combination-pattern ediff-show-clashes-only ediff-skip-merge-regions-that-differ-from-default
+ (defun . ediff-merge-region-is-non-clash)
+ (defun . ediff-merge-region-is-non-clash-to-skip)
+ (defun . ediff-skip-merge-region-if-changed-from-default-p)
+ (defun . ediff-get-combined-region)
+ (defun . ediff-set-state-of-all-diffs-in-all-buffers)
+ (defun . ediff-set-state-of-diff-in-all-buffers)
+ (defun . ediff-set-merge-mode)
+ (defun . ediff-do-merge)
+ (defun . ediff-re-merge)
+ (defun . ediff-shrink-window-C)
+ (defun . ediff-combine-diffs)
+ (defun . ediff-looks-like-combined-merge)
+ (defun . ediff-merge-changed-from-default-p)
+ (provide . ediff-merg))
+ ("/usr/share/emacs/23.0.93/lisp/ediff-diff.elc"
+ (provide . ediff-diff)
+ (require . ediff-init)
+ ediff-diff-program ediff-diff3-program ediff-shell ediff-cmp-program ediff-cmp-options
+ (defun . ediff-set-diff-options)
+ ediff-diff-options ediff-ignore-case ediff-ignore-case-option ediff-ignore-case-option3 ediff-actual-diff-options ediff-custom-diff-program ediff-custom-diff-options ediff-match-diff3-line ediff-diff3-options ediff-actual-diff3-options ediff-diff3-ok-lines-regexp ediff-diff-status ediff-auto-refine ediff-ignore-similar-regions ediff-auto-refine-limit ediff-diff-ok-lines-regexp ediff-match-diff-line ediff-setup-diff-regions-function
+ (defun . ediff-setup-diff-regions)
+ (defun . ediff-make-diff2-buffer)
+ (defun . ediff-setup-fine-diff-regions)
+ (defun . ediff-prepare-error-list)
+ (defun . ediff-extract-diffs)
+ (defun . ediff-convert-diffs-to-overlays)
+ (defun . ediff-set-diff-overlays-in-one-buffer)
+ (defun . ediff-make-fine-diffs)
+ (defun . ediff-install-fine-diff-if-necessary)
+ (defun . ediff-set-fine-diff-properties)
+ (defun . ediff-set-fine-diff-properties-in-one-buffer)
+ (defun . ediff-set-fine-overlays-for-combined-merge)
+ (defun . ediff-set-fine-overlays-in-one-buffer)
+ (defun . ediff-convert-fine-diffs-to-overlays)
+ (defun . ediff-get-diff3-group)
+ (defun . ediff-extract-diffs3)
+ (defun . ediff-setup-diff-regions3)
+ (defun . ediff-exec-process)
+ (defun . ediff-process-filter)
+ (defun . ediff-process-sentinel)
+ ediff-forward-word-function ediff-whitespace ediff-word-1 ediff-word-2 ediff-word-3 ediff-word-4
+ (defun . ediff-forward-word)
+ (defun . ediff-wordify)
+ (defun . ediff-copy-to-buffer)
+ (defun . ediff-goto-word)
+ (defun . ediff-same-file-contents)
+ (defun . ediff-same-contents)
+ (defun . ediff-same-file-contents-lists)
+ (defun . ediff-delete-all-matches)
+ (defun . ediff-set-actual-diff-options)
+ (defun . ediff-toggle-ignore-case))
+ ("/usr/share/emacs/23.0.93/lisp/ediff-wind.elc"
+ (require . ediff-init)
+ (defun . ediff-compute-toolbar-width)
+ (defun . ediff-choose-window-setup-function-automatically)
+ ediff-window-setup-function ediff-multiframe ediff-merge-window-share ediff-control-window ediff-window-A ediff-window-B ediff-window-C ediff-window-config-saved ediff-window-alist ediff-window-alist ediff-split-window-function ediff-merge-split-window-function ediff-control-frame-parameters ediff-mouse-pixel-position ediff-mouse-pixel-threshold ediff-grab-mouse ediff-control-frame-position-function ediff-control-frame-upward-shift ediff-narrow-control-frame-leftward-shift ediff-wide-control-frame-rightward-shift ediff-wide-display-p ediff-wide-display-orig-parameters ediff-wide-display-frame ediff-make-wide-display-function ediff-control-frame ediff-prefer-iconified-control-frame
+ (defun . ediff-get-window-by-clicking)
+ (defun . ediff-select-lowest-window)
+ (defun . ediff-setup-windows)
+ (defun . ediff-setup-windows-plain)
+ (defun . ediff-setup-windows-plain-merge)
+ (defun . ediff-setup-windows-plain-compare)
+ (defun . ediff-setup-windows-multiframe)
+ (defun . ediff-setup-windows-multiframe-merge)
+ (defun . ediff-setup-windows-multiframe-compare)
+ (defun . ediff-skip-unsuitable-frames)
+ (defun . ediff-frame-has-dedicated-windows)
+ (defun . ediff-window-ok-for-display)
+ (defun . ediff-setup-control-frame)
+ (defun . ediff-destroy-control-frame)
+ (defun . ediff-make-frame-position)
+ (defun . ediff-xemacs-select-frame-hook)
+ (defun . ediff-make-wide-display)
+ (defun . ediff-refresh-mode-lines)
+ (defun . ediff-refresh-control-frame)
+ (defun . ediff-make-narrow-control-buffer-id)
+ (defun . ediff-make-base-title)
+ (defun . ediff-make-wide-control-buffer-id)
+ (defun . ediff-get-visible-buffer-window)
+ (defun . ediff-keep-window-config)
+ (provide . ediff-wind))
+ ("/usr/share/emacs/23.0.93/lisp/ediff-help.elc"
+ (require . ediff-init)
+ ediff-long-help-message-head ediff-long-help-message-tail ediff-long-help-message-compare3 ediff-long-help-message-compare2 ediff-long-help-message-narrow2 ediff-long-help-message-word-mode ediff-long-help-message-merge ediff-long-help-message ediff-brief-message-string ediff-brief-help-message ediff-brief-help-message-function ediff-long-help-message-function ediff-use-long-help-message ediff-help-message ediff-help-region-map
+ (defun . ediff-set-help-overlays)
+ (defun . ediff-help-for-quick-help)
+ (defun . ediff-help-message-line-length)
+ (defun . ediff-indent-help-message)
+ (defun . ediff-set-help-message)
+ (t . ediff-customize)
+ (defun . ediff-customize)
+ (provide . ediff-help))
+ ("/usr/share/emacs/23.0.93/lisp/ediff-mult.elc"
+ (provide . ediff-mult)
+ (require . ediff-init)
+ ediff-meta-buffer ediff-parent-meta-buffer ediff-registry-buffer ediff-meta-buffer-brief-message ediff-meta-buffer-brief-message ediff-meta-buffer-verbose-message ediff-meta-buffer-verbose-message ediff-meta-buffer-map ediff-dir-diffs-buffer-map ediff-meta-action-function ediff-meta-redraw-function ediff-session-action-function ediff-metajob-name ediff-meta-diff-buffer ediff-recurse-to-subdirectories ediff-filtering-regexp-history ediff-default-filtering-regexp ediff-meta-list ediff-meta-session-number ediff-dir-difference-list ediff-dir-diffs-buffer ediff-session-registry ediff-meta-truncate-filenames ediff-meta-mode-hook ediff-registry-setup-hook ediff-before-session-group-setup-hooks ediff-after-session-group-setup-hook ediff-quit-session-group-hook ediff-show-registry-hook ediff-show-session-group-hook ediff-meta-buffer-keymap-setup-hook ediff-meta-patchbufer
+ (defun . ediff-get-group-buffer)
+ (defun . ediff-get-group-regexp)
+ (defun . ediff-get-group-objA)
+ (defun . ediff-get-group-objB)
+ (defun . ediff-get-group-objC)
+ (defun . ediff-get-group-merge-autostore-dir)
+ (defun . ediff-get-group-comparison-func)
+ (defun . ediff-get-session-buffer)
+ (defun . ediff-get-session-status)
+ (defun . ediff-set-session-status)
+ (defun . ediff-get-session-objA)
+ (defun . ediff-get-session-objB)
+ (defun . ediff-get-session-objC)
+ (defun . ediff-get-session-objA-name)
+ (defun . ediff-get-session-objB-name)
+ (defun . ediff-get-session-objC-name)
+ (defun . ediff-get-file-eqstatus)
+ (defun . ediff-set-file-eqstatus)
+ (defun . ediff-make-new-meta-list-element)
+ (defun . ediff-make-new-meta-list-header)
+ (defun . ediff-get-session-activity-marker)
+ (defun . ediff-meta-session-p)
+ ediff-verbose-help-enabled
+ (defun . ediff-toggle-verbose-help-meta-buffer)
+ (defun . ediff-setup-meta-map)
+ (defun . ediff-meta-mode)
+ (defun . ediff-next-meta-item)
+ (defun . ediff-next-meta-item1)
+ (defun . ediff-previous-meta-item)
+ (defun . ediff-previous-meta-item1)
+ (defun . ediff-add-slash-if-directory)
+ (defun . ediff-toggle-filename-truncation)
+ ediff-membership-code1 ediff-membership-code2 ediff-membership-code3 ediff-product-of-memcodes
+ (defun . ediff-intersect-directories)
+ (defun . ediff-get-directory-files-under-revision)
+ (defun . ediff-prepare-meta-buffer)
+ (defun . ediff-insert-session-activity-marker-in-meta-buffer)
+ (defun . ediff-insert-session-status-in-meta-buffer)
+ (defun . ediff-replace-session-activity-marker-in-meta-buffer)
+ (defun . ediff-replace-session-status-in-meta-buffer)
+ (defun . ediff-insert-session-info-in-meta-buffer)
+ (defun . ediff-redraw-directory-group-buffer)
+ (defun . ediff-update-markers-in-dir-meta-buffer)
+ (defun . ediff-update-session-marker-in-dir-meta-buffer)
+ (defun . ediff-problematic-session-p)
+ (defun . ediff-meta-insert-file-info1)
+ ediff-months
+ (defun . ediff-fill-leading-zero)
+ (defun . ediff-format-date)
+ (defun . ediff-insert-dirs-in-meta-buffer)
+ (defun . ediff-draw-dir-diffs)
+ (defun . ediff-bury-dir-diffs-buffer)
+ (defun . ediff-show-dir-diffs)
+ (defun . ediff-dir-diff-copy-file)
+ (defun . ediff-up-meta-hierarchy)
+ (defun . ediff-redraw-registry-buffer)
+ (defun . ediff-set-meta-overlay)
+ (defun . ediff-mark-for-hiding-at-pos)
+ (defun . ediff-mark-session-for-hiding)
+ (defun . ediff-mark-for-operation-at-pos)
+ (defun . ediff-mark-session-for-operation)
+ (defun . ediff-hide-marked-sessions)
+ (defun . ediff-operate-on-marked-sessions)
+ (defun . ediff-append-custom-diff)
+ (defun . ediff-collect-custom-diffs)
+ (defun . ediff-meta-show-patch)
+ (defun . ediff-filegroup-action)
+ (defun . ediff-registry-action)
+ (defun . ediff-show-meta-buffer)
+ (defun . ediff-show-current-session-meta-buffer)
+ (defun . ediff-show-meta-buff-from-registry)
+ (t . ediff-show-registry)
+ (defun . ediff-show-registry)
+ (defun . eregistry)
+ (defun . ediff-update-meta-buffer)
+ (defun . ediff-update-registry)
+ (defun . ediff-cleanup-meta-buffer)
+ (defun . ediff-safe-to-quit)
+ (defun . ediff-quit-meta-buffer)
+ (defun . ediff-dispose-of-meta-buffer)
+ (defun . ediff-get-meta-info)
+ (defun . ediff-get-meta-overlay-at-pos)
+ (defun . ediff-get-session-number-at-pos)
+ (defun . ediff-next-meta-overlay-start)
+ (defun . ediff-previous-meta-overlay-start)
+ (defun . ediff-patch-file-form-meta)
+ (defun . ediff-unmark-all-for-operation)
+ (defun . ediff-unmark-all-for-hiding)
+ (defun . ediff-meta-mark-equal-files)
+ (defun . ediff-mark-if-equal))
+ ("/usr/share/emacs/23.0.93/lisp/ediff-init.elc" ediff-force-faces
+ (defun . ediff-device-type)
+ (defun . ediff-window-display-p)
+ (defun . ediff-has-face-support-p)
+ (defun . ediff-has-toolbar-support-p)
+ (defun . ediff-has-gutter-support-p)
+ (defun . ediff-use-toolbar-p)
+ (defun . ediff-defvar-local)
+ ediff-buffer-A ediff-buffer-B ediff-buffer-C ediff-ancestor-buffer ediff-control-buffer ediff-temp-indirect-buffer ediff-buffer-alist ediff-buffer-alist
+ (defun . ediff-odd-p)
+ (defun . ediff-buffer-live-p)
+ (defun . ediff-get-buffer)
+ (defun . ediff-get-value-according-to-buffer-type)
+ (defun . ediff-char-to-buftype)
+ (defun . ediff-get-symbol-from-alist)
+ ediff-difference-vector-alist ediff-difference-vector-alist
+ (defun . ediff-get-difference)
+ (defun . ediff-no-fine-diffs-p)
+ (defun . ediff-get-diff-overlay-from-diff-record)
+ (defun . ediff-get-diff-overlay)
+ (defun . ediff-get-fine-diff-vector-from-diff-record)
+ (defun . ediff-set-fine-diff-vector)
+ (defun . ediff-get-state-of-diff)
+ (defun . ediff-set-state-of-diff)
+ (defun . ediff-get-state-of-merge)
+ (defun . ediff-set-state-of-merge)
+ (defun . ediff-get-state-of-ancestor)
+ (defun . ediff-mark-diff-as-space-only)
+ (defun . ediff-get-fine-diff-vector)
+ (defun . ediff-with-current-buffer)
+ (defun . ediff-multiframe-setup-p)
+ (defun . ediff-narrow-control-frame-p)
+ (defun . ediff-3way-comparison-job)
+ ediff-3way-comparison-job
+ (defun . ediff-merge-job)
+ ediff-merge-job
+ (defun . ediff-patch-job)
+ (defun . ediff-merge-with-ancestor-job)
+ ediff-merge-with-ancestor-job
+ (defun . ediff-3way-job)
+ ediff-3way-job
+ (defun . ediff-diff3-job)
+ ediff-diff3-job
+ (defun . ediff-windows-job)
+ ediff-windows-job
+ (defun . ediff-word-mode-job)
+ ediff-word-mode-job
+ (defun . ediff-narrow-job)
+ ediff-narrow-job
+ (defun . ediff-ancestor-metajob)
+ (defun . ediff-revision-metajob)
+ (defun . ediff-patch-metajob)
+ (defun . ediff-one-filegroup-metajob)
+ (defun . ediff-collect-diffs-metajob)
+ (defun . ediff-merge-metajob)
+ (defun . ediff-metajob3)
+ (defun . ediff-comparison-metajob3)
+ (defun . ediff-in-control-buffer-p)
+ (defun . ediff-barf-if-not-control-buffer)
+ ediff-before-setup-hook ediff-before-setup-windows-hook ediff-after-setup-windows-hook ediff-before-setup-control-frame-hook ediff-after-setup-control-frame-hook ediff-startup-hook ediff-select-hook ediff-unselect-hook ediff-prepare-buffer-hook ediff-load-hook ediff-mode-hook ediff-keymap-setup-hook ediff-display-help-hook ediff-suspend-hook ediff-quit-hook ediff-cleanup-hook ediff-KILLED-VITAL-BUFFER ediff-KILLED-VITAL-BUFFER ediff-NO-DIFFERENCES ediff-NO-DIFFERENCES ediff-BAD-DIFF-NUMBER ediff-BAD-DIFF-NUMBER ediff-BAD-INFO ediff-BAD-INFO ediff-skip-diff-region-function ediff-hide-regexp-matches-function ediff-focus-on-regexp-matches-function ediff-regexp-focus-A ediff-regexp-focus-B ediff-regexp-focus-C ediff-focus-regexp-connective ediff-regexp-hide-A ediff-regexp-hide-B ediff-regexp-hide-C ediff-hide-regexp-connective ediff-killed-diffs-alist ediff-syntax-table ediff-before-flag-bol ediff-after-flag-eol ediff-before-flag-mol ediff-after-flag-mol ediff-use-faces ediff-use-faces ediff-word-mode ediff-job-name ediff-narrow-bounds ediff-wide-bounds ediff-visible-bounds ediff-start-narrowed ediff-quit-widened ediff-keep-variants ediff-highlight-all-diffs ediff-highlight-all-diffs ediff-control-buffer-suffix ediff-control-buffer-number ediff-buffer-values-orig-A ediff-buffer-values-orig-B ediff-buffer-values-orig-C ediff-buffer-values-orig-Ancestor ediff-buffer-values-orig-alist ediff-buffer-values-orig-alist ediff-protected-variables ediff-protected-variables ediff-difference-vector-A ediff-difference-vector-B ediff-difference-vector-C ediff-difference-vector-Ancestor ediff-difference-vector-alist ediff-difference-vector-alist ediff-state-of-merge ediff-current-difference ediff-number-of-differences ediff-diff-buffer ediff-custom-diff-buffer ediff-fine-diff-buffer ediff-tmp-buffer ediff-msg-buffer ediff-error-buffer ediff-debug-buffer ediff-this-buffer-ediff-sessions ediff-disturbed-overlays ediff-shadow-overlay-priority ediff-version-control-package ediff-coding-system-for-read ediff-coding-system-for-write
+ (defun . ediff-read-event)
+ (defun . ediff-overlayp)
+ (defun . ediff-make-overlay)
+ (defun . ediff-delete-overlay)
+ (defun . ediff-check-version)
+ (defun . ediff-color-display-p)
+ ediff-highlighting-style
+ (defun . ediff-valid-color-p)
+ (defun . ediff-get-face)
+ (defun . ediff-display-pixel-width)
+ (defun . ediff-display-pixel-height)
+ ediff-current-diff-overlay-alist ediff-current-diff-overlay-alist ediff-current-diff-face-alist ediff-current-diff-face-alist
+ (defun . ediff-set-overlay-face)
+ (defun . ediff-region-help-echo)
+ (defun . ediff-set-face-pixmap)
+ (defun . ediff-hide-face)
+ (defface . ediff-current-diff-A)
+ ediff-current-diff-face-A
+ (defface . ediff-current-diff-B)
+ ediff-current-diff-face-B
+ (defface . ediff-current-diff-C)
+ ediff-current-diff-face-C
+ (defface . ediff-current-diff-Ancestor)
+ ediff-current-diff-face-Ancestor
+ (defface . ediff-fine-diff-A)
+ ediff-fine-diff-face-A
+ (defface . ediff-fine-diff-B)
+ ediff-fine-diff-face-B
+ (defface . ediff-fine-diff-C)
+ ediff-fine-diff-face-C
+ (defface . ediff-fine-diff-Ancestor)
+ ediff-fine-diff-face-Ancestor stipple-pixmap
+ (defface . ediff-even-diff-A)
+ ediff-even-diff-face-A
+ (defface . ediff-even-diff-B)
+ ediff-even-diff-face-B
+ (defface . ediff-even-diff-C)
+ ediff-even-diff-face-C
+ (defface . ediff-even-diff-Ancestor)
+ ediff-even-diff-face-Ancestor ediff-even-diff-face-alist ediff-even-diff-face-alist
+ (defface . ediff-odd-diff-A)
+ ediff-odd-diff-face-A
+ (defface . ediff-odd-diff-B)
+ ediff-odd-diff-face-B
+ (defface . ediff-odd-diff-C)
+ ediff-odd-diff-face-C
+ (defface . ediff-odd-diff-Ancestor)
+ ediff-odd-diff-face-Ancestor ediff-odd-diff-face-alist ediff-odd-diff-face-alist ediff-fine-diff-face-alist ediff-fine-diff-face-alist ediff-current-diff-overlay-A ediff-current-diff-overlay-B ediff-current-diff-overlay-C ediff-current-diff-overlay-Ancestor
+ (defun . ediff-highest-priority)
+ ediff-toggle-read-only-function ediff-make-buffers-readonly-at-startup ediff-verbose-p ediff-autostore-merges ediff-merge-store-file ediff-merge-filename-prefix ediff-no-emacs-help-in-control-buffer ediff-temp-file-prefix ediff-temp-file-mode ediff-metachars ediff-H-glyph ediff-temp-file-A ediff-temp-file-B ediff-temp-file-C
+ (defun . ediff-file-remote-p)
+ (defun . ediff-listable-file)
+ (defun . ediff-frame-unsplittable-p)
+ (defun . ediff-get-next-window)
+ (defun . ediff-kill-buffer-carefully)
+ (defun . ediff-background-face)
+ (defun . ediff-paint-background-regions-in-one-buffer)
+ (defun . ediff-paint-background-regions)
+ (defun . ediff-clear-fine-diff-vector)
+ (defun . ediff-clear-fine-differences-in-one-buffer)
+ (defun . ediff-clear-fine-differences)
+ (defun . ediff-mouse-event-p)
+ (defun . ediff-key-press-event-p)
+ (defun . ediff-event-point)
+ (defun . ediff-event-buffer)
+ (defun . ediff-event-key)
+ (defun . ediff-frame-iconified-p)
+ (defun . ediff-window-visible-p)
+ (defun . ediff-frame-char-width)
+ (defun . ediff-reset-mouse)
+ (defun . ediff-spy-after-mouse)
+ (defun . ediff-user-grabbed-mouse)
+ (defun . ediff-frame-char-height)
+ (defun . ediff-overlay-start)
+ (defun . ediff-overlay-end)
+ (defun . ediff-empty-overlay-p)
+ (defun . ediff-overlay-buffer)
+ (defun . ediff-overlay-get)
+ (defun . ediff-move-overlay)
+ (defun . ediff-overlay-put)
+ (defun . ediff-abbreviate-file-name)
+ (defun . ediff-strip-last-dir)
+ (defun . ediff-truncate-string-left)
+ (defun . ediff-nonempty-string-p)
+ (defun . ediff-abbrev-jobname)
+ (defun . ediff-strip-mode-line-format)
+ (defun . ediff-valid-difference-p)
+ (defun . ediff-show-all-diffs)
+ (defun . ediff-message-if-verbose)
+ (defun . ediff-file-attributes)
+ (defun . ediff-file-size)
+ (defun . ediff-file-modtime)
+ (defun . ediff-convert-standard-filename)
+ (defun . ediff-with-syntax-table)
+ (provide . ediff-init))
+ ("/home/hobbes/nxhtml/nxhtml/html-imenu.el" html-imenu:version
+ (require . imenu)
+ html-imenu-title html-imenu-regexp
+ (defun . html-imenu-index)
+ (defun . html-imenu-setup)
+ (defun . html-imenu-update-menubar)
+ (defun . html-imenu-update-menubar-1)
+ (provide . html-imenu))
+ ("/usr/share/emacs/23.0.93/lisp/imenu.elc" imenu-use-markers imenu-max-item-length imenu-auto-rescan imenu-auto-rescan-maxout imenu-always-use-completion-buffer-p imenu-use-popup-menu imenu-eager-completion-buffer imenu-after-jump-hook imenu-sort-function imenu-max-items imenu-space-replacement imenu-level-separator imenu-generic-expression imenu-create-index-function imenu-prev-index-position-function imenu-extract-index-name-function imenu-name-lookup-function imenu-default-goto-function
+ (defun . imenu--subalist-p)
+ (defun . imenu-progress-message)
+ (defun . imenu-example--name-and-position)
+ (defun . imenu-example--lisp-extract-index-name)
+ (defun . imenu-example--create-lisp-index)
+ imenu-example--function-name-regexp-c
+ (defun . imenu-example--create-c-index)
+ imenu--rescan-item imenu--rescan-item imenu--index-alist imenu--last-menubar-index-alist imenu--history-list
+ (defun . imenu--sort-by-name)
+ (defun . imenu--sort-by-position)
+ (defun . imenu--relative-position)
+ (defun . imenu--split)
+ (defun . imenu--split-menu)
+ (defun . imenu--split-submenus)
+ (defun . imenu--truncate-items)
+ (defun . imenu--make-index-alist)
+ (defun . imenu--cleanup)
+ (defun . imenu--create-keymap)
+ (defun . imenu--in-alist)
+ imenu-syntax-alist
+ (defun . imenu-default-create-index-function)
+ imenu-case-fold-search
+ (defun . imenu--generic-function)
+ (defun . imenu-find-default)
+ (defun . imenu--completion-buffer)
+ (defun . imenu--mouse-menu)
+ (defun . imenu-choose-buffer-index)
+ (t . imenu-add-to-menubar)
+ (defun . imenu-add-to-menubar)
+ (t . imenu-add-menubar-index)
+ (defun . imenu-add-menubar-index)
+ imenu-buffer-menubar imenu-menubar-modified-tick
+ (defun . imenu-update-menubar)
+ (defun . imenu--menubar-select)
+ (defun . imenu-default-goto-function)
+ (t . imenu)
+ (defun . imenu)
+ (provide . imenu))
+ ("/home/hobbes/nxhtml/util/popcmp.el"
+ (require . ourcomments-util)
+ popcmp-popup-completion
+ (defun . popcmp-popup-completion-toggle)
+ popcmp-short-help-beside-alts
+ (defun . popcmp-short-help-beside-alts-toggle)
+ popcmp-group-alternatives
+ (defun . popcmp-group-alternatives-toggle)
+ (defun . popcmp-getsets)
+ (defun . popcmp-getset-alts)
+ popcmp-completing-with-help
+ (defun . popcmp-add-help)
+ (defun . popcmp-remove-help)
+ (defun . popcmp-completing-read-nopop)
+ (defun . popcmp-completing-read-pop)
+ (defun . popcmp-completing-read)
+ popcmp-mark-completing-ovl
+ (defun . popcmp-mark-completing)
+ (defun . popcmp-unmark-completing)
+ (provide . popcmp))
+ ("/home/hobbes/nxhtml/nxhtml/rngalt.el" rngalt:version
+ (require . rng-valid)
+ (require . rng-nxml)
+ rngalt-complete-first-try rngalt-complete-last-try rngalt-completing-read-tag rngalt-completing-read-attribute-name rngalt-completing-read-attribute-value
+ (defun . rngalt-finish-element)
+ (defun . rngalt-finish-element-1)
+ (defun . rngalt-complete)
+ (defun . rngalt-validate)
+ rngalt-region-ovl rngalt-region-prepared
+ (defun . rngalt-complete-tag-region-prepare)
+ (defun . rngalt-complete-tag-region-cleanup)
+ (defun . rngalt-complete-tag-region-finish)
+ (defun . rngalt-complete-tag)
+ rngalt-complete-tag-hooks
+ (defun . rngalt-complete-attribute-name)
+ (defun . rngalt-complete-attribute-value)
+ (defun . rngalt-complete-before-point)
+ (defun . rngalt-get-missing-required-attr)
+ rngalt-validation-header rngalt-current-schema-file-name rngalt-validation-header-overlay rngalt-major-mode
+ (defun . rngalt-after-change-major)
+ rngalt-validation-header-keymap
+ (defun . rngalt-update-validation-header-overlay)
+ (defun . rngalt-update-validation-header-overlay-everywhere)
+ rngalt-display-validation-header
+ (defun . rngalt-display-validation-header-toggle)
+ rngalt-minimal-validation-header
+ (defun . rngalt-minimal-validation-header-toggle)
+ (defface . rngalt-validation-header-top)
+ (defface . rngalt-validation-header-bottom)
+ (require . bytecomp)
+ (defun . advice-compilation)
+ (t . rngalt-set-validation-header)
+ (defun . rngalt-set-validation-header)
+ (defun . rngalt-reapply-validation-header)
+ (defun . rngalt-get-validation-header-buffer)
+ (defun . rngalt-get-state-after)
+ (defun . rngalt-show-validation-header)
+ (defun . rngalt-update-validation-header-buffer)
+ (provide . rngalt))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/rng-nxml.elc"
+ (require . easymenu)
+ (require . xmltok)
+ (require . nxml-util)
+ (require . nxml-ns)
+ (require . rng-match)
+ (require . rng-util)
+ (require . rng-valid)
+ (require . nxml-mode)
+ (require . rng-loc)
+ rng-nxml-auto-validate-flag rng-preferred-prefix-alist rng-complete-end-tags-after-< rng-nxml-easy-menu
+ (t . rng-nxml-mode-init)
+ (defun . rng-nxml-mode-init)
+ rng-tag-history rng-attribute-name-history rng-attribute-value-history rng-complete-target-names rng-complete-name-attribute-flag rng-complete-extra-strings
+ (defun . rng-complete)
+ rng-in-start-tag-name-regex rng-in-start-tag-name-regex
+ (defun . rng-complete-tag)
+ rng-in-end-tag-name-regex rng-in-end-tag-name-regex
+ (defun . rng-complete-end-tag)
+ rng-in-attribute-regex rng-in-attribute-regex rng-undeclared-prefixes
+ (defun . rng-complete-attribute-name)
+ rng-in-attribute-value-regex rng-in-attribute-value-regex
+ (defun . rng-complete-attribute-value)
+ (defun . rng-possible-namespace-uris)
+ rng-qname-regexp rng-qname-regexp
+ (defun . rng-qname-p)
+ (defun . rng-expand-qname)
+ (defun . rng-start-tag-expand-recover)
+ (defun . rng-split-qname)
+ (defun . rng-in-mixed-content-p)
+ (defun . rng-set-state-after)
+ (defun . rng-adjust-state-for-attribute)
+ (defun . rng-find-undeclared-prefixes)
+ (defun . rng-prune-attribute-at)
+ (defun . rng-adjust-state-for-attribute-value)
+ (defun . rng-complete-qname-function)
+ (defun . rng-generate-qname-list)
+ (defun . rng-get-preferred-unused-prefix)
+ (defun . rng-strings-to-completion-alist)
+ (provide . rng-nxml))
+ ("/usr/share/emacs/23.0.93/lisp/loadhist.elc"
+ (defun . feature-symbols)
+ (defun . feature-file)
+ (defun . file-loadhist-lookup)
+ (defun . file-provides)
+ (defun . file-requires)
+ (defun . file-set-intersect)
+ (defun . file-dependents)
+ (defun . read-feature)
+ loadhist-hook-functions unload-feature-special-hooks unload-function-defs-list unload-hook-features-list
+ (t . unload-feature)
+ (defun . unload-feature)
+ (provide . loadhist))
+ ("/home/hobbes/nxhtml/util/appmenu-fold.el" appmenu-fold:version
+ (require . fold-dwim)
+ (require . appmenu)
+ (defun . appmenu-fold-no-hs-minor-mode)
+ (defun . appmenu-fold-no-outline-minor-mode)
+ (defun . appmenu-fold-setup)
+ (provide . appmenu-fold))
+ ("/home/hobbes/nxhtml/related/fold-dwim.el" fold-dwim:version
+ (require . outline)
+ (require . hideshow)
+ fold-dwim-outline-style-default fold-dwim-toggle-selective-display
+ (defun . fold-dwim-maybe-recenter)
+ (defun . fold-dwim-toggle-selective-display)
+ (defun . fold-dwim-hide-all)
+ (defun . fold-dwim-show-all)
+ (defun . fold-dwim-hide)
+ (defun . fold-dwim-show)
+ (defun . fold-dwim-toggle)
+ (defun . fold-dwim-auctex-env-or-macro)
+ (defun . fold-dwim-outline-invisible-p)
+ (defun . fold-dwim-outline-nested-p)
+ (provide . fold-dwim))
+ ("/usr/share/emacs/23.0.93/lisp/progmodes/hideshow.elc" hs-hide-comments-when-hiding-all hs-minor-mode-hook hs-isearch-open hs-special-modes-alist hs-hide-all-non-comment-function hs-allow-nesting hs-hide-hook hs-show-hook hs-set-up-overlay hs-minor-mode hs-minor-mode-map hs-minor-mode-menu
+ (defun . hs-minor-mode-menu)
+ hs-c-start-regexp hs-block-start-regexp hs-block-start-mdata-select hs-block-end-regexp hs-forward-sexp-func hs-adjust-block-beginning hs-headline
+ (defun . hs-discard-overlays)
+ (defun . hs-make-overlay)
+ (defun . hs-isearch-show)
+ (defun . hs-isearch-show-temporary)
+ (defun . hs-forward-sexp)
+ (defun . hs-hide-comment-region)
+ (defun . hs-hide-block-at-point)
+ (defun . hs-inside-comment-p)
+ (defun . hs-grok-mode-type)
+ (defun . hs-find-block-beginning)
+ (defun . hs-hide-level-recursive)
+ (defun . hs-life-goes-on)
+ (defun . hs-overlay-at)
+ (defun . hs-already-hidden-p)
+ (defun . hs-c-like-adjust-block-beginning)
+ (defun . hs-hide-all)
+ (defun . hs-show-all)
+ (defun . hs-hide-block)
+ (defun . hs-show-block)
+ (defun . hs-hide-level)
+ (defun . hs-toggle-hiding)
+ (defun . hs-mouse-toggle-hiding)
+ (defun . hs-hide-initial-comment-block)
+ hs-minor-mode
+ (t . hs-minor-mode)
+ (defun . hs-minor-mode)
+ (t . turn-off-hideshow)
+ (defun . turn-off-hideshow)
+ (provide . hideshow))
+ ("/usr/share/emacs/23.0.93/lisp/outline.elc" outline-regexp outline-heading-end-regexp outline-mode-prefix-map outline-mode-menu-bar-map outline-minor-mode-menu-bar-map outline-mode-map outline-font-lock-keywords
+ (defface . outline-1)
+ (defface . outline-2)
+ (defface . outline-3)
+ (defface . outline-4)
+ (defface . outline-5)
+ (defface . outline-6)
+ (defface . outline-7)
+ (defface . outline-8)
+ outline-font-lock-faces
+ (defun . outline-font-lock-face)
+ outline-view-change-hook outline-mode-hook outline-blank-line outline-mode-map outline-mode-syntax-table outline-mode-abbrev-table outline-mode-abbrev-table
+ (t . outline-mode)
+ (defun . outline-mode)
+ outline-minor-mode-prefix outline-minor-mode
+ (t . outline-minor-mode)
+ (defun . outline-minor-mode)
+ outline-minor-mode-map outline-level outline-heading-alist
+ (defun . outline-level)
+ (defun . outline-next-preface)
+ (defun . outline-next-heading)
+ (defun . outline-previous-heading)
+ (defun . outline-invisible-p)
+ (defun . outline-visible)
+ (defun . outline-back-to-heading)
+ (defun . outline-on-heading-p)
+ (defun . outline-insert-heading)
+ (defun . outline-invent-heading)
+ (defun . outline-promote)
+ (defun . outline-demote)
+ (defun . outline-head-from-level)
+ (defun . outline-map-region)
+ (defun . outline-move-subtree-up)
+ (defun . outline-move-subtree-down)
+ (defun . outline-end-of-heading)
+ (defun . outline-next-visible-heading)
+ (defun . outline-previous-visible-heading)
+ (defun . outline-mark-subtree)
+ outline-isearch-open-invisible-function
+ (defun . outline-flag-region)
+ (defun . outline-reveal-toggle-invisible)
+ (defun . outline-isearch-open-invisible)
+ (defun . hide-entry)
+ (defun . show-entry)
+ (defun . hide-body)
+ (defun . hide-region-body)
+ (defun . show-all)
+ (defun . hide-subtree)
+ (defun . hide-leaves)
+ (defun . show-subtree)
+ (defun . outline-show-heading)
+ (defun . hide-sublevels)
+ (defun . hide-other)
+ (defun . outline-toggle-children)
+ (defun . outline-flag-subtree)
+ (defun . outline-end-of-subtree)
+ (defun . show-branches)
+ (defun . show-children)
+ (defun . outline-up-heading)
+ (defun . outline-forward-same-level)
+ (defun . outline-get-next-sibling)
+ (defun . outline-backward-same-level)
+ (defun . outline-get-last-sibling)
+ (defun . outline-headers-as-kill)
+ (provide . outline)
+ (provide . noutline))
+ ("/home/hobbes/nxhtml/util/mumamo.el" mumamo:version
+ (require . cl)
+ (require . flyspell)
+ (require . mlinks)
+ (require . nxml-mode)
+ (require . rng-valid)
+ (require . sgml-mode)
+ msgtrc-buffer
+ (defun . msgtrc)
+ mumamo-message-file-buffer
+ (defun . mumamo-msgtrc-to-file)
+ (defun . mumamo-msgfntfy)
+ (defun . mumamo-msgindent)
+ mumamo-display-error-lwarn mumamo-display-error-stop
+ (defun . mumamo-message-with-face)
+ (defun . mumamo-show-report-message)
+ (defun . mumamo-display-error)
+ (defun . mumamo-debug-to-backtrace)
+ mumamo-use-condition-case mumamo-debugger
+ (defun . mumamo-condition-case)
+ mumamo-warned-once
+ (defun . mumamo-warn-once)
+ (defun . mumamo-add-help-tabs)
+ (defun . mumamo-insert-describe-button)
+ (defface . mumamo-border-face-in)
+ (defface . mumamo-border-face-out)
+ mumamo-set-major-mode-delay
+ (defface . mumamo-background-chunk-submode)
+ mumamo-background-chunk-major
+ (defface . mumamo-background-chunk-major)
+ mumamo-background-chunk-submode mumamo-background-colors
+ (defun . mumamo-background-color)
+ mumamo-chunk-coloring mumamo-submode-indent-offset mumamo-submode-indent-offset-0 mumamo-major-mode-indent-specials mumamo-check-chunk-major-same mumamo-major-modes
+ (defun . mumamo-jit-lock-function)
+ (defun . mumamo-jit-lock-register)
+ (defun . mumamo-jit-with-buffer-unmodified)
+ (defun . mumamo-with-buffer-prepared-for-jit-lock)
+ mumamo-find-chunks-timer mumamo-find-chunk-delay
+ (defun . mumamo-stop-find-chunks-timer)
+ (defun . mumamo-start-find-chunks-timer)
+ (defun . mumamo-find-chunks-in-timer)
+ mumamo-last-chunk mumamo-last-new-chunk mumamo-last-chunk-change-pos mumamo-old-chunks mumamo-find-chunk-is-active mumamo-use-new-chunks
+ (defun . mumamo-toggle-use-new-chunks)
+ mumamo-use-both-chunks
+ (defun . mumamo-toggle-use-both-chunks)
+ (defun . mumamo-make-old-chunks)
+ (defun . mumamo-make-new-chunks)
+ (defun . mumamo-toggle-and-normal-mode-and-what-at-cursor)
+ mumamo-find-chunks-level
+ (defun . mumamo-find-chunks)
+ (defun . mumamo-find-chunk-after-change)
+ (defun . mumamo-after-change)
+ (defun . mumamo-jit-lock-after-change)
+ (defun . mumamo-jit-lock-after-change-1)
+ (defun . mumamo-mark-chunk)
+ (defun . mumamo-save-buffer-state)
+ (t . mumamo-mark-for-refontification)
+ (defun . mumamo-mark-for-refontification)
+ mumamo-internal-major-modes-alist mumamo-ppss-last-chunk mumamo-ppss-last-major mumamo-major-mode-substitute
+ (defun . mumamo-get-major-mode-substitute)
+ (defun . mumamo-with-major-mode-setup)
+ (defun . mumamo-with-major-mode-fontification)
+ (defun . mumamo-with-major-mode-indentation)
+ (defun . mumamo-assert-fontified-t)
+ (defun . mumamo-do-fontify)
+ (defun . mumamo-do-unfontify)
+ (defun . mumamo-fontify-region-with)
+ (defun . mumamo-unfontify-region-with)
+ (defun . mumamo-unfontify-buffer)
+ (defun . mumamo-fontify-buffer)
+ (defun . mumamo-unfontify-chunk)
+ mumamo-just-changed-major
+ (defun . mumamo-fontify-region)
+ mumamo-dbg-pretend-fontified
+ (defun . mumamo-exc-mode)
+ (defun . mumamo-chunk-value-set-min)
+ (defun . mumamo-chunk-value-set-max)
+ (defun . mumamo-chunk-value-set-syntax-min)
+ (defun . mumamo-chunk-value-set-syntax-max)
+ (defun . mumamo-chunk-value-min)
+ (defun . mumamo-chunk-value-max)
+ (defun . mumamo-chunk-value-major)
+ (defun . mumamo-chunk-value-syntax-min)
+ (defun . mumamo-chunk-value-syntax-max)
+ (defun . mumamo-chunk-value-parseable-by)
+ (defun . mumamo-chunk-value-fw-exc-fun)
+ mumamo-chunks-to-remove
+ (defun . mumamo-flush-chunk-syntax)
+ (defun . mumamo-fontify-region-1)
+ (defun . mumamo-remove-old-overlays)
+ mumamo-known-buffer-local-fontifications mumamo-irrelevant-buffer-local-vars
+ (defun . mumamo-get-relevant-buffer-local-vars)
+ mumamo-major-modes-local-maps
+ (defun . mumamo-fetch-major-mode-setup)
+ (defun . mumamo-bad-mode)
+ (defun . mumamo-get-major-mode-setup)
+ (defun . mumamo-remove-chunk-overlays)
+ (defun . mumamo-remove-all-chunk-overlays)
+ (defun . mumamo-create-chunk-values-at)
+ (defun . mumamo-define-no-mode)
+ (defun . mumamo-major-mode-from-modespec)
+ (defun . mumamo-chunk-equal-chunk-values)
+ (defun . mumamo-create-chunk-from-chunk-values)
+ (defun . mumamo-create-chunk-at)
+ (defun . mumamo-get-existing-chunk-at)
+ (defun . mumamo-get-existing-new-chunk-at)
+ (defun . mumamo-get-chunk-save-buffer-state)
+ (defun . mumamo-chunk-major-mode)
+ (defun . mumamo-chunk-syntax-min)
+ (defun . mumamo-chunk-syntax-max)
+ (defun . mumamo-syntax-maybe-completable)
+ mumamo-current-chunk-family
+ (defun . mumamo-main-major-mode)
+ (defun . mumamo-chunk-start-fw-str)
+ (defun . mumamo-chunk-start-fw-re)
+ (defun . mumamo-chunk-start-fw-str-inc)
+ (defun . mumamo-chunk-start-bw-str)
+ (defun . mumamo-chunk-start-bw-re)
+ (defun . mumamo-chunk-start-bw-str-inc)
+ (defun . mumamo-chunk-end-fw-str)
+ (defun . mumamo-chunk-end-fw-re)
+ (defun . mumamo-chunk-end-fw-str-inc)
+ (defun . mumamo-chunk-end-bw-str)
+ (defun . mumamo-chunk-end-bw-re)
+ (defun . mumamo-chunk-end-bw-str-inc)
+ mumamo-string-syntax-table
+ (defun . mumamo-guess-in-string)
+ mumamo-find-possible-chunk-new
+ (defun . mumamo-find-possible-chunk)
+ (defun . mumamo-find-possible-chunk-new)
+ (defun . mumamo-find-possible-chunk-old)
+ (defun . temp-overlays-here)
+ (defun . temp-cursor-pos)
+ (defun . temp-test-new-create-chunk)
+ (defun . temp-create-last-chunk)
+ (defun . mumamo-delete-new-chunks)
+ (defun . mumamo-new-create-chunk)
+ (defun . mumamo-new-chunk-value-min)
+ (defun . mumamo-new-chunk-value-max)
+ (defun . mumamo-new-chunk-equal-chunk-values)
+ (defun . mumamo-find-next-chunk-values)
+ (defun . mumamo-valid-nxml-point)
+ (defun . mumamo-valid-nxml-chunk)
+ (defun . mumamo-end-chunk-is-valid)
+ (defun . mumamo-quick-static-chunk)
+ mumamo-unread-command-events-timer
+ (defun . mumamo-unread-command-events)
+ mumamo-idle-set-major-mode-timer
+ (defun . mumamotemp-pre-command)
+ (defun . mumamotemp-post-command)
+ (defun . mumamotemp-start)
+ (defun . mumamo-idle-set-major-mode)
+ (defun . mumamo-request-idle-set-major-mode)
+ mumamo-done-first-set-major mumamo-multi-major-mode mumamo-safe-commands-in-wrong-major
+ (defun . mumamo-set-major-pre-command)
+ (defun . mumamo-fetch-local-map)
+ (defun . mumamo-set-major-post-command)
+ (defun . mumamo-post-command-1)
+ (defun . mumamo-post-command)
+ mumamo-set-major-running
+ (defun . mumamo-change-major-function)
+ (defun . mumamo-derived-from-mode)
+ mumamo-test-add-hook mumamo-survive-hooks mumamo-survive
+ (defun . mumamo-make-variable-buffer-permanent)
+ mumamo-survive-done-by-me
+ (defun . mumamo-hook-p)
+ mumamo-major-mode mumamo-change-major-mode-no-nos mumamo-after-change-major-mode-no-nos mumamo-removed-from-hook
+ (defun . mumamo-remove-from-hook)
+ (defun . mumamo-addback-to-hooks)
+ (defun . mumamo-addback-to-hook)
+ mumamo-buffer-locals-dont-set
+ (defun . mumamo-save-most-buffer-locals)
+ mumamo-restore-most-buffer-locals-in-hook-major
+ (defun . mumamo-restore-most-buffer-locals-in-hook)
+ (defun . mumamo-restore-most-buffer-locals)
+ mumamo-buffer-locals-per-major
+ (defun . mumamo-get-hook-value)
+ (defun . mumamo-set-major)
+ (defun . mumamo-setup-local-fontification-vars)
+ (defun . mumamo-set-fontification-functions)
+ (defun . mumamo-initialize-state)
+ (defun . mumamo-turn-on-actions)
+ (defun . mumamo-turn-off-actions)
+ mumamo-turn-on-hook mumamo-change-major-mode-hook mumamo-after-change-major-mode-hook mumamo-defined-turn-on-functions
+ (defun . mumamo-describe-chunks)
+ (defun . mumamo-add-multi-keymap)
+ mumamo-map
+ (defun . define-mumamo-multi-major-mode)
+ (defun . mumamo-indent-line-function)
+ (defun . mumamo-indent-line-chunks)
+ (defun . mumamo-indent-line-function-1)
+ (defun . mumamo-indent-use-widen)
+ (defun . mumamo-indent-special-or-default)
+ (defun . mumamo-call-indent-line)
+ (defun . mumamo-indent-region-function)
+ (defun . mumamo-fill-forward-paragraph-function)
+ (defun . mumamo-fill-paragraph-function)
+ (defun . mumamo-forward-chunk)
+ (defun . mumamo-backward-chunk)
+ (defun . mumamo-flyspell-verify)
+ (defun . flyspell-mumamo-mode)
+ (require . bytecomp)
+ (defun . advice-compilation)
+ mumamo-syntax-chunk-at-pos
+ (defun . advice-compilation)
+ mumamo-syntax-ppss-major
+ (defun . advice-compilation)
+ rng-get-major-mode-chunk-function rng-valid-nxml-major-mode-chunk-function rng-end-major-mode-chunk-function
+ (defun . advice-compilation)
+ (defun . advice-compilation)
+ (defun . advice-compilation)
+ (provide . mumamo))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/byte-opt.elc"
+ (require . bytecomp)
+ (defun . byte-compile-log-lap-1)
+ (defun . byte-compile-log-lap)
+ (defun . byte-optimize-inline-handler)
+ (defun . byte-inline-lapcode)
+ (t . byte-compile-inline-expand)
+ (defun . byte-compile-inline-expand)
+ (t . byte-compile-unfold-lambda)
+ (defun . byte-compile-unfold-lambda)
+ (defun . byte-optimize-form-code-walker)
+ (defun . byte-optimize-all-constp)
+ (t . byte-optimize-form)
+ (defun . byte-optimize-form)
+ (defun . byte-optimize-body)
+ (defun . byte-compile-trueconstp)
+ (defun . byte-compile-nilconstp)
+ (defun . byte-optimize-associative-math)
+ (defun . byte-optimize-nonassociative-math)
+ (defun . byte-optimize-approx-equal)
+ (defun . byte-optimize-delay-constants-math)
+ (defun . byte-compile-butlast)
+ (defun . byte-optimize-plus)
+ (defun . byte-optimize-minus)
+ (defun . byte-optimize-multiply)
+ (defun . byte-optimize-divide)
+ (defun . byte-optimize-logmumble)
+ (defun . byte-optimize-binary-predicate)
+ (defun . byte-optimize-predicate)
+ (defun . byte-optimize-identity)
+ (defun . byte-optimize-quote)
+ (defun . byte-optimize-zerop)
+ (defun . byte-optimize-and)
+ (defun . byte-optimize-or)
+ (defun . byte-optimize-cond)
+ (defun . byte-optimize-if)
+ (defun . byte-optimize-while)
+ (defun . byte-optimize-funcall)
+ (defun . byte-optimize-apply)
+ (defun . byte-optimize-letX)
+ (defun . byte-optimize-nth)
+ (defun . byte-optimize-nthcdr)
+ (defun . byte-optimize-featurep)
+ (defun . byte-optimize-set)
+ (defun . byte-compile-splice-in-already-compiled-code)
+ byte-constref-ops byte-constref-ops
+ (defun . disassemble-offset)
+ (t . byte-decompile-bytecode)
+ (defun . byte-decompile-bytecode)
+ (defun . byte-decompile-bytecode-1)
+ byte-tagref-ops byte-tagref-ops byte-conditional-ops byte-conditional-ops byte-after-unbind-ops byte-compile-side-effect-and-error-free-ops byte-compile-side-effect-and-error-free-ops byte-compile-side-effect-free-ops byte-compile-side-effect-free-ops
+ (t . byte-optimize-lapcode)
+ (defun . byte-optimize-lapcode)
+ (provide . byte-opt))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/bytecomp.elc"
+ (require . backquote)
+ (defun . byte-compile-single-version)
+ (defun . byte-compile-version-cond)
+ emacs-lisp-file-regexp
+ (defun . byte-compiler-base-file-name)
+ (defun . byte-compile-dest-file)
+ (autoload . byte-compile-inline-expand)
+ (autoload . byte-optimize-form)
+ (autoload . byte-optimize-lapcode)
+ (autoload . byte-compile-unfold-lambda)
+ (autoload . byte-decompile-bytecode)
+ byte-compile-verbose byte-compile-compatibility byte-optimize byte-compile-delete-errors byte-compile-dynamic byte-compile-disable-print-circle byte-compile-dynamic-docstrings byte-optimize-log byte-compile-error-on-warn byte-compile-warning-types byte-compile-warnings
+ (t . byte-compile-warnings-safe-p)
+ (defun . byte-compile-warnings-safe-p)
+ (defun . byte-compile-warning-enabled-p)
+ (t . byte-compile-disable-warning)
+ (defun . byte-compile-disable-warning)
+ (t . byte-compile-enable-warning)
+ (defun . byte-compile-enable-warning)
+ byte-compile-interactive-only-functions byte-compile-not-obsolete-var byte-compile-generate-call-tree byte-compile-call-tree byte-compile-call-tree-sort byte-compile-debug byte-compile-constants byte-compile-variables byte-compile-bound-variables byte-compile-const-variables byte-compile-initial-macro-environment byte-compile-macro-environment byte-compile-function-environment byte-compile-unresolved-functions byte-compile-noruntime-functions byte-compile-tag-number byte-compile-output byte-compile-depth byte-compile-maxdepth byte-code-vector byte-stack+-info
+ (defun . byte-defop)
+ (defun . byte-extrude-byte-code-vectors)
+ byte-varref byte-varset byte-varbind byte-call byte-unbind byte-nth byte-nth byte-symbolp byte-symbolp byte-consp byte-consp byte-stringp byte-stringp byte-listp byte-listp byte-eq byte-eq byte-memq byte-memq byte-not byte-not byte-car byte-car byte-cdr byte-cdr byte-cons byte-cons byte-list1 byte-list1 byte-list2 byte-list2 byte-list3 byte-list3 byte-list4 byte-list4 byte-length byte-length byte-aref byte-aref byte-aset byte-aset byte-symbol-value byte-symbol-value byte-symbol-function byte-symbol-function byte-set byte-set byte-fset byte-fset byte-get byte-get byte-substring byte-substring byte-concat2 byte-concat2 byte-concat3 byte-concat3 byte-concat4 byte-concat4 byte-sub1 byte-sub1 byte-add1 byte-add1 byte-eqlsign byte-eqlsign byte-gtr byte-gtr byte-lss byte-lss byte-leq byte-leq byte-geq byte-geq byte-diff byte-diff byte-negate byte-negate byte-plus byte-plus byte-max byte-max byte-min byte-min byte-mult byte-mult byte-point byte-point byte-goto-char byte-goto-char byte-insert byte-insert byte-point-max byte-point-max byte-point-min byte-point-min byte-char-after byte-char-after byte-following-char byte-following-char byte-preceding-char byte-preceding-char byte-current-column byte-current-column byte-indent-to byte-indent-to byte-scan-buffer-OBSOLETE byte-scan-buffer-OBSOLETE byte-eolp byte-eolp byte-eobp byte-eobp byte-bolp byte-bolp byte-bobp byte-bobp byte-current-buffer byte-current-buffer byte-set-buffer byte-set-buffer byte-save-current-buffer byte-set-mark-OBSOLETE byte-set-mark-OBSOLETE byte-interactive-p byte-interactive-p byte-forward-char byte-forward-char byte-forward-word byte-forward-word byte-skip-chars-forward byte-skip-chars-forward byte-skip-chars-backward byte-skip-chars-backward byte-forward-line byte-forward-line byte-char-syntax byte-char-syntax byte-buffer-substring byte-buffer-substring byte-delete-region byte-delete-region byte-narrow-to-region byte-narrow-to-region byte-widen byte-widen byte-end-of-line byte-end-of-line byte-constant2 byte-goto byte-goto-if-nil byte-goto-if-not-nil byte-goto-if-nil-else-pop byte-goto-if-not-nil-else-pop byte-return byte-discard byte-dup byte-save-excursion byte-save-window-excursion byte-save-restriction byte-catch byte-unwind-protect byte-condition-case byte-condition-case byte-temp-output-buffer-setup byte-temp-output-buffer-setup byte-temp-output-buffer-show byte-temp-output-buffer-show byte-unbind-all byte-unbind-all byte-set-marker byte-set-marker byte-match-beginning byte-match-beginning byte-match-end byte-match-end byte-upcase byte-upcase byte-downcase byte-downcase byte-string= byte-string= byte-string< byte-string< byte-equal byte-equal byte-nthcdr byte-nthcdr byte-elt byte-elt byte-member byte-member byte-assq byte-assq byte-nreverse byte-nreverse byte-setcar byte-setcar byte-setcdr byte-setcdr byte-car-safe byte-car-safe byte-cdr-safe byte-cdr-safe byte-nconc byte-nconc byte-quo byte-quo byte-rem byte-rem byte-numberp byte-numberp byte-integerp byte-integerp byte-listN byte-listN byte-concatN byte-concatN byte-insertN byte-insertN byte-constant byte-constant-limit byte-goto-ops byte-goto-always-pop-ops byte-goto-always-pop-ops
+ (defun . byte-compile-lapcode)
+ (defun . byte-compile-eval)
+ (defun . byte-compile-eval-before-compile)
+ byte-compile-current-form byte-compile-dest-file byte-compile-current-file byte-compile-current-group byte-compile-current-buffer
+ (defun . byte-compile-log)
+ (defun . byte-compile-log-1)
+ byte-compile-read-position byte-compile-last-position
+ (defun . byte-compile-delete-first)
+ (defun . byte-compile-set-symbol-position)
+ byte-compile-last-warned-form byte-compile-last-logged-file
+ (defun . byte-compile-warning-prefix)
+ (defun . byte-compile-warning-series)
+ (defun . byte-compile-log-file)
+ (defun . byte-compile-log-warning)
+ (defun . byte-compile-warn)
+ (defun . byte-compile-warn-obsolete)
+ (defun . byte-compile-report-error)
+ (defun . byte-compile-obsolete)
+ (defun . byte-compile-fdefinition)
+ (defun . byte-compile-arglist-signature)
+ (defun . byte-compile-arglist-signatures-congruent-p)
+ (defun . byte-compile-arglist-signature-string)
+ (defun . byte-compile-callargs-warn)
+ (defun . byte-compile-format-warn)
+ (defun . byte-compile-nogroup-warn)
+ (defun . byte-compile-arglist-warn)
+ byte-compile-cl-functions
+ (defun . byte-compile-find-cl-functions)
+ (defun . byte-compile-cl-warn)
+ (defun . byte-compile-print-syms)
+ (defun . byte-compile-warn-about-unresolved-functions)
+ (defun . byte-compile-const-symbol-p)
+ (defun . byte-compile-constp)
+ (defun . byte-compile-close-variables)
+ (defun . displaying-byte-compile-warnings)
+ (t . byte-force-recompile)
+ (defun . byte-force-recompile)
+ (t . byte-recompile-directory)
+ (defun . byte-recompile-directory)
+ no-byte-compile
+ (t . byte-compile-file)
+ (defun . byte-compile-file)
+ (t . compile-defun)
+ (defun . compile-defun)
+ (defun . byte-compile-from-buffer)
+ (defun . byte-compile-fix-header)
+ (defun . byte-compile-insert-header)
+ (defun . byte-compile-output-file-form)
+ (defun . byte-compile-output-docform)
+ (defun . byte-compile-keep-pending)
+ (defun . byte-compile-flush-pending)
+ (defun . byte-compile-file-form)
+ (defun . byte-compile-file-form-defsubst)
+ (defun . byte-compile-file-form-autoload)
+ (defun . byte-compile-file-form-defvar)
+ (defun . byte-compile-file-form-define-abbrev-table)
+ (defun . byte-compile-file-form-custom-declare-variable)
+ (defun . byte-compile-file-form-require)
+ (defun . byte-compile-file-form-progn)
+ (defun . byte-compile-file-form-eval)
+ (defun . byte-compile-file-form-defun)
+ (defun . byte-compile-file-form-defmacro)
+ (defun . byte-compile-file-form-defmumble)
+ (defun . byte-compile-output-as-comment)
+ (t . byte-compile)
+ (defun . byte-compile)
+ (defun . byte-compile-sexp)
+ (defun . byte-compile-byte-code-maker)
+ (defun . byte-compile-byte-code-unmake)
+ (defun . byte-compile-check-lambda-list)
+ (defun . byte-compile-lambda)
+ (defun . byte-compile-constants-vector)
+ (defun . byte-compile-top-level)
+ (defun . byte-compile-out-toplevel)
+ (defun . byte-compile-top-level-body)
+ (defun . byte-compile-declare-function)
+ (defun . byte-compile-form)
+ (defun . byte-compile-normal-call)
+ (defun . byte-compile-variable-ref)
+ (defun . byte-compile-get-constant)
+ (defun . byte-compile-constant)
+ (defun . byte-compile-push-constant)
+ (defun . byte-defop-compiler)
+ (defun . byte-defop-compiler19)
+ (defun . byte-defop-compiler-1)
+ (defun . byte-compile-subr-wrong-args)
+ (defun . byte-compile-no-args)
+ (defun . byte-compile-one-arg)
+ (defun . byte-compile-two-args)
+ (defun . byte-compile-three-args)
+ (defun . byte-compile-zero-or-one-arg)
+ (defun . byte-compile-one-or-two-args)
+ (defun . byte-compile-two-or-three-args)
+ (defun . byte-compile-noop)
+ (defun . byte-compile-discard)
+ (defun . byte-compile-associative)
+ (defun . byte-compile-char-before)
+ (defun . byte-compile-backward-char)
+ (defun . byte-compile-backward-word)
+ (defun . byte-compile-list)
+ (defun . byte-compile-concat)
+ (defun . byte-compile-minus)
+ (defun . byte-compile-quo)
+ (defun . byte-compile-nconc)
+ (defun . byte-compile-fset)
+ (defun . byte-compile-funarg)
+ (defun . byte-compile-funarg-2)
+ (defun . byte-compile-function-form)
+ (defun . byte-compile-indent-to)
+ (defun . byte-compile-insert)
+ (defun . byte-compile-setq)
+ (defun . byte-compile-setq-default)
+ (defun . byte-compile-quote)
+ (defun . byte-compile-quote-form)
+ (defun . byte-compile-body)
+ (defun . byte-compile-body-do-effect)
+ (defun . byte-compile-form-do-effect)
+ (defun . byte-compile-progn)
+ (defun . byte-compile-prog1)
+ (defun . byte-compile-prog2)
+ (defun . byte-compile-goto-if)
+ (defun . byte-compile-find-bound-condition)
+ (defun . byte-compile-maybe-guarded)
+ (defun . byte-compile-if)
+ (defun . byte-compile-cond)
+ (defun . byte-compile-and)
+ (defun . byte-compile-and-recursion)
+ (defun . byte-compile-or)
+ (defun . byte-compile-or-recursion)
+ (defun . byte-compile-while)
+ (defun . byte-compile-funcall)
+ (defun . byte-compile-let)
+ (defun . byte-compile-let*)
+ (defun . byte-compile-negated)
+ (defun . byte-compile-negation-optimizer)
+ (defun . byte-compile-catch)
+ (defun . byte-compile-unwind-protect)
+ (defun . byte-compile-track-mouse)
+ (defun . byte-compile-condition-case)
+ (defun . byte-compile-save-excursion)
+ (defun . byte-compile-save-restriction)
+ (defun . byte-compile-save-current-buffer)
+ (defun . byte-compile-save-window-excursion)
+ (defun . byte-compile-with-output-to-temp-buffer)
+ (defun . byte-compile-defun)
+ (defun . byte-compile-defmacro)
+ (defun . byte-compile-defvar)
+ (defun . byte-compile-autoload)
+ (defun . byte-compile-lambda-form)
+ (defun . byte-compile-file-form-defalias)
+ (defun . byte-compile-defalias-warn)
+ (defun . byte-compile-no-warnings)
+ (defun . byte-compile-make-variable-buffer-local)
+ (defun . byte-compile-form-make-variable-buffer-local)
+ (defun . byte-compile-make-tag)
+ (defun . byte-compile-out-tag)
+ (defun . byte-compile-goto)
+ (defun . byte-compile-out)
+ (defun . byte-compile-annotate-call-tree)
+ (t . display-call-tree)
+ (defun . display-call-tree)
+ (t . batch-byte-compile-if-not-done)
+ (defun . batch-byte-compile-if-not-done)
+ (t . batch-byte-compile)
+ (defun . batch-byte-compile)
+ (defun . batch-byte-compile-file)
+ (t . batch-byte-recompile-directory)
+ (defun . batch-byte-recompile-directory)
+ (provide . byte-compile)
+ (provide . bytecomp)
+ (defun . byte-compile-report-ops))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/cl-macs.elc"
+ (require . cl)
+ (defun . cl-pop2)
+ (require . bytecomp)
+ cl-old-bc-file-form cl-simple-funcs cl-simple-funcs cl-safe-funcs cl-safe-funcs
+ (defun . cl-simple-expr-p)
+ (defun . cl-simple-exprs-p)
+ (defun . cl-safe-expr-p)
+ (defun . cl-const-expr-p)
+ (defun . cl-const-exprs-p)
+ (defun . cl-const-expr-val)
+ (defun . cl-expr-access-order)
+ (defun . cl-expr-contains)
+ (defun . cl-expr-contains-any)
+ (defun . cl-expr-depends-p)
+ (defun . gensym)
+ (defun . gentemp)
+ (defun . defun*)
+ (defun . defmacro*)
+ (defun . function*)
+ (defun . cl-transform-function-property)
+ lambda-list-keywords lambda-list-keywords cl-macro-environment
+ (defun . cl-transform-lambda)
+ (defun . cl-do-arglist)
+ (defun . cl-arglist-args)
+ (defun . destructuring-bind)
+ cl-not-toplevel
+ (defun . eval-when)
+ (defun . cl-compile-time-too)
+ (defun . load-time-value)
+ (defun . case)
+ (defun . ecase)
+ (defun . typecase)
+ (defun . etypecase)
+ (defun . block)
+ cl-active-block-names
+ (defun . cl-byte-compile-block)
+ (defun . cl-byte-compile-throw)
+ (defun . return)
+ (defun . return-from)
+ (defun . loop)
+ (defun . cl-parse-loop-clause)
+ (defun . cl-loop-let)
+ (defun . cl-loop-handle-accum)
+ (defun . cl-loop-build-ands)
+ (defun . do)
+ (defun . do*)
+ (defun . cl-expand-do-loop)
+ (defun . dolist)
+ (defun . dotimes)
+ (defun . do-symbols)
+ (defun . do-all-symbols)
+ (defun . psetq)
+ (defun . progv)
+ (defun . flet)
+ (defun . labels)
+ (defun . macrolet)
+ (defun . symbol-macrolet)
+ cl-closure-vars
+ (defun . lexical-let)
+ (defun . lexical-let*)
+ (defun . cl-defun-expander)
+ (defun . multiple-value-bind)
+ (defun . multiple-value-setq)
+ (defun . locally)
+ (defun . the)
+ cl-proclaim-history cl-declare-stack
+ (defun . cl-do-proclaim)
+ (defun . declare)
+ (defun . define-setf-method)
+ (defun . define-setf-expander)
+ (defun . defsetf)
+ (defun . cl-setf-make-apply)
+ (defun . get-setf-method)
+ (defun . cl-setf-do-modify)
+ (defun . cl-setf-do-store)
+ (defun . cl-setf-simple-store-p)
+ (defun . setf)
+ (defun . psetf)
+ (defun . cl-do-pop)
+ (defun . remf)
+ (defun . shiftf)
+ (defun . rotatef)
+ (defun . letf)
+ (defun . letf*)
+ (defun . callf)
+ (defun . callf2)
+ (defun . define-modify-macro)
+ (defun . defstruct)
+ (defun . cl-struct-setf-expander)
+ (defun . deftype)
+ (defun . cl-make-type-test)
+ (defun . typep)
+ (defun . check-type)
+ (defun . assert)
+ (defun . define-compiler-macro)
+ (defun . compiler-macroexpand)
+ (defun . cl-byte-compile-compiler-macro)
+ (defun . defsubst*)
+ (defun . cl-defsubst-expand))
+ ("/usr/share/emacs/23.0.93/lisp/textmodes/sgml-mode.elc" sgml-basic-offset sgml-transformation-function sgml-transformation sgml-mode-hook sgml-specials sgml-quick-keys sgml-mode-map
+ (defun . sgml-make-syntax-table)
+ sgml-mode-syntax-table sgml-tag-syntax-table sgml-name-8bit-mode sgml-char-names sgml-char-names-table sgml-validate-command sgml-saved-validate-command sgml-slash-distance sgml-namespace-re sgml-namespace-re sgml-name-re sgml-name-re sgml-tag-name-re sgml-tag-name-re sgml-attrs-re sgml-attrs-re sgml-start-tag-regex
+ (defface . sgml-namespace)
+ sgml-namespace-face sgml-font-lock-keywords-1 sgml-font-lock-keywords-1 sgml-font-lock-keywords-2 sgml-font-lock-keywords-2 sgml-font-lock-keywords sgml-font-lock-syntactic-keywords sgml-face-tag-alist sgml-tag-face-alist sgml-display-text sgml-tags-invisible sgml-tag-alist sgml-tag-help sgml-xml-mode sgml-empty-tags sgml-unclosed-tags
+ (defun . sgml-xml-guess)
+ (defun . sgml-comment-indent-new-line)
+ (defun . sgml-mode-facemenu-add-face-function)
+ (defun . sgml-fill-nobreak)
+ sgml-mode-map sgml-mode-syntax-table sgml-mode-abbrev-table sgml-mode-abbrev-table
+ (t . sgml-mode)
+ (defun . sgml-mode)
+ (defun . xml-mode)
+ (defun . sgml-comment-indent)
+ (defun . sgml-slash)
+ (defun . sgml-slash-matching)
+ (defun . sgml-name-char)
+ (defun . sgml-namify-char)
+ (defun . sgml-name-self)
+ (defun . sgml-maybe-name-self)
+ (defun . sgml-name-8bit-mode)
+ sgml-tag-last sgml-tag-history
+ (defun . sgml-tag)
+ (autoload . skeleton-read)
+ (defun . sgml-attributes)
+ (defun . sgml-auto-attributes)
+ (defun . sgml-tag-help)
+ (defun . sgml-maybe-end-tag)
+ (defun . sgml-skip-tag-backward)
+ sgml-electric-tag-pair-overlays sgml-electric-tag-pair-timer
+ (defun . sgml-electric-tag-pair-before-change-function)
+ (defun . sgml-electric-tag-pair-flush-overlays)
+ sgml-electric-tag-pair-mode
+ (defun . sgml-electric-tag-pair-mode)
+ (defun . sgml-skip-tag-forward)
+ (defun . sgml-delete-tag)
+ (defun . sgml-tags-invisible)
+ (defun . sgml-point-entered)
+ (defun . sgml-validate)
+ (defun . sgml-at-indentation-p)
+ (defun . sgml-lexical-context)
+ (defun . sgml-beginning-of-tag)
+ (defun . sgml-value)
+ (defun . sgml-quote)
+ (defun . sgml-pretty-print)
+ (defun . sgml-tag-type)
+ (defun . sgml-tag-start)
+ (defun . sgml-tag-end)
+ (defun . sgml-tag-name)
+ (defun . sgml-tag-p)
+ (defun . copy-sgml-tag)
+ (defun . make-sgml-tag)
+ (defun . sgml-make-tag)
+ (defun . sgml-parse-tag-name)
+ (defun . sgml-looking-back-at)
+ (defun . sgml-tag-text-p)
+ (defun . sgml-parse-tag-backward)
+ (defun . sgml-get-context)
+ (defun . sgml-show-context)
+ (defun . sgml-close-tag)
+ (defun . sgml-empty-tag-p)
+ (defun . sgml-unclosed-tag-p)
+ (defun . sgml-calculate-indent)
+ (defun . sgml-indent-line)
+ (defun . sgml-guess-indent)
+ (defun . sgml-parse-dtd)
+ html-mode-hook html-quick-keys html-mode-map html-face-tag-alist html-tag-face-alist html-display-text html-tag-alist html-tag-help html-mode-map html-mode-syntax-table html-mode-abbrev-table html-mode-abbrev-table
+ (t . html-mode)
+ (defun . html-mode)
+ html-imenu-regexp
+ (defun . html-imenu-index)
+ html-autoview-mode
+ (defun . html-autoview-mode)
+ (defun . html-href-anchor)
+ (defun . html-name-anchor)
+ (defun . html-headline-1)
+ (defun . html-headline-2)
+ (defun . html-headline-3)
+ (defun . html-headline-4)
+ (defun . html-headline-5)
+ (defun . html-headline-6)
+ (defun . html-horizontal-rule)
+ (defun . html-image)
+ (defun . html-line)
+ (defun . html-ordered-list)
+ (defun . html-unordered-list)
+ (defun . html-list-item)
+ (defun . html-paragraph)
+ (defun . html-checkboxes)
+ (defun . html-radio-buttons)
+ (provide . sgml-mode))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/rng-valid.elc"
+ (require . xmltok)
+ (require . nxml-enc)
+ (require . nxml-util)
+ (require . nxml-ns)
+ (require . rng-match)
+ (require . rng-util)
+ (require . rng-loc)
+ (defface . rng-error)
+ rng-state-cache-distance rng-validate-chunk-size rng-validate-delay rng-validate-quick-delay rng-validate-timer rng-validate-quick-timer rng-error-count rng-message-overlay rng-message-overlay-inhibit-point rng-message-overlay-current rng-open-elements rng-pending-contents rng-collecting-text rng-validate-up-to-date-end rng-conditional-up-to-date-start rng-conditional-up-to-date-end rng-parsing-for-state rng-validate-mode rng-dtd
+ (t . rng-validate-mode)
+ (defun . rng-validate-mode)
+ (defun . rng-set-schema-file-and-validate)
+ (defun . rng-set-document-type-and-validate)
+ (defun . rng-auto-set-schema-and-validate)
+ (defun . rng-after-change-function)
+ (defun . rng-compute-mode-line-string)
+ (defun . rng-cancel-timers)
+ (defun . rng-kill-timers)
+ (defun . rng-activate-timers)
+ (defun . rng-validate-clear)
+ rng-validate-display-point rng-validate-display-modified-p
+ (defun . rng-validate-while-idle-continue-p)
+ (defun . rng-validate-while-idle)
+ (defun . rng-validate-quick-while-idle)
+ (defun . rng-validate-done)
+ (defun . rng-do-some-validation)
+ (defun . rng-validate-prepare)
+ (defun . rng-do-some-validation-1)
+ (defun . rng-clear-conditional-region)
+ (defun . rng-clear-cached-state)
+ (defun . rng-cache-state)
+ (defun . rng-state-matches-current)
+ (defun . rng-get-state)
+ (defun . rng-restore-state)
+ (defun . rng-set-initial-state)
+ (defun . rng-clear-overlays)
+ (defun . rng-mark-xmltok-dependent-regions)
+ (defun . rng-mark-xmltok-dependent-region)
+ (defun . rng-dependent-region-changed)
+ (defun . rng-mark-xmltok-errors)
+ (defun . rng-mark-invalid)
+ (defun . rng-mark-not-well-formed)
+ (defun . rng-mark-error)
+ (defun . rng-error-modified)
+ (defun . rng-echo-area-clear-function)
+ (defun . rng-maybe-echo-error-at-point)
+ (defun . rng-error-overlay-after)
+ (defun . rng-first-error)
+ (defun . rng-mouse-first-error)
+ (defun . rng-next-error)
+ (defun . rng-previous-error)
+ (defun . rng-next-error-1)
+ (defun . rng-previous-error-1)
+ (defun . rng-goto-error-overlay)
+ (defun . rng-error-overlay-message)
+ (defun . rng-current-message-from-error-overlay-p)
+ (defun . rng-find-next-error-overlay)
+ (defun . rng-find-previous-error-overlay)
+ (defun . rng-forward)
+ (defun . rng-process-start-tag)
+ (defun . rng-process-namespaces)
+ (defun . rng-process-tag-name)
+ (defun . rng-process-attributes)
+ (defun . rng-process-start-tag-close)
+ (defun . rng-mark-start-tag-close)
+ (defun . rng-recover-bad-element-prefix)
+ (defun . rng-recover-bad-attribute-prefix)
+ (defun . rng-recover-duplicate-attribute-name)
+ (defun . rng-recover-start-tag-open)
+ (defun . rng-recover-attribute-value)
+ (defun . rng-recover-attribute-name)
+ (defun . rng-missing-attributes-message)
+ (defun . rng-process-end-tag)
+ (defun . rng-end-element)
+ (defun . rng-missing-element-message)
+ (defun . rng-recover-mismatched-end-tag)
+ (defun . rng-mark-missing-end-tags)
+ (defun . rng-mark-mismatched-end-tag)
+ (defun . rng-push-tag)
+ (defun . rng-pop-tag)
+ (defun . rng-contents-string)
+ (defun . rng-segment-string)
+ (defun . rng-segment-blank-p)
+ (defun . rng-contents-region)
+ (defun . rng-process-text)
+ (defun . rng-process-unknown-char)
+ (defun . rng-process-unknown-entity)
+ (defun . rng-region-blank-p)
+ (defun . rng-flush-text)
+ (defun . rng-process-end-document)
+ (defun . rng-process-encoding-name)
+ (defun . rng-name-to-string)
+ (provide . rng-valid))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/rng-loc.elc"
+ (require . nxml-util)
+ (require . nxml-parse)
+ (require . rng-parse)
+ (require . rng-uri)
+ (require . rng-util)
+ (require . xmltok)
+ rng-current-schema-file-name rng-schema-locating-files-default rng-schema-locating-file-schema-file rng-schema-locating-file-schema rng-schema-locating-files rng-schema-loader-alist rng-cached-document-element rng-document-type-history
+ (defun . rng-set-document-type)
+ (defun . rng-read-type-id)
+ (defun . rng-set-schema-file)
+ (defun . rng-set-vacuous-schema)
+ (defun . rng-set-schema-file-1)
+ (defun . rng-load-schema)
+ (defun . rng-what-schema)
+ (defun . rng-auto-set-schema)
+ (defun . rng-locate-schema-file)
+ (defun . rng-possible-type-ids)
+ (defun . rng-locate-schema-file-using)
+ (defun . rng-match-document-element-rule)
+ (defun . rng-match-namespace-rule)
+ (defun . rng-document-element)
+ (defun . rng-get-start-tag-namespace)
+ (defun . rng-match-transform-uri-rule)
+ (defun . rng-match-uri-rule)
+ (defun . rng-file-name-matches-uri-pattern-p)
+ (defun . rng-match-default-rule)
+ (defun . rng-possible-type-ids-using)
+ (defun . rng-locate-schema-file-from-type-id)
+ rng-schema-locating-file-alist
+ (defun . rng-get-parsed-schema-locating-file)
+ rng-locate-namespace-uri rng-locate-namespace-uri
+ (defun . rng-parse-schema-locating-file)
+ (defun . rng-save-schema-location)
+ (defun . rng-save-schema-location-1)
+ (provide . rng-loc))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/rng-uri.elc"
+ (defun . rng-file-name-uri)
+ (defun . rng-uri-escape-multibyte)
+ (defun . rng-percent-encode)
+ (defun . rng-uri-file-name)
+ (defun . rng-uri-pattern-file-name-regexp)
+ (defun . rng-uri-pattern-file-name-replace-match)
+ (defun . rng-uri-file-name-1)
+ (defun . rng-uri-error)
+ (defun . rng-uri-split)
+ (defun . rng-uri-join)
+ (defun . rng-uri-resolve)
+ (defun . rng-resolve-path)
+ (defun . rng-relative-uri)
+ (defun . rng-relative-path)
+ (defun . rng-split-path)
+ (defun . rng-join-path)
+ (defun . rng-uri-unescape-multibyte)
+ (defun . rng-multibyte-percent-decode)
+ (defun . rng-uri-unescape-unibyte)
+ (defun . rng-uri-unescape-unibyte-match)
+ (defun . rng-uri-unescape-unibyte-replace)
+ (provide . rng-uri))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/rng-parse.elc"
+ (require . nxml-parse)
+ (require . rng-match)
+ (require . rng-dt)
+ rng-parse-prev-was-start-tag
+ (defun . rng-parse-validate-file)
+ (defun . rng-parse-do-validate)
+ (defun . rng-parse-to-match-name)
+ (provide . rng-parse))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/nxml-parse.elc"
+ (require . nxml-util)
+ (require . xmltok)
+ (require . nxml-enc)
+ (require . nxml-ns)
+ nxml-parse-file-name nxml-validate-function
+ (defun . nxml-parse-file)
+ (defun . nxml-parse-find-file)
+ (defun . nxml-parse-instance)
+ (defun . nxml-parse-instance-1)
+ (defun . nxml-parse-start-tag)
+ (defun . nxml-validate-tag)
+ (defun . nxml-validate-error-position)
+ (defun . nxml-make-name)
+ (defun . nxml-current-text-string)
+ (defun . nxml-parse-error)
+ (defun . nxml-check-xmltok-errors)
+ (provide . nxml-parse))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/rng-match.elc"
+ (require . rng-pttrn)
+ (require . rng-util)
+ (require . rng-dt)
+ rng-not-allowed-ipattern rng-empty-ipattern rng-text-ipattern rng-compile-table rng-being-compiled rng-ipattern-table rng-last-ipattern-index rng-match-state
+ (defun . rng-update-match-state)
+ (defun . rng-ipattern-defslot)
+ (defun . rng-ipattern-get-type)
+ (defun . rng-ipattern-set-type)
+ (defun . rng-ipattern-get-index)
+ (defun . rng-ipattern-set-index)
+ (defun . rng-ipattern-get-name-class)
+ (defun . rng-ipattern-set-name-class)
+ (defun . rng-ipattern-get-datatype)
+ (defun . rng-ipattern-set-datatype)
+ (defun . rng-ipattern-get-after)
+ (defun . rng-ipattern-set-after)
+ (defun . rng-ipattern-get-child)
+ (defun . rng-ipattern-set-child)
+ (defun . rng-ipattern-get-value-object)
+ (defun . rng-ipattern-set-value-object)
+ (defun . rng-ipattern-get-nullable)
+ (defun . rng-ipattern-set-nullable)
+ (defun . rng-ipattern-get-memo-text-typed)
+ (defun . rng-ipattern-set-memo-text-typed)
+ (defun . rng-ipattern-get-memo-map-start-tag-open-deriv)
+ (defun . rng-ipattern-set-memo-map-start-tag-open-deriv)
+ (defun . rng-ipattern-get-memo-map-start-attribute-deriv)
+ (defun . rng-ipattern-set-memo-map-start-attribute-deriv)
+ (defun . rng-ipattern-get-memo-start-tag-close-deriv)
+ (defun . rng-ipattern-set-memo-start-tag-close-deriv)
+ (defun . rng-ipattern-get-memo-text-only-deriv)
+ (defun . rng-ipattern-set-memo-text-only-deriv)
+ (defun . rng-ipattern-get-memo-mixed-text-deriv)
+ (defun . rng-ipattern-set-memo-mixed-text-deriv)
+ (defun . rng-ipattern-get-memo-map-data-deriv)
+ (defun . rng-ipattern-set-memo-map-data-deriv)
+ (defun . rng-ipattern-get-memo-end-tag-deriv)
+ (defun . rng-ipattern-set-memo-end-tag-deriv)
+ rng-memo-map-alist-max rng-memo-map-alist-max
+ (defun . rng-memo-map-get)
+ (defun . rng-memo-map-add)
+ (defun . rng-make-ipattern)
+ (defun . rng-ipattern-maybe-init)
+ (defun . rng-ipattern-clear)
+ (defun . rng-gen-ipattern-index)
+ (defun . rng-put-ipattern)
+ (defun . rng-get-ipattern)
+ rng-const-ipatterns rng-const-ipatterns
+ (defun . rng-intern-after)
+ (defun . rng-intern-attribute)
+ (defun . rng-intern-data)
+ (defun . rng-intern-data-except)
+ (defun . rng-intern-value)
+ (defun . rng-intern-one-or-more)
+ (defun . rng-intern-one-or-more-shortcut)
+ (defun . rng-intern-list)
+ (defun . rng-intern-group)
+ (defun . rng-intern-group-shortcut)
+ (defun . rng-normalize-group-list)
+ (defun . rng-intern-interleave)
+ (defun . rng-normalize-interleave-list)
+ (defun . rng-intern-choice)
+ (defun . rng-intern-optional)
+ (defun . rng-intern-choice1)
+ (defun . rng-intern-choice-shortcut)
+ (defun . rng-normalize-choice-list)
+ (defun . rng-compare-ipattern)
+ (defun . rng-name-class-contains)
+ (defun . rng-name-class-contains1)
+ (defun . rng-name-class-possible-names)
+ (defun . rng-ipattern-to-string)
+ (defun . rng-name-class-to-string)
+ (defun . rng-compile-maybe-init)
+ (defun . rng-compile-clear)
+ (defun . rng-compile)
+ (defun . rng-compile-not-allowed)
+ (defun . rng-compile-empty)
+ (defun . rng-compile-text)
+ (defun . rng-compile-element)
+ (defun . rng-element-get-child)
+ (defun . rng-compile-attribute)
+ (defun . rng-compile-ref)
+ (defun . rng-compile-one-or-more)
+ (defun . rng-compile-zero-or-more)
+ (defun . rng-compile-optional)
+ (defun . rng-compile-mixed)
+ (defun . rng-compile-list)
+ (defun . rng-compile-choice)
+ (defun . rng-compile-group)
+ (defun . rng-compile-interleave)
+ (defun . rng-compile-dt)
+ (defun . rng-compile-data)
+ (defun . rng-compile-data-except)
+ (defun . rng-compile-value)
+ (defun . rng-compile-name-class)
+ (defun . rng-map-element-attribute)
+ (defun . rng-find-element-content-pattern)
+ (defun . rng-search-name)
+ (defun . rng-find-name-class-uris)
+ (defun . rng-accum-namespace-uri)
+ (defun . rng-ipattern-text-typed-p)
+ (defun . rng-ipattern-compute-text-typed-p)
+ (defun . rng-start-tag-open-deriv)
+ (defun . rng-ipattern-memo-start-tag-open-deriv)
+ (defun . rng-compute-start-tag-open-deriv)
+ (defun . rng-start-attribute-deriv)
+ (defun . rng-ipattern-memo-start-attribute-deriv)
+ (defun . rng-compute-start-attribute-deriv)
+ (defun . rng-cons-group-after)
+ (defun . rng-subst-group-after)
+ (defun . rng-subst-interleave-after)
+ (defun . rng-apply-after)
+ (defun . rng-start-tag-close-deriv)
+ rng-transform-map rng-transform-map
+ (defun . rng-compute-start-tag-close-deriv)
+ (defun . rng-ignore-attributes-deriv)
+ (defun . rng-text-only-deriv)
+ (defun . rng-compute-text-only-deriv)
+ (defun . rng-mixed-text-deriv)
+ (defun . rng-compute-mixed-text-deriv)
+ (defun . rng-end-tag-deriv)
+ (defun . rng-compute-end-tag-deriv)
+ (defun . rng-data-deriv)
+ (defun . rng-namespace-context-tracer)
+ (defun . rng-namespace-context-get-no-trace)
+ rng-memo-data-deriv-max-length
+ (defun . rng-ipattern-memo-data-deriv)
+ (defun . rng-compute-data-deriv)
+ (defun . rng-transform-multi)
+ (defun . rng-transform-choice)
+ (defun . rng-transform-group)
+ (defun . rng-transform-interleave)
+ (defun . rng-transform-one-or-more)
+ (defun . rng-transform-after-child)
+ (defun . rng-transform-interleave-single)
+ (defun . rng-transform-group-nullable)
+ (defun . rng-transform-group-nullable-gen-choices)
+ (defun . rng-members-eq)
+ (defun . rng-ipattern-after)
+ (defun . rng-unknown-start-tag-open-deriv)
+ (defun . rng-ipattern-optionalize-elements)
+ (defun . rng-ipattern-empty-before-p)
+ (defun . rng-ipattern-possible-start-tags)
+ (defun . rng-ipattern-start-tag-possible-p)
+ (defun . rng-ipattern-possible-attributes)
+ (defun . rng-ipattern-possible-values)
+ (defun . rng-ipattern-required-element)
+ (defun . rng-ipattern-required-attributes)
+ (defun . rng-compile-error)
+ (defun . rng-match-state)
+ (defun . rng-set-match-state)
+ (defun . rng-match-state-equal)
+ (defun . rng-schema-changed)
+ (defun . rng-match-init-buffer)
+ (defun . rng-match-start-document)
+ (defun . rng-match-start-tag-open)
+ (defun . rng-match-attribute-name)
+ (defun . rng-match-attribute-value)
+ (defun . rng-match-element-value)
+ (defun . rng-match-start-tag-close)
+ (defun . rng-match-mixed-text)
+ (defun . rng-match-end-tag)
+ (defun . rng-match-after)
+ (defun . rng-match-out-of-context-start-tag-open)
+ (defun . rng-match-possible-namespace-uris)
+ (defun . rng-match-unknown-start-tag-open)
+ (defun . rng-match-optionalize-elements)
+ (defun . rng-match-ignore-attributes)
+ (defun . rng-match-text-typed-p)
+ (defun . rng-match-empty-content)
+ (defun . rng-match-empty-before-p)
+ (defun . rng-match-infer-start-tag-namespace)
+ (defun . rng-match-nullable-p)
+ (defun . rng-match-possible-start-tag-names)
+ (defun . rng-match-start-tag-possible-p)
+ (defun . rng-match-possible-attribute-names)
+ (defun . rng-match-possible-value-strings)
+ (defun . rng-match-required-element-name)
+ (defun . rng-match-required-attribute-names)
+ (defun . rng-match-save)
+ (defun . rng-match-with-schema)
+ (provide . rng-match))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/rng-dt.elc"
+ (require . rng-util)
+ rng-dt-error-reporter
+ (defun . rng-dt-error)
+ rng-dt-namespace-context-getter
+ (defun . rng-dt-make-value)
+ (defun . rng-dt-builtin-compile)
+ (provide . rng-dt))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/rng-util.elc"
+ (defun . rng-make-datatypes-uri)
+ rng-xsd-datatypes-uri rng-xsd-datatypes-uri rng-builtin-datatypes-uri rng-builtin-datatypes-uri
+ (defun . rng-uniquify-eq)
+ (defun . rng-uniquify-equal)
+ (defun . rng-blank-p)
+ (defun . rng-substq)
+ (defun . rng-complete-before-point)
+ (defun . rng-completion-exact-p)
+ (defun . rng-quote-string)
+ (defun . rng-escape-string)
+ (defun . rng-collapse-space)
+ (provide . rng-util))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/rng-pttrn.elc" rng-schema-change-hook rng-current-schema
+ (defun . rng-make-ref)
+ (defun . rng-ref-set)
+ (defun . rng-ref-get)
+ (defun . rng-make-choice)
+ (defun . rng-make-group)
+ (defun . rng-make-interleave)
+ (defun . rng-make-zero-or-more)
+ (defun . rng-make-one-or-more)
+ (defun . rng-make-optional)
+ (defun . rng-make-mixed)
+ (defun . rng-make-value)
+ (defun . rng-make-data)
+ (defun . rng-make-data-except)
+ (defun . rng-make-list)
+ (defun . rng-make-element)
+ (defun . rng-make-attribute)
+ (defun . rng-make-text)
+ (defun . rng-make-empty)
+ (defun . rng-make-not-allowed)
+ (defun . rng-make-any-name-name-class)
+ (defun . rng-make-any-name-except-name-class)
+ (defun . rng-make-ns-name-name-class)
+ (defun . rng-make-ns-name-except-name-class)
+ (defun . rng-make-name-name-class)
+ (defun . rng-make-choice-name-class)
+ rng-any-content rng-any-element
+ (defun . rng-make-name)
+ (defun . rng-make-datatype)
+ (provide . rng-pttrn))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/nxml-ns.elc"
+ (require . nxml-util)
+ nxml-ns-state nxml-ns-initial-state
+ (defun . nxml-ns-state)
+ (defun . nxml-ns-set-state)
+ (defun . nxml-ns-state-equal)
+ (defun . nxml-ns-save)
+ (defun . nxml-ns-init)
+ (defun . nxml-ns-push-state)
+ (defun . nxml-ns-pop-state)
+ (defun . nxml-ns-get-prefix)
+ (defun . nxml-ns-set-prefix)
+ (defun . nxml-ns-get-default)
+ (defun . nxml-ns-set-default)
+ (defun . nxml-ns-get-context)
+ (defun . nxml-ns-prefixes-for)
+ (defun . nxml-ns-prefix-for)
+ (defun . nxml-ns-changed-prefixes)
+ (provide . nxml-ns))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/nxml-mode.elc"
+ (require . xmltok)
+ (require . nxml-enc)
+ (require . nxml-glyph)
+ (require . nxml-util)
+ (require . nxml-rap)
+ (require . nxml-outln)
+ nxml-char-ref-display-glyph-flag nxml-mode-hook nxml-sexp-element-flag nxml-slash-auto-complete-flag nxml-child-indent nxml-attribute-indent nxml-bind-meta-tab-to-complete-flag nxml-prefer-utf-16-to-utf-8-flag nxml-prefer-utf-16-little-to-big-endian-flag nxml-default-buffer-file-coding-system nxml-auto-insert-xml-declaration-flag
+ (defface . nxml-delimited-data)
+ (defface . nxml-name)
+ (defface . nxml-ref)
+ (defface . nxml-delimiter)
+ (defface . nxml-text)
+ (defface . nxml-comment-content)
+ (defface . nxml-comment-delimiter)
+ (defface . nxml-processing-instruction-delimiter)
+ (defface . nxml-processing-instruction-target)
+ (defface . nxml-processing-instruction-content)
+ (defface . nxml-cdata-section-delimiter)
+ (defface . nxml-cdata-section-CDATA)
+ (defface . nxml-cdata-section-content)
+ (defface . nxml-char-ref-number)
+ (defface . nxml-char-ref-delimiter)
+ (defface . nxml-entity-ref-name)
+ (defface . nxml-entity-ref-delimiter)
+ (defface . nxml-tag-delimiter)
+ (defface . nxml-tag-slash)
+ (defface . nxml-element-prefix)
+ (defface . nxml-element-colon)
+ (defface . nxml-element-local-name)
+ (defface . nxml-attribute-prefix)
+ (defface . nxml-attribute-colon)
+ (defface . nxml-attribute-local-name)
+ (defface . nxml-namespace-attribute-xmlns)
+ (defface . nxml-namespace-attribute-colon)
+ (defface . nxml-namespace-attribute-prefix)
+ (defface . nxml-attribute-value)
+ (defface . nxml-attribute-value-delimiter)
+ (defface . nxml-namespace-attribute-value)
+ (defface . nxml-namespace-attribute-value-delimiter)
+ (defface . nxml-prolog-literal-delimiter)
+ (defface . nxml-prolog-literal-content)
+ (defface . nxml-prolog-keyword)
+ (defface . nxml-markup-declaration-delimiter)
+ (defface . nxml-hash)
+ (defface . nxml-glyph)
+ nxml-prolog-regions nxml-last-fontify-end nxml-degraded nxml-completion-hook nxml-in-mixed-content-hook nxml-mixed-scan-distance nxml-end-tag-indent-scan-distance nxml-char-ref-extra-display nxml-mode-map nxml-font-lock-keywords
+ (defun . nxml-set-face)
+ (t . nxml-mode)
+ (defun . nxml-mode)
+ (defun . nxml-cleanup)
+ (defun . nxml-degrade)
+ (defun . nxml-debug-region)
+ (defun . nxml-after-change)
+ (defun . nxml-after-change1)
+ (defun . nxml-insert-xml-declaration)
+ (defun . nxml-prepare-to-save)
+ (defun . nxml-select-coding-system)
+ (defun . nxml-unsuitable-coding-system-message)
+ nxml-utf-16-coding-systems nxml-utf-16-coding-systems nxml-utf-coding-systems nxml-utf-coding-systems
+ (defun . nxml-coding-system-unicode-p)
+ (defun . nxml-coding-system-name)
+ (defun . nxml-fix-encoding-declaration)
+ (defun . nxml-choose-suitable-coding-system)
+ (defun . nxml-choose-utf-coding-system)
+ (defun . nxml-choose-utf-16-coding-system)
+ (defun . nxml-coding-system-member)
+ (defun . nxml-unfontify-region)
+ (defun . nxml-extend-region)
+ (defun . nxml-extend-after-change-region)
+ (defun . nxml-extend-after-change-region1)
+ (defun . nxml-fontify-matcher)
+ (defun . nxml-fontify-prolog)
+ (defun . nxml-apply-fontify-rule)
+ (defun . nxml-fontify-attributes)
+ (defun . nxml-fontify-attribute)
+ (defun . nxml-fontify-qname)
+ (defun . nxml-electric-slash)
+ (defun . nxml-balanced-close-start-tag-block)
+ (defun . nxml-balanced-close-start-tag-inline)
+ (defun . nxml-balanced-close-start-tag)
+ (defun . nxml-finish-element)
+ nxml-last-split-position
+ (defun . nxml-split-element)
+ (defun . nxml-finish-element-1)
+ (defun . nxml-indent-line)
+ (defun . nxml-compute-indent)
+ (defun . nxml-compute-indent-from-matching-start-tag)
+ (defun . nxml-compute-indent-from-previous-line)
+ (defun . nxml-merge-indent-context-type)
+ (defun . nxml-compute-indent-in-token)
+ (defun . nxml-compute-indent-in-start-tag)
+ (defun . nxml-attribute-value-boundary)
+ (defun . nxml-compute-indent-in-delimited-token)
+ (defun . nxml-complete)
+ (defun . nxml-forward-balanced-item)
+ (defun . nxml-forward-single-balanced-item)
+ (defun . nxml-backward-single-balanced-item)
+ (defun . nxml-scan-forward-within)
+ (defun . nxml-scan-backward-within)
+ (defun . nxml-scan-forward-in-attribute-value)
+ (defun . nxml-scan-backward-in-attribute-value)
+ (defun . nxml-find-following-attribute)
+ (defun . nxml-find-preceding-attribute)
+ (defun . nxml-up-element)
+ (defun . nxml-backward-up-element)
+ (defun . nxml-down-element)
+ (defun . nxml-backward-down-element)
+ (defun . nxml-forward-element)
+ (defun . nxml-backward-element)
+ (defun . nxml-mark-token-after)
+ (defun . nxml-mark-paragraph)
+ (defun . nxml-forward-paragraph)
+ (defun . nxml-backward-paragraph)
+ (defun . nxml-forward-single-paragraph)
+ (defun . nxml-backward-single-paragraph)
+ (defun . nxml-token-contains-data-p)
+ (defun . nxml-paragraph-end-pos)
+ (defun . nxml-paragraph-start-pos)
+ (defun . nxml-token-ends-line-p)
+ (defun . nxml-token-begins-line-p)
+ (defun . nxml-in-mixed-content-p)
+ (defun . nxml-preceding-sibling-data-p)
+ (defun . nxml-following-sibling-data-p)
+ (defun . nxml-do-fill-paragraph)
+ (defun . nxml-newline-and-indent)
+ nxml-dynamic-markup-prev-pos nxml-dynamic-markup-prev-lengths nxml-dynamic-markup-prev-found-marker nxml-dynamic-markup-prev-start-tags
+ (defun . nxml-dynamic-markup-word)
+ (defun . nxml-try-copy-markup)
+ nxml-char-name-ignore-case nxml-char-name-alist nxml-char-name-table nxml-autoload-char-name-set-list
+ (defun . nxml-enable-char-name-set)
+ (defun . nxml-disable-char-name-set)
+ (defun . nxml-char-name-set-enabled-p)
+ (defun . nxml-autoload-char-name-set)
+ (defun . nxml-define-char-name-set)
+ (defun . nxml-get-char-name)
+ nxml-named-char-history
+ (defun . nxml-insert-named-char)
+ (defun . nxml-maybe-load-char-name-set)
+ (defun . nxml-toggle-char-ref-extra-display)
+ (defun . nxml-char-ref-display-extra)
+ (defun . nxml-clear-char-ref-extra-display)
+ (defun . nxml-start-delimiter-length)
+ (defun . nxml-end-delimiter-length)
+ (defun . nxml-token-type-friendly-name)
+ (provide . nxml-mode))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/nxml-outln.elc"
+ (require . xmltok)
+ (require . nxml-util)
+ (require . nxml-rap)
+ nxml-section-element-name-regexp nxml-heading-element-name-regexp nxml-outline-child-indent
+ (defface . nxml-heading)
+ (defface . nxml-outline-indicator)
+ (defface . nxml-outline-active-indicator)
+ (defface . nxml-outline-ellipsis)
+ nxml-heading-scan-distance nxml-outline-prefix-map
+ (defun . nxml-show-all)
+ (defun . nxml-hide-all-text-content)
+ (defun . nxml-show-direct-text-content)
+ (defun . nxml-show-direct-subheadings)
+ (defun . nxml-hide-direct-text-content)
+ (defun . nxml-hide-subheadings)
+ (defun . nxml-show)
+ (defun . nxml-hide-text-content)
+ (defun . nxml-show-subheadings)
+ (defun . nxml-hide-other)
+ nxml-outline-state-transform-exceptions nxml-target-section-pos nxml-depth-in-target-section nxml-outline-state-transform-alist
+ (defun . nxml-transform-buffer-outline)
+ (defun . nxml-transform-subtree-outline)
+ (defun . nxml-outline-pre-adjust-point)
+ (defun . nxml-outline-adjust-point)
+ (defun . nxml-transform-outline-state)
+ (defun . nxml-section-tag-transform-outline-state)
+ (defun . nxml-get-outline-state)
+ (defun . nxml-set-outline-state)
+ (defun . nxml-mouse-show-direct-text-content)
+ (defun . nxml-mouse-hide-direct-text-content)
+ (defun . nxml-mouse-hide-subheadings)
+ (defun . nxml-mouse-show-direct-subheadings)
+ (defun . nxml-mouse-set-point)
+ (defun . nxml-token-start-tag-p)
+ (defun . nxml-token-end-tag-p)
+ (defun . nxml-refresh-outline)
+ nxml-outline-display-section-tag-function
+ (defun . nxml-outline-display-rest)
+ nxml-highlighted-less-than nxml-highlighted-less-than nxml-highlighted-greater-than nxml-highlighted-greater-than nxml-highlighted-colon nxml-highlighted-colon nxml-highlighted-slash nxml-highlighted-slash nxml-highlighted-ellipsis nxml-highlighted-ellipsis nxml-highlighted-empty-end-tag nxml-highlighted-empty-end-tag nxml-highlighted-inactive-minus nxml-highlighted-inactive-minus nxml-highlighted-active-minus nxml-highlighted-active-minus nxml-highlighted-active-plus nxml-highlighted-active-plus
+ (defun . nxml-display-section)
+ (defun . nxml-highlighted-qname)
+ (defun . nxml-outline-display-single-line-end-tag)
+ (defun . nxml-outline-display-multi-line-end-tag)
+ nxml-outline-show-map nxml-outline-show-help nxml-outline-hiding-tag-map nxml-outline-hiding-tag-help nxml-outline-showing-tag-map nxml-outline-showing-tag-help
+ (defun . nxml-outline-set-overlay)
+ (defun . nxml-end-of-heading)
+ (defun . nxml-token-starts-line-p)
+ nxml-cached-section-tag-regexp nxml-cached-section-element-name-regexp
+ (defun . nxml-make-section-tag-regexp)
+ (defun . nxml-make-section-tag-regexp-1)
+ (defun . nxml-section-tag-forward)
+ (defun . nxml-section-tag-backward)
+ (defun . nxml-section-start-position)
+ (defun . nxml-back-to-section-start)
+ (defun . nxml-after-section-start-tag)
+ (defun . nxml-heading-start-position)
+ (defun . nxml-report-outline-error)
+ (defun . nxml-outline-error)
+ (defun . nxml-debug-overlays)
+ (provide . nxml-outln))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/nxml-rap.elc"
+ (require . xmltok)
+ (require . nxml-util)
+ nxml-prolog-end nxml-scan-end
+ (defun . nxml-get-inside)
+ (defun . nxml-clear-inside)
+ (defun . nxml-set-inside)
+ (defun . nxml-inside-end)
+ (defun . nxml-inside-start)
+ (defun . nxml-scan-after-change)
+ (defun . nxml-scan-prolog)
+ (defun . nxml-adjust-start-for-dependent-regions)
+ (defun . nxml-mark-parse-dependent-regions)
+ (defun . nxml-mark-parse-dependent-region)
+ (defun . nxml-clear-dependent-regions)
+ (defun . nxml-token-after)
+ (defun . nxml-token-before)
+ (defun . nxml-tokenize-forward)
+ (defun . nxml-move-tag-backwards)
+ (defun . nxml-move-outside-backwards)
+ (defun . nxml-ensure-scan-up-to-date)
+ (defun . nxml-scan-element-forward)
+ (defun . nxml-scan-element-backward)
+ (defun . nxml-scan-error)
+ (provide . nxml-rap))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/nxml-util.elc" nxml-debug
+ (defun . nxml-debug)
+ (defun . nxml-debug-change)
+ (defun . nxml-debug-set-inside)
+ (defun . nxml-debug-clear-inside)
+ (defun . nxml-make-namespace)
+ (defun . nxml-namespace-name)
+ nxml-xml-namespace-uri nxml-xml-namespace-uri nxml-xmlns-namespace-uri nxml-xmlns-namespace-uri
+ (defun . nxml-with-degradation-on-error)
+ (defun . nxml-with-unmodifying-text-property-changes)
+ (defun . nxml-with-invisible-motion)
+ (defun . nxml-display-file-parse-error)
+ (defun . nxml-signal-file-parse-error)
+ (provide . nxml-util))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/nxml-glyph.elc" nxml-ascii-glyph-set nxml-ascii-glyph-set nxml-latin1-glyph-set nxml-latin1-glyph-set nxml-misc-fixed-1-glyph-set nxml-misc-fixed-2-glyph-set nxml-misc-fixed-3-glyph-set nxml-wgl4-glyph-set nxml-glyph-set-hook nxml-glyph-set
+ (defun . nxml-x-set-glyph-set)
+ (defun . nxml-w32-set-glyph-set)
+ (defun . nxml-window-system-set-glyph-set)
+ (defun . nxml-terminal-set-glyph-set)
+ (t . nxml-glyph-display-string)
+ (defun . nxml-glyph-display-string)
+ (defun . nxml-glyph-set-contains-p)
+ (provide . nxml-glyph))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/nxml-enc.elc" nxml-file-name-ignore-case nxml-cached-file-name-auto-coding-regexp nxml-cached-auto-mode-alist
+ (defun . nxml-file-name-auto-coding-regexp)
+ nxml-non-xml-set-auto-coding-function
+ (defun . nxml-set-auto-coding)
+ (defun . nxml-set-xml-coding)
+ (defun . nxml-detect-coding-system)
+ (defun . nxml-mime-charset-coding-system)
+ (defun . nxml-start-auto-coding)
+ (defun . nxml-stop-auto-coding)
+ (provide . nxml-enc))
+ ("/usr/share/emacs/23.0.93/lisp/nxml/xmltok.elc" xmltok-type xmltok-start xmltok-name-colon xmltok-name-end xmltok-replacement xmltok-attributes xmltok-namespace-attributes xmltok-dtd xmltok-dependent-regions xmltok-errors
+ (defun . xmltok-save)
+ (defun . xmltok-attribute-name-start)
+ (defun . xmltok-attribute-name-colon)
+ (defun . xmltok-attribute-name-end)
+ (defun . xmltok-attribute-value-start)
+ (defun . xmltok-attribute-value-end)
+ (defun . xmltok-attribute-raw-normalized-value)
+ (defun . xmltok-attribute-refs)
+ (defun . xmltok-attribute-prefix)
+ (defun . xmltok-attribute-local-name)
+ (defun . xmltok-attribute-value)
+ (defun . xmltok-start-tag-prefix)
+ (defun . xmltok-start-tag-local-name)
+ (defun . xmltok-end-tag-prefix)
+ (defun . xmltok-end-tag-local-name)
+ (defun . xmltok-start-tag-qname)
+ (defun . xmltok-end-tag-qname)
+ (defun . xmltok-make-attribute)
+ (defun . xmltok-error-message)
+ (defun . xmltok-error-start)
+ (defun . xmltok-error-end)
+ (defun . xmltok-make-error)
+ (defun . xmltok-add-error)
+ (defun . xmltok-add-dependent)
+ (defun . xmltok-forward)
+ (defun . xmltok-forward-special)
+ xmltok-ncname-regexp xmltok-ncname-regexp
+ (defun . xmltok-scan-after-lt)
+ (defun . xmltok-scan-after-processing-instruction-open)
+ (defun . xmltok-scan-after-comment-open)
+ (defun . xmltok-scan-attributes)
+ (defun . xmltok-add-attribute)
+ (defun . xmltok-normalize-attribute)
+ (defun . xmltok-scan-after-amp)
+ xmltok-entity-error-messages xmltok-entity-error-messages
+ (defun . xmltok-handle-entity)
+ (defun . xmltok-scan-char-ref)
+ (defun . xmltok-char-number)
+ (defun . xmltok-unclosed-reparse-p)
+ (defun . xmltok-semi-closed-reparse-p)
+ (defun . xmltok-valid-char-p)
+ (defun . xmltok-unicode-to-char)
+ xmltok-contains-doctype xmltok-doctype-external-subset-flag xmltok-internal-subset-start xmltok-had-param-entity-ref xmltok-prolog-regions xmltok-standalone xmltok-markup-declaration-doctype-flag xmltok-predefined-entity-alist xmltok-predefined-entity-alist
+ (defun . xmltok-forward-prolog)
+ xmltok-bad-xml-decl-regexp xmltok-bad-xml-decl-regexp
+ (t . xmltok-get-declared-encoding-position)
+ (defun . xmltok-get-declared-encoding-position)
+ (defun . xmltok-scan-xml-declaration)
+ xmltok-markup-declaration-alist xmltok-markup-declaration-alist
+ (defun . xmltok-parse-prolog-item)
+ (defun . xmltok-parse-doctype)
+ (defun . xmltok-parse-attlist-declaration)
+ (defun . xmltok-parse-nmtoken-group)
+ (defun . xmltok-parse-element-declaration)
+ (defun . xmltok-parse-model-group)
+ (defun . xmltok-parse-model-group-member)
+ (defun . xmltok-parse-entity-declaration)
+ (defun . xmltok-define-entity)
+ (defun . xmltok-parse-entity-value)
+ (defun . xmltok-parse-notation-declaration)
+ (defun . xmltok-parse-external-id)
+ (defun . xmltok-require-next-token)
+ (defun . xmltok-require-token)
+ (defun . xmltok-current-token-string)
+ (defun . xmltok-markup-declaration-parse-error)
+ (defun . xmltok-skip-markup-declaration)
+ (defun . xmltok-prolog-region-type)
+ (defun . xmltok-next-prolog-token)
+ (defun . xmltok-scan-prolog-literal)
+ (defun . xmltok-scan-prolog-after-processing-instruction-open)
+ (defun . xmltok-parse-entities)
+ (defun . xmltok-parse-entity)
+ (defun . xmltok-parse-entity-replacement)
+ (defun . xmltok-handle-nested-entity)
+ (defun . xmltok-append-entity-def)
+ (defun . xmltok-add-prolog-region)
+ (defun . xmltok-merge-attributes)
+ (defun . xmltok-forward-test)
+ (defun . xmltok-next-prolog-token-test)
+ (provide . xmltok))
+ ("/home/hobbes/nxhtml/util/mlinks.el" mlinks:version
+ (require . cl)
+ (require . ourcomments-util)
+ (require . url-parse)
+ (require . url-expand)
+ (require . appmenu)
+ mlinks-mode-functions mlinks-mode-map
+ (defun . mlinks-want-marked-links)
+ (defun . mlinks-after-change-major-mode)
+ mlinks-hilight-this-buffer mlinks-hilight-point-ovl mlinks-hilighter-timer
+ (defun . mlinks-toggle-hilight)
+ (defun . mlinks-stop-hilighter)
+ (defun . mlinks-start-hilighter)
+ (defun . mlinks-make-point-ovl)
+ (defun . mlinks-link-at-point)
+ (defun . mlinks-hilighter)
+ mlinks-active-hilight-keymap mlinks-inactive-hilight-keymap
+ (defun . mlinks-pre-command)
+ (defun . mlinks-activate-hilight)
+ (defun . mlinks-deactivate-hilight)
+ (defun . mlinks-someactivate-hilight)
+ (defun . mlinks-backward-link)
+ (defun . mlinks-forward-link)
+ (defun . mlinks-goto)
+ (defun . mlinks-goto-other-window)
+ (defun . mlinks-goto-other-frame)
+ (defun . mlinks-goto-1)
+ (defun . mlinks-get-boolean)
+ (defun . mlinks-get-action)
+ (defun . mlinks-prev-saved-position)
+ (defun . mlinks-next-saved-position)
+ (defun . mlinks-goto-n)
+ mlinks-places-n mlinks-places mlinks-temp-buffer-where
+ (defun . mlinks-switch-to-buffer)
+ (defun . mlinks-switch-to-buffer-1)
+ (defun . mlinks-custom)
+ (defun . mlinks-appmenu)
+ (defun . mlinks-add-appmenu)
+ (defun . mlinks-remove-overlays)
+ mlinks-mode
+ (t . mlinks-mode)
+ (defun . mlinks-mode)
+ (defun . mlinks-turn-on-in-buffer)
+ mlinks-mode-major-mode mlinks-global-mode
+ (defun . mlinks-global-mode)
+ mlinks-global-mode-buffers
+ (defun . mlinks-global-mode-enable-in-buffers)
+ (defun . mlinks-global-mode-check-buffers)
+ (defun . mlinks-global-mode-cmhh)
+ mlinks-active-links
+ (defun . mlinks-active-links-toggle)
+ (defface . mlinks-link)
+ mlinks-link
+ (defun . mlinks-mark-link)
+ mlinks-mark-links-timer
+ (defun . mlinks-mark-next-link)
+ mlinks-link-update-pos-min mlinks-link-update-pos-max
+ (defun . mlinks-stop-marking-links)
+ (defun . mlinks-start-marking-links)
+ mlinks-after-change-extra
+ (defun . mlinks-after-change)
+ (defun . mlinks-html-style-goto)
+ (defun . mlinks-html-style-hili)
+ (require . rx)
+ mlinks-html-link-regex
+ (defun . mlinks-html-forward-link)
+ (defun . mlinks-html-backward-link)
+ (defun . mlinks-html-style-mode-fun)
+ (defun . mlink-check-file-to-edit)
+ (defun . mlinks-html-edit-at)
+ (defun . mlinks-html-mail-to)
+ (defun . mlinks-html-href-act-on)
+ (defun . mlinks-html-possible-href-actions)
+ (defun . mlinks-html-find-base-href)
+ (defun . mlinks-elisp-custom-goto)
+ (defun . mlinks-custom-next-mark)
+ (defun . mlinks-elisp-goto)
+ (defun . mlinks-elisp-hili)
+ (defun . mlinks-elisp-mode-fun)
+ (defun . mlinks-elisp-function)
+ (defun . mlinks-elisp-mode-symbol)
+ (defun . mlinks-elisp-mode-require)
+ (defun . mlinks-hit-test)
+ (defun . mlinks-handle-reg-fun-list)
+ (provide . mlinks))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/rx.elc" rx-constituents rx-syntax rx-categories rx-greedy-flag
+ (defun . rx-info)
+ (defun . rx-check)
+ (defun . rx-group-if)
+ (defun . rx-and)
+ (defun . rx-or)
+ (defun . rx-anything)
+ (defun . rx-any-delete-from-range)
+ (defun . rx-any-condense-range)
+ (defun . rx-check-any-string)
+ (defun . rx-check-any)
+ (defun . rx-any)
+ (defun . rx-check-not)
+ (defun . rx-not)
+ (defun . rx-not-char)
+ (defun . rx-not-syntax)
+ (defun . rx-trans-forms)
+ (defun . rx-=)
+ (defun . rx->=)
+ (defun . rx-**)
+ (defun . rx-repeat)
+ (defun . rx-submatch)
+ (defun . rx-backref)
+ (defun . rx-check-backref)
+ (defun . rx-kleene)
+ (defun . rx-atomic-p)
+ (defun . rx-syntax)
+ (defun . rx-check-category)
+ (defun . rx-category)
+ (defun . rx-eval)
+ (defun . rx-greedy)
+ (defun . rx-regexp)
+ (defun . rx-form)
+ (t . rx-to-string)
+ (defun . rx-to-string)
+ (t . rx)
+ (defun . rx)
+ (provide . rx))
+ ("/home/hobbes/nxhtml/util/appmenu.el" appmenu:version
+ (require . cl)
+ appmenu-show-help appmenu-show-point-menu appmenu-alist
+ (defun . appmenu-sort-by-priority)
+ (t . appmenu-add)
+ (defun . appmenu-add)
+ (defun . appmenu-remove)
+ (defun . appmenu-help)
+ (defun . appmenu-keymap-len)
+ appmenu-mouse-only
+ (defun . appmenu-make-menu-for-point)
+ (defun . appmenu-map)
+ (defun . appmenu-popup)
+ appmenu-mode-map appmenu-mode
+ (defun . appmenu-mode)
+ (provide . appmenu))
+ ("/usr/share/emacs/23.0.93/lisp/textmodes/flyspell.elc"
+ (require . ispell)
+ flyspell-highlight-flag flyspell-mark-duplications-flag flyspell-mark-duplications-exceptions flyspell-sort-corrections flyspell-duplicate-distance flyspell-delay flyspell-persistent-highlight flyspell-highlight-properties flyspell-default-delayed-commands flyspell-delayed-commands flyspell-default-deplacement-commands flyspell-deplacement-commands flyspell-issue-welcome-flag flyspell-issue-message-flag flyspell-incorrect-hook flyspell-default-dictionary flyspell-tex-command-regexp flyspell-check-tex-math-command flyspell-dictionaries-that-consider-dash-as-word-delimiter flyspell-abbrev-p flyspell-use-global-abbrev-table-p flyspell-mode-line-string flyspell-large-region flyspell-insert-function flyspell-before-incorrect-word-string flyspell-after-incorrect-word-string flyspell-use-meta-tab flyspell-auto-correct-binding flyspell-generic-check-word-predicate flyspell-generic-check-word-p
+ (defun . mail-mode-flyspell-verify)
+ (defun . texinfo-mode-flyspell-verify)
+ (defun . tex-mode-flyspell-verify)
+ (defun . sgml-mode-flyspell-verify)
+ flyspell-prog-text-faces
+ (defun . flyspell-generic-progmode-verify)
+ (t . flyspell-prog-mode)
+ (defun . flyspell-prog-mode)
+ flyspell-mouse-map flyspell-mode-map flyspell-consider-dash-as-word-delimiter-flag flyspell-dash-dictionary flyspell-dash-local-dictionary
+ (defface . flyspell-incorrect)
+ (defface . flyspell-duplicate)
+ flyspell-overlay flyspell-mode
+ (t . flyspell-mode)
+ (defun . flyspell-mode)
+ (t . turn-on-flyspell)
+ (defun . turn-on-flyspell)
+ (t . turn-off-flyspell)
+ (defun . turn-off-flyspell)
+ flyspell-buffers
+ (defun . flyspell-minibuffer-p)
+ flyspell-last-buffer
+ (defun . flyspell-accept-buffer-local-defs)
+ (defun . flyspell-hack-local-variables-hook)
+ (defun . flyspell-kill-ispell-hook)
+ (defun . flyspell-mode-on)
+ (defun . flyspell-delay-commands)
+ (defun . flyspell-delay-command)
+ (defun . flyspell-deplacement-commands)
+ (defun . flyspell-deplacement-command)
+ flyspell-word-cache-start flyspell-word-cache-end flyspell-word-cache-word flyspell-word-cache-result flyspell-pre-buffer flyspell-pre-point flyspell-pre-column flyspell-pre-pre-buffer flyspell-pre-pre-point flyspell-previous-command
+ (defun . flyspell-pre-command-hook)
+ (t . flyspell-mode-off)
+ (defun . flyspell-mode-off)
+ (defun . flyspell-check-pre-word-p)
+ flyspell-changes
+ (defun . flyspell-after-change-function)
+ (defun . flyspell-check-changed-word-p)
+ (defun . flyspell-check-word-p)
+ (defun . flyspell-debug-signal-no-check)
+ (defun . flyspell-debug-signal-pre-word-checked)
+ (defun . flyspell-debug-signal-word-checked)
+ (defun . flyspell-debug-signal-changed-checked)
+ (defun . flyspell-post-command-hook)
+ (defun . flyspell-notify-misspell)
+ (defun . flyspell-word-search-backward)
+ (defun . flyspell-word-search-forward)
+ (defun . flyspell-word)
+ (defun . flyspell-math-tex-command-p)
+ (defun . flyspell-tex-command-p)
+ flyspell-casechars-cache flyspell-ispell-casechars-cache
+ (defun . flyspell-get-casechars)
+ flyspell-not-casechars-cache flyspell-ispell-not-casechars-cache
+ (defun . flyspell-get-not-casechars)
+ (defun . flyspell-get-word)
+ (defun . flyspell-small-region)
+ flyspell-external-ispell-process flyspell-external-ispell-buffer flyspell-large-region-buffer flyspell-large-region-beg flyspell-large-region-end
+ (defun . flyspell-external-point-words)
+ (defun . flyspell-process-localwords)
+ (defun . flyspell-check-region-doublons)
+ (defun . flyspell-large-region)
+ (t . flyspell-region)
+ (defun . flyspell-region)
+ (t . flyspell-buffer)
+ (defun . flyspell-buffer)
+ flyspell-old-buffer-error flyspell-old-pos-error
+ (defun . flyspell-goto-next-error)
+ (defun . flyspell-overlay-p)
+ (defun . flyspell-delete-region-overlays)
+ (defun . flyspell-delete-all-overlays)
+ (defun . flyspell-unhighlight-at)
+ (defun . flyspell-properties-at-p)
+ (defun . make-flyspell-overlay)
+ (defun . flyspell-highlight-incorrect-region)
+ (defun . flyspell-highlight-duplicate-region)
+ flyspell-auto-correct-pos flyspell-auto-correct-region flyspell-auto-correct-ring flyspell-auto-correct-word
+ (defun . flyspell-check-previous-highlighted-word)
+ (defun . flyspell-display-next-corrections)
+ (defun . flyspell-abbrev-table)
+ (defun . flyspell-define-abbrev)
+ (defun . flyspell-auto-correct-word)
+ flyspell-auto-correct-previous-pos
+ (defun . flyspell-auto-correct-previous-hook)
+ (defun . flyspell-auto-correct-previous-word)
+ (defun . flyspell-correct-word)
+ (defun . flyspell-correct-word-before-point)
+ (defun . flyspell-do-correct)
+ (defun . flyspell-ajust-cursor-point)
+ (defun . flyspell-emacs-popup)
+ (defun . flyspell-xemacs-popup)
+ (defun . flyspell-maybe-correct-transposition)
+ (defun . flyspell-maybe-correct-doubling)
+ (defun . flyspell-already-abbrevp)
+ (defun . flyspell-change-abbrev)
+ (provide . flyspell))
+ ("/usr/share/emacs/23.0.93/lisp/textmodes/ispell.elc"
+ (defun . ispell-check-minver)
+ (defun . check-ispell-version)
+ ispell-highlight-p ispell-lazy-highlight ispell-highlight-face ispell-check-comments ispell-query-replace-choices ispell-skip-tib ispell-tib-ref-beginning ispell-tib-ref-end ispell-keep-choices-win ispell-choices-win-default-height ispell-program-name ispell-alternate-dictionary ispell-complete-word-dict ispell-message-dictionary-alist ispell-message-fcc-skip ispell-grep-command ispell-grep-options ispell-look-command ispell-look-p ispell-have-new-look ispell-look-options ispell-use-ptys-p ispell-following-word ispell-help-in-bufferp ispell-quietly ispell-format-word-function ispell-format-word ispell-use-framepop-p ispell-personal-dictionary ispell-silently-savep ispell-local-dictionary-overridden ispell-local-dictionary ispell-extra-args ispell-skip-html ispell-local-dictionary-alist ispell-dictionary-base-alist ispell-dictionary-alist ispell-really-aspell ispell-really-hunspell ispell-encoding8-command ispell-aspell-supports-utf8 ispell-required-version ispell-offset ispell-version ispell-version
+ (defun . ispell-check-version)
+ (defun . ispell-call-process)
+ (defun . ispell-call-process-region)
+ ispell-menu-map ispell-menu-xemacs ispell-menu-map-needed ispell-library-directory ispell-process ispell-async-processp ispell-aspell-dictionary-alist
+ (defun . ispell-find-aspell-dictionaries)
+ ispell-aspell-data-dir ispell-aspell-dict-dir
+ (defun . ispell-get-aspell-config-value)
+ (defun . ispell-aspell-find-dictionary)
+ (defun . ispell-aspell-add-aliases)
+ ispell-last-program-name ispell-initialize-spellchecker-hook
+ (defun . ispell-set-spellchecker-params)
+ (defun . ispell-valid-dictionary-list)
+ (defun . ispell-int-char)
+ ispell-current-dictionary ispell-current-personal-dictionary ispell-dictionary
+ (defun . ispell-decode-string)
+ (defun . ispell-get-decoded-string)
+ (defun . ispell-get-casechars)
+ (defun . ispell-get-not-casechars)
+ (defun . ispell-get-otherchars)
+ (defun . ispell-get-many-otherchars-p)
+ (defun . ispell-get-ispell-args)
+ (defun . ispell-get-extended-character-mode)
+ (defun . ispell-get-coding-system)
+ ispell-pdict-modified-p ispell-quit ispell-process-directory ispell-filter ispell-filter-continue ispell-output-buffer ispell-session-buffer ispell-cmd-args ispell-query-replace-marker ispell-recursive-edit-marker ispell-checking-message ispell-choices-buffer ispell-choices-buffer ispell-overlay ispell-words-keyword ispell-dictionary-keyword ispell-pdict-keyword ispell-parsing-keyword ispell-skip-region-alist ispell-tex-skip-alists ispell-html-skip-alists ispell-local-pdict ispell-buffer-local-name ispell-parser ispell-region-end ispell-check-only
+ (defun . ispell-accept-output)
+ (defun . ispell-send-replacement)
+ (defun . ispell-send-string)
+ (defun . ispell-insert-word)
+ (t . ispell-word)
+ (defun . ispell-word)
+ (defun . ispell-get-word)
+ (t . ispell-pdict-save)
+ (defun . ispell-pdict-save)
+ (defun . ispell-command-loop)
+ (defun . ispell-show-choices)
+ (t . ispell-help)
+ (defun . ispell-help)
+ (defun . lookup-words)
+ (defun . ispell-filter)
+ (defun . ispell-highlight-spelling-error-generic)
+ (defun . ispell-highlight-spelling-error-xemacs)
+ (defun . ispell-highlight-spelling-error-overlay)
+ (defun . ispell-highlight-spelling-error)
+ (defun . ispell-adjusted-window-height)
+ (defun . ispell-overlay-window)
+ (defun . ispell-parse-output)
+ (defun . ispell-process-status)
+ (defun . ispell-start-process)
+ (defun . ispell-init-process)
+ (t . ispell-kill-ispell)
+ (defun . ispell-kill-ispell)
+ (t . ispell-change-dictionary)
+ (defun . ispell-change-dictionary)
+ (defun . ispell-internal-change-dictionary)
+ (t . ispell-region)
+ (defun . ispell-region)
+ (defun . ispell-begin-skip-region-regexp)
+ (defun . ispell-begin-skip-region)
+ (defun . ispell-begin-tex-skip-regexp)
+ (defun . ispell-skip-region-list)
+ (defun . ispell-tex-arg-end)
+ (defun . ispell-ignore-fcc)
+ (defun . ispell-skip-region)
+ (defun . ispell-get-line)
+ (defun . ispell-looking-at)
+ (defun . ispell-process-line)
+ (t . ispell-comments-and-strings)
+ (defun . ispell-comments-and-strings)
+ (t . ispell-buffer)
+ (defun . ispell-buffer)
+ (t . ispell-continue)
+ (defun . ispell-continue)
+ (defun . ispell-horiz-scroll)
+ (t . ispell-complete-word)
+ (defun . ispell-complete-word)
+ (t . ispell-complete-word-interior-frag)
+ (defun . ispell-complete-word-interior-frag)
+ (t . ispell)
+ (defun . ispell)
+ ispell-minor-mode ispell-minor-keymap
+ (t . ispell-minor-mode)
+ (defun . ispell-minor-mode)
+ (defun . ispell-minor-check)
+ ispell-message-text-end
+ (defun . ispell-mime-multipartp)
+ (defun . ispell-mime-skip-part)
+ (t . ispell-message)
+ (defun . ispell-message)
+ (defun . ispell-non-empty-string)
+ (defun . ispell-accept-buffer-local-defs)
+ (defun . ispell-buffer-local-parsing)
+ (defun . ispell-buffer-local-dict)
+ (defun . ispell-buffer-local-words)
+ (defun . ispell-add-per-file-word-list)
+ (provide . ispell))
+ ("/home/hobbes/nxhtml/nxhtml/html-site.el" html-site:version
+ (require . ourcomments-util)
+ (require . cl)
+ (require . dired)
+ (require . ffip)
+ (require . grep)
+ (defun . html-site-looks-like-local-url)
+ (require . url-parse)
+ (require . url-http)
+ (defun . html-site-dir-contains)
+ (defun . html-site-lwarn)
+ (defun . html-site-chk-wtocdir)
+ (t . html-site-buffer-or-dired-file-name)
+ (defun . html-site-buffer-or-dired-file-name)
+ (t . html-site-set-site)
+ (defun . html-site-set-site)
+ (t . html-site-dired-current)
+ (defun . html-site-dired-current)
+ (t . html-site-find-file)
+ (defun . html-site-find-file)
+ (t . html-site-rgrep)
+ (defun . html-site-rgrep)
+ (t . html-site-query-replace)
+ (defun . html-site-query-replace)
+ (defun . html-site-ensure-site-defined)
+ (defun . html-site-current-ensure-site-defined)
+ (defun . html-site-remote-contains)
+ (defun . html-site-current-remote-contains)
+ (defun . html-site-ensure-file-in-site)
+ (defun . html-site-current-ensure-file-in-site)
+ (defun . html-site-ensure-buffer-in-site)
+ (defun . html-site-current-ensure-buffer-in-site)
+ (defun . html-site-site-dir)
+ (defun . html-site-current-site-dir)
+ (defun . html-site-contains)
+ (defun . html-site-current-contains)
+ (defun . html-site-page-list)
+ (defun . html-site-current-page-list)
+ (defun . html-site-frames-file)
+ (defun . html-site-current-frames-file)
+ (defun . html-site-toc-file)
+ (defun . html-site-current-toc-file)
+ (defun . html-site-merge-dir)
+ (defun . html-site-current-merge-dir)
+ (defun . html-site-merge-template)
+ (defun . html-site-current-merge-template)
+ (defun . html-site-extra-fun)
+ (defun . html-site-current-extra-fun)
+ (defun . html-site-ftp-host)
+ (defun . html-site-current-ftp-host)
+ (defun . html-site-ftp-user)
+ (defun . html-site-current-ftp-user)
+ (defun . html-site-ftp-password)
+ (defun . html-site-current-ftp-password)
+ (defun . html-site-ftp-dir)
+ (defun . html-site-current-ftp-dir)
+ (defun . html-site-ftp-wtoc-dir)
+ (defun . html-site-current-ftp-wtoc-dir)
+ (defun . html-site-web-host)
+ (defun . html-site-current-web-host)
+ (defun . html-site-web-dir)
+ (defun . html-site-current-web-dir)
+ (defun . html-site-web-wtoc-dir)
+ (defun . html-site-current-web-wtoc-dir)
+ (defun . html-site-web-full)
+ (defun . html-site-current-web-full)
+ html-site-ftp-temporary-passwords
+ (defun . html-site-get-ftp-pw)
+ (defun . html-site-path-in-mirror)
+ (defun . html-site-local-to-web)
+ (defun . html-site-current-local-to-web)
+ (defun . html-site-remote-root)
+ (defun . html-site-current-remote-root)
+ (defun . html-site-local-to-remote)
+ (defun . html-site-current-local-to-remote)
+ (defun . html-site-remote-to-local)
+ (defun . html-site-current-remote-to-local)
+ html-site-files-re
+ (defun . html-site-edit-pages-file)
+ (defun . html-site-get-sub-files)
+ (defun . html-site-file-is-local)
+ html-site-list html-site-current noshell-procbuf-name noshell-proc-name
+ (defun . noshell-procbuf-setup)
+ (defun . noshell-procbuf-teardown)
+ (defun . noshell-procbuf-run)
+ (defun . noshell-sentinel)
+ (defun . noshell-procbuf-syncrun)
+ noshell-process-mode-map noshell-process-mode-syntax-table noshell-process-mode-abbrev-table noshell-process-mode-abbrev-table
+ (defun . noshell-process-mode)
+ (defun . noshell-quit)
+ (defun . noshell-kill-subprocess)
+ (provide . html-site)
+ (require . html-upl)
+ html-site-mode-menu-map html-site-mode-map html-site-mode
+ (defun . html-site-mode)
+ html-site-mode-off-list html-site-mode-major-mode html-site-global-mode
+ (defun . html-site-global-mode)
+ html-site-global-mode-buffers
+ (defun . html-site-global-mode-enable-in-buffers)
+ (defun . html-site-global-mode-check-buffers)
+ (defun . html-site-global-mode-cmhh))
+ ("/home/hobbes/nxhtml/nxhtml/html-upl.el" html-upl:version
+ (require . html-site)
+ html-upl-dir
+ (defun . html-upl-browse-remote)
+ (defun . html-upl-browse-remote-with-toc)
+ (defun . html-upl-browse-remote-frames)
+ (defun . html-upl-upload-site-with-toc)
+ (defun . html-upl-upload-site)
+ (defun . html-upl-upload-site1)
+ (defun . html-upl-ensure-site-has-host)
+ (defun . html-upl-remote-dired)
+ (defun . html-upl-upload-file)
+ (defun . html-upl-edit-remote-file)
+ (defun . html-upl-edit-remote-file-with-toc)
+ (defun . html-upl-edit-remote-file1)
+ (defun . html-upl-ediff-file)
+ (provide . html-upl))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/derived.elc"
+ (defun . derived-mode-hook-name)
+ (defun . derived-mode-map-name)
+ (defun . derived-mode-syntax-table-name)
+ (defun . derived-mode-abbrev-table-name)
+ (t . define-derived-mode)
+ (defun . define-derived-mode)
+ (defun . derived-mode-class)
+ (defun . derived-mode-make-docstring)
+ (defun . derived-mode-setup-function-name)
+ (t . derived-mode-init-mode-variables)
+ (defun . derived-mode-init-mode-variables)
+ (defun . derived-mode-set-keymap)
+ (defun . derived-mode-set-syntax-table)
+ (defun . derived-mode-set-abbrev-table)
+ (defun . derived-mode-run-hooks)
+ (defun . derived-mode-merge-keymaps)
+ (defun . derived-mode-merge-syntax-tables)
+ (defun . derived-mode-merge-abbrev-tables)
+ (provide . derived))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-http.elc"
+ (require . url-gw)
+ (require . url-util)
+ (require . url-parse)
+ (require . url-cookie)
+ (require . mail-parse)
+ (require . url-auth)
+ (require . url)
+ (autoload . url-cache-create-filename)
+ url-http-default-port url-http-asynchronous-p
+ (defun . url-http-expand-file-name)
+ url-http-real-basic-auth-storage url-http-proxy-basic-auth-storage url-http-open-connections url-http-version url-http-attempt-keepalives
+ (defun . url-http-debug)
+ (defun . url-http-mark-connection-as-busy)
+ (defun . url-http-mark-connection-as-free)
+ (defun . url-http-find-free-connection)
+ (defun . url-http-user-agent-string)
+ (defun . url-http-create-request)
+ (defun . url-http-clean-headers)
+ (defun . url-http-handle-authentication)
+ (defun . url-http-parse-response)
+ (defun . url-http-handle-cookies)
+ (defun . url-http-parse-headers)
+ (defun . url-http-activate-callback)
+ (defun . url-http-idle-sentinel)
+ (defun . url-http-end-of-document-sentinel)
+ (defun . url-http-simple-after-change-function)
+ (defun . url-http-content-length-after-change-function)
+ (defun . url-http-chunked-encoding-after-change-function)
+ (defun . url-http-wait-for-headers-change-function)
+ (t . url-http)
+ (defun . url-http)
+ (defun . url-http-async-sentinel)
+ (defun . url-http-generic-filter)
+ (defun . url-http-symbol-value-in-buffer)
+ (defun . url-http-head)
+ (t . url-http-file-exists-p)
+ (defun . url-http-file-exists-p)
+ (defun . url-http-file-readable-p)
+ (defun . url-http-head-file-attributes)
+ (t . url-http-file-attributes)
+ (defun . url-http-file-attributes)
+ (t . url-http-options)
+ (defun . url-http-options)
+ (require . tls)
+ url-https-default-port url-https-asynchronous-p
+ (defun . url-https-expand-file-name)
+ (defun . url-https-create-secure-wrapper)
+ (t . url-https)
+ (defun . url-https)
+ (t . url-https-file-exists-p)
+ (defun . url-https-file-exists-p)
+ (t . url-https-file-readable-p)
+ (defun . url-https-file-readable-p)
+ (t . url-https-file-attributes)
+ (defun . url-https-file-attributes)
+ (provide . url-http))
+ ("/usr/share/emacs/23.0.93/lisp/net/tls.elc"
+ (autoload . format-spec)
+ (autoload . format-spec-make)
+ tls-end-of-info tls-program tls-process-connection-type tls-success tls-checktrust tls-untrusted tls-hostmismatch tls-certtool-program
+ (defun . tls-certificate-information)
+ (t . open-tls-stream)
+ (defun . open-tls-stream)
+ (provide . tls))
+ ("/usr/share/emacs/23.0.93/lisp/url/url.elc"
+ (require . mailcap)
+ (require . url-vars)
+ (require . url-cookie)
+ (require . url-history)
+ (require . url-expand)
+ (require . url-privacy)
+ (require . url-methods)
+ (require . url-proxy)
+ (require . url-parse)
+ (require . url-util)
+ url-configuration-directory
+ (t . url-do-setup)
+ (defun . url-do-setup)
+ url-redirect-buffer
+ (t . url-retrieve)
+ (defun . url-retrieve)
+ (defun . url-retrieve-internal)
+ (t . url-retrieve-synchronously)
+ (defun . url-retrieve-synchronously)
+ (defun . url-mm-callback)
+ (defun . url-mm-url)
+ url-dead-buffer-list
+ (defun . url-mark-buffer-as-dead)
+ (defun . url-gc-dead-buffers)
+ (t . url-warn)
+ (defun . url-warn)
+ (provide . url))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-proxy.elc"
+ (require . url-parse)
+ (autoload . url-warn)
+ (defun . url-default-find-proxy-for-url)
+ url-proxy-locator
+ (defun . url-find-proxy-for-url)
+ (defun . url-proxy)
+ (provide . url-proxy))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-privacy.elc"
+ (require . url-vars)
+ (defun . url-device-type)
+ (t . url-setup-privacy-info)
+ (defun . url-setup-privacy-info)
+ (provide . url-privacy))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-expand.elc"
+ (require . url-methods)
+ (require . url-util)
+ (require . url-parse)
+ (defun . url-expander-remove-relative-links)
+ (defun . url-expand-file-name)
+ (defun . url-identity-expander)
+ (t . url-default-expander)
+ (defun . url-default-expander)
+ (provide . url-expand))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-history.elc"
+ (require . url-parse)
+ (autoload . url-do-setup)
+ url-history-track url-history-file url-history-save-interval url-history-timer url-history-changed-since-last-save url-history-hash-table
+ (defun . url-history-setup-save-timer)
+ (defun . url-history-parse-history)
+ (defun . url-history-update-url)
+ (defun . url-history-save-history)
+ (defun . url-have-visited-url)
+ (defun . url-completion-function)
+ (provide . url-history))
+ ("/usr/share/emacs/23.0.93/lisp/gnus/mailcap.elc"
+ (defun . mailcap-delete-duplicates)
+ (defun . mailcap-replace-in-string)
+ mailcap-parse-args-syntax-table mailcap-print-command mailcap-mime-data mailcap-download-directory mailcap-poor-system-types
+ (defun . mailcap-save-binary-file)
+ mailcap-maybe-eval-warning
+ (defun . mailcap-maybe-eval)
+ (defun . mailcap-replace-regexp)
+ mailcap-parsed-p
+ (defun . mailcap-parse-mailcaps)
+ (defun . mailcap-parse-mailcap)
+ (defun . mailcap-parse-mailcap-extras)
+ (defun . mailcap-mailcap-entry-passes-test)
+ (defun . mailcap-possible-viewers)
+ (defun . mailcap-unescape-mime-test)
+ mailcap-viewer-test-cache
+ (defun . mailcap-viewer-passes-test)
+ (defun . mailcap-add-mailcap-entry)
+ (defun . mailcap-add)
+ (defun . mailcap-viewer-lessp)
+ (defun . mailcap-mime-info)
+ mailcap-mime-extensions mailcap-mimetypes-parsed-p
+ (defun . mailcap-parse-mimetypes)
+ (defun . mailcap-parse-mimetype-file)
+ (defun . mailcap-extension-to-mime)
+ (defun . mailcap-command-p)
+ (defun . mailcap-mime-types)
+ (defun . mailcap-file-default-commands)
+ (provide . mailcap))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-auth.elc"
+ (require . url-vars)
+ (require . url-parse)
+ (autoload . url-warn)
+ (autoload . auth-source-user-or-password)
+ (defun . url-auth-user-prompt)
+ url-basic-auth-storage
+ (defun . url-basic-auth)
+ url-digest-auth-storage
+ (defun . url-digest-auth-create-key)
+ (defun . url-digest-auth)
+ url-registered-auth-schemes
+ (t . url-get-authentication)
+ (defun . url-get-authentication)
+ (t . url-register-auth-scheme)
+ (defun . url-register-auth-scheme)
+ (defun . url-auth-registered)
+ (provide . url-auth))
+ ("/usr/share/emacs/23.0.93/lisp/gnus/mail-parse.elc"
+ (require . mail-prsvr)
+ (require . ietf-drums)
+ (require . rfc2231)
+ (require . rfc2047)
+ (require . rfc2045)
+ (defun . mail-header-parse-content-type)
+ (defun . mail-header-parse-content-disposition)
+ (defun . mail-content-type-get)
+ (defun . mail-header-encode-parameter)
+ (t . mail-header-remove-comments)
+ (defun . mail-header-remove-comments)
+ (t . mail-header-remove-whitespace)
+ (defun . mail-header-remove-whitespace)
+ (defun . mail-header-strip)
+ (defun . mail-header-get-comment)
+ (defun . mail-header-parse-address)
+ (defun . mail-header-parse-addresses)
+ (defun . mail-header-parse-date)
+ (defun . mail-narrow-to-head)
+ (defun . mail-quote-string)
+ (defun . mail-header-make-address)
+ (defun . mail-header-fold-field)
+ (defun . mail-header-unfold-field)
+ (defun . mail-header-narrow-to-field)
+ (defun . mail-header-field-value)
+ (defun . mail-encode-encoded-word-region)
+ (defun . mail-encode-encoded-word-buffer)
+ (defun . mail-encode-encoded-word-string)
+ (defun . mail-decode-encoded-word-region)
+ (defun . mail-decode-encoded-word-string)
+ (defun . mail-decode-encoded-address-region)
+ (defun . mail-decode-encoded-address-string)
+ (provide . mail-parse))
+ ("/usr/share/emacs/23.0.93/lisp/gnus/rfc2231.elc"
+ (require . ietf-drums)
+ (require . rfc2047)
+ (autoload . mm-encode-body)
+ (autoload . mail-header-remove-whitespace)
+ (autoload . mail-header-remove-comments)
+ (defun . rfc2231-get-value)
+ (defun . rfc2231-parse-qp-string)
+ (defun . rfc2231-parse-string)
+ (defun . rfc2231-decode-encoded-string)
+ (defun . rfc2231-encode-string)
+ (provide . rfc2231))
+ ("/usr/share/emacs/23.0.93/lisp/gnus/rfc2047.elc"
+ (require . qp)
+ (require . mm-util)
+ (require . ietf-drums)
+ (require . mail-prsvr)
+ (require . rfc2045)
+ (autoload . mm-body-7-or-8)
+ rfc2047-header-encoding-alist rfc2047-charset-encoding-alist rfc2047-encode-function-alist rfc2047-encode-encoded-words rfc2047-allow-irregular-q-encoded-words rfc2047-encoded-word-regexp rfc2047-encoded-word-regexp-loose
+ (defun . rfc2047-qp-or-base64)
+ (defun . rfc2047-narrow-to-field)
+ (defun . rfc2047-field-value)
+ (defun . rfc2047-quote-special-characters-in-quoted-strings)
+ rfc2047-encoding-type
+ (defun . rfc2047-encode-message-header)
+ (defun . rfc2047-encodable-p)
+ rfc2047-syntax-table rfc2047-syntax-table
+ (defun . rfc2047-encode-region)
+ (defun . rfc2047-encode-string)
+ rfc2047-encode-max-chars
+ (defun . rfc2047-encode-1)
+ (defun . rfc2047-encode)
+ (defun . rfc2047-fold-field)
+ (defun . rfc2047-fold-region)
+ (defun . rfc2047-unfold-field)
+ (defun . rfc2047-unfold-region)
+ (defun . rfc2047-b-encode-string)
+ (defun . rfc2047-q-encode-string)
+ (defun . rfc2047-encode-parameter)
+ rfc2047-quote-decoded-words-containing-tspecials rfc2047-allow-incomplete-encoded-text
+ (defun . rfc2047-strip-backslashes-in-quoted-strings)
+ (defun . rfc2047-charset-to-coding-system)
+ (defun . rfc2047-decode-encoded-words)
+ (defun . rfc2047-decode-region)
+ (defun . rfc2047-decode-address-region)
+ (defun . rfc2047-decode-string)
+ (defun . rfc2047-decode-address-string)
+ (defun . rfc2047-pad-base64)
+ (provide . rfc2047))
+ ("/usr/share/emacs/23.0.93/lisp/gnus/rfc2045.elc"
+ (require . ietf-drums)
+ (defun . rfc2045-encode-string)
+ (provide . rfc2045))
+ ("/usr/share/emacs/23.0.93/lisp/gnus/qp.elc"
+ (require . mm-util)
+ (t . quoted-printable-decode-region)
+ (defun . quoted-printable-decode-region)
+ (defun . quoted-printable-decode-string)
+ (defun . quoted-printable-encode-region)
+ (defun . quoted-printable-encode-string)
+ (provide . qp))
+ ("/usr/share/emacs/23.0.93/lisp/gnus/ietf-drums.elc"
+ (require . time-date)
+ (require . mm-util)
+ ietf-drums-no-ws-ctl-token ietf-drums-text-token ietf-drums-specials-token ietf-drums-quote-token ietf-drums-wsp-token ietf-drums-fws-regexp ietf-drums-atext-token ietf-drums-dot-atext-token ietf-drums-qtext-token ietf-drums-tspecials ietf-drums-syntax-table
+ (defun . ietf-drums-token-to-list)
+ (defun . ietf-drums-init)
+ (defun . ietf-drums-remove-comments)
+ (defun . ietf-drums-remove-whitespace)
+ (defun . ietf-drums-get-comment)
+ (defun . ietf-drums-strip)
+ (defun . ietf-drums-parse-address)
+ (defun . ietf-drums-parse-addresses)
+ (defun . ietf-drums-unfold-fws)
+ (defun . ietf-drums-parse-date)
+ (defun . ietf-drums-narrow-to-header)
+ (defun . ietf-drums-quote-string)
+ (defun . ietf-drums-make-address)
+ (provide . ietf-drums))
+ ("/usr/share/emacs/23.0.93/lisp/calendar/time-date.elc"
+ (defun . with-decoded-time-value)
+ (defun . encode-time-value)
+ (autoload . parse-time-string)
+ (t . date-to-time)
+ (defun . date-to-time)
+ (t . time-to-seconds)
+ (defun . time-to-seconds)
+ (t . seconds-to-time)
+ (defun . seconds-to-time)
+ (t . time-less-p)
+ (defun . time-less-p)
+ (t . days-to-time)
+ (defun . days-to-time)
+ (t . time-since)
+ (defun . time-since)
+ (defun . subtract-time)
+ (t . time-subtract)
+ (defun . time-subtract)
+ (t . time-add)
+ (defun . time-add)
+ (t . date-to-day)
+ (defun . date-to-day)
+ (t . days-between)
+ (defun . days-between)
+ (t . date-leap-year-p)
+ (defun . date-leap-year-p)
+ (t . time-to-day-in-year)
+ (defun . time-to-day-in-year)
+ (t . time-to-days)
+ (defun . time-to-days)
+ (defun . time-to-number-of-days)
+ (t . safe-date-to-time)
+ (defun . safe-date-to-time)
+ (t . format-seconds)
+ (defun . format-seconds)
+ (provide . time-date))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-cookie.elc"
+ (require . timezone)
+ (require . url-util)
+ (require . url-parse)
+ (defun . url-cookie-tag)
+ (defun . url-cookie-name)
+ (defun . url-cookie-value)
+ (defun . url-cookie-expires)
+ (defun . url-cookie-localpart)
+ (defun . url-cookie-domain)
+ (defun . url-cookie-secure)
+ (defun . url-cookie-create)
+ url-cookie-storage url-cookie-secure-storage url-cookie-file url-cookie-confirmation url-cookie-multiple-line url-cookies-changed-since-last-save
+ (defun . url-cookie-parse-file)
+ (defun . url-cookie-clean-up)
+ (defun . url-cookie-write-file)
+ (defun . url-cookie-store)
+ (defun . url-cookie-expired-p)
+ (defun . url-cookie-retrieve)
+ (defun . url-cookie-generate-header-lines)
+ url-cookie-two-dot-domains url-cookie-trusted-urls url-cookie-untrusted-urls
+ (defun . url-cookie-host-can-set-p)
+ (defun . url-cookie-handle-set-cookie)
+ url-cookie-timer url-cookie-save-interval
+ (defun . url-cookie-setup-save-timer)
+ (provide . url-cookie))
+ ("/usr/share/emacs/23.0.93/lisp/timezone.elc" timezone-world-timezones timezone-months-assoc
+ (t . timezone-make-date-arpa-standard)
+ (defun . timezone-make-date-arpa-standard)
+ (defun . timezone-make-date-sortable)
+ (defun . timezone-make-arpa-date)
+ (defun . timezone-make-sortable-date)
+ (defun . timezone-make-time-string)
+ (t . timezone-parse-date)
+ (defun . timezone-parse-date)
+ (defun . timezone-parse-time)
+ (defun . timezone-zone-to-minute)
+ (defun . timezone-time-from-absolute)
+ (defun . timezone-time-zone-from-absolute)
+ (defun . timezone-fix-time)
+ (defun . timezone-last-day-of-month)
+ (defun . timezone-leap-year-p)
+ (defun . timezone-day-number)
+ (defun . timezone-absolute-from-gregorian)
+ (provide . timezone))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-util.elc"
+ (require . url-parse)
+ (autoload . timezone-parse-date)
+ (autoload . timezone-make-date-arpa-standard)
+ (autoload . mail-header-extract)
+ url-parse-args-syntax-table url-debug
+ (t . url-debug)
+ (defun . url-debug)
+ (t . url-parse-args)
+ (defun . url-parse-args)
+ (t . url-insert-entities-in-string)
+ (defun . url-insert-entities-in-string)
+ (t . url-normalize-url)
+ (defun . url-normalize-url)
+ (t . url-lazy-message)
+ (defun . url-lazy-message)
+ (t . url-get-normalized-date)
+ (defun . url-get-normalized-date)
+ (t . url-eat-trailing-space)
+ (defun . url-eat-trailing-space)
+ (t . url-strip-leading-spaces)
+ (defun . url-strip-leading-spaces)
+ (t . url-pretty-length)
+ (defun . url-pretty-length)
+ (t . url-display-percentage)
+ (defun . url-display-percentage)
+ (t . url-percentage)
+ (defun . url-percentage)
+ (defun . url-basepath)
+ (t . url-file-directory)
+ (defun . url-file-directory)
+ (t . url-file-nondirectory)
+ (defun . url-file-nondirectory)
+ (t . url-parse-query-string)
+ (defun . url-parse-query-string)
+ (defun . url-unhex)
+ (t . url-unhex-string)
+ (defun . url-unhex-string)
+ url-unreserved-chars
+ (t . url-hexify-string)
+ (defun . url-hexify-string)
+ (t . url-file-extension)
+ (defun . url-file-extension)
+ (t . url-truncate-url-for-viewing)
+ (defun . url-truncate-url-for-viewing)
+ (t . url-view-url)
+ (defun . url-view-url)
+ url-get-url-filename-chars
+ (defun . url-get-url-at-point)
+ (defun . url-generate-unique-filename)
+ (defun . url-extract-mime-headers)
+ (defun . url-make-private-file)
+ (provide . url-util))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-gw.elc"
+ (require . url-vars)
+ (autoload . socks-open-network-stream)
+ (autoload . open-ssl-stream)
+ (autoload . open-tls-stream)
+ url-gateway-local-host-regexp url-gateway-prompt-pattern url-gateway-rlogin-host url-gateway-rlogin-user-name url-gateway-rlogin-parameters url-gateway-telnet-host url-gateway-telnet-parameters url-gateway-telnet-login-prompt url-gateway-telnet-password-prompt url-gateway-telnet-user-name url-gateway-telnet-password url-gateway-broken-resolution url-gateway-nslookup-program
+ (t . url-gateway-nslookup-host)
+ (defun . url-gateway-nslookup-host)
+ (defun . url-wait-for-string)
+ (defun . url-open-rlogin)
+ (defun . url-open-telnet)
+ (t . url-open-stream)
+ (defun . url-open-stream)
+ (provide . url-gw))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-methods.elc"
+ (require . url-parse)
+ url-scheme-registry url-scheme-methods url-scheme-default-properties url-scheme-default-properties
+ (defun . url-scheme-default-loader)
+ (defun . url-scheme-register-proxy)
+ (t . url-scheme-get-property)
+ (defun . url-scheme-get-property)
+ (provide . url-methods))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-parse.elc"
+ (require . url-vars)
+ (autoload . url-scheme-get-property)
+ (defun . url-type)
+ (defun . url-user)
+ (defun . url-password)
+ (defun . url-host)
+ (defun . url-portspec)
+ (defun . url-filename)
+ (defun . url-target)
+ (defun . url-attributes)
+ (defun . url-fullness)
+ (defun . url-p)
+ (defun . url-parse-make-urlobj)
+ (defun . url-port)
+ (t . url-recreate-url)
+ (defun . url-recreate-url)
+ (defun . url-recreate-url-attributes)
+ (t . url-generic-parse-url)
+ (defun . url-generic-parse-url)
+ (provide . url-parse))
+ ("/usr/share/emacs/23.0.93/lisp/url/url-vars.elc"
+ (require . mm-util)
+ url-version url-current-object url-current-mime-headers url-honor-refresh-requests url-automatic-caching url-cache-expired url-bug-address url-personal-mail-address url-directory-index-file url-privacy-level url-inhibit-uncompression url-uncompressor-alist url-mail-command url-proxy-services url-standalone-mode url-mime-separator-chars url-bad-port-list url-mime-content-type-charset-regexp url-request-data url-request-extra-headers url-request-method url-mime-encoding-string
+ (defun . url-mime-charset-string)
+ url-mime-charset-string
+ (defun . url-set-mime-charset-string)
+ url-mime-language-string url-mime-accept-string url-package-version url-package-name url-system-type url-os-type url-max-password-attempts url-temporary-directory url-show-status url-using-proxy url-news-server url-nonrelative-link url-max-redirections url-confirmation-func url-gateway-method url-setup-done url-weekday-alist url-weekday-alist url-monthabbrev-alist url-monthabbrev-alist url-lazy-message-time url-extensions-header url-parse-syntax-table url-load-hook url-working-buffer url-working-buffer url-gateway-unplugged
+ (provide . url-vars))
+ ("/usr/share/emacs/23.0.93/lisp/gnus/mm-util.elc"
+ (require . mail-prsvr)
+ (require . timer)
+ (defun . mm-coding-system-list)
+ (defun . mm-char-int)
+ (defun . mm-coding-system-equal)
+ (defun . mm-annotationp)
+ (defun . mm-set-buffer-file-coding-system)
+ (defun . mm-read-charset)
+ (defun . mm-subst-char-in-string)
+ (defun . mm-replace-in-string)
+ (defun . mm-string-as-unibyte)
+ (defun . mm-string-make-unibyte)
+ (defun . mm-string-as-multibyte)
+ (defun . mm-multibyte-string-p)
+ (defun . mm-insert-byte)
+ (defun . mm-multibyte-char-to-unibyte)
+ (defun . mm-set-buffer-multibyte)
+ (defun . mm-special-display-p)
+ (defun . mm-substring-no-properties)
+ (defun . mm-line-number-at-pos)
+ (defun . mm-decode-coding-string)
+ (defun . mm-encode-coding-string)
+ (defun . mm-decode-coding-region)
+ (defun . mm-encode-coding-region)
+ (defun . mm-string-to-multibyte)
+ (defun . mm-char-or-char-int-p)
+ (defun . mm-ucs-to-char)
+ (defun . mm-read-coding-system)
+ mm-coding-system-list
+ (defun . mm-get-coding-system-list)
+ (defun . mm-coding-system-p)
+ (defun . mm-codepage-setup)
+ mm-charset-synonym-alist mm-codepage-iso-8859-list mm-codepage-ibm-list
+ (defun . mm-setup-codepage-iso-8859)
+ (defun . mm-setup-codepage-ibm)
+ mm-charset-eval-alist
+ (defun . mm-charset-to-coding-system)
+ mm-charset-override-alist mm-binary-coding-system mm-text-coding-system mm-text-coding-system-for-write mm-auto-save-coding-system mm-universal-coding-system mm-mime-mule-charset-alist
+ (defun . mm-enrich-utf-8-by-mule-ucs)
+ mm-hack-charsets mm-iso-8859-15-compatible mm-iso-8859-x-to-15-table mm-coding-system-priorities mm-use-find-coding-systems-region
+ (defun . mm-mule-charset-to-mime-charset)
+ mm-emacs-mule
+ (defun . mm-enable-multibyte)
+ (defun . mm-disable-multibyte)
+ (defun . mm-preferred-coding-system)
+ (defun . mm-guess-charset)
+ (defun . mm-charset-after)
+ (defun . mm-mime-charset)
+ (defun . mm-delete-duplicates)
+ (defun . mm-multibyte-p)
+ (defun . mm-default-multibyte-p)
+ (defun . mm-iso-8859-x-to-15-region)
+ (defun . mm-sort-coding-systems-predicate)
+ (defun . mm-xemacs-find-mime-charset-1)
+ (defun . mm-xemacs-find-mime-charset)
+ (defun . mm-find-mime-charset-region)
+ (defun . mm-with-unibyte-buffer)
+ (defun . mm-with-multibyte-buffer)
+ (defun . mm-with-unibyte-current-buffer)
+ (defun . mm-find-charset-region)
+ (defun . mm-auto-mode-alist)
+ mm-inhibit-file-name-handlers
+ (defun . mm-insert-file-contents)
+ (defun . mm-append-to-file)
+ (defun . mm-write-region)
+ (autoload . gmm-write-region)
+ (defun . mm-make-temp-file)
+ (defun . mm-image-load-path)
+ (defun . mm-detect-coding-region)
+ (defun . mm-detect-mime-charset-region)
+ (defun . mm-coding-system-to-mime-charset)
+ (defun . mm-decompress-buffer)
+ (defun . mm-find-buffer-file-coding-system)
+ (provide . mm-util))
+ ("/usr/share/emacs/23.0.93/lisp/gnus/mail-prsvr.elc" mail-parse-charset mail-parse-mule-charset mail-parse-ignored-charsets
+ (provide . mail-prsvr))
+ ("/home/hobbes/nxhtml/util/ffip.el"
+ (require . cl)
+ ffip-project-name ffip-project-roots ffip-project-type ffip-project-file-types ffip-project-file-matcher ffip-project-files-table
+ (defun . ffip-reset-project)
+ (defun . ffip-is-current)
+ (defun . ffip-set-current-project)
+ (defun . ffip-cache-project-files)
+ (defun . ffip-file-matcher)
+ (defun . ffip-project-files)
+ (defun . ffip-project-root)
+ (defun . ffip-populate-files-table)
+ (defun . ffip-get-unique-directory-names)
+ (defun . ffip-file-is-in-project)
+ (defun . ffip-add-file-if-in-project)
+ (defun . ffip-after-save)
+ (defun . ffip-find-file-in-dirtree)
+ (defun . ffip-find-file-in-project)
+ (provide . ffip))
+ ("/home/hobbes/nxhtml/util/ourcomments-util.el" ourcomments-util:version
+ (require . apropos)
+ (require . cl)
+ (require . grep)
+ (require . ido)
+ (require . recentf)
+ (defun . point-to-coord)
+ (t . popup-menu-at-point)
+ (defun . popup-menu-at-point)
+ (t . define-toggle)
+ (defun . define-toggle)
+ (t . unfill-paragraph)
+ (defun . unfill-paragraph)
+ (t . unfill-region)
+ (defun . unfill-region)
+ (t . unfill-individual-paragraphs)
+ (defun . unfill-individual-paragraphs)
+ (defun . with-unfilling)
+ (t . major-or-multi-majorp)
+ (defun . major-or-multi-majorp)
+ (t . multi-major-modep)
+ (defun . multi-major-modep)
+ (t . major-modep)
+ (defun . major-modep)
+ (t . ourcomments-move-beginning-of-line)
+ (defun . ourcomments-move-beginning-of-line)
+ (t . ourcomments-move-end-of-line)
+ (defun . ourcomments-move-end-of-line)
+ (defun . ourcomments-find-keymap-variables)
+ (defun . key-bindings)
+ (defun . describe-keymap-placement)
+ (t . describe-key-and-map-briefly)
+ (defun . describe-key-and-map-briefly)
+ wrap-to-fill-left-marg wrap-to-fill-left-marg-use wrap-to-fill-left-marg-modes
+ (defun . wrap-to-fill-set-prefix)
+ (defun . wrap-to-fill-after-change)
+ (defun . wrap-to-fill-scroll-fun)
+ (defun . wrap-to-fill-wider)
+ (defun . wrap-to-fill-narrower)
+ wrap-to-fill-column-mode-map wrap-to-fill-column-mode
+ (t . wrap-to-fill-column-mode)
+ (defun . wrap-to-fill-column-mode)
+ (defun . wrap-to-fill-set-values)
+ (defun . wrap-to-fill-set-values-1)
+ better-bottom-angles-defaults
+ (defun . better-fringes-bottom-angles)
+ (defun . better-fringes-faces)
+ (defface . better-fringes-bitmap)
+ (defface . better-fringes-important-bitmap)
+ better-fringes-mode
+ (t . better-fringes-mode)
+ (defun . better-fringes-mode)
+ (t . find-emacs-other-file)
+ (defun . find-emacs-other-file)
+ (t . ourcomments-ediff-files)
+ (defun . ourcomments-ediff-files)
+ (defun . ourcomments-latest-changelog)
+ (defun . ourcomments-read-symbol)
+ (defun . ourcomments-command-at-point)
+ (t . describe-command)
+ (defun . describe-command)
+ (defun . buffer-narrowed-p)
+ describe-symbol-alist
+ (defun . describe-symbol-add-known)
+ (defun . property-list-keys)
+ (defun . ourcomments-symbol-type)
+ (defun . ourcomments-defstruct-p)
+ (defun . ourcomments-defstruct-slots)
+ (defun . ourcomments-defstruct-file)
+ (defun . ourcomments-member-defstruct)
+ (defun . ourcomments-custom-group-p)
+ (t . describe-custom-group)
+ (defun . describe-custom-group)
+ (t . describe-defstruct)
+ (defun . describe-defstruct)
+ (t . describe-symbol)
+ (defun . describe-symbol)
+ (defun . ourcomments-format-plist)
+ ourcomments-ido-visit-method
+ (t . ourcomments-ido-buffer-other-window)
+ (defun . ourcomments-ido-buffer-other-window)
+ (t . ourcomments-ido-buffer-other-frame)
+ (defun . ourcomments-ido-buffer-other-frame)
+ (t . ourcomments-ido-buffer-raise-frame)
+ (defun . ourcomments-ido-buffer-raise-frame)
+ (defun . ourcomments-ido-mode-advice)
+ ourcomments-ido-adviced ourcomments-ido-old-state
+ (defun . ourcomments-ido-ctrl-tab-activate)
+ ourcomments-ido-ctrl-tab
+ (defun . ourcomments-find-emacs)
+ (t . emacs)
+ (defun . emacs)
+ (t . emacs-buffer-file)
+ (defun . emacs-buffer-file)
+ (t . emacs--debug-init)
+ (defun . emacs--debug-init)
+ (t . emacs-Q)
+ (defun . emacs-Q)
+ (t . emacs-Q-nxhtml)
+ (defun . emacs-Q-nxhtml)
+ (defun . grep-get-buffer-files)
+ grep-query-replace-defaults
+ (t . grep-query-replace)
+ (defun . grep-query-replace)
+ (defun . ldir-query-replace)
+ (defun . rdir-query-replace)
+ (defun . rdir-get-files)
+ (defun . dir-replace-read-parameters)
+ replace-read-files-history
+ (defun . replace-read-files)
+ (t . info-open-file)
+ (defun . info-open-file)
+ (provide . ourcomments-util))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/advice.elc"
+ (provide . advice-preload)
+ (require . advice-preload)
+ ad-version ad-version ad-redefinition-action ad-default-compilation-action
+ (defun . ad-substitute-tree)
+ (defun . ad-copy-tree)
+ (defun . ad-dolist)
+ (defun . ad-do-return)
+ (defun . ad-save-real-definition)
+ (defun . ad-save-real-definitions)
+ ad-advised-functions
+ (defun . ad-pushnew-advised-function)
+ (defun . ad-pop-advised-function)
+ (defun . ad-do-advised-functions)
+ (defun . ad-get-advice-info)
+ (defun . ad-get-advice-info-macro)
+ (defun . ad-set-advice-info)
+ (defun . ad-copy-advice-info)
+ (defun . ad-is-advised)
+ (defun . ad-initialize-advice-info)
+ (defun . ad-get-advice-info-field)
+ (defun . ad-set-advice-info-field)
+ (defun . ad-is-active)
+ (defun . ad-make-advice)
+ (defun . ad-advice-name)
+ (defun . ad-advice-protected)
+ (defun . ad-advice-enabled)
+ (defun . ad-advice-definition)
+ (defun . ad-advice-set-enabled)
+ (defun . ad-class-p)
+ (defun . ad-name-p)
+ (defun . ad-position-p)
+ ad-advice-classes
+ (defun . ad-has-enabled-advice)
+ (defun . ad-has-redefining-advice)
+ (defun . ad-has-any-advice)
+ (defun . ad-get-enabled-advices)
+ (defun . ad-activate-internal)
+ (defun . ad-activate-internal-off)
+ ad-activate-on-top-level
+ (defun . ad-with-auto-activation-disabled)
+ (defun . ad-safe-fset)
+ (defun . ad-make-origname)
+ (defun . ad-get-orig-definition)
+ (defun . ad-set-orig-definition)
+ (defun . ad-clear-orig-definition)
+ (defun . ad-read-advised-function)
+ ad-advice-class-completion-table
+ (defun . ad-read-advice-class)
+ (defun . ad-read-advice-name)
+ (defun . ad-read-advice-specification)
+ ad-last-regexp
+ (defun . ad-read-regexp)
+ (defun . ad-find-advice)
+ (defun . ad-advice-position)
+ (defun . ad-find-some-advice)
+ (defun . ad-enable-advice-internal)
+ (t . ad-enable-advice)
+ (defun . ad-enable-advice)
+ (t . ad-disable-advice)
+ (defun . ad-disable-advice)
+ (defun . ad-enable-regexp-internal)
+ (defun . ad-enable-regexp)
+ (defun . ad-disable-regexp)
+ (defun . ad-remove-advice)
+ (t . ad-add-advice)
+ (defun . ad-add-advice)
+ (defun . ad-macrofy)
+ (defun . ad-lambdafy)
+ (defun . ad-special-form-p)
+ (defun . ad-subr-p)
+ (defun . ad-macro-p)
+ (defun . ad-lambda-p)
+ (defun . ad-advice-p)
+ (defun . ad-compiled-p)
+ (defun . ad-compiled-code)
+ (defun . ad-lambda-expression)
+ (defun . ad-arglist)
+ (defun . ad-define-subr-args)
+ (defun . ad-undefine-subr-args)
+ (defun . ad-subr-args-defined-p)
+ (defun . ad-get-subr-args)
+ (defun . ad-subr-arglist)
+ (defun . ad-docstring)
+ (defun . ad-interactive-form)
+ (defun . ad-body-forms)
+ (defun . ad-make-advised-definition-docstring)
+ (defun . ad-advised-definition-p)
+ (defun . ad-definition-type)
+ (defun . ad-has-proper-definition)
+ (defun . ad-real-definition)
+ (defun . ad-real-orig-definition)
+ (defun . ad-is-compilable)
+ (defun . ad-compile-function)
+ (defun . ad-prognify)
+ (defun . ad-parse-arglist)
+ (defun . ad-retrieve-args-form)
+ (defun . ad-arg-binding-field)
+ (defun . ad-list-access)
+ (defun . ad-element-access)
+ (defun . ad-access-argument)
+ (defun . ad-get-argument)
+ (defun . ad-set-argument)
+ (defun . ad-get-arguments)
+ (defun . ad-set-arguments)
+ (defun . ad-insert-argument-access-forms)
+ (defun . ad-map-arglists)
+ (defun . ad-make-mapped-call)
+ (defun . ad-make-single-advice-docstring)
+ (require . help-fns)
+ (defun . ad-make-advised-docstring)
+ (defun . ad-make-plain-docstring)
+ (defun . ad-make-freeze-docstring)
+ (defun . ad-advised-arglist)
+ (defun . ad-advised-interactive-form)
+ (defun . ad-make-advised-definition)
+ (defun . ad-assemble-advised-definition)
+ (defun . ad-make-hook-form)
+ (defun . ad-get-cache-definition)
+ (defun . ad-get-cache-id)
+ (defun . ad-set-cache)
+ (defun . ad-clear-cache)
+ (defun . ad-make-cache-id)
+ (defun . ad-get-cache-class-id)
+ (defun . ad-verify-cache-class-id)
+ (defun . ad-cache-id-verification-code)
+ (defun . ad-verify-cache-id)
+ (defun . ad-preactivate-advice)
+ (defun . ad-make-freeze-definition)
+ (defun . ad-should-compile)
+ (defun . ad-activate-advised-definition)
+ (defun . ad-handle-definition)
+ (t . ad-activate)
+ (defun . ad-activate)
+ (defun . ad-activate-on)
+ (defun . ad-deactivate)
+ (defun . ad-update)
+ (defun . ad-unadvise)
+ (defun . ad-recover)
+ (defun . ad-activate-regexp)
+ (defun . ad-deactivate-regexp)
+ (defun . ad-update-regexp)
+ (defun . ad-activate-all)
+ (defun . ad-deactivate-all)
+ (defun . ad-update-all)
+ (defun . ad-unadvise-all)
+ (defun . ad-recover-all)
+ ad-defadvice-flags
+ (t . defadvice)
+ (defun . defadvice)
+ (defun . ad-with-originals)
+ (defun . ad-start-advice)
+ (defun . ad-stop-advice)
+ (defun . ad-recover-normality)
+ (provide . advice))
+ ("/usr/share/emacs/23.0.93/lisp/help-fns.elc"
+ (require . help-mode)
+ (t . describe-function)
+ (defun . describe-function)
+ (defun . help-split-fundoc)
+ (defun . help-add-fundoc-usage)
+ (defun . help-function-arglist)
+ (defun . help-make-usage)
+ (t . help-C-file-name)
+ (defun . help-C-file-name)
+ (defface . help-argument-name)
+ (defun . help-default-arg-highlight)
+ (defun . help-do-arg-highlight)
+ (defun . help-highlight-arguments)
+ (t . find-lisp-object-file-name)
+ (defun . find-lisp-object-file-name)
+ (t . describe-function-1)
+ (defun . describe-function-1)
+ (t . variable-at-point)
+ (defun . variable-at-point)
+ (defun . describe-variable-custom-version-info)
+ (t . describe-variable)
+ (defun . describe-variable)
+ (t . describe-syntax)
+ (defun . describe-syntax)
+ (defun . help-describe-category-set)
+ (t . describe-categories)
+ (defun . describe-categories)
+ (provide . help-fns))
+ ("/usr/share/emacs/23.0.93/lisp/help-mode.elc"
+ (require . button)
+ (require . view)
+ help-mode-map help-mode-menu
+ (defun . help-mode-menu)
+ help-xref-stack help-xref-forward-stack help-xref-stack-item help-xref-stack-forward-item help-mode-hook
+ (defun . help-button-action)
+ (t . help-mode)
+ (defun . help-mode)
+ (t . help-mode-setup)
+ (defun . help-mode-setup)
+ (t . help-mode-finish)
+ (defun . help-mode-finish)
+ help-back-label help-forward-label help-xref-symbol-regexp help-xref-mule-regexp help-xref-info-regexp help-xref-url-regexp
+ (t . help-setup-xref)
+ (defun . help-setup-xref)
+ help-xref-following
+ (t . help-buffer)
+ (defun . help-buffer)
+ help-xref-override-view-map
+ (t . help-make-xrefs)
+ (defun . help-make-xrefs)
+ (t . help-xref-button)
+ (defun . help-xref-button)
+ (t . help-insert-xref-button)
+ (defun . help-insert-xref-button)
+ (t . help-xref-on-pp)
+ (defun . help-xref-on-pp)
+ (defun . help-xref-interned)
+ (defun . help-xref-go-back)
+ (defun . help-xref-go-forward)
+ (defun . help-go-back)
+ (defun . help-go-forward)
+ (defun . help-do-xref)
+ (defun . help-follow-mouse)
+ (defun . help-follow)
+ (defun . help-follow-symbol)
+ (defun . help-insert-string)
+ (provide . help-mode))
+ ("/usr/share/emacs/23.0.93/lisp/view.elc" view-highlight-face view-scroll-auto-exit view-try-extend-at-buffer-end view-remove-frame-by-deleting view-exits-all-viewing-windows view-inhibit-help-message view-mode view-mode-hook view-old-buffer-read-only view-page-size view-half-page-size view-last-regexp view-return-to-alist view-exit-action view-no-disable-on-exit view-overlay view-mode-map
+ (t . kill-buffer-if-not-modified)
+ (defun . kill-buffer-if-not-modified)
+ (t . view-file)
+ (defun . view-file)
+ (t . view-file-other-window)
+ (defun . view-file-other-window)
+ (t . view-file-other-frame)
+ (defun . view-file-other-frame)
+ (t . view-buffer)
+ (defun . view-buffer)
+ (t . view-buffer-other-window)
+ (defun . view-buffer-other-window)
+ (t . view-buffer-other-frame)
+ (defun . view-buffer-other-frame)
+ (t . view-mode)
+ (defun . view-mode)
+ (defun . view-mode-enable)
+ (defun . view-mode-disable)
+ (t . view-return-to-alist-update)
+ (defun . view-return-to-alist-update)
+ (t . view-mode-enter)
+ (defun . view-mode-enter)
+ (defun . view-mode-exit)
+ (defun . View-exit)
+ (t . View-exit-and-edit)
+ (defun . View-exit-and-edit)
+ (defun . View-leave)
+ (defun . View-quit)
+ (defun . View-quit-all)
+ (defun . View-kill-and-leave)
+ (defun . view-window-size)
+ (defun . view-recenter)
+ (defun . view-page-size-default)
+ (defun . view-set-half-page-size-default)
+ (defun . View-goto-percent)
+ (defun . View-goto-line)
+ (defun . View-back-to-mark)
+ (defun . view-scroll-lines)
+ (defun . view-really-at-end)
+ (defun . view-end-message)
+ (defun . View-scroll-to-buffer-end)
+ (defun . View-scroll-page-forward)
+ (defun . View-scroll-page-backward)
+ (defun . View-scroll-page-forward-set-page-size)
+ (defun . View-scroll-page-backward-set-page-size)
+ (defun . View-scroll-line-forward)
+ (defun . View-scroll-line-backward)
+ (defun . View-scroll-half-page-forward)
+ (defun . View-scroll-half-page-backward)
+ (defun . View-revert-buffer-scroll-page-forward)
+ (defun . View-search-regexp-forward)
+ (defun . View-search-regexp-backward)
+ (defun . View-search-last-regexp-forward)
+ (defun . View-search-last-regexp-backward)
+ (defun . view-search)
+ (defun . view-search-no-match-lines)
+ (provide . view))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/easy-mmode.elc"
+ (defun . easy-mmode-pretty-mode-name)
+ (defun . easy-mmode-define-minor-mode)
+ (t . define-minor-mode)
+ (defun . define-minor-mode)
+ (defun . easy-mmode-define-global-mode)
+ (defun . define-global-minor-mode)
+ (t . define-globalized-minor-mode)
+ (defun . define-globalized-minor-mode)
+ (defun . easy-mmode-set-keymap-parents)
+ (t . easy-mmode-define-keymap)
+ (defun . easy-mmode-define-keymap)
+ (t . easy-mmode-defmap)
+ (defun . easy-mmode-defmap)
+ (defun . easy-mmode-define-syntax)
+ (t . easy-mmode-defsyntax)
+ (defun . easy-mmode-defsyntax)
+ (defun . easy-mmode-define-navigation)
+ (provide . easy-mmode))
+ ("/usr/share/emacs/23.0.93/lisp/recentf.elc"
+ (require . easymenu)
+ (require . tree-widget)
+ (require . timer)
+ recentf-list
+ (defun . recentf-enabled-p)
+ recentf-max-saved-items recentf-save-file recentf-save-file-modes recentf-exclude
+ (defun . recentf-keep-default-predicate)
+ recentf-keep
+ (defun . recentf-menu-customization-changed)
+ recentf-menu-title recentf-menu-path recentf-menu-before recentf-menu-action recentf-max-menu-items recentf-menu-filter recentf-menu-open-all-flag recentf-menu-append-commands-p recentf-menu-append-commands-flag recentf-auto-cleanup recentf-initialize-file-name-history recentf-load-hook recentf-filename-handlers recentf-show-file-shortcuts-flag recentf-case-fold-search
+ (defun . recentf-string-equal)
+ (defun . recentf-string-lessp)
+ (defun . recentf-string-member)
+ (defun . recentf-trunc-list)
+ (defun . recentf-dump-variable)
+ recentf-auto-cleanup-timer
+ (defun . recentf-auto-cleanup)
+ (defun . recentf-push)
+ (defun . recentf-apply-filename-handlers)
+ (defun . recentf-expand-file-name)
+ (defun . recentf-include-p)
+ (defun . recentf-keep-p)
+ (defun . recentf-add-file)
+ (defun . recentf-remove-if-non-kept)
+ (defun . recentf-directory-compare)
+ (defun . recentf-digit-shortcut-command-name)
+ (defun . recentf-open-most-recent-file-0)
+ (defun . recentf-open-most-recent-file-9)
+ (defun . recentf-open-most-recent-file-8)
+ (defun . recentf-open-most-recent-file-7)
+ (defun . recentf-open-most-recent-file-6)
+ (defun . recentf-open-most-recent-file-5)
+ (defun . recentf-open-most-recent-file-4)
+ (defun . recentf-open-most-recent-file-3)
+ (defun . recentf-open-most-recent-file-2)
+ (defun . recentf-open-most-recent-file-1)
+ recentf--shortcuts-keymap recentf-menu-items-for-commands recentf-menu-filter-commands
+ (defun . recentf-elements)
+ (defun . recentf-make-menu-element)
+ (defun . recentf-menu-element-item)
+ (defun . recentf-menu-element-value)
+ (defun . recentf-set-menu-element-item)
+ (defun . recentf-set-menu-element-value)
+ (defun . recentf-sub-menu-element-p)
+ (defun . recentf-make-default-menu-element)
+ (defun . recentf-menu-elements)
+ (defun . recentf-apply-menu-filter)
+ (defun . recentf-make-menu-items)
+ (defun . recentf-menu-value-shortcut)
+ (defun . recentf-make-menu-item)
+ (defun . recentf-menu-bar)
+ (defun . recentf-show-menu)
+ (defun . recentf-hide-menu)
+ (defun . recentf-sort-ascending)
+ (defun . recentf-sort-descending)
+ (defun . recentf-sort-basenames-ascending)
+ (defun . recentf-sort-basenames-descending)
+ (defun . recentf-sort-directories-ascending)
+ (defun . recentf-sort-directories-descending)
+ (defun . recentf-show-basenames)
+ (defun . recentf-show-basenames-ascending)
+ (defun . recentf-show-basenames-descending)
+ (defun . recentf-relative-filter)
+ recentf-arrange-rules recentf-arrange-by-rule-others recentf-arrange-by-rules-min-items recentf-arrange-by-rule-subfilter
+ (defun . recentf-match-rule)
+ (defun . recentf-arrange-by-rule)
+ (defun . recentf-indirect-mode-rule)
+ (defun . recentf-build-mode-rules)
+ (defun . recentf-arrange-by-mode)
+ (defun . recentf-file-name-nondir)
+ (defun . recentf-dir-rule)
+ (defun . recentf-arrange-by-dir)
+ recentf-filter-changer-current recentf-filter-changer-alist
+ (defun . recentf-filter-changer-select)
+ (defun . recentf-filter-changer)
+ (defun . recentf-track-opened-file)
+ (defun . recentf-track-closed-file)
+ recentf-used-hooks
+ (defun . recentf-cancel-dialog)
+ (defun . recentf-dialog-goto-first)
+ recentf-dialog-mode-map recentf-dialog-mode-map
+ (defun . recentf-dialog-mode)
+ (defun . recentf-dialog)
+ recentf-edit-list
+ (defun . recentf-edit-list-select)
+ (defun . recentf-edit-list-validate)
+ (defun . recentf-edit-list)
+ (defun . recentf-open-files-action)
+ recentf--files-with-key
+ (defun . recentf-show-digit-shortcut-filter)
+ (defun . recentf-open-files-item)
+ (defun . recentf-open-files-items)
+ (defun . recentf-open-files)
+ (defun . recentf-open-more-files)
+ (defun . recentf-open-most-recent-file)
+ recentf-save-file-header recentf-save-file-coding-system
+ (defun . recentf-save-list)
+ (defun . recentf-load-list)
+ (defun . recentf-cleanup)
+ recentf-mode-map recentf-mode
+ (t . recentf-mode)
+ (defun . recentf-mode)
+ (provide . recentf))
+ ("/usr/share/emacs/23.0.93/lisp/tree-widget.elc"
+ (require . wid-edit)
+ tree-widget-image-enable tree-widget-themes-load-path tree-widget-themes-directory tree-widget-theme tree-widget-image-properties-emacs tree-widget-image-properties-xemacs tree-widget-space-width
+ (defun . tree-widget-use-image-p)
+ (defun . tree-widget-create-image)
+ (defun . tree-widget-image-formats)
+ tree-widget--theme
+ (defun . tree-widget-theme-name)
+ (defun . tree-widget-set-parent-theme)
+ (defun . tree-widget-set-theme)
+ (defun . tree-widget--locate-sub-directory)
+ (defun . tree-widget-themes-path)
+ tree-widget--cursors tree-widget--cursors
+ (defun . tree-widget-set-image-properties)
+ (defun . tree-widget-image-properties)
+ (defun . tree-widget-lookup-image)
+ (defun . tree-widget-find-image)
+ (defun . tree-widget-button-click)
+ tree-widget-button-keymap
+ (defun . tree-widget-p)
+ (defun . tree-widget-node)
+ (defun . tree-widget-keep)
+ (defun . tree-widget-children-value-save)
+ tree-widget-before-create-icon-functions
+ (defun . tree-widget-icon-create)
+ (defun . tree-widget-convert-widget)
+ (defun . tree-widget-value-create)
+ (defun . tree-widget-leaf-node-icon-p)
+ (defun . tree-widget-icon-action)
+ (defun . tree-widget-icon-help-echo)
+ tree-widget-after-toggle-functions
+ (defun . tree-widget-action)
+ (defun . tree-widget-help-echo)
+ (defun . tree-widget-expander-p)
+ (provide . tree-widget))
+ ("/usr/share/emacs/23.0.93/lisp/ido.elc"
+ (defun . ido-fractionp)
+ ido-mode ido-everywhere ido-case-fold ido-ignore-buffers ido-ignore-files ido-ignore-extensions ido-show-dot-for-dired ido-file-extensions-order ido-ignore-directories ido-ignore-directories-merge ido-default-file-method ido-default-buffer-method ido-enable-flex-matching ido-enable-regexp ido-enable-prefix ido-enable-dot-prefix ido-confirm-unique-completion ido-cannot-complete-command ido-record-commands ido-max-prospects ido-max-file-prompt-width ido-max-window-height ido-enable-last-directory-history ido-max-work-directory-list ido-work-directory-list-ignore-regexps ido-use-filename-at-point ido-use-url-at-point ido-enable-tramp-completion ido-record-ftp-work-directories ido-merge-ftp-work-directories ido-cache-ftp-work-directory-time ido-slow-ftp-hosts ido-slow-ftp-host-regexps ido-unc-hosts-cache ido-unc-hosts ido-downcase-unc-hosts ido-ignore-unc-host-regexps ido-cache-unc-host-shares-time ido-max-work-file-list ido-work-directory-match-only ido-auto-merge-work-directories-length ido-auto-merge-delay-time ido-auto-merge-inhibit-characters-regexp ido-merged-indicator ido-max-dir-file-cache ido-max-directory-size ido-rotate-file-list-default ido-enter-matching-directory ido-create-new-buffer ido-setup-hook ido-separator ido-decorations ido-use-faces
+ (defface . ido-first-match)
+ (defface . ido-only-match)
+ (defface . ido-subdir)
+ (defface . ido-indicator)
+ (defface . ido-incomplete-regexp)
+ ido-make-file-list-hook ido-make-dir-list-hook ido-make-buffer-list-hook ido-rewrite-file-prompt-functions ido-rewrite-file-prompt-rules ido-completion-buffer ido-completion-buffer-all-completions ido-all-frames ido-minibuffer-setup-hook ido-save-directory-list-file ido-read-file-name-as-directory-commands ido-read-file-name-non-ido ido-before-fallback-functions ido-completion-map ido-common-completion-map ido-file-completion-map ido-file-dir-completion-map ido-buffer-completion-map ido-file-history ido-buffer-history ido-last-directory-list ido-work-directory-list ido-work-file-list ido-dir-file-cache ido-ignore-item-temp-list ido-eoinput ido-common-match-string ido-rescan ido-rotate ido-text ido-text-init ido-input-stack ido-matches ido-report-no-match ido-exit ido-current-directory ido-auto-merge-timer ido-use-mycompletion-depth ido-incomplete-regexp ido-initial-position
+ (defun . ido-active)
+ ido-trace-enable
+ (defun . ido-trace)
+ (defun . ido-toggle-trace)
+ (defun . ido-local-file-exists-p)
+ (defun . ido-unc-hosts)
+ (defun . ido-unc-hosts-net-view)
+ (defun . ido-is-tramp-root)
+ (defun . ido-is-unc-root)
+ (defun . ido-is-unc-host)
+ (defun . ido-is-root-directory)
+ (defun . ido-is-ftp-directory)
+ (defun . ido-is-slow-ftp-host)
+ (defun . ido-time-stamp)
+ (defun . ido-cache-ftp-valid)
+ (defun . ido-cache-unc-valid)
+ (defun . ido-may-cache-directory)
+ (defun . ido-pp)
+ (defun . ido-save-history)
+ (defun . ido-load-history)
+ (defun . ido-wash-history)
+ (defun . ido-kill-emacs-hook)
+ ido-minor-mode-map-entry
+ (t . ido-mode)
+ (defun . ido-mode)
+ (defun . ido-everywhere)
+ (defun . ido-init-completion-maps)
+ (defun . ido-setup-completion-map)
+ (defun . ido-final-slash)
+ (defun . ido-no-final-slash)
+ (defun . ido-nonreadable-directory-p)
+ (defun . ido-directory-too-big-p)
+ (defun . ido-set-current-directory)
+ (defun . ido-set-current-home)
+ (defun . ido-record-command)
+ (defun . ido-make-prompt)
+ (defun . ido-read-internal)
+ (defun . ido-edit-input)
+ (defun . ido-buffer-internal)
+ (defun . ido-record-work-directory)
+ (defun . ido-forget-work-directory)
+ (defun . ido-record-work-file)
+ (defun . ido-expand-directory)
+ (defun . ido-file-internal)
+ (defun . ido-existing-item-p)
+ (defun . ido-set-common-completion)
+ (defun . ido-complete)
+ (defun . ido-complete-space)
+ (defun . ido-undo-merge-work-directory)
+ (defun . ido-magic-forward-char)
+ (defun . ido-magic-backward-char)
+ (defun . ido-magic-delete-char)
+ (defun . ido-toggle-case)
+ (defun . ido-toggle-regexp)
+ (defun . ido-toggle-prefix)
+ (defun . ido-toggle-ignore)
+ (defun . ido-toggle-vc)
+ (defun . ido-toggle-literal)
+ (defun . ido-reread-directory)
+ (defun . ido-exit-minibuffer)
+ (defun . ido-select-text)
+ (defun . ido-fallback-command)
+ (defun . ido-enter-find-file)
+ (defun . ido-enter-switch-buffer)
+ (defun . ido-enter-dired)
+ (defun . ido-enter-insert-buffer)
+ (defun . ido-enter-insert-file)
+ (defun . ido-up-directory)
+ (defun . ido-delete-backward-updir)
+ (defun . ido-delete-backward-word-updir)
+ (defun . ido-get-work-directory)
+ (defun . ido-prev-work-directory)
+ (defun . ido-next-work-directory)
+ (defun . ido-merge-work-directories)
+ (defun . ido-wide-find-file)
+ (defun . ido-wide-find-dir)
+ (defun . ido-wide-find-dir-or-delete-dir)
+ (defun . ido-take-first-match)
+ (defun . ido-push-dir)
+ (defun . ido-push-dir-first)
+ (defun . ido-pop-dir)
+ (defun . ido-wide-find-file-or-pop-dir)
+ (defun . ido-make-directory)
+ (defun . ido-get-work-file)
+ (defun . ido-prev-work-file)
+ (defun . ido-next-work-file)
+ (defun . ido-copy-current-file-name)
+ (defun . ido-copy-current-word)
+ (defun . ido-next-match)
+ (defun . ido-prev-match)
+ (defun . ido-next-match-dir)
+ (defun . ido-prev-match-dir)
+ (defun . ido-restrict-to-matches)
+ (defun . ido-chop)
+ (defun . ido-name)
+ (defun . ido-all-completions)
+ (defun . ido-file-lessp)
+ (defun . ido-file-extension-lessp)
+ (defun . ido-file-extension-aux)
+ (defun . ido-file-extension-order)
+ (defun . ido-sort-merged-list)
+ (defun . ido-wide-find-dirs-or-files)
+ (defun . ido-flatten-merged-list)
+ (defun . ido-make-merged-file-list-1)
+ (defun . ido-make-merged-file-list)
+ (defun . ido-make-buffer-list-1)
+ (defun . ido-make-buffer-list)
+ (defun . ido-make-choice-list)
+ (defun . ido-to-end)
+ (defun . ido-file-name-all-completions-1)
+ (defun . ido-file-name-all-completions)
+ (defun . ido-remove-cached-dir)
+ (defun . ido-make-file-list-1)
+ (defun . ido-make-file-list)
+ (defun . ido-make-dir-list-1)
+ (defun . ido-make-dir-list)
+ (defun . ido-get-buffers-in-frames)
+ (defun . ido-get-bufname)
+ (defun . ido-set-matches-1)
+ (defun . ido-set-matches)
+ (defun . ido-ignore-item-p)
+ (defun . ido-find-common-substring)
+ (defun . ido-word-matching-substring)
+ (defun . ido-makealist)
+ (defun . ido-choose-completion-string)
+ (defun . ido-completion-help)
+ (defun . ido-kill-buffer-at-head)
+ (defun . ido-delete-file-at-head)
+ (defun . ido-visit-buffer)
+ (defun . ido-buffer-window-other-frame)
+ (t . ido-switch-buffer)
+ (defun . ido-switch-buffer)
+ (t . ido-switch-buffer-other-window)
+ (defun . ido-switch-buffer-other-window)
+ (t . ido-display-buffer)
+ (defun . ido-display-buffer)
+ (t . ido-kill-buffer)
+ (defun . ido-kill-buffer)
+ (t . ido-insert-buffer)
+ (defun . ido-insert-buffer)
+ (t . ido-switch-buffer-other-frame)
+ (defun . ido-switch-buffer-other-frame)
+ (t . ido-find-file-in-dir)
+ (defun . ido-find-file-in-dir)
+ (t . ido-find-file)
+ (defun . ido-find-file)
+ (t . ido-find-file-other-window)
+ (defun . ido-find-file-other-window)
+ (t . ido-find-alternate-file)
+ (defun . ido-find-alternate-file)
+ (t . ido-find-file-read-only)
+ (defun . ido-find-file-read-only)
+ (t . ido-find-file-read-only-other-window)
+ (defun . ido-find-file-read-only-other-window)
+ (t . ido-find-file-read-only-other-frame)
+ (defun . ido-find-file-read-only-other-frame)
+ (t . ido-display-file)
+ (defun . ido-display-file)
+ (t . ido-find-file-other-frame)
+ (defun . ido-find-file-other-frame)
+ (t . ido-write-file)
+ (defun . ido-write-file)
+ (t . ido-insert-file)
+ (defun . ido-insert-file)
+ (t . ido-dired)
+ (defun . ido-dired)
+ (defun . ido-list-directory)
+ (defun . ido-initiate-auto-merge)
+ (defun . ido-exhibit)
+ (defun . ido-completions)
+ (defun . ido-minibuffer-setup)
+ (defun . ido-tidy)
+ (defun . ido-summary-buffers-to-end)
+ (t . ido-read-buffer)
+ (defun . ido-read-buffer)
+ (t . ido-read-file-name)
+ (defun . ido-read-file-name)
+ (t . ido-read-directory-name)
+ (defun . ido-read-directory-name)
+ (t . ido-completing-read)
+ (defun . ido-completing-read)
+ (defun . ido-unload-function)
+ (provide . ido))
+ ("/usr/share/emacs/23.0.93/lisp/progmodes/grep.elc"
+ (require . compile)
+ grep-window-height grep-highlight-matches grep-scroll-output grep-command grep-template grep-use-null-device grep-find-command grep-find-template grep-files-aliases grep-find-ignored-directories grep-error-screen-columns grep-setup-hook grep-mode-map grep-mode-tool-bar-map
+ (defun . kill-grep)
+ grep-last-buffer grep-regexp-alist grep-error grep-hit-face grep-error-face grep-match-face grep-context-face grep-mode-font-lock-keywords grep-program find-program xargs-program grep-find-use-xargs grep-history grep-find-history grep-regexp-history grep-files-history grep-host-defaults-alist
+ (t . grep-process-setup)
+ (defun . grep-process-setup)
+ (defun . grep-probe)
+ (t . grep-compute-defaults)
+ (defun . grep-compute-defaults)
+ (defun . grep-tag-default)
+ (defun . grep-default-command)
+ grep-mode-map grep-mode-syntax-table grep-mode-abbrev-table grep-mode-abbrev-table
+ (t . grep-mode)
+ (defun . grep-mode)
+ (t . grep)
+ (defun . grep)
+ (t . grep-find)
+ (defun . grep-find)
+ (defun . find-grep)
+ grep-expand-keywords
+ (defun . grep-expand-template)
+ (defun . grep-read-regexp)
+ (defun . grep-read-files)
+ (t . lgrep)
+ (defun . lgrep)
+ (t . rgrep)
+ (defun . rgrep)
+ (provide . grep))
+ ("/usr/share/emacs/23.0.93/lisp/progmodes/compile.elc"
+ (require . tool-bar)
+ (require . comint)
+ compilation-mode-hook compilation-start-hook compilation-window-height compilation-first-column compilation-parse-errors-filename-function compilation-process-setup-function compilation-buffer-name-function compilation-finish-function compilation-finish-functions compilation-in-progress compilation-error compilation-arguments compilation-error-regexp-alist-alist compilation-error-regexp-alist compilation-directory compilation-directory-matcher compilation-page-delimiter compilation-mode-font-lock-keywords compilation-highlight-regexp compilation-highlight-overlay compilation-error-screen-columns compilation-read-command compilation-ask-about-save compilation-search-path compile-command compilation-disable-input compilation-locs compilation-debug compilation-exit-message-function compilation-environment compile-history
+ (defface . compilation-error)
+ (defface . compilation-warning)
+ (defface . compilation-info)
+ (defface . compilation-line-number)
+ (defface . compilation-column-number)
+ compilation-message-face compilation-error-face compilation-warning-face compilation-info-face compilation-line-face compilation-column-face compilation-enter-directory-face compilation-leave-directory-face compilation-last-buffer compilation-parsing-end compilation-parse-errors-function compilation-error-list compilation-old-error-list compilation-auto-jump-to-first-error compilation-auto-jump-to-next compilation-skip-to-next-location compilation-skip-threshold compilation-skip-visited
+ (defun . compilation-face)
+ (defun . compilation-directory-properties)
+ (defun . compilation-auto-jump)
+ (defun . compilation-error-properties)
+ (defun . compilation-move-to-column)
+ (defun . compilation-internal-error-properties)
+ (defun . compilation-mode-font-lock-keywords)
+ (defun . compilation-read-command)
+ (t . compile)
+ (defun . compile)
+ (defun . recompile)
+ compilation-scroll-output
+ (defun . compilation-buffer-name)
+ (defun . compile-internal)
+ (t . compilation-start)
+ (defun . compilation-start)
+ (defun . compilation-set-window-height)
+ compilation-menu-map compilation-minor-mode-map compilation-shell-minor-mode-map compilation-button-map compilation-mode-map compilation-mode-tool-bar-map
+ (t . compilation-mode)
+ (defun . compilation-mode)
+ (defun . define-compilation-mode)
+ (defun . compilation-revert-buffer)
+ compilation-current-error compilation-messages-start compilation-turn-on-font-lock compilation-turn-on-font-lock
+ (defun . compilation-setup)
+ compilation-shell-minor-mode
+ (t . compilation-shell-minor-mode)
+ (defun . compilation-shell-minor-mode)
+ compilation-minor-mode
+ (t . compilation-minor-mode)
+ (defun . compilation-minor-mode)
+ (defun . compilation-handle-exit)
+ (defun . compilation-sentinel)
+ (defun . compilation-filter)
+ (defun . compilation-buffer-internal-p)
+ (defun . compilation-buffer-p)
+ (defun . compilation-loop)
+ (defun . compilation-next-error)
+ (defun . compilation-previous-error)
+ (defun . compilation-next-file)
+ (defun . compilation-previous-file)
+ (defun . kill-compilation)
+ (defun . compile-mouse-goto-error)
+ (defun . compile-goto-error)
+ (defun . compilation-find-buffer)
+ (t . compilation-next-error-function)
+ (defun . compilation-next-error-function)
+ compilation-gcpro
+ (defun . compilation-fake-loc)
+ compilation-context-lines
+ (defun . compilation-set-window)
+ (defun . compilation-goto-locus)
+ (defun . compilation-goto-locus-delete-o)
+ (defun . compilation-find-file)
+ (defun . compilation-get-file-structure)
+ (defun . compile-buffer-substring)
+ (defun . compilation-compat-error-properties)
+ (defun . compilation-compat-parse-errors)
+ (defun . compilation-forget-errors)
+ (provide . compile))
+ ("/usr/share/emacs/23.0.93/lisp/comint.elc"
+ (require . ring)
+ comint-prompt-regexp comint-prompt-read-only comint-delimiter-argument-list comint-input-autoexpand
+ (defface . comint-highlight-input)
+ (defface . comint-highlight-prompt)
+ comint-input-ignoredups comint-input-ring-file-name comint-scroll-to-bottom-on-input comint-move-point-for-output comint-scroll-to-bottom-on-output comint-scroll-show-maximum-output comint-buffer-maximum-size comint-input-ring-size comint-input-ring-separator comint-input-history-ignore comint-process-echoes comint-password-prompt-regexp comint-get-old-input comint-dynamic-complete-functions comint-input-filter comint-input-filter-functions comint-output-filter-functions comint-input-sender-no-newline comint-input-sender comint-eol-on-send comint-use-prompt-regexp comint-use-prompt-regexp-instead-of-fields comint-mode-hook comint-exec-hook comint-mode-map comint-ptyp comint-input-ring comint-last-input-start comint-last-input-end comint-last-output-start comint-input-ring-index comint-matching-input-from-input-string comint-save-input-ring-index comint-accum-marker comint-stored-incomplete-input comint-mode-map comint-mode-syntax-table comint-mode-abbrev-table comint-mode-abbrev-table
+ (defun . comint-mode)
+ (defun . comint-check-proc)
+ (t . make-comint-in-buffer)
+ (defun . make-comint-in-buffer)
+ (t . make-comint)
+ (defun . make-comint)
+ (t . comint-run)
+ (defun . comint-run)
+ (defun . comint-exec)
+ (defun . comint-exec-1)
+ (defun . comint-insert-input)
+ (defun . comint-read-input-ring)
+ (defun . comint-write-input-ring)
+ (defun . comint-dynamic-list-input-ring-select)
+ (defun . comint-dynamic-list-input-ring)
+ (defun . comint-regexp-arg)
+ (defun . comint-search-arg)
+ (defun . comint-restore-input)
+ (defun . comint-search-start)
+ (defun . comint-previous-input-string)
+ (defun . comint-previous-input)
+ (defun . comint-next-input)
+ (defun . comint-previous-matching-input-string)
+ (defun . comint-previous-matching-input-string-position)
+ (defun . comint-delete-input)
+ (defun . comint-previous-matching-input)
+ (defun . comint-next-matching-input)
+ (defun . comint-previous-matching-input-from-input)
+ (defun . comint-next-matching-input-from-input)
+ (defun . comint-replace-by-expanded-history)
+ (defun . comint-replace-by-expanded-history-before-point)
+ (defun . comint-magic-space)
+ (defun . comint-within-quotes)
+ (defun . comint-how-many-region)
+ (defun . comint-args)
+ (defun . comint-delim-arg)
+ (defun . comint-arguments)
+ (defun . comint-add-to-input-history)
+ (defun . comint-send-input)
+ comint-preoutput-filter-functions comint-inhibit-carriage-motion comint-last-prompt-overlay
+ (defun . comint-snapshot-last-prompt)
+ (defun . comint-carriage-motion)
+ (defun . comint-output-filter)
+ (defun . comint-preinput-scroll-to-bottom)
+ (defun . comint-postoutput-scroll-to-bottom)
+ (defun . comint-truncate-buffer)
+ (defun . comint-strip-ctrl-m)
+ (defun . shell-strip-ctrl-m)
+ (defun . comint-show-maximum-output)
+ (defun . comint-get-old-input-default)
+ (defun . comint-copy-old-input)
+ (defun . comint-skip-prompt)
+ (defun . comint-after-pmark-p)
+ (defun . comint-simple-send)
+ (defun . comint-line-beginning-position)
+ (defun . comint-bol)
+ (defun . comint-read-noecho)
+ (defun . send-invisible)
+ (defun . comint-watch-for-password-prompt)
+ (defun . comint-send-string)
+ (defun . comint-send-region)
+ (defun . comint-delete-output)
+ (defun . comint-kill-output)
+ (defun . comint-write-output)
+ (defun . comint-append-output-to-file)
+ (defun . comint-show-output)
+ (defun . comint-interrupt-subjob)
+ (defun . comint-kill-subjob)
+ (defun . comint-quit-subjob)
+ (defun . comint-stop-subjob)
+ (defun . comint-continue-subjob)
+ (defun . comint-skip-input)
+ (defun . comint-kill-input)
+ (defun . comint-delchar-or-maybe-eof)
+ (defun . comint-send-eof)
+ (defun . comint-backward-matching-input)
+ (defun . comint-forward-matching-input)
+ (defun . comint-next-prompt)
+ (defun . comint-previous-prompt)
+ comint-insert-previous-argument-last-start-pos comint-insert-previous-argument-last-index
+ (defun . comint-insert-previous-argument)
+ (defun . comint-update-fence)
+ (defun . comint-kill-whole-line)
+ (defun . comint-kill-region)
+ (defun . comint-source-default)
+ (defun . comint-check-source)
+ (defun . comint-extract-string)
+ (defun . comint-get-source)
+ (defun . comint-proc-query)
+ comint-completion-autolist comint-completion-addsuffix comint-completion-recexact comint-completion-fignore comint-file-name-prefix comint-file-name-chars comint-file-name-quote-list
+ (defun . comint-directory)
+ (defun . comint-word)
+ (defun . comint-substitute-in-file-name)
+ (defun . comint-match-partial-filename)
+ (defun . comint-quote-filename)
+ (defun . comint-unquote-filename)
+ (defun . comint-dynamic-complete)
+ (defun . comint-dynamic-complete-filename)
+ (defun . comint-dynamic-complete-as-filename)
+ (defun . comint-replace-by-expanded-filename)
+ (defun . comint-dynamic-simple-complete)
+ (defun . comint-dynamic-list-filename-completions)
+ comint-displayed-dynamic-completions comint-dynamic-list-completions-config
+ (defun . comint-dynamic-list-completions)
+ (defun . comint-get-next-from-history)
+ (defun . comint-accumulate)
+ (defun . comint-goto-process-mark)
+ (defun . comint-bol-or-process-mark)
+ (defun . comint-set-process-mark)
+ comint-redirect-verbose comint-redirect-filter-functions comint-redirect-output-buffer comint-redirect-finished-regexp comint-redirect-insert-matching-regexp comint-redirect-echo-input comint-redirect-completed comint-redirect-original-mode-line-process comint-redirect-perform-sanity-check comint-redirect-original-filter-function comint-redirect-subvert-readonly
+ (defun . comint-redirect-setup)
+ (defun . comint-redirect-cleanup)
+ (defun . comint-redirect-remove-redirection)
+ (defun . comint-redirect-filter)
+ (defun . comint-redirect-preoutput-filter)
+ (t . comint-redirect-send-command)
+ (defun . comint-redirect-send-command)
+ (t . comint-redirect-send-command-to-process)
+ (defun . comint-redirect-send-command-to-process)
+ (t . comint-redirect-results-list)
+ (defun . comint-redirect-results-list)
+ (t . comint-redirect-results-list-from-process)
+ (defun . comint-redirect-results-list-from-process)
+ (provide . comint))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/ring.elc"
+ (t . ring-p)
+ (defun . ring-p)
+ (t . make-ring)
+ (defun . make-ring)
+ (defun . ring-insert-at-beginning)
+ (defun . ring-plus1)
+ (defun . ring-minus1)
+ (defun . ring-length)
+ (defun . ring-index)
+ (defun . ring-empty-p)
+ (defun . ring-size)
+ (defun . ring-copy)
+ (defun . ring-insert)
+ (defun . ring-remove)
+ (defun . ring-ref)
+ (defun . ring-elements)
+ (defun . ring-member)
+ (defun . ring-next)
+ (defun . ring-previous)
+ (defun . ring-insert+extend)
+ (defun . ring-remove+insert+extend)
+ (defun . ring-convert-sequence-to-ring)
+ (provide . ring))
+ ("/usr/share/emacs/23.0.93/lisp/apropos.elc"
+ (require . button)
+ apropos-do-all apropos-symbol-face apropos-keybinding-face apropos-label-face apropos-property-face apropos-match-face apropos-sort-by-scores apropos-documentation-sort-by-scores apropos-mode-map apropos-mode-hook apropos-pattern apropos-pattern-quoted apropos-words apropos-all-words apropos-regexp apropos-all-words-regexp apropos-files-scanned apropos-accumulator apropos-item apropos-synonyms
+ (defun . apropos-symbol-button-display-help)
+ (defun . apropos-next-label-button)
+ (defun . apropos-words-to-regexp)
+ (t . apropos-read-pattern)
+ (defun . apropos-read-pattern)
+ (defun . apropos-parse-pattern)
+ (defun . apropos-calc-scores)
+ (defun . apropos-score-str)
+ (defun . apropos-score-doc)
+ (defun . apropos-score-symbol)
+ (defun . apropos-true-hit)
+ (defun . apropos-false-hit-symbol)
+ (defun . apropos-false-hit-str)
+ (defun . apropos-true-hit-doc)
+ apropos-mode-map apropos-mode-syntax-table apropos-mode-abbrev-table apropos-mode-abbrev-table
+ (defun . apropos-mode)
+ apropos-multi-type
+ (t . apropos-variable)
+ (defun . apropos-variable)
+ (defun . command-apropos)
+ (t . apropos-command)
+ (defun . apropos-command)
+ (t . apropos-documentation-property)
+ (defun . apropos-documentation-property)
+ (t . apropos)
+ (defun . apropos)
+ (defun . apropos-library-button)
+ (t . apropos-library)
+ (defun . apropos-library)
+ (defun . apropos-symbols-internal)
+ (t . apropos-value)
+ (defun . apropos-value)
+ (t . apropos-documentation)
+ (defun . apropos-documentation)
+ (defun . apropos-value-internal)
+ (defun . apropos-documentation-internal)
+ (defun . apropos-format-plist)
+ (defun . apropos-documentation-check-doc-file)
+ (defun . apropos-documentation-check-elc-file)
+ (defun . apropos-safe-documentation)
+ apropos-compact-layout
+ (defun . apropos-print)
+ (defun . apropos-macrop)
+ (defun . apropos-print-doc)
+ (defun . apropos-follow)
+ (defun . apropos-describe-plist)
+ (provide . apropos))
+ ("/home/hobbes/nxhtml/util/gimp.el" gimp:version
+ (require . w32-regdat)
+ (defun . gimp-get-remote-command)
+ gimp-remote-command
+ (defun . gimp-get-gimp-exe)
+ gimp-exe gimp-remote-command-list
+ (t . gimp-edit-file)
+ (defun . gimp-edit-file)
+ (t . gimp-edit-buffer)
+ (defun . gimp-edit-buffer)
+ (t . gimp-can-edit)
+ (defun . gimp-can-edit)
+ gimp-point-key-bindings
+ (defun . gimp-add-point-bindings)
+ (provide . gimp))
+ ("/usr/share/emacs/23.0.93/lisp/dired.elc" dired-listing-switches dired-subdir-switches dired-chown-program dired-use-ls-dired dired-chmod-program dired-touch-program dired-ls-F-marks-symlinks dired-trivial-filenames dired-keep-marker-rename dired-keep-marker-copy dired-keep-marker-hardlink dired-keep-marker-symlink dired-dwim-target dired-copy-preserve-time dired-free-space-program dired-free-space-args dired-load-hook dired-mode-hook dired-before-readin-hook dired-after-readin-hook dired-dnd-protocol-alist dired-marker-char dired-del-marker dired-shrink-to-fit dired-flagging-regexp dired-directory dired-actual-switches dired-re-inode-size dired-re-mark dired-re-maybe-mark dired-re-dir dired-re-sym dired-re-exe dired-re-perms dired-re-dot dired-subdir-alist dired-switches-alist dired-move-to-filename-regexp dired-subdir-regexp
+ (defface . dired-header)
+ dired-header-face
+ (defface . dired-mark)
+ dired-mark-face
+ (defface . dired-marked)
+ dired-marked-face
+ (defface . dired-flagged)
+ dired-flagged-face
+ (defface . dired-warning)
+ dired-warning-face
+ (defface . dired-perm-write)
+ dired-perm-write-face
+ (defface . dired-directory)
+ dired-directory-face
+ (defface . dired-symlink)
+ dired-symlink-face
+ (defface . dired-ignored)
+ dired-ignored-face dired-font-lock-keywords
+ (defun . dired-mark-if)
+ (defun . dired-map-over-marks)
+ (defun . dired-get-marked-files)
+ (defun . dired-read-dir-and-switches)
+ (t . dired)
+ (defun . dired)
+ (t . dired-other-window)
+ (defun . dired-other-window)
+ (t . dired-other-frame)
+ (defun . dired-other-frame)
+ (t . dired-noselect)
+ (defun . dired-noselect)
+ (defun . dired-directory-changed-p)
+ (defun . dired-buffer-stale-p)
+ (defun . dired-internal-noselect)
+ dired-buffers
+ (defun . dired-find-buffer-nocreate)
+ (defun . dired-readin)
+ (defun . dired-readin-insert)
+ (defun . dired-align-file)
+ (defun . dired-insert-directory)
+ (defun . dired-insert-set-properties)
+ (defun . dired-revert)
+ (defun . dired-remember-marks)
+ (defun . dired-mark-remembered)
+ (defun . dired-remember-hidden)
+ (defun . dired-insert-old-subdirs)
+ (defun . dired-uncache)
+ dired-mode-map
+ (t . dired-mode)
+ (defun . dired-mode)
+ (defun . dired-summary)
+ (defun . dired-undo)
+ (defun . dired-toggle-read-only)
+ (defun . dired-next-line)
+ (defun . dired-previous-line)
+ (defun . dired-next-dirline)
+ (defun . dired-prev-dirline)
+ (defun . dired-up-directory)
+ (defun . dired-get-file-for-visit)
+ (defun . dired-advertised-find-file)
+ (defun . dired-find-file)
+ (defun . dired-find-alternate-file)
+ (defun . dired-mouse-find-file-other-window)
+ (defun . dired-view-file)
+ (defun . dired-find-file-other-window)
+ (defun . dired-display-file)
+ (defun . dired-get-filename)
+ (defun . dired-string-replace-match)
+ (defun . dired-make-absolute)
+ (defun . dired-make-relative)
+ dired-permission-flags-regexp
+ (defun . dired-move-to-filename)
+ (defun . dired-move-to-end-of-filename)
+ (defun . dired-copy-filename-as-kill)
+ (defun . dired-buffers-for-dir)
+ (defun . dired-glob-regexp)
+ (defun . dired-advertise)
+ (defun . dired-unadvertise)
+ (defun . dired-in-this-tree)
+ (defun . dired-normalize-subdir)
+ (defun . dired-get-subdir)
+ (defun . dired-get-subdir-min)
+ (defun . dired-get-subdir-max)
+ (defun . dired-clear-alist)
+ (defun . dired-subdir-index)
+ (defun . dired-next-subdir)
+ (defun . dired-build-subdir-alist)
+ (defun . dired-alist-add-1)
+ (defun . dired-goto-next-nontrivial-file)
+ (defun . dired-goto-next-file)
+ (defun . dired-goto-file)
+ (defun . dired-initial-position)
+ (defun . dired-current-directory)
+ (defun . dired-subdir-max)
+ dired-recursive-deletes dired-re-no-dot
+ (defun . dired-delete-file)
+ (defun . dired-do-flagged-delete)
+ (defun . dired-do-delete)
+ dired-deletion-confirmer
+ (defun . dired-internal-do-deletions)
+ (defun . dired-fun-in-all-buffers)
+ (defun . dired-delete-entry)
+ (defun . dired-clean-up-after-deletion)
+ (defun . dired-marker-regexp)
+ (defun . dired-plural-s)
+ (defun . dired-mark-prompt)
+ (defun . dired-pop-to-buffer)
+ dired-no-confirm
+ (defun . dired-mark-pop-up)
+ (defun . dired-format-columns-of-files)
+ (defun . dired-repeat-over-lines)
+ (defun . dired-between-files)
+ (defun . dired-next-marked-file)
+ (defun . dired-prev-marked-file)
+ (defun . dired-file-marker)
+ (defun . dired-mark-files-in-region)
+ (defun . dired-mark)
+ (defun . dired-unmark)
+ (defun . dired-flag-file-deletion)
+ (defun . dired-unmark-backward)
+ (defun . dired-toggle-marks)
+ dired-regexp-history
+ (defun . dired-read-regexp)
+ (defun . dired-mark-files-regexp)
+ (defun . dired-mark-files-containing-regexp)
+ (defun . dired-flag-files-regexp)
+ (defun . dired-mark-symlinks)
+ (defun . dired-mark-directories)
+ (defun . dired-mark-executables)
+ (defun . dired-flag-auto-save-files)
+ dired-garbage-files-regexp
+ (defun . dired-flag-garbage-files)
+ (defun . dired-flag-backup-files)
+ (defun . dired-change-marks)
+ (defun . dired-unmark-all-marks)
+ (defun . dired-unmark-all-files)
+ dired-log-buffer
+ (defun . dired-why)
+ (defun . dired-log)
+ (defun . dired-log-summary)
+ dired-ls-sorting-switches dired-sort-by-date-regexp dired-sort-by-name-regexp dired-sort-inhibit
+ (defun . dired-sort-set-modeline)
+ (defun . dired-sort-toggle-or-edit)
+ (defun . dired-sort-toggle)
+ (defun . dired-replace-in-string)
+ (defun . dired-sort-other)
+ dired-subdir-alist-pre-R
+ (defun . dired-sort-R-check)
+ dired-recursive-copies
+ (defun . dired-dnd-popup-notice)
+ (defun . dired-dnd-do-ask-action)
+ (defun . dired-dnd-handle-local-file)
+ (defun . dired-dnd-handle-file)
+ (defun . dired-desktop-buffer-misc-data)
+ (defun . dired-restore-desktop-buffer)
+ (provide . dired))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/regexp-opt.elc"
+ (t . regexp-opt)
+ (defun . regexp-opt)
+ (t . regexp-opt-depth)
+ (defun . regexp-opt-depth)
+ (defun . regexp-opt-group)
+ (defun . regexp-opt-charset)
+ (provide . regexp-opt))
+ ("/usr/share/emacs/23.0.93/lisp/cus-edit.elc"
+ (require . cus-face)
+ (require . wid-edit)
+ (require . cus-load)
+ (require . cus-start)
+ custom-mode-map custom-mode-link-map custom-field-keymap
+ (defun . custom-split-regexp-maybe)
+ (defun . custom-variable-prompt)
+ (defun . custom-menu-filter)
+ custom-prefix-list custom-unlispify-menu-entries custom-unlispify-remove-prefixes
+ (defun . custom-unlispify-menu-entry)
+ custom-unlispify-tag-names
+ (defun . custom-unlispify-tag-name)
+ (defun . custom-prefix-add)
+ custom-guess-name-alist custom-guess-doc-alist
+ (defun . custom-guess-type)
+ custom-browse-sort-alphabetically custom-browse-order-groups custom-browse-only-groups custom-buffer-sort-alphabetically custom-buffer-order-groups custom-menu-sort-alphabetically custom-menu-order-groups
+ (defun . custom-sort-items)
+ custom-commands
+ (defun . Custom-help)
+ custom-reset-menu custom-options
+ (defun . custom-command-apply)
+ (defun . Custom-set)
+ (defun . Custom-save)
+ (defun . custom-reset)
+ (defun . Custom-reset-current)
+ (defun . Custom-reset-saved)
+ custom-reset-standard-variables-list custom-reset-standard-faces-list
+ (defun . custom-reset-standard-save-and-update)
+ (defun . Custom-reset-standard)
+ (defun . custom-prompt-variable)
+ (t . customize-set-value)
+ (defun . customize-set-value)
+ (t . customize-set-variable)
+ (defun . customize-set-variable)
+ (t . customize-save-variable)
+ (defun . customize-save-variable)
+ (t . customize)
+ (defun . customize)
+ (t . customize-mode)
+ (defun . customize-mode)
+ (defun . customize-read-group)
+ (t . customize-group)
+ (defun . customize-group)
+ (t . customize-group-other-window)
+ (defun . customize-group-other-window)
+ (defun . customize-variable)
+ (t . customize-option)
+ (defun . customize-option)
+ (defun . customize-variable-other-window)
+ (t . customize-option-other-window)
+ (defun . customize-option-other-window)
+ customize-changed-options-previous-release customize-package-emacs-version-alist
+ (defun . customize-changed)
+ (t . customize-changed-options)
+ (defun . customize-changed-options)
+ (defun . customize-package-emacs-version)
+ (defun . customize-version-lessp)
+ (t . customize-face)
+ (defun . customize-face)
+ (t . customize-face-other-window)
+ (defun . customize-face-other-window)
+ (defun . customize-customized)
+ (t . customize-unsaved)
+ (defun . customize-unsaved)
+ (t . customize-rogue)
+ (defun . customize-rogue)
+ (t . customize-saved)
+ (defun . customize-saved)
+ (t . customize-apropos)
+ (defun . customize-apropos)
+ (t . customize-apropos-options)
+ (defun . customize-apropos-options)
+ (t . customize-apropos-faces)
+ (defun . customize-apropos-faces)
+ (t . customize-apropos-groups)
+ (defun . customize-apropos-groups)
+ custom-buffer-style custom-buffer-done-kill custom-buffer-indent
+ (defun . custom-get-fresh-buffer)
+ (t . custom-buffer-create)
+ (defun . custom-buffer-create)
+ (t . custom-buffer-create-other-window)
+ (defun . custom-buffer-create-other-window)
+ custom-reset-button-menu custom-buffer-verbose-help
+ (defun . Custom-buffer-done)
+ custom-button custom-button-mouse custom-button-pressed custom-raised-buttons
+ (defun . custom-buffer-create-internal)
+ (t . customize-browse)
+ (defun . customize-browse)
+ (defun . custom-browse-visibility-action)
+ (defun . custom-browse-group-tag-action)
+ (defun . custom-browse-variable-tag-action)
+ (defun . custom-browse-face-tag-action)
+ custom-browse-alist custom-browse-alist
+ (defun . custom-browse-insert-prefix)
+ (defface . custom-invalid)
+ (defface . custom-rogue)
+ (defface . custom-modified)
+ (defface . custom-set)
+ (defface . custom-changed)
+ (defface . custom-themed)
+ (defface . custom-saved)
+ custom-magic-alist custom-magic-show custom-magic-show-hidden custom-magic-show-button
+ (defun . widget-magic-mouse-down-action)
+ (defun . custom-magic-value-create)
+ (defun . custom-magic-reset)
+ (defface . custom-button)
+ (defface . custom-button-mouse)
+ (defface . custom-button-unraised)
+ (defface . custom-button-pressed)
+ (defface . custom-button-pressed-unraised)
+ (defface . custom-documentation)
+ (defface . custom-state)
+ (defface . custom-link)
+ (defun . custom-convert-widget)
+ (defun . custom-notify)
+ (defun . custom-redraw)
+ (defun . custom-redraw-magic)
+ (defun . custom-show)
+ (defun . custom-load-widget)
+ (defun . custom-unloaded-symbol-p)
+ (defun . custom-unloaded-widget-p)
+ (defun . custom-toggle-hide)
+ (defun . custom-toggle-parent)
+ (defun . custom-add-see-also)
+ (defun . custom-add-parent-links)
+ (defface . custom-comment)
+ (defface . custom-comment-tag)
+ (defun . custom-comment-create)
+ (defun . custom-comment-hide)
+ (defun . custom-comment-show)
+ (defun . custom-comment-invisible-p)
+ (defface . custom-variable-tag)
+ (defface . custom-variable-button)
+ custom-variable-default-form
+ (defun . custom-variable-documentation)
+ (defun . custom-variable-type)
+ (defun . custom-variable-value-create)
+ (defun . custom-tag-action)
+ (defun . custom-tag-mouse-down-action)
+ (defun . custom-variable-state-set)
+ (defun . custom-variable-standard-value)
+ custom-variable-menu
+ (defun . custom-variable-action)
+ (defun . custom-variable-edit)
+ (defun . custom-variable-edit-lisp)
+ (defun . custom-variable-set)
+ (defun . custom-variable-mark-to-save)
+ (defun . custom-variable-state-set-and-redraw)
+ (defun . custom-variable-save)
+ (defun . custom-variable-reset-saved)
+ (defun . custom-variable-mark-to-reset-standard)
+ (defun . custom-variable-reset-standard)
+ (defun . custom-variable-backup-value)
+ (defun . custom-variable-reset-backup)
+ (defface . custom-visibility)
+ (defun . custom-face-edit-fix-value)
+ (defun . custom-face-edit-convert-widget)
+ (defun . custom-face-edit-deactivate)
+ (defun . custom-face-edit-activate)
+ (defun . custom-face-edit-delete)
+ (defun . custom-face-edit-attribute-tag)
+ (defface . custom-face-tag)
+ custom-face-default-form custom-face-all
+ (defun . custom-display-unselected-match)
+ custom-face-selected
+ (defun . custom-filter-face-spec)
+ (defun . custom-pre-filter-face-spec)
+ (defun . custom-post-filter-face-spec)
+ (defun . custom-face-value-create)
+ custom-face-menu
+ (defun . custom-face-edit-selected)
+ (defun . custom-face-edit-all)
+ (defun . custom-face-edit-lisp)
+ (defun . custom-face-state-set)
+ (defun . custom-face-action)
+ (defun . custom-face-set)
+ (defun . custom-face-mark-to-save)
+ (defun . custom-face-state-set-and-redraw)
+ (defun . custom-face-save)
+ (defun . custom-face-save-command)
+ (defun . custom-face-reset-saved)
+ (defun . custom-face-standard-value)
+ (defun . custom-face-mark-to-reset-standard)
+ (defun . custom-face-reset-standard)
+ widget-face-prompt-value-history
+ (defun . widget-face-sample-face-get)
+ (defun . widget-face-notify)
+ (defun . custom-hook-convert-widget)
+ (defun . custom-group-link-action)
+ custom-group-tag-faces
+ (defface . custom-group-tag-1)
+ (defface . custom-group-tag)
+ (defun . custom-group-sample-face-get)
+ (defun . custom-group-visibility-create)
+ (defun . custom-group-members)
+ (defun . custom-group-value-create)
+ custom-group-menu
+ (defun . custom-group-action)
+ (defun . custom-group-set)
+ (defun . custom-group-mark-to-save)
+ (defun . custom-group-state-set-and-redraw)
+ (defun . custom-group-save)
+ (defun . custom-group-reset-current)
+ (defun . custom-group-reset-saved)
+ (defun . custom-group-reset-standard)
+ (defun . custom-group-mark-to-reset-standard)
+ (defun . custom-group-state-update)
+ custom-file
+ (defun . custom-file)
+ (t . custom-save-all)
+ (defun . custom-save-all)
+ (t . customize-save-customized)
+ (defun . customize-save-customized)
+ (defun . custom-save-delete)
+ (defun . custom-save-variables)
+ (defun . custom-save-faces)
+ custom-menu-nesting
+ (defun . custom-face-menu-create)
+ (defun . custom-variable-menu-create)
+ (defun . custom-group-menu-create)
+ (t . custom-menu-create)
+ (defun . custom-menu-create)
+ (t . customize-menu-create)
+ (defun . customize-menu-create)
+ Custom-mode-menu
+ (defun . Custom-mode-menu)
+ custom-tool-bar-map
+ (defun . Custom-no-edit)
+ (defun . Custom-newline)
+ (defun . Custom-goto-parent)
+ Custom-mode-hook
+ (defun . custom-state-buffer-message)
+ Custom-mode-map Custom-mode-syntax-table Custom-mode-abbrev-table Custom-mode-abbrev-table
+ (defun . Custom-mode)
+ (defun . custom-mode)
+ custom-mode-hook
+ (provide . cus-edit))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/easymenu.elc" easy-menu-precalculate-equivalent-keybindings
+ (defun . easy-menu-intern)
+ (t . easy-menu-define)
+ (defun . easy-menu-define)
+ (defun . easy-menu-binding)
+ (t . easy-menu-do-define)
+ (defun . easy-menu-do-define)
+ (defun . easy-menu-filter-return)
+ easy-menu-avoid-duplicate-keys
+ (t . easy-menu-create-menu)
+ (defun . easy-menu-create-menu)
+ easy-menu-button-prefix easy-menu-converted-items-table
+ (defun . easy-menu-convert-item)
+ (defun . easy-menu-convert-item-1)
+ (defun . easy-menu-define-key)
+ (defun . easy-menu-name-match)
+ (defun . easy-menu-always-true-p)
+ easy-menu-item-count
+ (defun . easy-menu-make-symbol)
+ (t . easy-menu-change)
+ (defun . easy-menu-change)
+ (defun . easy-menu-remove)
+ (defun . easy-menu-add)
+ (defun . add-submenu)
+ (defun . easy-menu-add-item)
+ (defun . easy-menu-item-present-p)
+ (defun . easy-menu-remove-item)
+ (defun . easy-menu-return-item)
+ (defun . easy-menu-lookup-name)
+ (defun . easy-menu-get-map)
+ (provide . easymenu))
+ ("/usr/share/emacs/23.0.93/lisp/cus-start.elc"
+ (provide . cus-start))
+ ("/usr/share/emacs/23.0.93/lisp/cus-load.el"
+ (defun . custom-put-if-not)
+ custom-versions-load-alist
+ (provide . cus-load))
+ ("/usr/share/emacs/23.0.93/lisp/wid-edit.elc"
+ (defun . widget-event-point)
+ (defun . widget-button-release-event-p)
+ widget-documentation-face
+ (defface . widget-documentation)
+ widget-button-face
+ (defface . widget-button)
+ widget-mouse-face
+ (defface . widget-field)
+ (defface . widget-single-line-field)
+ (defun . widget-princ-to-string)
+ (defun . widget-clear-undo)
+ widget-menu-max-size widget-menu-max-shortcuts widget-menu-minibuffer-flag
+ (defun . widget-choose)
+ (defun . widget-remove-if)
+ widget-field-add-space widget-field-use-before-change
+ (defun . widget-specify-field)
+ (defun . widget-specify-secret)
+ (defun . widget-specify-button)
+ (defun . widget-mouse-help)
+ (defun . widget-specify-sample)
+ (defun . widget-specify-doc)
+ (defun . widget-specify-insert)
+ (defface . widget-inactive)
+ (defun . widget-specify-inactive)
+ (defun . widget-overlay-inactive)
+ (defun . widget-specify-active)
+ (defun . widget-type)
+ (t . widgetp)
+ (defun . widgetp)
+ (defun . widget-get-indirect)
+ (defun . widget-member)
+ (t . widget-value)
+ (defun . widget-value)
+ (defun . widget-value-set)
+ (defun . widget-default-get)
+ (defun . widget-match-inline)
+ (defun . widget-apply-action)
+ (t . widget-prompt-value)
+ (defun . widget-prompt-value)
+ (defun . widget-get-sibling)
+ (defun . widget-map-buttons)
+ widget-image-directory widget-image-enable widget-image-conversion
+ (defun . widget-image-find)
+ widget-button-pressed-face
+ (defun . widget-image-insert)
+ (defun . widget-move-and-invoke)
+ widget-button-prefix widget-button-suffix
+ (t . widget-create)
+ (defun . widget-create)
+ (defun . widget-create-child-and-convert)
+ (defun . widget-create-child)
+ (defun . widget-create-child-value)
+ (t . widget-delete)
+ (defun . widget-delete)
+ (defun . widget-copy)
+ (defun . widget-convert)
+ (t . widget-insert)
+ (defun . widget-insert)
+ (defun . widget-convert-text)
+ (defun . widget-convert-button)
+ (defun . widget-leave-text)
+ (defun . advertised-widget-backward)
+ widget-keymap widget-global-map widget-field-keymap widget-text-keymap
+ (defun . widget-field-activate)
+ (defface . widget-button-pressed)
+ widget-button-click-moves-point
+ (defun . widget-button-click)
+ (defun . widget-button-press)
+ (defun . widget-tabable-at)
+ widget-use-overlay-change
+ (defun . widget-move)
+ (defun . widget-forward)
+ (defun . widget-backward)
+ (defun . widget-beginning-of-line)
+ (defun . widget-end-of-line)
+ (defun . widget-kill-line)
+ widget-complete-field
+ (defun . widget-narrow-to-field)
+ (defun . widget-complete)
+ widget-field-new widget-field-list
+ (defun . widget-at)
+ (t . widget-setup)
+ (defun . widget-setup)
+ widget-field-last widget-field-was
+ (defun . widget-field-at)
+ (defun . widget-field-buffer)
+ (defun . widget-field-start)
+ (defun . widget-field-end)
+ (defun . widget-field-find)
+ (defun . widget-before-change)
+ (defun . widget-add-change)
+ (defun . widget-after-change)
+ (defun . widget-parent-action)
+ (defun . widget-children-value-delete)
+ (defun . widget-children-validate)
+ (defun . widget-child-value-get)
+ (defun . widget-child-value-inline)
+ (defun . widget-child-validate)
+ (defun . widget-type-value-create)
+ (defun . widget-type-default-get)
+ (defun . widget-type-match)
+ (defun . widget-types-copy)
+ (defun . widget-types-convert-widget)
+ (defun . widget-value-convert-widget)
+ (defun . widget-value-value-get)
+ (defun . widget-default-complete)
+ (defun . widget-default-create)
+ (defun . widget-default-format-handler)
+ (defun . widget-default-button-face-get)
+ (defun . widget-default-mouse-face-get)
+ (defun . widget-default-sample-face-get)
+ (defun . widget-default-delete)
+ (defun . widget-default-value-set)
+ (defun . widget-default-value-inline)
+ (defun . widget-default-default-get)
+ (defun . widget-default-menu-tag-get)
+ (defun . widget-default-active)
+ (defun . widget-default-deactivate)
+ (defun . widget-default-action)
+ (defun . widget-default-notify)
+ (defun . widget-default-prompt-value)
+ (defun . widget-docstring)
+ (defun . widget-item-value-create)
+ (defun . widget-item-match)
+ (defun . widget-item-match-inline)
+ (defun . widget-sublist)
+ (defun . widget-item-action)
+ widget-push-button-prefix widget-push-button-suffix
+ (defun . widget-push-button-value-create)
+ widget-link-prefix widget-link-suffix
+ (defun . widget-info-link-action)
+ (defun . widget-url-link-action)
+ (defun . widget-function-link-action)
+ (defun . widget-variable-link-action)
+ (defun . widget-file-link-action)
+ (defun . widget-emacs-library-link-action)
+ (defun . widget-emacs-commentary-link-action)
+ widget-field-history
+ (defun . widget-field-prompt-internal)
+ (defun . widget-field-prompt-value)
+ widget-edit-functions
+ (defun . widget-field-action)
+ (defun . widget-field-validate)
+ (defun . widget-field-value-create)
+ (defun . widget-field-value-delete)
+ (defun . widget-field-value-get)
+ (defun . widget-field-match)
+ (defun . widget-choice-value-create)
+ (defun . widget-choice-default-get)
+ widget-choice-toggle
+ (defun . widget-choice-mouse-down-action)
+ (defun . widget-choice-action)
+ (defun . widget-choice-validate)
+ (defun . widget-choice-match)
+ (defun . widget-choice-match-inline)
+ (defun . widget-toggle-value-create)
+ (defun . widget-toggle-action)
+ (defun . widget-checkbox-action)
+ (defun . widget-checklist-value-create)
+ (defun . widget-checklist-add-item)
+ (defun . widget-checklist-match)
+ (defun . widget-checklist-match-inline)
+ (defun . widget-checklist-match-find)
+ (defun . widget-checklist-match-up)
+ (defun . widget-checklist-value-get)
+ (defun . widget-checklist-validate)
+ (defun . widget-radio-button-notify)
+ (defun . widget-radio-value-create)
+ (defun . widget-radio-add-item)
+ (defun . widget-radio-value-get)
+ (defun . widget-radio-chosen)
+ (defun . widget-radio-value-inline)
+ (defun . widget-radio-value-set)
+ (defun . widget-radio-validate)
+ (defun . widget-radio-action)
+ (defun . widget-insert-button-action)
+ (defun . widget-delete-button-action)
+ (defun . widget-editable-list-format-handler)
+ (defun . widget-editable-list-value-create)
+ (defun . widget-editable-list-value-get)
+ (defun . widget-editable-list-match)
+ (defun . widget-editable-list-match-inline)
+ (defun . widget-editable-list-insert-before)
+ (defun . widget-editable-list-delete-at)
+ (defun . widget-editable-list-entry-create)
+ (defun . widget-group-value-create)
+ (defun . widget-group-default-get)
+ (defun . widget-group-match)
+ (defun . widget-group-match-inline)
+ (defun . widget-visibility-value-create)
+ (defun . widget-documentation-link-action)
+ widget-documentation-links widget-documentation-link-regexp widget-documentation-link-p widget-documentation-link-type
+ (defun . widget-documentation-link-add)
+ (defun . widget-documentation-string-value-create)
+ (defun . widget-documentation-string-action)
+ (defun . widget-add-documentation-string-button)
+ (defun . widget-const-prompt-value)
+ widget-string-prompt-value-history
+ (defun . widget-string-complete)
+ (defun . widget-regexp-match)
+ (defun . widget-regexp-validate)
+ (defun . widget-file-complete)
+ (defun . widget-file-prompt-value)
+ widget-symbol-prompt-value-history
+ (defun . widget-symbol-prompt-internal)
+ widget-function-prompt-value-history widget-variable-prompt-value-history
+ (defun . widget-coding-system-prompt-value)
+ (defun . widget-coding-system-action)
+ widget-key-sequence-prompt-value-history widget-key-sequence-default-value widget-key-sequence-map
+ (defun . widget-key-sequence-read-event)
+ (defun . widget-key-sequence-validate)
+ (defun . widget-key-sequence-value-to-internal)
+ (defun . widget-key-sequence-value-to-external)
+ (defun . widget-sexp-value-to-internal)
+ (defun . widget-sexp-validate)
+ widget-sexp-prompt-value-history
+ (defun . widget-sexp-prompt-value)
+ (defun . widget-restricted-sexp-match)
+ (defun . widget-vector-match)
+ (defun . widget-cons-match)
+ (defun . widget-plist-convert-widget)
+ (defun . widget-plist-convert-option)
+ (defun . widget-alist-convert-widget)
+ (defun . widget-alist-convert-option)
+ (defun . widget-choice-prompt-value)
+ (defun . widget-boolean-prompt-value)
+ (defun . widget-color-complete)
+ (defun . widget-color-sample-face-get)
+ (defun . widget-color-action)
+ (defun . widget-color-notify)
+ (defun . widget-echo-help)
+ (provide . wid-edit))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/cl.elc" cl-optimize-speed cl-optimize-safety custom-print-functions
+ (defun . cl-unload-function)
+ (defun . incf)
+ (defun . decf)
+ (defun . pop)
+ (defun . push)
+ (defun . pushnew)
+ (defun . cl-set-elt)
+ (defun . cl-set-nthcdr)
+ (defun . cl-set-buffer-substring)
+ (defun . cl-set-substring)
+ (defun . cl-map-extents)
+ (defun . cl-block-wrapper)
+ (defun . cl-block-throw)
+ (defun . values)
+ (defun . values-list)
+ (defun . multiple-value-list)
+ (defun . multiple-value-apply)
+ (defun . multiple-value-call)
+ (defun . nth-value)
+ cl-macro-environment cl-old-macroexpand
+ (defun . macroexpand)
+ (defun . cl-macroexpand)
+ cl-compiling-file
+ (defun . cl-compiling-file)
+ cl-proclaims-deferred
+ (defun . proclaim)
+ (defun . declaim)
+ (defun . cl-random-time)
+ *gensym-counter*
+ (defun . floatp-safe)
+ (defun . plusp)
+ (defun . minusp)
+ (defun . oddp)
+ (defun . evenp)
+ *random-state* most-positive-float most-positive-float most-negative-float most-negative-float least-positive-float least-positive-float least-negative-float least-negative-float least-positive-normalized-float least-positive-normalized-float least-negative-normalized-float least-negative-normalized-float float-epsilon float-epsilon float-negative-epsilon float-negative-epsilon
+ (defun . copy-seq)
+ (defun . mapcar*)
+ (defun . svref)
+ (defun . first)
+ (defun . second)
+ (defun . rest)
+ (defun . endp)
+ (defun . third)
+ (defun . fourth)
+ (defun . fifth)
+ (defun . sixth)
+ (defun . seventh)
+ (defun . eighth)
+ (defun . ninth)
+ (defun . tenth)
+ (defun . caaar)
+ (defun . caadr)
+ (defun . cadar)
+ (defun . caddr)
+ (defun . cdaar)
+ (defun . cdadr)
+ (defun . cddar)
+ (defun . cdddr)
+ (defun . caaaar)
+ (defun . caaadr)
+ (defun . caadar)
+ (defun . caaddr)
+ (defun . cadaar)
+ (defun . cadadr)
+ (defun . caddar)
+ (defun . cadddr)
+ (defun . cdaaar)
+ (defun . cdaadr)
+ (defun . cdadar)
+ (defun . cdaddr)
+ (defun . cddaar)
+ (defun . cddadr)
+ (defun . cdddar)
+ (defun . cddddr)
+ (defun . list*)
+ (defun . ldiff)
+ (defun . copy-list)
+ (defun . cl-maclisp-member)
+ (defun . cl-member)
+ (defun . cl-floor)
+ (defun . cl-ceiling)
+ (defun . cl-truncate)
+ (defun . cl-round)
+ (defun . cl-mod)
+ (defun . adjoin)
+ (defun . subst)
+ (defun . cl-do-subst)
+ (defun . acons)
+ (defun . pairlis)
+ (provide . cl-19)
+ (provide . cl)
+ cl-hacked-flag
+ (defun . cl-hack-byte-compiler)
+ (provide . cl))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/cl-loaddefs.el"
+ (autoload . coerce)
+ (autoload . equalp)
+ (autoload . cl-mapcar-many)
+ (autoload . map)
+ (autoload . maplist)
+ (autoload . mapl)
+ (autoload . mapcan)
+ (autoload . mapcon)
+ (autoload . some)
+ (autoload . every)
+ (autoload . notany)
+ (autoload . notevery)
+ (defun . cl-map-keymap)
+ (autoload . cl-map-keymap-recursively)
+ (autoload . cl-map-intervals)
+ (autoload . cl-map-overlays)
+ (autoload . cl-set-frame-visible-p)
+ (autoload . cl-progv-before)
+ (autoload . gcd)
+ (autoload . lcm)
+ (autoload . isqrt)
+ (autoload . floor*)
+ (autoload . ceiling*)
+ (autoload . truncate*)
+ (autoload . round*)
+ (autoload . mod*)
+ (autoload . rem*)
+ (autoload . signum)
+ (autoload . random*)
+ (autoload . make-random-state)
+ (autoload . random-state-p)
+ (autoload . cl-float-limits)
+ (autoload . subseq)
+ (autoload . concatenate)
+ (autoload . revappend)
+ (autoload . nreconc)
+ (autoload . list-length)
+ (autoload . tailp)
+ (autoload . get*)
+ (autoload . getf)
+ (autoload . cl-set-getf)
+ (autoload . cl-do-remf)
+ (autoload . cl-remprop)
+ (defun . remprop)
+ (defun . cl-gethash)
+ (defun . cl-puthash)
+ (defun . cl-remhash)
+ (defun . cl-clrhash)
+ (defun . cl-maphash)
+ (defun . cl-make-hash-table)
+ (defun . cl-hash-table-p)
+ (defun . cl-hash-table-count)
+ (autoload . cl-macroexpand-all)
+ (autoload . cl-prettyexpand)
+ (autoload . gensym)
+ (autoload . gentemp)
+ (autoload . defun*)
+ (autoload . defmacro*)
+ (autoload . function*)
+ (autoload . destructuring-bind)
+ (autoload . eval-when)
+ (autoload . load-time-value)
+ (autoload . case)
+ (autoload . ecase)
+ (autoload . typecase)
+ (autoload . etypecase)
+ (autoload . block)
+ (autoload . return)
+ (autoload . return-from)
+ (autoload . loop)
+ (autoload . do)
+ (autoload . do*)
+ (autoload . dolist)
+ (autoload . dotimes)
+ (autoload . do-symbols)
+ (autoload . do-all-symbols)
+ (autoload . psetq)
+ (autoload . progv)
+ (autoload . flet)
+ (autoload . labels)
+ (autoload . macrolet)
+ (autoload . symbol-macrolet)
+ (autoload . lexical-let)
+ (autoload . lexical-let*)
+ (autoload . multiple-value-bind)
+ (autoload . multiple-value-setq)
+ (autoload . locally)
+ (autoload . the)
+ (autoload . declare)
+ (autoload . define-setf-method)
+ (autoload . defsetf)
+ (autoload . get-setf-method)
+ (autoload . setf)
+ (autoload . psetf)
+ (autoload . cl-do-pop)
+ (autoload . remf)
+ (autoload . shiftf)
+ (autoload . rotatef)
+ (autoload . letf)
+ (autoload . letf*)
+ (autoload . callf)
+ (autoload . callf2)
+ (autoload . define-modify-macro)
+ (autoload . defstruct)
+ (autoload . cl-struct-setf-expander)
+ (autoload . typep)
+ (autoload . check-type)
+ (autoload . assert)
+ (autoload . define-compiler-macro)
+ (autoload . compiler-macroexpand)
+ (autoload . reduce)
+ (autoload . fill)
+ (autoload . replace)
+ (autoload . remove*)
+ (autoload . remove-if)
+ (autoload . remove-if-not)
+ (autoload . delete*)
+ (autoload . delete-if)
+ (autoload . delete-if-not)
+ (autoload . remove-duplicates)
+ (autoload . delete-duplicates)
+ (autoload . substitute)
+ (autoload . substitute-if)
+ (autoload . substitute-if-not)
+ (autoload . nsubstitute)
+ (autoload . nsubstitute-if)
+ (autoload . nsubstitute-if-not)
+ (autoload . find)
+ (autoload . find-if)
+ (autoload . find-if-not)
+ (autoload . position)
+ (autoload . position-if)
+ (autoload . position-if-not)
+ (autoload . count)
+ (autoload . count-if)
+ (autoload . count-if-not)
+ (autoload . mismatch)
+ (autoload . search)
+ (autoload . sort*)
+ (autoload . stable-sort)
+ (autoload . merge)
+ (autoload . member*)
+ (autoload . member-if)
+ (autoload . member-if-not)
+ (autoload . cl-adjoin)
+ (autoload . assoc*)
+ (autoload . assoc-if)
+ (autoload . assoc-if-not)
+ (autoload . rassoc*)
+ (autoload . rassoc-if)
+ (autoload . rassoc-if-not)
+ (autoload . union)
+ (autoload . nunion)
+ (autoload . intersection)
+ (autoload . nintersection)
+ (autoload . set-difference)
+ (autoload . nset-difference)
+ (autoload . set-exclusive-or)
+ (autoload . nset-exclusive-or)
+ (autoload . subsetp)
+ (autoload . subst-if)
+ (autoload . subst-if-not)
+ (autoload . nsubst)
+ (autoload . nsubst-if)
+ (autoload . nsubst-if-not)
+ (autoload . sublis)
+ (autoload . nsublis)
+ (autoload . tree-equal))
+ ("/home/hobbes/nxhtml/nxhtml-loaddefs.el"
+ (autoload . html-site-buffer-or-dired-file-name)
+ (autoload . html-site-set-site)
+ (autoload . html-site-dired-current)
+ (autoload . html-site-find-file)
+ (autoload . html-site-rgrep)
+ (autoload . html-site-query-replace)
+ (autoload . inlimg-mode)
+ (autoload . inlimg-toggle-img-display)
+ (autoload . nxhtml-report-bug)
+ (autoload . nxhtml-edit-with-gimp)
+ (autoload . nxhtml-browse-file)
+ (autoload . nxhtml-browse-region)
+ nxhtml-global-minor-mode
+ (autoload . nxhtml-global-minor-mode)
+ (autoload . nxhtml-mode)
+ (autoload . nxhtml-short-tag-help)
+ (autoload . nxhtml-validation-header-mode)
+ (autoload . nxhtml-mumamo-mode)
+ (autoload . embperl-nxhtml-mumamo-mode)
+ (autoload . django-nxhtml-mumamo-mode)
+ (autoload . genshi-nxhtml-mumamo-mode)
+ (autoload . mjt-nxhtml-mumamo-mode)
+ (autoload . smarty-nxhtml-mumamo-mode)
+ (autoload . jsp-nxhtml-mumamo-mode)
+ (autoload . eruby-nxhtml-mumamo-mode)
+ (autoload . asp-nxhtml-mumamo-mode)
+ (autoload . mako-nxhtml-mumamo-mode)
+ nxml-where-global-mode
+ (autoload . nxml-where-global-mode)
+ (autoload . rngalt-set-validation-header)
+ (autoload . tidy-build-menu)
+ (autoload . xhtml-help-show-css-ref)
+ (autoload . xhtml-help-show-tag-ref)
+ (autoload . csharp-mode)
+ (autoload . django-mode)
+ (autoload . javascript-mode)
+ (autoload . moz-minor-mode)
+ (autoload . inferior-moz-mode)
+ php-file-patterns
+ (autoload . php-mode)
+ (autoload . smarty-mode)
+ (autoload . tt-mode)
+ (autoload . wikipedia-mode)
+ (autoload . wikipedia-draft)
+ (autoload . wikipedia-draft-page)
+ (autoload . wikipedia-draft-buffer)
+ wikipedia-draft-send-archive
+ (autoload . ert-deftest)
+ (autoload . ert-run-tests-interactively)
+ (autoload . nxhtmltest-run-Q)
+ (autoload . nxhtmltest-run-indent)
+ (autoload . nxhtmltest-run)
+ (autoload . appmenu-add)
+ (autoload . as-external-for-xhtml)
+ (autoload . as-external-for-mail)
+ (autoload . as-external-for-wiki)
+ as-external-mode
+ (autoload . as-external-mode)
+ (autoload . chart-complete)
+ (autoload . chart-make-chart)
+ css-color-global-mode
+ (autoload . css-color-global-mode)
+ (autoload . css-color-mode)
+ (autoload . css-palette-mode)
+ css-palette-global-mode
+ (autoload . css-palette-global-mode)
+ (autoload . freemind-show)
+ (autoload . freemind-from-org-mode-node)
+ (autoload . freemind-from-org-mode)
+ (autoload . freemind-from-org-sparse-tree)
+ (autoload . freemind-to-org-mode)
+ (autoload . gimp-edit-file)
+ (autoload . gimp-edit-buffer)
+ (autoload . gimp-can-edit)
+ (autoload . gpl-mode)
+ (autoload . html-write-mode)
+ (autoload . htmlfontify-buffer)
+ (autoload . majmodpri-sort-lists)
+ (autoload . majmodpri-apply)
+ (autoload . majmodpri-apply-priorities)
+ (autoload . mlinks-mode)
+ (autoload . mumamo-mark-for-refontification)
+ (autoload . html-mumamo-mode)
+ (autoload . nxml-mumamo-mode)
+ (autoload . embperl-html-mumamo-mode)
+ (autoload . django-html-mumamo-mode)
+ (autoload . genshi-html-mumamo-mode)
+ (autoload . mjt-html-mumamo-mode)
+ (autoload . smarty-html-mumamo-mode)
+ (autoload . jsp-html-mumamo-mode)
+ (autoload . eruby-mumamo-mode)
+ (autoload . eruby-html-mumamo-mode)
+ (autoload . perl-mumamo-mode)
+ (autoload . cperl-mumamo-mode)
+ (autoload . metapost-mumamo-mode)
+ (autoload . laszlo-nxml-mumamo-mode)
+ (autoload . csound-sgml-mumamo-mode)
+ (autoload . noweb2-mumamo-mode)
+ (autoload . asp-html-mumamo-mode)
+ (autoload . org-mumamo-mode)
+ (autoload . mako-html-mumamo-mode)
+ (autoload . popup-menu-at-point)
+ (autoload . define-toggle)
+ (autoload . unfill-paragraph)
+ (autoload . unfill-region)
+ (autoload . unfill-individual-paragraphs)
+ (autoload . major-or-multi-majorp)
+ (autoload . multi-major-modep)
+ (autoload . major-modep)
+ (autoload . ourcomments-move-beginning-of-line)
+ (autoload . ourcomments-move-end-of-line)
+ (autoload . describe-key-and-map-briefly)
+ wrap-to-fill-left-marg wrap-to-fill-left-marg-modes
+ (autoload . wrap-to-fill-column-mode)
+ better-fringes-mode
+ (autoload . better-fringes-mode)
+ (autoload . find-emacs-other-file)
+ (autoload . ourcomments-ediff-files)
+ (autoload . describe-command)
+ (autoload . describe-custom-group)
+ (autoload . describe-defstruct)
+ (autoload . describe-symbol)
+ (autoload . ourcomments-ido-buffer-other-window)
+ (autoload . ourcomments-ido-buffer-other-frame)
+ (autoload . ourcomments-ido-buffer-raise-frame)
+ ourcomments-ido-ctrl-tab
+ (autoload . emacs)
+ (autoload . emacs-buffer-file)
+ (autoload . emacs--debug-init)
+ (autoload . emacs-Q)
+ (autoload . emacs-Q-nxhtml)
+ (autoload . grep-query-replace)
+ (autoload . info-open-file)
+ (autoload . rnc-mode)
+ (autoload . search-form)
+ sex-mode
+ (autoload . sex-mode)
+ tabkey2-mode
+ (autoload . tabkey2-mode)
+ (autoload . tyda-lookup-word)
+ (autoload . udev-cedet-update)
+ (autoload . udev-ecb-update)
+ (autoload . udev-rinari-update)
+ (autoload . viper-tutorial)
+ (autoload . winsav-put-window-tree)
+ winsav-save-mode
+ (autoload . winsav-save-mode)
+ (autoload . winsav-save-named-config)
+ (autoload . winsav-switch-config)
+ (autoload . resize-windows)
+ (autoload . winsize-balance-siblings)
+ (autoload . winsize-save-window-configuration)
+ (autoload . nxhtmlmaint-start-byte-compilation)
+ (autoload . nxhtmlmaint-byte-uncompile-all))
+ ("/usr/share/emacs/23.0.93/lisp/international/encoded-kb.elc" encoded-kbd-mode-map encoded-kbd-iso2022-esc-map encoded-kbd-iso2022-esc-dollar-map encoded-kbd-iso2022-designation-map encoded-kbd-iso2022-designations encoded-kbd-iso2022-invocations
+ (defun . encoded-kbd-last-key)
+ (defun . encoded-kbd-iso2022-designation)
+ (defun . encoded-kbd-iso2022-single-shift)
+ (defun . encoded-kbd-self-insert-iso2022-7bit)
+ (defun . encoded-kbd-self-insert-iso2022-8bit)
+ (defun . encoded-kbd-self-insert-sjis)
+ (defun . encoded-kbd-self-insert-big5)
+ (defun . encoded-kbd-self-insert-ccl)
+ (defun . encoded-kbd-decode-code-list)
+ (defun . encoded-kbd-self-insert-charset)
+ (defun . encoded-kbd-self-insert-utf-8)
+ (defun . encoded-kbd-setup-keymap)
+ (t . encoded-kbd-setup-display)
+ (defun . encoded-kbd-setup-display)
+ (provide . encoded-kb))
+ ("/usr/share/emacs/23.0.93/leim/leim-list.el"
+ (autoload . ucs-input-activate)
+ (autoload . hangul-input-method-activate))
+ ("/usr/share/emacs/23.0.93/lisp/subdirs.el")
+ ("/usr/share/emacs-snapshot/site-lisp/subdirs.el")
+ ("/usr/share/emacs/23.0.93/lisp/site-init.elc")
+ ("/usr/share/emacs/23.0.93/lisp/tooltip.elc" tooltip-mode
+ (defun . tooltip-mode)
+ tooltip-delay tooltip-short-delay tooltip-recent-seconds tooltip-hide-delay tooltip-x-offset tooltip-y-offset tooltip-frame-parameters
+ (defface . tooltip)
+ tooltip-use-echo-area tooltip-functions tooltip-hook tooltip-timeout-id tooltip-last-mouse-motion-event tooltip-hide-time
+ (defun . tooltip-event-buffer)
+ (defun . tooltip-delay)
+ (defun . tooltip-cancel-delayed-tip)
+ (defun . tooltip-start-delayed-tip)
+ (defun . tooltip-timeout)
+ (defun . tooltip-set-param)
+ (defun . tooltip-show)
+ (defun . tooltip-hide)
+ (defun . tooltip-identifier-from-point)
+ (defun . tooltip-region-active-p)
+ (defun . tooltip-expr-to-print)
+ (defun . tooltip-process-prompt-regexp)
+ (defun . tooltip-strip-prompt)
+ tooltip-help-message tooltip-previous-message
+ (defun . tooltip-show-help-non-mode)
+ (defun . tooltip-show-help)
+ (defun . tooltip-help-tips)
+ (provide . tooltip))
+ ("/usr/share/emacs/23.0.93/lisp/ediff-hook.elc" menu-bar-ediff-misc-menu menu-bar-epatch-menu menu-bar-ediff-merge-menu menu-bar-ediff-menu
+ (provide . ediff-hook))
+ ("/usr/share/emacs/23.0.93/lisp/vc-hooks.elc" vc-ignore-vc-files vc-master-templates vc-header-alist vc-ignore-dir-regexp vc-handled-backends vc-directory-exclusion-list vc-path vc-make-backup-files vc-follow-symlinks vc-display-status vc-consult-headers vc-keep-workfiles vc-mistrust-permissions
+ (defun . vc-mistrust-permissions)
+ vc-stay-local
+ (defun . vc-stay-local-p)
+ (defun . vc-mode)
+ (defun . vc-error-occurred)
+ vc-file-prop-obarray vc-touched-properties
+ (defun . vc-file-setprop)
+ (defun . vc-file-getprop)
+ (defun . vc-file-clearprops)
+ (defun . vc-make-backend-sym)
+ (defun . vc-find-backend-function)
+ (defun . vc-call-backend)
+ (defun . vc-call)
+ (defun . vc-parse-buffer)
+ (defun . vc-insert-file)
+ (defun . vc-find-root)
+ (defun . vc-registered)
+ (defun . vc-backend)
+ (defun . vc-backend-subdirectory-name)
+ (defun . vc-name)
+ (defun . vc-checkout-model)
+ (defun . vc-user-login-name)
+ (defun . vc-state)
+ (defun . vc-up-to-date-p)
+ (defun . vc-default-state-heuristic)
+ (defun . vc-workfile-unchanged-p)
+ (defun . vc-default-workfile-unchanged-p)
+ (defun . vc-working-revision)
+ (defun . vc-workfile-version)
+ (defun . vc-default-working-revision)
+ (defun . vc-default-registered)
+ (defun . vc-possible-master)
+ (defun . vc-check-master-templates)
+ (defun . vc-toggle-read-only)
+ (defun . vc-default-make-version-backups-p)
+ (defun . vc-version-backup-file-name)
+ (defun . vc-delete-automatic-version-backups)
+ (defun . vc-make-version-backup)
+ (defun . vc-before-save)
+ (defun . vc-after-save)
+ vc-menu-entry vc-mode-line-map vc-mode-line-map
+ (defun . vc-mode-line)
+ (defun . vc-default-mode-line-string)
+ (defun . vc-follow-link)
+ (defun . vc-default-find-file-hook)
+ (defun . vc-find-file-hook)
+ (defun . vc-file-not-found-hook)
+ (defun . vc-default-find-file-not-found-hook)
+ (defun . vc-kill-buffer-hook)
+ vc-prefix-map vc-menu-map
+ (defun . vc-menu-map)
+ (defun . vc-menu-map-filter)
+ (defun . vc-default-extra-menu)
+ (provide . vc-hooks))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/float-sup.elc" pi e degrees-to-radians radians-to-degrees
+ (defun . degrees-to-radians)
+ (defun . radians-to-degrees)
+ (provide . lisp-float-type))
+ ("/usr/share/emacs/23.0.93/lisp/term/x-win.elc"
+ (require . frame)
+ (require . mouse)
+ (require . scroll-bar)
+ (require . faces)
+ (require . select)
+ (require . menu-bar)
+ (require . fontset)
+ (require . x-dnd)
+ (defun . x-handle-no-bitmap-icon)
+ (defun . x-handle-parent-id)
+ (defun . x-handle-smid)
+ emacs-save-session-functions
+ (defun . emacs-session-filename)
+ (defun . emacs-session-save)
+ (defun . emacs-session-restore)
+ x-pointer-X-cursor x-pointer-X-cursor x-pointer-arrow x-pointer-arrow x-pointer-based-arrow-down x-pointer-based-arrow-down x-pointer-based-arrow-up x-pointer-based-arrow-up x-pointer-boat x-pointer-boat x-pointer-bogosity x-pointer-bogosity x-pointer-bottom-left-corner x-pointer-bottom-left-corner x-pointer-bottom-right-corner x-pointer-bottom-right-corner x-pointer-bottom-side x-pointer-bottom-side x-pointer-bottom-tee x-pointer-bottom-tee x-pointer-box-spiral x-pointer-box-spiral x-pointer-center-ptr x-pointer-center-ptr x-pointer-circle x-pointer-circle x-pointer-clock x-pointer-clock x-pointer-coffee-mug x-pointer-coffee-mug x-pointer-cross x-pointer-cross x-pointer-cross-reverse x-pointer-cross-reverse x-pointer-crosshair x-pointer-crosshair x-pointer-diamond-cross x-pointer-diamond-cross x-pointer-dot x-pointer-dot x-pointer-dotbox x-pointer-dotbox x-pointer-double-arrow x-pointer-double-arrow x-pointer-draft-large x-pointer-draft-large x-pointer-draft-small x-pointer-draft-small x-pointer-draped-box x-pointer-draped-box x-pointer-exchange x-pointer-exchange x-pointer-fleur x-pointer-fleur x-pointer-gobbler x-pointer-gobbler x-pointer-gumby x-pointer-gumby x-pointer-hand1 x-pointer-hand1 x-pointer-hand2 x-pointer-hand2 x-pointer-heart x-pointer-heart x-pointer-icon x-pointer-icon x-pointer-iron-cross x-pointer-iron-cross x-pointer-left-ptr x-pointer-left-ptr x-pointer-left-side x-pointer-left-side x-pointer-left-tee x-pointer-left-tee x-pointer-leftbutton x-pointer-leftbutton x-pointer-ll-angle x-pointer-ll-angle x-pointer-lr-angle x-pointer-lr-angle x-pointer-man x-pointer-man x-pointer-middlebutton x-pointer-middlebutton x-pointer-mouse x-pointer-mouse x-pointer-pencil x-pointer-pencil x-pointer-pirate x-pointer-pirate x-pointer-plus x-pointer-plus x-pointer-question-arrow x-pointer-question-arrow x-pointer-right-ptr x-pointer-right-ptr x-pointer-right-side x-pointer-right-side x-pointer-right-tee x-pointer-right-tee x-pointer-rightbutton x-pointer-rightbutton x-pointer-rtl-logo x-pointer-rtl-logo x-pointer-sailboat x-pointer-sailboat x-pointer-sb-down-arrow x-pointer-sb-down-arrow x-pointer-sb-h-double-arrow x-pointer-sb-h-double-arrow x-pointer-sb-left-arrow x-pointer-sb-left-arrow x-pointer-sb-right-arrow x-pointer-sb-right-arrow x-pointer-sb-up-arrow x-pointer-sb-up-arrow x-pointer-sb-v-double-arrow x-pointer-sb-v-double-arrow x-pointer-shuttle x-pointer-shuttle x-pointer-sizing x-pointer-sizing x-pointer-spider x-pointer-spider x-pointer-spraycan x-pointer-spraycan x-pointer-star x-pointer-star x-pointer-target x-pointer-target x-pointer-tcross x-pointer-tcross x-pointer-top-left-arrow x-pointer-top-left-arrow x-pointer-top-left-corner x-pointer-top-left-corner x-pointer-top-right-corner x-pointer-top-right-corner x-pointer-top-side x-pointer-top-side x-pointer-top-tee x-pointer-top-tee x-pointer-trek x-pointer-trek x-pointer-ul-angle x-pointer-ul-angle x-pointer-umbrella x-pointer-umbrella x-pointer-ur-angle x-pointer-ur-angle x-pointer-watch x-pointer-watch x-pointer-xterm x-pointer-xterm x-pointer-invisible x-pointer-invisible
+ (defun . xw-defined-colors)
+ x-alternatives-map
+ (defun . x-setup-function-keys)
+ (defun . vendor-specific-keysyms)
+ x-last-selected-text-clipboard x-last-selected-text-primary x-last-selected-text-cut x-last-selected-text-cut-encoded x-last-cut-buffer-coding x-cut-buffer-max x-select-enable-clipboard x-select-enable-primary
+ (defun . x-select-text)
+ x-select-request-type
+ (defun . x-selection-value)
+ (defun . x-cut-buffer-or-selection-value)
+ (defun . x-clipboard-yank)
+ (defun . x-menu-bar-open)
+ (defun . x-win-suspend-error)
+ x-initialized
+ (defun . x-initialize-window-system)
+ x-gtk-stock-map icon-map-list x-gtk-stock-cache x-gtk-stock-cache
+ (defun . x-gtk-map-stock)
+ (provide . x-win))
+ ("/usr/share/emacs/23.0.93/lisp/term/common-win.elc" x-command-line-resources
+ (defun . x-handle-switch)
+ (defun . x-handle-numeric-switch)
+ (defun . x-handle-initial-switch)
+ (defun . x-handle-iconic)
+ (defun . x-handle-xrm-switch)
+ (defun . x-handle-geometry)
+ (defun . x-handle-name-switch)
+ x-display-name
+ (defun . x-handle-display)
+ (defun . x-handle-args)
+ x-colors)
+ ("/usr/share/emacs/23.0.93/lisp/x-dnd.elc"
+ (require . dnd)
+ x-dnd-test-function x-dnd-types-alist x-dnd-known-types x-dnd-current-state x-dnd-empty-state
+ (defun . x-dnd-init-frame)
+ (defun . x-dnd-get-state-cons-for-frame)
+ (defun . x-dnd-get-state-for-frame)
+ (defun . x-dnd-default-test-function)
+ (defun . x-dnd-current-type)
+ (defun . x-dnd-forget-drop)
+ (defun . x-dnd-maybe-call-test-function)
+ (defun . x-dnd-save-state)
+ (defun . x-dnd-handle-moz-url)
+ (defun . x-dnd-insert-utf8-text)
+ (defun . x-dnd-insert-utf16-text)
+ (defun . x-dnd-insert-ctext)
+ (defun . x-dnd-handle-uri-list)
+ (defun . x-dnd-handle-file-name)
+ (defun . x-dnd-choose-type)
+ (defun . x-dnd-drop-data)
+ (defun . x-dnd-handle-drag-n-drop-event)
+ (defun . x-dnd-handle-old-kde)
+ x-dnd-xdnd-to-action
+ (defun . x-dnd-init-xdnd-for-frame)
+ (defun . x-dnd-get-drop-width-height)
+ (defun . x-dnd-get-drop-x-y)
+ (defun . x-dnd-handle-xdnd)
+ (defun . x-dnd-init-motif-for-frame)
+ (defun . x-dnd-get-motif-value)
+ (defun . x-dnd-motif-value-to-list)
+ x-dnd-motif-message-types x-dnd-motif-to-action
+ (defun . x-dnd-handle-motif)
+ (provide . x-dnd))
+ ("/usr/share/emacs/23.0.93/lisp/tool-bar.elc" tool-bar-mode
+ (defun . tool-bar-mode)
+ (t . toggle-tool-bar-mode-from-frame)
+ (defun . toggle-tool-bar-mode-from-frame)
+ tool-bar-map tool-bar-keymap-cache tool-bar-keymap-cache
+ (defun . tool-bar-make-keymap)
+ (defun . tool-bar-make-keymap-1)
+ (t . tool-bar-add-item)
+ (defun . tool-bar-add-item)
+ (t . tool-bar-local-item)
+ (defun . tool-bar-local-item)
+ (t . tool-bar-add-item-from-menu)
+ (defun . tool-bar-add-item-from-menu)
+ (t . tool-bar-local-item-from-menu)
+ (defun . tool-bar-local-item-from-menu)
+ (defun . tool-bar-setup)
+ (provide . tool-bar))
+ ("/usr/share/emacs/23.0.93/lisp/mwheel.elc"
+ (require . custom)
+ (require . timer)
+ (defun . mouse-wheel-change-button)
+ mouse-wheel-down-button mouse-wheel-down-event mouse-wheel-up-button mouse-wheel-up-event mouse-wheel-click-button mouse-wheel-click-event mouse-wheel-inhibit-click-time mouse-wheel-scroll-amount mouse-wheel-progressive-speed mouse-wheel-follow-mouse
+ (defun . mwheel-event-button)
+ (defun . mwheel-event-window)
+ mwheel-inhibit-click-event-timer
+ (defun . mwheel-inhibit-click-timeout)
+ (defun . mwheel-filter-click-events)
+ (defun . mwheel-scroll)
+ mouse-wheel-mode
+ (t . mouse-wheel-mode)
+ (defun . mouse-wheel-mode)
+ (t . mwheel-install)
+ (defun . mwheel-install)
+ (provide . mwheel))
+ ("/usr/share/emacs/23.0.93/lisp/dnd.elc" dnd-protocol-alist dnd-open-remote-file-function dnd-open-file-other-window
+ (defun . dnd-handle-one-url)
+ (defun . dnd-get-local-file-uri)
+ (defun . dnd-get-local-file-name)
+ (defun . dnd-open-local-file)
+ (defun . dnd-open-remote-url)
+ (defun . dnd-open-file)
+ (defun . dnd-insert-text)
+ (provide . dnd))
+ ("/usr/share/emacs/23.0.93/lisp/international/fontset.elc"
+ (defun . setup-default-fontset)
+ (defun . create-default-fontset)
+ (defun . set-font-encoding)
+ x-font-name-charset-alist xlfd-regexp-family-subnum xlfd-regexp-family-subnum xlfd-regexp-weight-subnum xlfd-regexp-weight-subnum xlfd-regexp-slant-subnum xlfd-regexp-slant-subnum xlfd-regexp-swidth-subnum xlfd-regexp-swidth-subnum xlfd-regexp-adstyle-subnum xlfd-regexp-adstyle-subnum xlfd-regexp-pixelsize-subnum xlfd-regexp-pixelsize-subnum xlfd-regexp-pointsize-subnum xlfd-regexp-pointsize-subnum xlfd-regexp-resx-subnum xlfd-regexp-resx-subnum xlfd-regexp-resy-subnum xlfd-regexp-resy-subnum xlfd-regexp-spacing-subnum xlfd-regexp-spacing-subnum xlfd-regexp-avgwidth-subnum xlfd-regexp-avgwidth-subnum xlfd-regexp-registry-subnum xlfd-regexp-registry-subnum xlfd-tight-regexp xlfd-tight-regexp xlfd-style-regexp xlfd-style-regexp xlfd-regexp-numeric-subnums xlfd-regexp-numeric-subnums
+ (defun . x-decompose-font-name)
+ (defun . x-compose-font-name)
+ (defun . x-must-resolve-font-name)
+ (defun . x-complement-fontset-spec)
+ (defun . fontset-name-p)
+ (defun . generate-fontset-menu)
+ (defun . fontset-plain-name)
+ charset-script-alist
+ (defun . create-fontset-from-fontset-spec)
+ (defun . create-fontset-from-ascii-font)
+ standard-fontset-spec
+ (defun . create-fontset-from-x-resource)
+ (provide . fontset))
+ ("/usr/share/emacs/23.0.93/lisp/image.elc" image-type-header-regexps image-type-file-name-regexps image-type-auto-detectable image-load-path
+ (defun . image-load-path-for-library)
+ (defun . image-jpeg-p)
+ (t . image-type-from-data)
+ (defun . image-type-from-data)
+ (t . image-type-from-buffer)
+ (defun . image-type-from-buffer)
+ (t . image-type-from-file-header)
+ (defun . image-type-from-file-header)
+ (t . image-type-from-file-name)
+ (defun . image-type-from-file-name)
+ (t . image-type)
+ (defun . image-type)
+ (t . image-type-available-p)
+ (defun . image-type-available-p)
+ (t . image-type-auto-detected-p)
+ (defun . image-type-auto-detected-p)
+ (t . create-image)
+ (defun . create-image)
+ (t . put-image)
+ (defun . put-image)
+ (t . insert-image)
+ (defun . insert-image)
+ (t . insert-sliced-image)
+ (defun . insert-sliced-image)
+ (t . remove-images)
+ (defun . remove-images)
+ (defun . image-search-load-path)
+ (t . find-image)
+ (defun . find-image)
+ (t . defimage)
+ (defun . defimage)
+ (provide . image))
+ ("/usr/share/emacs/23.0.93/lisp/fringe.elc"
+ (defun . fringe-bitmap-p)
+ fringe-mode-explicit
+ (defun . set-fringe-mode-1)
+ (defun . set-fringe-mode)
+ (defun . fringe-mode-initialize)
+ fringe-mode
+ (defun . fringe-query-style)
+ (defun . fringe-mode)
+ (defun . set-fringe-style)
+ (defun . fringe-columns)
+ (provide . fringe))
+ ("/usr/share/emacs/23.0.93/lisp/buff-menu.elc" Buffer-menu-use-header-line
+ (defface . buffer-menu-buffer)
+ Buffer-menu-buffer+size-width Buffer-menu-mode-width Buffer-menu-use-frame-buffer-list Buffer-menu-sort-column Buffer-menu-buffer-column Buffer-menu-buffer-column Buffer-menu-files-only Buffer-menu-mode-map Buffer-menu-mode-map Buffer-menu-mode-syntax-table Buffer-menu-mode-abbrev-table Buffer-menu-mode-abbrev-table
+ (defun . Buffer-menu-mode)
+ buffer-menu-mode-hook
+ (defun . Buffer-menu-revert-function)
+ (defun . Buffer-menu-toggle-files-only)
+ (defun . Buffer-menu-buffer)
+ (defun . buffer-menu)
+ (defun . buffer-menu-other-window)
+ (defun . Buffer-menu-no-header)
+ (defun . Buffer-menu-mark)
+ (defun . Buffer-menu-unmark)
+ (defun . Buffer-menu-backup-unmark)
+ (defun . Buffer-menu-delete)
+ (defun . Buffer-menu-delete-backwards)
+ (defun . Buffer-menu-save)
+ (defun . Buffer-menu-not-modified)
+ (defun . Buffer-menu-beginning)
+ (defun . Buffer-menu-execute)
+ (defun . Buffer-menu-select)
+ (defun . Buffer-menu-marked-buffers)
+ (defun . Buffer-menu-isearch-buffers)
+ (defun . Buffer-menu-isearch-buffers-regexp)
+ (defun . Buffer-menu-visit-tags-table)
+ (defun . Buffer-menu-1-window)
+ (defun . Buffer-menu-mouse-select)
+ (defun . Buffer-menu-this-window)
+ (defun . Buffer-menu-other-window)
+ (defun . Buffer-menu-switch-other-window)
+ (defun . Buffer-menu-2-window)
+ (defun . Buffer-menu-toggle-read-only)
+ (defun . Buffer-menu-bury)
+ (defun . Buffer-menu-view)
+ (defun . Buffer-menu-view-other-window)
+ (defun . list-buffers)
+ Buffer-menu-short-ellipsis Buffer-menu-short-ellipsis
+ (defun . Buffer-menu-buffer+size)
+ (defun . Buffer-menu-sort)
+ (defun . Buffer-menu-sort-by-column)
+ Buffer-menu-sort-button-map
+ (defun . Buffer-menu-make-sort-button)
+ (defun . list-buffers-noselect))
+ ("/usr/share/emacs/23.0.93/lisp/replace.elc" case-replace query-replace-history query-replace-defaults query-replace-interactive query-replace-from-history-variable query-replace-to-history-variable query-replace-skip-read-only query-replace-show-replacement query-replace-highlight query-replace-lazy-highlight
+ (defface . query-replace)
+ (defun . query-replace-descr)
+ (defun . query-replace-read-from)
+ (defun . query-replace-compile-replacement)
+ (defun . query-replace-read-to)
+ (defun . query-replace-read-args)
+ (defun . query-replace)
+ (defun . query-replace-regexp)
+ (defun . query-replace-regexp-eval)
+ (defun . map-query-replace-regexp)
+ (defun . replace-string)
+ (defun . replace-regexp)
+ regexp-history
+ (defun . read-regexp)
+ (defun . delete-non-matching-lines)
+ (defun . delete-matching-lines)
+ (defun . count-matches)
+ (defun . keep-lines-read-args)
+ (defun . keep-lines)
+ (defun . flush-lines)
+ (defun . how-many)
+ occur-mode-map occur-revert-arguments occur-mode-hook occur-hook occur-mode-find-occurrence-hook
+ (defun . occur-mode)
+ (defun . occur-revert-function)
+ (defun . occur-mode-find-occurrence)
+ (defun . occur-mode-mouse-goto)
+ (defun . occur-mode-goto-occurrence)
+ (defun . occur-mode-goto-occurrence-other-window)
+ (defun . occur-mode-display-occurrence)
+ (defun . occur-find-match)
+ (defun . occur-next)
+ (defun . occur-prev)
+ (defun . occur-next-error)
+ (defface . match)
+ list-matching-lines-default-context-lines
+ (defun . list-matching-lines)
+ list-matching-lines-face list-matching-lines-buffer-name-face occur-excluded-properties
+ (defun . occur-accumulate-lines)
+ (defun . occur-read-primary-args)
+ (defun . occur-rename-buffer)
+ (defun . occur)
+ (defun . multi-occur)
+ (defun . multi-occur-in-matching-buffers)
+ (defun . occur-1)
+ (defun . occur-engine-add-prefix)
+ (defun . occur-engine)
+ (defun . occur-context-lines)
+ query-replace-help query-replace-map multi-query-replace-map
+ (defun . replace-match-string-symbols)
+ (defun . replace-eval-replacement)
+ (defun . replace-quote)
+ (defun . replace-loop-through-replacements)
+ (defun . replace-match-data)
+ (defun . replace-match-maybe-edit)
+ replace-search-function replace-re-search-function
+ (defun . perform-replace)
+ replace-overlay
+ (defun . replace-highlight)
+ (defun . replace-dehighlight))
+ ("/usr/share/emacs/23.0.93/lisp/textmodes/fill.elc" fill-individual-varying-indent colon-double-space fill-paragraph-function fill-paragraph-handle-comment enable-kinsoku
+ (defun . set-fill-prefix)
+ adaptive-fill-mode adaptive-fill-regexp adaptive-fill-first-line-regexp adaptive-fill-function fill-indent-according-to-mode
+ (defun . current-fill-column)
+ (defun . canonically-space-region)
+ (defun . fill-common-string-prefix)
+ (defun . fill-match-adaptive-prefix)
+ (defun . fill-context-prefix)
+ (defun . fill-single-word-nobreak-p)
+ (defun . fill-french-nobreak-p)
+ fill-nobreak-predicate fill-nobreak-invisible
+ (defun . fill-nobreak-p)
+ fill-find-break-point-function-table fill-nospace-between-words-table
+ (defun . fill-find-break-point)
+ (defun . fill-delete-prefix)
+ (defun . fill-delete-newlines)
+ (defun . fill-move-to-break-point)
+ (defun . fill-text-properties-at)
+ (defun . fill-newline)
+ (defun . fill-indent-to-left-margin)
+ (defun . fill-region-as-paragraph)
+ (defun . skip-line-prefix)
+ (defun . fill-minibuffer-function)
+ fill-forward-paragraph-function
+ (defun . fill-forward-paragraph)
+ (defun . fill-paragraph)
+ (defun . fill-comment-paragraph)
+ (defun . fill-region)
+ default-justification
+ (defun . current-justification)
+ (defun . set-justification)
+ (defun . set-justification-none)
+ (defun . set-justification-left)
+ (defun . set-justification-right)
+ (defun . set-justification-full)
+ (defun . set-justification-center)
+ (defun . justify-current-line)
+ (defun . unjustify-current-line)
+ (defun . unjustify-region)
+ (defun . fill-nonuniform-paragraphs)
+ (defun . fill-individual-paragraphs)
+ (defun . fill-individual-paragraphs-prefix)
+ (defun . fill-individual-paragraphs-citation))
+ ("/usr/share/emacs/23.0.93/lisp/textmodes/text-mode.elc" text-mode-hook text-mode-variant text-mode-syntax-table text-mode-map text-mode-map text-mode-syntax-table text-mode-abbrev-table text-mode-abbrev-table
+ (defun . text-mode)
+ paragraph-indent-text-mode-map
+ (defun . paragraph-indent-text-mode)
+ (defun . paragraph-indent-minor-mode)
+ (defun . indented-text-mode)
+ (defun . text-mode-hook-identify)
+ (defun . toggle-text-mode-auto-fill)
+ (defun . center-paragraph)
+ (defun . center-region)
+ (defun . center-line))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/lisp-mode.elc" lisp-mode-abbrev-table lisp-mode-abbrev-table emacs-lisp-mode-syntax-table lisp-mode-syntax-table lisp-imenu-generic-expression lisp-doc-string-elt-property
+ (defun . lisp-font-lock-syntactic-face-function)
+ (defun . lisp-mode-variables)
+ (defun . lisp-outline-level)
+ lisp-mode-shared-map emacs-lisp-mode-map
+ (defun . emacs-lisp-byte-compile)
+ (defun . emacs-lisp-byte-compile-and-load)
+ emacs-lisp-mode-hook lisp-mode-hook lisp-interaction-mode-hook
+ (defun . emacs-lisp-mode)
+ lisp-mode-map
+ (defun . lisp-mode)
+ (defun . lisp-find-tag-default)
+ (defun . common-lisp-mode)
+ (defun . lisp-eval-defun)
+ lisp-interaction-mode-map lisp-interaction-mode-abbrev-table lisp-interaction-mode-map lisp-interaction-mode-syntax-table lisp-interaction-mode-abbrev-table
+ (defun . lisp-interaction-mode)
+ (defun . eval-print-last-sexp)
+ (defun . last-sexp-setup-props)
+ (defun . last-sexp-toggle-display)
+ (defun . prin1-char)
+ (defun . preceding-sexp)
+ (defun . eval-last-sexp-1)
+ (defun . eval-last-sexp-print-value)
+ eval-last-sexp-fake-value
+ (defun . eval-last-sexp)
+ (defun . eval-defun-1)
+ (defun . eval-defun-2)
+ (defun . eval-defun)
+ (defun . lisp-comment-indent)
+ (defun . lisp-mode-auto-fill)
+ lisp-indent-offset lisp-indent-function
+ (defun . lisp-indent-line)
+ (defun . calculate-lisp-indent)
+ (defun . lisp-indent-function)
+ lisp-body-indent
+ (defun . lisp-indent-specform)
+ (defun . lisp-indent-defform)
+ (defun . indent-sexp)
+ (defun . lisp-indent-region)
+ (defun . indent-pp-sexp)
+ emacs-lisp-docstring-fill-column
+ (defun . lisp-fill-paragraph)
+ (defun . indent-code-rigidly)
+ (provide . lisp-mode))
+ ("/usr/share/emacs/23.0.93/lisp/textmodes/paragraphs.elc" use-hard-newlines
+ (defun . use-hard-newlines)
+ paragraph-start paragraph-separate sentence-end-double-space sentence-end-without-period sentence-end-without-space sentence-end sentence-end-base
+ (defun . sentence-end)
+ page-delimiter paragraph-ignore-fill-prefix
+ (defun . forward-paragraph)
+ (defun . backward-paragraph)
+ (defun . mark-paragraph)
+ (defun . kill-paragraph)
+ (defun . backward-kill-paragraph)
+ (defun . transpose-paragraphs)
+ (defun . start-of-paragraph-text)
+ (defun . end-of-paragraph-text)
+ (defun . forward-sentence)
+ (defun . repunctuate-sentences)
+ (defun . backward-sentence)
+ (defun . kill-sentence)
+ (defun . backward-kill-sentence)
+ (defun . mark-end-of-sentence)
+ (defun . transpose-sentences))
+ ("/usr/share/emacs/23.0.93/lisp/register.elc" register-alist
+ (defun . get-register)
+ (defun . set-register)
+ (defun . point-to-register)
+ (defun . window-configuration-to-register)
+ (defun . frame-configuration-to-register)
+ (defun . register-to-point)
+ (defun . jump-to-register)
+ (defun . register-swap-out)
+ (defun . number-to-register)
+ (defun . increment-register)
+ (defun . view-register)
+ (defun . list-registers)
+ (defun . describe-register-1)
+ (defun . insert-register)
+ (defun . copy-to-register)
+ (defun . append-to-register)
+ (defun . prepend-to-register)
+ (defun . copy-rectangle-to-register)
+ (provide . register))
+ ("/usr/share/emacs/23.0.93/lisp/textmodes/page.elc"
+ (defun . forward-page)
+ (defun . backward-page)
+ (defun . mark-page)
+ (defun . narrow-to-page)
+ (defun . count-lines-page)
+ (defun . what-page)
+ (provide . page))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/lisp.elc" defun-prompt-regexp parens-require-spaces forward-sexp-function
+ (defun . forward-sexp)
+ (defun . backward-sexp)
+ (defun . mark-sexp)
+ (defun . forward-list)
+ (defun . backward-list)
+ (defun . down-list)
+ (defun . backward-up-list)
+ (defun . up-list)
+ (defun . kill-sexp)
+ (defun . backward-kill-sexp)
+ (defun . kill-backward-up-list)
+ beginning-of-defun-function
+ (defun . beginning-of-defun)
+ (defun . beginning-of-defun-raw)
+ end-of-defun-function
+ (defun . buffer-end)
+ (defun . end-of-defun)
+ (defun . mark-defun)
+ (defun . narrow-to-defun)
+ insert-pair-alist
+ (defun . insert-pair)
+ (defun . insert-parentheses)
+ (defun . delete-pair)
+ (defun . raise-sexp)
+ (defun . move-past-close-and-reindent)
+ (defun . check-parens)
+ (defun . field-complete)
+ (defun . lisp-complete-symbol))
+ ("/usr/share/emacs/23.0.93/lisp/paths.el"
+ (defun . prune-directory-list)
+ Info-default-directory-list news-directory news-path news-inews-program gnus-default-nntp-server gnus-nntp-service gnus-local-organization rmail-file-name rmail-spool-directory remote-shell-program term-file-prefix abbrev-file-name)
+ ("/usr/share/emacs/23.0.93/lisp/menu-bar.elc" menu-bar-help-menu menu-bar-tools-menu global-buffers-menu-map menu-bar-options-menu menu-bar-edit-menu menu-bar-file-menu menu-bar-files-menu
+ (defun . menu-find-file-existing)
+ menu-bar-last-search-type
+ (defun . nonincremental-repeat-search-forward)
+ (defun . nonincremental-repeat-search-backward)
+ (defun . nonincremental-search-forward)
+ (defun . nonincremental-search-backward)
+ (defun . nonincremental-re-search-forward)
+ (defun . nonincremental-re-search-backward)
+ menu-bar-search-menu menu-bar-i-search-menu menu-bar-replace-menu menu-bar-goto-menu
+ (defun . menu-bar-next-tag-other-window)
+ (defun . menu-bar-next-tag)
+ yank-menu
+ (defun . menu-bar-kill-ring-save)
+ (defun . clipboard-yank)
+ (defun . clipboard-kill-ring-save)
+ (defun . clipboard-kill-region)
+ (defun . menu-bar-enable-clipboard)
+ menu-bar-custom-menu
+ (defun . menu-bar-make-mm-toggle)
+ (defun . menu-bar-make-toggle)
+ (defun . menu-set-font)
+ (defun . menu-bar-options-save)
+ menu-bar-showhide-menu menu-bar-showhide-fringe-menu menu-bar-showhide-fringe-ind-menu
+ (defun . menu-bar-showhide-fringe-ind-customize)
+ (defun . menu-bar-showhide-fringe-ind-mixed)
+ (defun . menu-bar-showhide-fringe-ind-box)
+ (defun . menu-bar-showhide-fringe-ind-right)
+ (defun . menu-bar-showhide-fringe-ind-left)
+ (defun . menu-bar-showhide-fringe-ind-none)
+ (defun . toggle-indicate-empty-lines)
+ (defun . menu-bar-showhide-fringe-menu-customize)
+ (defun . menu-bar-showhide-fringe-menu-customize-reset)
+ (defun . menu-bar-showhide-fringe-menu-customize-right)
+ (defun . menu-bar-showhide-fringe-menu-customize-left)
+ (defun . menu-bar-showhide-fringe-menu-customize-disable)
+ menu-bar-showhide-scroll-bar-menu
+ (defun . menu-bar-right-scroll-bar)
+ (defun . menu-bar-left-scroll-bar)
+ (defun . menu-bar-no-scroll-bar)
+ (defun . toggle-debug-on-quit)
+ (defun . toggle-debug-on-error)
+ (defun . toggle-save-place-globally)
+ (defun . toggle-uniquify-buffer-names)
+ (defun . toggle-case-fold-search)
+ (defun . menu-bar-text-mode-auto-fill)
+ menu-bar-line-wrapping-menu
+ (defun . send-mail-item-name)
+ (defun . read-mail-item-name)
+ menu-bar-games-menu menu-bar-encryption-decryption-menu
+ (defun . menu-bar-read-mail)
+ menu-bar-describe-menu menu-bar-search-documentation-menu
+ (defun . menu-bar-read-lispref)
+ (defun . menu-bar-read-lispintro)
+ (defun . search-emacs-glossary)
+ (defun . emacs-index-search)
+ (defun . elisp-index-search)
+ (defun . debian-emacs-changelog)
+ (defun . debian-emacs-news)
+ (defun . debian-emacs-readme)
+ menu-bar-manuals-menu
+ (defun . menu-bar-help-extra-packages)
+ (defun . help-with-tutorial-spec-language)
+ (defun . menu-bar-menu-frame-live-and-visible-p)
+ (defun . menu-bar-non-minibuffer-window-p)
+ (defun . kill-this-buffer)
+ (defun . kill-this-buffer-enabled-p)
+ (defun . delete-frame-enabled-p)
+ yank-menu-length
+ (defun . menu-bar-update-yank-menu)
+ (defun . menu-bar-select-yank)
+ buffers-menu-max-size buffers-menu-buffer-name-length buffers-menu-show-directories buffers-menu-show-status list-buffers-directory
+ (defun . menu-bar-select-buffer)
+ (defun . menu-bar-select-frame)
+ (defun . menu-bar-update-buffers-1)
+ menu-bar-buffers-menu-command-entries
+ (defun . menu-bar-update-buffers)
+ menu-bar-mode
+ (defun . menu-bar-mode)
+ (defun . toggle-menu-bar-mode-from-frame)
+ (defun . menu-bar-open)
+ (provide . menu-bar))
+ ("/usr/share/emacs/23.0.93/lisp/rfn-eshadow.elc" file-name-shadow-properties-custom-type file-name-shadow-properties-custom-type file-name-shadow-properties file-name-shadow-tty-properties
+ (defface . file-name-shadow)
+ rfn-eshadow-setup-minibuffer-hook rfn-eshadow-update-overlay-hook rfn-eshadow-frobbed-minibufs
+ (defun . rfn-eshadow-setup-minibuffer)
+ (defun . rfn-eshadow-sifn-equal)
+ (defun . rfn-eshadow-update-overlay)
+ file-name-shadow-mode
+ (defun . file-name-shadow-mode)
+ (provide . rfn-eshadow))
+ ("/usr/share/emacs/23.0.93/lisp/isearch.elc" search-exit-option search-slow-window-lines search-slow-speed search-upper-case search-nonincremental-instead search-whitespace-regexp search-invisible isearch-hide-immediately isearch-resume-in-command-history isearch-mode-hook isearch-mode-end-hook isearch-mode-end-hook-quit isearch-message-function isearch-wrap-function isearch-push-state-function isearch-filter-predicate search-ring regexp-search-ring search-ring-max regexp-search-ring-max search-ring-yank-pointer regexp-search-ring-yank-pointer search-ring-update search-highlight
+ (defface . isearch)
+ isearch
+ (defface . isearch-fail)
+ isearch-lazy-highlight lazy-highlight-cleanup isearch-lazy-highlight-cleanup lazy-highlight-initial-delay isearch-lazy-highlight-initial-delay lazy-highlight-interval isearch-lazy-highlight-interval lazy-highlight-max-at-a-time isearch-lazy-highlight-max-at-a-time
+ (defface . lazy-highlight)
+ lazy-highlight-face isearch-lazy-highlight-face isearch-help-map
+ (defun . isearch-help-for-help-internal-doc)
+ (defun . isearch-help-for-help-internal)
+ (defun . isearch-help-for-help)
+ (defun . isearch-describe-bindings)
+ (defun . isearch-describe-key)
+ (defun . isearch-describe-mode)
+ (defun . isearch-mode-help)
+ isearch-mode-map minibuffer-local-isearch-map isearch-forward isearch-regexp isearch-word isearch-hidden isearch-cmds isearch-string isearch-message isearch-message-prefix-add isearch-message-suffix-add isearch-success isearch-error isearch-other-end isearch-wrapped isearch-barrier isearch-just-started isearch-start-hscroll isearch-case-fold-search isearch-last-case-fold-search isearch-original-minibuffer-message-timeout isearch-adjusted isearch-slow-terminal-mode isearch-small-window isearch-opoint isearch-window-configuration isearch-yank-flag isearch-op-fun isearch-recursive-edit isearch-nonincremental isearch-new-forward isearch-opened-overlays isearch-input-method-function isearch-input-method-local-p isearch-mode
+ (defun . isearch-forward)
+ (defun . isearch-forward-regexp)
+ (defun . isearch-forward-word)
+ (defun . isearch-backward)
+ (defun . isearch-backward-regexp)
+ (defun . isearch-mode)
+ (defun . isearch-update)
+ (defun . isearch-done)
+ (defun . isearch-update-ring)
+ (defun . isearch-string-state)
+ (defun . isearch-message-state)
+ (defun . isearch-point-state)
+ (defun . isearch-success-state)
+ (defun . isearch-forward-state)
+ (defun . isearch-other-end-state)
+ (defun . isearch-word-state)
+ (defun . isearch-error-state)
+ (defun . isearch-wrapped-state)
+ (defun . isearch-barrier-state)
+ (defun . isearch-case-fold-search-state)
+ (defun . isearch-pop-fun-state)
+ (defun . isearch-top-state)
+ (defun . isearch-pop-state)
+ (defun . isearch-push-state)
+ (defun . isearch-exit)
+ (defun . isearch-edit-string)
+ (defun . isearch-nonincremental-exit-minibuffer)
+ (defun . isearch-forward-exit-minibuffer)
+ (defun . isearch-reverse-exit-minibuffer)
+ (defun . isearch-cancel)
+ (defun . isearch-abort)
+ (defun . isearch-repeat)
+ (defun . isearch-repeat-forward)
+ (defun . isearch-repeat-backward)
+ (defun . isearch-toggle-regexp)
+ (defun . isearch-toggle-word)
+ (defun . isearch-toggle-case-fold)
+ (defun . isearch-query-replace)
+ (defun . isearch-query-replace-regexp)
+ (defun . isearch-occur)
+ (defun . isearch-highlight-regexp)
+ (defun . isearch-delete-char)
+ (defun . isearch-del-char)
+ (defun . isearch-yank-string)
+ (defun . isearch-yank-kill)
+ (defun . isearch-yank-x-selection)
+ (defun . isearch-mouse-2)
+ (defun . isearch-yank-internal)
+ (defun . isearch-yank-char-in-minibuffer)
+ (defun . isearch-yank-char)
+ (defun . isearch-yank-word-or-char)
+ (defun . isearch-yank-word)
+ (defun . isearch-yank-line)
+ (defun . isearch-search-and-update)
+ (defun . isearch-backslash)
+ (defun . isearch-fallback)
+ (defun . isearch-unread-key-sequence)
+ isearch-allow-scroll
+ (defun . isearch-string-out-of-window)
+ (defun . isearch-back-into-window)
+ (defun . isearch-reread-key-sequence-naturally)
+ (defun . isearch-lookup-scroll-key)
+ (defun . isearch-other-control-char)
+ (defun . isearch-other-meta-char)
+ (defun . isearch-quote-char)
+ (defun . isearch-return-char)
+ (defun . isearch-printing-char)
+ (defun . isearch-process-search-char)
+ (defun . isearch-process-search-string)
+ (defun . isearch-ring-adjust1)
+ (defun . isearch-ring-adjust)
+ (defun . isearch-ring-advance)
+ (defun . isearch-ring-retreat)
+ (defun . isearch-complete1)
+ (defun . isearch-complete)
+ (defun . isearch-complete-edit)
+ (defun . isearch-message)
+ (defun . isearch-message-prefix)
+ (defun . isearch-message-suffix)
+ isearch-search-fun-function
+ (defun . isearch-search-fun)
+ (defun . isearch-search-string)
+ (defun . isearch-search)
+ (defun . isearch-open-overlay-temporary)
+ (defun . isearch-open-necessary-overlays)
+ (defun . isearch-clean-overlays)
+ (defun . isearch-intersects-p)
+ (defun . isearch-close-unnecessary-overlays)
+ (defun . isearch-range-invisible)
+ (defun . isearch-filter-visible)
+ (defun . isearch-no-upper-case-p)
+ (defun . isearch-text-char-description)
+ (defun . isearch-unread)
+ isearch-overlay
+ (defun . isearch-highlight)
+ (defun . isearch-dehighlight)
+ isearch-lazy-highlight-overlays isearch-lazy-highlight-wrapped isearch-lazy-highlight-start-limit isearch-lazy-highlight-end-limit isearch-lazy-highlight-start isearch-lazy-highlight-end isearch-lazy-highlight-timer isearch-lazy-highlight-last-string isearch-lazy-highlight-window isearch-lazy-highlight-window-start isearch-lazy-highlight-window-end isearch-lazy-highlight-case-fold-search isearch-lazy-highlight-regexp isearch-lazy-highlight-space-regexp
+ (defun . lazy-highlight-cleanup)
+ (defun . isearch-lazy-highlight-cleanup)
+ (defun . isearch-lazy-highlight-new-loop)
+ (defun . isearch-lazy-highlight-search)
+ (defun . isearch-lazy-highlight-update)
+ (defun . isearch-resume))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/timer.elc"
+ (defun . timer--triggered)
+ (defun . timer--high-seconds)
+ (defun . timer--low-seconds)
+ (defun . timer--usecs)
+ (defun . timer--repeat-delay)
+ (defun . timer--function)
+ (defun . timer--args)
+ (defun . timer--idle-delay)
+ (defun . timer-create)
+ (defun . timerp)
+ (defun . timer--time)
+ (defun . timer-set-time)
+ (defun . timer-set-idle-time)
+ (defun . timer-next-integral-multiple-of-time)
+ (defun . timer-relative-time)
+ (defun . timer--time-less-p)
+ (defun . timer-inc-time)
+ (defun . timer-set-time-with-usecs)
+ (defun . timer-set-function)
+ (defun . timer--activate)
+ (defun . timer-activate)
+ (defun . timer-activate-when-idle)
+ (defun . disable-timeout)
+ (defun . cancel-timer)
+ (defun . cancel-timer-internal)
+ (defun . cancel-function-timers)
+ timer-event-last timer-event-last-1 timer-event-last-2 timer-max-repeats
+ (defun . timer-until)
+ (defun . timer-event-handler)
+ (defun . timeout-event-p)
+ (defun . run-at-time)
+ (defun . run-with-timer)
+ (defun . add-timeout)
+ (defun . run-with-idle-timer)
+ (defun . with-timeout-handler)
+ with-timeout-timers
+ (defun . with-timeout)
+ (defun . with-timeout-suspend)
+ (defun . with-timeout-unsuspend)
+ (defun . y-or-n-p-with-timeout)
+ timer-duration-words
+ (defun . timer-duration)
+ (provide . timer))
+ ("/usr/share/emacs/23.0.93/lisp/select.elc" selection-coding-system next-selection-coding-system
+ (defun . x-selection)
+ (defun . x-get-selection)
+ (defun . x-get-clipboard)
+ (defun . x-set-selection)
+ (defun . x-valid-simple-selection-p)
+ (defun . x-get-cut-buffer)
+ (defun . x-set-cut-buffer)
+ (defun . xselect-convert-to-string)
+ (defun . xselect-convert-to-length)
+ (defun . xselect-convert-to-targets)
+ (defun . xselect-convert-to-delete)
+ (defun . xselect-convert-to-filename)
+ (defun . xselect-convert-to-charpos)
+ (defun . xselect-convert-to-lineno)
+ (defun . xselect-convert-to-colno)
+ (defun . xselect-convert-to-os)
+ (defun . xselect-convert-to-host)
+ (defun . xselect-convert-to-user)
+ (defun . xselect-convert-to-class)
+ (defun . xselect-convert-to-name)
+ (defun . xselect-convert-to-integer)
+ (defun . xselect-convert-to-atom)
+ (defun . xselect-convert-to-identity)
+ (provide . select))
+ ("/usr/share/emacs/23.0.93/lisp/scroll-bar.elc"
+ (require . mouse)
+ (defun . scroll-bar-event-ratio)
+ (defun . scroll-bar-scale)
+ (defun . scroll-bar-columns)
+ previous-scroll-bar-mode scroll-bar-mode-explicit
+ (defun . set-scroll-bar-mode-1)
+ (defun . set-scroll-bar-mode)
+ scroll-bar-mode
+ (defun . scroll-bar-mode)
+ (defun . toggle-scroll-bar)
+ (defun . toggle-horizontal-scroll-bar)
+ (defun . scroll-bar-set-window-start)
+ (defun . scroll-bar-drag-position)
+ (defun . scroll-bar-maybe-set-window-start)
+ (defun . scroll-bar-drag-1)
+ (defun . scroll-bar-drag)
+ (defun . scroll-bar-scroll-down)
+ (defun . scroll-bar-scroll-up)
+ (defun . scroll-bar-toolkit-scroll)
+ (provide . scroll-bar))
+ ("/usr/share/emacs/23.0.93/lisp/mouse.elc" mouse-yank-at-point mouse-drag-copy-region mouse-1-click-follows-link mouse-1-click-in-non-selected-windows
+ (defun . popup-menu)
+ (defun . minor-mode-menu-from-indicator)
+ (defun . mouse-minor-mode-menu)
+ (defun . mouse-menu-major-mode-map)
+ (defun . mouse-menu-non-singleton)
+ (defun . mouse-menu-bar-map)
+ (defun . mouse-major-mode-menu)
+ (defun . mouse-popup-menubar)
+ (defun . mouse-popup-menubar-stuff)
+ (defun . mouse-minibuffer-check)
+ (defun . mouse-delete-window)
+ (defun . mouse-select-window)
+ (defun . mouse-tear-off-window)
+ (defun . mouse-delete-other-windows)
+ (defun . mouse-split-window-vertically)
+ (defun . mouse-split-window-horizontally)
+ (defun . mouse-drag-window-above)
+ (defun . mouse-drag-move-window-bottom)
+ (defun . mouse-drag-move-window-top)
+ (defun . mouse-drag-mode-line-1)
+ (defun . mouse-drag-mode-line)
+ (defun . mouse-drag-header-line)
+ (defun . mouse-drag-vertical-line-rightward-window)
+ (defun . mouse-drag-vertical-line)
+ (defun . mouse-set-point)
+ mouse-last-region-beg mouse-last-region-end mouse-last-region-tick
+ (defun . mouse-region-match)
+ (defun . mouse-set-region)
+ (defun . mouse-set-region-1)
+ mouse-scroll-delay mouse-scroll-min-lines
+ (defun . mouse-scroll-subr)
+ mouse-drag-overlay mouse-drag-overlay mouse-selection-click-count mouse-selection-click-count-buffer
+ (defun . mouse-drag-region)
+ (defun . mouse-posn-property)
+ (defun . mouse-on-link-p)
+ (defun . mouse-fixup-help-message)
+ (defun . mouse-move-drag-overlay)
+ (defun . mouse-drag-track)
+ (defun . mouse-skip-word)
+ (defun . mouse-start-end)
+ (defun . mouse-set-mark-fast)
+ (defun . mouse-undouble-last-event)
+ mouse-region-delete-keys
+ (defun . mouse-show-mark)
+ (defun . mouse-set-mark)
+ (defun . mouse-kill)
+ (defun . mouse-yank-at-click)
+ (defun . mouse-yank-primary)
+ (defun . mouse-kill-ring-save)
+ mouse-save-then-kill-posn
+ (defun . mouse-save-then-kill-delete-region)
+ (defun . mouse-save-then-kill)
+ mouse-secondary-overlay mouse-secondary-click-count mouse-secondary-start
+ (defun . mouse-start-secondary)
+ (defun . mouse-set-secondary)
+ (defun . mouse-drag-secondary)
+ (defun . mouse-yank-secondary)
+ (defun . mouse-kill-secondary)
+ (defun . mouse-secondary-save-then-kill)
+ mouse-buffer-menu-maxlen mouse-buffer-menu-mode-mult mouse-buffer-menu-mode-groups
+ (defun . mouse-buffer-menu)
+ (defun . mouse-buffer-menu-alist)
+ (defun . mouse-buffer-menu-split)
+ (defun . mouse-choose-completion)
+ (defun . font-menu-add-default)
+ x-fixed-font-alist
+ (defun . mouse-select-font)
+ (defun . mouse-set-font)
+ mouse-appearance-menu-map
+ (defun . mouse-appearance-menu)
+ (provide . mouse)
+ (defun . mldrag-drag-mode-line)
+ (defun . mldrag-drag-vertical-line)
+ (provide . mldrag))
+ ("/usr/share/emacs/23.0.93/lisp/jit-lock.elc" jit-lock-chunk-size jit-lock-stealth-time jit-lock-stealth-nice jit-lock-stealth-load jit-lock-stealth-verbose jit-lock-defer-contextually jit-lock-contextually jit-lock-context-time jit-lock-defer-time jit-lock-mode jit-lock-functions jit-lock-context-unfontify-pos jit-lock-stealth-timer jit-lock-stealth-repeat-timer jit-lock-context-timer jit-lock-defer-timer jit-lock-defer-buffers jit-lock-stealth-buffers
+ (defun . jit-lock-mode)
+ (defun . jit-lock-register)
+ (defun . jit-lock-unregister)
+ (defun . jit-lock-refontify)
+ (defun . jit-lock-function)
+ (defun . jit-lock-fontify-now)
+ (defun . jit-lock-force-redisplay)
+ (defun . jit-lock-stealth-chunk-start)
+ (defun . jit-lock-stealth-fontify)
+ (defun . jit-lock-deferred-fontify)
+ (defun . jit-lock-context-fontify)
+ jit-lock-after-change-extend-region-functions
+ (defun . jit-lock-after-change)
+ (provide . jit-lock))
+ ("/usr/share/emacs/23.0.93/lisp/font-lock.elc"
+ (require . syntax)
+ font-lock-maximum-size font-lock-maximum-decoration font-lock-verbose font-lock-comment-face font-lock-comment-delimiter-face font-lock-string-face font-lock-doc-face font-lock-keyword-face font-lock-builtin-face font-lock-function-name-face font-lock-variable-name-face font-lock-type-face font-lock-constant-face font-lock-warning-face font-lock-negation-char-face font-lock-preprocessor-face font-lock-reference-face font-lock-keywords font-lock-keywords-alist font-lock-removed-keywords-alist font-lock-keywords-only font-lock-keywords-case-fold-search font-lock-syntactically-fontified font-lock-syntactic-face-function font-lock-syntactic-keywords font-lock-syntax-table font-lock-beginning-of-syntax-function font-lock-mark-block-function font-lock-fontify-buffer-function font-lock-unfontify-buffer-function font-lock-fontify-region-function font-lock-unfontify-region-function font-lock-inhibit-thing-lock font-lock-multiline font-lock-fontified
+ (defun . font-lock-mode-internal)
+ (defun . font-lock-add-keywords)
+ (defun . font-lock-update-removed-keyword-alist)
+ (defun . font-lock-remove-keywords)
+ font-lock-support-mode
+ (defun . font-lock-turn-on-thing-lock)
+ (defun . font-lock-turn-off-thing-lock)
+ (defun . font-lock-after-fontify-buffer)
+ (defun . font-lock-after-unfontify-buffer)
+ font-lock-extend-after-change-region-function
+ (defun . font-lock-fontify-buffer)
+ (defun . font-lock-unfontify-buffer)
+ (defun . font-lock-fontify-region)
+ (defun . font-lock-unfontify-region)
+ (defun . font-lock-default-fontify-buffer)
+ (defun . font-lock-default-unfontify-buffer)
+ font-lock-dont-widen font-lock-extend-region-functions
+ (defun . font-lock-extend-region-multiline)
+ (defun . font-lock-extend-region-wholelines)
+ (defun . font-lock-default-fontify-region)
+ font-lock-extra-managed-props
+ (defun . font-lock-default-unfontify-region)
+ (defun . font-lock-after-change-function)
+ (defun . font-lock-extend-jit-lock-region-after-change)
+ (defun . font-lock-fontify-block)
+ (defun . font-lock-prepend-text-property)
+ (defun . font-lock-append-text-property)
+ (defun . font-lock-fillin-text-property)
+ (defun . font-lock-apply-syntactic-highlight)
+ (defun . font-lock-fontify-syntactic-anchored-keywords)
+ (defun . font-lock-fontify-syntactic-keywords-region)
+ font-lock-comment-start-skip font-lock-comment-end-skip
+ (defun . font-lock-fontify-syntactically-region)
+ (defun . font-lock-apply-highlight)
+ (defun . font-lock-fontify-anchored-keywords)
+ (defun . font-lock-fontify-keywords-region)
+ (defun . font-lock-compile-keywords)
+ (defun . font-lock-compile-keyword)
+ (defun . font-lock-eval-keywords)
+ (defun . font-lock-value-in-major-mode)
+ (defun . font-lock-choose-keywords)
+ font-lock-set-defaults
+ (defun . font-lock-set-defaults)
+ (defface . font-lock-comment-face)
+ (defface . font-lock-comment-delimiter-face)
+ (defface . font-lock-string-face)
+ (defface . font-lock-doc-face)
+ (defface . font-lock-keyword-face)
+ (defface . font-lock-builtin-face)
+ (defface . font-lock-function-name-face)
+ (defface . font-lock-variable-name-face)
+ (defface . font-lock-type-face)
+ (defface . font-lock-constant-face)
+ (defface . font-lock-warning-face)
+ (defface . font-lock-negation-char-face)
+ (defface . font-lock-preprocessor-face)
+ (defface . font-lock-regexp-grouping-backslash)
+ (defface . font-lock-regexp-grouping-construct)
+ (defun . font-lock-match-c-style-declaration-item-and-skip-to-next)
+ cpp-font-lock-keywords-source-directives cpp-font-lock-keywords-source-depth cpp-font-lock-keywords lisp-font-lock-keywords-1 lisp-font-lock-keywords-2 lisp-font-lock-keywords
+ (provide . font-lock))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/syntax.elc"
+ (defun . syntax-ppss-depth)
+ (defun . syntax-ppss-toplevel-pos)
+ (defun . syntax-ppss-context)
+ syntax-ppss-max-span syntax-begin-function syntax-ppss-cache syntax-ppss-last
+ (defun . syntax-ppss-after-change-function)
+ (defun . syntax-ppss-flush-cache)
+ syntax-ppss-stats
+ (defun . syntax-ppss-stats)
+ (defun . syntax-ppss)
+ (defun . syntax-ppss-debug)
+ (provide . syntax))
+ ("/usr/share/emacs/23.0.93/lisp/facemenu.elc" facemenu-keybindings facemenu-new-faces-at-end facemenu-unlisted-faces facemenu-listed-faces facemenu-face-menu
+ (defun . facemenu-face-menu)
+ facemenu-foreground-menu
+ (defun . facemenu-foreground-menu)
+ facemenu-background-menu
+ (defun . facemenu-background-menu)
+ (defun . facemenu-enable-faces-p)
+ facemenu-special-menu
+ (defun . facemenu-special-menu)
+ facemenu-justification-menu
+ (defun . facemenu-justification-menu)
+ facemenu-indentation-menu
+ (defun . facemenu-indentation-menu)
+ facemenu-menu
+ (defun . facemenu-menu)
+ facemenu-keymap
+ (defun . facemenu-keymap)
+ facemenu-add-face-function facemenu-end-add-face facemenu-remove-face-function facemenu-color-alist
+ (defun . facemenu-update)
+ (defun . facemenu-set-face)
+ (defun . facemenu-set-foreground)
+ (defun . facemenu-set-background)
+ (defun . facemenu-set-face-from-menu)
+ (defun . facemenu-set-invisible)
+ (defun . facemenu-set-intangible)
+ (defun . facemenu-set-read-only)
+ (defun . facemenu-remove-face-props)
+ (defun . facemenu-remove-all)
+ (defun . facemenu-remove-special)
+ (defun . facemenu-read-color)
+ (defun . list-colors-display)
+ (defun . list-colors-print)
+ (defun . list-colors-duplicates)
+ (defun . facemenu-color-equal)
+ (defun . facemenu-add-face)
+ (defun . facemenu-active-faces)
+ (defun . facemenu-add-new-face)
+ (defun . facemenu-add-new-color)
+ (defun . facemenu-complete-face-list)
+ (defun . facemenu-iterate)
+ (provide . facemenu))
+ ("/usr/share/emacs/23.0.93/lisp/font-core.elc" font-lock-defaults font-lock-defaults-alist font-lock-function font-lock-mode
+ (defun . font-lock-mode)
+ (defun . font-lock-change-mode)
+ (defun . font-lock-defontify)
+ (defun . font-lock-default-function)
+ (defun . turn-on-font-lock)
+ font-lock-global-modes
+ (defun . turn-on-font-lock-if-desired)
+ font-lock-mode-major-mode global-font-lock-mode
+ (defun . global-font-lock-mode)
+ global-font-lock-mode-buffers
+ (defun . global-font-lock-mode-enable-in-buffers)
+ (defun . global-font-lock-mode-check-buffers)
+ (defun . global-font-lock-mode-cmhh)
+ (provide . font-core))
+ ("/usr/share/emacs/23.0.93/lisp/term/tty-colors.elc" color-name-rgb-alist tty-standard-colors tty-color-mode-alist tty-defined-color-alist
+ (defun . tty-color-alist)
+ (defun . tty-modify-color-alist)
+ (defun . tty-register-default-colors)
+ (defun . tty-color-canonicalize)
+ (defun . tty-color-define)
+ (defun . tty-color-clear)
+ (defun . tty-color-off-gray-diag)
+ (defun . tty-color-approximate)
+ (defun . tty-color-standard-values)
+ (defun . tty-color-translate)
+ (defun . tty-color-by-index)
+ (defun . tty-color-values)
+ (defun . tty-color-desc)
+ (defun . tty-color-gray-shades))
+ ("/usr/share/emacs/23.0.93/lisp/frame.elc" frame-creation-function-alist window-system-default-frame-alist initial-frame-alist minibuffer-frame-alist pop-up-frame-alist pop-up-frame-function special-display-frame-alist
+ (defun . special-display-popup-frame)
+ (defun . handle-delete-frame)
+ frame-initial-frame frame-initial-geometry-arguments
+ (defun . frame-initialize)
+ frame-notice-user-settings
+ (defun . frame-notice-user-settings)
+ (defun . make-initial-minibuffer-frame)
+ (defun . modify-all-frames-parameters)
+ (defun . get-other-frame)
+ (defun . next-multiframe-window)
+ (defun . previous-multiframe-window)
+ (defun . make-frame-on-display)
+ (defun . close-display-connection)
+ (defun . make-frame-command)
+ before-make-frame-hook after-make-frame-functions after-setting-font-hook
+ (defun . new-frame)
+ frame-inherited-parameters
+ (defun . make-frame)
+ (defun . filtered-frame-list)
+ (defun . minibuffer-frame-list)
+ (defun . get-device-terminal)
+ (defun . frames-on-display-list)
+ (defun . framep-on-display)
+ (defun . frame-remove-geometry-params)
+ (defun . select-frame-set-input-focus)
+ (defun . other-frame)
+ (defun . iconify-or-deiconify-frame)
+ (defun . suspend-frame)
+ (defun . make-frame-names-alist)
+ frame-name-history
+ (defun . select-frame-by-name)
+ (defun . current-frame-configuration)
+ (defun . set-frame-configuration)
+ (defun . frame-height)
+ (defun . frame-width)
+ (defun . set-default-font)
+ (defun . set-frame-font)
+ (defun . set-frame-parameter)
+ (defun . set-background-color)
+ (defun . set-foreground-color)
+ (defun . set-cursor-color)
+ (defun . set-mouse-color)
+ (defun . set-border-color)
+ (defun . auto-raise-mode)
+ (defun . auto-lower-mode)
+ (defun . set-frame-name)
+ (defun . frame-current-scroll-bars)
+ (defun . selected-terminal)
+ (defun . display-mouse-p)
+ (defun . display-popup-menus-p)
+ (defun . display-graphic-p)
+ (defun . display-images-p)
+ (defun . display-multi-frame-p)
+ (defun . display-multi-font-p)
+ (defun . display-selections-p)
+ (defun . display-screens)
+ (defun . display-pixel-height)
+ (defun . display-pixel-width)
+ display-mm-dimensions-alist
+ (defun . display-mm-height)
+ (defun . display-mm-width)
+ (defun . display-backing-store)
+ (defun . display-save-under)
+ (defun . display-planes)
+ (defun . display-color-cells)
+ (defun . display-visual-class)
+ (defun . frame-geom-value-cons)
+ (defun . frame-geom-spec-cons)
+ (defun . screen-height)
+ (defun . screen-width)
+ (defun . set-screen-width)
+ (defun . set-screen-height)
+ (defun . delete-other-frames)
+ delete-frame-hook show-trailing-whitespace auto-hscroll-mode automatic-hscrolling blink-cursor-delay blink-cursor-interval blink-cursor-idle-timer blink-cursor-timer
+ (defun . blink-cursor-start)
+ (defun . blink-cursor-timer-function)
+ (defun . blink-cursor-end)
+ blink-cursor-mode
+ (defun . blink-cursor-mode)
+ blink-cursor display-hourglass hourglass-delay cursor-in-non-selected-windows
+ (provide . frame))
+ ("/usr/share/emacs/23.0.93/lisp/window.elc" window-size-fixed
+ (defun . save-selected-window)
+ (defun . window-body-height)
+ (defun . one-window-p)
+ (defun . window-current-scroll-bars)
+ (defun . walk-windows)
+ (defun . get-window-with-predicate)
+ (defun . some-window)
+ (defun . get-buffer-window-list)
+ (defun . minibuffer-window-active-p)
+ (defun . count-windows)
+ (defun . bw-get-tree)
+ (defun . bw-get-tree-1)
+ (defun . bw-find-tree-sub)
+ (defun . bw-find-tree-sub-1)
+ (defun . bw-l)
+ (defun . bw-t)
+ (defun . bw-r)
+ (defun . bw-b)
+ (defun . bw-dir)
+ (defun . bw-eqdir)
+ (defun . bw-refresh-edges)
+ (defun . balance-windows)
+ (defun . bw-adjust-window)
+ (defun . bw-balance-sub)
+ (defun . window-fixed-size-p)
+ window-area-factor
+ (defun . balance-windows-area)
+ display-buffer-function special-display-buffer-names special-display-regexps
+ (defun . special-display-p)
+ special-display-function same-window-buffer-names same-window-regexps
+ (defun . same-window-p)
+ pop-up-frames display-buffer-reuse-frames pop-up-windows split-height-threshold split-width-threshold split-window-preferred-function
+ (defun . window--splittable-p)
+ (defun . window--try-to-split-window)
+ (defun . window--frame-usable-p)
+ even-window-heights
+ (defun . window--even-window-heights)
+ (defun . window--display-buffer-1)
+ (defun . window--display-buffer-2)
+ (defun . display-buffer)
+ (defun . pop-to-buffer)
+ split-window-keep-point
+ (defun . split-window-vertically)
+ (defun . split-window-save-restore-data)
+ (defun . split-window-horizontally)
+ (defun . set-window-text-height)
+ (defun . enlarge-window-horizontally)
+ (defun . shrink-window-horizontally)
+ (defun . window-buffer-height)
+ (defun . count-screen-lines)
+ (defun . fit-window-to-buffer)
+ (defun . window-safely-shrinkable-p)
+ (defun . shrink-window-if-larger-than-buffer)
+ (defun . kill-buffer-and-window)
+ (defun . quit-window)
+ recenter-last-op
+ (defun . recenter-top-bottom)
+ mouse-autoselect-window-timer mouse-autoselect-window-position mouse-autoselect-window-window mouse-autoselect-window-state
+ (defun . mouse-autoselect-window-cancel)
+ (defun . mouse-autoselect-window-start)
+ (defun . mouse-autoselect-window-select)
+ (defun . handle-select-window)
+ (defun . delete-other-windows-vertically)
+ (defun . truncated-partial-width-window-p))
+ ("/usr/share/emacs/23.0.93/lisp/indent.elc" standard-indent indent-line-function tab-always-indent
+ (defun . indent-according-to-mode)
+ (defun . indent-for-tab-command)
+ (defun . insert-tab)
+ (defun . indent-rigidly)
+ (defun . indent-line-to)
+ (defun . current-left-margin)
+ (defun . move-to-left-margin)
+ (defun . indent-to-left-margin)
+ (defun . delete-to-left-margin)
+ (defun . set-left-margin)
+ (defun . set-right-margin)
+ (defun . alter-text-property)
+ (defun . increase-left-margin)
+ (defun . decrease-left-margin)
+ (defun . increase-right-margin)
+ (defun . decrease-right-margin)
+ (defun . beginning-of-line-text)
+ indent-region-function
+ (defun . indent-region)
+ (defun . indent-relative-maybe)
+ (defun . indent-relative)
+ tab-stop-list edit-tab-stops-map edit-tab-stops-buffer
+ (defun . edit-tab-stops)
+ (defun . edit-tab-stops-note-changes)
+ (defun . tab-to-tab-stop)
+ (defun . move-to-tab-stop))
+ ("/usr/share/emacs/23.0.93/lisp/language/cham.el"
+ (provide . cham))
+ ("/usr/share/emacs/23.0.93/lisp/language/burmese.el")
+ ("/usr/share/emacs/23.0.93/lisp/language/khmer.el")
+ ("/usr/share/emacs/23.0.93/lisp/language/georgian.el"
+ (provide . georgian))
+ ("/usr/share/emacs/23.0.93/lisp/language/utf-8-lang.el"
+ (provide . utf-8-lang))
+ ("/usr/share/emacs/23.0.93/lisp/language/misc-lang.el"
+ (provide . misc-lang))
+ ("/usr/share/emacs/23.0.93/lisp/language/vietnamese.elc"
+ (provide . vietnamese))
+ ("/usr/share/emacs/23.0.93/lisp/language/tibetan.elc" tibetan-composable-pattern tibetan-consonant-transcription-alist tibetan-consonant-transcription-alist tibetan-vowel-transcription-alist tibetan-vowel-transcription-alist tibetan-modifier-transcription-alist tibetan-modifier-transcription-alist tibetan-precomposed-transcription-alist tibetan-precomposed-transcription-alist tibetan-subjoined-transcription-alist tibetan-subjoined-transcription-alist tibetan-base-to-subjoined-alist tibetan-base-to-subjoined-alist tibetan-composite-vowel-alist tibetan-composite-vowel-alist tibetan-precomposition-rule-alist tibetan-precomposition-rule-alist tibetan-regexp tibetan-precomposed-regexp tibetan-precomposition-rule-regexp tibetan-decomposed tibetan-decomposed-temp
+ (provide . tibetan))
+ ("/usr/share/emacs/23.0.93/lisp/language/thai.el"
+ (provide . thai))
+ ("/usr/share/emacs/23.0.93/lisp/language/tai-viet.el"
+ (provide . tai-viet))
+ ("/usr/share/emacs/23.0.93/lisp/language/lao.el"
+ (provide . lao))
+ ("/usr/share/emacs/23.0.93/lisp/language/korean.el"
+ (provide . korean))
+ ("/usr/share/emacs/23.0.93/lisp/language/japanese.el"
+ (defun . compose-gstring-for-variation-glyph)
+ (provide . japanese))
+ ("/usr/share/emacs/23.0.93/lisp/international/eucjp-ms.el")
+ ("/usr/share/emacs/23.0.93/lisp/international/cp51932.el")
+ ("/usr/share/emacs/23.0.93/lisp/language/hebrew.el"
+ (provide . hebrew))
+ ("/usr/share/emacs/23.0.93/lisp/language/greek.el"
+ (provide . greek))
+ ("/usr/share/emacs/23.0.93/lisp/language/romanian.el"
+ (provide . romanian))
+ ("/usr/share/emacs/23.0.93/lisp/language/slovak.el"
+ (provide . slovak))
+ ("/usr/share/emacs/23.0.93/lisp/language/czech.el"
+ (provide . czech))
+ ("/usr/share/emacs/23.0.93/lisp/language/european.elc"
+ (defun . turkish-case-conversion-enable)
+ (defun . turkish-case-conversion-disable)
+ (provide . european))
+ ("/usr/share/emacs/23.0.93/lisp/language/ethiopic.elc" ccl-encode-ethio-font ccl-encode-ethio-font
+ (provide . ethiopic))
+ ("/usr/share/emacs/23.0.93/lisp/language/english.el")
+ ("/usr/share/emacs/23.0.93/lisp/language/sinhala.el")
+ ("/usr/share/emacs/23.0.93/lisp/language/indian.elc" devanagari-composable-pattern tamil-composable-pattern kannada-composable-pattern malayalam-composable-pattern
+ (provide . indian))
+ ("/usr/share/emacs/23.0.93/lisp/language/cyrillic.elc"
+ (provide . cyrillic))
+ ("/usr/share/emacs/23.0.93/lisp/language/chinese.elc"
+ (provide . chinese))
+ ("/usr/share/emacs/23.0.93/lisp/international/charprop.el")
+ ("/usr/share/emacs/23.0.93/lisp/composite.elc" reference-point-alist
+ (t . encode-composition-rule)
+ (defun . encode-composition-rule)
+ (defun . decode-composition-rule)
+ (defun . encode-composition-components)
+ (defun . decode-composition-components)
+ (defun . compose-region)
+ (defun . decompose-region)
+ (defun . compose-string)
+ (defun . decompose-string)
+ (defun . compose-chars)
+ (defun . find-composition)
+ (defun . compose-chars-after)
+ (defun . compose-last-chars)
+ (defun . lgstring-header)
+ (defun . lgstring-set-header)
+ (defun . lgstring-font)
+ (defun . lgstring-char)
+ (defun . lgstring-char-len)
+ (defun . lgstring-shaped-p)
+ (defun . lgstring-set-id)
+ (defun . lgstring-glyph)
+ (defun . lgstring-glyph-len)
+ (defun . lgstring-set-glyph)
+ (defun . lglyph-from)
+ (defun . lglyph-to)
+ (defun . lglyph-char)
+ (defun . lglyph-code)
+ (defun . lglyph-width)
+ (defun . lglyph-lbearing)
+ (defun . lglyph-rbearing)
+ (defun . lglyph-ascent)
+ (defun . lglyph-descent)
+ (defun . lglyph-adjustment)
+ (defun . lglyph-set-from-to)
+ (defun . lglyph-set-char)
+ (defun . lglyph-set-code)
+ (defun . lglyph-set-width)
+ (defun . lglyph-set-adjustment)
+ (defun . lglyph-copy)
+ (defun . lgstring-insert-glyph)
+ (defun . compose-glyph-string)
+ (defun . compose-glyph-string-relative)
+ (defun . compose-gstring-for-graphic)
+ (defun . compose-gstring-for-terminal)
+ (defun . auto-compose-chars)
+ auto-composition-mode
+ (t . auto-composition-mode)
+ (defun . auto-composition-mode)
+ (defun . turn-on-auto-composition-if-enabled)
+ auto-composition-mode-major-mode global-auto-composition-mode
+ (t . global-auto-composition-mode)
+ (defun . global-auto-composition-mode)
+ global-auto-composition-mode-buffers
+ (defun . global-auto-composition-mode-enable-in-buffers)
+ (defun . global-auto-composition-mode-check-buffers)
+ (defun . global-auto-composition-mode-cmhh)
+ (defun . toggle-auto-composition)
+ (defun . decompose-composite-char))
+ ("/usr/share/emacs/23.0.93/lisp/international/characters.elc" cjk-char-width-table
+ (defun . use-cjk-char-width-table)
+ (defun . use-default-char-width-table)
+ (defun . build-unicode-category-table))
+ ("/usr/share/emacs/23.0.93/lisp/case-table.elc"
+ (defun . describe-buffer-case-table)
+ (defun . get-upcase-table)
+ (defun . copy-case-table)
+ (defun . set-case-syntax-delims)
+ (defun . set-case-syntax-pair)
+ (defun . set-upcase-syntax)
+ (defun . set-downcase-syntax)
+ (defun . set-case-syntax)
+ (provide . case-table))
+ ("/usr/share/emacs/23.0.93/lisp/international/mule-cmds.elc" mule-keymap mule-menu-keymap describe-language-environment-map setup-language-environment-map set-coding-system-map help-xref-mule-regexp-template help-xref-mule-regexp-template
+ (defun . coding-system-change-eol-conversion)
+ (defun . coding-system-change-text-conversion)
+ (defun . canonicalize-coding-system-name)
+ (defun . coding-system-from-name)
+ (defun . toggle-enable-multibyte-characters)
+ (defun . view-hello-file)
+ (defun . universal-coding-system-argument)
+ (defun . set-default-coding-systems)
+ (defun . prefer-coding-system)
+ sort-coding-systems-predicate
+ (defun . sort-coding-systems)
+ (defun . find-coding-systems-region)
+ (defun . find-coding-systems-string)
+ (defun . find-coding-systems-for-charsets)
+ (defun . find-multibyte-characters)
+ (defun . search-unencodable-char)
+ last-coding-system-specified select-safe-coding-system-accept-default-p
+ (defun . select-safe-coding-system-interactively)
+ (defun . select-safe-coding-system)
+ (defun . select-message-coding-system)
+ language-info-alist
+ (defun . get-language-info)
+ (defun . set-language-info)
+ (defun . set-language-info-internal)
+ (defun . set-language-info-alist)
+ (defun . read-language-name)
+ leim-list-file-name leim-list-header leim-list-entry-regexp update-leim-list-functions
+ (defun . update-leim-list-file)
+ current-input-method current-input-method-title default-input-method input-method-history inactivate-current-input-method-function describe-current-input-method-function input-method-alist
+ (defun . register-input-method)
+ (defun . read-input-method-name)
+ (defun . activate-input-method)
+ (defun . inactivate-input-method)
+ (defun . set-input-method)
+ toggle-input-method-active
+ (defun . toggle-input-method)
+ (defun . describe-input-method)
+ (defun . describe-current-input-method)
+ (defun . read-multilingual-string)
+ input-method-verbose-flag input-method-highlight-flag input-method-activate-hook input-method-inactivate-hook input-method-after-insert-chunk-hook input-method-exit-on-first-char input-method-use-echo-area input-method-exit-on-invalid-key set-language-environment-hook exit-language-environment-hook
+ (defun . setup-specified-language-environment)
+ current-language-environment
+ (defun . reset-language-environment)
+ (defun . set-display-table-and-terminal-coding-system)
+ (defun . set-language-environment)
+ language-info-custom-alist
+ (defun . standard-display-european-internal)
+ (defun . set-language-environment-coding-systems)
+ (defun . set-language-environment-input-method)
+ (defun . set-language-environment-nonascii-translation)
+ (defun . set-language-environment-charset)
+ (defun . set-language-environment-unibyte)
+ (defun . princ-list)
+ (defun . describe-specified-language-support)
+ (defun . describe-language-environment)
+ locale-translation-file-name locale-language-names locale-charset-language-names locale-preferred-coding-systems
+ (defun . locale-name-match)
+ (defun . locale-charset-match-p)
+ locale-charset-alist
+ (defun . locale-charset-to-coding-system)
+ (defun . locale-translate)
+ (defun . set-locale-environment)
+ char-code-property-alist
+ (defun . define-char-code-property)
+ char-code-property-table
+ (defun . get-char-code-property)
+ (defun . put-char-code-property)
+ (defun . char-code-property-description)
+ iso-2022-control-alist
+ (defun . encoded-string-description)
+ (defun . encode-coding-char)
+ unify-8859-on-encoding-mode
+ (defun . unify-8859-on-encoding-mode)
+ unify-8859-on-decoding-mode
+ (defun . unify-8859-on-decoding-mode)
+ nonascii-insert-offset nonascii-translation-table ucs-names
+ (defun . ucs-names)
+ ucs-completions
+ (defun . read-char-by-name)
+ (defun . ucs-insert))
+ ("/usr/share/emacs/23.0.93/lisp/epa-hook.elc"
+ (defun . epa-file--file-name-regexp-set)
+ epa-file-name-regexp epa-file-inhibit-auto-save epa-file-encrypt-to epa-file-handler epa-file-auto-mode-alist-entry
+ (defun . epa-file-name-regexp-update)
+ (defun . epa-file-find-file-hook)
+ auto-encryption-mode
+ (defun . auto-encryption-mode)
+ (provide . epa-hook))
+ ("/usr/share/emacs/23.0.93/lisp/jka-cmpr-hook.elc" jka-compr-added-to-file-coding-system-alist jka-compr-file-name-handler-entry jka-compr-compression-info-list--internal jka-compr-mode-alist-additions--internal jka-compr-load-suffixes--internal
+ (defun . jka-compr-build-file-regexp)
+ (defun . jka-compr-info-regexp)
+ (defun . jka-compr-info-compress-message)
+ (defun . jka-compr-info-compress-program)
+ (defun . jka-compr-info-compress-args)
+ (defun . jka-compr-info-uncompress-message)
+ (defun . jka-compr-info-uncompress-program)
+ (defun . jka-compr-info-uncompress-args)
+ (defun . jka-compr-info-can-append)
+ (defun . jka-compr-info-strip-extension)
+ (defun . jka-compr-info-file-magic-bytes)
+ (defun . jka-compr-get-compression-info)
+ (defun . jka-compr-install)
+ (defun . jka-compr-installed-p)
+ (defun . jka-compr-update)
+ (defun . jka-compr-set)
+ jka-compr-compression-info-list jka-compr-mode-alist-additions jka-compr-load-suffixes auto-compression-mode
+ (defun . auto-compression-mode)
+ (defun . with-auto-compression-mode)
+ (provide . jka-cmpr-hook))
+ ("/usr/share/emacs/23.0.93/lisp/help.elc" help-window help-window-point-marker help-map help-button-cache
+ (defun . help-quit)
+ help-return-method
+ (defun . print-help-return-message)
+ (defun . help)
+ (defun . help-for-help)
+ (defun . help-for-help-internal-doc)
+ (defun . help-for-help-internal)
+ (defun . function-called-at-point)
+ (defun . view-help-file)
+ (defun . describe-distribution)
+ (defun . describe-copying)
+ (defun . describe-gnu-project)
+ (defun . describe-project)
+ (defun . describe-no-warranty)
+ (defun . describe-prefix-bindings)
+ (defun . view-emacs-news)
+ (defun . view-emacs-todo)
+ (defun . view-todo)
+ (defun . view-echo-area-messages)
+ (defun . view-order-manuals)
+ (defun . view-emacs-FAQ)
+ (defun . view-emacs-problems)
+ (defun . view-emacs-debugging)
+ (defun . view-external-packages)
+ (defun . view-lossage)
+ (defun . describe-bindings)
+ (defun . describe-bindings-internal)
+ (defun . where-is)
+ (defun . help-key-description)
+ (defun . describe-key-briefly)
+ (defun . describe-key)
+ (defun . describe-mode)
+ (defun . describe-minor-mode)
+ (defun . describe-minor-mode-completion-table-for-symbol)
+ (defun . describe-minor-mode-from-symbol)
+ (defun . describe-minor-mode-completion-table-for-indicator)
+ (defun . describe-minor-mode-from-indicator)
+ (defun . lookup-minor-mode-from-indicator)
+ temp-buffer-max-height temp-buffer-resize-mode
+ (defun . temp-buffer-resize-mode)
+ (defun . resize-temp-buffer-window)
+ help-window-select
+ (defun . help-window-display-message)
+ (defun . help-window-setup-finish)
+ (defun . help-window-setup)
+ (defun . with-help-window)
+ (provide . help))
+ ("/usr/share/emacs/23.0.93/lisp/simple.elc" idle-update-delay
+ (defun . get-next-valid-buffer)
+ (defun . last-buffer)
+ (defun . next-buffer)
+ (defun . previous-buffer)
+ (defface . next-error)
+ next-error-highlight next-error-highlight-no-select next-error-recenter next-error-hook next-error-highlight-timer next-error-overlay-arrow-position next-error-last-buffer next-error-function
+ (defun . next-error-buffer-p)
+ (defun . next-error-find-buffer)
+ (defun . next-error)
+ (defun . next-error-internal)
+ (defun . goto-next-locus)
+ (defun . next-match)
+ (defun . previous-error)
+ (defun . first-error)
+ (defun . next-error-no-select)
+ (defun . previous-error-no-select)
+ next-error-follow-last-line next-error-follow-minor-mode
+ (defun . next-error-follow-minor-mode)
+ (defun . next-error-follow-mode-post-command-hook)
+ (defun . fundamental-mode)
+ special-mode-map special-mode-map special-mode-syntax-table special-mode-abbrev-table special-mode-abbrev-table
+ (defun . special-mode)
+ hard-newline
+ (defun . newline)
+ (defun . set-hard-newline-properties)
+ (defun . open-line)
+ (defun . split-line)
+ (defun . delete-indentation)
+ (defun . join-line)
+ (defun . delete-blank-lines)
+ (defun . delete-trailing-whitespace)
+ (defun . newline-and-indent)
+ (defun . reindent-then-newline-and-indent)
+ (defun . quoted-insert)
+ (defun . forward-to-indentation)
+ (defun . backward-to-indentation)
+ (defun . back-to-indentation)
+ (defun . fixup-whitespace)
+ (defun . delete-horizontal-space)
+ (defun . just-one-space)
+ (defun . beginning-of-buffer)
+ (defun . end-of-buffer)
+ (defun . mark-whole-buffer)
+ (defun . goto-line)
+ (defun . count-lines-region)
+ (defun . what-line)
+ (defun . count-lines)
+ (defun . line-number-at-pos)
+ (defun . what-cursor-position)
+ read-expression-history minibuffer-completing-symbol minibuffer-default eval-expression-print-level eval-expression-print-length eval-expression-debug-on-error
+ (defun . eval-expression-print-format)
+ (defun . eval-expression)
+ (defun . edit-and-eval-command)
+ (defun . repeat-complex-command)
+ minibuffer-history minibuffer-history-sexp-flag minibuffer-history-search-history minibuffer-text-before-history
+ (defun . minibuffer-history-initialize)
+ (defun . minibuffer-avoid-prompt)
+ minibuffer-history-case-insensitive-variables
+ (defun . previous-matching-history-element)
+ (defun . next-matching-history-element)
+ minibuffer-temporary-goal-position minibuffer-default-add-function minibuffer-default-add-done
+ (defun . minibuffer-default-add-completions)
+ (defun . goto-history-element)
+ (defun . next-history-element)
+ (defun . previous-history-element)
+ (defun . next-complete-history-element)
+ (defun . previous-complete-history-element)
+ (defun . minibuffer-prompt-width)
+ (defun . minibuffer-history-isearch-setup)
+ (defun . minibuffer-history-isearch-end)
+ (defun . minibuffer-history-isearch-search)
+ (defun . minibuffer-history-isearch-message)
+ (defun . minibuffer-history-isearch-wrap)
+ (defun . minibuffer-history-isearch-push-state)
+ (defun . minibuffer-history-isearch-pop-state)
+ (defun . advertised-undo)
+ undo-equiv-table undo-in-region undo-no-redo pending-undo-list
+ (defun . undo)
+ (defun . buffer-disable-undo)
+ (defun . undo-only)
+ undo-in-progress
+ (defun . undo-more)
+ (defun . undo-copy-list)
+ (defun . undo-copy-list-1)
+ (defun . undo-start)
+ (defun . undo-make-selective-list)
+ (defun . undo-elt-in-region)
+ (defun . undo-elt-crosses-region)
+ (defun . undo-delta)
+ undo-ask-before-discard undo-extra-outer-limit
+ (defun . undo-outer-limit-truncate)
+ shell-command-history shell-command-switch shell-command-default-error-buffer
+ (defun . minibuffer-default-add-shell-commands)
+ (defun . minibuffer-complete-shell-command)
+ minibuffer-local-shell-command-map
+ (defun . read-shell-command)
+ (defun . shell-command)
+ (defun . display-message-or-buffer)
+ (defun . shell-command-sentinel)
+ (defun . shell-command-on-region)
+ (defun . shell-command-to-string)
+ (defun . process-file)
+ (defun . start-file-process)
+ universal-argument-map universal-argument-num-events overriding-map-is-bound saved-overriding-map
+ (defun . ensure-overriding-map-is-bound)
+ (defun . restore-overriding-map)
+ (defun . universal-argument)
+ (defun . universal-argument-more)
+ (defun . negative-argument)
+ (defun . digit-argument)
+ (defun . universal-argument-minus)
+ (defun . universal-argument-other-key)
+ buffer-substring-filters
+ (defun . filter-buffer-substring)
+ interprogram-cut-function interprogram-paste-function kill-ring kill-ring-max kill-ring-yank-pointer
+ (defun . kill-new)
+ (defun . kill-append)
+ yank-pop-change-selection
+ (defun . current-kill)
+ kill-read-only-ok
+ (defun . kill-region)
+ (defun . copy-region-as-kill)
+ (defun . kill-ring-save)
+ (defun . append-next-kill)
+ yank-excluded-properties yank-window-start yank-undo-function
+ (defun . yank-pop)
+ (defun . yank)
+ (defun . rotate-yank-pointer)
+ (defun . kill-forward-chars)
+ (defun . kill-backward-chars)
+ backward-delete-char-untabify-method
+ (defun . backward-delete-char-untabify)
+ (defun . zap-to-char)
+ kill-whole-line
+ (defun . kill-line)
+ (defun . kill-whole-line)
+ (defun . forward-visible-line)
+ (defun . end-of-visible-line)
+ (defun . insert-buffer)
+ (defun . append-to-buffer)
+ (defun . prepend-to-buffer)
+ (defun . copy-to-buffer)
+ activate-mark-hook deactivate-mark-hook
+ (defun . mark)
+ (defun . deactivate-mark)
+ (defun . activate-mark)
+ select-active-regions
+ (defun . set-mark)
+ use-empty-active-region
+ (defun . use-region-p)
+ (defun . region-active-p)
+ mark-ring mark-ring-max global-mark-ring global-mark-ring-max
+ (defun . pop-to-mark-command)
+ (defun . push-mark-command)
+ set-mark-command-repeat-pop set-mark-default-inactive
+ (defun . set-mark-command)
+ (defun . push-mark)
+ (defun . pop-mark)
+ (defun . exchange-dot-and-mark)
+ (defun . exchange-point-and-mark)
+ shift-select-mode
+ (defun . handle-shift-selection)
+ transient-mark-mode
+ (defun . transient-mark-mode)
+ transient-mark-mode widen-automatically
+ (defun . pop-global-mark)
+ next-line-add-newlines
+ (defun . next-line)
+ (defun . previous-line)
+ track-eol goal-column temporary-goal-column line-move-ignore-invisible line-move-visual
+ (defun . line-move-partial)
+ (defun . line-move)
+ (defun . line-move-visual)
+ (defun . line-move-1)
+ (defun . line-move-finish)
+ (defun . line-move-to-column)
+ (defun . move-end-of-line)
+ (defun . move-beginning-of-line)
+ (defun . set-goal-column)
+ (defun . end-of-visual-line)
+ (defun . beginning-of-visual-line)
+ (defun . kill-visual-line)
+ (defun . next-logical-line)
+ (defun . previous-logical-line)
+ visual-line-mode-map visual-line-fringe-indicators visual-line--saved-state visual-line-mode
+ (defun . visual-line-mode)
+ (defun . turn-on-visual-line-mode)
+ visual-line-mode-major-mode global-visual-line-mode
+ (defun . global-visual-line-mode)
+ global-visual-line-mode-buffers
+ (defun . global-visual-line-mode-enable-in-buffers)
+ (defun . global-visual-line-mode-check-buffers)
+ (defun . global-visual-line-mode-cmhh)
+ (defun . scroll-other-window-down)
+ (defun . beginning-of-buffer-other-window)
+ (defun . end-of-buffer-other-window)
+ (defun . transpose-chars)
+ (defun . transpose-words)
+ (defun . transpose-sexps)
+ (defun . transpose-lines)
+ (defun . transpose-subr)
+ (defun . transpose-subr-1)
+ (defun . backward-word)
+ (defun . mark-word)
+ (defun . kill-word)
+ (defun . backward-kill-word)
+ (defun . current-word)
+ fill-prefix auto-fill-inhibit-regexp
+ (defun . do-auto-fill)
+ comment-line-break-function
+ (defun . default-indent-new-line)
+ normal-auto-fill-function
+ (defun . auto-fill-mode)
+ (defun . auto-fill-function)
+ (defun . turn-on-auto-fill)
+ (defun . turn-off-auto-fill)
+ (defun . set-fill-column)
+ (defun . set-selective-display)
+ indicate-unused-lines
+ (defun . toggle-truncate-lines)
+ (defun . toggle-word-wrap)
+ overwrite-mode-textual overwrite-mode-binary
+ (defun . overwrite-mode)
+ (defun . binary-overwrite-mode)
+ line-number-mode
+ (defun . line-number-mode)
+ column-number-mode
+ (defun . column-number-mode)
+ size-indication-mode
+ (defun . size-indication-mode)
+ blink-matching-paren blink-matching-paren-on-screen blink-matching-paren-distance blink-matching-delay blink-matching-paren-dont-ignore-comments
+ (defun . blink-matching-open)
+ (defun . keyboard-quit)
+ buffer-quit-function
+ (defun . keyboard-escape-quit)
+ (defun . play-sound-file)
+ read-mail-command mail-user-agent
+ (defun . rfc822-goto-eoh)
+ (defun . sendmail-user-agent-compose)
+ (defun . compose-mail)
+ (defun . compose-mail-other-window)
+ (defun . compose-mail-other-frame)
+ set-variable-value-history
+ (defun . set-variable)
+ completion-list-mode-map completion-reference-buffer completion-no-auto-exit completion-base-size
+ (defun . delete-completion-window)
+ (defun . previous-completion)
+ (defun . next-completion)
+ (defun . choose-completion)
+ (defun . choose-completion-delete-max-match)
+ choose-completion-string-functions
+ (defun . choose-completion-string)
+ completion-list-mode-map completion-list-mode-syntax-table completion-list-mode-abbrev-table completion-list-mode-abbrev-table
+ (defun . completion-list-mode)
+ (defun . completion-list-mode-finish)
+ completion-show-help completion-root-regexp
+ (defun . completion-setup-function)
+ (defun . switch-to-completions)
+ (defun . event-apply-alt-modifier)
+ (defun . event-apply-super-modifier)
+ (defun . event-apply-hyper-modifier)
+ (defun . event-apply-shift-modifier)
+ (defun . event-apply-control-modifier)
+ (defun . event-apply-meta-modifier)
+ (defun . event-apply-modifier)
+ clone-buffer-hook clone-indirect-buffer-hook
+ (defun . clone-process)
+ (defun . clone-buffer)
+ (defun . clone-indirect-buffer)
+ (defun . clone-indirect-buffer-other-window)
+ normal-erase-is-backspace
+ (defun . normal-erase-is-backspace-setup-frame)
+ (defun . normal-erase-is-backspace-mode)
+ vis-mode-saved-buffer-invisibility-spec visible-mode
+ (defun . visible-mode)
+ (defun . apply-partially)
+ bad-packages-alist
+ (defun . bad-package-check)
+ (provide . simple))
+ ("/usr/share/emacs/23.0.93/lisp/abbrev.elc" only-global-abbrevs abbrev-mode
+ (defun . abbrev-mode)
+ abbrev-mode edit-abbrevs-map
+ (defun . kill-all-abbrevs)
+ (defun . copy-abbrev-table)
+ (defun . insert-abbrevs)
+ (defun . list-abbrevs)
+ (defun . abbrev-table-name)
+ (defun . prepare-abbrev-list-buffer)
+ (defun . edit-abbrevs-mode)
+ (defun . edit-abbrevs)
+ (defun . edit-abbrevs-redefine)
+ (defun . define-abbrevs)
+ (defun . read-abbrev-file)
+ (defun . quietly-read-abbrev-file)
+ (defun . write-abbrev-file)
+ (defun . add-mode-abbrev)
+ (defun . add-global-abbrev)
+ (defun . add-abbrev)
+ (defun . inverse-add-mode-abbrev)
+ (defun . inverse-add-global-abbrev)
+ (defun . inverse-add-abbrev)
+ (defun . abbrev-prefix-mark)
+ (defun . expand-region-abbrevs)
+ (defun . abbrev-table-get)
+ (defun . abbrev-table-put)
+ (defun . abbrev-get)
+ (defun . abbrev-put)
+ (defun . abbrev-with-wrapper-hook)
+ abbrev-table-name-list
+ (defun . make-abbrev-table)
+ (defun . abbrev-table-p)
+ global-abbrev-table abbrev-minor-mode-table-alist fundamental-mode-abbrev-table abbrevs-changed abbrev-all-caps abbrev-start-location abbrev-start-location-buffer last-abbrev last-abbrev-text last-abbrev-location pre-abbrev-expand-hook
+ (defun . clear-abbrev-table)
+ (defun . define-abbrev)
+ (defun . abbrev--check-chars)
+ (defun . define-global-abbrev)
+ (defun . define-mode-abbrev)
+ (defun . abbrev--active-tables)
+ (defun . abbrev-symbol)
+ (defun . abbrev-expansion)
+ (defun . abbrev--before-point)
+ (defun . abbrev-insert)
+ abbrev-expand-functions
+ (defun . expand-abbrev)
+ (defun . unexpand-abbrev)
+ (defun . abbrev--write)
+ (defun . abbrev--describe)
+ (defun . insert-abbrev-table-description)
+ (defun . define-abbrev-table)
+ (defun . abbrev-table-menu)
+ (provide . abbrev))
+ ("/usr/share/emacs/23.0.93/lisp/loaddefs.el" add-log-current-defun-function add-log-full-name add-log-mailing-address add-log-lisp-like-modes add-log-c-like-modes add-log-tex-like-modes ad-redefinition-action ad-default-compilation-action
+ (defun . outlinify-sticky)
+ (defun . ange-ftp-re-read-dir)
+ (defun . command-apropos)
+ autoarg-mode autoarg-kp-mode auto-insert-mode global-auto-revert-mode mouse-avoidance-mode display-battery-mode binhex-begin-line bookmark-map
+ (defun . bookmark-locate)
+ (defun . list-bookmarks)
+ (defun . edit-bookmarks)
+ menu-bar-bookmark-map
+ (defun . menu-bar-bookmark-map)
+ browse-url-browser-function browse-url-firefox-program browse-url-galeon-program
+ (defun . list-yahrzeit-dates)
+ calc-settings-file c-mode-syntax-table c++-mode-syntax-table objc-mode-syntax-table java-mode-syntax-table idl-mode-syntax-table pike-mode-syntax-table custom-print-functions comint-output-filter-functions comint-use-prompt-regexp-instead-of-fields comint-file-name-prefix compilation-mode-hook compilation-start-hook compilation-window-height compilation-process-setup-function compilation-buffer-name-function compilation-finish-function compilation-finish-functions compilation-ask-about-save compilation-search-path compile-command compilation-disable-input partial-completion-mode dynamic-completion-mode global-auto-composition-mode crisp-mode
+ (defun . brief-mode)
+ cua-mode custom-browse-sort-alphabetically custom-buffer-sort-alphabetically custom-menu-sort-alphabetically
+ (defun . customize-variable)
+ (defun . customize-variable-other-window)
+ customize-package-emacs-version-alist
+ (defun . customize-changed)
+ custom-file global-cwarn-mode
+ (defun . pending-delete-mode)
+ delete-selection-mode desktop-save-mode desktop-locals-to-save desktop-save-buffer desktop-buffer-mode-handlers desktop-minor-mode-handlers diff-switches diff-command dired-listing-switches dired-chown-program dired-ls-F-marks-symlinks dired-trivial-filenames dired-keep-marker-rename dired-keep-marker-copy dired-keep-marker-hardlink dired-keep-marker-symlink dired-dwim-target dired-copy-preserve-time dired-directory dnd-protocol-alist
+ (defun . zone-mode)
+ (defun . easy-mmode-define-minor-mode)
+ (defun . easy-mmode-define-global-mode)
+ (defun . define-global-minor-mode)
+ (defun . ebnf-despool)
+ edebug-all-defs edebug-all-forms
+ (defun . edebug-defun)
+ (defun . ediff3)
+ (defun . ediff)
+ (defun . ebuffers)
+ (defun . ebuffers3)
+ (defun . edirs)
+ (defun . edir-revisions)
+ (defun . edirs3)
+ (defun . edirs-merge)
+ (defun . edir-merge-revisions)
+ (defun . edir-merge-revisions-with-ancestor)
+ (defun . edirs-merge-with-ancestor)
+ (defun . ediff-merge)
+ (defun . ediff-merge-with-ancestor)
+ (defun . epatch)
+ (defun . epatch-buffer)
+ (defun . erevision)
+ menu-bar-ediff-misc-menu menu-bar-epatch-menu menu-bar-ediff-merge-menu menu-bar-ediff-menu
+ (defun . eregistry)
+ edmacro-eight-bits eldoc-minor-mode-string eldoc-documentation-function menu-bar-emerge-menu epa-global-mail-mode
+ (defun . epg-import-keys-from-server)
+ (defun . erc-select)
+ erc-ctcp-query-DCC-hook erc-track-minor-mode
+ (defun . eshell-report-bug)
+ tags-file-name tags-case-fold-search tags-table-list tags-compression-info-list tags-add-tables find-tag-hook find-tag-default-function eudc-tools-menu
+ (defun . ffap)
+ find-ls-option find-ls-subdir-switches find-grep-options find-name-arg ff-special-constructs
+ (defun . ff-find-related-file)
+ flyspell-mode
+ (defun . gdba)
+ gdb-enable-debug generic-mode-list
+ (defun . gnus-batch-kill)
+ (defun . gnus-set-sorted-intersection)
+ (defun . goto-address-at-mouse)
+ grep-window-height grep-command grep-find-command grep-setup-hook grep-regexp-alist grep-program find-program xargs-program grep-find-use-xargs grep-history grep-find-history
+ (defun . find-grep)
+ help-at-pt-display-when-idle three-step-help global-hi-lock-mode
+ (defun . highlight-lines-matching-regexp)
+ (defun . highlight-regexp)
+ (defun . highlight-phrase)
+ (defun . unhighlight-regexp)
+ hs-special-modes-alist global-highlight-changes-mode hippie-expand-try-functions-list hippie-expand-verbose hippie-expand-dabbrev-skip-space hippie-expand-dabbrev-as-symbol hippie-expand-no-restriction hippie-expand-max-buffers hippie-expand-ignore-buffers hippie-expand-only-buffers global-hl-line-mode holiday-general-holidays general-holidays holiday-oriental-holidays oriental-holidays holiday-local-holidays local-holidays holiday-other-holidays other-holidays hebrew-holidays-1 hebrew-holidays-2 hebrew-holidays-3 hebrew-holidays-4 holiday-hebrew-holidays hebrew-holidays holiday-christian-holidays christian-holidays holiday-islamic-holidays islamic-holidays holiday-bahai-holidays bahai-holidays holiday-solar-holidays solar-holidays
+ (defun . holiday-list)
+ icomplete-mode ido-mode
+ (defun . image-dired)
+ (defun . tumme)
+ image-file-name-extensions image-file-name-regexps auto-image-file-mode imenu-sort-function imenu-generic-expression imenu-create-index-function imenu-prev-index-position-function imenu-extract-index-name-function imenu-name-lookup-function imenu-default-goto-function inferior-lisp-filter-regexp inferior-lisp-program inferior-lisp-load-command inferior-lisp-prompt inferior-lisp-mode-hook
+ (defun . run-lisp)
+ Info-split-threshold ispell-personal-dictionary ispell-menu-map ispell-menu-xemacs ispell-menu-map-needed ispell-skip-region-alist ispell-tex-skip-alists ispell-html-skip-alists iswitchb-mode jka-compr-inhibit keypad-setup keypad-numlock-setup keypad-shifted-setup keypad-numlock-shifted-setup kkc-after-update-conversion-functions default-korean-keyboard
+ (defun . landmark-repeat)
+ (defun . landmark)
+ latex-inputenc-coding-alist latin1-display latin1-display-ucs-per-lynx ledit-save-files ledit-go-to-lisp-string ledit-go-to-liszt-string linum-format global-linum-mode locate-ls-subdir-switches lpr-windows-system lpr-lp-system printer-name lpr-switches lpr-command ls-lisp-support-shell-wildcards
+ (defun . phases-of-moon)
+ mail-hist-keep-history mail-use-rfc822 mail-abbrevs-mode mail-complete-style
+ (defun . manual-entry)
+ minibuffer-depth-indicate-mode minibuffer-electric-default-mode multi-isearch-next-buffer-function multi-isearch-next-buffer-current-function multi-isearch-current-buffer mouse-sel-mode msb-mode
+ (defun . string-to-list)
+ (defun . string-to-vector)
+ (defun . nested-alist-p)
+ mouse-wheel-mode
+ (defun . ipconfig)
+ (defun . indent-for-comment)
+ (defun . set-comment-column)
+ (defun . kill-comment)
+ (defun . indent-new-comment-line)
+ comment-use-syntax comment-column comment-start comment-start-skip comment-end-skip comment-end comment-indent-function comment-insert-comment-function comment-style comment-padding comment-multi-line comment-auto-fill-only-comments disabled-command-function disabled-command-hook
+ (defun . run-octave)
+ (defun . org-publish-project)
+ show-paren-mode pc-selection-mode
+ (defun . pcomplete/gdb)
+ (defun . pcomplete/pushd)
+ (defun . pcomplete/time)
+ cvs-dired-action cvs-dired-use-hook
+ (defun . cvs-dired-noselect)
+ cvs-global-menu
+ (defun . edit-picture)
+ (defun . run-prolog)
+ bdf-directory-list ps-page-dimensions-database ps-paper-type ps-print-color-p quickurl-reread-hook-postfix
+ (defun . irc)
+ rcirc-track-minor-mode
+ (defun . regexp-builder)
+ recentf-mode
+ (defun . close-rectangle)
+ (defun . replace-rectangle)
+ global-reveal-mode rmail-dont-reply-to-names rmail-default-dont-reply-to-names rmail-ignored-headers rmail-displayed-headers rmail-retry-ignored-headers rmail-highlighted-headers rmail-primary-inbox-list rmail-secondary-file-directory rmail-secondary-file-regexp rmail-mode-hook rmail-show-message-hook rmail-file-coding-system rmail-insert-mime-forwarded-message-function rmail-user-mail-address-regexp savehist-mode scroll-all-mode mail-from-style mail-specify-envelope-from mail-self-blind mail-interactive send-mail-function mail-header-separator mail-archive-file-name mail-default-reply-to mail-alias-file mail-personal-alias-file mail-setup-hook mail-aliases mail-yank-prefix mail-indentation-spaces mail-citation-hook mail-citation-prefix-regexp mail-signature mail-signature-file mail-default-directory mail-default-headers mail-bury-selects-summary mail-send-nonascii mail-mailing-lists sendmail-coding-system default-sendmail-coding-system server-mode
+ (defun . xml-mode)
+ (defun . shell-script-mode)
+ shell-dumb-shell-regexp skeleton-filter-function
+ (defun . speedbar)
+ strokes-mode
+ (defun . t-mouse-mode)
+ gpm-mouse-mode table-cell-map-hook table-load-hook table-point-entered-cell-hook table-point-left-cell-hook tex-shell-file-name tex-directory tex-first-line-header-regexp tex-main-file tex-offer-save tex-run-command latex-run-command slitex-run-command tex-start-options tex-start-commands latex-block-names tex-bibtex-command tex-dvi-print-command tex-alt-dvi-print-command tex-dvi-view-command tex-show-queue-command tex-default-mode tex-open-quote tex-close-quote
+ (defun . TeX-mode)
+ (defun . plain-TeX-mode)
+ (defun . LaTeX-mode)
+ texinfo-open-quote texinfo-close-quote
+ (defun . thumbs)
+ display-time-day-and-date display-time-mode
+ (defun . subtract-time)
+ tpu-edt-mode
+ (defun . tpu-edt)
+ trace-buffer tramp-mode tramp-syntax tramp-file-name-regexp-unified tramp-file-name-regexp-separate tramp-file-name-regexp-url tramp-file-name-regexp tramp-root-regexp tramp-completion-file-name-regexp-unified tramp-completion-file-name-regexp-separate tramp-completion-file-name-regexp-url tramp-completion-file-name-regexp tramp-completion-file-name-handler-alist
+ (defun . tramp-run-real-handler)
+ (defun . tramp-completion-run-real-handler)
+ (defun . tramp-completion-file-name-handler)
+ (defun . tramp-register-file-name-handler)
+ (defun . tramp-register-completion-file-name-handler)
+ type-break-mode type-break-interval type-break-good-rest-interval type-break-good-break-interval type-break-keystroke-threshold url-handler-mode
+ (defun . url-http-file-readable-p)
+ url-https-default-port url-https-asynchronous-p
+ (defun . url-https-expand-file-name)
+ (defun . url-rlogin)
+ (defun . url-telnet)
+ (defun . url-tn3270)
+ url-debug
+ (defun . url-basepath)
+ vc-checkout-hook vc-checkin-hook vc-before-checkin-hook
+ (defun . vc-resolve-conflicts)
+ (defun . vc-revert-buffer)
+ (defun . vc-arch-registered)
+ vc-bzr-admin-dirname vc-bzr-admin-checkout-format-file
+ (defun . vc-bzr-registered)
+ (defun . vc-cvs-registered)
+ (defun . vc-git-registered)
+ (defun . vc-hg-registered)
+ vc-mtn-admin-dir vc-mtn-admin-format
+ (defun . vc-mtn-registered)
+ vc-rcs-master-templates
+ (defun . vc-rcs-registered)
+ vc-sccs-master-templates
+ (defun . vc-sccs-registered)
+ (defun . vc-sccs-search-project-dir)
+ (defun . vc-svn-registered)
+ view-remove-frame-by-deleting view-mode warning-prefix-function warning-series warning-fill-prefix warning-type-format
+ (defun . which-func-mode)
+ which-function-mode global-whitespace-mode global-whitespace-newline-mode widget-keymap winner-mode woman-locale xterm-mouse-mode
+ (provide . loaddefs))
+ ("/usr/share/emacs/23.0.93/lisp/startup.elc" command-line-processed initial-buffer-choice inhibit-startup-screen inhibit-splash-screen inhibit-startup-message startup-screen-inhibit-startup-screen inhibit-startup-echo-area-message inhibit-default-init inhibit-startup-buffer-menu command-switch-alist command-line-args-left argv command-line-functions command-line-default-directory command-line-x-option-alist command-line-ns-option-alist before-init-hook after-init-hook emacs-startup-hook term-setup-hook inhibit-startup-hooks keyboard-type window-setup-hook initial-major-mode init-file-user site-run-file mail-host-address user-mail-address auto-save-list-file-prefix emacs-quick-startup emacs-basic-display init-file-debug init-file-had-error normal-top-level-add-subdirs-inode-list debian-emacs-flavor no-blinking-cursor pure-space-overflow pure-space-overflow-message tutorial-directory
+ (defun . normal-top-level-add-subdirs-to-load-path)
+ (defun . normal-top-level-add-to-load-path)
+ (defun . normal-top-level)
+ (defun . precompute-menubar-bindings)
+ tty-long-option-alist tty-long-option-alist tool-bar-images-pixel-height tool-bar-originally-present handle-args-function-alist window-system-initialization-alist
+ (defun . tty-handle-args)
+ (defun . command-line)
+ initial-scratch-message fancy-startup-text fancy-about-text fancy-splash-image splash-screen-keymap
+ (defun . fancy-splash-insert)
+ (defun . fancy-splash-head)
+ (defun . fancy-startup-tail)
+ (defun . exit-splash-screen)
+ (defun . fancy-startup-screen)
+ (defun . fancy-about-screen)
+ (defun . fancy-splash-frame)
+ (defun . use-fancy-splash-screens-p)
+ (defun . normal-splash-screen)
+ (defun . normal-mouse-startup-screen)
+ (defun . normal-no-mouse-startup-screen)
+ (defun . normal-about-screen)
+ (defun . startup-echo-area-message)
+ (defun . display-startup-echo-area-message)
+ (defun . display-startup-screen)
+ (defun . display-about-screen)
+ (defun . about-emacs)
+ (defun . display-splash-screen)
+ (defun . command-line-1)
+ (defun . command-line-normalize-file-name))
+ ("/usr/share/emacs/23.0.93/lisp/button.elc"
+ (defface . button)
+ button-map button-buffer-map
+ (defun . button-category-symbol)
+ (defun . define-button-type)
+ (defun . button-type-put)
+ (defun . button-type-get)
+ (defun . button-type-subtype-p)
+ (defun . button-start)
+ (defun . button-end)
+ (defun . button-get)
+ (defun . button-put)
+ (defun . button-activate)
+ (defun . button-label)
+ (defun . button-type)
+ (defun . button-has-type-p)
+ (defun . make-button)
+ (defun . insert-button)
+ (defun . make-text-button)
+ (defun . insert-text-button)
+ (defun . button-at)
+ (defun . next-button)
+ (defun . previous-button)
+ (defun . push-button)
+ (defun . forward-button)
+ (defun . backward-button)
+ (provide . button))
+ ("/usr/share/emacs/23.0.93/lisp/minibuffer.elc"
+ (defun . completion-boundaries)
+ (defun . completion--some)
+ (defun . complete-with-action)
+ (defun . completion-table-dynamic)
+ (defun . lazy-completion-table)
+ (defun . completion-table-with-context)
+ (defun . completion-table-with-terminator)
+ (defun . completion-table-with-predicate)
+ (defun . completion-table-in-turn)
+ (defun . complete-in-turn)
+ (defun . dynamic-completion-table)
+ (defun . minibuffer-message)
+ (defun . minibuffer-completion-contents)
+ (defun . delete-minibuffer-contents)
+ completion-auto-help completion-styles-alist completion-styles
+ (defun . completion-try-completion)
+ (defun . completion-all-completions)
+ (defun . minibuffer--bitset)
+ (defun . completion--do-completion)
+ (defun . minibuffer-complete)
+ completion-all-sorted-completions
+ (defun . completion--flush-all-sorted-completions)
+ (defun . completion-all-sorted-completions)
+ (defun . minibuffer-force-complete)
+ minibuffer-confirm-exit-commands
+ (defun . minibuffer-complete-and-exit)
+ (defun . completion--try-word-completion)
+ (defun . minibuffer-complete-word)
+ (defun . completion--insert-strings)
+ completion-common-substring completion-setup-hook
+ (defface . completions-first-difference)
+ (defface . completions-common-part)
+ (defun . completion-hilit-commonality)
+ (defun . display-completion-list)
+ (defun . minibuffer-completion-help)
+ (defun . exit-minibuffer)
+ (defun . self-insert-and-exit)
+ minibuffer-local-must-match-filename-map
+ (defun . minibuffer--double-dollars)
+ (defun . completion--make-envvar-table)
+ completion--embedded-envvar-re completion--embedded-envvar-re
+ (defun . completion--embedded-envvar-table)
+ (defun . completion--file-name-table)
+ (defun . read-file-name-internal)
+ read-file-name-function read-file-name-predicate read-file-name-completion-ignore-case insert-default-directory
+ (defun . read-file-name)
+ (defun . internal-complete-buffer-except)
+ (defun . completion-emacs21-try-completion)
+ (defun . completion-emacs21-all-completions)
+ (defun . completion-emacs22-try-completion)
+ (defun . completion-emacs22-all-completions)
+ (defun . completion--merge-suffix)
+ (defun . completion-basic-try-completion)
+ (defun . completion-basic-all-completions)
+ completion-pcm--delim-wild-regex
+ (defun . completion-pcm--prepare-delim-re)
+ completion-pcm-word-delimiters
+ (defun . completion-pcm--pattern-trivial-p)
+ (defun . completion-pcm--string->pattern)
+ (defun . completion-pcm--pattern->regex)
+ (defun . completion-pcm--all-completions)
+ (defun . completion-pcm--hilit-commonality)
+ (defun . completion-pcm--find-all-completions)
+ (defun . completion-pcm-all-completions)
+ (defun . completion-pcm--merge-completions)
+ (defun . completion-pcm--pattern->string)
+ (defun . completion-pcm--filename-try-filter)
+ (defun . completion-pcm--merge-try)
+ (defun . completion-pcm-try-completion)
+ (provide . minibuffer))
+ ("/usr/share/emacs/23.0.93/lisp/faces.elc" face-name-history face-font-selection-order face-font-family-alternatives face-font-registry-alternatives
+ (defun . face-list)
+ (defun . make-face)
+ (defun . make-empty-face)
+ (defun . copy-face)
+ (defun . internal-find-face)
+ (defun . internal-get-face)
+ (defun . facep)
+ (defun . check-face)
+ (defun . face-id)
+ (defun . face-equal)
+ (defun . face-differs-from-default-p)
+ (defun . face-nontrivial-p)
+ face-x-resources
+ (defun . set-face-attribute-from-resource)
+ (defun . set-face-attributes-from-resources)
+ (defun . make-face-x-resource-internal)
+ (defun . face-name)
+ (defun . face-all-attributes)
+ (defun . face-attribute)
+ (defun . face-attribute-merged-with)
+ (defun . face-attribute-specified-or)
+ (defun . face-foreground)
+ (defun . face-background)
+ (defun . face-stipple)
+ (defun . face-background-pixmap)
+ (defun . face-underline-p)
+ (defun . face-inverse-video-p)
+ (defun . face-bold-p)
+ (defun . face-italic-p)
+ (defun . face-documentation)
+ (defun . set-face-documentation)
+ (defun . face-doc-string)
+ (defun . set-face-doc-string)
+ (defun . set-face-attribute)
+ (defun . make-face-bold)
+ (defun . make-face-unbold)
+ (defun . make-face-italic)
+ (defun . make-face-unitalic)
+ (defun . make-face-bold-italic)
+ (defun . set-face-font)
+ (defun . set-face-background)
+ (defun . set-face-foreground)
+ (defun . set-face-stipple)
+ (defun . set-face-underline-p)
+ (defun . set-face-underline)
+ (defun . set-face-inverse-video-p)
+ (defun . set-face-bold-p)
+ (defun . set-face-italic-p)
+ (defun . set-face-background-pixmap)
+ (defun . invert-face)
+ (defun . read-face-name)
+ (defun . face-valid-attribute-values)
+ face-attribute-name-alist
+ (defun . face-descriptive-attribute-name)
+ (defun . face-read-string)
+ (defun . face-read-integer)
+ (defun . read-face-attribute)
+ (defun . read-face-font)
+ (defun . read-all-face-attributes)
+ (defun . modify-face)
+ (defun . read-face-and-attribute)
+ list-faces-sample-text
+ (defun . list-faces-display)
+ (defun . describe-face)
+ (defun . face-attr-construct)
+ (defun . face-spec-set-match-display)
+ (defun . face-spec-choose)
+ (defun . face-spec-reset-face)
+ (defun . face-spec-set)
+ (defun . face-spec-recalc)
+ (defun . face-spec-set-2)
+ (defun . face-attr-match-p)
+ (defun . face-spec-match-p)
+ (defun . face-default-spec)
+ (defun . face-user-default-spec)
+ (defun . defined-colors)
+ (defun . x-defined-colors)
+ (defun . color-defined-p)
+ (defun . x-color-defined-p)
+ (defun . color-values)
+ (defun . x-color-values)
+ (defun . display-color-p)
+ (defun . x-display-color-p)
+ (defun . display-grayscale-p)
+ (defun . read-color)
+ (defun . face-at-point)
+ (defun . foreground-color-at-point)
+ (defun . background-color-at-point)
+ frame-background-mode inhibit-frame-set-background-mode
+ (defun . frame-set-background-mode)
+ (defun . x-handle-named-frame-geometry)
+ (defun . x-handle-reverse-video)
+ (defun . x-create-frame-with-faces)
+ (defun . face-set-after-frame-default)
+ (defun . tty-handle-reverse-video)
+ (defun . tty-create-frame-with-faces)
+ (defun . tty-find-type)
+ (defun . tty-run-terminal-initialization)
+ (defun . tty-set-up-initial-frame-faces)
+ (defun . frame-update-faces)
+ (defun . frame-update-face-colors)
+ (defface . default)
+ (defface . bold)
+ (defface . italic)
+ (defface . bold-italic)
+ (defface . underline)
+ (defface . fixed-pitch)
+ (defface . variable-pitch)
+ (defface . shadow)
+ (defface . link)
+ (defface . link-visited)
+ (defface . highlight)
+ (defface . region)
+ (defface . secondary-selection)
+ (defface . trailing-whitespace)
+ (defface . escape-glyph)
+ (defface . nobreak-space)
+ (defface . mode-line)
+ (defface . mode-line-inactive)
+ (defface . mode-line-highlight)
+ (defface . mode-line-emphasis)
+ (defface . mode-line-buffer-id)
+ (defface . header-line)
+ (defface . vertical-border)
+ (defface . minibuffer-prompt)
+ (defface . fringe)
+ (defface . scroll-bar)
+ (defface . border)
+ (defface . cursor)
+ (defface . mouse)
+ (defface . tool-bar)
+ (defface . menu)
+ x-font-regexp x-font-regexp-head x-font-regexp-weight x-font-regexp-slant x-font-regexp-weight-subnum x-font-regexp-weight-subnum x-font-regexp-slant-subnum x-font-regexp-slant-subnum x-font-regexp-swidth-subnum x-font-regexp-swidth-subnum x-font-regexp-adstyle-subnum x-font-regexp-adstyle-subnum
+ (defun . x-resolve-font-name)
+ (defun . x-frob-font-weight)
+ (defun . x-frob-font-slant)
+ (defun . internal-frob-font-weight)
+ (defun . internal-frob-font-slant)
+ (defun . x-make-font-bold)
+ (defun . x-make-font-demibold)
+ (defun . x-make-font-unbold)
+ (defun . x-make-font-italic)
+ (defun . x-make-font-oblique)
+ (defun . x-make-font-unitalic)
+ (defun . x-make-font-bold-italic)
+ (provide . faces))
+ ("/usr/share/emacs/23.0.93/lisp/cus-face.elc"
+ (defun . custom-facep)
+ (defun . custom-declare-face)
+ custom-face-attributes
+ (defun . custom-face-attributes-get)
+ (defun . custom-set-faces)
+ (defun . custom-theme-set-faces)
+ (defun . custom-theme-reset-faces)
+ (defun . custom-reset-faces)
+ (provide . cus-face))
+ ("/usr/share/emacs/23.0.93/lisp/files.elc" delete-auto-save-files directory-abbrev-alist make-backup-files backup-inhibited backup-by-copying backup-by-copying-when-linked backup-by-copying-when-mismatch backup-by-copying-when-privileged-mismatch backup-enable-predicate buffer-offer-save find-file-existing-other-name find-file-visit-truename revert-without-query buffer-file-number buffer-file-numbers-unique buffer-file-read-only temporary-file-directory small-temporary-file-directory null-device file-name-invalid-regexp file-precious-flag break-hardlink-on-save version-control dired-kept-versions delete-old-versions kept-old-versions kept-new-versions require-final-newline mode-require-final-newline auto-save-default auto-save-file-name-transforms save-abbrevs find-file-run-dired find-directory-functions find-file-not-found-functions find-file-not-found-hooks find-file-hooks find-file-hook write-file-functions write-file-hooks local-write-file-hooks write-contents-functions write-contents-hooks enable-local-variables local-enable-local-variables enable-local-eval view-read-only file-name-history
+ (defun . ange-ftp-completion-hook-function)
+ (defun . convert-standard-filename)
+ (defun . read-directory-name)
+ (defun . pwd)
+ cd-path
+ (defun . parse-colon-path)
+ (defun . cd-absolute)
+ (defun . cd)
+ (defun . load-file)
+ (defun . locate-file)
+ (defun . locate-file-completion-table)
+ (defun . locate-file-completion)
+ locate-dominating-stop-dir-regexp
+ (defun . locate-dominating-file)
+ (defun . executable-find)
+ (defun . load-library)
+ (defun . file-remote-p)
+ (defun . file-local-copy)
+ (defun . file-truename)
+ (defun . file-chase-links)
+ (defun . make-temp-file)
+ (defun . recode-file-name)
+ confirm-nonexistent-file-or-buffer
+ (defun . confirm-nonexistent-file-or-buffer)
+ (defun . read-buffer-to-switch)
+ (defun . switch-to-buffer-other-window)
+ (defun . switch-to-buffer-other-frame)
+ (defun . display-buffer-other-frame)
+ find-file-default
+ (defun . minibuffer-with-setup-hook)
+ (defun . find-file-read-args)
+ (defun . find-file)
+ (defun . find-file-other-window)
+ (defun . find-file-other-frame)
+ (defun . find-file-existing)
+ (defun . find-file-read-only)
+ (defun . find-file-read-only-other-window)
+ (defun . find-file-read-only-other-frame)
+ (defun . find-alternate-file-other-window)
+ (defun . find-alternate-file)
+ (defun . create-file-buffer)
+ (defun . generate-new-buffer)
+ automount-dir-prefix abbreviated-home-dir
+ (defun . abbreviate-file-name)
+ find-file-not-true-dirname-list
+ (defun . find-buffer-visiting)
+ find-file-wildcards find-file-suppress-same-file-warnings large-file-warning-threshold
+ (defun . abort-if-file-too-large)
+ (defun . find-file-noselect)
+ (defun . find-file-noselect-1)
+ (defun . insert-file-contents-literally)
+ (defun . insert-file-1)
+ (defun . insert-file-literally)
+ find-file-literally
+ (defun . find-file-literally)
+ after-find-file-from-revert-buffer
+ (defun . after-find-file)
+ (defun . report-errors)
+ (defun . normal-mode)
+ auto-mode-case-fold auto-mode-alist
+ (defun . conf-mode-maybe)
+ interpreter-mode-alist inhibit-first-line-modes-regexps inhibit-first-line-modes-suffixes auto-mode-interpreter-regexp magic-mode-alist magic-fallback-mode-alist magic-mode-regexp-match-limit
+ (defun . set-auto-mode)
+ (defun . set-auto-mode-0)
+ (defun . set-auto-mode-1)
+ ignored-local-variables hack-local-variables-hook safe-local-variable-values safe-local-eval-forms file-local-variables-alist before-hack-local-variables-hook
+ (defun . hack-local-variables-confirm)
+ (defun . hack-local-variables-prop-line)
+ (defun . hack-local-variables-filter)
+ (defun . hack-local-variables)
+ (defun . safe-local-variable-p)
+ (defun . risky-local-variable-p)
+ (defun . hack-one-local-variable-quotep)
+ (defun . hack-one-local-variable-constantp)
+ (defun . hack-one-local-variable-eval-safep)
+ (defun . hack-one-local-variable)
+ dir-locals-class-alist dir-locals-directory-cache
+ (defun . dir-locals-get-class-variables)
+ (defun . dir-locals-collect-mode-variables)
+ (defun . dir-locals-collect-variables)
+ (defun . dir-locals-set-directory-class)
+ (defun . dir-locals-set-class-variables)
+ dir-locals-file
+ (defun . dir-locals-find-file)
+ (defun . dir-locals-read-from-file)
+ (defun . hack-dir-local-variables)
+ change-major-mode-with-file-name
+ (defun . set-visited-file-name)
+ (defun . write-file)
+ (defun . backup-buffer)
+ (defun . backup-buffer-copy)
+ (defun . file-name-sans-versions)
+ (defun . file-ownership-preserved-p)
+ (defun . file-name-sans-extension)
+ (defun . file-name-extension)
+ make-backup-file-name-function backup-directory-alist
+ (defun . normal-backup-enable-predicate)
+ (defun . make-backup-file-name)
+ (defun . make-backup-file-name-1)
+ (defun . backup-file-name-p)
+ (defun . backup-extract-version)
+ (defun . find-backup-file-name)
+ (defun . file-nlinks)
+ (defun . file-relative-name)
+ (defun . save-buffer)
+ (defun . delete-auto-save-file-if-necessary)
+ auto-save-hook before-save-hook after-save-hook save-buffer-coding-system
+ (defun . basic-save-buffer)
+ (defun . basic-save-buffer-1)
+ (defun . basic-save-buffer-2)
+ (defun . diff-buffer-with-file)
+ save-some-buffers-action-alist buffer-save-without-query
+ (defun . save-some-buffers)
+ (defun . not-modified)
+ (defun . toggle-read-only)
+ (defun . insert-file)
+ (defun . append-to-file)
+ (defun . file-newest-backup)
+ (defun . rename-uniquely)
+ (defun . make-directory)
+ revert-buffer-function revert-buffer-insert-file-contents-function buffer-stale-function before-revert-hook after-revert-hook
+ (defun . revert-buffer)
+ (defun . recover-this-file)
+ (defun . recover-file)
+ (defun . recover-session)
+ (defun . recover-session-finish)
+ (defun . kill-buffer-ask)
+ (defun . kill-some-buffers)
+ (defun . kill-matching-buffers)
+ (defun . auto-save-mode)
+ (defun . rename-auto-save-file)
+ (defun . make-auto-save-file-name)
+ (defun . auto-save-file-name-p)
+ (defun . wildcard-to-regexp)
+ list-directory-brief-switches list-directory-verbose-switches
+ (defun . file-expand-wildcards)
+ (defun . list-directory)
+ (defun . shell-quote-wildcard-pattern)
+ insert-directory-program directory-free-space-program directory-free-space-args
+ (defun . get-free-disk-space)
+ directory-listing-before-filename-regexp insert-directory-ls-version
+ (defun . insert-directory)
+ (defun . insert-directory-adj-pos)
+ (defun . insert-directory-safely)
+ kill-emacs-query-functions confirm-kill-emacs
+ (defun . save-buffers-kill-emacs)
+ (defun . save-buffers-kill-terminal)
+ (defun . file-name-non-special)
+ (defun . file-modes-char-to-who)
+ (defun . file-modes-char-to-right)
+ (defun . file-modes-rights-to-number)
+ (defun . file-modes-symbolic-to-number)
+ (defun . read-file-modes)
+ trash-directory
+ (defun . move-file-to-trash))
+ ("/usr/share/emacs/23.0.93/lisp/bindings.elc"
+ (defun . make-mode-line-mouse-map)
+ (defun . mode-line-toggle-read-only)
+ (defun . mode-line-toggle-modified)
+ (defun . mode-line-widen)
+ (defun . mode-line-abbrev-mode)
+ (defun . mode-line-auto-fill-mode)
+ mode-line-input-method-map mode-line-coding-system-map
+ (defun . mode-line-change-eol)
+ mode-line-eol-desc-cache
+ (defun . mode-line-eol-desc)
+ mode-line-client mode-line-mule-info
+ (defun . mode-line-frame-control)
+ mode-line-frame-identification mode-line-process mode-line-modified mode-line-remote mode-line-position mode-line-modes mode-line-mode-menu mode-line-major-mode-keymap mode-line-minor-mode-keymap mode-line-column-line-number-mode-map mode-line-buffer-identification-keymap
+ (defun . propertized-buffer-identification)
+ mode-line-buffer-identification
+ (defun . unbury-buffer)
+ (defun . mode-line-unbury-buffer)
+ (defun . mode-line-bury-buffer)
+ (defun . mode-line-other-buffer)
+ (defun . mode-line-next-buffer)
+ (defun . mode-line-previous-buffer)
+ (defun . bound-and-true-p)
+ (defun . mode-line-minor-mode-help)
+ minor-mode-alist
+ (provide . base64)
+ (provide . md5)
+ (provide . overlay)
+ (provide . text-properties)
+ (defun . complete-symbol)
+ narrow-map goto-map search-map
+ (defun . mode-specific-command-prefix)
+ mode-specific-map ctl-x-r-map abbrev-map)
+ ("/usr/share/emacs/23.0.93/lisp/format.elc" format-alist
+ (defun . format-encode-run-method)
+ (defun . format-decode-run-method)
+ (defun . format-annotate-function)
+ (defun . format-decode)
+ (defun . format-decode-buffer)
+ (defun . format-decode-region)
+ (defun . format-encode-buffer)
+ (defun . format-encode-region)
+ (defun . format-write-file)
+ (defun . format-find-file)
+ (defun . format-insert-file)
+ (defun . format-read)
+ (defun . format-replace-strings)
+ (defun . format-delq-cons)
+ (defun . format-make-relatively-unique)
+ (defun . format-common-tail)
+ (defun . format-proper-list-p)
+ (defun . format-reorder)
+ (defun . format-deannotate-region)
+ (defun . format-subtract-regions)
+ (defun . format-property-increment-region)
+ (defun . format-insert-annotations)
+ (defun . format-annotate-value)
+ (defun . format-annotate-region)
+ (defun . format-annotate-location)
+ (defun . format-annotate-single-property-change)
+ (defun . format-annotate-atomic-property-change)
+ (provide . format))
+ ("/usr/share/emacs/23.0.93/lisp/env.elc" read-envvar-name-history
+ (defun . read-envvar-name)
+ setenv-history
+ (defun . substitute-env-vars)
+ (defun . setenv-internal)
+ (defun . setenv)
+ (defun . getenv)
+ (provide . env))
+ ("/usr/share/emacs/23.0.93/lisp/international/mule-conf.el"
+ (defun . define-iso-single-byte-charset)
+ (provide . code-pages))
+ ("/usr/share/emacs/23.0.93/lisp/international/mule.elc" mule-version mule-version-date private-char-area-1-min private-char-area-1-max private-char-area-2-min private-char-area-2-max emacs-mule-charset-table
+ (defun . convert-define-charset-argument)
+ (defun . define-charset)
+ (defun . load-with-code-conversion)
+ (defun . charset-info)
+ (defun . charset-id)
+ (defun . charset-bytes)
+ (defun . get-charset-property)
+ (defun . put-charset-property)
+ (defun . charset-description)
+ (defun . charset-dimension)
+ (defun . charset-chars)
+ (defun . charset-iso-final-char)
+ (defun . charset-short-name)
+ (defun . charset-long-name)
+ (defun . charset-list)
+ (defun . char-valid-p)
+ (defun . generic-char-p)
+ (defun . make-char-internal)
+ ascii-case-table coding-system-iso-2022-flags
+ (defun . define-coding-system)
+ (defun . coding-system-doc-string)
+ (defun . coding-system-mnemonic)
+ (defun . coding-system-type)
+ (defun . coding-system-charset-list)
+ (defun . coding-system-category)
+ (defun . coding-system-get)
+ (defun . coding-system-eol-type-mnemonic)
+ (defun . coding-system-lessp)
+ (defun . coding-system-equal)
+ (defun . add-to-coding-system-list)
+ (defun . coding-system-list)
+ char-coding-system-table
+ (defun . transform-make-coding-system-args)
+ (defun . make-coding-system)
+ (defun . merge-coding-systems)
+ (defun . autoload-coding-system)
+ buffer-file-coding-system-explicit
+ (defun . set-buffer-file-coding-system)
+ (defun . revert-buffer-with-coding-system)
+ (defun . set-file-name-coding-system)
+ default-terminal-coding-system
+ (defun . set-terminal-coding-system)
+ default-keyboard-coding-system
+ (defun . set-keyboard-coding-system)
+ keyboard-coding-system
+ (defun . set-buffer-process-coding-system)
+ (defun . set-clipboard-coding-system)
+ (defun . set-selection-coding-system)
+ last-next-selection-coding-system
+ (defun . set-next-selection-coding-system)
+ (defun . set-coding-priority)
+ ctext-non-standard-encodings-alist ctext-non-standard-encodings ctext-non-standard-encodings-regexp
+ (defun . ctext-post-read-conversion)
+ (defun . ctext-non-standard-encodings-table)
+ (defun . ctext-pre-write-conversion)
+ auto-coding-alist auto-coding-regexp-alist
+ (defun . auto-coding-regexp-alist-lookup)
+ auto-coding-functions set-auto-coding-for-load
+ (defun . auto-coding-alist-lookup)
+ (defun . find-auto-coding)
+ (defun . set-auto-coding)
+ (defun . after-insert-file-set-coding)
+ (defun . find-new-buffer-file-coding-system)
+ (defun . modify-coding-system-alist)
+ (defun . decode-coding-inserted-region)
+ (defun . recode-region)
+ (defun . make-translation-table)
+ (defun . make-translation-table-from-vector)
+ (defun . make-translation-table-from-alist)
+ (defun . define-translation-table)
+ (defun . translate-region)
+ (defun . with-category-table)
+ (defun . define-translation-hash-table)
+ (defun . sgml-xml-auto-coding-function)
+ (defun . sgml-html-meta-auto-coding-function)
+ (defun . xml-find-file-coding-system)
+ (provide . mule))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/map-ynp.elc"
+ (defun . map-y-or-n-p))
+ ("/usr/share/emacs/23.0.93/lisp/custom.elc"
+ (require . widget)
+ custom-define-hook custom-dont-initialize custom-current-group-alist
+ (defun . custom-initialize-default)
+ (defun . custom-initialize-set)
+ (defun . custom-initialize-safe-set)
+ (defun . custom-initialize-safe-default)
+ (defun . custom-initialize-reset)
+ (defun . custom-initialize-changed)
+ (defun . custom-declare-variable)
+ (defun . defcustom)
+ (defun . defface)
+ (defun . custom-current-group)
+ (defun . custom-declare-group)
+ (defun . defgroup)
+ (defun . custom-add-to-group)
+ (defun . custom-group-of-mode)
+ (defun . custom-handle-all-keywords)
+ (defun . custom-handle-keyword)
+ (defun . custom-add-dependencies)
+ (defun . custom-add-option)
+ (defun . custom-add-frequent-value)
+ (defun . custom-add-link)
+ (defun . custom-add-version)
+ (defun . custom-add-package-version)
+ (defun . custom-add-load)
+ (defun . custom-autoload)
+ (defun . custom-variable-p)
+ (defun . custom-note-var-changed)
+ custom-load-recursion
+ (defun . custom-load-symbol)
+ custom-local-buffer
+ (defun . custom-set-default)
+ (defun . custom-set-minor-mode)
+ (defun . custom-quote)
+ (defun . customize-mark-to-save)
+ (defun . customize-mark-as-set)
+ (defun . custom-reevaluate-setting)
+ custom-known-themes
+ (defun . custom-theme-p)
+ (defun . custom-check-theme)
+ (defun . custom-push-theme)
+ (defun . custom-set-variables)
+ (defun . custom-theme-set-variables)
+ (defun . deftheme)
+ (defun . custom-declare-theme)
+ (defun . custom-make-theme-feature)
+ custom-theme-directory
+ (defun . provide-theme)
+ (defun . load-theme)
+ custom-enabling-themes
+ (defun . enable-theme)
+ custom-enabled-themes
+ (defun . custom-theme-enabled-p)
+ (defun . disable-theme)
+ (defun . custom-variable-theme-value)
+ (defun . custom-theme-recalc-variable)
+ (defun . custom-theme-recalc-face)
+ (defun . custom-theme-reset-variables)
+ (defun . custom-reset-variables)
+ read-quoted-char-radix
+ (provide . custom))
+ ("/usr/share/emacs/23.0.93/lisp/widget.elc"
+ (defun . define-widget-keywords)
+ (defun . define-widget)
+ (defun . widget-plist-member)
+ (provide . widget))
+ ("/usr/share/emacs/23.0.93/lisp/version.el" emacs-copyright emacs-version emacs-major-version emacs-minor-version emacs-build-time emacs-build-system
+ (defun . emacs-version)
+ (defun . version))
+ ("/usr/share/emacs/23.0.93/lisp/subr.elc" custom-declare-variable-list
+ (defun . custom-declare-variable-early)
+ (defun . declare-function)
+ (defun . not)
+ (defun . noreturn)
+ (defun . 1value)
+ (defun . def-edebug-spec)
+ (defun . lambda)
+ (defun . push)
+ (defun . pop)
+ (defun . when)
+ (defun . unless)
+ --dolist-tail--
+ (defun . dolist)
+ --dotimes-limit--
+ (defun . dotimes)
+ (defun . declare)
+ (defun . ignore-errors)
+ (defun . ignore)
+ (defun . error)
+ (defun . frame-configuration-p)
+ (defun . functionp)
+ (defun . caar)
+ (defun . cadr)
+ (defun . cdar)
+ (defun . cddr)
+ (defun . last)
+ (defun . butlast)
+ (defun . nbutlast)
+ (defun . delete-dups)
+ (defun . number-sequence)
+ (defun . copy-tree)
+ (defun . assoc-default)
+ (defun . assoc-ignore-case)
+ (defun . assoc-ignore-representation)
+ (defun . member-ignore-case)
+ (defun . assq-delete-all)
+ (defun . rassq-delete-all)
+ (defun . remove)
+ (defun . remq)
+ (defun . kbd)
+ (defun . undefined)
+ (defun . suppress-keymap)
+ (defun . define-key-after)
+ (defun . map-keymap-sorted)
+ (defun . keymap-canonicalize)
+ (defun . keyboard-translate)
+ (defun . global-set-key)
+ (defun . local-set-key)
+ (defun . global-unset-key)
+ (defun . local-unset-key)
+ key-substitution-in-progress
+ (defun . substitute-key-definition)
+ (defun . substitute-key-definition-key)
+ global-map esc-map ctl-x-map ctl-x-4-map
+ (defun . ctl-x-4-prefix)
+ ctl-x-5-map
+ (defun . ctl-x-5-prefix)
+ listify-key-sequence-1 listify-key-sequence-1
+ (defun . listify-key-sequence)
+ (defun . eventp)
+ (defun . event-modifiers)
+ (defun . event-basic-type)
+ (defun . mouse-movement-p)
+ (defun . mouse-event-p)
+ (defun . event-start)
+ (defun . event-end)
+ (defun . event-click-count)
+ (defun . posn-window)
+ (defun . posn-area)
+ (defun . posn-point)
+ (defun . posn-set-point)
+ (defun . posn-x-y)
+ (defun . posn-col-row)
+ (defun . posn-actual-col-row)
+ (defun . posn-timestamp)
+ (defun . posn-string)
+ (defun . posn-image)
+ (defun . posn-object)
+ (defun . posn-object-x-y)
+ (defun . posn-object-width-height)
+ (defun . window-dot)
+ (defun . set-window-dot)
+ (defun . read-input)
+ (defun . show-buffer)
+ (defun . eval-current-buffer)
+ (defun . string-to-int)
+ (defun . insert-string)
+ (defun . makehash)
+ (defun . baud-rate)
+ (defun . focus-frame)
+ (defun . unfocus-frame)
+ executing-macro x-lost-selection-hooks x-sent-selection-hooks messages-buffer-max-lines last-input-char last-command-char
+ (defun . send-string)
+ (defun . send-region)
+ (defun . string=)
+ (defun . string<)
+ (defun . move-marker)
+ (defun . rplaca)
+ (defun . rplacd)
+ (defun . beep)
+ (defun . indent-to-column)
+ (defun . backward-delete-char)
+ (defun . search-forward-regexp)
+ (defun . search-backward-regexp)
+ (defun . int-to-string)
+ (defun . store-match-data)
+ (defun . chmod)
+ (defun . mkdir)
+ (defun . point-at-eol)
+ (defun . point-at-bol)
+ (defun . user-original-login-name)
+ (defun . make-local-hook)
+ (defun . add-hook)
+ (defun . remove-hook)
+ (defun . add-to-list)
+ (defun . add-to-ordered-list)
+ (defun . add-to-history)
+ delay-mode-hooks delayed-mode-hooks after-change-major-mode-hook
+ (defun . run-mode-hooks)
+ (defun . delay-mode-hooks)
+ (defun . derived-mode-p)
+ minor-mode-list
+ (defun . add-minor-mode)
+ (defun . symbol-file)
+ (defun . locate-library)
+ (defun . eval-at-startup)
+ (defun . load-history-regexp)
+ (defun . load-history-filename-element)
+ (defun . eval-after-load)
+ (defun . do-after-load-evaluation)
+ (defun . eval-next-after-load)
+ (defun . process-lines)
+ (defun . open-network-stream)
+ (defun . process-kill-without-query)
+ (defun . process-get)
+ (defun . process-put)
+ read-quoted-char-radix
+ (defun . read-quoted-char)
+ (defun . read-passwd)
+ (defun . read-number)
+ (defun . sit-for)
+ (defun . atomic-change-group)
+ (defun . prepare-change-group)
+ (defun . activate-change-group)
+ (defun . accept-change-group)
+ (defun . cancel-change-group)
+ (defun . redraw-modeline)
+ (defun . force-mode-line-update)
+ (defun . momentary-string-display)
+ (defun . copy-overlay)
+ (defun . remove-overlays)
+ suspend-hook suspend-resume-hook temp-buffer-show-hook temp-buffer-setup-hook buffer-file-type user-emacs-directory
+ (defun . locate-user-emacs-file)
+ (defun . find-tag-default)
+ (defun . play-sound)
+ (defun . shell-quote-argument)
+ (defun . string-or-null-p)
+ (defun . booleanp)
+ (defun . field-at-pos)
+ (defun . remove-yank-excluded-properties)
+ (defun . insert-for-yank)
+ (defun . insert-for-yank-1)
+ (defun . insert-buffer-substring-no-properties)
+ (defun . insert-buffer-substring-as-yank)
+ (defun . start-process-shell-command)
+ (defun . start-file-process-shell-command)
+ (defun . call-process-shell-command)
+ (defun . process-file-shell-command)
+ (defun . with-current-buffer)
+ (defun . with-selected-window)
+ (defun . with-selected-frame)
+ (defun . with-temp-file)
+ (defun . with-temp-message)
+ (defun . with-temp-buffer)
+ (defun . with-output-to-string)
+ (defun . with-local-quit)
+ (defun . while-no-input)
+ (defun . condition-case-no-debug)
+ (defun . with-demoted-errors)
+ (defun . combine-after-change-calls)
+ (defun . with-case-table)
+ (defun . save-match-data)
+ (defun . match-string)
+ (defun . match-string-no-properties)
+ (defun . match-substitute-replacement)
+ (defun . looking-back)
+ (defun . looking-at-p)
+ (defun . string-match-p)
+ (defun . subregexp-context-p)
+ split-string-default-separators
+ (defun . split-string)
+ (defun . combine-and-quote-strings)
+ (defun . split-string-and-unquote)
+ (defun . subst-char-in-string)
+ (defun . replace-regexp-in-string)
+ (defun . add-to-invisibility-spec)
+ (defun . remove-from-invisibility-spec)
+ (defun . with-syntax-table)
+ (defun . make-syntax-table)
+ (defun . syntax-after)
+ (defun . syntax-class)
+ (defun . text-clone-maintain)
+ (defun . text-clone-create)
+ (defun . define-mail-user-agent)
+ (defun . progress-reporter-update)
+ (defun . make-progress-reporter)
+ (defun . progress-reporter-force-update)
+ (defun . progress-reporter-do-update)
+ (defun . progress-reporter-done)
+ (defun . dotimes-with-progress-reporter)
+ version-separator version-regexp-alist
+ (defun . version-to-list)
+ (defun . version-list-<)
+ (defun . version-list-=)
+ (defun . version-list-<=)
+ (defun . version-list-not-zero)
+ (defun . version<)
+ (defun . version<=)
+ (defun . version=))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/backquote.elc"
+ (provide . backquote)
+ (defun . backquote-list*-function)
+ (defun . backquote-list*-macro)
+ (defun . backquote-list*)
+ backquote-backquote-symbol backquote-unquote-symbol backquote-splice-symbol
+ (defun . backquote)
+ (defun . \`)
+ (defun . backquote-delay-process)
+ (defun . backquote-process)
+ (defun . backquote-listify))
+ ("/usr/share/emacs/23.0.93/lisp/emacs-lisp/byte-run.elc"
+ (defun . macro-declaration-function)
+ (defun . defsubst)
+ (defun . make-obsolete)
+ (defun . define-obsolete-function-alias)
+ (defun . make-obsolete-variable)
+ (defun . define-obsolete-variable-alias)
+ (defun . dont-compile)
+ (defun . eval-when-compile)
+ (defun . eval-and-compile)
+ (defun . with-no-warnings)))
diff --git a/emacs.d/nxhtml/tests/in/bug370417.php b/emacs.d/nxhtml/tests/in/bug370417.php
new file mode 100644
index 0000000..b73534d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug370417.php
@@ -0,0 +1,10 @@
+<html>
+ <body>
+ <p>
+ <?php
+ echo "foo";
+echo "bar";
+ ?>
+ </p>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/bug381979-2-bad-traceb.txt b/emacs.d/nxhtml/tests/in/bug381979-2-bad-traceb.txt
new file mode 100644
index 0000000..514b00a
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug381979-2-bad-traceb.txt
@@ -0,0 +1,24 @@
+Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
+ <(1 nil)
+ (and mumamo-last-new-chunk first-check-from (< first-check-from (overlay-end mumamo-last-new-chunk)))
+ (if (and mumamo-last-new-chunk first-check-from (< first-check-from ...)) (progn (setq mumamo-last-new-chunk ...)))
+ (when (and mumamo-last-new-chunk first-check-from (< first-check-from ...)) (setq mumamo-last-new-chunk (overlay-get mumamo-last-new-chunk ...)))
+ (progn (setq mumamo-last-new-chunk (overlay-get new-chunk-at-change-min ...)) (when (and mumamo-last-new-chunk first-check-from ...) (setq mumamo-last-new-chunk ...)))
+ (if new-chunk-at-change-min (progn (setq mumamo-last-new-chunk ...) (when ... ...)))
+ (when new-chunk-at-change-min (setq mumamo-last-new-chunk (overlay-get new-chunk-at-change-min ...)) (when (and mumamo-last-new-chunk first-check-from ...) (setq mumamo-last-new-chunk ...)))
+ (progn (when new-chunk-at-change-min (setq mumamo-last-new-chunk ...) (when ... ...)))
+ (if (mumamo-make-new-chunks) (progn (when new-chunk-at-change-min ... ...)))
+ (when (mumamo-make-new-chunks) (when new-chunk-at-change-min (setq mumamo-last-new-chunk ...) (when ... ...)))
+ (progn (when (mumamo-make-new-chunks) (when new-chunk-at-change-min ... ...)) (setq mumamo-last-chunk-change-pos nil))
+ (if mumamo-last-chunk-change-pos (progn (when ... ...) (setq mumamo-last-chunk-change-pos nil)))
+ (when mumamo-last-chunk-change-pos (when (mumamo-make-new-chunks) (when new-chunk-at-change-min ... ...)) (setq mumamo-last-chunk-change-pos nil))
+ (let* ((change-min ...) (change-max ...) (new-chunk-at-change-min ...) (new-chunk-at-change-min-start ...) (this-new-syntax-min-max ...) (this-new-syntax-min ...) (in-new-min-border ...) (here ...) (first-check-from ...)) (when mumamo-last-chunk-change-pos (when ... ...) (setq mumamo-last-chunk-change-pos nil)) (let* (... ... ... ... narpos this-new-values this-new-chunk prev-new-chunk first-change-pos interrupted ... ... ... ... ...) (when ... ...) (unless this-new-chunk ...) (setq mumamo-find-chunks-level ...) (when this-new-chunk ... ...) (when end-param ...)))
+ (save-restriction (widen) (let* (... ... ... ... ... ... ... ... ...) (when mumamo-last-chunk-change-pos ... ...) (let* ... ... ... ... ... ...)))
+ mumamo-find-chunks(1 "mumamo-set-major-post-command")
+ (let* ((ovl ...) (major ...) (in-pre-hook ...)) (if (not major) (lwarn ... :error "major=%s" major) (unless ... ...)))
+ mumamo-set-major-post-command()
+ (if font-lock-mode (mumamo-set-major-post-command))
+ mumamo-post-command-1()
+ eval((mumamo-post-command-1))
+ eval-expression((mumamo-post-command-1) nil)
+ call-interactively(eval-expression nil nil)
diff --git a/emacs.d/nxhtml/tests/in/bug381979-2.php b/emacs.d/nxhtml/tests/in/bug381979-2.php
new file mode 100644
index 0000000..fc543c5
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug381979-2.php
@@ -0,0 +1,6 @@
+<?php
+$a = array(
+ 'foo' => 'bar',
+ 'gaz' => 'gazonk',
+);
+?> \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/bug381979-svnlib.inc b/emacs.d/nxhtml/tests/in/bug381979-svnlib.inc
new file mode 100644
index 0000000..6fc755b
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug381979-svnlib.inc
@@ -0,0 +1,744 @@
+<?php
+// $Id$
+/**
+ * @file
+ * A few generic functions for interfacing with Subversion via command line.
+ * The API of these functions has been inspired by the SVN PECL extension
+ * (http://www.php.net/manual/en/ref.svn.php), but works differently in places.
+ * On the one hand, this is due to the incompleteness of the functions in here,
+ * and on the other hand there are a few artificial restrictions and
+ * complications in the PECL extension's API that we can really do without.
+ *
+ * @note
+ * These functions can be run *without* Drupal.
+ *
+ * Copyright 2008 by Jakob Petsovits ("jpetso", http://drupal.org/user/56020)
+ * Copyright 2006-2008 by Gavin Mogan ("halkeye", http://drupal.org/user/56779)
+ */
+
+// file_directory_temp() is normally provided by Drupal, but as this file is
+// supposed to be independent from Drupal code, here's a fallback definition.
+if (!function_exists('file_directory_temp')) {
+ /**
+ * Determine the default temporary directory.
+ *
+ * @return A string containing a temp directory.
+ */
+ function file_directory_temp() {
+ return sys_get_temp_dir();
+ }
+}
+
+/**
+ * If subsequent function calls from this file act on a private repository
+ * that requires authentication, this function will store username and password
+ * for the duration of the current process (in a static variable, that is).
+ * Other functions in this file make use of this login information.
+ */
+function svnlib_set_authentication_info($username, $password) {
+ _svnlib_authentication_info(
+ array('username' => $username, 'password' => $password)
+ );
+}
+
+/**
+ * Unset any username and password that was previously passed
+ * to subversion_set_authentication_info(), so that subsequent repository
+ * access will happen anonymously again.
+ */
+function svnlib_unset_authentication_info() {
+ _svnlib_authentication_info(FALSE);
+}
+
+/**
+ * Append the option for our custom config dir to a $cmd array,
+ * and also username and password if those have been set before.
+ */
+function _svnlib_add_common_options(&$cmd) {
+ $auth_info = _svnlib_authentication_info();
+ if (isset($auth_info)) {
+ $cmd = array_merge($cmd, array(
+ '--username', escapeshellarg($auth_info['username']),
+ '--password', escapeshellarg($auth_info['password']),
+ ));
+ }
+ $cmd[] = '--config-dir '. escapeshellarg(dirname(__FILE__) .'/configdir');
+}
+
+/**
+ * Write or retrieve the authentication info state, stored in a static variable.
+ *
+ * @param $info
+ * NULL to retrieve the info, FALSE to unset it, or an array with array keys
+ * 'username' and 'password' to remember it for later retrieval.
+ */
+function _svnlib_authentication_info($info = NULL) {
+ static $auth_info = NULL;
+
+ if (!isset($info)) {
+ return $auth_info;
+ }
+ else {
+ $auth_info = ($info === FALSE) ? NULL : $info;
+ return $auth_info;
+ }
+}
+
+/**
+ * By default, Subversion will be invoked with the 'svn' binary which is
+ * alright as long as the binary is in the PATH. If it's not, you can call
+ * this function to set a different path to the binary (which will be used
+ * until this process finishes, or until a new path is set).
+ */
+function svnlib_set_svn_binary($svn_binary) {
+ _svnlib_svn_binary($svn_binary);
+}
+
+/**
+ * Write or retrieve the path of the svn binary, stored in a static variable.
+ *
+ * @param $svn_binary
+ * NULL to retrieve the info, or the path to the binary to remember it
+ * for later retrieval.
+ */
+function _svnlib_svn_binary($svn_binary = NULL) {
+ static $binary = 'svn';
+
+ if (!isset($svn_binary)) {
+ return $binary;
+ }
+ $binary = $svn_binary;
+ return $binary;
+}
+
+/**
+ * Retrieve the version of the svn binary, and return an array with the keys
+ * 'major', 'minor' and 'patch', each containing the integer for the respective
+ * part of the version number. If invoking the SVN executable fails, an empty
+ * array is returned.
+ */
+function svnlib_version() {
+ static $version;
+
+ if (isset($version)) {
+ return $version;
+ }
+ $return_code = 0;
+ exec(_svnlib_svn_binary() .' --version', $output, $return_code);
+
+ if ($return_code != 0) {
+ $version = array();
+ return $version;
+ }
+ $line = reset($output); // The first line contains the version number.
+
+ if (!preg_match('/\b([\d]+)\.([\d]+)(?:\.([\d]+))?/', $line, $matches)) {
+ $version = array();
+ return $version;
+ }
+ $version = array(
+ 'major' => (int) $matches[1],
+ 'minor' => (int) $matches[2],
+ 'patch' => empty($matches[3]) ? 0 : (int) $matches[3],
+ );
+ return $version;
+}
+
+/**
+ * Append an appropriate output pipe to a $cmd array, which causes STDERR
+ * to be written to a random file.
+ *
+ * @return
+ * An array with the temporary files that will be created when $cmd
+ * is executed. In its current form, the return array only contains
+ * the filename for STDERR output as 'stderr' array element.
+ */
+function _svnlib_add_output_pipes(&$cmd) {
+ $tempdir = file_directory_temp();
+ $tempfiles = array(
+ 'stderr' => $tempdir .'/drupal_versioncontrol_svn.stderr.'. mt_rand() .'.txt',
+ );
+ $cmd[] = '2> '. $tempfiles['stderr'];
+ return $tempfiles;
+}
+
+/**
+ * Delete temporary files that have been created by a command which included
+ * output pipes from _svnlib_add_output_pipes().
+ */
+function _svnlib_delete_temporary_files($tempfiles) {
+ @unlink($tempfiles['stderr']);
+}
+
+/**
+ * Read the STDERR output for a command that was executed.
+ * The output must have been written to a temporary file which was given
+ * by _svnlib_add_output_pipes(). The temporary file is deleted after it
+ * has been read. After calling the function, the error message can be
+ * retrieved by calling svnlib_last_error_message() or discarded by calling
+ * svnlib_unset_error_message().
+ */
+function _svnlib_set_error_message($tempfiles) {
+ _svnlib_error_message(file_get_contents($tempfiles['stderr']));
+ @unlink($tempfiles['stderr']);
+}
+
+/**
+ * Retrieve the STDERR output from the last invocation of 'svn' that exited
+ * with a non-zero status code. After fetching the error message, it will be
+ * unset again until a subsequent 'svn' invocation fails as well. If no message
+ * is set, this function returns NULL.
+ *
+ * For better security, it is advisable to run the returned error message
+ * through check_plain() or similar string checker functions.
+ */
+function svnlib_last_error_message() {
+ $message = _svnlib_error_message();
+ _svnlib_error_message(FALSE);
+ return $message;
+}
+
+/**
+ * Write or retrieve an error message, stored in a static variable.
+ *
+ * @param $info
+ * NULL to retrieve the message, FALSE to unset it, or a string containing
+ * the new message to remember it for later retrieval.
+ */
+function _svnlib_error_message($message = NULL) {
+ static $error_message = NULL;
+
+ if (!isset($message)) {
+ return $error_message;
+ }
+ else {
+ $error_message = ($message === FALSE) ? NULL : $message;
+ return $error_message;
+ }
+}
+
+/**
+ * Return commit log messages of a repository URL. This function is equivalent
+ * to 'svn log -v -r $revision_range $repository_url'.
+ *
+ * @param $repository_url
+ * The URL of the repository (e.g. 'file:///svnroot/my-repo') or an item
+ * inside that repository (e.g. 'file:///svnroot/my-repo/subdir/hello.php').
+ * @param $revision_range
+ * The revision specification that will be passed to 'svn log' as the
+ * '-r' parameter. Examples: '35' for a specific revision, 'HEAD:35' for all
+ * revisions since (and including) r35, or the default parameter 'HEAD:1'
+ * for all revisions of the given URL. If you specify the more recent
+ * revision first (e.g. 'HEAD:1') then it will also be first in the
+ * result array, whereas if you specify the older revision first ('1:HEAD')
+ * then you'll get a result array with an ascending sort, the most
+ * recent revision being the last array element.
+ * @param $url_revision
+ * The revision of the URL that should be listed.
+ * This needs to be a single revision, e.g. '35' or 'HEAD'.
+ * For example, if a file was deleted in revision 36, you need to pass '35'
+ * as parameter to get its log, otherwise Subversion won't find the file.
+ *
+ * @return
+ * An array of detailed information about the revisions that exist
+ * in the given URL at the specified revision or revision range.
+ * Each revision detail array has the revision number as array key.
+ * If the 'svn log' invocation exited with an error, this function
+ * returns NULL and the error message can be retrieved by calling
+ * svnlib_last_error_message().
+ */
+function svnlib_log($repository_url, $revision_range = 'HEAD:1', $url_revision = 'HEAD') {
+ $cmd = array(
+ escapeshellarg(escapeshellcmd(_svnlib_svn_binary())),
+ 'log',
+ '-r', $revision_range,
+ '--non-interactive',
+ '--xml',
+ '-v',
+ );
+ _svnlib_add_common_options($cmd);
+ $cmd[] = escapeshellarg($repository_url .'@'. $url_revision);
+ $tempfiles = _svnlib_add_output_pipes($cmd);
+
+ $return_code = 0;
+ exec(implode(' ', $cmd), $output, $return_code);
+ if ($return_code != 0) {
+ _svnlib_set_error_message($tempfiles);
+ return NULL; // no such revision(s) found
+ }
+ $log = implode("\n", $output);
+ _svnlib_delete_temporary_files($tempfiles);
+
+ return _svnlib_parse_log($log);
+}
+
+/*
+ * Parse the output of 'svn log' into an array of log entries.
+ * The output looks something like this (0 to N possible "logentry" elements):
+<?xml version="1.0"?>
+<log>
+ <logentry revision="272">
+ <author>jpetso</author>
+ <date>2007-04-12T15:01:00.247137Z</date>
+ <paths>
+ <path action="M">/trunk/lila/kde/scalable/apps/ktorrent.svg</path>
+ <path action="A">/trunk/lila/kde/scalable/devices/laptop.svg</path>
+ <path copyfrom-path="/trunk/lila/kde/scalable/devices/pda_black.svg"
+ copyfrom-rev="270"
+ action="A">/trunk/lila/kde/scalable/devices/pda_blue.svg</path>
+ <path action="R">/trunk/lila/kde/scalable/devices/ipod_unmount.svg</path>
+ <path action="D">/trunk/lila/kde/ChangeLog</path>
+ </paths>
+ <msg>New laptop icon from the GNOME set, more moderate
+ colors in ktorrent.svg, and bits of devices stuff.
+ </msg>
+ </logentry>
+</log>
+*/
+function _svnlib_parse_log($log) {
+ $revisions = array();
+ $xml = new SimpleXMLElement($log);
+
+ foreach ($xml->logentry as $logentry) {
+ $revision = array();
+ $revision['rev'] = intval((string) $logentry['revision']);
+ $revision['author'] = (string) $logentry->author;
+ $revision['msg'] = rtrim((string) $logentry->msg); // no trailing linebreaks
+ $revision['time_t'] = strtotime((string) $logentry->date);
+ $paths = array();
+
+ foreach ($logentry->paths->path as $logpath) {
+ $path = array(
+ 'path' => (string) $logpath,
+ 'action' => (string) $logpath['action'],
+ );
+ if (!empty($logpath['copyfrom-path'])) {
+ $path['copyfrom'] = array(
+ 'path' => (string) $logpath['copyfrom-path'],
+ 'rev' => (string) $logpath['copyfrom-rev'],
+ );
+ }
+ $paths[$path['path']] = $path;
+ }
+ $revision['paths'] = $paths;
+ $revisions[$revision['rev']] = $revision;
+ }
+ return $revisions;
+}
+
+/**
+ * Return the contents of a directory (specified as repository URL,
+ * optionally at a certain revision) as an array of items. This function
+ * is equivalent to 'svn ls $repository_url@$revision'.
+ *
+ * @param $repository_url
+ * The URL of the repository (e.g. 'file:///svnroot/my-repo') or an item
+ * inside that repository (e.g. 'file:///svnroot/my-repo/subdir').
+ * @param $url_revision
+ * The revision of the URL that should be listed.
+ * This needs to be a single revision, e.g. '35' or 'HEAD'.
+ * For example, if a file was deleted in revision 36, you need to pass '35'
+ * as parameter to get its listing, otherwise Subversion won't find the file.
+ * @param $recursive
+ * FALSE to retrieve just the direct child items of the current directory,
+ * or TRUE to descend into each subdirectory and retrieve all descendant
+ * items recursively. If $recursive is true then each directory item
+ * in the result array will have an additional array element 'children'
+ * which contains the list entries below this directory, as array keys
+ * in the result array.
+ *
+ * If @p $repository_url refers to a file then the @p $recursive parameter
+ * has no effect on the 'svn ls' output and, by consequence, on the
+ * return value.
+ *
+ * @return
+ * A array of items. If @p $repository_url refers to a file then the array
+ * contains a single entry with this file, whereas if @p $repository_url
+ * refers to a directory then the array contains all items inside this
+ * directory (but not the directory itself).
+ * If the 'svn ls' invocation exited with an error, this function
+ * returns NULL and the error message can be retrieved by calling
+ * svnlib_last_error_message().
+ */
+function svnlib_ls($repository_url, $url_revision = 'HEAD', $recursive = FALSE) {
+ $cmd = array(
+ escapeshellarg(escapeshellcmd(_svnlib_svn_binary())),
+ 'ls',
+ '--non-interactive',
+ '--xml',
+ );
+ if ($recursive) {
+ $cmd[] = '-R';
+ }
+ _svnlib_add_common_options($cmd);
+ $cmd[] = escapeshellarg($repository_url .'@'. $url_revision);
+ $tempfiles = _svnlib_add_output_pipes($cmd);
+
+ $return_code = 0;
+ exec(implode(' ', $cmd), $output, $return_code);
+ if ($return_code != 0) {
+ _svnlib_set_error_message($tempfiles);
+ return NULL; // no such item or revision found
+ }
+ $lists = implode("\n", $output);
+ _svnlib_delete_temporary_files($tempfiles);
+
+ return _svnlib_parse_ls($lists, $recursive);
+}
+
+/*
+ * Parse the output of 'svn ls' into an array of item entries.
+ * The output looks something like this (0 to N possible "entry" elements):
+<?xml version="1.0"?>
+<lists>
+ <list path="file:///home/jakob/repos/svn/lila-theme/tags/svg-utils-0-1/utils/svg-utils/svgcolor-xml">
+ <entry kind="dir">
+ <name>lila</name>
+ <commit revision="257">
+ <author>jpetso</author>
+ <date>2006-11-29T01:27:47.192716Z</date>
+ </commit>
+ </entry>
+ <entry kind="file">
+ <name>lila/lila-blue.xml</name>
+ <size>918</size>
+ <commit revision="9">
+ <author>dgt84</author>
+ <date>2004-05-04T21:32:13.000000Z</date>
+ </commit>
+ </entry>
+ </list>
+</lists>
+*/
+function _svnlib_parse_ls($lists, $recursive) {
+ $items = array();
+ $current_item_stack = array(); // will help us determine hierarchical structures
+ $xml = new SimpleXMLElement($lists);
+
+ foreach ($xml->list->entry as $entry) {
+ $item = array();
+ $item['created_rev'] = intval((string) $entry->commit['revision']);
+ $item['last_author'] = (string) $entry->commit->author;
+ $item['time_t'] = strtotime((string) $entry->commit->date);
+ $relative_path = (string) $entry->name;
+ $item['name'] = basename($relative_path);
+ $item['type'] = (string) $entry['kind'];
+
+ if ($item['type'] == 'file') {
+ $item['size'] = intval((string) $entry->size);
+ }
+
+ // When listing recursively, we want to capture the item hierarchy.
+ if ($recursive) {
+ if ($item['type'] == 'dir') {
+ $item['children'] = array();
+ }
+ if (strpos($relative_path, '/') !== FALSE) { // don't regard top-level items
+ $parent_path = dirname($relative_path);
+ if (isset($items[$parent_path]) && !in_array($relative_path, $items[$parent_path]['children'])) {
+ $items[$parent_path]['children'][] = $relative_path;
+ }
+ }
+ }
+ $items[$relative_path] = $item;
+ }
+ return $items;
+}
+
+/**
+ * Returns detail information about a directory or file item in the repository.
+ * In most cases, svnlib_info() is the better svnlib_ls(), as it retrieves not
+ * only item names but also repository root and the path of each item
+ * inside the repository.
+ *
+ * You can also use svnlib_info() to retrieve a former item path if the item
+ * has been moved or copied: just pass the current URL and revision together
+ * with a past or future revision number as @p $target_revision, and you get
+ * the path of the item at that time.
+ *
+ * This function is equivalent to
+ * 'svn info -r $target_revision $repository_url@$url_revision'.
+ *
+ * @param $repository_urls
+ * The URL of the item (e.g. 'file:///svnroot/my-repo/subdir/hello.php')
+ * or the repository itself (e.g. 'file:///svnroot/my-repo'), as string.
+ * Alternatively, you can also pass an array of multiple URLs.
+ * @param $url_revision
+ * The revision of the URL that should be listed.
+ * This needs to be a single revision, e.g. '35' or 'HEAD'.
+ * For example, if a file was deleted in revision 36, you need to pass '35'
+ * as parameter to get its info, otherwise Subversion won't find the file.
+ * In case multiple URLs are passed, this revision applies to each of them.
+ * @param $depth
+ * Specifies if info for descendant items should be retrieved as well, and
+ * if so, which of those. The default 'empty' will not retrieve any children,
+ * 'files' will retrieve all immediate file children, 'immediates' will
+ * retrieve file and directory children, and 'infinity' will retrieve all
+ * descendant items there are, recursively. If $depth is 'infinity' then each
+ * directory item in the result array will have an additional array element
+ * named 'children' which contains the paths below this directory, the paths
+ * corresponding to array keys in the result array.
+ *
+ * If @p $repository_url refers to a file then the @p $depth parameter
+ * has no effect on the 'svn info' output and, by consequence, on the
+ * return value.
+ *
+ * @param $target_revision
+ * The revision specification that will be passed to 'svn info' as the
+ * '-r' parameter. This needs to be a single revision, e.g. '35' or 'HEAD'.
+ * This is handy to track item copies and renames, see the general function
+ * description on how to do that. If you leave this at NULL, the info will be
+ * retrieved at the state of the $url_revision.
+ *
+ * @return
+ * A array of items that contain information about the items that correspond
+ * the specified URL(s). If @p $repository_url refers to a directory and
+ * @p $depth is 'infinity', the array also includes information about all
+ * descendants of the items that correspond to the specified URL(s).
+ * If the 'svn info' invocation exited with an error, this function
+ * returns NULL and the error message can be retrieved by calling
+ * svnlib_last_error_message().
+ */
+function svnlib_info($repository_urls, $url_revision = 'HEAD', $depth = 'empty', $target_revision = NULL) {
+ if (!is_array($repository_urls)) { // it's a single URL as a string!
+ $repository_urls = array($repository_urls);
+ }
+
+ $cmd = array(
+ escapeshellarg(escapeshellcmd(_svnlib_svn_binary())),
+ 'info',
+ '--non-interactive',
+ '--xml',
+ );
+
+ if ($depth == 'infinity') {
+ $cmd[] = '-R'; // "--depth infinity" is not in 1.4, but '-R' (recursive) is
+ }
+ elseif ($depth != 'empty') {
+ $version = svnlib_version();
+ if ($version['major'] >= 1 && $version['minor'] >= 5) {
+ $cmd[] = '--depth '. $depth;
+ }
+ else { // 1.4 and earlier compatibility workaround
+ foreach ($repository_urls as $repository_url) {
+ // Make sure the item is a directory, otherwise it has no children
+ // anyways (and the relative path fetched by ls will lead to incorrect
+ // results as it duplicates the basename that is already in the URL).
+ $repository_url_items = svnlib_info($repository_url, $url_revision, 'empty', $target_revision);
+ $repository_url_item = reset($repository_url_items);
+ if ($repository_url_item['type'] != 'dir') {
+ continue;
+ }
+ // Fetch child items with svn ls, that's what 1.4 can actually do.
+ $items = svnlib_ls($repository_url, $url_revision);
+ foreach ($items as $relative_path => $item) {
+ if ($depth == 'files' && $item['type'] = 'dir') {
+ continue; // 'immediates' fetches all children, 'files' only files
+ }
+ $repository_urls[] = $repository_url .'/'. $relative_path;
+ }
+ }
+ }
+ }
+ // else {
+ // "--depth empty" is the default, leave it out for svn <= 1.4 compatibility
+ // }
+
+ if (isset($target_revision)) {
+ $cmd[] = '-r';
+ $cmd[] = $target_revision;
+ }
+ _svnlib_add_common_options($cmd);
+ foreach ($repository_urls as $repository_url) {
+ $cmd[] = escapeshellarg($repository_url .'@'. $url_revision);
+ }
+ $tempfiles = _svnlib_add_output_pipes($cmd);
+
+ $return_code = 0;
+ exec(implode(' ', $cmd), $output, $return_code);
+ if ($return_code != 0) {
+ _svnlib_set_error_message($tempfiles);
+ return NULL; // no such item or revision found
+ }
+ $info = implode("\n", $output);
+ _svnlib_delete_temporary_files($tempfiles);
+
+ $recursive = ($depth == 'infinity');
+ return _svnlib_parse_info($info, $recursive);
+}
+
+/*
+ * Parse the output of 'svn info' into an array of item entries.
+ * The output looks something like this (same URL as in the 'svn ls' example,
+ * also 0 to N possible "entry" elements):
+<?xml version="1.0"?>
+<info>
+ <entry kind="dir" path="svgcolor-xml" revision="275">
+ <url>file:///home/jakob/repos/svn/lila-theme/tags/svg-utils-0-1/utils/svg-utils/svgcolor-xml</url>
+ <repository>
+ <root>file:///home/jakob/repos/svn/lila-theme</root>
+ <uuid>fd53868f-e4f1-0310-84ca-8663aff3ef64</uuid>
+ </repository>
+ <commit revision="257">
+ <author>jpetso</author>
+ <date>2006-11-29T01:27:47.192716Z</date>
+ </commit>
+ </entry>
+ <entry kind="dir" path="lila" revision="275">
+ <url>file:///home/jakob/repos/svn/lila-theme/tags/svg-utils-0-1/utils/svg-utils/svgcolor-xml/lila</url>
+ <repository>
+ <root>file:///home/jakob/repos/svn/lila-theme</root>
+ <uuid>fd53868f-e4f1-0310-84ca-8663aff3ef64</uuid>
+ </repository>
+ <commit revision="257">
+ <author>jpetso</author>
+ <date>2006-11-29T01:27:47.192716Z</date>
+ </commit>
+ </entry>
+ <entry kind="file" path="lila/lila-blue.xml" revision="275">
+ <url>file:///home/jakob/repos/svn/lila-theme/tags/svg-utils-0-1/utils/svg-utils/svgcolor-xml/lila/lila-blue.xml</url>
+ <repository>
+ <root>file:///home/jakob/repos/svn/lila-theme</root>
+ <uuid>fd53868f-e4f1-0310-84ca-8663aff3ef64</uuid>
+ </repository>
+ <commit revision="9">
+ <author>dgt84</author>
+ <date>2004-05-04T21:32:13.000000Z</date>
+ </commit>
+ </entry>
+</info>
+*/
+function _svnlib_parse_info($info, $recursive) {
+ $items = array();
+ $xml = new SimpleXMLElement($info);
+
+ foreach ($xml->entry as $entry) {
+ $item = array();
+ $item['url'] = (string) $entry->url;
+ $item['repository_root'] = (string) $entry->repository->root;
+ $item['repository_uuid'] = (string) $entry->repository->uuid;
+
+ if ($item['url'] == $item['repository_root']) {
+ $item['path'] = '/';
+ }
+ else {
+ $item['path'] = substr($item['url'], strlen($item['repository_root']));
+ }
+
+ if (isset($items[$item['path']])) {
+ // Duplicate item, we had this one before already. Nevertheless, we can
+ // perhaps make use of it in order to enhance the hierarchical structure.
+ $item = $items[$item['path']];
+ }
+ else {
+ $item['type'] = (string) $entry['kind'];
+ $relative_path = (string) $entry['path'];
+ $item['rev'] = intval((string) $entry['revision']); // current state of the item
+ $item['created_rev'] = intval((string) $entry->commit['revision']); // last edit
+ $item['last_author'] = (string) $entry->commit->author;
+ $item['time_t'] = strtotime((string) $entry->commit->date);
+
+ if ($recursive && $item['type'] == 'dir') {
+ $item['children'] = array();
+ }
+ }
+
+ // For "--depth infinity", provide the caller with further hierarchy info.
+ if ($recursive && $item['path'] != '/') {
+ $parent_path = dirname($item['path']);
+ if (isset($items[$parent_path]) && !in_array($item['path'], $items[$parent_path]['children'])) {
+ $items[$parent_path]['children'][] = $item['path'];
+ }
+ }
+ $items[$item['path']] = $item;
+ }
+ return $items;
+}
+
+
+/**
+ * Copy the contents of a file in a repository to a given destination.
+ * This function is equivalent to
+ * 'svn cat $repository_url@$url_revision > $destination'.
+ *
+ * @param $destination
+ * The path of the file that should afterwards contain the file contents.
+ * @param $repository_url
+ * The URL of the file, e.g. 'file:///svnroot/my-repo/subdir/hello.php'.
+ * @param $url_revision
+ * The revision of the URL that should be queried for the property.
+ * This needs to be a single revision, e.g. '35' or 'HEAD'.
+ *
+ * @return
+ * TRUE if the file was created successfully. If the 'svn cat' invocation
+ * exited with an error, this function returns FALSE and the error message
+ * can be retrieved by calling svnlib_last_error_message().
+ */
+function svnlib_cat($destination, $repository_url, $url_revision = 'HEAD') {
+ $cmd = array(
+ escapeshellarg(escapeshellcmd(_svnlib_svn_binary())),
+ 'cat',
+ '--non-interactive',
+ );
+ _svnlib_add_common_options($cmd);
+ $cmd[] = escapeshellarg($repository_url .'@'. $url_revision);
+ $cmd[] = '> '. $destination;
+ $tempfiles = _svnlib_add_output_pipes($cmd);
+
+ $return_code = 0;
+ exec(implode(' ', $cmd), $output, $return_code);
+ if ($return_code != 0) {
+ @unlink($destination);
+ _svnlib_set_error_message($tempfiles);
+ return FALSE; // no such item or revision found
+ }
+ _svnlib_delete_temporary_files($tempfiles);
+ return TRUE;
+}
+
+/**
+ * Return a specific SVN property of the given file or directory in the
+ * repository. This function is equivalent to
+ * 'svn propget $property_name $repository_url@$url_revision'.
+ *
+ * @param $property_name
+ * The name of the property, e.g. 'svn:mime-type' or 'svn:executable'.
+ * @param $repository_url
+ * The URL of the item (e.g. 'file:///svnroot/my-repo/subdir/hello.php')
+ * or the repository itself (e.g. 'file:///svnroot/my-repo'), as string.
+ * @param $url_revision
+ * The revision of the URL that should be queried for the property.
+ * This needs to be a single revision, e.g. '35' or 'HEAD'.
+ *
+ * @return
+ * A string containing the specified property for the item in the given
+ * revision, an empty string if this property is not set. If the
+ * 'svn propget' invocation exited with an error, this function
+ * returns NULL and the error message can be retrieved by calling
+ * svnlib_last_error_message().
+ */
+function svnlib_propget($property_name, $repository_url, $url_revision = 'HEAD') {
+ $cmd = array(
+ escapeshellarg(escapeshellcmd(_svnlib_svn_binary())),
+ 'propget',
+ $property_name,
+ '--non-interactive',
+ );
+ _svnlib_add_common_options($cmd);
+ $cmd[] = escapeshellarg($repository_url .'@'. $url_revision);
+ $tempfiles = _svnlib_add_output_pipes($cmd);
+
+ $return_code = 0;
+ exec(implode(' ', $cmd), $output, $return_code);
+ if ($return_code != 0) {
+ _svnlib_set_error_message($tempfiles);
+ return NULL; // no such item or revision found
+ }
+ $property = trim(implode('', $output));
+ _svnlib_delete_temporary_files($tempfiles);
+
+ if (empty($property)) {
+ return '';
+ }
+ return $property;
+}
diff --git a/emacs.d/nxhtml/tests/in/bug384115-bt2.txt b/emacs.d/nxhtml/tests/in/bug384115-bt2.txt
new file mode 100644
index 0000000..0fc787d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug384115-bt2.txt
@@ -0,0 +1,11 @@
+Debugger entered--Lisp error: (file-error "Cannot open load file" "../../../../../../elisp/package.d/nxhtml/nxhtml/nxhtml-menu")
+ (nxhtml-global-minor-mode 1)
+ (let* ((util-dir ...) (related-dir ...) (nxhtml-dir ...)) (add-to-list (quote load-path) nxhtml-dir) (add-to-list (quote load-path) related-dir) (add-to-list (quote load-path) util-dir) (add-to-list (quote load-path) nxhtml-install-dir) (message "... nXhtml loading %.1f seconds elapsed ..." (- ... nxhtml-load-time-start)) (load (expand-file-name "nxhtml-loaddefs" nxhtml-install-dir)) (message "... nXhtml loading %.1f seconds elapsed ..." (- ... nxhtml-load-time-start)) (nxhtml-global-minor-mode 1) (message "... nXhtml loading %.1f seconds elapsed ..." (- ... nxhtml-load-time-start)) (when (fboundp ...) (load ...) (rncpp-patch-xhtml-loader)) (message "... nXhtml loading %.1f seconds elapsed ..." (- ... nxhtml-load-time-start)) (load (expand-file-name "nxhtml/nxhtml-autoload" nxhtml-install-dir)))
+ (if (featurep (quote nxhtml-autostart)) nil (provide (quote nxhtml-autostart)) (if (< emacs-major-version 23) (load ...) (let ... ...)) (let* (... ... ...) (add-to-list ... nxhtml-dir) (add-to-list ... related-dir) (add-to-list ... util-dir) (add-to-list ... nxhtml-install-dir) (message "... nXhtml loading %.1f seconds elapsed ..." ...) (load ...) (message "... nXhtml loading %.1f seconds elapsed ..." ...) (nxhtml-global-minor-mode 1) (message "... nXhtml loading %.1f seconds elapsed ..." ...) (when ... ... ...) (message "... nXhtml loading %.1f seconds elapsed ..." ...) (load ...)) (message "... nXhtml loading %.1f seconds elapsed ..." (- ... nxhtml-load-time-start)) (nxhtml-list-loaded-features) (message "Nxml/Nxhtml Autostart.el loaded in %.1f seconds" (- ... nxhtml-load-time-start)))
+ (unless (featurep (quote nxhtml-autostart)) (provide (quote nxhtml-autostart)) (if (< emacs-major-version 23) (load ...) (let ... ...)) (let* (... ... ...) (add-to-list ... nxhtml-dir) (add-to-list ... related-dir) (add-to-list ... util-dir) (add-to-list ... nxhtml-install-dir) (message "... nXhtml loading %.1f seconds elapsed ..." ...) (load ...) (message "... nXhtml loading %.1f seconds elapsed ..." ...) (nxhtml-global-minor-mode 1) (message "... nXhtml loading %.1f seconds elapsed ..." ...) (when ... ... ...) (message "... nXhtml loading %.1f seconds elapsed ..." ...) (load ...)) (message "... nXhtml loading %.1f seconds elapsed ..." (- ... nxhtml-load-time-start)) (nxhtml-list-loaded-features) (message "Nxml/Nxhtml Autostart.el loaded in %.1f seconds" (- ... nxhtml-load-time-start)))
+ eval-buffer(#<buffer *load*> nil "/Users/dave/elisp/package.d/nxhtml/autostart.el" nil t) ; Reading at buffer position 7076
+ load-with-code-conversion("/Users/dave/elisp/package.d/nxhtml/autostart.el" "/Users/dave/elisp/package.d/nxhtml/autostart.el" nil t)
+ load("/Users/dave/elisp/package.d/nxhtml/autostart.el" nil t)
+ command-line-1(("-l" "/Users/dave/elisp/package.d/nxhtml/nxhtmlmaint.el" "-l" "/Users/dave/elisp/package.d/nxhtml/autostart.el" "-f" "nxhtmlmaint-byte-compile-all"))
+ command-line()
+ normal-top-level()
diff --git a/emacs.d/nxhtml/tests/in/bug388729-messages.txt b/emacs.d/nxhtml/tests/in/bug388729-messages.txt
new file mode 100644
index 0000000..4075487
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug388729-messages.txt
@@ -0,0 +1,292 @@
+("/Applications/Emacs.app/Contents/MacOS/Emacs" "-Q" "--debug-init" "--load" "/Users/isho/.emacs.d/nxhtml/autostart.el")
+For information about GNU Emacs and the GNU system, type C-h C-a.
+Nxml/Nxhtml Autostart.el loading ...
+Loading /Users/isho/.emacs.d/nxhtml/autostart22.el (source)...
+Loading /Applications/Emacs.app/Contents/Resources/site-lisp/nxml-mode/rng-auto.el (source)...done
+Loading /Users/isho/.emacs.d/nxhtml/autostart22.el (source)...done
+... nXhtml loading 0.1 seconds elapsed ...
+Loading /Users/isho/.emacs.d/nxhtml/nxhtml-loaddefs.el (source)...done
+... nXhtml loading 0.1 seconds elapsed ...
+Loading /Users/isho/.emacs.d/nxhtml/nxhtml/nxhtml-menu.el (source)...
+Loading regexp-opt...done
+Loading easy-mmode...done
+Loading advice...done
+after advising ido
+Loading cl-macs...done
+Loading url-methods...done
+html-site-current (information): No current site set
+Loading derived...done
+Loading byte-opt...done
+
+Finished loading /Users/isho/.emacs.d/nxhtml/util/mumamo.el
+
+Loading /Users/isho/.emacs.d/nxhtml/nxhtml/nxhtml-menu.el (source)...done
+... nXhtml loading 1.3 seconds elapsed ...
+Loading /Users/isho/.emacs.d/nxhtml/etc/schema/schema-path-patch.el (source)...done
+xhtml-loader.rnc was ok
+(No changes need to be saved)
+... nXhtml loading 1.4 seconds elapsed ...
+Loading /Users/isho/.emacs.d/nxhtml/nxhtml/nxhtml-autoload.el (source)...
+nxhtml-autoload starting ... (hm, should maybe be renamed ...)
+majmodpri-apply-priorities running...
+majmodpri-sort-lists running ... (done)
+majmodpri-apply-priorities: No file buffers to change modes in
+majmodpri-apply-priorities running ... (done)
+majmodpri-sort-lists running ... (done)
+nxhtml-autoload finished
+majmodpri-sort-lists running ... (done)
+Loading /Users/isho/.emacs.d/nxhtml/nxhtml/nxhtml-autoload.el (source)...done
+... nXhtml loading 1.7 seconds elapsed ...
+=== Loaded at nxhtml/autostart.el end:
+(feature 'html-imenu)=t
+(feature 'html-quote)=t
+(feature 'html-site)=t
+(feature 'html-upl)=t
+(feature 'mumamo)=t
+(feature 'nxhtml-menu)=t
+(feature 'nxhtml-mode)=t
+(feature 'rngalt)=t
+(feature 'tidy-xhtml)=t
+Nxml/Nxhtml Autostart.el loaded in 1.9 seconds
+nxhtml_test.php has auto save data; consider M-x recover-this-file
+Loading /Users/isho/.emacs.d/nxhtml/util/mumamo-fun.el (source)...done
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=1 from mumamo-get-chunk-save-buffer-state, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=nil
+MU:(find-next-chunk-values nil nil nil)
+MU:find-next-chunk-values:here a, curr-min=1, after-chunk=nil
+MU:find-next-chunk-values:(when (>= 45 1)
+MU:find-next-chunk-values:here d, curr-min=1, after-chunk=nil
+MU:find-next-chunk-values:curr-chunk-funs=(mumamo-chunk-xml-pi mumamo-chunk-inlined-style mumamo-chunk-inlined-script mumamo-chunk-style= mumamo-chunk-onjs=)
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-xml-pi pos=1, max=45
+MU:find-next-chunk-values:fn=mumamo-chunk-xml-pi, r=(5 nil php-mode (10 nil) nil mumamo-search-fw-exc-end-xml-pi mumamo-find-borders-xml-pi)
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-inlined-style pos=1, max=45
+MU:find-next-chunk-values:fn=mumamo-chunk-inlined-style, r=nil
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-inlined-script pos=1, max=45
+MU:find-next-chunk-values:fn=mumamo-chunk-inlined-script, r=nil
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-style= pos=1, max=45
+MU:find-next-chunk-values:fn=mumamo-chunk-style=, r=nil
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-onjs= pos=1, max=45
+MU:find-next-chunk-values:fn=mumamo-chunk-onjs=, r=nil
+MU:find-next-chunk-values:here A, curr-min=1, after-chunk=nil
+MU:find-next-chunk-values:here B, curr-min=1, after-chunk=nil
+MU:find-next-chunk-values:here E
+MU:find-next-chunk-values:curr-is-closed=t
+MU:find-next-chunk-values=> current=(1 5 html-mode 10 nil nil (mumamo-chunk-xml-pi mumamo-chunk-inlined-style mumamo-chunk-inlined-script mumamo-chunk-style= mumamo-chunk-onjs=) nil t), next=(php-mode mumamo-search-fw-exc-end-xml-pi mumamo-find-borders-xml-pi none 1)
+MU:find-chunks:mumamo-old-tail=nil, major=nil, mumamo-last-chunk=nil
+MU:
+--------------------
+MU:
+--------------------
+MU:find-chunks:Exit.end-param=1, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>, point-max=45, last=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 5 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=1 from mumamo-turn-on-actions, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-chunks:using old at end=1, ok-pos=4, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=1, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>, point-max=45, last=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 5 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=nil from mumamo-turn-on-actions, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:(find-next-chunk-values #<overlay from 1 to 5 in nxhtml_test.php> nil nil)
+MU:find-next-chunk-values:here a, curr-min=5, after-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-next-chunk-values:(when (>= 45 6)
+MU:find-next-chunk-values:Calling (curr-end-fun=mumamo-search-fw-exc-end-xml-pi 4 45)=>44
+MU:find-next-chunk-values:here c, curr-min=5, after-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-next-chunk-values:here c2, curr-min=5, after-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-next-chunk-values:before end-in-code: 5 mumamo-search-fw-exc-end-xml-pi php-mode
+Loading /Users/isho/.emacs.d/nxhtml/related/php-mode.el (source)...
+majmodpri-sort-lists running ... (done)
+Loading /Users/isho/.emacs.d/nxhtml/related/php-mode.el (source)...done
+MU:
+--------------------
+MU:find-next-chunk-values:curr-end-fun-end after end-in-code=44
+MU:find-next-chunk-values:here d, curr-min=5, after-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-next-chunk-values:curr-chunk-funs=nil
+MU:find-next-chunk-values:here A, curr-min=5, after-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-next-chunk-values:here B, curr-min=5, after-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-next-chunk-values:here C, curr-min=5, after-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-next-chunk-values:here D
+MU:find-next-chunk-values:here E
+MU:find-next-chunk-values:curr-is-closed=t
+MU:find-next-chunk-values=> current=(5 44 php-mode nil nil nil nil #<overlay from 1 to 5 in nxhtml_test.php> t), next=(nil nil nil nil -1)
+MU:find-chunks:mumamo-old-tail=nil, major=nil, mumamo-last-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:(find-next-chunk-values #<overlay from 5 to 44 in nxhtml_test.php> nil nil)
+MU:find-next-chunk-values:here a, curr-min=44, after-chunk=#<overlay from 5 to 44 in nxhtml_test.php>
+MU:find-next-chunk-values:(when (>= 45 45)
+MU:find-next-chunk-values:here d, curr-min=44, after-chunk=#<overlay from 5 to 44 in nxhtml_test.php>
+MU:find-next-chunk-values:curr-chunk-funs=(mumamo-chunk-xml-pi mumamo-chunk-inlined-style mumamo-chunk-inlined-script mumamo-chunk-style= mumamo-chunk-onjs=)
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-xml-pi pos=45, max=45
+MU:find-next-chunk-values:fn=mumamo-chunk-xml-pi, r=nil
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-inlined-style pos=45, max=45
+MU:find-next-chunk-values:fn=mumamo-chunk-inlined-style, r=nil
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-inlined-script pos=45, max=45
+MU:find-next-chunk-values:fn=mumamo-chunk-inlined-script, r=nil
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-style= pos=45, max=45
+MU:find-next-chunk-values:fn=mumamo-chunk-style=, r=nil
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-onjs= pos=45, max=45
+MU:find-next-chunk-values:fn=mumamo-chunk-onjs=, r=nil
+MU:find-next-chunk-values:here A, curr-min=44, after-chunk=#<overlay from 5 to 44 in nxhtml_test.php>
+MU:find-next-chunk-values:here B, curr-min=44, after-chunk=#<overlay from 5 to 44 in nxhtml_test.php>
+MU:find-next-chunk-values:here C, curr-min=44, after-chunk=#<overlay from 5 to 44 in nxhtml_test.php>
+MU:find-next-chunk-values:here D
+MU:find-next-chunk-values:here E
+MU:find-next-chunk-values:curr-is-closed=nil
+MU:find-next-chunk-values=> current=(44 nil html-mode nil nil nil (mumamo-chunk-xml-pi mumamo-chunk-inlined-style mumamo-chunk-inlined-script mumamo-chunk-style= mumamo-chunk-onjs=) #<overlay from 5 to 44 in nxhtml_test.php> nil), next=(nil nil nil nil 1)
+MU:find-chunks:mumamo-old-tail=nil, major=nil, mumamo-last-chunk=#<overlay from 5 to 44 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=1 from mumamo-set-major-post-command, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=1, ok-pos=45, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=1, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 5 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=1 from mumamo-fontify-region-1, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=1, ok-pos=45, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=1, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 5 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=1 from mumamo-fontify-region-1 2, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=1, ok-pos=45, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=1, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 5 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=1 from syntax-ppss, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=1, ok-pos=45, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=1, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 5 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=5 from mumamo-fontify-region-1 2, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=5, ok-pos=45, this-new-chunk=#<overlay from 5 to 44 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=5, this-new-chunk=#<overlay from 5 to 44 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 5 to 44 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=10 from syntax-ppss, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=10, ok-pos=45, this-new-chunk=#<overlay from 5 to 44 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=10, this-new-chunk=#<overlay from 5 to 44 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 5 to 44 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=44 from mumamo-fontify-region-1 2, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=44, ok-pos=45, this-new-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=44, this-new-chunk=#<overlay from 44 to 45 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 44 to 45 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=2 from mumamo-set-major-post-command, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=2, ok-pos=45, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=2, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 5 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=3 from mumamo-set-major-post-command, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=3, ok-pos=45, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=3, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 5 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=4 from mumamo-set-major-post-command, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=4, ok-pos=45, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=4, this-new-chunk=#<overlay from 1 to 5 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 5 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=5 from mumamo-set-major-post-command, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=5, ok-pos=45, this-new-chunk=#<overlay from 5 to 44 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=5, this-new-chunk=#<overlay from 5 to 44 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 5 to 44 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=5 from mumamo-idle-set-major-mode, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=5, ok-pos=45, this-new-chunk=#<overlay from 5 to 44 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=5, this-new-chunk=#<overlay from 5 to 44 in nxhtml_test.php>, point-max=45, last=#<overlay from 44 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 5 to 44 in nxhtml_test.php>
+MU:c-after-change: major-mode=php-mode c-nonsymbol-token-regexp=!=\|##\|%\(?::%:\|[:=]\)\|&[&=]\|\*[/=]\|\+[+=]\|-[=>-]\|\.\.\.\|/[*/=]\|:[:>]\|<\(?:<=\|[:<=]\)\|==\|>\(?:>=\|[=>]\)\|\?\?\(?:!\?\?!\|=\?\?=\|[!()=-]\)\|\^=\||[=|]\|[]!#%&(-,./:-?[{-~^-]
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=5 from syntax-ppss-flush-cache, level=0
+MU:find-chunks:first-check-from=4, chunk-at-change-min=#<overlay from 5 to 5 in nxhtml_test.php>
+MU:find-chunks:at start mumamo-old-tail=#<overlay from 1 to 5 in nxhtml_test.php>, mumamo-last-chunk=nil
+MU:(find-next-chunk-values nil 4 nil)
+MU:find-next-chunk-values:here a, curr-min=1, after-chunk=nil
+MU:find-next-chunk-values:(when (>= 6 1)
+MU:find-next-chunk-values:here d, curr-min=1, after-chunk=nil
+MU:find-next-chunk-values:curr-chunk-funs=(mumamo-chunk-xml-pi mumamo-chunk-inlined-style mumamo-chunk-inlined-script mumamo-chunk-style= mumamo-chunk-onjs=)
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-xml-pi pos=1, max=6
+MU:find-next-chunk-values:fn=mumamo-chunk-xml-pi, r=nil
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-inlined-style pos=1, max=6
+MU:find-next-chunk-values:fn=mumamo-chunk-inlined-style, r=nil
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-inlined-script pos=1, max=6
+MU:find-next-chunk-values:fn=mumamo-chunk-inlined-script, r=nil
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-style= pos=1, max=6
+MU:find-next-chunk-values:fn=mumamo-chunk-style=, r=nil
+MU:find-next-chunk-values:before (r (funcall fn pos pos max)), fn=mumamo-chunk-onjs= pos=1, max=6
+MU:find-next-chunk-values:fn=mumamo-chunk-onjs=, r=nil
+MU:find-next-chunk-values:here A, curr-min=1, after-chunk=nil
+MU:find-next-chunk-values:here B, curr-min=1, after-chunk=nil
+MU:find-next-chunk-values:here E
+MU:find-next-chunk-values:curr-is-closed=nil
+MU:find-next-chunk-values=> current=(1 nil html-mode nil nil nil (mumamo-chunk-xml-pi mumamo-chunk-inlined-style mumamo-chunk-inlined-script mumamo-chunk-style= mumamo-chunk-onjs=) nil nil), next=(nil nil nil nil 1)
+MU:find-chunks:mumamo-old-tail=#<overlay from 1 to 5 in nxhtml_test.php>, major=html-mode, mumamo-last-chunk=nil
+MU:find-chunks:Exit.end-param=5, this-new-chunk=#<overlay from 1 to 6 in nxhtml_test.php>, point-max=6, last=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 6 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=5 from mumamo-set-major-post-command, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks:using old at end=5, ok-pos=6, this-new-chunk=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=5, this-new-chunk=#<overlay from 1 to 6 in nxhtml_test.php>, point-max=6, last=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 6 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=1 from mumamo-fontify-region-1, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks:using old at end=1, ok-pos=6, this-new-chunk=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=1, this-new-chunk=#<overlay from 1 to 6 in nxhtml_test.php>, point-max=6, last=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 6 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=1 from mumamo-fontify-region-1 2, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks:using old at end=1, ok-pos=6, this-new-chunk=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=1, this-new-chunk=#<overlay from 1 to 6 in nxhtml_test.php>, point-max=6, last=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 6 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=1 from syntax-ppss, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks:using old at end=1, ok-pos=6, this-new-chunk=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=1, this-new-chunk=#<overlay from 1 to 6 in nxhtml_test.php>, point-max=6, last=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 6 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=5 from mumamo-idle-set-major-mode, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks:using old at end=5, ok-pos=6, this-new-chunk=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=5, this-new-chunk=#<overlay from 1 to 6 in nxhtml_test.php>, point-max=6, last=#<overlay from 1 to 6 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 6 in nxhtml_test.php>
+Mark set
+MU:c-after-change: major-mode=html-mode c-nonsymbol-token-regexp=nil
+Loading debug...done
+Entering debugger...
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=5 from mumamo-fontify-region-1, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 1 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=5, ok-pos=45, this-new-chunk=#<overlay from 1 to 45 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=5, this-new-chunk=#<overlay from 1 to 45 in nxhtml_test.php>, point-max=45, last=#<overlay from 1 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 45 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=5 from mumamo-fontify-region-1 2, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 1 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=5, ok-pos=45, this-new-chunk=#<overlay from 1 to 45 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=5, this-new-chunk=#<overlay from 1 to 45 in nxhtml_test.php>, point-max=45, last=#<overlay from 1 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 45 in nxhtml_test.php>
+MU:!!!!!!!!!!!!!!!!!!!find-chunks end=5 from syntax-ppss, level=0
+MU:find-chunks:first-check-from=nil, chunk-at-change-min=nil
+MU:find-chunks:at start mumamo-old-tail=nil, mumamo-last-chunk=#<overlay from 1 to 45 in nxhtml_test.php>
+MU:find-chunks:using old at end=5, ok-pos=45, this-new-chunk=#<overlay from 1 to 45 in nxhtml_test.php>
+MU:find-chunks:Exit.end-param=5, this-new-chunk=#<overlay from 1 to 45 in nxhtml_test.php>, point-max=45, last=#<overlay from 1 to 45 in nxhtml_test.php>
+MU:find-chunks=>#<overlay from 1 to 45 in nxhtml_test.php>
+Quit
+File `/Users/isho/Desktop/backtrace.txt' exists; overwrite? (y or n)
+Wrote /Users/isho/Desktop/backtrace.txt
+File `~/Desktop/messages.txt' exists; overwrite? (y or n)
diff --git a/emacs.d/nxhtml/tests/in/bug388729-nxhtml_test.php b/emacs.d/nxhtml/tests/in/bug388729-nxhtml_test.php
new file mode 100644
index 0000000..5b049b9
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug388729-nxhtml_test.php
@@ -0,0 +1,2 @@
+
+<?php echo "this could be anything"; ?>
diff --git a/emacs.d/nxhtml/tests/in/bug393137-new.html.erb b/emacs.d/nxhtml/tests/in/bug393137-new.html.erb
new file mode 100644
index 0000000..4023506
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug393137-new.html.erb
@@ -0,0 +1,18 @@
+ <h1>New post</h1>
+
+<% form_for(@post) do |f| %>
+ <%= f.error_messages %>
+<p>
+ <%= f.label :title %><br />
+<% a = f.text_field :title %>
+</p>
+<p>
+ <%= f.label :body %><br />
+<%#= f.text_area :body %>
+</p>
+<p>
+ <%= f.submit 'Create' %>
+</p>
+<% end %>
+
+<%= link_to 'Back', posts_path %>
diff --git a/emacs.d/nxhtml/tests/in/bug400415-foo.php b/emacs.d/nxhtml/tests/in/bug400415-foo.php
new file mode 100644
index 0000000..8e40934
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug400415-foo.php
@@ -0,0 +1,9 @@
+<?php
+
+class Foo {
+ public function foo() {
+ $foo = <<<EOT_SQL
+ I am a heredoc
+EOT_SQL
+ }
+}
diff --git a/emacs.d/nxhtml/tests/in/bug400415-foo2.php b/emacs.d/nxhtml/tests/in/bug400415-foo2.php
new file mode 100644
index 0000000..bb4fbad
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug400415-foo2.php
@@ -0,0 +1,9 @@
+<?php
+
+class Foo {
+ public function foo() {
+ $foo = <<<EOT_SQL
+ I am a heredoc
+EOT_SQL;
+ }
+}
diff --git a/emacs.d/nxhtml/tests/in/bug409183.html b/emacs.d/nxhtml/tests/in/bug409183.html
new file mode 100644
index 0000000..0089fc3
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug409183.html
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:py="http://genshi.edgewall.org/"
+ py:strip="True">
+ <head>
+ <title></title>
+ </head>
+ <body>
+ <py:match path="head" once="True">Something</py:match>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/bug416505-Body.mxml b/emacs.d/nxhtml/tests/in/bug416505-Body.mxml
new file mode 100644
index 0000000..e42e09f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug416505-Body.mxml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<mx:Canvas
+ xmlns:mx="http://www.adobe.com/2006/mxml"
+ xmlns:c="imo.utils.*"
+ xmlns:imocp="imo.components.*"
+ xmlns:fl="http://github.com/lancecarlson/flails"
+ xmlns:commons="imo.components.commons.*"
+ creationComplete="resetMenus()"
+ horizontalScrollPolicy="off" verticalScrollPolicy="off">
+
+ <mx:Script>
+ <![CDATA[
+ import imo.components.tooltips.MediaFileToolTip;
+
+ import mx.core.UIComponent;
+ import mx.events.DragEvent;
+ import mx.managers.DragManager;
+
+ public static const LEFT_STATES:Array = [];
+ public static const RIGHT_STATES:Array = [];
+
+ [Deprecated]
+ public function changeState(state:String):void {
+ containers.currentState = state;
+ }
+
+ private function tabMouseDown(e:MouseEvent):void{
+ resetMenus(e.target.parent);
+ containers.currentState = e.target.label;
+ }
+
+ private function resetMenus(which:Object = null):void {
+ if (which == null) {
+ leftMenu.selectedIndex = -1;
+ rightMenu.selectedIndex = -1;
+ } else {
+ which.selectedIndex = -1;
+ }
+ }
+
+ private function onDragEnter( event:DragEvent ):void{
+ containers.currentState = "queue";
+ DragManager.acceptDragDrop( UIComponent(event.target) );
+ }
+
+ private function updateMenu(page:Object):void{
+ if (page.hasOwnProperty("menu")) {
+ this[page.menu + "Menu"].selectedIndex = page.menuIndex;
+ } else {
+ resetMenus();
+ }
+ }
+ ]]>
+ </mx:Script>
+
+ <!--<commons:TransparentBorderCanvas styleName="sideCanvas" x="-10" width="30" height="210"
+ horizontalScrollPolicy="off" verticalScrollPolicy="off"
+ customBorderThickness="2" borderAlpha=".6" cornerRadius="10">-->
+ <mx:Canvas styleName="sideCanvas" horizontalScrollPolicy="off" verticalScrollPolicy="off" x="-8" width="30" height="174" >
+ <mx:TabBar id="leftMenu"
+ styleName="sideMenu"
+ dataProvider="{LEFT_STATES.reverse()}"
+ rotation="90"
+ x="24"
+ y="4"
+ width="163"
+ buttonMode="true"
+ mouseDown="tabMouseDown(event);"
+ toggleOnClick="true"/>
+ </mx:Canvas>
+ <!--</commons:TransparentBorderCanvas>-->
+
+ <imocp:MainContainer x="29" y="0" id="containers" width="376" height="473"/>
+ <mx:Canvas x="412" styleName="sideCanvas" horizontalScrollPolicy="off" verticalScrollPolicy="off" width="40" height="155">
+ <mx:TabBar x="22" y="5" id="rightMenu" mouseDown="tabMouseDown(event);"
+ styleName="rightSideMenu"
+ dataProvider="{RIGHT_STATES.reverse()}"
+ rotation="90"
+ width="142"
+ buttonMode="true"
+ dragEnter="onDragEnter(event)"
+ toggleOnClick="true"/>
+ </mx:Canvas>
+ <!--</commons:TransparentBorderCanvas>-->
+</mx:Canvas>
diff --git a/emacs.d/nxhtml/tests/in/bug416505-nxhtml.el b/emacs.d/nxhtml/tests/in/bug416505-nxhtml.el
new file mode 100644
index 0000000..867bf53
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug416505-nxhtml.el
@@ -0,0 +1,45 @@
+;; NXHTML
+;;(load (concat vendor-path "/nxhtml/autostart.el"))
+
+(defconst mumamo-actionscript-tag-start-regex
+ (rx "<mx:Script>" (0+ space) "<![CDATA["))
+
+(defconst mumamo-actionscript-tag-end-regex
+ (rx "]]>" (0+ space) "</mx:Script>"))
+
+;; (defun mumamo-search-bw-exc-start-inlined-actionscript (pos min)
+;; (let ((exc-start (mumamo-chunk-start-bw-re pos min mumamo-actionscript-tag-start-regex)))
+;; (and exc-start
+;; (<= exc-start pos)
+;; (cons exc-start 'espresso-mode))))
+
+;; (defun mumamo-search-bw-exc-end-inlined-actionscript (pos min)
+;; (mumamo-chunk-end-bw-re pos min mumamo-actionscript-tag-end-regex))
+
+;; (defun mumamo-search-fw-exc-start-inlined-actionscript-old (pos max)
+;; (mumamo-chunk-start-fw-re pos max mumamo-actionscript-tag-start-regex))
+
+(defun mumamo-search-fw-exc-start-inlined-actionscript (pos max)
+ (let ((where (mumamo-chunk-start-fw-re pos max mumamo-actionscript-tag-start-regex)))
+ (when where
+ (list where 'js-mode))))
+
+(defun mumamo-search-fw-exc-end-inlined-actionscript (pos max)
+ (mumamo-chunk-end-fw-re pos max mumamo-actionscript-tag-end-regex))
+
+(defun mumamo-chunk-inlined-actionscript (pos min max)
+ ;; (mumamo-find-possible-chunk pos min max
+ ;; 'mumamo-search-bw-exc-start-inlined-actionscript
+ ;; 'mumamo-search-bw-exc-end-inlined-actionscript
+ ;; 'mumamo-search-fw-exc-start-inlined-actionscript-old
+ ;; 'mumamo-search-fw-exc-end-inlined-actionscript)
+ (mumamo-possible-chunk-forward pos max
+ 'mumamo-search-fw-exc-start-inlined-actionscript
+ 'mumamo-search-fw-exc-end-inlined-actionscript))
+
+(define-mumamo-multi-major-mode mxml-actionscript-mumamo-mode
+ "Turn on multiple major modes for MXML with main mode `nxml-mode'.
+This covers inlined style and script for mxml."
+ ("nXml Family" nxml-mode (mumamo-chunk-inlined-actionscript)))
+
+(add-to-list 'auto-mode-alist '("\\.mxml$" . mxml-actionscript-mumamo-mode))
diff --git a/emacs.d/nxhtml/tests/in/bug452676.php b/emacs.d/nxhtml/tests/in/bug452676.php
new file mode 100644
index 0000000..d47c8ee
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug452676.php
@@ -0,0 +1,12 @@
+
+<?php
+
+class Foo {
+ public $foo = array(
+ 'long' => <<<'LONG'
+lorem ipsum
+LONG
+);
+
+ public $bar = 1;
+ CancelOk
diff --git a/emacs.d/nxhtml/tests/in/bug463136.php b/emacs.d/nxhtml/tests/in/bug463136.php
new file mode 100644
index 0000000..6ed29f7
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug463136.php
@@ -0,0 +1,5 @@
+
+<body>
+ <?php
+echo "test";
+echo "test2"; \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/bug492366-test.php b/emacs.d/nxhtml/tests/in/bug492366-test.php
new file mode 100644
index 0000000..be84c75
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug492366-test.php
@@ -0,0 +1,21 @@
+<?php
+function render()
+{
+ $html =<<<HTML
+ <head>
+ </head>
+ <body>
+ <div id="some_id" class="some_class"></div>
+ <div id="some_id" class="some_class"></div>
+ <form method="post" id="" action="">
+ </form>
+ <form method="get" id="id2" action="do.php">
+ </form>
+ </body>
+HTML;
+
+echo $html;
+}
+
+render();
+ ?>
diff --git a/emacs.d/nxhtml/tests/in/bug495770-heredoc_demo.pl b/emacs.d/nxhtml/tests/in/bug495770-heredoc_demo.pl
new file mode 100644
index 0000000..562e695
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug495770-heredoc_demo.pl
@@ -0,0 +1,95 @@
+#!/usr/bin/perl
+# heredoc_demo.pl doom@kzsu.stanford.edu
+# December 10, 2009
+
+use warnings;
+use strict;
+$|=1;
+use Data::Dumper;
+
+use File::Path qw( mkpath );
+use File::Basename qw( fileparse basename dirname );
+use File::Copy qw( copy move );
+use Fatal qw( open close mkpath copy move );
+use Cwd qw( cwd abs_path );
+
+use Env qw(HOME);
+
+our $VERSION = 0.01;
+my $prog = basename($0);
+
+use Getopt::Std;
+my %opt = ();
+getopts('d', \%opt);
+my $DEBUG = $opt{d} || 1; # TODO set default to 0 when in production
+
+my ($title, $incantation, $god);
+
+my $skull=<<"END_SQL";
+ SELECT id, god, incantation
+ FROM spell, pantheon
+ WHERE pantheon.id = spell.pantheon AND
+ pantheon.name = 'lovecraft'
+END_SQL
+
+my $phfftp=<<"END_HTML";
+<HTML><HEAD><TITLE>$title</TITLE></HEAD>
+<BODY>
+<H2>$title</H2>
+<P>Speak not the dread words of $incantation
+lest ye invoke the $god.</P>
+</BODY></HTML>
+END_HTML
+
+print $skull, "\n";
+print $phfftp, "\n";
+
+__END__
+
+=head1 NAME
+
+heredoc_demo.pl - (( TODO insert brief description ))
+
+=head1 SYNOPSIS
+
+ heredoc_demo.pl -[options] [arguments]
+
+ Options:
+ -d debug
+
+=head1 OPTIONS
+
+=over 8
+
+=item B<-d>
+
+Turn on debug messages.
+
+=back
+
+=head1 DESCRIPTION
+
+B<heredoc_demo.pl> is a script which
+
+(( TODO insert explaination
+ This is stub documentation created by template.el. ))
+
+=head1 AUTHOR
+
+Joseph Brenner, E<lt>doom@kzsu.stanford.eduE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2009 by Joseph Brenner
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of either: the GNU General Public License as published
+by the Free Software Foundation; or the Artistic License.
+
+See http://dev.perl.org/licenses/ for more information.
+
+=head1 BUGS
+
+None reported... yet.
+
+=cut
diff --git a/emacs.d/nxhtml/tests/in/bug505554-nxhtml-download-messages.txt b/emacs.d/nxhtml/tests/in/bug505554-nxhtml-download-messages.txt
new file mode 100644
index 0000000..fef35a6
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug505554-nxhtml-download-messages.txt
@@ -0,0 +1,98 @@
+Wrote /home/ranko/.emacs.d/nxhtml/web-vcs-temp.tmp
+Updated "/home/ranko/.emacs.d/nxhtml/autostart.el"
+Invalid face reference: hi-gold [4 times]
+Reading [application/octet-stream]... 2k of 2k (100%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/web-vcs-temp.tmp
+Updated "/home/ranko/.emacs.d/nxhtml/autostart22.el"
+Invalid face reference: hi-gold
+Reading [application/octet-stream]... 77 bytes of 66 bytes (117%)
+Wrote /home/ranko/.emacs.d/nxhtml/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/emacs22.cmd" was ok
+Reading [application/octet-stream]... 158k of 158k (100%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/web-vcs-temp.tmp
+Updated "/home/ranko/.emacs.d/nxhtml/nxhtml-loaddefs.el"
+Reading [application/octet-stream]... 16k of 16k (100%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/web-vcs-temp.tmp
+Updated "/home/ranko/.emacs.d/nxhtml/nxhtmlmaint.el"
+Reading [text/plain]... 1k of 1k (100%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/README.txt" was ok
+Reading [application/octet-stream]... 18k of 18k (100%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/web-vcs-temp.tmp
+Downloaded "/home/ranko/.emacs.d/nxhtml/web-autoload.el"
+Reading [application/octet-stream]... 95k of 95k (100%) [2 times]
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/web-vcs-temp.tmp
+Downloaded "/home/ranko/.emacs.d/nxhtml/web-vcs.el"
+Contacting host: bazaar.launchpad.net:80
+Reading [application/octet-stream]... 5k of 5k (100%)
+Wrote /home/ranko/.emacs.d/nxhtml/alts/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/alts/find-recursive-orig.el" was ok
+Reading [application/octet-stream]... 23k of 23k (100%)
+Wrote /home/ranko/.emacs.d/nxhtml/alts/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/alts/javascript-mozlab.el" was ok
+Reading [application/octet-stream]... 97k of 97k (100%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/alts/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/alts/smarty-mode-vdebout.el" was ok
+Contacting host: bazaar.launchpad.net:80 [2 times]
+Reading [image/jpeg]... 25k of 25k (100%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/etc/img/pause/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/etc/img/pause/pause.jpg" was ok
+Reading [image/jpeg]... 26k of 26k (100%)
+Wrote /home/ranko/.emacs.d/nxhtml/etc/img/pause/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/etc/img/pause/pause2.jpg" was ok
+Contacting host: bazaar.launchpad.net:80
+Reading [application/octet-stream]... 1k of 1k (100%)
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/etc/schema/genshi-old.rnc" was ok
+Reading [text/xml]... 150 bytes of 139 bytes (108%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/etc/schema/genshi-schemas.xml" was ok
+Reading [application/octet-stream]... 2k of 2k (100%)
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+Updated "/home/ranko/.emacs.d/nxhtml/etc/schema/genshi.rnc"
+Reading [application/octet-stream]... 2k of 2k (100%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/etc/schema/mjt.rnc" was ok
+Reading [text/x-diff]... 1k of 1k (100%)
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/etc/schema/nxml-erb.patch" was ok
+Reading [application/octet-stream]... 1k of 1k (100%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+Downloaded "/home/ranko/.emacs.d/nxhtml/etc/schema/old-genshi.rnc"
+Reading [application/octet-stream]... 2k of 2k (100%)
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+Downloaded "/home/ranko/.emacs.d/nxhtml/etc/schema/old-qtmstr-xhtml.rnc"
+Reading [application/octet-stream]... 367 bytes of 356 bytes (103%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+Downloaded "/home/ranko/.emacs.d/nxhtml/etc/schema/old-xinclude.rnc"
+Reading [application/octet-stream]... 2k of 2k (100%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/etc/schema/qtmstr-xhtml-old.rnc" was ok
+Reading [application/octet-stream]... 2k of 2k (100%)
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+Updated "/home/ranko/.emacs.d/nxhtml/etc/schema/qtmstr-xhtml.rnc"
+Reading [application/octet-stream]... 3k of 3k (100%)
+Reading... done.
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+File "/home/ranko/.emacs.d/nxhtml/etc/schema/schema-path-patch.el" was ok
+Reading [application/octet-stream]... 890 bytes of 879 bytes (101%)
+Wrote /home/ranko/.emacs.d/nxhtml/etc/schema/web-vcs-temp.tmp
+Updated "/home/ranko/.emacs.d/nxhtml/etc/schema/xinclude.rnc"
+let*: Args out of range: 5023, 5047
+Mark set [2 times]
+Saved text from "Contacting host: bazaar.launchpad.net:80"
+call-interactively: End of buffer
+(New file)
diff --git a/emacs.d/nxhtml/tests/in/bug505554-sample.html.erb b/emacs.d/nxhtml/tests/in/bug505554-sample.html.erb
new file mode 100644
index 0000000..0380560
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug505554-sample.html.erb
@@ -0,0 +1,11 @@
+<h1><%= t('views.common.login') %></h1>
+
+<% form_tag session_path do -%>
+<p><%= label_tag(t('views.common.username')) %><br />
+<%= text_field_tag 'login', @login %></p>
+
+<p><%= label_tag(t('views.common.password')) %><br/>
+<%= password_field_tag 'password', nil %></p>
+
+<p><%= submit_tag(t('views.common.login_verb')) %></p>
+<% end -%>
diff --git a/emacs.d/nxhtml/tests/in/bug505726-foo.html b/emacs.d/nxhtml/tests/in/bug505726-foo.html
new file mode 100644
index 0000000..c738117
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug505726-foo.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" dir="ltr">
+<head>
+</head>
+
+<body>
+ <script type="text/javascript">
+ </script>
+</body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/bug509586.ghtml b/emacs.d/nxhtml/tests/in/bug509586.ghtml
new file mode 100644
index 0000000..275fd21
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug509586.ghtml
@@ -0,0 +1,16 @@
+<!DOCTYPE html PUBLIC
+"-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:py="http://genshi.edgewall.org/">
+ <head>
+ <title>Title</title>
+ </head>
+ <!-- To test this open this file in `genshi-nxhtml-mumamo-mode' and
+ add evaluate this: -->
+ <!-- (setq exec-path (cons "c:/python26/" exec-path)) -->
+ <!-- (add-hook 'python-mode-hook 'turn-on-eldoc-mode) -->
+ <body>
+ ${}
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/bug523065.jsp b/emacs.d/nxhtml/tests/in/bug523065.jsp
new file mode 100644
index 0000000..a696515
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug523065.jsp
@@ -0,0 +1,9 @@
+In JSP page, if we have a line like <% // some comments %>, then the "%>" is ignored by nxhtml.
+However if we write it like this:
+<% // some comments
+%>
+or
+<%
+// some comments
+%>
+then the page is parsed correctly
diff --git a/emacs.d/nxhtml/tests/in/bug523065.php b/emacs.d/nxhtml/tests/in/bug523065.php
new file mode 100644
index 0000000..5d64278
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug523065.php
@@ -0,0 +1,6 @@
+
+ <?php /* ?>
+ This is a comment
+ */
+ ?>
+ This is html
diff --git a/emacs.d/nxhtml/tests/in/bug529133-statemachine.py b/emacs.d/nxhtml/tests/in/bug529133-statemachine.py
new file mode 100644
index 0000000..26ba642
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug529133-statemachine.py
@@ -0,0 +1,1491 @@
+# $Id: statemachine.py 6188 2009-10-28 14:08:17Z milde $
+# Author: David Goodger <goodger@python.org>
+# Copyright: This module has been placed in the public domain.
+
+"""
+A finite state machine specialized for regular-expression-based text filters,
+this module defines the following classes:
+
+- `StateMachine`, a state machine
+- `State`, a state superclass
+- `StateMachineWS`, a whitespace-sensitive version of `StateMachine`
+- `StateWS`, a state superclass for use with `StateMachineWS`
+- `SearchStateMachine`, uses `re.search()` instead of `re.match()`
+- `SearchStateMachineWS`, uses `re.search()` instead of `re.match()`
+- `ViewList`, extends standard Python lists.
+- `StringList`, string-specific ViewList.
+
+Exception classes:
+
+- `StateMachineError`
+- `UnknownStateError`
+- `DuplicateStateError`
+- `UnknownTransitionError`
+- `DuplicateTransitionError`
+- `TransitionPatternNotFound`
+- `TransitionMethodNotFound`
+- `UnexpectedIndentationError`
+- `TransitionCorrection`: Raised to switch to another transition.
+- `StateCorrection`: Raised to switch to another state & transition.
+
+Functions:
+
+- `string2lines()`: split a multi-line string into a list of one-line strings
+
+
+How To Use This Module
+======================
+(See the individual classes, methods, and attributes for details.)
+
+1. Import it: ``import statemachine`` or ``from statemachine import ...``.
+ You will also need to ``import re``.
+
+2. Derive a subclass of `State` (or `StateWS`) for each state in your state
+ machine::
+
+ class MyState(statemachine.State):
+
+ Within the state's class definition:
+
+ a) Include a pattern for each transition, in `State.patterns`::
+
+ patterns = {'atransition': r'pattern', ...}
+
+ b) Include a list of initial transitions to be set up automatically, in
+ `State.initial_transitions`::
+
+ initial_transitions = ['atransition', ...]
+
+ c) Define a method for each transition, with the same name as the
+ transition pattern::
+
+ def atransition(self, match, context, next_state):
+ # do something
+ result = [...] # a list
+ return context, next_state, result
+ # context, next_state may be altered
+
+ Transition methods may raise an `EOFError` to cut processing short.
+
+ d) You may wish to override the `State.bof()` and/or `State.eof()` implicit
+ transition methods, which handle the beginning- and end-of-file.
+
+ e) In order to handle nested processing, you may wish to override the
+ attributes `State.nested_sm` and/or `State.nested_sm_kwargs`.
+
+ If you are using `StateWS` as a base class, in order to handle nested
+ indented blocks, you may wish to:
+
+ - override the attributes `StateWS.indent_sm`,
+ `StateWS.indent_sm_kwargs`, `StateWS.known_indent_sm`, and/or
+ `StateWS.known_indent_sm_kwargs`;
+ - override the `StateWS.blank()` method; and/or
+ - override or extend the `StateWS.indent()`, `StateWS.known_indent()`,
+ and/or `StateWS.firstknown_indent()` methods.
+
+3. Create a state machine object::
+
+ sm = StateMachine(state_classes=[MyState, ...],
+ initial_state='MyState')
+
+4. Obtain the input text, which needs to be converted into a tab-free list of
+ one-line strings. For example, to read text from a file called
+ 'inputfile'::
+
+ input_string = open('inputfile').read()
+ input_lines = statemachine.string2lines(input_string)
+
+5. Run the state machine on the input text and collect the results, a list::
+
+ results = sm.run(input_lines)
+
+6. Remove any lingering circular references::
+
+ sm.unlink()
+"""
+
+__docformat__ = 'restructuredtext'
+
+import sys
+import re
+import types
+import unicodedata
+
+
+class StateMachine:
+
+ """
+ A finite state machine for text filters using regular expressions.
+
+ The input is provided in the form of a list of one-line strings (no
+ newlines). States are subclasses of the `State` class. Transitions consist
+ of regular expression patterns and transition methods, and are defined in
+ each state.
+
+ The state machine is started with the `run()` method, which returns the
+ results of processing in a list.
+ """
+
+ def __init__(self, state_classes, initial_state, debug=0):
+ """
+ Initialize a `StateMachine` object; add state objects.
+
+ Parameters:
+
+ - `state_classes`: a list of `State` (sub)classes.
+ - `initial_state`: a string, the class name of the initial state.
+ - `debug`: a boolean; produce verbose output if true (nonzero).
+ """
+
+ self.input_lines = None
+ """`StringList` of input lines (without newlines).
+ Filled by `self.run()`."""
+
+ self.input_offset = 0
+ """Offset of `self.input_lines` from the beginning of the file."""
+
+ self.line = None
+ """Current input line."""
+
+ self.line_offset = -1
+ """Current input line offset from beginning of `self.input_lines`."""
+
+ self.debug = debug
+ """Debugging mode on/off."""
+
+ self.initial_state = initial_state
+ """The name of the initial state (key to `self.states`)."""
+
+ self.current_state = initial_state
+ """The name of the current state (key to `self.states`)."""
+
+ self.states = {}
+ """Mapping of {state_name: State_object}."""
+
+ self.add_states(state_classes)
+
+ self.observers = []
+ """List of bound methods or functions to call whenever the current
+ line changes. Observers are called with one argument, ``self``.
+ Cleared at the end of `run()`."""
+
+ def unlink(self):
+ """Remove circular references to objects no longer required."""
+ for state in self.states.values():
+ state.unlink()
+ self.states = None
+
+ def run(self, input_lines, input_offset=0, context=None,
+ input_source=None, initial_state=None):
+ """
+ Run the state machine on `input_lines`. Return results (a list).
+
+ Reset `self.line_offset` and `self.current_state`. Run the
+ beginning-of-file transition. Input one line at a time and check for a
+ matching transition. If a match is found, call the transition method
+ and possibly change the state. Store the context returned by the
+ transition method to be passed on to the next transition matched.
+ Accumulate the results returned by the transition methods in a list.
+ Run the end-of-file transition. Finally, return the accumulated
+ results.
+
+ Parameters:
+
+ - `input_lines`: a list of strings without newlines, or `StringList`.
+ - `input_offset`: the line offset of `input_lines` from the beginning
+ of the file.
+ - `context`: application-specific storage.
+ - `input_source`: name or path of source of `input_lines`.
+ - `initial_state`: name of initial state.
+ """
+ self.runtime_init()
+ if isinstance(input_lines, StringList):
+ self.input_lines = input_lines
+ else:
+ self.input_lines = StringList(input_lines, source=input_source)
+ self.input_offset = input_offset
+ self.line_offset = -1
+ self.current_state = initial_state or self.initial_state
+ if self.debug:
+ print >>sys.stderr, (
+ '\nStateMachine.run: input_lines (line_offset=%s):\n| %s'
+ % (self.line_offset, '\n| '.join(self.input_lines)))
+ transitions = None
+ results = []
+ state = self.get_state()
+ try:
+ if self.debug:
+ print >>sys.stderr, ('\nStateMachine.run: bof transition')
+ context, result = state.bof(context)
+ results.extend(result)
+ while 1:
+ try:
+ try:
+ self.next_line()
+ if self.debug:
+ source, offset = self.input_lines.info(
+ self.line_offset)
+ print >>sys.stderr, (
+ '\nStateMachine.run: line (source=%r, '
+ 'offset=%r):\n| %s'
+ % (source, offset, self.line))
+ context, next_state, result = self.check_line(
+ context, state, transitions)
+ except EOFError:
+ if self.debug:
+ print >>sys.stderr, (
+ '\nStateMachine.run: %s.eof transition'
+ % state.__class__.__name__)
+ result = state.eof(context)
+ results.extend(result)
+ break
+ else:
+ results.extend(result)
+ except TransitionCorrection, exception:
+ self.previous_line() # back up for another try
+ transitions = (exception.args[0],)
+ if self.debug:
+ print >>sys.stderr, (
+ '\nStateMachine.run: TransitionCorrection to '
+ 'state "%s", transition %s.'
+ % (state.__class__.__name__, transitions[0]))
+ continue
+ except StateCorrection, exception:
+ self.previous_line() # back up for another try
+ next_state = exception.args[0]
+ if len(exception.args) == 1:
+ transitions = None
+ else:
+ transitions = (exception.args[1],)
+ if self.debug:
+ print >>sys.stderr, (
+ '\nStateMachine.run: StateCorrection to state '
+ '"%s", transition %s.'
+ % (next_state, transitions[0]))
+ else:
+ transitions = None
+ state = self.get_state(next_state)
+ except:
+ if self.debug:
+ self.error()
+ raise
+ self.observers = []
+ return results
+
+ def get_state(self, next_state=None):
+ """
+ Return current state object; set it first if `next_state` given.
+
+ Parameter `next_state`: a string, the name of the next state.
+
+ Exception: `UnknownStateError` raised if `next_state` unknown.
+ """
+ if next_state:
+ if self.debug and next_state != self.current_state:
+ print >>sys.stderr, \
+ ('\nStateMachine.get_state: Changing state from '
+ '"%s" to "%s" (input line %s).'
+ % (self.current_state, next_state,
+ self.abs_line_number()))
+ self.current_state = next_state
+ try:
+ return self.states[self.current_state]
+ except KeyError:
+ raise UnknownStateError(self.current_state)
+
+ def next_line(self, n=1):
+ """Load `self.line` with the `n`'th next line and return it."""
+ try:
+ try:
+ self.line_offset += n
+ self.line = self.input_lines[self.line_offset]
+ except IndexError:
+ self.line = None
+ raise EOFError
+ return self.line
+ finally:
+ self.notify_observers()
+
+ def is_next_line_blank(self):
+ """Return 1 if the next line is blank or non-existant."""
+ try:
+ return not self.input_lines[self.line_offset + 1].strip()
+ except IndexError:
+ return 1
+
+ def at_eof(self):
+ """Return 1 if the input is at or past end-of-file."""
+ return self.line_offset >= len(self.input_lines) - 1
+
+ def at_bof(self):
+ """Return 1 if the input is at or before beginning-of-file."""
+ return self.line_offset <= 0
+
+ def previous_line(self, n=1):
+ """Load `self.line` with the `n`'th previous line and return it."""
+ self.line_offset -= n
+ if self.line_offset < 0:
+ self.line = None
+ else:
+ self.line = self.input_lines[self.line_offset]
+ self.notify_observers()
+ return self.line
+
+ def goto_line(self, line_offset):
+ """Jump to absolute line offset `line_offset`, load and return it."""
+ try:
+ try:
+ self.line_offset = line_offset - self.input_offset
+ self.line = self.input_lines[self.line_offset]
+ except IndexError:
+ self.line = None
+ raise EOFError
+ return self.line
+ finally:
+ self.notify_observers()
+
+ def get_source(self, line_offset):
+ """Return source of line at absolute line offset `line_offset`."""
+ return self.input_lines.source(line_offset - self.input_offset)
+
+ def get_source_spot(self, line_offset=None):
+ """Return dict with source position of current or given line"""
+ if line_offset is None:
+ line_offset = self.line_offset
+ else:
+ line_offset -= self.input_offset
+ (source, offset) = self.input_lines.info(line_offset)
+ return {'source': source, 'line': offset + 1}
+
+ def abs_line_offset(self):
+ """Return line offset of current line, from beginning of file."""
+ return self.line_offset + self.input_offset
+
+ def abs_line_number(self):
+ """Return line number of current line (counting from 1)."""
+ return self.line_offset + self.input_offset + 1
+
+ def insert_input(self, input_lines, source):
+ self.input_lines.insert(self.line_offset + 1, '',
+ source='internal padding after ' + source)
+ self.input_lines.insert(self.line_offset + 1, '',
+ source='internal padding before '+ source)
+ self.input_lines.insert(self.line_offset + 2,
+ StringList(input_lines, source))
+
+ def get_text_block(self, flush_left=0):
+ """
+ Return a contiguous block of text.
+
+ If `flush_left` is true, raise `UnexpectedIndentationError` if an
+ indented line is encountered before the text block ends (with a blank
+ line).
+ """
+ try:
+ block = self.input_lines.get_text_block(self.line_offset,
+ flush_left)
+ self.next_line(len(block) - 1)
+ return block
+ except UnexpectedIndentationError, error:
+ block, source, lineno = error.args
+ self.next_line(len(block) - 1) # advance to last line of block
+ raise
+
+ def check_line(self, context, state, transitions=None):
+ """
+ Examine one line of input for a transition match & execute its method.
+
+ Parameters:
+
+ - `context`: application-dependent storage.
+ - `state`: a `State` object, the current state.
+ - `transitions`: an optional ordered list of transition names to try,
+ instead of ``state.transition_order``.
+
+ Return the values returned by the transition method:
+
+ - context: possibly modified from the parameter `context`;
+ - next state name (`State` subclass name);
+ - the result output of the transition, a list.
+
+ When there is no match, ``state.no_match()`` is called and its return
+ value is returned.
+ """
+ if transitions is None:
+ transitions = state.transition_order
+ state_correction = None
+ if self.debug:
+ print >>sys.stderr, (
+ '\nStateMachine.check_line: state="%s", transitions=%r.'
+ % (state.__class__.__name__, transitions))
+ for name in transitions:
+ pattern, method, next_state = state.transitions[name]
+ match = pattern.match(self.line)
+ if match:
+ if self.debug:
+ print >>sys.stderr, (
+ '\nStateMachine.check_line: Matched transition '
+ '"%s" in state "%s".'
+ % (name, state.__class__.__name__))
+ return method(match, context, next_state)
+ else:
+ if self.debug:
+ print >>sys.stderr, (
+ '\nStateMachine.check_line: No match in state "%s".'
+ % state.__class__.__name__)
+ return state.no_match(context, transitions)
+
+ def add_state(self, state_class):
+ """
+ Initialize & add a `state_class` (`State` subclass) object.
+
+ Exception: `DuplicateStateError` raised if `state_class` was already
+ added.
+ """
+ statename = state_class.__name__
+ if statename in self.states:
+ raise DuplicateStateError(statename)
+ self.states[statename] = state_class(self, self.debug)
+
+ def add_states(self, state_classes):
+ """
+ Add `state_classes` (a list of `State` subclasses).
+ """
+ for state_class in state_classes:
+ self.add_state(state_class)
+
+ def runtime_init(self):
+ """
+ Initialize `self.states`.
+ """
+ for state in self.states.values():
+ state.runtime_init()
+
+ def error(self):
+ """Report error details."""
+ type, value, module, line, function = _exception_data()
+ print >>sys.stderr, '%s: %s' % (type, value)
+ print >>sys.stderr, 'input line %s' % (self.abs_line_number())
+ print >>sys.stderr, ('module %s, line %s, function %s'
+ % (module, line, function))
+
+ def attach_observer(self, observer):
+ """
+ The `observer` parameter is a function or bound method which takes two
+ arguments, the source and offset of the current line.
+ """
+ self.observers.append(observer)
+
+ def detach_observer(self, observer):
+ self.observers.remove(observer)
+
+ def notify_observers(self):
+ for observer in self.observers:
+ try:
+ info = self.input_lines.info(self.line_offset)
+ except IndexError:
+ info = (None, None)
+ observer(*info)
+
+
+class State:
+
+ """
+ State superclass. Contains a list of transitions, and transition methods.
+
+ Transition methods all have the same signature. They take 3 parameters:
+
+ - An `re` match object. ``match.string`` contains the matched input line,
+ ``match.start()`` gives the start index of the match, and
+ ``match.end()`` gives the end index.
+ - A context object, whose meaning is application-defined (initial value
+ ``None``). It can be used to store any information required by the state
+ machine, and the retured context is passed on to the next transition
+ method unchanged.
+ - The name of the next state, a string, taken from the transitions list;
+ normally it is returned unchanged, but it may be altered by the
+ transition method if necessary.
+
+ Transition methods all return a 3-tuple:
+
+ - A context object, as (potentially) modified by the transition method.
+ - The next state name (a return value of ``None`` means no state change).
+ - The processing result, a list, which is accumulated by the state
+ machine.
+
+ Transition methods may raise an `EOFError` to cut processing short.
+
+ There are two implicit transitions, and corresponding transition methods
+ are defined: `bof()` handles the beginning-of-file, and `eof()` handles
+ the end-of-file. These methods have non-standard signatures and return
+ values. `bof()` returns the initial context and results, and may be used
+ to return a header string, or do any other processing needed. `eof()`
+ should handle any remaining context and wrap things up; it returns the
+ final processing result.
+
+ Typical applications need only subclass `State` (or a subclass), set the
+ `patterns` and `initial_transitions` class attributes, and provide
+ corresponding transition methods. The default object initialization will
+ take care of constructing the list of transitions.
+ """
+
+ patterns = None
+ """
+ {Name: pattern} mapping, used by `make_transition()`. Each pattern may
+ be a string or a compiled `re` pattern. Override in subclasses.
+ """
+
+ initial_transitions = None
+ """
+ A list of transitions to initialize when a `State` is instantiated.
+ Each entry is either a transition name string, or a (transition name, next
+ state name) pair. See `make_transitions()`. Override in subclasses.
+ """
+
+ nested_sm = None
+ """
+ The `StateMachine` class for handling nested processing.
+
+ If left as ``None``, `nested_sm` defaults to the class of the state's
+ controlling state machine. Override it in subclasses to avoid the default.
+ """
+
+ nested_sm_kwargs = None
+ """
+ Keyword arguments dictionary, passed to the `nested_sm` constructor.
+
+ Two keys must have entries in the dictionary:
+
+ - Key 'state_classes' must be set to a list of `State` classes.
+ - Key 'initial_state' must be set to the name of the initial state class.
+
+ If `nested_sm_kwargs` is left as ``None``, 'state_classes' defaults to the
+ class of the current state, and 'initial_state' defaults to the name of
+ the class of the current state. Override in subclasses to avoid the
+ defaults.
+ """
+
+ def __init__(self, state_machine, debug=0):
+ """
+ Initialize a `State` object; make & add initial transitions.
+
+ Parameters:
+
+ - `statemachine`: the controlling `StateMachine` object.
+ - `debug`: a boolean; produce verbose output if true (nonzero).
+ """
+
+ self.transition_order = []
+ """A list of transition names in search order."""
+
+ self.transitions = {}
+ """
+ A mapping of transition names to 3-tuples containing
+ (compiled_pattern, transition_method, next_state_name). Initialized as
+ an instance attribute dynamically (instead of as a class attribute)
+ because it may make forward references to patterns and methods in this
+ or other classes.
+ """
+
+ self.add_initial_transitions()
+
+ self.state_machine = state_machine
+ """A reference to the controlling `StateMachine` object."""
+
+ self.debug = debug
+ """Debugging mode on/off."""
+
+ if self.nested_sm is None:
+ self.nested_sm = self.state_machine.__class__
+ if self.nested_sm_kwargs is None:
+ self.nested_sm_kwargs = {'state_classes': [self.__class__],
+ 'initial_state': self.__class__.__name__}
+
+ def runtime_init(self):
+ """
+ Initialize this `State` before running the state machine; called from
+ `self.state_machine.run()`.
+ """
+ pass
+
+ def unlink(self):
+ """Remove circular references to objects no longer required."""
+ self.state_machine = None
+
+ def add_initial_transitions(self):
+ """Make and add transitions listed in `self.initial_transitions`."""
+ if self.initial_transitions:
+ names, transitions = self.make_transitions(
+ self.initial_transitions)
+ self.add_transitions(names, transitions)
+
+ def add_transitions(self, names, transitions):
+ """
+ Add a list of transitions to the start of the transition list.
+
+ Parameters:
+
+ - `names`: a list of transition names.
+ - `transitions`: a mapping of names to transition tuples.
+
+ Exceptions: `DuplicateTransitionError`, `UnknownTransitionError`.
+ """
+ for name in names:
+ if name in self.transitions:
+ raise DuplicateTransitionError(name)
+ if name not in transitions:
+ raise UnknownTransitionError(name)
+ self.transition_order[:0] = names
+ self.transitions.update(transitions)
+
+ def add_transition(self, name, transition):
+ """
+ Add a transition to the start of the transition list.
+
+ Parameter `transition`: a ready-made transition 3-tuple.
+
+ Exception: `DuplicateTransitionError`.
+ """
+ if name in self.transitions:
+ raise DuplicateTransitionError(name)
+ self.transition_order[:0] = [name]
+ self.transitions[name] = transition
+
+ def remove_transition(self, name):
+ """
+ Remove a transition by `name`.
+
+ Exception: `UnknownTransitionError`.
+ """
+ try:
+ del self.transitions[name]
+ self.transition_order.remove(name)
+ except:
+ raise UnknownTransitionError(name)
+
+ def make_transition(self, name, next_state=None):
+ """
+ Make & return a transition tuple based on `name`.
+
+ This is a convenience function to simplify transition creation.
+
+ Parameters:
+
+ - `name`: a string, the name of the transition pattern & method. This
+ `State` object must have a method called '`name`', and a dictionary
+ `self.patterns` containing a key '`name`'.
+ - `next_state`: a string, the name of the next `State` object for this
+ transition. A value of ``None`` (or absent) implies no state change
+ (i.e., continue with the same state).
+
+ Exceptions: `TransitionPatternNotFound`, `TransitionMethodNotFound`.
+ """
+ if next_state is None:
+ next_state = self.__class__.__name__
+ try:
+ pattern = self.patterns[name]
+ if not hasattr(pattern, 'match'):
+ pattern = re.compile(pattern)
+ except KeyError:
+ raise TransitionPatternNotFound(
+ '%s.patterns[%r]' % (self.__class__.__name__, name))
+ try:
+ method = getattr(self, name)
+ except AttributeError:
+ raise TransitionMethodNotFound(
+ '%s.%s' % (self.__class__.__name__, name))
+ return (pattern, method, next_state)
+
+ def make_transitions(self, name_list):
+ """
+ Return a list of transition names and a transition mapping.
+
+ Parameter `name_list`: a list, where each entry is either a transition
+ name string, or a 1- or 2-tuple (transition name, optional next state
+ name).
+ """
+ stringtype = type('')
+ names = []
+ transitions = {}
+ for namestate in name_list:
+ if type(namestate) is stringtype:
+ transitions[namestate] = self.make_transition(namestate)
+ names.append(namestate)
+ else:
+ transitions[namestate[0]] = self.make_transition(*namestate)
+ names.append(namestate[0])
+ return names, transitions
+
+ def no_match(self, context, transitions):
+ """
+ Called when there is no match from `StateMachine.check_line()`.
+
+ Return the same values returned by transition methods:
+
+ - context: unchanged;
+ - next state name: ``None``;
+ - empty result list.
+
+ Override in subclasses to catch this event.
+ """
+ return context, None, []
+
+ def bof(self, context):
+ """
+ Handle beginning-of-file. Return unchanged `context`, empty result.
+
+ Override in subclasses.
+
+ Parameter `context`: application-defined storage.
+ """
+ return context, []
+
+ def eof(self, context):
+ """
+ Handle end-of-file. Return empty result.
+
+ Override in subclasses.
+
+ Parameter `context`: application-defined storage.
+ """
+ return []
+
+ def nop(self, match, context, next_state):
+ """
+ A "do nothing" transition method.
+
+ Return unchanged `context` & `next_state`, empty result. Useful for
+ simple state changes (actionless transitions).
+ """
+ return context, next_state, []
+
+
+class StateMachineWS(StateMachine):
+
+ """
+ `StateMachine` subclass specialized for whitespace recognition.
+
+ There are three methods provided for extracting indented text blocks:
+
+ - `get_indented()`: use when the indent is unknown.
+ - `get_known_indented()`: use when the indent is known for all lines.
+ - `get_first_known_indented()`: use when only the first line's indent is
+ known.
+ """
+
+ def get_indented(self, until_blank=0, strip_indent=1):
+ """
+ Return a block of indented lines of text, and info.
+
+ Extract an indented block where the indent is unknown for all lines.
+
+ :Parameters:
+ - `until_blank`: Stop collecting at the first blank line if true
+ (1).
+ - `strip_indent`: Strip common leading indent if true (1,
+ default).
+
+ :Return:
+ - the indented block (a list of lines of text),
+ - its indent,
+ - its first line offset from BOF, and
+ - whether or not it finished with a blank line.
+ """
+ offset = self.abs_line_offset()
+ indented, indent, blank_finish = self.input_lines.get_indented(
+ self.line_offset, until_blank, strip_indent)
+ if indented:
+ self.next_line(len(indented) - 1) # advance to last indented line
+ while indented and not indented[0].strip():
+ indented.trim_start()
+ offset += 1
+ return indented, indent, offset, blank_finish
+
+ def get_known_indented(self, indent, until_blank=0, strip_indent=1):
+ """
+ Return an indented block and info.
+
+ Extract an indented block where the indent is known for all lines.
+ Starting with the current line, extract the entire text block with at
+ least `indent` indentation (which must be whitespace, except for the
+ first line).
+
+ :Parameters:
+ - `indent`: The number of indent columns/characters.
+ - `until_blank`: Stop collecting at the first blank line if true
+ (1).
+ - `strip_indent`: Strip `indent` characters of indentation if true
+ (1, default).
+
+ :Return:
+ - the indented block,
+ - its first line offset from BOF, and
+ - whether or not it finished with a blank line.
+ """
+ offset = self.abs_line_offset()
+ indented, indent, blank_finish = self.input_lines.get_indented(
+ self.line_offset, until_blank, strip_indent,
+ block_indent=indent)
+ self.next_line(len(indented) - 1) # advance to last indented line
+ while indented and not indented[0].strip():
+ indented.trim_start()
+ offset += 1
+ return indented, offset, blank_finish
+
+ def get_first_known_indented(self, indent, until_blank=0, strip_indent=1,
+ strip_top=1):
+ """
+ Return an indented block and info.
+
+ Extract an indented block where the indent is known for the first line
+ and unknown for all other lines.
+
+ :Parameters:
+ - `indent`: The first line's indent (# of columns/characters).
+ - `until_blank`: Stop collecting at the first blank line if true
+ (1).
+ - `strip_indent`: Strip `indent` characters of indentation if true
+ (1, default).
+ - `strip_top`: Strip blank lines from the beginning of the block.
+
+ :Return:
+ - the indented block,
+ - its indent,
+ - its first line offset from BOF, and
+ - whether or not it finished with a blank line.
+ """
+ offset = self.abs_line_offset()
+ indented, indent, blank_finish = self.input_lines.get_indented(
+ self.line_offset, until_blank, strip_indent,
+ first_indent=indent)
+ self.next_line(len(indented) - 1) # advance to last indented line
+ if strip_top:
+ while indented and not indented[0].strip():
+ indented.trim_start()
+ offset += 1
+ return indented, indent, offset, blank_finish
+
+
+class StateWS(State):
+
+ """
+ State superclass specialized for whitespace (blank lines & indents).
+
+ Use this class with `StateMachineWS`. The transitions 'blank' (for blank
+ lines) and 'indent' (for indented text blocks) are added automatically,
+ before any other transitions. The transition method `blank()` handles
+ blank lines and `indent()` handles nested indented blocks. Indented
+ blocks trigger a new state machine to be created by `indent()` and run.
+ The class of the state machine to be created is in `indent_sm`, and the
+ constructor keyword arguments are in the dictionary `indent_sm_kwargs`.
+
+ The methods `known_indent()` and `firstknown_indent()` are provided for
+ indented blocks where the indent (all lines' and first line's only,
+ respectively) is known to the transition method, along with the attributes
+ `known_indent_sm` and `known_indent_sm_kwargs`. Neither transition method
+ is triggered automatically.
+ """
+
+ indent_sm = None
+ """
+ The `StateMachine` class handling indented text blocks.
+
+ If left as ``None``, `indent_sm` defaults to the value of
+ `State.nested_sm`. Override it in subclasses to avoid the default.
+ """
+
+ indent_sm_kwargs = None
+ """
+ Keyword arguments dictionary, passed to the `indent_sm` constructor.
+
+ If left as ``None``, `indent_sm_kwargs` defaults to the value of
+ `State.nested_sm_kwargs`. Override it in subclasses to avoid the default.
+ """
+
+ known_indent_sm = None
+ """
+ The `StateMachine` class handling known-indented text blocks.
+
+ If left as ``None``, `known_indent_sm` defaults to the value of
+ `indent_sm`. Override it in subclasses to avoid the default.
+ """
+
+ known_indent_sm_kwargs = None
+ """
+ Keyword arguments dictionary, passed to the `known_indent_sm` constructor.
+
+ If left as ``None``, `known_indent_sm_kwargs` defaults to the value of
+ `indent_sm_kwargs`. Override it in subclasses to avoid the default.
+ """
+
+ ws_patterns = {'blank': ' *$',
+ 'indent': ' +'}
+ """Patterns for default whitespace transitions. May be overridden in
+ subclasses."""
+
+ ws_initial_transitions = ('blank', 'indent')
+ """Default initial whitespace transitions, added before those listed in
+ `State.initial_transitions`. May be overridden in subclasses."""
+
+ def __init__(self, state_machine, debug=0):
+ """
+ Initialize a `StateSM` object; extends `State.__init__()`.
+
+ Check for indent state machine attributes, set defaults if not set.
+ """
+ State.__init__(self, state_machine, debug)
+ if self.indent_sm is None:
+ self.indent_sm = self.nested_sm
+ if self.indent_sm_kwargs is None:
+ self.indent_sm_kwargs = self.nested_sm_kwargs
+ if self.known_indent_sm is None:
+ self.known_indent_sm = self.indent_sm
+ if self.known_indent_sm_kwargs is None:
+ self.known_indent_sm_kwargs = self.indent_sm_kwargs
+
+ def add_initial_transitions(self):
+ """
+ Add whitespace-specific transitions before those defined in subclass.
+
+ Extends `State.add_initial_transitions()`.
+ """
+ State.add_initial_transitions(self)
+ if self.patterns is None:
+ self.patterns = {}
+ self.patterns.update(self.ws_patterns)
+ names, transitions = self.make_transitions(
+ self.ws_initial_transitions)
+ self.add_transitions(names, transitions)
+
+ def blank(self, match, context, next_state):
+ """Handle blank lines. Does nothing. Override in subclasses."""
+ return self.nop(match, context, next_state)
+
+ def indent(self, match, context, next_state):
+ """
+ Handle an indented text block. Extend or override in subclasses.
+
+ Recursively run the registered state machine for indented blocks
+ (`self.indent_sm`).
+ """
+ indented, indent, line_offset, blank_finish = \
+ self.state_machine.get_indented()
+ sm = self.indent_sm(debug=self.debug, **self.indent_sm_kwargs)
+ results = sm.run(indented, input_offset=line_offset)
+ return context, next_state, results
+
+ def known_indent(self, match, context, next_state):
+ """
+ Handle a known-indent text block. Extend or override in subclasses.
+
+ Recursively run the registered state machine for known-indent indented
+ blocks (`self.known_indent_sm`). The indent is the length of the
+ match, ``match.end()``.
+ """
+ indented, line_offset, blank_finish = \
+ self.state_machine.get_known_indented(match.end())
+ sm = self.known_indent_sm(debug=self.debug,
+ **self.known_indent_sm_kwargs)
+ results = sm.run(indented, input_offset=line_offset)
+ return context, next_state, results
+
+ def first_known_indent(self, match, context, next_state):
+ """
+ Handle an indented text block (first line's indent known).
+
+ Extend or override in subclasses.
+
+ Recursively run the registered state machine for known-indent indented
+ blocks (`self.known_indent_sm`). The indent is the length of the
+ match, ``match.end()``.
+ """
+ indented, line_offset, blank_finish = \
+ self.state_machine.get_first_known_indented(match.end())
+ sm = self.known_indent_sm(debug=self.debug,
+ **self.known_indent_sm_kwargs)
+ results = sm.run(indented, input_offset=line_offset)
+ return context, next_state, results
+
+
+class _SearchOverride:
+
+ """
+ Mix-in class to override `StateMachine` regular expression behavior.
+
+ Changes regular expression matching, from the default `re.match()`
+ (succeeds only if the pattern matches at the start of `self.line`) to
+ `re.search()` (succeeds if the pattern matches anywhere in `self.line`).
+ When subclassing a `StateMachine`, list this class **first** in the
+ inheritance list of the class definition.
+ """
+
+ def match(self, pattern):
+ """
+ Return the result of a regular expression search.
+
+ Overrides `StateMachine.match()`.
+
+ Parameter `pattern`: `re` compiled regular expression.
+ """
+ return pattern.search(self.line)
+
+
+class SearchStateMachine(_SearchOverride, StateMachine):
+ """`StateMachine` which uses `re.search()` instead of `re.match()`."""
+ pass
+
+
+class SearchStateMachineWS(_SearchOverride, StateMachineWS):
+ """`StateMachineWS` which uses `re.search()` instead of `re.match()`."""
+ pass
+
+
+class ViewList:
+
+ """
+ List with extended functionality: slices of ViewList objects are child
+ lists, linked to their parents. Changes made to a child list also affect
+ the parent list. A child list is effectively a "view" (in the SQL sense)
+ of the parent list. Changes to parent lists, however, do *not* affect
+ active child lists. If a parent list is changed, any active child lists
+ should be recreated.
+
+ The start and end of the slice can be trimmed using the `trim_start()` and
+ `trim_end()` methods, without affecting the parent list. The link between
+ child and parent lists can be broken by calling `disconnect()` on the
+ child list.
+
+ Also, ViewList objects keep track of the source & offset of each item.
+ This information is accessible via the `source()`, `offset()`, and
+ `info()` methods.
+ """
+
+ def __init__(self, initlist=None, source=None, items=None,
+ parent=None, parent_offset=None):
+ self.data = []
+ """The actual list of data, flattened from various sources."""
+
+ self.items = []
+ """A list of (source, offset) pairs, same length as `self.data`: the
+ source of each line and the offset of each line from the beginning of
+ its source."""
+
+ self.parent = parent
+ """The parent list."""
+
+ self.parent_offset = parent_offset
+ """Offset of this list from the beginning of the parent list."""
+
+ if isinstance(initlist, ViewList):
+ self.data = initlist.data[:]
+ self.items = initlist.items[:]
+ elif initlist is not None:
+ self.data = list(initlist)
+ if items:
+ self.items = items
+ else:
+ self.items = [(source, i) for i in range(len(initlist))]
+ assert len(self.data) == len(self.items), 'data mismatch'
+
+ def __str__(self):
+ return str(self.data)
+
+ def __repr__(self):
+ return '%s(%s, items=%s)' % (self.__class__.__name__,
+ self.data, self.items)
+
+ def __lt__(self, other): return self.data < self.__cast(other)
+ def __le__(self, other): return self.data <= self.__cast(other)
+ def __eq__(self, other): return self.data == self.__cast(other)
+ def __ne__(self, other): return self.data != self.__cast(other)
+ def __gt__(self, other): return self.data > self.__cast(other)
+ def __ge__(self, other): return self.data >= self.__cast(other)
+ def __cmp__(self, other): return cmp(self.data, self.__cast(other))
+
+ def __cast(self, other):
+ if isinstance(other, ViewList):
+ return other.data
+ else:
+ return other
+
+ def __contains__(self, item): return item in self.data
+ def __len__(self): return len(self.data)
+
+ # The __getitem__()/__setitem__() methods check whether the index
+ # is a slice first, since indexing a native list with a slice object
+ # just works.
+
+ def __getitem__(self, i):
+ if isinstance(i, types.SliceType):
+ assert i.step in (None, 1), 'cannot handle slice with stride'
+ return self.__class__(self.data[i.start:i.stop],
+ items=self.items[i.start:i.stop],
+ parent=self, parent_offset=i.start or 0)
+ else:
+ return self.data[i]
+
+ def __setitem__(self, i, item):
+ if isinstance(i, types.SliceType):
+ assert i.step in (None, 1), 'cannot handle slice with stride'
+ if not isinstance(item, ViewList):
+ raise TypeError('assigning non-ViewList to ViewList slice')
+ self.data[i.start:i.stop] = item.data
+ self.items[i.start:i.stop] = item.items
+ assert len(self.data) == len(self.items), 'data mismatch'
+ if self.parent:
+ self.parent[(i.start or 0) + self.parent_offset
+ : (i.stop or len(self)) + self.parent_offset] = item
+ else:
+ self.data[i] = item
+ if self.parent:
+ self.parent[i + self.parent_offset] = item
+
+ def __delitem__(self, i):
+ try:
+ del self.data[i]
+ del self.items[i]
+ if self.parent:
+ del self.parent[i + self.parent_offset]
+ except TypeError:
+ assert i.step is None, 'cannot handle slice with stride'
+ del self.data[i.start:i.stop]
+ del self.items[i.start:i.stop]
+ if self.parent:
+ del self.parent[(i.start or 0) + self.parent_offset
+ : (i.stop or len(self)) + self.parent_offset]
+
+ def __add__(self, other):
+ if isinstance(other, ViewList):
+ return self.__class__(self.data + other.data,
+ items=(self.items + other.items))
+ else:
+ raise TypeError('adding non-ViewList to a ViewList')
+
+ def __radd__(self, other):
+ if isinstance(other, ViewList):
+ return self.__class__(other.data + self.data,
+ items=(other.items + self.items))
+ else:
+ raise TypeError('adding ViewList to a non-ViewList')
+
+ def __iadd__(self, other):
+ if isinstance(other, ViewList):
+ self.data += other.data
+ else:
+ raise TypeError('argument to += must be a ViewList')
+ return self
+
+ def __mul__(self, n):
+ return self.__class__(self.data * n, items=(self.items * n))
+
+ __rmul__ = __mul__
+
+ def __imul__(self, n):
+ self.data *= n
+ self.items *= n
+ return self
+
+ def extend(self, other):
+ if not isinstance(other, ViewList):
+ raise TypeError('extending a ViewList with a non-ViewList')
+ if self.parent:
+ self.parent.insert(len(self.data) + self.parent_offset, other)
+ self.data.extend(other.data)
+ self.items.extend(other.items)
+
+ def append(self, item, source=None, offset=0):
+ if source is None:
+ self.extend(item)
+ else:
+ if self.parent:
+ self.parent.insert(len(self.data) + self.parent_offset, item,
+ source, offset)
+ self.data.append(item)
+ self.items.append((source, offset))
+
+ def insert(self, i, item, source=None, offset=0):
+ if source is None:
+ if not isinstance(item, ViewList):
+ raise TypeError('inserting non-ViewList with no source given')
+ self.data[i:i] = item.data
+ self.items[i:i] = item.items
+ if self.parent:
+ index = (len(self.data) + i) % len(self.data)
+ self.parent.insert(index + self.parent_offset, item)
+ else:
+ self.data.insert(i, item)
+ self.items.insert(i, (source, offset))
+ if self.parent:
+ index = (len(self.data) + i) % len(self.data)
+ self.parent.insert(index + self.parent_offset, item,
+ source, offset)
+
+ def pop(self, i=-1):
+ if self.parent:
+ index = (len(self.data) + i) % len(self.data)
+ self.parent.pop(index + self.parent_offset)
+ self.items.pop(i)
+ return self.data.pop(i)
+
+ def trim_start(self, n=1):
+ """
+ Remove items from the start of the list, without touching the parent.
+ """
+ if n > len(self.data):
+ raise IndexError("Size of trim too large; can't trim %s items "
+ "from a list of size %s." % (n, len(self.data)))
+ elif n < 0:
+ raise IndexError('Trim size must be >= 0.')
+ del self.data[:n]
+ del self.items[:n]
+ if self.parent:
+ self.parent_offset += n
+
+ def trim_end(self, n=1):
+ """
+ Remove items from the end of the list, without touching the parent.
+ """
+ if n > len(self.data):
+ raise IndexError("Size of trim too large; can't trim %s items "
+ "from a list of size %s." % (n, len(self.data)))
+ elif n < 0:
+ raise IndexError('Trim size must be >= 0.')
+ del self.data[-n:]
+ del self.items[-n:]
+
+ def remove(self, item):
+ index = self.index(item)
+ del self[index]
+
+ def count(self, item): return self.data.count(item)
+ def index(self, item): return self.data.index(item)
+
+ def reverse(self):
+ self.data.reverse()
+ self.items.reverse()
+ self.parent = None
+
+ def sort(self, *args):
+ tmp = zip(self.data, self.items)
+ tmp.sort(*args)
+ self.data = [entry[0] for entry in tmp]
+ self.items = [entry[1] for entry in tmp]
+ self.parent = None
+
+ def info(self, i):
+ """Return source & offset for index `i`."""
+ try:
+ return self.items[i]
+ except IndexError:
+ if i == len(self.data): # Just past the end
+ return self.items[i - 1][0], None
+ else:
+ raise
+
+ def source(self, i):
+ """Return source for index `i`."""
+ return self.info(i)[0]
+
+ def offset(self, i):
+ """Return offset for index `i`."""
+ return self.info(i)[1]
+
+ def disconnect(self):
+ """Break link between this list and parent list."""
+ self.parent = None
+
+
+class StringList(ViewList):
+
+ """A `ViewList` with string-specific methods."""
+
+ def trim_left(self, length, start=0, end=sys.maxint):
+ """
+ Trim `length` characters off the beginning of each item, in-place,
+ from index `start` to `end`. No whitespace-checking is done on the
+ trimmed text. Does not affect slice parent.
+ """
+ self.data[start:end] = [line[length:]
+ for line in self.data[start:end]]
+
+ def get_text_block(self, start, flush_left=0):
+ """
+ Return a contiguous block of text.
+
+ If `flush_left` is true, raise `UnexpectedIndentationError` if an
+ indented line is encountered before the text block ends (with a blank
+ line).
+ """
+ end = start
+ last = len(self.data)
+ while end < last:
+ line = self.data[end]
+ if not line.strip():
+ break
+ if flush_left and (line[0] == ' '):
+ source, offset = self.info(end)
+ raise UnexpectedIndentationError(self[start:end], source,
+ offset + 1)
+ end += 1
+ return self[start:end]
+
+ def get_indented(self, start=0, until_blank=0, strip_indent=1,
+ block_indent=None, first_indent=None):
+ """
+ Extract and return a StringList of indented lines of text.
+
+ Collect all lines with indentation, determine the minimum indentation,
+ remove the minimum indentation from all indented lines (unless
+ `strip_indent` is false), and return them. All lines up to but not
+ including the first unindented line will be returned.
+
+ :Parameters:
+ - `start`: The index of the first line to examine.
+ - `until_blank`: Stop collecting at the first blank line if true.
+ - `strip_indent`: Strip common leading indent if true (default).
+ - `block_indent`: The indent of the entire block, if known.
+ - `first_indent`: The indent of the first line, if known.
+
+ :Return:
+ - a StringList of indented lines with mininum indent removed;
+ - the amount of the indent;
+ - a boolean: did the indented block finish with a blank line or EOF?
+ """
+ indent = block_indent # start with None if unknown
+ end = start
+ if block_indent is not None and first_indent is None:
+ first_indent = block_indent
+ if first_indent is not None:
+ end += 1
+ last = len(self.data)
+ while end < last:
+ line = self.data[end]
+ if line and (line[0] != ' '
+ or (block_indent is not None
+ and line[:block_indent].strip())):
+ # Line not indented or insufficiently indented.
+ # Block finished properly iff the last indented line blank:
+ blank_finish = ((end > start)
+ and not self.data[end - 1].strip())
+ break
+ stripped = line.lstrip()
+ if not stripped: # blank line
+ if until_blank:
+ blank_finish = 1
+ break
+ elif block_indent is None:
+ line_indent = len(line) - len(stripped)
+ if indent is None:
+ indent = line_indent
+ else:
+ indent = min(indent, line_indent)
+ end += 1
+ else:
+ blank_finish = 1 # block ends at end of lines
+ block = self[start:end]
+ if first_indent is not None and block:
+ block.data[0] = block.data[0][first_indent:]
+ if indent and strip_indent:
+ block.trim_left(indent, start=(first_indent is not None))
+ return block, indent or 0, blank_finish
+
+ def get_2D_block(self, top, left, bottom, right, strip_indent=1):
+ block = self[top:bottom]
+ indent = right
+ for i in range(len(block.data)):
+ block.data[i] = line = block.data[i][left:right].rstrip()
+ if line:
+ indent = min(indent, len(line) - len(line.lstrip()))
+ if strip_indent and 0 < indent < right:
+ block.data = [line[indent:] for line in block.data]
+ return block
+
+ def pad_double_width(self, pad_char):
+ """
+ Pad all double-width characters in self by appending `pad_char` to each.
+ For East Asian language support.
+ """
+ if hasattr(unicodedata, 'east_asian_width'):
+ east_asian_width = unicodedata.east_asian_width
+ else:
+ return # new in Python 2.4
+ for i in range(len(self.data)):
+ line = self.data[i]
+ if isinstance(line, unicode):
+ new = []
+ for char in line:
+ new.append(char)
+ if east_asian_width(char) in 'WF': # 'W'ide & 'F'ull-width
+ new.append(pad_char)
+ self.data[i] = ''.join(new)
+
+ def replace(self, old, new):
+ """Replace all occurrences of substring `old` with `new`."""
+ for i in range(len(self.data)):
+ self.data[i] = self.data[i].replace(old, new)
+
+
+class StateMachineError(Exception): pass
+class UnknownStateError(StateMachineError): pass
+class DuplicateStateError(StateMachineError): pass
+class UnknownTransitionError(StateMachineError): pass
+class DuplicateTransitionError(StateMachineError): pass
+class TransitionPatternNotFound(StateMachineError): pass
+class TransitionMethodNotFound(StateMachineError): pass
+class UnexpectedIndentationError(StateMachineError): pass
+
+
+class TransitionCorrection(Exception):
+
+ """
+ Raise from within a transition method to switch to another transition.
+
+ Raise with one argument, the new transition name.
+ """
+
+
+class StateCorrection(Exception):
+
+ """
+ Raise from within a transition method to switch to another state.
+
+ Raise with one or two arguments: new state name, and an optional new
+ transition name.
+ """
+
+
+def string2lines(astring, tab_width=8, convert_whitespace=0,
+ whitespace=re.compile('[\v\f]')):
+ """
+ Return a list of one-line strings with tabs expanded, no newlines, and
+ trailing whitespace stripped.
+
+ Each tab is expanded with between 1 and `tab_width` spaces, so that the
+ next character's index becomes a multiple of `tab_width` (8 by default).
+
+ Parameters:
+
+ - `astring`: a multi-line string.
+ - `tab_width`: the number of columns between tab stops.
+ - `convert_whitespace`: convert form feeds and vertical tabs to spaces?
+ """
+ if convert_whitespace:
+ astring = whitespace.sub(' ', astring)
+ return [s.expandtabs(tab_width).rstrip() for s in astring.splitlines()]
+
+def _exception_data():
+ """
+ Return exception information:
+
+ - the exception's class name;
+ - the exception object;
+ - the name of the file containing the offending code;
+ - the line number of the offending code;
+ - the function name of the offending code.
+ """
+ type, value, traceback = sys.exc_info()
+ while traceback.tb_next:
+ traceback = traceback.tb_next
+ code = traceback.tb_frame.f_code
+ return (type.__name__, value, code.co_filename, traceback.tb_lineno,
+ code.co_name)
diff --git a/emacs.d/nxhtml/tests/in/bug531328.rhtml b/emacs.d/nxhtml/tests/in/bug531328.rhtml
new file mode 100644
index 0000000..b7e4b98
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug531328.rhtml
@@ -0,0 +1 @@
+<% foo %> <% bar %>
diff --git a/emacs.d/nxhtml/tests/in/bug532500.rhtml b/emacs.d/nxhtml/tests/in/bug532500.rhtml
new file mode 100644
index 0000000..308613b
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug532500.rhtml
@@ -0,0 +1,7 @@
+ <tr>
+ <td><%= f.label((t('app.views.large_surveys_admin.new.gift'))) %></td>
+ <td><%= check_box_tag('gift',
+ 'checked',
+ !@large_survey.coupon_pool_id.nil?,
+ {:onclick => "$('coupon_pool').toggle()"}) %></td>
+ </tr>
diff --git a/emacs.d/nxhtml/tests/in/bug532759.djhtml b/emacs.d/nxhtml/tests/in/bug532759.djhtml
new file mode 100644
index 0000000..e655dd2
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug532759.djhtml
@@ -0,0 +1,17 @@
+{% if athlete_list %}
+ <p>Here are the athletes: {{ athlete_list }}.</p>
+{% else %}
+ <p>No athletes are available.</p>
+ {% if coach_list %}
+ <p>Here are the coaches: {{ coach_list }}.</p>
+ {% endif %}
+{% endif %}
+{% block content %}
+
+ {% if morning %}
+ <p>Hello World!</p>
+ {% else %}
+ <p>Goodbye World!</p>
+ {% endif %}
+
+ {% endblock %}
diff --git a/emacs.d/nxhtml/tests/in/bug546027.html b/emacs.d/nxhtml/tests/in/bug546027.html
new file mode 100644
index 0000000..f0c0eac
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug546027.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ </head>
+ <body>
+
+<<<<<<< .working
+the code from my version bla bla bla...
+=======
+the version from the repo bla bla bla...
+>>>>>>> .merge-right.r3379
+
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/bug552789-loremipsum.php b/emacs.d/nxhtml/tests/in/bug552789-loremipsum.php
new file mode 100644
index 0000000..67a3908
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug552789-loremipsum.php
@@ -0,0 +1,10 @@
+<html>
+ <body>
+ Lorem ipsum dolor sit amet, <?php echo 'consectetur adipisicing elit, sed do eiusmod'?> tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
+ veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
+ commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
+ velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
+ occaecat cupidatat non proident, sunt in culpa qui officia deserunt
+ mollit anim id est laborum.
+ </body>
+</html> \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/bug552789.php b/emacs.d/nxhtml/tests/in/bug552789.php
new file mode 100644
index 0000000..eb3e856
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug552789.php
@@ -0,0 +1,20 @@
+
+<p>
+ Some text to wrap.
+ Some text to wrap.
+ Some text to wrap.
+ Some text to wrap.
+ Some text to wrap.
+ Some text to wrap.
+ Some text to wrap.
+ <?php
+ fun();
+ ?>
+ Some text to wrap.
+ Some text to wrap.
+ Some text to wrap.
+ Some text to wrap.
+ Some text to wrap.
+ Some text to wrap.
+ Some text to wrap.
+</p>
diff --git a/emacs.d/nxhtml/tests/in/bug556832-error-test.py b/emacs.d/nxhtml/tests/in/bug556832-error-test.py
new file mode 100644
index 0000000..e998eda
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug556832-error-test.py
@@ -0,0 +1,23 @@
+# -*- Python -*-
+
+
+"""
+===============
+This is a title
+===============
+
+This is some general description
+"""
+
+
+class SomeClass(object):
+ """
+ This is a class description.
+ """
+
+ def __init__(self, fileName):
+ """The constructor."""
+ pass
+
+ def oneMethod():
+ pass
diff --git a/emacs.d/nxhtml/tests/in/bug557700-2.erb b/emacs.d/nxhtml/tests/in/bug557700-2.erb
new file mode 100644
index 0000000..c05eec3
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug557700-2.erb
@@ -0,0 +1,5 @@
+var x = 1;
+<% @ruby_var.each do |v| %>
+ alert(v);
+ <% end %>
+ var y = 2;
diff --git a/emacs.d/nxhtml/tests/in/bug557700-3.erb b/emacs.d/nxhtml/tests/in/bug557700-3.erb
new file mode 100644
index 0000000..13d57d8
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug557700-3.erb
@@ -0,0 +1,3 @@
+var x = 1;
+var y = <%= v %>;
+ var z = 4;
diff --git a/emacs.d/nxhtml/tests/in/bug557700-4.erb b/emacs.d/nxhtml/tests/in/bug557700-4.erb
new file mode 100644
index 0000000..148e9b4
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug557700-4.erb
@@ -0,0 +1,11 @@
+var x = 1;
+for (i in l) {
+alert(i);
+}
+<% var.each do |v| %>
+alert(<%= v %>);
+<% end %>
+var z = 4;
+for (i in l) {
+alert(i);
+}
diff --git a/emacs.d/nxhtml/tests/in/bug557700-5.erb b/emacs.d/nxhtml/tests/in/bug557700-5.erb
new file mode 100644
index 0000000..cfabef7
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug557700-5.erb
@@ -0,0 +1,4 @@
+<% if true %>
+alert(<%= v %>);
+alert(<%= w %>);
+<% end %>
diff --git a/emacs.d/nxhtml/tests/in/bug557700-6.erb b/emacs.d/nxhtml/tests/in/bug557700-6.erb
new file mode 100644
index 0000000..453f3e0
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug557700-6.erb
@@ -0,0 +1,11 @@
+var x = "<%= x %>";
+var y = 5;
+
+Second line is treated as if it was a string.
+
+Problem with multiple lines inside ruby if:
+
+<% if b %>
+ var x = 1;
+alert(1);
+<% end %>
diff --git a/emacs.d/nxhtml/tests/in/bug557700.erb b/emacs.d/nxhtml/tests/in/bug557700.erb
new file mode 100644
index 0000000..e15c22e
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug557700.erb
@@ -0,0 +1,3 @@
+var x = 1;
+<%= ruby_code %>
+ var z = 3;
diff --git a/emacs.d/nxhtml/tests/in/bug559772-TextHelper.php b/emacs.d/nxhtml/tests/in/bug559772-TextHelper.php
new file mode 100644
index 0000000..0d3bffb
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug559772-TextHelper.php
@@ -0,0 +1,205 @@
+<?php
+
+/*
+ * This file is part of the symfony package.
+ * (c) 2004-2006 Fabien Potencier <fabien.potencier@symfony-project.com>
+ * (c) 2004 David Heinemeier Hansson
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * TextHelper.
+ *
+ * @package symfony
+ * @subpackage helper
+ * @author Fabien Potencier <fabien.potencier@symfony-project.com>
+ * @author David Heinemeier Hansson
+ * @version SVN: $Id: TextHelper.php 3699 2007-04-02 11:47:32Z fabien $
+ */
+
+/**
+ * Truncates +text+ to the length of +length+ and replaces the last three characters with the +truncate_string+
+ * if the +text+ is longer than +length+.
+ */
+function truncate_text($text, $length = 30, $truncate_string = '...', $truncate_lastspace = false)
+{
+ if ($text == '')
+ {
+ return '';
+ }
+
+ if (strlen($text) > $length)
+ {
+ $truncate_text = substr($text, 0, $length - strlen($truncate_string));
+ if ($truncate_lastspace)
+ {
+ $truncate_text = preg_replace('/\s+?(\S+)?$/', '', $truncate_text);
+ }
+
+ return $truncate_text.$truncate_string;
+ }
+ else
+ {
+ return $text;
+ }
+}
+
+/**
+ * Highlights the +phrase+ where it is found in the +text+ by surrounding it like
+ * <strong class="highlight">I'm a highlight phrase</strong>. The highlighter can be specialized by
+ * passing +highlighter+ as single-quoted string with \1 where the phrase is supposed to be inserted.
+ * N.B.: The +phrase+ is sanitized to include only letters, digits, and spaces before use.
+ */
+function highlight_text($text, $phrase, $highlighter = '<strong class="highlight">\\1</strong>')
+{
+ if ($text == '')
+ {
+ return '';
+ }
+
+ if ($phrase == '')
+ {
+ return $text;
+ }
+
+ return preg_replace('/('.preg_quote($phrase, '/').')/i', $highlighter, $text);
+}
+
+/**
+ * Extracts an excerpt from the +text+ surrounding the +phrase+ with a number of characters on each side determined
+ * by +radius+. If the phrase isn't found, nil is returned. Ex:
+ * excerpt("hello my world", "my", 3) => "...lo my wo..."
+ */
+function excerpt_text($text, $phrase, $radius = 100, $excerpt_string = '...')
+{
+ if ($text == '' || $phrase == '')
+ {
+ return '';
+ }
+
+ $found_pos = strpos(strtolower($text), strtolower($phrase));
+ if ($found_pos !== false)
+ {
+ $start_pos = max($found_pos - $radius, 0);
+ $end_pos = min($found_pos + strlen($phrase) + $radius, strlen($text));
+
+ $prefix = ($start_pos > 0) ? $excerpt_string : '';
+ $postfix = $end_pos < strlen($text) ? $excerpt_string : '';
+
+ return $prefix.substr($text, $start_pos, $end_pos - $start_pos).$postfix;
+ }
+}
+
+/**
+ * Word wrap long lines to line_width.
+ */
+function wrap_text($text, $line_width = 80)
+{
+ return preg_replace('/(.{1,'.$line_width.'})(\s+|$)/s', "\\1\n", preg_replace("/\n/", "\n\n", $text));
+}
+
+/*
+ # Returns +text+ transformed into html using very simple formatting rules
+ # Surrounds paragraphs with <tt>&lt;p&gt;</tt> tags, and converts line breaks into <tt>&lt;br /&gt;</tt>
+ # Two consecutive newlines(<tt>\n\n</tt>) are considered as a paragraph, one newline (<tt>\n</tt>) is
+ # considered a linebreak, three or more consecutive newlines are turned into two newlines
+*/
+function simple_format_text($text, $options = array())
+{
+ $css = (isset($options['class'])) ? ' class="'.$options['class'].'"' : '';
+
+ $text = sfToolkit::pregtr($text, array("/(\r\n|\r)/" => "\n", // lets make them newlines crossplatform
+ "/\n{3,}/" => "\n\n", // zap dupes
+ "/\n\n/" => "</p>\\0<p$css>", // turn two newlines into paragraph
+ "/([^\n])\n([^\n])/" => "\\1\n<br />\\2")); // turn single newline into <br/>
+
+ return '<p'.$css.'>'.$text.'</p>'; // wrap the first and last line in paragraphs before we're done
+}
+
+/**
+ * Turns all urls and email addresses into clickable links. The +link+ parameter can limit what should be linked.
+ * Options are :all (default), :email_addresses, and :urls.
+ *
+ * Example:
+ * auto_link("Go to http://www.symfony-project.com and say hello to fabien.potencier@example.com") =>
+ * Go to <a href="http://www.symfony-project.com">http://www.symfony-project.com</a> and
+ * say hello to <a href="mailto:fabien.potencier@example.com">fabien.potencier@example.com</a>
+ */
+function auto_link_text($text, $link = 'all', $href_options = array())
+{
+ if ($link == 'all')
+ {
+ return _auto_link_urls(_auto_link_email_addresses($text), $href_options);
+ }
+ else if ($link == 'email_addresses')
+ {
+ return _auto_link_email_addresses($text);
+ }
+ else if ($link == 'urls')
+ {
+ return _auto_link_urls($text, $href_options);
+ }
+}
+
+/*
+ * Turns all links into words, like "<a href="something">else</a>" to "else".
+ */
+function strip_links_text($text)
+{
+ return preg_replace('/<a.*>(.*)<\/a>/m', '\\1', $text);
+}
+
+if (!defined('SF_AUTO_LINK_RE'))
+{
+ define('SF_AUTO_LINK_RE', '~
+ ( # leading text
+ <\w+.*?>| # leading HTML tag, or
+ [^=!:\'"/]| # leading punctuation, or
+ ^ # beginning of line
+ )
+ (
+ (?:https?://)| # protocol spec, or
+ (?:www\.) # www.*
+ )
+ (
+ [-\w]+ # subdomain or domain
+ (?:\.[-\w]+)* # remaining subdomains or domain
+ (?::\d+)? # port
+ (?:/(?:(?:[\~\w\+%-]|(?:[,.;:][^\s$]))+)?)* # path
+ (?:\?[\w\+%&=.;-]+)? # query string
+ (?:\#[\w\-]*)? # trailing anchor
+ )
+ ([[:punct:]]|\s|<|$) # trailing text
+ ~x');
+}
+
+/**
+ * Turns all urls into clickable links.
+ */
+function _auto_link_urls($text, $href_options = array())
+{
+ $href_options = _tag_options($href_options);
+ return preg_replace_callback(
+ SF_AUTO_LINK_RE,
+ create_function('$matches', '
+ if (preg_match("/<a\s/i", $matches[1]))
+ {
+ return $matches[0];
+ }
+ else
+ {
+ return $matches[1].\'<a href="\'.($matches[2] == "www." ? "http://www." : $matches[2]).$matches[3].\'"'.$href_options.'>\'.$matches[2].$matches[3].\'</a>\'.$matches[4];
+ }
+ ')
+ , $text);
+}
+
+/**
+ * Turns all email addresses into clickable links.
+ */
+function _auto_link_email_addresses($text)
+{
+ return preg_replace('/([\w\.!#\$%\-+.]+@[A-Za-z0-9\-]+(\.[A-Za-z0-9\-]+)+)/', '<a href="mailto:\\1">\\1</a>', $text);
+}
diff --git a/emacs.d/nxhtml/tests/in/bug565595.mako b/emacs.d/nxhtml/tests/in/bug565595.mako
new file mode 100644
index 0000000..3444765
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug565595.mako
@@ -0,0 +1,12 @@
+<%!
+ import sys
+%>
+<html>
+ <head>
+ <title>Test</title>
+ </head>
+ <body>
+ </body>
+
+</html>
+
diff --git a/emacs.d/nxhtml/tests/in/bug568178.pl b/emacs.d/nxhtml/tests/in/bug568178.pl
new file mode 100644
index 0000000..a454f4b
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug568178.pl
@@ -0,0 +1,4 @@
+print SOCKET << HTML or warn "Cannot write to socket: $!";
+<input type="text">html continues...
+
+HTML
diff --git a/emacs.d/nxhtml/tests/in/bug568178.sh b/emacs.d/nxhtml/tests/in/bug568178.sh
new file mode 100644
index 0000000..ca5e2af
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug568178.sh
@@ -0,0 +1,9 @@
+bteq << 'SQL part' | grep '\\$'| read start_dt_ya start_dt end_dt_ya end_dt
+-- SQL code here
+select '$',start_date- '1 year', start_date ....
+SQL part
+
+bteq <<SQL | grep '\\$'| read start_dt_ya start_dt end_dt_ya end_dt
+-- SQL code here
+select '$',start_date- '1 year', start_date ....
+SQL
diff --git a/emacs.d/nxhtml/tests/in/bug569742-master-end.html b/emacs.d/nxhtml/tests/in/bug569742-master-end.html
new file mode 100644
index 0000000..8e0419c
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/bug569742-master-end.html
@@ -0,0 +1,37 @@
+
+From EmacsWiki:
+
+I have chunk problems with 1.99. This works, it detects the PHP and JS chunks properly:
+
+<?
+
+
+$stuff = <<<EOTHTML
+
+ <script type="text/javascript">
+
+ //<![CDATA[
+
+ var stuff;
+
+ //]]>
+ </script>
+
+EOTHTML;
+
+
+However if I don’t close the inner chunk before EOTHTML, because I want to add some conditional code after it in PHP then it thinks the part of the buffer after EOTHTML is still in JS mode which is not good:
+
+<?
+
+
+$stuff = <<<EOTHTML
+
+ <script type="text/javascript">
+
+ //<![CDATA[
+
+ var stuff;
+
+EOTHTML;
+
diff --git a/emacs.d/nxhtml/tests/in/ch-2008-07-25-test.html.erb b/emacs.d/nxhtml/tests/in/ch-2008-07-25-test.html.erb
new file mode 100644
index 0000000..92b76fa
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/ch-2008-07-25-test.html.erb
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<% @meta_keywords ||= nil -%>
+<% @meta_description ||= nil -%>
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+ <% unless @meta_keywords.blank? -%>
+ <meta name="keywords" content="<%= @meta_keywords %>" />
+ <% end -%>
+ <% unless @meta_description.blank? -%>
+ <meta name="description" content="<%= @meta_description %>" />
+ <% end -%>
+ <title><%= @page_title.blank? ? "Mysite" : "#{@page_title} : Mysite" %></title>
+ <%= stylesheet_link_tag 'global', 'sem', :media => 'all' %>
+ </head>
+ <body>
+ <div id="shadow">
+ <div id="container">
+
+ <div id="main" class="content">
+ <%= yield %>
+ </div>
+ <table>
+ This text is in the wrong place, but you have to apply a
+ schema to get it marked as invalid.
+ <%= yield %>
+ </table>
+
+ </div> <%# container %>
+ </div> <%# shadow %>
+ </body>
+ <% if live_site? %>
+ <%= render(:partial => 'shared/google_analytics') %>
+ <% end %>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/chunks-in-chunks1.php b/emacs.d/nxhtml/tests/in/chunks-in-chunks1.php
new file mode 100644
index 0000000..007bc66
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/chunks-in-chunks1.php
@@ -0,0 +1,19 @@
+$a = <<<EOTHTML
+
+<p>stuff</p>
+
+EOTHTML;
+
+
+$b = <<<EOT
+
+ <h2><a href="/">stuff</a></h2>
+
+EOT;
+
+$c = <<<EOT
+
+<button onclick="a()">test</button>
+
+
+EOT;
diff --git a/emacs.d/nxhtml/tests/in/chunks.html b/emacs.d/nxhtml/tests/in/chunks.html
new file mode 100644
index 0000000..62a3bf8
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/chunks.html
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ <script type="text/javascript">
+ // <![CDATA[
+ alert ("here");
+ /*
+ --------------------------------------------------------------------------
+ Do not edit past this point unless you know what you are doing.
+ --------------------------------------------------------------------------
+ ===== BUG: THIS LINE IS BLACK ==========
+ ===== BUG: THIS LINE IS BLACK ==========
+ */
+
+ addEvent(window, 'load', spamSpan);
+
+ function spamSpan() {
+ var allSpamSpans = getElementsByClass(spamSpanMainClass, document, 'span');
+ for (var i = 0; i < allSpamSpans.length; i++) {
+ // get data
+ var user = getSpanValue(spamSpanUserClass, allSpamSpans[i]);
+ var domain = getSpanValue(spamSpanDomainClass, allSpamSpans[i]);
+ var anchorText = getSpanValue(spamSpanAnchorTextClass, allSpamSpans[i]);
+ // prepare parameter data
+ var paramValues = new Array();
+ for (var j = 0; j < spamSpanParams.length; j++) {
+ var paramSpanValue = getSpanValue(spamSpanParams[j], allSpamSpans[i]);
+ if (paramSpanValue) {
+ paramValues.push(spamSpanParams[j] + '=' +
+ encodeURIComponent(paramSpanValue));
+ }
+ }
+ // create new anchor tag
+ var at = String.fromCharCode(32*2);
+ var email = cleanSpan(user) + at + cleanSpan(domain);
+ var anchorTagText = document.createTextNode(anchorText ? anchorText : email);
+ var mto = String.fromCharCode(109,97,105,108,116,111,58);
+ var hrefAttr = mto + email;
+ hrefAttr += paramValues.length ? '?' + paramValues.join('&') : '';
+ var anchorTag = document.createElement('a');
+ anchorTag.className = spamSpanMainClass;
+ anchorTag.setAttribute('href', hrefAttr);
+ anchorTag.appendChild(anchorTagText);
+ // replace the span with anchor
+ allSpamSpans[i].parentNode.replaceChild(anchorTag, allSpamSpans[i]);
+ }
+ }
+ // ]]>
+ </script>
+ <style type="text/css" media="all">
+ /* <![CDATA[ */
+ body {
+ margin-left: 1px;
+ /* ]]> */
+ </style>
+
+ </head>
+ <body>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/cr-lf.el b/emacs.d/nxhtml/tests/in/cr-lf.el
new file mode 100644
index 0000000..0a7d06b
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/cr-lf.el
@@ -0,0 +1,2 @@
+;; This is just a test of cr-lf handling. Save this file with DOS
+;; cr-lf line endings and open it again.
diff --git a/emacs.d/nxhtml/tests/in/csr-080710-2.html b/emacs.d/nxhtml/tests/in/csr-080710-2.html
new file mode 100644
index 0000000..bccc2f7
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/csr-080710-2.html
@@ -0,0 +1,23 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>Title</title>
+ <style type="text/css">
+ body { background: #ccc; }
+ p {
+ color: white;
+
+ }
+ </style>
+ </head>
+ <body>
+ <div id="container">
+ <script type="text/javascript">
+ var a = "aaa";
+
+ function test () {
+
+ }
+ </script>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/csr-080710.html b/emacs.d/nxhtml/tests/in/csr-080710.html
new file mode 100644
index 0000000..be99b8b
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/csr-080710.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title></title>
+ <link rel="Stylesheet" type="text/css" href="/style/style.css" media="all" />
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <style type="text/css" media="all">
+
+ </style>
+ </head>
+ <body>
+ <div id="container">
+ <script type="text/javascript">
+ var a = "aaa";
+
+ function test () {
+
+ }
+ </script>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/cvd-080805-ac.php b/emacs.d/nxhtml/tests/in/cvd-080805-ac.php
new file mode 100644
index 0000000..b951c75
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/cvd-080805-ac.php
@@ -0,0 +1,21 @@
+<?php
+
+Zend_Loader::loadClass('Account','application/models');
+Zend_Loader::loadClass('Device','application/models');
+Zend_Loader::loadClass('Carrier','application/models');
+Zend_Loader::loadClass('DistributionChannel','application/models');
+
+/** Zend_Controller_Action */
+require_once 'Zend_Global_Controller_Action.php';
+
+class AccountController extends Zend_Global_Controller_Action
+{
+ public function indexAction($errors = array())
+ {
+
+ $this->view->assign('errors',$errors);
+ $this->view->assign('body','account_index.htm');
+echo $this->view->render('main_doc.htm');
+
+ }
+}
diff --git a/emacs.d/nxhtml/tests/in/cvd-080805-cc.php b/emacs.d/nxhtml/tests/in/cvd-080805-cc.php
new file mode 100644
index 0000000..4394387
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/cvd-080805-cc.php
@@ -0,0 +1,18 @@
+<?php
+
+Zend_Loader::loadClass("Category","application/models");
+Zend_Loader::loadClass("CategoryDisplayName","application/models");
+
+/** Zend_Controller_Action */
+require_once 'Zend_Global_Controller_Action.php';
+
+class CategoryController extends Zend_Global_Controller_Action
+{
+ public function indexAction($notices = array(), $errors = array())
+ {
+
+ $request = $this->GetRequest();
+ blah, etc.
+ }
+}
+
diff --git a/emacs.d/nxhtml/tests/in/drechsler-080517-simple.xml b/emacs.d/nxhtml/tests/in/drechsler-080517-simple.xml
new file mode 100644
index 0000000..01b738d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/drechsler-080517-simple.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<data>
+</data>
diff --git a/emacs.d/nxhtml/tests/in/el-070424-duh.xml b/emacs.d/nxhtml/tests/in/el-070424-duh.xml
new file mode 100644
index 0000000..4e8b09a
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/el-070424-duh.xml
@@ -0,0 +1,6 @@
+<outermost>
+ <inner1><inner2>
+ <inner3>Duh</inner3>
+ </inner2>
+ </inner1>
+</outermost>
diff --git a/emacs.d/nxhtml/tests/in/el-070511-simple.html b/emacs.d/nxhtml/tests/in/el-070511-simple.html
new file mode 100644
index 0000000..d56f53f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/el-070511-simple.html
@@ -0,0 +1,102 @@
+<!-- Since this file is not xhtml, nxhtml won't indent it correctly.
+ Therefore, turn on html mode before editing this file:
+ M-x html-mode -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+ <HEAD>
+ <TITLE>TDDB64 Avancerad programmering och interaktivitet på WWW</TITLE>
+ <META content="text/html; charset=windows-1252" http-equiv=Content-Type>
+ <META content="Microsoft FrontPage 4.0" name=GENERATOR>
+
+
+ <SCRIPT language="javascript" type="text/javascript">
+
+ </SCRIPT>
+
+
+ </HEAD>
+
+ <BODY bgColor="#ffffff">
+ <P>
+ <TABLE border=0 cellPadding=1 cellSpacing=0 width="100%">
+ <TR>
+ <TD align=CENTER bgColor="#ddffdd" width="15%">
+ <IMG align=MIDDLE alt="IDA " border=0 hspace=4 src="http://www.ida.liu.se/~TDDB06/labs/dhtml/simple_files/Ida-logo-tr-mini.gif"> </TD>
+ <TD width="1%">
+ <TD width="84%">
+
+ <B><A href="http://www.ida.liu.se/">Dept. of Computer and
+ Information Science</A>, <A href="http://www.liu.se/">Linköping
+ University</A></B> </TD>
+ </TR>
+ <TR>
+ <TD align=CENTER bgColor="#ddffdd" vAlign=top width="15%"><BR><BR>
+
+
+ <!-- -->
+ <!-- The Menue list starts here -->
+ <!-- -->
+ <DL>
+ <DT><B><A href="http://www.ida.liu.se/~TDDB06/index.shtm">Home</A></B>
+ <DT><B><A href="http://www.ida.liu.se/~TDDB06/faq.shtml">FAQ</A></B>
+ <DT><B><A
+ href="http://www.ida.liu.se/~TDDB06/labs/index.shtml">Labs</A></B>
+ <DT><B><A
+ href="http://www.ida.liu.se/~TDDB06/fo2000.shtml">Lectures</A></B>
+ <DT><B><A
+ href="http://www.ida.liu.se/~TDDB06/news2000.shtml">News</A></B>
+ <DT><B><A
+ href="http://www.lith.liu.se:4019/schema/schema?period=period+3+99-00&amp;kurs=DDB06">Schedule</A></B>
+
+ <DT><B><A
+ href="http://www.ida.liu.se/~TDDB06/resources.shtml">Resources</A></B>
+ <DT><B><A href="http://www.ida.liu.se/~TDDB06/staff.shtml">Staff</A></B>
+
+ <DT><B><A href="http://www.ida.liu.se/~TDDB06/other.shtml">Other</A></B>
+
+ <DT><B><A href="http://www.ida.liu.se/~TDDB06/"></A></B>
+ <DT><B><A href="http://www.ida.liu.se/~TDDB06/"></A></B>
+ <DT><B><A href="http://www.ida.liu.se/~TDDB06/"></A></B>
+ <DT><B><A href="http://www.ida.liu.se/~TDDB06/"></A></B>
+ <DT><B><A href="http://www.ida.liu.se/~TDDB06/"></A></B></DT>
+
+ </DL>
+ <!-- -->
+ <!-- The Menue list ends here -->
+ <!-- -->
+
+
+ </TD>
+ <TD width="1%">
+ <TD width="84%">
+
+
+
+ <!-- -->
+ <!-- The page content starts here -->
+ <!-- -->
+ <img src="http://www.ida.liu.se/~TDDB06/const.gif" alt="JavaDude">
+ This page is not under construction. It is supposed to look like this.
+
+ <H1>TDDB64 Web Programming and Interactivity</H1>This
+ course covers an overview of WWW, HTML, basic Java programming, and
+ advanced Java programming. The course consists of a number of
+ <EM>lectures, programming assignments,</EM> and a <EM>programming
+ project,</EM> where the students practice advanced Java and WWW
+ implementation techniques.
+ <!-- -->
+ <!-- The page content starts here -->
+ <!-- -->
+
+
+
+ </TD></TR>
+ </TABLE>
+ <HR>
+ <p>
+ <a href="http://validator.w3.org/check?uri=referer"><img
+ src="http://www.w3.org/Icons/valid-html40"
+ alt="Valid HTML 4.0 Transitional" height="31" width="88"></a>
+ </p>
+
+</BODY></HTML>
diff --git a/emacs.d/nxhtml/tests/in/el-070602-index.php b/emacs.d/nxhtml/tests/in/el-070602-index.php
new file mode 100644
index 0000000..f971b1a
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/el-070602-index.php
@@ -0,0 +1,54 @@
+<?php
+ /* We must use this header to be correct and for the css validator to
+ find our stylesheet without us having to provide a fully qualified
+ path (address) to it. */
+header("Content-type:application/xhtml+xml; charset=utf-8");
+echo '<'.'?xml version="1.0" encoding="utf-8"?'.'>';
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>Lab 2 - Layout Control - Task 1 - XHTML/CSS version</title>
+ <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
+ </head>
+ <body>
+ <div id="container">
+ <div id="header">Top area</div>
+ <div id="left-menu">
+ <ul>
+ <li><a style="hej" href="index.php">Home</a></li>
+ <li><a href="index.php?page=a">First Main Page</a></li>
+ <li><a href="index.php?page=b">Second Main Page</a></li>
+ </ul>
+ </div>
+ <div id="main">
+ <?php
+ if (isset($_GET['page'])) {
+ $thepage = $_GET['page'];
+
+ if ($thepage != 'a' && $thepage != 'b') {
+ print('You hacker you!');
+ }
+ else {
+ require('main-div-'.$thepage.'.html');
+ }
+ }
+ else {
+ require('main-div-a.html');
+ }
+ ?>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://validator.w3.org/check?uri=referer">
+ <img src="valid-xhtml10.png" alt="Valid XHTML 1.0 Strict"></img>
+ </a>
+ <a href="http://jigsaw.w3.org/css-validator/check?uri=referer">
+ <img src="vcss.png" alt="Valid CSS!"></img>
+ </a>
+ </p>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/el-070604.html b/emacs.d/nxhtml/tests/in/el-070604.html
new file mode 100644
index 0000000..882e982
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/el-070604.html
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Dummy</title>
+ <link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet();?>"/>
+ </head>
+ <body>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/el-070604.php b/emacs.d/nxhtml/tests/in/el-070604.php
new file mode 100644
index 0000000..45f7d7c
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/el-070604.php
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Dummy</title>
+ <link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet();?>"/>
+ </head>
+ <body>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/el-070722-comment-error.php b/emacs.d/nxhtml/tests/in/el-070722-comment-error.php
new file mode 100644
index 0000000..ff3bdf5
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/el-070722-comment-error.php
@@ -0,0 +1,6 @@
+<?php
+/* this is a comment
+ and it seems to work ok...
+*/
+?>
+
diff --git a/emacs.d/nxhtml/tests/in/el-070722-index-2.el b/emacs.d/nxhtml/tests/in/el-070722-index-2.el
new file mode 100644
index 0000000..05b18f1
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/el-070722-index-2.el
@@ -0,0 +1,7 @@
+(defun temp-el-070722 ()
+ (remove-text-properties 1 25 '(syntax-table nil))
+ (syntax-ppss-flush-cache -1)
+ (setq syntax-ppss-last nil)
+ (goto-char (point-min))
+ (let ((parse-sexp-lookup-properties t)) (syntax-ppss 24))
+ )
diff --git a/emacs.d/nxhtml/tests/in/el-070722-index-2.php b/emacs.d/nxhtml/tests/in/el-070722-index-2.php
new file mode 100644
index 0000000..ff4dbf9
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/el-070722-index-2.php
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>Lab 2 - Layout Control - Task 2 - XHTML/CSS version</title>
+ <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
+ </head>
+ <body>
+ <div id="container">
+ <div id="header">Top area</div>
+ <div id="left-menu">
+ <ul>
+ <li><a href="index.php">Home</a></li>
+ <li><a href="index.php?page=a">First Main Page</a></li>
+ <li><a href="index.php?page=b">Second Main Page</a></li>
+ </ul>
+ </div>
+ <div id="main">
+ <?php
+ if (isset($_GET["page"])) {
+ $thepage = $_GET['page'];
+
+ if ($thepage != 'a' && $thepage != 'b') {
+ print('You hacker you!');
+ }
+ else {
+ require('main-div-'.$thepage.'.html');
+ }
+ }
+ else {
+ require('main-div-a.html');
+ }
+ ?>
+ </div>
+ <div id="right-menu">Right area</div>
+ <div id="footer">
+ <p>
+ <a href="http://validator.w3.org/check?uri=referer">
+ <img src="valid-xhtml10.png" alt="Valid XHTML 1.0 Strict"></img>
+ </a>
+ <a href="http://jigsaw.w3.org/css-validator/check?uri=referer">
+ <img src="vcss.png" alt="Valid CSS!"></img>
+ </a>
+ </p>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/el-070722-index-noheader.php b/emacs.d/nxhtml/tests/in/el-070722-index-noheader.php
new file mode 100644
index 0000000..34271ba
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/el-070722-index-noheader.php
@@ -0,0 +1,48 @@
+<?php
+/* We must use this header to be correct and for the css validator to
+ find our stylesheet without us having to provide a fully qualified
+ path (address) to it. */
+header("Content-type:application/xhtml+xml; charset=utf-8");
+echo '<'.'?xml version="1.0" encoding="utf-8"?'.'>';
+?>
+ <body>
+ <div id="container">
+ <div id="header">Top area</div>
+ <div id="left-menu">
+ <ul>
+ <li><a href="index.php">Home</a></li>
+ <li><a href="index.php?page=a">First Main Page</a></li>
+ <li><a href="index.php?page=b">Second Main Page</a></li>
+ </ul>
+ </div>
+ <div id="main">
+ <?php
+ if (isset($_GET["page"])) {
+ $thepage = $_GET['page'];
+
+ if ($thepage != 'a' && $thepage != 'b') {
+ print('You hacker you!');
+ }
+ else {
+ require('main-div-'.$thepage.'.html');
+ }
+ }
+ else {
+ require('main-div-a.html');
+ }
+ ?>
+ </div>
+ <div id="right-menu">Right area</div>
+ <div id="footer">
+ <p>
+ <a href="http://validator.w3.org/check?uri=referer">
+ <img src="valid-xhtml10.png" alt="Valid XHTML 1.0 Strict"></img>
+ </a>
+ <a href="http://jigsaw.w3.org/css-validator/check?uri=referer">
+ <img src="vcss.png" alt="Valid CSS!"></img>
+ </a>
+ </p>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/el-070722-index.php b/emacs.d/nxhtml/tests/in/el-070722-index.php
new file mode 100644
index 0000000..1418da2
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/el-070722-index.php
@@ -0,0 +1,55 @@
+<?php
+/* We must use this header to be correct and for the css validator to
+ find our stylesheet without us having to provide a fully qualified
+ path (address) to it. */
+header("Content-type:application/xhtml+xml; charset=utf-8");
+echo '<'.'?xml version="1.0" encoding="utf-8"?'.'>';
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>Lab 2 - Layout Control - Task 2 - XHTML/CSS version</title>
+ <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
+ </head>
+ <body>
+ <div id="container">
+ <div id="header">Top area</div>
+ <div id="left-menu">
+ <ul>
+ <li><a href="index.php">Home</a></li>
+ <li><a href="index.php?page=a">First Main Page</a></li>
+ <li><a href="index.php?page=b">Second Main Page</a></li>
+ </ul>
+ </div>
+ <div id="main">
+ <?php
+ if (isset($_GET["page"])) {
+ $thepage = $_GET['page'];
+
+ if ($thepage != 'a' && $thepage != 'b') {
+ print('You hacker you!');
+ }
+ else {
+ require('main-div-'.$thepage.'.html');
+ }
+ }
+ else {
+ require('main-div-a.html');
+ }
+ ?>
+ </div>
+ <div id="right-menu">Right area</div>
+ <div id="footer">
+ <p>
+ <a href="http://validator.w3.org/check?uri=referer">
+ <img src="valid-xhtml10.png" alt="Valid XHTML 1.0 Strict"></img>
+ </a>
+ <a href="http://jigsaw.w3.org/css-validator/check?uri=referer">
+ <img src="vcss.png" alt="Valid CSS!"></img>
+ </a>
+ </p>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/el-071217-foo.html b/emacs.d/nxhtml/tests/in/el-071217-foo.html
new file mode 100644
index 0000000..32b7412
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/el-071217-foo.html
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ </head>
+ <frameset cols="50%, 50%">
+ <frame src="about:blank" />
+ <frame src="about:blank" />
+ </frameset>
+</html>
+<!-- A comment -->
diff --git a/emacs.d/nxhtml/tests/in/emacswiki-080119.php b/emacs.d/nxhtml/tests/in/emacswiki-080119.php
new file mode 100644
index 0000000..e4215a1
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/emacswiki-080119.php
@@ -0,0 +1,15 @@
+<?php
+
+ /* There was a problem reported 2008-01-19 on
+ http://www.emacswiki.org/cgi-bin/wiki/NxhtmlMode. The word
+ INCLUDE was highlighted with a different color. However this
+ should now work and the word APP_INCLUDE below should all be in
+ font-lock-warning-face.
+
+ FIXME: When deleting the first star the first time only the first
+ part of the comment is affected.
+ */
+
+define("APP_INCLUDE", "/home/app/include/"); include_once(APP_INCLUDE . "file.php");
+
+?>
diff --git a/emacs.d/nxhtml/tests/in/emacswiki-erb-bug.el b/emacs.d/nxhtml/tests/in/emacswiki-erb-bug.el
new file mode 100644
index 0000000..4e565ef
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/emacswiki-erb-bug.el
@@ -0,0 +1,36 @@
+;;; This file is from a link on EmacsWiki to http://paste.lisp.org/display/59495
+;;
+;; As far as I can see this is a ruby-mode bug, not a mumamo bug.
+
+;;; The problem is that when a ruby ERB template is loaded with an
+;;; after-hook that modifies the font-lock keywords, nxhtml causes
+;;; font-lock not to occur on strings and comments. What's more is
+;;; this affects regular ruby-mode as well, not just within mumamo.
+
+(require 'ruby-mode)
+
+;; Extra keyword fontification for ruby
+(defun emacswiki-erb-bug-keywords ()
+ (font-lock-add-keywords nil
+ '(("\\<\\(FIX\\|TODO\\|FIXME\\|HACK\\|REFACTOR\\):"
+ 1 font-lock-warning-face t))))
+
+;; Adding the extra keywords at the beginning of ruby-mode-hook breaks
+;; ruby-mode fontification (use the test case at the bottom):
+(add-hook 'ruby-mode-hook 'emacswiki-erb-bug-keywords)
+;; removing this hook makes it not break anymore:
+(remove-hook 'ruby-mode-hook 'emacswiki-erb-bug-keywords)
+;; However adding the extra keywords at the end of the hook works fine:
+(add-hook 'ruby-mode-hook 'emacswiki-erb-bug-keywords t)
+
+
+;; run this to test:
+(progn
+ (find-file "bar.rb")
+ (insert "# Comments should be font-locked, but are not.
+class Bar
+ def baz
+ \"strings should also be font-locked but are not.\"
+ end
+end"))
+
diff --git a/emacs.d/nxhtml/tests/in/err-line38.html b/emacs.d/nxhtml/tests/in/err-line38.html
new file mode 100644
index 0000000..3a5182f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/err-line38.html
@@ -0,0 +1,768 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>News and Notes about nXhtml</title>
+ <link href="wd/grapes/nxhtml-grapes.css" rel="StyleSheet" type="text/css" />
+ </head>
+ <body>
+ <div id="container">
+
+ <div id="rgtcol">
+ <p id="nxhtml-home">
+ <a href="nxhtml.html">To nXhtml main page</a>
+ </p>
+
+ <h1>News and Notes about nXhtml</h1>
+
+ <dl>
+
+ <dt id="hadron-bugs" style="margin-top:1em;">Thanks for testing!</dt>
+ <dd>
+ <p>
+ I want to thanks the testers, especially Hadron Quark
+ and Eric Lilja, for helping me by testing and pointing
+ out bugs and weaknesses, most related to editing of PHP.
+ </p>
+ <p>
+ It is quite a big job trying to get rid of smaller annoying bugs and bigger ones.
+ In my mailbox folder for nXhtml I have more than 500 old messages currently.
+ </p>
+ </dd>
+
+ <dt id="state-of-the-art" style="margin-top:1em;
+ background-color: #00fa9a;
+ background-color: #20b2aa;
+ padding: 0.5em;
+ ">The State of the Art</dt>
+ <dd style="background-color: #54ff9f; padding: 0.5em">
+ <p>
+ I have more and more come to realize that there are two
+ main parts of nXhtml which are in quite different
+ degrees of maturity. The reason for the difference is
+ mainly that one of them, <strong>mumamo-mode</strong>, requires
+ very tight integration with Emacs in a way that
+ currently is not completely possible. Some things must
+ be changed in Emacs for this. There are also things to
+ discover in the interactions with other minor modes for
+ example.
+ </p>
+ <p>
+ That said I still think mumamo-mode is mature enough for
+ serious use (though it sometimes conflicts with some other modules).
+ </p>
+ <p>
+ The other part, <strong>nxhtml-mode</strong>, is more mature,
+ since it stands more by itself and since it builds on
+ the very stable nxml-mode. I would not say nxhtml-mode
+ is finished, but it is stable and useful.
+ </p>
+ </dd>
+
+ <dt id="magic-problems" style="margin-top:1em;">Magic major mode selection</dt>
+ <dd>
+ <p>
+ Sometimes the major mode that Emacs opens a file in is
+ not what you expect. This can happen with files like PHP
+ files. The reason might be that magic-mode-alist have
+ choosen a mode based on the content of the file. The way
+ this is done does not take files with mixes a mix of for
+ example XHTML and PHP into account.
+ </p>
+ <p>
+ You may try setting magic-mode-alist to nil if this is a
+ problem for you.
+ </p>
+ <p>
+ <em>
+ This is now no longer necessary since the introduction
+ of magic-fallback-mode-alist in CVS Emacs on 2007-05-16.
+ (If you have an Emacs newer than that, of course.)
+ </em>
+ </p>
+ </dd>
+
+ <dt id="underline-bug" style="margin-top:1em;">Long Red Underlines</dt>
+ <dd>
+ <p>
+ Because of a bug in Emacs 22.1 you can sometimes (at the
+ end of a line) get long red lines instead of just a
+ single underlined character. Many users (me included)
+ find this quite a bit disturbing. I have therefore added
+ a command to quickly hide/show the underlines. This is
+ on <em>C-c C-w</em>.
+ </p>
+ <p>
+ This is particular useful for example in the case where
+ you edit a PHP file and are bound to get a lot of XHTML
+ validation errors.
+ </p>
+ </dd>
+
+ <dt id="php-attribute-values" style="margin-top:1em;">Attribute values computed by PHP</dt>
+ <dd>
+ <p>
+ If you want to have attribute values computed by PHP
+ here is a way how to structure that to avoid breaking
+ completion and validation in the XHTML part unnessecary:
+ </p>
+ <p style="margin-left:2em">
+ &lt;img src=&quot;images/linux.png&quot; title=&quot;&lt;?php foo(&quot;bar&quot;);?&gt;&quot;/>
+ </p>
+ <p>
+ Unfortunately that still breaks XHTML validation since
+ &lt; is not allowed in strings. In the long run I
+ believe the XML validator has to be broken up so that it
+ avoids parsing the string here (in PHP files).
+ </p>
+ <p>
+ For now I have implemented a workaround.
+ If you are using constructs like those above then turn on <em>nxhtml-strval-mode</em>.
+ This will temporarily replace the above with
+ </p>
+ <p style="margin-left:2em">
+ &lt;img src=&quot;images/linux.png&quot; title=&quot;&#171;?php foo(&quot;bar&quot;);?&#187;&quot;/>
+ </p>
+ <p>
+ However on the screen you will still see the original
+ string and when writing to file the correct characters
+ will be used.
+ </p>
+ </dd>
+
+ <dt id="pi-note" style="margin-top:1em;">A note for PHP and its cousins</dt>
+ <dd>
+ <p>
+ The rules for a process instruction in XML, like &lt;?php
+ ... ?&gt; says that the text can contain any text except
+ <em>?&gt;</em>. So if you want to output that string
+ from PHP then break it up so it does not look as ?&gt; in
+ the source file.
+ </p>
+ <p>
+ It might be good to break up the beginning part of the
+ process instructions too. And please note that to use
+ XHTML validation or completion you should avoid using
+ &lt; in strings, since it is not allowed there.
+ </p>
+ </dd>
+
+ <dt id="pi-note" style="margin-top:1em;">Perl Mode slow with Mumamo Mode</dt>
+ <dd>
+ <p>
+ Perl mode used with MuMaMo mode sometimes makes the
+ fontification slow for big files. I do not know the
+ reason, but I am trying to find a solution for this. If
+ you encounter this problem, just turn off mumamo-mode in
+ that buffer.
+ </p>
+ </dd>
+
+ <dt id="tab-width-problems" style="margin-top:1em;">Tab width</dt>
+ <dd>
+ <p>
+ Do you have <em>tab-width</em> to something different than 8
+ (the default)? Then please change this to 8. I have got
+ reports of problem with indentation when it is not 8.
+ </p>
+ </dd>
+
+ <dt id="mmm-compat" style="margin-top:1em;">Why the chunks are not compatible with mmm</dt>
+ <dd>
+ <p>
+ Some people have asked why the way to specify chunks in
+ mumamo-mode is not compatible with the old mmm-mode. The
+ answer is that I was not sure that the way used in
+ mmm-mode for specifying the chunks was flexible enough.
+ </p>
+ <p>
+ And I am sure that even the way used in mumamo-mode is
+ not good enough for all cases, but I let it be the way
+ it is until I have a better understanding of the
+ problem. Suggestions and comments are welcome!
+ </p>
+ </dd>
+
+ </dl>
+
+ <h1>nXhtml Changes</h1>
+
+ <dl>
+ <dt>0.89</dt>
+ <dd>
+ <ul>
+ <li>
+ Corrected autostart for nXhtml when not used together with EmacsW32.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.90</dt>
+ <dd>
+ <ul>
+ <li>
+ Improved display of XML path.
+ </li>
+ <li>
+ Discontinued xmple-mode.
+ </li>
+ <li>
+ New major modes nxhtml-part-mode/nxml-part-mode replaces
+ minor mode xmlpe-mode. (While moving the code to
+ nxhtml-part.el I also fixed a bug in Xmple minor mode that
+ made Emacs take 99% of the CPU.)
+ </li>
+ </ul>
+ </dd>
+ <dt>0.91</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixed some calls to perl which prevented uploading of
+ a site of you did not have perl in the same location
+ as me.
+ </li>
+ <li>
+ Glued together things so that editing PHP files works
+ as I intended. (This means that Emacs switches between
+ php-mode and nxhtml-part-mode automatically when
+ moving point. And that you can use completion.)
+ </li>
+ <li>
+ Starting working on the documentation for nXhtml.
+ New layout to the documentation files.
+ Examples with images.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.92</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixes to make the switching between php and xhtml
+ style editing work better.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.93</dt>
+ <dd>
+ <ul>
+ <li>
+ Better error handling when switching to editing
+ embedded JavaScript and CSS.
+ </li>
+ <li>
+ Removed PHP spec from embedded switching since they
+ interfered with the automatic switching between php
+ and xhtml.
+ </li>
+ <li>
+ Gives an error message if web host is not defined in
+ site when trying to use View Uploaded File and
+ cousins.
+ </li>
+ <li>
+ Gives a ready message when finished uploading a single
+ file.
+ </li>
+ <li>
+ When using Mode Switching at &lt;? ... ?&gt; mode
+ switching could occur in wrong buffer. Fixed together
+ with some other buffer problems.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.94</dt>
+ <dd>
+ <ul>
+ <li>
+ Add http://www.w3.org/ to the help sites for CSS.
+ </li>
+ <li>
+ Included a CSS mode.
+ </li>
+ <li>
+ Added a menu entry for bug reporting.
+ </li>
+ <li>
+ Renamed menu bar entry from XHTML to nXhtml for clarity.
+ (But nXml menu bar entry is still called XML.)
+ </li>
+ <li>
+ Added work around for globalized minor modes in the
+ cases of MLinks, XML Path and mode switching at &lt;? ... ?&gt;.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.95</dt>
+ <dd>
+ <ul>
+ <li>
+ Added workaround for the problem with the first
+ keyboard key after automatically switching of mode at
+ &lt;? ... ?&gt;.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.96</dt>
+ <dd>
+ <ul>
+ <li>
+ Added support for multiple major modes with mumamo.el.
+ </li>
+ <li>
+ More conventient handling of links. They can now be
+ opened in the same window, 'other window' or in a new
+ frame.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.97</dt>
+ <dd>
+ <ul>
+ <li>
+ Schema was not setup after starting new page so
+ completion did not work. Fixed.
+ </li>
+ <li>
+ Added http://xhtml.com/ to help sites for XHTML.
+ </li>
+ <li>
+ Added the concept of <em>XML validation headers</em>.
+ These are just text parsed by the nXml validation
+ parser to get a start state before starting parsing a
+ buffer. This allows the use of the nXml completion in
+ buffers where there are no XML header. Such a header
+ is often lacking for example in PHP code since the
+ XHTML header is often generated dynamically.
+ </li>
+ <li>
+ Because of the change above <em>nxhtml-part-mode</em>
+ is no longer needed and is therefore declared
+ obsolete.
+ </li>
+ <li>
+ Corrected a bug in mlinks.el that prevented opening an
+ HTML link in a other window or a new frame.
+ </li>
+ <li>
+ Added support for JSP, eRuby and some support for perl
+ in mumamo.el.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.98</dt>
+ <dd id="v0.98">
+ <ul>
+ <li>
+ Mumamo was not found when nXhtml was installed with
+ just the zip file. Corrected. (nXhtml is also
+ installed when you install EmacsW32.)
+ </li>
+ <li>
+ Enhancement to mumamo error handling when a bad mode
+ specifier for an embedded mode is found.
+ </li>
+ <li>
+ Introduced a bug for empty XHTML documents in
+ 0.97. Corrected.
+ </li>
+ <li>
+ Corrected a bug for chunks 1 character long.
+ </li>
+ <li>
+ There is what I consider is a bug in Emacs 22.1 in the
+ handling of global minor mode that are not distributed
+ with Emacs. If they are turned on by customization,
+ but loaded after Emacs have loaded the customizations
+ (usually in .emacs) then they are not turned on
+ correctly. Added work-around for this.
+ </li>
+ <li>
+ <em>Extra XHTML Validation Header</em>:
+ <ul>
+ <li>
+ <em>Extra XHTML Validation Header</em> state was not saved when moving between chunks. Fixed.
+ </li>
+ <li>
+ Tried to make the concept of <em>Extra XHTML Validation Header</em>
+ more clear. Added this visually to the buffer.
+ </li>
+ <li>
+ <em>Extra XHTML Validation Headers</em> can now be turned on
+ automatically based on file name.
+ </li>
+ </ul>
+ </li>
+ <li>
+ <em>nXhtml menu:</em>
+ <ul>
+ <li>
+ Reorganized the nXhtml menu.
+ </li>
+ <li>
+ Added <em>customization</em> groups for help libraries to nXhtml.
+ </li>
+ <li>
+ Added an entry for customization of nXhtml to the menus.
+ </li>
+ <li>
+ Added <em>Tidy</em> to the menus again.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Corrected bug in <em>XML Path</em> (nxml-where) for single tags.
+ Other small fixes to nxhtml-where.
+ </li>
+ <li>
+ Documentation enhancements.
+ Added <em>The Quick Guide</em>.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.99</dt>
+ <dd id="v0.99">
+ <ul>
+ <li>
+ Fixed a serious bug in the cooperation between nxhtml-mode and mumamo-mode.
+ </li>
+ <li>
+ Turn on mumamo-mode by file name (mumamo-global-mode).
+ </li>
+ <li>
+ Extra XHTML Validation Header:
+ <ul>
+ <li>
+ The Extra XHTML Validation Header state were not saved when changing major mode in MuMaMo. Corrected.
+ </li>
+ <li>
+ Added more alternatives to the Extra XHTML Validation Header list.
+ This should make it easier to use completion with for example PHP.
+ </li>
+ <li>
+ Added default value for the Extra XHTML Validation Header.
+ </li>
+ <li>
+ Tried to make the use of Extra XHTML Validation Header more automatic and therefore useful.
+ Also tried to make it play better with setting schema file.
+ (There is no need normally to set schema file by hand.)
+ </li>
+ <li>
+ To turn this on by default customize nxhtml-global-validation-header-mode.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Possible to hide validation warnings without turning
+ on validation (which would make completion in the
+ XHTML part impossible).
+ </li>
+ <li>
+ Some fixes to php-mode:
+ <ul>
+ <li>Using the character # for comments now works for most cases.</li>
+ <li>Now uses the fontification faces in a more standard way which calms down the look.</li>
+ <li>Initialization bug fixes.</li>
+ <li>Renamed php-mode-user-hook to php-mode-hook to follow standard.</li>
+ </ul>
+ </li>
+ <li>
+ Indentation fixes:
+ <ul>
+ <li>
+ Various corrections to indentation in mumamo.
+ </li>
+ <li>
+ Added the possibility to use TAB to indent regions
+ (indent-region-mode).
+ </li>
+ <li>
+ Warn about bad indentation in mixed PHP/HTML code
+ when using php-mode only.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Fontification now fontifies all text first in main
+ major mode and thereafter applies submodes. (This
+ avoids some problems with around a submode chunk.)
+ </li>
+ <li>
+ Reorganized the nXhtml menu:
+ <ul>
+ <li>
+ There is now a minor mode for the nXhtml
+ menu. This makes it possible to easier use common
+ features when in buffers not in nxhtml-mode.
+ </li>
+ <li>
+ The nXhtml menu does not disappear when moving
+ into a chunk where the major mode is not
+ nxhtml-mode. The changes also makes it easy to
+ access uploading functions functions etc from
+ other modes than nxhtml-mode since the
+ <em>nXhtml</em> may also be shown in them.
+ </li>
+ <li>
+ The nXhtml menu can be turned on globally by default.
+ Customize nxhtml-menu-mode for that.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt>1.00</dt>
+ <dd id="v1.00">
+ <ul>
+ <li>
+ Reached version number 1.00 - which you maybe believe
+ means the bugs should be gone? Sorry, it is just that
+ I ran out of version numbers ;-) However it looks like
+ much fewer bugs at least.
+ </li>
+ <li>
+ Fixed problems mostly related to global turn on of different features in nXhtml.
+ </li>
+ <li>
+ Small fixes to indentation.
+ <ul>
+ <li>
+ nxhtml-mode could get confused by php tags.
+ </li>
+ <li>
+ nxhtml-mode did not indent &lt;!DOCTYPE in a sensible way.
+ </li>
+ <li>
+ Electric keys now works in embedded php when using mumamo-mode.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Tidy was very misbehaving since the output buffer was
+ not erased between different files. But I have got no
+ bug reports on this ;-)
+ </li>
+ <li>
+ Fixed a bug in validation that should up when using muamo-mode.
+ </li>
+ <li>
+ Fixed bug in &lt;script ...> and &lt;style ...> chunk dividing.
+ </li>
+ <li>
+ Added support for OpenLaszlo.
+ </li>
+ <li>
+ Corrections to mlinks-mode (visible mostly as links in
+ XHTML buffers):
+ <ul>
+ <li>
+ Links disappeared when a new file was
+ opened. Corrected.
+ </li>
+ <li>
+ Links were not correctly updated at changes in the
+ buffer when mumamo-mode was used. Fixed.
+ </li>
+ </ul>
+ </li>
+ <li>
+ The welcome message for nXhtml could be shown too
+ early sometimes when loading, before nXhtml actually
+ knew if it should be shown or not. Tried to fix it.
+ </li>
+ </ul>
+ </dd>
+ <dt>1.01</dt>
+ <dd id="v1.01">
+ <ul>
+ <li>
+ Reported wrong version number for nXhtml in the menus. Fixed.
+ </li>
+ <li>
+ <em>If you use the zip file to install nXhtml please
+ notice that it has now a top level nxml.</em> Sorry for not
+ having zipped it like that before!
+ </li>
+ <li>
+ The url links in <em>Welcome to nXhtml</em> was a bit
+ incorrect and did not work on all OS:es. Fixed.
+ </li>
+ <li>
+ Added customization of popup completion to the 'nxhtml
+ customization group so they are easier to find.
+ </li>
+ <li>
+ MuMaMo
+ <ul>
+ <li>
+ Struggled a bit with the load sequences of the elisp
+ libraries used by nXhtml when using MuMaMo.
+ </li>
+ <li>
+ Tried to get the global turn on of mumam-mode to work
+ in all cases.
+ </li>
+ <li>
+ The screen was blinking when changing overlays after
+ changes in the buffer. Tried to fix this.
+ </li>
+ <li>
+ Minor fixes do syntax highlighting, like taking care of single ':s.
+ </li>
+ <li>
+ Fixes to the support for JSP and eRuby.
+ </li>
+ <li>
+ Made the support for perl here documents a bit better.
+ Large perl documents are however still quite slow when
+ using mumamo-mode. I do not know the reason yet.
+ </li>
+ <li>
+ Refontification could miss some parts when buffer
+ changes caused chunk division changes. Complex,
+ tried to fix it, but I am a bit unsure that it
+ always works.
+ </li>
+ <li>
+ Cleaned up mumamo.el a bit.
+ </li>
+ <li>
+ Rewrote mumamo-test.el and functions called from it in
+ mumamo.el a bit to make tracebacks from errors more
+ useful. Changed keybindings in mumamo-test.el from
+ global to a minor mode <em>mumamo-test-mode</em>.
+ Renamed mumamo-notest.el to mumamo-test.el. Added it
+ to the zipped distribution of nXhtml.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Fixed a bug related to links and buffer changes.
+ </li>
+ </ul>
+ </dd>
+ <dt>1.02</dt>
+ <dd id="v1.02">
+ <ul>
+ <li>
+ Fixed a refontification bug that occured after changes.
+ </li>
+ </ul>
+ </dd>
+ <dt>1.03</dt>
+ <dd id="v1.03">
+ <ul>
+ <li>
+ Added the possibility to call GIMP.
+ </li>
+ <li>
+ Reworked the messages for fontification errors to try
+ to catch an error that shows up sometimes. Tried to
+ avoid disturbing normal use in spite of that error.
+ </li>
+ <li>
+ Reverted to using a short delay before switching major
+ mode when moving between buffers.
+ </li>
+ </ul>
+ </dd>
+ <dt>1.04</dt>
+ <dd id="v1.04">
+ <ul>
+ <li>
+ Completion in empty buffers with a completion header
+ did not work. Fixed.
+ </li>
+ <li>
+ Multiple major modes:
+ <ul>
+ <li>
+ Better error tracing for some functions.
+ </li>
+ <li>
+ Position was garbled when a ;-char was inserted in php-mode chunk. Fixed.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Extra XHTML Validation Header:
+ <ul>
+ <li>
+ View File did not work correctly when an extra
+ XHTML validation header was used. Corrected.
+ </li>
+ <li>
+ Extra XHTML validation headers are no longer
+ turned on by default in any buffers.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Tried to fix a problem when using newline-and-indent.
+ When this was in a mode derived from C the indentation
+ sometimes became 0.
+ </li>
+ <li>
+ Added a workaround for <a
+ href="#php-attribute-values">Attribute values computed
+ by PHP</a>
+ </li>
+ <li>
+ Ruby
+ <ul>
+ <li>
+ Multiple major mode turned on by default for .rhtml files when this mode is global.
+ </li>
+ <li>
+ Multiple major mode is no longer turned on when rub-mode is turned on.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Added .nosearch to subdirectories with no elisp files.
+ </li>
+ <li>
+ Added support for Firefox add-on It's All Text.
+ </li>
+ <li>
+ Added the possibility to easily view the output of scripts on the server (if they require no parameters).
+ You can now do that from the nXhtml menu.
+ Previously only html files on the server could be viewed that way.
+ Image files can also be viewed this way.
+ </li>
+ <li>
+ Upgraded htmlize.el to version 1.34
+ </li>
+ <li>
+ Added functions for unfilling.
+ </li>
+ <li>
+ Added keybindings and menu entries for longlines-mode, fill-paragraph and unfill-paragraph.
+ </li>
+ <li>
+ Added image-mode to those that are encompassed by
+ nxhtml-global-minor-mode so that images can be
+ uploaded more easily.
+ </li>
+ <li>
+ Added <em>edit with GIMP</em> and <em>upload</em> to the popup menu for links.
+ This avoids the need to load the linked files in Emacs first.
+ </li>
+ <li>
+ Fixed incorrect checks for mlinks-mode in menu building.
+ </li>
+ </ul>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <hr class="footer"/>
+ <p class="footer">
+ Copyright &copy; 2007 OurComments.org
+ --
+ Latest update 2007-05-06
+ </p>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/eval-in-html.el b/emacs.d/nxhtml/tests/in/eval-in-html.el
new file mode 100644
index 0000000..33bb9e9
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/eval-in-html.el
Binary files differ
diff --git a/emacs.d/nxhtml/tests/in/fontif-err.html b/emacs.d/nxhtml/tests/in/fontif-err.html
new file mode 100644
index 0000000..6f71efa
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/fontif-err.html
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>nXhtml Notes and Changes</title>
+ <link href="wd/grapes/nxhtml-grapes.css" rel="StyleSheet" type="text/css" />
+ </head>
+ <body>
+ <div id="container">
+
+ <div id="rgtcol">
+ <p id="nxhtml-home">
+ <a href="nxhtml.html">To nXhtml main page</a>
+ </p>
+
+ <h1>nXhtml Notes and Bugs</h1>
+
+ <dl>
+<!-- <dt id="bugs-affect-mode-switching">Two Emacs 22 beta bugs affects PHP mode switching</dt> -->
+<!-- <dd> -->
+<!-- <p> -->
+<!-- <a href="nxhtml.html#php">PHP / nXhtml automatic mode switching</a> is affected: -->
+<!-- </p> -->
+<!-- <ul> -->
+<!-- <li> -->
+<!-- Because of a bug in Emacs 22 beta you may have to turn -->
+<!-- off and on the switch <em>Mode Switching at &lt;? -->
+<!-- ... ?></em> in the menus to get the automatic mode -->
+<!-- switching to start. -->
+<!-- <em>(Work around added in 0.94)</em> -->
+<!-- </li> -->
+<!-- <li> -->
+<!-- There is the same problem with showing XML path. -->
+<!-- <em>(Work around added in 0.94)</em> -->
+<!-- </li> -->
+<!-- <li> -->
+<!-- It also affects MLinks. -->
+<!-- <em>(Work around added in 0.94)</em> -->
+<!-- </li> -->
+<!-- <li> -->
+<!-- Because of another bug in Emacs 22 beta immediately -->
+<!-- after mode the automatic mode switching the keyboard -->
+<!-- uses the key bindings from the <em>wrong mode for the -->
+<!-- first key</em>. Type any key on the keyboard, that -->
+<!-- cures it. -->
+<!-- <em>(Work around added in 0.95)</em> -->
+<!-- </li> -->
+<!-- </ul> -->
+<!-- </dd> -->
+ <dt id="new-mode-switching" style="margin-top:1em;">I have rewritten the PHP mode switching</dt>
+ <dd>
+ <p>
+ Because of some (fair) critique I have gotten about the way mode switching between php-mode and nxhtml-mode works
+ I have rewritten that part.
+ The new mode switching also includes embedded css, javascript, eRuby and JSP.
+ </p>
+ </dd>
+ <dt id="hadron-bugs" style="margin-top:1em;">A lot of bugs corrected for version 0.98</dt>
+ <dd>
+ <p>
+ I want to thanks Hadron Quark for helping me by testing
+ and pointing out bugs and weaknesses, most related to
+ editing of PHP. I have included fixes for many of them
+ in version 0.98 and more may follow.
+ </p>
+ </dd>
+ </dl>
+
+ <h1>nXhtml Changes</h1>
+
+ <dl>
+ <dt>0.89</dt>
+ <dd>
+ <ul>
+ <li>
+ Corrected autostart for nXhtml when not used together with EmacsW32.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.90</dt>
+ <dd>
+ <ul>
+ <li>
+ Improved display of XML path.
+ </li>
+ <li>
+ Discontinued xmple-mode.
+ </li>
+ <li>
+ New major modes nxhtml-part-mode/nxml-part-mode replaces
+ minor mode xmlpe-mode. (While moving the code to
+ nxhtml-part.el I also fixed a bug in Xmple minor mode that
+ made Emacs take 99% of the CPU.)
+ </li>
+ </ul>
+ </dd>
+ <dt>0.91</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixed some calls to perl which prevented uploading of
+ a site of you did not have perl in the same location
+ as me.
+ </li>
+ <li>
+ Glued together things so that editing PHP files works
+ as I intended. (This means that Emacs switches between
+ php-mode and nxhtml-part-mode automatically when
+ moving point. And that you can use completion.)
+ </li>
+ <li>
+ Starting working on the documentation for nXhtml.
+ New layout to the documentation files.
+ Examples with images.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.92</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixes to make the switching between php and xhtml
+ style editing work better.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.93</dt>
+ <dd>
+ <ul>
+ <li>
+ Better error handling when switching to editing
+ embedded JavaScript and CSS.
+ </li>
+ <li>
+ Removed PHP spec from embedded switching since they
+ interfered with the automatic switching between php
+ and xhtml.
+ </li>
+ <li>
+ Gives an error message if web host is not defined in
+ site when trying to use View Uploaded File and
+ cousins.
+ </li>
+ <li>
+ Gives a ready message when finished uploading a single
+ file.
+ </li>
+ <li>
+ When using Mode Switching at &lt;? ... ?> mode
+ switching could occur in wrong buffer. Fixed together
+ with some other buffer problems.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.94</dt>
+ <dd>
+ <ul>
+ <li>
+ Add http://www.w3.org/ to the help sites for CSS.
+ </li>
+ <li>
+ Included a CSS mode.
+ </li>
+ <li>
+ Added a menu entry for bug reporting.
+ </li>
+ <li>
+ Renamed menu bar entry from XHTML to nXhtml for clarity.
+ (But nXml menu bar entry is still called XML.)
+ </li>
+ <li>
+ Added work around for globalized minor modes in the
+ cases of MLinks, XML Path and mode switching at &lt;? ... ?>.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.95</dt>
+ <dd>
+ <ul>
+ <li>
+ Added workaround for the problem with the first
+ keyboard key after automatically switching of mode at
+ &lt;? ... ?>.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.96</dt>
+ <dd>
+ <ul>
+ <li>
+ Added support for multiple major modes with mumamo.el.
+ </li>
+ <li>
+ More conventient handling of links. They can now be
+ opened in the same window, 'other window' or in a new
+ frame.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.97</dt>
+ <dd>
+ <ul>
+ <li>
+ Schema was not setup after starting new page so
+ completion did not work. Fixed.
+ </li>
+ <li>
+ Added http://xhtml.com/ to help sites for XHTML.
+ </li>
+ <li>
+ Added the concept of <em>XML validation headers</em>.
+ These are just text parsed by the nXml validation
+ parser to get a start state before starting parsing a
+ buffer. This allows the use of the nXml completion in
+ buffers where there are no XML header. Such a header
+ is often lacking for example in PHP code since the
+ XHTML header is often generated dynamically.
+ </li>
+ <li>
+ Because of the change above <em>nxhtml-part-mode</em>
+ is no longer needed and is therefore declared
+ obsolete.
+ </li>
+ <li>
+ Corrected a bug in mlinks.el that prevented opening an
+ HTML link in a other window or a new frame.
+ </li>
+ <li>
+ Added support for JSP, eRuby and some support for perl
+ in mumamo.el.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.98</dt>
+ <dd id="0.98">
+ <ul>
+ <li>
+ Mumamo was not found when nXhtml was installed with
+ just the zip file. Corrected. (nXhtml is also
+ installed when you install EmacsW32.)
+ </li>
+ <li>
+ Enhancement to mumamo error handling when a bad mode
+ specifier for an embedded mode is found.
+ </li>
+ <li>
+ Introduced a bug for empty XHTML documents in
+ 0.97. Corrected.
+ </li>
+ <li>
+ Corrected a bug for chunks 1 character long.
+ </li>
+ <li>
+ There is a bug in Emacs 22 in the handling of global
+ minor mode that are not distributed with Emacs. If
+ they are turned on by customization, but loaded after
+ Emacs have loaded the customizations (usually in
+ .emacs) then they are not turned on correctly. Added
+ work-around for this.
+ </li>
+ <li>
+ <em>Extra XHTML Validation Header</em>:
+ <ul>
+ <li>
+ <em>Extra XHTML Validation Header</em> state was not saved when moving between chunks. Fixed.
+ </li>
+ <li>
+ Tried to make the concept of <em>Extra XHTML Validation Header</em>
+ more clear. Added this visually to the buffer.
+ </li>
+ <li>
+ <em>Extra XHTML Validation Headers</em> can now be turned on
+ automatically based on file name.
+ </li>
+ </ul>
+ </li>
+ <li>
+ <em>nXhtml menu:</em>
+ <ul>
+ <li>
+ Reorganized the nXhtml menu.
+ </li>
+ <li>
+ Added <em>customization</em> groups for help libraries to nXhtml.
+ </li>
+ <li>
+ Added an entry for customization of nXhtml to the menus.
+ </li>
+ <li>
+ Added <em>Tidy</em> to the menus again.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Corrected bug in <em>XML Path</em> (nxml-where) for single tags.
+ Other small fixes to nxhtml-where.
+ </li>
+ <li>
+ Documentation enhancements.
+ Added <em>The Quick Guide</em>.
+ </li>
+ <li>
+ </li>
+ </ul>
+ </dd>
+ <dt>0.99</dt>
+ <dd id="0.99">
+ <ul>
+ <li>
+ Corrections to indentation.
+ </li>
+ <li>
+ Turn on mumamo-mode by file name.
+ </li>
+ <li>
+ The Extra XHTML Validation Header state were not saved when changing major mode in MuMaMo. Corrected.
+ </li>
+ <li>
+ Added more alternatives to the Extra XHTML Validation Header list.
+ This should make it easier to use completion with for example PHP.
+ </li>
+ <li>
+ Added default value for the Extra XHTML Validation Header.
+ </li>
+ </ul>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <hr class="footer"/>
+ <p class="footer">
+ Copyright &copy; 2007 OurComments.org
+ --
+ Latest update 2007-04-11
+ </p>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/fontif-err.php b/emacs.d/nxhtml/tests/in/fontif-err.php
new file mode 100644
index 0000000..6f71efa
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/fontif-err.php
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>nXhtml Notes and Changes</title>
+ <link href="wd/grapes/nxhtml-grapes.css" rel="StyleSheet" type="text/css" />
+ </head>
+ <body>
+ <div id="container">
+
+ <div id="rgtcol">
+ <p id="nxhtml-home">
+ <a href="nxhtml.html">To nXhtml main page</a>
+ </p>
+
+ <h1>nXhtml Notes and Bugs</h1>
+
+ <dl>
+<!-- <dt id="bugs-affect-mode-switching">Two Emacs 22 beta bugs affects PHP mode switching</dt> -->
+<!-- <dd> -->
+<!-- <p> -->
+<!-- <a href="nxhtml.html#php">PHP / nXhtml automatic mode switching</a> is affected: -->
+<!-- </p> -->
+<!-- <ul> -->
+<!-- <li> -->
+<!-- Because of a bug in Emacs 22 beta you may have to turn -->
+<!-- off and on the switch <em>Mode Switching at &lt;? -->
+<!-- ... ?></em> in the menus to get the automatic mode -->
+<!-- switching to start. -->
+<!-- <em>(Work around added in 0.94)</em> -->
+<!-- </li> -->
+<!-- <li> -->
+<!-- There is the same problem with showing XML path. -->
+<!-- <em>(Work around added in 0.94)</em> -->
+<!-- </li> -->
+<!-- <li> -->
+<!-- It also affects MLinks. -->
+<!-- <em>(Work around added in 0.94)</em> -->
+<!-- </li> -->
+<!-- <li> -->
+<!-- Because of another bug in Emacs 22 beta immediately -->
+<!-- after mode the automatic mode switching the keyboard -->
+<!-- uses the key bindings from the <em>wrong mode for the -->
+<!-- first key</em>. Type any key on the keyboard, that -->
+<!-- cures it. -->
+<!-- <em>(Work around added in 0.95)</em> -->
+<!-- </li> -->
+<!-- </ul> -->
+<!-- </dd> -->
+ <dt id="new-mode-switching" style="margin-top:1em;">I have rewritten the PHP mode switching</dt>
+ <dd>
+ <p>
+ Because of some (fair) critique I have gotten about the way mode switching between php-mode and nxhtml-mode works
+ I have rewritten that part.
+ The new mode switching also includes embedded css, javascript, eRuby and JSP.
+ </p>
+ </dd>
+ <dt id="hadron-bugs" style="margin-top:1em;">A lot of bugs corrected for version 0.98</dt>
+ <dd>
+ <p>
+ I want to thanks Hadron Quark for helping me by testing
+ and pointing out bugs and weaknesses, most related to
+ editing of PHP. I have included fixes for many of them
+ in version 0.98 and more may follow.
+ </p>
+ </dd>
+ </dl>
+
+ <h1>nXhtml Changes</h1>
+
+ <dl>
+ <dt>0.89</dt>
+ <dd>
+ <ul>
+ <li>
+ Corrected autostart for nXhtml when not used together with EmacsW32.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.90</dt>
+ <dd>
+ <ul>
+ <li>
+ Improved display of XML path.
+ </li>
+ <li>
+ Discontinued xmple-mode.
+ </li>
+ <li>
+ New major modes nxhtml-part-mode/nxml-part-mode replaces
+ minor mode xmlpe-mode. (While moving the code to
+ nxhtml-part.el I also fixed a bug in Xmple minor mode that
+ made Emacs take 99% of the CPU.)
+ </li>
+ </ul>
+ </dd>
+ <dt>0.91</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixed some calls to perl which prevented uploading of
+ a site of you did not have perl in the same location
+ as me.
+ </li>
+ <li>
+ Glued together things so that editing PHP files works
+ as I intended. (This means that Emacs switches between
+ php-mode and nxhtml-part-mode automatically when
+ moving point. And that you can use completion.)
+ </li>
+ <li>
+ Starting working on the documentation for nXhtml.
+ New layout to the documentation files.
+ Examples with images.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.92</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixes to make the switching between php and xhtml
+ style editing work better.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.93</dt>
+ <dd>
+ <ul>
+ <li>
+ Better error handling when switching to editing
+ embedded JavaScript and CSS.
+ </li>
+ <li>
+ Removed PHP spec from embedded switching since they
+ interfered with the automatic switching between php
+ and xhtml.
+ </li>
+ <li>
+ Gives an error message if web host is not defined in
+ site when trying to use View Uploaded File and
+ cousins.
+ </li>
+ <li>
+ Gives a ready message when finished uploading a single
+ file.
+ </li>
+ <li>
+ When using Mode Switching at &lt;? ... ?> mode
+ switching could occur in wrong buffer. Fixed together
+ with some other buffer problems.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.94</dt>
+ <dd>
+ <ul>
+ <li>
+ Add http://www.w3.org/ to the help sites for CSS.
+ </li>
+ <li>
+ Included a CSS mode.
+ </li>
+ <li>
+ Added a menu entry for bug reporting.
+ </li>
+ <li>
+ Renamed menu bar entry from XHTML to nXhtml for clarity.
+ (But nXml menu bar entry is still called XML.)
+ </li>
+ <li>
+ Added work around for globalized minor modes in the
+ cases of MLinks, XML Path and mode switching at &lt;? ... ?>.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.95</dt>
+ <dd>
+ <ul>
+ <li>
+ Added workaround for the problem with the first
+ keyboard key after automatically switching of mode at
+ &lt;? ... ?>.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.96</dt>
+ <dd>
+ <ul>
+ <li>
+ Added support for multiple major modes with mumamo.el.
+ </li>
+ <li>
+ More conventient handling of links. They can now be
+ opened in the same window, 'other window' or in a new
+ frame.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.97</dt>
+ <dd>
+ <ul>
+ <li>
+ Schema was not setup after starting new page so
+ completion did not work. Fixed.
+ </li>
+ <li>
+ Added http://xhtml.com/ to help sites for XHTML.
+ </li>
+ <li>
+ Added the concept of <em>XML validation headers</em>.
+ These are just text parsed by the nXml validation
+ parser to get a start state before starting parsing a
+ buffer. This allows the use of the nXml completion in
+ buffers where there are no XML header. Such a header
+ is often lacking for example in PHP code since the
+ XHTML header is often generated dynamically.
+ </li>
+ <li>
+ Because of the change above <em>nxhtml-part-mode</em>
+ is no longer needed and is therefore declared
+ obsolete.
+ </li>
+ <li>
+ Corrected a bug in mlinks.el that prevented opening an
+ HTML link in a other window or a new frame.
+ </li>
+ <li>
+ Added support for JSP, eRuby and some support for perl
+ in mumamo.el.
+ </li>
+ </ul>
+ </dd>
+ <dt>0.98</dt>
+ <dd id="0.98">
+ <ul>
+ <li>
+ Mumamo was not found when nXhtml was installed with
+ just the zip file. Corrected. (nXhtml is also
+ installed when you install EmacsW32.)
+ </li>
+ <li>
+ Enhancement to mumamo error handling when a bad mode
+ specifier for an embedded mode is found.
+ </li>
+ <li>
+ Introduced a bug for empty XHTML documents in
+ 0.97. Corrected.
+ </li>
+ <li>
+ Corrected a bug for chunks 1 character long.
+ </li>
+ <li>
+ There is a bug in Emacs 22 in the handling of global
+ minor mode that are not distributed with Emacs. If
+ they are turned on by customization, but loaded after
+ Emacs have loaded the customizations (usually in
+ .emacs) then they are not turned on correctly. Added
+ work-around for this.
+ </li>
+ <li>
+ <em>Extra XHTML Validation Header</em>:
+ <ul>
+ <li>
+ <em>Extra XHTML Validation Header</em> state was not saved when moving between chunks. Fixed.
+ </li>
+ <li>
+ Tried to make the concept of <em>Extra XHTML Validation Header</em>
+ more clear. Added this visually to the buffer.
+ </li>
+ <li>
+ <em>Extra XHTML Validation Headers</em> can now be turned on
+ automatically based on file name.
+ </li>
+ </ul>
+ </li>
+ <li>
+ <em>nXhtml menu:</em>
+ <ul>
+ <li>
+ Reorganized the nXhtml menu.
+ </li>
+ <li>
+ Added <em>customization</em> groups for help libraries to nXhtml.
+ </li>
+ <li>
+ Added an entry for customization of nXhtml to the menus.
+ </li>
+ <li>
+ Added <em>Tidy</em> to the menus again.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Corrected bug in <em>XML Path</em> (nxml-where) for single tags.
+ Other small fixes to nxhtml-where.
+ </li>
+ <li>
+ Documentation enhancements.
+ Added <em>The Quick Guide</em>.
+ </li>
+ <li>
+ </li>
+ </ul>
+ </dd>
+ <dt>0.99</dt>
+ <dd id="0.99">
+ <ul>
+ <li>
+ Corrections to indentation.
+ </li>
+ <li>
+ Turn on mumamo-mode by file name.
+ </li>
+ <li>
+ The Extra XHTML Validation Header state were not saved when changing major mode in MuMaMo. Corrected.
+ </li>
+ <li>
+ Added more alternatives to the Extra XHTML Validation Header list.
+ This should make it easier to use completion with for example PHP.
+ </li>
+ <li>
+ Added default value for the Extra XHTML Validation Header.
+ </li>
+ </ul>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <hr class="footer"/>
+ <p class="footer">
+ Copyright &copy; 2007 OurComments.org
+ --
+ Latest update 2007-04-11
+ </p>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/genshi-HelloWorldPage.ghtml b/emacs.d/nxhtml/tests/in/genshi-HelloWorldPage.ghtml
new file mode 100644
index 0000000..f54fc5f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/genshi-HelloWorldPage.ghtml
@@ -0,0 +1,10 @@
+<div xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:py="http://genshi.edgewall.org/">
+
+ <!-- sadf -->
+
+ <div py:if="test">
+ Hello from hello!
+ Test ${name}
+ </div>
+</div>
diff --git a/emacs.d/nxhtml/tests/in/genshi-auto-mode.html b/emacs.d/nxhtml/tests/in/genshi-auto-mode.html
new file mode 100644
index 0000000..f54fc5f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/genshi-auto-mode.html
@@ -0,0 +1,10 @@
+<div xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:py="http://genshi.edgewall.org/">
+
+ <!-- sadf -->
+
+ <div py:if="test">
+ Hello from hello!
+ Test ${name}
+ </div>
+</div>
diff --git a/emacs.d/nxhtml/tests/in/genshi.ghtml b/emacs.d/nxhtml/tests/in/genshi.ghtml
new file mode 100644
index 0000000..bf0848d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/genshi.ghtml
@@ -0,0 +1,23 @@
+<?python
+ title = "A Genshi Template"
+ fruits = ["apple", "orange", "kiwi"]
+?>
+<html xmlns:py="http://genshi.edgewall.org/">
+ <head>
+ <title py:content="title">This is replaced.</title>
+ </head>
+ <body>
+ <p>These are some of my favorite fruits:</p>
+ <ul>
+ <li py:for="fruit in fruits">
+ I like ${fruit}s
+ </li>
+ </ul>
+{% python
+ from genshi.builder import tag
+ def greeting(name):
+ return 'Hello, %s!' % name
+%}
+${greeting('world')}
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/goesele-091110-testnote-orig.mm b/emacs.d/nxhtml/tests/in/goesele-091110-testnote-orig.mm
new file mode 100644
index 0000000..a9f78ca
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/goesele-091110-testnote-orig.mm
@@ -0,0 +1,16 @@
+<map version="0.9.0">
+<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
+<node CREATED="1257868981125" ID="ID_1727486195" MODIFIED="1257869002408" TEXT="Testnote">
+<richcontent TYPE="NOTE"><html>
+ <head>
+
+ </head>
+ <body>
+ <p>
+ A note
+ </p>
+ </body>
+</html>
+</richcontent>
+</node>
+</map>
diff --git a/emacs.d/nxhtml/tests/in/goesele-091110-testnote-temp.mm b/emacs.d/nxhtml/tests/in/goesele-091110-testnote-temp.mm
new file mode 100644
index 0000000..a9f78ca
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/goesele-091110-testnote-temp.mm
@@ -0,0 +1,16 @@
+<map version="0.9.0">
+<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
+<node CREATED="1257868981125" ID="ID_1727486195" MODIFIED="1257869002408" TEXT="Testnote">
+<richcontent TYPE="NOTE"><html>
+ <head>
+
+ </head>
+ <body>
+ <p>
+ A note
+ </p>
+ </body>
+</html>
+</richcontent>
+</node>
+</map>
diff --git a/emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm b/emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm
new file mode 100644
index 0000000..a9f78ca
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm
@@ -0,0 +1,16 @@
+<map version="0.9.0">
+<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
+<node CREATED="1257868981125" ID="ID_1727486195" MODIFIED="1257869002408" TEXT="Testnote">
+<richcontent TYPE="NOTE"><html>
+ <head>
+
+ </head>
+ <body>
+ <p>
+ A note
+ </p>
+ </body>
+</html>
+</richcontent>
+</node>
+</map>
diff --git a/emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm.org b/emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm.org
new file mode 100644
index 0000000..4e7cb67
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm.org
@@ -0,0 +1,5 @@
+* Testnote
+
+ :CLOCK:
+ my clock
+ :END:
diff --git a/emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm.org.mm b/emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm.org.mm
new file mode 100644
index 0000000..befbd1d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm.org.mm
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<map version="0.9.0">
+<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
+<node text="Testnote">
+<richcontent TYPE="NOTE"><html>
+<head>
+</head>
+<body>
+--org-mode: :CLOCK:<br />
+--org-mode: my clock<br />
+--org-mode: :END:<br />
+</body>
+</html>
+</richcontent>
+</node>
+</map>
diff --git a/emacs.d/nxhtml/tests/in/haml1.haml b/emacs.d/nxhtml/tests/in/haml1.haml
new file mode 100644
index 0000000..85f2324
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/haml1.haml
@@ -0,0 +1,132 @@
+!!! XML
+!!!
+
+%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en", :lang => "en"}
+
+%title
+ = @title
+ \= @title
+
+%script{:type => "text/javascript",
+ :src => "javascripts/script_#{2 + 7}"}
+
+%gee
+ %whiz
+ Wow this is cool!
+%p
+ <div id="blah">Blah!</div>
+%one
+ %two
+ %three Hey there
+
+%html(xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en")
+
+%a(title=@title href=href) Stuff
+%a{:title => @title, :href => href} Stuff
+
+%script(type="text/javascript"
+ src="javascripts/script_#{2 + 7}")
+
+%html{html_attrs('fr-fr')}
+
+%input{:selected => true}
+%input(selected)
+%input(selected=true)
+
+%div#things
+ %span#rice Chicken Fried
+ %p.beans{ :food => 'true' } The magical fruit
+ %h1.class.otherclass#id La La La
+
+#content .articles
+ .article.title Doogie Howser Comes Out
+ .article.date 2006-11-05
+ .article.entry
+ Neil Patrick Harris would like to dispel any rumors that he is straight
+
+%br/
+%meta{'http-equiv' => 'Content-Type', :content => 'text/html'}/
+
+%br
+%meta{'http-equiv' => 'Content-Type', :content => 'text/html'}
+
+%blockquote<
+ %div
+ Foo!
+
+%img
+%img>
+%img
+
+%img
+%pre><
+ foo
+ bar
+%img
+
+%peanutbutterjelly
+ / This is the peanutbutterjelly element
+ I like sandwiches!
+
+/
+ %p This doesn't render...
+ %div
+ %h1 Because it's commented out!
+
+/[if IE]
+ %a{ :href => 'http://www.mozilla.com/en-US/firefox/' }
+ %h1 Get Firefox
+
+%p foo
+-# This is a comment
+%p bar
+
+- foo = "hello"
+- foo << " there"
+- foo << " you!"
+%p= foo
+
+- (42...47).each do |i|
+ %p= i
+%p See, I can count!
+
+%p
+ - case 2
+ - when 1
+ = "1!"
+ - when 2
+ = "2?"
+ - when 3
+ = "3."
+
+%p This is #{h quality} cake!
+%p= "This is the #{h quality} cake!"
+
+%p
+ Look at \\#{h word} lack of backslash: \#{foo}
+ And yon presence thereof: \{foo}
+
+:javascript
+ $(document).ready(function() {
+ alert(#{@message.to_json});
+ });
+
+&= "I like cheese & crackers"
+
+= "I feel <strong>!"
+!= "I feel <strong>!"
+compiles to
+I feel &lt;strong&gt;!
+I feel <strong>!
+
+%p
+ :markdown
+ Textile
+ =======
+
+ Hello, *World*
+
+- flavor = "raspberry"
+#content
+ :textile
+ I *really* prefer _#{h flavor}_ jam.
diff --git a/emacs.d/nxhtml/tests/in/heredoc.php b/emacs.d/nxhtml/tests/in/heredoc.php
new file mode 100644
index 0000000..39e82e5
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/heredoc.php
@@ -0,0 +1,61 @@
+
+<?php
+
+/* Testing fill paragraph and friends, fill me fill me fill me fill me
+ fill me fill me fill me fill me fill me fill me fill me fill me
+ fill me fill me
+
+ However coloring it differently than the top level (or level 1) php
+ chunks may help detect nesting errors. */
+
+$name = "Joe Smith";
+$occupation = "Programmer";
+echo <<<EOF
+
+ This is a heredoc text-mode section.
+ For more information talk to $name, your local $occupation.
+
+EOF;
+
+$toprint = <<< HTMLEOF
+<!-- heredoc html-mode section -->
+<style type="text/css">
+.bugfix { color: red; }
+</style>
+
+<script type="text/javascript" language="javascript">
+
+ function onEndCrop( coords, dimensions ) {
+ alert("Test");
+ }
+</script>
+
+
+<a href="javascript:void window.open('');" title="Something">
+ <img src="/administrator/images/imprimir.png"
+ style="color:red;"
+ border="0"
+ alt="<?php echo _CMN_PDF;?>"
+ onmouseover="this.src='images/imprimir_on.png';swap('imprimir',1);"
+ onmouseout="this.src='images/imprimir.png'; swap('imprimir',0);"
+ class="bot" id="imprimir"/>
+ </a>
+
+<?php
+
+/* This inner php chunk is not very useful (except for presentation of
+ MuMaMo chunk dividing capabilities and deficiences...), since php
+ normally seems to run only one pass...
+
+ However coloring it differently than the top level (or level 1) php
+ chunks may help detect nesting errors. */
+
+echo <<<ONEMORELEVEL
+Just for testing the chunk background color...
+ONEMORELEVEL;
+?>
+
+HTMLEOF;
+echo strtolower($toprint);
+
+?>
diff --git a/emacs.d/nxhtml/tests/in/heredoc.pl b/emacs.d/nxhtml/tests/in/heredoc.pl
new file mode 100644
index 0000000..8620357
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/heredoc.pl
@@ -0,0 +1,11 @@
+$text = 'Text from a Perl string.';
+print <<HTML;
+<html>
+<head>
+<title>Here-Doc Example</title>
+</head>
+<body>
+<h1>Here-Doc Example</h1>
+<p>$text</p>
+</body>
+HTML
diff --git a/emacs.d/nxhtml/tests/in/heredoc.py b/emacs.d/nxhtml/tests/in/heredoc.py
new file mode 100644
index 0000000..aaa847f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/heredoc.py
@@ -0,0 +1,11 @@
+sender = 'Buffy the Vampire Slayer'
+recipient = 'Spike'
+
+print("""\
+Dear %(recipient)s,
+
+I wish you to leave Sunnydale and never return.
+
+Not Quite Love,
+%(sender)s
+""" % locals())
diff --git a/emacs.d/nxhtml/tests/in/heredoc.rb b/emacs.d/nxhtml/tests/in/heredoc.rb
new file mode 100644
index 0000000..ab7b54f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/heredoc.rb
@@ -0,0 +1,8 @@
+now = Time.now
+puts <<-EOF
+ It's #{now.hour} o'clock John, where are your kids?
+ EOF
+now = Time.now
+puts <<EOF
+ It's #{now.hour} o'clock John, where are your kids?
+EOF
diff --git a/emacs.d/nxhtml/tests/in/heredoc.sh b/emacs.d/nxhtml/tests/in/heredoc.sh
new file mode 100644
index 0000000..5893ac7
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/heredoc.sh
@@ -0,0 +1,4 @@
+tr a-z A-Z <<EOF
+
+
+EOF
diff --git a/emacs.d/nxhtml/tests/in/hg-2008-03-22-ajax.xhtml b/emacs.d/nxhtml/tests/in/hg-2008-03-22-ajax.xhtml
new file mode 100644
index 0000000..22b3ec1
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/hg-2008-03-22-ajax.xhtml
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org" />
+ <title></title>
+ </head>
+ <body>
+ <script language="JavaScript" type="text/javascript">
+ //<![CDATA[
+function test() {
+ var xmlhttp = new XMLHttpRequest();
+ xmlhttp.onreadystatechange=function() {
+ if (xmlhttp.readystate==4) {
+ if (xmlhttp.status==200) {
+ alert(xmlhttp.responseText);
+ }else {
+ alert(xmlhttp.status);
+ }
+ #ffff00;
+ }
+ xmlhttp.open("post","/hello/cardCpu/queryList");
+ var body = "label="+encodeURIComponent("±£ÍÍ");
+ alert(body)
+ xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
+ xmlhttp.send(body);
+ }
+}
+//]]>
+ </script>
+ <hr />
+ <address><a href="mailto:agile@agile">agile.guo</a></address>
+ <!-- Created: Thu Sep 14 22:01:37 CST 2006 -->
+ <!-- hhmts start -->
+ Last modified: Thu Sep 14 22:01:42 CST 2006 <!-- hhmts end -->
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/hq-070510-test.php b/emacs.d/nxhtml/tests/in/hq-070510-test.php
new file mode 100644
index 0000000..8c57717
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/hq-070510-test.php
@@ -0,0 +1,12 @@
+
+<?php
+require_once("include/utils.php");
+?>
+
+<div class="linkcontainer">
+<?php
+$_SESSION["linksfile"]="csv/links.csv";
+include("displaylinks.php");
+?>
+</div>
+
diff --git a/emacs.d/nxhtml/tests/in/hq-070510-test.php.html b/emacs.d/nxhtml/tests/in/hq-070510-test.php.html
new file mode 100644
index 0000000..57736a3
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/hq-070510-test.php.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <title>hq-070510-test.php</title>
+ <meta name="generator" content="emacs 22.1.1; htmlfontify 0.20">
+<style type="text/css"><!--
+body { background: rgb(255, 255, 255); color: rgb(0, 0, 0); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: none; }
+span.default { background: rgb(255, 255, 255); color: rgb(0, 0, 0); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: none; }
+span.default a { background: rgb(255, 255, 255); color: rgb(0, 0, 0); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: underline; }
+span.constant { color: rgb(95, 158, 160); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: none; }
+span.constant a { color: rgb(95, 158, 160); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: underline; }
+span.variable-name { color: rgb(184, 134, 11); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: none; }
+span.variable-name a { color: rgb(184, 134, 11); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: underline; }
+span.function-name { color: rgb(0, 0, 255); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: none; }
+span.function-name a { color: rgb(0, 0, 255); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: underline; }
+span.string { color: rgb(188, 143, 143); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: none; }
+span.string a { color: rgb(188, 143, 143); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: underline; }
+span.default { background: rgb(255, 255, 255); color: rgb(0, 0, 0); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: none; }
+span.default a { background: rgb(255, 255, 255); color: rgb(0, 0, 0); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: underline; }
+span.keyword { color: rgb(160, 32, 240); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: none; }
+span.keyword a { color: rgb(160, 32, 240); background: rgb(255, 255, 255); font-style: normal; font-weight: 500; font-stretch: normal; font-family: outline-courier new; font-size: 9pt; text-decoration: underline; }
+ --></style>
+
+ </head>
+ <body>
+
+<pre>
+
+&lt;<span class="keyword">?php</span>
+<span class="default">require_once(</span><span class="string">&quot;include/utils.php&quot;</span>);
+?&gt;
+
+&lt;<span class="function-name">div</span> <span class="variable-name">class</span>=<span class="string">&quot;linkcontainer&quot;</span>&gt;
+&lt;<span class="keyword">?php</span>
+$<span class="constant">_SESSION</span>[<span class="string">&quot;linksfile&quot;</span>]=<span class="string">&quot;csv/links.csv&quot;</span>;
+<span class="default">include(</span><span class="string">&quot;displaylinks.php&quot;</span>);
+?&gt;
+&lt;/<span class="function-name">div</span>&gt;
+
+
+</pre>
+
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/hq-070524-bug.php b/emacs.d/nxhtml/tests/in/hq-070524-bug.php
new file mode 100644
index 0000000..24bd8e8
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/hq-070524-bug.php
@@ -0,0 +1,10 @@
+<?php
+
+ Echo "why is this text red";
+
+ /* It looks like there is some sync problem with php-mode
+ here. Adding a ( before the string makes the string
+ beeing fontified as a string.
+ */
+
+?>
diff --git a/emacs.d/nxhtml/tests/in/hq-071006-index.php b/emacs.d/nxhtml/tests/in/hq-071006-index.php
new file mode 100644
index 0000000..78b60e8
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/hq-071006-index.php
@@ -0,0 +1,38 @@
+<?php
+
+// some basic library functions
+include_once 'lib.php';
+
+$book = new Mybook($api_key, $secret);
+
+if (isset($_POST['to'])) {
+ $prints_id = (int)$_POST['to'];
+ $prints = do_step($user, $prints_id);
+} else {
+ if (isset($_GET['to'])) {
+ $prints_id = (int)$_GET['to'];
+ } else {
+ $prints_id = $user;
+ }
+ $prints = get_prints($prints_id);
+}
+
+?>
+<div style="padding: 10px;">
+ <h2>Hi <mb:name firstnameonly="true" uid="<?php=$user?>" useyou="false"/>!</h2><br/>
+ <a href="<?= $book->get_add_url() ?>">Put prints in your profile</a>.
+ <form method="post" action="http://my-domain.com/footprints/">
+<?php
+ if ($prints_id != $user) {
+ echo '<input type="hidden" name="to" value="' . $prints_id . '"/>';
+ } else {
+ echo '<br/>';
+ }
+?>
+ <input value="step" type="submit"/>
+ </form>
+ <hr/>
+ These are <mb:name uid="<?= $prints_id ?>" possessive="true"/> Footprints:<br/>
+ <?php echo render_prints($prints, 10); ?>
+ <div style="clear: both;"/>
+</div>
diff --git a/emacs.d/nxhtml/tests/in/html-syntactic-err-l164.html b/emacs.d/nxhtml/tests/in/html-syntactic-err-l164.html
new file mode 100644
index 0000000..275ae67
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/html-syntactic-err-l164.html
@@ -0,0 +1,1474 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>News and Notes about nXhtml</title>
+ <link href="wd/grapes/nxhtml-grapes.css" rel="StyleSheet" type="text/css" />
+ </head>
+ <body>
+ <div id="container">
+
+ <div id="rgtcol">
+ <p id="nxhtml-home">
+ <a href="nxhtml.html">To nXhtml main page</a>
+ </p>
+
+ <h1>News and Notes about nXhtml</h1>
+
+ <dl>
+
+ <dt id="hadron-bugs" style="margin-top:1em;">Thanks for testing!</dt>
+ <dd>
+ <p>
+ I want to thanks the testers (who have been many now),
+ especially to my first testers Hadron Quark and Eric
+ Lilja, for helping me by testing and pointing out bugs
+ and weaknesses, most of them related to editing of PHP.
+ </p>
+ <p>
+ Without testers all kind of problems I just can't
+ imagine myself would still be there in nXhtml. For
+ example Hadron told me once that he got the error
+ <i>(wrong-type-argument stringp nil)</i>. Eh, I replied, are
+ you sure. Yes he was. I tried the same file as him. No
+ error.
+ </p>
+ <p>
+ The error happened during fontification so the error
+ message above was all we had. A real black box for
+ me. Or perhaps black magic? After much confusion and
+ some hard work we finally found out what it was and I
+ implemented a better way to catch such errors. If Hadron
+ would have given up the problem would still have been
+ there. Some problems are just impossible to solve
+ without good cooperation. So, again, thanks Hadron.
+ </p>
+ <p>
+ BTW, I will perhaps add some even better way to Emacs to
+ catch these errors so other can benefit from our
+ insights too, but that requires some time and effort
+ which I can't afford right now.
+ </p>
+ </dd>
+
+ <dt id="state-of-the-art" style="margin-top:1em;
+ background-color: #00fa9a;
+ background-color: #20b2aa;
+ padding: 0.5em;
+ ">The State of the Art</dt>
+ <dd style="background-color: #54ff9f; padding: 0.5em">
+ <p>
+ I have more and more come to realize that there are two
+ main parts of nXhtml which are in a bit different
+ degrees of maturity. The reason for the difference is
+ mainly that one of them, <strong>mumamo-mode</strong>,
+ requires very tight integration with Emacs in a way that
+ currently is difficult. There are also things to
+ discover, for example in the interactions with other
+ minor modes. Each minor mode actually have to be tested
+ with mumamo-mode. (Instruction for library authors are
+ in mumamo-mode.el)
+ </p>
+ <p>
+ That said I still think <strong>mumamo-mode</strong> is
+ mature enough for serious use. At least the
+ <i>fontification now works ok</i> I believe. Other
+ parts that also depends on the major mode used,
+ like <i>filling and indentation have some quirks</i>. To
+ make those work more reliably in all cases a bit more
+ standardisation across different major modes is
+ needed. (It is perhaps possible to work around those
+ problems in mumamo-mode, but the long term benefits of
+ doing that are probably small.)
+ </p>
+ <p>
+ The other part, <strong>nxhtml-mode</strong>, is more mature,
+ since it stands more by itself and since it builds on
+ the very stable nxml-mode. I would not say nxhtml-mode
+ is (ever) finished, but it is stable and useful.
+ </p>
+ </dd>
+
+ <dt id="magic-problems" style="margin-top:1em;">Magic major mode selection</dt>
+ <dd>
+ <p>
+ Sometimes the major mode that Emacs opens a file in is
+ not what you expect. This can happen with files like PHP
+ files. The reason might be that magic-mode-alist have
+ choosen a mode based on the content of the file. The way
+ this is done does not take files with mixes a mix of for
+ example XHTML and PHP into account.
+ </p>
+ <p>
+ You may try setting magic-mode-alist to nil if this is a
+ problem for you.
+ </p>
+ <p>
+ <em>
+ This is now no longer necessary since the introduction
+ of magic-fallback-mode-alist in CVS Emacs on 2007-05-16.
+ (If you have an Emacs newer than that, of course.)
+ </em>
+ </p>
+ </dd>
+
+ <dt id="underline-bug" style="margin-top:1em;">Long Red Underlines</dt>
+ <dd>
+ <p>
+ Because of a bug in Emacs 22.1 you can sometimes (at the
+ end of a line) get long red lines instead of just a
+ single underlined character. Many users (me included)
+ find this quite a bit disturbing. I have therefore added
+ a command to quickly hide/show the underlines. This is
+ on <em>C-c C-w</em>.
+ </p>
+ <p>
+ This is particular useful for example in the case where
+ you edit a PHP file and are bound to get a lot of XHTML
+ validation errors.
+ </p>
+ </dd>
+
+ <dt id="php-attribute-values" style="margin-top:1em;">Attribute values computed by PHP</dt>
+ <dd>
+ <p>
+ If you want to have attribute values computed by PHP
+ here is a way how to structure that to avoid breaking
+ completion and validation in the XHTML part unnessecary:
+ </p>
+ <p style="margin-left:2em">
+ &lt;img src=&quot;images/linux.png&quot; title=&quot;&lt;?php foo(&quot;bar&quot;);?&gt;&quot;/>
+ </p>
+ <p>
+ Unfortunately that still breaks XHTML validation since
+ &lt; is not allowed in strings. In the long run I
+ believe the XML validator has to be broken up so that it
+ avoids parsing the string here (in PHP files).
+ </p>
+ <p>
+ For now I have implemented a workaround.
+ If you are using constructs like those above then turn on <em>nxhtml-strval-mode</em>.
+ This will temporarily replace the above with
+ </p>
+ <p style="margin-left:2em">
+ &lt;img src=&quot;images/linux.png&quot; title=&quot;&#171;?php foo(&quot;bar&quot;);?&#187;&quot;/>
+ </p>
+ <p>
+ However on the screen you will still see the original
+ string and when writing to file the correct characters
+ will be used.
+ </p>
+ </dd>
+
+ <dt id="pi-note" style="margin-top:1em;">A note for PHP and its cousins</dt>
+ <dd>
+ <p>
+ The rules for a process instruction in XML, like &lt;?php
+ ... ?&gt; says that the text can contain any text except
+ <em>?&gt;</em>. So if you want to output that string
+ from PHP then break it up so it does not look as ?&gt; in
+ the source file.
+ </p>
+ <p>
+ It might be good to break up the beginning part of the
+ process instructions too. And please note that to use
+ XHTML validation or completion you should avoid using
+ &lt; in strings, since it is not allowed there.
+ </p>
+ </dd>
+
+<!-- <dt id="pi-note" style="margin-top:1em;">Perl Mode slow with Mumamo Mode</dt> -->
+<!-- <dd> -->
+<!-- <p> -->
+<!-- Perl mode used with MuMaMo mode sometimes makes the -->
+<!-- fontification slow for big files. I do not know the -->
+<!-- reason, but I am trying to find a solution for this. If -->
+<!-- you encounter this problem, just turn off mumamo-mode in -->
+<!-- that buffer. -->
+<!-- </p> -->
+<!-- </dd> -->
+
+ <dt id="tab-width-problems" style="margin-top:1em;">Tab width</dt>
+ <dd>
+ <p>
+ Do you have <em>tab-width</em> to something different than 8
+ (the default)? Then please change this to 8. I have got
+ reports of problem with indentation when it is not 8.
+ </p>
+ </dd>
+
+ <dt id="mmm-compat" style="margin-top:1em;">Why the chunks are not compatible with mmm</dt>
+ <dd>
+ <p>
+ Some people have asked why the way to specify chunks in
+ mumamo-mode is not compatible with the old mmm-mode. The
+ answer is that I was not sure that the way used in
+ mmm-mode for specifying the chunks was flexible enough.
+ </p>
+ <p>
+ And I am sure that even the way used in mumamo-mode is
+ not good enough for all cases, but I let it be the way
+ it is until I have a better understanding of the
+ problem. Suggestions and comments are welcome!
+ </p>
+ </dd>
+
+ </dl>
+
+ <h1 id="change-history">nXhtml Changes</h1>
+
+ <div>
+ <a href="#v0.89">v0.89</a>
+ <a href="#v0.90">v0.90</a>
+ <a href="#v0.91">v0.91</a>
+ <a href="#v0.92">v0.92</a>
+ <a href="#v0.93">v0.93</a>
+ <a href="#v0.94">v0.94</a>
+ <a href="#v0.95">v0.95</a>
+ <a href="#v0.96">v0.96</a>
+ <a href="#v0.97">v0.97</a>
+ <a href="#v0.98">v0.98</a>
+ <a href="#v0.99">v0.99</a>
+ <a href="#v1.00">v1.00</a>
+ <a href="#v1.01">v1.01</a>
+ <a href="#v1.02">v1.02</a>
+ <a href="#v1.03">v1.03</a>
+ <a href="#v1.04">v1.04</a>
+ <a href="#v1.10">v1.10</a>
+ <a href="#v1.11">v1.10</a>
+ <a href="#v1.12">v1.10</a>
+ <a href="#v1.13">v1.10</a>
+ <a href="#v1.14">v1.10</a>
+ </div>
+
+ <dl>
+ <dt id="v0.89">0.89</dt>
+ <dd>
+ <ul>
+ <li>
+ Corrected autostart for nXhtml when not used together with EmacsW32.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.90">0.90</dt>
+ <dd>
+ <ul>
+ <li>
+ Improved display of XML path.
+ </li>
+ <li>
+ Discontinued xmple-mode.
+ </li>
+ <li>
+ New major modes nxhtml-part-mode/nxml-part-mode replaces
+ minor mode xmlpe-mode. (While moving the code to
+ nxhtml-part.el I also fixed a bug in Xmple minor mode that
+ made Emacs take 99% of the CPU.)
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.91">0.91</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixed some calls to perl which prevented uploading of
+ a site of you did not have perl in the same location
+ as me.
+ </li>
+ <li>
+ Glued together things so that editing PHP files works
+ as I intended. (This means that Emacs switches between
+ php-mode and nxhtml-part-mode automatically when
+ moving point. And that you can use completion.)
+ </li>
+ <li>
+ Starting working on the documentation for nXhtml.
+ New layout to the documentation files.
+ Examples with images.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.92">0.92</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixes to make the switching between php and xhtml
+ style editing work better.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.93">0.93</dt>
+ <dd>
+ <ul>
+ <li>
+ Better error handling when switching to editing
+ embedded JavaScript and CSS.
+ </li>
+ <li>
+ Removed PHP spec from embedded switching since they
+ interfered with the automatic switching between php
+ and xhtml.
+ </li>
+ <li>
+ Gives an error message if web host is not defined in
+ site when trying to use View Uploaded File and
+ cousins.
+ </li>
+ <li>
+ Gives a ready message when finished uploading a single
+ file.
+ </li>
+ <li>
+ When using Mode Switching at &lt;? ... ?&gt; mode
+ switching could occur in wrong buffer. Fixed together
+ with some other buffer problems.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.94">0.94</dt>
+ <dd>
+ <ul>
+ <li>
+ Add http://www.w3.org/ to the help sites for CSS.
+ </li>
+ <li>
+ Included a CSS mode.
+ </li>
+ <li>
+ Added a menu entry for bug reporting.
+ </li>
+ <li>
+ Renamed menu bar entry from XHTML to nXhtml for clarity.
+ (But nXml menu bar entry is still called XML.)
+ </li>
+ <li>
+ Added work around for globalized minor modes in the
+ cases of MLinks, XML Path and mode switching at &lt;? ... ?&gt;.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.95">0.95</dt>
+ <dd>
+ <ul>
+ <li>
+ Added workaround for the problem with the first
+ keyboard key after automatically switching of mode at
+ &lt;? ... ?&gt;.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.96">0.96</dt>
+ <dd>
+ <ul>
+ <li>
+ Added support for multiple major modes with mumamo.el.
+ </li>
+ <li>
+ More conventient handling of links. They can now be
+ opened in the same window, 'other window' or in a new
+ frame.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.97">0.97</dt>
+ <dd>
+ <ul>
+ <li>
+ Schema was not setup after starting new page so
+ completion did not work. Fixed.
+ </li>
+ <li>
+ Added http://xhtml.com/ to help sites for XHTML.
+ </li>
+ <li>
+ Added the concept of <em>fictive XML validation
+ headers</em>. These are just text parsed by the nXml
+ validation parser to get a start state before starting
+ parsing a buffer. This allows the use of the nXml
+ completion in buffers where there are no XML header.
+ Such a header is often lacking for example in PHP code
+ since the XHTML header is often generated dynamically.
+ </li>
+ <li>
+ Because of the change above <em>nxhtml-part-mode</em>
+ is no longer needed and is therefore declared
+ obsolete.
+ </li>
+ <li>
+ Corrected a bug in mlinks.el that prevented opening an
+ HTML link in a other window or a new frame.
+ </li>
+ <li>
+ Added support for JSP, eRuby and some support for perl
+ in mumamo.el.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.98">0.98</dt>
+ <dd>
+ <ul>
+ <li>
+ Mumamo was not found when nXhtml was installed with
+ just the zip file. Corrected. (nXhtml is also
+ installed when you install EmacsW32.)
+ </li>
+ <li>
+ Enhancement to mumamo error handling when a bad mode
+ specifier for an embedded mode is found.
+ </li>
+ <li>
+ Introduced a bug for empty XHTML documents in
+ 0.97. Corrected.
+ </li>
+ <li>
+ Corrected a bug for chunks 1 character long.
+ </li>
+ <li>
+ There is what I consider is a bug in Emacs 22.1 in the
+ handling of global minor mode that are not distributed
+ with Emacs. If they are turned on by customization,
+ but loaded after Emacs have loaded the customizations
+ (usually in .emacs) then they are not turned on
+ correctly. Added work-around for this.
+ </li>
+ <li>
+ <em>Fictive XHTML Validation Header</em>:
+ <ul>
+ <li>
+ <em>Fictive XHTML Validation Header</em> state was not saved when moving between chunks. Fixed.
+ </li>
+ <li>
+ Tried to make the concept of <em>Fictive XHTML Validation Header</em>
+ more clear. Added this visually to the buffer.
+ </li>
+ <li>
+ <em>Fictive XHTML Validation Headers</em> can now be turned on
+ automatically based on file name.
+ </li>
+ </ul>
+ </li>
+ <li>
+ <em>nXhtml menu:</em>
+ <ul>
+ <li>
+ Reorganized the nXhtml menu.
+ </li>
+ <li>
+ Added <em>customization</em> groups for help libraries to nXhtml.
+ </li>
+ <li>
+ Added an entry for customization of nXhtml to the menus.
+ </li>
+ <li>
+ Added <em>Tidy</em> to the menus again.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Corrected bug in <em>XML Path</em> (nxml-where) for single tags.
+ Other small fixes to nxhtml-where.
+ </li>
+ <li>
+ Documentation enhancements.
+ Added <em>The Quick Guide</em>.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v0.99">0.99</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixed a serious bug in the cooperation between nxhtml-mode and mumamo-mode.
+ </li>
+ <li>
+ Turn on mumamo-mode by file name (mumamo-global-mode).
+ </li>
+ <li>
+ Fictive XHTML Validation Header:
+ <ul>
+ <li>
+ The Fictive XHTML Validation Header state were not saved when changing major mode in MuMaMo. Corrected.
+ </li>
+ <li>
+ Added more alternatives to the Fictive XHTML Validation Header list.
+ This should make it easier to use completion with for example PHP.
+ </li>
+ <li>
+ Added default value for the Fictive XHTML Validation Header.
+ </li>
+ <li>
+ Tried to make the use of Fictive XHTML Validation Header more automatic and therefore useful.
+ Also tried to make it play better with setting schema file.
+ (There is no need normally to set schema file by hand.)
+ </li>
+ <li>
+ To turn this on by default customize nxhtml-global-validation-header-mode.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Possible to hide validation warnings without turning
+ on validation (which would make completion in the
+ XHTML part impossible).
+ </li>
+ <li>
+ Some fixes to php-mode:
+ <ul>
+ <li>Using the character # for comments now works for most cases.</li>
+ <li>Now uses the fontification faces in a more standard way which calms down the look.</li>
+ <li>Initialization bug fixes.</li>
+ <li>Renamed php-mode-user-hook to php-mode-hook to follow standard.</li>
+ </ul>
+ </li>
+ <li>
+ Indentation fixes:
+ <ul>
+ <li>
+ Various corrections to indentation in mumamo.
+ </li>
+ <li>
+ Added the possibility to use TAB to indent regions
+ (indent-region-mode).
+ </li>
+ <li>
+ Warn about bad indentation in mixed PHP/HTML code
+ when using php-mode only.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Fontification now fontifies all text first in main
+ major mode and thereafter applies submodes. (This
+ avoids some problems with around a submode chunk.)
+ </li>
+ <li>
+ Reorganized the nXhtml menu:
+ <ul>
+ <li>
+ There is now a minor mode for the nXhtml
+ menu. This makes it possible to easier use common
+ features when in buffers not in nxhtml-mode.
+ </li>
+ <li>
+ The nXhtml menu does not disappear when moving
+ into a chunk where the major mode is not
+ nxhtml-mode. The changes also makes it easy to
+ access uploading functions functions etc from
+ other modes than nxhtml-mode since the
+ <em>nXhtml</em> may also be shown in them.
+ </li>
+ <li>
+ The nXhtml menu can be turned on globally by default.
+ Customize nxhtml-menu-mode for that.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.00">1.00</dt>
+ <dd>
+ <ul>
+ <li>
+ Reached version number 1.00 - which you maybe believe
+ means the bugs should be gone? Sorry, it is just that
+ I ran out of version numbers ;-) However it looks like
+ much fewer bugs at least.
+ </li>
+ <li>
+ Fixed problems mostly related to global turn on of different features in nXhtml.
+ </li>
+ <li>
+ Small fixes to indentation.
+ <ul>
+ <li>
+ nxhtml-mode could get confused by php tags.
+ </li>
+ <li>
+ nxhtml-mode did not indent &lt;!DOCTYPE in a sensible way.
+ </li>
+ <li>
+ Electric keys now works in embedded php when using mumamo-mode.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Tidy was very misbehaving since the output buffer was
+ not erased between different files. But I have got no
+ bug reports on this ;-)
+ </li>
+ <li>
+ Fixed a bug in validation that should up when using muamo-mode.
+ </li>
+ <li>
+ Fixed bug in &lt;script ...> and &lt;style ...> chunk dividing.
+ </li>
+ <li>
+ Added support for OpenLaszlo.
+ </li>
+ <li>
+ Corrections to mlinks-mode (visible mostly as links in
+ XHTML buffers):
+ <ul>
+ <li>
+ Links disappeared when a new file was
+ opened. Corrected.
+ </li>
+ <li>
+ Links were not correctly updated at changes in the
+ buffer when mumamo-mode was used. Fixed.
+ </li>
+ </ul>
+ </li>
+ <li>
+ The welcome message for nXhtml could be shown too
+ early sometimes when loading, before nXhtml actually
+ knew if it should be shown or not. Tried to fix it.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.01">1.01</dt>
+ <dd>
+ <ul>
+ <li>
+ Reported wrong version number for nXhtml in the menus. Fixed.
+ </li>
+ <li>
+ <em>If you use the zip file to install nXhtml please
+ notice that it has now a top level nxml.</em> Sorry for not
+ having zipped it like that before!
+ </li>
+ <li>
+ The url links in <em>Welcome to nXhtml</em> was a bit
+ incorrect and did not work on all OS:es. Fixed.
+ </li>
+ <li>
+ Added customization of popup completion to the 'nxhtml
+ customization group so they are easier to find.
+ </li>
+ <li>
+ MuMaMo
+ <ul>
+ <li>
+ Struggled a bit with the load sequences of the elisp
+ libraries used by nXhtml when using MuMaMo.
+ </li>
+ <li>
+ Tried to get the global turn on of mumam-mode to work
+ in all cases.
+ </li>
+ <li>
+ The screen was blinking when changing overlays after
+ changes in the buffer. Tried to fix this.
+ </li>
+ <li>
+ Minor fixes do syntax highlighting, like taking care of single ':s.
+ </li>
+ <li>
+ Fixes to the support for JSP and eRuby.
+ </li>
+ <li>
+ Made the support for perl here documents a bit better.
+ Large perl documents are however still quite slow when
+ using mumamo-mode. I do not know the reason yet.
+ </li>
+ <li>
+ Refontification could miss some parts when buffer
+ changes caused chunk division changes. Complex,
+ tried to fix it, but I am a bit unsure that it
+ always works.
+ </li>
+ <li>
+ Cleaned up mumamo.el a bit.
+ </li>
+ <li>
+ Rewrote mumamo-test.el and functions called from it in
+ mumamo.el a bit to make tracebacks from errors more
+ useful. Changed keybindings in mumamo-test.el from
+ global to a minor mode <em>mumamo-test-mode</em>.
+ Renamed mumamo-notest.el to mumamo-test.el. Added it
+ to the zipped distribution of nXhtml.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Fixed a bug related to links and buffer changes.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.02">1.02</dt>
+ <dd>
+ <ul>
+ <li>
+ Fixed a refontification bug that occured after changes.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.03">1.03</dt>
+ <dd>
+ <ul>
+ <li>
+ Added the possibility to call GIMP.
+ </li>
+ <li>
+ Reworked the messages for fontification errors to try
+ to catch an error that shows up sometimes. Tried to
+ avoid disturbing normal use in spite of that error.
+ </li>
+ <li>
+ Reverted to using a short delay before switching major
+ mode when moving between buffers.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.04">1.04</dt>
+ <dd id="v1.04-dd">
+ <ul>
+ <li>
+ Enhanced the documentation for nXhtml. Starting from
+ <i>C-h f nxhtml-mode</i> it should now be easier to
+ get an overview.
+ </li>
+ <li>
+ Bug fixes etc:
+ <ul id="v1.04-bugs">
+ <li>
+ Completion on an empty page gave a faulty frameset page. Fixed.
+ </li>
+ <li>
+ Insert end tag did not work with a fictive
+ validation header. Fixed.
+ </li>
+ <li>
+ Insert end tag when all preceding tags where
+ closed gave a strange error message. Fixed.
+ </li>
+ <li>
+ Changed some key bindings to comply with
+ <i>(info "(elisp) Key Binding Conventions")</i>
+ </li>
+ <li>
+ Completion in empty buffers with a completion
+ header did not work. Fixed.
+ </li>
+ <li id="mumamo-bugs">
+ Multiple major modes:
+ <ul>
+ <li>
+ Fixed a bug that prevented mumamo-global-mode from
+ beeing turned on in a file opened in
+ fundamental-mode.
+ </li>
+ <li>
+ Better error tracing for some functions,
+ including the call of major mode functions.
+ </li>
+ <li>
+ Position was garbled when a ;-char was inserted in php-mode chunk. Fixed.
+ </li>
+ <li>
+ A bad check for if mlinks-mode where available was fixed.
+ </li>
+ <li>
+ Some bugs concerning turning off mumamo-mode was fixed.
+ </li>
+ <li>
+ Fixed a bug in <i>perl here doc</i> chunks. Suddenly the
+ problem with slowness when using mumamo-mode in
+ perl buffers seems gone. (Note quite sure, but I
+ can't see any problems now.)
+ </li>
+ <li>
+ Fixed a bug in mumamo-mode when current buffer was
+ switched before the major mode had been set from
+ the current chunk.
+ </li>
+ <li>
+ Fixed a long standing bug in php fontification of
+ strings and comments.
+ </li>
+ <li>
+ Fixed a bug where <i>sgml-xml-mode</i> was not defined.
+ </li>
+ <li>
+ Fixed a bug related to get-text-property which
+ gives an error when buffer is narrowed.
+ </li>
+ <li>
+ Tried to refontify things outside of a narrowed part. Fixed.
+ </li>
+ <li>
+ Too little where refontified after changes. I hope I have fixed this.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Fictive XHTML Validation Header:
+ <ul id="v1.04-fic-bugs">
+ <li>
+ View File did not work correctly when a fictive
+ XHTML validation header was used. Corrected.
+ </li>
+ <li>
+ Fictive XHTML validation headers are no longer
+ turned on by default in any buffers.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Indentation:
+ <ul>
+ <li>
+ Tried to fix a problem when using
+ newline-and-indent. When this was in a mode
+ derived from C the indentation sometimes became 0.
+ </li>
+ <li>
+ Speeded up the indentation of regions a bit when
+ using <i>mumamo-mode</i>.
+ </li>
+ <li>
+ Indentation: TAB now only indents a region if it
+ is visibly marked (see transient-mark-mode and
+ cua-mode).
+ </li>
+ <li>
+ Simplified the indentation code.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Fixed a problem where string fontification got out
+ of phase so that wrong parts of buffer could be
+ fontified as a string.
+ </li>
+ <li>
+ Added a workaround for <a
+ href="#php-attribute-values">Attribute values
+ computed by PHP</a>
+ </li>
+ <li>
+ Added .nosearch to subdirectories with no elisp files.
+ </li>
+ <li>
+ Fixed incorrect checks for mlinks-mode in menu building.
+ </li>
+ <li>
+ File extensions where used in a case sensitive way
+ in some places. Fixed.
+ </li>
+ <li>
+ appmenu: Worked only in html files. Fixed.
+ </li>
+ <li>
+ html-site: Fixed the error <em>Error
+ (html-site-current): Can't find site:
+ your-site-name</em>.
+ </li>
+ <li>
+ Fixed a problem with longlines-mode in the support
+ for Firefox add-on It's All Text. (Note however
+ that there are some bugs in longlines-mode
+ itself.) Rewrote the support to be more
+ general. It is now in the file as-external.el, see
+ this file.
+ </li>
+ <li>
+ Fixed an encoding problem in
+ <i>tidy-buffer</i>. Output from tidy was not read
+ using the same coding system as tidy was using.
+ </li>
+ <li>
+ Fixed some problems with face definitions, possibly bugs (not sure).
+ </li>
+ <li>
+ Made the fontification faster when using mumamo-mode.
+ (It is still slower than single mode fontification of course.)
+ </li>
+ <li>
+ nxml-where.el: Made it aware of mumamo.el.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Menu changes:
+ <ul>
+ <li>
+ Completion menu: Renamed to <i>Completion and
+ Validation</i> menu and reorganized a little bit to
+ make it more clear.
+ </li>
+ <li>
+ Renamed <i>view</i> to <i>browse</i> since this is
+ the normal emacs name for showing files in a web
+ browser. Also made corresponding changes to
+ function names. Put back the possibility to view
+ only the region in a web browser.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Uploading:
+ <ul>
+ <li>
+ Added remote dired to the menus.
+ </li>
+ <li>
+ Fixed problems with file names starting with ~.
+ </li>
+ <li>
+ Fixed more problems with file names with spaces.
+ </li>
+ </ul>
+ </li>
+ <li>
+ nxml-where:
+ <ul>
+ <li>
+ nxml-where now uses a timeout for more smooth performance.
+ </li>
+ <li>
+ nxml-where can now recognizes both id and name attribute.
+ </li>
+ <li>
+ Hyphens are now accepted in tag names.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Ruby
+ <ul>
+ <li>
+ Multiple major mode turned on by default for .rhtml files when this mode is global.
+ </li>
+ <li>
+ Multiple major mode is no longer turned on when rub-mode is turned on.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Added support for switching major mode dependent on if
+ Emacs was called as an external editor. This makes it
+ possible for example to switch to relevant major and
+ minor modes when Firefox add-on It's All Text.
+ </li>
+ <li>
+ Added the possibility to easily view the output of scripts on the server (if they require no parameters).
+ You can now do that from the nXhtml menu.
+ Previously only html files on the server could be viewed that way.
+ Image files can also be viewed this way.
+ </li>
+ <li>
+ Filling:
+ <ul>
+ <li>
+ Added functions for unfilling.
+ </li>
+ <li>
+ Added keybindings and menu entries for longlines-mode, fill-paragraph and unfill-paragraph.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Quoting:
+ Added HTML quoting of &amp; and &lt; in text areas. Bound to C-c C-q.
+ </li>
+ <li>
+ Images:
+ <ul>
+ <li>
+ Added image-mode to those that are encompassed by
+ nxhtml-global-minor-mode so that images can be
+ uploaded more easily.
+ </li>
+ <li>
+ Added <em>edit with GIMP</em> and <em>upload</em> to the popup menu for links.
+ This avoids the need to load the linked files in Emacs first.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Added <em>nxml-untag-element</em>.
+ </li>
+ <li>
+ Added a modified version of wikipedia-mode.el. Seems likely to be useful if you are doing web editing.
+ </li>
+ <li>
+ Added html-imenu.el
+ </li>
+ <li>
+ MuMaMo:
+ <ul>
+ <li>
+ Removed the lighter <i>"MuMaMo"</i> for
+ mumamo-mode. Instead the active major mode now has
+ <b>"/m"</b> appended to mode-name (that is what you see
+ in the mode line).
+ </li>
+ <li>
+ The normal way to turn on <i>mumamo-mode</i> has
+ changed. There are now functions that you can use
+ in <i>auto-mode-alist</i> to directly set up the
+ buffer for mumamo-mode. The available functions
+ are in the
+ variable <i>mumamo-defined-turn-on-functions</i>.
+ <p>
+ You are not supposed to call mumamo-mode
+ yourself any more and mumamo-global-mode is
+ gone. So is also mumamo-chunk-family-by-mode and
+ mumamo-filenames-list. The functionality those
+ gave are all replaced by the new functions for
+ turning on mumamo mode.
+ </p>
+ </li>
+ <li>
+ Added support for buffer local values in
+ hooks. This is necessary for example to support
+ minor modes that are meant to be buffer local but
+ not major mode specific. Instructions for authors
+ of this kind of minor modes are in the file
+ mumamo.el.
+ </li>
+ <li>
+ Added support for Django.
+ </li>
+ <li>
+ Added support for Embperl.
+ </li>
+ <li>
+ Added support for PHP Smarty. The <i>{literal}
+ ... {/literal}</i> construct is not supported.
+ This mean that you can not use &lt;style ..> or &lt;script ..>.
+ </li>
+ <li>
+ Added support for imenu for the main major mode.
+ Turned on this by default in nxhtml-mode.
+ </li>
+ <li>
+ Made the temporary replacement of the
+ attr="&lt;?php ... ?&gt;" a bit better. They are
+ now more visible and also still mumamo chunks
+ during the temporary replacement.
+ </li>
+ <li>
+ Added support for <i>flymake-mode</i>.
+ Maybe add support for checking chunks?
+ </li>
+ <li>
+ Printing: Added htmlfontify.el and
+ hfyview.el. These makes if possible to print a
+ buffer fontified with <i>mumamo-mode</i> on in
+ colors (through your web browser). There is an
+ example of the capabilities of htmlfontify <a
+ href="htmlfontify-example.html">here</a> (made
+ with a little function in hfyview.el).
+ </li>
+ </ul>
+ </li>
+ <li>
+ PHP:
+ <ul>
+ <li>
+ Did a first merge with Aaron Hawleys fixes for php-mode.el.
+ </li>
+ </ul>
+ </li>
+ <li>
+ CSS: Upgraded to Stefan's latest css-mode.el.
+ </li>
+ <li>
+ Fictive XHTML Validation Headers: Changed the way they
+ are turned on. They may now be turned on when
+ mumamo-mode is turned on.
+ </li>
+ <li>
+ Some users want to use their own patched version of
+ nXml. Next version of Emacs will come with
+ nXml. Therefore, the loading routine for nXhtml now
+ checks if nXml is is already loaded. Thanks to Eric
+ Lilja for testing this. Eric also made me aware of
+ that if nXhtml was placed in the site-lisp directory
+ tree then things did not work as I expected. I think I
+ have corrected that by placing a <i>.nosearch</i> file
+ at the top of the nxml tree in nXhtml.
+ </li>
+ <li>
+ Restructured the directories. Moved some files out of
+ the <i>nxhtml</i> subdir. Some of them went into the
+ <i>util</i> subdir (those are written by me) and some
+ to the new subdir <i>related</i> (those that are
+ inherited from others, maybe changed by me - most
+ often to work with mumamo-mode).
+ </li>
+ <li>
+ Changed all licenses to be GNU GPL.
+ </li>
+ <li>
+ Additions to tidy support: It is now possible to use
+ the tidy support to tidy the XHTML part of php etc.
+ (Thanks to Hadron for this suggestion.)
+ </li>
+ <li>
+ Added <i>winsize.el</i> which allows interactive resizing of
+ windows. Also added <i>winsav.el</i> which adds the
+ capability to rotate window configurations and also to
+ save window configuration to file.
+ </li>
+ <li>
+ Made nXhtml work with CVS Emacs 23.0.50.1.
+ </li>
+ <li>
+ Added freemind.el to the parcel. After all FreeMind
+ supports web publishing too so why not have the Emacs
+ support here ...
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.10">1.10</dt>
+ <dd id="v1.10-dd">
+ Just jumped the version number for the new release of
+ nXhtml. There are really significant changes in this
+ release, not only minor bug fixes.
+ </dd>
+ <dt id="v1.11">1.11</dt>
+ <dd id="v1.11-dd">
+ Minor bug fixes to completion. Added fictive validation
+ header to completion alternatives when buffer is empty and
+ mumamo is used.
+ </dd>
+ <dt id="v1.12">1.12</dt>
+ <dd id="v1.12-dd">
+ <ul>
+ <li>
+ Fixed a bug in image link insertion in nxhtml-mode, thanks Niels Giesen!
+ </li>
+ <li>
+ Restructured, reordered and documented mumamo.el. It is now two
+ separate files, mumamo.el and mumamo-fun.el.
+ </li>
+ <li>
+ Added move by chunk to the nXhtml menu.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.13">1.13</dt>
+ <dd id="v1.13-dd">
+ <ul>
+ <li>
+ Better handling of the case when no validation header
+ is needed and the user tries to turn it on.
+ </li>
+ <li>
+ Added .phtml as php file.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.14">1.14</dt>
+ <dd id="v1.14-dd">
+ <ul>
+ <li>
+ Completion of links in XHTML was broken. Fixed, thanks
+ to Niels Giesen.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.15">1.15</dt>
+ <dd id="v1.15-dd">
+ <ul>
+ <li>
+ Added `mumamo-map' keymap.
+ </li>
+ <li>
+ Added a keymap to all multi major modes.
+ </li>
+ <li>
+ Some more refinement to fictive validation headers.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.16">1.16</dt>
+ <dd id="v1.16-dd">
+ <ul>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Changes to indentation:
+ <ul>
+ <li>
+ Removed indent-region-mode since that
+ functionality is now in indent-for-tab-command in
+ Emacs 22.
+ </li>
+ <li>
+ Removed some code that checked if indentation was 0.
+ </li>
+ <li>
+ Added indent-for-tab-command to mumamo-map.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Reordering and renaming:
+ <ul>
+ <li>
+ Reordered and move some functions in mumamo.el et al.
+ Added new file nxhtml-mumamo.el.
+ </li>
+ <li>
+ Renamed <i>define-mumamo-turn-on</i> to
+ <i>define-mumamo-multi-major-mode</i>.
+ </li>
+ <li>
+ Removed the ending <i>-turn-on</i> from the
+ functions defined by the macro above.
+ </li>
+ <li>
+ Introduced <i>multi major mode</i> as a name for
+ the functions defined by the macro above. Those
+ works in many respects like major mode functions,
+ but they support multiple major modes in a buffer.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Added support for noweb as multiple major mode.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.17">1.17</dt>
+ <dd id="v1.17-dd">
+ <ul>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Added support for flyspell.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Bug fixes to the version of find-recursive.el that
+ ships with nXhtml. Thanks to Cezar Halmagean.
+ </li>
+ <li>
+ Added tabkey2.el which tries to make it easy to use
+ the Tab key for completion. (You must load it and turn
+ on tabkey2-mode to use it.)
+ </li>
+ <li>
+ Folding:
+ <ul>
+ <li>
+ Added <i>nxhtml-heading-element-name-regexp</i> as
+ default for nxml style folding.
+ </li>
+ <li>
+ Some changes to fold-dwim.el.
+ </li>
+ </ul>
+ </li>
+ <li>
+ AppMenu:
+ <ul>
+ <li>
+ Simplified: Removed the possibility to
+ automatically show minor and major mode menus.
+ There is now only one list, <i>appmenu-alist</i>.
+ </li>
+ <li>
+ Added menu item <i>At Current Point</i> for
+ bindings found in character and overlay keymaps at
+ point. Those you always forget.
+ </li>
+ </ul>
+ </li>
+ <li>
+ Physical line:
+ <ul>
+ <li>
+ Added physical-line.el to nXhtml.
+ </li>
+ <li>
+ Added new functions to move to beginning and end
+ of line to ourcomments-util.el that supports
+ physical-line.el.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.18">1.18</dt>
+ <dd id="v1.18-dd">
+ <ul>
+ <li>
+ Better Tab completion in tabkey2.el.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.19">1.19</dt>
+ <dd id="v1.19-dd">
+ <ul>
+ <li>
+ Even better Tab completion in tabkey2.el.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.20">1.20</dt>
+ <dd id="v1.20-dd">
+ <ul>
+ <li>
+ Once again even better Tab completion in tabkey2.el.
+ </li>
+ <li>
+ Fixed bug in hiding of validation errors (they could
+ disappear totally).
+ </li>
+ <li>
+ Cleaned up menus in nXhtml.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.21">1.21</dt>
+ <dd id="v1.21-dd">
+ <ul>
+ <li>
+ Added a bit support for dired (upload, browse, browse
+ remote).
+ </li>
+ <li>
+ Fixed some strange menu problems (i hope).
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.22">1.22</dt>
+ <dd id="v1.22-dd">
+ <ul>
+ <li>
+ Bug fix.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.23">1.23</dt>
+ <dd id="v1.23-dd">
+ <ul>
+ <li>
+ Bug fix.
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.24">1.24</dt>
+ <dd id="v1.24-dd">
+ <ul>
+ <li>
+ Tried again to make hexcolor-mode more readable.
+ </li>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Added support for <i>hi-lock-mode</i>. At present
+ it might however be very puzzling. The hilight
+ added by hi-lock-mode may be hidden by the
+ overlays used by mumamo. Tip: you can always use
+ the face <span
+ style="font-size:1.5em;">hi-black-hb</span>.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.25">1.25</dt>
+ <dd id="v1.25-dd">
+ <ul>
+ <li>
+ Mumamo:
+ <ul>
+ <li>
+ Handle hi-lock-mode in a more general way
+ using <i>font-lock-mode-hook</i>.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.26">1.26</dt>
+ <dd id="v1.26-dd">
+ <ul>
+ <li>
+ nxhtml-mode:
+ <ul>
+ <li>
+ Removed the indent line patch for nxml-mode.
+ </li>
+ <li>
+ Better test for empty page during completion.
+ </li>
+ </ul>
+ </li>
+ <li>
+ tabkey2-mode:
+ <ul>
+ <li>
+ A lot of improvements.
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </dd>
+ <dt id="v1.27">1.27</dt>
+ <dd id="v1.27-dd">
+ <ul>
+ <li>
+ Fixed a bug in html-site when comparing file
+ names. File names where not made unique before
+ comparision.
+ </li>
+ <li>
+ Fixed documentation and reordered code in mumamo.el
+ and mumamo-fun.el.
+ </li>
+ <li>
+ Fixed a bug in mumamo concerning indentation. The
+ desired indentation function replacement where not
+ used.
+ </li>
+ <li>
+ Fixed tabkey2 bugs.
+ </li>
+ <li>
+ Changed javascript.el indentation to make it work with
+ mumamo.el.
+ </li>
+ <li>
+ Introduced the function
+ <i>mumamo-make-variable-buffer-permanent</i> as an aid for
+ minor mode authors.
+ </li>
+ <li>
+ Made nXhtml menu available in sub-chunks.
+ </li>
+ <li>
+ Included a slightly changed version of Steve Yegge's
+ js2.el + js2-fl-mode.el with support for
+ jit-lock-mode. This support has some flaws and maybe
+ js2 is not ready for use, I am not sure. However if you want
+ to use this instead of Karl Landströms javascript-mode
+ then please customize <i>mumamo-major-modes</i>.
+ </li>
+ </ul>
+ </dd>
+ </dl>
+ </div>
+ </div>
+
+ <hr class="footer"/>
+ <p class="footer">
+ Copyright &copy; 2008 OurComments.org
+ --
+ Latest update 2008-03-09
+ </p>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/ind-0-error.php b/emacs.d/nxhtml/tests/in/ind-0-error.php
new file mode 100644
index 0000000..6bbdb24
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/ind-0-error.php
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>Lab 2 - Layout Control - Task 2 - XHTML/CSS version</title>
+ </head>
+ <body>
+ <?php
+ // comment
+ $thepage = $_GET['page'];
+
+ if (empty($thepage)) {
+ require('main-div-a.html');
+ }
+ else {
+ if ($thepage != 'a' && $thepage != 'b') {
+ print('You hacker you!');
+ }
+ else {
+ require('main-div-'.$thepage.'.html');
+ }
+ for (;;) {
+ }
+ }
+ ?>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/indent-bug-html-mode.html b/emacs.d/nxhtml/tests/in/indent-bug-html-mode.html
new file mode 100644
index 0000000..bc77985
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/indent-bug-html-mode.html
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<title>Indentation bug at &lt;</title>
+</head>
+<body>
+Try to indent the whole file several times.
+The first time both the html and the php code is badly indented.
+<div id="main">
+<?php
+for ($i = 0; $i < 4711; ++$i) {
+}
+?>
+</div>
+</body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/java.java b/emacs.d/nxhtml/tests/in/java.java
new file mode 100644
index 0000000..8ba2940
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/java.java
@@ -0,0 +1,13 @@
+public class FirstProgram
+
+{
+
+ public static void main(String[] args)
+
+ {
+
+ System.out.println("Hey! you are going to compile and run your first Java program");
+
+ }
+
+}
diff --git a/emacs.d/nxhtml/tests/in/jcl-080802-index.html.erb b/emacs.d/nxhtml/tests/in/jcl-080802-index.html.erb
new file mode 100644
index 0000000..8478b3d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/jcl-080802-index.html.erb
@@ -0,0 +1,16 @@
+<h2>Mensajes recibidos</h2>
+<p class="small" style="color:red;margin: 10px">
+ Solo se muestran los ultimos 10 mensajes, aquí hay que añadir
+ paginación y ¿lógica?.
+</p>
+<div id="received-messages" class="message-list">
+ <% for message in @messages %>
+ <div id="received-message-<%= message.id -%>" class="received-message">
+ <span class="header"><%= message.sender.roster_name %> escribió a fecha <%= message.created_at -%></span>
+ <div class="content">
+ <%=h truncate(message.message, 100) %>
+ </div>
+ <%= link_to "Mostrar", message_path(message) %>
+</div>
+<% end %>
+</div>
diff --git a/emacs.d/nxhtml/tests/in/jcl-080802-messages_controller.rb b/emacs.d/nxhtml/tests/in/jcl-080802-messages_controller.rb
new file mode 100644
index 0000000..6fb0555
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/jcl-080802-messages_controller.rb
@@ -0,0 +1,57 @@
+class MessagesController < BaseController
+
+ before_filter :enable_chat
+ skip_before_filter :verify_authenticity_token
+
+ # GET /messages
+ # GET /messages.xml
+ def index
+ @messages = ChatMessage.to_user(current_user).last_week.all
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.xml { render :xml => @messages }
+ end
+ end
+
+ # GET /messages/1
+ # GET /messages/1.xml
+ def show
+ @message = ChatMessage.find(params[:id])
+
+ respond_to do |format|
+ format.html # show.html.erb
+ format.xml { render :xml => @message }
+ end
+ end
+
+ # POST /messages
+ # POST /messages.xml
+ def create
+ @message = ChatMessage.new(:receiver_id => params[:receiver_id],
+ :message => params[:messageText],
+ :sender => current_user)
+
+ if @message.save
+ send_message
+ end
+
+ render :nothing => true
+
+ end
+
+ protected
+
+ def send_message
+ formatted_message = render_to_string(:partial => "message_for_chat", :object => @message)
+ shooter_action_for_receiver = render_to_string :update do |page|
+ page.call "showMessage", @message.sender.to_param, formatted_message
+ end
+ shooter_action_for_sender = render_to_string :update do |page|
+ page.call "showMessage", @message.receiver.to_param, formatted_message
+ page.call "messageTextBox.reset"
+ end
+ Meteor.shoot 'futura-chat', shooter_action_for_sender, [@message.sender.login]
+ Meteor.shoot 'futura-chat', shooter_action_for_receiver, [@message.receiver.login]
+ end
+end
diff --git a/emacs.d/nxhtml/tests/in/jj-081226.html b/emacs.d/nxhtml/tests/in/jj-081226.html
new file mode 100644
index 0000000..9599014
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/jj-081226.html
@@ -0,0 +1,26 @@
+<script type="text/javascript">
+ // <![CDATA[
+ // Set this to the URL you used to fetch recommendations, whether you
+ // fetched them on the client or the server.
+ var request_url="%(json_url)s";
+
+ // This function is used track click-throughs by fetching a web
+ // beacon
+ function trackClickThrough(elem) {
+ var img = new Image();
+ img.src = '%(beacon_url)s' +
+ '?request_url=' + escape(request_url) +
+ '&click_through_url=' + escape(elem.href);
+ return true;
+ }
+ // ]]>
+</script>
+<p>
+ <!--
+ Imagine this is one of the recommendations that was returned.
+ Just add an onclick handler that calls trackClickThrough.
+ -->
+ <a href="http://www.google.com"
+ onclick="return trackClickThrough(this);">Click me!</a>
+</p>
+
diff --git a/emacs.d/nxhtml/tests/in/josh-091115-cancer_summary.xsl b/emacs.d/nxhtml/tests/in/josh-091115-cancer_summary.xsl
new file mode 100644
index 0000000..043e9d2
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/josh-091115-cancer_summary.xsl
@@ -0,0 +1,490 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+ xmlns:set="http://exslt.org/sets">
+
+ <xsl:output method="html"/>
+ <xsl:output encoding="utf-8"/>
+ <xsl:output doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
+ <xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/>
+
+ <xsl:template match="/">
+
+ <html>
+ <head>
+ <title>Cancer Summary: <xsl:value-of select="//individual/@name"/>&#160;<xsl:value-of select="//individual/@gender"/>&#160;<xsl:value-of select="//individual/@id"/></title>
+
+ <link rel="shortcut icon" href="/resources/report_resources/apipe_dashboard/images/gc_favicon.png" type="image/png" />
+
+ <link rel="stylesheet" href="/resources/report_resources/apipe_dashboard/css/master.css" type="text/css" media="screen" />
+ <link rel="stylesheet" href="/resources/report_resources/apipe_dashboard/css/tablesorter.css" type="text/css" media="screen" />
+ <script type="text/javascript" src="/resources/report_resources/jquery/jquery.js"></script>
+ <script type="text/javascript" src="/resources/report_resources/jquery/jquery.tablesorter.min.js"></script>
+ <script type="text/javascript">
+ $(document).ready(function() {
+ $("#tier_1_snps").tablesorter({
+ // sort on first column, ascending
+ // sortList: [[0,0]]
+ });
+
+ $("#tier_1_insertions").tablesorter({
+ // sort on first column, ascending
+ //sortList: [[0,0]]
+ });
+
+ $("#tier_1_deletions").tablesorter({
+ // sort on first column, ascending
+ //sortList: [[0,0]]
+ });
+ });
+ </script>
+ <link rel="stylesheet" href="/resources/report_resources/cancer_card/css/zoom2.css" type="text/css" media="screen"></link>
+ <script type="text/javascript" src="/resources/report_resources/cancer_card/js/dom-drag.js"></script>
+
+ <script type="text/javascript" src="/resources/report_resources/cancer_card/js/HotSpot2.js"></script>
+ <script type="text/javascript">
+ addEvent(window, 'load', function() {
+ HotSpotController.init("zoomImage",300, '<xsl:value-of select="//individual/circos-images/@large"/>','ZTbutton'); });
+
+ function addEvent(obj, evType, fn) {
+ if (obj.addEventListener) {
+ obj.addEventListener(evType, fn, false);
+ return true;
+ } else if (obj.attachEvent) {
+ var r = obj.attachEvent("on" + evType, fn);
+ return r;
+ } else {
+ return false;
+ }
+ }
+ </script>
+
+ <script type="text/javascript">
+ $(document).ready(function() {
+ $("input[type=checkbox]").click(function() {
+ alert("Clicked: " + this.value);
+ });
+ });
+ </script>
+
+ <style type="text/css" media="screen">
+ table.info_table_group td {
+ padding-right: 10px;
+ }
+
+ div.content_padding {
+ padding: 0 10px 20px 10px;
+ }
+
+ h3.group_header {
+ border-bottom: 2px solid #CCC;
+ }
+ div.circos_graph {
+ float: left;
+ width: 920px;
+ }
+
+ form.status_selector {
+ margin: 0;
+ padding: 0;
+ float: right;
+ font-size: 85%;
+ font-weight: normal;
+ }
+
+ form.status_selector table {
+ margin: 0;
+ padding: 0;
+ }
+
+ form.status_selector table td.lbl {
+ padding-right: 10px;
+ padding-left: 5px;
+ }
+
+
+ form.status_selector table td.table_lbl {
+ font-weight: bold;
+ padding-right: 8px;
+ padding-left: 3px;
+ }
+ </style>
+ </head>
+
+ <body>
+ <div class="container">
+ <div class="background">
+ <div class="page_header">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td>
+ <img src="/resources/report_resources/apipe_dashboard/images/gc_header_logo2.png" width="44" height="45" align="absmiddle" />
+ </td>
+ <td>
+ <h1><xsl:value-of select="//individual/@name"/>&#160;<xsl:value-of select="//individual/@gender"/>&#160;<xsl:value-of select="//individual/@id"/>&#160;Cancer Summary</h1>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div class="page_padding">
+ <!-- <h2 class="page_title icon_instrument_data">Flow Cell <xsl:value-of select="//flow-cell/@id"/> Status</h2> -->
+ <table cellpadding="0" cellspacing="0" border="0" class="info_table_group">
+ <tr>
+ <td>
+ <h3 class="group_header">Clinical Data</h3>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0" class="info_table" width="100%">
+ <colgroup>
+ <col/>
+ <col width="100%"/>
+ </colgroup>
+ <tr><td class="label">Name:</td><td class="value"><xsl:value-of select="//individual/@name"/></td></tr>
+ <tr>
+ <td class="label">Gender:</td>
+ <td class="value">
+ <xsl:choose>
+ <xsl:when test="string(//individual/@gender)">
+ <xsl:value-of select="//individual/@gender"/>
+ </xsl:when>
+ <xsl:otherwise>
+ Not Provided
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr><td class="label">ID:</td><td class="value"><xsl:value-of select="//individual/@id"/></td></tr>
+
+ </table>
+ </td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0" class="info_table" width="100%" style="float: left;">
+ <colgroup>
+ <col/>
+ <col width="100%"/>
+ </colgroup>
+
+ <tr><td class="label">Year Diagnosed:</td><td class="value"><xsl:value-of select="//clinical-data/@diagnosis-year"/></td></tr>
+ <tr><td class="label">Diagnosed at Age:</td><td class="value"><xsl:value-of select="//clinical-data/@diagnosis-age"/></td></tr>
+ <xsl:choose>
+ <xsl:when test="//clinical-data/@alive = '1'">
+ <tr><td class="label">Survived:</td><td class="value">Yes</td></tr>
+ </xsl:when>
+ <xsl:otherwise>
+ <tr><td class="label">Survived:</td><td class="value">No</td></tr>
+ <tr><td class="label">Days Survived:</td><td class="value"><xsl:value-of select="//clinical-data/@days-survived"/></td></tr>
+ </xsl:otherwise>
+ </xsl:choose>
+ </table>
+ </td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0" class="info_table" width="100%" style="float: left;">
+ <colgroup>
+ <col/>
+ <col width="100%"/>
+ </colgroup>
+
+ <tr><td class="label">Treatment:</td><td class="value"><xsl:value-of select="//clinical-data/@treatment"/></td></tr>
+ <tr><td class="label">Outcome:</td><td class="value"><xsl:value-of select="//clinical-data/@outcome"/></td></tr>
+ <tr><td class="label">AMP:</td><td class="value"><xsl:value-of select="//clinical-data/@amp"/></td></tr>
+
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td>
+ <h3 class="group_header">Sequencing Stats</h3>
+ <table border="0" cellpadding="0" cellspacing="0" class="info_table" width="100%">
+ <colgroup>
+ <col/>
+ <col width="100%"/>
+ </colgroup>
+ <tr><td class="label">Normal Coverage:</td><td class="value"><xsl:value-of select="//samples/sample/models/model/@normal-haploid-coverage"/>X</td></tr>
+ <tr><td class="label">Tumor Coverage:</td><td class="value"><xsl:value-of select="//samples/sample/models/model/@tumor-haploid-coverage"/>X</td></tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ <hr style="margin-bottom: 0;"/>
+ <h2 class="report_section" style="margin-bottom: 0; margin-top: 0">Circos Graph&#160;&#160;&#160;<a id="ZTbutton" href="javascript: void(0);" style="font-size: 85%; font-weight: normal;">[toggle zoom]</a></h2>
+ <p id="ZTthumbnail">
+ <img>
+ <xsl:attribute name="id">zoomImage</xsl:attribute>
+ <xsl:attribute name="src"><xsl:value-of select="//individual/circos-images/@small"/></xsl:attribute>
+ <xsl:attribute name="width">920</xsl:attribute>
+ <xsl:attribute name="height">920</xsl:attribute>
+ </img>
+ </p>
+ <h2 class="report_section" style="margin-bottom: 0">Tier 1 SNPs
+<!-- <form class="status_selector">
+ <input type="hidden" name="table" value="tier_1_snps"/>
+ <table cellpadding="0" cellspacing="0">
+ <tr>
+ <td class="table_lbl">Show:</td>
+ <xsl:for-each select="set:distinct(//variants/snps/snp/@validation-status)">
+ <td class="cb">
+ <input type="checkbox"><xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute></input>
+ </td>
+ <td class="lbl">
+ <xsl:value-of select="."/>
+ </td>
+ </xsl:for-each>
+ </tr>
+ </table>
+ </form>
+-->
+
+ </h2>
+ <table id="tier_1_snps" class="list tablesorter" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-top: 0;">
+ <xsl:choose>
+ <xsl:when test="count(//variants/snps/snp) > 0">
+
+ <thead>
+ <tr>
+ <th>validation status</th>
+ <th>chromosome</th>
+ <th class="last">start</th>
+ <th class="last">reference</th>
+ <th class="last">variant</th>
+ <th class="last">gene</th>
+ <th class="last">amino acid change</th>
+ <th class="last">trv type</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="//variants/snps/snp">
+ <xsl:sort select="@validation-status" data-type="text" order="ascending"/>
+ <xsl:sort select="@chromosome" data-type="number" order="ascending"/>
+ <tr>
+ <td class="validation_status"><xsl:value-of select="@validation-status"/></td>
+ <td><xsl:value-of select="@chromosome"/></td>
+ <td class="last">
+ <xsl:variable name="start" select="@start"/><xsl:value-of select="format-number($start, '#,##0')"/>
+ </td>
+ <td class="last"><xsl:value-of select="@reference-allele"/></td>
+ <td class="last"><xsl:value-of select="@variant-allele"/></td>
+ <td class="last"><xsl:value-of select="@gene"/></td>
+ <td class="last"><xsl:value-of select="@amino-acid-change"/></td>
+ <td class="last"><xsl:value-of select="@trv-type"/></td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </xsl:when>
+ <xsl:otherwise>
+ <tr><td><span class="note">None found.</span></td></tr>
+ </xsl:otherwise>
+ </xsl:choose>
+ </table>
+
+ <h2 class="report_section" style="margin-bottom: 0">Tier 1 Insertions</h2>
+ <table id="tier_1_insertions" class="list tablesorter" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-top: 0;">
+ <xsl:choose>
+ <xsl:when test="count(//variants/insertions/insertion) > 0">
+ <thead>
+ <tr>
+ <th>validation status</th>
+ <th>chromosome</th>
+ <th class="last">start</th>
+ <th class="last">stop</th>
+ <th class="last">variant</th>
+ <th class="last">gene</th>
+ <th class="last">amino acid change</th>
+ <th class="last">trv type</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="//variants/insertions/insertion">
+ <xsl:sort select="@validation-status" data-type="text" order="ascending"/>
+ <xsl:sort select="@chromosome" data-type="number" order="ascending"/>
+ <tr>
+ <td class="validation_status"><xsl:value-of select="@validation-status"/></td>
+ <td><xsl:value-of select="@chromosome"/></td>
+ <td class="last">
+ <xsl:variable name="start" select="@start"/><xsl:value-of select="format-number($start, '#,##0')"/>
+ </td>
+ <td class="last">
+ <xsl:variable name="stop" select="@stop"/><xsl:value-of select="format-number($stop, '#,##0')"/>
+ </td>
+ <td class="last"><xsl:value-of select="@variant-allele"/></td>
+ <td class="last"><xsl:value-of select="@gene"/></td>
+ <td class="last"><xsl:value-of select="@amino-acid-change"/></td>
+ <td class="last"><xsl:value-of select="@trv-type"/></td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </xsl:when>
+ <xsl:otherwise>
+ <tr><td><span class="note">None found.</span></td></tr>
+ </xsl:otherwise>
+ </xsl:choose>
+ </table>
+
+ <h2 class="report_section" style="margin-bottom: 0">Tier 1 Deletions</h2>
+ <table id="tier_1_deletions" class="list tablesorter" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-top: 0;">
+ <xsl:choose>
+ <xsl:when test="count(//variants/deletions/deletion) > 0">
+ <thead>
+ <tr>
+ <th>validation status</th>
+ <th>chromosome</th>
+ <th class="last">start</th>
+ <th class="last">stop</th>
+ <th class="last">reference</th>
+ <th class="last">gene</th>
+ <th class="last">amino acid change</th>
+ <th class="last">trv type</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="//variants/deletions/deletion">
+ <xsl:sort select="@validation-status" data-type="text" order="ascending"/>
+ <xsl:sort select="@chromosome" data-type="number" order="ascending"/>
+ <tr>
+ <td class="validation_status"><xsl:value-of select="@validation-status"/></td>
+ <td><xsl:value-of select="@chromosome"/></td>
+ <td class="last">
+ <xsl:variable name="start" select="@start"/><xsl:value-of select="format-number($start, '#,##0')"/>
+ </td>
+ <td class="last">
+ <xsl:variable name="stop" select="@stop"/><xsl:value-of select="format-number($stop, '#,##0')"/>
+ </td>
+ <td class="last"><xsl:value-of select="@reference-allele"/></td>
+ <td class="last"><xsl:value-of select="@gene"/></td>
+ <td class="last"><xsl:value-of select="@amino-acid-change"/></td>
+ <td class="last"><xsl:value-of select="@trv-type"/></td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </xsl:when>
+ <xsl:otherwise>
+ <tr><td><span class="note">None found.</span></td></tr>
+ </xsl:otherwise>
+ </xsl:choose>
+ </table>
+
+ <h2 class="report_section" style="margin-bottom: 0;">Structural Variations (translocations)</h2>
+ <table id="sv_translocations" class="list" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-top: 0;">
+ <xsl:choose>
+ <xsl:when test="count(//structural-variants/translocations/translocation) > 0">
+ <thead>
+ <tr>
+ <th>validation status</th>
+ <th class="last">chromosome</th>
+ <th class="last">position</th>
+ <th>&#160;</th>
+ <th class="last">chromosome</th>
+ <th class="last">position</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="//structural-variants/translocations/translocation">
+ <xsl:sort select="@validation-status" data-type="text" order="ascending"/>
+ <xsl:sort select="start/@chromosome" data-type="number" order="ascending"/>
+ <tr>
+ <td class="validation_status"><xsl:value-of select="@validation-status"/></td>
+ <td class="last"><xsl:value-of select="start/@chromosome"/></td>
+ <td class="last">
+ <xsl:variable name="start_position" select="start/@position"/><xsl:value-of select="format-number($start_position, '#,##0')"/>
+ </td>
+
+ <td class="last"><span style="font-size: 100%; font-weight: bold;">&#8594;</span></td>
+
+ <td class="last"><xsl:value-of select="stop/@chromosome"/></td>
+ <td class="last">
+ <xsl:variable name="stop_position" select="stop/@position"/><xsl:value-of select="format-number($stop_position, '#,##0')"/>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </xsl:when>
+ <xsl:otherwise>
+ <tr><td><span class="note">None found.</span></td></tr>
+ </xsl:otherwise>
+ </xsl:choose>
+ </table>
+
+ <h2 class="report_section" style="margin-bottom: 0;">Structural Variations (insertions)</h2>
+ <table id="sv_insertions" class="list" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-top: 0;">
+ <tbody>
+ <xsl:choose>
+ <xsl:when test="count(//structural-variants/insertions/insertion) > 0">
+ <thead>
+ <tr>
+ <th>validation status</th>
+ <th class="last">chromosome</th>
+ <th class="last">start</th>
+ <th class="last">stop</th>
+ <th class="last">size</th>
+ </tr>
+ </thead>
+ <xsl:for-each select="//structural-variants/insertions/insertion">
+ <xsl:sort select="@validation-status" data-type="number" order="ascending"/>
+ <xsl:sort select="start/@chromosome" data-type="number" order="ascending"/>
+ <tr>
+ <td class="validation_status"><xsl:value-of select="@validation-status"/></td>
+ <td class="last"><xsl:value-of select="start/@chromosome"/></td>
+ <td class="last">
+ <xsl:variable name="start_position" select="start/@position"/><xsl:value-of select="format-number($start_position, '#,##0')"/>
+ </td>
+ <td class="last">
+ <xsl:variable name="stop_position" select="stop/@position"/><xsl:value-of select="format-number($stop_position, '#,##0')"/>
+ </td>
+ <xsl:variable name="size" select="@size"/><xsl:value-of select="format-number($size, '#,##0')"/>
+
+ </tr>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <tr><td><span class="note">None found.</span></td></tr>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tbody>
+ </table>
+
+ <h2 class="report_section" style="margin-bottom: 0;">Structural Variations (deletions)</h2>
+ <table id="sv_deletions" class="list" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-top: 0;">
+ <xsl:choose>
+ <xsl:when test="count(//structural-variants/deletions/deletion) > 0">
+ <thead>
+ <tr>
+ <th>validation status</th>
+ <th class="last">chromosome</th>
+ <th class="last">start</th>
+ <th class="last">stop</th>
+ <th class="last">size</th>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="//structural-variants/deletions/deletion">
+ <xsl:sort select="@validation-status" data-type="number" order="ascending"/>
+ <xsl:sort select="start/@chromosome" data-type="number" order="ascending"/>
+ <tr>
+ <td class="validation_status"><xsl:value-of select="@validation-status"/></td>
+ <td class="last"><xsl:value-of select="start/@chromosome"/></td>
+ <td class="last">
+ <xsl:variable name="start_position" select="start/@position"/><xsl:value-of select="format-number($start_position, '#,##0')"/>
+ </td>
+ <td class="last">
+ <xsl:variable name="stop_position" select="stop/@position"/><xsl:value-of select="format-number($stop_position, '#,##0')"/>
+ </td>
+ <td class="last">
+ <xsl:variable name="size" select="@size"/><xsl:value-of select="format-number($size, '#,##0')"/>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </xsl:when>
+ <xsl:otherwise>
+ <tr><td><span class="note">None found.</span></td></tr>
+ </xsl:otherwise>
+ </xsl:choose>
+ </table>
+ </div>
+ </div>
+ </div>
+ </body>
+ </html>
+
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/emacs.d/nxhtml/tests/in/jump-parse.html b/emacs.d/nxhtml/tests/in/jump-parse.html
new file mode 100644
index 0000000..68b0cf4
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/jump-parse.html
@@ -0,0 +1,7 @@
+<h1>Listing People</h1>
+
+<table>
+<% for person in @people %>
+<tr>
+</tr>
+</table>
diff --git a/emacs.d/nxhtml/tests/in/jump-parse.rhtml b/emacs.d/nxhtml/tests/in/jump-parse.rhtml
new file mode 100644
index 0000000..1848b6c
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/jump-parse.rhtml
@@ -0,0 +1,9 @@
+<h1>Listing People</h1>
+
+<table>
+
+<% <testnxmlparsed> for person in @people %>
+
+<tr>
+</tr>
+</table>
diff --git a/emacs.d/nxhtml/tests/in/kp-080604.php b/emacs.d/nxhtml/tests/in/kp-080604.php
new file mode 100644
index 0000000..a8b40c3
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kp-080604.php
@@ -0,0 +1,4 @@
+<?php
+require_once dirname(__FILE__) . '/foo.php';
+require_once dirname(__FILE__) . '/bar.php';
+
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-1.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-1.html
new file mode 100644
index 0000000..8d2a355
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-1.html
@@ -0,0 +1,13 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-2.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-2.html
new file mode 100644
index 0000000..8203f63
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-2.html
@@ -0,0 +1,174 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ { % block pagestyle % }
+ * {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ { % endblock % }
+ </style>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/jquery.js"></script>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/jquery.preload.js"></script>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/swfobject.js"></script>
+ <script type="text/javascript">
+ function image_loaded(info) {
+ /* now we know that the image is loaded, we can add in to the
+ * document and position it as we want */
+ // create the element, set the ID and add in to the DOM,
+ // otherwise it won't have dimensions
+ var pointer = $('<img src="' + info.image + '" />');
+ pointer.attr('id', 'pointer');
+ var frame = $('#container');
+ pointer.appendTo(frame);
+
+ // put it into the center and make top & left be in the center
+ // of the image (cool hack)
+ pointer.css({
+ position: 'absolute',
+ top: '50%',
+ left: '50%',
+ margin: (-pointer.height() / 2) + 'px 0 0 ' +
+ (-pointer.width() / 2) + 'px'
+ });
+
+ // continue with the animation now
+ play_animation();
+ }
+
+ function prepare_animation() {
+ /* prepares animation by preloading stuff */
+ // hide all panels
+ $('a > img').css('visibility', 'hidden');
+ // create the logo - 'pointer': preload and center it
+ $.preload(['logo'], {
+ base: '{ % media_url % }/homepage/img/intro/',
+ ext: '.png',
+ onFinish: image_loaded
+ });
+ }
+
+ function play_animation() {
+ /* plays the animations, adds callbacks */
+ var frame = $('#container');
+ var pointer = $('#pointer');
+
+ /* run the effects now: first fade in the pointer, then move it
+ * to the edge of the frame, then fade in the panels
+ */
+ pointer.hide().fadeIn(2000)
+ .animate({
+ top: pointer.height() / 2 + 10,
+ left: frame.width() - pointer.width() / 2
+ }, 3000, undefined, function() {
+ var panels = $('a > img');
+ // show panels, fade them in and add callbacks
+ panels.css({ visibility: 'visible',
+ opacity: '0'})
+ .fadeTo(1000, 0.5)
+ .mouseover(fade_in)
+ .mouseout(fade_out);
+ });
+ }
+
+ function fade_in() {
+ /* fade in the panel */
+ $(this).fadeTo(300, 1);
+ }
+
+ function fade_out() {
+ /* fade out the panel */
+ $(this).fadeTo(300, 0.5);
+ }
+
+ // start JS magic when the page has loaded
+ $(document).ready(prepare_animation);
+ </script>
+
+ </head>
+
+{% block body %}
+<body>
+
+<div id="distance"></div>
+<div id="container">
+ <div id="flashcontent">
+
+ <table border="0">
+ <tr>
+ <td colspan="3"><div style="height: 63px;" /></td>
+ </tr>
+ <tr>
+ <td><a href="/junkers/"><img src="{% media_url %}/homepage/img/intro/panel_junkers.jpg" alt="junkers" width="166" height="221" /></a></td>
+ <td><a href="/zeppelin/"><img src="{% media_url %}/homepage/img/intro/panel_zeppelin.jpg" alt="zeppelin" width="168" height="221" /></a></td>
+ <td><a href="/maximilian/"><img src="{% media_url %}/homepage/img/intro/panel_maximilian.jpg" alt="maximilian" width="162" height="221" /></a></td>
+ </tr>
+ <tr>
+ <td colspan="3"><div style="height: 66px;" /></td>
+ </tr>
+ </table>
+ </div>
+
+ <script type="text/javascript">
+ // <![CDATA[
+ var so = new SWFObject("{% media_url % }/homepage/swf/intro_{ % translate "LANGUAGE_NAME" % }.swf", "intro", "500", "370", "9", "#FFF");
+ so.addParam("allowScriptAccess", "always");
+ so.write("flashcontent");
+ // ]]>
+ </script>
+
+</div>
+</div>
+
+</body>
+{% endblock %}
+
+</html>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-2j.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-2j.html
new file mode 100644
index 0000000..6017ba3
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-2j.html
@@ -0,0 +1,174 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+
+ * {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ { % endblock % }
+ </style>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/jquery.js"></script>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/jquery.preload.js"></script>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/swfobject.js"></script>
+ <script type="text/javascript">
+ function image_loaded(info) {
+ /* now we know that the image is loaded, we can add in to the
+ * document and position it as we want */
+ // create the element, set the ID and add in to the DOM,
+ // otherwise it won't have dimensions
+ var pointer = $('<img src="' + info.image + '" />');
+ pointer.attr('id', 'pointer');
+ var frame = $('#container');
+ pointer.appendTo(frame);
+
+ // put it into the center and make top & left be in the center
+ // of the image (cool hack)
+ pointer.css({
+ position: 'absolute',
+ top: '50%',
+ left: '50%',
+ margin: (-pointer.height() / 2) + 'px 0 0 ' +
+ (-pointer.width() / 2) + 'px'
+ });
+
+ // continue with the animation now
+ play_animation();
+ }
+
+ function prepare_animation() {
+ /* prepares animation by preloading stuff */
+ // hide all panels
+ $('a > img').css('visibility', 'hidden');
+ // create the logo - 'pointer': preload and center it
+ $.preload(['logo'], {
+ base: '{ % media_url % }/homepage/img/intro/',
+ ext: '.png',
+ onFinish: image_loaded
+ });
+ }
+
+ function play_animation() {
+ /* plays the animations, adds callbacks */
+ var frame = $('#container');
+ var pointer = $('#pointer');
+
+ /* run the effects now: first fade in the pointer, then move it
+ * to the edge of the frame, then fade in the panels
+ */
+ pointer.hide().fadeIn(2000)
+ .animate({
+ top: pointer.height() / 2 + 10,
+ left: frame.width() - pointer.width() / 2
+ }, 3000, undefined, function() {
+ var panels = $('a > img');
+ // show panels, fade them in and add callbacks
+ panels.css({ visibility: 'visible',
+ opacity: '0'})
+ .fadeTo(1000, 0.5)
+ .mouseover(fade_in)
+ .mouseout(fade_out);
+ });
+ }
+
+ function fade_in() {
+ /* fade in the panel */
+ $(this).fadeTo(300, 1);
+ }
+
+ function fade_out() {
+ /* fade out the panel */
+ $(this).fadeTo(300, 0.5);
+ }
+
+ // start JS magic when the page has loaded
+ $(document).ready(prepare_animation);
+ </script>
+
+ </head>
+
+{% block body %}
+<body>
+
+<div id="distance"></div>
+<div id="container">
+ <div id="flashcontent">
+
+ <table border="0">
+ <tr>
+ <td colspan="3"><div style="height: 63px;" /></td>
+ </tr>
+ <tr>
+ <td><a href="/junkers/"><img src="{% media_url %}/homepage/img/intro/panel_junkers.jpg" alt="junkers" width="166" height="221" /></a></td>
+ <td><a href="/zeppelin/"><img src="{% media_url %}/homepage/img/intro/panel_zeppelin.jpg" alt="zeppelin" width="168" height="221" /></a></td>
+ <td><a href="/maximilian/"><img src="{% media_url %}/homepage/img/intro/panel_maximilian.jpg" alt="maximilian" width="162" height="221" /></a></td>
+ </tr>
+ <tr>
+ <td colspan="3"><div style="height: 66px;" /></td>
+ </tr>
+ </table>
+ </div>
+
+ <script type="text/javascript">
+ // <![CDATA[
+ var so = new SWFObject("{% media_url % }/homepage/swf/intro_{ % translate "LANGUAGE_NAME" % }.swf", "intro", "500", "370", "9", "#FFF");
+ so.addParam("allowScriptAccess", "always");
+ so.write("flashcontent");
+ // ]]>
+ </script>
+
+</div>
+</div>
+
+</body>
+{% endblock %}
+
+</html>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-3.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-3.html
new file mode 100644
index 0000000..2026eb5
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-3.html
@@ -0,0 +1,61 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ {% block pagestyle %}
+ * {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ {% endblock %}
+ </style>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/jquery.js"></script>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/jquery.preload.js"></script>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/swfobject.js"></script>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-4.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-4.html
new file mode 100644
index 0000000..a350fc4
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-4.html
@@ -0,0 +1,58 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ {% block pagestyle %}
+ * {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ {% endblock %}
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-5.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-5.html
new file mode 100644
index 0000000..46fbf29
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-5.html
@@ -0,0 +1,20 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-6.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-6.html
new file mode 100644
index 0000000..9fc7fae
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-6.html
@@ -0,0 +1,58 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ { % block pagestyle % }
+ * {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ { % endblock % }
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-7.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-7.html
new file mode 100644
index 0000000..4cd4359
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-7.html
@@ -0,0 +1,56 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ * {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-8.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-8.html
new file mode 100644
index 0000000..4b91efa
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-8.html
@@ -0,0 +1,57 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ { block pagestyle }
+ * {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-9.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-9.html
new file mode 100644
index 0000000..03571e6
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-9.html
@@ -0,0 +1,57 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ * {
+ margin: 0;
+ padding: 0;
+ }
+ { block pagestyle }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-a-notabs.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-a-notabs.html
new file mode 100644
index 0000000..61b64e3
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-a-notabs.html
@@ -0,0 +1,57 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ { block pagestyle }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-a.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-a.html
new file mode 100644
index 0000000..b1c5245
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-a.html
@@ -0,0 +1,57 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ { block pagestyle }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-b.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-b.html
new file mode 100644
index 0000000..89ac466
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-b.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ { block pagestyle }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-c.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-c.html
new file mode 100644
index 0000000..f797466
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-c.html
@@ -0,0 +1,52 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ { block pagestyle }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-d.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-d.html
new file mode 100644
index 0000000..f40fdf6
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-d.html
@@ -0,0 +1,51 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ { block pagestyle }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-e.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-e.html
new file mode 100644
index 0000000..62aafe7
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-e.html
@@ -0,0 +1,50 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ <style type="text/css">
+ { block pagestyle }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-f.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-f.html
new file mode 100644
index 0000000..ac73f84
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-f.html
@@ -0,0 +1,49 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+
+ <style type="text/css">
+ { block pagestyle }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-g.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-g.html
new file mode 100644
index 0000000..9d302ce
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-g.html
@@ -0,0 +1,39 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+
+ <style type="text/css">
+ { block pagestyle }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-h.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-h.html
new file mode 100644
index 0000000..5a0a166
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-h.html
@@ -0,0 +1,27 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+
+ <style type="text/css">
+ { block pagestyle }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-i.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-i.html
new file mode 100644
index 0000000..66ed32f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-i.html
@@ -0,0 +1,19 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+
+ <style type="text/css">
+ { block pagestyle }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-j.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-j.html
new file mode 100644
index 0000000..e1beacd
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-j.html
@@ -0,0 +1,19 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+
+ <style type="text/css">
+
+ p {
+ margin: 0;
+ padding: 0;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing-k.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-k.html
new file mode 100644
index 0000000..9dc91e1
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing-k.html
@@ -0,0 +1,19 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+
+ <style type="text/css">
+ { xlock }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+
+ </style>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing.css b/emacs.d/nxhtml/tests/in/kubica-080516-freezing.css
new file mode 100644
index 0000000..fdd782d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing.css
@@ -0,0 +1,36 @@
+ {% block pagestyle %}
+ * {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ {% endblock %}
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing.html b/emacs.d/nxhtml/tests/in/kubica-080516-freezing.html
new file mode 100644
index 0000000..15caa88
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing.html
@@ -0,0 +1,174 @@
+{% load transdigest helpers %}
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC
+ "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head profile="http://dublincore.org/documents/dcq-html/">
+ <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
+ <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" />
+ <link rel="stylesheet" type="text/css" href="{% media_url %}/homepage/css/web0.5.css" media="screen" />
+
+ <title>{% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %}</title>
+ <meta name="DC.title" content="Homepage of point TEC" />
+ <meta name="DC.creator" content="Marek Kubica" />
+ <meta name="DC.subject" content="Presentation of products" />
+ <meta name="DC.publisher" content="point TEC" />
+ <meta name="DC.rights" content="copyright by point TEC" />
+ {% block htmlhead %}
+
+ {% endblock %}
+ <style type="text/css">
+ {% block pagestyle %}
+ * {
+ margin: 0;
+ padding: 0;
+ }
+ img {
+ border: 0
+ }
+
+ html, body {
+ height: 100%;
+ }
+
+ #distance {
+ width: 1px;
+ height: 50%;
+ margin-bottom: -175px;
+ }
+ #container {
+ position: relative;
+ margin: 0 auto;
+ height: 370px;
+ width: 500px;
+ background-color: #ffffff;
+ }
+ /* the horizontal bars */
+ #flashcontent * div {
+ background-color: #292926;
+ }
+
+ #pointer {
+ display: block;
+ margin: 0 auto;
+ }
+
+ {% endblock %}
+ </style>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/jquery.js"></script>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/jquery.preload.js"></script>
+ <script type="text/javascript" src="{% media_url %}/homepage/js/swfobject.js"></script>
+ <script type="text/javascript">
+ function image_loaded(info) {
+ /* now we know that the image is loaded, we can add in to the
+ * document and position it as we want */
+ // create the element, set the ID and add in to the DOM,
+ // otherwise it won't have dimensions
+ var pointer = $('<img src="' + info.image + '" />');
+ pointer.attr('id', 'pointer');
+ var frame = $('#container');
+ pointer.appendTo(frame);
+
+ // put it into the center and make top & left be in the center
+ // of the image (cool hack)
+ pointer.css({
+ position: 'absolute',
+ top: '50%',
+ left: '50%',
+ margin: (-pointer.height() / 2) + 'px 0 0 ' +
+ (-pointer.width() / 2) + 'px'
+ });
+
+ // continue with the animation now
+ play_animation();
+ }
+
+ function prepare_animation() {
+ /* prepares animation by preloading stuff */
+ // hide all panels
+ $('a > img').css('visibility', 'hidden');
+ // create the logo - 'pointer': preload and center it
+ $.preload(['logo'], {
+ base: '{% media_url %}/homepage/img/intro/',
+ ext: '.png',
+ onFinish: image_loaded
+ });
+ }
+
+ function play_animation() {
+ /* plays the animations, adds callbacks */
+ var frame = $('#container');
+ var pointer = $('#pointer');
+
+ /* run the effects now: first fade in the pointer, then move it
+ * to the edge of the frame, then fade in the panels
+ */
+ pointer.hide().fadeIn(2000)
+ .animate({
+ top: pointer.height() / 2 + 10,
+ left: frame.width() - pointer.width() / 2
+ }, 3000, undefined, function() {
+ var panels = $('a > img');
+ // show panels, fade them in and add callbacks
+ panels.css({ visibility: 'visible',
+ opacity: '0'})
+ .fadeTo(1000, 0.5)
+ .mouseover(fade_in)
+ .mouseout(fade_out);
+ });
+ }
+
+ function fade_in() {
+ /* fade in the panel */
+ $(this).fadeTo(300, 1);
+ }
+
+ function fade_out() {
+ /* fade out the panel */
+ $(this).fadeTo(300, 0.5);
+ }
+
+ // start JS magic when the page has loaded
+ $(document).ready(prepare_animation);
+ </script>
+
+ </head>
+
+{% block body %}
+<body>
+
+<div id="distance"></div>
+<div id="container">
+ <div id="flashcontent">
+
+ <table border="0">
+ <tr>
+ <td colspan="3"><div style="height: 63px;" /></td>
+ </tr>
+ <tr>
+ <td><a href="/junkers/"><img src="{% media_url %}/homepage/img/intro/panel_junkers.jpg" alt="junkers" width="166" height="221" /></a></td>
+ <td><a href="/zeppelin/"><img src="{% media_url %}/homepage/img/intro/panel_zeppelin.jpg" alt="zeppelin" width="168" height="221" /></a></td>
+ <td><a href="/maximilian/"><img src="{% media_url %}/homepage/img/intro/panel_maximilian.jpg" alt="maximilian" width="162" height="221" /></a></td>
+ </tr>
+ <tr>
+ <td colspan="3"><div style="height: 66px;" /></td>
+ </tr>
+ </table>
+ </div>
+
+ <script type="text/javascript">
+ // <![CDATA[
+ var so = new SWFObject("{% media_url %}/homepage/swf/intro_{% translate "LANGUAGE_NAME" %}.swf", "intro", "500", "370", "9", "#FFF");
+ so.addParam("allowScriptAccess", "always");
+ so.write("flashcontent");
+ // ]]>
+ </script>
+
+</div>
+</div>
+
+</body>
+{% endblock %}
+
+</html>
diff --git a/emacs.d/nxhtml/tests/in/kubica-080516-freezing.txt b/emacs.d/nxhtml/tests/in/kubica-080516-freezing.txt
new file mode 100644
index 0000000..dc3a6cf
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kubica-080516-freezing.txt
@@ -0,0 +1,10 @@
+The problem seems to have to do with the { block pagestyle } thing
+below. If that is removed then the freezing does not happen.
+
+ <style type="text/css">
+ { block pagestyle }
+ p {
+ margin: 0;
+
+Try the files kubica-080516-freezing-i.html and dito j. The former
+freezes Emacs, but the latter does not.
diff --git a/emacs.d/nxhtml/tests/in/kwalo-080930.php b/emacs.d/nxhtml/tests/in/kwalo-080930.php
new file mode 100644
index 0000000..b45be15
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/kwalo-080930.php
@@ -0,0 +1,23 @@
+<?
+
+class Baz
+{
+ // This class was written after the file was opened
+}
+
+class Bar
+{
+ public function foo()
+ {
+ var_dump("foo");
+ return null;
+ }
+}
+
+class Foo
+{
+ public function bar()
+ {
+ var_dump("bar");
+ }
+} \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/latex-clojre-mumamo-test.lclj b/emacs.d/nxhtml/tests/in/latex-clojre-mumamo-test.lclj
new file mode 100644
index 0000000..7d5a97c
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/latex-clojre-mumamo-test.lclj
@@ -0,0 +1,17 @@
+\begin{section}
+Test file for latex-clojure-mumamo-mode!
+
+\begin{subsection}
+Define some vars here!
+\begin{clojure}
+(def zero 0)
+\end{clojure}
+
+\begin{subsection}
+Define some functions here!
+\begin{clojure}
+(defn id [arg]
+ arg)
+\end{clojure}
+
+\end{section}
diff --git a/emacs.d/nxhtml/tests/in/lg-080813-div.html b/emacs.d/nxhtml/tests/in/lg-080813-div.html
new file mode 100644
index 0000000..c507cb7
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/lg-080813-div.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ <meta http-equiv="Content-Type" content="text/html;" />
+ <!-- There was a typo above, a missing " after content -->
+ </head>
+ <body>
+ <div>
+ <div>
+ <p><a href="">marked invalid</a></p>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/lg-080813-label.html b/emacs.d/nxhtml/tests/in/lg-080813-label.html
new file mode 100644
index 0000000..8e790eb
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/lg-080813-label.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><title></title></head>
+ <body>
+ <p>
+ Since nXml do not have a schema for xhtml 1.0 transitional it
+ uses strict instead. Therefore it gaves false errors here.
+ </p>
+ <form action="" method="get">
+ <label for="inputname">Label for field: </label>
+ <input type="text" name="inputname" id="inputname" />
+ </form>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/long-lines.txt b/emacs.d/nxhtml/tests/in/long-lines.txt
new file mode 100644
index 0000000..791bdcb
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/long-lines.txt
@@ -0,0 +1 @@
+this is a very long line this is a very long line this is a very long line this is a very long line this is a very long line this is a very long line this is a very long line this is a very long line this is a very long line this is a very long line this is a very long line this is a very long line this is a very long line this is a very long line
diff --git a/emacs.d/nxhtml/tests/in/markdown.markdown b/emacs.d/nxhtml/tests/in/markdown.markdown
new file mode 100644
index 0000000..a4cb19d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/markdown.markdown
@@ -0,0 +1,16 @@
+
+This is a regular paragraph.
+
+<table>
+ <tr>
+ <td>Foo</td>
+ </tr>
+</table>
+
+This is another regular paragraph.
+
+Those look alike should not be in html-mode:
+
+ <http://example.com/>
+ <address@example.com>
+
diff --git a/emacs.d/nxhtml/tests/in/mason.mason b/emacs.d/nxhtml/tests/in/mason.mason
new file mode 100644
index 0000000..089dc1d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/mason.mason
@@ -0,0 +1,46 @@
+
+<%perl>
+ my $noun = 'World';
+my @time = localtime;
+</%perl>
+Hello <% $noun %>,
+% if ( $time[2] < 12 ) {
+ good morning.
+ % } else {
+ good afternoon.
+ % }
+
+ <%text>
+ Some text
+ </%text>
+
+<%doc>
+ Some doc
+</%doc>
+
+<& simple_comp &>
+
+ <%args>
+ $a
+ @b # a comment
+ %c
+
+ # another comment
+ $d => 5
+ $e => $d*2
+ @f => ('foo', 'baz')
+ %g => (joe => 1, bob => 2)
+ </%args>
+
+<&| /path/to/comp &> this is the content </&>
+<&| comp, arg1 => 'hi' &> filters can take arguments </&>
+<&| comp &> content can include <% "tags" %> of all kinds </&>
+something
+<& simple_comp &>
+<&| SELF:method1 &> subcomponents can be filters </&>
+<&| compit &>
+ <&| comp1 &>
+ nesting is also
+ <&| comp2 &> OK </&>
+xx
+</&>
diff --git a/emacs.d/nxhtml/tests/in/menu-err.txt b/emacs.d/nxhtml/tests/in/menu-err.txt
new file mode 100644
index 0000000..6a2beb6
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/menu-err.txt
@@ -0,0 +1,10 @@
+Debugger entered--Lisp error: (error "No file on this line")
+ signal(error ("No file on this line"))
+ error("No file on this line")
+ dired-get-file-for-visit()
+ (if (derived-mode-p (quote dired-mode)) (dired-get-file-for-visit) buffer-file-name)
+ html-site-buffer-or-dired-file-name()
+ (setq file (html-site-buffer-or-dired-file-name))
+ (if file nil (setq file (html-site-buffer-or-dired-file-name)))
+ (unless file (setq file (html-site-buffer-or-dired-file-name)))
+ nxhtml-buffer-possibly-local-viewable()
diff --git a/emacs.d/nxhtml/tests/in/mjt-feed.html b/emacs.d/nxhtml/tests/in/mjt-feed.html
new file mode 100644
index 0000000..50044d0
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/mjt-feed.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<link rel="stylesheet" href="feedstyle.css" type="text/css" />
+<title>mjt google feeds</title>
+<script type="text/javascript" src="http://mjtemplate.org/dist/mjt-0.6/mjt.js"></script>
+<script type="text/javascript" src="./google-api-keys.js"></script>
+<script type="text/javascript">
+ load_google_api('http://www.google.com/jsapi?key=');
+</script>
+<script type="text/javascript">
+
+ google.load("feeds", "1");
+
+ function initialize() {
+ var top = mjt.run('top');
+
+ var feeduri = mjt.urlquery.feed;
+ if (typeof feeduri == 'undefined')
+ feeduri = "http://blog.freebase.com/?feed=atom";
+ document.title = 'feed: ' + feeduri;
+
+ var feed = new google.feeds.Feed(feeduri);
+ feed.load(function(result) { mjt.run('feed', top.showfeed, [result]); });
+ }
+ google.setOnLoadCallback(initialize);
+</script>
+</head>
+<body>
+<div>
+This is a toy feed reader using <a href="http://mjtemplate.org">Mjt</a> to
+read Google's new <a href="http://code.google.com/apis/ajaxfeeds/documentation/">AJAX feed API</a>.
+</div>
+<div>
+some feeds:
+<a href="?feed=http://blog.freebase.com/%3Ffeed%3Datom">The Freebase Dev Blog</a>
+| <a href="?feed=http://googleajaxsearchapi.blogspot.com/atom.xml">Google AJAX Search API Blog</a>
+</div>
+<!-- compare to <a href="http://code.google.com/apis/ajaxfeeds/documentation/helloworld.html">google example</a> -->
+<div id="top" style="display:none;">
+<div class="feedform">
+<form action="feed.html">
+<div>xml feed uri:
+ <input type="text" size="70" name="feed" value="${mjt.urlquery.feed||''}" />
+<input type="submit" value="read" />
+</div>
+</form>
+</div>
+<div mjt.def="showfeed(result)">
+<div mjt.choose="">
+<div mjt.when="result.status != '200' &amp;&amp; result.error">
+ error: <b>$result.error.message</b>
+</div>
+<div mjt.when="result.status.code == 200">
+<pre mjt.script="">
+ document.title = 'feed: ' + result.feed.title;
+ </pre>
+<h1 class="feedtitle"><a href="$result.feed.link">$result.feed.title</a></h1>
+<div mjt.for="entry in result.feed.entries" class="entry">
+<div class="entryheader">
+<a href="$entry.link" class="entrytitle">$entry.title</a>
+<span mjt.if="entry.categories instanceof Array &amp;&amp; entry.categories.length&gt;0">
+ in: <span mjt.for="cat in (entry.categories||[])" class="category">$cat</span>
+</span>
+<div>
+ &nbsp;&nbsp;&nbsp;&nbsp;
+ <span class="author">${entry.author||''}</span> -
+ <span class="date">${entry.publishedDate||''}</span>
+</div>
+</div>
+<!-- XXX security - does google sanitize? we sure don't... -->
+<div class="content">${mjt.bless(entry.content)}</div>
+</div>
+</div>
+<div mjt.otherwise="">
+<b>unknown response type from google feed api</b>
+</div>
+</div>
+</div>
+</div>
+<!-- the feed view gets pasted here when ready -->
+<div id="feed"></div>
+</body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/mjt-imagesearch.html b/emacs.d/nxhtml/tests/in/mjt-imagesearch.html
new file mode 100644
index 0000000..1ec9cd8
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/mjt-imagesearch.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>mjt yahoo test</title>
+<script type="text/javascript" src="http://mjtemplate.org/dist/mjt-0.6/mjt.js"></script>
+<script type="text/javascript" src="http://mjtemplate.org/dist/mjt-0.6/src/yahooapi/yahooapi.js"></script>
+</head>
+<body onload="mjt.run('top')">
+<h2>Yahoo image search example</h2>
+using
+<a href="http://mjtemplate.org">mjt</a>
+to interact with the
+<a href="http://developer.yahoo.com/common/json.html">yahoo json api</a>
+<div id="top" style="display:none;">
+<div mjt.task="o">
+ mjt.yahooapi.ImageSearch(mjt.urlquery.query||'kathakali')
+ </div>
+<form method="get" action="">
+<div>
+<input type="text" name="query" value="${mjt.urlquery.query||''}" />
+<input type="submit" value="search" />
+</div>
+</form>
+<div mjt.choose="o.state">
+<div mjt.when="ready">
+<div mjt.for="img in o.result.Result">
+<h3>$img.Title</h3>
+<img alt="image" src="#" mjt.src="$img.Thumbnail.Url" style="float:left" />
+<div>$img.Summary</div>
+<hr style="clear:both" />
+</div>
+</div>
+<div mjt.when="wait">
+ loading...
+ </div>
+<div mjt.when="error">
+<div mjt.for="msg in o.messages">
+ $msg.message
+ </div>
+</div>
+</div>
+</div>
+</body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/mjt-minimal.html b/emacs.d/nxhtml/tests/in/mjt-minimal.html
new file mode 100644
index 0000000..6d8e30e
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/mjt-minimal.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<script type="text/javascript" src="http://mjtemplate.org/dist/mjt-0.6/mjt.js"></script>
+<title>a minimal mjt example</title>
+</head>
+<body onload="mjt.run()" style="display:none">
+ running mjt version ${mjt.VERSION}
+</body></html>
diff --git a/emacs.d/nxhtml/tests/in/mumamo-and-org.org b/emacs.d/nxhtml/tests/in/mumamo-and-org.org
new file mode 100644
index 0000000..19d9b53
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/mumamo-and-org.org
@@ -0,0 +1,20 @@
+* Test of org and mumamo
+
+ Below is a html chunk
+
+#+BEGIN_HTML
+<p>
+ I have no idea of how to use this yet.
+</p>
+#+END_HTML
+
+#+BEGIN_SRC emacs-lisp-mode
+ (defun
+#+END_SRC
+
+Where are the "..." in org-mumamo-mode???
+
+** Some subnode
+
+Hm, org full header lines are broken, why?
+Does not seem related to mumamo.
diff --git a/emacs.d/nxhtml/tests/in/mumamo-and-org.org.mm b/emacs.d/nxhtml/tests/in/mumamo-and-org.org.mm
new file mode 100644
index 0000000..041427f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/mumamo-and-org.org.mm
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<map version="0.9.0">
+<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
+<node text="Test of org and mumamo">
+<node style="bubble" background_color="#eeee00">
+<richcontent TYPE="NODE"><html>
+<head>
+<style type="text/css">
+<!--
+p { margin-top: 0 }
+-->
+</style>
+</head>
+<body>
+<p><br /> Below is a html chunk</p><p><br /></p>
+
+<p>
+ I have not idea of how to use this yet.
+</p>
+<p><br /></p>
+</body>
+</html>
+</richcontent>
+<richcontent TYPE="NOTE"><html><head></head><body><p>-- This is more about "Test of org and mumamo" --</p></body></html></richcontent>
+</node>
+<node text="Some subnode">
+<node style="bubble" background_color="#eeee00">
+<richcontent TYPE="NODE"><html>
+<head>
+<style type="text/css">
+<!--
+p { margin-top: 0 }
+-->
+</style>
+</head>
+<body>
+<p><br />Hm, header lines are broken, why?</p>
+</body>
+</html>
+</richcontent>
+<richcontent TYPE="NOTE"><html><head></head><body><p>-- This is more about "Some subnode" --</p></body></html></richcontent>
+</node>
+</node>
+</node>
+</map>
diff --git a/emacs.d/nxhtml/tests/in/ng-080309-read-url.html b/emacs.d/nxhtml/tests/in/ng-080309-read-url.html
new file mode 100644
index 0000000..9b20d66
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/ng-080309-read-url.html
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ </head>
+ <body>
+ <a href="rgr-080307.php" ></a>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/no-php-end-2.php b/emacs.d/nxhtml/tests/in/no-php-end-2.php
new file mode 100644
index 0000000..ac7debb
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/no-php-end-2.php
@@ -0,0 +1,18 @@
+<?php
+
+include_once(APP_AAA_INCLUDE."bb.php");
+include_once(APP_AAA_INCLUDE."cc.php");
+include_once(APP_AAA_INCLUDE."dd.php");
+include_once(APP_AAA_INCLUDE."ee.php");
+include_once(APP_AAA_INCLUDE."ff.php");
+include_once(APP_AAA_INCLUDE."gg.php");
+
+class Test
+{
+ public $var1;
+
+ function __construct()
+ {
+ $This->var1 = 5;
+ }
+} \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/no-php-end-2.php-log.txt b/emacs.d/nxhtml/tests/in/no-php-end-2.php-log.txt
new file mode 100644
index 0000000..e0d5e9f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/no-php-end-2.php-log.txt
@@ -0,0 +1,312 @@
+Illegal char in prolog
+undo!
+mumamo-jit-lock-after-change 1 2 0
+ mumamo-jit-lock-after-change: font-lock-extend-after-change-region-function=nil
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (progn (let ((jit-lock-start (\, min)) (jit-lock-end (\, max))) (mumamo-with-buffer-prepared-for-jit-lock (run-hook-with-args (quote jit-lock-after-change-extend-region-functions) min max old-len)) (setq min jit-lock-start) (setq max jit-lock-end) (syntax-ppss-flush-cache min)))))
+>>>>>>>>>>
+mumamo-jit-lock-after-change r-min,max=(1 . 7),nil major-min,max=nxhtml-mode,nil
+mumamo-jit-lock-after-change new-min,max=1,7
+mumamo-mark-for-refontification A min,max=1,7 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=1,7 point-min,max=1,329
+mumamo-jit-lock-after-change.unfontify-pos=1
+mumamo-jit-lock-function 1, ff=nil, just-changed=nil
+++++++ mumamo-fontify-region 1 8 nil, skip=nil
+here 1, here=1, end=8
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (progn (let (ppss ret) (setq ppss (parse-partial-sexp (\, syntax-start) (+ (\, syntax-end) 0))) (if (or (nth 3 ppss) (nth 4 ppss)) (progn nil t) t)))))
+>>>>>>>>>>
+ fn=mumamo-chunk-xml-pi, r=(1 6 nil nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 1 to 329 in no-php-end-2.php> cv-min/cv-max 1/6
+mumamo-mark-for-refontification A min,max=7,329 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=7,329 point-min,max=1,329
+mumamo-create-chunk-from-chunk-values (1 6 nil nil nil nil)
+mumamo-remove-chunk-overlays 1 6
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (quote (if syntax-begin-function (progn syntax-begin-function) (when (and (not syntax-begin-function) (boundp (quote font-lock-beginning-of-syntax-function)) font-lock-beginning-of-syntax-function) font-lock-beginning-of-syntax-function))))
+>>>>>>>>>>
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 1 nil, chunk-max: 6 nil
+*** mumamo-fontify-region-1.here=1, chunk=#<overlay from 1 to 6 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=1, start=1, chunk-min=1,max=6 end=8 chunk-major=nxhtml-mode
+mumamo-fontify-region-with 1 6 nil nxhtml-mode, ff=t
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 1 6 nil 1 6 nxhtml-mode
+mumamo-do-fontify 1 6, chunk-syntax-min,max=1,6, new: 1 6
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (parse-partial-sexp (point-min) last-pos)))
+>>>>>>>>>>
+mumamo-do-fontify exit >>>>>>> 1 6 nil 1 6 nxhtml-mode
+here 1, here=6, end=8
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=nil cv-min/cv-max 6/nil
+mumamo-mark-for-refontification A min,max=8,329 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=8,329 point-min,max=1,329
+mumamo-create-chunk-from-chunk-values (6 nil php-mode nil nil nil)
+mumamo-remove-chunk-overlays 6 329
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (quote (if syntax-begin-function (progn syntax-begin-function) (when (and (not syntax-begin-function) (boundp (quote font-lock-beginning-of-syntax-function)) font-lock-beginning-of-syntax-function) font-lock-beginning-of-syntax-function))))
+>>>>>>>>>>
+ mumamo-major-mode-from-modespec php-mode => php-mode
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=6, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=6, start=1, chunk-min=6,max=329 end=8 chunk-major=php-mode
+mumamo-fontify-region-with 6 8 nil php-mode, ff=nil
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 6 8 nil 6 329 php-mode
+mumamo-do-fontify 6 8, chunk-syntax-min,max=6,329, new: 6 8
+mumamo-do-fontify exit >>>>>>> 6 8 nil 6 329 php-mode
+mumamo-mark-for-refontification A min,max=8,8 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=1,end=329, start=1, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+
+++++++ mumamo-fontify-region 8 329 nil, skip=nil
+here 1, here=8, end=329
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=8, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=8, start=8, chunk-min=6,max=329 end=329 chunk-major=php-mode
+mumamo-fontify-region-with 8 329 nil php-mode, ff=t
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 8 329 nil 6 329 php-mode
+mumamo-do-fontify 8 329, chunk-syntax-min,max=6,329, new: 8 329
+mumamo-do-fontify exit >>>>>>> 8 329 nil 6 329 php-mode
+mumamo-mark-for-refontification A min,max=329,329 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=6,end=329, start=8, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+mumamo-jit-lock-function 6, ff=nil, just-changed=nil
+
+++++++ mumamo-fontify-region 1 48 nil, skip=nil
+here 1, here=1, end=48
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (progn (let (ppss ret) (setq ppss (parse-partial-sexp (\, syntax-start) (+ (\, syntax-end) 0))) (if (or (nth 3 ppss) (nth 4 ppss)) (progn nil t) t)))))
+>>>>>>>>>>
+ fn=mumamo-chunk-xml-pi, r=(1 6 nil nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 1 to 6 in no-php-end-2.php> cv-min/cv-max 1/6
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 1 nil, chunk-max: 6 nil
+*** mumamo-fontify-region-1.here=1, chunk=#<overlay from 1 to 6 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=1, start=1, chunk-min=1,max=6 end=48 chunk-major=nxhtml-mode
+mumamo-fontify-region-with 1 6 nil nxhtml-mode, ff=t
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 1 6 nil 1 6 nxhtml-mode
+mumamo-do-fontify 1 6, chunk-syntax-min,max=1,6, new: 1 6
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (parse-partial-sexp (point-min) last-pos)))
+>>>>>>>>>>
+mumamo-do-fontify exit >>>>>>> 1 6 nil 1 6 nxhtml-mode
+here 1, here=6, end=48
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-mark-for-refontification A min,max=48,329 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=48,329 point-min,max=1,329
+mumamo-create-chunk-from-chunk-values (6 nil php-mode nil nil nil)
+mumamo-remove-chunk-overlays 6 329
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (quote (if syntax-begin-function (progn syntax-begin-function) (when (and (not syntax-begin-function) (boundp (quote font-lock-beginning-of-syntax-function)) font-lock-beginning-of-syntax-function) font-lock-beginning-of-syntax-function))))
+>>>>>>>>>>
+ mumamo-major-mode-from-modespec php-mode => php-mode
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=6, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=6, start=1, chunk-min=6,max=329 end=48 chunk-major=php-mode
+mumamo-fontify-region-with 6 48 nil php-mode, ff=nil
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 6 48 nil 6 329 php-mode
+mumamo-do-fontify 6 48, chunk-syntax-min,max=6,329, new: 6 48
+mumamo-do-fontify exit >>>>>>> 6 48 nil 6 329 php-mode
+mumamo-mark-for-refontification A min,max=48,48 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=1,end=329, start=1, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+
+++++++ mumamo-fontify-region 48 329 nil, skip=nil
+here 1, here=48, end=329
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=48, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=48, start=48, chunk-min=6,max=329 end=329 chunk-major=php-mode
+mumamo-fontify-region-with 48 329 nil php-mode, ff=t
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 48 329 nil 6 329 php-mode
+mumamo-do-fontify 48 329, chunk-syntax-min,max=6,329, new: 48 329
+mumamo-do-fontify exit >>>>>>> 48 329 nil 6 329 php-mode
+mumamo-mark-for-refontification A min,max=329,329 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=6,end=329, start=48, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+mumamo-jit-lock-function 7, ff=nil, just-changed=nil
+
+++++++ mumamo-fontify-region 7 88 nil, skip=nil
+here 1, here=7, end=88
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-mark-for-refontification A min,max=88,329 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=88,329 point-min,max=1,329
+mumamo-create-chunk-from-chunk-values (6 nil php-mode nil nil nil)
+mumamo-remove-chunk-overlays 6 329
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (quote (if syntax-begin-function (progn syntax-begin-function) (when (and (not syntax-begin-function) (boundp (quote font-lock-beginning-of-syntax-function)) font-lock-beginning-of-syntax-function) font-lock-beginning-of-syntax-function))))
+>>>>>>>>>>
+ mumamo-major-mode-from-modespec php-mode => php-mode
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=7, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=7, start=7, chunk-min=6,max=329 end=88 chunk-major=php-mode
+mumamo-fontify-region-with 7 88 nil php-mode, ff=nil
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 7 88 nil 6 329 php-mode
+mumamo-do-fontify 7 88, chunk-syntax-min,max=6,329, new: 7 88
+mumamo-do-fontify exit >>>>>>> 7 88 nil 6 329 php-mode
+mumamo-mark-for-refontification A min,max=88,88 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=6,end=329, start=7, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+++++++ mumamo-fontify-region 88 329 nil, skip=nil
+here 1, here=88, end=329
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=88, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=88, start=88, chunk-min=6,max=329 end=329 chunk-major=php-mode
+mumamo-fontify-region-with 88 329 nil php-mode, ff=t
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 88 329 nil 6 329 php-mode
+mumamo-do-fontify 88 329, chunk-syntax-min,max=6,329, new: 88 329
+mumamo-do-fontify exit >>>>>>> 88 329 nil 6 329 php-mode
+mumamo-mark-for-refontification A min,max=329,329 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=6,end=329, start=88, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+mumamo-jit-lock-function 8, ff=nil, just-changed=nil
+++++++ mumamo-fontify-region 8 128 nil, skip=nil
+here 1, here=8, end=128
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-mark-for-refontification A min,max=128,329 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=128,329 point-min,max=1,329
+mumamo-create-chunk-from-chunk-values (6 nil php-mode nil nil nil)
+mumamo-remove-chunk-overlays 6 329
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (quote (if syntax-begin-function (progn syntax-begin-function) (when (and (not syntax-begin-function) (boundp (quote font-lock-beginning-of-syntax-function)) font-lock-beginning-of-syntax-function) font-lock-beginning-of-syntax-function))))
+>>>>>>>>>>
+ mumamo-major-mode-from-modespec php-mode => php-mode
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=8, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=8, start=8, chunk-min=6,max=329 end=128 chunk-major=php-mode
+mumamo-fontify-region-with 8 128 nil php-mode, ff=nil
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 8 128 nil 6 329 php-mode
+mumamo-do-fontify 8 128, chunk-syntax-min,max=6,329, new: 8 128
+mumamo-do-fontify exit >>>>>>> 8 128 nil 6 329 php-mode
+mumamo-mark-for-refontification A min,max=128,128 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=6,end=329, start=8, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+++++++ mumamo-fontify-region 128 329 nil, skip=nil
+here 1, here=128, end=329
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=128, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=128, start=128, chunk-min=6,max=329 end=329 chunk-major=php-mode
+mumamo-fontify-region-with 128 329 nil php-mode, ff=t
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 128 329 nil 6 329 php-mode
+mumamo-do-fontify 128 329, chunk-syntax-min,max=6,329, new: 128 329
+mumamo-do-fontify exit >>>>>>> 128 329 nil 6 329 php-mode
+mumamo-mark-for-refontification A min,max=329,329 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=6,end=329, start=128, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+mumamo-jit-lock-function 20, ff=nil, just-changed=nil
+++++++ mumamo-fontify-region 8 168 nil, skip=nil
+here 1, here=8, end=168
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-mark-for-refontification A min,max=168,329 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=168,329 point-min,max=1,329
+mumamo-create-chunk-from-chunk-values (6 nil php-mode nil nil nil)
+mumamo-remove-chunk-overlays 6 329
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (quote (if syntax-begin-function (progn syntax-begin-function) (when (and (not syntax-begin-function) (boundp (quote font-lock-beginning-of-syntax-function)) font-lock-beginning-of-syntax-function) font-lock-beginning-of-syntax-function))))
+>>>>>>>>>>
+ mumamo-major-mode-from-modespec php-mode => php-mode
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=8, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=8, start=8, chunk-min=6,max=329 end=168 chunk-major=php-mode
+mumamo-fontify-region-with 8 168 nil php-mode, ff=nil
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 8 168 nil 6 329 php-mode
+mumamo-do-fontify 8 168, chunk-syntax-min,max=6,329, new: 8 168
+mumamo-do-fontify exit >>>>>>> 8 168 nil 6 329 php-mode
+mumamo-mark-for-refontification A min,max=168,168 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=6,end=329, start=8, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+++++++ mumamo-fontify-region 168 329 nil, skip=nil
+here 1, here=168, end=329
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
diff --git a/emacs.d/nxhtml/tests/in/no-php-end-2.php-log2.txt b/emacs.d/nxhtml/tests/in/no-php-end-2.php-log2.txt
new file mode 100644
index 0000000..1df7c4d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/no-php-end-2.php-log2.txt
@@ -0,0 +1,238 @@
+Illegal char in prolog
+undo!
+mumamo-jit-lock-after-change 1 2 0
+ mumamo-jit-lock-after-change: font-lock-extend-after-change-region-function=nil
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (progn (let ((jit-lock-start (\, min)) (jit-lock-end (\, max))) (mumamo-with-buffer-prepared-for-jit-lock (run-hook-with-args (quote jit-lock-after-change-extend-region-functions) min max old-len)) (setq min jit-lock-start) (setq max jit-lock-end) (syntax-ppss-flush-cache min)))))
+>>>>>>>>>>
+mumamo-jit-lock-after-change r-min,max=(1 . 7),nil major-min,max=nxhtml-mode,nil
+mumamo-jit-lock-after-change new-min,max=1,7
+mumamo-mark-for-refontification A min,max=1,7 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=1,7 point-min,max=1,329
+mumamo-jit-lock-after-change.unfontify-pos=1
+mumamo-jit-lock-function 1, ff=nil, just-changed=nil
+++++++ mumamo-fontify-region 1 8 nil, skip=nil
+here 1, here=1, end=8
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (progn (let (ppss ret) (setq ppss (parse-partial-sexp (\, syntax-start) (+ (\, syntax-end) 0))) (if (or (nth 3 ppss) (nth 4 ppss)) (progn nil t) t)))))
+>>>>>>>>>>
+ fn=mumamo-chunk-xml-pi, r=(1 6 nil nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 1 to 329 in no-php-end-2.php> cv-min/cv-max 1/6
+new-is-closed=6
+mumamo-mark-for-refontification A min,max=7,329 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=7,329 point-min,max=1,329
+mumamo-create-chunk-from-chunk-values (1 6 nil nil nil nil)
+mumamo-remove-chunk-overlays 1 6
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (quote (if syntax-begin-function (progn syntax-begin-function) (when (and (not syntax-begin-function) (boundp (quote font-lock-beginning-of-syntax-function)) font-lock-beginning-of-syntax-function) font-lock-beginning-of-syntax-function))))
+>>>>>>>>>>
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 1 nil, chunk-max: 6 nil
+*** mumamo-fontify-region-1.here=1, chunk=#<overlay from 1 to 6 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=1, start=1, chunk-min=1,max=6 end=8 chunk-major=nxhtml-mode
+mumamo-fontify-region-with 1 6 nil nxhtml-mode, ff=t
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 1 6 nil 1 6 nxhtml-mode
+mumamo-do-fontify 1 6, chunk-syntax-min,max=1,6, new: 1 6
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (parse-partial-sexp (point-min) last-pos)))
+>>>>>>>>>>
+mumamo-do-fontify exit >>>>>>> 1 6 nil 1 6 nxhtml-mode
+here 1, here=6, end=8
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=nil cv-min/cv-max 6/nil
+(when (and end new-real-end (> new-real-end end))
+mumamo-mark-for-refontification A min,max=8,329 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=8,329 point-min,max=1,329
+mumamo-create-chunk-from-chunk-values (6 nil php-mode nil nil nil)
+mumamo-remove-chunk-overlays 6 329
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (quote (if syntax-begin-function (progn syntax-begin-function) (when (and (not syntax-begin-function) (boundp (quote font-lock-beginning-of-syntax-function)) font-lock-beginning-of-syntax-function) font-lock-beginning-of-syntax-function))))
+>>>>>>>>>>
+ mumamo-major-mode-from-modespec php-mode => php-mode
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=6, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=6, start=1, chunk-min=6,max=329 end=8 chunk-major=php-mode
+mumamo-fontify-region-with 6 8 nil php-mode, ff=nil
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 6 8 nil 6 329 php-mode
+mumamo-do-fontify 6 8, chunk-syntax-min,max=6,329, new: 6 8
+mumamo-do-fontify exit >>>>>>> 6 8 nil 6 329 php-mode
+
+not sure
+mumamo-mark-for-refontification A min,max=8,8 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=1,end=329, start=1, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+++++++ mumamo-fontify-region 8 329 nil, skip=nil
+here 1, here=8, end=329
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=8, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=8, start=8, chunk-min=6,max=329 end=329 chunk-major=php-mode
+mumamo-fontify-region-with 8 329 nil php-mode, ff=t
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 8 329 nil 6 329 php-mode
+mumamo-do-fontify 8 329, chunk-syntax-min,max=6,329, new: 8 329
+mumamo-do-fontify exit >>>>>>> 8 329 nil 6 329 php-mode
+
+
+not sure
+mumamo-mark-for-refontification A min,max=329,329 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=6,end=329, start=8, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+mumamo-jit-lock-function 6, ff=nil, just-changed=nil
+++++++ mumamo-fontify-region 1 48 nil, skip=nil
+here 1, here=1, end=48
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (progn (let (ppss ret) (setq ppss (parse-partial-sexp (\, syntax-start) (+ (\, syntax-end) 0))) (if (or (nth 3 ppss) (nth 4 ppss)) (progn nil t) t)))))
+>>>>>>>>>>
+ fn=mumamo-chunk-xml-pi, r=(1 6 nil nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 1 to 6 in no-php-end-2.php> cv-min/cv-max 1/6
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 1 nil, chunk-max: 6 nil
+*** mumamo-fontify-region-1.here=1, chunk=#<overlay from 1 to 6 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=1, start=1, chunk-min=1,max=6 end=48 chunk-major=nxhtml-mode
+mumamo-fontify-region-with 1 6 nil nxhtml-mode, ff=t
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 1 6 nil 1 6 nxhtml-mode
+mumamo-do-fontify 1 6, chunk-syntax-min,max=1,6, new: 1 6
+mumamo-with-major-mode-setup nxhtml-mode => html-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (parse-partial-sexp (point-min) last-pos)))
+>>>>>>>>>>
+mumamo-do-fontify exit >>>>>>> 1 6 nil 1 6 nxhtml-mode
+here 1, here=6, end=48
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+(when (and end new-real-end (> new-real-end end))
+mumamo-mark-for-refontification A min,max=48,329 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=48,329 point-min,max=1,329
+mumamo-create-chunk-from-chunk-values (6 nil php-mode nil nil nil)
+mumamo-remove-chunk-overlays 6 329
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (quote (if syntax-begin-function (progn syntax-begin-function) (when (and (not syntax-begin-function) (boundp (quote font-lock-beginning-of-syntax-function)) font-lock-beginning-of-syntax-function) font-lock-beginning-of-syntax-function))))
+>>>>>>>>>>
+ mumamo-major-mode-from-modespec php-mode => php-mode
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=6, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=6, start=1, chunk-min=6,max=329 end=48 chunk-major=php-mode
+mumamo-fontify-region-with 6 48 nil php-mode, ff=nil
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 6 48 nil 6 329 php-mode
+mumamo-do-fontify 6 48, chunk-syntax-min,max=6,329, new: 6 48
+mumamo-do-fontify exit >>>>>>> 6 48 nil 6 329 php-mode
+
+
+not sure
+mumamo-mark-for-refontification A min,max=48,48 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=1,end=329, start=1, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+++++++ mumamo-fontify-region 48 329 nil, skip=nil
+here 1, here=48, end=329
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=48, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=48, start=48, chunk-min=6,max=329 end=329 chunk-major=php-mode
+mumamo-fontify-region-with 48 329 nil php-mode, ff=t
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 48 329 nil 6 329 php-mode
+mumamo-do-fontify 48 329, chunk-syntax-min,max=6,329, new: 48 329
+mumamo-do-fontify exit >>>>>>> 48 329 nil 6 329 php-mode
+
+
+not sure
+mumamo-mark-for-refontification A min,max=329,329 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=6,end=329, start=48, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+mumamo-jit-lock-function 7, ff=nil, just-changed=nil
+++++++ mumamo-fontify-region 7 88 nil, skip=nil
+here 1, here=7, end=88
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+(when (and end new-real-end (> new-real-end end))
+mumamo-mark-for-refontification A min,max=88,329 point-min,max=1,329
+mumamo-mark-for-refontification B min,max=88,329 point-min,max=1,329
+mumamo-create-chunk-from-chunk-values (6 nil php-mode nil nil nil)
+mumamo-remove-chunk-overlays 6 329
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (quote (if syntax-begin-function (progn syntax-begin-function) (when (and (not syntax-begin-function) (boundp (quote font-lock-beginning-of-syntax-function)) font-lock-beginning-of-syntax-function) font-lock-beginning-of-syntax-function))))
+>>>>>>>>>>
+ mumamo-major-mode-from-modespec php-mode => php-mode
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=7, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=7, start=7, chunk-min=6,max=329 end=88 chunk-major=php-mode
+mumamo-fontify-region-with 7 88 nil php-mode, ff=nil
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 7 88 nil 6 329 php-mode
+mumamo-do-fontify 7 88, chunk-syntax-min,max=6,329, new: 7 88
+mumamo-do-fontify exit >>>>>>> 7 88 nil 6 329 php-mode
+
+
+not sure
+mumamo-mark-for-refontification A min,max=88,88 point-min,max=1,329
+*** mumamo-fontify-region-1: here 3 ovl-start=6,end=329, start=7, chunks-to-remove=nil
+*** mumamo-fontify-region-1: here 4
+++++++ mumamo-fontify-region 88 329 nil, skip=nil
+here 1, here=88, end=329
+ fn=mumamo-chunk-xml-pi, r=(6 nil php-mode nil nil)
+ fn=mumamo-chunk-inlined-style, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-inlined-script, r=(1 nil nil nil nil)
+ fn=mumamo-chunk-style=, r=(nil nil nil)
+ fn=mumamo-chunk-onjs=, r=(nil nil nil)
+old-chunk=#<overlay from 6 to 329 in no-php-end-2.php> cv-min/cv-max 6/nil
+mumamo-fontify-region-1 FACE FACE FACE chunk-min: 6 font-lock-keyword-face, chunk-max: 329 nil
+*** mumamo-fontify-region-1.here=88, chunk=#<overlay from 6 to 329 in no-php-end-2.php>
+*** mumamo-fontify-region-1: here 2 here=88, start=88, chunk-min=6,max=329 end=329 chunk-major=php-mode
+mumamo-fontify-region-with 88 329 nil php-mode, ff=t
+mumamo-with-major-mode-setup php-mode => php-mode
+mumamo-with-major-mode-setup <<<<<<<<<< body=(progn (\` (mumamo-do-fontify (\, start) (\, end) (\, verbose) (\, chunk-syntax-min) (\, chunk-syntax-max) major)))
+>>>>>>>>>>
+mumamo-do-fontify <<<<<<< 88 329 nil 6 329 php-mode
+mumamo-do-fontify 88 329, chunk-syntax-min,max=6,329, new: 88 329
+mumamo-do-fontify exit >>>>>>> 88 329 nil 6 329 php-mode
+
+
+not sure
+mumamo-mark-for-refontification A min,max=329,329 point-min,max=1,329
+*** muma
diff --git a/emacs.d/nxhtml/tests/in/no-php-end-3.php b/emacs.d/nxhtml/tests/in/no-php-end-3.php
new file mode 100644
index 0000000..2e91d1a
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/no-php-end-3.php
@@ -0,0 +1,18 @@
+<?php
+
+include_once(APP_AAA_INCLUDE."bb.php");
+include_once(APP_AAA_INCLUDE."cc.php");
+include_once(APP_AAA_INCLUDE."dd.php");
+include_once(APP_AAA_INCLUDE."ee.php");
+include_once(APP_AAA_INCLUDE."ff.php");
+include_once(APP_AAA_INCLUDE."gg.php");
+
+class Test
+{
+ public $var1;
+
+ function __construct()
+ {
+ $This->var1 = 5;
+ }
+}
diff --git a/emacs.d/nxhtml/tests/in/no-php-end-4.php b/emacs.d/nxhtml/tests/in/no-php-end-4.php
new file mode 100644
index 0000000..2e91d1a
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/no-php-end-4.php
@@ -0,0 +1,18 @@
+<?php
+
+include_once(APP_AAA_INCLUDE."bb.php");
+include_once(APP_AAA_INCLUDE."cc.php");
+include_once(APP_AAA_INCLUDE."dd.php");
+include_once(APP_AAA_INCLUDE."ee.php");
+include_once(APP_AAA_INCLUDE."ff.php");
+include_once(APP_AAA_INCLUDE."gg.php");
+
+class Test
+{
+ public $var1;
+
+ function __construct()
+ {
+ $This->var1 = 5;
+ }
+}
diff --git a/emacs.d/nxhtml/tests/in/no-php-end.php b/emacs.d/nxhtml/tests/in/no-php-end.php
new file mode 100644
index 0000000..ecd9d9f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/no-php-end.php
@@ -0,0 +1,4 @@
+<?php
+
+$parent_id = 5;
+var_dump($parent_id);
diff --git a/emacs.d/nxhtml/tests/in/nojump-parse.html b/emacs.d/nxhtml/tests/in/nojump-parse.html
new file mode 100644
index 0000000..d66369f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/nojump-parse.html
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ <script type="text/javascript">
+<testnxmlparsed>
+ </script>
diff --git a/emacs.d/nxhtml/tests/in/noweb1.now b/emacs.d/nxhtml/tests/in/noweb1.now
new file mode 100644
index 0000000..1df9074
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/noweb1.now
@@ -0,0 +1,38 @@
+@
+\section{Hello world}
+
+Today I awakened and decided to write
+some code, so I started to write a Hello World in \textsf C.
+
+<<hello.c>>=
+/*
+ <<license>>
+*/
+#include <stdio.h>
+
+int main(int argc, char *argv[]) {
+ printf("Hello World!\n");
+ return 0;
+}
+@
+\noindent \ldots then I did the same in PHP.
+
+<<hello.sql>>=
+SELECT * FROM Persons
+WHERE FirstName LIKE '%a'
+@
+<<hello.php>>=
+<?php
+ /*
+ <<license>>
+ */
+ echo "Hello world!\n";
+?>
+@
+\section{License}
+Later, same day some lawyer reminded me about licenses.
+So, here it is:
+
+<<license>>=
+This work is placed in the public domain.
+@
diff --git a/emacs.d/nxhtml/tests/in/nutshell.mako b/emacs.d/nxhtml/tests/in/nutshell.mako
new file mode 100644
index 0000000..3c7540e
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/nutshell.mako
@@ -0,0 +1,27 @@
+ % for row in rows:
+<%inherit file="base.html"/>
+
+<%
+ rows = [[v for v in range(0,10)] for row in range(0,10)]
+%>
+<%!
+ rows = [[v for v in range(0,10)] for row in range(0,10)]
+%>
+aaa
+<table>
+ ## This is a comment.
+ % for row in rows:
+ ${makerow(row)}
+ % endfor
+</table>
+
+<%def name="makerow(row)">
+ <tr>
+ % for name in row:
+ <td>${name}</td>\
+ % endfor
+ </tr>
+</%def>
+<%doc>
+This should be a comment too...
+</%doc>
diff --git a/emacs.d/nxhtml/tests/in/nxml-bug.html b/emacs.d/nxhtml/tests/in/nxml-bug.html
new file mode 100644
index 0000000..3d2fe7b
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/nxml-bug.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head><title></title></head>
+ <body>
+ <form action="" method="get">
+ <label for="inputname">Label for field: </label>
+ <input type="text" name="inputname" id="inputname" />
+ </form>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/nxml-indent-2.html b/emacs.d/nxhtml/tests/in/nxml-indent-2.html
new file mode 100644
index 0000000..e30dba0
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/nxml-indent-2.html
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Kimpro Malmö &amp; Sydsverige - AKTUELLT I MALMÖ</title>
+ <link href="textmall.css" rel="stylesheet" type="text/css" />
+ <link href="layout.css" rel="stylesheet" type="text/css" />
+ </head>
+ <body>
+ <div class="kolumn1">
+ <span class="rubrik">Aktuellt våren 2008</span><br />
+ <i>Välkommen till dansens magiska universum!</i><br />
+ Här i kalendariet kan du se vad som händer i kimprosammanhang
+ just nu. De arrangemang med rosa botten är utöver våra
+ vanliga söndags-träffar i Malmö. Vill du veta mer om de olika
+ verksamheterna, ta en titt under <u><a href=
+ "index_verksamhet.html" target="index3s">Verksamhet</a>.
+ <b>OBS!</b> Notera att vi bytt danstid till kl 19-21! Detta
+ gäller endast en period nu i vår.<br />
+ <br /></u><b>Mars</b>
+ <table width="370" cellspacing="5">
+ <!--
+ <tr>
+ <td class="kalendariecell_special">
+ <img src="grafik/aktuelltbild_januari.jpg" border=0><br>
+ <i>Några av oss som dansar i Malmö</i><br>
+
+<span class="mellanrubrik">
+<br>
+<b>OBS: Ny tid!</b><br></span>
+Vi har ny tid för dansen på söndagar! 19-21 är nya tiden som gäller en tid framöver. <br>
+<br>
+
+<br>
+Sofia och Rebecka har arbetat tillsammans sedan år 2000. De träffades
+på Nordens dåvarande enda cirkusgymnasium i Gävle och utbildade sig
+sedan i Köpenhamn på AFUK, Akademiet för Utaemet Kreativitet -
+Artistlinien, med parakrobatik som huvuddiciplin. Sedan följde en
+treårig
+utbildning" Centre des Arts du Cirque de Lomme-Et vous trouvez ca
+drole!!!" i Lille, Frankrike. 2003 startade de nycirkusföretaget
+"Stint"
+tillsammans och de jobbar nu som frilansande cirkusartister främst i
+Frankrike.<br>
+<br>
+Med Rebecka som överman och Sofia som underman kör de både liggande och
+stående parakrobatik, spänningsövningar, huvud- och handhandbalanser.
+Tillsammans har de jobbat ihop flera olika akter á 5 minuter. Däribland
+hittar man kvinnlig styrka och pur pondus, komisk vardagstristess,
+hisnande teknik och tyngdpunkt i relationerna mellan människor och
+samhällets uppochned vända verklighet, ur ett verkligt uppochnedvänt
+perspektiv. Sedan år 2006 har fokuset flyttats mer och mer åt
+improvisationshållet, parakrobatikimprovisation i samarbete med fri
+improviserad musik och kontaktimprovisation.<br>
+<a href="http://www.stint.nu" target=blank><u>www.stint.nu</u></a><br>
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 24 Februari<br>
+<span class="mellanrubrik">
+Musikjam!</span><br>
+kl 19-21, 30 kr<br>
+<br>
+Denna söndag kommer inga inhyrda musiker till jammet,
+utan då det är vi själva som står för musiken!<br>
+<br>
+Så alla som kan och vill -ta med er instrument eller
+andra ljudframbringande prylar. Att använda sin röst går förståss
+också bra.<br>
+<br>
+Vill man inte musisera så dansar man som vanligt.
+(..och därför kostar det bara 30 kr, då vi inte har några musiker som
+ska betalas)<br>
+<br>
+VÄLKOMNA!
+</td>
+</tr>
+ -->
+ <tr>
+ <td class="kalendariecell">
+ Söndag 2 Mars<br />
+ <span class="mellanrubrik">Nybörjarintroduktion &amp;
+ Jam med Karin R och Jenny</span><br />
+ Kl. 19-21, 30 kr.
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 9 Mars<br />
+ <span class="mellanrubrik">Blind fold jam - jam med
+ ögonbindel!</span><br />
+ ... med Sofi och Tove. Kl 19-21, 30 kr<br />
+ På ett blind fold jam dansar man med ögonen förbundna,
+ för att öka känsligheten, lyssnandet och samspelet. Det
+ är också ett sätt att försöka komma förbi
+ föreställningar man (medvetet eller omedvetet) har runt
+ vem man väljer att dansa med. Det blir i slutändan en
+ spegling till en själv om de val man gör på dansgolvet,
+ där kroppen denna gång får bestämma i stället för
+ huvudet. Vi inleder som vanligt med en introduktion.
+ Tag gärna med egen ögonbindel!<br />
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 16 Mars<br />
+ <span class="mellanrubrik">Introduktion och
+ jam</span><br />
+ 19-21, 30 kr<br />
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 23 Mars<br />
+ <span class="mellanrubrik">Ingenting här för då är vi
+ på NIM i Köpenhamn!
+ <!-- Introduktion och jam</span><br> -->
+ <!-- 19-21, 30 kr<br> --></span>
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen den 30:e<br />
+ <span class="mellanrubrik">Kort introduktion och
+ Livejam!!</span><br />
+ 19-21, 50 kr<br />
+ </td>
+ </tr>
+ </table>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/nxml-indent-3.html b/emacs.d/nxhtml/tests/in/nxml-indent-3.html
new file mode 100644
index 0000000..e7c686f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/nxml-indent-3.html
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>
+ Kimpro Malmö &amp; Sydsverige - AKTUELLT I MALMÖ
+ </title>
+ <link href="textmall.css" rel="stylesheet" type="text/css" />
+ <link href="layout.css" rel="stylesheet" type="text/css" />
+ </head>
+ <body>
+ <div class="kolumn1">
+ <span class="rubrik">Aktuellt våren 2008</span><br />
+ <i>Välkommen till dansens magiska universum!</i><br />
+ Här i kalendariet kan du se vad som händer i kimprosammanhang
+ just nu. De arrangemang med rosa botten är utöver våra
+ vanliga söndags-träffar i Malmö. Vill du veta mer om de olika
+ verksamheterna, ta en titt under <u><a href=
+ "index_verksamhet.html" target="index3s">Verksamhet</a>.
+ <b>OBS!</b> Notera att vi bytt danstid till kl 19-21! Detta
+ gäller endast en period nu i vår.<br />
+ <br /></u><b>Mars</b>
+ <table width="370" cellspacing="5">
+ <!--
+ <tr>
+ <td class="kalendariecell_special">
+ <img src="grafik/aktuelltbild_januari.jpg" border=0><br>
+ <i>Några av oss som dansar i Malmö</i><br>
+
+<span class="mellanrubrik">
+<br>
+<b>OBS: Ny tid!</b><br></span>
+Vi har ny tid för dansen på söndagar! 19-21 är nya tiden som gäller en tid framöver. <br>
+<br>
+
+<br>
+Sofia och Rebecka har arbetat tillsammans sedan år 2000. De träffades
+på Nordens dåvarande enda cirkusgymnasium i Gävle och utbildade sig
+sedan i Köpenhamn på AFUK, Akademiet för Utaemet Kreativitet -
+Artistlinien, med parakrobatik som huvuddiciplin. Sedan följde en
+treårig
+"Stint"
+tillsammans och de jobbar nu som frilansande cirkusartister främst i
+Frankrike.<br>
+<br>
+Med Rebecka som överman och Sofia som underman kör de både liggande och
+stående parakrobatik, spänningsövningar, huvud- och handhandbalanser.
+Tillsammans har de jobbat ihop flera olika akter á 5 minuter. Däribland
+hittar man kvinnlig styrka och pur pondus, komisk vardagstristess,
+hisnande teknik och tyngdpunkt i relationerna mellan människor och
+samhällets uppochned vända verklighet, ur ett verkligt uppochnedvänt
+perspektiv. Sedan år 2006 har fokuset flyttats mer och mer åt
+improvisationshållet, parakrobatikimprovisation i samarbete med fri
+improviserad musik och kontaktimprovisation.<br>
+<a href="http://www.stint.nu" target=blank><u>www.stint.nu</u></a><br>
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 24 Februari<br>
+<span class="mellanrubrik">
+Musikjam!</span><br>
+kl 19-21, 30 kr<br>
+<br>
+Denna söndag kommer inga inhyrda musiker till jammet,
+utan då det är vi själva som står för musiken!<br>
+<br>
+Så alla som kan och vill -ta med er instrument eller
+andra ljudframbringande prylar. Att använda sin röst går förståss
+också bra.<br>
+<br>
+Vill man inte musisera så dansar man som vanligt.
+(..och därför kostar det bara 30 kr, då vi inte har några musiker som
+ska betalas)<br>
+<br>
+VÄLKOMNA!
+</td>
+</tr>
+ -->
+ <tr>
+ <td class="kalendariecell">
+ Söndag 2 Mars<br />
+ <span class="mellanrubrik">Nybörjarintroduktion &amp;
+ Jam med Karin R och Jenny</span><br />
+ Kl. 19-21, 30 kr.
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 9 Mars<br />
+ <span class="mellanrubrik">Blind fold jam - jam med
+ ögonbindel!</span><br />
+ ... med Sofi och Tove. Kl 19-21, 30 kr<br />
+ På ett blind fold jam dansar man med ögonen förbundna,
+ för att öka känsligheten, lyssnandet och samspelet. Det
+ är också ett sätt att försöka komma förbi
+ föreställningar man (medvetet eller omedvetet) har runt
+ vem man väljer att dansa med. Det blir i slutändan en
+ spegling till en själv om de val man gör på dansgolvet,
+ där kroppen denna gång får bestämma i stället för
+ huvudet. Vi inleder som vanligt med en introduktion.
+ Tag gärna med egen ögonbindel!<br />
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 16 Mars<br />
+ <span class="mellanrubrik">Introduktion och
+ jam</span><br />
+ 19-21, 30 kr<br />
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 23 Mars<br />
+ <span class="mellanrubrik">Ingenting här för då är vi
+ på NIM i Köpenhamn!
+ <!-- Introduktion och jam</span><br> -->
+ <!-- 19-21, 30 kr<br> --></span>
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen den 30:e<br />
+ <span class="mellanrubrik">Kort introduktion och
+ Livejam!!</span><br />
+ 19-21, 50 kr<br />
+ </td>
+ </tr>
+ </table>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/nxml-indent-noerr1.html b/emacs.d/nxhtml/tests/in/nxml-indent-noerr1.html
new file mode 100644
index 0000000..db82964
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/nxml-indent-noerr1.html
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>
+ Kimpro Malmö &amp; Sydsverige - AKTUELLT I MALMÖ
+ </title>
+ <link href="textmall.css" rel="stylesheet" type="text/css" />
+ <link href="layout.css" rel="stylesheet" type="text/css" />
+ </head>
+ <body>
+ <div class="kolumn1">
+ <span class="rubrik">Aktuellt våren 2008</span><br />
+ <i>Välkommen till dansens magiska universum!</i><br />
+ Här i kalendariet kan du se vad som händer i kimprosammanhang
+ just nu. De arrangemang med rosa botten är utöver våra
+ vanliga söndags-träffar i Malmö. Vill du veta mer om de olika
+ verksamheterna, ta en titt under <u><a href=
+ "index_verksamhet.html" target="index3s">Verksamhet</a>.
+ <b>OBS!</b> Notera att vi bytt danstid till kl 19-21! Detta
+ gäller endast en period nu i vår.<br />
+ <br /></u><b>Mars</b>
+ <table width="370" cellspacing="5">
+ <!--
+ <tr>
+ <td class="kalendariecell_special">
+ <img src="grafik/aktuelltbild_januari.jpg" border=0><br>
+ <i>Några av oss som dansar i Malmö</i><br>
+
+<span class="mellanrubrik">
+<br>
+<b>OBS: Ny tid!</b><br></span>
+Vi har ny tid för dansen på söndagar! 19-21 är nya tiden som gäller en tid framöver. <br>
+<br>
+
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 6 Januari<br>
+<span class="mellanrubrik">
+Grundklass & Jam</span><br>
+Årets första nybörjarintro! Kl. 17-19, 30 kr.
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 13 Januari<br>
+<span class="mellanrubrik">
+Introduktion & Jam</span><br>
+Kl. 17-19, 30 kr.
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 20 Januari<br>
+<span class="mellanrubrik">
+Introduktion & Jam</span><br>
+Kl. 17-19, 30 kr.
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 27 Januari<br>
+<span class="mellanrubrik">
+Introduktion & Jam</span><br>
+Kl. 17-19, 30 kr.
+</td>
+</tr>
+
+<tr>
+<td class="kalendariecell_special">
+<b>23-24 februari</b><br>
+<span class="mellanrubrik">WORKSHOP I AKROBATIK
+FÖR KONTAKTIMPROVISATÖRER</span><br>
+<br>
+Två parakrobater, Sofia och Rebecka, bosatta i Frankrike kommer till
+Malmö
+för att hålla en workshop speciellt för Kimpro Malmö!
+Workshopen kommer handla om hur man kan använda akrobatik i
+kontaktimprovisation. Inga förkunskaper i akrobatik behövs.<br>
+<br>
+23-24/2, kl.13-16 båda dagarna.<br>
+Kostnad: 350 kr.<br>
+Betalas senast den 21/2 till plusgirokonto: 1136904-8, Nordea,
+skriv: akro + namn.<br>
+Plats: meddelas senare.<br>
+Anmälan senast 19/2 till Clara, claravara00@yahoo.se<br>
+<br>
+Begränsat antal platser. Först till kvarn!<br>
+<br>
+<br>
+Sofia och Rebecka har arbetat tillsammans sedan år 2000. De träffades
+på Nordens dåvarande enda cirkusgymnasium i Gävle och utbildade sig
+sedan i Köpenhamn på AFUK, Akademiet för Utaemet Kreativitet -
+Artistlinien, med parakrobatik som huvuddiciplin. Sedan följde en
+treårig
+utbildning" Centre des Arts du Cirque de Lomme-Et vous trouvez ca
+drole!!!" i Lille, Frankrike. 2003 startade de nycirkusföretaget
+"Stint"
+tillsammans och de jobbar nu som frilansande cirkusartister främst i
+Frankrike.<br>
+<br>
+Med Rebecka som överman och Sofia som underman kör de både liggande och
+stående parakrobatik, spänningsövningar, huvud- och handhandbalanser.
+Tillsammans har de jobbat ihop flera olika akter á 5 minuter. Däribland
+hittar man kvinnlig styrka och pur pondus, komisk vardagstristess,
+hisnande teknik och tyngdpunkt i relationerna mellan människor och
+samhällets uppochned vända verklighet, ur ett verkligt uppochnedvänt
+perspektiv. Sedan år 2006 har fokuset flyttats mer och mer åt
+improvisationshållet, parakrobatikimprovisation i samarbete med fri
+improviserad musik och kontaktimprovisation.<br>
+<a href="http://www.stint.nu" target=blank><u>www.stint.nu</u></a><br>
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 24 Februari<br>
+<span class="mellanrubrik">
+Musikjam!</span><br>
+kl 19-21, 30 kr<br>
+<br>
+Denna söndag kommer inga inhyrda musiker till jammet,
+utan då det är vi själva som står för musiken!<br>
+<br>
+Så alla som kan och vill -ta med er instrument eller
+andra ljudframbringande prylar. Att använda sin röst går förståss
+också bra.<br>
+<br>
+Vill man inte musisera så dansar man som vanligt.
+(..och därför kostar det bara 30 kr, då vi inte har några musiker som
+ska betalas)<br>
+<br>
+VÄLKOMNA!
+</td>
+</tr>
+ -->
+ <tr>
+ <td class="kalendariecell">
+ Söndag 2 Mars<br />
+ <span class="mellanrubrik">Nybörjarintroduktion &amp;
+ Jam med Karin R och Jenny</span><br />
+ Kl. 19-21, 30 kr.
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 9 Mars<br />
+ <span class="mellanrubrik">Blind fold jam - jam med
+ ögonbindel!</span><br />
+ ... med Sofi och Tove. Kl 19-21, 30 kr<br />
+ På ett blind fold jam dansar man med ögonen förbundna,
+ för att öka känsligheten, lyssnandet och samspelet. Det
+ är också ett sätt att försöka komma förbi
+ föreställningar man (medvetet eller omedvetet) har runt
+ vem man väljer att dansa med. Det blir i slutändan en
+ spegling till en själv om de val man gör på dansgolvet,
+ där kroppen denna gång får bestämma i stället för
+ huvudet. Vi inleder som vanligt med en introduktion.
+ Tag gärna med egen ögonbindel!<br />
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 16 Mars<br />
+ <span class="mellanrubrik">Introduktion och
+ jam</span><br />
+ 19-21, 30 kr<br />
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 23 Mars<br />
+ <span class="mellanrubrik">Ingenting här för då är vi
+ på NIM i Köpenhamn!
+ <!-- Introduktion och jam</span><br> -->
+ <!-- 19-21, 30 kr<br> --></span>
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen den 30:e<br />
+ <span class="mellanrubrik">Kort introduktion och
+ Livejam!!</span><br />
+ 19-21, 50 kr<br />
+ </td>
+ </tr>
+ </table>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/nxml-indent.el b/emacs.d/nxhtml/tests/in/nxml-indent.el
new file mode 100644
index 0000000..fc17d1b
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/nxml-indent.el
@@ -0,0 +1 @@
+(nxml-scan-element-backward 6407 nil 2407)
diff --git a/emacs.d/nxhtml/tests/in/nxml-indent.html b/emacs.d/nxhtml/tests/in/nxml-indent.html
new file mode 100644
index 0000000..db82964
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/nxml-indent.html
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>
+ Kimpro Malmö &amp; Sydsverige - AKTUELLT I MALMÖ
+ </title>
+ <link href="textmall.css" rel="stylesheet" type="text/css" />
+ <link href="layout.css" rel="stylesheet" type="text/css" />
+ </head>
+ <body>
+ <div class="kolumn1">
+ <span class="rubrik">Aktuellt våren 2008</span><br />
+ <i>Välkommen till dansens magiska universum!</i><br />
+ Här i kalendariet kan du se vad som händer i kimprosammanhang
+ just nu. De arrangemang med rosa botten är utöver våra
+ vanliga söndags-träffar i Malmö. Vill du veta mer om de olika
+ verksamheterna, ta en titt under <u><a href=
+ "index_verksamhet.html" target="index3s">Verksamhet</a>.
+ <b>OBS!</b> Notera att vi bytt danstid till kl 19-21! Detta
+ gäller endast en period nu i vår.<br />
+ <br /></u><b>Mars</b>
+ <table width="370" cellspacing="5">
+ <!--
+ <tr>
+ <td class="kalendariecell_special">
+ <img src="grafik/aktuelltbild_januari.jpg" border=0><br>
+ <i>Några av oss som dansar i Malmö</i><br>
+
+<span class="mellanrubrik">
+<br>
+<b>OBS: Ny tid!</b><br></span>
+Vi har ny tid för dansen på söndagar! 19-21 är nya tiden som gäller en tid framöver. <br>
+<br>
+
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 6 Januari<br>
+<span class="mellanrubrik">
+Grundklass & Jam</span><br>
+Årets första nybörjarintro! Kl. 17-19, 30 kr.
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 13 Januari<br>
+<span class="mellanrubrik">
+Introduktion & Jam</span><br>
+Kl. 17-19, 30 kr.
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 20 Januari<br>
+<span class="mellanrubrik">
+Introduktion & Jam</span><br>
+Kl. 17-19, 30 kr.
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 27 Januari<br>
+<span class="mellanrubrik">
+Introduktion & Jam</span><br>
+Kl. 17-19, 30 kr.
+</td>
+</tr>
+
+<tr>
+<td class="kalendariecell_special">
+<b>23-24 februari</b><br>
+<span class="mellanrubrik">WORKSHOP I AKROBATIK
+FÖR KONTAKTIMPROVISATÖRER</span><br>
+<br>
+Två parakrobater, Sofia och Rebecka, bosatta i Frankrike kommer till
+Malmö
+för att hålla en workshop speciellt för Kimpro Malmö!
+Workshopen kommer handla om hur man kan använda akrobatik i
+kontaktimprovisation. Inga förkunskaper i akrobatik behövs.<br>
+<br>
+23-24/2, kl.13-16 båda dagarna.<br>
+Kostnad: 350 kr.<br>
+Betalas senast den 21/2 till plusgirokonto: 1136904-8, Nordea,
+skriv: akro + namn.<br>
+Plats: meddelas senare.<br>
+Anmälan senast 19/2 till Clara, claravara00@yahoo.se<br>
+<br>
+Begränsat antal platser. Först till kvarn!<br>
+<br>
+<br>
+Sofia och Rebecka har arbetat tillsammans sedan år 2000. De träffades
+på Nordens dåvarande enda cirkusgymnasium i Gävle och utbildade sig
+sedan i Köpenhamn på AFUK, Akademiet för Utaemet Kreativitet -
+Artistlinien, med parakrobatik som huvuddiciplin. Sedan följde en
+treårig
+utbildning" Centre des Arts du Cirque de Lomme-Et vous trouvez ca
+drole!!!" i Lille, Frankrike. 2003 startade de nycirkusföretaget
+"Stint"
+tillsammans och de jobbar nu som frilansande cirkusartister främst i
+Frankrike.<br>
+<br>
+Med Rebecka som överman och Sofia som underman kör de både liggande och
+stående parakrobatik, spänningsövningar, huvud- och handhandbalanser.
+Tillsammans har de jobbat ihop flera olika akter á 5 minuter. Däribland
+hittar man kvinnlig styrka och pur pondus, komisk vardagstristess,
+hisnande teknik och tyngdpunkt i relationerna mellan människor och
+samhällets uppochned vända verklighet, ur ett verkligt uppochnedvänt
+perspektiv. Sedan år 2006 har fokuset flyttats mer och mer åt
+improvisationshållet, parakrobatikimprovisation i samarbete med fri
+improviserad musik och kontaktimprovisation.<br>
+<a href="http://www.stint.nu" target=blank><u>www.stint.nu</u></a><br>
+</td>
+</tr>
+<tr>
+<td class="kalendariecell">
+Söndag 24 Februari<br>
+<span class="mellanrubrik">
+Musikjam!</span><br>
+kl 19-21, 30 kr<br>
+<br>
+Denna söndag kommer inga inhyrda musiker till jammet,
+utan då det är vi själva som står för musiken!<br>
+<br>
+Så alla som kan och vill -ta med er instrument eller
+andra ljudframbringande prylar. Att använda sin röst går förståss
+också bra.<br>
+<br>
+Vill man inte musisera så dansar man som vanligt.
+(..och därför kostar det bara 30 kr, då vi inte har några musiker som
+ska betalas)<br>
+<br>
+VÄLKOMNA!
+</td>
+</tr>
+ -->
+ <tr>
+ <td class="kalendariecell">
+ Söndag 2 Mars<br />
+ <span class="mellanrubrik">Nybörjarintroduktion &amp;
+ Jam med Karin R och Jenny</span><br />
+ Kl. 19-21, 30 kr.
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 9 Mars<br />
+ <span class="mellanrubrik">Blind fold jam - jam med
+ ögonbindel!</span><br />
+ ... med Sofi och Tove. Kl 19-21, 30 kr<br />
+ På ett blind fold jam dansar man med ögonen förbundna,
+ för att öka känsligheten, lyssnandet och samspelet. Det
+ är också ett sätt att försöka komma förbi
+ föreställningar man (medvetet eller omedvetet) har runt
+ vem man väljer att dansa med. Det blir i slutändan en
+ spegling till en själv om de val man gör på dansgolvet,
+ där kroppen denna gång får bestämma i stället för
+ huvudet. Vi inleder som vanligt med en introduktion.
+ Tag gärna med egen ögonbindel!<br />
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 16 Mars<br />
+ <span class="mellanrubrik">Introduktion och
+ jam</span><br />
+ 19-21, 30 kr<br />
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen 23 Mars<br />
+ <span class="mellanrubrik">Ingenting här för då är vi
+ på NIM i Köpenhamn!
+ <!-- Introduktion och jam</span><br> -->
+ <!-- 19-21, 30 kr<br> --></span>
+ </td>
+ </tr>
+ <tr>
+ <td class="kalendariecell">
+ Söndagen den 30:e<br />
+ <span class="mellanrubrik">Kort introduktion och
+ Livejam!!</span><br />
+ 19-21, 50 kr<br />
+ </td>
+ </tr>
+ </table>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/only-html.html b/emacs.d/nxhtml/tests/in/only-html.html
new file mode 100644
index 0000000..7b297dd
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/only-html.html
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ </head>
+ <body>
+ For testing fontification.
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/only-php.php b/emacs.d/nxhtml/tests/in/only-php.php
new file mode 100644
index 0000000..ef54982
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/only-php.php
@@ -0,0 +1,10 @@
+<?php
+include 'header.php';
+if (dff) {
+ thank();
+ // Bad indentation on next line?
+ }
+for (;;) {
+ you();
+}
+?>
diff --git a/emacs.d/nxhtml/tests/in/pavel-071116.djhtml b/emacs.d/nxhtml/tests/in/pavel-071116.djhtml
new file mode 100644
index 0000000..1476f3a
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/pavel-071116.djhtml
@@ -0,0 +1,31 @@
+ <html>
+{% extends "base.html" %}
+<head>
+<title>Muzikanti z lekce 4</title>
+</head>
+<body>
+<table>
+some text not within django block
+{# some comment else #}
+{% for muzikant in people %}
+<tr>
+<td>
+{{ muzikant.name }}
+<b>
+{% comment %}
+something else
+{% if muzikant.nemamezeru %}*{% endif %} {% endcomment %}
+</b>
+</td>
+<td>
+<i {% if muzikant.ma_duraz %} style="font-weight: bold;"{% else %}{% endif %}>
+{{ muzikant.genre|rjust|lower }}
+</i>
+</td>
+</tr>
+{% endfor %}
+</table>
+{% get_current_time "%Y-%M-%d %I:%M %p" as my_current_time %}
+<p>The current time is {{ my_current_time }}.</p>
+</body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/php-parseable.php b/emacs.d/nxhtml/tests/in/php-parseable.php
new file mode 100644
index 0000000..590e4f6
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/php-parseable.php
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ </head>
+ <body>
+ <img alt="ALT" src="<?php some_code("txt"); ?>" />
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/question43320.html b/emacs.d/nxhtml/tests/in/question43320.html
new file mode 100644
index 0000000..3ec0721
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/question43320.html
@@ -0,0 +1,35 @@
+<table>
+<tr>
+<td>
+<table>
+<tr>
+<td>Hello</td>
+</tr>
+<?php
+for ($i=1;$i<5; $i++) {
+if (1) {
+}
+if (1) {
+if (1) {
+if (1) {
+?>
+<tr>
+<td>
+<p>the brace below (should have 2 spaces in front of it!)</p>
+</td>
+</tr>
+<?php
+}
+}
+$foo = "test".bar;
+for ($i=1;$i<5; $i++) {
+if () {
+}
+}
+}
+}
+?>
+</table>
+</td>
+</tr>
+</table>
diff --git a/emacs.d/nxhtml/tests/in/question44504-folding.html b/emacs.d/nxhtml/tests/in/question44504-folding.html
new file mode 100644
index 0000000..8ecb7ce
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/question44504-folding.html
@@ -0,0 +1,28 @@
+<table>
+
+
+<!--M&#279;nesio pasirinkimas -->
+
+<tr>
+ <td width='50' colspan='1' class='men-met'>
+ <input type='button' value=' < ' onClick='goLastMonth(<?php echo date("t", strtotime("$year1-$month1-$day1")).", ".$month . ", " . $year.", ".date("w", strtotime("$year-$month-$day1")); ?>)' />
+ </td>
+ <td width='250' colspan='5' class='men-met'>
+ <span class='title'><?php echo $men . " " . $year; ?></span><br />
+ </td>
+ <td width='50' colspan='1' align='right' class='men-met'>
+ <input type='button' value=' > ' onClick='goNextMonth(1, <?php echo $month . ", " . $year.", ".date("w", strtotime("$year2-$month2-$day1")); ?>)' />
+ </td>
+</tr>
+
+<!-- Antrašt&#279; su savait&#279;s dienom -->
+<tr>
+ <td class='head' >Pir</td>
+ <td class='head' >Ant</td>
+ <td class='head' >Tre</td>
+ <td class='head' >Ket</td>
+ <td class='head' >Pen</td>
+ <td class='head' >Šeš</td>
+ <td class='head' style="color: red;" >Sek</td>
+</tr>
+</table>
diff --git a/emacs.d/nxhtml/tests/in/question49234.sh b/emacs.d/nxhtml/tests/in/question49234.sh
new file mode 100644
index 0000000..3596046
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/question49234.sh
@@ -0,0 +1,41 @@
+#!/bin/ksh
+. /bin/shared/.mkt.cfg
+
+
+STORE_TMP=/tmp/stores.txt
+cd /spool/xml
+
+rm -f $STORE_TMP
+
+bteq << EOF
+.SESSIONS 1
+.LOGON $UserId,$Password;
+
+.EXPORT DATA FILE "$STORE_TMP"
+select division_id,store_id,
+trim(store)||' '||trim(store_addr_line2_txt)||', '||
+trim(store_city)
+from stores
+where status_id='A'
+ and division_id in (517,1920,2445)
+order by division_id,store_city,store_id;
+
+.EXIT 0
+EOF
+
+perl <<EOF > $1
+print qq(<?xml version="1.0" encoding="utf-8"?>\n<stores>);
+open IN, '<$STORE_TMP';
+while (read IN,\$info, 12) {
+ my (\$div, \$s) = unpack 'x2 i i', \$info; # read binary nums
+ \$_ = <IN>; # Read store name
+ chop; # Remove newline
+ s/(\w+)/\u\L\$1/g; # Title case
+ s/&/&amp;/g; # Fix ampersands
+ s/"/&quot;/g; # Fix quotes
+ printf qq(<s d="%02d" i="%d" n="%s"/>\n),\$div,\$s,\$_;
+}
+print "</stores>";
+EOF
+
+rm $STORE_TMP
diff --git a/emacs.d/nxhtml/tests/in/rgr-030809-indexbody.php b/emacs.d/nxhtml/tests/in/rgr-030809-indexbody.php
new file mode 100644
index 0000000..0384b4d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/rgr-030809-indexbody.php
@@ -0,0 +1,57 @@
+
+<h1><div class="pagetitle"><?php echoMessage("website.title");?></div></h1>
+
+<img class="indeximage1" src="images/indeximage1.jpg"/>
+
+<div class="textcontainer latestnewscontainer">
+
+ <div class="indexspecialevent">
+ <?php $numrows=displaySpecialEvent("nextevent");?>
+ </div>
+
+ <div class="pubquizpreview">
+ <div>
+ <h3>
+ <?php echo createLink("pubquiz","pubquiz.comingnext");?>
+ </h3>
+ </div>
+ <div>
+ <?php previewEvents("pubquiz");?>
+ </div>
+ </div>
+
+ <div class="latestnewstitle">
+ <?php
+ echoMessage("index.latest.title");
+ ?>
+ </div>
+ <div class="latestnewsbody">
+ <?php echoMessage("index.latest.body");?>
+ <?php include("menu.php");?>
+ </div>
+</div>
+
+<div class="textcontainer" title="English Books Hamburg">
+
+ <div>
+ <?php echoMessage("index.about1");?>
+ </div>
+
+ <div>
+ <h2>
+ <?php echo createLink("general","index.whatsnew");?>
+ </h2>
+ </div>
+
+ <div>
+ <img class="newsimage" src="images/newsimage1.jpg"/>
+ </div>
+
+ <div>
+ <?php echoMessage("index.news.n1");?>
+ </div>
+ <div>
+ <?php echoMessage("index.news.about2");?>
+ </div>
+
+</div>
diff --git a/emacs.d/nxhtml/tests/in/rgr-080307.php b/emacs.d/nxhtml/tests/in/rgr-080307.php
new file mode 100644
index 0000000..0cc4616
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/rgr-080307.php
@@ -0,0 +1,2 @@
+<div src="hello"></div>
+<img alt="angry" src="hello.gif"/>
diff --git a/emacs.d/nxhtml/tests/in/rgr-080308-header-2.php b/emacs.d/nxhtml/tests/in/rgr-080308-header-2.php
new file mode 100644
index 0000000..e53ee01
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/rgr-080308-header-2.php
@@ -0,0 +1,56 @@
+<?php require_once("utils.php"); ?>
+
+<?php echo '<?xml version="1.0" encoding="utf-8"/?/>'; ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+
+ <link type="text/css" href="stylesheet.css" rel="stylesheet" title="Style Sheet" />
+ <link type="text/css" href="custom.css" rel="stylesheet" title="Style Sheet" />
+
+ <title><?php echoMessage("website.title")?></title>
+
+ <meta name="keywords" content="irish bar,irish pub,finnegans wake , hamburg"/>
+ <meta name="description" content="Finnegans Wake Irish Pub"/>
+
+ <style type="text/css">@import url(calendar-win2k-1.css);</style>
+ <script type="text/javascript" src="jscalendar-1.0/calendar.js"></script>
+ <script type="text/javascript" src="jscalendar-1.0/lang/calendar-en.js"></script>
+ <script type="text/javascript" src="jscalendar-1.0/calendar-setup.js"></script>
+
+
+</head>
+
+<body class="body" title="Irish Bar">
+
+ <div class="webcontainer">
+
+ <div class="headerbanner">
+ <img src="images/banner.gif" alt="Irish Bar"/>
+ </div>
+
+ <div class="logo">
+ <img src="images/logo.gif" alt="Irish Pubs"/>
+ </div>
+
+ <div>
+ <?php include("navigation.php");?>
+ </div>
+
+ <?php
+ if(isDemo()){
+ echo '<div class="demomode">';
+ echoMessage("admin.demo");
+ echo "</div>";
+ }
+
+ include("address.php");
+ include("sportpreview.php");
+
+ ?>
+
+ <div class="centercontainer" title="Irish Pubs Germany">
diff --git a/emacs.d/nxhtml/tests/in/rgr-080308-header.php b/emacs.d/nxhtml/tests/in/rgr-080308-header.php
new file mode 100644
index 0000000..e53ee01
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/rgr-080308-header.php
@@ -0,0 +1,56 @@
+<?php require_once("utils.php"); ?>
+
+<?php echo '<?xml version="1.0" encoding="utf-8"/?/>'; ?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+
+ <link type="text/css" href="stylesheet.css" rel="stylesheet" title="Style Sheet" />
+ <link type="text/css" href="custom.css" rel="stylesheet" title="Style Sheet" />
+
+ <title><?php echoMessage("website.title")?></title>
+
+ <meta name="keywords" content="irish bar,irish pub,finnegans wake , hamburg"/>
+ <meta name="description" content="Finnegans Wake Irish Pub"/>
+
+ <style type="text/css">@import url(calendar-win2k-1.css);</style>
+ <script type="text/javascript" src="jscalendar-1.0/calendar.js"></script>
+ <script type="text/javascript" src="jscalendar-1.0/lang/calendar-en.js"></script>
+ <script type="text/javascript" src="jscalendar-1.0/calendar-setup.js"></script>
+
+
+</head>
+
+<body class="body" title="Irish Bar">
+
+ <div class="webcontainer">
+
+ <div class="headerbanner">
+ <img src="images/banner.gif" alt="Irish Bar"/>
+ </div>
+
+ <div class="logo">
+ <img src="images/logo.gif" alt="Irish Pubs"/>
+ </div>
+
+ <div>
+ <?php include("navigation.php");?>
+ </div>
+
+ <?php
+ if(isDemo()){
+ echo '<div class="demomode">';
+ echoMessage("admin.demo");
+ echo "</div>";
+ }
+
+ include("address.php");
+ include("sportpreview.php");
+
+ ?>
+
+ <div class="centercontainer" title="Irish Pubs Germany">
diff --git a/emacs.d/nxhtml/tests/in/rgr-080308-indexbody.php b/emacs.d/nxhtml/tests/in/rgr-080308-indexbody.php
new file mode 100644
index 0000000..0384b4d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/rgr-080308-indexbody.php
@@ -0,0 +1,57 @@
+
+<h1><div class="pagetitle"><?php echoMessage("website.title");?></div></h1>
+
+<img class="indeximage1" src="images/indeximage1.jpg"/>
+
+<div class="textcontainer latestnewscontainer">
+
+ <div class="indexspecialevent">
+ <?php $numrows=displaySpecialEvent("nextevent");?>
+ </div>
+
+ <div class="pubquizpreview">
+ <div>
+ <h3>
+ <?php echo createLink("pubquiz","pubquiz.comingnext");?>
+ </h3>
+ </div>
+ <div>
+ <?php previewEvents("pubquiz");?>
+ </div>
+ </div>
+
+ <div class="latestnewstitle">
+ <?php
+ echoMessage("index.latest.title");
+ ?>
+ </div>
+ <div class="latestnewsbody">
+ <?php echoMessage("index.latest.body");?>
+ <?php include("menu.php");?>
+ </div>
+</div>
+
+<div class="textcontainer" title="English Books Hamburg">
+
+ <div>
+ <?php echoMessage("index.about1");?>
+ </div>
+
+ <div>
+ <h2>
+ <?php echo createLink("general","index.whatsnew");?>
+ </h2>
+ </div>
+
+ <div>
+ <img class="newsimage" src="images/newsimage1.jpg"/>
+ </div>
+
+ <div>
+ <?php echoMessage("index.news.n1");?>
+ </div>
+ <div>
+ <?php echoMessage("index.news.about2");?>
+ </div>
+
+</div>
diff --git a/emacs.d/nxhtml/tests/in/rr-090524-header.php b/emacs.d/nxhtml/tests/in/rr-090524-header.php
new file mode 100644
index 0000000..e966036
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/rr-090524-header.php
@@ -0,0 +1,76 @@
+<?php require_once("utils.php");?>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+
+<html>
+
+<?php
+ if ($_SESSION["CurrentLanguage"]==0){
+ $_SESSION["CurrentLanguage"]=$Default_Lang;
+ }
+?>
+
+ <head>
+
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
+
+ <style type="text/css">@import url(calendar-win2k-1.css);</style>
+ <script type="text/javascript" src="jscalendar-1.0/calendar.js"></script>
+ <script type="text/javascript" src="jscalendar-1.0/lang/calendar-en.js"></script>
+ <script type="text/javascript" src="jscalendar-1.0/calendar-setup.js"></script>
+
+ <link type="text/css" href="stylesheet.css" rel="stylesheet" title="Style Sheet" >
+ <style type="text/css"><?php echoMessage("admin.css.source");?> </style>
+
+ <link type="text/css" href="custom.css" rel="stylesheet" title="Style Sheet">
+ <link type="text/css" href="local.css" rel="stylesheet" title="Style Sheet">
+
+ <link type="text/css" href="print.css" rel="stylesheet" media="print">
+
+ <meta name="keywords" content='<?php echoMessage("header.keywords");?>'>
+ <meta name="description" content='<?php echoMessage("header.description");?>'>
+
+ <title><?php echoMessage("website.title")?></title>
+
+
+ </head>
+
+ <body class="body">
+ <div class="wc">
+ <table class="language">
+<tr>
+ <td>
+ <?php generateLanguageForm(true);?>
+ </td>
+ <td><a href="cyclelanguage"><img class="languageflag" src="flags/<?php echo getCurrentLanguage();?>" alt="<?php echoMessage("language.selectnext");?>" title="<?php echoMessage("language.selectnext");?>"></a></td>
+</tr>
+ </table>
+
+ <?php include("navigation.php");?>
+ <div class="ical">
+ <?php echoMessage("index.ical");?>
+ </div>
+
+ <div class="wb">
+
+ <?php
+
+ if(adminMode()){
+ echo '<div class="admincontrolcontainer clearfix">';
+ createNavigationLinks("navlinks",1);
+ echo '<div class="clear"></div>';
+ echo '</div>';
+ }
+
+ if(isDemo()){
+ echo '<div class="demomode">';
+ echoMessage("admin.demo");
+ echo "</div>";
+ }
+
+ ?>
+
+ <?php include("previews.php");?>
+
+ <div class="centercontainer clearfix">
diff --git a/emacs.d/nxhtml/tests/in/rr-090923-header.php b/emacs.d/nxhtml/tests/in/rr-090923-header.php
new file mode 100644
index 0000000..7f739eb
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/rr-090923-header.php
@@ -0,0 +1,101 @@
+<?php
+ require_once("utils.php");
+?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+ <?php if(!processLanguageURL())
+ {
+ if ($_SESSION["CurrentLanguage"]==0){
+ $_SESSION["CurrentLanguage"]=$Default_Lang;
+ }
+ }
+ ?>
+
+ <head>
+
+ <title><?php echo getMessage("website.title");?></title>
+
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+
+ <?php
+ if (AUTO_REFRESH_DELAY>0 && !adminMode())
+ echo '<meta http-equiv="refresh" content="'.AUTO_REFRESH_DELAY.'"/>';
+ ?>
+
+
+ <link type="text/css" href="jscalendar-1.0/calendar-win2k-1.css" rel="stylesheet" title="Style Sheet"/> <!-- indicate local copy -->
+ <script type="text/javascript" src="jscalendar-1.0/calendar.js"></script>
+ <script type="text/javascript" src="jscalendar-1.0/lang/calendar-en.js"></script>
+ <script type="text/javascript" src="jscalendar-1.0/calendar-setup.js"></script>
+
+
+ <link type="text/css" href="stylesheet.css" rel="stylesheet" title="Style Sheet" />
+ <link type="text/css" href="print.css" rel="stylesheet" media="print"/>
+
+ <!--[if lt IE 7]>
+ <link type="text/css" href="ie.css" rel="stylesheet" title="Style Sheet"/>
+ <link type="text/css" href="site-ie.css" rel="stylesheet" title="Style Sheet"/>
+ <![endif]-->
+
+
+ <link type="text/css" href="/custom/site.css" rel="stylesheet" title="Style Sheet"/> <!-- project custom -->
+ <style type="text/css"><?php echo htmlentities(getMessage("header.custom.css"));?> </style>
+
+
+<?php undercon();
+echoHeaderContent("keywords",curPageName());
+echoHeaderContent("description",curPageName());
+echoHeaderContent("verify-v1",curPageName());
+?>
+
+ <link rel="SHORTCUT ICON" href="favicon.ico"/>
+
+ <META NAME="AUTHOR" CONTENT="Richard G. Riley"/>
+ <meta name="copyright" content="Copyright Richard G. Riley 2009" />
+
+
+
+ </head>
+
+ <body id="body">
+
+ <div id="wcbg">
+
+ <div id="wc" class="clearfix">
+
+ <?php
+ checkWebLicense();
+ ?>
+
+ <?php
+ include("navigation.php");
+ ?>
+
+ <div id="wb">
+
+ <?php
+ if(isDemo()){
+ echo '<div class="demomode">';
+ echoMessage("admin.demo");
+ echo "</div>";
+ }
+ if(adminMode()){
+ echo '<div id="admincontrolcontainer">';
+ createNavigationLinks("navlinks",1);
+ echo '<div class="clear"></div>';
+ echo '</div>';
+ }
+ ?>
+
+ <div id="centercontainer">
+ <?php
+ if(messageMode()){
+ echo '<div class="editwebtitle">';
+ echoMessage("website.title");
+ echo '</div>';
+ }
+ ?>
+
diff --git a/emacs.d/nxhtml/tests/in/rr-address-090304.php b/emacs.d/nxhtml/tests/in/rr-address-090304.php
new file mode 100644
index 0000000..34cbe25
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/rr-address-090304.php
@@ -0,0 +1,4 @@
+<div class="addresscontainer" title="Hot Love Fan Mail">
+
+<a target="_self" href="/Site/Content/Exhibitors/exhibitors-welcome.aspx"><img height="100" border="0" width="170" vspace="7" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image21','','/site/images/intro_button_exhib_over.jpg',1)" id="Image21" name="Image21" alt="Exhibitors button" src="http://www.farnborough.com/site/images/intro_button_exhib_static.jpg"/></a>
+</div> \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/rr-address-nxhtml.err b/emacs.d/nxhtml/tests/in/rr-address-nxhtml.err
new file mode 100644
index 0000000..f06b0a0
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/rr-address-nxhtml.err
Binary files differ
diff --git a/emacs.d/nxhtml/tests/in/rr-min8.php b/emacs.d/nxhtml/tests/in/rr-min8.php
new file mode 100644
index 0000000..bf464f1
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/rr-min8.php
@@ -0,0 +1,6 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+
+<script type="text/javascript" src="jscalendar-1.0/calendar.js"></script>
+<script type="text/javascript" src="jscalendar-1.0/lang/calendar-en.js"></script>
diff --git a/emacs.d/nxhtml/tests/in/ryan-091104-literal.tpl b/emacs.d/nxhtml/tests/in/ryan-091104-literal.tpl
new file mode 100644
index 0000000..64c9d26
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/ryan-091104-literal.tpl
@@ -0,0 +1,148 @@
+{include file="library/header.tpl"}
+
+{* comment *}
+
+{literal}
+<script language="JavaScript" type="text/javascript">
+function validate_form(f){
+ allElements = f.getInputs('text');
+ var get_time = /^times\[(.+)\]$/;
+ var get_date = /^dates\[(.+)\]$/;
+ for(var index=0; index < allElements.length; ++index){
+ var item = allElements[index];
+ if(get_time.test(item.name)){
+ if($F(item)){
+ var key = get_time.exec(item.name)
+ var sibling_date = 'dates[' + key[1] + ']';
+ if(! $F(sibling_date)){
+ alert("Date is required if entering a manual time!");
+ $(sibling_date).addClassName('problem');
+ return false;
+ }
+ }
+
+ }
+ }
+ else if(get_date.test(item.name)){
+ if($F(item)){
+ var key = get_date.exec(item.name)
+ var sibling_time = 'times[' + key[1] + ']';
+ if(! $F(sibling_time)){
+ alert("Time is required if entering a manual date!");
+ $(sibling_time).addClassName('problem');
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+function validate_date( el )
+{
+ var date = /^\d\d\d\d-\d\d-\d\d$/;
+ if ( !date.test(el.value) ) {
+ alert('The date you have entered is not properly formatted (yyyy-mm-dd). Please re-enter it.');
+ el.value='';
+ el.focus();
+ el.className='problem';
+ return false;
+ }
+ el.className='';
+ return true;
+}
+
+function validate_time( el )
+{
+ var time = /^\d\d:\d\d$/;
+ if ( !time.test(el.value) ) {
+ alert('The time you have entered is not properly formatted (hh:mm). Please re-enter it.');
+ el.value='';
+ el.focus();
+ el.className = 'problem';
+ return false;
+ }
+ el.className = '';
+ return true;
+}
+</script>
+
+<style type="text/css">
+ foo: {
+ font-weight: bold;
+ color: #F00;
+ }
+</style>
+{/literal}
+
+{if $containers|@count }
+
+<form name="test" method=post onsubmit="return validate_form(this);">
+<input type="hidden" name="date" value="{$smarty.request.date}">
+<input type="hidden" name="page_name" value="{$page_name}" />
+
+<table frame="void" bordercolor="#000000" rules="cols" class="data" style="float:center;">
+<thead>
+<tr class="sortHeader">
+ {if $goahead}
+ <th onclick="sortTable(this)">{t}Date{/t}<br /><span class="ex">YYYY-MM-DD</span></th>
+ {/if}
+ {if $goahead}
+ <th onclick="sortTable(this)">{t}Time{/t}<br /><span class="ex">HH:MM</span></th>
+ {/if}
+
+ <th onclick="sortTable(this)">{t}Quantity{/t}</th>
+</tr>
+</thead>
+
+{foreach from=$widgets item="widget"}
+<tbody class="{cycle values=",highlight}" ondblclick="return insertHeader(this);">
+ {if $widget->date != $today}
+ {assign var=newday value=true}
+ {assign var=today value=$widget->date}
+ {else}
+ {assign var=newday value=false}
+ {/if}
+
+<tr class="{if $newday}group{/if}">
+ {if $goahead}
+ {if $widget->activity_allowed}
+ <td class="ctext"><input type="text" value="" onchange="validate_date(this, this.form );" name="dates[{$widget->widget_id_for_web}]" id="dates[{$widget->widget_id_for_web}]" size=10 maxlength=10></td>
+ {else}
+ <td></td>
+ {/if}
+ {/if}
+
+ {if $goahead}
+ {if $widget->activity_allowed}
+ <td class="ctext"><input type="text" value="" onchange="validate_time(this, this.form);" name="times[{$widget->widget_id_for_web}]" id="times[{$widget->widget_id_for_web}]"size=5 maxlength=5></td>
+ {else}
+ <td></td>
+ {/if}
+ {/if}
+
+ <td>{$widget->quantity}</td>
+</tr>
+</tbody>
+{/foreach}
+</table>
+
+<hr />
+ {if $goahead}
+ <br />
+ <b>{t}Note{/t}:</b> {t}Changes may not occur immediately.{/t}
+ <br />
+ <input type=submit value="Update Widgets">
+ {/if}
+
+ </form>
+{else}
+ {t}There are no widgets on this day{/t}
+{/if}
+
+{literal}
+<hr/>test
+
+<p>Paragraph</p>
+{/literal}
+
+{include file="library/footer.tpl"}
diff --git a/emacs.d/nxhtml/tests/in/ryan-091111-wrong-side.tpl b/emacs.d/nxhtml/tests/in/ryan-091111-wrong-side.tpl
new file mode 100644
index 0000000..51164a8
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/ryan-091111-wrong-side.tpl
@@ -0,0 +1,18 @@
+<script language="javascript" type="text/javascript">
+//<!--
+{literal}
+$('account').observe("change", function(event) {should_get_account_data(
+'first', 'acct' );});
+$('desc').observe("change", function(event) {should_get_account_data(
+'first', 'name' );});
+{/literal}
+{if $autocomplete}
+{literal}
+document.observe("dom:loaded", function(event)
+{auto_complete_customers('first', 'acct');});
+document.observe("dom:loaded", function(event)
+{auto_complete_customers('first', 'name');});
+{/literal}
+{/if}
+//-->
+</script>
diff --git a/emacs.d/nxhtml/tests/in/schemas.xml b/emacs.d/nxhtml/tests/in/schemas.xml
new file mode 100644
index 0000000..09b0bac
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/schemas.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
+</locatingRules>
diff --git a/emacs.d/nxhtml/tests/in/sd-080803-test.php b/emacs.d/nxhtml/tests/in/sd-080803-test.php
new file mode 100644
index 0000000..e44ccc6
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/sd-080803-test.php
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <style type="text/css">
+ table {
+ border-collapse: collapse;
+ }
+ </style>
+ </head>
+ <body>
+ <h1><?= $title ?></h1>
+ </body>
+</html>
+
diff --git a/emacs.d/nxhtml/tests/in/senny-091118.htm b/emacs.d/nxhtml/tests/in/senny-091118.htm
new file mode 100644
index 0000000..dda2fe3
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/senny-091118.htm
@@ -0,0 +1,247 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<title>PostFinance - Home</title>
+<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
+<meta http-equiv="Content-Style-Type" content="text/css" />
+<meta name="description" content="" />
+<meta name="keywords" content="" />
+<meta name="language" content="en" />
+<meta name="copyright" content="Copyright (c) by PostFinance" />
+<meta name="robots" content="all" />
+<link rel="canonical" href="http://www.postfinance.ch/pf/content/en" />
+
+
+
+<meta name="WT.pf_nav_L1" content="HOMEPAGE" />
+<meta name="WT.pf_nav_L2" content="" />
+<meta name="WT.pf_nav_L3" content="" />
+
+
+<!-- WT meta tag library 0.0.30 -->
+<!-- Execution time: 0ms -->
+<script type="text/javascript">
+var aWtAdviews = new Array();
+var aWtTags = new Array();
+</script>
+
+
+<link rel="stylesheet" href="./../../../staticcontent/css/styles.css" type="text/css" media="screen,print" />
+
+<!--[if IE 6]>
+<link rel="stylesheet" href="./../../../staticcontent/css/styles_ie6.css" type="text/css" media="screen,print" />
+<![endif]-->
+
+<!--[if IE 7]>
+<link rel="stylesheet" href="./../../../staticcontent/css/styles_ie7.css" type="text/css" media="screen,print" />
+<![endif]-->
+
+<link rel="stylesheet" href="./../../../staticcontent/css/bok.css" type="text/css" media="screen,print" />
+<link rel="stylesheet" href="./../../../staticcontent/css/print.css" type="text/css" media="print" />
+
+
+
+
+</head><body>
+
+ <!-- WT1 start -->
+<script type="text/javascript" src="./../../../staticcontent/js/webtrends.js"></script>
+<noscript>
+<img alt="" style="border:none;" name="DCSIMG" width="1" height="1" src="/dcsez1c8510000g4ydy8x63gm_3g9z/njs.gif?dcsuri=/nojavascript&amp;WT.js=No&amp;WT.tv=8.6.2"/>
+</noscript>
+<script type="text/javascript">
+<!--
+var _tag=new WebTrends();
+_tag.domain = window.location.hostname;
+_tag.dcsid = "dcsez1c8510000g4ydy8x63gm_3g9z";
+_tag.fpcdom = ".postfinance.ch";
+_tag.dcsGetId();
+//-->
+</script>
+<!-- WT1 end -->
+
+
+
+
+
+
+
+
+
+<script type="text/javascript" src="./../../../staticcontent/js/old/util.js"></script>
+<script type="text/javascript" src="./../../../staticcontent/js/old/AJAXService.js"></script>
+<script type="text/javascript" src="./../../../staticcontent/js/old/engine.js"></script>
+
+<script type="text/javascript">document.documentElement.className+=" js";</script>
+<script type="text/javascript" src="./../../../staticcontent/js/jquery-1.2.6.min.js"></script>
+<script type="text/javascript" src="./../../../staticcontent/js/jquery.bgiframe.pack.js"></script>
+<script type="text/javascript" src="./../../../staticcontent/js/definitions.js"></script>
+<script type="text/javascript" src="./../../../staticcontent/js/main.js"></script>
+<script type="text/javascript" src="./../../../staticcontent/js/tabbed.js"></script>
+<script type="text/javascript" src="./../../../staticcontent/js/aria.js"></script>
+<script type="text/javascript" src="./../../../staticcontent/js/tooltip2.js"></script>
+
+
+
+<script type="text/javascript">
+//<![CDATA[
+// SubContentGroup
+_tag.WT.cg_s='_home';
+//]]>
+</script>
+
+
+<div id="page">
+ <div id="header" class="header-en">
+ <!-- Skip Navigation Start -->
+
+
+
+<h1>Navigation of PostFinance.ch</h1>
+<ul id="skipLinks">
+ <li>
+ <a accesskey="1" href="#navTopRoot" title="Directly to the navigation">Navigation</a>
+ </li>
+ <li>
+ <a accesskey="2" href="#mainContent" title="Directly to the content">Content</a>
+ </li>
+ <li>
+ <a accesskey="3" href="/pf/ref/de/seg/bridge/nav/efinoverview.html" title="Directly to E-Finance">E-Finance</a>
+ </li>
+ <li>
+ <a accesskey="4" href="/pf/content/en/service/sitemap.html" title="Directly to the sitemap">Sitemap</a>
+ </li>
+</ul>
+
+
+
+
+
+<!-- Logo/Claim Start --><a accesskey="0" href="/pf/content/en.html" id="pfLogo">PostFinance, Swiss Post</a><p id="pfClaim" class="pfClaim-en"><strong>Surpassing support</strong></p>
+<!-- Logo/Claim End -->
+
+ <!-- Skip Navigation End -->
+
+ <h2>Language, tools and important links</h2>
+ <!-- Language Selector Start -->
+<div id="languageSelector"><ul><li class="first-child "><a href="/pf/content/de.html"><abbr xml:lang="de">de</abbr></a></li><li ><a href="/pf/content/fr.html"><abbr xml:lang="fr">fr</abbr></a></li><li ><a href="/pf/content/it.html"><abbr xml:lang="it">it</abbr></a></li><li class="selected"><a href="/pf/content/en.html"><abbr xml:lang="en">en</abbr></a></li></ul></div>
+<!-- Language Selector End -->
+
+
+
+
+ <!-- globalNavRoot Start -->
+ <div id="globalNavRoot">
+
+
+
+
+<div class="globalLinks"><p><a href="http://www.post.ch/en/" rel="external">Swiss Post</a></p>
+
+
+<ul class="serviceLinks"><li class="first-child"><a href="/pf/content/en/service/contact.html">Contact</a></li><li><a href="/pf/content/en/service/sitemap.html">Sitemap</a></li></ul></div>
+ </div>
+ <!-- globalNavRoot End -->
+
+ <!-- Suche start --><form action="/pf/content/en/single/search.html" method="get" id="searchform"><div id="search"><label for="searchfield">Search</label><input value="" maxlength="2048" type="text" class="search-field" name="query" id="searchfield" /><input value="Search" type="submit" class="search-button" name="searchsubmit" /><input value="/content/pf/content/en" type="hidden" name="nav" /></div></form><!-- Suche end -->
+
+
+
+<!-- Topnavigation start --><div id="topNav"><a name="navTopRoot"></a><h2 class="hd">Main navigation</h2><ul class="top-nav-links"><li><a href="/pf/content/en/seg/priv.html">Private customers</a></li><li><a href="/pf/content/en/seg/biz.html">Business customers</a></li><li><a href="/pf/content/en/seg/about.html">About us</a></li></ul>
+ <div class="user-login">
+
+ </div>
+</div>
+<!-- end navTop -->
+
+ </div>
+ <div id="mainArea">
+ <div class="hp-split">
+ <div id="content">
+ <div class="mood-home" style="background: transparent url(/content/pf/content/en.parsys-0001-Image.0.0.0.mainImage1.jpg) no-repeat scroll 0 0; z-index: 100000;">
+<span class="hidden">
+ <a href="https://e-finance.postfinance.ch/ef/secure/html/">
+ E-finance login
+ </a>
+</span>
+</div>
+
+<div class="tri-split">
+ <div class="col col0">
+ <div class="mod"><a name="mainContent"></a>
+ <h2 class="hd"><a href="/pf/content/en/seg/priv.html" rel="nofollow" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Private');">Private customers</a></h2>
+ <div class="bd">
+ <p>Everything you need <br/>for your private finances.</p>
+ <ul class="list-links"><li><a href="/pf/content/en/seg/priv/prod.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Products_priv');">Products<span class="hidden">Private customers</span></a></li><li><a href="/pf/content/en/seg/priv/customer.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Customer_priv');">Customer Service<span class="hidden">Private customers</span></a></li><li><a href="/pf/ref/de/seg/bridge/nav/efinoverview.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_E-finance');">E-finance</a></li><li><a href="/pf/content/en/seg/priv/etrade.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_E-trading');">E-trading</a></li></ul>
+ </div>
+ </div>
+ </div>
+ <div class="col col1">
+ <div class="mod">
+ <h2 class="hd"><a href="/pf/content/en/seg/biz.html" rel="nofollow" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Business');">Business customers </a></h2>
+ <div class="bd">
+ <p>Everything you need <br/>for your business finances.</p>
+ <ul class="list-links"><li><a href="/pf/content/en/seg/biz/product.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Products_biz');">Products<span class="hidden">Business customers </span></a></li><li><a href="/pf/content/en/seg/biz/customer.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Customer_biz');">Customer Service<span class="hidden">Business customers </span></a></li><li><a href="/pf/content/en/seg/biz/offer/startup.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_startup');">Company founder and start-up company<span class="hidden">Business customers </span></a></li><li><a href="/pf/content/en/seg/biz/offer/sbiz.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_sbiz');">Small and medium-sized enterprises</a></li><li><a href="/pf/content/en/seg/biz/offer/smbiz.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_smbiz');">Medium-sized/large businesses</a></li><li><a href="/pf/content/en/seg/biz/offer/publicentity.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Public');">Public entities</a></li><li><a href="/pf/content/en/seg/biz/offer/club.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Associations');">Associations</a></li><li><a href="/pf/content/en/seg/biz/offer/bank.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Banks');">Banks</a></li></ul>
+ </div>
+ </div>
+ </div>
+ <div class="col col2">
+ <div class="mod">
+ <h2 class="hd"><a href="/pf/content/en/seg/about.html" rel="nofollow" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Aboutus');">About us</a></h2>
+ <div class="bd">
+ <p>Key facts about PostFinance.</p>
+ <ul class="list-links"><li><a href="/pf/content/en/seg/about/pf.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Company');">Company</a></li><li><a href="/pf/content/en/seg/about/media.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Media');">Media</a></li><li><a href="/pf/content/en/seg/about/job.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Jobs');">Jobs</a></li><li><a href="/pf/content/en/seg/about/event.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_Events');">Events</a></li></ul>
+ </div>
+ </div>
+ </div>
+</div>
+ </div>
+
+ <!-- serviceArea Start -->
+ <div id="serviceArea">
+ <h1>Related content</h1>
+ <div class="mod nofoot"><h2 class="hd">E-Services</h2><div class="bd"><ul class="list-links"><li><a href="/pf/ref/de/seg/bridge/nav/efinloginhomeen.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_le_home_LoginE-Finance');">Login E-Finance</a></li><li><a href="/pf/ref/de/seg/bridge/etrade/loginen.html" title="" onmousedown="_tag.dcsAdTrack('WT.ac', '_li_home_LoginE-Trading');">Login E-Trading</a></li></ul></div></div>
+ <!-- Kudicontainer -->
+ <div id="AJAX_Teaser" lang="en"><div class="mod nofoot teaser one-click"><h2 class="hd">
+<a href="/pf/content/en/seg/priv/prod/eserv/etrade/promotion.html" title="More information about the offer." onmousedown="_tag.dcsAdTrack('WT.ac', 'PK952_APK_TE_A_EN_L0_A_Homepage_1_en', 'WT.mc_id', 'PK952', 'WT.mc_ev', 'click');">E-trading</a></h2>
+<p class="bd">
+<a href="/pf/content/en/seg/priv/prod/eserv/etrade/promotion.html" title="More information about the offer." onmousedown="_tag.dcsAdTrack('WT.ac', 'PK952_APK_TE_A_EN_L0_A_Homepage_1_en', 'WT.mc_id', 'PK952', 'WT.mc_ev', 'click');"><img src="/staticcontent/teasers/content/_etc_medialib_pf_de_teaser_camp_2009_pk952_Par_0009_Image.jpg" alt="" /><span class="hidden"> More information about the offer.</span>
+<span>No brokerage fees until the end of January 2010.*
+&nbsp;<em>More</em></span></a></p></div><div class="mod nofoot teaser one-click"><h2 class="hd">
+<a href="/pf/content/en/seg/bcase/lohnkonto.html" title="More information on the salary account" onmousedown="_tag.dcsAdTrack('WT.ac', 'PK920_APK_TE_A_EN_L0_A_Homepage_2_en', 'WT.mc_id', 'PK920', 'WT.mc_ev', 'click');">Competition</a></h2>
+<p class="bd">
+<a href="/pf/content/en/seg/bcase/lohnkonto.html" title="More information on the salary account" onmousedown="_tag.dcsAdTrack('WT.ac', 'PK920_APK_TE_A_EN_L0_A_Homepage_2_en', 'WT.mc_id', 'PK920', 'WT.mc_ev', 'click');"><img src="/staticcontent/teasers/content/_content_teaser_content_en_seg_running_kampagnen_ci_pk920_pfch_parsys_0001_Image.jpg" alt="" /><span class="hidden"> More information on the salary account</span>
+<span>Double your income: switch your salary account to PostFinance.
+&nbsp;<em>More</em></span></a></p></div>
+<script type="text/javascript"> aWtTags[aWtTags.length] = "WT.pf_nav_L1"; aWtTags[aWtTags.length] = "HOMEPAGE"; aWtTags[aWtTags.length] = "WT.ad"; aWtTags[aWtTags.length] = "PK952_APK_TE_A_EN_L0_A_Homepage_1_en;PK920_APK_TE_A_EN_L0_A_Homepage_2_en"; aWtTags[aWtTags.length] = "WT.pf_logstatus"; aWtTags[aWtTags.length] = "anonym"; aWtTags[aWtTags.length] = "WT.pf_segment"; aWtTags[aWtTags.length] = "anonym"; aWtTags[aWtTags.length] = "WT.cg_n"; aWtTags[aWtTags.length] = "PF HOME anonym"; aWtTags[aWtTags.length] = "WT.pf_pagetype"; aWtTags[aWtTags.length] = "L0_A_Homepage"; </script></div>
+ </div>
+
+ </div>
+ </div>
+</div>
+
+
+<!-- Footer start --><div id="footer"><h1>References</h1><ul id="footerLinks"><li><a href="/pf/content/en/footer/access.html">Accessibility</a></li><li><a href="/pf/content/en/footer/legal.html">Legal disclaimer</a></li><li><a href="/pf/content/en/footer/cond.html">Prices/Conditions/GTC</a></li><li><a href="/pf/content/en/footer/impressum.html">Publishing details</a></li></ul><!-- Footernavigation end -->
+<p>Copyright (c) 2009 by PostFinance. All rights reserved.</p>
+</div><!-- Footer end -->
+
+
+
+
+
+
+
+
+
+
+<script type="text/javascript">
+ if (typeof(_tag) != "undefined") {
+ _tag.dcsCollect();
+ }
+</script>
+
+
+
+</body>
+</html>
+
diff --git a/emacs.d/nxhtml/tests/in/sheit-2007-12-26.php b/emacs.d/nxhtml/tests/in/sheit-2007-12-26.php
new file mode 100644
index 0000000..8aa97cc
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/sheit-2007-12-26.php
@@ -0,0 +1,9 @@
+<?php
+/**
+ *
+ * @param string $name
+ */
+ public function setName($name) {
+ $this->name = $name;
+ }
+?>
diff --git a/emacs.d/nxhtml/tests/in/short-tags.php b/emacs.d/nxhtml/tests/in/short-tags.php
new file mode 100644
index 0000000..a297e03
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/short-tags.php
@@ -0,0 +1,3 @@
+<? $foo=1 ?>, <?= "bla" ?>
+ instead of
+<?php $foo=1 ?>, <?php echo "bla" ?>
diff --git a/emacs.d/nxhtml/tests/in/single-question-sign.html b/emacs.d/nxhtml/tests/in/single-question-sign.html
new file mode 100644
index 0000000..bb7d6fc
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/single-question-sign.html
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ </head>
+ <body>
+ <?>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/ssjs.ssjs b/emacs.d/nxhtml/tests/in/ssjs.ssjs
new file mode 100644
index 0000000..501ed68
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/ssjs.ssjs
@@ -0,0 +1,9 @@
+<p id="msg"></p>
+<script runat="server">
+ var nme = document.createTextNode(
+ "Hello my name is Jaxer.");
+ var para = document.getElementById("name");
+ para.appendChild(nme);
+</script>
+
+<p>Hello, my name is <% response.name %>.</p>
diff --git a/emacs.d/nxhtml/tests/in/string-bug.php b/emacs.d/nxhtml/tests/in/string-bug.php
new file mode 100644
index 0000000..3b25c9f
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/string-bug.php
@@ -0,0 +1 @@
+ <?= "bla" ?>
diff --git a/emacs.d/nxhtml/tests/in/style=.html b/emacs.d/nxhtml/tests/in/style=.html
new file mode 100644
index 0000000..e005fad
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/style=.html
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ </head>
+ <body>
+ <p style="">
+ </p>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/style=string-font.html b/emacs.d/nxhtml/tests/in/style=string-font.html
new file mode 100644
index 0000000..e5dd87d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/style=string-font.html
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>News and Notes about nXhtml</title>
+ </head>
+ <body>
+ <p id="hadron-bugs" style="margin-top:1em;">Thanks for testing!</p>
+
+ <p id="state-of-the-art" style="margin-top:1em;
+ background-color: #00fa9a;
+ background-color: #20b2aa;
+ padding: 0.5em;
+ ">The State of the Art</p>
+ <p id="something"></p>
+ <p id="something" style="background-color: #54ff9f; padding: 0.5em"></p>
+ <p id="something"></p>
diff --git a/emacs.d/nxhtml/tests/in/svg.svg b/emacs.d/nxhtml/tests/in/svg.svg
new file mode 100644
index 0000000..1b24f33
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/svg.svg
@@ -0,0 +1 @@
+something
diff --git a/emacs.d/nxhtml/tests/in/temp2.php b/emacs.d/nxhtml/tests/in/temp2.php
new file mode 100644
index 0000000..34271ba
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/temp2.php
@@ -0,0 +1,48 @@
+<?php
+/* We must use this header to be correct and for the css validator to
+ find our stylesheet without us having to provide a fully qualified
+ path (address) to it. */
+header("Content-type:application/xhtml+xml; charset=utf-8");
+echo '<'.'?xml version="1.0" encoding="utf-8"?'.'>';
+?>
+ <body>
+ <div id="container">
+ <div id="header">Top area</div>
+ <div id="left-menu">
+ <ul>
+ <li><a href="index.php">Home</a></li>
+ <li><a href="index.php?page=a">First Main Page</a></li>
+ <li><a href="index.php?page=b">Second Main Page</a></li>
+ </ul>
+ </div>
+ <div id="main">
+ <?php
+ if (isset($_GET["page"])) {
+ $thepage = $_GET['page'];
+
+ if ($thepage != 'a' && $thepage != 'b') {
+ print('You hacker you!');
+ }
+ else {
+ require('main-div-'.$thepage.'.html');
+ }
+ }
+ else {
+ require('main-div-a.html');
+ }
+ ?>
+ </div>
+ <div id="right-menu">Right area</div>
+ <div id="footer">
+ <p>
+ <a href="http://validator.w3.org/check?uri=referer">
+ <img src="valid-xhtml10.png" alt="Valid XHTML 1.0 Strict"></img>
+ </a>
+ <a href="http://jigsaw.w3.org/css-validator/check?uri=referer">
+ <img src="vcss.png" alt="Valid CSS!"></img>
+ </a>
+ </p>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/temp3.html b/emacs.d/nxhtml/tests/in/temp3.html
new file mode 100644
index 0000000..276b754
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/temp3.html
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>News and Notes about nXhtml</title>
+ <link href="wd/grapes/nxhtml-grapes.css" rel="StyleSheet" type="text/css" />
+<style type="text/css">
+#nxhtml-home a {
+ /* Image */
+ display: block;
+ background: transparent url("img/getitbuttons.png") 0 0 no-repeat;
+ overflow: hidden;
+ width: 200px;
+ xheight: 35px;
+ /* Text placement and size, etc */
+ text-align: center;
+ padding-top: 11px;
+ font-size: 12px;
+ padding-bottom: 9px;
+ text-decoration: none;
+ white-space: nowrap;
+ margin: 0;
+ border: none;
+}
+#nxhtml-home a:hover {
+ background-position: 0 -35px;
+ color: yellow;
+}
+
+</style>
+ </head>
+ <body>
+ <div id="container">
+
+ <div id="rgtcol">
+ <p id="nxhtml-home"><a href='nxhtml.html'>To nXhtml main page</a></p>
+
+ <h1>News and Notes about nXhtml</h1>
+
+ <dl>
+
+ <dt id="hadron-bugs" style="margin-top:1em;">Thanks for testing!</dt>
+ <dd>
diff --git a/emacs.d/nxhtml/tests/in/test-only-nxml.my-xhtml b/emacs.d/nxhtml/tests/in/test-only-nxml.my-xhtml
new file mode 100644
index 0000000..2f9398c
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/test-only-nxml.my-xhtml
@@ -0,0 +1,38 @@
+<?php
+
+// some basic library functions
+include_once 'lib.php';
+
+$book = new Mybook($api_key, $secret);
+
+if (isset($_POST['to'])) {
+ $prints_id = (int)$_POST['to'];
+ $prints = do_step($user, $prints_id);
+} else {
+ if (isset($_GET['to'])) {
+ $prints_id = (int)$_GET['to'];
+ } else {
+ $prints_id = $user;
+ }
+ $prints = get_prints($prints_id);
+}
+
+?>
+<div style="padding: 10px;">
+ <h2>Hi <mb:name firstnameonly="true" uid="<?php=$user?>" useyou="false"/>!</h2><br/>
+ <a href="<?= $book->get_add_url() ?>">Put prints in your profile</a>.
+ <form method="post" action="http://my-domain.com/footprints/">
+<?php
+ if ($prints_id != $user) {
+ echo '<input type="hidden" name="to" value="' . $prints_id . '"/>';
+ } else {
+ echo '<br/>';
+ }
+?>
+ <input value="step" type="submit"/>
+ </form>
+ <hr/>
+ These are <mb:name uid="«?= $prints_id ?»" possessive="true"/> Footprints:<br/>
+ <?php echo render_prints($prints, 10); ?>
+ <div style="clear: both;"/>
+</div>
diff --git a/emacs.d/nxhtml/tests/in/test.tt b/emacs.d/nxhtml/tests/in/test.tt
new file mode 100644
index 0000000..01ff84a
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/test.tt
@@ -0,0 +1,11 @@
+[% IF blah %]
+
+[%# test GET ]
+ # comment
+[% test %] and [% test %]
+
+[% test % test %]
+
+[%+ test -%]
+
+[% BLOCK %]
diff --git a/emacs.d/nxhtml/tests/in/tut1.jsp b/emacs.d/nxhtml/tests/in/tut1.jsp
new file mode 100644
index 0000000..e921950
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/tut1.jsp
@@ -0,0 +1,5 @@
+<HTML>
+ <BODY>
+ Hello! The time is now <%= new java.util.Date() %>
+ </BODY>
+</HTML>
diff --git a/emacs.d/nxhtml/tests/in/utf8-problem.el b/emacs.d/nxhtml/tests/in/utf8-problem.el
new file mode 100644
index 0000000..c5e8b32
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/utf8-problem.el
@@ -0,0 +1,7 @@
+
+(defvar utf8-problem
+ "\\(?:^\\|[[:space:]]\\)\\(?:href\\|src\\)[[:space:]]*=[[:space:]]*\"\\([^<«\"]*\\)\"")
+
+;; Local Variables:
+;; coding: utf-8
+;; End:
diff --git a/emacs.d/nxhtml/tests/in/wiki-080606-indent.php b/emacs.d/nxhtml/tests/in/wiki-080606-indent.php
new file mode 100644
index 0000000..0776f03
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/wiki-080606-indent.php
@@ -0,0 +1,18 @@
+<?php
+
+include_once(APP_AAA_INCLUDE."bb.php");
+include_once(APP_AAA_INCLUDE."cc.php");
+include_once(APP_AAA_INCLUDE."dd.php");
+include_once(APP_AAA_INCLUDE."ee.php");
+include_once(APP_AAA_INCLUDE."ff.php");
+include_once(APP_AAA_INCLUDE."gg.php");
+
+class Test
+{
+ public $var1;
+
+ function __construct()
+ {
+ $this->var1 = 5;
+ }
+} \ No newline at end of file
diff --git a/emacs.d/nxhtml/tests/in/wiki-080708-ind-problem.rhtml b/emacs.d/nxhtml/tests/in/wiki-080708-ind-problem.rhtml
new file mode 100644
index 0000000..d51d116
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/wiki-080708-ind-problem.rhtml
@@ -0,0 +1,5 @@
+<%= t("Hola") %>
+ <%= ink_to name, target %>
+ <% if quiero do %>
+ <%= do_something_nifty(with_me) %>
+ <% end %>
diff --git a/emacs.d/nxhtml/tests/in/wiki-090804-js.html b/emacs.d/nxhtml/tests/in/wiki-090804-js.html
new file mode 100644
index 0000000..2762ed9
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/wiki-090804-js.html
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ </head>
+ <body>
+
+ <script type="text/javascript">
+ // <![CDATA[
+ Some code to see if we can find the problem
+ // ]]>
+</script>
+
+<?php
+ $htmlstuff = <<<EOTHTML
+
+ <p>some stuff</p>
+ <p>some other stuff</p>
+
+ <script type="text/javascript">
+ // <![CDATA[
+ Some code to see if we can find the problem
+ // ]]>
+</script>
+
+EOTHTML;
+
+?>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/wiki-2008-01-30.rhtml b/emacs.d/nxhtml/tests/in/wiki-2008-01-30.rhtml
new file mode 100644
index 0000000..5eefdc7
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/wiki-2008-01-30.rhtml
@@ -0,0 +1 @@
+<div class="widget">
diff --git a/emacs.d/nxhtml/tests/in/wiki-comments.php b/emacs.d/nxhtml/tests/in/wiki-comments.php
new file mode 100644
index 0000000..0581443
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/wiki-comments.php
@@ -0,0 +1,20 @@
+<?php
+/*
+ '
+ */
+/*
+ Problem updating comments during editing. To reproduce place cursor after the single x above and press RET and some other character.
+
+ Or just edit here, fill the paragraph above etc. Seems like problem
+ with mumamo-after-change which assumes that it is only called once
+ before post-command-hook is called.
+
+ BTW fill-paragraph does not work either ... - why does it run
+ c-fill-paragraph in php-mode? (Mailed Alan about this. The only
+ reason seems to be to support filladapt.el, but is that needed any
+ more?
+
+ It looks like more code (like filling) needs to be run under the
+ correct syntax table etc. Implemented.
+ */
+?>
diff --git a/emacs.d/nxhtml/tests/in/wiki-strange-hili-080629.html b/emacs.d/nxhtml/tests/in/wiki-strange-hili-080629.html
new file mode 100644
index 0000000..9f8c202
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/wiki-strange-hili-080629.html
@@ -0,0 +1,5 @@
+<html>
+<body>
+<span style="color:red">red</span>
+</body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/xml-as-string.php b/emacs.d/nxhtml/tests/in/xml-as-string.php
new file mode 100644
index 0000000..e779a5c
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/xml-as-string.php
@@ -0,0 +1,54 @@
+<?php header("Content-type:application/xml; charset=utf-8"); echo '<'; echo '?xml version="1.0" encoding="utf-8"?'; echo '>'; ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>Lab 2 - Layout Control - Task 2 - XHTML/CSS version</title>
+ <link rel="stylesheet" type="text/css" href="stylesheet.css" />
+ </head>
+ <body>
+ <div id="container">
+ <div id="header">Top area</div>
+ <div id="left-menu">
+ <ul>
+ <li><a href="index.php">Home</a></li>
+ <li><a href="index.php?page=a">First Main Page</a></li>
+ <li><a href="index.php?page=b">Second Main Page</a></li>
+ </ul>
+ </div>
+ <!--
+ <?
+ ?>
+ -->
+ <div id="main">
+ <?php
+ // comment
+ $thepage = $_GET['page'];
+
+ if (empty($thepage)) {
+ require('main-div-a.html');
+ }
+ else {
+ if ($thepage != 'a' && $thepage != 'b') {
+ print('You hacker you!');
+ }
+ else {
+ require('main-div-'.$thepage.'.html');
+ }
+ for (;;) {
+ }
+ }
+ ?>
+ </div>
+ <div id="right-menu">Right area</div>
+ <div id="footer">
+ <p>
+ <a href="http://validator.w3.org/check?uri=referer">
+ <img src="valid-xhtml10.png" alt="Valid XHTML 1.0 Strict"></img>
+ </a>
+ <a href="http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fwww-und.ida.liu.se%2F%7Emikas493%2Ftask-2%2Fxhtml-css%2Fstylesheet.css">
+ <img src="vcss.png" alt="Valid CSS!"></img>
+ </a>
+ </p>
+ </div>
+ </div>
diff --git a/emacs.d/nxhtml/tests/in/ygne-2008-02-07-hotproperty.html.php b/emacs.d/nxhtml/tests/in/ygne-2008-02-07-hotproperty.html.php
new file mode 100644
index 0000000..1802272
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/ygne-2008-02-07-hotproperty.html.php
@@ -0,0 +1,1967 @@
+<?php
+// hotproperty.html.php
+/**
+ * Something's Presentation Code
+ *
+ * @package Something
+ * @copyright (C) 2004 Lee Cher Yeong
+ * @url http://www.somewhere.com/
+ * @author Lee Cher Yeong <cy@somewhere.com>
+ **/
+
+defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
+
+class hotproperty_HTML {
+
+ /***
+ * Include CSS file
+ ***/
+ function include_CSS() {
+ global $hp_css;
+ ?>
+ <link rel="stylesheet" href="components/com_hotproperty/css/<?php echo $hp_css; ?>.css" type="text/css">
+ <?php
+ }
+
+ function include_Container_Start() {
+ ?>
+<div id="con_global">
+<div class="componentheading"><!--<?php echo _HP_COM_TITLE; ?>--></div>
+ <?php
+ }
+ function include_Container_End() {
+ ?>
+</div>
+
+
+ <?php
+ }
+
+
+ /***
+ * Front Page
+ ***/
+ function show_Frontpage(&$campos, &$featured, &$featured_fields_caption, &$featured_total, &$types, &$types_hotproperty, &$types_total) {
+ global $hp_fp_show_featured, $hp_fp_show_search, $mainframe, $hp_css, $mosConfig_live_site, $my;
+
+ $mainframe->setPageTitle( _HP_COM_TITLE );?>
+
+ <link rel="stylesheet" href="components/com_hotproperty/css/ppal_<?php echo $hp_css; ?>.css" type="text/css"/>
+
+ <div id="total_alojamientos">
+ <span class="saludo"><?= _HP_HOLA ?></span> <?= _HP_TENEMOS ?>
+ <?php hotproperty_HTML::show_ResumenTipos() ?>
+ </div>
+
+ <div id="buscar_alojamiento">
+ </div>
+ <div id="incluir_alojamiento">
+ </div>
+
+ <br clear="all"/>
+
+<?php
+
+/* if ($hp_fp_show_featured && count($featured) > 0 ){
+ hotproperty_HTML::show_fp_Featured($featured, $featured_fields_caption, $featured_total);
+ echo '<br class="clearboth" />';
+ }
+
+ if ($hp_fp_show_search) {
+ hotproperty_HTML::show_Search($types);
+ echo '<br class="clearboth" />';
+ }
+
+ hotproperty_HTML::show_Types($types, $types_hotproperty, $types_total);*/
+ }
+
+ /***
+ * Featured Listing
+ ***/
+ function show_fp_Featured(&$prop, &$caption, $featured_total) {
+ global $hp_fp_featured_count, $Itemid;
+ ?>
+ <div id="con_featured1">
+ <div id="heading_Featured"><?php echo _HP_FEATURED_TITLE; ?></div>
+ <div id="list_featured">
+ <?php hotproperty_HTML::list_properties($prop, $caption); ?>
+ <br class="clearboth" />
+ <?php if ($featured_total > $hp_fp_featured_count) {
+ echo "<a href=\"". sefRelToAbs("index.php?option=com_hotproperty&task=viewfeatured&Itemid=$Itemid") ."\">"._HP_MOREFEATURED."</a>";
+ } ?>
+ </div>
+ </div>
+ <?php
+ }
+
+ /***
+ * List Types
+ ***/
+ function show_Types(&$types, &$types_hotproperty, $types_total) {
+ global $Itemid;
+ ?>
+ <div id="con_types1">
+ <div id="heading_Types"><?php echo _HP_TYPES_TITLE; ?></div>
+ <div id="con_types2">
+ <?php
+ foreach($types AS $t) {
+ if ($types_total[$t->id]->total > 0) {
+ ?>
+ <div class="con_types3">
+ <a class="types_title" href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewtype&id=$t->id&Itemid=$Itemid"); ?>"><?php echo $t->name ."</a>(".$types_total[$t->id]->total.")"; ?><br />
+ <div class="types_desc">
+ <?php echo $t->desc; ?>
+ <ul class="types_hp">
+ <?php
+ foreach($types_hotproperty[$t->id] AS $t_hp) {
+ if ($t_hp->name <> "" && $t_hp->id <> "") {
+ ?>
+ <li><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=view&id=$t_hp->id&Itemid=$Itemid"); ?>"><?php echo $t_hp->name; ?></a></li>
+ <?php
+ }
+ }
+ ?>
+ </ul>
+ <?php
+ if ($types_total[$t->id]->total > 3) { ?>
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewtype&id=$t->id&Itemid=$Itemid"); ?>"><?php echo _HP_MORE; ?></a>
+ <?php
+ }
+ ?>
+ </div>
+ </div>
+ <?php
+ }
+ }
+ ?>
+ </div>
+ </div>
+ <?php
+ }
+
+ /***
+ * Search Facility
+ ***/
+ function show_Search(&$types) {
+ global $Itemid, $hp_use_advsearch, $mosConfig_live_site;
+ /*
+ global $custom404, $mosConfig_sef, $sufix;
+
+ # Using Built in SEF feature in Mambo
+ if ( !isset($custom404) && $mosConfig_sef ) {
+ $onclickCmd = "document.location.href= '$mosConfig_live_site/component/option,com_hotproperty/task,search/Itemid,$Itemid/type,0/search,' + encodeURI(document.searchfrm.hp_search.value) + '/'";
+ } elseif ( $mosConfig_sef && isset($custom404) && !empty($sufix) ) {
+
+ global $custom_comp, $hp_default_limit_search;
+ $hotproperty = "hotproperty";
+ if (in_array("hotproperty", $custom_comp)) {
+ $hotproperty = array_search($component_name, $custom_comp);
+ }
+
+ $onclickCmd = "document.location.href='" . $hotproperty . "/" . _HP_SEF_SEARCH . "/0/".$hp_default_limit_search."/0/" . "' + encodeURI(document.searchfrm.hp_search.value)";
+
+ } else {
+ # Using SEF advance or no SEF at all
+ $onclickCmd = "document.location.href='" . sefRelToAbs("index.php?option=com_hotproperty&task=search&Itemid=$Itemid&type=0&search=' + encodeURI(document.searchfrm.hp_search.value)");
+ }
+ */
+ ?>
+ <div id="con_search1">
+ <div id="heading_Search"><?php echo _HP_SEARCH_TITLE; ?></div>
+ <div id="con_search2">
+ <form action="index.php" method="POST" name="searchfrm">
+ <strong><?php echo _HP_SEARCH_TEXT; ?></strong>
+ <input type="text" name="search" class="inputbox" />
+ <input type="submit" class="button" value="<?php echo _HP_SEARCH; ?>" /><?php
+ if ($hp_use_advsearch == '1') {
+ ?>&nbsp;<a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=advsearch&Itemid=$Itemid"); ?>"><?php echo _HP_SEARCH_ADV_TITLE; ?></a><?php
+ }
+ ?>
+ <input type="hidden" name="option" value="com_hotproperty" />
+ <input type="hidden" name="task" value="search" />
+ <input type="hidden" name="Itemid" value="<?php echo $Itemid;?>" />
+ </form>
+ </div>
+ </div>
+ <?php
+ }
+
+ /***
+ * Advanced Search Facility
+ ***/
+ function show_AdvSearch($fields, $tipos_renta) {
+ global $Itemid, $mainframe;
+
+ $mainframe->setPageTitle( _HP_SEARCH_ADV_TITLE );
+ ?>
+ <script language="javascript">
+ /* Selecciona por defecto España como país para la búsqueda */
+ function select_idioma(id) {
+ select=document.getElementById(id);
+ select.options[62].selected="1";
+ }
+ /* Muestra o oculta la búsqueda por disponibilidad y el precio según el tipo de oferta */
+ function swap_tipo_oferta(id) {
+ select=document.getElementById(id);
+ disp=document.getElementById('disp_busq_av');
+ precio=document.getElementById('precio_busq_av');
+ if (select.options[1].selected) { // Alquiler
+ disp.style.display = "block";
+ precio.style.display = "none";
+ }
+ if (select.options[2].selected) { // Venta
+ disp.style.display = "none";
+ precio.style.display = "block";
+ }
+ if (select.options[0].selected) { // Cualquiera
+ disp.style.display = "block";
+ precio.style.display = "block";
+ }
+
+
+ }
+ /* Muestra o oculta una capa, y cambia el texto del enlace lanzador */
+ function swap(id, llamador)
+ {
+ id=document.getElementById(id);
+ if (id.style.display == "none" || id.style.display == "") {
+ id.style.display = "block";
+ llamador.innerHTML = "<?= _HP_OCULTAR ?>";
+ }
+ else {
+ id.style.display = "none";
+ llamador.innerHTML = "<?= _HP_MOSTRAR ?>";
+ }
+ }
+ /* Selecciona todos los alojamientos O sólo las viviendas en un combobox con los tipos de alojamiento */
+ function selecc_vivienda(select)
+ {
+ select = document.getElementById(select);
+ if (select.selectedIndex == 1)
+ {
+ select.options[select.selectedIndex].selected = "";
+ for (i=2; i <= select.length-1; i++)
+ if (i != 11 && i!= 13) select.options[i].selected="1";
+ }
+ }
+ /* Muestra u oculta los campos de búsqueda por disponibilidad */
+ function swap_disp(input,id) {
+ if (input.checked)
+ document.getElementById(id).style.display="block";
+ else
+ document.getElementById(id).style.display="none";
+ }
+ </script>
+ <div id="heading_AdvSearch"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&Itemid=$Itemid"); ?>"><?php echo _HP_COM_PATHWAY_MAIN; ?></a><em><?php echo _HP_ARROW; ?></em><?php echo _HP_SEARCH_ADV_TITLE; ?></div>
+ <div id="con_asearch1">
+ <form action="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=asearch&Itemid=$Itemid"); ?>" method="POST" name="searchfrm">
+ <div class="cabecera_busq_avzda">
+ <div class="titulo_cabecera_busq_avzda"><?= _HP_DATOS_GENERALES ?></div>
+ </div><br class="clearboth"/>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['type']->caption; ?>:</div>
+ <?= $fields['type']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="campo_con_ayuda">
+ <div class="titulo_campo"><?= $fields['Tipo_Alojamiento']->caption; ?>:</div>
+ <?= $fields['Tipo_Alojamiento']->input; ?>
+ </div>
+ <div class="msj_ayuda"><?= _HP_AYUDA_TIPO_ALOJ ?></div>
+ </div>
+ <br class="clearboth"/>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['Superficie_habitable']->caption; ?>:</div>
+ <?php echo $fields['Superficie_habitable']->input; ?>
+ <?php echo $fields['Superficie_habitable']->append_text; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['Num_plazas']->caption; ?>:</div>
+ <?= $fields['Num_plazas']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['Numero_dormitorios']->caption; ?>:</div>
+ <?= $fields['Numero_dormitorios']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['country']->caption; ?>:</div>
+ <?= $fields['country']->input; ?>
+ <script language="javascript">
+ select_idioma('idioma');
+ </script>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['state']->caption; ?>:</div>
+ <?= $fields['state']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['suburb']->caption; ?>:</div>
+ <?= $fields['suburb']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['postcode']->caption; ?>:</div>
+ <?= $fields['postcode']->input; ?>
+ </div>
+ <div id="precio_busq_av">
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['price']->caption; ?>:</div>
+ <?= $fields['price']->input; ?>
+ </div>
+ </div>
+ <div id="disp_busq_av">
+ <div class="cont_form">
+ <input type="checkbox" name="busq_disp" onclick="swap_disp(this,'campos_disp');"><?= _HP_BUSQ_POR_DISP ?></input>
+ <div id="campos_disp">
+ <div class="titulo_campo"><?= _HP_BUSQ_DISP ?> </div>
+ <div class="flota_izq interl_doble">
+ <?php hotproperty_HTML::seleccion_fecha("desde"); ?>
+ <?php hotproperty_HTML::seleccion_fecha("hasta"); ?>
+ </div>
+ <div class="campo_avl">
+ <?= _HPAVL_RENTA; ?>
+ <select size="1" class="campo_dcha inputbox" name="renta">
+ <option value="0"><?= _HP_SEARCH_ALLTYPES ?></option>
+ <?php foreach ($tipos_renta AS $tipo_renta) { ?>
+ <option value="<?php echo $tipo_renta->id; ?>"><?php echo $tipo_renta->nombre; ?></option>
+ <?php } ?>
+ </select>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- Otros datos -->
+ <div class="cabecera_busq_avzda">
+ <div class="titulo_cabecera_busq_avzda"><?= _HP_OTROS_DATOS ?></div>
+ <div class="botonera_dcha">
+ <a href="#" class="enlace_blanco" onclick="swap('otros_datos', this);"><?= _HP_MOSTRAR; ?></a>
+ </div>
+ </div><br class="clearboth"/>
+ <div id="otros_datos">
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['MetrosConstruidos']->caption; ?>:</div>
+ <?= $fields['MetrosConstruidos']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['Superficie_parcela']->caption; ?>:</div>
+ <?= $fields['Superficie_parcela']->input; ?>
+ <?= $fields['Superficie_parcela']->append_text; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['Numero_dormitorios']->caption; ?>:</div>
+ <?= $fields['Numero_dormitorios']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['Cuartos_banio_con_duchas']->caption; ?>:</div>
+ <?= $fields['Cuartos_banio_con_duchas']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['Aseos']->caption; ?>:</div>
+ <?= $fields['Aseos']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['AnioConstruccion']->caption; ?>:</div>
+ <?= $fields['AnioConstruccion']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['UltimaReforma']->caption; ?>:</div>
+ <?= $fields['UltimaReforma']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['Amueblado']->caption; ?>:</div>
+ <?= $fields['Amueblado']->input; ?>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['Dispone']->caption; ?>:</div>
+ <?= $fields['Dispone']->input; ?>
+ <br class="clearboth"/>
+ </div>
+ <div class="cont_form">
+ <div class="titulo_campo"><?= $fields['Zona']->caption; ?>:</div>
+ <?= $fields['Zona']->input; ?>
+ <br class="clearboth"/>
+ </div>
+ </div>
+
+ <br/>
+ <div class="centro">
+ <input type="submit" value="Buscar" class="button" >
+ </div>
+
+ </div>
+
+ <?php
+ }
+
+ /***
+ * Empty Advanced Search Results
+ ***/
+ function show_advSearchResults_error($msg) {
+ global $Itemid, $mainframe;
+ $mainframe->setPageTitle( _HP_SEARCH_ADV_TITLE );
+ ?>
+ <div id="con_asearch1">
+ <div id="heading_AdvSearch"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&Itemid=$Itemid"); ?>"><?php echo _HP_COM_PATHWAY_MAIN; ?></a><em><?php echo _HP_ARROW; ?></em><?php echo _HP_SEARCH_ADV_TITLE; ?></div>
+ <p />
+ <?php echo $msg; ?>
+ <p />
+ <a href=""><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=advsearch&Itemid=$Itemid"); ?>"><?php echo _HP_SEARCH_TRYAGAIN; ?></a>
+ </div>
+ <?php
+ }
+
+ /***
+ * Advanced Search Results
+ ***/
+ function show_advSearchResults(&$search_id, &$prop, &$caption, &$pageNav, &$searchString) {
+ global $Itemid, $mainframe;
+ $mainframe->setPageTitle( _HP_SEARCH_ADV_TITLE );
+ ?>
+ <div id="con_asearch1">
+ <div id="heading_AdvSearch"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&Itemid=$Itemid"); ?>"><?php echo _HP_COM_PATHWAY_MAIN; ?></a><em><?php echo _HP_ARROW; ?></em><?php echo _HP_SEARCH_ADV_TITLE; ?></div>
+ <!-- <div id="hp_searchresult_con">
+ <div id="hp_search_pagecounter_top">
+ <div class="right"><?php echo $pageNav->writePagesCounter(); ?></div>
+ <br class="clearboth" />
+ <?php echo $pageNav->writePagesLinks('index.php?option=com_hotproperty&task=asearch&Itemid='.$Itemid.'&search_id='.$search_id); ?>
+ </div>
+ </div> -->
+ <div id="list_searchresults">
+ <?php hotproperty_HTML::list_properties($prop, $caption); ?>
+ </div>
+ </div>
+ <br class="clearboth" />
+ <div id="hp_search_pagecounter_bottom">
+ <div class="dcha"><?php echo $pageNav->writePagesCounter(); ?></div>
+ <br class="clearboth" />
+ <?php echo $pageNav->writePagesLinks('index.php?option=com_hotproperty&task=asearch&Itemid='.$Itemid.'&search_id='.$search_id); ?>
+ </div>
+
+ <?php
+ }
+
+ /***
+ * Search Results
+ ***/
+ function show_SearchResults(&$types, &$prop, &$caption, &$pageNav, &$searchString) {
+ global $Itemid, $hp_use_advsearch, $mosConfig_live_site, $mainframe;
+ global $custom404, $mosConfig_sef, $sufix;
+ $mainframe->setPageTitle( _HP_SEARCH_RESULT_TITLE );
+
+ # Using Built in SEF feature in Mambo
+ /*
+ if ( !isset($custom404) && $mosConfig_sef ) {
+
+ $onclickCmd = "document.location.href= '$mosConfig_live_site/component/option,com_hotproperty/task,search/Itemid,$Itemid/type,' + document.searchfrm.type.options[document.searchfrm.type.selectedIndex].value + '/search,' + encodeURI(document.searchfrm.hp_search.value) + '/'";
+
+ } elseif ( $mosConfig_sef && isset($custom404) && !empty($sufix) ) {
+
+ global $custom_comp, $hp_default_limit_search;
+ $hotproperty = "hotproperty";
+ if (in_array("hotproperty", $custom_comp)) {
+ $hotproperty = array_search($component_name, $custom_comp);
+ }
+
+ $onclickCmd = "document.location.href='" . $hotproperty . "/" . _HP_SEF_SEARCH . "/' + document.searchfrm.type.options[document.searchfrm.type.selectedIndex].value + '/".$hp_default_limit_search."/0/" . "' + encodeURI(document.searchfrm.hp_search.value)";
+
+ } else {
+
+ # Using SEF advance or no SEF at all
+ $onclickCmd = "document.location.href='" . sefRelToAbs("index.php?option=com_hotproperty&task=search&Itemid=$Itemid&type=' + document.searchfrm.type.options[document.searchfrm.type.selectedIndex].value + '&search=' + encodeURI(document.searchfrm.hp_search.value)");
+ }
+ */
+ ?>
+ <div id="con_search1">
+ <form action="index.php" method="POST" name="searchfrm">
+ <div id="heading_Search"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&Itemid=$Itemid"); ?>"><?php echo _HP_COM_PATHWAY_MAIN ." "._HP_ARROW." "; ?></a><?php echo _HP_SEARCH_RESULT_TITLE; ?></div>
+ <div id="hp_searchresult_con">
+ <strong><?php echo _HP_SEARCH_TEXT; ?></strong>
+ <input type="text" name="search" class="inputbox" value="<?php echo $searchString->search; ?>" /> <?php echo _HP_IN; ?>
+ <select name="type" class="inputbox" size="1">
+ <option value="0"><?php echo _HP_SEARCH_ALLTYPES; ?></option>
+ <?php
+ foreach($types AS $t) { ?>
+ <option value="<?php echo $t->id; ?>"<?php echo (($searchString->type==$t->id) ? " selected" : ""); ?>><?php echo $t->name; ?></option>
+ <?php }
+ ?></select>
+ &nbsp;
+ <input type="submit" class="button" value="<?php echo _HP_SEARCH; ?>" /><?php
+ if ($hp_use_advsearch == '1') {
+ ?>&nbsp;<a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=advsearch&Itemid=$Itemid"); ?>"><?php echo _HP_SEARCH_ADV_TITLE; ?></a><?php
+ }
+ ?>
+ <div id="hp_search_pagecounter_top">
+ <div class="right"><?php echo $pageNav->writePagesCounter(); ?></div>
+ <br class="clearboth" />
+ <?php echo $pageNav->writePagesLinks('index.php?option=com_hotproperty&task=search&Itemid='.$Itemid.'&type='.$searchString->type.'&search='.$searchString->search); ?>
+ </div>
+ </div>
+ <input type="hidden" name="option" value="com_hotproperty" />
+ <input type="hidden" name="task" value="search" />
+ </form>
+ </div>
+
+ <div id="list_searchresults">
+ <?php hotproperty_HTML::list_properties($prop, $caption); ?>
+ </div>
+ <br class="clearboth" />
+ <div id="hp_search_pagecounter_bottom">
+ <div class="right"><?php echo $pageNav->writePagesCounter(); ?></div>
+ <br class="clearboth" />
+ <?php echo $pageNav->writePagesLinks('index.php?option=com_hotproperty&task=search&Itemid='.$Itemid.'&type='.$searchString->type.'&search='.$searchString->search); ?>
+ </div>
+
+ <?php
+ }
+
+ /***
+ * List Properties for a particular Type
+ ***/
+ function show_Type($prop, $type, $caption, $pageNav, $sortby_sort, $sortby_order) {
+ global $hp_use_diplaynum, $hp_use_sort_name, $hp_use_sort_agent, $hp_use_sort_price, $hp_use_sort_suburb, $hp_use_sort_state, $hp_use_sort_country, $hp_use_sort_type, $hp_use_sort_modified, $hp_use_sort_hits;
+
+ global $Itemid, $database, $mainframe;
+
+ $mainframe->setPageTitle( $type->name );
+ ?>
+ <div id="con_type1">
+ <?php if ($type != '') { ?>
+ <div id="heading_Type"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&Itemid=$Itemid"); ?>"><?php echo _HP_COM_PATHWAY_MAIN; ?></a><em><?php echo _HP_ARROW; ?></em><?php echo $type->name; ?></div>
+ <?php } ?>
+ <?php
+ if ($hp_use_diplaynum == '1' || !empty($hp_use_sort_name) || !empty($hp_use_sort_agent) || !empty($hp_use_sort_price) || !empty($hp_use_sort_suburb) || !empty($hp_use_sort_state) || !empty($hp_use_sort_country) || !empty($hp_use_sort_type) || !empty($hp_use_sort_modified) || !empty($hp_use_sort_hits)) {
+ ?>
+ <div id="con_sort">
+ <?php if ($hp_use_diplaynum == '1') { ?>
+ <div id="con_sort1">
+ <?php echo _PN_DISPLAY_NR; ?>
+ <?php echo $pageNav->writeLimitBox('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort='.$sortby_sort.'&order='.$sortby_order.'&Itemid='.$Itemid); ?>
+ </div>
+ <?php
+ }
+ if (!empty($hp_use_sort_name) || !empty($hp_use_sort_agent) || !empty($hp_use_sort_price) || !empty($hp_use_sort_suburb) || !empty($hp_use_sort_state) || !empty($hp_use_sort_country) || !empty($hp_use_sort_type) || !empty($hp_use_sort_modified) || !empty($hp_use_sort_hits)) {
+ ?>
+ <div id="con_sort2">&nbsp;
+ <?php echo _HP_SORT_BY; ?>
+ |
+
+ <?php if (!empty($hp_use_sort_name)) { ?>
+ <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=name&order=asc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>" title="<?php echo _HP_SORT_A_Z; ?>"> <?php echo _HP_SORT_ASC; ?> </a> <?php echo _HP_SORT_AZ; ?> <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=name&order=desc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>" title="<?php echo _HP_SORT_Z_A; ?>"> <?php echo _HP_SORT_DESC; ?> </a> |
+ <?php } ?>
+
+ <?php if (!empty($hp_use_sort_agent) && !empty($caption['agent']->caption)) { ?>
+ <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=agent&order=desc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_ASC; ?> </a> <?php echo $caption['agent']->caption; ?> <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=agent&order=asc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_DESC; ?> </a> |
+ <?php } ?>
+
+ <?php if (!empty($hp_use_sort_price) && !empty($caption['price']->caption)) { ?>
+ <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=price&order=asc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>" title="<?php echo _HP_SORT_LOWEST_PRICE; ?>"> <?php echo _HP_SORT_ASC; ?> </a> <?php echo $caption['price']->caption; ?> <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=price&order=desc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>" title="<?php echo _HP_SORT_HIGHEST_PRICE; ?>"> <?php echo _HP_SORT_DESC; ?> </a> |
+ <?php } ?>
+
+ <?php if (!empty($hp_use_sort_suburb) && !empty($caption['suburb']->caption)) { ?>
+ <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=suburb&order=asc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_ASC; ?> </a> <?php echo $caption['suburb']->caption; ?> <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=suburb&order=desc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_DESC; ?> </a> |
+ <?php } ?>
+
+ <?php if (!empty($hp_use_sort_state) && !empty($caption['state']->caption)) { ?>
+ <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=state&order=asc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_ASC; ?> </a> <?php echo $caption['state']->caption; ?> <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=state&order=desc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_DESC; ?> </a> |
+ <?php } ?>
+
+ <?php if (!empty($hp_use_sort_country) && !empty($caption['country']->caption)) { ?>
+ <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=country&order=asc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_ASC; ?> </a> <?php echo $caption['country']->caption; ?> <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=country&order=desc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_DESC; ?> </a> |
+ <?php } ?>
+
+ <?php if (!empty($hp_use_sort_type) && !empty($caption['type']->caption)) { ?>
+ <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=type&order=asc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_ASC; ?> </a> <?php echo $caption['type']->caption; ?> <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=type&order=desc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_DESC; ?> </a> |
+ <?php } ?>
+
+ <?php if (!empty($hp_use_sort_modified) && !empty($caption['modified']->caption)) { ?>
+ <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=modified&order=asc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_ASC; ?> </a> <?php echo $caption['modified']->caption; ?> <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=modified&order=desc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_DESC; ?> </a> |
+ <?php } ?>
+
+ <?php if (!empty($hp_use_sort_hits) && !empty($caption['hits']->caption)) { ?>
+ <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=hits&order=asc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_ASC; ?> </a> <?php echo $caption['hits']->caption; ?> <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort=hits&order=desc&limit='.$pageNav->limit.'&limitstart='.$pageNav->limitstart.'&Itemid='.$Itemid); ?>"> <?php echo _HP_SORT_DESC; ?> </a> |
+ <?php } ?>
+
+ </div>
+ <?php } ?>
+ </div>
+ <?php } ?>
+ <div id="list_properties">
+ <?php hotproperty_HTML::list_properties($prop, $caption); ?>
+ </div>
+
+
+ <?php if ($type != '') { ?>
+ <div id="hp_pagecounter_bottom">
+ <div align="right"><?php $pageNav->writePagesCounter(); ?></div>
+ <?php echo $pageNav->writePagesLinks('index.php?option=com_hotproperty&task=viewtype&id='.$prop[0]->typeid.'&sort='.$sortby_sort.'&order='.$sortby_order.'&Itemid='.$Itemid); ?>
+ </div>
+ <?php } ?>
+ </div>
+ <?php
+ }
+
+ /***
+ * List Featured Properties
+ ***/
+ function show_Featured($prop, $caption, $pageNav) {
+ global $Itemid, $mainframe;
+ $mainframe->setPageTitle( _HP_FEATURED );
+ ?>
+ <div id="con_type1">
+ <div id="heading_Featured"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&Itemid=$Itemid"); ?>"><?php echo _HP_COM_PATHWAY_MAIN ." "._HP_ARROW." "; ?></a><?php echo _HP_FEATURED; ?></div>
+ <div id="list_properties">
+ <?php hotproperty_HTML::list_properties($prop, $caption); ?>
+ </div>
+ <br class="clearboth" />
+ <div id="hp_pagecounter_bottom">
+ <div align="right"><?php echo $pageNav->writePagesCounter(); ?></div>
+ <br class="clearboth" />
+ <?php echo $pageNav->writePagesLinks('index.php?option=com_hotproperty&task=viewfeatured'); ?>
+ </div>
+ </div>
+ <?php
+ }
+
+ /***
+ * Display Company's contact details and list all agents under it.
+ ***/
+ function show_Company(&$company, &$agent, &$prop, &$caption, $pageNav) {
+ global $mosConfig_live_site, $hp_imgdir_agent, $mainframe, $Itemid;
+ $mainframe->setPageTitle( $company[0]->name );
+ ?>
+
+ <div id="hp_view_agent_title_nav"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&Itemid=$Itemid"); ?>"><?php echo _HP_COM_PATHWAY_MAIN; ?></a><em><?php echo _HP_ARROW; ?></em> <?php echo _HP_CO_TITLE; ?></div>
+ <div id="hp_view_co_con">
+ <?php hotproperty_HTML::show_CoInfo($company, $agent) ?>
+ </div>
+ <br class="clearboth" />
+
+ <div id="heading_Agent"><span class="flecha_big">› </span><?= _HP_PROPBYAGENT.$company[0]->name; ?></div>
+ <div id="list_properties">
+ <?php hotproperty_HTML::list_properties($prop, $caption); ?>
+ </div>
+
+ <br class="clearboth" />
+ <div id="hp_pagecounter_bottom">
+ <div align="right"><?php echo $pageNav->writePagesCounter(); ?></div>
+ <br class="clearboth" />
+ <?php echo $pageNav->writePagesLinks('index.php?option=com_hotproperty&task=viewco&id='.$company[0]->id); ?>
+ </div>
+
+ <?php
+ }
+
+ /***
+ * Display Agent's information and list all properties under it.
+ ***/
+ function show_Agent($prop_alq, $prop_vta, $caption, $agent, $types, $pageNav) {
+ global $mosConfig_live_site, $hp_imgdir_agent, $Itemid, $mainframe;
+ $mainframe->setPageTitle( $agent->name );
+ ?>
+
+ <div id="hp_view_agent_title_nav"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&Itemid=$Itemid"); ?>"><?php echo _HP_COM_PATHWAY_MAIN; ?></a><em><?php echo _HP_ARROW; ?></em><?php echo $agent->name; ?></div>
+
+ <div id="hp_view_agent_con">
+ <?php hotproperty_HTML::show_AgentInfo($agent) ?>
+ </div>
+ <br class="clearboth" />
+
+ <div id="heading_Agent"><span class="flecha_big">› </span><?= _HP_PROPBYAGENT.$agent->name; ?></div>
+ <div class="cabecera_ver_ofertas"><?= _OFER_ALQ; ?></div>
+ <?php hotproperty_HTML::show_Type($prop_alq, "", $caption, $pageNav, "desc", "modified"); ?>
+ <br class="clearboth" />
+ <div class="cabecera_ver_ofertas"><?= _OFER_VEN; ?></div>
+ <?php hotproperty_HTML::show_Type($prop_vta, "", $caption, $pageNav, "desc", "modified"); ?>
+
+
+<!-- <div id="hp_pagecounter_bottom">
+ <div align="right"><?php echo $pageNav->writePagesCounter(); ?></div>
+ <br class="clearboth" />
+ <?php echo $pageNav->writePagesLinks('index.php?option=com_hotproperty&task=viewagent&id='.$agent->id); ?>
+ </div>-->
+ <br class="clearboth" />
+ <?php
+ }
+
+ /***
+ * Display Company's information and an enquiry form.
+ ***/
+ function show_CoEmail($company) {
+ global $Itemid, $mainframe;
+ $mainframe->setPageTitle( _HP_CO_CONTACT .' - '.$company[0]->name );
+
+ ?>
+ <div id="heading_Co"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&Itemid=$Itemid"); ?>"><?php echo _HP_COM_PATHWAY_MAIN; ?></a><em><?php echo _HP_ARROW; ?></em><?php echo _HP_CO_TITLE; ?></div>
+ <div id="hp_view_co_con">
+ <?php hotproperty_HTML::show_CoInfo($company) ?>
+ </div>
+ <br class="clearboth" />
+ <div id="heading_Co_Contact"><?php echo _HP_CO_CONTACT; ?></div>
+ <div id="hp_emailform_con">
+ <?php hotproperty_HTML::show_EmailForm('company',$company[0]->id) ?>
+ </div>
+
+ <?php
+ }
+
+ /***
+ * Display Agent's information and an enquiry form.
+ ***/
+ function show_AgentEmail($agent) {
+ global $Itemid, $mainframe;
+ $mainframe->setPageTitle( _HP_VIEW_AGENT_CONTACT .' - '.$agent[0]->name );
+ ?>
+ <!--<div id="hp_view_agent_title_nav"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&Itemid=$Itemid"); ?>"><?php echo _HP_COM_PATHWAY_MAIN; ?><em><?php echo _HP_ARROW; ?></em></a> <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewco&id=".$agent[0]->companyid."&Itemid=".$Itemid); ?>"><?php echo $agent[0]->company; ?></a><em><?php echo _HP_ARROW; ?></em><?php echo _HP_VIEW_AGENT_TITLE; ?></div> -->
+<!-- <div id="hp_view_agent_con">
+ <?php hotproperty_HTML::show_AgentInfo($agent) ?>
+ </div> -->
+ <div id="hp_view_agent_contact"><span class="flecha_big"><?= _HP_ARROW ?></span><?php echo _HP_VIEW_AGENT_CONTACT; ?></div>
+ <div id="hp_emailform_con">
+ <?php hotproperty_HTML::show_EmailForm('agent',$agent[0]->id) ?>
+ </div>
+
+ <?php
+ }
+
+ /***
+ * Show Property
+ ***/
+ function show_Prop(&$prop, &$caption, &$images, &$agent, $num_periodos) {
+ global $Itemid, $my, $mosConfig_live_site, $mosConfig_absolute_path, $pop, $mainframe;
+ global $hp_imgdir_thumb, $hp_imgdir_standard, $hp_currency, $hp_imgsize_thumb, $hp_img_noimage_thumb, $hp_imgdir_agent, $hp_show_agentdetails, $hp_show_enquiryform, $hp_thousand_sep, $hp_dec_point, $hp_link_open_newwin, $hp_show_moreinfo, $hp_use_companyagent, $hp_dec_string, $hp_thousand_string;
+ global $hp_show_pdficon, $hp_show_printicon, $hp_show_emailicon;
+
+ $mainframe->appendMetaTag( 'description', $prop[0]->metadesc );
+ $mainframe->appendMetaTag( 'keywords', $prop[0]->metakey );
+ $mainframe->setPageTitle( $prop[0]->name );
+ if ($pop == '') $pop = 0;
+ ?>
+ <script language="javascript">
+ // Si es una pop-up, es la ventana de impresión: imprime.
+ if (<?= $pop ?> == 1 ) { window.print(); }
+ </script>
+ <script src="components/com_hotproperty/js/resalte.js" type="text/javascript"></script>
+
+ <div id="con_hp1">
+ <?php if (!$pop) { ?>
+ <div id="heading_Prop">
+ <div class="obj_con_botonera">
+ <div class="nombre_objeto">
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&Itemid=$Itemid"); ?>"><?php echo _HP_COM_PATHWAY_MAIN; ?></a><em><?php echo _HP_ARROW; ?></em><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewtype&id=".$prop[0]->typeid."&Itemid=$Itemid"); ?>"><?php echo $prop[0]->type; ?> </a> <em><?php echo _HP_ARROW; ?></em> <?php echo $prop[0]->name; ?>
+ </div>
+ <?php } ?>
+ <div class="botonera_dcha">
+ <div class="mini_botones">
+
+ <?php
+
+ # Show edit icon for authorized agent
+ if (!$pop && $prop[0]->user == $my->id && $prop[0]->user > 0 && $my->id > 0) { ?>
+ <div class="mini_boton">
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=editprop&id=". $prop[0]->id ."&Itemid=$Itemid"); ?>" title="<?= _E_EDIT; ?>"><img src="administrator/images/editar.png" alt="<?= _E_EDIT ?>" title="<?= _E_EDIT ?>" onmouseover="this.src='administrator/images/editar_on.png';swap_resalte('editar',1);" onmouseout="this.src='administrator/images/editar.png';swap_resalte('editar',0);" class="bot_gestionar" id="img_editar"/></a>
+ </div>
+ <div class="texto_mini_boton"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=editprop&id=". $prop[0]->id ."&Itemid=$Itemid"); ?>" onmouseover="swap_resalte('editar',1);" onmouseout="swap_resalte('editar',0);" title="<?= _E_EDIT; ?>" id="a_editar"><?= _E_EDIT ?></a></div>
+ <?php } ?>
+
+ <?php
+ if ($hp_show_pdficon && !$pop) {
+ ?>
+ <div class="mini_boton">
+ <a href="javascript:void window.open('<?php echo $mosConfig_live_site; ?>/components/com_hotproperty/pdf.php?id=<?php echo $prop[0]->id; ?>', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no');" title="<?php echo _CMN_PRINT;?>">
+ <img src="<?php echo $mosConfig_live_site;?>/administrator/images/imprimir.png" border="0" alt="<?php echo _CMN_PDF;?>" onmouseover="this.src='administrator/images/imprimir_on.png';swap_resalte('imprimir',1);" onmouseout="this.src='administrator/images/imprimir.png'; swap_resalte('imprimir',0);" class="bot_gestionar" id="img_imprimir"/></a>
+ </div>
+ <div class="texto_mini_boton">
+ <a href="javascript:void window.open('<?php echo $mosConfig_live_site; ?>/components/com_hotproperty/pdf.php?id=<?php echo $prop[0]->id; ?>', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no');" onmouseover="swap_resalte('imprimir',1);" onmouseout="swap_resalte('imprimir',0);" class="enlace" id="a_imprimir"><?php echo _CMN_PDF;?></a>
+ </div>
+ <?php
+ } // End of if $hp_show_pdficon
+
+ if ($hp_show_printicon && !$pop) { ?>
+ <div class="mini_boton">
+ <a href="javascript:void window.open('<?php echo $mosConfig_live_site; ?>/index2.php?option=com_hotproperty&amp;task=view&amp;id=<?php echo $prop[0]->id; ?>&amp;pop=1', 'win2', 'status=no,toolbar=no,scrollbars=yes,menubar=no,resizable=yes,width=940,height=480,directories=no,location=no');" title="<?php echo _CMN_PRINT;?>" onmouseover="swap_resalte('imprimir',1);">
+ <img src="administrator/images/imprimir.png" alt="<?= _CMN_PRINT ?>" title="<?= _CMN_PRINT ?>" onmouseover="this.src='administrator/images/imprimir_on.png';" onmouseout="this.src='administrator/images/imprimir.png'; swap_resalte('imprimir',0);" class="bot_gestionar" id="img_imprimir"/></a>
+ </div>
+ <div class="texto_mini_boton">
+ <a href="javascript:void window.open('<?php echo $mosConfig_live_site; ?>/index2.php?option=com_hotproperty&amp;task=view&amp;id=<?php echo $prop[0]->id; ?>&amp;pop=1', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=940,height=480,directories=no,location=no');" title="<?php echo _CMN_PRINT;?>" onmouseover="swap_resalte('imprimir',1);" onmouseout="swap_resalte('imprimir',0);" class="enlace" id="a_imprimir">
+ <?= _CMN_PRINT ?></a> </div>
+
+ <?php } // End of if $hp_show_printicon
+
+ if ($hp_show_emailicon && !$pop) { ?>
+ <div class="mini_boton">
+ <a href="javascript:void window.open('<?php echo $mosConfig_live_site; ?>/index2.php?option=com_hotproperty&amp;task=emailform&amp;id=<?php echo $prop[0]->id; ?>', 'win2', 'status=no,toolbar=no,scrollbars=no,titlebar=no,menubar=no,resizable=yes,width=400,height=285,directories=no,location=no');" title="<?php echo _CMN_EMAIL;?>"><img src="administrator/images/correo.png" alt="<?= _CMN_EMAIL ?>" title="<?= _CMN_EMAIL ?>" onmouseover="this.src='administrator/images/correo_on.png';swap_resalte('correo',1);" onmouseout="this.src='administrator/images/correo.png'; swap_resalte('correo',0);" class="bot_gestionar" id="img_correo"/></a>
+ </div>
+ <div class="texto_mini_boton">
+ <a href="javascript:void window.open('<?php echo $mosConfig_live_site; ?>/index2.php?option=com_hotproperty&amp;task=emailform&amp;id=<?php echo $prop[0]->id; ?>', 'win2', 'status=no,toolbar=no,scrollbars=no,titlebar=no,menubar=no,resizable=yes,width=400,height=285,directories=no,location=no');" title="<?php echo _CMN_EMAIL;?>" onmouseover="swap_resalte('correo',1);" onmouseout="swap_resalte('correo',0);" id="a_correo">
+ <?= _HP_EMAIL_AMIGO ?></a> </div>
+ <?php } ?>
+ </div>
+ </div>
+ </div> <!-- fin div.mini_botones -->
+ </div>
+
+ <br class="clearboth">
+ <br class="clearboth">
+
+<?php
+ // Copyright © 2006, Michael Rice
+ // License: GPL but you must email when you use it to let me know and this copyright MUST remain intact.
+ // Email: meikeric {at] gmail [dot} com
+ // You can donate to my Paypal and request hacks for HotProperty. Every little bit helps.
+ // Paypal: meikeric {at] gmail [dot} com
+
+ ?>
+ <?php $iCount = count($images); ?>
+ <script language="JavaScript" type="text/javascript">
+ //for image viewer slide show
+
+ myCount = 0;
+
+ function UpdateCounter( currentCount )
+ {
+ myCount = currentCount;
+ }
+
+ function loadImgArray( strList ){
+ myImgList = strList.split(",");
+ }
+ function NextSlideShow( maxCount ){
+ if(myCount >= maxCount){
+ myCount = 0;
+ }else{
+ myCount++;
+ }
+ //alert( myImgList[myCount] );
+ show('MainPhoto',myImgList[myCount]);
+ }
+ function PrevSlideShow( maxCount ){
+ if(myCount <= 0){
+ myCount = maxCount;
+ }else{
+ myCount--;
+ }
+ //alert( myImgList[myCount] );
+ show('MainPhoto',myImgList[myCount]);
+ }
+
+ function fillLabel(inField,inValue){
+ if(inValue == ''){
+ inValue = myCount + 1;
+ }
+ if(document.layers) //NN4+
+ {
+ document.layers[inField].innerHTML = inValue;
+ }
+ else if(document.getElementById) //gecko(NN6) + IE 5+
+ {
+ var obj = document.getElementById(inField);
+ obj.innerHTML = inValue;
+ }
+ else if(document.all) // IE 4
+ {
+ document.all[inField].innerHTML = inValue;
+ }
+ }
+
+ function show(name,src) {
+ if (document.images)
+ document.images[name].src = src;
+ }
+ </script>
+
+
+ <div id="hp_view_standard_photo_con1">
+ <a href='javascript:NextSlideShow( <?php echo $iCount-1; ?>);'><img src='<?php echo $mosConfig_live_site.$hp_imgdir_standard.$images[0]->standard; ?>' name='MainPhoto' alt='Click here to view the next image' border='0' class='search01'/></a>
+ <br/>
+ <?php if (!$pop) { ?>
+ <a href='javascript:PrevSlideShow( <?php echo $iCount-1; ?> );'>< <?php echo _CMN_PREV;?></a> &nbsp;&nbsp;&nbsp;&nbsp;
+ <a href='javascript:NextSlideShow( <?php echo $iCount-1; ?> );'><?php echo _CMN_NEXT;?> ></a>
+ <?php } ?>
+
+ <script language='Javascript' type="text/javascript">
+ loadImgArray( '<?php
+ $i = 1;
+ foreach($images AS $image) {
+ echo $mosConfig_live_site.$hp_imgdir_standard.$image->standard;
+ if($iCount > 1 && $i != $iCount) {
+ echo ',';
+ }
+ $i++;
+ }
+ ?>' );
+ </script>
+ </div>
+
+ <?php foreach($prop AS $p) {
+ ?>
+<?php
+ /* Escupe los campos de manera poco flexible pero práctica (igual que en listado) */
+
+ echo '<div id="datos_inmueble">';
+
+
+ // Name (Titulo)
+ echo '<div id="titulo_inmueble">'.$p->name.'.</div>';
+
+ // Referencia propia
+ echo '<div class="linea_inmueble">';
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'._OFER_REF."</span>: ";
+ if ($p->id <> "") echo $p->id.".<br />"; else echo _OFER_NO_DEF;
+ echo '</div>';
+
+
+ // Type (Tipo de oferta)
+ echo '<div class="linea_inmueble">';
+ if (!$caption['type']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['type']->caption."</span>: ";
+ echo $p->type.".<br/>";
+ echo '</div>';
+
+ // Tipo_Alojamiento
+ echo '<div class="linea_inmueble">';
+ if (!$caption['Tipo_Alojamiento']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Tipo_Alojamiento']->caption."</span>: ";
+ if ($p->Tipo_Alojamiento<>"") echo $p->Tipo_Alojamiento.".<br/>"; else echo _OFER_NO_DEF;
+ echo '</div>';
+
+ // Address y postcode (Dirección y CP)
+ echo '<div class="linea_inmueble">';
+ if (!$caption['address']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['address']->caption."</span>: ";
+ if ($p->address<>"") echo $p->address." ".$p->postcode."<br/>"; else echo _OFER_NO_DEF;
+ echo '</div>';
+
+
+ // Barrio
+ if ( $p->Barrio <> "")
+ {
+ echo '<div class="linea_inmueble">';
+ if (!$caption['Barrio']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Barrio']->caption."</span>: ";
+ echo $p->Barrio;
+ echo '</div>';
+ }
+
+ // Suburb y State (Población y Provincia)
+ echo '<div class="linea_inmueble">';
+ if (!$caption['suburb']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['suburb']->caption."</span>: ";
+ if ($p->suburb<>"") echo $p->suburb." (".$p->state.")"."<br/>"; else echo _OFER_NO_DEF;
+ echo '</div>';
+
+ // Precio
+ if ($p->typeid == 2) // Venta
+ {
+ echo '<div class="linea_inmueble">';
+ if (!$caption['price']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['price']->caption."</span>: ";
+ if ($p->price<>"") echo number_format($p->price,2,',','.')." ".$caption['price']->append_text."<br />"; else echo _OFER_NO_DEF;
+ echo '</div>';
+ }
+
+
+ // Num_plazas
+ if ($p->typeid == 1) // Alquiler
+ {
+ echo '<div class="linea_inmueble">';
+ if (!$caption['Num_plazas']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Num_plazas']->caption."</span>: ";
+ if ($p->Num_plazas<>"") echo $p->Num_plazas.".<br />"; else echo _OFER_NO_DEF;
+ echo '</div>';
+ }
+
+ // Numero_dormitorios
+ echo '<div class="linea_inmueble">';
+ if ($p->typeid == 1) // Alquiler
+ {
+ if (!$caption['Numero_dormitorios']->hideCaption)
+ {
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Numero_dormitorios']->caption."</span>: ";
+ }
+ }
+ else
+ echo '<span class="hp_caption">&nbsp;›&nbsp;Nº habitaciones: </span>';
+
+ if ($p->Numero_dormitorios<>"") echo $p->Numero_dormitorios.".<br />"; else echo _OFER_NO_DEF;
+ echo '</div>';
+
+
+ // Cuartos_banio_con_duchas
+ echo '<div class="linea_inmueble">';
+ if (!$caption['Cuartos_banio_con_duchas']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Cuartos_banio_con_duchas']->caption."</span>: ";
+ if ($p->Cuartos_banio_con_duchas<>"") echo $p->Cuartos_banio_con_duchas.". "; else echo _OFER_NO_DEF." ";
+
+ // Aseos
+ if ($p->Aseos <> "")
+ {
+ if (!$caption['Aseos']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Aseos']->caption."</span>: ";
+ if ($p->Aseos<>"") echo $p->Aseos.".<br />"; else echo _OFER_NO_DEF;
+ }
+ echo '</div>';
+
+ // Dispone
+ echo '<div class="linea_inmueble">';
+ if (!$caption['Dispone']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Dispone']->caption."</span>: ";
+ if ($p->Dispone<>"") echo str_replace("|",", ",$p->Dispone).".<br />"; else echo _OFER_NO_DEF;
+ echo '</div>'; ?>
+
+ </div> <!-- fin capa datos_inmueble -->
+
+ <div class="hp_view_details">
+ <div id="mas_datos">
+ <div class="titulito_inmueble">Características del inmueble</div>
+ <?php
+ // Año Construcción
+ if ($p->typeid == 2) // Venta
+ {
+ echo '<div class="linea_inmueble">';
+ if (!$caption['AnioConstruccion']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['AnioConstruccion']->caption."</span>: ";
+ if ($p->AnioConstruccion <> "") echo $p->AnioConstruccion.". "; else echo _OFER_NO_DEF;
+ if (!$caption['UltimaReforma']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['UltimaReforma']->caption."</span>: ";
+ if ($p->UltimaReforma <> "") echo $p->UltimaReforma.". "; else echo _OFER_NO_DEF;
+ echo '</div>';
+ }
+
+ // Metros construidos
+ echo '<div class="linea_inmueble">';
+ if ($p->typeid == 2) // Venta
+ {
+ if (!$caption['MetrosConstruidos']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['MetrosConstruidos']->caption."</span>: ";
+ if ($p->MetrosConstruidos <> "") echo $p->MetrosConstruidos." ".$caption['Superficie_habitable']->append_text.". "; else echo _OFER_NO_DEF;
+ }
+
+ if (!$caption['Superficie_habitable']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Superficie_habitable']->caption."</span>: ";
+ echo $p->Superficie_habitable." ".$caption['Superficie_habitable']->append_text.". ";
+
+ // Superficie_parcela
+ if ($p->Superficie_parcela <> "")
+ {
+ if (!$caption['Superficie_parcela']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Superficie_parcela']->caption."</span>: ";
+ echo $p->Superficie_parcela." ".$caption['Superficie_parcela']->append_text.".";
+ }
+ echo "<br />";
+ echo '</div>';
+
+
+ if ($p->Camas_dobles <> 0 || $p->Camas_individuales <> 0 || $p->Camas_supletorias <> 0 || $p->Camas_litera <> 0)
+ echo '<div class="linea_inmueble">';
+
+
+ if ($p->typeid == 1) // Alquiler
+ {
+ // Camas_dobles
+ if ($p->Camas_dobles <> 0)
+ {
+ if (!$caption['Camas_dobles']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Camas_dobles']->caption."</span>: ";
+ echo $p->Camas_dobles.".&nbsp;&nbsp;";
+ }
+
+ // Camas_individuales
+ if ($p->Camas_individuales <> 0)
+ {
+ if (!$caption['Camas_individuales']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Camas_individuales']->caption."</span>: ";
+ echo $p->Camas_individuales.".&nbsp;&nbsp;";
+ }
+
+ // Camas_supletorias
+ if ($p->Camas_supletorias <> 0)
+ {
+ if (!$caption['Camas_supletorias']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Camas_supletorias']->caption."</span>: ";
+ echo $p->Camas_supletorias.".&nbsp;&nbsp;";
+ }
+
+ // Camas_litera
+ if ($p->Camas_litera <> 0)
+ {
+ if (!$caption['Camas_litera']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Camas_litera']->caption."</span>: ";
+ echo $p->Camas_litera.".&nbsp;&nbsp;";
+ }
+ if ($p->Camas_dobles <> 0 || $p->Camas_individuales <> 0 || $p->Camas_supletorias <> 0 || $p->Camas_litera <> 0)
+ {
+ echo "<br/>";
+ echo "</div>";
+ }
+
+ // Sofa_cama_individual
+ if ($p->Sofa_cama_individual<>"" && $p->Sofa_cama_individual<>"")
+ {
+ echo '<div class="linea_inmueble">';
+ // Sofa_cama_individual
+ if ( $p->Sofa_cama_individual <> "")
+ {
+ if (!$caption['Sofa_cama_individual']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Sofa_cama_individual']->caption."</span>: ";
+ echo $p->Sofa_cama_individual.".&nbsp;&nbsp;";
+ }
+
+ // Sofa_cama_doble
+ if ( $p->Sofa_cama_doble <> "")
+ {
+ if (!$caption['Sofa_cama_doble']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Sofa_cama_doble']->caption."</span>: ";
+ echo $p->Sofa_cama_doble.".&nbsp;&nbsp;";
+ }
+ echo "</div>";
+ }
+
+ // Superficie_terraza_solarium
+ if ($p->Superficie_terraza_solarium <> "")
+ {
+ echo '<div class="linea_inmueble">';
+ if (!$caption['Superficie_terraza_solarium']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Superficie_terraza_solarium']->caption."</span>: ";
+ echo $p->Superficie_terraza_solarium." ".$caption['Superficie_terraza_solarium']->append_text.".<br />";
+ echo "</div>";
+ }
+ }
+ // Enseres
+ echo '<div class="linea_inmueble">';
+ if (!$caption['Enseres']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Enseres']->caption."</span>: ";
+ echo str_replace("|",", ",$p->Enseres).".<br />";
+ echo '</div>';
+
+ // Animales
+ if ($p->typeid == 1) // Alquiler
+ {
+ echo '<div class="linea_inmueble">';
+ if (!$caption['Animales']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Animales']->caption."</span>: ";
+ echo $p->Animales.".<br />";
+ echo '</div>';
+ }
+
+
+ // *** Características de la zona **
+ echo '<div class="titulito_inmueble">Características de la zona</div>';
+
+ // Zona
+ echo '<div class="linea_inmueble">';
+ if (!$caption['Zona']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Zona']->caption."</span>: ";
+ echo str_replace("|",", ",$p->Zona).".<br />";
+ echo '</div>';
+
+ // ActividadesDeportivas
+ if ($p->typeid == 1) // Alquiler
+ {
+ if($caption['ActividadesDeportivas'] != '')
+ {
+ echo '<div class="linea_inmueble">';
+ if (!$caption['ActividadesDeportivas']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['ActividadesDeportivas']->caption."</span>: ";
+ echo str_replace("|",", ",$p->ActividadesDeportivas).".<br />";
+ echo '</div>';
+ }
+ }
+
+ // Distancia_a_la_playa
+ echo '<div class="linea_inmueble">';
+ if ($p->Distancia_a_la_playa <> "")
+ {
+ if (!$caption['Distancia_a_la_playa']->hideCaption)
+ echo '<span class="hp_caption">&nbsp;›&nbsp;'.$caption['Distancia_a_la_playa']->caption."</span>: ";
+ echo $p->Distancia_a_la_playa." ".$caption['Distancia_a_la_playa']->append_text.".<br />";
+ }
+ echo '</div>';
+
+ if ($p->A_minutos_andando <> "")
+ {
+ echo '<div class="linea_inmueble">';
+ echo '<span class="hp_caption">';
+ if (!$caption['A_minutos_andando']->hideCaption)
+ echo '&nbsp;›&nbsp;'.$caption['A_minutos_andando']->caption.' ';
+ echo $p->A_minutos_andando." ".$caption['A_minutos_andando']->append_text." ";
+ if (!$caption['de_andando']->hideCaption)
+ echo ' '.$caption['de_andando']->caption.' ';
+ echo $p->de_andando.".</span><br />";
+ echo '</div>';
+ }
+
+ if ($p->A_minutos_coche <> "")
+ {
+ echo '<div class="linea_inmueble">';
+ echo '<span class="hp_caption">';
+ if (!$caption['A_minutos_coche']->hideCaption)
+ echo '&nbsp;›&nbsp;'.$caption['A_minutos_coche']->caption.' ';
+ echo $p->A_minutos_coche." ".$caption['A_minutos_coche']->append_text." ";
+ if (!$caption['de_coche']->hideCaption)
+ echo ' '.$caption['de_coche']->caption.' ';
+ echo $p->de_coche.".</span><br />";
+ echo '</div>';
+ echo '<br/>';
+ }
+
+ // *** Descripción detallada ***
+ echo '<div class="titulito_inmueble">'.$caption['full_text']->caption.'</div>';
+ echo '<div class="linea_inmueble">';
+ echo '<div class="descripcion">';
+ echo $p->full_text;
+ echo '</div>';
+ echo '</div>';
+
+ // *** Disponibilidad ***
+ if ($p->typeid == 1 && $num_periodos > 0) // Alquiler
+ {
+ echo '<div class="titulito_inmueble">'.$caption['intro_text']->caption.'</div>';
+ echo '<div class="linea_inmueble">'; ?>
+ <iframe src="index2.php?option=com_hp_avl&task=ext_show_year&lang=<?php echo $_GET['lang']?>&property_id=<?php echo $p->id; ?>" name="com_hp_avl" id="com_hp_avl" width="97%" height="<?php echo (($num_periodos * 20)+580); ?>" marginwidth="0" marginheight="0" align="top" scrolling="no" frameborder="0" hspace="0" vspace="0" background="white"></iframe>
+ <div id="combo_num_anios">
+ <script language="javascript">
+ function RecargaCalendario(id,alto,num_anios,lang,property_id)
+ {
+ iframe=document.getElementById(id);
+
+ iframe.src="index2.php?option=com_hp_avl&task=ext_show_year&num_anios="+num_anios+"&lang=" +lang+"&property_id="+property_id;
+ if (num_anios > 1)
+ iframe.height=alto * 0.9 * num_anios;
+ else
+ iframe.height=alto;
+ }
+ </script>
+ <form action="" method="GET" name="calendarioForm">
+ <p>Mostrar <select name="num_anios" size="1" onChange="RecargaCalendario('com_hp_avl',<?php echo (($num_periodos * 20)+580); ?>,this.value,'<?php echo mosGetParam( $_GET, 'lang',0);?>',<?php echo $p->id; ?>);">
+ <option value="1" label="1" <?php if ($num_years==1) echo "selected"; ?>>1</option>
+ <option value="2" label="2" <?php if ($num_years==2) echo "selected"; ?>>2</option>
+ </select>
+ años.
+ <input type="hidden" name="option" value="<?php echo $option; ?>" />
+ <input type="hidden" name="task" value="ext_show_year" />
+ <input type="hidden" name="property_id" value="<?php echo $property_id; ?>" />
+ </form>
+ </div>
+ </div>
+ </div>
+ <?php }
+ } ?>
+ <br class="clearboth" />
+
+ <?php if ($hp_show_agentdetails && $hp_use_companyagent) { ?>
+ <div id="hp_view_agent_title"><span class="flecha_big">›&nbsp;</span><?php echo _HP_VIEW_AGENT_TITLE; ?></div>
+ <div id="hp_view_agent_con">
+ <?php hotproperty_HTML::show_AgentInfo($agent) ?>
+ </div>
+ <?php } ?>
+ <?php if ($hp_show_enquiryform && !$pop) { ?>
+ <br class="clearboth" />
+ <div id="hp_view_agent_contact"><span class="flecha_big">›&nbsp;</span><?php echo _HP_VIEW_AGENT_CONTACT; ?></div>
+ <div id="hp_emailform_con">
+ <?php hotproperty_HTML::show_EmailForm('property',$prop[0]->id,$prop[0]->name,$prop[0]->typeid); ?>
+ </div>
+ <?php }
+ if ($pop) {
+ ?>
+ <center><a href='javascript:window.close();'><span class="small"><?php echo _PROMPT_CLOSE;?></span></a></center>
+ <?php } ?>
+ </div>
+ <?php
+ }
+
+ /***
+ * Common Routine to display Agent's Info
+ **/
+ function show_AgentInfo($agent) {
+ global $mosConfig_live_site, $hp_imgdir_agent, $task, $Itemid, $my;
+
+ if (empty($agent)) {
+ echo _HP_AGENT_ERROR_EMPTY;
+ } else { ?>
+ <script src="components/com_hotproperty/js/resalte.js" type="text/javascript"></script>
+ <div class="hp_view_agent">
+ <div id="hp_view_agent_details">
+ <?php if (!empty($agent->photo)) { ?>
+ <div id="hp_view_agent_photo">
+ <?php if ($task <> "viewagent") { ?>
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewagent&id=$agent->id&Itemid=$Itemid"); ?>">
+ <img border="0" src="<?php echo $mosConfig_live_site.$hp_imgdir_agent.$agent->photo; ?>" alt="<?php echo $agent->name; ?>" />
+ </a>
+ <?php } else { ?>
+ <img border="0" src="<?php echo $mosConfig_live_site.$hp_imgdir_agent.$agent->photo; ?>" alt="<?php echo $agent->name; ?>" />
+ <?php } ?>
+ </div>
+ <?php } ?>
+ <div class="obj_con_botonera">
+ <div class="nombre_objeto">
+ <span id="hp_caption_agentname"><?php if ($task <> "viewagent") { ?><a id="hp_caption_agentname" href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewagent&id=$agent->id&Itemid=$Itemid"); ?>"><?php echo $agent->name; ?></a><?php } else { ?><?php echo $agent->name; ?><?php } ?></span>
+ </div>
+ <div class="botonera_dcha">
+ <?php
+ # Muestra el icono para modificar el perfil si somos el usuario adecuado
+ if ($agent->user == $my->id && $agent->user > 0 && $my->id > 0) { ?>
+ <div class="mini_boton">
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=editagent&Itemid=$Itemid"); ?>" title="<?= _HP_AGENT_MODIFY ?>"><img src="administrator/images/modif_perfil.png" alt="<?= _HP_AGENT_MODIFY ?>" title="<?= _HP_AGENT_MODIFY ?>" onmouseover="swap_resalte('modif_perfil',1);" onmouseout="swap_resalte('modif_perfil',0);" class="bot_gestionar" id="img_modif_perfil"/></a>
+ </div>
+ <div class="texto_mini_boton">
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=editagent&Itemid=$Itemid"); ?>" title="<?= _HP_AGENT_MODIFY ?>" id="a_modif_perfil" onmouseover="swap_resalte('modif_perfil',1);" onmouseout="swap_resalte('modif_perfil',0);"> <?= _HP_AGENT_MODIFY ?> </a>
+ </div>
+ <?php } ?>
+
+ <?php
+ # Muestra icono enviar email si estamos en viewagent|viewco y somos un usuario distinto
+ if( ($task == "viewagent" || $task == "viewco") && !empty($agent->email) && $agent->user != $my->id) { ; ?>
+ <div class="mini_boton">
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewagentemail&id=$agent->id&Itemid=$Itemid"); ?>"><img src="administrator/images/correo.png" alt="<?= _HP_AGENT_SENDEMAIL ?>" title="<?= _HP_AGENT_SENDEMAIL ?>" onmouseover="this.src='administrator/images/correo_on.png';swap_resalte('correo',1);" onmouseout="this.src='administrator/images/correo.png';swap_resalte('correo',0);" class="bot_gestionar" id="img_correo"/></a>
+ </div>
+ <div class="texto_mini_boton">
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewagentemail&id=$agent->id&Itemid=$Itemid"); ?>" id="a_correo" onmouseover="swap_resalte('correo',1);" onmouseout="swap_resalte('correo',0);"><?= _HP_AGENT_SENDEMAIL ?></a>
+ </div>
+ <?php } ?>
+ <?php
+ # Muestra enlace ver todas las ofertas si estamos en página detalle
+ if( $task == "view" ) { ?>
+ <div class="mini_boton">
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewagent&id=$agent->id&Itemid="); ?>"><img src="administrator/images/ver.png" alt="<?= _HP_VER_OFERTAS ?>" title="<?= _HP_VER_OFERTAS ?>" onmouseover="swap_resalte('ver',1);" onmouseout="swap_resalte('ver',0);" class="bot_gestionar" id="img_ver"/></a>
+ </div>
+ <div class="texto_mini_boton">
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewagent&id=$agent->id&Itemid="); ?>" id="a_ver" onmouseover="swap_resalte('ver',1);" onmouseout="swap_resalte('ver',0);"><?= _HP_VER_OFERTAS ?></a>
+ </div>
+ <?php } ?>
+
+ </div>
+ </div>
+ <br class="clearboth"/>
+ <br class="clearboth"/>
+
+ <?php if (!empty($agent->desc)) { ?>
+ <div id="hp_view_agent_desc"><?php echo $agent->desc; ?></div>
+ <?php } ?>
+
+ <?php
+ # Display Mobile number if not empty
+ if (!empty($agent->mobile)) { ?>
+ <span class="hp_caption"><?= _HP_AGENT_MOBILE; ?>:</span> <?= $agent->mobile; ?>.<br/>
+ <?php # Muestra disponibiblidad teléfono móvil
+ if (!empty($agent->disp_mov_from)) { ?>
+ <span class="hp_caption"><?= _HP_AGENT_DISP; ?></span> de <?= dia_semana($agent->disp_mov_from); ?> a <?= dia_semana($agent->disp_mov_to); ?> de <?= $agent->disp_mov_from_hora; ?> a <?= $agent->disp_mov_to_hora; ?>.<br/>
+ <?php }
+ } ?> <!-- fin movil -->
+
+ <?php
+ # Muestra el teléfono fijo si existe
+ if (!empty($agent->fijo)) { ?>
+ <span class="hp_caption"><?php echo _HP_AGENT_PHONE; ?>:</span> <?php echo $agent->fijo; ?>.
+ <br/>
+ <?php
+ # Muestra disponibilidad teléfono fijo
+ if (!empty($agent->disp_fijo_from)) { ?>
+ <span class="hp_caption"><?= _HP_AGENT_DISP ?></span> de <?= dia_semana($agent->disp_fijo_from); ?> a <?= dia_semana($agent->disp_fijo_to); ?> de <?= $agent->disp_fijo_from_hora; ?> a <?= $agent->disp_fijo_to_hora; ?>.<br />
+ <?php } ?> <!-- fin disponibilidad -->
+
+ <?php } ?> <!-- fin fijo -->
+
+ <?php
+ # Muestra los idiomas hablados si no está vacío
+ if (!empty($agent->idiomas_hablados)) { ?>
+ <span class="hp_caption"><?php echo _HP_AGENT_IDIOMAS; ?>:</span> <?= str_replace("|",", ",$agent->idiomas_hablados) ?>.
+ <br />
+ <?php } ?>
+ </div>
+ </div>
+ <?php
+ } // End If
+ }
+
+ /***
+ * Common Routine to display Company's Info
+ **/
+ function show_CoInfo($companies, $agent) {
+ global $mosConfig_live_site, $hp_imgdir_company, $task, $Itemid, $my;
+
+ foreach($companies AS $co) {
+ ?>
+ <div class="hp_view_co">
+ <?php if (!empty($co->photo)) { ?>
+ <div id="hp_view_co_photo"><img src="<?php echo $mosConfig_live_site.$hp_imgdir_company.$co->photo; ?>" alt="<?php echo $co->name; ?>" /></div>
+ <?php } ?>
+ <div class="obj_con_botonera">
+ <div class="nombre_objeto_corto">
+ <div id="hp_view_co_details">
+ <span id="hp_caption_coname">
+ <?php if ($task <> "viewco") { ?><a id="hp_caption_coname" href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewco&id=$co->id&Itemid=$Itemid"); ?>"><?php echo $co->name; ?></a><?php } else {
+ echo $co->name;
+ } ?></span>
+ </div>
+ <br/>
+ <div id="hp_co_addr">
+ <?php
+ if (trim($co->address)!="") {
+ echo "$co->address <br />";
+ }
+ if ((trim($co->suburb)!="") && (trim($co->state)!="") && (trim($co->postcode)!="")) {
+ echo "$co->suburb, $co->state, $co->postcode <br />";
+ } elseif ((trim($co->suburb)!="") && (trim($co->state)!="")) {
+ echo "$co->suburb, $co->state <br />";
+ } elseif ((trim($co->suburb)!="") && (trim($co->postcode)!="")) {
+ echo "$co->suburb, $co->postcode <br />";
+ } elseif ((trim($co->state)!="") && (trim($co->postcode)!="")) {
+ echo "$co->state, $co->postcode <br />";
+ } elseif ((trim($co->state)!="")) {
+ echo "$co->state <br />";
+ } elseif ((trim($co->suburb)!="")) {
+ echo "$co->suburb <br />";
+ } elseif ((trim($co->postcode)!="")) {
+ echo "$co->postcode <br />";
+ }
+ if (trim($co->country)!="") {
+ echo "$co->country <br />";
+ }
+ ?></div>
+ </div>
+ <div class="botonera_dcha">
+ <?php
+ # Show an edit icon to allow user to edit their own profile
+ if ($agent->user == $my->id && $agent->user > 0 && $my->id > 0) { ?>
+ &nbsp;
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=editagent&Itemid=$Itemid"); ?>" title="<?= _HP_AGENT_MODIFY ?>"><img src="administrator/images/editar.png" alt="<?= _HP_AGENT_MODIFY ?>" title="<?= _HP_AGENT_MODIFY ?>" onmouseover="this.src='administrator/images/editar_on.png';" onmouseout="this.src='administrator/images/editar.png'" class="bot_gestionar"/></a>
+ <?php } ?>
+
+ <?php
+ # Display "Send email link" if user at viewagent or viewco
+ if( ($task == "viewagent" || $task == "viewco") && !empty($agent->email) ) { ; ?>
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewagentemail&id=$agent->id&Itemid=$Itemid"); ?>"><img src="administrator/images/correo.png" alt="<?= _HP_AGENT_SENDEMAIL ?>" title="<?= _HP_AGENT_SENDEMAIL ?>" onmouseover="this.src='administrator/images/correo_on.png';" onmouseout="this.src='administrator/images/correo.png'" class="bot_gestionar"/></a><br />
+ <?php } ?>
+ </div> <!-- FIN div.botonera_dcha -->
+ </div> <!-- FIN div.obj_con_botonera -->
+
+ <br class="clearboth"/>
+ <div id="hp_view_co_other_data">
+ <br/>
+
+ <!-- Teléfono fijo -->
+ <?php if (!empty($co->telephone)) { ?>
+ <span class="hp_caption"><?php echo _HP_CONTACTNUMBER; ?>: </span><?php echo $co->telephone; ?>.
+ <br/>
+ <?php
+ # Muestra disponibilidad teléfono fijo
+ if (!empty($co->disp_fijo_from)) { ?>
+ <span class="hp_caption"><?= _HP_AGENT_DISP ?></span> <?= dia_semana($co->disp_fijo_from); ?> a <?= dia_semana($co->disp_fijo_to); ?> de <?= $co->disp_fijo_from_hora; ?> a <?= $co->disp_fijo_to_hora; ?>.<br />
+ <?php } ?> <!-- fin disponibilidad -->
+ <?php }?> <!-- fin teléfono fijo -->
+
+ <!-- Teléfono móvil -->
+ <?php if (!empty($co->mobile)) { ?>
+ <span class="hp_caption"><?php echo _HP_AGENT_MOBILE; ?>: </span><?php echo $co->mobile; ?><br />
+ <?php
+ # Muestra disponibilidad teléfono móvil
+ if (!empty($co->disp_mov_from)) { ?>
+ <span class="hp_caption"><?= _HP_AGENT_DISP ?></span> <?= dia_semana($co->disp_mov_from); ?> a <?= dia_semana($co->disp_mov_to); ?> de <?= $co->disp_mov_from_hora; ?> a <?= $co->disp_mov_to_hora; ?>.<br />
+ <?php } ?> <!-- fin disponibilidad -->
+ <?php }?> <!-- fin teléfono móvil -->
+
+ <?php if (!empty($co->website)) { ?>
+ <span class="hp_caption"><?php echo _HP_CO_WEBSITE; ?> </span><a href="<?php echo $co->website; ?>" target="_blank"><?php echo $co->website; ?></a><br />
+ <?php }?>
+ <?php if (!empty($co->desc)) { ?>
+ <p />
+ <?php echo $co->desc; ?>
+ <?php } ?>
+ </div>
+ <?php
+ # Muestra los idiomas hablados si no está vacío
+ if (!empty($co->idiomas_hablados)) { ?>
+ <span class="hp_caption"><?php echo _HP_AGENT_IDIOMAS; ?>:</span> <?= str_replace("|",", ",$co->idiomas_hablados) ?>.
+ <br/>
+ <?php } ?>
+
+ </div>
+ <br class="clearboth" />
+ <?php
+ }
+ }
+
+ /***
+ * Display Email form
+ ***/
+ function show_EmailForm($subject, $id, $titulo=null, $tipo_oferta=null) {
+ global $Itemid;
+
+ if ($subject <> "agent" && $subject <> "property" && $subject <> "company") return false;
+ ?>
+ <form method="POST" action="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=sendenquiry&id=".$id."&Itemid=".$Itemid); ?>">
+ <input type="hidden" name="titulo" value="<?= $titulo ?>">
+ <input type="hidden" name="tipo_oferta" value="<?= $tipo_oferta ?>">
+
+ <div class="cont_form"><div class="agent_text"><?php echo _CMN_NAME; ?>*:</div>
+ <input type="text" class="inputbox" name="hp_name" size="24" /></div>
+
+ <div class="cont_form"><div class="agent_text"><?php echo _CMN_EMAIL; ?>*:</div>
+ <input type="text" class="inputbox" name="hp_email" size="30" /></div>
+
+ <div class="cont_form"><div class="agent_text"><?php echo _HP_CONTACTNUMBER; ?>*:</div>
+ <input type="text" class="inputbox" name="hp_contactnumber" size="30" /></div>
+
+ <div class="cont_form ">
+ <span class="agent_text"><?= _HP_AGENT_DISP ?><?= _HP_AGENT_DISP_DE ?></span>
+ <select name="disp_mov_from" class="inputbox">
+ <?php $valor=$row->disp_mov_from; ?>
+ <option value='0'><?= _HP_DIA; ?></option>
+ <option value ='1'><?= _HP_L; ?></option>
+ <option value ='2'><?= _HP_M; ?></option>
+ <option value ='3'><?= _HP_X; ?></option>
+ <option value ='4'><?= _HP_J; ?></option>
+ <option value ='5'><?= _HP_V; ?></option>
+ <option value ='6'><?= _HP_S; ?></option>
+ <option value ='7'><?= _HP_D; ?></option>
+ </select>
+ <?= _HP_AGENT_DISP_A ?>
+ <select name="disp_mov_to" class="inputbox">
+ <?php $valor=$row->disp_mov_to; ?>
+ <option value='0'><?php echo _HP_DIA; ?></option>
+ <option value ='1'><?php echo _HP_L; ?></option>
+ <option value ='2'><?php echo _HP_M; ?></option>
+ <option value ='3'><?php echo _HP_X; ?></option>
+ <option value ='4'><?php echo _HP_J; ?></option>
+ <option value ='5'><?php echo _HP_V; ?></option>
+ <option value ='6'><?php echo _HP_S; ?></option>
+ <option value ='7'><?php echo _HP_D; ?></option>
+ </select>
+ <?= _HP_AGENT_DISP_DE ?>
+ <select name="disp_mov_from_hora" class="inputbox">
+ <?php $valor=$row->disp_mov_from_hora; ?>
+ <option value='0' ><?= _HP_HORA ?></option>
+ <option value ='06:00'>06:00</option>
+ <option value ='07:00'>07:00</option>
+ <option value ='08:00'>08:00</option>
+ <option value ='09:00'>09:00</option>
+ <option value ='10:00'>10:00</option>
+ <option value ='11:00'>11:00</option>
+ <option value ='12:00'>12:00</option>
+ <option value ='13:00'>13:00</option>
+ <option value ='14:00'>14:00</option>
+ <option value ='15:00'>15:00</option>
+ <option value ='16:00'>16:00</option>
+ <option value ='17:00'>17:00</option>
+ <option value ='18:00'>18:00</option>
+ <option value ='19:00'>19:00</option>
+ <option value ='20:00'>20:00</option>
+ <option value ='21:00'>21:00</option>
+ <option value ='22:00'>22:00</option>
+ <option value ='23:00'>23:00</option>
+ <option value ='00:00'>00:00</option>
+ </select>
+ <?= _HP_AGENT_DISP_A ?>
+ <select name="disp_mov_to_hora" class="inputbox">
+ <?php $valor=$row->disp_mov_to_hora; ?>
+ <option value='0' ><?= _HP_HORA ?></option>
+ <option value ='06:00'>06:00</option>
+ <option value ='07:00'>07:00</option>
+ <option value ='08:00'>08:00</option>
+ <option value ='09:00'>09:00</option>
+ <option value ='10:00'>10:00</option>
+ <option value ='11:00'>11:00</option>
+ <option value ='12:00'>12:00</option>
+ <option value ='13:00'>13:00</option>
+ <option value ='14:00'>14:00</option>
+ <option value ='15:00'>15:00</option>
+ <option value ='16:00'>16:00</option>
+ <option value ='17:00'>17:00</option>
+ <option value ='18:00'>18:00</option>
+ <option value ='19:00'>19:00</option>
+ <option value ='20:00'>20:00</option>
+ <option value ='21:00'>21:00</option>
+ <option value ='22:00'>22:00</option>
+ <option value ='23:00'>23:00</option>
+ <option value ='00:00'>00:00</option>
+ </select>
+ </div>
+
+
+ <div class="cont_form"><div class="agent_text"><?php echo _HP_SPOKEN_LANG; ?>:</div>
+ <?php
+
+ $idiomas = explode("|",_HP_IDIOMAS);
+ $hablados = explode("|",$row->idiomas_hablados);
+
+ foreach($hablados as $hablado)
+ $idiomas_hablados[$hablado]=true;
+
+
+ foreach($idiomas as $idioma) { ?>
+ <input type='checkbox' value='<?= $idioma ?>' name='habla[]'/><?= $idioma ?>
+ <?php } ?>
+ </div>
+
+
+ <?php if ( $tipo_oferta==1 ) /* Alquiler */ { ?>
+ <div class="cont_form"><div class="agent_text"><?php echo _HP_DIA_LLEGADA ?>:</div>
+ <input class="inputbox" type="text" name="dia_llegada" size="10" maxlength="10">
+ </div>
+ <div class="cont_form"><div class="agent_text"><?php echo _HP_DIA_SALIDA ?>:</div>
+ <input class="inputbox" type="text" name="dia_salida" size="10" maxlength="10">
+ </div>
+ <?php } ?>
+
+ <div class="cont_form"><div class="agent_text"><?php echo _ENQUIRY; ?>*:</div>
+ <textarea rows="4" cols="40" class="inputbox" name="hp_enquiry"></textarea>
+ <br/>
+ <input type="hidden" name="sbj" value="<?php echo $subject; ?>" />
+ <input class="button" type="submit" value="<?php echo _HP_SENDENQUIRY; ?>" /></div>
+
+ </form>
+ <?php
+ }
+
+ function sendEmailForm($id, $title) {
+ global $mosConfig_sitename;
+?>
+<script language="javascript" type="text/javascript">
+ function submitbutton() {
+ var form = document.frontendForm;
+
+ // do field validation
+ if (form.email.value == "" || form.youremail.value == "") {
+ alert( '<?php echo addslashes( _EMAIL_ERR_NOINFO ); ?>' );
+ return false;
+ }
+ return true;
+ }
+ function textCounter(field, maxlimit) {
+ if (field.value.length > maxlimit) // if too long...trim it!
+ field.value = field.value.substring(0, maxlimit);
+ }
+ </script>
+<title><?php echo $mosConfig_sitename; ?> :: <?php echo $title; ?></title>
+<body class="contentpane">
+<form action="index2.php?option=com_hotproperty&task=emailsend" name="frontendForm" method="POST" onSubmit="return submitbutton();">
+ <br/>
+ <div class="titulo"><span class="flecha_big">› </span><?php echo _EMAIL_FRIEND; ?></div>
+ <br/>
+ <div class="cont_form">
+ <div class="agent_text"><?php echo _EMAIL_FRIEND_ADDR; ?></div>
+ <input type="text" name="email" class="inputbox" size="25">
+ </div>
+ <div class="cont_form">
+ <div class="agent_text"><?php echo _EMAIL_YOUR_NAME; ?></div>
+ <input type="text" name="yourname" class="inputbox" size="25">
+ </div>
+ <div class="cont_form">
+ <div class="agent_text"><?php echo _EMAIL_YOUR_MAIL; ?></div>
+ <input type="text" name="youremail" class="inputbox" size="25">
+ </div>
+ <div class="cont_form">
+ <div class="agent_text"><?php echo _EMAIL_YOUR_MESS; ?></div>
+ <textarea name="yourmess" class="inputbox" cols="23" rows="4" onkeydown="textCounter(this.form.yourmess, 250);" onkeyup="textCounter(this.form.yourmess, 250);"></textarea>
+ </div>
+ <br/>
+ <div class="centro">
+ <input type="submit" name="submit" class="button" value="<?php echo _BUTTON_SUBMIT_MAIL; ?>">
+ <input type="button" name="cancel" value="<?php echo _BUTTON_CANCEL; ?>" class="button" onClick="window.close();"></td>
+ </div>
+ <input type="hidden" name="id" value="<?php echo $id; ?>">
+</form>
+<?php
+ }
+
+ function emailSent( $to ) {
+ global $mosConfig_sitename;
+?>
+<br />
+<?php echo _EMAIL_SENT; ?>
+<br />
+<br />
+<?php if (!$hide_js) { php?>
+ <a href='javascript:window.close();'>
+ <span class="small"><?php echo _PROMPT_CLOSE;?></span>
+ </a>
+<?php
+ }
+ }
+ /***
+ * Common Routine to display properties
+ ***/
+ function list_properties(&$prop, &$caption) {
+ global $Itemid, $task, $my, $mosConfig_live_site, $mosConfig_absolute_path;
+ global $hp_imgdir_thumb, $hp_currency, $hp_imgsize_thumb, $hp_img_noimage_thumb, $hp_thousand_sep, $hp_dec_point, $hp_link_open_newwin, $hp_show_thumb, $hp_dec_string, $hp_thousand_string;
+
+ if(empty($prop)) {
+ ?>
+ <div id="hp_error_empty">
+ <?php echo _HP_PROP_ERROR_EMPTY; ?>
+ </div>
+ <?php
+ } else {
+ foreach($prop AS $p) {
+ if ($p->thumb <> '') {
+ $thumb_imgsize = GetImageSize ($mosConfig_absolute_path.$hp_imgdir_thumb.$p->thumb);
+ } else {
+ $thumb_imgsize = GetImageSize ($mosConfig_absolute_path.$hp_imgdir_thumb.$hp_img_noimage_thumb);
+ }
+ ?>
+ <div class="hp_prop">
+ <div class="hp_details">
+ <?php if ($hp_show_thumb) { ?>
+ <div class="img_thumb"><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=view&id=$p->id&Itemid=$Itemid"); ?>"><img <?php echo $thumb_imgsize[3]; ?> border="0" src="<?php
+ if ($p->thumb <> '') echo $mosConfig_live_site.$hp_imgdir_thumb.$p->thumb;
+ else echo $mosConfig_live_site.$hp_imgdir_thumb.$hp_img_noimage_thumb;
+ ?>" alt="<?php echo $p->thumb_title ?>" /></a></div>
+ <?php } ?>
+ <div class="datos_oferta">
+ <div class="nombre_objeto">
+ <a class="hp_title" href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=view&id=$p->id&Itemid=$Itemid"); ?>"><?php echo $p->name; ?></a>
+ </div>
+ <div class="botonera_dcha">
+ <?php
+ # Show an edit icon to allow user to edit the property
+ if ($p->user == $my->id && $p->user > 0 && $my->id > 0) { ?>
+ &nbsp;
+ <a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=editprop&id=$p->id&Itemid=$Itemid"); ?>" title="<?php echo _E_EDIT; ?>"><img src="administrator/images/editar.png" alt="<?= _E_EDIT ?>" title="<?= _E_EDIT ?>" onmouseover="this.src='administrator/images/editar_on.png';" onmouseout="this.src='administrator/images/editar.png'" class="bot_gestionar"/></a>
+ <?php }
+ ?>
+ </div>
+ <br class="clearboth"/>
+ <?php
+ /* Escupe los campos de manera poco flexible pero práctica */
+ echo '<div class="columna_listado_izq">';
+ // Población
+ if (!$caption['suburb']->hideCaption)
+ echo '<span class="hp_caption">'.$caption['suburb']->caption."</span>: ";
+ echo $p->suburb.".<br />";
+ // Provincia
+ if (!$caption['state']->hideCaption)
+ echo '<span class="hp_caption">'.$caption['state']->caption."</span>: ";
+ echo $p->state.".<br />";
+
+ // Barrio
+ if (!$p->Barrio=="")
+ {
+ if (!$caption['Barrio']->hideCaption)
+
+ echo '<span class="hp_caption">'.$caption['Barrio']->caption."</span>: ";
+ echo $p->Barrio.".<br />";
+ }
+
+
+ // Nº plazas
+ if ($p->typeid == 1 && $p->Num_plazas != "")
+ {
+ if (!$caption['Num_plazas']->hideCaption)
+ echo '<span class="hp_caption">'.$caption['Num_plazas']->caption."</span>: ";
+ echo $p->Num_plazas.".<br />";
+ }
+
+ // Metros construidos
+ if ($p->MetrosConstruidos != "") // Venta
+ {
+ if (!$caption['MetrosConstruidos']->hideCaption)
+ echo '<span class="hp_caption">'.$caption['MetrosConstruidos']->caption."</span>: ";
+ echo $p->MetrosConstruidos." ".$caption['MetrosConstruidos']->append_text.".<br />";
+ }
+
+ // Año construccion
+ if ($p->AnioConstruccion != "") // Venta
+ {
+ if (!$caption['AnioConstruccion']->hideCaption)
+ echo '<span class="hp_caption">'.$caption['AnioConstruccion']->caption."</span>: ";
+ echo $p->AnioConstruccion."<br />";
+ }
+
+ // Número de dormitorios
+ if ($p->Numero_dormitorios != "") // Alquiler
+ {
+ if (!$caption['Numero_dormitorios']->hideCaption)
+ echo '<span class="hp_caption">'.$caption['Numero_dormitorios']->caption."</span>: ";
+ echo $p->Numero_dormitorios.".<br/>";
+ }
+
+ // Precio
+ if ($p->price != "0") // Venta
+ {
+ if (!$caption['price']->hideCaption)
+ echo '<span class="hp_caption">'.$caption['price']->caption."</span>: ";
+ echo number_format($p->price,2,',','.')." ".$caption['price']->append_text."<br/>";
+ }
+
+ echo '</div>';
+
+ echo '<div class="columna_listado_dcha">';
+ // Cuartos de baño
+ if (!$caption['Cuartos_banio_con_duchas']->hideCaption)
+ echo '<span class="hp_caption">'.$caption['Cuartos_banio_con_duchas']->caption."</span>: ";
+ if ($p->Cuartos_banio_con_duchas <> "")
+ echo $p->Cuartos_banio_con_duchas.". ";
+ else
+ echo _OFER_NINGUNO." ";
+ // Aseos
+ if (!$caption['Aseos']->hideCaption)
+ echo '<span class="hp_caption">'.$caption['Aseos']->caption."</span>: ";
+
+ if ($p->Aseos <> "")
+ echo $p->Aseos.".<br />";
+ else
+ echo _OFER_NINGUNO."<br />";
+ // Dispone
+ if (!$caption['Dispone']->hideCaption)
+ echo '<span class="hp_caption">'.$caption['Dispone']->caption."</span>: ";
+
+ echo str_replace("|",", ",$p->Dispone).".<br />";
+ echo '</div>';
+ ?>
+ <?php
+ echo '<br class="clearboth">';
+ // Resumen
+ # echo $p->Resumen."<br/><br/>";
+
+
+ /* Antiguo código que escupía los campos */
+ /*foreach($p as $key => $value) {
+ if ( array_key_exists($key,$caption) && ($caption[$key]->name <> 'name' && $caption[$key]->name <> 'thumb' && $caption[$key]->name <> 'thumb_title' && $caption[$key]->name <> '' && $value <> "") )
+ # Replace '|' with a comma for checkbox and select multiple fields
+ if ($caption[$key]->field_type == "checkbox" || $caption[$key]->field_type == "selectmultiple") {
+ if (!$caption[$key]->hideCaption) echo '<span class="hp_caption">'.$caption[$key]->caption."</span>: ";
+ echo str_replace("|",", ",$value).".<br />";
+ # Web Link
+ } elseif ($caption[$key]->field_type == "link") {
+
+ // Evaluate mambot style data
+ $value = str_replace( '{property_id}', $p->id, $value );
+ $value = str_replace( '{type_id}', $p->typeid, $value );
+ $value = str_replace( '{agent_id}', $p->agentid, $value );
+ $value = str_replace( '{company_id}', $p->companyid, $value );
+ $value = str_replace( '{Itemid}', $Itemid, $value );
+
+ if (!$caption[$key]->hideCaption) {
+ ?><span class="hp_caption"><?php echo $caption[$key]->caption; ?></span>: <?php }
+ echo $caption[$key]->prefix_text;
+ $link = explode("|",$value);
+ if (count($link) == 1 && ( substr(trim($link[0]),0,4) == "http" || substr(trim($link[0]),0,5) == "index" ) ) {
+ ?><a <?php echo ($hp_link_open_newwin) ? 'target="_blank" ': ''; ?>href="<?php echo $link[0]; ?>"><?php echo $link[0]; ?></a><?php
+ } elseif (count($link) > 1 && ( substr(trim($link[1]),0,4) == "http" || substr(trim($link[1]),0,5) == "index" ) ) {
+ ?><a <?php echo ($hp_link_open_newwin) ? 'target="_blank" ': ''; ?>href="<?php echo $link[1]; ?>"><?php echo $link[0]; ?></a><?php
+ } else {
+ echo $value;
+ }
+ echo $caption[$key]->prefix_text."<br />";
+
+ } else {
+ # Do not display agent field when viewing agent's properties
+ # Do not display type field when viewing type's properties
+ if ( !($key == "agent" && $task == "viewagent") && !($key =="type" && $task == "viewtype") ) {
+ # Show agent link
+ if ($key == "agent") {
+ if (!$caption[$key]->hideCaption) {
+ ?><span class="hp_caption"><?php echo $caption[$key]->caption; ?></span>: <?php
+ }
+ ?><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewagent&id=$p->agentid&Itemid=$Itemid"); ?>"><?php echo $caption[$key]->prefix_text.$value.$caption[$key]->append_text; ?></a><br /><?php
+ # Show company link
+ } elseif ($key == "company") {
+ if (!$caption[$key]->hideCaption) {
+ ?><span class="hp_caption"><?php echo $caption[$key]->caption; ?></span>: <?php }
+ ?><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewco&id=".$p->companyid."&Itemid=$Itemid"); ?>"> <?php echo $caption[$key]->prefix_text.$value.$caption[$key]->append_text; ?></a><br /> <?php
+ # Show type link
+ } elseif ($key == "type") {
+ if (!$caption[$key]->hideCaption) {
+ ?><span class="hp_caption"><?php echo $caption[$key]->caption; ?></span>: <?php }
+ ?><a href="<?php echo sefRelToAbs("index.php?option=com_hotproperty&task=viewtype&id=".$p->typeid."&Itemid=$Itemid"); ?>"> <?php echo $caption[$key]->prefix_text.$value.$caption[$key]->append_text; ?></a><br /> <?php
+ # Show Price with proper formating
+ } elseif ($key == "price") {
+ if (!$caption[$key]->hideCaption) {
+ ?><span class="hp_caption"><?php echo $caption[$key]->caption; ?></span>:<?php }
+ ?><span class="hp_price"><?php echo $caption[$key]->prefix_text.$hp_currency." ".number_format($value, $hp_dec_point, $hp_dec_string, ($hp_thousand_sep) ? $hp_thousand_string:'').$caption[$key]->append_text; ?></span><br /> <?php
+ # Show Featured as Yes/No instead of 1/0
+ } elseif ($key == "featured") {
+ if (!$caption[$key]->hideCaption) {
+ echo '<span class="hp_caption">'.$caption[$key]->caption."</span>: ";
+ }
+ echo $caption[$key]->prefix_text
+ . ( ($value == '1') ? _CMN_YES : _CMN_NO )
+ . $caption[$key]->append_text
+ . "<br />";
+ # Else, show normal 'caption: value'
+ } else {
+ if (!$caption[$key]->hideCaption) {
+ echo '<span class="hp_caption">'.$caption[$key]->caption."</span>: ";
+ }
+ echo $caption[$key]->prefix_text
+ . ( ($key=="price") ? $hp_currency." " : "" )
+ . $value
+ . $caption[$key]->append_text
+ . "<br />";
+ }
+ }
+ }
+ }*/
+
+ ?>
+ </div>
+ </div>
+
+ </div>
+ <?php
+ } // End Foreach
+ } // End If
+ }
+
+ function seleccion_fecha ( $name ) {
+ ?>
+ <?php
+ if ($name == "desde")
+ {
+ echo "<div class=\"titulo_fecha\">"._HPAVL_DESDE."&nbsp;</div>";
+ }
+ else
+ {
+ echo "<div class=\"titulo_fecha\">"._HPAVL_HASTA."&nbsp;&nbsp;</div>";
+ }
+ ?>
+ <!-- Día -->
+ <select size="1" name="<?php echo $name."_dia"; ?>" class="campo_fecha inputbox">
+ <?php
+ for ($i=1; $i<=31; $i++)
+ echo "<option value='".$i."'>".$i."</option>";
+ ?>
+ </select>
+
+ <!-- Mes -->
+ <select size="1" name="<?php echo $name."_mes"; ?>" class="campo_fecha inputbox">
+ <?php
+ for ($i=1; $i<=12; $i++)
+ echo "<option value='".$i."'>".$i."</option>";
+ ?>
+ </select>
+ <!-- Año -->
+ <select size="1" name="<?php echo $name."_año"; ?>" class="campo_fecha inputbox">
+ <?php
+ $hoy=getdate();
+ for ($i=$hoy['year']; $i<=2080; $i++)
+ echo "<option value='".$i."'>".$i."</option>";
+ ?>
+ </select>
+ <br class="clearboth"/>
+ <?php
+ }
+
+
+ function show_ResumenTipos() {
+ global $database;
+
+ # Select published types
+ $database->setQuery( "SELECT * FROM #__hp_prop_types AS t"
+ . "\nWHERE t.published='1'"
+ . "\nORDER BY t.ordering ASC");
+ $types = $database->loadObjectList();
+
+ foreach($types AS $t) { ?>
+ <a href="<?php echo sefRelToAbs('index.php?option=com_hotproperty&task=viewtype&id='.$t->id.'&Itemid='.$Itemid); ?>"><?= $t->name ?> ( <?= getNumOfertas($t->id) ?>)</a>
+ <?php }
+ }
+
+ function getNumOfertas($type_id) {
+ $database->setQuery( "SELECT id FROM #__hp_properties AS p"
+ . "\nWHERE p.type=".$type_id);
+ return $database->getNumRows();
+ }
+}
+
+
+?>
diff --git a/emacs.d/nxhtml/tests/in/zero-pi.html b/emacs.d/nxhtml/tests/in/zero-pi.html
new file mode 100644
index 0000000..6bb247c
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/zero-pi.html
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title></title>
+ </head>
+ <body>
+&#xA9; <??>
+ </body>
+</html>
diff --git a/emacs.d/nxhtml/tests/in/zn-090529-doxysample.php b/emacs.d/nxhtml/tests/in/zn-090529-doxysample.php
new file mode 100644
index 0000000..3eddd90
--- /dev/null
+++ b/emacs.d/nxhtml/tests/in/zn-090529-doxysample.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * @file doxysample.php
+ * @author Zoltán Nagy <abesto0@gmail.com>
+ * @date Fri May 29 15:28:06 2009
+ *
+ * @brief Example file commented with Doxygen (via doxymacs)
+ *
+ * Longer description of what this file is
+ * Possibly multiline
+ */
+
+
+/**
+ * Echos the parameter
+ *
+ * @param text Text to echo
+ *
+ * @return EOL message
+ */
+function say($text)
+{
+ echo $text;
+ return "I spoketh.";
+}
+?>
+
+<div>
+This is HTML, so the following has no special meaning:
+/**
+ * Fake comment
+ *
+ * @param whatever Foo
+ *
+ * @return bar
+ */
+</div>
diff --git a/emacs.d/nxhtml/tests/inemacs/bug1013.el b/emacs.d/nxhtml/tests/inemacs/bug1013.el
new file mode 100644
index 0000000..6b0aab2
--- /dev/null
+++ b/emacs.d/nxhtml/tests/inemacs/bug1013.el
@@ -0,0 +1,35 @@
+;; Setup
+(defvar word-wrap2 nil)
+(make-variable-buffer-local 'word-wrap2)
+(set-default 'word-wrap2 nil)
+
+(defcustom word-wrap3 nil
+ "doc 3"
+ :type 'boolean)
+(make-variable-buffer-local 'word-wrap3)
+(set-default 'word-wrap3 nil)
+
+(set-default 'word-wrap nil)
+(set-default 'truncate-lines nil)
+
+(put 'truncate-lines 'permanent-local t)
+(put 'word-wrap 'permanent-local t)
+(put 'word-wrap2 'permanent-local t)
+(put 'word-wrap3 'permanent-local t)
+
+(setq truncate-lines t)
+(setq word-wrap t)
+(setq word-wrap2 t)
+(setq word-wrap3 t)
+
+(kill-all-local-variables)
+
+;; Test
+(ert-should (eq (default-value 'word-wrap3) nil))
+(ert-should (eq word-wrap3 t))
+(ert-should (eq (default-value 'word-wrap2) nil))
+(ert-should (eq word-wrap2 t))
+(ert-should (eq (default-value 'truncate-lines) nil))
+(ert-should (eq truncate-lines t))
+(ert-should (eq (default-value 'word-wrap) nil))
+(ert-should (eq word-wrap t))
diff --git a/emacs.d/nxhtml/tests/mumamo-test.el b/emacs.d/nxhtml/tests/mumamo-test.el
new file mode 100644
index 0000000..ecbac10
--- /dev/null
+++ b/emacs.d/nxhtml/tests/mumamo-test.el
@@ -0,0 +1,299 @@
+;;; mumamo-test.el --- Test routines for mumamo
+;;
+;; Author: Lennart Borgman
+;; Created: Sat Mar 31 03:59:26 2007
+;; Version: 0.1
+;; Last-Updated:
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;; This file defines some test for mumamo.el and a the minor mode
+;; `mumamu-test-mode' to bind the test functions to some keys for
+;; convenient use. This will define F3 to run
+;; `mumamo-test-create-chunk-at' and Shift-F3 to
+;; `mumamo-test-create-chunks-at-all-points'.
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Change log:
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Code:
+
+;;(eval-when-compile (require 'mumamo))
+(eval-when-compile (require 'mumamo))
+(require 'whelp)
+
+;;;;;;; TESTS, run in fundamental-mode buffer
+
+(defvar mumamo-test-mode-keymap
+ (let ((map (make-sparse-keymap)))
+ (define-key map [f11] 'goto-char)
+ (define-key map [(meta f3)] 'mumamo-test-fontify-region)
+ (define-key map [(shift f3)] 'mumamo-test-create-chunks-at-all-points)
+ (define-key map [f3] 'mumamo-test-create-chunk-at-point)
+ map))
+
+(defvar mumamo-test-current-chunk-family nil)
+(make-variable-buffer-local 'mumamo-test-current-chunk-family)
+
+(define-minor-mode mumamo-test-mode
+ "For testing creating mumamo-mode chunks.
+When this mode is on the following keys are defined:
+
+ \\{mumamo-test-mode-keymap}
+
+"
+ nil
+ " MuMaMo-TEST"
+ :keymap mumamo-test-mode-keymap
+ (if mumamo-test-mode
+ (progn
+ (setq mumamo-test-current-chunk-family mumamo-current-chunk-family)
+ (setq mumamo-use-condition-case nil)
+ (setq mumamo-debugger nil)
+ (run-with-idle-timer 0 nil 'mumamo-test-tell-bindings))
+ (setq mumamo-use-condition-case t)
+ (setq mumamo-debugger (default-value 'mumamo-debugger)))
+ )
+
+(defun mumamo-test-tell-bindings ()
+ (save-match-data ;; runs in timer
+ (let ((s "mumamo-test-mode is on, use F3/shift-F3 for simple testing"))
+ (put-text-property 0 (length s)
+ 'face 'font-lock-warning-face
+ s)
+ (message "%s" s))))
+
+;;(mumamo-test-mode 1)
+
+
+;; (defun mumamo-test-fontify-buffer ()
+;; (interactive)
+;; (unless mumamo-current-chunk-family
+;; (mumamo-select-chunk-family))
+;; ;;(when mumamo-mode (mumamo-mode 0))
+;; (when mumamo-multi-major-mode (mumamo-turn-off-actions))
+;; (save-excursion
+;; (mumamo-remove-all-chunk-overlays)
+;; (mumamo-save-buffer-state nil
+;; (put-text-property (point-min) (point-max) 'face nil))
+;; (mumamo-fontify-buffer)))
+
+(defun mumamo-test-create-chunk-at-point ()
+ (interactive)
+ (remove-hook 'post-command-hook 'mumamo-post-command t)
+ (font-lock-mode -1)
+ (setq fontification-functions nil)
+ (save-excursion
+ (mumamo-remove-all-chunk-overlays)
+ (mumamo-save-buffer-state nil
+ (remove-text-properties (point-min) (point-max) '(face nil syntax-table nil)))
+ (let* ((mumamo-current-chunk-family mumamo-test-current-chunk-family)
+ (here (point))
+ chunk
+ chunk2)
+ (mumamo-save-buffer-state nil
+ ;;(setq chunk (mumamo-create-chunk-at here)))
+ (setq chunk (mumamo-find-chunks here "test1")))
+ ;;(setq chunk2 (mumamo-get-chunk-at here))
+ (setq chunk2 (mumamo-find-chunks here "set chunk2"))
+ ;;(message "mumamo-test-create-chunk-at-point.chunk 1=%s" chunk)
+ ;;(lwarn 'test-create-chunk-at :warning "chunk=%s, chunk2=%s" chunk chunk2)
+ ;;(when (overlay-buffer chunk)
+ (assert (eq chunk chunk2))
+ ;;)
+ ;;(message "mumamo-test-create-chunk-at-point.chunk 2=%s" chunk)
+ ;;(syntax-ppss-flush-cache (1- (overlay-start chunk)))
+ (syntax-ppss-flush-cache (overlay-start chunk))
+ (let ((start (overlay-start chunk))
+ (end (overlay-end chunk)))
+ ;;(setq syntax-ppss-last (cons 319 (parse-partial-sexp 1 1)))
+ ;;(message "mumamo-test-create-chunk-at-point.chunk 2a=%s" chunk)
+ (mumamo-save-buffer-state nil
+ (mumamo-fontify-region-1 start end nil)))
+ ;;(message "mumamo-test-create-chunk-at-point.chunk 3=%s" chunk)
+ (unless mumamo-test-mode (mumamo-test-mode 1))
+ ;;(message "mumamo-test-create-chunk-at-point.chunk 4=%s" chunk)
+ chunk
+ ;;(message "test 2.debugger=%s" debugger)
+ ;;(mumamo-get-chunk-at here)
+ (mumamo-find-chunks here "return value")
+ )))
+
+(defun mumamo-test-create-chunks-at-all-points ()
+ (interactive)
+ ;;(goto-char (point-min))
+ (let (last-ovl
+ this-ovl)
+ (while (< (point) (point-max))
+ ;;(setq this-ovl (mumamo-test-create-chunk-at-point))
+ (setq this-ovl (mumamo-find-chunks (point) "test loop"))
+ ;;(message "this-ovl=%s" this-ovl)
+ (sit-for 0.005)
+ ;;(sit-for 0)
+ (when last-ovl
+ (if (= (point) (overlay-end last-ovl))
+ (assert (= (overlay-end last-ovl) (overlay-start this-ovl)))
+ (assert (= (overlay-start last-ovl) (overlay-start this-ovl)))
+ (assert (= (overlay-end last-ovl) (overlay-end this-ovl)))
+ ))
+ (if last-ovl
+ (move-overlay last-ovl (overlay-start this-ovl) (overlay-end this-ovl))
+ (setq last-ovl (make-overlay (overlay-start this-ovl) (overlay-end this-ovl))))
+ (forward-char 1)
+ )
+ (message "No problems found")))
+
+(defun mumamo-test-fontify-region ()
+ (interactive)
+ (let ((font-lock-mode t))
+ ;;(mumamo-fontify-region-with (point-min) (point-max) nil 'php-mode nil)
+ (mumamo-fontify-region (point-min) (point-max) t)))
+
+;; Fix-me: can't byte compile:
+;; (defun mumamo-test-easy-make ()
+;; (interactive)
+;; (let ((start-str "--Start Submode:")
+;; (end-str "--End Submode--")
+;; (start-reg nil))
+;; (setq start-reg
+;; ;; (rx
+;; ;; (eval start-str)
+;; ;; (0+ space)
+;; ;; (submatch
+;; ;; (0+ (any "a-z-")))
+;; ;; (0+ space)
+;; ;; "--"
+;; ;; )
+;; (rx-to-string
+;; `(and
+;; ,start-str
+;; (0+ space)
+;; (submatch
+;; (0+ (any "a-z-")))
+;; (0+ space)
+;; "--"
+;; ))
+;; )
+;; (mumamo-easy-make-chunk-fun testchunk
+;; start-str
+;; start-reg
+;; end-str))
+;; (setq mumamo-current-chunk-family
+;; (list "testing"
+;; 'text-mode
+;; (list
+;; 'testchunk
+;; ))))
+
+;; (defun mumamo-test-emb-perl ()
+;; (interactive)
+;; (let ((start-str "[-")
+;; (end-str "-]")
+;; (start-reg nil))
+;; (mumamo-easy-make-chunk-fun testchunk-ep
+;; start-str
+;; start-reg
+;; end-str))
+;; (setq mumamo-current-chunk-family
+;; (list "emb perl test"
+;; 'perl-mode
+;; (list
+;; 'testchunk-ep
+;; ))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; These are for testing bad initialization in mumamo. They can be
+;; used for example with php-mode. (They are mainly for development
+;; purposes.)
+;;
+;; (mumamo-bad-c-init)
+(defun mumamo-bad-c-init() (/ 1 0))
+(defun mumamo-setup-bad-c-init ()
+ (interactive)
+ (add-hook 'c-mode-common-hook 'mumamo-bad-c-init))
+(defun mumamo-teardown-bad-c-init ()
+ (interactive)
+ (remove-hook 'c-mode-common-hook 'mumamo-bad-c-init))
+
+
+;; (defmacro mumamo-get-backtrace (bodyform)
+;; "Evaluate BODYFORM, return backtrace as a string.
+;; If there is an error in BODYFORM then return the backtrace as a
+;; string, otherwise return nil."
+;; `(let* ((debugger-ret nil)
+;; (debugger (lambda (&rest debugger-args)
+;; (message "DEBUGGER CALLED BEFORE")
+;; (setq debugger-ret (with-output-to-string (backtrace)))
+;; (message "DEBUGGER CALLED AFTER, debugger-ret=%s" debugger-ret)
+;; ))
+;; (debug-on-error t)
+;; (debug-on-signal t)
+;; )
+;; (condition-case err
+;; (progn
+;; ,bodyform
+;; nil)
+;; (error
+;; (message "err=%S" err)
+;; (message "debugger-ret=%S\n\n\n" debugger-ret)
+;; (let* ((errmsg (error-message-string err))
+;; (debugger-lines (split-string debugger-ret "\n"))
+;; (dbg-ret (mapconcat 'identity (nthcdr 6 debugger-lines) "\n")))
+;; (concat errmsg "\n" dbg-ret))))))
+
+;; (defun mumamo-test3-debug()
+;; (interactive)
+;; (message "%s"
+;; (mumamo-get-backtrace
+;; (mumamo-test-major-mode-init 'php-mode))))
+
+;; (defun mumamo-test2-debug()
+;; (interactive)
+;; (mumamo-condition-case var
+;; (mumamo-test-major-mode-init 'php-mode)
+;; handlers))
+
+(defun mumamo-test-debug()
+ (interactive)
+ (condition-case err
+ (let ((debugger 'mumamo-debug)
+ (debug-on-error t)
+ (debug-on-signal t))
+ ;;(message "here d")(sit-for 1)
+ (mumamo-test-major-mode-init 'php-mode))
+ (error (message "here 2 err=%S" err))))
+
+(defun mumamo-debug (&rest debugger-args)
+ (let ((s (with-output-to-string (backtrace))))
+ (message "mumamo-debug: %s" s)))
+
+;; (defun mumamo-bt-to-msg (msg)
+;; (mumamo-msgfntfy "%s: %s" msg
+;; (with-output-to-string
+;; (backtrace))))
+
+(defun mumamo-test-major-mode-init (major)
+ "Turn on major mode MAJOR in a temp buffer.
+This function should be used after getting errors during
+fontification where the message in the *Message* buffer tells
+that you should call it to get a traceback.
+
+Send the traceback you get, if any, together with the message in
+the message buffer when reporting the error."
+ (interactive "CMajor mode: ")
+ (with-temp-buffer
+ ;;(setq mumamo-explicitly-turned-on-off t)
+ (setq debug-on-error t)
+ (funcall major)))
+
+(provide 'mumamo-test)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; mumamo-test.el ends here
diff --git a/emacs.d/nxhtml/tests/nxhtmltest-Q.el b/emacs.d/nxhtml/tests/nxhtmltest-Q.el
new file mode 100644
index 0000000..b89857d
--- /dev/null
+++ b/emacs.d/nxhtml/tests/nxhtmltest-Q.el
@@ -0,0 +1,114 @@
+;;; test-Q.el --- Run test from a fresh Emacs
+;;
+;; Author: Lennart Borgman (lennart O borgman A gmail O com)
+;; Created: 2008-07-08T23:05:40+0200 Tue
+;; Version: 0.1
+;; Last-Updated: 2008-07-09T00:17:26+0200 Tue
+;; URL:
+;; Keywords:
+;; Compatibility:
+;;
+;; Features that might be required by this library:
+;;
+;; Required feature `test-Q' was not provided.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;; Defines `nxhtmltest-Q'.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Change log:
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; 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:
+
+(eval-when-compile (require 'cl))
+(eval-when-compile (require 'ourcomments-util))
+
+(eval-and-compile
+ (defvar nxhtmltest-bin-Q
+ (file-name-directory (or load-file-name
+ (when 'bytecomp-filename bytecomp-filename)
+ buffer-file-name)))
+
+ (add-to-list 'load-path nxhtmltest-bin-Q)
+ (require 'nxhtmltest-helpers))
+
+;;;###autoload
+(defun nxhtmltest-run-Q ()
+ "Run all tests defined for nXhtml in fresh Emacs.
+See `nxhtmltest-run' for more information about the tests."
+ (interactive)
+ (let* ((test-el (expand-file-name "nxhtmltest-suites.el" nxhtmltest-bin-Q))
+ (nxhtml-auto-start (expand-file-name "../autostart.el" nxhtmltest-bin-Q))
+ (temp-eval-file (expand-file-name "temp-test.el" nxhtmltest-bin-Q))
+ (temp-eval-buf (find-file-noselect temp-eval-file))
+ (load-path load-path))
+ ;;(load (expand-file-name "nxhtmltest-helpers" nxhtmltest-bin-Q))
+ (add-to-list 'load-path nxhtmltest-bin-Q)
+ (require 'nxhtmltest-helpers)
+ (nxhtmltest-get-fontification-method)
+ (with-current-buffer temp-eval-buf
+ (erase-buffer)
+ (insert "(setq debug-on-error t)\n"
+ "(eval-when-compile (require 'cl))\n"
+ "(delete-other-windows)\n"
+ "(eval-after-load 'nxhtml '(setq nxhtml-skip-welcome t))\n"
+ (format "(setq nxhtmltest-default-fontification-method '%s)\n"
+ nxhtmltest-default-fontification-method)
+ ))
+ (when (featurep 'ruby-mode)
+ (with-current-buffer temp-eval-buf
+ (insert "(pushnew \""
+ (file-name-directory (locate-library "ruby-mode"))
+ "\" load-path)")))
+ (with-current-buffer temp-eval-buf
+ (save-buffer))
+ (kill-buffer temp-eval-buf)
+ (unless (file-exists-p nxhtmltest-bin-Q)
+ (error "Can't find directory %s" nxhtmltest-bin-Q))
+ (setq nxhtmltest-bin-Q (file-name-sans-extension nxhtmltest-bin-Q))
+ (unless (file-exists-p test-el)
+ (error "Can't find file %s" test-el))
+ (setq test-el (file-name-sans-extension test-el))
+ (unless (file-exists-p nxhtml-auto-start)
+ (error "Can't find file %s" nxhtml-auto-start))
+ (setq nxhtml-auto-start (file-name-sans-extension nxhtml-auto-start))
+ (message "nxhtmltest-bin-Q=%s" nxhtmltest-bin-Q)
+ (message "nxhtml-auto-start=%s" nxhtml-auto-start)
+ (setenv "nxhtmltest-run-Q" "run")
+ (message "After setenv nxhtmltest-run-Q=%s" (getenv "nxhtmltest-run-Q"))
+ (message "(ourcomments-find-emacs) => %s" (ourcomments-find-emacs))
+ (call-process (ourcomments-find-emacs) nil 0 nil "-Q"
+ "-l" temp-eval-file
+ "-l" nxhtml-auto-start
+ "-l" test-el)
+ (message "After call-process")
+ (setenv "nxhtmltest-run-Q")
+ (message "Starting new Emacs instance for test - it will be ready soon ...")))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; nxhtmltest-Q.el ends here
diff --git a/emacs.d/nxhtml/tests/nxhtmltest-helpers.el b/emacs.d/nxhtml/tests/nxhtmltest-helpers.el
new file mode 100644
index 0000000..b05a6ca
--- /dev/null
+++ b/emacs.d/nxhtml/tests/nxhtmltest-helpers.el
@@ -0,0 +1,156 @@
+;;; nxhtmltest-helpers.el --- Helper functions for testing
+;;
+;; Author: Lennart Borgman (lennart O borgman A gmail O com)
+;; Created: 2008-07-08T19:10:54+0200 Tue
+;; Version: 0.2
+;; Last-Updated: 2008-09-01T01:13:15+0200 Sun
+;; URL:
+;; Keywords:
+;; Compatibility:
+;;
+;; Features that might be required by this library:
+;;
+;; `button', `help-fns', `help-mode', `view'.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Change log:
+;;
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; 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:
+
+(eval-when-compile (require 'cl))
+(require 'ert2)
+
+(defun nxhtmltest-goto-line (line)
+ (save-restriction
+ (widen)
+ (goto-char (point-min))
+ (forward-line (1- line))))
+
+(defun nxhtmltest-mumamo-error-messages ()
+ (ert-get-messages "^MU:MuMaMo error"))
+
+(defun nxhtmltest-should-no-mumamo-errors ()
+ (ert-should (not (nxhtmltest-mumamo-error-messages))))
+
+(defun nxhtmltest-should-no-nxml-errors ()
+ (ert-should (not (ert-get-messages "Internal nXML mode error"))))
+
+(defun nxhtmltest-be-really-idle (seconds &optional prompt-mark)
+ (unless prompt-mark (setq prompt-mark ""))
+ (with-timeout (4 (message "<<<< %s - not really idle any more at %s"
+ prompt-mark
+ (format-time-string "%H:%M:%S")))
+ (let ((prompt (format
+ ">>>> %s Starting beeing really idle %s seconds at %s"
+ prompt-mark
+ seconds
+ (format-time-string "%H:%M:%S ..."))))
+ (message "%s" prompt)
+ (read-minibuffer prompt)
+ (redisplay))))
+
+;;(nxhtmltest-be-really-idle 4 "HERE I AM!!")
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Fontification methods
+
+(defvar nxhtmltest-default-fontification-method nil)
+
+(defun nxhtmltest-get-fontification-method ()
+ "Ask user for default fontification method."
+ (let* ((collection
+ '(
+ ("Fontify as usual (wait)" fontify-as-usual)
+ ("Fontify by calling timer handlers" fontify-w-timer-handlers)
+ ("Fontify ps print " fontify-as-ps-print)
+ ("Call fontify-buffer" fontify-buffer)
+ ))
+ (hist (mapcar (lambda (rec)
+ (car rec))
+ collection))
+ (method-name (or t
+ (completing-read "Default fontification method: "
+ collection nil t
+ (car (nth 1 collection))
+ 'hist))))
+ (setq nxhtmltest-default-fontification-method
+ ;;(nth 1 (assoc method-name collection))
+ ;;'fontify-w-timer-handlers
+ 'fontify-as-ps-print
+ )))
+
+(defun nxhtmltest-fontify-as-usual (seconds prompt-mark)
+ (font-lock-mode 1)
+ ;; This does not work now since I deleted the function below:
+ (error "font-lock-wait not defined")
+ ;;(font-lock-wait (nxhtmltest-be-really-idle seconds prompt-mark))
+ )
+
+(defun nxhtmltest-fontify-w-timers-handlers ()
+ ;;(dolist (timer (copy-list timer-idle-list))
+ (dolist (timer (copy-sequence timer-idle-list))
+ (timer-event-handler timer))
+ (redisplay t))
+
+(declare-function jit-lock-fontify-now "jit-lock" (&optional start end))
+(declare-function lazy-lock-fontify-region "lazy-lock" (beg end))
+
+;; to avoid compilation gripes
+;;(defun ps-print-ensure-fontified (start end)
+(defun nxhtmltest-fontify-as-ps-print()
+ (save-restriction
+ (widen)
+ (let ((start (point-min))
+ (end (point-max)))
+ (cond ((and (boundp 'jit-lock-mode) (symbol-value 'jit-lock-mode))
+ (jit-lock-fontify-now start end))
+ ((and (boundp 'lazy-lock-mode) (symbol-value 'lazy-lock-mode))
+ (lazy-lock-fontify-region start end))))))
+
+(defun nxhtmltest-fontify-buffer ()
+ (font-lock-fontify-buffer)
+ (redisplay t))
+
+(defun nxhtmltest-fontify-default-way (seconds &optional pmark)
+ ;;(assert (not font-lock-mode))
+ (case nxhtmltest-default-fontification-method
+ (fontify-as-usual (nxhtmltest-fontify-as-usual seconds pmark))
+ (fontify-w-timer-handlers (nxhtmltest-fontify-w-timers-handlers))
+ (fontify-as-ps-print (nxhtmltest-fontify-as-ps-print))
+ (fontify-buffer (nxhtmltest-fontify-buffer))
+ (t (error "Unrecognized default fontification method: %s"
+ nxhtmltest-default-fontification-method))))
+
+
+
+(provide 'nxhtmltest-helpers)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; nxhtmltest-helpers.el ends here
diff --git a/emacs.d/nxhtml/tests/nxhtmltest-suites.el b/emacs.d/nxhtml/tests/nxhtmltest-suites.el
new file mode 100644
index 0000000..5af8ab8
--- /dev/null
+++ b/emacs.d/nxhtml/tests/nxhtmltest-suites.el
@@ -0,0 +1,632 @@
+;;; nxhtmltest-suites.el --- Test suites for mumamo / nXhtml
+;;
+;; Author: Lennart Borgman (lennart O borgman A gmail O com)
+;; Created: 2008-07-08T20:17:36+0200 Tue
+;; Version: 0.12
+;; Last-Updated: 2008-09-01T01:13:28+0200 Sun
+;; URL:
+;; Keywords:
+;; Compatibility:
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;; Defines `nxhtmltest-run'. When (getenv "nxhtmltest-run-Q")
+;; returns non-nil also runs this function.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Change log:
+;;
+;; Added code from Christian Ohler for writing ert tests.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; 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:
+
+;;(eval-when-compile (require 'cl))
+(eval-when-compile (require 'cl))
+(eval-when-compile (require 'rng-valid))
+(eval-when-compile (require 'rngalt))
+(require 'mumamo)
+(require 'mumamo-fun)
+(require 'nxhtml)
+(require 'nxhtml-mumamo)
+(when (fboundp 'nxml-mode)
+ (require 'rng-valid)
+ (require 'rngalt))
+
+(setq debug-on-error t)
+
+(defvar nxhtmltest-ert-default-selector "nxhtml-ert-"
+ "Set this to run a single test with `nxhtmltest-run-Q'.")
+
+(defvar nxhtmltest-bin
+ (file-name-directory (if load-file-name load-file-name buffer-file-name)))
+
+(pushnew nxhtmltest-bin load-path)
+(require 'nxhtmltest-helpers)
+;;(require 'ert)
+
+(defvar nxhtmltest-files-root
+ (let* ((this-dir nxhtmltest-bin)
+ (root (expand-file-name "in/" this-dir)))
+ (unless (file-accessible-directory-p root)
+ (error (if (file-exists-p root)
+ "Can't read files in test directory %s"
+ "Can't find test directory %s")
+ root))
+ root))
+
+(let ((distr-in "c:/EmacsW32/nxhtml/tests/in/"))
+ (when (file-directory-p distr-in)
+ (setq nxhtmltest-files-root distr-in)))
+
+;; (setq nxhtmltest-update-method
+;; ;;'font-lock-wait
+;; 'font-lock-run-timers
+;; ;;'font-lock-fontify-buffer
+;; )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Define tests using ert.el
+
+(ert-deftest nxhtml-ert-bug531328 ()
+ "Test of eRuby chunks with nothing between."
+ (ert-with-temp-buffer-include-file "bug531328.rhtml"
+ (add-hook 'ert-simulate-command-post-hook
+ 'nxhtmltest-should-no-mumamo-errors
+ nil t)
+ (ert-simulate-command '(eruby-html-mumamo-mode) t)
+ (nxhtmltest-get-fontification-method)
+ (nxhtmltest-fontify-default-way 2 "trans")
+ (ert-simulate-command '(goto-char 12) t)
+ (ert-should (eq major-mode 'ruby-mode))
+ ))
+
+(ert-deftest nxhtml-ert-indent-bug-johan-2010-02-17()
+ "Test of eRuby indentation.
+Got a bug report by mail on the emacs-on-rails list."
+ (ert-with-temp-buffer-include-file "bug-johan-2010-02-17.erb"
+ (add-hook 'ert-simulate-command-post-hook
+ 'nxhtmltest-should-no-mumamo-errors
+ nil t)
+ (ert-simulate-command '(eruby-html-mumamo-mode) t)
+ (nxhtmltest-fontify-default-way 2 "trans")
+ (ert-simulate-command '(mark-whole-buffer) t)
+ (ert-simulate-command '(indent-for-tab-command) t)
+ (nxhtmltest-goto-line 1) (ert-should (= 0 (current-indentation)))
+ (nxhtmltest-goto-line 2) (ert-should (= 2 (current-indentation)))
+ (nxhtmltest-goto-line 3) (ert-should (= 0 (current-indentation)))
+ ))
+
+(ert-deftest nxhtml-ert-indent-bug-johan-2010-02-12()
+ "Test of eRuby indentation.
+Got a bug report by mail on the emacs-on-rails list."
+ (ert-with-temp-buffer-include-file "bug-johan-2010-02-12.rhtml"
+ (add-hook 'ert-simulate-command-post-hook
+ 'nxhtmltest-should-no-mumamo-errors
+ nil t)
+ (ert-simulate-command '(eruby-html-mumamo-mode) t)
+ (nxhtmltest-fontify-default-way 2 "trans")
+ (ert-simulate-command '(mark-whole-buffer) t)
+ (ert-simulate-command '(indent-for-tab-command) t)
+ (nxhtmltest-goto-line 12) (ert-should (= 2 (current-indentation)))
+ ))
+
+;;(setq nxhtmltest-ert-default-selector "nxhtml-ert-indent-rr-min8")
+(ert-deftest nxhtml-ert-indent-rr-min8 ()
+ "Test of indentation bug.
+As per Richard Riley's bug report 2009-10-08. Last line gave an
+error."
+ (ert-with-temp-buffer-include-file "rr-min8.php"
+ (add-hook 'ert-simulate-command-post-hook
+ 'nxhtmltest-should-no-mumamo-errors
+ nil t)
+ (ert-simulate-command '(nxhtml-mumamo-mode) t)
+ (nxhtmltest-fontify-default-way 2 "trans")
+ (ert-simulate-command '(mark-whole-buffer) t)
+ (ert-simulate-command '(indent-for-tab-command) t)))
+
+;;(setq nxhtmltest-ert-default-selector "nxhtml-ert-bug-400415")
+(ert-deftest nxhtml-ert-bug-400415-foo2 ()
+ "Test for changes before in-here-doc using 400415.
+See URL `https://bugs.launchpad.net/nxhtml/+bug/400415'. This is
+not the bug reported there however."
+ (ert-with-temp-buffer-include-file "bug400415-foo2.php"
+ (add-hook 'ert-simulate-command-post-hook
+ 'nxhtmltest-should-no-mumamo-errors
+ nil t)
+ (ert-simulate-command '(nxhtml-mumamo-mode) t)
+ (nxhtmltest-fontify-default-way 2 "trans")
+ (ert-simulate-command '(goto-char 74) t)
+ (ert-should (eq major-mode 'sql-mode))
+ (ert-simulate-command '(goto-char 23) t)
+ (ert-simulate-command '(backward-delete-char-untabify 1) t)
+ (ert-simulate-command '(goto-char 74) t)
+ (ert-should (eq major-mode 'sql-mode))
+ ))
+
+(ert-deftest nxhtml-ert-bug-300946-index ()
+ "Test for bug 300946 in Launchpad.
+See URL `https://bugs.launchpad.net/nxhtml/+bug/300946'. This is
+a test for the file attached by Chris on 2008-12-02."
+ (ert-with-temp-buffer-include-file "bug-300946-index.html"
+ (add-hook 'ert-simulate-command-post-hook
+ 'nxhtmltest-should-no-mumamo-errors
+ nil t)
+ (ert-simulate-command '(nxhtml-mumamo-mode) t)
+ (font-lock-mode 1)
+ ))
+
+(ert-deftest nxhtml-ert-indent-bug290364 ()
+ "Test for bug 290364 in Launchpad.
+See URL `https://bugs.launchpad.net/nxhtml/+bug/290364'.
+
+Note: If this test fails Emacs loops. Therefore the whole test
+is included in a when clause so you can avoid it easily."
+ ;;(when t
+ (ert-with-temp-buffer-include-file "bug-290364.php"
+ (add-hook 'ert-simulate-command-post-hook
+ 'nxhtmltest-should-no-mumamo-errors
+ nil t)
+ (ert-simulate-command '(nxhtml-mumamo-mode) t)
+ (font-lock-mode 1)
+ ))
+;)
+
+(ert-deftest nxhtml-ert-indent-bug271497 ()
+ "Test for bug 271497 in Launchpad.
+This is a bug in Emacs 22. It should work in Emacs 23 though.
+See URL `https://bugs.launchpad.net/nxhtml/+bug/271497'."
+ (ert-with-temp-buffer-include-file "bug271497.txt"
+ (add-hook 'ert-simulate-command-post-hook
+ 'nxhtmltest-should-no-mumamo-errors
+ nil t)
+ (load-file (ert-get-test-file-name "bug271497.el"))
+ (ert-simulate-command '(bug271497-mumamo) t)
+ ;;(font-lock-mode 1)
+ (nxhtmltest-fontify-default-way 2 "trans")
+ (ert-simulate-command '(goto-char 42) t)
+ (message "after goto-char 42")
+ (let ((ac42 after-change-functions)
+ ac88)
+ (ert-simulate-command '(goto-char 88) t)
+ (message "after goto-char 88")
+ (setq ac88 after-change-functions)
+ (ert-should (not (equal ac88 ac42))))))
+
+(ert-deftest nxhtml-ert-indent-question43320 ()
+ "Test for question 43320 in Launchpad.
+See URL `https://answers.launchpad.net/nxhtml/+question/43320'.
+
+Note: This fails in Emacs 22, but should work in Emacs 23."
+;; I did see some problem here:
+
+;; - nXhtml 081222 + unpatched Emacs 081219 => ok
+;; - nXhtml 081222 + unpatched Emacs 081124 => ok
+;; - nXhtml 081222 + patched Emacs 081219 => ok
+
+;; - nXhtml 081222 + patched Emacs 081124 => ok, but it fails if I
+;; use `nxhtmltest-run-Q'! I e, it fails if the autostart.el from
+;; the nxhtml dir in 081222 is used - but not if the copy in
+;; c:/EmacsW32 is used??? Which turned out to be if the old
+;; php-mode was used ...
+
+ (ert-with-temp-buffer-include-file "question43320.html"
+ (add-hook 'ert-simulate-command-post-hook
+ 'nxhtmltest-should-no-mumamo-errors
+ nil t)
+ (ert-simulate-command '(nxhtml-mumamo-mode) t)
+ (font-lock-mode 1)
+ (nxhtmltest-goto-line 25) (ert-should (/= 14 (current-indentation)))
+ (put 'mumamo-submode-indent-offset-0 'permanent-local t)
+ (put 'mumamo-submode-indent-offset 'permanent-local t)
+ ;;
+ ;;(set (make-local-variable 'mumamo-submode-indent-offset-0) nil)
+ (set (make-local-variable 'mumamo-submode-indent-offset-0) 0)
+ (set (make-local-variable 'mumamo-submode-indent-offset) nil)
+ ;;(set (make-local-variable 'mumamo-submode-indent-offset) 2)
+ (ert-simulate-command '(mark-whole-buffer) t)
+ (ert-simulate-command '(indent-for-tab-command) t)
+ (nxhtmltest-goto-line 8) (ert-should (= 8 (current-indentation)))
+ (nxhtmltest-goto-line 9) (ert-should (= 0 (current-indentation)))
+ (nxhtmltest-goto-line 15) (ert-should (= 8 (current-indentation)))
+ (nxhtmltest-goto-line 16) (ert-should (= 8 (current-indentation)))
+ (nxhtmltest-goto-line 22) (ert-should (= 6 (current-indentation)))
+ (nxhtmltest-goto-line 25) (ert-should (= 4 (current-indentation)))
+ (nxhtmltest-goto-line 8) (indent-line-to 0)
+ ;;(message "before indent-for-tab-command")
+ (ert-simulate-command '(indent-for-tab-command) t)
+ ;;(message "after indent-for-tab-command")
+ (ert-should (= 8 (current-indentation)))
+ ;;
+ (set (make-local-variable 'mumamo-submode-indent-offset-0) 0)
+ (set (make-local-variable 'mumamo-submode-indent-offset) 2)
+ (ert-simulate-command '(mark-whole-buffer) t)
+ (ert-simulate-command '(indent-for-tab-command) t)
+ (nxhtmltest-goto-line 8) (ert-should (= 8 (current-indentation)))
+ (nxhtmltest-goto-line 9) (ert-should (= 10 (current-indentation)))
+ (nxhtmltest-goto-line 15) (ert-should (= 8 (current-indentation)))
+ (nxhtmltest-goto-line 16) (ert-should (= 8 (current-indentation)))
+ (nxhtmltest-goto-line 22) (ert-should (= 16 (current-indentation)))
+ (nxhtmltest-goto-line 25) (ert-should (= 14 (current-indentation)))
+ ))
+
+(ert-deftest nxhtml-ert-only-php-no-end ()
+ "Check for nXml error."
+ (ert-with-temp-buffer-include-file "no-php-end-4.php"
+ (nxhtml-mumamo-mode)
+ (run-hooks 'after-change-major-mode-hook)
+ (run-hooks 'post-command-hook)
+ (nxhtmltest-fontify-default-way 2 "trans")
+ (rng-validate-mode 1)
+ ;;(rngalt-validate)
+ (ert-should (eq rng-validate-mode t))
+ (nxhtmltest-should-no-mumamo-errors)
+ (nxhtmltest-should-no-nxml-errors)
+ (goto-char 324)
+ (message "before insert, after-change-functions local=%s" after-change-functions)
+ (insert "\n")
+ (nxhtmltest-should-no-mumamo-errors)
+ (nxhtmltest-should-no-nxml-errors)))
+
+(ert-deftest nxhtml-ert-xhtml-1.0-transitional ()
+ "Test XHTML 1.0 Transitional with `nxhtml-mumamo-mode'.
+NOTICE: This test SHOULD FAIL because there is currently no rng
+schema for transitional. The schema for strict is used instead
+and the file is invalid then."
+ (ert-with-temp-buffer-include-file "lg-080813-label.html"
+ (nxhtml-mumamo-mode)
+ (nxhtmltest-fontify-default-way 2 "trans")
+ (rng-validate-mode 1)
+ (rngalt-validate)
+ (ert-should (eq rng-validate-mode t))
+ (nxhtmltest-should-no-mumamo-errors)
+;;; (ert-should
+;;; (not (eq (get-char-property 398 'category)
+;;; 'rng-error)))
+ (ert-should
+ (eq (get-text-property 398 'face)
+ 'font-lock-function-name-face))
+ (ert-should-not
+ (= 0 rng-error-count))
+ ))
+
+(ert-deftest nxhtml-ert-genshi-valid-in-genshi ()
+ (ert-with-temp-buffer-include-file "genshi-auto-mode.html"
+ (message "\n")
+ (genshi-nxhtml-mumamo-mode)
+ (font-lock-mode 1)
+ (mumamo-post-command)
+ (ert-should (eq font-lock-mode t))
+ (ert-should (eq major-mode 'nxhtml-genshi-mode))
+ (ert-should
+ (memq mumamo-multi-major-mode '(genshi-nxhtml-mumamo-mode
+ genshi-html-mumamo-mode)))
+ (nxhtmltest-fontify-default-way 2 "sheit")
+ (rng-validate-mode 1)
+ (rngalt-validate)
+ (ert-should (eq rng-validate-mode t))
+ (nxhtmltest-should-no-mumamo-errors)
+ (ert-should
+ (= 0 rng-error-count))))
+
+(ert-deftest nxhtml-ert-genshi-invalid-in-nxhtml ()
+ (ert-with-temp-buffer-include-file "genshi-auto-mode.html"
+ (message "\n")
+ (nxhtml-mumamo-mode)
+ (nxhtmltest-fontify-default-way 2 "sheit")
+ (font-lock-mode 1)
+ (mumamo-post-command)
+ (rng-validate-mode 1)
+ (rngalt-validate)
+ (ert-should (eq rng-validate-mode t))
+ (nxhtmltest-should-no-mumamo-errors)
+ (ert-should
+ (= 2 rng-error-count))))
+
+(ert-deftest nxhtml-ert-genshi-magic-mode ()
+ "Test if genshi file is recognized."
+ (let ((file1 (ert-get-test-file-name "genshi-auto-mode.html"))
+ buf1)
+ ;; Ensure we open the files
+ (setq buf1 (find-buffer-visiting file1))
+ (when buf1 (kill-buffer buf1))
+ ;; Open file 1
+ (setq buf1 (find-file file1))
+ (nxhtmltest-fontify-default-way 2 "mod")
+ (nxhtmltest-should-no-mumamo-errors)
+ (ert-should
+ (with-current-buffer buf1
+ (memq mumamo-multi-major-mode '(genshi-nxhtml-mumamo-mode
+ genshi-html-mumamo-mode))))
+ (kill-buffer buf1)))
+
+(ert-deftest nxhtml-ert-genshi-auto-mode ()
+ "Test if file extension .ghtml is recognized."
+ (let ((file1 (ert-get-test-file-name "genshi-HelloWorldPage.ghtml"))
+ buf1)
+ ;; Ensure we open the files
+ (setq buf1 (find-buffer-visiting file1))
+ (when buf1 (kill-buffer buf1))
+ ;; Open file 1
+ (setq buf1 (find-file file1))
+ (nxhtmltest-fontify-default-way 2 "mod")
+ (nxhtmltest-should-no-mumamo-errors)
+ (ert-should
+ (with-current-buffer buf1
+ (memq mumamo-multi-major-mode '(genshi-nxhtml-mumamo-mode
+ genshi-html-mumamo-mode))))
+ (kill-buffer buf1)))
+
+(ert-deftest nxhtml-ert-opened-modified ()
+ "Test if buffer get modified when opening a file."
+ (let ((file1 (ert-get-test-file-name "cvd-080805-ac.php"))
+ (file2 (ert-get-test-file-name "cvd-080805-cc.php"))
+ buf1
+ buf2)
+ ;; Ensure we open the files
+ (setq buf1 (find-buffer-visiting file1))
+ (when buf1 (kill-buffer buf1))
+ (setq buf2 (find-buffer-visiting file2))
+ (when buf2 (kill-buffer buf2))
+ ;; Open file 1
+ (setq buf1 (find-file file1))
+ (nxhtmltest-fontify-default-way 2 "mod")
+ (nxhtmltest-should-no-mumamo-errors)
+ ;; Open file 2
+ (setq buf2 (find-file file2))
+ (nxhtmltest-fontify-default-way 2 "mod")
+ (nxhtmltest-should-no-mumamo-errors)
+ (ert-should
+ (not (or (buffer-modified-p buf1)
+ (buffer-modified-p buf2))))
+ (kill-buffer buf1)
+ (kill-buffer buf2)))
+
+(ert-deftest nxhtml-ert-wiki-strange-hili-080629 ()
+ "From a report on EmacsWiki."
+ (ert-with-temp-buffer-include-file "wiki-strange-hili-080629.html"
+ ;;(ert-should (not font-lock-mode))
+ (nxhtml-mumamo-mode)
+ ;;(ert-should (not font-lock-mode))
+ (nxhtmltest-fontify-default-way 2 "hili")
+ (goto-char 44)
+ (nxhtmltest-should-no-mumamo-errors)
+ (message "face at 44=%s" (get-text-property 44 'face))
+ (ert-should
+ (eq (get-text-property 44 'face)
+ 'font-lock-function-name-face))))
+
+(ert-deftest nxhtml-ert-indent-wiki-080708-ind-problem ()
+ (ert-with-temp-buffer-include-file "wiki-080708-ind-problem.rhtml"
+ (require 'ruby-mode nil t)
+ (if (not (featurep 'ruby-mode))
+ ;; Fix-me: ert should maybe have some way to just display
+ ;; informational messages?
+ (error "ruby-mode not available, skipping test")
+ ;;(ert-should (not font-lock-mode))
+ (eruby-nxhtml-mumamo-mode)
+ ;;(ert-should (not font-lock-mode))
+ (nxhtmltest-fontify-default-way 2 "ind")
+ (mark-whole-buffer)
+ (indent-for-tab-command)
+ (nxhtmltest-goto-line 3)
+ (nxhtmltest-should-no-mumamo-errors)
+ (ert-should (= (current-indentation) 0)))))
+
+(ert-deftest nxhtml-ert-indent-wiki-080708-ind-problem-a ()
+ "From a report on EmacsWiki.
+NOTICE: This SHOULD FAIL. There is currently no support for the
+kind of indentation needed here.
+
+Notice 2: For some reason I sometimes get the error overlayp, nil
+here."
+ (ert-with-temp-buffer-include-file "wiki-080708-ind-problem.rhtml"
+ (require 'ruby-mode nil t)
+ (if (not (featurep 'ruby-mode))
+ (error "ruby-mode not available, skipping test")
+ ;;(ert-should (not font-lock-mode))
+ (eruby-nxhtml-mumamo-mode)
+ ;;(ert-should (not font-lock-mode))
+ (nxhtmltest-fontify-default-way 2 "ind")
+ (insert " ")
+ (mark-whole-buffer)
+ (indent-for-tab-command)
+ (nxhtmltest-goto-line 3)
+ ;; Test
+ (nxhtmltest-should-no-mumamo-errors)
+ (ert-should-not (= (current-indentation) 2)))))
+
+(ert-deftest nxhtml-ert-sheit-2007-12-26 ()
+ (ert-with-temp-buffer-include-file "sheit-2007-12-26.php"
+ ;;(ert-should (not font-lock-mode))
+ (nxhtml-mumamo-mode)
+ ;;(ert-should (not font-lock-mode))
+ (nxhtmltest-fontify-default-way 2 "sheit")
+ (nxhtmltest-should-no-mumamo-errors)
+ (ert-should
+ (and
+ (eq (get-text-property 21 'face)
+ 'font-lock-comment-face)
+ (eq (get-text-property 22 'face)
+ 'font-lock-comment-face)
+ (eq (get-text-property 35 'face)
+ 'font-lock-comment-face)))))
+
+
+;; Now some tests with a big file. Jumping backwards can fail.
+
+(defun nxhtml-ert-nxhtml-changes-jump-back-2 (pos)
+ ;;(ert-should (not font-lock-mode))
+ (nxhtml-mumamo-mode)
+ (run-hooks 'post-command-hook)
+ ;;(ert-should (not font-lock-mode))
+ (goto-char (- (point-max) (- 64036 63869)))
+ (nxhtmltest-fontify-default-way 2)
+ (nxhtmltest-should-no-mumamo-errors)
+ (ert-should
+ (eq (get-text-property (point) 'face)
+ 'font-lock-variable-name-face))
+ (message "here 1")
+ (goto-char pos)
+ (nxhtmltest-fontify-default-way 2)
+ (nxhtmltest-should-no-mumamo-errors)
+ (message "here 2")
+ (ert-should
+ (eq (get-text-property (point) 'face)
+ 'font-lock-function-name-face)))
+
+;; Fix-me: forgot to copy nxhtml-changes.html. I can't find any
+;; similar error now.
+;;
+;; (ert-deftest nxhtml-ert-nxhtml-changes-jump-back-7014-2 ()
+;; "this is a docstring.
+;; wonder how that works now ..."
+;; (ert-with-temp-buffer-include-file "../../nxhtml/doc/nxhtml-changes.html"
+;; (nxhtml-ert-nxhtml-changes-jump-back-2 7014)))
+
+;; (ert-deftest nxhtml-ert-nxhtml-changes-jump-back-10488-2 ()
+;; (ert-with-temp-buffer-include-file "../../nxhtml/doc/nxhtml-changes.html"
+;; (nxhtml-ert-nxhtml-changes-jump-back-2 10488)))
+
+;; (ert-deftest nxhtml-ert-nxhtml-changes-jump-2 ()
+;; (ert-with-temp-buffer-include-file "../../nxhtml/doc/nxhtml-changes.html"
+;; ;;(ert-should (not font-lock-mode))
+;; (nxhtml-mumamo-mode)
+;; ;;(ert-should (not font-lock-mode))
+;; (goto-char 10420)
+;; (nxhtmltest-fontify-default-way 2 "jump-2")
+;; (nxhtmltest-should-no-mumamo-errors)
+;; (ert-should
+;; (eq (get-text-property (point) 'face)
+;; 'font-lock-variable-name-face))))
+
+;;; Indentation tests
+
+(ert-deftest nxhtml-ert-php-indent-bug-1 ()
+ "Test indentation in php only file.
+The indentation on line 7 should be 0."
+ (ert-with-temp-buffer-include-file "only-php.php"
+ (nxhtml-mumamo-mode)
+ ;; No fontification needed for indentation.
+ (nxhtmltest-goto-line 7)
+ (indent-for-tab-command)
+ (nxhtmltest-should-no-mumamo-errors)
+ (ert-should
+ (= 0
+ (current-indentation)))))
+
+;;; Scroll tests
+
+;; (ert-deftest nxhtml-ert-scroll-jump-test ()
+;; "Test if `scroll-conservatively' eq 1 works."
+;; (ert-with-temp-buffer-include-file "../../nxhtml/doc/nxhtml-changes.html"
+;; (ert-should (not font-lock-mode))
+;; (nxhtml-mumamo-mode)
+;; (ert-should (not font-lock-mode))
+;; (nxhtmltest-fontify-default-way 2 "jump-2")
+;; (let ((scroll-conservatively 1)
+;; (ws (list (window-start)))
+;; (xi (loop for ii from 1 to 100 by 1
+;; do
+;; (next-line)
+;; (sit-for 0.01)
+;; collect (list (window-start)
+;; (let ((here (point)))
+;; (goto-char (window-start))
+;; (prog1 (line-end-position)
+;; (goto-char here)))
+;; (point))
+;; ))
+;; (jumps 0)
+;; prev-win-start
+;; prev-win-start-le
+;; )
+;; (loop for xx in xi
+;; do
+;; (message "xx=%s" xx)
+;; (let ((win-start (nth 0 xx))
+;; (win-start-le (nth 1 xx))
+;; (cur-point (nth 2 xx)))
+;; (unless (or (not prev-win-start)
+;; (= prev-win-start win-start)
+;; (= (1+ prev-win-start-le) win-start))
+;; (setq jumps (1+ jumps)))
+;; (setq prev-win-start win-start)
+;; (setq prev-win-start-le win-start-le)
+;; )
+;; )
+;; (ert-should (= 0 jumps))
+;; )))
+
+;;(defvar ert-error-on-test-redefinition nil)
+
+;;; End of test definitions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun nxhtmltest-run-ert (selector)
+ "Run test with ert library."
+ (unless selector (setq selector nxhtmltest-ert-default-selector))
+ (setq ert-test-files-root nxhtmltest-files-root)
+ (if noninteractive
+ (ert-run-tests-batch selector)
+ (ert-kill-temp-test-buffers)
+ (ert-run-tests-interactively selector)
+ (other-window 1)
+ (ert-list-temp-test-buffers)))
+
+;;;###autoload
+(defun nxhtmltest-run-indent ()
+ "Run indentation tests."
+ (interactive)
+ (setq ert-test-files-root nxhtmltest-files-root)
+ (let ((selector "nxhtml-ert-indent-"))
+ (ert-kill-temp-test-buffers)
+ (nxhtmltest-get-fontification-method)
+ (ert-run-tests-interactively selector))
+ (other-window 1)
+ (ert-list-temp-test-buffers))
+
+;;;###autoload
+(defun nxhtmltest-run ()
+ "Run all tests defined for nXhtml.
+Currently there are only tests using ert.el defined.
+
+Note that it is currently expected that the following tests will
+fail (they corresponds to known errors in nXhtml/Emacs):
+
+ `nxhtml-ert-nxhtml-changes-jump-back-10549'
+ `nxhtml-ert-nxhtml-changes-jump-back-7014'
+"
+ (interactive)
+ (setq message-log-max t)
+ (when (called-interactively-p)
+ (nxhtmltest-get-fontification-method))
+ (nxhtmltest-run-ert nil))
+
+(when (getenv "nxhtmltest-run-Q")
+ (nxhtmltest-run))
+
+(provide 'nxhtmltest-suites)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; nxhtmltest-suites.el ends here