From 94d2fc1815a919734353c942f224db1de4b4fcb8 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Mon, 7 Mar 2011 09:04:49 +0100 Subject: [PATCH] Django, org * Added nxhtml, mostly for django support. * Changed some org settings. --- emacs.d/00-paths.el | 1 + emacs.d/10-file-associations.el | 2 + emacs.d/10-modules.el | 3 + emacs.d/20-org.el | 15 +- emacs.d/30-django-mumamo.el | 1 + emacs.d/elisp/php-mode.el | 291 + emacs.d/nxhtml/README.txt | 46 + emacs.d/nxhtml/alts/find-recursive-orig.el | 137 + emacs.d/nxhtml/alts/javascript-mozlab.el | 712 ++ emacs.d/nxhtml/alts/smarty-mode-vdebout.el | 2715 +++++ emacs.d/nxhtml/autostart.el | 194 + emacs.d/nxhtml/autostart22.el | 71 + emacs.d/nxhtml/emacs22.cmd | 1 + emacs.d/nxhtml/etc/img/pause/pause.jpg | Bin 0 -> 25849 bytes emacs.d/nxhtml/etc/img/pause/pause2.jpg | Bin 0 -> 26756 bytes .../etc/schema/FDA-2009-N-0392-0396.1.doc | Bin 0 -> 47104 bytes emacs.d/nxhtml/etc/schema/genshi-old.rnc | 27 + emacs.d/nxhtml/etc/schema/genshi-schemas.xml | 3 + emacs.d/nxhtml/etc/schema/genshi.rnc | 84 + emacs.d/nxhtml/etc/schema/mjt.rnc | 74 + emacs.d/nxhtml/etc/schema/nxml-erb.patch | 37 + emacs.d/nxhtml/etc/schema/old-genshi.rnc | 31 + .../nxhtml/etc/schema/old-qtmstr-xhtml.rnc | 61 + emacs.d/nxhtml/etc/schema/old-xinclude.rnc | 11 + .../nxhtml/etc/schema/qtmstr-xhtml-old.rnc | 58 + emacs.d/nxhtml/etc/schema/qtmstr-xhtml.rnc | 66 + .../nxhtml/etc/schema/schema-path-patch.el | 95 + emacs.d/nxhtml/etc/schema/xhtml-loader.rnc | 1 + emacs.d/nxhtml/etc/schema/xinclude.rnc | 35 + emacs.d/nxhtml/etc/templates/rollover-2v.css | 25 + emacs.d/nxhtml/etc/uts39/idnchars.txt | 894 ++ emacs.d/nxhtml/etc/viper-tut/0intro | 59 + emacs.d/nxhtml/etc/viper-tut/1basics | 187 + emacs.d/nxhtml/etc/viper-tut/2moving | 269 + emacs.d/nxhtml/etc/viper-tut/3cutpaste | 318 + emacs.d/nxhtml/etc/viper-tut/4inserting | 180 + emacs.d/nxhtml/etc/viper-tut/5tricks | 229 + emacs.d/nxhtml/etc/viper-tut/README | 49 + emacs.d/nxhtml/etc/viper-tut/outline | 131 + emacs.d/nxhtml/nxhtml-base.el | 150 + emacs.d/nxhtml/nxhtml-loaddefs.el | 4502 ++++++++ emacs.d/nxhtml/nxhtml-web-vcs.el | 689 ++ emacs.d/nxhtml/nxhtml/ChangeLog | 17 + emacs.d/nxhtml/nxhtml/doc/demo.html | 71 + emacs.d/nxhtml/nxhtml/doc/html2xhtml.html | 39 + .../nxhtml/doc/htmlfontify-example.html | 424 + emacs.d/nxhtml/nxhtml/doc/img/Las_Medulas.jpg | Bin 0 -> 40927 bytes emacs.d/nxhtml/nxhtml/doc/img/Toco_toucan.jpg | Bin 0 -> 17430 bytes emacs.d/nxhtml/nxhtml/doc/img/bacchante2.jpg | Bin 0 -> 67205 bytes emacs.d/nxhtml/nxhtml/doc/img/butterflies.jpg | Bin 0 -> 14954 bytes emacs.d/nxhtml/nxhtml/doc/img/butterflies.png | Bin 0 -> 65893 bytes emacs.d/nxhtml/nxhtml/doc/img/butterflies.xcf | Bin 0 -> 87456 bytes .../nxhtml/nxhtml/doc/img/continue-play.jpg | Bin 0 -> 44390 bytes emacs.d/nxhtml/nxhtml/doc/img/divine2.jpg | Bin 0 -> 69985 bytes emacs.d/nxhtml/nxhtml/doc/img/edit-part.png | Bin 0 -> 23263 bytes .../nxhtml/doc/img/editing-web-files.png | Bin 0 -> 7237 bytes .../nxhtml/doc/img/editing-web-files.xcf | Bin 0 -> 15415 bytes .../nxhtml/doc/img/emacs-style-completion.png | Bin 0 -> 23199 bytes emacs.d/nxhtml/nxhtml/doc/img/emacsP.png | Bin 0 -> 1882 bytes emacs.d/nxhtml/nxhtml/doc/img/emacsP16.png | Bin 0 -> 694 bytes .../nxhtml/nxhtml/doc/img/embedded-css.png | Bin 0 -> 14019 bytes .../nxhtml/nxhtml/doc/img/embedded-xhtml.png | Bin 0 -> 17326 bytes .../nxhtml/nxhtml/doc/img/foldit-closed.png | Bin 0 -> 7894 bytes .../nxhtml/doc/img/foldit-temp-opened.png | Bin 0 -> 17590 bytes emacs.d/nxhtml/nxhtml/doc/img/fun-brain-2.png | Bin 0 -> 40042 bytes .../nxhtml/nxhtml/doc/img/getitbuttons-1.png | Bin 0 -> 1931 bytes .../nxhtml/nxhtml/doc/img/getitbuttons-1.xcf | Bin 0 -> 5446 bytes .../nxhtml/nxhtml/doc/img/getitbuttons-2.png | Bin 0 -> 1276 bytes .../nxhtml/nxhtml/doc/img/getitbuttons.png | Bin 0 -> 1324 bytes .../nxhtml/nxhtml/doc/img/getitbuttons.xcf | Bin 0 -> 5988 bytes emacs.d/nxhtml/nxhtml/doc/img/giraffe.jpg | Bin 0 -> 20966 bytes .../nxhtml/nxhtml/doc/img/healthy_feet2.jpg | Bin 0 -> 24042 bytes .../nxhtml/nxhtml/doc/img/itsalltext-pref.png | Bin 0 -> 14720 bytes .../nxhtml/nxhtml/doc/img/links-appmenu.png | Bin 0 -> 7124 bytes emacs.d/nxhtml/nxhtml/doc/img/nxml-where.png | Bin 0 -> 17217 bytes .../nxhtml/nxhtml/doc/img/php-in-nxhtml-2.png | Bin 0 -> 23203 bytes .../nxhtml/nxhtml/doc/img/php-in-nxhtml.png | Bin 0 -> 22179 bytes emacs.d/nxhtml/nxhtml/doc/img/php-in-php.png | Bin 0 -> 21113 bytes .../nxhtml/nxhtml/doc/img/php-in-xhtml.png | Bin 0 -> 21510 bytes emacs.d/nxhtml/nxhtml/doc/img/popup-compl.png | Bin 0 -> 8709 bytes emacs.d/nxhtml/nxhtml/doc/img/raindrops2.jpg | Bin 0 -> 36480 bytes .../nxhtml/doc/img/region-selected-after.png | Bin 0 -> 3122 bytes .../doc/img/region-selected-completion.png | Bin 0 -> 27193 bytes .../nxhtml/nxhtml/doc/img/region-selected.png | Bin 0 -> 3662 bytes .../doc/img/rembrandt-self-portrait.jpg | Bin 0 -> 52583 bytes .../nxhtml/nxhtml/doc/img/style-in-nxhtml.png | Bin 0 -> 19275 bytes .../nxhtml/doc/img/use-nXhtml-trans.png | Bin 0 -> 1485 bytes .../nxhtml/doc/img/use-nXhtml-trans2.png | Bin 0 -> 1520 bytes emacs.d/nxhtml/nxhtml/doc/img/use-nXhtml.png | Bin 0 -> 1347 bytes emacs.d/nxhtml/nxhtml/doc/img/use-nXhtml.xcf | Bin 0 -> 3484 bytes .../nxhtml/doc/img/validation-error.png | Bin 0 -> 2293 bytes emacs.d/nxhtml/nxhtml/doc/img/volga.jpg | Bin 0 -> 34027 bytes .../nxhtml/doc/img/xml-validation-header.png | Bin 0 -> 23172 bytes .../doc/js/smoothgallery/css/img/carrow1.gif | Bin 0 -> 243 bytes .../doc/js/smoothgallery/css/img/carrow2.gif | Bin 0 -> 241 bytes .../doc/js/smoothgallery/css/img/fleche1.gif | Bin 0 -> 1035 bytes .../doc/js/smoothgallery/css/img/fleche1.png | Bin 0 -> 2626 bytes .../doc/js/smoothgallery/css/img/fleche2.gif | Bin 0 -> 974 bytes .../doc/js/smoothgallery/css/img/fleche2.png | Bin 0 -> 2889 bytes .../css/img/loading-bar-black.gif | Bin 0 -> 10814 bytes .../doc/js/smoothgallery/css/img/open.gif | Bin 0 -> 489 bytes .../doc/js/smoothgallery/css/img/open.png | Bin 0 -> 1258 bytes .../doc/js/smoothgallery/css/jd.gallery.css | 238 + .../doc/js/smoothgallery/css/layout.css | 91 + .../js/smoothgallery/scripts/jd.gallery.js | 449 + .../doc/js/smoothgallery/scripts/mootools.js | 2 + .../scripts/mootools.uncompressed.js | 4078 +++++++ emacs.d/nxhtml/nxhtml/doc/nxhtml-changes.html | 3395 ++++++ emacs.d/nxhtml/nxhtml/doc/nxhtml.css | 171 + emacs.d/nxhtml/nxhtml/doc/nxhtml.html | 987 ++ .../nxhtml/nxhtml/doc/wd/grapes/grapes.css | 107 + .../nxhtml/doc/wd/grapes/images/bkgrnd.gif | Bin 0 -> 974 bytes .../nxhtml/doc/wd/grapes/images/grapes.jpg | Bin 0 -> 24419 bytes .../nxhtml/doc/wd/grapes/images/quote.gif | Bin 0 -> 643 bytes .../nxhtml/nxhtml/doc/wd/grapes/index.html | 76 + .../nxhtml/doc/wd/grapes/nxhtml-grapes.css | 252 + emacs.d/nxhtml/nxhtml/doc/working-demo.html | 60 + emacs.d/nxhtml/nxhtml/html-chklnk.el | 168 + .../html-chklnk/PerlLib/HTML/LinkWalker.pm | 774 ++ .../html-chklnk/PerlLib/HTML/ParserTagEnd.pm | 448 + .../html-chklnk/PerlLib/HTML/datadir.txt | 1 + .../nxhtml/html-chklnk/PerlLib/PathSubs.pm | 207 + .../nxhtml/nxhtml/html-chklnk/link_checker.pl | 328 + emacs.d/nxhtml/nxhtml/html-imenu.el | 101 + emacs.d/nxhtml/nxhtml/html-move.el | 251 + emacs.d/nxhtml/nxhtml/html-pagetoc.el | 336 + emacs.d/nxhtml/nxhtml/html-quote.el | 71 + emacs.d/nxhtml/nxhtml/html-site.el | 801 ++ emacs.d/nxhtml/nxhtml/html-toc.el | 363 + .../nxhtml/html-toc/html-toc-template.html | 83 + .../html-toc/html-toc/html-toc-template.css | 141 + .../nxhtml/html-toc/html-toc/html-toc.css | 84 + .../nxhtml/html-toc/html-toc/html-toc.js | 361 + .../nxhtml/html-toc/html-toc/img/blank12.gif | Bin 0 -> 825 bytes .../nxhtml/html-toc/html-toc/img/down.gif | Bin 0 -> 853 bytes .../nxhtml/html-toc/html-toc/img/freeCont.gif | Bin 0 -> 913 bytes .../html-toc/html-toc/img/gnu-m-x-160.png | Bin 0 -> 1957 bytes .../html-toc/html-toc/img/gnu-m-x-160.xcf | Bin 0 -> 22466 bytes .../nxhtml/html-toc/html-toc/img/hideCont.gif | Bin 0 -> 917 bytes .../nxhtml/html-toc/html-toc/img/nailCont.gif | Bin 0 -> 917 bytes .../nxhtml/html-toc/html-toc/img/nosearch.gif | Bin 0 -> 1100 bytes .../nxhtml/html-toc/html-toc/img/right.gif | Bin 0 -> 857 bytes .../nxhtml/html-toc/html-toc/img/search.gif | Bin 0 -> 1118 bytes .../nxhtml/html-toc/html-toc/img/showCont.gif | Bin 0 -> 909 bytes emacs.d/nxhtml/nxhtml/html-upl.el | 329 + emacs.d/nxhtml/nxhtml/html-upl/COPYING | 340 + emacs.d/nxhtml/nxhtml/html-upl/Changes | 115 + emacs.d/nxhtml/nxhtml/html-upl/README | 111 + emacs.d/nxhtml/nxhtml/html-upl/TODO | 2 + emacs.d/nxhtml/nxhtml/html-upl/ftpsync.pl | 700 ++ emacs.d/nxhtml/nxhtml/html-wtoc.el | 200 + .../nxhtml/html-wtoc/PerlLib/PathSubs.pm | 207 + .../nxhtml/html-wtoc/PerlLib/html_tags.pm | 127 + .../nxhtml/html-wtoc/html-wtoc-template.css | 141 + .../nxhtml/html-wtoc/html-wtoc-template.html | 143 + emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.css | 84 + emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.js | 361 + emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.pl | 1395 +++ .../nxhtml/nxhtml/html-wtoc/img/blank12.gif | Bin 0 -> 825 bytes emacs.d/nxhtml/nxhtml/html-wtoc/img/down.gif | Bin 0 -> 853 bytes .../nxhtml/nxhtml/html-wtoc/img/freeCont.gif | Bin 0 -> 913 bytes .../nxhtml/html-wtoc/img/gnu-m-x-160.png | Bin 0 -> 1957 bytes .../nxhtml/html-wtoc/img/gnu-m-x-160.xcf | Bin 0 -> 22466 bytes .../nxhtml/nxhtml/html-wtoc/img/hideCont.gif | Bin 0 -> 917 bytes .../nxhtml/nxhtml/html-wtoc/img/nailCont.gif | Bin 0 -> 917 bytes .../nxhtml/nxhtml/html-wtoc/img/nosearch.gif | Bin 0 -> 1100 bytes .../html-wtoc/img/other/CompFaceLogoTemp4.gif | Bin 0 -> 3202 bytes .../html-wtoc/img/other/CompFaceLogoTemp4.png | Bin 0 -> 6710 bytes .../html-wtoc/img/other/blue_left_top.png | Bin 0 -> 381 bytes .../html-wtoc/img/other/close-cross.gif | Bin 0 -> 866 bytes .../html-wtoc/img/other/lbiinfo_and_blue.png | Bin 0 -> 3763 bytes .../html-wtoc/img/other/lbiinfo_and_blue1.png | Bin 0 -> 4012 bytes .../html-wtoc/img/other/lbinfo_col1.gif | Bin 0 -> 3732 bytes .../html-wtoc/img/other/lbinfo_col1_30.gif | Bin 0 -> 1299 bytes .../nxhtml/nxhtml/html-wtoc/img/other/up.gif | Bin 0 -> 851 bytes emacs.d/nxhtml/nxhtml/html-wtoc/img/right.gif | Bin 0 -> 857 bytes .../nxhtml/nxhtml/html-wtoc/img/search.gif | Bin 0 -> 1118 bytes .../nxhtml/nxhtml/html-wtoc/img/showCont.gif | Bin 0 -> 909 bytes emacs.d/nxhtml/nxhtml/nxhtml-autoload.el | 147 + emacs.d/nxhtml/nxhtml/nxhtml-bug.el | 332 + emacs.d/nxhtml/nxhtml/nxhtml-menu.el | 1658 +++ emacs.d/nxhtml/nxhtml/nxhtml-mode.el | 2796 +++++ emacs.d/nxhtml/nxhtml/nxhtml-mumamo.el | 365 + emacs.d/nxhtml/nxhtml/nxhtml-strval.el | 210 + emacs.d/nxhtml/nxhtml/nxhtml.el | 339 + emacs.d/nxhtml/nxhtml/nxhtmljs.el | 240 + emacs.d/nxhtml/nxhtml/nxml-where.el | 734 ++ emacs.d/nxhtml/nxhtml/outline-magic.el | 588 + emacs.d/nxhtml/nxhtml/rngalt.el | 828 ++ emacs.d/nxhtml/nxhtml/tidy-xhtml.el | 2921 +++++ emacs.d/nxhtml/nxhtml/wtest.el | 56 + emacs.d/nxhtml/nxhtml/xhtml-help.el | 373 + emacs.d/nxhtml/nxhtmlmaint.el | 439 + emacs.d/nxhtml/related/blank.html | 6 + emacs.d/nxhtml/related/csharp-mode.el | 1977 ++++ emacs.d/nxhtml/related/django.el | 203 + emacs.d/nxhtml/related/env.js | 695 ++ emacs.d/nxhtml/related/flymake-css.el | 161 + emacs.d/nxhtml/related/flymake-helpers.el | 78 + emacs.d/nxhtml/related/flymake-java-1.el | 109 + emacs.d/nxhtml/related/flymake-js.el | 234 + emacs.d/nxhtml/related/flymakemsg.el | 144 + emacs.d/nxhtml/related/flymu.el | 157 + emacs.d/nxhtml/related/iss-mode.el | 205 + emacs.d/nxhtml/related/iss-mumamo.el | 70 + emacs.d/nxhtml/related/js_temp.js | 4 + emacs.d/nxhtml/related/jslint.js | 523 + emacs.d/nxhtml/related/moz.el | 289 + emacs.d/nxhtml/related/mozadd.el | 369 + emacs.d/nxhtml/related/php-imenu.el | 174 + emacs.d/nxhtml/related/php-mode.el | 1231 +++ emacs.d/nxhtml/related/readme.txt | 7 + emacs.d/nxhtml/related/rhino.js | 14 + emacs.d/nxhtml/related/smarty-mode.el | 2753 +++++ emacs.d/nxhtml/related/tt-mode.el | 124 + emacs.d/nxhtml/related/visual-basic-mode.el | 1263 +++ emacs.d/nxhtml/related/wikipedia-mode.el | 2296 ++++ emacs.d/nxhtml/tests/angus77-setup-jde.el | 90 + emacs.d/nxhtml/tests/emacstest-suites.el | 102 + emacs.d/nxhtml/tests/ert.el | 2418 +++++ emacs.d/nxhtml/tests/ert2.el | 268 + emacs.d/nxhtml/tests/hfy-test.el | 102 + emacs.d/nxhtml/tests/in/3-heights.html | 42 + emacs.d/nxhtml/tests/in/400415-index.phtml | 43 + emacs.d/nxhtml/tests/in/asp.asp | 40 + emacs.d/nxhtml/tests/in/bastien-test.mm | 38 + .../tests/in/bigfile-stringerr-64000.html | 1850 ++++ emacs.d/nxhtml/tests/in/blorgit.rb | 313 + emacs.d/nxhtml/tests/in/bug-080609.html | 9 + emacs.d/nxhtml/tests/in/bug-1908494.php | 6 + .../nxhtml/tests/in/bug-2010-02-17-delgado.mm | 10 + .../tests/in/bug-2010-02-17-delgado.org | 3 + emacs.d/nxhtml/tests/in/bug-290364.php | 66 + emacs.d/nxhtml/tests/in/bug-300946-index.html | 24 + emacs.d/nxhtml/tests/in/bug-311640-index.html | 24 + emacs.d/nxhtml/tests/in/bug-311641.php | 7 + .../nxhtml/tests/in/bug-373106-flipbook.html | 160 + emacs.d/nxhtml/tests/in/bug-381191-dh-test.el | 23 + .../nxhtml/tests/in/bug-381191-dh-test.php | 6 + .../tests/in/bug-johan-2010-02-12.rhtml | 22 + .../tests/in/bug-johan-2010-02-16.html.haml | 34 + .../tests/in/bug-johan-2010-02-17-2.erb | 14 + .../nxhtml/tests/in/bug-johan-2010-02-17.erb | 4 + emacs.d/nxhtml/tests/in/bug261792.ghtml | 7 + emacs.d/nxhtml/tests/in/bug271497.el | 14 + emacs.d/nxhtml/tests/in/bug271497.txt | 7 + emacs.d/nxhtml/tests/in/bug272871.php | 7 + .../nxhtml/tests/in/bug290364-messages.txt | 97 + emacs.d/nxhtml/tests/in/bug354363-index.php | 38 + emacs.d/nxhtml/tests/in/bug354363-test.php | 3 + .../tests/in/bug369800-load-history.txt | 9483 +++++++++++++++++ emacs.d/nxhtml/tests/in/bug370417.php | 10 + .../tests/in/bug381979-2-bad-traceb.txt | 24 + emacs.d/nxhtml/tests/in/bug381979-2.php | 6 + emacs.d/nxhtml/tests/in/bug381979-svnlib.inc | 744 ++ emacs.d/nxhtml/tests/in/bug384115-bt2.txt | 11 + .../nxhtml/tests/in/bug388729-messages.txt | 292 + .../nxhtml/tests/in/bug388729-nxhtml_test.php | 2 + .../nxhtml/tests/in/bug393137-new.html.erb | 18 + emacs.d/nxhtml/tests/in/bug400415-foo.php | 9 + emacs.d/nxhtml/tests/in/bug400415-foo2.php | 9 + emacs.d/nxhtml/tests/in/bug409183.html | 14 + emacs.d/nxhtml/tests/in/bug416505-Body.mxml | 85 + emacs.d/nxhtml/tests/in/bug416505-nxhtml.el | 45 + emacs.d/nxhtml/tests/in/bug452676.php | 12 + emacs.d/nxhtml/tests/in/bug463136.php | 5 + emacs.d/nxhtml/tests/in/bug492366-test.php | 21 + .../nxhtml/tests/in/bug495770-heredoc_demo.pl | 95 + .../in/bug505554-nxhtml-download-messages.txt | 98 + .../nxhtml/tests/in/bug505554-sample.html.erb | 11 + emacs.d/nxhtml/tests/in/bug505726-foo.html | 10 + emacs.d/nxhtml/tests/in/bug509586.ghtml | 16 + emacs.d/nxhtml/tests/in/bug523065.jsp | 9 + emacs.d/nxhtml/tests/in/bug523065.php | 6 + .../nxhtml/tests/in/bug529133-statemachine.py | 1491 +++ emacs.d/nxhtml/tests/in/bug531328.rhtml | 1 + emacs.d/nxhtml/tests/in/bug532500.rhtml | 7 + emacs.d/nxhtml/tests/in/bug532759.djhtml | 17 + emacs.d/nxhtml/tests/in/bug546027.html | 17 + .../nxhtml/tests/in/bug552789-loremipsum.php | 10 + emacs.d/nxhtml/tests/in/bug552789.php | 20 + .../nxhtml/tests/in/bug556832-error-test.py | 23 + emacs.d/nxhtml/tests/in/bug557700-2.erb | 5 + emacs.d/nxhtml/tests/in/bug557700-3.erb | 3 + emacs.d/nxhtml/tests/in/bug557700-4.erb | 11 + emacs.d/nxhtml/tests/in/bug557700-5.erb | 4 + emacs.d/nxhtml/tests/in/bug557700-6.erb | 11 + emacs.d/nxhtml/tests/in/bug557700.erb | 3 + .../nxhtml/tests/in/bug559772-TextHelper.php | 205 + emacs.d/nxhtml/tests/in/bug565595.mako | 12 + emacs.d/nxhtml/tests/in/bug568178.pl | 4 + emacs.d/nxhtml/tests/in/bug568178.sh | 9 + .../nxhtml/tests/in/bug569742-master-end.html | 37 + .../tests/in/ch-2008-07-25-test.html.erb | 37 + emacs.d/nxhtml/tests/in/chunks-in-chunks1.php | 19 + emacs.d/nxhtml/tests/in/chunks.html | 63 + emacs.d/nxhtml/tests/in/cr-lf.el | 2 + emacs.d/nxhtml/tests/in/csr-080710-2.html | 23 + emacs.d/nxhtml/tests/in/csr-080710.html | 24 + emacs.d/nxhtml/tests/in/cvd-080805-ac.php | 21 + emacs.d/nxhtml/tests/in/cvd-080805-cc.php | 18 + .../tests/in/drechsler-080517-simple.xml | 3 + emacs.d/nxhtml/tests/in/el-070424-duh.xml | 6 + emacs.d/nxhtml/tests/in/el-070511-simple.html | 102 + emacs.d/nxhtml/tests/in/el-070602-index.php | 54 + emacs.d/nxhtml/tests/in/el-070604.html | 11 + emacs.d/nxhtml/tests/in/el-070604.php | 11 + .../tests/in/el-070722-comment-error.php | 6 + emacs.d/nxhtml/tests/in/el-070722-index-2.el | 7 + emacs.d/nxhtml/tests/in/el-070722-index-2.php | 48 + .../tests/in/el-070722-index-noheader.php | 48 + emacs.d/nxhtml/tests/in/el-070722-index.php | 55 + emacs.d/nxhtml/tests/in/el-071217-foo.html | 13 + emacs.d/nxhtml/tests/in/emacswiki-080119.php | 15 + emacs.d/nxhtml/tests/in/emacswiki-erb-bug.el | 36 + emacs.d/nxhtml/tests/in/err-line38.html | 768 ++ emacs.d/nxhtml/tests/in/eval-in-html.el | Bin 0 -> 22420 bytes emacs.d/nxhtml/tests/in/fontif-err.html | 339 + emacs.d/nxhtml/tests/in/fontif-err.php | 339 + .../tests/in/genshi-HelloWorldPage.ghtml | 10 + emacs.d/nxhtml/tests/in/genshi-auto-mode.html | 10 + emacs.d/nxhtml/tests/in/genshi.ghtml | 23 + .../tests/in/goesele-091110-testnote-orig.mm | 16 + .../tests/in/goesele-091110-testnote-temp.mm | 16 + .../tests/in/goesele-091110-testnote.mm | 16 + .../tests/in/goesele-091110-testnote.mm.org | 5 + .../in/goesele-091110-testnote.mm.org.mm | 16 + emacs.d/nxhtml/tests/in/haml1.haml | 132 + emacs.d/nxhtml/tests/in/heredoc.php | 61 + emacs.d/nxhtml/tests/in/heredoc.pl | 11 + emacs.d/nxhtml/tests/in/heredoc.py | 11 + emacs.d/nxhtml/tests/in/heredoc.rb | 8 + emacs.d/nxhtml/tests/in/heredoc.sh | 4 + .../nxhtml/tests/in/hg-2008-03-22-ajax.xhtml | 38 + emacs.d/nxhtml/tests/in/hq-070510-test.php | 12 + .../nxhtml/tests/in/hq-070510-test.php.html | 44 + emacs.d/nxhtml/tests/in/hq-070524-bug.php | 10 + emacs.d/nxhtml/tests/in/hq-071006-index.php | 38 + .../tests/in/html-syntactic-err-l164.html | 1474 +++ emacs.d/nxhtml/tests/in/ind-0-error.php | 28 + .../nxhtml/tests/in/indent-bug-html-mode.html | 18 + emacs.d/nxhtml/tests/in/java.java | 13 + .../nxhtml/tests/in/jcl-080802-index.html.erb | 16 + .../in/jcl-080802-messages_controller.rb | 57 + emacs.d/nxhtml/tests/in/jj-081226.html | 26 + .../tests/in/josh-091115-cancer_summary.xsl | 490 + emacs.d/nxhtml/tests/in/jump-parse.html | 7 + emacs.d/nxhtml/tests/in/jump-parse.rhtml | 9 + emacs.d/nxhtml/tests/in/kp-080604.php | 4 + .../tests/in/kubica-080516-freezing-1.html | 13 + .../tests/in/kubica-080516-freezing-2.html | 174 + .../tests/in/kubica-080516-freezing-2j.html | 174 + .../tests/in/kubica-080516-freezing-3.html | 61 + .../tests/in/kubica-080516-freezing-4.html | 58 + .../tests/in/kubica-080516-freezing-5.html | 20 + .../tests/in/kubica-080516-freezing-6.html | 58 + .../tests/in/kubica-080516-freezing-7.html | 56 + .../tests/in/kubica-080516-freezing-8.html | 57 + .../tests/in/kubica-080516-freezing-9.html | 57 + .../in/kubica-080516-freezing-a-notabs.html | 57 + .../tests/in/kubica-080516-freezing-a.html | 57 + .../tests/in/kubica-080516-freezing-b.html | 55 + .../tests/in/kubica-080516-freezing-c.html | 52 + .../tests/in/kubica-080516-freezing-d.html | 51 + .../tests/in/kubica-080516-freezing-e.html | 50 + .../tests/in/kubica-080516-freezing-f.html | 49 + .../tests/in/kubica-080516-freezing-g.html | 39 + .../tests/in/kubica-080516-freezing-h.html | 27 + .../tests/in/kubica-080516-freezing-i.html | 19 + .../tests/in/kubica-080516-freezing-j.html | 19 + .../tests/in/kubica-080516-freezing-k.html | 19 + .../tests/in/kubica-080516-freezing.css | 36 + .../tests/in/kubica-080516-freezing.html | 174 + .../tests/in/kubica-080516-freezing.txt | 10 + emacs.d/nxhtml/tests/in/kwalo-080930.php | 23 + .../tests/in/latex-clojre-mumamo-test.lclj | 17 + emacs.d/nxhtml/tests/in/lg-080813-div.html | 16 + emacs.d/nxhtml/tests/in/lg-080813-label.html | 15 + emacs.d/nxhtml/tests/in/long-lines.txt | 1 + emacs.d/nxhtml/tests/in/markdown.markdown | 16 + emacs.d/nxhtml/tests/in/mason.mason | 46 + emacs.d/nxhtml/tests/in/menu-err.txt | 10 + emacs.d/nxhtml/tests/in/mjt-feed.html | 86 + emacs.d/nxhtml/tests/in/mjt-imagesearch.html | 46 + emacs.d/nxhtml/tests/in/mjt-minimal.html | 11 + emacs.d/nxhtml/tests/in/mumamo-and-org.org | 20 + emacs.d/nxhtml/tests/in/mumamo-and-org.org.mm | 45 + .../nxhtml/tests/in/ng-080309-read-url.html | 11 + emacs.d/nxhtml/tests/in/no-php-end-2.php | 18 + .../nxhtml/tests/in/no-php-end-2.php-log.txt | 312 + .../nxhtml/tests/in/no-php-end-2.php-log2.txt | 238 + emacs.d/nxhtml/tests/in/no-php-end-3.php | 18 + emacs.d/nxhtml/tests/in/no-php-end-4.php | 18 + emacs.d/nxhtml/tests/in/no-php-end.php | 4 + emacs.d/nxhtml/tests/in/nojump-parse.html | 9 + emacs.d/nxhtml/tests/in/noweb1.now | 38 + emacs.d/nxhtml/tests/in/nutshell.mako | 27 + emacs.d/nxhtml/tests/in/nxml-bug.html | 11 + emacs.d/nxhtml/tests/in/nxml-indent-2.html | 134 + emacs.d/nxhtml/tests/in/nxml-indent-3.html | 134 + .../nxhtml/tests/in/nxml-indent-noerr1.html | 192 + emacs.d/nxhtml/tests/in/nxml-indent.el | 1 + emacs.d/nxhtml/tests/in/nxml-indent.html | 192 + emacs.d/nxhtml/tests/in/only-html.html | 11 + emacs.d/nxhtml/tests/in/only-php.php | 10 + emacs.d/nxhtml/tests/in/pavel-071116.djhtml | 31 + emacs.d/nxhtml/tests/in/php-parseable.php | 11 + emacs.d/nxhtml/tests/in/question43320.html | 35 + .../tests/in/question44504-folding.html | 28 + emacs.d/nxhtml/tests/in/question49234.sh | 41 + .../nxhtml/tests/in/rgr-030809-indexbody.php | 57 + emacs.d/nxhtml/tests/in/rgr-080307.php | 2 + .../nxhtml/tests/in/rgr-080308-header-2.php | 56 + emacs.d/nxhtml/tests/in/rgr-080308-header.php | 56 + .../nxhtml/tests/in/rgr-080308-indexbody.php | 57 + emacs.d/nxhtml/tests/in/rr-090524-header.php | 76 + emacs.d/nxhtml/tests/in/rr-090923-header.php | 101 + emacs.d/nxhtml/tests/in/rr-address-090304.php | 4 + emacs.d/nxhtml/tests/in/rr-address-nxhtml.err | Bin 0 -> 6647 bytes emacs.d/nxhtml/tests/in/rr-min8.php | 6 + .../nxhtml/tests/in/ryan-091104-literal.tpl | 148 + .../tests/in/ryan-091111-wrong-side.tpl | 18 + emacs.d/nxhtml/tests/in/schemas.xml | 3 + emacs.d/nxhtml/tests/in/sd-080803-test.php | 14 + emacs.d/nxhtml/tests/in/senny-091118.htm | 247 + emacs.d/nxhtml/tests/in/sheit-2007-12-26.php | 9 + emacs.d/nxhtml/tests/in/short-tags.php | 3 + .../nxhtml/tests/in/single-question-sign.html | 11 + emacs.d/nxhtml/tests/in/ssjs.ssjs | 9 + emacs.d/nxhtml/tests/in/string-bug.php | 1 + emacs.d/nxhtml/tests/in/style=.html | 12 + .../nxhtml/tests/in/style=string-font.html | 18 + emacs.d/nxhtml/tests/in/svg.svg | 1 + emacs.d/nxhtml/tests/in/temp2.php | 48 + emacs.d/nxhtml/tests/in/temp3.html | 44 + .../nxhtml/tests/in/test-only-nxml.my-xhtml | 38 + emacs.d/nxhtml/tests/in/test.tt | 11 + emacs.d/nxhtml/tests/in/tut1.jsp | 5 + emacs.d/nxhtml/tests/in/utf8-problem.el | 7 + .../nxhtml/tests/in/wiki-080606-indent.php | 18 + .../tests/in/wiki-080708-ind-problem.rhtml | 5 + emacs.d/nxhtml/tests/in/wiki-090804-js.html | 32 + emacs.d/nxhtml/tests/in/wiki-2008-01-30.rhtml | 1 + emacs.d/nxhtml/tests/in/wiki-comments.php | 20 + .../tests/in/wiki-strange-hili-080629.html | 5 + emacs.d/nxhtml/tests/in/xml-as-string.php | 54 + .../in/ygne-2008-02-07-hotproperty.html.php | 1967 ++++ emacs.d/nxhtml/tests/in/zero-pi.html | 11 + .../nxhtml/tests/in/zn-090529-doxysample.php | 37 + emacs.d/nxhtml/tests/inemacs/bug1013.el | 35 + emacs.d/nxhtml/tests/mumamo-test.el | 299 + emacs.d/nxhtml/tests/nxhtmltest-Q.el | 114 + emacs.d/nxhtml/tests/nxhtmltest-helpers.el | 156 + emacs.d/nxhtml/tests/nxhtmltest-suites.el | 632 ++ emacs.d/nxhtml/util/anchored-transpose.el | 305 + emacs.d/nxhtml/util/appmenu-fold.el | 79 + emacs.d/nxhtml/util/appmenu.el | 523 + emacs.d/nxhtml/util/as-external.el | 310 + emacs.d/nxhtml/util/buffer-bg.el | 89 + emacs.d/nxhtml/util/chartg.el | 844 ++ emacs.d/nxhtml/util/css-color.el | 983 ++ emacs.d/nxhtml/util/css-palette.el | 471 + emacs.d/nxhtml/util/css-simple-completion.el | 238 + emacs.d/nxhtml/util/cus-new-user.el | 803 ++ emacs.d/nxhtml/util/custsets.el | 83 + emacs.d/nxhtml/util/ecb-batch-compile.el | 65 + emacs.d/nxhtml/util/ediff-url.el | 188 + emacs.d/nxhtml/util/ffip.el | 304 + emacs.d/nxhtml/util/fold-dwim.el | 466 + emacs.d/nxhtml/util/foldit.el | 357 + emacs.d/nxhtml/util/fupd.el | 127 + emacs.d/nxhtml/util/gimpedit.el | 172 + emacs.d/nxhtml/util/gpl.el | 213 + emacs.d/nxhtml/util/hfyview.el | 651 ++ emacs.d/nxhtml/util/hl-needed.el | 402 + emacs.d/nxhtml/util/html-write.el | 455 + emacs.d/nxhtml/util/idn.el | 151 + emacs.d/nxhtml/util/inlimg.el | 429 + emacs.d/nxhtml/util/key-cat.el | 329 + emacs.d/nxhtml/util/majmodpri.el | 448 + emacs.d/nxhtml/util/markchars.el | 151 + emacs.d/nxhtml/util/mlinks.el | 1367 +++ emacs.d/nxhtml/util/mumamo-aspnet.el | 227 + emacs.d/nxhtml/util/mumamo-fun.el | 3333 ++++++ emacs.d/nxhtml/util/mumamo-regions.el | 311 + emacs.d/nxhtml/util/mumamo-trace.el | 6 + emacs.d/nxhtml/util/mumamo.el | 9100 ++++++++++++++++ emacs.d/nxhtml/util/n-back.el | 1296 +++ emacs.d/nxhtml/util/new-key-seq-widget.el | 312 + emacs.d/nxhtml/util/nxml-mode-os-additions.el | 99 + emacs.d/nxhtml/util/ocr-user.el | 86 + emacs.d/nxhtml/util/org-panel.el | 745 ++ emacs.d/nxhtml/util/ourcomments-util.el | 2427 +++++ emacs.d/nxhtml/util/ourcomments-widgets.el | 141 + emacs.d/nxhtml/util/pause.el | 794 ++ emacs.d/nxhtml/util/pointback.el | 93 + emacs.d/nxhtml/util/popcmp.el | 472 + emacs.d/nxhtml/util/readme.txt | 3 + emacs.d/nxhtml/util/rebind.el | 240 + emacs.d/nxhtml/util/rnc-mode.el | 265 + emacs.d/nxhtml/util/rxi.el | 148 + emacs.d/nxhtml/util/search-form.el | 473 + emacs.d/nxhtml/util/sex-mode.el | 463 + emacs.d/nxhtml/util/sml-modeline.el | 192 + emacs.d/nxhtml/util/tabkey2.el | 1701 +++ emacs.d/nxhtml/util/tyda.el | 94 + emacs.d/nxhtml/util/udev-ecb.el | 229 + emacs.d/nxhtml/util/udev-rinari.el | 204 + emacs.d/nxhtml/util/udev.el | 456 + emacs.d/nxhtml/util/useful-commands.el | 63 + emacs.d/nxhtml/util/viper-tut.el | 1009 ++ emacs.d/nxhtml/util/vline.el | 350 + emacs.d/nxhtml/util/web-vcs-revision.txt | 1 + emacs.d/nxhtml/util/whelp.el | 988 ++ emacs.d/nxhtml/util/winsav.el | 1585 +++ emacs.d/nxhtml/util/winsize.el | 1173 ++ emacs.d/nxhtml/util/wrap-to-fill.el | 364 + emacs.d/nxhtml/util/zencoding-mode.el | 801 ++ emacs.d/nxhtml/web-autoload.el | 262 + emacs.d/nxhtml/web-vcs.el | 2069 ++++ 520 files changed, 131646 insertions(+), 1 deletion(-) create mode 100644 emacs.d/30-django-mumamo.el create mode 100644 emacs.d/elisp/php-mode.el create mode 100644 emacs.d/nxhtml/README.txt create mode 100644 emacs.d/nxhtml/alts/find-recursive-orig.el create mode 100644 emacs.d/nxhtml/alts/javascript-mozlab.el create mode 100644 emacs.d/nxhtml/alts/smarty-mode-vdebout.el create mode 100644 emacs.d/nxhtml/autostart.el create mode 100644 emacs.d/nxhtml/autostart22.el create mode 100644 emacs.d/nxhtml/emacs22.cmd create mode 100644 emacs.d/nxhtml/etc/img/pause/pause.jpg create mode 100644 emacs.d/nxhtml/etc/img/pause/pause2.jpg create mode 100644 emacs.d/nxhtml/etc/schema/FDA-2009-N-0392-0396.1.doc create mode 100644 emacs.d/nxhtml/etc/schema/genshi-old.rnc create mode 100644 emacs.d/nxhtml/etc/schema/genshi-schemas.xml create mode 100644 emacs.d/nxhtml/etc/schema/genshi.rnc create mode 100644 emacs.d/nxhtml/etc/schema/mjt.rnc create mode 100644 emacs.d/nxhtml/etc/schema/nxml-erb.patch create mode 100644 emacs.d/nxhtml/etc/schema/old-genshi.rnc create mode 100644 emacs.d/nxhtml/etc/schema/old-qtmstr-xhtml.rnc create mode 100644 emacs.d/nxhtml/etc/schema/old-xinclude.rnc create mode 100644 emacs.d/nxhtml/etc/schema/qtmstr-xhtml-old.rnc create mode 100644 emacs.d/nxhtml/etc/schema/qtmstr-xhtml.rnc create mode 100644 emacs.d/nxhtml/etc/schema/schema-path-patch.el create mode 100644 emacs.d/nxhtml/etc/schema/xhtml-loader.rnc create mode 100644 emacs.d/nxhtml/etc/schema/xinclude.rnc create mode 100644 emacs.d/nxhtml/etc/templates/rollover-2v.css create mode 100644 emacs.d/nxhtml/etc/uts39/idnchars.txt create mode 100644 emacs.d/nxhtml/etc/viper-tut/0intro create mode 100644 emacs.d/nxhtml/etc/viper-tut/1basics create mode 100644 emacs.d/nxhtml/etc/viper-tut/2moving create mode 100644 emacs.d/nxhtml/etc/viper-tut/3cutpaste create mode 100644 emacs.d/nxhtml/etc/viper-tut/4inserting create mode 100644 emacs.d/nxhtml/etc/viper-tut/5tricks create mode 100644 emacs.d/nxhtml/etc/viper-tut/README create mode 100644 emacs.d/nxhtml/etc/viper-tut/outline create mode 100644 emacs.d/nxhtml/nxhtml-base.el create mode 100644 emacs.d/nxhtml/nxhtml-loaddefs.el create mode 100644 emacs.d/nxhtml/nxhtml-web-vcs.el create mode 100644 emacs.d/nxhtml/nxhtml/ChangeLog create mode 100644 emacs.d/nxhtml/nxhtml/doc/demo.html create mode 100644 emacs.d/nxhtml/nxhtml/doc/html2xhtml.html create mode 100644 emacs.d/nxhtml/nxhtml/doc/htmlfontify-example.html create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/Las_Medulas.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/Toco_toucan.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/bacchante2.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/butterflies.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/butterflies.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/butterflies.xcf create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/continue-play.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/divine2.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/edit-part.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/editing-web-files.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/editing-web-files.xcf create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/emacs-style-completion.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/emacsP.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/emacsP16.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/embedded-css.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/embedded-xhtml.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/foldit-closed.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/foldit-temp-opened.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/fun-brain-2.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/getitbuttons-1.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/getitbuttons-1.xcf create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/getitbuttons-2.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/getitbuttons.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/getitbuttons.xcf create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/giraffe.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/healthy_feet2.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/itsalltext-pref.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/links-appmenu.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/nxml-where.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/php-in-nxhtml-2.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/php-in-nxhtml.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/php-in-php.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/php-in-xhtml.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/popup-compl.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/raindrops2.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/region-selected-after.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/region-selected-completion.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/region-selected.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/rembrandt-self-portrait.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/style-in-nxhtml.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/use-nXhtml-trans.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/use-nXhtml-trans2.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/use-nXhtml.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/use-nXhtml.xcf create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/validation-error.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/volga.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/img/xml-validation-header.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/carrow1.gif create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/carrow2.gif create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/fleche1.gif create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/fleche1.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/fleche2.gif create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/fleche2.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/loading-bar-black.gif create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/open.gif create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/open.png create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/jd.gallery.css create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/layout.css create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/scripts/jd.gallery.js create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/scripts/mootools.js create mode 100644 emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/scripts/mootools.uncompressed.js create mode 100644 emacs.d/nxhtml/nxhtml/doc/nxhtml-changes.html create mode 100644 emacs.d/nxhtml/nxhtml/doc/nxhtml.css create mode 100644 emacs.d/nxhtml/nxhtml/doc/nxhtml.html create mode 100644 emacs.d/nxhtml/nxhtml/doc/wd/grapes/grapes.css create mode 100644 emacs.d/nxhtml/nxhtml/doc/wd/grapes/images/bkgrnd.gif create mode 100644 emacs.d/nxhtml/nxhtml/doc/wd/grapes/images/grapes.jpg create mode 100644 emacs.d/nxhtml/nxhtml/doc/wd/grapes/images/quote.gif create mode 100644 emacs.d/nxhtml/nxhtml/doc/wd/grapes/index.html create mode 100644 emacs.d/nxhtml/nxhtml/doc/wd/grapes/nxhtml-grapes.css create mode 100644 emacs.d/nxhtml/nxhtml/doc/working-demo.html create mode 100644 emacs.d/nxhtml/nxhtml/html-chklnk.el create mode 100644 emacs.d/nxhtml/nxhtml/html-chklnk/PerlLib/HTML/LinkWalker.pm create mode 100644 emacs.d/nxhtml/nxhtml/html-chklnk/PerlLib/HTML/ParserTagEnd.pm create mode 100644 emacs.d/nxhtml/nxhtml/html-chklnk/PerlLib/HTML/datadir.txt create mode 100644 emacs.d/nxhtml/nxhtml/html-chklnk/PerlLib/PathSubs.pm create mode 100644 emacs.d/nxhtml/nxhtml/html-chklnk/link_checker.pl create mode 100644 emacs.d/nxhtml/nxhtml/html-imenu.el create mode 100644 emacs.d/nxhtml/nxhtml/html-move.el create mode 100644 emacs.d/nxhtml/nxhtml/html-pagetoc.el create mode 100644 emacs.d/nxhtml/nxhtml/html-quote.el create mode 100644 emacs.d/nxhtml/nxhtml/html-site.el create mode 100644 emacs.d/nxhtml/nxhtml/html-toc.el create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc-template.html create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc-template.css create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc.css create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc.js create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/blank12.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/down.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/freeCont.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/gnu-m-x-160.png create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/gnu-m-x-160.xcf create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/hideCont.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/nailCont.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/nosearch.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/right.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/search.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/showCont.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-upl.el create mode 100644 emacs.d/nxhtml/nxhtml/html-upl/COPYING create mode 100644 emacs.d/nxhtml/nxhtml/html-upl/Changes create mode 100644 emacs.d/nxhtml/nxhtml/html-upl/README create mode 100644 emacs.d/nxhtml/nxhtml/html-upl/TODO create mode 100644 emacs.d/nxhtml/nxhtml/html-upl/ftpsync.pl create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc.el create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/PathSubs.pm create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/html_tags.pm create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc-template.css create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc-template.html create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.css create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.js create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.pl create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/blank12.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/down.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/freeCont.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/gnu-m-x-160.png create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/gnu-m-x-160.xcf create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/hideCont.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/nailCont.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/nosearch.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/other/CompFaceLogoTemp4.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/other/CompFaceLogoTemp4.png create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/other/blue_left_top.png create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/other/close-cross.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/other/lbiinfo_and_blue.png create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/other/lbiinfo_and_blue1.png create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/other/lbinfo_col1.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/other/lbinfo_col1_30.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/other/up.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/right.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/search.gif create mode 100644 emacs.d/nxhtml/nxhtml/html-wtoc/img/showCont.gif create mode 100644 emacs.d/nxhtml/nxhtml/nxhtml-autoload.el create mode 100644 emacs.d/nxhtml/nxhtml/nxhtml-bug.el create mode 100644 emacs.d/nxhtml/nxhtml/nxhtml-menu.el create mode 100644 emacs.d/nxhtml/nxhtml/nxhtml-mode.el create mode 100644 emacs.d/nxhtml/nxhtml/nxhtml-mumamo.el create mode 100644 emacs.d/nxhtml/nxhtml/nxhtml-strval.el create mode 100644 emacs.d/nxhtml/nxhtml/nxhtml.el create mode 100644 emacs.d/nxhtml/nxhtml/nxhtmljs.el create mode 100644 emacs.d/nxhtml/nxhtml/nxml-where.el create mode 100644 emacs.d/nxhtml/nxhtml/outline-magic.el create mode 100644 emacs.d/nxhtml/nxhtml/rngalt.el create mode 100644 emacs.d/nxhtml/nxhtml/tidy-xhtml.el create mode 100644 emacs.d/nxhtml/nxhtml/wtest.el create mode 100644 emacs.d/nxhtml/nxhtml/xhtml-help.el create mode 100644 emacs.d/nxhtml/nxhtmlmaint.el create mode 100644 emacs.d/nxhtml/related/blank.html create mode 100644 emacs.d/nxhtml/related/csharp-mode.el create mode 100644 emacs.d/nxhtml/related/django.el create mode 100644 emacs.d/nxhtml/related/env.js create mode 100644 emacs.d/nxhtml/related/flymake-css.el create mode 100644 emacs.d/nxhtml/related/flymake-helpers.el create mode 100644 emacs.d/nxhtml/related/flymake-java-1.el create mode 100644 emacs.d/nxhtml/related/flymake-js.el create mode 100644 emacs.d/nxhtml/related/flymakemsg.el create mode 100644 emacs.d/nxhtml/related/flymu.el create mode 100644 emacs.d/nxhtml/related/iss-mode.el create mode 100644 emacs.d/nxhtml/related/iss-mumamo.el create mode 100644 emacs.d/nxhtml/related/js_temp.js create mode 100644 emacs.d/nxhtml/related/jslint.js create mode 100644 emacs.d/nxhtml/related/moz.el create mode 100644 emacs.d/nxhtml/related/mozadd.el create mode 100644 emacs.d/nxhtml/related/php-imenu.el create mode 100644 emacs.d/nxhtml/related/php-mode.el create mode 100644 emacs.d/nxhtml/related/readme.txt create mode 100644 emacs.d/nxhtml/related/rhino.js create mode 100644 emacs.d/nxhtml/related/smarty-mode.el create mode 100644 emacs.d/nxhtml/related/tt-mode.el create mode 100644 emacs.d/nxhtml/related/visual-basic-mode.el create mode 100644 emacs.d/nxhtml/related/wikipedia-mode.el create mode 100644 emacs.d/nxhtml/tests/angus77-setup-jde.el create mode 100644 emacs.d/nxhtml/tests/emacstest-suites.el create mode 100644 emacs.d/nxhtml/tests/ert.el create mode 100644 emacs.d/nxhtml/tests/ert2.el create mode 100644 emacs.d/nxhtml/tests/hfy-test.el create mode 100644 emacs.d/nxhtml/tests/in/3-heights.html create mode 100644 emacs.d/nxhtml/tests/in/400415-index.phtml create mode 100644 emacs.d/nxhtml/tests/in/asp.asp create mode 100644 emacs.d/nxhtml/tests/in/bastien-test.mm create mode 100644 emacs.d/nxhtml/tests/in/bigfile-stringerr-64000.html create mode 100644 emacs.d/nxhtml/tests/in/blorgit.rb create mode 100644 emacs.d/nxhtml/tests/in/bug-080609.html create mode 100644 emacs.d/nxhtml/tests/in/bug-1908494.php create mode 100644 emacs.d/nxhtml/tests/in/bug-2010-02-17-delgado.mm create mode 100644 emacs.d/nxhtml/tests/in/bug-2010-02-17-delgado.org create mode 100644 emacs.d/nxhtml/tests/in/bug-290364.php create mode 100644 emacs.d/nxhtml/tests/in/bug-300946-index.html create mode 100644 emacs.d/nxhtml/tests/in/bug-311640-index.html create mode 100644 emacs.d/nxhtml/tests/in/bug-311641.php create mode 100644 emacs.d/nxhtml/tests/in/bug-373106-flipbook.html create mode 100644 emacs.d/nxhtml/tests/in/bug-381191-dh-test.el create mode 100644 emacs.d/nxhtml/tests/in/bug-381191-dh-test.php create mode 100644 emacs.d/nxhtml/tests/in/bug-johan-2010-02-12.rhtml create mode 100644 emacs.d/nxhtml/tests/in/bug-johan-2010-02-16.html.haml create mode 100644 emacs.d/nxhtml/tests/in/bug-johan-2010-02-17-2.erb create mode 100644 emacs.d/nxhtml/tests/in/bug-johan-2010-02-17.erb create mode 100644 emacs.d/nxhtml/tests/in/bug261792.ghtml create mode 100644 emacs.d/nxhtml/tests/in/bug271497.el create mode 100644 emacs.d/nxhtml/tests/in/bug271497.txt create mode 100644 emacs.d/nxhtml/tests/in/bug272871.php create mode 100644 emacs.d/nxhtml/tests/in/bug290364-messages.txt create mode 100644 emacs.d/nxhtml/tests/in/bug354363-index.php create mode 100644 emacs.d/nxhtml/tests/in/bug354363-test.php create mode 100644 emacs.d/nxhtml/tests/in/bug369800-load-history.txt create mode 100644 emacs.d/nxhtml/tests/in/bug370417.php create mode 100644 emacs.d/nxhtml/tests/in/bug381979-2-bad-traceb.txt create mode 100644 emacs.d/nxhtml/tests/in/bug381979-2.php create mode 100644 emacs.d/nxhtml/tests/in/bug381979-svnlib.inc create mode 100644 emacs.d/nxhtml/tests/in/bug384115-bt2.txt create mode 100644 emacs.d/nxhtml/tests/in/bug388729-messages.txt create mode 100644 emacs.d/nxhtml/tests/in/bug388729-nxhtml_test.php create mode 100644 emacs.d/nxhtml/tests/in/bug393137-new.html.erb create mode 100644 emacs.d/nxhtml/tests/in/bug400415-foo.php create mode 100644 emacs.d/nxhtml/tests/in/bug400415-foo2.php create mode 100644 emacs.d/nxhtml/tests/in/bug409183.html create mode 100644 emacs.d/nxhtml/tests/in/bug416505-Body.mxml create mode 100644 emacs.d/nxhtml/tests/in/bug416505-nxhtml.el create mode 100644 emacs.d/nxhtml/tests/in/bug452676.php create mode 100644 emacs.d/nxhtml/tests/in/bug463136.php create mode 100644 emacs.d/nxhtml/tests/in/bug492366-test.php create mode 100644 emacs.d/nxhtml/tests/in/bug495770-heredoc_demo.pl create mode 100644 emacs.d/nxhtml/tests/in/bug505554-nxhtml-download-messages.txt create mode 100644 emacs.d/nxhtml/tests/in/bug505554-sample.html.erb create mode 100644 emacs.d/nxhtml/tests/in/bug505726-foo.html create mode 100644 emacs.d/nxhtml/tests/in/bug509586.ghtml create mode 100644 emacs.d/nxhtml/tests/in/bug523065.jsp create mode 100644 emacs.d/nxhtml/tests/in/bug523065.php create mode 100644 emacs.d/nxhtml/tests/in/bug529133-statemachine.py create mode 100644 emacs.d/nxhtml/tests/in/bug531328.rhtml create mode 100644 emacs.d/nxhtml/tests/in/bug532500.rhtml create mode 100644 emacs.d/nxhtml/tests/in/bug532759.djhtml create mode 100644 emacs.d/nxhtml/tests/in/bug546027.html create mode 100644 emacs.d/nxhtml/tests/in/bug552789-loremipsum.php create mode 100644 emacs.d/nxhtml/tests/in/bug552789.php create mode 100644 emacs.d/nxhtml/tests/in/bug556832-error-test.py create mode 100644 emacs.d/nxhtml/tests/in/bug557700-2.erb create mode 100644 emacs.d/nxhtml/tests/in/bug557700-3.erb create mode 100644 emacs.d/nxhtml/tests/in/bug557700-4.erb create mode 100644 emacs.d/nxhtml/tests/in/bug557700-5.erb create mode 100644 emacs.d/nxhtml/tests/in/bug557700-6.erb create mode 100644 emacs.d/nxhtml/tests/in/bug557700.erb create mode 100644 emacs.d/nxhtml/tests/in/bug559772-TextHelper.php create mode 100644 emacs.d/nxhtml/tests/in/bug565595.mako create mode 100644 emacs.d/nxhtml/tests/in/bug568178.pl create mode 100644 emacs.d/nxhtml/tests/in/bug568178.sh create mode 100644 emacs.d/nxhtml/tests/in/bug569742-master-end.html create mode 100644 emacs.d/nxhtml/tests/in/ch-2008-07-25-test.html.erb create mode 100644 emacs.d/nxhtml/tests/in/chunks-in-chunks1.php create mode 100644 emacs.d/nxhtml/tests/in/chunks.html create mode 100644 emacs.d/nxhtml/tests/in/cr-lf.el create mode 100644 emacs.d/nxhtml/tests/in/csr-080710-2.html create mode 100644 emacs.d/nxhtml/tests/in/csr-080710.html create mode 100644 emacs.d/nxhtml/tests/in/cvd-080805-ac.php create mode 100644 emacs.d/nxhtml/tests/in/cvd-080805-cc.php create mode 100644 emacs.d/nxhtml/tests/in/drechsler-080517-simple.xml create mode 100644 emacs.d/nxhtml/tests/in/el-070424-duh.xml create mode 100644 emacs.d/nxhtml/tests/in/el-070511-simple.html create mode 100644 emacs.d/nxhtml/tests/in/el-070602-index.php create mode 100644 emacs.d/nxhtml/tests/in/el-070604.html create mode 100644 emacs.d/nxhtml/tests/in/el-070604.php create mode 100644 emacs.d/nxhtml/tests/in/el-070722-comment-error.php create mode 100644 emacs.d/nxhtml/tests/in/el-070722-index-2.el create mode 100644 emacs.d/nxhtml/tests/in/el-070722-index-2.php create mode 100644 emacs.d/nxhtml/tests/in/el-070722-index-noheader.php create mode 100644 emacs.d/nxhtml/tests/in/el-070722-index.php create mode 100644 emacs.d/nxhtml/tests/in/el-071217-foo.html create mode 100644 emacs.d/nxhtml/tests/in/emacswiki-080119.php create mode 100644 emacs.d/nxhtml/tests/in/emacswiki-erb-bug.el create mode 100644 emacs.d/nxhtml/tests/in/err-line38.html create mode 100644 emacs.d/nxhtml/tests/in/eval-in-html.el create mode 100644 emacs.d/nxhtml/tests/in/fontif-err.html create mode 100644 emacs.d/nxhtml/tests/in/fontif-err.php create mode 100644 emacs.d/nxhtml/tests/in/genshi-HelloWorldPage.ghtml create mode 100644 emacs.d/nxhtml/tests/in/genshi-auto-mode.html create mode 100644 emacs.d/nxhtml/tests/in/genshi.ghtml create mode 100644 emacs.d/nxhtml/tests/in/goesele-091110-testnote-orig.mm create mode 100644 emacs.d/nxhtml/tests/in/goesele-091110-testnote-temp.mm create mode 100644 emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm create mode 100644 emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm.org create mode 100644 emacs.d/nxhtml/tests/in/goesele-091110-testnote.mm.org.mm create mode 100644 emacs.d/nxhtml/tests/in/haml1.haml create mode 100644 emacs.d/nxhtml/tests/in/heredoc.php create mode 100644 emacs.d/nxhtml/tests/in/heredoc.pl create mode 100644 emacs.d/nxhtml/tests/in/heredoc.py create mode 100644 emacs.d/nxhtml/tests/in/heredoc.rb create mode 100644 emacs.d/nxhtml/tests/in/heredoc.sh create mode 100644 emacs.d/nxhtml/tests/in/hg-2008-03-22-ajax.xhtml create mode 100644 emacs.d/nxhtml/tests/in/hq-070510-test.php create mode 100644 emacs.d/nxhtml/tests/in/hq-070510-test.php.html create mode 100644 emacs.d/nxhtml/tests/in/hq-070524-bug.php create mode 100644 emacs.d/nxhtml/tests/in/hq-071006-index.php create mode 100644 emacs.d/nxhtml/tests/in/html-syntactic-err-l164.html create mode 100644 emacs.d/nxhtml/tests/in/ind-0-error.php create mode 100644 emacs.d/nxhtml/tests/in/indent-bug-html-mode.html create mode 100644 emacs.d/nxhtml/tests/in/java.java create mode 100644 emacs.d/nxhtml/tests/in/jcl-080802-index.html.erb create mode 100644 emacs.d/nxhtml/tests/in/jcl-080802-messages_controller.rb create mode 100644 emacs.d/nxhtml/tests/in/jj-081226.html create mode 100644 emacs.d/nxhtml/tests/in/josh-091115-cancer_summary.xsl create mode 100644 emacs.d/nxhtml/tests/in/jump-parse.html create mode 100644 emacs.d/nxhtml/tests/in/jump-parse.rhtml create mode 100644 emacs.d/nxhtml/tests/in/kp-080604.php create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-1.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-2.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-2j.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-3.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-4.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-5.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-6.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-7.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-8.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-9.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-a-notabs.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-a.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-b.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-c.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-d.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-e.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-f.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-g.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-h.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-i.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-j.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing-k.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing.css create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing.html create mode 100644 emacs.d/nxhtml/tests/in/kubica-080516-freezing.txt create mode 100644 emacs.d/nxhtml/tests/in/kwalo-080930.php create mode 100644 emacs.d/nxhtml/tests/in/latex-clojre-mumamo-test.lclj create mode 100644 emacs.d/nxhtml/tests/in/lg-080813-div.html create mode 100644 emacs.d/nxhtml/tests/in/lg-080813-label.html create mode 100644 emacs.d/nxhtml/tests/in/long-lines.txt create mode 100644 emacs.d/nxhtml/tests/in/markdown.markdown create mode 100644 emacs.d/nxhtml/tests/in/mason.mason create mode 100644 emacs.d/nxhtml/tests/in/menu-err.txt create mode 100644 emacs.d/nxhtml/tests/in/mjt-feed.html create mode 100644 emacs.d/nxhtml/tests/in/mjt-imagesearch.html create mode 100644 emacs.d/nxhtml/tests/in/mjt-minimal.html create mode 100644 emacs.d/nxhtml/tests/in/mumamo-and-org.org create mode 100644 emacs.d/nxhtml/tests/in/mumamo-and-org.org.mm create mode 100644 emacs.d/nxhtml/tests/in/ng-080309-read-url.html create mode 100644 emacs.d/nxhtml/tests/in/no-php-end-2.php create mode 100644 emacs.d/nxhtml/tests/in/no-php-end-2.php-log.txt create mode 100644 emacs.d/nxhtml/tests/in/no-php-end-2.php-log2.txt create mode 100644 emacs.d/nxhtml/tests/in/no-php-end-3.php create mode 100644 emacs.d/nxhtml/tests/in/no-php-end-4.php create mode 100644 emacs.d/nxhtml/tests/in/no-php-end.php create mode 100644 emacs.d/nxhtml/tests/in/nojump-parse.html create mode 100644 emacs.d/nxhtml/tests/in/noweb1.now create mode 100644 emacs.d/nxhtml/tests/in/nutshell.mako create mode 100644 emacs.d/nxhtml/tests/in/nxml-bug.html create mode 100644 emacs.d/nxhtml/tests/in/nxml-indent-2.html create mode 100644 emacs.d/nxhtml/tests/in/nxml-indent-3.html create mode 100644 emacs.d/nxhtml/tests/in/nxml-indent-noerr1.html create mode 100644 emacs.d/nxhtml/tests/in/nxml-indent.el create mode 100644 emacs.d/nxhtml/tests/in/nxml-indent.html create mode 100644 emacs.d/nxhtml/tests/in/only-html.html create mode 100644 emacs.d/nxhtml/tests/in/only-php.php create mode 100644 emacs.d/nxhtml/tests/in/pavel-071116.djhtml create mode 100644 emacs.d/nxhtml/tests/in/php-parseable.php create mode 100644 emacs.d/nxhtml/tests/in/question43320.html create mode 100644 emacs.d/nxhtml/tests/in/question44504-folding.html create mode 100644 emacs.d/nxhtml/tests/in/question49234.sh create mode 100644 emacs.d/nxhtml/tests/in/rgr-030809-indexbody.php create mode 100644 emacs.d/nxhtml/tests/in/rgr-080307.php create mode 100644 emacs.d/nxhtml/tests/in/rgr-080308-header-2.php create mode 100644 emacs.d/nxhtml/tests/in/rgr-080308-header.php create mode 100644 emacs.d/nxhtml/tests/in/rgr-080308-indexbody.php create mode 100644 emacs.d/nxhtml/tests/in/rr-090524-header.php create mode 100644 emacs.d/nxhtml/tests/in/rr-090923-header.php create mode 100644 emacs.d/nxhtml/tests/in/rr-address-090304.php create mode 100644 emacs.d/nxhtml/tests/in/rr-address-nxhtml.err create mode 100644 emacs.d/nxhtml/tests/in/rr-min8.php create mode 100644 emacs.d/nxhtml/tests/in/ryan-091104-literal.tpl create mode 100644 emacs.d/nxhtml/tests/in/ryan-091111-wrong-side.tpl create mode 100644 emacs.d/nxhtml/tests/in/schemas.xml create mode 100644 emacs.d/nxhtml/tests/in/sd-080803-test.php create mode 100644 emacs.d/nxhtml/tests/in/senny-091118.htm create mode 100644 emacs.d/nxhtml/tests/in/sheit-2007-12-26.php create mode 100644 emacs.d/nxhtml/tests/in/short-tags.php create mode 100644 emacs.d/nxhtml/tests/in/single-question-sign.html create mode 100644 emacs.d/nxhtml/tests/in/ssjs.ssjs create mode 100644 emacs.d/nxhtml/tests/in/string-bug.php create mode 100644 emacs.d/nxhtml/tests/in/style=.html create mode 100644 emacs.d/nxhtml/tests/in/style=string-font.html create mode 100644 emacs.d/nxhtml/tests/in/svg.svg create mode 100644 emacs.d/nxhtml/tests/in/temp2.php create mode 100644 emacs.d/nxhtml/tests/in/temp3.html create mode 100644 emacs.d/nxhtml/tests/in/test-only-nxml.my-xhtml create mode 100644 emacs.d/nxhtml/tests/in/test.tt create mode 100644 emacs.d/nxhtml/tests/in/tut1.jsp create mode 100644 emacs.d/nxhtml/tests/in/utf8-problem.el create mode 100644 emacs.d/nxhtml/tests/in/wiki-080606-indent.php create mode 100644 emacs.d/nxhtml/tests/in/wiki-080708-ind-problem.rhtml create mode 100644 emacs.d/nxhtml/tests/in/wiki-090804-js.html create mode 100644 emacs.d/nxhtml/tests/in/wiki-2008-01-30.rhtml create mode 100644 emacs.d/nxhtml/tests/in/wiki-comments.php create mode 100644 emacs.d/nxhtml/tests/in/wiki-strange-hili-080629.html create mode 100644 emacs.d/nxhtml/tests/in/xml-as-string.php create mode 100644 emacs.d/nxhtml/tests/in/ygne-2008-02-07-hotproperty.html.php create mode 100644 emacs.d/nxhtml/tests/in/zero-pi.html create mode 100644 emacs.d/nxhtml/tests/in/zn-090529-doxysample.php create mode 100644 emacs.d/nxhtml/tests/inemacs/bug1013.el create mode 100644 emacs.d/nxhtml/tests/mumamo-test.el create mode 100644 emacs.d/nxhtml/tests/nxhtmltest-Q.el create mode 100644 emacs.d/nxhtml/tests/nxhtmltest-helpers.el create mode 100644 emacs.d/nxhtml/tests/nxhtmltest-suites.el create mode 100644 emacs.d/nxhtml/util/anchored-transpose.el create mode 100644 emacs.d/nxhtml/util/appmenu-fold.el create mode 100644 emacs.d/nxhtml/util/appmenu.el create mode 100644 emacs.d/nxhtml/util/as-external.el create mode 100644 emacs.d/nxhtml/util/buffer-bg.el create mode 100644 emacs.d/nxhtml/util/chartg.el create mode 100644 emacs.d/nxhtml/util/css-color.el create mode 100644 emacs.d/nxhtml/util/css-palette.el create mode 100644 emacs.d/nxhtml/util/css-simple-completion.el create mode 100644 emacs.d/nxhtml/util/cus-new-user.el create mode 100644 emacs.d/nxhtml/util/custsets.el create mode 100644 emacs.d/nxhtml/util/ecb-batch-compile.el create mode 100644 emacs.d/nxhtml/util/ediff-url.el create mode 100644 emacs.d/nxhtml/util/ffip.el create mode 100644 emacs.d/nxhtml/util/fold-dwim.el create mode 100644 emacs.d/nxhtml/util/foldit.el create mode 100644 emacs.d/nxhtml/util/fupd.el create mode 100644 emacs.d/nxhtml/util/gimpedit.el create mode 100644 emacs.d/nxhtml/util/gpl.el create mode 100644 emacs.d/nxhtml/util/hfyview.el create mode 100644 emacs.d/nxhtml/util/hl-needed.el create mode 100644 emacs.d/nxhtml/util/html-write.el create mode 100644 emacs.d/nxhtml/util/idn.el create mode 100644 emacs.d/nxhtml/util/inlimg.el create mode 100644 emacs.d/nxhtml/util/key-cat.el create mode 100644 emacs.d/nxhtml/util/majmodpri.el create mode 100644 emacs.d/nxhtml/util/markchars.el create mode 100644 emacs.d/nxhtml/util/mlinks.el create mode 100644 emacs.d/nxhtml/util/mumamo-aspnet.el create mode 100644 emacs.d/nxhtml/util/mumamo-fun.el create mode 100644 emacs.d/nxhtml/util/mumamo-regions.el create mode 100644 emacs.d/nxhtml/util/mumamo-trace.el create mode 100644 emacs.d/nxhtml/util/mumamo.el create mode 100644 emacs.d/nxhtml/util/n-back.el create mode 100644 emacs.d/nxhtml/util/new-key-seq-widget.el create mode 100644 emacs.d/nxhtml/util/nxml-mode-os-additions.el create mode 100644 emacs.d/nxhtml/util/ocr-user.el create mode 100644 emacs.d/nxhtml/util/org-panel.el create mode 100644 emacs.d/nxhtml/util/ourcomments-util.el create mode 100644 emacs.d/nxhtml/util/ourcomments-widgets.el create mode 100644 emacs.d/nxhtml/util/pause.el create mode 100644 emacs.d/nxhtml/util/pointback.el create mode 100644 emacs.d/nxhtml/util/popcmp.el create mode 100644 emacs.d/nxhtml/util/readme.txt create mode 100644 emacs.d/nxhtml/util/rebind.el create mode 100644 emacs.d/nxhtml/util/rnc-mode.el create mode 100644 emacs.d/nxhtml/util/rxi.el create mode 100644 emacs.d/nxhtml/util/search-form.el create mode 100644 emacs.d/nxhtml/util/sex-mode.el create mode 100644 emacs.d/nxhtml/util/sml-modeline.el create mode 100644 emacs.d/nxhtml/util/tabkey2.el create mode 100644 emacs.d/nxhtml/util/tyda.el create mode 100644 emacs.d/nxhtml/util/udev-ecb.el create mode 100644 emacs.d/nxhtml/util/udev-rinari.el create mode 100644 emacs.d/nxhtml/util/udev.el create mode 100644 emacs.d/nxhtml/util/useful-commands.el create mode 100644 emacs.d/nxhtml/util/viper-tut.el create mode 100644 emacs.d/nxhtml/util/vline.el create mode 100644 emacs.d/nxhtml/util/web-vcs-revision.txt create mode 100644 emacs.d/nxhtml/util/whelp.el create mode 100644 emacs.d/nxhtml/util/winsav.el create mode 100644 emacs.d/nxhtml/util/winsize.el create mode 100644 emacs.d/nxhtml/util/wrap-to-fill.el create mode 100644 emacs.d/nxhtml/util/zencoding-mode.el create mode 100644 emacs.d/nxhtml/web-autoload.el create mode 100644 emacs.d/nxhtml/web-vcs.el diff --git a/emacs.d/00-paths.el b/emacs.d/00-paths.el index 722b8c8..41f9a31 100644 --- a/emacs.d/00-paths.el +++ b/emacs.d/00-paths.el @@ -1,3 +1,4 @@ (add-to-list 'load-path "~/.emacs.d/elisp") (add-to-list 'load-path "~/.emacs.d/naquadah-theme") (add-to-list 'load-path "~/.emacs.d/auto-complete-clang") +(add-to-list 'load-path "~/.emacs.d/nxhtml") diff --git a/emacs.d/10-file-associations.el b/emacs.d/10-file-associations.el index 00084f4..52a7e23 100644 --- a/emacs.d/10-file-associations.el +++ b/emacs.d/10-file-associations.el @@ -3,6 +3,8 @@ (add-to-list 'auto-mode-alist '("\\.cs$" . csharp-mode)) (add-to-list 'auto-mode-alist '("\\.bat$" . batch-mode)) (add-to-list 'auto-mode-alist '("\\.lua$" . lua-mode)) +(add-to-list 'auto-mode-alist '("\\.php[345]?$" . php-mode)) +(add-to-list 'auto-mode-alist '("\\.js\\(on\\)?$" . javascript-mode)) (add-to-list 'file-coding-system-alist '("\\.vala$" . utf-8)) (add-to-list 'file-coding-system-alist '("\\.vapi$" . utf-8)) diff --git a/emacs.d/10-modules.el b/emacs.d/10-modules.el index 3db81b7..61c2533 100644 --- a/emacs.d/10-modules.el +++ b/emacs.d/10-modules.el @@ -1,6 +1,7 @@ (require 'minimap) (require 'naquadah-theme) ;(require 'auto-complete-clang) +(load "autostart.el") (autoload 'vala-mode "vala-mode" "A Major mode for editing Vala files" t) @@ -14,3 +15,5 @@ "batch-mode" "A Major mode for editing Batch files" t) (autoload 'lua-mode "lua-mode" "A Major mode for editing Lua files" t) +(autoload 'php-mode + "php-mode" "A Major mode for editing PHP files" t) diff --git a/emacs.d/20-org.el b/emacs.d/20-org.el index ccface5..6aa5b0a 100644 --- a/emacs.d/20-org.el +++ b/emacs.d/20-org.el @@ -1,12 +1,25 @@ (require 'org-crypt) -(setq org-todo-keywords '((sequence "TODO" "IN PROGRESS" "|" "DONE"))) +(setq org-todo-keywords '((sequence "TODO(t)" + "IN PROGRESS(p)" + "WAITING(w@/!)" + "|" + "DONE(d!/!)" + "CANCELLED(c@/!)"))) (setq org-ditaa-jar-path "/usr/share/java/ditaa/ditaa-0_9.jar") (setq org-babel-load-languages '((ditaa . t))) (setq org-confirm-babel-evaluate nil) (setq org-tags-exclude-from-inheritance '("crypt")) (setq org-crypt-key "33E8CC1CC4") ; GPG key used for encryption +(setq org-use-fast-todo-selection t) + +(setq org-todo-keyword-faces + '(("TODO" :foreground "red" :weight bold) + ("IN PROGRESS" :foreground "yellow" :weight bold) + ("DONE" :foreground "forest green" :weight bold) + ("WAITING" :foreground "orange" :weight bold) + ("CANCELLED" :foreground "orangered" :weight bold))) (global-set-key "\C-cl" 'org-store-link) (global-set-key "\C-cc" 'org-capture) diff --git a/emacs.d/30-django-mumamo.el b/emacs.d/30-django-mumamo.el new file mode 100644 index 0000000..456eea4 --- /dev/null +++ b/emacs.d/30-django-mumamo.el @@ -0,0 +1 @@ +(setq mumamo-background-colors nil) diff --git a/emacs.d/elisp/php-mode.el b/emacs.d/elisp/php-mode.el new file mode 100644 index 0000000..a8e34bf --- /dev/null +++ b/emacs.d/elisp/php-mode.el @@ -0,0 +1,291 @@ + + + + + + + +SourceForge.net Repository - [php-mode] Index of / + + + + +SourceForge.net Repository - php-mode Index of / + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+ +
+
+
+
+
+
+ + + + + + + + + + + +
+

SCM Repositories - php-mode

+
+
+
+
+ + + +
+
+
+
+ + + +
+ + + + + + + + + + + + + + +
Files shown:0 + + +
Directory revision:97 (of 97)
Sticky Revision:
+
+ + + + + +
+
+ +
+ + +
+
+
+
+
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+File + + + + +Rev. + + +Age + + +Author + + +Last log entry + +
+ + + + +branches/ + + 3 7 years turadg Initial import. +
+ + + + +tags/ + + 94 2 years ashawley Remove typo tag.
+ + + + +trunk/ + + 97 2 years ashawley Require add-log to avoid byte compilation warning +for add-log-current-defun-head…
+
+ + + + +

Download GNU tarball

+ + +
+
+
+
+
+
+ + +
+
+
+ + + + + + + + diff --git a/emacs.d/nxhtml/README.txt b/emacs.d/nxhtml/README.txt new file mode 100644 index 0000000..e9204b4 --- /dev/null +++ b/emacs.d/nxhtml/README.txt @@ -0,0 +1,46 @@ +To install nXhtml put this in your .emacs: + + (load "YOUR-PATH-TO/nxhtml/autostart.el") + +where autostart.el is the file in the same directory as this +readme.txt file. + +Note 1: If you are using Emacs+EmacsW32 then nXhtml is already + installed. + +Note 2: If you are using Emacs 22 then you need to install nXml + separately. (It is included in Emacs 23.) + +Note 3: You may optionally also byte compile nXhtml from the nXhtml + menu (recommended). + + + +Files that are now in Emacs' development (CVS/Bazaar) repository +================================================================ + +Some files that were previously distributed with nXhtml are now in +Emacs' development repository. Distributing them also with nXhtml is +a bad idea since that can lead to that the wrong file is loaded. They +are therefore not distributed with nXhtml anymore. + +Instead you can (if you do not have the files in your Emacs) in many +cases use the version from the repository. To do that you can +currently start from + + http://cvs.savannah.gnu.org/viewvc/emacs/emacs/lisp/ + +Files you can download and use this way are for example + + js.el (JavaScript, formerly called espresso.el) + htmlfontify.el + +If you do that I suggest that you put these files in a special +directory and add that to load-path in your .emacs and make that +adding to load-path depend on your Emacs version so that they will not +be loaded when you have upgraded your Emacs. + +Note that if you want to use nxml-mode (and it is not in your Emacs) +you should not download it from Emacs' development directory. Instead go to + + http://www.thaiopensource.com/download/ diff --git a/emacs.d/nxhtml/alts/find-recursive-orig.el b/emacs.d/nxhtml/alts/find-recursive-orig.el new file mode 100644 index 0000000..509a038 --- /dev/null +++ b/emacs.d/nxhtml/alts/find-recursive-orig.el @@ -0,0 +1,137 @@ +;; find-recursive.el -- Find files recursively into a directory +;; +;; Copyright (C) 2001 Ovidiu Predescu +;; +;; Author: Ovidiu Predescu +;; Date: March 26, 2001 +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License +;; as published by the Free Software Foundation; either version 2 +;; of the License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, write to the Free Software +;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +;; +;; Setup: put this file in your Lisp path and add the following line in +;; your .emacs: +;; +;; (require 'find-recursive) +;; + +(require 'cl) + +(defcustom find-recursive-exclude-files '(".*.class$" ".*~$" ".*.elc$") + "List of regular expressions of files to be excluded when recursively searching for files." + :type '(repeat (string :tag "File regexp"))) + +(defun find-file-recursively (file-regexp directory) + (interactive "sFile name to search for recursively: \nDIn directory: ") + (let ((directory (if (equal (substring directory -1) "/") + directory + (concat directory "/"))) + (matches + (find-recursive-filter-out + find-recursive-exclude-files + (find-recursive-directory-relative-files directory "" file-regexp)))) + (cond ((eq (length matches) 0) (message "No file(s) found!")) + ((eq (length matches) 1) + (find-file (concat directory (car matches)))) + (t + (run-with-timer 0.001 nil + (lambda () + (dispatch-event + (make-event 'key-press '(key tab))))) + (let ((file (completing-read "Choose file: " + (mapcar 'list matches) + nil t))) + (if (or (eq file nil) (equal file "")) + (message "No file selected.") + (find-file (concat directory file)))))))) + +(defun find-recursive-directory-relative-files (directory + relative-directory + file-regexp) + (let* ((full-dir (concat directory "/" relative-directory)) + (matches + (mapcar + (function (lambda (x) + (concat relative-directory x))) + (find-recursive-filter-out '(nil) + (directory-files full-dir nil + file-regexp nil t)))) + (inner + (mapcar + (function + (lambda (dir) + (find-recursive-directory-relative-files directory + (concat relative-directory + dir "/") + file-regexp))) + (find-recursive-filter-out '(nil "\\." "\\.\\.") + (directory-files full-dir nil ".*" + nil 'directories))))) + (mapcar (function (lambda (dir) (setq matches (append matches dir)))) + inner) + matches)) + +(defun find-recursive-filter-out (remove-list list) + "Remove all the elements in *remove-list* from *list*" + (if (eq list nil) + nil + (let ((elem (car list)) + (rest (cdr list))) + (if (some + (lambda (regexp) + (if (or (eq elem nil) (eq regexp nil)) + nil + (not (eq (string-match regexp elem) nil)))) + remove-list) + (find-recursive-filter-out remove-list rest) + (cons elem (find-recursive-filter-out remove-list rest)))))) + +(defvar find-recursive-running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)) + +(if find-recursive-running-xemacs + nil + (defadvice directory-files (after + directory-files-xemacs + (dirname &optional full match nosort files-only) + activate) + "Add an additional argument, FILES-ONLY to the list of arguments +for GNU Emacs. If the symbol is t, then only the files in the +directory will be returned. If FILES-ONLY is nil, then both files and +directories are selected. If FILES-ONLY is not nil and not t, then +only sundirectories are returned." + (setq ad-return-value + (cond ((null files-only) ad-return-value) + ((eq files-only t) + (find-recursive-remove-if (lambda (f) + (file-directory-p + (concat dirname "/" f))) + ad-return-value)) + (t + (find-recursive-remove-if (lambda (f) + (not (file-directory-p + (concat dirname "/" f)))) + ad-return-value))))) + + (defun find-recursive-remove-if (func list) + "Removes all elements satisfying FUNC from LIST." + (let ((result nil)) + (while list + (if (not (funcall func (car list))) + (setq result (cons (car list) result))) + (setq list (cdr list))) + (nreverse result)))) + +(global-set-key [(control x) (meta f)] 'find-file-recursively) + +(provide 'find-recursive) diff --git a/emacs.d/nxhtml/alts/javascript-mozlab.el b/emacs.d/nxhtml/alts/javascript-mozlab.el new file mode 100644 index 0000000..bcec39b --- /dev/null +++ b/emacs.d/nxhtml/alts/javascript-mozlab.el @@ -0,0 +1,712 @@ +;;; javascript.el --- Major mode for editing JavaScript source text + +;; Copyright (C) 2006 Karl Landström + +;; Author: Karl Landström +;; Maintainer: Karl Landström +;; Version: 2.0 Beta 8 +;; Date: 2006-12-26 +;; Keywords: languages, oop + +;; This file is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; This file is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. + +;;; Commentary: +;; +;; The main features of this JavaScript mode are syntactic +;; highlighting (enabled with `font-lock-mode' or +;; `global-font-lock-mode'), automatic indentation and filling of +;; comments. +;; +;; This package has (only) been tested with GNU Emacs 21.4 (the latest +;; stable release). +;; +;; Installation: +;; +;; Put this file in a directory where Emacs can find it (`C-h v +;; load-path' for more info). Then add the following lines to your +;; Emacs initialization file: +;; +;; (add-to-list 'auto-mode-alist '("\\.js\\'" . javascript-mode)) +;; (autoload 'javascript-mode "javascript" nil t) +;; +;; General Remarks: +;; +;; This mode assumes that block comments are not nested inside block +;; comments and that strings do not contain line breaks. +;; +;; Exported names start with "javascript-" whereas private names start +;; with "js-". +;; +;; Changes: +;; +;; See javascript.el.changelog. + +;;; Code: + +(require 'cc-mode) +(require 'font-lock) +(require 'newcomment) + +(defgroup javascript nil + "Customization variables for `javascript-mode'." + :tag "JavaScript" + :group 'languages) + +(defcustom javascript-indent-level 4 + "Number of spaces for each indentation step." + :type 'integer + :group 'javascript) + +(defcustom javascript-auto-indent-flag t + "Automatic indentation with punctuation characters. If non-nil, the +current line is indented when certain punctuations are inserted." + :type 'boolean + :group 'javascript) + + +;; --- Keymap --- + +(defvar javascript-mode-map nil + "Keymap used in JavaScript mode.") + +(unless javascript-mode-map + (setq javascript-mode-map (make-sparse-keymap))) + +(when javascript-auto-indent-flag + (mapc (lambda (key) + (define-key javascript-mode-map key 'javascript-insert-and-indent)) + '("{" "}" "(" ")" ":" ";" ","))) + +(defun javascript-insert-and-indent (key) + "Run command bound to key and indent current line. Runs the command +bound to KEY in the global keymap and indents the current line." + (interactive (list (this-command-keys))) + (call-interactively (lookup-key (current-global-map) key)) + (indent-according-to-mode)) + + +;; --- Syntax Table And Parsing --- + +(defvar javascript-mode-syntax-table + (let ((table (make-syntax-table))) + (c-populate-syntax-table table) + + ;; The syntax class of underscore should really be `symbol' ("_") + ;; but that makes matching of tokens much more complex as e.g. + ;; "\\" matches part of e.g. "_xyz" and "xyz_abc". Defines + ;; it as word constituent for now. + (modify-syntax-entry ?_ "w" table) + + table) + "Syntax table used in JavaScript mode.") + + +(defun js-re-search-forward-inner (regexp &optional bound count) + "Auxiliary function for `js-re-search-forward'." + (let ((parse) + (saved-point (point-min))) + (while (> count 0) + (re-search-forward regexp bound) + (setq parse (parse-partial-sexp saved-point (point))) + (cond ((nth 3 parse) + (re-search-forward + (concat "\\([^\\]\\|^\\)" (string (nth 3 parse))) + (save-excursion (end-of-line) (point)) t)) + ((nth 7 parse) + (forward-line)) + ((or (nth 4 parse) + (and (eq (char-before) ?\/) (eq (char-after) ?\*))) + (re-search-forward "\\*/")) + (t + (setq count (1- count)))) + (setq saved-point (point)))) + (point)) + + +(defun js-re-search-forward (regexp &optional bound noerror count) + "Search forward but ignore strings and comments. Invokes +`re-search-forward' but treats the buffer as if strings and +comments have been removed." + (let ((saved-point (point)) + (search-expr + (cond ((null count) + '(js-re-search-forward-inner regexp bound 1)) + ((< count 0) + '(js-re-search-backward-inner regexp bound (- count))) + ((> count 0) + '(js-re-search-forward-inner regexp bound count))))) + (condition-case err + (eval search-expr) + (search-failed + (goto-char saved-point) + (unless noerror + (error (error-message-string err))))))) + + +(defun js-re-search-backward-inner (regexp &optional bound count) + "Auxiliary function for `js-re-search-backward'." + (let ((parse) + (saved-point (point-min))) + (while (> count 0) + (re-search-backward regexp bound) + (when (and (> (point) (point-min)) + (save-excursion (backward-char) (looking-at "/[/*]"))) + (forward-char)) + (setq parse (parse-partial-sexp saved-point (point))) + (cond ((nth 3 parse) + (re-search-backward + (concat "\\([^\\]\\|^\\)" (string (nth 3 parse))) + (save-excursion (beginning-of-line) (point)) t)) + ((nth 7 parse) + (goto-char (nth 8 parse))) + ((or (nth 4 parse) + (and (eq (char-before) ?/) (eq (char-after) ?*))) + (re-search-backward "/\\*")) + (t + (setq count (1- count)))))) + (point)) + + +(defun js-re-search-backward (regexp &optional bound noerror count) + "Search backward but ignore strings and comments. Invokes +`re-search-backward' but treats the buffer as if strings and +comments have been removed." + (let ((saved-point (point)) + (search-expr + (cond ((null count) + '(js-re-search-backward-inner regexp bound 1)) + ((< count 0) + '(js-re-search-forward-inner regexp bound (- count))) + ((> count 0) + '(js-re-search-backward-inner regexp bound count))))) + (condition-case err + (eval search-expr) + (search-failed + (goto-char saved-point) + (unless noerror + (error (error-message-string err))))))) + + +(defun js-continued-var-decl-list-p () + "Return non-nil if point is inside a continued variable declaration +list." + (interactive) + (let ((start (save-excursion (js-re-search-backward "\\" nil t)))) + (and start + (save-excursion (re-search-backward "\n" start t)) + (not (save-excursion + (js-re-search-backward + ";\\|[^, \t][ \t]*\\(/[/*]\\|$\\)" start t)))))) + + +;; --- Font Lock --- + +(defun js-inside-param-list-p () + "Return non-nil if point is inside a function parameter list." + (condition-case err + (save-excursion + (up-list -1) + (and (looking-at "(") + (progn (backward-word 1) + (or (looking-at "function") + (progn (backward-word 1) (looking-at "function")))))) + (error nil))) + + +(defconst js-function-heading-1-re + "^[ \t]*function[ \t]+\\(\\w+\\)" + "Regular expression matching the start of a function header.") + +(defconst js-function-heading-2-re + "^[ \t]*\\(\\w+\\)[ \t]*:[ \t]*function\\>" + "Regular expression matching the start of a function entry in + an associative array.") + +(defconst js-keyword-re + (regexp-opt '("abstract" "break" "case" "catch" "class" "const" + "continue" "debugger" "default" "delete" "do" "else" + "enum" "export" "extends" "final" "finally" "for" + "function" "goto" "if" "implements" "import" "in" + "instanceof" "interface" "native" "new" "package" + "private" "protected" "public" "return" "static" + "super" "switch" "synchronized" "this" "throw" + "throws" "transient" "try" "typeof" "var" "void" + "volatile" "while" "with" + "let") 'words) + "Regular expression matching any JavaScript keyword.") + +(defconst js-basic-type-re + (regexp-opt '("boolean" "byte" "char" "double" "float" "int" "long" + "short" "void") 'words) + "Regular expression matching any predefined type in JavaScript.") + +(defconst js-constant-re + (regexp-opt '("false" "null" "true") 'words) + "Regular expression matching any future reserved words in JavaScript.") + + +(defconst js-font-lock-keywords-1 + (list + "\\" + (list js-function-heading-1-re 1 font-lock-function-name-face) + (list js-function-heading-2-re 1 font-lock-function-name-face) + (list "[=(][ \t]*\\(/.*?[^\\]/\\w*\\)" 1 font-lock-string-face)) + "Level one font lock.") + +(defconst js-font-lock-keywords-2 + (append js-font-lock-keywords-1 + (list (list js-keyword-re 1 font-lock-keyword-face) + (cons js-basic-type-re font-lock-type-face) + (cons js-constant-re font-lock-constant-face))) + "Level two font lock.") + + +;; Limitations with variable declarations: There seems to be no +;; sensible way to highlight variables occuring after an initialized +;; variable in a variable list. For instance, in +;; +;; var x, y = f(a, b), z +;; +;; z will not be highlighted. + +(defconst js-font-lock-keywords-3 + (append + js-font-lock-keywords-2 + (list + + ;; variable declarations + (list + (concat "\\<\\(const\\|var\\)\\>\\|" js-basic-type-re) + (list "\\(\\w+\\)[ \t]*\\([=;].*\\|,\\|/[/*]\\|$\\)" + nil + nil + '(1 font-lock-variable-name-face))) + + ;; continued variable declaration list + (list + (concat "^[ \t]*\\w+[ \t]*\\([,;=]\\|/[/*]\\|$\\)") + (list "\\(\\w+\\)[ \t]*\\([=;].*\\|,\\|/[/*]\\|$\\)" + '(if (save-excursion (backward-char) (js-continued-var-decl-list-p)) + (backward-word 1) + (end-of-line)) + '(end-of-line) + '(1 font-lock-variable-name-face))) + + ;; formal parameters + (list + (concat "\\\\([ \t]+\\w+\\)?[ \t]*([ \t]*\\w") + (list "\\(\\w+\\)\\([ \t]*).*\\)?" + '(backward-char) + '(end-of-line) + '(1 font-lock-variable-name-face))) + + ;; continued formal parameter list + (list + (concat "^[ \t]*\\w+[ \t]*[,)]") + (list "\\w+" + '(if (save-excursion (backward-char) (js-inside-param-list-p)) + (backward-word 1) + (end-of-line)) + '(end-of-line) + '(0 font-lock-variable-name-face))))) + "Level three font lock.") + +(defconst js-font-lock-keywords + '(js-font-lock-keywords-3 js-font-lock-keywords-1 js-font-lock-keywords-2 + js-font-lock-keywords-3) + "See `font-lock-keywords'.") + + +;; --- Indentation --- + +(defconst js-possibly-braceless-keyword-re + (regexp-opt + '("catch" "do" "else" "finally" "for" "if" "try" "while" "with" "let") + 'words) + "Regular expression matching keywords that are optionally + followed by an opening brace.") + +(defconst js-indent-operator-re + (concat "[-+*/%<>=&^|?:.]\\([^-+*/]\\|$\\)\\|" + (regexp-opt '("in" "instanceof") 'words)) + "Regular expression matching operators that affect indentation + of continued expressions.") + + +(defun js-looking-at-operator-p () + "Return non-nil if text after point is an operator (that is not +a comma)." + (save-match-data + (and (looking-at js-indent-operator-re) + (or (not (looking-at ":")) + (save-excursion + (and (js-re-search-backward "[?:{]\\|\\" nil t) + (looking-at "?"))))))) + + +(defun js-continued-expression-p () + "Returns non-nil if the current line continues an expression." + (save-excursion + (back-to-indentation) + (or (js-looking-at-operator-p) + (and (js-re-search-backward "\n" nil t) + (progn + (skip-chars-backward " \t") + (backward-char) + (and (> (point) (point-min)) + (save-excursion (backward-char) (not (looking-at "[/*]/"))) + (js-looking-at-operator-p) + (and (progn (backward-char) + (not (looking-at "++\\|--\\|/[/*]")))))))))) + + +(defun js-end-of-do-while-loop-p () + "Returns non-nil if word after point is `while' of a do-while +statement, else returns nil. A braceless do-while statement +spanning several lines requires that the start of the loop is +indented to the same column as the current line." + (interactive) + (save-excursion + (save-match-data + (when (looking-at "\\s-*\\") + (if (save-excursion + (skip-chars-backward "[ \t\n]*}") + (looking-at "[ \t\n]*}")) + (save-excursion + (backward-list) (backward-word 1) (looking-at "\\")) + (js-re-search-backward "\\" (point-at-bol) t) + (or (looking-at "\\") + (let ((saved-indent (current-indentation))) + (while (and (js-re-search-backward "^[ \t]*\\<" nil t) + (/= (current-indentation) saved-indent))) + (and (looking-at "[ \t]*\\") + (not (js-re-search-forward + "\\" (point-at-eol) t)) + (= (current-indentation) saved-indent))))))))) + + +(defun js-ctrl-statement-indentation () + "Returns the proper indentation of the current line if it +starts the body of a control statement without braces, else +returns nil." + (save-excursion + (back-to-indentation) + (when (save-excursion + (and (not (looking-at "[{]")) + (progn + (js-re-search-backward "[[:graph:]]" nil t) + (forward-char) + (when (= (char-before) ?\)) (backward-list)) + (skip-syntax-backward " ") + (skip-syntax-backward "w") + (looking-at js-possibly-braceless-keyword-re)) + (not (js-end-of-do-while-loop-p)))) + (save-excursion + (goto-char (match-beginning 0)) + (+ (current-indentation) javascript-indent-level))))) + + +(defun js-proper-indentation (parse-status) + "Return the proper indentation for the current line." + (save-excursion + (back-to-indentation) + (let ((ctrl-stmt-indent (js-ctrl-statement-indentation)) + (same-indent-p (looking-at "[]})]\\|\\\\|\\")) + (continued-expr-p (js-continued-expression-p))) + (cond (ctrl-stmt-indent) + ((js-continued-var-decl-list-p) + (js-re-search-backward "\\" nil t) + (+ (current-indentation) javascript-indent-level)) + ((nth 1 parse-status) + (goto-char (nth 1 parse-status)) + (if (looking-at "[({[][ \t]*\\(/[/*]\\|$\\)") + (progn + (skip-syntax-backward " ") + (when (= (char-before) ?\)) (backward-list)) + (back-to-indentation) + (cond (same-indent-p + (current-column)) + (continued-expr-p + (+ (current-column) (* 2 javascript-indent-level))) + (t + (+ (current-column) javascript-indent-level)))) + (unless same-indent-p + (forward-char) + (skip-chars-forward " \t")) + (current-column))) + (continued-expr-p javascript-indent-level) + (t 0))))) + + +(defun javascript-indent-line () + "Indent the current line as JavaScript source text." + (interactive) + (let ((parse-status + (save-excursion (parse-partial-sexp (point-min) (point-at-bol)))) + (offset (- (current-column) (current-indentation)))) + (when (not (nth 8 parse-status)) + (indent-line-to (js-proper-indentation parse-status)) + (when (> offset 0) (forward-char offset))))) + + +;; --- Filling --- + +;; FIXME: It should be possible to use the more sofisticated function +;; `c-fill-paragraph' in `cc-cmds.el' instead. However, just setting +;; `fill-paragraph-function' to `c-fill-paragraph' does not work; +;; inside `c-fill-paragraph', `fill-paragraph-function' evaluates to +;; nil!? + +(defun js-backward-paragraph () + "Move backward to start of paragraph. Postcondition: Point is at +beginning of buffer or the previous line contains only whitespace." + (forward-line -1) + (while (not (or (bobp) (looking-at "^[ \t]*$"))) + (forward-line -1)) + (when (not (bobp)) (forward-line 1))) + + +(defun js-forward-paragraph () + "Move forward to end of paragraph. Postcondition: Point is at +end of buffer or the next line contains only whitespace." + (forward-line 1) + (while (not (or (eobp) (looking-at "^[ \t]*$"))) + (forward-line 1)) + (when (not (eobp)) (backward-char 1))) + + +(defun js-fill-block-comment-paragraph (parse-status justify) + "Fill current paragraph as a block comment. PARSE-STATUS is the +result of `parse-partial-regexp' from beginning of buffer to +point. JUSTIFY has the same meaning as in `fill-paragraph'." + (let ((offset (save-excursion + (goto-char (nth 8 parse-status)) (current-indentation)))) + (save-excursion + (save-restriction + (narrow-to-region (save-excursion + (goto-char (nth 8 parse-status)) (point-at-bol)) + (save-excursion + (goto-char (nth 8 parse-status)) + (re-search-forward "*/"))) + (narrow-to-region (save-excursion + (js-backward-paragraph) + (when (looking-at "^[ \t]*$") (forward-line 1)) + (point)) + (save-excursion + (js-forward-paragraph) + (when (looking-at "^[ \t]*$") (backward-char)) + (point))) + (goto-char (point-min)) + (while (not (eobp)) + (delete-horizontal-space) + (forward-line 1)) + (let ((fill-column (- fill-column offset)) + (fill-paragraph-function nil)) + (fill-paragraph justify)) + + ;; In Emacs 21.4 as opposed to CVS Emacs 22, + ;; `fill-paragraph' seems toadd a newline at the end of the + ;; paragraph. Remove it! + (goto-char (point-max)) + (when (looking-at "^$") (backward-delete-char 1)) + + (goto-char (point-min)) + (while (not (eobp)) + (indent-to offset) + (forward-line 1)))))) + + +(defun js-sline-comment-par-start () + "Return point at the beginning of the line where the current +single-line comment paragraph starts." + (save-excursion + (beginning-of-line) + (while (and (not (bobp)) + (looking-at "^[ \t]*//[ \t]*[[:graph:]]")) + (forward-line -1)) + (unless (bobp) (forward-line 1)) + (point))) + + +(defun js-sline-comment-par-end () + "Return point at end of current single-line comment paragraph." + (save-excursion + (beginning-of-line) + (while (and (not (eobp)) + (looking-at "^[ \t]*//[ \t]*[[:graph:]]")) + (forward-line 1)) + (unless (bobp) (backward-char)) + (point))) + + +(defun js-sline-comment-offset (line) + "Return the column at the start of the current single-line +comment paragraph." + (save-excursion + (goto-line line) + (re-search-forward "//" (point-at-eol)) + (goto-char (match-beginning 0)) + (current-column))) + + +(defun js-sline-comment-text-offset (line) + "Return the column at the start of the text of the current +single-line comment paragraph." + (save-excursion + (goto-line line) + (re-search-forward "//[ \t]*" (point-at-eol)) + (current-column))) + + +(defun js-at-empty-sline-comment-p () + "Return non-nil if inside an empty single-line comment." + (and (save-excursion + (beginning-of-line) + (not (looking-at "^.*//.*[[:graph:]]"))) + (save-excursion + (re-search-backward "//" (point-at-bol) t)))) + + +(defun js-fill-sline-comments (parse-status justify) + "Fill current paragraph as a sequence of single-line comments. +PARSE-STATUS is the result of `parse-partial-regexp' from +beginning of buffer to point. JUSTIFY has the same meaning as in +`fill-paragraph'." + (when (not (js-at-empty-sline-comment-p)) + (let* ((start (js-sline-comment-par-start)) + (start-line (1+ (count-lines (point-min) start))) + (end (js-sline-comment-par-end)) + (offset (js-sline-comment-offset start-line)) + (text-offset (js-sline-comment-text-offset start-line))) + (save-excursion + (save-restriction + (narrow-to-region start end) + (goto-char (point-min)) + (while (re-search-forward "^[ \t]*//[ \t]*" nil t) + (replace-match "") + (forward-line 1)) + (let ((fill-paragraph-function nil) + (fill-column (- fill-column text-offset))) + (fill-paragraph justify)) + + ;; In Emacs 21.4 as opposed to CVS Emacs 22, + ;; `fill-paragraph' seems toadd a newline at the end of the + ;; paragraph. Remove it! + (goto-char (point-max)) + (when (looking-at "^$") (backward-delete-char 1)) + + (goto-char (point-min)) + (while (not (eobp)) + (indent-to offset) + (insert "//") + (indent-to text-offset) + (forward-line 1))))))) + + +(defun js-trailing-comment-p (parse-status) + "Return non-nil if inside a trailing comment. PARSE-STATUS is +the result of `parse-partial-regexp' from beginning of buffer to +point." + (save-excursion + (when (nth 4 parse-status) + (goto-char (nth 8 parse-status)) + (skip-chars-backward " \t") + (not (bolp))))) + + +(defun js-block-comment-p (parse-status) + "Return non-nil if inside a block comment. PARSE-STATUS is the +result of `parse-partial-regexp' from beginning of buffer to +point." + (save-excursion + (save-match-data + (when (nth 4 parse-status) + (goto-char (nth 8 parse-status)) + (looking-at "/\\*"))))) + + +(defun javascript-fill-paragraph (&optional justify) + "If inside a comment, fill the current comment paragraph. +Trailing comments are ignored." + (interactive) + (let ((parse-status (parse-partial-sexp (point-min) (point)))) + (when (and (nth 4 parse-status) + (not (js-trailing-comment-p parse-status))) + (if (js-block-comment-p parse-status) + (js-fill-block-comment-paragraph parse-status justify) + (js-fill-sline-comments parse-status justify)))) + t) + + +;; --- Imenu --- + +(defconst js-imenu-generic-expression + (list + (list + nil + "function\\s-+\\(\\w+\\)\\s-*(" + 1)) + "Regular expression matching top level procedures. Used by imenu.") + + +;; --- Main Function --- + +;;;###autoload +(defun javascript-mode () + "Major mode for editing JavaScript source text. + +Key bindings: + +\\{javascript-mode-map}" + (interactive) + (kill-all-local-variables) + + (use-local-map javascript-mode-map) + (set-syntax-table javascript-mode-syntax-table) + (set (make-local-variable 'indent-line-function) 'javascript-indent-line) + (set (make-local-variable 'font-lock-defaults) (list js-font-lock-keywords)) + + (set (make-local-variable 'parse-sexp-ignore-comments) t) + + ;; Comments + (setq comment-start "// ") + (setq comment-end "") + (set (make-local-variable 'fill-paragraph-function) + 'javascript-fill-paragraph) + + ;; Make c-mark-function work + (setq c-nonsymbol-token-regexp "!=\\|%=\\|&[&=]\\|\\*[/=]\\|\\+[+=]\\|-[=-]\\|/[*/=]\\|<\\(?:<=\\|[<=]\\)\\|==\\|>\\(?:>\\(?:>=\\|[=>]\\)\\|[=>]\\)\\|\\^=\\||[=|]\\|[]!%&(-,./:-?[{-~^-]" + c-stmt-delim-chars "^;{}?:" + c-syntactic-ws-end "[ \n + \f/]" + c-syntactic-eol "\\(\\s \\|/\\*\\([^*\n +]\\|\\*[^/\n +]\\)*\\*/\\)*\\(\\(/\\*\\([^*\n +]\\|\\*[^/\n +]\\)*\\|\\\\\\)?$\\|//\\)") + + ;; Imenu + (setq imenu-case-fold-search nil) + (set (make-local-variable 'imenu-generic-expression) + js-imenu-generic-expression) + + (setq major-mode 'javascript-mode) + (setq mode-name "JavaScript") + (run-hooks 'javascript-mode-hook)) + + +(provide 'javascript-mode) +;;; javascript.el ends here diff --git a/emacs.d/nxhtml/alts/smarty-mode-vdebout.el b/emacs.d/nxhtml/alts/smarty-mode-vdebout.el new file mode 100644 index 0000000..94d7352 --- /dev/null +++ b/emacs.d/nxhtml/alts/smarty-mode-vdebout.el @@ -0,0 +1,2715 @@ +;;; smarty-mode.el --- major mode for editing Smarty templates + +;; Author: Vincent DEBOUT +;; Maintainer: Vincent DEBOUT +;; Keywords: languages smarty templates +;; WWW: http://deboutv.free.fr/lisp/smarty/ + +;;; License + +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License +;; as published by the Free Software Foundation; either version 2 +;; of the License, or (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program; if not, write to the Free Software +;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +;;; History + +;; $Log: smarty-mode.el,v $ +;; Revision 1.6 2006/12/16 19:54:26 vincent +;; Update release version +;; +;; Revision 1.5 2006/12/16 19:53:00 vincent +;; Fix bug #15 +;; +;; Revision 1.4 2006/12/16 14:59:46 vincent +;; Fix bugs for release +;; +;; Revision 1.3 2006/11/19 12:29:53 vincent +;; Fix highlight bug, add templates +;; +;; Revision 1.2 2006/11/12 11:44:18 vincent +;; First release commit +;; + +(defconst smarty-version "0.0.4" + "Smarty Mode version number.") + +(defconst smarty-time-stamp "2006-12-16" + "Smarty Mode time stamp for last update.") + +(require 'font-lock) +(require 'cc-mode) +(require 'custom) +(require 'etags) +(eval-when-compile +(require 'regexp-opt)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Customization +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defgroup smarty nil + "Customizations for Smarty mode." + :prefix "smarty-" + :group 'languages) + +(defgroup smarty-mode nil + "Customizations for Smarty mode." + :group 'smarty) + +(defcustom smarty-electric-mode t + "*Non-nil enables electrification (automatic template generation). +If nil, template generators can still be invoked through key bindings and +menu. Is indicated in the modeline by \"/e\" after the mode name and can be +toggled by `\\[smarty-electric-mode]'." + :type 'boolean + :group 'smarty-mode) + +(defcustom smarty-stutter-mode t + "*Non-nil enables stuttering. +Is indicated in the modeline by \"/s\" after the mode name and can be toggled +by `\\[smarty-stutter-mode]'." + :type 'boolean + :group 'smarty-mode) + +(defgroup smarty-menu nil + "Customizations for menues." + :group 'smarty) + +(defcustom smarty-source-file-menu t + "*Non-nil means add a menu of all source files in current directory." + :type 'boolean + :group 'smarty-menu) + +(defgroup smarty-highlight nil + "Customizations for highlight." + :group 'smarty) + +(defcustom smarty-highlight-plugin-functions t + "*Non-nil means highlight the plugin functions in the buffer." + :type 'boolean + :group 'smarty-highlight) + +(defgroup smarty-template nil + "Customizations for templates." + :group 'smarty) + +(defgroup smarty-header nil + "Customizations for header template." + :group 'smarty-template) + +(defcustom smarty-file-header "" + "*String or file to insert as file header. +If the string specifies an existing file name, the contents of the file is +inserted, otherwise the string itself is inserted as file header. +Type `C-j' for newlines. +If the header contains RCS keywords, they may be written as Keyword +if the header needs to be version controlled. + +The following keywords for template generation are supported: + : replaced by the name of the buffer + : replaced by the user name and email address + \(`user-full-name',`mail-host-address', `user-mail-address') + : replaced by user login name (`user-login-name') + : replaced by contents of option `smarty-company-name' + : replaced by the current date + : replaced by the current year + : replaced by copyright string (`smarty-copyright-string') + : final cursor position." + :type 'string + :group 'smarty-header) + +(defcustom smarty-file-footer "" + "*String or file to insert as file footer. +If the string specifies an existing file name, the contents of the file is +inserted, otherwise the string itself is inserted as file footer (i.e. at +the end of the file). +Type `C-j' for newlines. +The same keywords as in option `smarty-file-header' can be used." + :type 'string + :group 'smarty-header) + +(defcustom smarty-company-name "" + "*Name of company to insert in file header. +See option `smarty-file-header'." + :type 'string + :group 'smarty-header) + +(defcustom smarty-copyright-string "" + "*Copyright string to insert in file header. +Can be multi-line string (type `C-j' for newline) and contain other file +header keywords (see option `smarty-file-header')." + :type 'string + :group 'smarty-header) + +(defcustom smarty-date-format "%Y-%m-%d" + "*Specifies the date format to use in the header. +This string is passed as argument to the command `format-time-string'. +For more information on format strings, see the documentation for the +`format-time-string' command (C-h f `format-time-string')." + :type 'string + :group 'smarty-header) + +(defcustom smarty-modify-date-prefix-string "" + "*Prefix string of modification date in Smarty file header. +If actualization of the modification date is called (menu, +`\\[smarty-template-modify]'), this string is searched and the rest +of the line replaced by the current date." + :type 'string + :group 'smarty-header) + +(defcustom smarty-modify-date-on-saving nil + "*Non-nil means update the modification date when the buffer is saved. +Calls function `\\[smarty-template-modify]'). + +NOTE: Activate the new setting in a Smarty buffer by using the menu entry + \"Activate Options\"." + :type 'boolean + :group 'smarty-header) + +(defgroup smarty-misc nil + "Miscellaneous customizations." + :group 'smarty) + +(defcustom smarty-left-delimiter "{" + "Left escaping delimiter." + :type 'string + :group 'smarty-misc) + +(defcustom smarty-right-delimiter "}" + "Right escaping delimiter." + :type 'string + :group 'smarty-misc) + +(defcustom smarty-intelligent-tab t + "*Non-nil means `TAB' does indentation, word completion and tab insertion. +That is, if preceding character is part of a word then complete word, +else if not at beginning of line then insert tab, +else if last command was a `TAB' or `RET' then dedent one step, +else indent current line (i.e. `TAB' is bound to `smarty-electric-tab'). +If nil, TAB always indents current line (i.e. `TAB' is bound to +`indent-according-to-mode'). + +NOTE: Activate the new setting in a Smarty buffer by using the menu entry + \"Activate Options\"." + :type 'boolean + :group 'smarty-misc) + +(defcustom smarty-word-completion-in-minibuffer t + "*Non-nil enables word completion in minibuffer (for template prompts). + +NOTE: Activate the new setting by restarting Emacs." + :type 'boolean + :group 'smarty-misc) + +(defcustom smarty-word-completion-case-sensitive nil + "*Non-nil means word completion using `TAB' is case sensitive. +That is, `TAB' completes words that start with the same letters and case. +Otherwise, case is ignored." + :type 'boolean + :group 'smarty-misc) + +;; Functions + +(defun smarty-customize () + "Call the customize function with `smarty' as argument." + (interactive) + (customize-browse 'smarty)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Variables +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar smarty-menu-max-size 20 + "*Specifies the maximum size of a menu before splitting it into submenues.") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Menu tools functions +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun smarty-menu-split (list title) + "Split menu LIST into several submenues, if number of +elements > `smarty-menu-max-size'." + (if (> (length list) smarty-menu-max-size) + (let ((remain list) + (result '()) + (sublist '()) + (menuno 1) + (i 0)) + (while remain + (setq sublist (cons (car remain) sublist)) + (setq remain (cdr remain)) + (setq i (+ i 1)) + (if (= i smarty-menu-max-size) + (progn + (setq result (cons (cons (format "%s %s" title menuno) + (nreverse sublist)) result)) + (setq i 0) + (setq menuno (+ menuno 1)) + (setq sublist '())))) + (and sublist + (setq result (cons (cons (format "%s %s" title menuno) + (nreverse sublist)) result))) + (nreverse result)) + list)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Source file menu +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar smarty-sources-menu nil) + +;; Create the source menu +(defun smarty-add-source-files-menu () + "Scan directory for all Smarty source files and generate menu. +The directory of the current source file is scanned." + (interactive) + (message "Scanning directory for source files ...") + (let ((newmap (current-local-map)) + (file-list (smarty-get-source-files)) + menu-list found) + ;; Create list for menu + (setq found nil) + (while file-list + (setq found t) + (setq menu-list (cons (vector (car file-list) + (list 'find-file (car file-list)) t) + menu-list)) + (setq file-list (cdr file-list))) + (setq menu-list (smarty-menu-split menu-list "Sources")) + (when found (setq menu-list (cons "--" menu-list))) + (setq menu-list (cons ["*Rescan*" smarty-add-source-files-menu t] menu-list)) + (setq menu-list (cons "Sources" menu-list)) + ;; Create menu + (easy-menu-add menu-list) + (easy-menu-define smarty-sources-menu newmap + "Smarty source files menu" menu-list)) + (message "")) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Smarty menu +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun smarty-create-mode-menu () + "Create Smarty Mode menu." + `("Smarty" + ("Templates" + ("Built-in Functions" + ["capture" smarty-template-capture t] + ["config_load" smarty-template-config-load t] + ["else" smarty-template-else t] + ["elseif" smarty-template-elseif t] + ["foreach" smarty-template-foreach t] + ["foreachelse" smarty-template-foreachelse t] + ["if" smarty-template-if t] + ["include" smarty-template-include t] + ["include_php" smarty-template-include-php t] + ["insert" smarty-template-insert t] + ["ldelim" smarty-template-ldelim t] + ["literal" smarty-template-literal t] + ["php" smarty-template-php t] + ["rdelim" smarty-template-rdelim t] + ["section" smarty-template-section t] + ["sectionelse" smarty-template-sectionelse t] + ["strip" smarty-template-strip t]) + ("Custom Functions" + ["assign" smarty-template-assign t] + ["counter" smarty-template-counter t] + ["cycle" smarty-template-cycle t] + ["debug" smarty-template-debug t] + ["eval" smarty-template-eval t] + ["fetch" smarty-template-fetch t] + ["html_checkboxes" smarty-template-html-checkboxes t] + ["html_image" smarty-template-html-image t] + ["html_options" smarty-template-html-options t] + ["html_radios" smarty-template-html-radios t] + ["html_select_date" smarty-template-html-select-date t] + ["html_select_time" smarty-template-html-select-time t] + ["html_table" smarty-template-html-table t] + ["mailto" smarty-template-mailto t] + ["math" smarty-template-math t] + ["popup" smarty-template-popup t] + ["popup_init" smarty-template-popup-init t] + ["textformat" smarty-template-textformat t]) + ("Variable Modifiers" + ["capitalize" smarty-template-capitalize t] + ["cat" smarty-template-cat t] + ["count_characters" smarty-template-count-characters t] + ["count_paragraphs" smarty-template-count-paragraphs t] + ["count_sentences" smarty-template-count-sentences t] + ["count_words" smarty-template-count-words t] + ["date_format" smarty-template-date-format t] + ["default" smarty-template-default t] + ["escape" smarty-template-escape t] + ["indent" smarty-template-indent t] + ["lower" smarty-template-lower t] + ["nl2br" smarty-template-nl2br t] + ["regex_replace" smarty-template-regex-replace t] + ["replace" smarty-template-replace t] + ["spacify" smarty-template-spacify t] + ["string_format" smarty-template-string-format t] + ["strip" smarty-template-vstrip t] + ["strip_tags" smarty-template-strip-tags t] + ["truncate" smarty-template-truncate t] + ["upper" smarty-template-upper t] + ["wordwrap" smarty-template-wordwrap t]) + ("Plugins (Functions)" + ("SmartyFormtool" + ["formtool_checkall" smarty-template-formtool-checkall t] + ["formtool_copy" smarty-template-formtool-copy t] + ["formtool_count_chars" smarty-template-formtool-count-chars t] + ["formtool_init" smarty-template-formtool-init t] + ["formtool_move" smarty-template-formtool-move t] + ["formtool_moveall" smarty-template-formtool-moveall t] + ["formtool_movedown" smarty-template-formtool-movedown t] + ["formtool_moveup" smarty-template-formtool-moveup t] + ["formtool_remove" smarty-template-formtool-remove t] + ["formtool_rename" smarty-template-formtool-rename t] + ["formtool_save" smarty-template-formtool-save t] + ["formtool_selectall" smarty-template-formtool-selectall t]) + ("SmartyPaginate" + ["paginate_first" smarty-template-paginate-first t] + ["paginate_last" smarty-template-paginate-last t] + ["paginate_middle" smarty-template-paginate-middle t] + ["paginate_next" smarty-template-paginate-next t] + ["paginate_prev" smarty-template-paginate-prev t]) + ("SmartyValidate" + ["validate" smarty-template-validate t])) + ("Plugins (Variable Modifiers)" + ("AlternativeDateModifierPlugin" + ["date_format2" smarty-template-date-formatto t]) + ("B2Smilies" + ["B2Smilies" smarty-template-btosmilies t]) + ("BBCodePlugin" + ["bbcode2html" smarty-template-bbcodetohtml t]) + ) + "--" + ["Insert Header" smarty-template-header t] + ["Insert Footer" smarty-template-footer t] + ["Insert Date" smarty-template-insert-date t] + ["Modify Date" smarty-template-modify t]) + "--" + ["Show Messages" smarty-show-messages :keys "C-c M-m"] + ["Smarty Mode Documentation" smarty-doc-mode :keys "C-c C-h"] + ["Version" smarty-version :keys "C-c C-v"] + "--" + ("Options" + ("Mode" + ["Electric Mode" + (progn (customize-set-variable 'smarty-electric-mode + (not smarty-electric-mode)) + (smarty-mode-line-update)) + :style toggle :selected smarty-electric-mode :keys "C-c C-m C-e"] + ["Stutter Mode" + (progn (customize-set-variable 'smarty-stutter-mode + (not smarty-stutter-mode)) + (smarty-mode-line-update)) + :style toggle :selected smarty-stutter-mode :keys "C-c C-m C-s"] + "--" + ["Customize Group..." (customize-group 'smarty-mode) t]) + ("Menu" + ["Source Menu" + (customize-set-variable 'smarty-source-file-menu + (not smarty-source-file-menu)) + :style toggle :selected smarty-source-file-menu] + "--" + ["Customize Group..." (customize-group 'smarty-menu) t]) + ("Highlight" + ["Highlight plugin functions" + (progn (customize-set-variable 'smarty-highlight-plugin-functions + (not smarty-highlight-plugin-functions))) + :style toggle :selected smarty-highlight-plugin-functions] + "--" + ["Customize Group..." (customize-group 'smarty-highlight) t]) + ("Template" + ("Header" + ["Header template..." + (customize-option 'smarty-file-header) t] + ["Footer template..." + (customize-option 'smarty-file-footer) t] + ["Company..." + (customize-option 'smarty-company-name) t] + ["Copyright..." + (customize-option 'smarty-copyright-string) t] + ["Date format..." + (customize-option 'smarty-date-format) t] + ["Modify date prefix..." + (customize-option 'smarty-modify-date-prefix-string) t] + ["Modify date on saving" + (customize-set-variable 'smarty-modify-date-on-saving + (not smarty-modify-date-on-saving)) + :style toggle :selected smarty-modify-date-on-saving] + "--" + ["Customize Group..." (customize-group 'smarty-header) t]) + "--" + ["Customize Group..." (customize-group 'smarty-template) t]) + ("Miscellaneous" + ["Left delimiter..." + (customize-option 'smarty-left-delimiter) t] + ["Right delimiter..." + (customize-option 'smarty-right-delimiter) t] + ["Use Intelligent Tab" + (progn (customize-set-variable 'smarty-intelligent-tab + (not smarty-intelligent-tab)) + (smarty-activate-customizations)) + :style toggle :selected smarty-intelligent-tab] + ["Word Completion in Minibuffer" + (progn (customize-set-variable 'smarty-word-completion-in-minibuffer + (not smarty-word-completion-in-minibuffer)) + (message "Activate new setting by saving options and restarting Emacs")) + :style toggle :selected smarty-word-completion-in-minibuffer] + ["Completion is case sensitive" + (customize-set-variable 'smarty-word-completion-case-sensitive + (not smarty-word-completion-case-sensitive)) + :style toggle :selected smarty-word-completion-case-sensitive] + "--" + ["Customize Group..." (customize-group 'smarty-misc) t]) + "--" + ["Save Options" customize-save-customized t] + ["Activate Options" smarty-activate-customizations t] + ["Browse Options..." smarty-customize t]))) + +(defvar smarty-mode-menu-list (smarty-create-mode-menu) + "Smarty Mode menu.") + +(defvar smarty-mode-map nil + "Keymap for Smarty Mode.") + +(defun smarty-update-mode-menu () + "Update Smarty Mode menu." + (interactive) + (easy-menu-remove smarty-mode-menu-list) + (setq smarty-mode-menu-list (smarty-create-mode-menu)) + (easy-menu-add smarty-mode-menu-list) + (easy-menu-define smarty-mode-menu smarty-mode-map + "Menu keymap for Smarty Mode." smarty-mode-menu-list)) + + + + +(defvar smarty-mode-hook nil) + +(defvar smarty-functions nil + "List of Smarty functions.") + +(defvar smarty-functions-regexp nil + "Regexp for Smarty functions.") + +(defconst smarty-01-functions + '("capture" "config_load" "foreach" "foreachelse" "include" + "include_php" "insert" "if" "elseif" "else" "ldelim" "rdelim" + "literal" "php" "section" "sectionelse" "strip" "assign" "counter" + "cycle" "debug" "eval" "fetch" "html_checkboxes" "html_image" + "html_options" "html_radios" "html_select_date" "html_select_time" + "html_table" "math" "mailto" "popup_init" "popup" "textformat") + "Smarty built-in & custom functions.") + +(defvar smarty-modifiers nil + "List of Smarty variable modifiers.") + +(defvar smarty-modifiers-regexp nil + "Regexp for Smarty variable modifiers.") + +(defconst smarty-01-modifiers + '("capitalize" "cat" "count_characters" "count_paragraphs" + "count_sentences" "count_words" "date_format" "default" + "escape" "indent" "lower" "nl2br" "regex_replace" "replace" + "spacify" "string_format" "strip" "strip_tags" "truncate" + "upper" "wordwrap") + "Smarty variable modifiers.") + +(defvar smarty-plugins-functions nil + "List of Smarty functions.") + +(defvar smarty-plugins-functions-regexp nil + "Regexp for Smarty functions.") + +(defconst smarty-01-plugins-functions + '("validate" "formtool_checkall" "formtool_copy" "formtool_count_chars" + "formtool_init" "formtool_move" "formtool_moveall" + "formtool_movedown" "formtool_moveup" "formtool_remove" + "formtool_rename" "formtool_save" "formtool_selectall" + "paginate_first" "paginate_last" "paginate_middle" + "paginate_next" "paginate_prev") + "Smarty plugins functions.") + +(defvar smarty-plugins-modifiers nil + "List of Smarty variable modifiers.") + +(defvar smarty-plugins-modifiers-regexp nil + "Regexp for Smarty functions.") + +(defconst smarty-01-plugins-modifiers + '("B2Smilies" "bbcode2html" "date_format2") + "Smarty plugins modifiers.") + +(defconst smarty-constants + (eval-when-compile + (regexp-opt + '("TRUE" "FALSE" "NULL") t)) + "Smarty constants.") + + +;; Syntax table creation +(defvar smarty-mode-syntax-table nil + "Syntax table for smarty-mode.") + +(defvar smarty-mode-ext-syntax-table nil + "Syntax table extended by `_' used in `smarty-mode' buffers.") + +(defun smarty-create-syntax-table () + (if smarty-mode-syntax-table + () + (setq smarty-mode-syntax-table (make-syntax-table)) + + ;; Make | a punctuation character + (modify-syntax-entry ?| "." smarty-mode-syntax-table) + ;; Make " a punctuation character so highlighing works withing html strings + (modify-syntax-entry ?\" "." smarty-mode-syntax-table) + ;; define parentheses to match + (modify-syntax-entry ?\( "()" smarty-mode-syntax-table) + (modify-syntax-entry ?\) ")(" smarty-mode-syntax-table) + (modify-syntax-entry ?\[ "(]" smarty-mode-syntax-table) + (modify-syntax-entry ?\] ")[" smarty-mode-syntax-table) + (modify-syntax-entry ?\{ "(}" smarty-mode-syntax-table) + (modify-syntax-entry ?\} "){" smarty-mode-syntax-table) + ) + (set-syntax-table smarty-mode-syntax-table) + ;; extended syntax table including '_' (for simpler search regexps) + (setq smarty-mode-ext-syntax-table (copy-syntax-table smarty-mode-syntax-table)) + (modify-syntax-entry ?_ "w" smarty-mode-ext-syntax-table)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; File/directory manipulation +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun smarty-directory-files (directory &optional full match) + "Call `directory-files' if DIRECTORY exists, otherwise generate error +message." + (if (not (file-directory-p directory)) + (smarty-warning-when-idle "No such directory: \"%s\"" directory) + (let ((dir (directory-files directory full match))) + (setq dir (delete "." dir)) + (setq dir (delete ".." dir)) + dir))) + +(defun smarty-get-source-files (&optional full directory) + "Get list of SMARTY source files in DIRECTORY or current directory." + (let ((mode-alist auto-mode-alist) + filename-regexp) + ;; create regular expressions for matching file names + (setq filename-regexp "\\`[^.].*\\(") + (while mode-alist + (when (eq (cdar mode-alist) 'smarty-mode) + (setq filename-regexp + (concat filename-regexp (caar mode-alist) "\\|"))) + (setq mode-alist (cdr mode-alist))) + (setq filename-regexp + (concat (substring filename-regexp 0 + (string-match "\\\\|$" filename-regexp)) "\\)")) + ;; find files + (smarty-directory-files + (or directory default-directory) full filename-regexp))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Messages reporting +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar smarty-warnings nil + "Warnings to tell the user during start up.") + +(defun smarty-run-when-idle (secs repeat function) + "Wait until idle, then run FUNCTION." + (if (fboundp 'start-itimer) + (start-itimer "smarty-mode" function secs repeat t) +; (run-with-idle-timer secs repeat function))) + ;; explicitely activate timer (necessary when Emacs is already idle) + (aset (run-with-idle-timer secs repeat function) 0 nil))) + +(defun smarty-warning-when-idle (&rest args) + "Wait until idle, then print out warning STRING and beep." + (if noninteractive + (smarty-warning (apply 'format args) t) + (unless smarty-warnings + (smarty-run-when-idle .1 nil 'smarty-print-warnings)) + (setq smarty-warnings (cons (apply 'format args) smarty-warnings)))) + +(defun smarty-warning (string &optional nobeep) + "Print out warning STRING and beep." + (message (concat "WARNING: " string)) + (unless (or nobeep noninteractive) (beep))) + +(defun smarty-print-warnings () + "Print out messages in variable `smarty-warnings'." + (let ((no-warnings (length smarty-warnings))) + (setq smarty-warnings (nreverse smarty-warnings)) + (while smarty-warnings + (message (concat "WARNING: " (car smarty-warnings))) + (setq smarty-warnings (cdr smarty-warnings))) + (beep) + (when (> no-warnings 1) + (message "WARNING: See warnings in message buffer (type `C-c M-m').")))) + +(defun smarty-show-messages () + "Get *Messages* buffer to show recent messages." + (interactive) + (display-buffer " *Message-Log*")) + +(defun smarty-version () + "Echo the current version of Smarty Mode in the minibuffer." + (interactive) + (message "Smarty Mode %s (%s)" smarty-version smarty-time-stamp) + (smarty-keep-region-active)) + +;; active regions +(defun smarty-keep-region-active () + "Do whatever is necessary to keep the region active in XEmacs. +Ignore byte-compiler warnings you might see." + (and (boundp 'zmacs-region-stays) + (setq zmacs-region-stays t))) + +(defmacro smarty-prepare-search-1 (&rest body) + "Enable case insensitive search and switch to syntax table that includes '_', +then execute BODY, and finally restore the old environment. Used for +consistent searching." + `(let ((case-fold-search t) ; case insensitive search + (current-syntax-table (syntax-table)) + result + (restore-prog ; program to restore enviroment + '(progn + ;; restore syntax table + (set-syntax-table current-syntax-table)))) + ;; use extended syntax table + (set-syntax-table smarty-mode-ext-syntax-table) + ;; execute BODY safely + (setq result + (condition-case info + (progn ,@body) + (error (eval restore-prog) ; restore environment on error + (error (cadr info))))) ; pass error up + ;; restore environment + (eval restore-prog) + result)) + +(defmacro smarty-prepare-search-2 (&rest body) + "Enable case insensitive search, switch to syntax table that includes '_', +and remove `intangible' overlays, then execute BODY, and finally restore the +old environment. Used for consistent searching." + `(let ((case-fold-search t) ; case insensitive search + (current-syntax-table (syntax-table)) + result overlay-all-list overlay-intangible-list overlay + (restore-prog ; program to restore enviroment + '(progn + ;; restore syntax table + (set-syntax-table current-syntax-table) + ;; restore `intangible' overlays + (when (fboundp 'overlay-lists) + (while overlay-intangible-list + (overlay-put (car overlay-intangible-list) 'intangible t) + (setq overlay-intangible-list + (cdr overlay-intangible-list))))))) + ;; use extended syntax table + (set-syntax-table smarty-mode-ext-syntax-table) + ;; remove `intangible' overlays + (when (fboundp 'overlay-lists) + (setq overlay-all-list (overlay-lists)) + (setq overlay-all-list + (append (car overlay-all-list) (cdr overlay-all-list))) + (while overlay-all-list + (setq overlay (car overlay-all-list)) + (when (memq 'intangible (overlay-properties overlay)) + (setq overlay-intangible-list + (cons overlay overlay-intangible-list)) + (overlay-put overlay 'intangible nil)) + (setq overlay-all-list (cdr overlay-all-list)))) + ;; execute BODY safely + (setq result + (condition-case info + (progn ,@body) + (error (eval restore-prog) ; restore environment on error + (error (cadr info))))) ; pass error up + ;; restore environment + (eval restore-prog) + result)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Enabling/disabling + +(defun smarty-mode-line-update () + "Update the modeline string for Smarty major mode." + (setq mode-name (concat "Smarty" + (and (or smarty-electric-mode smarty-stutter-mode) "/") + (and smarty-electric-mode "e") + (and smarty-stutter-mode "s"))) + (force-mode-line-update t)) + +(defun smarty-electric-mode (arg) + "Toggle Smarty electric mode. +Turn on if ARG positive, turn off if ARG negative, toggle if ARG zero or nil." + (interactive "P") + (setq smarty-electric-mode + (cond ((or (not arg) (zerop arg)) (not smarty-electric-mode)) + ((> arg 0) t) (t nil))) + (smarty-mode-line-update)) + +(defun smarty-stutter-mode (arg) + "Toggle Smarty stuttering mode. +Turn on if ARG positive, turn off if ARG negative, toggle if ARG zero or nil." + (interactive "P") + (setq smarty-stutter-mode + (cond ((or (not arg) (zerop arg)) (not smarty-stutter-mode)) + ((> arg 0) t) (t nil))) + (smarty-mode-line-update)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Smarty code delimitation +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun smarty-in-literal () + "Determine if point is in a Smarty literal." + (save-excursion + (let ((here (point)) + start state) + (beginning-of-line) + (setq start (point)) + (goto-char here) + (setq state (parse-partial-sexp start (point))) + (cond + ((nth 3 state) 'string) + ((nth 4 state) 'comment) + (t nil))))) + +(defun smarty-in-comment-p () + "Check if point is in a comment." + (let ((result nil) (here (point-marker)) found) + (save-excursion + (setq found (re-search-backward (regexp-quote (concat smarty-left-delimiter "*")) nil t)) + (when found + (setq result (re-search-forward (regexp-quote (concat "*" smarty-right-delimiter)) here t)) + (setq result (not result)))) + result)) + +(defun smarty-after-ldelim () + "Check that the previous character is the left delimiter." + (let ((here (point-marker)) ldelim-found ldelim-point) + (save-excursion + (setq ldelim-found (re-search-backward (regexp-quote smarty-left-delimiter) nil t)) + (re-search-forward (regexp-quote smarty-left-delimiter) here t) + (setq ldelim-point (point-marker)) + (goto-char here) + (if (and (= here ldelim-point) ldelim-found) + t + nil)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Words to expand +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun smarty-words-init () + "Initialize reserved words." + (setq smarty-functions smarty-01-functions) + (setq smarty-modifiers smarty-01-modifiers) + (setq smarty-plugins-functions smarty-01-plugins-functions) + (setq smarty-plugins-modifiers smarty-01-plugins-modifiers) + (setq smarty-functions-regexp (concat "\\<\\(" (regexp-opt smarty-functions) "\\)\\>")) + (setq smarty-modifiers-regexp (concat "\\<\\(" (regexp-opt smarty-modifiers) "\\)\\>")) + (setq smarty-plugins-functions-regexp (concat "\\<\\(" (regexp-opt smarty-plugins-functions) "\\)\\>")) + (setq smarty-plugins-modifiers-regexp (concat "\\<\\(" (regexp-opt smarty-plugins-modifiers) "\\)\\>")) + (smarty-abbrev-list-init)) + +(defvar smarty-abbrev-list nil + "Predefined abbreviations for Smarty.") + +(defun smarty-abbrev-list-init () + (setq smarty-abbrev-list + (append + (list nil) smarty-functions + (list nil) smarty-modifiers + (list nil) smarty-plugins-functions + (list nil) smarty-plugins-modifiers))) + +(defvar smarty-expand-upper-case nil) + +(defun smarty-try-expand-abbrev (old) + "Try expanding abbreviations from `smarty-abbrev-list'." + (unless old + (he-init-string (he-dabbrev-beg) (point)) + (setq he-expand-list + (let ((abbrev-list smarty-abbrev-list) + (sel-abbrev-list '())) + (while abbrev-list + ; (if (stringp (car abbrev-list)) + ; (insert (concat " " (car abbrev-list)))) + (when (or (not (stringp (car abbrev-list))) + (string-match + (concat "^" he-search-string) (car abbrev-list))) + (setq sel-abbrev-list + (cons (car abbrev-list) sel-abbrev-list))) + (setq abbrev-list (cdr abbrev-list))) + (nreverse sel-abbrev-list)))) + (while (and he-expand-list + (or (not (stringp (car he-expand-list))) + (he-string-member (car he-expand-list) he-tried-table t))) + (unless (stringp (car he-expand-list)) + (setq smarty-expand-upper-case (car he-expand-list))) + (setq he-expand-list (cdr he-expand-list))) + (if (null he-expand-list) + (progn (when old (he-reset-string)) + nil) + (he-substitute-string + (if smarty-expand-upper-case + (upcase (car he-expand-list)) + (car he-expand-list)) + t) + (setq he-expand-list (cdr he-expand-list)) + t)) + +;; initialize reserved words for Smarty Mode +(smarty-words-init) + +;; function for expanding abbrevs and dabbrevs +(defun smarty-expand-abbrev (arg)) +(fset 'smarty-expand-abbrev (make-hippie-expand-function + '(try-expand-dabbrev + try-expand-dabbrev-all-buffers + smarty-try-expand-abbrev))) + +;; function for expanding parenthesis +(defun smarty-expand-paren (arg)) +(fset 'smarty-expand-paren (make-hippie-expand-function + '(try-expand-list + try-expand-list-all-buffers))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Stuttering +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun smarty-electric-tab (&optional prefix-arg) + "If preceding character is part of a word or a paren then hippie-expand, +else if right of non whitespace on line then insert tab, +else if last command was a tab or return then dedent one step or if a comment +toggle between normal indent and inline comment indent, +else indent `correctly'." + (interactive "*P") + (smarty-prepare-search-2 + (cond + ;; expand word + ((= (char-syntax (preceding-char)) ?w) + (let ((case-fold-search (not smarty-word-completion-case-sensitive)) + (case-replace nil) + (hippie-expand-only-buffers + (or (and (boundp 'hippie-expand-only-buffers) + hippie-expand-only-buffers) + '(smarty-mode)))) + (smarty-expand-abbrev prefix-arg))) + ;; expand parenthesis + ((or (= (preceding-char) ?\() (= (preceding-char) ?\))) + (let ((case-fold-search (not smarty-word-completion-case-sensitive)) + (case-replace nil)) + (smarty-expand-paren prefix-arg)))) + (setq this-command 'smarty-electric-tab))) + +(defun smarty-electric-space (count) + "Expand abbreviations and self-insert space(s)." + (interactive "p") + (let ((here (point-marker)) ldelim-found ldelim-point rdelim-found rdelim-point + delete-a) + (setq ldelim-found (re-search-backward (regexp-quote smarty-left-delimiter) nil t)) + (re-search-forward (regexp-quote smarty-left-delimiter) here t) + (setq ldelim-point (point-marker)) + (goto-char here) + (setq rdelim-found (re-search-backward (regexp-quote (concat " " smarty-right-delimiter)) nil t)) + (re-search-forward (regexp-quote (concat " " smarty-right-delimiter)) here t) + (setq rdelim-point (point-marker)) + (goto-char here) + (cond ((and (= here ldelim-point) ldelim-found) (insert (concat "ldelim" smarty-right-delimiter))) + ((and (= here rdelim-point) rdelim-found) + (re-search-backward (regexp-quote (concat " " smarty-right-delimiter)) nil t) + (delete-char 1) + (insert (concat " " smarty-left-delimiter "rdelim")) + (goto-char here)) + ((smarty-in-comment-p) + (self-insert-command count) + (cond ((>= (current-column) (+ 2 end-comment-column)) + (backward-char 1) + (skip-chars-backward "^ \t\n") + (indent-new-comment-line) + (skip-chars-forward "^ \t\n") + (forward-char 1)) + ((>= (current-column) end-comment-column) + (indent-new-comment-line)) + (t nil))) + ((or (and (>= (preceding-char) ?a) (<= (preceding-char) ?z)) + (and (>= (preceding-char) ?A) (<= (preceding-char) ?Z)) + (and (>= (preceding-char) ?0) (<= (preceding-char) ?9))) + (progn + (setq here (point-marker)) + (insert " ") + (setq delete-a t) + (if (re-search-backward "|" nil t) + (progn + (setq found (re-search-forward (regexp-quote "B2Smilies") here t)) + (if (and found (= here (point-marker))) + (replace-match "btosmilies") + (setq found (re-search-forward (regexp-quote "bbcode2html") here t)) + (if (and found (= here (point-marker))) + (replace-match "bbcodetohtml") + (setq found (re-search-forward (regexp-quote "date_format2") here t)) + (if (and found (= here (point-marker))) + (replace-match "date_formatto") + (goto-char here) + (setq delete-a nil) + (delete-char 1))))) + (goto-char here) + (setq delete-a nil) + (delete-char 1))) + (smarty-prepare-search-1 (expand-abbrev)) + (self-insert-command count) + (if (and delete-a (looking-at " ")) + (delete-char 1))) + (t (self-insert-command count))))) + +(defun smarty-electric-open-bracket (count) + "'(' --> '(', '((' --> '[', '[(' --> '{'" + (interactive "p") + (if (and smarty-stutter-mode (= count 1) (not (smarty-in-literal))) + (if (= (preceding-char) ?\() + (progn (delete-char -1) (insert-char ?\[ 1)) + (if (= (preceding-char) ?\[) + (progn (delete-char -1) (insert-char ?\{ 1)) + (insert-char ?\( 1))) + (self-insert-command count))) + +(defun smarty-electric-close-bracket (count) + "')' --> ')', '))' --> ']', '])' --> '}'" + (interactive "p") + (if (and smarty-stutter-mode (= count 1) (not (smarty-in-literal))) + (progn + (if (= (preceding-char) ?\)) + (progn (delete-char -1) (insert-char ?\] 1)) + (if (= (preceding-char) ?\]) + (progn (delete-char -1) (insert-char ?} 1)) + (insert-char ?\) 1))) + (blink-matching-open)) + (self-insert-command count))) + +(defun smarty-electric-star (count) + "After a left delimiter add a right delemiter to close the comment" + (interactive "p") + (let ((here (point-marker)) found) + (if (and smarty-stutter-mode (= count 1) (not (smarty-in-literal))) + (progn + (setq found (re-search-backward (regexp-quote smarty-left-delimiter) nil t)) + (re-search-forward (regexp-quote smarty-left-delimiter) here t) + (if (not (and (= here (point-marker)) found)) + (progn (goto-char here) + (self-insert-command count)) + (self-insert-command count) + (insert " ") + (setq here (point-marker)) + (insert " *") + (insert smarty-right-delimiter) + (goto-char here))) + (self-insert-command count)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Electrification +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defconst smarty-template-prompt-syntax "[^ =<>][^<>@.\n]*[^ =<>]" + "Syntax of prompt inserted by template generators.") + +(defvar smarty-template-invoked-by-hook nil + "Indicates whether a template has been invoked by a hook or by key or menu. +Used for undoing after template abortion.") + +(defun smarty-minibuffer-tab (&optional prefix-arg) + "If preceding character is part of a word or a paren then hippie-expand, +else insert tab (used for word completion in Smarty minibuffer)." + (interactive "P") + (cond + ;; expand word + ((= (char-syntax (preceding-char)) ?w) + (let ((case-fold-search (not smarty-word-completion-case-sensitive)) + (case-replace nil) + (hippie-expand-only-buffers + (or (and (boundp 'hippie-expand-only-buffers) + hippie-expand-only-buffers) + '(smarty-mode)))) + (smarty-expand-abbrev prefix-arg))) + ;; expand parenthesis + ((or (= (preceding-char) ?\() (= (preceding-char) ?\))) + (let ((case-fold-search (not smarty-word-completion-case-sensitive)) + (case-replace nil)) + (smarty-expand-paren prefix-arg))) + ;; insert tab + (t (insert-tab)))) + +;; correct different behavior of function `unread-command-events' in XEmacs +(defun smarty-character-to-event (arg)) +(defalias 'smarty-character-to-event + (if (fboundp 'character-to-event) 'character-to-event 'identity)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Abbrev ook bindings +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar smarty-mode-abbrev-table nil + "Abbrev table to use in `smarty-mode' buffers.") + +(defun smarty-mode-abbrev-table-init () + "Initialize `smarty-mode-abbrev-table'." + (when smarty-mode-abbrev-table (clear-abbrev-table smarty-mode-abbrev-table)) + (define-abbrev-table 'smarty-mode-abbrev-table + (append + '( + ("capture" "" smarty-template-capture-hook 0) + ("config_load" "" smarty-template-config-load-hook 0) + ("else" "" smarty-template-else-hook 0) + ("elseif" "" smarty-template-elseif-hook 0) + ("foreach" "" smarty-template-foreach-hook 0) + ("foreachelse" "" smarty-template-foreachelse-hook 0) + ("if" "" smarty-template-if-hook 0) + ("include" "" smarty-template-include-hook 0) + ("include_php" "" smarty-template-include-php-hook 0) + ("insert" "" smarty-template-insert-hook 0) + ("ldelim" "" smarty-template-ldelim-hook 0) + ("literal" "" smarty-template-literal-hook 0) + ("php" "" smarty-template-php-hook 0) + ("rdelim" "" smarty-template-rdelim-hook 0) + ("section" "" smarty-template-section-hook 0) + ("sectionelse" "" smarty-template-sectionelse-hook 0) + ("strip" "" smarty-template-strip-hook 0) + ("assign" "" smarty-template-assign-hook 0) + ("counter" "" smarty-template-counter-hook 0) + ("cycle" "" smarty-template-cycle-hook 0) + ("debug" "" smarty-template-debug-hook 0) + ("eval" "" smarty-template-eval-hook 0) + ("fetch" "" smarty-template-fetch-hook 0) + ("html_checkboxes" "" smarty-template-html-checkboxes-hook 0) + ("html_image" "" smarty-template-html-image-hook 0) + ("html_options" "" smarty-template-html-options-hook 0) + ("html_radios" "" smarty-template-html-radios-hook 0) + ("html_select_date" "" smarty-template-html-select-date-hook 0) + ("html_select_time" "" smarty-template-html-select-time-hook 0) + ("html_table" "" smarty-template-html-table-hook 0) + ("mailto" "" smarty-template-mailto-hook 0) + ("math" "" smarty-template-math-hook 0) + ("popup" "" smarty-template-popup-hook 0) + ("popup_init" "" smarty-template-popup-init-hook 0) + ("textformat" "" smarty-template-textformat-hook 0) + ("capitalize" "" smarty-template-capitalize-hook 0) + ("cat" "" smarty-template-cat-hook 0) + ("count_characters" "" smarty-template-count-characters-hook 0) + ("count_paragraphs" "" smarty-template-count-paragraphs-hook 0) + ("count_sentences" "" smarty-template-count-sentences-hook 0) + ("count_words" "" smarty-template-count-words-hook 0) + ("date_format" "" smarty-template-date-format-hook 0) + ("default" "" smarty-template-default-hook 0) + ("escape" "" smarty-template-escape-hook 0) + ("indent" "" smarty-template-indent-hook 0) + ("lower" "" smarty-template-lower-hook 0) + ("nl2br" "" smarty-template-nl2br-hook 0) + ("regex_replace" "" smarty-template-regex-replace-hook 0) + ("replace" "" smarty-template-replace-hook 0) + ("spacify" "" smarty-template-spacify-hook 0) + ("string_format" "" smarty-template-string-format-hook 0) + ("strip" "" smarty-template-vstrip-hook 0) + ("strip_tags" "" smarty-template-strip-tags-hook 0) + ("truncate" "" smarty-template-truncate-hook 0) + ("upper" "" smarty-template-upper-hook 0) + ("wordwrap" "" smarty-template-wordwrap-hook 0) + ("validate" "" smarty-template-validate-hook 0) + ("formtool_checkall" "" smarty-template-formtool-checkall-hook 0) + ("formtool_copy" "" smarty-template-formtool-copy-hook 0) + ("formtool_count_chars" "" smarty-template-formtool-count-chars-hook 0) + ("formtool_init" "" smarty-template-formtool-init-hook 0) + ("formtool_move" "" smarty-template-formtool-move-hook 0) + ("formtool_moveall" "" smarty-template-formtool-moveall-hook 0) + ("formtool_movedown" "" smarty-template-formtool-movedown-hook 0) + ("formtool_moveup" "" smarty-template-formtool-moveup-hook 0) + ("formtool_remove" "" smarty-template-formtool-remove-hook 0) + ("formtool_rename" "" smarty-template-formtool-rename-hook 0) + ("formtool_save" "" smarty-template-formtool-save-hook 0) + ("formtool_selectall" "" smarty-template-formtool-selectall-hook 0) + ("paginate_first" "" smarty-template-paginate-first-hook 0) + ("paginate_last" "" smarty-template-paginate-last-hook 0) + ("paginate_middle" "" smarty-template-paginate-middle-hook 0) + ("paginate_next" "" smarty-template-paginate-next-hook 0) + ("paginate_prev" "" smarty-template-paginate-prev-hook 0) + ("btosmilies" "" smarty-template-btosmilies-hook 0) + ("bbcodetohtml" "" smarty-template-bbcodetohtml-hook 0) + ("date_formatto" "" smarty-template-date-formatto-hook 0))))) + +;; initialize abbrev table for Smarty Mode +(smarty-mode-abbrev-table-init) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Abbrev hooks +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun smarty-hooked-abbrev (func) + "Do function, if syntax says abbrev is a keyword, invoked by hooked abbrev, +but not if inside a comment or quote)." + (if (or (smarty-in-literal) + (smarty-in-comment-p)) + (progn + (insert " ") + (unexpand-abbrev) + (delete-char -1)) + (if (not smarty-electric-mode) + (progn + (insert " ") + (unexpand-abbrev) + (backward-word 1) + (delete-char 1)) + (let ((invoke-char last-command-char) + (abbrev-mode -1) + (smarty-template-invoked-by-hook t)) + (let ((caught (catch 'abort + (funcall func)))) + (when (stringp caught) (message caught))) + (when (= invoke-char ?-) (setq abbrev-start-location (point))) + ;; delete CR which is still in event queue + (if (fboundp 'enqueue-eval-event) + (enqueue-eval-event 'delete-char -1) + (setq unread-command-events ; push back a delete char + (list (smarty-character-to-event ?\177)))))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Fontification +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar smarty-font-lock-keywords-1 + (list + + ;; Fontify built-in functions + (cons + (concat (regexp-quote smarty-left-delimiter) "[/]*" smarty-functions-regexp) + '(1 font-lock-keyword-face)) + + (cons + (concat "\\<\\(" smarty-constants "\\)\\>") + 'font-lock-constant-face) + + (cons (concat "\\(" (regexp-quote (concat smarty-left-delimiter "*")) "\\(\\s-\\|\\w\\|\\s.\\|\\s_\\|\\s(\\|\\s)\\|\\s\\\\)*" (regexp-quote (concat "*" smarty-right-delimiter)) "\\)") + 'font-lock-comment-face) + + ) + "Subdued level highlighting for Smarty mode.") + +(defconst smarty-font-lock-keywords-2 + (append + smarty-font-lock-keywords-1 + (list + + ;; Fontify variable names (\\sw\\|\\s_\\) matches any word character + + ;; underscore + '("\\$\\(\\(?:\\sw\\|\\s_\\)+\\)" (1 font-lock-variable-name-face)) ; $variable + '("->\\(\\(?:\\sw\\|\\s_\\)+\\)" (1 font-lock-variable-name-face t t)) ; ->variable + '("\\.\\(\\(?:\\sw\\|\\s_\\)+\\)" (1 font-lock-variable-name-face t t)) ; .variable + '("->\\(\\(?:\\sw\\|\\s_\\)+\\)\\s-*(" (1 font-lock-function-name-face t t)) ; ->function_call + '("\\<\\(\\(?:\\sw\\|\\s_\\)+\\s-*\\)(" (1 font-lock-function-name-face)) ; word( + '("\\<\\(\\(?:\\sw\\|\\s_\\)+\\s-*\\)[[]" (1 font-lock-variable-name-face)) ; word[ + '("\\<[0-9]+" . default) ; number (also matches word) + + ;; Fontify strings + ;;'("\"\\([^\"]*\\)\"[^\"]+" (1 font-lock-string-face t t)) + )) + + "Medium level highlighting for Smarty mode.") + +(defconst smarty-font-lock-keywords-3 + (append + smarty-font-lock-keywords-2 + (list + ;; Fontify modifiers + (cons (concat "|\\(" smarty-modifiers-regexp "\\)[:|]+") '(1 font-lock-function-name-face)) + (cons (concat "|\\(" smarty-modifiers-regexp "\\)" (regexp-quote smarty-right-delimiter)) '(1 font-lock-function-name-face)) + + ;; Fontify config vars + (cons (concat (regexp-quote smarty-left-delimiter) "\\(#\\(?:\\sw\\|\\s_\\)+#\\)") '(1 font-lock-constant-face)))) + "Balls-out highlighting for Smarty mode.") + +(defconst smarty-font-lock-keywords-4 + (append + smarty-font-lock-keywords-3 + (list + ;; Fontify plugin functions + (cons + (concat (regexp-quote smarty-left-delimiter) "[/]*" smarty-plugins-functions-regexp) + '(1 font-lock-keyword-face)) + + (cons (concat "|\\(" smarty-plugins-modifiers-regexp "\\)[:|]+") '(1 font-lock-function-name-face)) + (cons (concat "|\\(" smarty-plugins-modifiers-regexp "\\)" (regexp-quote smarty-right-delimiter)) '(1 font-lock-function-name-face))))) + +(defvar smarty-font-lock-keywords smarty-font-lock-keywords-3 + "Default highlighting level for Smarty mode") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Mode map +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defvar smarty-template-map nil + "Keymap for Smarty templates.") + +(defun smarty-template-map-init () + "Initialize `smarty-template-map'." + (setq smarty-template-map (make-sparse-keymap)) + ;; key bindings for Smarty templates + (define-key smarty-template-map "\C-ba" 'smarty-template-capture) + (define-key smarty-template-map "\C-bc" 'smarty-template-config-load) + (define-key smarty-template-map "\C-b\M-e" 'smarty-template-else) + (define-key smarty-template-map "\C-b\C-e" 'smarty-template-elseif) + (define-key smarty-template-map "\C-b\C-f" 'smarty-template-foreach) + (define-key smarty-template-map "\C-b\M-f" 'smarty-template-foreachelse) + (define-key smarty-template-map "\C-bf" 'smarty-template-if) + (define-key smarty-template-map "\C-b\C-i" 'smarty-template-include) + (define-key smarty-template-map "\C-b\M-i" 'smarty-template-include-php) + (define-key smarty-template-map "\C-bi" 'smarty-template-insert) + (define-key smarty-template-map "\C-bl" 'smarty-template-ldelim) + (define-key smarty-template-map "\C-b\C-l" 'smarty-template-literal) + (define-key smarty-template-map "\C-bp" 'smarty-template-php) + (define-key smarty-template-map "\C-br" 'smarty-template-rdelim) + (define-key smarty-template-map "\C-b\C-s" 'smarty-template-section) + (define-key smarty-template-map "\C-b\M-s" 'smarty-template-sectionelse) + (define-key smarty-template-map "\C-bs" 'smarty-template-strip) + (define-key smarty-template-map "\C-ca" 'smarty-template-assign) + (define-key smarty-template-map "\C-co" 'smarty-template-counter) + (define-key smarty-template-map "\C-cc" 'smarty-template-cycle) + (define-key smarty-template-map "\C-cd" 'smarty-template-debug) + (define-key smarty-template-map "\C-ce" 'smarty-template-eval) + (define-key smarty-template-map "\C-cf" 'smarty-template-fetch) + (define-key smarty-template-map "\C-c\C-hc" 'smarty-template-html-checkboxes) + (define-key smarty-template-map "\C-c\C-hi" 'smarty-template-html-image) + (define-key smarty-template-map "\C-c\C-ho" 'smarty-template-html-options) + (define-key smarty-template-map "\C-c\C-hr" 'smarty-template-html-radios) + (define-key smarty-template-map "\C-c\C-hd" 'smarty-template-html-select-date) + (define-key smarty-template-map "\C-c\C-hm" 'smarty-template-html-select-time) + (define-key smarty-template-map "\C-c\C-ht" 'smarty-template-html-table) + (define-key smarty-template-map "\C-ci" 'smarty-template-mailto) + (define-key smarty-template-map "\C-ch" 'smarty-template-math) + (define-key smarty-template-map "\C-c\C-p" 'smarty-template-popup) + (define-key smarty-template-map "\C-c\M-p" 'smarty-template-popup-init) + (define-key smarty-template-map "\C-ct" 'smarty-template-textformat) + (define-key smarty-template-map "\C-vp" 'smarty-template-capitalize) + (define-key smarty-template-map "\C-vc" 'smarty-template-cat) + (define-key smarty-template-map "\C-v\C-cc" 'smarty-template-count-characters) + (define-key smarty-template-map "\C-v\C-cp" 'smarty-template-count-paragraphs) + (define-key smarty-template-map "\C-v\C-cs" 'smarty-template-count-sentences) + (define-key smarty-template-map "\C-v\C-cw" 'smarty-template-count-words) + (define-key smarty-template-map "\C-vf" 'smarty-template-date-format) + (define-key smarty-template-map "\C-vd" 'smarty-template-default) + (define-key smarty-template-map "\C-ve" 'smarty-template-escape) + (define-key smarty-template-map "\C-vi" 'smarty-template-indent) + (define-key smarty-template-map "\C-vl" 'smarty-template-lower) + (define-key smarty-template-map "\C-vn" 'smarty-template-nl2br) + (define-key smarty-template-map "\C-vx" 'smarty-template-regex-replace) + (define-key smarty-template-map "\C-v\C-p" 'smarty-template-replace) + (define-key smarty-template-map "\C-vy" 'smarty-template-spacify) + (define-key smarty-template-map "\C-vs" 'smarty-template-string-format) + (define-key smarty-template-map "\C-v\C-s" 'smarty-template-vstrip) + (define-key smarty-template-map "\C-v\M-s" 'smarty-template-strip-tags) + (define-key smarty-template-map "\C-vt" 'smarty-template-truncate) + (define-key smarty-template-map "\C-vu" 'smarty-template-upper) + (define-key smarty-template-map "\C-vw" 'smarty-template-wordwrap) + (define-key smarty-template-map "\C-h" 'smarty-template-header) + (define-key smarty-template-map "\C-f" 'smarty-template-footer) + (define-key smarty-template-map "\C-di" 'smarty-template-insert-date) + (define-key smarty-template-map "\C-dm" 'smarty-template-modify)) + +;; initialize template map for Smarty Mode +(smarty-template-map-init) + +(defun smarty-mode-map-init () + "Initialize `smarty-mode-map'." + (setq smarty-mode-map (make-sparse-keymap)) + ;; template key bindings + (define-key smarty-mode-map "\C-c\C-t" smarty-template-map) + ;; mode specific key bindings + (define-key smarty-mode-map "\C-c\C-m\C-e" 'smarty-electric-mode) + (define-key smarty-mode-map "\C-c\C-m\C-s" 'smarty-stutter-mode) + (define-key smarty-mode-map "\C-c\C-s\C-u" 'smarty-add-source-files-menu) + (define-key smarty-mode-map "\C-c\M-m" 'smarty-show-messages) + (define-key smarty-mode-map "\C-c\C-h" 'smarty-doc-mode) + (define-key smarty-mode-map "\C-c\C-v" 'smarty-version) + ;; electric key bindings + (when smarty-intelligent-tab + (define-key smarty-mode-map "\t" 'smarty-electric-tab)) + (define-key smarty-mode-map " " 'smarty-electric-space) + (define-key smarty-mode-map "(" 'smarty-electric-open-bracket) + (define-key smarty-mode-map ")" 'smarty-electric-close-bracket) + (define-key smarty-mode-map "*" 'smarty-electric-star)) + +;; initialize mode map for Smarty Mode +(smarty-mode-map-init) + +(defvar smarty-minibuffer-local-map + (let ((map (make-sparse-keymap))) + (set-keymap-parent map minibuffer-local-map) + (when smarty-word-completion-in-minibuffer + (define-key map "\t" 'smarty-minibuffer-tab)) + map) + "Keymap for minibuffer used in Smarty Mode.") + +(mapcar + (function + (lambda (sym) + (put sym 'delete-selection t) ; for `delete-selection-mode' (Emacs) + (put sym 'pending-delete t))) ; for `pending-delete-mode' (XEmacs) + '(smarty-electric-space + smarty-electric-tab + smarty-electric-open-bracket + smarty-electric-close-bracket + smarty-electric-star)) + +;;;###autoload +(defun smarty-mode () + "Smarty Mode +*********** + +Smarty Mode is a GNU XEmacs major mode for editing Smarty templates. + +1 Introduction +************** + +Smarty-Mode is a mode allowing easy edit of Smarty templates: +highlight, templates, navigation into source files... + + + +Features (new features in bold) : + + * Completion + + * Customizable + + * Highlight + + * Menu + + * Stuttering + + * Templates + - Built-in Functions + + - User Functions + + - Variable Modifiers + + - Plugin (Functions) + * Smarty Formtool + + * Smarty Paginate + + * Smarty Validate + + - Plugin (Variable Modifiers) + * AlternativeDateModifierPlugin + + * B2Smilies + + * BBCodePlugin + + - Fonctions Non-Smarty + + + +This manual describes Smarty Mode version 0.0.4. + +2 Installation +************** + +2.1 Requirements +================ + +Smarty Mode is a XEmacs major mode that needs the following +software/packages: + + * XEmacs (http://www.xemacs.org/). + + * `font-lock' mode generaly installed with XEmacs. + + * `assoc' mode generaly installed with XEmacs. + + * `easymenu' mode generaly installed with XEmacs. + + * `hippie-exp' mode generaly installed with XEmacs. + +Before continuing, you must be sure to have all this packages +installed. + +2.2 Download +============ + +Two internet address to download Smarty Mode : + + * Principal: Smarty-Mode 0.0.4 + (http://deboutv.free.fr/lisp/smarty/download/smarty-0.0.4.tar.gz) + (http://deboutv.free.fr/lisp/smarty/) + + * Secondary: Smarty-Mode 0.0.4 + (http://www.morinie.fr/lisp/smarty/download/smarty-0.0.4.tar.gz) + (http://www.morinie.fr/lisp/smarty/) + + * Old releases: Smarty-Mode + (http://deboutv.free.fr/lisp/smarty/download.php) + (http://deboutv.free.fr/lisp/smarty/) + +2.3 Installation +================ + +2.3.1 Installation +------------------ + +To install Smarty Mode you need to choose an installation directory +(for example `/usr/local/share/lisp' or `c:\lisp'). The administrator +must have the write rights on this directory. + +With your favorite unzip software, unzip the archive in the +installation directory. + +Example: + cd /usr/local/share/lisp + tar zxvf smarty-0.0.4.tar.gz +Now you have a `smarty' directory in the installation directory. This +directory contains 2 files `smarty-mode.el' and `smarty-mode.elc' and +another directory `docs' containing the documentation. + +You need to configure XEmacs. open you initialization file `init.el' +(open the file or start XEmacs then choose the Options menu and Edit +Init File). Add the following lines (the installation directory in +this example is `/usr/local/share/lisp') : + + (setq load-path + (append (list \"/usr/local/share/lisp/\") load-path)) + (autoload 'smarty-mode \"smarty-mode\" \"Smarty Mode\" t) + +2.3.2 Update +------------ + +The update is easy. You need to unzip the archive in the installation +directory to remove the old release. + +Example: + cd /usr/local/share/lisp + rm -rf smarty + tar zxvf smarty-0.0.4.tar.gz + +2.4 Invoke Smarty-Mode +====================== + +You have two possibilities to invoke the Smarty Mode. + + - Manually: At each file opening you need to launch Smarty Mode + with the following command: + + `M-x smarty-mode' + + - Automatically: Add the following linesin your initialization + file `init.el' : + + (setq auto-mode-alist + (append + '((\"\\.tpl$\" . smarty-mode)) + auto-mode-alist)) + + +3 Customization +*************** + +This chapter describes the differents parameters and functions that +you can change to customize Smarty Mode. To do that, open a Smarty +file, click on the Smarty menu and choose Options then Browse +Options.... + +3.1 Parameters +============== + +3.1.1 Mode +---------- + +Smarty Mode has 2 modes allowing to simplify the writing of Smarty +templates. You can enable/disable each mode individually. + +`smarty-electric-mode' + Type: boolean + Default value: `t' + Description: If `t'; enable automatic generation of template. + If `nil'; template generators can still be invoked through key + bindings and menu. Is indicated in the modeline by \"/e\" after + the mode name and can be toggled by `smarty-electric-mode'. + +`smarty-stutter-mode' + Type: boolean + Default value: `t' + Description: If `t'; enable the stuttering. Is indicated in the + modeline by \"/s\" after the mode name and can be toggled by + `smarty-stutter-mode'. + +3.1.2 Menu +---------- + +Smarty Mode has also 1 menu that you can enable/disable. The menu +Sources is specific to each Smarty files opened. + +`smarty-source-file-menu' + Type: boolean + Default value: `t' + Description: If `t'; the Sources menu is enabled. This menu + contains the list of Smarty file located in the current + directory. The Sources menu scans the directory when a file is + opened. + +3.1.3 Menu +---------- + +`smarty-highlight-plugin-functions' + Type: boolean + Default value: `t' + Description: If `t'; the functions described in the smarty + plugins are highlighted. + +3.1.4 Templates +--------------- + +3.1.4.1 Header +.............. + +`smarty-file-header' + Type: string + Default value: `\"\"' + Description: String or file to insert as file header. If the + string specifies an existing file name the contents of the file + is inserted; otherwise the string itself is inserted as file + header. + Type `C-j' for newlines. + The follonwing keywords are supported: + : replaced by the file name. + : replaced by the user name and email address. + : replaced by `user-login-name'. + : replaced by `smarty-company-name' content. + : replaced by the current date. + : replaced by the current year. + : replaced by `smarty-copyright-string' content. + : final cursor position. + +`smarty-file-footer' + Type: string + Default value: `\"\"' + Description: String or file to insert as file footer. See + `smarty-file-header' + +`smarty-company-name' + Type: string + Default value: `\"\"' + Description: Name of the company to insert in file header. + +`smarty-copyright-string' + Type: string + Default value: `\"\"' + Description: Coryright string to insert in file header. + +`smarty-date-format' + Type: string + Default value: `\"%Y-%m-%d\"' + Description: Date format. + +`smarty-modify-date-prefix-string' + Type: string + Default value: `\"\"' + Description: Prefix string of modification date in Smarty file + header. + +`smarty-modify-date-on-saving' + Type: bool + Default value: `nil' + Description: If `t'; update the modification date when the + buffer is saved. + +3.1.5 Miscellaneous +------------------- + +`smarty-left-delimiter' + Type: string + Default value: `\"\"' + Description: Left escaping delimiter for Smarty templates. + +`smarty-right-delimiter' + Type: string + Default value: `\"\"' + Description: Right escaping delimiter for Smarty templates. + +`smarty-intelligent-tab' + Type: bool + Default value: `t' + Description: If `t'; TAB does indentation; completion and insert + tabulations. If `nil'; TAB does only indentation. + +`smarty-word-completion-in-minibuffer' + Type: bool + Default value: `t' + Description: If `t'; enable completion in the minibuffer. + +`smarty-word-completion-case-sensitive' + Type: bool + Default value: `nil' + Description: If `t'; completion is case sensitive. + +3.2 Functions +============= + +3.2.1 Mode +---------- + +`smarty-electric-mode' + Menu: Smarty -> Options -> Mode -> Electric Mode + Keybinding: `C-c C-m C-e' + Description: This functions is used to enable/disable the + electric mode. + +`smarty-stutter-mode' + Menu: Smarty -> Options -> Mode -> Stutter Mode + Keybinding: `C-c C-m C-s' + Description: This function is used to enable/disable the stutter + mode. + +4 Menus +******* + +There are 2 menus: Smarty and Sources. All theses menus can be +accessed from the menubar or from the right click. This chapter +describes each menus. + +4.1 Smarty +========== + +This is the main menu of Smarty Mode. It allows an easy access to the +main features of the Smarty Mode: Templates (see *Note Templates::) +and Options (see *Note Customization::). + +This menu contains also 3 functions that are discussed in the next +part. + +4.1.1 Functions +--------------- + +`smarty-show-messages' + Menu: Smarty -> Show Messages + Keybinding: `C-c M-m' + Description: This function opens the *Messages* buffer to + display previous error messages. + +`smarty-doc-mode' + Menu: Smarty -> Smarty Mode Documentation + Keybinding: `C-c C-h' + Description: This function opens the *Help* buffer and prints in + it the Smarty Mode documentation. + +`smarty-version' + Menu: Smarty -> Version + Keybinding: `C-c C-v' + Description: This function displays in the minibuffer the + current Smarty Mode version with the timestamp. + +4.2 Sources +=========== + +The Sources menu shows the Smarty files in the current directory. If +you add or delete a file in the current directory, you need to +refresh the menu. + +4.2.1 Customization +------------------- + +`smarty-source-file-menu' + Type: boolean + Default value: `t' + Description: If `t'; the Sources menu is enabled. This menu + contains the list of Smarty file located in the current + directory. The Sources menu scans the directory when a file is + opened. + +4.2.2 Functions +--------------- + +`smarty-add-source-files-menu' + Menu: Sources -> *Rescan* + Keybinding: `C-c C-s C-u' + Description: This function is used to refresh the Sources menu. + +5 Stuttering +************ + +The stutter mode is a mode that affects a function to a key. For +example, when you use the `ENTER' key, the associated function will +create a new line and indent it. + +5.1 Customization +================= + +`smarty-stutter-mode' + Type: boolean + Default value: `t' + Description: If `t'; enable the stuttering. Is indicated in the + modeline by \"/s\" after the mode name and can be toggled by + `smarty-stutter-mode'. + +5.2 Functions +============= + +`SPACE' + If in comment, indent the comment and add new line if necessary. + In other case, add a space. + +`(' + If the previous character is a `(', the `((' will be replaced by + `['. + If the previous character is a `[', the `[(' will be replaced by + `{'. + In other case, insert a `('. + +`)' + If the previous character is a `)', the `))' will be replaced by + `]'. + If the previous character is a `]', the `])' will be replaced by + `}'. + In other case, insert a `)'. + +6 Templates +*********** + +In the Smarty Mode, the Smarty functions (like if, while, for, fopen, +fclose) are predefined in functions called \"Templates\". + +Each template can be invoked by the function name or by using the + key after the Smarty function name in the buffer (Note, using +`M-' disable the template). + +A template can be aborted by using the `C-g' or by lefting empty the +tempate prompt (in the minibuffer). + +6.1 Customization +================= + +`smarty-electric-mode' + Type: boolean + Default value: `t' + Description: If `t'; enable automatic generation of template. + If `nil'; template generators can still be invoked through key + bindings and menu. Is indicated in the modeline by \"/e\" after + the mode name and can be toggled by `smarty-electric-mode'. + +For a complete description of the template customizable variables, +see *Note Cu01-Pa01-Template:: + +6.2 Functions +============= + +6.2.1 Smarty Functions +---------------------- + +For Smarty functions, see PDF or HTML documentation. + +6.2.2 Non-Smarty Functions +-------------------------- + +`smarty-template-header' + Menu: Smarty -> Templates -> Insert Header + Keybinding: `C-c C-t C-h' + Description: This function is used to insert a header in the + current buffer. + +`smarty-template-footer' + Menu: Smarty -> Templates -> Insert Footer + Keybinding: `C-c C-t C-f' + Description: This function is used to insert a footer in the + current buffer. + +`smarty-template-insert-date' + Menu: Smarty -> Templates -> Insert Date + Keybinding: `C-c C-t C-d i' + Description: This function is used to insert the date in the + current buffer. + +`smarty-template-modify' + Menu: Smarty -> Templates -> Modify Date + Keybinding: `C-c C-t C-d m' + Description: This function is used to modify the last + modification date in the current buffer. + +7 Bugs, Help +************ + + * To report bugs: Bugtracker + (http://bugtracker.morinie.fr/lisp/set_project.php?project_id=2) + + * To obtain help you can post on the dedicated forum: Forum + (http://forum.morinie.fr/lisp/) + +8 Key bindings +************** + +\\{smarty-mode-map}" + (interactive) + (kill-all-local-variables) + (setq major-mode 'smarty-mode) + (setq mode-name "Smarty") + + (smarty-create-syntax-table) + + ;; set maps and tables + (use-local-map smarty-mode-map) + (set-syntax-table smarty-mode-syntax-table) + (setq local-abbrev-table smarty-mode-abbrev-table) + + (set (make-local-variable 'comment-start) (concat smarty-left-delimiter "*")) + (set (make-local-variable 'comment-end) (concat "*" smarty-right-delimiter)) + (set (make-local-variable 'comment-multi-line) t) + (set (make-local-variable 'end-comment-column) 80) + + (make-local-variable 'font-lock-defaults) + (if smarty-highlight-plugin-functions + (setq smarty-font-lock-keywords smarty-font-lock-keywords-4) + (setq smarty-font-lock-keywords smarty-font-lock-keywords-3)) + (setq font-lock-defaults + '((smarty-font-lock-keywords) + nil ; Keywords only (i.e. no comment or string highlighting + t ; case fold + nil ; syntax-alist + nil ; syntax-begin + )) + + (setq font-lock-maximum-decoration t + case-fold-search t) + + ;; add source file menu + (if smarty-source-file-menu (smarty-add-source-files-menu)) + ;; add Smarty menu + (easy-menu-add smarty-mode-menu-list) + (easy-menu-define smarty-mode-menu smarty-mode-map + "Menu keymap for Smarty Mode." smarty-mode-menu-list) + + (message "Smarty Mode %s.%s" smarty-version + (if noninteractive "" " See menu for documentation and release notes.")) + (smarty-mode-line-update) + (run-hooks 'smarty-mode-hook)) + +(defun smarty-doc-mode () + "Display Smarty Mode documentation in *Help* buffer." + (interactive) + (with-output-to-temp-buffer + (if (fboundp 'help-buffer) (help-buffer) "*Help*") + (princ mode-name) + (princ " mode:\n") + (princ (documentation 'smarty-mode)) + (with-current-buffer standard-output + (help-mode)) + (print-help-return-message))) + +(defun smarty-activate-customizations () + "Activate all customizations on local variables." + (interactive) + (smarty-mode-map-init) + (use-local-map smarty-mode-map) + (set-syntax-table smarty-mode-syntax-table) + (smarty-update-mode-menu) + (run-hooks 'menu-bar-update-hook) + (smarty-mode-line-update)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Templates +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun smarty-template-field (prompt &optional follow-string optional + begin end is-string string-char default) + "Prompt for string and insert it in buffer with optional FOLLOW-STRING. +If OPTIONAL is nil, the prompt is left if an empty string is inserted. If +an empty string is inserted, return nil and call `smarty-template-undo' for +the region between BEGIN and END. IS-STRING indicates whether a string +with double-quotes is to be inserted. DEFAULT specifies a default string." + (let ((position (point)) + string) + (insert "<" prompt ">") + (if (not (> (length string-char) 0)) + (setq string-char "\"")) + (setq string + (condition-case () + (read-from-minibuffer (concat prompt ": ") + (or (and is-string (cons (concat string-char string-char) 1)) default) + smarty-minibuffer-local-map) + (quit (if (and optional begin end) + (progn (beep) "") + (keyboard-quit))))) + (when (or (not (equal string "")) optional) + (delete-region position (point))) + (when (and (equal string "") optional begin end) + (smarty-template-undo begin end) + (message "Template aborted")) + (unless (equal string "") + (insert string)) + (when (or (not (equal string "")) (not optional)) + (insert (or follow-string ""))) + (if (equal string "") nil string))) + +(defun smarty-template-undo (begin end) + "Undo aborted template by deleting region and unexpanding the keyword." + (cond (smarty-template-invoked-by-hook + (goto-char end) + (insert " ") + (delete-region begin end) + (unexpand-abbrev)) + (t (delete-region begin end)))) + +(defun smarty-template-generic-function (label close-label field mandatory-count &optional infinite special-field) + "Generic function template 'label field1= field2=..." + (interactive) + (let ((start (point)) found here result-value elt continue field-count stop prompt) + (if smarty-template-invoked-by-hook + (setq found (smarty-after-ldelim)) + (insert smarty-left-delimiter) + (setq found t)) + (insert label) + (setq here (point-marker)) + (insert " ") + (when found + (setq elt field) + (setq continue t) + (setq field-count 0) + (setq stop nil) + (while (and elt continue) + (setq prompt (car elt)) + (when (not special-field) + (insert prompt "=")) + (setq result-value (smarty-template-field prompt nil t)) + (if (and (not result-value) + (< field-count mandatory-count)) + (progn (setq continue nil) + (delete-region start (point)) + (insert (concat label " ")) + (setq stop t)) + (if (not result-value) + (setq continue nil) + (setq here (point-marker)) + (insert " "))) + (setq field-count (+ 1 field-count)) + (setq elt (cdr elt))) + (when (and infinite continue) + (while continue + (setq result-value (smarty-template-field "var_name" "=" t here)) + (if (not result-value) + (setq continue nil) + (setq continue (smarty-template-field "var_value" nil t here)) + (setq here (point-marker)) + (insert " ")))) + (when (not stop) + (delete-region here (point)) + (if (> 0 mandatory-count) + (delete-char -1)) + (if special-field + (delete-char -1)) + (insert smarty-right-delimiter) + (setq here (point-marker)) + (if close-label + (insert smarty-left-delimiter "/" label smarty-right-delimiter)) + (goto-char here))))) + +(defun smarty-template-generic-modifier (label field mandatory-count) + "Generic modifier template '|label:field1:field2..." + (interactive) + (let ((start (point)) found here result-value elt continue field-count stop prompt) + (setq found (re-search-backward (concat (regexp-quote smarty-left-delimiter) "\\$\\(\\w+\\)" (regexp-quote "|")) nil t)) + (if found + (progn + (setq found (re-search-forward (regexp-quote smarty-right-delimiter) start t)) + (if (not found) + (progn + (goto-char start) + (insert label) + (setq here (point-marker)) + (setq elt field) + (setq continue t) + (setq field-count 0) + (setq stop nil) + (while (and elt continue) + (setq prompt (car elt)) + (insert ":") + (setq result-value (smarty-template-field prompt nil t)) + (if (and (not result-value) + (< field-count mandatory-count)) + (progn (setq continue nil) + (delete-region start (point)) + (insert (concat label " ")) + (setq stop t)) + (if (not result-value) + (setq continue nil) + (setq here (point-marker)) + (insert ":"))) + (setq field-count (+ 1 field-count)) + (setq elt (cdr elt))) + (when (not stop) + (delete-region here (point)) + (if (not (or (looking-at smarty-right-delimiter) + (looking-at "|"))) + (insert smarty-right-delimiter)))) + (goto-char start) + (insert label " "))) + (goto-char start) + (insert label " ")))) + +(defun smarty-template-capture-hook () + (smarty-hooked-abbrev 'smarty-template-capture)) +(defun smarty-template-config-load-hook () + (smarty-hooked-abbrev 'smarty-template-config-load)) +(defun smarty-template-else-hook () + (smarty-hooked-abbrev 'smarty-template-else)) +(defun smarty-template-elseif-hook () + (smarty-hooked-abbrev 'smarty-template-elseif)) +(defun smarty-template-foreach-hook () + (smarty-hooked-abbrev 'smarty-template-foreach)) +(defun smarty-template-foreachelse-hook () + (smarty-hooked-abbrev 'smarty-template-foreachelse)) +(defun smarty-template-if-hook () + (smarty-hooked-abbrev 'smarty-template-if)) +(defun smarty-template-include-hook () + (smarty-hooked-abbrev 'smarty-template-include)) +(defun smarty-template-include-php-hook () + (smarty-hooked-abbrev 'smarty-template-include-php)) +(defun smarty-template-insert-hook () + (smarty-hooked-abbrev 'smarty-template-insert)) +(defun smarty-template-ldelim-hook () + (smarty-hooked-abbrev 'smarty-template-ldelim)) +(defun smarty-template-literal-hook () + (smarty-hooked-abbrev 'smarty-template-literal)) +(defun smarty-template-php-hook () + (smarty-hooked-abbrev 'smarty-template-php)) +(defun smarty-template-rdelim-hook () + (smarty-hooked-abbrev 'smarty-template-rdelim)) +(defun smarty-template-section-hook () + (smarty-hooked-abbrev 'smarty-template-section)) +(defun smarty-template-sectionelse-hook () + (smarty-hooked-abbrev 'smarty-template-sectionelse)) +(defun smarty-template-strip-hook () + (smarty-hooked-abbrev 'smarty-template-strip)) + +(defun smarty-template-assign-hook () + (smarty-hooked-abbrev 'smarty-template-assign)) +(defun smarty-template-counter-hook () + (smarty-hooked-abbrev 'smarty-template-counter)) +(defun smarty-template-cycle-hook () + (smarty-hooked-abbrev 'smarty-template-cycle)) +(defun smarty-template-debug-hook () + (smarty-hooked-abbrev 'smarty-template-debug)) +(defun smarty-template-eval-hook () + (smarty-hooked-abbrev 'smarty-template-eval)) +(defun smarty-template-fetch-hook () + (smarty-hooked-abbrev 'smarty-template-fetch)) +(defun smarty-template-html-checkboxes-hook () + (smarty-hooked-abbrev 'smarty-template-html-checkboxes)) +(defun smarty-template-html-image-hook () + (smarty-hooked-abbrev 'smarty-template-html-image)) +(defun smarty-template-html-options-hook () + (smarty-hooked-abbrev 'smarty-template-html-options)) +(defun smarty-template-html-radios-hook () + (smarty-hooked-abbrev 'smarty-template-html-radios)) +(defun smarty-template-html-select-date-hook () + (smarty-hooked-abbrev 'smarty-template-html-select-date)) +(defun smarty-template-html-select-time-hook () + (smarty-hooked-abbrev 'smarty-template-html-select-time)) +(defun smarty-template-html-table-hook () + (smarty-hooked-abbrev 'smarty-template-html-table)) +(defun smarty-template-mailto-hook () + (smarty-hooked-abbrev 'smarty-template-mailto)) +(defun smarty-template-math-hook () + (smarty-hooked-abbrev 'smarty-template-math)) +(defun smarty-template-popup-hook () + (smarty-hooked-abbrev 'smarty-template-popup)) +(defun smarty-template-popup-init-hook () + (smarty-hooked-abbrev 'smarty-template-popup-init)) +(defun smarty-template-textformat-hook () + (smarty-hooked-abbrev 'smarty-template-textformat)) + +(defun smarty-template-capitalize-hook () + (smarty-hooked-abbrev 'smarty-template-capitalize)) +(defun smarty-template-cat-hook () + (smarty-hooked-abbrev 'smarty-template-cat)) +(defun smarty-template-count-characters-hook () + (smarty-hooked-abbrev 'smarty-template-count-characters)) +(defun smarty-template-count-paragraphs-hook () + (smarty-hooked-abbrev 'smarty-template-count-paragraphs)) +(defun smarty-template-count-sentences-hook () + (smarty-hooked-abbrev 'smarty-template-count-sentences)) +(defun smarty-template-count-words-hook () + (smarty-hooked-abbrev 'smarty-template-count-words)) +(defun smarty-template-date-format-hook () + (smarty-hooked-abbrev 'smarty-template-date-format)) +(defun smarty-template-default-hook () + (smarty-hooked-abbrev 'smarty-template-default)) +(defun smarty-template-escape-hook () + (smarty-hooked-abbrev 'smarty-template-escape)) +(defun smarty-template-indent-hook () + (smarty-hooked-abbrev 'smarty-template-indent)) +(defun smarty-template-lower-hook () + (smarty-hooked-abbrev 'smarty-template-lower)) +(defun smarty-template-nl2br-hook () + (smarty-hooked-abbrev 'smarty-template-nl2br)) +(defun smarty-template-regex-replace-hook () + (smarty-hooked-abbrev 'smarty-template-regex-replace)) +(defun smarty-template-replace-hook () + (smarty-hooked-abbrev 'smarty-template-replace)) +(defun smarty-template-spacify-hook () + (smarty-hooked-abbrev 'smarty-template-spacify)) +(defun smarty-template-string-format-hook () + (smarty-hooked-abbrev 'smarty-template-string-format)) +(defun smarty-template-vstrip-hook () + (smarty-hooked-abbrev 'smarty-template-vstrip)) +(defun smarty-template-strip-tags-hook () + (smarty-hooked-abbrev 'smarty-template-strip-tags)) +(defun smarty-template-truncate-hook () + (smarty-hooked-abbrev 'smarty-template-truncate)) +(defun smarty-template-upper-hook () + (smarty-hooked-abbrev 'smarty-template-upper)) +(defun smarty-template-wordwrap-hook () + (smarty-hooked-abbrev 'smarty-template-wordwrap)) + +(defun smarty-template-validate-hook () + (smarty-hooked-abbrev 'smarty-template-validate)) +(defun smarty-template-formtool-checkall-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-checkall)) +(defun smarty-template-formtool-copy-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-copy)) +(defun smarty-template-formtool-count-chars-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-count-chars)) +(defun smarty-template-formtool-init-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-init)) +(defun smarty-template-formtool-move-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-move)) +(defun smarty-template-formtool-moveall-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-moveall)) +(defun smarty-template-formtool-movedown-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-movedown)) +(defun smarty-template-formtool-moveup-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-moveup)) +(defun smarty-template-formtool-remove-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-remove)) +(defun smarty-template-formtool-rename-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-rename)) +(defun smarty-template-formtool-save-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-save)) +(defun smarty-template-formtool-selectall-hook () + (smarty-hooked-abbrev 'smarty-template-formtool-selectall)) +(defun smarty-template-paginate-first-hook () + (smarty-hooked-abbrev 'smarty-template-paginate-first)) +(defun smarty-template-paginate-last-hook () + (smarty-hooked-abbrev 'smarty-template-paginate-last)) +(defun smarty-template-paginate-middle-hook () + (smarty-hooked-abbrev 'smarty-template-paginate-middle)) +(defun smarty-template-paginate-next-hook () + (smarty-hooked-abbrev 'smarty-template-paginate-next)) +(defun smarty-template-paginate-prev-hook () + (smarty-hooked-abbrev 'smarty-template-paginate-prev)) + +(defun smarty-template-btosmilies-hook () + (smarty-hooked-abbrev 'smarty-template-btosmilies)) +(defun smarty-template-bbcodetohtml-hook () + (smarty-hooked-abbrev 'smarty-template-bbcodetohtml)) +(defun smarty-template-date-formatto-hook () + (smarty-hooked-abbrev 'smarty-template-date-formatto)) + +(defun smarty-template-capture () + "Insert a capture statement." + (interactive) + (smarty-template-generic-function "capture" t '("name" "assign") 0)) + +(defun smarty-template-config-load () + "Insert a config_load statement." + (interactive) + (smarty-template-generic-function "config_load" nil '("file" "section" "scope" "global") 1)) + +(defun smarty-template-else () + "Insert a else statement." + (interactive) + (smarty-template-generic-function "else" nil '() 0)) + +(defun smarty-template-elseif () + "Insert a elseif statement." + (interactive) + (smarty-template-generic-function "elseif" nil '("condition") 1 nil t)) + +(defun smarty-template-foreach () + "Insert a foreach statement." + (interactive) + (smarty-template-generic-function "foreach" t '("from" "item" "key" "name") 2)) + +(defun smarty-template-foreachelse () + "Insert a foreachelse statement." + (interactive) + (smarty-template-generic-function "foreachelse" nil '() 0)) + +(defun smarty-template-if () + "Insert a if statement." + (interactive) + (smarty-template-generic-function "if" t '("condition") 1 nil t)) + +(defun smarty-template-include () + "Insert a include statement." + (interactive) + (smarty-template-generic-function "include" nil '("file" "assign") 1 t)) + +(defun smarty-template-include-php () + "Insert a include_php statement." + (interactive) + (smarty-template-generic-function "include_php" nil '("file" "once" "assign") 1)) + +(defun smarty-template-insert () + "Insert a insert statement." + (interactive) + (smarty-template-generic-function "insert" nil '("name" "assign" "script") 1 t)) + +(defun smarty-template-ldelim () + "Insert a ldelim statement." + (interactive) + (smarty-template-generic-function "ldelim" nil '() 0)) + +(defun smarty-template-literal () + "Insert a literal statement." + (interactive) + (smarty-template-generic-function "literal" t '() 0)) + +(defun smarty-template-php () + "Insert a php statement." + (interactive) + (smarty-template-generic-function "php" t '() 0)) + +(defun smarty-template-rdelim () + "Insert a rdelim statement." + (interactive) + (smarty-template-generic-function "rdelim" nil '() 0)) + +(defun smarty-template-section () + "Insert a section statement." + (interactive) + (smarty-template-generic-function "section" t '("name" "loop" "start" "step" "max" "show") 2)) + +(defun smarty-template-sectionelse () + "Insert a sectionelse statement." + (interactive) + (smarty-template-generic-function "sectionelse" nil '() 0)) + +(defun smarty-template-strip () + "Insert a strip statement." + (interactive) + (smarty-template-generic-function "strip" t '() 0)) + + +(defun smarty-template-assign () + "Insert a assign statement." + (interactive) + (smarty-template-generic-function "assign" nil '("var" "value") 2)) + +(defun smarty-template-counter () + "Insert a counter statement." + (interactive) + (smarty-template-generic-function "counter" nil '("name" "start" "skip" "direction" "print" "assign") 0)) + +(defun smarty-template-cycle () + "Insert a cycle statement." + (interactive) + (smarty-template-generic-function "cycle" nil '("values" "name" "print" "advance" "delimiter" "assign" "reset") 1)) + +(defun smarty-template-debug () + "Insert a debug statement." + (interactive) + (smarty-template-generic-function "debug" nil '("output") 0)) + +(defun smarty-template-eval () + "Insert a eval statement." + (interactive) + (smarty-template-generic-function "eval" nil '("var" "assign") 1)) + +(defun smarty-template-fetch () + "Insert a fetch statement." + (interactive) + (smarty-template-generic-function "fetch" nil '("file" "assign") 1)) + +(defun smarty-template-html-checkboxes () + "Insert a html_checkboxes statement." + (interactive) + (smarty-template-generic-function "html_checkboxes" nil '("name" "values" "output" "selected" "options" "separator" "assign" "labels") 0)) + +(defun smarty-template-html-image () + "Insert a html_image statement." + (interactive) + (smarty-template-generic-function "html_image" nil '("file" "height" "width" "basedir" "alt" "href" "path_prefix") 1)) + +(defun smarty-template-html-options () + "Insert a html_options statement." + (interactive) + (smarty-template-generic-function "html_options" nil '("name" "values" "output" "selected" "options") 0)) + +(defun smarty-template-html-radios () + "Insert a html_radios statement." + (interactive) + (smarty-template-generic-function "html_radios" nil '("name" "values" "output" "selected" "options" "separator" "assign") 0)) + +(defun smarty-template-html-select-date () + "Insert a html_select_date statement." + (interactive) + (smarty-template-generic-function "html_select_date" nil '("prefix" "time" "start_year" "end_year" "display_days" "display_months" "display_years" "month_format" "day_format" "day_value_format" "year_as_text" "reverse_years" "field_array" "day_size" "month_size" "year_size" "all_extra" "day_extra" "month_extra" "year_extra" "field_order" "field_separator" "month_value_format" "year_empty" "month_empty" "day_empty") 0)) + +(defun smarty-template-html-select-time () + "Insert a html_select_time statement." + (interactive) + (smarty-template-generic-function "html_select_time" nil '("prefix" "time" "display_hours" "display_minutes" "display_seconds" "display_meridian" "use_24_hours" "minute_interval" "second_interval" "field_array" "all_extra" "hour_extra" "minute_extra" "second_extra" "meridian_extra") 0)) + +(defun smarty-template-html-table () + "Insert a html_table statement." + (interactive) + (smarty-template-generic-function "html_table" nil '("loop" "cols" "rows" "inner" "caption" "table_attr" "th_attr" "tr_attr" "td_attr" "trailpad" "hdir" "vdir") 1)) + +(defun smarty-template-mailto () + "Insert a mailto statement." + (interactive) + (smarty-template-generic-function "mailto" nil '("address" "text" "encode" "cc" "bcc" "subject" "newsgroups" "followupto" "extra") 1)) + +(defun smarty-template-math () + "Insert a math statement." + (interactive) + (smarty-template-generic-function "math" nil '("equation" "var" "format" "assign") 2 t)) + +(defun smarty-template-popup () + "Insert a popup statement." + (interactive) + (smarty-template-generic-function "popup" nil '("text" "trigger" "sticky" "caption" "fgcolor" "bgcolor" "textcolor" "capcolor" "closecolor" "textfont" "captionfont" "closefont" "textsize" "captionsize" "closesize" "width" "height" "left" "right" "center" "above" "below" "border" "offsetx" "offsety" "fgbackground" "bgbackground" "closetext" "noclose" "status" "autostatus" "autostatuscap" "inarray" "caparray" "capicon" "snapx" "snapy" "fixx" "fixy" "background" "padx" "pady" "fullhtml" "frame" "function" "delay" "hauto" "vauto") 1)) + +(defun smarty-template-popup-init () + "Insert a popup_init statement." + (interactive) + (smarty-template-generic-function "popup_init" nil '("src") 1)) + +(defun smarty-template-textformat () + "Insert a textformat statement." + (interactive) + (smarty-template-generic-function "textformat" t '("style" "indent" "indent_first" "indent_char" "wrap" "wrap_char" "wrap_cut" "assign") 0)) + +(defun smarty-template-capitalize () + "Insert a capitalize statement." + (interactive) + (smarty-template-generic-modifier "capitalize" '("upcase_numeric") 0)) + +(defun smarty-template-cat () + "Insert a cat statement." + (interactive) + (smarty-template-generic-modifier "cat" '("value") 0)) + +(defun smarty-template-count-characters () + "Insert a count_characters statement." + (interactive) + (smarty-template-generic-modifier "count_characters" '("include_whitespace") 0)) + +(defun smarty-template-count-paragraphs () + "Insert a count_paragraphs statement." + (interactive) + (smarty-template-generic-modifier "count_paragraphs" '() 0)) + +(defun smarty-template-count-sentences () + "Insert a count_sentences statement." + (interactive) + (smarty-template-generic-modifier "count_sentences" '() 0)) + +(defun smarty-template-count-words () + "Insert a count_words statement." + (interactive) + (smarty-template-generic-modifier "count_words" '() 0)) + +(defun smarty-template-date-format () + "Insert a date_format statement." + (interactive) + (smarty-template-generic-modifier "date_format" '("format" "default") 0)) + +(defun smarty-template-default () + "Insert a default statement." + (interactive) + (smarty-template-generic-modifier "default" '("value") 0)) + +(defun smarty-template-escape () + "Insert a escape statement." + (interactive) + (smarty-template-generic-modifier "escape" '("html|htmlall|url|urlpathinfo|quotes|hex|hexentity|javascript|mail" "charset") 0)) + +(defun smarty-template-indent () + "Insert a indent statement." + (interactive) + (smarty-template-generic-modifier "indent" '("value" "character") 0)) + +(defun smarty-template-lower () + "Insert a lower statement." + (interactive) + (smarty-template-generic-modifier "lower" '() 0)) + +(defun smarty-template-nl2br () + "Insert a nl2br statement." + (interactive) + (smarty-template-generic-modifier "nl2br" '() 0)) + +(defun smarty-template-regex-replace () + "Insert a regex_replace statement." + (interactive) + (smarty-template-generic-modifier "regex_replace" '("regexp" "string_to_replace") 2)) + +(defun smarty-template-replace () + "Insert a replace statement." + (interactive) + (smarty-template-generic-modifier "replace" '("string" "string_to_replace_with") 2)) + +(defun smarty-template-spacify () + "Insert a spacify statement." + (interactive) + (smarty-template-generic-modifier "spacify" '("character") 0)) + +(defun smarty-template-string-format () + "Insert a string_format statement." + (interactive) + (smarty-template-generic-modifier "string_format" '("format") 1)) + +(defun smarty-template-vstrip () + "Insert a strip statement." + (interactive) + (smarty-template-generic-modifier "strip" '() 0)) + +(defun smarty-template-strip-tags () + "Insert a strip_tags statement." + (interactive) + (smarty-template-generic-modifier "strip_tags" '("replace_by_space") 0)) + +(defun smarty-template-truncate () + "Insert a truncate statement." + (interactive) + (smarty-template-generic-modifier "truncate" '("count" "text_to_replace" "character_boundary" "middle_string") 0)) + +(defun smarty-template-upper () + "Insert a upper statement." + (interactive) + (smarty-template-generic-modifier "upper" '() 0)) + +(defun smarty-template-wordwrap () + "Insert a wordwrap statement." + (interactive) + (smarty-template-generic-modifier "wordwrap" '("count" "string" "character_boundary") 0)) + + +(defun smarty-template-validate () + "Insert a validate statement." + (interactive) + (smarty-template-generic-function "validate" nil '("field" "criteria" "message" "form" "transform" "trim" "empty" "halt" "assign" "append" "page") 3)) + +(defun smarty-template-formtool-checkall () + "Insert a formtool_checkall statement." + (interactive) + (smarty-template-generic-function "formtool_checkall" nil '("name" "class" "style") 1)) + +(defun smarty-template-formtool-copy () + "Insert a formtool_copy statement." + (interactive) + (smarty-template-generic-function "formtool_copy" nil '("from" "to" "save" "button_text" "all" "counter" "class" "style") 3)) + +(defun smarty-template-formtool-count-chars () + "Insert a formtool_count_chars statement." + (interactive) + (smarty-template-generic-function "formtool_count_chars" nil '("name" "limit" "alert") 3)) + +(defun smarty-template-formtool-init () + "Insert a formtool_init statement." + (interactive) + (smarty-template-generic-function "formtool_init" nil '("src") 1)) + +(defun smarty-template-formtool-move () + "Insert a formtool_move statement." + (interactive) + (smarty-template-generic-function "formtool_move" nil '("from" "to" "save_from" "save_to" "all" "count_to" "count_from" "class" "style") 4)) + +(defun smarty-template-formtool-moveall () + "Insert a formtool_moveall statement." + (interactive) + (smarty-template-generic-function "formtool_moveall" nil '("from" "to" "save_from" "save_to" "all" "count_to" "count_from" "class" "style") 4)) + +(defun smarty-template-formtool-movedown () + "Insert a formtool_movedown statement." + (interactive) + (smarty-template-generic-function "formtool_movedown" nil '("save" "name" "class" "style") 2)) + +(defun smarty-template-formtool-moveup () + "Insert a formtool_moveup statement." + (interactive) + (smarty-template-generic-function "formtool_moveup" nil '("save" "name" "class" "style") 2)) + +(defun smarty-template-formtool-remove () + "Insert a formtool_remove statement." + (interactive) + (smarty-template-generic-function "formtool_remove" nil '("from" "save" "all" "counter" "class" "style") 2)) + +(defun smarty-template-formtool-rename () + "Insert a formtool_rename statement." + (interactive) + (smarty-template-generic-function "formtool_rename" nil '("name" "from" "save" "class" "style") 3)) + +(defun smarty-template-formtool-save () + "Insert a formtool_save statement." + (interactive) + (smarty-template-generic-function "formtool_save" nil '("from" "name" "save") 3)) + +(defun smarty-template-formtool-selectall () + "Insert a formtool_selectall statement." + (interactive) + (smarty-template-generic-function "formtool_selectall" nil '("name" "class" "style") 1)) + +(defun smarty-template-paginate-first () + "Insert a paginate_first statement." + (interactive) + (smarty-template-generic-function "paginate_first" nil '("id" "text") 0)) + +(defun smarty-template-paginate-last () + "Insert a paginate_last statement." + (interactive) + (smarty-template-generic-function "paginate_last" nil '("id" "text") 0)) + +(defun smarty-template-paginate-middle () + "Insert a paginate_middle statement." + (interactive) + (smarty-template-generic-function "paginate_middle" nil '("id" "format" "prefix" "page_limit" "link_prefix" "link_suffix") 0)) + +(defun smarty-template-paginate-next () + "Insert a paginate_next statement." + (interactive) + (smarty-template-generic-function "paginate_next" nil '("id" "text") 0)) + +(defun smarty-template-paginate-prev () + "Insert a paginate_prev statement." + (interactive) + (smarty-template-generic-function "paginate_prev" nil '("id" "text") 0)) + + +(defun smarty-template-btosmilies () + "Insert a B2Smilies statement." + (interactive) + (smarty-template-generic-modifier "B2Smilies" '() 0)) + +(defun smarty-template-bbcodetohtml () + "Insert a bbcode2html statement." + (interactive) + (smarty-template-generic-modifier "bbcode2html" '() 0)) + +(defun smarty-template-date-formatto () + "Insert a date_format2 statement." + (interactive) + (smarty-template-generic-modifier "date_format2" '("format" "default") 0)) + +;; + +(defun smarty-resolve-env-variable (string) + "Resolve environment variables in STRING." + (while (string-match "\\(.*\\)${?\\(\\(\\w\\|_\\)+\\)}?\\(.*\\)" string) + (setq string (concat (match-string 1 string) + (getenv (match-string 2 string)) + (match-string 4 string)))) + string) + +(defun smarty-insert-string-or-file (string) + "Insert STRING or file contents if STRING is an existing file name." + (unless (equal string "") + (let ((file-name + (progn (string-match "^\\([^\n]+\\)" string) + (smarty-resolve-env-variable (match-string 1 string))))) + (if (file-exists-p file-name) + (forward-char (cadr (insert-file-contents file-name))) + (insert string))))) + +(defun smarty-template-insert-date () + "Insert date in appropriate format." + (interactive) + (insert + (cond + ;; 'american, 'european, 'scientific kept for backward compatibility + ((eq smarty-date-format 'american) (format-time-string "%m/%d/%Y" nil)) + ((eq smarty-date-format 'european) (format-time-string "%d.%m.%Y" nil)) + ((eq smarty-date-format 'scientific) (format-time-string "%Y/%m/%d" nil)) + (t (format-time-string smarty-date-format nil))))) + +(defun smarty-template-header (&optional file-title) + "Insert a Smarty file header." + (interactive) + (unless (equal smarty-file-header "") + (let (pos) + (save-excursion + (smarty-insert-string-or-file smarty-file-header) + (setq pos (point-marker))) + (smarty-template-replace-header-keywords + (point-min-marker) pos file-title)))) + +(defun smarty-template-footer () + "Insert a Smarty file footer." + (interactive) + (unless (equal smarty-file-footer "") + (let (pos) + (save-excursion + (setq pos (point-marker)) + (smarty-insert-string-or-file smarty-file-footer) + (unless (= (preceding-char) ?\n) + (insert "\n"))) + (smarty-template-replace-header-keywords pos (point-max-marker))))) + +(defun smarty-template-replace-header-keywords (beg end &optional file-title is-model) + "Replace keywords in header and footer." + (let () + (smarty-prepare-search-2 + (save-excursion + (goto-char beg) + (while (search-forward "" end t) + (replace-match (buffer-name) t t)) + (goto-char beg) + (while (search-forward "" end t) + (replace-match smarty-copyright-string t t)) + (goto-char beg) + (while (search-forward "" end t) + (replace-match "" t t) + (insert (user-full-name)) + (when user-mail-address (insert " <" user-mail-address ">"))) + (goto-char beg) + (while (search-forward "" end t) + (replace-match (user-login-name) t t)) + (goto-char beg) + (while (search-forward "" end t) + (replace-match smarty-company-name t t)) + (goto-char beg) + ;; Replace with $, so that RCS for the source is + ;; not over-enthusiastic with replacements + (while (search-forward "" end t) + (replace-match "$" nil t)) + (goto-char beg) + (while (search-forward "" end t) + (replace-match "" t t) + (smarty-template-insert-date)) + (goto-char beg) + (while (search-forward "" end t) + (replace-match (format-time-string "%Y" nil) t t)) + (goto-char beg) + (let (string) + (while + (re-search-forward "<\\(\\(\\w\\|\\s_\\)*\\) string>" end t) + (setq string (read-string (concat (match-string 1) ": "))) + (replace-match string t t))) + (goto-char beg) + (when (and (not is-model) (search-forward "" end t)) + (replace-match "" t t)))))) + +(provide 'smarty-mode) +;;; smarty-mode.el ends here \ No newline at end of file diff --git a/emacs.d/nxhtml/autostart.el b/emacs.d/nxhtml/autostart.el new file mode 100644 index 0000000..44a6901 --- /dev/null +++ b/emacs.d/nxhtml/autostart.el @@ -0,0 +1,194 @@ +;;; autostart.el --- Load nxhtml +;; +;; Author: By: Lennart Borgman +;; Created: Fri Dec 15 2006 +;; Version: +;; Last-Updated: 2009-04-30 Thu +;; Keywords: +;; Compatibility: +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; 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., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Code: + +;; Fix-me: Split out the definitions from this file so it can be +;; loaded during byte compilation. + +;;(eval-when-compile (require 'web-vcs nil t)) +;;(eval-when-compile (require 'nxhtml-web-vcs nil t)) + +(message "Nxml/Nxhtml Autostart.el loading ...") + +(defconst nxhtml-autostart-trace nil) +(defsubst nxhtml-autostart-trace (format-string &rest args) + (when nxhtml-autostart-trace + (apply 'message format-string args))) + +(defconst nxhtml-load-time-start (float-time)) + +;; Add this dir to load-path +(add-to-list 'load-path + (file-name-directory (or load-file-name + (when (boundp 'bytecomp-filename) bytecomp-filename) + buffer-file-name))) + +(require 'nxhtml-base) +(eval-and-compile (when (fboundp 'nxml-mode) + (load (expand-file-name "etc/schema/schema-path-patch" + nxhtml-install-dir)))) + +;; (defun nxhtml-custom-load-and-get-value (symbol) +;; (custom-load-symbol symbol) +;; (symbol-value symbol)) + +(defun nxhtml-list-loaded-features (use-message) + (interactive (list t)) + (let ((buf (when use-message ;(called-interactively-p) + (get-buffer-create "*nXhtml loaded features*")))) + (if buf + (with-current-buffer buf (erase-buffer)) + (message "") + (message "=== Loaded at nxhtml/autostart.el end:")) + (dolist (feature '( + as-external + html-chklnk + html-imenu + html-move + html-pagetoc + html-quote + html-site + html-toc + html-upl + html-wtoc + inlimg + mumamo + nxhtml-bug + nxhtml-menu + nxhtml-mode + nxhtml-mumamo + nxhtml-strval + nxhtml + nxhtml-js + nxml-where + outline-magic + rngalt + tidy-xhtml + xhtml-help + )) + (when (featurep feature) + (if buf + (with-current-buffer buf + (insert (format "(feature '%s)=%s\n" feature (featurep feature)))) + (message "(feature '%s)=%s" feature (featurep feature))))) + (if buf + (display-buffer buf) + (message "")))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Code that will run on loading this file + +(if (< emacs-major-version 23) + (unless (featurep 'autostart22) + (load (expand-file-name "autostart22" nxhtml-install-dir))) + ;; Check that the nxml-mode included with Emacs is used. There + ;; has been some problems on Debian with this. + (let ((nxml-mode-file (locate-library "nxml-mode")) + (help-file (locate-library "help"))) + (unless (string= (expand-file-name ".." help-file) + (expand-file-name "../.." nxml-mode-file)) + (error "Wrong nxml-mode=%s used, please use the one that comes with Emacs" nxml-mode-file)))) + +(let* ((util-dir (file-name-as-directory (expand-file-name "util" nxhtml-install-dir))) + (related-dir (file-name-as-directory (expand-file-name "related" nxhtml-install-dir))) + (nxhtml-dir (file-name-as-directory (expand-file-name "nxhtml" nxhtml-install-dir))) + ;;(company-dir (file-name-as-directory (expand-file-name "util/nxhtml-company-mode" nxhtml-install-dir))) + (tests-dir (file-name-as-directory (expand-file-name "tests" nxhtml-install-dir)))) + (add-to-list 'load-path nxhtml-dir) + (add-to-list 'load-path related-dir) + (add-to-list 'load-path util-dir) + (add-to-list 'load-path nxhtml-install-dir) + ;;(add-to-list 'load-path company-dir) + (add-to-list 'load-path tests-dir) + + (nxhtml-autostart-trace "... nXhtml loading %.1f seconds elapsed ..." (- (float-time) nxhtml-load-time-start)) + + ;; Autoloading etc + ;; (unless (featurep 'web-vcs) + ;; (load (expand-file-name "web-vcs" nxhtml-install-dir) (not nxhtml-autoload-web))) + + ;; (when (catch 'miss + ;; (dolist (file nxhtml-basic-files) + ;; (let ((dl-file (expand-file-name file nxhtml-install-dir))) + ;; (unless (file-exists-p dl-file) + ;; (throw 'miss t)))) + ;; nil) + ;; (nxhtml-setup-auto-download nxhtml-install-dir)) + + (unless (featurep 'web-autoload) + (load (expand-file-name "web-autoload" nxhtml-install-dir) (not nxhtml-autoload-web))) + + (when nxhtml-autoload-web + (ad-activate 'require t)) + + ;; Fix-me: Why must as-external be loaded? Why doesn't it work in batch? + ;;(unless noninteractive (require 'as-external)) + + (unless (featurep 'nxhtml-loaddefs) + (load (expand-file-name "nxhtml-loaddefs" nxhtml-install-dir) nxhtml-autoload-web)) + (nxhtml-autostart-trace "... nXhtml loading %.1f seconds elapsed ..." (- (float-time) nxhtml-load-time-start)) + + ;; Turn on `nxhtml-menu-mode' unconditionally + (nxhtml-autostart-trace "Turn on `nxhtml-menu-mode' unconditionally") + (nxhtml-menu-mode 1) + (nxhtml-autostart-trace "... nXhtml loading %.1f seconds elapsed ..." (- (float-time) nxhtml-load-time-start)) + + ;; Patch the rnc include paths + (when (fboundp 'rncpp-patch-xhtml-loader) (rncpp-patch-xhtml-loader)) + (nxhtml-autostart-trace "... nXhtml loading %.1f seconds elapsed ..." (- (float-time) nxhtml-load-time-start)) + + ;; Load nXhtml + (unless (featurep 'nxhtml-autoload) + (load (expand-file-name "nxhtml/nxhtml-autoload" nxhtml-install-dir)))) +(nxhtml-autostart-trace "... nXhtml loading %.1f seconds elapsed ..." (- (float-time) nxhtml-load-time-start)) + + +(unless (featurep 'nxhtml-autostart) + ;; Provide the feature here to avoid loading looping on error. + (provide 'nxhtml-autostart) + + ;; Tell what have been loaded of nXhtml: + (when nxhtml-autostart-trace (nxhtml-list-loaded-features nil)) + + ;; How long time did it all take? + (message "Nxml/Nxhtml Autostart.el loaded in %.1f seconds" (- (float-time) nxhtml-load-time-start))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; autostart.el ends here diff --git a/emacs.d/nxhtml/autostart22.el b/emacs.d/nxhtml/autostart22.el new file mode 100644 index 0000000..2376d43 --- /dev/null +++ b/emacs.d/nxhtml/autostart22.el @@ -0,0 +1,71 @@ +;;; autostart22.el --- Example of autostart file for Emacs22 +;; +;; Author: Lennart Borgman (lennart O borgman A gmail O com) +;; Created: 2009-01-01 Thu +;; Version: +;; Last-Updated: 2009-01-05 Mon +;; URL: +;; Keywords: +;; Compatibility: +;; +;; Features that might be required by this library: +;; +;; This file is for Emacs 22 only. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Commentary: +;; +;; Change this file according to the path of your nxml-mode dir. If +;; you do not use nxml-mode then just use autostart.el. +;; +;; NOTICE: You need to enter the path to your nxml-mode installation +;; below. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; 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: + +(let ((debug-on-error t)) + (if (/= emacs-major-version 22) + (message "This file (autostart22.el) is for Emacs 22 only") + + (defalias 'Custom-mode 'custom-mode) + + (let* ((this-file (or load-file-name buffer-file-name)) + (this-dir (file-name-directory this-file)) + ;; FIX-ME: Download nXml (since it is not included in Emacs + ;; 22) and place the path to rng-auto.el in your downloaded + ;; nXml HERE: + (rng-auto-file (or (locate-library "rng-auto.el") + "c:/emacs/u/081231/EmacsW32/nxhtml/nxml-mode-20041004/rng-auto.el"))) + (unless (file-exists-p rng-auto-file) + (error "Can't find rng-auto.el, please edit %s" this-file)) + (load rng-auto-file)))) + +(provide 'autostart22) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; autostart22.el ends here diff --git a/emacs.d/nxhtml/emacs22.cmd b/emacs.d/nxhtml/emacs22.cmd new file mode 100644 index 0000000..d50ac96 --- /dev/null +++ b/emacs.d/nxhtml/emacs22.cmd @@ -0,0 +1 @@ +c:\emacs\emacs-22.3\bin\emacs.exe -Q --debug-init -l autostart.el diff --git a/emacs.d/nxhtml/etc/img/pause/pause.jpg b/emacs.d/nxhtml/etc/img/pause/pause.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff920756c42a4160ed9045de007bc95672dbbd5a GIT binary patch literal 25849 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/etc/img/pause/pause2.jpg b/emacs.d/nxhtml/etc/img/pause/pause2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6411344afe234c4ab8c791230f0445fb6a9aee58 GIT binary patch literal 26756 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/etc/schema/FDA-2009-N-0392-0396.1.doc b/emacs.d/nxhtml/etc/schema/FDA-2009-N-0392-0396.1.doc new file mode 100644 index 0000000000000000000000000000000000000000..aa2eff3d154395a93770f7c2f81d5cb062f0a8f7 GIT binary patch literal 47104 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/etc/schema/genshi-old.rnc b/emacs.d/nxhtml/etc/schema/genshi-old.rnc new file mode 100644 index 0000000..5384fe1 --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/genshi-old.rnc @@ -0,0 +1,27 @@ +namespace py = "http://genshi.edgewall.org/" + +genshi.expr-type = xsd:string { minLength = "1" } +genshi.with-type = xsd:string { minLength = "1" } +genshi.choose-type = xsd:string +genshi.def-type = xsd:string +genshi.xpath-type = xsd:anyURI + +genshi.attrib = attribute py:if { genshi.expr-type }?, + attribute py:choose { genshi.choose-type }?, + attribute py:when { genshi.expr-type }?, + attribute py:otherwise { genshi.expr-type }?, + attribute py:for { genshi.expr-type }?, + attribute py:def { genshi.def-type }?, + attribute py:match { genshi.xpath-type }?, + attribute py:with { genshi.with-type }?, + attribute py:attrs { genshi.expr-type }?, + attribute py:content { genshi.expr-type }?, + attribute py:replace { genshi.expr-type }?, + attribute py:strip { genshi.expr-type }? + +genshi.if.attlist = attribute expr { genshi.expr-type } +genshi.for.attlist = attribute each { genshi.expr-type } +genshi.def.attlist = attribute each { genshi.expr-type } +genshi.with.attlist = attribute vars { genshi.with-type } + + diff --git a/emacs.d/nxhtml/etc/schema/genshi-schemas.xml b/emacs.d/nxhtml/etc/schema/genshi-schemas.xml new file mode 100644 index 0000000..89fe05f --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/genshi-schemas.xml @@ -0,0 +1,3 @@ + + + diff --git a/emacs.d/nxhtml/etc/schema/genshi.rnc b/emacs.d/nxhtml/etc/schema/genshi.rnc new file mode 100644 index 0000000..b9ddf76 --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/genshi.rnc @@ -0,0 +1,84 @@ +default namespace = "http://genshi.edgewall.org/" +namespace py = "http://genshi.edgewall.org/" + +include "xinclude.rnc" + +# There's no way to just match the text part against a Genshi Python expression +# See: http://relaxng.org/compact-tutorial-20030326.html#id2814737 +python.expression = text + +genshi.expr-type = xsd:string { minLength = "1" } +genshi.xpath-type = xsd:anyURI + +genshi.attrib = + attribute py:if { genshi.expr-type }?, + attribute py:choose { text }?, + attribute py:when { genshi.expr-type }?, + attribute py:otherwise { text }?, + attribute py:for { genshi.expr-type }?, + attribute py:def { genshi.expr-type }?, + attribute py:match { genshi.xpath-type}?, + attribute py:with { genshi.expr-type }?, + attribute py:attrs { genshi.expr-type }?, + attribute py:content { text }?, + attribute py:replace { genshi.expr-type }?, + attribute py:strip { text }? + +genshi.if.attlist = attribute test { genshi.expr-type } +genshi.choose.attlist = attribute test { text } +genshi.when.attlist = attribute test { genshi.expr-type } +genshi.for.attlist = attribute each { genshi.expr-type } +genshi.def.attlist = attribute function { genshi.expr-type } +genshi.with.attlist = attribute vars { genshi.expr-type } +genshi.replace.attlist = attribute value { genshi.expr-type } +genshi.match.attlist = + attribute path { genshi.xpath-type }, + attribute buffer { "true" | "false" }?, + attribute once { "true" | "false" }?, + attribute recursive { "true" | "false" }? + +genshi.choose = + element py:choose { genshi.choose.attlist, + genshi.model + } +genshi.when = + element py:when { genshi.when.attlist, + genshi.model + } +genshi.otherwise = + element py:otherwise { + genshi.model + } +genshi.if = + element py:if { genshi.if.attlist, + genshi.model + } +genshi.for = + element py:for { genshi.for.attlist, + genshi.model + } +genshi.def = + element py:def { genshi.def.attlist, + genshi.model + } +genshi.with = + element py:with { genshi.with.attlist, + genshi.model + } +genshi.match = + element py:match { genshi.match.attlist, + genshi.model + } +genshi.replace = + element py:replace { genshi.replace.attlist, + genshi.model + } + +genshi.allowed.children = text + +genshi.class = genshi.if | genshi.choose | genshi.when | genshi.otherwise + | genshi.for | genshi.def | genshi.with | genshi.match | genshi.replace + | python.expression + | xi.include + +genshi.model = genshi.class* | genshi.allowed.children* \ No newline at end of file diff --git a/emacs.d/nxhtml/etc/schema/mjt.rnc b/emacs.d/nxhtml/etc/schema/mjt.rnc new file mode 100644 index 0000000..b37f01a --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/mjt.rnc @@ -0,0 +1,74 @@ +include "xhtml-loader.rnc" + +MjtAll.attrib = + attribute mjt.def { Text.datatype }?, + attribute mjt.when { Text.datatype }?, + attribute mjt.otherwise { Text.datatype }?, + attribute mjt.for { Text.datatype }?, + attribute mjt.if { Text.datatype }?, + attribute mjt.elif { Text.datatype }?, + attribute mjt.else { Text.datatype }?, + attribute mjt.script { Text.datatype }?, + attribute mjt.choose { Text.datatype }?, + attribute mjt.replace { Text.datatype }?, + attribute mjt.content { Text.datatype }?, + attribute mjt.strip { Text.datatype }?, + attribute mjt.src { Text.datatype }?, + attribute mjt.style { Text.datatype }?, + attribute mjt.class { Text.datatype }?, + attribute mjt.id { Text.datatype }?, + attribute mjt.attrs { Text.datatype }?, + attribute mjt.task { Text.datatype }? + + +a.attlist &= + attribute mjt.onblur { Script.datatype }?, + attribute mjt.onfocus { Script.datatype }? +area.attlist &= + attribute mjt.onblur { Script.datatype }?, + attribute mjt.onfocus { Script.datatype }? +form.attlist &= + attribute mjt.onreset { Script.datatype }?, + attribute mjt.onsubmit { Script.datatype }? +body.attlist &= + attribute mjt.onload { Script.datatype }?, + attribute mjt.onunload { Script.datatype }? +label.attlist &= + attribute mjt.onblur { Script.datatype }?, + attribute mjt.onfocus { Script.datatype }? +input.attlist &= + attribute mjt.onblur { Script.datatype }?, + attribute mjt.onchange { Script.datatype }?, + attribute mjt.onfocus { Script.datatype }?, + attribute mjt.onselect { Script.datatype }? +select.attlist &= + attribute mjt.onblur { Script.datatype }?, + attribute mjt.onchange { Script.datatype }?, + attribute mjt.onfocus { Script.datatype }? +textarea.attlist &= + attribute mjt.onblur { Script.datatype }?, + attribute mjt.onchange { Script.datatype }?, + attribute mjt.onfocus { Script.datatype }?, + attribute mjt.onselect { Script.datatype }? +button.attlist &= + attribute mjt.onblur { Script.datatype }?, + attribute mjt.onfocus { Script.datatype }? + +MjtEvents.attrib = + attribute mjt.onclick { Script.datatype }?, + attribute mjt.ondblclick { Script.datatype }?, + attribute mjt.onmousedown { Script.datatype }?, + attribute mjt.onmouseup { Script.datatype }?, + attribute mjt.onmouseover { Script.datatype }?, + attribute mjt.onmousemove { Script.datatype }?, + attribute mjt.onmouseout { Script.datatype }?, + attribute mjt.onkeypress { Script.datatype }?, + attribute mjt.onkeydown { Script.datatype }?, + attribute mjt.onkeyup { Script.datatype }? + + +Common.attrib &= MjtAll.attrib +CommonIdRequired.attrib &= MjtAll.attrib + +Common.attrib &= MjtEvents.attrib +CommonIdRequired.attrib &= MjtEvents.attrib diff --git a/emacs.d/nxhtml/etc/schema/nxml-erb.patch b/emacs.d/nxhtml/etc/schema/nxml-erb.patch new file mode 100644 index 0000000..362913b --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/nxml-erb.patch @@ -0,0 +1,37 @@ +--- nxml-mode-orig/xmltok.el 2005-10-16 15:32:53.000000000 -0400 ++++ nxml-mode-erb/xmltok.el 2006-09-01 01:02:55.000000000 -0400 +@@ -496,6 +496,9 @@ + (xmltok+ (xmltok-g markup-declaration "!") + (xmltok-g comment-first-dash "-" + (xmltok-g comment-open "-") opt) opt)) ++ (erb-section ++ (xmltok+ "%" ++ (xmltok-g erb-section-open "[^%]") opt)) + (cdata-section + (xmltok+ "!" + (xmltok-g marked-section-open "\\[") +@@ -526,6 +529,7 @@ + ;; by default + or cdata-section + or comment ++ or erb-section + or processing-instruction)) + (xmltok-defregexp + xmltok-attribute +@@ -693,6 +697,16 @@ + nil + "]]>") + 'not-well-formed))) ++ ((xmltok-after-lt start erb-section-open) ++ (setq xmltok-type ++ (if (re-search-forward "[^%]%>" nil t) ++ 'erb-section ++ (xmltok-add-error "No closing %>") ++ (xmltok-add-dependent 'xmltok-unclosed-reparse-p ++ nil ++ nil ++ "%>") ++ 'not-well-formed))) + ((xmltok-after-lt start processing-instruction-question) + (xmltok-scan-after-processing-instruction-open)) + ((xmltok-after-lt start comment-open) diff --git a/emacs.d/nxhtml/etc/schema/old-genshi.rnc b/emacs.d/nxhtml/etc/schema/old-genshi.rnc new file mode 100644 index 0000000..5a50385 --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/old-genshi.rnc @@ -0,0 +1,31 @@ +namespace py = "http://genshi.edgewall.org/" + +genshi.expr-type = xsd:string { minLength = "1" } +genshi.with-type = xsd:string { minLength = "1" } +genshi.choose-type = xsd:string +genshi.def-type = xsd:string +genshi.xpath-type = xsd:anyURI + +genshi.attrib = attribute py:if { genshi.expr-type }?, + attribute py:choose { genshi.choose-type }?, + attribute py:when { genshi.expr-type }?, + attribute py:otherwise { genshi.expr-type }?, + attribute py:for { genshi.expr-type }?, + attribute py:def { genshi.def-type }?, + attribute py:match { genshi.xpath-type }?, + attribute py:with { genshi.with-type }?, + attribute py:attrs { genshi.expr-type }?, + attribute py:content { genshi.expr-type }?, + attribute py:replace { genshi.expr-type }?, + attribute py:strip { genshi.expr-type }? + +genshi.if.attlist = attribute test { genshi.expr-type } +genshi.for.attlist = attribute each { genshi.expr-type } +genshi.def.attlist = attribute function { genshi.expr-type } +genshi.with.attlist = attribute vars { genshi.with-type } +genshi.match.attlist = attribute path { genshi.xpath-type }, + attribute buffer { genshi.expr-type }?, + attribute once { genshi.expr-type }?, + attribute recursive { genshi.expr-type }? + + diff --git a/emacs.d/nxhtml/etc/schema/old-qtmstr-xhtml.rnc b/emacs.d/nxhtml/etc/schema/old-qtmstr-xhtml.rnc new file mode 100644 index 0000000..b5f84bd --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/old-qtmstr-xhtml.rnc @@ -0,0 +1,61 @@ +namespace py = "http://genshi.edgewall.org/" +namespace xi = "http://www.w3.org/2001/XInclude" + +include "genshi.rnc" +include "xinclude.rnc" +include "xhtml-loader.rnc" + +start |= head|body|p|\div|h1|h2|h3|h4|h5|h6|hr|pre|dl|ol|ul|table|form + +Common.attrib &= genshi.attrib +head.attlist &= genshi.attrib +html.attlist &= genshi.attrib + +Head.class = base | isindex | link | meta | script | title | style | + if-head | for-head | def-head | with-head + +Head.model = Head.class* + +head.content &= Head.model* + +if-inline = element py:if { genshi.if.attlist, Inline.model } +if-block = element py:if { genshi.if.attlist, Block.model } +if-head = element py:if { genshi.if.attlist, Head.model } +for-inline = element py:for { genshi.for.attlist, Inline.model } +for-block = element py:for { genshi.for.attlist, Block.model } +for-head = element py:for { genshi.for.attlist, Head.model } +def-inline = element py:def { genshi.def.attlist, Inline.model } +def-block = element py:def { genshi.def.attlist, Block.model } +def-head = element py:def { genshi.def.attlist, Head.model } +with-inline = element py:with { genshi.with.attlist, Inline.model } +with-block = element py:with { genshi.with.attlist, Block.model } +with-head = element py:with { genshi.with.attlist, Head.model } +match-inline = element py:match { genshi.match.attlist, Inline.model } +match-block = element py:match { genshi.match.attlist, Block.model } +match-head = element py:match { genshi.match.attlist, Head.model } + +Inline.class |= if-inline | for-inline | def-inline | with-inline | match-inline +Block.class |= if-block | for-block | def-block | with-block | match-block + +xi-inline = element xi:include { + xinclude.include.attlist, + element xi:fallback { genshi.attrib, + (xi-inline | Inline.model)* + }? + } + +xi-block = element xi:include { xinclude.include.attlist, + element xi:fallback { genshi.attrib, + (xi-block | Block.model)* + }? + } + +xi-head = element xi:include { xinclude.include.attlist, + element xi:fallback { genshi.attrib, + (xi-head | Head.model)* + }? + } + +Inline.class |= xi-inline +Block.class |= xi-block +Head.class |= xi-head diff --git a/emacs.d/nxhtml/etc/schema/old-xinclude.rnc b/emacs.d/nxhtml/etc/schema/old-xinclude.rnc new file mode 100644 index 0000000..c45cf0c --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/old-xinclude.rnc @@ -0,0 +1,11 @@ +namespace xi = "http://www.w3.org/2001/XInclude" +namespace local = "" + +xinclude.include.attlist = + attribute href { xsd:anyURI }?, + attribute parse { xsd:string }?, + attribute xpointer { xsd:string }?, + attribute encoding { xsd:string }?, + attribute accept { xsd:string }?, + attribute accept-language { xsd:string }? + diff --git a/emacs.d/nxhtml/etc/schema/qtmstr-xhtml-old.rnc b/emacs.d/nxhtml/etc/schema/qtmstr-xhtml-old.rnc new file mode 100644 index 0000000..61ab89e --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/qtmstr-xhtml-old.rnc @@ -0,0 +1,58 @@ +namespace py = "http://genshi.edgewall.org/" +namespace xi = "http://www.w3.org/2001/XInclude" + +include "genshi.rnc" +include "xinclude.rnc" +include "xhtml-loader.rnc" + +start |= head|body|p|\div|h1|h2|h3|h4|h5|h6|hr|pre|dl|ol|ul|table|form + +Common.attrib &= genshi.attrib +head.attlist &= genshi.attrib +html.attlist &= genshi.attrib + +Head.class = base | isindex | link | meta | script | title | style | + if-head | for-head | def-head | with-head + +Head.model = Head.class* + +head.content &= Head.model* + +if-inline = element py:if { genshi.if.attlist, Inline.model } +if-block = element py:if { genshi.if.attlist, Block.model } +if-head = element py:if { genshi.if.attlist, Head.model } +for-inline = element py:for { genshi.for.attlist, Inline.model } +for-block = element py:for { genshi.for.attlist, Block.model } +for-head = element py:for { genshi.for.attlist, Head.model } +def-inline = element py:def { genshi.def.attlist, Inline.model } +def-block = element py:def { genshi.def.attlist, Block.model } +def-head = element py:def { genshi.def.attlist, Head.model } +with-inline = element py:with { genshi.with.attlist, Inline.model } +with-block = element py:with { genshi.with.attlist, Block.model } +with-head = element py:with { genshi.with.attlist, Head.model } + +Inline.class |= if-inline | for-inline | def-inline | with-inline +Block.class |= if-block | for-block | def-block | with-block + +xi-inline = element xi:include { + xinclude.include.attlist, + element xi:fallback { genshi.attrib, + (xi-inline | Inline.model)* + }? + } + +xi-block = element xi:include { xinclude.include.attlist, + element xi:fallback { genshi.attrib, + (xi-block | Block.model)* + }? + } + +xi-head = element xi:include { xinclude.include.attlist, + element xi:fallback { genshi.attrib, + (xi-head | Head.model)* + }? + } + +Inline.class |= xi-inline +Block.class |= xi-block +Head.class |= xi-head diff --git a/emacs.d/nxhtml/etc/schema/qtmstr-xhtml.rnc b/emacs.d/nxhtml/etc/schema/qtmstr-xhtml.rnc new file mode 100644 index 0000000..ff5d0a9 --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/qtmstr-xhtml.rnc @@ -0,0 +1,66 @@ +default namespace = "http://www.w3.org/1999/xhtml" + +include "genshi.rnc" +include "xhtml-loader.rnc" { + start = html | head | head.content | body | frameset | frame | noframes | + Block.class | Inline.class | Table.class | Form.extra.class | genshi.class + html = element html { html.attlist, (genshi.model | (head, (body | frameset | genshi.model))) } + frameset = + element frameset { + frameset.attlist, + (((frameset | frame)+ & noframes?) | genshi.model) + } + noframes = element noframes { noframes.attlist, (body | genshi.model) } + title = element title { title.attlist, (text | genshi.model)* } + script = element script { script.attlist, (text | genshi.model)* } + style = element style { style.attlist, (text | genshi.model)* } + dl = element dl { dl.attlist, ((dt | dd)+ | genshi.model) } + ol = element ol { ol.attlist, (li+ | genshi.model) } + ul = element ul { ul.attlist, (li+ | genshi.model) } + dir = element dir { dir.attlist, (li.noblock+ | genshi.model) } + menu = element menu { menu.attlist, (li.noblock+ | genshi.model) } + select = element select { select.attlist, ((option | optgroup)+ | genshi.model) } + option = + element option { + Common.attrib, + attribute selected { "selected" }?, + attribute value { text }?, + (text | genshi.model)* + } + textarea = element textarea { textarea.attlist, (text & genshi.model)* } + optgroup = element optgroup { optgroup.attlist, (option+ | genshi.model) } + table = + element table { + table.attlist, + (caption? | genshi.model), + (col* | colgroup* | genshi.model), + (((thead? | genshi.model), + (tfoot? | genshi.model), + (tbody+ | genshi.model)) | (tr+ | genshi.model)) + } + colgroup = element colgroup { colgroup.attlist, (col* | genshi.model) } + tr = element tr { tr.attlist, ((th | td)+ | genshi.model) } + tbody = element tbody { tbody.attlist, (tr+ | genshi.model) } + thead = element thead { thead.attlist, (tr+ | genshi.model) } + tfoot = element tfoot { tfoot.attlist, (tr+ | genshi.model) } +} + +Table.class = caption | colgroup | col | tbody | thead | tfoot | th | tr | td +Form.extra.class = option | optgroup | legend + +Block.class |= genshi.class +Inline.class |= genshi.class +head.content &= genshi.class + +Core.attrib &= genshi.attrib +html.attlist &= genshi.attrib +head.attlist &= genshi.attrib +title.attlist &= genshi.attrib +base.attlist &= genshi.attrib +meta.attlist &= genshi.attrib +script.attlist &= genshi.attrib +param.attlist &= genshi.attrib +Edit.attrib &= genshi.attrib + +genshi.allowed.children |= html | head | head.content | body | frameset | frame + | noframes | Inline.class | Block.class | Table.class | Form.extra.class diff --git a/emacs.d/nxhtml/etc/schema/schema-path-patch.el b/emacs.d/nxhtml/etc/schema/schema-path-patch.el new file mode 100644 index 0000000..a6d59fc --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/schema-path-patch.el @@ -0,0 +1,95 @@ +;;; schema-path-patch.el --- Patch schema paths +;; +;; Author: Lennart Borgman (lennart O borgman A gmail O com) +;; Created: 2008-08-08T20:21:31+0200 Fri +;; Version: 0.2 +;; Last-Updated: 2008-08-19T00:21:25+0200 Mon +;; URL: +;; Keywords: +;; Compatibility: +;; +;; Features that might be required by this library: +;; +;; Cannot open load file: schema-path-patch. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Commentary: +;; +;; Schemas here may include parts from nxml and need to know the path. +;; This file can be used to patch the paths. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; 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: + +(defvar rncpp-this-dir + (file-name-as-directory + (file-name-directory + (if load-file-name load-file-name buffer-file-name)))) + +(defun rncpp-get-nxml-schema-dir () + ;; First look for nxml-mode included with Emacs + (let ((schema-dir (file-name-as-directory + (expand-file-name "schema" data-directory)))) + (unless (file-directory-p schema-dir) + ;; This is an old nxml-mode, look for its schemas dir. + (let ((nxml-mode-dir (file-name-as-directory + (file-name-directory (locate-library "nxml-mode"))))) + (setq schema-dir (file-name-as-directory + (expand-file-name "schema" nxml-mode-dir))))) + (unless (file-directory-p schema-dir) + (error "Can't find schema-dir=%s" schema-dir)) + schema-dir)) + +;; Use xhtml-loader.rnc (an idea from Bryan Waite): +(defun rncpp-patch-xhtml-loader () + "Patch xhtml-loader.rnc so genshi and mjt rnc files works." + ;;(interactive) + (let* ((default-directory rncpp-this-dir) + (loader-path (expand-file-name "xhtml-loader.rnc")) + (loader-buf (find-buffer-visiting loader-path)) + (schema-dir (rncpp-get-nxml-schema-dir)) + (schema-relative-dir (file-relative-name schema-dir)) + (loader-string (concat "include \"" + schema-relative-dir + "xhtml.rnc\"\n"))) + (when loader-buf (kill-buffer loader-buf)) + (setq loader-buf (find-file-noselect loader-path)) + (with-current-buffer loader-buf + (unless (file-exists-p loader-path) + (insert loader-string)) + ;; Test if correct + (if (string= (buffer-substring-no-properties (point-min) (point-max)) + loader-string) + (message "xhtml-loader.rnc was ok") + (message "Patching xhtml-loader.rnc") + (delete-region (point-min) (point-max)) + (insert loader-string)) + (basic-save-buffer) + (kill-buffer (current-buffer))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; schema-path-patch.el ends here diff --git a/emacs.d/nxhtml/etc/schema/xhtml-loader.rnc b/emacs.d/nxhtml/etc/schema/xhtml-loader.rnc new file mode 100644 index 0000000..a40f3cf --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/xhtml-loader.rnc @@ -0,0 +1 @@ +include "../../../../../../usr/local/share/emacs/24.0.50/etc/schema/xhtml.rnc" diff --git a/emacs.d/nxhtml/etc/schema/xinclude.rnc b/emacs.d/nxhtml/etc/schema/xinclude.rnc new file mode 100644 index 0000000..cbda979 --- /dev/null +++ b/emacs.d/nxhtml/etc/schema/xinclude.rnc @@ -0,0 +1,35 @@ +default namespace = "http://www.w3.org/2001/XInclude" +namespace xi = "http://www.w3.org/2001/XInclude" + +xi.include.attlist = + attribute href { xsd:anyURI }?, + attribute parse { "xml" | "text" }?, + attribute xpointer { xsd:string }?, + attribute encoding { xsd:string }?, + attribute accept { xsd:string }?, + attribute accept-language { xsd:string }? + +xi.include.attlist.extra = + attribute * - xi.include.attlist { text }* + +xi.include = + element xi:include { + xi.include.attlist, + xi.include.attlist.extra, + (xi.fallback? | xi.include.extra)* + } + +xi.include.extra = notAllowed + +xi.fallback.attlist = + attribute * { text }* + +xi.fallback = + element xi:fallback { + xi.fallback.attlist, + (xi.include | xi.fallback.extra)* + } + +xi.fallback.extra = notAllowed + +xi.class = xi.include | xi.fallback \ No newline at end of file diff --git a/emacs.d/nxhtml/etc/templates/rollover-2v.css b/emacs.d/nxhtml/etc/templates/rollover-2v.css new file mode 100644 index 0000000..ed10a41 --- /dev/null +++ b/emacs.d/nxhtml/etc/templates/rollover-2v.css @@ -0,0 +1,25 @@ +ROLLOVER_SPEC a { + /* Image */ + display: block; + background: transparent url("IMG_URL") 0 0 no-repeat; + overflow: hidden; + width: IMG_WIDTHpx; + /* Text placement and size, etc */ + CENTER_OR_PAD; + padding-top: PADDING_TOPpx; + font-size: FONT_SIZEpx; + padding-bottom: PADDING_BOTTOMpx; + text-decoration: none; + white-space: nowrap; + border: none; + margin: 0; +} +ROLLOVER_SPEC a:hover { + background-position: 0 -IMG_HEIGHT_2px; +} +ROLLOVER_SPEC li { + display: inline; + padding: 0; + margin: 0; + HOR_OR_VER; +} diff --git a/emacs.d/nxhtml/etc/uts39/idnchars.txt b/emacs.d/nxhtml/etc/uts39/idnchars.txt new file mode 100644 index 0000000..369f8f8 --- /dev/null +++ b/emacs.d/nxhtml/etc/uts39/idnchars.txt @@ -0,0 +1,894 @@ +# Recommended Identifier Profiles for IDN +# File: idnchars.txt +# Version: 2.0 +# Generated: 2006-08-15, 04:35:10 GMT +# Checkin: $Revision: 1.11 $ +# +# For documentation and usage, see http://www.unicode.org/reports/tr39/ +# +# Allowed as output characters + +002D ; output # (-) HYPHEN-MINUS +0030..0039 ; output # [10] (0..9) DIGIT ZERO..DIGIT NINE +0041..005A ; output # [26] (A..Z) LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z +0061..007A ; output # [26] (a..z) LATIN SMALL LETTER A..LATIN SMALL LETTER Z +00B7 ; output # (·) MIDDLE DOT +00E0..00F6 ; output # [23] (à..ö) LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER O WITH DIAERESIS +00F8..00FF ; output # [8] (ø..ÿ) LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS +0101 ; output # (Ä) LATIN SMALL LETTER A WITH MACRON +0103 ; output # (ă) LATIN SMALL LETTER A WITH BREVE +0105 ; output # (Ä…) LATIN SMALL LETTER A WITH OGONEK +0107 ; output # (ć) LATIN SMALL LETTER C WITH ACUTE +0109 ; output # (ĉ) LATIN SMALL LETTER C WITH CIRCUMFLEX +010B ; output # (Ä‹) LATIN SMALL LETTER C WITH DOT ABOVE +010D ; output # (Ä) LATIN SMALL LETTER C WITH CARON +010F ; output # (Ä) LATIN SMALL LETTER D WITH CARON +0111 ; output # (Ä‘) LATIN SMALL LETTER D WITH STROKE +0113 ; output # (Ä“) LATIN SMALL LETTER E WITH MACRON +0115 ; output # (Ä•) LATIN SMALL LETTER E WITH BREVE +0117 ; output # (Ä—) LATIN SMALL LETTER E WITH DOT ABOVE +0119 ; output # (Ä™) LATIN SMALL LETTER E WITH OGONEK +011B ; output # (Ä›) LATIN SMALL LETTER E WITH CARON +011D ; output # (Ä) LATIN SMALL LETTER G WITH CIRCUMFLEX +011F ; output # (ÄŸ) LATIN SMALL LETTER G WITH BREVE +0121 ; output # (Ä¡) LATIN SMALL LETTER G WITH DOT ABOVE +0123 ; output # (Ä£) LATIN SMALL LETTER G WITH CEDILLA +0125 ; output # (Ä¥) LATIN SMALL LETTER H WITH CIRCUMFLEX +0127 ; output # (ħ) LATIN SMALL LETTER H WITH STROKE +0129 ; output # (Ä©) LATIN SMALL LETTER I WITH TILDE +012B ; output # (Ä«) LATIN SMALL LETTER I WITH MACRON +012D ; output # (Ä­) LATIN SMALL LETTER I WITH BREVE +012F ; output # (į) LATIN SMALL LETTER I WITH OGONEK +0131 ; output # (ı) LATIN SMALL LETTER DOTLESS I +0135 ; output # (ĵ) LATIN SMALL LETTER J WITH CIRCUMFLEX +0137..0138 ; output # [2] (Ä·..ĸ) LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA +013A ; output # (ĺ) LATIN SMALL LETTER L WITH ACUTE +013C ; output # (ļ) LATIN SMALL LETTER L WITH CEDILLA +013E ; output # (ľ) LATIN SMALL LETTER L WITH CARON +0142 ; output # (Å‚) LATIN SMALL LETTER L WITH STROKE +0144 ; output # (Å„) LATIN SMALL LETTER N WITH ACUTE +0146 ; output # (ņ) LATIN SMALL LETTER N WITH CEDILLA +0148 ; output # (ň) LATIN SMALL LETTER N WITH CARON +014B ; output # (Å‹) LATIN SMALL LETTER ENG +014D ; output # (Å) LATIN SMALL LETTER O WITH MACRON +014F ; output # (Å) LATIN SMALL LETTER O WITH BREVE +0151 ; output # (Å‘) LATIN SMALL LETTER O WITH DOUBLE ACUTE +0153 ; output # (Å“) LATIN SMALL LIGATURE OE +0155 ; output # (Å•) LATIN SMALL LETTER R WITH ACUTE +0157 ; output # (Å—) LATIN SMALL LETTER R WITH CEDILLA +0159 ; output # (Å™) LATIN SMALL LETTER R WITH CARON +015B ; output # (Å›) LATIN SMALL LETTER S WITH ACUTE +015D ; output # (Å) LATIN SMALL LETTER S WITH CIRCUMFLEX +015F ; output # (ÅŸ) LATIN SMALL LETTER S WITH CEDILLA +0161 ; output # (Å¡) LATIN SMALL LETTER S WITH CARON +0163 ; output # (Å£) LATIN SMALL LETTER T WITH CEDILLA +0165 ; output # (Å¥) LATIN SMALL LETTER T WITH CARON +0167 ; output # (ŧ) LATIN SMALL LETTER T WITH STROKE +0169 ; output # (Å©) LATIN SMALL LETTER U WITH TILDE +016B ; output # (Å«) LATIN SMALL LETTER U WITH MACRON +016D ; output # (Å­) LATIN SMALL LETTER U WITH BREVE +016F ; output # (ů) LATIN SMALL LETTER U WITH RING ABOVE +0171 ; output # (ű) LATIN SMALL LETTER U WITH DOUBLE ACUTE +0173 ; output # (ų) LATIN SMALL LETTER U WITH OGONEK +0175 ; output # (ŵ) LATIN SMALL LETTER W WITH CIRCUMFLEX +0177 ; output # (Å·) LATIN SMALL LETTER Y WITH CIRCUMFLEX +017A ; output # (ź) LATIN SMALL LETTER Z WITH ACUTE +017C ; output # (ż) LATIN SMALL LETTER Z WITH DOT ABOVE +017E ; output # (ž) LATIN SMALL LETTER Z WITH CARON +0183 ; output # (ƃ) LATIN SMALL LETTER B WITH TOPBAR +0185 ; output # (Æ…) LATIN SMALL LETTER TONE SIX +0188 ; output # (ƈ) LATIN SMALL LETTER C WITH HOOK +018C ; output # (ÆŒ) LATIN SMALL LETTER D WITH TOPBAR +0192 ; output # (Æ’) LATIN SMALL LETTER F WITH HOOK +0195 ; output # (Æ•) LATIN SMALL LETTER HV +0199..019B ; output # [3] (Æ™..Æ›) LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE +019E ; output # (Æž) LATIN SMALL LETTER N WITH LONG RIGHT LEG +01A1 ; output # (Æ¡) LATIN SMALL LETTER O WITH HORN +01A3 ; output # (Æ£) LATIN SMALL LETTER OI +01A5 ; output # (Æ¥) LATIN SMALL LETTER P WITH HOOK +01A8 ; output # (ƨ) LATIN SMALL LETTER TONE TWO +01AD ; output # (Æ­) LATIN SMALL LETTER T WITH HOOK +01B0 ; output # (Æ°) LATIN SMALL LETTER U WITH HORN +01B4 ; output # (Æ´) LATIN SMALL LETTER Y WITH HOOK +01B6 ; output # (ƶ) LATIN SMALL LETTER Z WITH STROKE +01BD ; output # (ƽ) LATIN SMALL LETTER TONE FIVE +01CE ; output # (ÇŽ) LATIN SMALL LETTER A WITH CARON +01D0 ; output # (Ç) LATIN SMALL LETTER I WITH CARON +01D2 ; output # (Ç’) LATIN SMALL LETTER O WITH CARON +01D4 ; output # (Ç”) LATIN SMALL LETTER U WITH CARON +01D6 ; output # (Ç–) LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D8 ; output # (ǘ) LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01DA ; output # (Çš) LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01DC..01DD ; output # [2] (Çœ..Ç) LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E +01DF ; output # (ÇŸ) LATIN SMALL LETTER A WITH DIAERESIS AND MACRON +01E1 ; output # (Ç¡) LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON +01E3 ; output # (Ç£) LATIN SMALL LETTER AE WITH MACRON +01E5 ; output # (Ç¥) LATIN SMALL LETTER G WITH STROKE +01E7 ; output # (ǧ) LATIN SMALL LETTER G WITH CARON +01E9 ; output # (Ç©) LATIN SMALL LETTER K WITH CARON +01EB ; output # (Ç«) LATIN SMALL LETTER O WITH OGONEK +01ED ; output # (Ç­) LATIN SMALL LETTER O WITH OGONEK AND MACRON +01EF..01F0 ; output # [2] (ǯ..Ç°) LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON +01F5 ; output # (ǵ) LATIN SMALL LETTER G WITH ACUTE +01F9 ; output # (ǹ) LATIN SMALL LETTER N WITH GRAVE +01FB ; output # (Ç») LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE +01FD ; output # (ǽ) LATIN SMALL LETTER AE WITH ACUTE +01FF ; output # (Ç¿) LATIN SMALL LETTER O WITH STROKE AND ACUTE +0201 ; output # (È) LATIN SMALL LETTER A WITH DOUBLE GRAVE +0203 ; output # (ȃ) LATIN SMALL LETTER A WITH INVERTED BREVE +0205 ; output # (È…) LATIN SMALL LETTER E WITH DOUBLE GRAVE +0207 ; output # (ȇ) LATIN SMALL LETTER E WITH INVERTED BREVE +0209 ; output # (ȉ) LATIN SMALL LETTER I WITH DOUBLE GRAVE +020B ; output # (È‹) LATIN SMALL LETTER I WITH INVERTED BREVE +020D ; output # (È) LATIN SMALL LETTER O WITH DOUBLE GRAVE +020F ; output # (È) LATIN SMALL LETTER O WITH INVERTED BREVE +0211 ; output # (È‘) LATIN SMALL LETTER R WITH DOUBLE GRAVE +0213 ; output # (È“) LATIN SMALL LETTER R WITH INVERTED BREVE +0215 ; output # (È•) LATIN SMALL LETTER U WITH DOUBLE GRAVE +0217 ; output # (È—) LATIN SMALL LETTER U WITH INVERTED BREVE +0219 ; output # (È™) LATIN SMALL LETTER S WITH COMMA BELOW +021B ; output # (È›) LATIN SMALL LETTER T WITH COMMA BELOW +021F ; output # (ÈŸ) LATIN SMALL LETTER H WITH CARON +0223 ; output # (È£) LATIN SMALL LETTER OU +0225 ; output # (È¥) LATIN SMALL LETTER Z WITH HOOK +0227 ; output # (ȧ) LATIN SMALL LETTER A WITH DOT ABOVE +0229 ; output # (È©) LATIN SMALL LETTER E WITH CEDILLA +022B ; output # (È«) LATIN SMALL LETTER O WITH DIAERESIS AND MACRON +022D ; output # (È­) LATIN SMALL LETTER O WITH TILDE AND MACRON +022F ; output # (ȯ) LATIN SMALL LETTER O WITH DOT ABOVE +0231 ; output # (ȱ) LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON +0233 ; output # (ȳ) LATIN SMALL LETTER Y WITH MACRON +0253..0254 ; output # [2] (É“..É”) LATIN SMALL LETTER B WITH HOOK..LATIN SMALL LETTER OPEN O +0256..0257 ; output # [2] (É–..É—) LATIN SMALL LETTER D WITH TAIL..LATIN SMALL LETTER D WITH HOOK +0259 ; output # (É™) LATIN SMALL LETTER SCHWA +025B ; output # (É›) LATIN SMALL LETTER OPEN E +0260 ; output # (É ) LATIN SMALL LETTER G WITH HOOK +0263 ; output # (É£) LATIN SMALL LETTER GAMMA +0268..0269 ; output # [2] (ɨ..É©) LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER IOTA +026F ; output # (ɯ) LATIN SMALL LETTER TURNED M +0272 ; output # (ɲ) LATIN SMALL LETTER N WITH LEFT HOOK +0275 ; output # (ɵ) LATIN SMALL LETTER BARRED O +0280 ; output # (Ê€) LATIN LETTER SMALL CAPITAL R +0283 ; output # (ʃ) LATIN SMALL LETTER ESH +0288 ; output # (ʈ) LATIN SMALL LETTER T WITH RETROFLEX HOOK +028A..028B ; output # [2] (ÊŠ..Ê‹) LATIN SMALL LETTER UPSILON..LATIN SMALL LETTER V WITH HOOK +0292 ; output # (Ê’) LATIN SMALL LETTER EZH +0294 ; output # (Ê”) LATIN LETTER GLOTTAL STOP +0300..033F ; output # [64] (Ì€..Ì¿) COMBINING GRAVE ACCENT..COMBINING DOUBLE OVERLINE +0342 ; output # (Í‚) COMBINING GREEK PERISPOMENI +0346..034E ; output # [9] (͆..ÍŽ) COMBINING BRIDGE ABOVE..COMBINING UPWARDS ARROW BELOW +0360..036F ; output # [16] (Í ..ͯ) COMBINING DOUBLE TILDE..COMBINING LATIN SMALL LETTER X +0390 ; output # (Î) GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +03AC..03C1 ; output # [22] (ά..Ï) GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER RHO +03C3..03CE ; output # [12] (σ..ÏŽ) GREEK SMALL LETTER SIGMA..GREEK SMALL LETTER OMEGA WITH TONOS +0430..045F ; output # [48] (а..ÑŸ) CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE +0461 ; output # (Ñ¡) CYRILLIC SMALL LETTER OMEGA +0463 ; output # (Ñ£) CYRILLIC SMALL LETTER YAT +0465 ; output # (Ñ¥) CYRILLIC SMALL LETTER IOTIFIED E +0467 ; output # (ѧ) CYRILLIC SMALL LETTER LITTLE YUS +0469 ; output # (Ñ©) CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS +046B ; output # (Ñ«) CYRILLIC SMALL LETTER BIG YUS +046D ; output # (Ñ­) CYRILLIC SMALL LETTER IOTIFIED BIG YUS +046F ; output # (ѯ) CYRILLIC SMALL LETTER KSI +0471 ; output # (ѱ) CYRILLIC SMALL LETTER PSI +0473 ; output # (ѳ) CYRILLIC SMALL LETTER FITA +0475 ; output # (ѵ) CYRILLIC SMALL LETTER IZHITSA +0477 ; output # (Ñ·) CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT +0479 ; output # (ѹ) CYRILLIC SMALL LETTER UK +047B ; output # (Ñ») CYRILLIC SMALL LETTER ROUND OMEGA +047D ; output # (ѽ) CYRILLIC SMALL LETTER OMEGA WITH TITLO +047F ; output # (Ñ¿) CYRILLIC SMALL LETTER OT +0481 ; output # (Ò) CYRILLIC SMALL LETTER KOPPA +048B ; output # (Ò‹) CYRILLIC SMALL LETTER SHORT I WITH TAIL +048D ; output # (Ò) CYRILLIC SMALL LETTER SEMISOFT SIGN +048F ; output # (Ò) CYRILLIC SMALL LETTER ER WITH TICK +0491 ; output # (Ò‘) CYRILLIC SMALL LETTER GHE WITH UPTURN +0493 ; output # (Ò“) CYRILLIC SMALL LETTER GHE WITH STROKE +0495 ; output # (Ò•) CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK +0497 ; output # (Ò—) CYRILLIC SMALL LETTER ZHE WITH DESCENDER +0499 ; output # (Ò™) CYRILLIC SMALL LETTER ZE WITH DESCENDER +049B ; output # (Ò›) CYRILLIC SMALL LETTER KA WITH DESCENDER +049D ; output # (Ò) CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE +049F ; output # (ÒŸ) CYRILLIC SMALL LETTER KA WITH STROKE +04A1 ; output # (Ò¡) CYRILLIC SMALL LETTER BASHKIR KA +04A3 ; output # (Ò£) CYRILLIC SMALL LETTER EN WITH DESCENDER +04A5 ; output # (Ò¥) CYRILLIC SMALL LIGATURE EN GHE +04A7 ; output # (Ò§) CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK +04A9 ; output # (Ò©) CYRILLIC SMALL LETTER ABKHASIAN HA +04AB ; output # (Ò«) CYRILLIC SMALL LETTER ES WITH DESCENDER +04AD ; output # (Ò­) CYRILLIC SMALL LETTER TE WITH DESCENDER +04AF ; output # (Ò¯) CYRILLIC SMALL LETTER STRAIGHT U +04B1 ; output # (Ò±) CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE +04B3 ; output # (Ò³) CYRILLIC SMALL LETTER HA WITH DESCENDER +04B5 ; output # (Òµ) CYRILLIC SMALL LIGATURE TE TSE +04B7 ; output # (Ò·) CYRILLIC SMALL LETTER CHE WITH DESCENDER +04B9 ; output # (Ò¹) CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE +04BB ; output # (Ò») CYRILLIC SMALL LETTER SHHA +04BD ; output # (Ò½) CYRILLIC SMALL LETTER ABKHASIAN CHE +04BF..04C0 ; output # [2] (Ò¿..Ó€) CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER..CYRILLIC LETTER PALOCHKA +04C2 ; output # (Ó‚) CYRILLIC SMALL LETTER ZHE WITH BREVE +04C4 ; output # (Ó„) CYRILLIC SMALL LETTER KA WITH HOOK +04C6 ; output # (Ó†) CYRILLIC SMALL LETTER EL WITH TAIL +04C8 ; output # (Óˆ) CYRILLIC SMALL LETTER EN WITH HOOK +04CA ; output # (ÓŠ) CYRILLIC SMALL LETTER EN WITH TAIL +04CC ; output # (ÓŒ) CYRILLIC SMALL LETTER KHAKASSIAN CHE +04CE ; output # (ÓŽ) CYRILLIC SMALL LETTER EM WITH TAIL +04D1 ; output # (Ó‘) CYRILLIC SMALL LETTER A WITH BREVE +04D3 ; output # (Ó“) CYRILLIC SMALL LETTER A WITH DIAERESIS +04D5 ; output # (Ó•) CYRILLIC SMALL LIGATURE A IE +04D7 ; output # (Ó—) CYRILLIC SMALL LETTER IE WITH BREVE +04D9 ; output # (Ó™) CYRILLIC SMALL LETTER SCHWA +04DB ; output # (Ó›) CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS +04DD ; output # (Ó) CYRILLIC SMALL LETTER ZHE WITH DIAERESIS +04DF ; output # (ÓŸ) CYRILLIC SMALL LETTER ZE WITH DIAERESIS +04E1 ; output # (Ó¡) CYRILLIC SMALL LETTER ABKHASIAN DZE +04E3 ; output # (Ó£) CYRILLIC SMALL LETTER I WITH MACRON +04E5 ; output # (Ó¥) CYRILLIC SMALL LETTER I WITH DIAERESIS +04E7 ; output # (Ó§) CYRILLIC SMALL LETTER O WITH DIAERESIS +04E9 ; output # (Ó©) CYRILLIC SMALL LETTER BARRED O +04EB ; output # (Ó«) CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS +04ED ; output # (Ó­) CYRILLIC SMALL LETTER E WITH DIAERESIS +04EF ; output # (Ó¯) CYRILLIC SMALL LETTER U WITH MACRON +04F1 ; output # (Ó±) CYRILLIC SMALL LETTER U WITH DIAERESIS +04F3 ; output # (Ó³) CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE +04F5 ; output # (Óµ) CYRILLIC SMALL LETTER CHE WITH DIAERESIS +04F9 ; output # (Ó¹) CYRILLIC SMALL LETTER YERU WITH DIAERESIS +0501 ; output # (Ô) CYRILLIC SMALL LETTER KOMI DE +0503 ; output # (Ôƒ) CYRILLIC SMALL LETTER KOMI DJE +0505 ; output # (Ô…) CYRILLIC SMALL LETTER KOMI ZJE +0507 ; output # (Ô‡) CYRILLIC SMALL LETTER KOMI DZJE +0509 ; output # (Ô‰) CYRILLIC SMALL LETTER KOMI LJE +050B ; output # (Ô‹) CYRILLIC SMALL LETTER KOMI NJE +050D ; output # (Ô) CYRILLIC SMALL LETTER KOMI SJE +050F ; output # (Ô) CYRILLIC SMALL LETTER KOMI TJE +0561..0586 ; output # [38] (Õ¡..Ö†) ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LETTER FEH +0591..05A1 ; output # [17] (Ö‘..Ö¡) HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER +05A3..05B9 ; output # [23] (Ö£..Ö¹) HEBREW ACCENT MUNAH..HEBREW POINT HOLAM +05BB..05BD ; output # [3] (Ö»..Ö½) HEBREW POINT QUBUTS..HEBREW POINT METEG +05BF ; output # (Ö¿) HEBREW POINT RAFE +05C1..05C2 ; output # [2] (×..ׂ) HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT +05C4 ; output # (ׄ) HEBREW MARK UPPER DOT +05D0..05EA ; output # [27] (×..ת) HEBREW LETTER ALEF..HEBREW LETTER TAV +05F0..05F2 ; output # [3] (×°..ײ) HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD +0621..063A ; output # [26] (Ø¡..غ) ARABIC LETTER HAMZA..ARABIC LETTER GHAIN +0641..0655 ; output # [21] (Ù..Ù•) ARABIC LETTER FEH..ARABIC HAMZA BELOW +0660..0669 ; output # [10] (Ù ..Ù©) ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE +0670..0674 ; output # [5] (Ù°..Ù´) ARABIC LETTER SUPERSCRIPT ALEF..ARABIC LETTER HIGH HAMZA +0679..068D ; output # [21] (Ù¹..Ú) ARABIC LETTER TTEH..ARABIC LETTER DDAHAL +068F..06D3 ; output # [69] (Ú..Û“) ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +06D5..06DC ; output # [8] (Û•..Ûœ) ARABIC LETTER AE..ARABIC SMALL HIGH SEEN +06DF..06E8 ; output # [10] (ÛŸ..Û¨) ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH NOON +06EA..06ED ; output # [4] (Ûª..Û­) ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM +06F0..06FC ; output # [13] (Û°..Û¼) EXTENDED ARABIC-INDIC DIGIT ZERO..ARABIC LETTER GHAIN WITH DOT BELOW +0710..072C ; output # [29] (Ü..ܬ) SYRIAC LETTER ALAPH..SYRIAC LETTER TAW +0730..073F ; output # [16] (Ü°..Ü¿) SYRIAC PTHAHA ABOVE..SYRIAC RWAHA +0780..07B1 ; output # [50] (Þ€..Þ±) THAANA LETTER HAA..THAANA LETTER NAA +0901..0903 ; output # [3] (à¤..ः) DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN VISARGA +0905..0939 ; output # [53] (अ..ह) DEVANAGARI LETTER A..DEVANAGARI LETTER HA +093C..094D ; output # [18] (़..à¥) DEVANAGARI SIGN NUKTA..DEVANAGARI SIGN VIRAMA +0950..0954 ; output # [5] (à¥..॔) DEVANAGARI OM..DEVANAGARI ACUTE ACCENT +0960..0963 ; output # [4] (ॠ..ॣ) DEVANAGARI LETTER VOCALIC RR..DEVANAGARI VOWEL SIGN VOCALIC LL +0966..096F ; output # [10] (०..९) DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE +0981..0983 ; output # [3] (à¦..ঃ) BENGALI SIGN CANDRABINDU..BENGALI SIGN VISARGA +0985..098C ; output # [8] (অ..ঌ) BENGALI LETTER A..BENGALI LETTER VOCALIC L +098F..0990 ; output # [2] (à¦..à¦) BENGALI LETTER E..BENGALI LETTER AI +0993..09A8 ; output # [22] (ও..ন) BENGALI LETTER O..BENGALI LETTER NA +09AA..09B0 ; output # [7] (প..র) BENGALI LETTER PA..BENGALI LETTER RA +09B2 ; output # (ল) BENGALI LETTER LA +09B6..09B9 ; output # [4] (শ..হ) BENGALI LETTER SHA..BENGALI LETTER HA +09BC ; output # (়) BENGALI SIGN NUKTA +09BE..09C4 ; output # [7] (া..ৄ) BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN VOCALIC RR +09C7..09C8 ; output # [2] (ে..ৈ) BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI +09CB..09CD ; output # [3] (ো..à§) BENGALI VOWEL SIGN O..BENGALI SIGN VIRAMA +09D7 ; output # (ৗ) BENGALI AU LENGTH MARK +09E0..09E3 ; output # [4] (ৠ..ৣ) BENGALI LETTER VOCALIC RR..BENGALI VOWEL SIGN VOCALIC LL +09E6..09F1 ; output # [12] (০..ৱ) BENGALI DIGIT ZERO..BENGALI LETTER RA WITH LOWER DIAGONAL +0A02 ; output # (ਂ) GURMUKHI SIGN BINDI +0A05..0A0A ; output # [6] (ਅ..ਊ) GURMUKHI LETTER A..GURMUKHI LETTER UU +0A0F..0A10 ; output # [2] (à¨..à¨) GURMUKHI LETTER EE..GURMUKHI LETTER AI +0A13..0A28 ; output # [22] (ਓ..ਨ) GURMUKHI LETTER OO..GURMUKHI LETTER NA +0A2A..0A30 ; output # [7] (ਪ..ਰ) GURMUKHI LETTER PA..GURMUKHI LETTER RA +0A32 ; output # (ਲ) GURMUKHI LETTER LA +0A35 ; output # (ਵ) GURMUKHI LETTER VA +0A38..0A39 ; output # [2] (ਸ..ਹ) GURMUKHI LETTER SA..GURMUKHI LETTER HA +0A3C ; output # (਼) GURMUKHI SIGN NUKTA +0A3E..0A42 ; output # [5] (ਾ..à©‚) GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN UU +0A47..0A48 ; output # [2] (ੇ..ੈ) GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI +0A4B..0A4D ; output # [3] (à©‹..à©) GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA +0A5C ; output # (à©œ) GURMUKHI LETTER RRA +0A66..0A74 ; output # [15] (੦..à©´) GURMUKHI DIGIT ZERO..GURMUKHI EK ONKAR +0A81..0A83 ; output # [3] (àª..ઃ) GUJARATI SIGN CANDRABINDU..GUJARATI SIGN VISARGA +0A85..0A8B ; output # [7] (અ..ઋ) GUJARATI LETTER A..GUJARATI LETTER VOCALIC R +0A8D ; output # (àª) GUJARATI VOWEL CANDRA E +0A8F..0A91 ; output # [3] (àª..ઑ) GUJARATI LETTER E..GUJARATI VOWEL CANDRA O +0A93..0AA8 ; output # [22] (ઓ..ન) GUJARATI LETTER O..GUJARATI LETTER NA +0AAA..0AB0 ; output # [7] (પ..ર) GUJARATI LETTER PA..GUJARATI LETTER RA +0AB2..0AB3 ; output # [2] (લ..ળ) GUJARATI LETTER LA..GUJARATI LETTER LLA +0AB5..0AB9 ; output # [5] (વ..હ) GUJARATI LETTER VA..GUJARATI LETTER HA +0ABC..0AC5 ; output # [10] (઼..à«…) GUJARATI SIGN NUKTA..GUJARATI VOWEL SIGN CANDRA E +0AC7..0AC9 ; output # [3] (ે..ૉ) GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN CANDRA O +0ACB..0ACD ; output # [3] (à«‹..à«) GUJARATI VOWEL SIGN O..GUJARATI SIGN VIRAMA +0AD0 ; output # (à«) GUJARATI OM +0AE0 ; output # (à« ) GUJARATI LETTER VOCALIC RR +0AE6..0AEF ; output # [10] (૦..૯) GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE +0B01..0B03 ; output # [3] (à¬..ଃ) ORIYA SIGN CANDRABINDU..ORIYA SIGN VISARGA +0B05..0B0C ; output # [8] (ଅ..ଌ) ORIYA LETTER A..ORIYA LETTER VOCALIC L +0B0F..0B10 ; output # [2] (à¬..à¬) ORIYA LETTER E..ORIYA LETTER AI +0B13..0B28 ; output # [22] (ଓ..ନ) ORIYA LETTER O..ORIYA LETTER NA +0B2A..0B30 ; output # [7] (ପ..ର) ORIYA LETTER PA..ORIYA LETTER RA +0B32..0B33 ; output # [2] (ଲ..ଳ) ORIYA LETTER LA..ORIYA LETTER LLA +0B36..0B39 ; output # [4] (ଶ..ହ) ORIYA LETTER SHA..ORIYA LETTER HA +0B3C..0B43 ; output # [8] (଼..à­ƒ) ORIYA SIGN NUKTA..ORIYA VOWEL SIGN VOCALIC R +0B47..0B48 ; output # [2] (à­‡..à­ˆ) ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI +0B4B..0B4D ; output # [3] (à­‹..à­) ORIYA VOWEL SIGN O..ORIYA SIGN VIRAMA +0B56..0B57 ; output # [2] (à­–..à­—) ORIYA AI LENGTH MARK..ORIYA AU LENGTH MARK +0B5F..0B61 ; output # [3] (à­Ÿ..à­¡) ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL +0B66..0B6F ; output # [10] (à­¦..à­¯) ORIYA DIGIT ZERO..ORIYA DIGIT NINE +0B82..0B83 ; output # [2] (ஂ..ஃ) TAMIL SIGN ANUSVARA..TAMIL SIGN VISARGA +0B85..0B8A ; output # [6] (à®…..ஊ) TAMIL LETTER A..TAMIL LETTER UU +0B8E..0B90 ; output # [3] (எ..à®) TAMIL LETTER E..TAMIL LETTER AI +0B92..0B95 ; output # [4] (à®’..க) TAMIL LETTER O..TAMIL LETTER KA +0B99..0B9A ; output # [2] (à®™..ச) TAMIL LETTER NGA..TAMIL LETTER CA +0B9C ; output # (ஜ) TAMIL LETTER JA +0B9E..0B9F ; output # [2] (ஞ..ட) TAMIL LETTER NYA..TAMIL LETTER TTA +0BA3..0BA4 ; output # [2] (ண..த) TAMIL LETTER NNA..TAMIL LETTER TA +0BA8..0BAA ; output # [3] (ந..ப) TAMIL LETTER NA..TAMIL LETTER PA +0BAE..0BB5 ; output # [8] (à®®..வ) TAMIL LETTER MA..TAMIL LETTER VA +0BB7..0BB9 ; output # [3] (à®·..ஹ) TAMIL LETTER SSA..TAMIL LETTER HA +0BBE..0BC2 ; output # [5] (ா..ூ) TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN UU +0BC6..0BC8 ; output # [3] (ெ..ை) TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI +0BCA..0BCD ; output # [4] (ொ..à¯) TAMIL VOWEL SIGN O..TAMIL SIGN VIRAMA +0BD7 ; output # (ௗ) TAMIL AU LENGTH MARK +0BE7..0BEF ; output # [9] (௧..௯) TAMIL DIGIT ONE..TAMIL DIGIT NINE +0C01..0C03 ; output # [3] (à°..à°ƒ) TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA +0C05..0C0C ; output # [8] (à°…..à°Œ) TELUGU LETTER A..TELUGU LETTER VOCALIC L +0C0E..0C10 ; output # [3] (à°Ž..à°) TELUGU LETTER E..TELUGU LETTER AI +0C12..0C28 ; output # [23] (à°’..à°¨) TELUGU LETTER O..TELUGU LETTER NA +0C2A..0C33 ; output # [10] (à°ª..à°³) TELUGU LETTER PA..TELUGU LETTER LLA +0C35..0C39 ; output # [5] (à°µ..à°¹) TELUGU LETTER VA..TELUGU LETTER HA +0C3E..0C44 ; output # [7] (à°¾..ౄ) TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN VOCALIC RR +0C46..0C48 ; output # [3] (ె..ై) TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI +0C4A..0C4D ; output # [4] (ొ..à±) TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA +0C55..0C56 ; output # [2] (ౕ..à±–) TELUGU LENGTH MARK..TELUGU AI LENGTH MARK +0C60..0C61 ; output # [2] (à± ..ౡ) TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL +0C66..0C6F ; output # [10] (౦..౯) TELUGU DIGIT ZERO..TELUGU DIGIT NINE +0C82..0C83 ; output # [2] (ಂ..ಃ) KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA +0C85..0C8C ; output # [8] (ಅ..ಌ) KANNADA LETTER A..KANNADA LETTER VOCALIC L +0C8E..0C90 ; output # [3] (ಎ..à²) KANNADA LETTER E..KANNADA LETTER AI +0C92..0CA8 ; output # [23] (ಒ..ನ) KANNADA LETTER O..KANNADA LETTER NA +0CAA..0CB3 ; output # [10] (ಪ..ಳ) KANNADA LETTER PA..KANNADA LETTER LLA +0CB5..0CB9 ; output # [5] (ವ..ಹ) KANNADA LETTER VA..KANNADA LETTER HA +0CBE..0CC4 ; output # [7] (ಾ..ೄ) KANNADA VOWEL SIGN AA..KANNADA VOWEL SIGN VOCALIC RR +0CC6..0CC8 ; output # [3] (ೆ..ೈ) KANNADA VOWEL SIGN E..KANNADA VOWEL SIGN AI +0CCA..0CCD ; output # [4] (ೊ..à³) KANNADA VOWEL SIGN O..KANNADA SIGN VIRAMA +0CD5..0CD6 ; output # [2] (ೕ..à³–) KANNADA LENGTH MARK..KANNADA AI LENGTH MARK +0CE0..0CE1 ; output # [2] (à³ ..ೡ) KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL +0CE6..0CEF ; output # [10] (೦..೯) KANNADA DIGIT ZERO..KANNADA DIGIT NINE +0D02..0D03 ; output # [2] (à´‚..à´ƒ) MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA +0D05..0D0C ; output # [8] (à´…..à´Œ) MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L +0D0E..0D10 ; output # [3] (à´Ž..à´) MALAYALAM LETTER E..MALAYALAM LETTER AI +0D12..0D28 ; output # [23] (à´’..à´¨) MALAYALAM LETTER O..MALAYALAM LETTER NA +0D2A..0D39 ; output # [16] (à´ª..à´¹) MALAYALAM LETTER PA..MALAYALAM LETTER HA +0D3E..0D43 ; output # [6] (à´¾..ൃ) MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN VOCALIC R +0D46..0D48 ; output # [3] (െ..ൈ) MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI +0D4A..0D4D ; output # [4] (ൊ..àµ) MALAYALAM VOWEL SIGN O..MALAYALAM SIGN VIRAMA +0D57 ; output # (ൗ) MALAYALAM AU LENGTH MARK +0D60..0D61 ; output # [2] (ൠ..ൡ) MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL +0D66..0D6F ; output # [10] (൦..൯) MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE +0D82..0D83 ; output # [2] (ං..ඃ) SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA +0D85..0D96 ; output # [18] (අ..ඖ) SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA +0D9A..0DB1 ; output # [24] (ක..න) SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA +0DB3..0DBB ; output # [9] (ඳ..ර) SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA +0DBD ; output # (ල) SINHALA LETTER DANTAJA LAYANNA +0DC0..0DC6 ; output # [7] (à·€..à·†) SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA +0DCA ; output # (à·Š) SINHALA SIGN AL-LAKUNA +0DCF..0DD4 ; output # [6] (à·..à·”) SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA +0DD6 ; output # (à·–) SINHALA VOWEL SIGN DIGA PAA-PILLA +0DD8..0DDF ; output # [8] (à·˜..à·Ÿ) SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA +0DF2..0DF3 ; output # [2] (à·²..à·³) SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA +0E01..0E32 ; output # [50] (à¸..า) THAI CHARACTER KO KAI..THAI CHARACTER SARA AA +0E34..0E3A ; output # [7] (ิ..ฺ) THAI CHARACTER SARA I..THAI CHARACTER PHINTHU +0E40..0E4E ; output # [15] (เ..๎) THAI CHARACTER SARA E..THAI CHARACTER YAMAKKAN +0E50..0E59 ; output # [10] (à¹..๙) THAI DIGIT ZERO..THAI DIGIT NINE +0E81..0E82 ; output # [2] (àº..ຂ) LAO LETTER KO..LAO LETTER KHO SUNG +0E84 ; output # (ຄ) LAO LETTER KHO TAM +0E87..0E88 ; output # [2] (ງ..ຈ) LAO LETTER NGO..LAO LETTER CO +0E8A ; output # (ຊ) LAO LETTER SO TAM +0E8D ; output # (àº) LAO LETTER NYO +0E94..0E97 ; output # [4] (ດ..ທ) LAO LETTER DO..LAO LETTER THO TAM +0E99..0E9F ; output # [7] (ນ..ຟ) LAO LETTER NO..LAO LETTER FO SUNG +0EA1..0EA3 ; output # [3] (ມ..ຣ) LAO LETTER MO..LAO LETTER LO LING +0EA5 ; output # (ລ) LAO LETTER LO LOOT +0EA7 ; output # (ວ) LAO LETTER WO +0EAA..0EAB ; output # [2] (ສ..ຫ) LAO LETTER SO SUNG..LAO LETTER HO SUNG +0EAD..0EB2 ; output # [6] (ອ..າ) LAO LETTER O..LAO VOWEL SIGN AA +0EB4..0EB9 ; output # [6] (ິ..ູ) LAO VOWEL SIGN I..LAO VOWEL SIGN UU +0EBB..0EBD ; output # [3] (ົ..ຽ) LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN NYO +0EC0..0EC4 ; output # [5] (ເ..ໄ) LAO VOWEL SIGN E..LAO VOWEL SIGN AI +0EC6 ; output # (ໆ) LAO KO LA +0EC8..0ECD ; output # [6] (່..à») LAO TONE MAI EK..LAO NIGGAHITA +0ED0..0ED9 ; output # [10] (à»..à»™) LAO DIGIT ZERO..LAO DIGIT NINE +0F00 ; output # (ༀ) TIBETAN SYLLABLE OM +0F18..0F19 ; output # [2] (༘..༙) TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS +0F20..0F29 ; output # [10] (༠..༩) TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE +0F35 ; output # (༵) TIBETAN MARK NGAS BZUNG NYI ZLA +0F37 ; output # (༷) TIBETAN MARK NGAS BZUNG SGOR RTAGS +0F39 ; output # (༹) TIBETAN MARK TSA -PHRU +0F3E..0F42 ; output # [5] (༾..ག) TIBETAN SIGN YAR TSHES..TIBETAN LETTER GA +0F44..0F47 ; output # [4] (ང..ཇ) TIBETAN LETTER NGA..TIBETAN LETTER JA +0F49..0F4C ; output # [4] (ཉ..ཌ) TIBETAN LETTER NYA..TIBETAN LETTER DDA +0F4E..0F51 ; output # [4] (ཎ..ད) TIBETAN LETTER NNA..TIBETAN LETTER DA +0F53..0F56 ; output # [4] (ན..བ) TIBETAN LETTER NA..TIBETAN LETTER BA +0F58..0F5B ; output # [4] (མ..ཛ) TIBETAN LETTER MA..TIBETAN LETTER DZA +0F5D..0F68 ; output # [12] (à½..ཨ) TIBETAN LETTER WA..TIBETAN LETTER A +0F6A ; output # (ཪ) TIBETAN LETTER FIXED-FORM RA +0F71..0F72 ; output # [2] (ཱ..ི) TIBETAN VOWEL SIGN AA..TIBETAN VOWEL SIGN I +0F74 ; output # (ུ) TIBETAN VOWEL SIGN U +0F7A..0F80 ; output # [7] (ེ..ྀ) TIBETAN VOWEL SIGN E..TIBETAN VOWEL SIGN REVERSED I +0F82..0F84 ; output # [3] (ྂ..྄) TIBETAN SIGN NYI ZLA NAA DA..TIBETAN MARK HALANTA +0F86..0F8B ; output # [6] (྆..ྋ) TIBETAN SIGN LCI RTAGS..TIBETAN SIGN GRU MED RGYINGS +0F90..0F92 ; output # [3] (à¾..ྒ) TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER GA +0F94..0F97 ; output # [4] (ྔ..ྗ) TIBETAN SUBJOINED LETTER NGA..TIBETAN SUBJOINED LETTER JA +0F99..0F9C ; output # [4] (ྙ..ྜ) TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER DDA +0F9E..0FA1 ; output # [4] (ྞ..ྡ) TIBETAN SUBJOINED LETTER NNA..TIBETAN SUBJOINED LETTER DA +0FA3..0FA6 ; output # [4] (ྣ..ྦ) TIBETAN SUBJOINED LETTER NA..TIBETAN SUBJOINED LETTER BA +0FA8..0FAB ; output # [4] (ྨ..ྫ) TIBETAN SUBJOINED LETTER MA..TIBETAN SUBJOINED LETTER DZA +0FAD..0FB8 ; output # [12] (ྭ..ྸ) TIBETAN SUBJOINED LETTER WA..TIBETAN SUBJOINED LETTER A +0FBA..0FBC ; output # [3] (ྺ..ྼ) TIBETAN SUBJOINED LETTER FIXED-FORM WA..TIBETAN SUBJOINED LETTER FIXED-FORM RA +0FC6 ; output # (࿆) TIBETAN SYMBOL PADMA GDAN +1000..1021 ; output # [34] (က..အ) MYANMAR LETTER KA..MYANMAR LETTER A +1023..1027 ; output # [5] (ဣ..ဧ) MYANMAR LETTER I..MYANMAR LETTER E +1029..102A ; output # [2] (ဩ..ဪ) MYANMAR LETTER O..MYANMAR LETTER AU +102C..1032 ; output # [7] (ာ..ဲ) MYANMAR VOWEL SIGN AA..MYANMAR VOWEL SIGN AI +1036..1039 ; output # [4] (ံ..္) MYANMAR SIGN ANUSVARA..MYANMAR SIGN VIRAMA +1040..1049 ; output # [10] (á€..á‰) MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE +1050..1059 ; output # [10] (á..á™) MYANMAR LETTER SHA..MYANMAR VOWEL SIGN VOCALIC LL +10A0..10C5 ; output # [38] (á‚ ..Ⴥ) GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE +10D0..10F0 ; output # [33] (áƒ..ჰ) GEORGIAN LETTER AN..GEORGIAN LETTER HAE +10F7..10F8 ; output # [2] (ჷ..ჸ) GEORGIAN LETTER YN..GEORGIAN LETTER ELIFI +1200..1206 ; output # [7] (ሀ..ሆ) ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE HO +1208..1246 ; output # [63] (ለ..ቆ) ETHIOPIC SYLLABLE LA..ETHIOPIC SYLLABLE QO +1248 ; output # (ቈ) ETHIOPIC SYLLABLE QWA +124A..124D ; output # [4] (ቊ..á‰) ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE +1250..1256 ; output # [7] (á‰..ቖ) ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO +1258 ; output # (ቘ) ETHIOPIC SYLLABLE QHWA +125A..125D ; output # [4] (ቚ..á‰) ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE +1260..1286 ; output # [39] (በ..ኆ) ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XO +1288 ; output # (ኈ) ETHIOPIC SYLLABLE XWA +128A..128D ; output # [4] (ኊ..áŠ) ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE +1290..12AE ; output # [31] (áŠ..ኮ) ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KO +12B0 ; output # (ኰ) ETHIOPIC SYLLABLE KWA +12B2..12B5 ; output # [4] (ኲ..ኵ) ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE +12B8..12BE ; output # [7] (ኸ..ኾ) ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO +12C0 ; output # (á‹€) ETHIOPIC SYLLABLE KXWA +12C2..12C5 ; output # [4] (á‹‚..á‹…) ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE +12C8..12CE ; output # [7] (ወ..á‹Ž) ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE WO +12D0..12D6 ; output # [7] (á‹..á‹–) ETHIOPIC SYLLABLE PHARYNGEAL A..ETHIOPIC SYLLABLE PHARYNGEAL O +12D8..12EE ; output # [23] (ዘ..á‹®) ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE YO +12F0..130E ; output # [31] (á‹°..ጎ) ETHIOPIC SYLLABLE DA..ETHIOPIC SYLLABLE GO +1310 ; output # (áŒ) ETHIOPIC SYLLABLE GWA +1312..1315 ; output # [4] (ጒ..ጕ) ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE +1318..131E ; output # [7] (ጘ..ጞ) ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE GGO +1320..1346 ; output # [39] (ጠ..á†) ETHIOPIC SYLLABLE THA..ETHIOPIC SYLLABLE TZO +1348..135A ; output # [19] (áˆ..áš) ETHIOPIC SYLLABLE FA..ETHIOPIC SYLLABLE FYA +1369..1371 ; output # [9] (á©..á±) ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE +13A0..13F4 ; output # [85] (Ꭰ..á´) CHEROKEE LETTER A..CHEROKEE LETTER YV +1401..166C ; output # [620] (á..ᙬ) CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA +166F..1676 ; output # [8] (ᙯ..ᙶ) CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA +1780..17A2 ; output # [35] (ក..អ) KHMER LETTER KA..KHMER LETTER QA +17A5..17A7 ; output # [3] (ឥ..ឧ) KHMER INDEPENDENT VOWEL QI..KHMER INDEPENDENT VOWEL QU +17A9..17B3 ; output # [11] (áž©..áž³) KHMER INDEPENDENT VOWEL QUU..KHMER INDEPENDENT VOWEL QAU +17B6..17D0 ; output # [27] (ា..áŸ) KHMER VOWEL SIGN AA..KHMER SIGN SAMYOK SANNYA +17D2 ; output # (្) KHMER SIGN COENG +17D7 ; output # (ៗ) KHMER SIGN LEK TOO +17DC ; output # (ៜ) KHMER SIGN AVAKRAHASANYA +17E0..17E9 ; output # [10] (០..៩) KHMER DIGIT ZERO..KHMER DIGIT NINE +1810..1819 ; output # [10] (á ..á ™) MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE +1820..1877 ; output # [88] (á  ..á¡·) MONGOLIAN LETTER A..MONGOLIAN LETTER MANCHU ZHA +1880..18A9 ; output # [42] (ᢀ..ᢩ) MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI DAGALGA +1E01 ; output # (á¸) LATIN SMALL LETTER A WITH RING BELOW +1E03 ; output # (ḃ) LATIN SMALL LETTER B WITH DOT ABOVE +1E05 ; output # (ḅ) LATIN SMALL LETTER B WITH DOT BELOW +1E07 ; output # (ḇ) LATIN SMALL LETTER B WITH LINE BELOW +1E09 ; output # (ḉ) LATIN SMALL LETTER C WITH CEDILLA AND ACUTE +1E0B ; output # (ḋ) LATIN SMALL LETTER D WITH DOT ABOVE +1E0D ; output # (á¸) LATIN SMALL LETTER D WITH DOT BELOW +1E0F ; output # (á¸) LATIN SMALL LETTER D WITH LINE BELOW +1E11 ; output # (ḑ) LATIN SMALL LETTER D WITH CEDILLA +1E13 ; output # (ḓ) LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW +1E15 ; output # (ḕ) LATIN SMALL LETTER E WITH MACRON AND GRAVE +1E17 ; output # (ḗ) LATIN SMALL LETTER E WITH MACRON AND ACUTE +1E19 ; output # (ḙ) LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW +1E1B ; output # (ḛ) LATIN SMALL LETTER E WITH TILDE BELOW +1E1D ; output # (á¸) LATIN SMALL LETTER E WITH CEDILLA AND BREVE +1E1F ; output # (ḟ) LATIN SMALL LETTER F WITH DOT ABOVE +1E21 ; output # (ḡ) LATIN SMALL LETTER G WITH MACRON +1E23 ; output # (ḣ) LATIN SMALL LETTER H WITH DOT ABOVE +1E25 ; output # (ḥ) LATIN SMALL LETTER H WITH DOT BELOW +1E27 ; output # (ḧ) LATIN SMALL LETTER H WITH DIAERESIS +1E29 ; output # (ḩ) LATIN SMALL LETTER H WITH CEDILLA +1E2B ; output # (ḫ) LATIN SMALL LETTER H WITH BREVE BELOW +1E2D ; output # (ḭ) LATIN SMALL LETTER I WITH TILDE BELOW +1E2F ; output # (ḯ) LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE +1E31 ; output # (ḱ) LATIN SMALL LETTER K WITH ACUTE +1E33 ; output # (ḳ) LATIN SMALL LETTER K WITH DOT BELOW +1E35 ; output # (ḵ) LATIN SMALL LETTER K WITH LINE BELOW +1E37 ; output # (ḷ) LATIN SMALL LETTER L WITH DOT BELOW +1E39 ; output # (ḹ) LATIN SMALL LETTER L WITH DOT BELOW AND MACRON +1E3B ; output # (ḻ) LATIN SMALL LETTER L WITH LINE BELOW +1E3D ; output # (ḽ) LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW +1E3F ; output # (ḿ) LATIN SMALL LETTER M WITH ACUTE +1E41 ; output # (á¹) LATIN SMALL LETTER M WITH DOT ABOVE +1E43 ; output # (ṃ) LATIN SMALL LETTER M WITH DOT BELOW +1E45 ; output # (á¹…) LATIN SMALL LETTER N WITH DOT ABOVE +1E47 ; output # (ṇ) LATIN SMALL LETTER N WITH DOT BELOW +1E49 ; output # (ṉ) LATIN SMALL LETTER N WITH LINE BELOW +1E4B ; output # (ṋ) LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW +1E4D ; output # (á¹) LATIN SMALL LETTER O WITH TILDE AND ACUTE +1E4F ; output # (á¹) LATIN SMALL LETTER O WITH TILDE AND DIAERESIS +1E51 ; output # (ṑ) LATIN SMALL LETTER O WITH MACRON AND GRAVE +1E53 ; output # (ṓ) LATIN SMALL LETTER O WITH MACRON AND ACUTE +1E55 ; output # (ṕ) LATIN SMALL LETTER P WITH ACUTE +1E57 ; output # (á¹—) LATIN SMALL LETTER P WITH DOT ABOVE +1E59 ; output # (á¹™) LATIN SMALL LETTER R WITH DOT ABOVE +1E5B ; output # (á¹›) LATIN SMALL LETTER R WITH DOT BELOW +1E5D ; output # (á¹) LATIN SMALL LETTER R WITH DOT BELOW AND MACRON +1E5F ; output # (ṟ) LATIN SMALL LETTER R WITH LINE BELOW +1E61 ; output # (ṡ) LATIN SMALL LETTER S WITH DOT ABOVE +1E63 ; output # (á¹£) LATIN SMALL LETTER S WITH DOT BELOW +1E65 ; output # (á¹¥) LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE +1E67 ; output # (ṧ) LATIN SMALL LETTER S WITH CARON AND DOT ABOVE +1E69 ; output # (ṩ) LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE +1E6B ; output # (ṫ) LATIN SMALL LETTER T WITH DOT ABOVE +1E6D ; output # (á¹­) LATIN SMALL LETTER T WITH DOT BELOW +1E6F ; output # (ṯ) LATIN SMALL LETTER T WITH LINE BELOW +1E71 ; output # (á¹±) LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW +1E73 ; output # (á¹³) LATIN SMALL LETTER U WITH DIAERESIS BELOW +1E75 ; output # (á¹µ) LATIN SMALL LETTER U WITH TILDE BELOW +1E77 ; output # (á¹·) LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW +1E79 ; output # (á¹¹) LATIN SMALL LETTER U WITH TILDE AND ACUTE +1E7B ; output # (á¹») LATIN SMALL LETTER U WITH MACRON AND DIAERESIS +1E7D ; output # (á¹½) LATIN SMALL LETTER V WITH TILDE +1E7F ; output # (ṿ) LATIN SMALL LETTER V WITH DOT BELOW +1E81 ; output # (áº) LATIN SMALL LETTER W WITH GRAVE +1E83 ; output # (ẃ) LATIN SMALL LETTER W WITH ACUTE +1E85 ; output # (ẅ) LATIN SMALL LETTER W WITH DIAERESIS +1E87 ; output # (ẇ) LATIN SMALL LETTER W WITH DOT ABOVE +1E89 ; output # (ẉ) LATIN SMALL LETTER W WITH DOT BELOW +1E8B ; output # (ẋ) LATIN SMALL LETTER X WITH DOT ABOVE +1E8D ; output # (áº) LATIN SMALL LETTER X WITH DIAERESIS +1E8F ; output # (áº) LATIN SMALL LETTER Y WITH DOT ABOVE +1E91 ; output # (ẑ) LATIN SMALL LETTER Z WITH CIRCUMFLEX +1E93 ; output # (ẓ) LATIN SMALL LETTER Z WITH DOT BELOW +1E95..1E99 ; output # [5] (ẕ..ẙ) LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER Y WITH RING ABOVE +1EA1 ; output # (ạ) LATIN SMALL LETTER A WITH DOT BELOW +1EA3 ; output # (ả) LATIN SMALL LETTER A WITH HOOK ABOVE +1EA5 ; output # (ấ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE +1EA7 ; output # (ầ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE +1EA9 ; output # (ẩ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE +1EAB ; output # (ẫ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE +1EAD ; output # (ậ) LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW +1EAF ; output # (ắ) LATIN SMALL LETTER A WITH BREVE AND ACUTE +1EB1 ; output # (ằ) LATIN SMALL LETTER A WITH BREVE AND GRAVE +1EB3 ; output # (ẳ) LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE +1EB5 ; output # (ẵ) LATIN SMALL LETTER A WITH BREVE AND TILDE +1EB7 ; output # (ặ) LATIN SMALL LETTER A WITH BREVE AND DOT BELOW +1EB9 ; output # (ẹ) LATIN SMALL LETTER E WITH DOT BELOW +1EBB ; output # (ẻ) LATIN SMALL LETTER E WITH HOOK ABOVE +1EBD ; output # (ẽ) LATIN SMALL LETTER E WITH TILDE +1EBF ; output # (ế) LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE +1EC1 ; output # (á») LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE +1EC3 ; output # (ể) LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE +1EC5 ; output # (á»…) LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE +1EC7 ; output # (ệ) LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW +1EC9 ; output # (ỉ) LATIN SMALL LETTER I WITH HOOK ABOVE +1ECB ; output # (ị) LATIN SMALL LETTER I WITH DOT BELOW +1ECD ; output # (á») LATIN SMALL LETTER O WITH DOT BELOW +1ECF ; output # (á») LATIN SMALL LETTER O WITH HOOK ABOVE +1ED1 ; output # (ố) LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE +1ED3 ; output # (ồ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE +1ED5 ; output # (ổ) LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE +1ED7 ; output # (á»—) LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE +1ED9 ; output # (á»™) LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW +1EDB ; output # (á»›) LATIN SMALL LETTER O WITH HORN AND ACUTE +1EDD ; output # (á») LATIN SMALL LETTER O WITH HORN AND GRAVE +1EDF ; output # (ở) LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE +1EE1 ; output # (ỡ) LATIN SMALL LETTER O WITH HORN AND TILDE +1EE3 ; output # (ợ) LATIN SMALL LETTER O WITH HORN AND DOT BELOW +1EE5 ; output # (ụ) LATIN SMALL LETTER U WITH DOT BELOW +1EE7 ; output # (ủ) LATIN SMALL LETTER U WITH HOOK ABOVE +1EE9 ; output # (ứ) LATIN SMALL LETTER U WITH HORN AND ACUTE +1EEB ; output # (ừ) LATIN SMALL LETTER U WITH HORN AND GRAVE +1EED ; output # (á»­) LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE +1EEF ; output # (ữ) LATIN SMALL LETTER U WITH HORN AND TILDE +1EF1 ; output # (á»±) LATIN SMALL LETTER U WITH HORN AND DOT BELOW +1EF3 ; output # (ỳ) LATIN SMALL LETTER Y WITH GRAVE +1EF5 ; output # (ỵ) LATIN SMALL LETTER Y WITH DOT BELOW +1EF7 ; output # (á»·) LATIN SMALL LETTER Y WITH HOOK ABOVE +1EF9 ; output # (ỹ) LATIN SMALL LETTER Y WITH TILDE +1F00..1F07 ; output # [8] (á¼€..ἇ) GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI +1F10..1F15 ; output # [6] (á¼..ἕ) GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +1F20..1F27 ; output # [8] (á¼ ..ἧ) GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI +1F30..1F37 ; output # [8] (á¼°..á¼·) GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI +1F40..1F45 ; output # [6] (á½€..á½…) GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +1F50..1F57 ; output # [8] (á½..á½—) GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F60..1F67 ; output # [8] (á½ ..ὧ) GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI +1F70 ; output # (á½°) GREEK SMALL LETTER ALPHA WITH VARIA +1F72 ; output # (á½²) GREEK SMALL LETTER EPSILON WITH VARIA +1F74 ; output # (á½´) GREEK SMALL LETTER ETA WITH VARIA +1F76 ; output # (ὶ) GREEK SMALL LETTER IOTA WITH VARIA +1F78 ; output # (ὸ) GREEK SMALL LETTER OMICRON WITH VARIA +1F7A ; output # (ὺ) GREEK SMALL LETTER UPSILON WITH VARIA +1F7C ; output # (á½¼) GREEK SMALL LETTER OMEGA WITH VARIA +1FB0..1FB1 ; output # [2] (á¾°..á¾±) GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH MACRON +1FB6 ; output # (ᾶ) GREEK SMALL LETTER ALPHA WITH PERISPOMENI +1FC6 ; output # (ῆ) GREEK SMALL LETTER ETA WITH PERISPOMENI +1FD0..1FD2 ; output # [3] (á¿..á¿’) GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA +1FD6..1FD7 ; output # [2] (á¿–..á¿—) GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI +1FE0..1FE2 ; output # [3] (á¿ ..á¿¢) GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA +1FE4..1FE7 ; output # [4] (ῤ..ῧ) GREEK SMALL LETTER RHO WITH PSILI..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI +1FF6 ; output # (ῶ) GREEK SMALL LETTER OMEGA WITH PERISPOMENI +2132 ; output # (Ⅎ) TURNED CAPITAL F +3005..3007 ; output # [3] (々..〇) IDEOGRAPHIC ITERATION MARK..IDEOGRAPHIC NUMBER ZERO +3041..3096 ; output # [86] (ã..ã‚–) HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE +3099..309A ; output # [2] (ã‚™..ã‚š) COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +309D..309E ; output # [2] (ã‚..ã‚ž) HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK +30A1..30FE ; output # [94] (ã‚¡..ヾ) KATAKANA LETTER SMALL A..KATAKANA VOICED ITERATION MARK +3105..312C ; output # [40] (ã„…..ㄬ) BOPOMOFO LETTER B..BOPOMOFO LETTER GN +31A0..31B7 ; output # [24] (ㆠ..ㆷ) BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H +31F0..31FF ; output # [16] (ㇰ..ㇿ) KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO +3447 ; output # (㑇) CJK UNIFIED IDEOGRAPH-3447 +3473 ; output # (㑳) CJK UNIFIED IDEOGRAPH-3473 +34E4 ; output # (㓤) CJK UNIFIED IDEOGRAPH-34E4 +3577 ; output # (ã•·) CJK UNIFIED IDEOGRAPH-3577 +359E ; output # (ã–ž) CJK UNIFIED IDEOGRAPH-359E +35A1 ; output # (ã–¡) CJK UNIFIED IDEOGRAPH-35A1 +35AD ; output # (ã–­) CJK UNIFIED IDEOGRAPH-35AD +35BF ; output # (ã–¿) CJK UNIFIED IDEOGRAPH-35BF +35CE ; output # (ã—Ž) CJK UNIFIED IDEOGRAPH-35CE +35F3 ; output # (ã—³) CJK UNIFIED IDEOGRAPH-35F3 +35FE ; output # (ã—¾) CJK UNIFIED IDEOGRAPH-35FE +360E ; output # (㘎) CJK UNIFIED IDEOGRAPH-360E +361A ; output # (㘚) CJK UNIFIED IDEOGRAPH-361A +3918 ; output # (㤘) CJK UNIFIED IDEOGRAPH-3918 +3960 ; output # (㥠) CJK UNIFIED IDEOGRAPH-3960 +396E ; output # (㥮) CJK UNIFIED IDEOGRAPH-396E +39CF..39D0 ; output # [2] (ã§..ã§) CJK UNIFIED IDEOGRAPH-39CF..CJK UNIFIED IDEOGRAPH-39D0 +39DF ; output # (㧟) CJK UNIFIED IDEOGRAPH-39DF +39F8 ; output # (㧸) CJK UNIFIED IDEOGRAPH-39F8 +39FE ; output # (㧾) CJK UNIFIED IDEOGRAPH-39FE +3A18 ; output # (㨘) CJK UNIFIED IDEOGRAPH-3A18 +3A52 ; output # (ã©’) CJK UNIFIED IDEOGRAPH-3A52 +3A67 ; output # (㩧) CJK UNIFIED IDEOGRAPH-3A67 +3A73 ; output # (㩳) CJK UNIFIED IDEOGRAPH-3A73 +3B39 ; output # (㬹) CJK UNIFIED IDEOGRAPH-3B39 +3B4E ; output # (ã­Ž) CJK UNIFIED IDEOGRAPH-3B4E +3C6E ; output # (ã±®) CJK UNIFIED IDEOGRAPH-3C6E +3CE0 ; output # (ã³ ) CJK UNIFIED IDEOGRAPH-3CE0 +3DE7 ; output # (ã·§) CJK UNIFIED IDEOGRAPH-3DE7 +3DEB ; output # (ã·«) CJK UNIFIED IDEOGRAPH-3DEB +3E74 ; output # (ã¹´) CJK UNIFIED IDEOGRAPH-3E74 +3ED0 ; output # (ã») CJK UNIFIED IDEOGRAPH-3ED0 +4056 ; output # (ä–) CJK UNIFIED IDEOGRAPH-4056 +4065 ; output # (ä¥) CJK UNIFIED IDEOGRAPH-4065 +406A ; output # (äª) CJK UNIFIED IDEOGRAPH-406A +40BB ; output # (ä‚») CJK UNIFIED IDEOGRAPH-40BB +40DF ; output # (䃟) CJK UNIFIED IDEOGRAPH-40DF +4137 ; output # (ä„·) CJK UNIFIED IDEOGRAPH-4137 +415F ; output # (ä…Ÿ) CJK UNIFIED IDEOGRAPH-415F +4337 ; output # (䌷) CJK UNIFIED IDEOGRAPH-4337 +43AC ; output # (䎬) CJK UNIFIED IDEOGRAPH-43AC +43B1 ; output # (䎱) CJK UNIFIED IDEOGRAPH-43B1 +43DD ; output # (ä) CJK UNIFIED IDEOGRAPH-43DD +44D6 ; output # (ä“–) CJK UNIFIED IDEOGRAPH-44D6 +44EA ; output # (䓪) CJK UNIFIED IDEOGRAPH-44EA +4606 ; output # (䘆) CJK UNIFIED IDEOGRAPH-4606 +464C ; output # (䙌) CJK UNIFIED IDEOGRAPH-464C +4661 ; output # (䙡) CJK UNIFIED IDEOGRAPH-4661 +4723 ; output # (䜣) CJK UNIFIED IDEOGRAPH-4723 +4729 ; output # (䜩) CJK UNIFIED IDEOGRAPH-4729 +477C ; output # (ä¼) CJK UNIFIED IDEOGRAPH-477C +478D ; output # (äž) CJK UNIFIED IDEOGRAPH-478D +47F4 ; output # (䟴) CJK UNIFIED IDEOGRAPH-47F4 +48B5 ; output # (䢵) CJK UNIFIED IDEOGRAPH-48B5 +48BC ; output # (䢼) CJK UNIFIED IDEOGRAPH-48BC +48C5 ; output # (䣅) CJK UNIFIED IDEOGRAPH-48C5 +48D3 ; output # (䣓) CJK UNIFIED IDEOGRAPH-48D3 +4947 ; output # (䥇) CJK UNIFIED IDEOGRAPH-4947 +497A ; output # (䥺) CJK UNIFIED IDEOGRAPH-497A +497D ; output # (䥽) CJK UNIFIED IDEOGRAPH-497D +4982..4983 ; output # [2] (䦂..䦃) CJK UNIFIED IDEOGRAPH-4982..CJK UNIFIED IDEOGRAPH-4983 +4985..4986 ; output # [2] (䦅..䦆) CJK UNIFIED IDEOGRAPH-4985..CJK UNIFIED IDEOGRAPH-4986 +499B ; output # (䦛) CJK UNIFIED IDEOGRAPH-499B +499F ; output # (䦟) CJK UNIFIED IDEOGRAPH-499F +49B6..49B7 ; output # [2] (䦶..䦷) CJK UNIFIED IDEOGRAPH-49B6..CJK UNIFIED IDEOGRAPH-49B7 +49D1 ; output # (䧑) CJK UNIFIED IDEOGRAPH-49D1 +4A12 ; output # (䨒) CJK UNIFIED IDEOGRAPH-4A12 +4AB8 ; output # (䪸) CJK UNIFIED IDEOGRAPH-4AB8 +4C77 ; output # (ä±·) CJK UNIFIED IDEOGRAPH-4C77 +4C7D ; output # (ä±½) CJK UNIFIED IDEOGRAPH-4C7D +4C81 ; output # (ä²) CJK UNIFIED IDEOGRAPH-4C81 +4C85 ; output # (ä²…) CJK UNIFIED IDEOGRAPH-4C85 +4C9F..4CA3 ; output # [5] (䲟..ä²£) CJK UNIFIED IDEOGRAPH-4C9F..CJK UNIFIED IDEOGRAPH-4CA3 +4CB3 ; output # (ä²³) CJK UNIFIED IDEOGRAPH-4CB3 +4D08 ; output # (ä´ˆ) CJK UNIFIED IDEOGRAPH-4D08 +4D13..4D19 ; output # [7] (ä´“..ä´™) CJK UNIFIED IDEOGRAPH-4D13..CJK UNIFIED IDEOGRAPH-4D19 +4DAE ; output # (䶮) CJK UNIFIED IDEOGRAPH-4DAE +4E00..9FA5 ; output # [20902] (一..é¾¥) CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FA5 +A000..A48C ; output # [1165] (ꀀ..ê’Œ) YI SYLLABLE IT..YI SYLLABLE YYR +AC00..D7A3 ; output # [11172] (ê°€..힣) HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH +FA0E..FA0F ; output # [2] (﨎..ï¨) CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F +FA11 ; output # (﨑) CJK COMPATIBILITY IDEOGRAPH-FA11 +FA13..FA14 ; output # [2] (﨓..﨔) CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14 +FA1F ; output # (﨟) CJK COMPATIBILITY IDEOGRAPH-FA1F +FA21 ; output # (﨡) CJK COMPATIBILITY IDEOGRAPH-FA21 +FA23..FA24 ; output # [2] (﨣..﨤) CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24 +FA27..FA29 ; output # [3] (﨧..﨩) CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29 +2070E ; output # (𠜎) CJK UNIFIED IDEOGRAPH-2070E +20731 ; output # (𠜱) CJK UNIFIED IDEOGRAPH-20731 +20779 ; output # (ð ¹) CJK UNIFIED IDEOGRAPH-20779 +20C53 ; output # (𠱓) CJK UNIFIED IDEOGRAPH-20C53 +20C78 ; output # (𠱸) CJK UNIFIED IDEOGRAPH-20C78 +20C96 ; output # (ð ²–) CJK UNIFIED IDEOGRAPH-20C96 +20CCF ; output # (ð ³) CJK UNIFIED IDEOGRAPH-20CCF +20CD5 ; output # (𠳕) CJK UNIFIED IDEOGRAPH-20CD5 +20D15 ; output # (ð ´•) CJK UNIFIED IDEOGRAPH-20D15 +20D7C ; output # (ð µ¼) CJK UNIFIED IDEOGRAPH-20D7C +20D7F ; output # (𠵿) CJK UNIFIED IDEOGRAPH-20D7F +20E0E..20E0F ; output # [2] (𠸎..ð ¸) CJK UNIFIED IDEOGRAPH-20E0E..CJK UNIFIED IDEOGRAPH-20E0F +20E77 ; output # (ð ¹·) CJK UNIFIED IDEOGRAPH-20E77 +20E9D ; output # (ð º) CJK UNIFIED IDEOGRAPH-20E9D +20EA2 ; output # (𠺢) CJK UNIFIED IDEOGRAPH-20EA2 +20ED7 ; output # (ð »—) CJK UNIFIED IDEOGRAPH-20ED7 +20EF9..20EFA ; output # [2] (ð »¹..𠻺) CJK UNIFIED IDEOGRAPH-20EF9..CJK UNIFIED IDEOGRAPH-20EFA +20F2D..20F2E ; output # [2] (ð ¼­..ð ¼®) CJK UNIFIED IDEOGRAPH-20F2D..CJK UNIFIED IDEOGRAPH-20F2E +20F4C ; output # (𠽌) CJK UNIFIED IDEOGRAPH-20F4C +20FB4 ; output # (ð ¾´) CJK UNIFIED IDEOGRAPH-20FB4 +20FBC ; output # (ð ¾¼) CJK UNIFIED IDEOGRAPH-20FBC +20FEA ; output # (𠿪) CJK UNIFIED IDEOGRAPH-20FEA +2105C ; output # (ð¡œ) CJK UNIFIED IDEOGRAPH-2105C +2106F ; output # (ð¡¯) CJK UNIFIED IDEOGRAPH-2106F +21075..21076 ; output # [2] (ð¡µ..ð¡¶) CJK UNIFIED IDEOGRAPH-21075..CJK UNIFIED IDEOGRAPH-21076 +2107B ; output # (ð¡») CJK UNIFIED IDEOGRAPH-2107B +210C1 ; output # (ð¡ƒ) CJK UNIFIED IDEOGRAPH-210C1 +210C9 ; output # (𡃉) CJK UNIFIED IDEOGRAPH-210C9 +211D9 ; output # (𡇙) CJK UNIFIED IDEOGRAPH-211D9 +220C7 ; output # (𢃇) CJK UNIFIED IDEOGRAPH-220C7 +227B5 ; output # (𢞵) CJK UNIFIED IDEOGRAPH-227B5 +22AD5 ; output # (𢫕) CJK UNIFIED IDEOGRAPH-22AD5 +22B43 ; output # (𢭃) CJK UNIFIED IDEOGRAPH-22B43 +22BCA ; output # (𢯊) CJK UNIFIED IDEOGRAPH-22BCA +22C51 ; output # (𢱑) CJK UNIFIED IDEOGRAPH-22C51 +22C55 ; output # (𢱕) CJK UNIFIED IDEOGRAPH-22C55 +22CC2 ; output # (𢳂) CJK UNIFIED IDEOGRAPH-22CC2 +22D08 ; output # (𢴈) CJK UNIFIED IDEOGRAPH-22D08 +22D4C ; output # (𢵌) CJK UNIFIED IDEOGRAPH-22D4C +22D67 ; output # (𢵧) CJK UNIFIED IDEOGRAPH-22D67 +22EB3 ; output # (𢺳) CJK UNIFIED IDEOGRAPH-22EB3 +23CB7 ; output # (𣲷) CJK UNIFIED IDEOGRAPH-23CB7 +244D3 ; output # (𤓓) CJK UNIFIED IDEOGRAPH-244D3 +24DB8 ; output # (𤶸) CJK UNIFIED IDEOGRAPH-24DB8 +24DEA ; output # (𤷪) CJK UNIFIED IDEOGRAPH-24DEA +2512B ; output # (𥄫) CJK UNIFIED IDEOGRAPH-2512B +26258 ; output # (𦉘) CJK UNIFIED IDEOGRAPH-26258 +267CC ; output # (𦟌) CJK UNIFIED IDEOGRAPH-267CC +269F2 ; output # (𦧲) CJK UNIFIED IDEOGRAPH-269F2 +269FA ; output # (𦧺) CJK UNIFIED IDEOGRAPH-269FA +27A3E ; output # (𧨾) CJK UNIFIED IDEOGRAPH-27A3E +2815D ; output # (ð¨…) CJK UNIFIED IDEOGRAPH-2815D +28207 ; output # (𨈇) CJK UNIFIED IDEOGRAPH-28207 +282E2 ; output # (𨋢) CJK UNIFIED IDEOGRAPH-282E2 +28CCA ; output # (𨳊) CJK UNIFIED IDEOGRAPH-28CCA +28CCD ; output # (ð¨³) CJK UNIFIED IDEOGRAPH-28CCD +28CD2 ; output # (𨳒) CJK UNIFIED IDEOGRAPH-28CD2 +29D98 ; output # (𩶘) CJK UNIFIED IDEOGRAPH-29D98 + +# Total code points: 37201 + +# Not allowed at start of identifier + +0300..033F ; nonstarting # [64] (Ì€..Ì¿) COMBINING GRAVE ACCENT..COMBINING DOUBLE OVERLINE +0342 ; nonstarting # (Í‚) COMBINING GREEK PERISPOMENI +0345..034E ; nonstarting # [10] (Í…..ÍŽ) COMBINING GREEK YPOGEGRAMMENI..COMBINING UPWARDS ARROW BELOW +0360..036F ; nonstarting # [16] (Í ..ͯ) COMBINING DOUBLE TILDE..COMBINING LATIN SMALL LETTER X +0591..05A1 ; nonstarting # [17] (Ö‘..Ö¡) HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER +05A3..05B9 ; nonstarting # [23] (Ö£..Ö¹) HEBREW ACCENT MUNAH..HEBREW POINT HOLAM +05BB..05BD ; nonstarting # [3] (Ö»..Ö½) HEBREW POINT QUBUTS..HEBREW POINT METEG +05BF ; nonstarting # (Ö¿) HEBREW POINT RAFE +05C1..05C2 ; nonstarting # [2] (×..ׂ) HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT +05C4 ; nonstarting # (ׄ) HEBREW MARK UPPER DOT +064B..0655 ; nonstarting # [11] (Ù‹..Ù•) ARABIC FATHATAN..ARABIC HAMZA BELOW +0670 ; nonstarting # (Ù°) ARABIC LETTER SUPERSCRIPT ALEF +06D6..06DC ; nonstarting # [7] (Û–..Ûœ) ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN +06DF..06E4 ; nonstarting # [6] (ÛŸ..Û¤) ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA +06E7..06E8 ; nonstarting # [2] (Û§..Û¨) ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON +06EA..06ED ; nonstarting # [4] (Ûª..Û­) ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM +0711 ; nonstarting # (Ü‘) SYRIAC LETTER SUPERSCRIPT ALAPH +0730..073F ; nonstarting # [16] (Ü°..Ü¿) SYRIAC PTHAHA ABOVE..SYRIAC RWAHA +07A6..07B0 ; nonstarting # [11] (Þ¦..Þ°) THAANA ABAFILI..THAANA SUKUN +0901..0903 ; nonstarting # [3] (à¤..ः) DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN VISARGA +093C ; nonstarting # (़) DEVANAGARI SIGN NUKTA +093E..094D ; nonstarting # [16] (ा..à¥) DEVANAGARI VOWEL SIGN AA..DEVANAGARI SIGN VIRAMA +0951..0954 ; nonstarting # [4] (॑..॔) DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT +0962..0963 ; nonstarting # [2] (ॢ..ॣ) DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL +0981..0983 ; nonstarting # [3] (à¦..ঃ) BENGALI SIGN CANDRABINDU..BENGALI SIGN VISARGA +09BC ; nonstarting # (়) BENGALI SIGN NUKTA +09BE..09C4 ; nonstarting # [7] (া..ৄ) BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN VOCALIC RR +09C7..09C8 ; nonstarting # [2] (ে..ৈ) BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI +09CB..09CD ; nonstarting # [3] (ো..à§) BENGALI VOWEL SIGN O..BENGALI SIGN VIRAMA +09D7 ; nonstarting # (ৗ) BENGALI AU LENGTH MARK +09E2..09E3 ; nonstarting # [2] (ৢ..ৣ) BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL +0A02 ; nonstarting # (ਂ) GURMUKHI SIGN BINDI +0A3C ; nonstarting # (਼) GURMUKHI SIGN NUKTA +0A3E..0A42 ; nonstarting # [5] (ਾ..à©‚) GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN UU +0A47..0A48 ; nonstarting # [2] (ੇ..ੈ) GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI +0A4B..0A4D ; nonstarting # [3] (à©‹..à©) GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA +0A70..0A71 ; nonstarting # [2] (à©°..ੱ) GURMUKHI TIPPI..GURMUKHI ADDAK +0A81..0A83 ; nonstarting # [3] (àª..ઃ) GUJARATI SIGN CANDRABINDU..GUJARATI SIGN VISARGA +0ABC ; nonstarting # (઼) GUJARATI SIGN NUKTA +0ABE..0AC5 ; nonstarting # [8] (ા..à«…) GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN CANDRA E +0AC7..0AC9 ; nonstarting # [3] (ે..ૉ) GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN CANDRA O +0ACB..0ACD ; nonstarting # [3] (à«‹..à«) GUJARATI VOWEL SIGN O..GUJARATI SIGN VIRAMA +0B01..0B03 ; nonstarting # [3] (à¬..ଃ) ORIYA SIGN CANDRABINDU..ORIYA SIGN VISARGA +0B3C ; nonstarting # (଼) ORIYA SIGN NUKTA +0B3E..0B43 ; nonstarting # [6] (ା..à­ƒ) ORIYA VOWEL SIGN AA..ORIYA VOWEL SIGN VOCALIC R +0B47..0B48 ; nonstarting # [2] (à­‡..à­ˆ) ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI +0B4B..0B4D ; nonstarting # [3] (à­‹..à­) ORIYA VOWEL SIGN O..ORIYA SIGN VIRAMA +0B56..0B57 ; nonstarting # [2] (à­–..à­—) ORIYA AI LENGTH MARK..ORIYA AU LENGTH MARK +0B82 ; nonstarting # (ஂ) TAMIL SIGN ANUSVARA +0BBE..0BC2 ; nonstarting # [5] (ா..ூ) TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN UU +0BC6..0BC8 ; nonstarting # [3] (ெ..ை) TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI +0BCA..0BCD ; nonstarting # [4] (ொ..à¯) TAMIL VOWEL SIGN O..TAMIL SIGN VIRAMA +0BD7 ; nonstarting # (ௗ) TAMIL AU LENGTH MARK +0C01..0C03 ; nonstarting # [3] (à°..à°ƒ) TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA +0C3E..0C44 ; nonstarting # [7] (à°¾..ౄ) TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN VOCALIC RR +0C46..0C48 ; nonstarting # [3] (ె..ై) TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI +0C4A..0C4D ; nonstarting # [4] (ొ..à±) TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA +0C55..0C56 ; nonstarting # [2] (ౕ..à±–) TELUGU LENGTH MARK..TELUGU AI LENGTH MARK +0C82..0C83 ; nonstarting # [2] (ಂ..ಃ) KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA +0CBE..0CC4 ; nonstarting # [7] (ಾ..ೄ) KANNADA VOWEL SIGN AA..KANNADA VOWEL SIGN VOCALIC RR +0CC6..0CC8 ; nonstarting # [3] (ೆ..ೈ) KANNADA VOWEL SIGN E..KANNADA VOWEL SIGN AI +0CCA..0CCD ; nonstarting # [4] (ೊ..à³) KANNADA VOWEL SIGN O..KANNADA SIGN VIRAMA +0CD5..0CD6 ; nonstarting # [2] (ೕ..à³–) KANNADA LENGTH MARK..KANNADA AI LENGTH MARK +0D02..0D03 ; nonstarting # [2] (à´‚..à´ƒ) MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA +0D3E..0D43 ; nonstarting # [6] (à´¾..ൃ) MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN VOCALIC R +0D46..0D48 ; nonstarting # [3] (െ..ൈ) MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI +0D4A..0D4D ; nonstarting # [4] (ൊ..àµ) MALAYALAM VOWEL SIGN O..MALAYALAM SIGN VIRAMA +0D57 ; nonstarting # (ൗ) MALAYALAM AU LENGTH MARK +0D82..0D83 ; nonstarting # [2] (ං..ඃ) SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA +0DCA ; nonstarting # (à·Š) SINHALA SIGN AL-LAKUNA +0DCF..0DD4 ; nonstarting # [6] (à·..à·”) SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA +0DD6 ; nonstarting # (à·–) SINHALA VOWEL SIGN DIGA PAA-PILLA +0DD8..0DDF ; nonstarting # [8] (à·˜..à·Ÿ) SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA +0DF2..0DF3 ; nonstarting # [2] (à·²..à·³) SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA +0E31 ; nonstarting # (ั) THAI CHARACTER MAI HAN-AKAT +0E34..0E3A ; nonstarting # [7] (ิ..ฺ) THAI CHARACTER SARA I..THAI CHARACTER PHINTHU +0E47..0E4E ; nonstarting # [8] (็..๎) THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN +0EB1 ; nonstarting # (ັ) LAO VOWEL SIGN MAI KAN +0EB4..0EB9 ; nonstarting # [6] (ິ..ູ) LAO VOWEL SIGN I..LAO VOWEL SIGN UU +0EBB..0EBC ; nonstarting # [2] (ົ..ຼ) LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO +0EC8..0ECD ; nonstarting # [6] (່..à») LAO TONE MAI EK..LAO NIGGAHITA +0F18..0F19 ; nonstarting # [2] (༘..༙) TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS +0F35 ; nonstarting # (༵) TIBETAN MARK NGAS BZUNG NYI ZLA +0F37 ; nonstarting # (༷) TIBETAN MARK NGAS BZUNG SGOR RTAGS +0F39 ; nonstarting # (༹) TIBETAN MARK TSA -PHRU +0F3E..0F3F ; nonstarting # [2] (༾..༿) TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES +0F71..0F72 ; nonstarting # [2] (ཱ..ི) TIBETAN VOWEL SIGN AA..TIBETAN VOWEL SIGN I +0F74 ; nonstarting # (ུ) TIBETAN VOWEL SIGN U +0F76 ; nonstarting # (ྲྀ) TIBETAN VOWEL SIGN VOCALIC R +0F78 ; nonstarting # (ླྀ) TIBETAN VOWEL SIGN VOCALIC L +0F7A..0F80 ; nonstarting # [7] (ེ..ྀ) TIBETAN VOWEL SIGN E..TIBETAN VOWEL SIGN REVERSED I +0F82..0F84 ; nonstarting # [3] (ྂ..྄) TIBETAN SIGN NYI ZLA NAA DA..TIBETAN MARK HALANTA +0F86..0F87 ; nonstarting # [2] (྆..྇) TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS +0F90..0F97 ; nonstarting # [8] (à¾..ྗ) TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA +0F99..0FBC ; nonstarting # [36] (ྙ..ྼ) TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA +0FC6 ; nonstarting # (࿆) TIBETAN SYMBOL PADMA GDAN +102C..1032 ; nonstarting # [7] (ာ..ဲ) MYANMAR VOWEL SIGN AA..MYANMAR VOWEL SIGN AI +1036..1039 ; nonstarting # [4] (ံ..္) MYANMAR SIGN ANUSVARA..MYANMAR SIGN VIRAMA +1056..1059 ; nonstarting # [4] (á–..á™) MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC LL +17B6..17D0 ; nonstarting # [27] (ា..áŸ) KHMER VOWEL SIGN AA..KHMER SIGN SAMYOK SANNYA +17D2 ; nonstarting # (្) KHMER SIGN COENG +18A9 ; nonstarting # (ᢩ) MONGOLIAN LETTER ALI GALI DAGALGA +3099..309A ; nonstarting # [2] (ã‚™..ã‚š) COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + +# Total code points: 524 diff --git a/emacs.d/nxhtml/etc/viper-tut/0intro b/emacs.d/nxhtml/etc/viper-tut/0intro new file mode 100644 index 0000000..3a37e33 --- /dev/null +++ b/emacs.d/nxhtml/etc/viper-tut/0intro @@ -0,0 +1,59 @@ +Viper tutorial #0: Introduction + +This Viper tutorial is based on the vi tutorial VILEARN. Some things +works differently in Emacs and corresponding parts of the tutorial has +been changed for this. There has also been added some basic +information about Emacs that are useful to get started if you already +are a vi user. + +This tutorial is a hands-on-tutorial for Viper. If you want more +information about Viper, please read the VIPER-MANUAL. + +Note that if you are using Viper you probably still want to know quite +a bit about Emacs to use Emacs efficiently. Therefore you can also +run the Emacs tutorial from here - with special support for +Viper. This is part 6 below. You should run this part also to get to +know which Emacs standard key bindings are shadowed by Viper. + +The tutorial consists of these parts: + + 0 Introduction + (this file) + + 1 Basic Editing + Covers the handful of commands required to both navigate all + five tutorials and do basic editing. + + 2 Moving Efficiently + Covers all of the cursor positioning commands. These are the + commands used later as arguments to editing commands. + + 3 Cutting and Pasting + Introduces the first compound commands, numbering, and copy + buffers. + + 4 Inserting Techniques + Continues the discussion of compound commands, while completing + the list of insertion commands first discussed in tutorial one. + + 5 Tricks and Timesavers + This is less a tutorial than a description of common vi commands + which don't fit correctly into normal logic. + + 6 Emacs Tutorial for Viper Users + Even Viper users use a lot of keys from Emacs. Therefore you can + run the Emacs tutorial here too. It will show you which keys in + the tutorial that are changed because you are using Viper. This + depends of which Viper state you are in, vi state or some insert + state. If you switch Viper state the tutorial will immediately + show which keys are affected. + + +BUGS +Vilearn has the remark that it "Still doesn't cover variables, ex +commands, or tags. At least one more tutorial is necessary for a +complete introduction to vi." - I do not think you have to learn those +parts to use Viper. There are other ways to do these things in Emacs! + +For more information about vilearn see the the README-FILE. + diff --git a/emacs.d/nxhtml/etc/viper-tut/1basics b/emacs.d/nxhtml/etc/viper-tut/1basics new file mode 100644 index 0000000..aea1fc5 --- /dev/null +++ b/emacs.d/nxhtml/etc/viper-tut/1basics @@ -0,0 +1,187 @@ +Viper tutorial #1: The Basics + +This lesson lasts 10-15 minutes and teaches simple editing. Lines +which begin with >>> mark exercises you should try. When you +want to exit this tutorial type 'Z''Z' (type capital Z, twice). + +When you type commands in vi they do not appear on the screen. If the +letters you type unexpectedly appear on the screen, press the ESC key. + + +BASIC CURSOR MOVEMENT +--------------------- +To move through the tutorial use C-d (control d) and C-u (control u). + + C-d Move DOWN one half-screen + (depress the control key and type d) + + C-u Move UP one half-screen + (depress the control key and type u) + +* EMACS-NOTICE: C-u is normally used in Emacs for UNIVERSAL-ARGUMENT. + You can in most cases use DIGIT-ARGUMENT instead. + +>>> Now type C-d (control d) and C-u (control u) to move down and back up. + +When you are done reading a screen, you are expected to type C-d to move +down to the next screen. You must remember to type C-d throughout the +tutorial. + +To move the cursor line by line, or character by character, use the +four keys 'h', 'j', 'k', and 'l'. + + 'h' Move left one character + 'j' Move down one line + 'k' Move up one line + 'l' Move right one character + +You will notice that these keys are in a straight line on the +keyboard. Study the diagram below showing the function of h, j, k, l. + + UP + ....... ....... ....... ....... + : : : : : : : : + LEFT : h : : j : : k : : l : RIGHT + :.....: :.....: :.....: :.....: + + DOWN + +>>> Now type 'j' or 'k' a few times to bring the cursor to this line. + +>>> Try moving off the right end of a line using 'l' . Notice that +>>> vi will not allow you to move off the end of the line using 'l' . +>>> Likewise, you cannot use 'h' and 'l' on a blank line. + +>>> Try moving past the bottom of the screen using 'j' . Notice how +>>> how the screen scrolls downward. + +>>> Now practice using 'k' to move up, and 'h' to move left. + + +DELETION +-------- +To delete characters and lines, use 'x' and 'd''d'. + + 'x' X-OUT one character + 'd''d' DELETE one line + +To undo your changes, use 'u'. + + 'u' UNDO last change only + +>>> Delete this SCRAP line. Move to this line with 'j' or 'k' , now type 'd''d' . +>>> Try undoing the deletion with 'u' . + +>>> Move to this line and x-out the Y's with 'x' : "whY ask whY?" + +>>> Try undoing the deletion with 'u' . Try typing 'u' several times. +>>> Notice that 'u' only undoes the last change. + +* EMACS-NOTICE: In Viper you can use the repeat command '.' (just a dot) + to undo more changes. This goes in both direction, ie undoing and + redoing. Typing just 'u' changes direction. + +Here are more lines on which to practice deleting and undoing (use: 'd''d' 'x' 'u' ) + + Emacs is a nice creation. Emacs is a nice creation. + Emacs is a nice creation. Emacs is a nice creation. + Emacs is a nice creation. Emacs is a nice creation. + + +QUIT COMMANDS +------------- +(DO NOT QUIT the tutorial at this time.) + +To quit a file without saving any changes you have made (for instance, +with the 'd''d' or 'x' commands) use :q! . To quit and save your +changes, use 'Z''Z' . When you are editing your own files, you normally +use 'Z''Z' to quit. + + :q! QUIT without saving changes + (type a colon, then the letter q, then an + exclamation point, and press RETURN) + + 'Z''Z' Exit and save any changes + (type capital Z, twice) + + + +INSERTION +--------- +You enter insert mode with 'i' or 'o' . Anything you type during insert +mode appears on the screen. When you are done inserting, press ESC +to exit insert mode. Type C-[ (control [ ), if you do not have an ESC key. + + 'o' OPEN a line for inserting text + 'i' INSERT starting at the cursor + + ESC ESCAPE from insert mode + +During insert mode, use your erase character (usually backspace or +delete) to delete mistakes. The characters you delete will remain on +the screen until you press ESC. + +>>> Insert your name and phone number below the next blank line. To do this: +>>> Open a line below using 'o' . +>>> Type your first and last name. Press RETURN. +>>> Then type your phone number and press ESC. +>>> Use 'x' to erase part of your phone number. + +>>> Type the date below your phone number. To do this: +>>> Open another line using 'o' . +>>> Type the date and press ESC. + +>>> Type 'u' to undo the insertion. + +>>> Insert a nickname between your first and last names, using 'i'. To do this: +>>> Move the cursor to the spot between your names using 'h', 'j', 'k', 'l'. +>>> Press 'i' . +>>> Type the nickname, use DELETE or BACKSPACE to erase any typos. +>>> Then press ESC. + +On some computers, a line may be longer than the width of the screen. +This means that a very long line may appear to be two lines on the +screen. This happens when you keep typing without pressing RETURN at +the edge of the screen. To avoid any confusion when you're inserting +text, be sure to press RETURN before reaching the right edge of the +screen. + + +SUMMARY +------- +These are the vi commands you should know after tutorial #1: + + C-d Move DOWN one half-screen + (depress the control key and type d) + + C-u Move UP one half-screen + (depress the control key and type u) + + 'h' Move left one character + 'j' Move down one line + 'k' Move up one line + 'l' Move right one character + + 'd''d' DELETE one line + 'x' X-OUT one character + + 'u' UNDO last change + + :q! QUIT without saving changes + (type a colon, then the letter q, then an + exclamation point, and press RETURN) + + 'Z''Z' Exit and save any changes + (type capital Z, twice) + + 'o' OPEN a line for inserting text + 'i' INSERT starting at the cursor + + ESC ESCAPE from insert mode + + +You are now prepared to do simple editing on your own files. Practice +using vi for a few days. Then take the second vi tutorial to learn +more powerful and useful vi commands. + +Copyright (c) 1992 Jill Kliger and Wesley Craig. All Rights Reserved. diff --git a/emacs.d/nxhtml/etc/viper-tut/2moving b/emacs.d/nxhtml/etc/viper-tut/2moving new file mode 100644 index 0000000..8e4148e --- /dev/null +++ b/emacs.d/nxhtml/etc/viper-tut/2moving @@ -0,0 +1,269 @@ +Viper tutorial #2: Moving Through Files Efficiently + +This lesson lasts 15-20 minutes. The material taught here is used in +tutorial #3: Cutting and Pasting. Lines which begin with >>> mark +exercises you should try. When you want to exit this tutorial type 'Z''Z'. + + +WORDS +----- +There are many ways to move from one word to another. Consider these: + + 'w' Move to the beginning of the next WORD + 'e' Move to the END of the next word + 'b' Move BACK to the beginning to the previous word + +For 'w', 'e', and 'b', a word is delimited by any non-alphanumeric +character. The capitalized versions, 'W', 'E', and 'B', also move from word +to word. The difference is that for 'W', 'E', and 'B', a word is delimited +by any blank space. + +>>> Try out 'w', 'b', 'e', on the lines provided below. +>>> Next practice using 'B', 'W', 'b', 'E' on the lines provided below. + + EX-PER-IMENT on these lines;test moving back &forth. + EX-PER-IMENT on these lines;test moving back &forth. + + +ON THE LINE +----------- +You can move immediately to any point on the current line. + + '$' Move to the end of the line + '^' Move to the first non-white character on the line + + '0' Move to the first column on the line (column zero) + #'|' Move to an exact column on the line (column #) e.g. 5| 12| + +>>> Experiment with '$' and '^' on the line provided below. Notice +>>> that '^' moves to the first non-white character, not the beginning. + + This is a PRACTICE LINE. There is white space at the front. END + +'0' (zero) will always take you to the far left edge of the screen. + +#'|' (number vertical-bar) is for moving to an explicit column on a line. +Just type any number 1-80 and press | . For example: 5| 20| 30| +Note that you can't move beyond the last column on a line. + + +FINDING CHARACTERS +------------------ +Often you want to move to a specific letter or character on a line. + + 'f' char FIND the next occurrence of char on the line + 't' char Move 'TIL the next occurrence of char on the line + + 'F' char FIND the previous occurrence of char on the line + 'T' char Move 'TIL the previous occurrence of char on the line + + ';' Repeat the last f, t, F, or T + ',' Reverse the last f, t, F, or T + +'f' and 'F' land on the character. 't' and 'T' land next to the character. +'f' and 't' move forward, while 'F' and 'T' move backward. + +If the specified character is not on the line, vi will beep. + +>>> Move to the beginning of the line below, and try out these commands: +>>> 'f'e 'f'E ';' ';' ',' ',' 't'@ 'T'P 't'e 't'E ',' ';' ',' ';' + + "PRACTICE line?" "Each and Every?" "Find thE char@cter and move to it.END + + +MATCHING +-------- +vi has a handy way to determine if (), {}, and [] pairs match up. + + '%' Move to matching () or {} or [] + +>>> On the practice lines below, move your cursor over a (,),{,},[, or ]. +>>> Then type '%' . + + [TRY THIS. ((Whether) the pairs match up is the question.) [One] + pair is incomplete]. Can you tell {which one? ]} END + + +WINDOW POSITIONS +---------------- +You can move the cursor to the top, middle, or bottom of the vi window. + + 'H' Move to the HIGHEST position in the window + 'M' Move to the MIDDLE position in the window + 'L' Move to the LOWEST position in the window + +>>> Try out these commands: type H then M and L and then M again. + + +MARKING LOCATIONS +----------------- +You can mark positions in the file and return to them. + + 'm' char MARK this location and name it char + ''' char (quote character) return to line named char + '''''' (quote quote) return from last movement + +char can be any lower case letter, a-z. A mark persists until you: + 1) use the same char to mark another location + or 2) delete the marked line + +>>> Move to this line and type ma to mark it a +>>> Move to this line and type mb to mark it b +>>> Move to this line and type mz to mark it z +>>> Type 'a to return to line a +>>> Type 'b to return to line b +>>> Type 'z to return to line z + +Certain commands can move you large distances. These commands cause +your last position to be remembered in the special mark named ' (quote). +To move to this special mark, just type '' (quote quote). + +>>> Try this: 'b to return to line b, and then '' to return here. + + +GO TO A LINE +------------ + + 'G' GO to the last line in the file + #'G' GO to line #. (e.g., 3G , 5G , 124G ) + +Read these directions carefully: +>>> Type '1''G' to go to the top of the file, and then '''''' (quote quote) +>>> to return here. +>>> Now try 'G' to go to the end of the file, and then '''''' to return here. + + +BLOCKS OF TEXT +-------------- +It is often convenient to move through files jumping from one block of +text to the next. To do this use braces and parentheses: + + '{' (left brace) Move to the beginning of a paragraph + '}' (right brace) Move to the end of a paragraph + + '(' (left paren) Move to the beginning of a sentence + ')' (right paren) Move to the beginning of the next sentence + +>>> Experiment with '}' and '{' on the two paragraphs provided below. +>>> Note that paragraphs are separated by a blank line. + + EXPERIMENT on this first paragraph. The quick brown fox jumped + over the seven lazy dogs. The fox must have been very large to + jump over seven dogs! + + EXPERIMENT on this second paragraph. The quick brown dog + jumped over the seven lazy foxes. The dog didn't have to be nearly + as large, since foxes aren't too big. + +>>> Try out ')' and '(' on the two paragraphs provided above. +>>> Notice that sentences are separated by two blank spaces. + +C programmers find it useful to move by sections, since sections may be +delimited by a left brace in the first column. By placing the opening +brace of a C subroutine in the first column, you can move to the top of +the next subroutine, using '[''[' and ']'']' . + + '[''[' Move to the beginning of a section + ']'']' Move to the end of a section + +Note that if vi does not find a left brace at the far left, it will +move to the top or bottom of the file. + +>>> Now try ']'']' then ']'']' and '[''[' on the subroutines provided below: + +main() +{ + helloworld(); +} + +helloworld() +{ + printf( "Hello world\n" ); +} + + +SEARCHING +--------- +This enables you to jump to the next occurrence of a string in a file. +To initially find the string use: + + '/'string Find string looking forward + '?'string Find string looking backward + +To find additional occurrences of the string type: + + 'n' Repeat last / or ? command + 'N' Reverse last / or ? command + +vi may search past the bottom of the file and then start again at the top. +(Or, vi may search past the top and then start again at the bottom.) + +>>> You are going to search for a string, find the next three +>>> occurrences. Then flip directions and find the string until you +>>> return to this location. To do this: +>>> Type '/''t''h''e' then press RETURN. +>>> Type 'n' three times. +>>> Type 'N' until you return to this location. + +* EMACS-NOTICE: Emacs has very powerful SEARCH-COMMANDS which you may + want to use in parallell to those above. One of the first you want + to try is probably C-s (ISEARCH-FORWARD). + + +SUMMARY +------- + + 'w' Move to the beginning of the next WORD + 'e' Move to the END of the next word + 'b' Move BACK to the beginning to the previous word + + '$' Move to the end of the line + '^' Move to the first non-white character on the line + + '0' Move to the first column on the line (column zero) + #'|' Move to an exact column on the line (column #) e.g. 5| 12| + + 'f' char FIND the next occurrence of char on the line + 't' char Move 'TIL the next occurrence of char on the line + + 'F' char FIND the previous occurrence of char on the line + 'T' char Move 'TIL the previous occurrence of char on the line + + ';' Repeat the last f, t, F, or T + ',' Reverse the last f, t, F, or T + + '%' Show matching () or {} or [] + + 'H' Move to the HIGHEST position in the window + 'M' Move to the MIDDLE position in the window + 'L' Move to the LOWEST position in the window + + 'm' char MARK this location and name it char + ''' char (quote character) return to line named char + '''''' (quote quote) return from last movement + + 'G' GO to the last line in the file + #'G' GO to line #. (e.g., 3G , 5G , 175G ) + + '{' (left brace) Move to the beginning of a paragraph + '}' (right brace) Move to the end of a paragraph + + '(' (left paren) Move to the beginning of a sentence + ')' (right paren) Move to the beginning of the next sentence + + '[''[' Move to the beginning of a section + ']'']' Move to the end of a section + + '/'string Find string looking forward + '?'string Find string looking backward + + 'n' Repeat last / or ? command + 'N' Reverse last / or ? command + +You should now be able to move around files very efficiently. These +commands are especially useful if you are using vi over a slow modem. +Practice the material in this lesson for a few days and then take +either the third vi tutorial to learn how to copy, cut, and paste, or +the forth vi tutorial to learn additional insertion techniques. + +Copyright (c) 1992 Jill Kliger and Wesley Craig. All Rights Reserved. diff --git a/emacs.d/nxhtml/etc/viper-tut/3cutpaste b/emacs.d/nxhtml/etc/viper-tut/3cutpaste new file mode 100644 index 0000000..6d531d9 --- /dev/null +++ b/emacs.d/nxhtml/etc/viper-tut/3cutpaste @@ -0,0 +1,318 @@ +Viper tutorial #3: Copying, Cutting, and Pasting + +This lesson lasts 15-20 minutes. This tutorial assumes full knowledge +of tutorial #1, and familiarity with tutorial #2. Lines which begin +with >>> mark exercises you should try. + +When you want to exit this tutorial type 'Z''Z' to exit and save your +changes. Or type :q! to exit without saving changes. +Remember that typing u will UNDO your last change. + + +CUTTING TEXT +------------ +The delete command can be combined with any of the movement commands +taught throughout tutorial #2. The resulting command is of the form: + + 'd'movement DELETE to where the movement command specifies + +Consider the following examples: + + 'd''w' DELETE to the beginning of the next WORD + 'd''$' DELETE to the end of the line + 'd'')' DELETE to the beginning of the next sentence + 'd''t'e DELETE 'TIL the next e + 'd''d' DELETE a line (dd is a special case of the d command) + +>>> Experiment with 'd''w' 'd''$' 'd'')' 'd''t'e 'd''d' on the paragraph provided below: + + PRACTICE here. Now is the time for all good users to learn the + editor. The quick brown fox jumped over the seven lazy fish. Now + is the time for all good users to learn the editor. The quick + brown computer jumped over the seven lazy users. END PRACTICE + +* EMACS-NOTICE: In Viper you can also use 'r' and 'R' for Emacs region and + Viper line extended region. This is very convenient together with + CUA-MODE where the region is visible (it is usually called the + selected text or something similar in other applications). + + +PASTING TEXT +------------ +When text is deleted it is put into a buffer which contains the most +recently deleted text. To paste the contents of this buffer elsewhere +in the file use the p or P command. + + 'P' (upper p) PUT the contents of the buffer before the cursor + 'p' (lower p) PUT the contents of the buffer after the cursor + +>>> Try this sequence of commands on the practice lines below: +>>> 'd''d' to delete one line +>>> 'j' to move down a line +>>> 'p' (lower p) to PUT the deleted text after the cursor +>>> '}' to move to the end of the paragraph +>>> 'P' (upper p) to PUT the deleted text before the cursor + + PRACTICE line. Cut and Paste this line to the bottom of the + paragraph. Here is some filler, feel free to cut and paste the + text in this practice region. Remember that u undoes the last + action. END OF PRACTICE + +>>> Try this sequence of commands at the beginning of a word: +>>> 'd''w' 'w' 'P' + +The fastest way to swap two letters is to type: 'x''p' + +>>> Use xp to correct the misspelled words below: + + PRACTICE. Thier weird quiet recieved an inconvenient shriek. + Thier belief is that to recieve grief from nieghbors outwieghs + all else. Biege skies lead to wierd science. END. + + +NUMBERING +--------- +Consider cutting and pasting 3 words. Based on previous exercises you +would type 'd''w' , move to the new location, and type 'p' , and repeat +this procedure twice more. There is an easier way to do this: + +>>> Using the practice lines below, try the following sequence of commands: +>>> Move to the beginning of the first sentence. +>>> Type 'd''3''w' to DELETE 3 WORDS. +>>> Type 'w' to move ahead one WORD. +>>> Type 'P' (upper p) to PUT the three words before the cursor. + + PRACTICE Numbering vi commands is easy to do. Now is the time for + all good users to learn the editor. The quick brown fox jumped + over the seven lazy dogs. Numbering vi commands is easy to do. + Now is the time for all good users to learn the editor. END PRACTICE + +>>> Type 'd''2''d' to DELETE 2 lines, using the practice paragraph above. +>>> Move to the top of the paragraph. +>>> Type 'p' (lower p) to PUT the two lines after of the cursor. + +Numbering also works for movement commands. + +>>> Now try '4''w' to move ahead 4 WORDs, on the lines provided above. +>>> Then use '3''b' to move BACK 3 words. + +When you type '4''w' THINK "4 words", when you type d4w think "delete 4 +words". In general, we can write + + #movement repeat movement # times + d#movement DELETE to where the #movement command specifies + + +COPYING TEXT +------------ +The YANK command works just like the DELETE command, except 'y' is used +instead of 'd' . + + 'y'movement YANK to where the movement command specifies + +YANK and DELETE are identical except that YANK only copies the specified +text into the buffer. + +>>> Try this sequence of commands on the practice lines below: +>>> 'y''y' to YANK a line (yy is a special case of the y command) +>>> '3''j' to move down 3 lines +>>> 'p' (lower p) to PUT the yanked text after the cursor + + PRACTICE line. Copy and Paste this line to the bottom of the + paragraph. Here is some filler, feel free to copy and paste the + text in this practice region. Remember that u undoes the last + action. END OF PRACTICE + +Please note that copy, cutting, and pasting large blocks of text may +significantly alter the tutorial file. Remember that you can always get +a new copy of the tutorial file and that u UNDOes your last change. + +Here are some examples which show the similarity between y and d . + + 'y''w' YANK to the beginning of the next WORD + 'y''$' YANK to the end of the line + 'y'')' YANK to the beginning of the next sentence + 'y''t'e YANK 'TIL the next e + 'y''y' YANK a line + +Here are some more examples using commands from tutorial #2. + + 'y''L' YANK from here to the lowest point of the window + 'y''/'and YANK from here to the word "and" + 'y''2''}' YANK 2 paragraphs + 'y''''a YANK from here to the marked line "a" (mark line first) + +>>> Experiment with 'y''w' 'y''t'e 'y''4''w' 'y''2''}' 'y''3''y' and 'y''$' on the paragraph +>>> provided below. Copy text AND use 'p' or 'P' to paste it. + + PRACTICE line. Copy and Paste this line to the bottom of the + paragraph. Here is some filler, feel free to copy and paste + the text in this practice region. Remember that u undoes the + last action. END OF PRACTICE + + +NUMBERED BUFFERS +---------------- +In all of the previous pasting exercises you've used the "un-named" +buffer. The un-named buffer contains the text you most recently cut or +copied. When you make a new cut or copy, the old contents of the +un-named buffer are moved to one of the "numbered" buffers. The +buffers are numbered 1-9. Each time you cut or copy text, + + vi saves your current cut or copy in a buffer #1 + vi saves your 2nd to last cut or copy in a buffer #2 + The cut or copy before that is saved in a buffer #3 ... + vi saves your 8th oldest cut or copy in a buffer #8 + vi saves your 9th oldest cut or copy in a buffer #9 + +Note that buffer #1 is the same as the un-named buffer. Here's how to +paste from the numbered buffers: + + "#P (upper p) PUT contents of buffer # before the cursor + "#p (lower p) PUT contents of buffer # after the cursor + +For example: + + "1p PUT buffer 1 after the cursor + "7p PUT buffer 7 after the cursor + +>>> Delete this 1st line with dd +>>> Delete this 2nd line with dd +>>> Delete this 3rd block with d2d +>>> (2nd half of block 3) +>>> Delete this 4th block with dd +>>> Now type "1p "2p "3p "4p + +If you are using vi and have made accidental deletions, just PUT the +contents of each numbered buffer to recover the deleted text. + + +NAMED BUFFERS +------------- +vi maintains the un-named and numbered buffers automatically. You can +maintain your own buffers named a-z. That is, you can cut or copy text +into buffer x and later paste the text from buffer x. + + '"'aDELETE DELETE text into buffer a + "aYANK YANK text into buffer a + "aPUT PUT text from buffer a + +Note, don't actually type 'DELETE', 'YANK', or 'PUT'; type one of the +DELETE commands, YANK commands, or PUT commands. See the examples below: + + "ad} DELETE paragraph into buffer a + "by3y YANK 3 lines into buffer b + "cy200G YANK to line 200 into buffer c + "dp PUT buffer d after the cursor + "zP PUT buffer z before the cursor + +The contents of a named buffer are lost if: + 1) you store new text in a buffer with the same name + or 2) you quit vi (using 'Z''Z' or :q! ) + +>>> Delete this START line into buffer a by typing "add +>>> Paste buffer a by typing "ap + +>>> Delete this INTERMEDIATE line into buffer b by typing "bdd +>>> Paste buffer b by typing "bp + +To put new material into buffer a +>>> Delete this FINAL line into buffer a by typing "add +>>> Paste buffer a by typing "ap + + +SAVING WITHOUT QUITTING +----------------------- +With ZZ you save changes and kill the current buffer. (In vi you also +exit with 'Z''Z'.) With :w you can save and not quit vi. It is a safe +practice to save changes to a file regularly. This reduces re-typing +in the event your computer crashes. + + :w WRITE contents of the file (without quitting) + (type a colon, type w , then press the RETURN key) + +>>> Try :w now. Note the message at the bottom of the screen. + + +PASTING BETWEEN FILES +--------------------- + +* EMACS-NOTICE: In Emacs there are no problems editing several + files. You can however do it in the more complicated vi way below if + you really want to ;-) + +This is an extremely useful procedure in vi. Only one new command is +required for pasting between files, the EDIT command + + :e filename Begin EDITing the file called "filename" + +The EDIT command allows you to edit another file without quitting vi. +This is useful since named buffers are lost when you quit vi. + +Let's say you want to copy 6 lines from the file called "3temp" into +this file which is named "3cutpaste": +(Note that "3temp" has already been created for you) + + 1) WRITE "3cutpaste". vi will not allow :w (press RETURN) + you to edit another file without first + saving any changes you've made. + + 2) EDIT "3temp" without quitting vi. :e 3temp (press RETURN) + + 3) YANK 6 lines from "3temp". "ay6y + + 4) Return to "3cutpaste". :e 3cutpaste (press RETURN) + + 5) PUT from buffer a "ap + +Note that the un-named and numbered buffers are lost when the EDIT +command is used. Only named buffers are preserved with EDIT. + +>>> Follow the 5-step procedure outlined above. Don't be concerned +>>> with remembering all 5 steps, the instructions are repeated in +>>> "3temp". Paste the text from "3temp" near this line of this file, +>>> "3cutpaste". + +You can use this 5-step procedure on any two files, with any cutting or +copying action (here, y6y is the example). + + +SUMMARY +------- + + #movement repeat movement # times + * EMACS-NOTICE: You may also use 'r' or 'R' in Viper. + + 'd'movement DELETE to where "movement" command specifies + 'd'#movement DELETE to where the #movement command specifies + (e.g. 'd''w' 'd''3''w' ) + + 'y'movement YANK to where "movement" command specifies + 'y'#movement YANK to where the #movement command specifies + (e.g. 'y''w' 'y''3''w' ) + + 'P' (upper p) PUT the contents of the buffer before the cursor + 'p' (lower p) PUT the contents of the buffer after the cursor + + '"'#P (upper p) PUT contents of buffer # before the cursor + '"'#p (lower p) PUT contents of buffer # after the cursor + (e.g. '"''2''p' '"''7''P' ) + + '"'aDELETE DELETE text into buffer a + '"'aYANK YANK text into buffer a + '"'aPUT PUT text from named buffer a + (Note, don't actually type 'DELETE', 'YANK', or 'PUT'; + type one of the DELETE commands, YANK commands, or PUT + commands, e.g. '"''a''d''}' '"''b''y''3''y' '"''c''y''2''0''0''G' '"''d''p' '"''z''P' ) + + :w WRITE contents of the file (without quitting) + (type a colon, type w , then press the RETURN key) + + :e filename Begin EDITing the file called "filename" + + +You are now prepared to handle all cutting, copying and pasting tasks +which may arise. If you practice what you've learned you'll find editing +in vi to be fast and convenient. + +Copyright (c) 1992 Jill Kliger and Wesley Craig. All Rights Reserved. diff --git a/emacs.d/nxhtml/etc/viper-tut/4inserting b/emacs.d/nxhtml/etc/viper-tut/4inserting new file mode 100644 index 0000000..ab2c6a5 --- /dev/null +++ b/emacs.d/nxhtml/etc/viper-tut/4inserting @@ -0,0 +1,180 @@ +Viper tutorial #4: Insertion Techniques + +This lesson lasts 5-10 minutes. This tutorial assumes full knowledge +of tutorial #1, and familiarity with tutorial #2. Lines which begin +with >>> mark exercises you should try. When you want to exit this +tutorial type 'Z''Z' . + + +SIMPLE INSERTION +---------------- +You spend most of your time in vi inserting text. As you might expect, +there are several commands to begin insertion. + + 'o' OPEN a line below the cursor + 'O' OPEN a line above the cursor + + 'i' INSERT starting before the cursor + 'I' INSERT at the beginning of the line + + 'a' APPEND starting after the cursor + 'A' APPEND at the end of the line + +Remember to type ESC to leave insert mode. If you don't have an ESC key +type C-[ (control [ ). + + ESC ESCAPE from insert mode + +>>> Move the cursor to this line. Type 'O' , enter your name. Press ESC. +>>> Next type 'o' , enter the date. Press ESC. + +Note that 'O' opens the line above and puts you in insert mode, +while 'o' opens the line below and also puts you in insert mode. + +>>> Type 'a' on any line above, enter your name. Press ESC. Do the +>>> same for 'A'. + +>>> Read the following. Your goal is to take the sentence fragment below: + + BROWN FOX OVER THE SEVEN LAZY + +>>> and convert it to + + THE QUICK BROWN FOX JUMPED OVER THE SEVEN LAZY DOGS. + +>>> To do this type: +>>> 'I' to insert THE QUICK (then press ESC) +>>> move the cursor to after the X in FOX +>>> 'a' to insert JUMPED (then press ESC) +>>> 'A' to insert DOGS. (then press ESC) +>>> Now move to the sentence fragment and make the changes outlined above. + + +JOINING LINES +------------- +Often it is convenient to join two short lines into one line. There +are several ways to do this. The easiest is the J command. Other +methods will be explored in tutorial #5. + + 'J' JOIN two lines + +>>> Go to the first line in the block below. Type J. Type J again. + + Example: NOW IS THE TIME + the walrus said + TO THINK OF MANY THINGS + +In the event that joining lines creates a line which exceeds the width +of the screen, you can break the line by typing i and pressing RETURN. + + +SUBSTITUTING TEXT +----------------- +Substituting combines the delete command and the insert command into a +single step. + + #'s' SUBSTITUTE for # characters + #'S' SUBSTITUTE for # whole lines + + +In order to substitute text you have to know how much text you want to +delete. Consider the following examples: + + '3''s' SUBSTITUTE the next 3 characters for what will be typed + '7''s' SUBSTITUTE the next 7 characters for what will be typed + +>>> Change the SAMPLE DEFINITION below. To do this: +>>> move the cursor to the T in TWO +>>> type '3's +>>> type FOUR then press ESC + + SAMPLE DEFINITION: A string quartet is defined to be + a group of TWO musicians. + + +REPLACING TEXT +-------------- +The 'r' and 'R' commands allow you to directly type over existing text. + + 'r' REPLACE character (NO need to press ESC) + 'R' enter over-type mode + +>>> Correct each of the TYPOs on the sample line below. To do this: +>>> move the cursor to the misspelled character +>>> type 'r' +>>> type the correct character + + SAMPLE: maintanence conveniance complience applience dilagent + +>>> Use the over-type command, 'R' , on the sample line above. +>>> Type 'R' then type the name of a local restaurant. Press ESC. + + +CHANGING TEXT +------------- +The change command combines insertion, deletion, and the movement +commands. (Recall that the movement commands were taught in tutorial +#2.) Change is probably more useful than replace or substitute. The +general form of the change command is: + + 'c'movement CHANGE to where the movement command specifies + +Consider the following examples: + + 'c''w' CHANGE to the beginning of the next WORD + 'c''$' CHANGE to the end of the line + 'c'')' CHANGE to the beginning of the next sentence + 'c''t'e CHANGE 'TIL the next e + 'c''3''w' CHANGE the next 3 WORDS + 'c''c' CHANGE a line (cc is a special case of the c command) + 'c''}' CHANGE to the end of the paragraph + +>>> Follow these steps: +>>> 1. move to the desired location in the practice paragraph below +>>> 2. type 'c''w' (change to the beginning of the next WORD) +>>> 3. type your name +>>> 4. press ESC + + PRACTICE here. Now is the time for all good users to learn the + editor. The quick red fox jumped over the seven lazy fish. Now + is the time for all good users to learn the editor. The quick + brown computer jumped over the seven lazy users. END PRACTICE + +>>> Experiment by using a variety of options for step #2. Try +>>> out 'c''$' 'c'')' 'c''t'e 'c''3''w' 'c''c' 'c''}' on the practice paragraph above. + +Note that the change command follows the same pattern as the delete +and yank commands which were explored in tutorial #3. + + +SUMMARY +------- + + 'o' OPEN a line below the cursor + 'O' OPEN a line above the cursor + + 'i' INSERT starting before the cursor + 'I' INSERT at the beginning of the line + + 'a' APPEND starting after the cursor + 'A' APPEND at the end of the line + + ESC ESCAPE from insert mode + + 'J' JOIN two lines + + #'s' SUBSTITUTE for # characters + #'S' SUBSTITUTE for # whole lines + + 'r' REPLACE character (NO need to press ESC) + 'R' enter over-type mode + + 'c'movement CHANGE to where the movement commands specifies + (e.g. 'c''3''w' 'c''$' 'c''c' ) + + +These commands should improve your ability to insert text efficiently. +The next tutorials deal with advanced commands and tricks which can +further speed up your editing. + +Copyright (c) 1992 Jill Kliger and Wesley Craig. All Rights Reserved. diff --git a/emacs.d/nxhtml/etc/viper-tut/5tricks b/emacs.d/nxhtml/etc/viper-tut/5tricks new file mode 100644 index 0000000..c1e414e --- /dev/null +++ b/emacs.d/nxhtml/etc/viper-tut/5tricks @@ -0,0 +1,229 @@ +Viper tutorial #5: Tricks and Timesavers + +This lesson lasts 10-15 minutes. You should have a strong +understanding of tutorials #1-3 before working through these timesaving +techniques. Lines which begin with >>> mark exercises you should +try. When you want to exit this tutorial type 'Z''Z' . + + +CASE CONVERSION +--------------- +When you want to change an upper-case character to a lower-case +character (or lower-case to upper-case) there is a single command which +does both: + + '~' (tilde) Convert case of current character + +>>> Move the cursor to be OVER the first character in the example +>>> line below. Press '~' until you have changed the case of the +>>> entire line. ( '~' will advance to the right automatically). + + bOB WENT TO pARIS, fRANCE, TO SEE THE #1 CYCLING EVENT. end. + +Note that '~' only affects alphabetic characters. + + +UNDOING +------- +* EMACS-NOTICE: Uppercase U does the same thing as lowercase u in + Viper so this part of the tutorial which was about U has been + removed. + + +REPEAT LAST COMMAND +------------------- +Often you want to make the same change at multiple locations in the +file. To help accomplish this, vi remembers your previous action. + + '.' (dot) repeat last change + +>>> Go through the example below changing "FISH" to "TOAD": +>>> Go to the "F" in the first instance of "FISH" +>>> To change the word: type 'c''w' then type TOAD then press ESC +>>> Move the cursor to "F" in the second occurence of "FISH" +>>> Type '.' (dot) +>>> Move the cursor to "F" in the final occurence of "FISH" +>>> Type '.' (dot) +>>> Now move the cursor to each occurence of "CROW"; Type '.' (dot) + + EXAMPLE: The FISH fed the cat. The CROW fed the cat. Example + text is FISH to make interesting. The man fed the CROW. The + worm fed the FISH. Example text is hard to make CROW. END. + +>>> Go through the example above deleting all occurences of "TOAD": +>>> Move to the beginning of the EXAMPLE paragraph above. +>>> Type '/''T''O''A''D' and press RETURN (recall tutorial #2) +>>> Delete the word by typing 'd''w' +>>> Type 'n' to move to the next occurence of "TOAD" +>>> Type '.' (dot) to repeat the dw command +>>> Use 'n''.' to delete the remaining "TOAD"s + +Note that '.' only repeats changes, not cursor movements. + +* EMACS-NOTICE: In Emacs '.' also repeat undo and redo. + +* EMACS-NOTICE: Emacs KEYBOARD-MACROS are very powerful for repeating + whole sequences of keyboard commands. + + +WINDOW ACTIONS +-------------- +You are already familiar with the C-u (depress the control key and +type u) and C-d commands from tutorial #1. + + C-d Move DOWN one half-screen + C-u Move UP one half-screen + +There are several related commands: + + C-f Move FORWARD one full-screen + C-b Move BACKWARD one full-screen + + C-e Move the window down one line without moving cursor + C-y Move the window up one line without moving cursor + +The C-e and C-y commands may seem obscure; however, notice that on +the keyboard, e and y are close to d and u respectively. This +should help you remember that C-e moves DOWN, and C-y moves UP. + +Recall the 'H' 'M' 'L' (HIGH MIDDLE LOW) window commands from Tutorial 2. +Consider a scenario where you want to yank from the current line to a +line near the top of the window. You could use C-e and C-y to +position the text in the window before you use the yH command. + +The 'z' command also moves the window without moving your cursor: + + 'z' Position the current line to top of window + 'z''.' Position the current line to middle of window + 'z''-' Position the current line to bottom of window + +>>> Move to this line. Type 'z' and press RETURN. Notice that +>>> this text and the cursor have moved to the top of the window. +>>> Try 'z''-' and 'z''.' also. + + +FILE AND DISPLAY CONTROL +------------------------ + +* EMACS-NOTICE: In vi C-g shows the status of the current file, but + C-g in Emacs in most situation stops what Emacs is doing. To get + information about the current file you can use C-c C-g instead when + Viper is in vi state. + +* EMACS-NOTICE: In vi C-l refreshes the screen, but C-l in Emacs calls + the command recenter. + + +SUSPENDING VI +------------- +* EMACS-NOTICE: In vi C-z suspends vi. However in Viper C-z is by + default the VIPER-TOGGLE-KEY. To suspend or iconify Emacs use C-x + C-z. + + +BANG COMMAND +------------ +* EMACS-NOTICE: Emacs has builtin commands to sort etc. + +The exclamation point, '!' (aka BANG), command allows you to feed text +to any Unix command. The output of the Unix command replaces the +original text. Here is a useful Unix command to use from within vi: + + !}fmt Format the paragraph, joining and filling lines to + produce output lines of up to 72 characters + +>>> Move to the example paragraph below. Type !}fmt and press +>>> RETURN. Notice the paragraph will be reformatted such that +>>> the lines are of approximately equal length. + + EXAMPLE: + So we grow together, + Like to a double cherry, seeming parted, + But yet an union in partition; + Two lovely berries moulded on one stem; + So, with two seeming bodies, but one heart; + END. + +Another useful command is: + + !}sort Sort lines of a paragraph alphabetically + +>>> Move to the example text below. Type !}sort and press RETURN. + + OBERON king of the fairies. + PUCK or Robin Goodfellow. + HERMIA daughter to Egeus, in love with Lysander. + HELENA in love with Demetrius. + LYSANDER in love with Hermia. + DEMETRIUS in love with Hermia. + +Remember, any Unix command may be used this way. + + +SHIFTING TEXT +------------- +It is possible to shift large blocks of text right and left with the '>' +and '<' commands. + + '>'movement Shift right to where the movement command specifies + '<'movement Shift left to where the movement command specifies + +These commands work like the 'd' command. For example: + + '>''}' Shift right to the end of the paragraph + '<''}' Shift left to the end of the paragraph + '>''>' Shift the current line right + '<''<' Shift the current line left + +>>> Move the cursor to the first line of the paragraph below. +>>> Type '>''>' and '<''<' to shift the line back and forth. Next +>>> try '>''}' to shift the paragraph to the right, then '<''}' to shift +>>> it left, then type '.' until all four lines start at the left edge. + + THIS IS THE FIRST LINE OF EXAMPLE TEXT + IS + EXAMPLE + TEXT END + + +SUMMARY +------- + + '~' (tilde) Convert case of current character + + 'U' * EMACS-NOTICE: Same as lowercase u undo in Viper. + + '.' (dot) repeat last change + + C-d Move DOWN one half-screen + (depress the control key and type d) + + C-u Move UP one half-screen + (depress the control key and type u) + + C-f Move FORWARD one full-screen + C-b Move BACKWARD one full-screen + + C-e Move the window down one line without moving cursor + C-y Move the window up one line without moving cursor + + 'z' Position the current line to top of window + 'z''.' Position the current line to middle of window + 'z''-' Position the current line to bottom of window + + C-c C-g Show status of current file + C-l Recenter + + '!'}fmt Format the paragraph, joining and filling lines to + produce output lines of up to 72 characters + + '!'}sort Sort lines of a paragraph alphabetically + + '>'movement Shift right to where the movement command specifies + '<'movement Shift left to where the movement command specifies + + +These commands should significantly speed up your editing. Have a nice +day. Tutorial 6 contains even more nifty commands. + +Copyright (c) 1992 Jill Kliger and Wesley Craig. All Rights Reserved. diff --git a/emacs.d/nxhtml/etc/viper-tut/README b/emacs.d/nxhtml/etc/viper-tut/README new file mode 100644 index 0000000..dd39176 --- /dev/null +++ b/emacs.d/nxhtml/etc/viper-tut/README @@ -0,0 +1,49 @@ +Viper Tutorial README +===================== + +To install the Viper tutorial you must do two things: + +1) Put viper-tutorial.el in your Emacs load-path. + +2) Put the tutorial files (0intro, 1basics etc) in subdirectory to + where you put viper-tutorial.el with the name viper-tut. + Optionally you may put those file any where and customize the + option viper-tut-directory. + +The tutorial is started by + + M-x viper-tutorial RET + + + + +Viper tutorial is based on vilearn version 1.0 which was downloaded +from http://vilearn.org. + +Below is the original readme from vilearn. Note that the only part +that applies here is the copyright notice. + +--------------------------------------------------- +This is version 1.0 of vilearn, an interactive vi tutorial. + +Copyright (c) 1992 Jill Kliger and Wesley Craig. All Rights Reserved. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appears in all copies and that +the copyright notice, this permission notice, and an explicit record of +any local changes, appear in supporting documentation. This software +is supplied as is without expressed or implied warranties of any kind. + +To install, edit the Makefile and type + + make install + +We have a mailing list, vilearn-admins@terminator.rs.itd.umich.edu. To +be added to the list, send mail to vilearn-admins-request. The list is +intended to discuss the tutorials, coordinate projects relating to +them, and provide help to those who may need it. + +Wesley Craig & Jill Kliger +1317 Packard Street vilearn@terminator.rs.itd.umich.edu +Ann Arbor, MI 48104 diff --git a/emacs.d/nxhtml/etc/viper-tut/outline b/emacs.d/nxhtml/etc/viper-tut/outline new file mode 100644 index 0000000..9eaa3e4 --- /dev/null +++ b/emacs.d/nxhtml/etc/viper-tut/outline @@ -0,0 +1,131 @@ + +* +* tutorial 1 FILENAME: 1basics +* basics +* + +C-d down +C-u up + +h left +j down +k up +l right + +dd delete line +x x-out character + +u undo + +:q! force quit +ZZ good bye + +o open +i insert + +* +* tutorial 2 FILENAME: 2moving +* objects, finds & marks +* + +w W word +b B back +e E end + +{ } paragraph +( ) sentence +[ ] sections + +$ end of line +^ first non-white +| column +0 beginning of line + +f F find +t T to +; repeat fFtT +, reverse fFtT + +G goto + +H high +M middle +L low + +n N next +? / regex + +% match + +' move to marked line +m mark + + +* +* tutorial 3 FILENAME: 3cutpaste & 3temp +* +* cutting, pasting, buffers, and files +* + +d D deletes +y Y yank +p P put +" buffer +:e edit + +* +* tutorial 4 FILENAME: 4inserting +* insertion +* + +a A append +c C change +i I insert +o O open +r R replace +s S substitute + +J join + +* +* tutorial 5 FILENAME: 5tricks +* tricks +* + +~ case + +u U undo + +. do again + +C-b back +C-f forward +C-e down line +C-y up line +z zero + +C-g status +C-l refresh + +C-z suspend + +C-t pop tag proposed +C-] follow tag proposed + +! command + +< > shift + +* +* tutorial 6 PROPOSED +* commands from hell +* + +: colon commands +Q quit +C-r redraw +@ execute buffer as macro +& like :& + +C-t shift (insert) +C-d unshift (insert) diff --git a/emacs.d/nxhtml/nxhtml-base.el b/emacs.d/nxhtml/nxhtml-base.el new file mode 100644 index 0000000..d768a5e --- /dev/null +++ b/emacs.d/nxhtml/nxhtml-base.el @@ -0,0 +1,150 @@ +;;; nxhtml-base.el --- The very, very basic vars... +;; +;; Author: Lennart Borgman (lennart O borgman A gmail O com) +;; Created: 2010-01-13 Wed +;; Version: +;; Last-Updated: +;; URL: +;; Keywords: +;; Compatibility: +;; +;; Features that might be required by this library: +;; +;; None +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Commentary: +;; +;; Things that always must be loaded and that are often necessary when +;; byte compiling. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; 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 3, 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 'web-vcs nil t)) +(eval-when-compile (require 'flymake-js nil t)) +(eval-when-compile (require 'flymake-css nil t)) +(eval-when-compile (require 'flymake-java-1 nil t)) + +(defconst nxhtml-menu:version "2.08") +(setq message-log-max t) +(setq debug-on-error t) + +(defconst nxhtml-install-dir + (file-name-directory (or load-file-name + (when (boundp 'bytecomp-filename) bytecomp-filename) + buffer-file-name)) + "Installation directory for nXhtml.") + +(define-minor-mode nxhtml-autoload-web + "If on download elisp files from web when they are needed. +If t then during `require' nXhtml elisp files can be downloaded +from the nXhtml repository on the web. This will currently +download the development sources, latest version. + +Other files that are used by a command may also be downloaded. + +Note that files are not updated automatically. You have to use +`nxhtml-update-existing-files' for that." + :global t + ;;:lighter (propertize " nX" 'face 'font-lock-comment-face) + :lighter " nX" + :group 'nxhtml) + +(defun nxhtml-autoload (fun src &optional docstring interactive type) + "Generalized `autoload'. May setup autoload from the web. +If `nxhtml-autoload-web' is t then setup autoloading from the web. +Otherwise setup for normal local autoloading." + (if nxhtml-autoload-web + (progn + ;; Do not require this until we really need it. + (require 'web-autoload) + (web-autoload fun src docstring interactive type)) + (let ((file src)) + (when (listp file) + (setq file (file-name-nondirectory (nth 2 file)))) + (autoload fun file docstring interactive type)))) + +;; Fix-me: web autoload defcustoms. +;; +;; I have no good idea how to fix this. It looks like I have to +;; defadvice `custom-load-symbol'. I thought that should not be +;; necessary since it does (require load) on line 605 but the web +;; autoload does not start. Why? Hm, you never know since it is inside +;; a (condition-case nil ...). +;; +;; Ah, found it. The require is only done if custom loads contains a +;; symbol, not a string. So I changed this to a symbol instead in +;; nxhtml-loaddefs.el. Maybe `load' instead of `require' should be +;; advised? + +;; What a hell is this below? Have things been rewritten in custom or +;; did I mix somethintg? +(defun nxhtml-custom-autoload (symbol load &optional noset) + "Like `custom-autoload', but also run :set for defcustoms etc." + ;; Fix-me: is-boundp is currently always t because of the order in + ;; loaddefs. Hm, so this worked just by chance... + (let* ((is-boundp (prog1 (boundp symbol) + (custom-autoload symbol load noset))) + (standard (get symbol 'standard-value)) + (saved (get symbol 'saved-value)) + ;; Fix-me: property custom-set etc are not available + (custom-set (get symbol 'custom-set)) + (custom-initialize (get symbol 'custom-initialize)) + (set (or custom-set 'custom-set-default))) ;; Fix-me: initialize + (setq custom-set t) ;; Not available here + (when (or custom-initialize + (and saved + (not (equal (car saved) (symbol-value symbol))) + custom-set)) + (funcall set symbol (car saved)) + (custom-load-symbol symbol)))) + +(defun flymake-init-load-flymakemsg () + (require 'flymakemsg)) + +(define-minor-mode nxhtml-flymake-setup + "Let nXhtml add some addtions to flymake. +This adds support for CSS and JavaScript files. + +It also adds showing of errors in minibuffer when point is on +them. + +If you turn this off you must restart Emacs for it to take +effect." + :group 'nxhtml + :group 'flymake + (when nxhtml-flymake-setup + (flymake-js-load) + (flymake-css-load) + (flymake-java-1-load) + (add-hook 'flymake-mode-hook 'flymake-init-load-flymakemsg))) + + +(provide 'nxhtml-base) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; nxhtml-base.el ends here diff --git a/emacs.d/nxhtml/nxhtml-loaddefs.el b/emacs.d/nxhtml/nxhtml-loaddefs.el new file mode 100644 index 0000000..6ec7284 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml-loaddefs.el @@ -0,0 +1,4502 @@ +;; Autoloads for nXthml +;; +;; This file should be updated by `nxhtmlmaint-get-file-autoloads', +;; `nxhtmlmaint-get-dir-autoloads' or `nxhtmlmaint-get-all-autoloads'. +(eval-when-compile (require 'nxhtml-base)) +(eval-when-compile (require 'web-vcs)) + +;;;### (autoloads (html-chklnk) "../../../../../.emacs.d/nxhtml/nxhtml/html-chklnk" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/html-chklnk.el" (19364 +;;;;;; 59816)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/html-chklnk.el +(web-autoload-require 'html-chklnk 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-chklnk" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'html-chklnk 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/nxhtml/html-chklnk" loads) nil (put 'html-chklnk 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/nxhtml/html-chklnk" loads)))) + +;;;*** + +;;;### (autoloads (html-pagetoc-rebuild-toc html-pagetoc-insert-toc +;;;;;; html-pagetoc) "../../../../../.emacs.d/nxhtml/nxhtml/html-pagetoc" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/html-pagetoc.el" (19364 +;;;;;; 59816)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/html-pagetoc.el +(web-autoload-require 'html-pagetoc 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-pagetoc" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'html-pagetoc 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/nxhtml/html-pagetoc" loads) nil (put 'html-pagetoc 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/nxhtml/html-pagetoc" loads)))) + +(nxhtml-autoload 'html-pagetoc-insert-toc `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-pagetoc" nxhtml-install-dir) "\ +Inserts a table of contents for the current html file. +The html header tags h1-h6 found in the file are inserted into +this table. MIN-LEVEL and MAX-LEVEL specifies the minimum and +maximum level of h1-h6 to include. They should be integers. + +\(fn &optional MIN-LEVEL MAX-LEVEL)" t nil) + +(nxhtml-autoload 'html-pagetoc-rebuild-toc `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-pagetoc" nxhtml-install-dir) "\ +Update the table of contents inserted by `html-pagetoc-insert-toc'. + +\(fn)" t nil) + +(defconst html-pagetoc-menu-map (let ((map (make-sparse-keymap))) (define-key map [html-pagetoc-rebuild-toc] (list 'menu-item "Update Page TOC" 'html-pagetoc-rebuild-toc)) (define-key map [html-pagetoc-insert-style-guide] (list 'menu-item "Insert CSS Style for Page TOC" 'html-pagetoc-insert-style-guide)) (define-key map [html-pagetoc-insert-toc] (list 'menu-item "Insert Page TOC" 'html-pagetoc-insert-toc)) map)) + +;;;*** + +;;;### (autoloads (html-site-query-replace html-site-rgrep html-site-find-file +;;;;;; html-site-dired-current html-site-set-site html-site-buffer-or-dired-file-name +;;;;;; html-site) "../../../../../.emacs.d/nxhtml/nxhtml/html-site" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/html-site.el" (19364 +;;;;;; 59816)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/html-site.el +(web-autoload-require 'html-site 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-site" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'html-site 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/nxhtml/html-site" loads) nil (put 'html-site 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/nxhtml/html-site" loads)))) + +(nxhtml-autoload 'html-site-buffer-or-dired-file-name `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-site" nxhtml-install-dir) "\ +Return buffer file name or file pointed to in dired. + +\(fn)" nil nil) + +(nxhtml-autoload 'html-site-set-site `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-site" nxhtml-install-dir) "\ +Not documented + +\(fn NAME)" t nil) + +(nxhtml-autoload 'html-site-dired-current `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-site" nxhtml-install-dir) "\ +Open `dired' in current site top directory. + +\(fn)" t nil) + +(nxhtml-autoload 'html-site-find-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-site" nxhtml-install-dir) "\ +Find file in current site. + +\(fn)" t nil) + +(nxhtml-autoload 'html-site-rgrep `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-site" nxhtml-install-dir) "\ +Search current site's files with `rgrep'. +See `rgrep' for the arguments REGEXP and FILES. + +\(fn REGEXP FILES)" t nil) + +(nxhtml-autoload 'html-site-query-replace `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-site" nxhtml-install-dir) "\ +Query replace in current site's files. + +\(fn FROM TO FILE-REGEXP DELIMITED)" t nil) + +;;;*** + +;;;### (autoloads (html-toc) "../../../../../.emacs.d/nxhtml/nxhtml/html-toc" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/html-toc.el" (19364 59816)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/html-toc.el +(web-autoload-require 'html-toc 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-toc" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'html-toc 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/nxhtml/html-toc" loads) nil (put 'html-toc 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/nxhtml/html-toc" loads)))) + +(defconst html-toc-menu-map (let ((map (make-sparse-keymap))) (define-key map [html-toc-browse-frames-file] (list 'menu-item "Browse Frames File" 'html-toc-browse-frames-file)) (define-key map [html-toc-write-frames-file] (list 'menu-item "Write Frames File" 'html-toc-write-frames-file)) (define-key map [html-toc-write-toc-file] (list 'menu-item "Write TOC File for Frames" 'html-toc-write-toc-file)) (define-key map [html-toc-sep1] (list 'menu-item "--")) (define-key map [html-toc-edit-pages-file] (list 'menu-item "Edit List of Pages for TOC" 'html-site-edit-pages-file)) (define-key map [html-toc-create-pages-file] (list 'menu-item "Write List of Pages for TOC" 'html-toc-create-pages-file)) map)) + +;;;*** + +;;;### (autoloads (html-upl-ediff-file html-upl-edit-remote-file-with-toc +;;;;;; html-upl-edit-remote-file html-upl-upload-file html-upl-remote-dired +;;;;;; html-upl-upload-site html-upl-upload-site-with-toc html-upl) +;;;;;; "../../../../../.emacs.d/nxhtml/nxhtml/html-upl" "../../../../.emacs.d/nxhtml/nxhtml/html-upl.el" +;;;;;; (19364 59816)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/html-upl.el +(web-autoload-require 'html-upl 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-upl" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'html-upl 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/nxhtml/html-upl" loads) nil (put 'html-upl 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/nxhtml/html-upl" loads)))) + +(nxhtml-autoload 'html-upl-upload-site-with-toc `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-upl" nxhtml-install-dir) "\ +Not documented + +\(fn)" t nil) + +(nxhtml-autoload 'html-upl-upload-site `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-upl" nxhtml-install-dir) "\ +Not documented + +\(fn)" t nil) + +(nxhtml-autoload 'html-upl-remote-dired `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-upl" nxhtml-install-dir) "\ +Start dired for remote directory or its parent/ancestor. + +\(fn DIRNAME)" t nil) + +(nxhtml-autoload 'html-upl-upload-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-upl" nxhtml-install-dir) "\ +Upload a single file in a site. +For the definition of a site see `html-site-current'. + +\(fn FILENAME)" t nil) + +(nxhtml-autoload 'html-upl-edit-remote-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-upl" nxhtml-install-dir) "\ +Not documented + +\(fn)" t nil) + +(nxhtml-autoload 'html-upl-edit-remote-file-with-toc `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-upl" nxhtml-install-dir) "\ +Not documented + +\(fn)" t nil) + +(nxhtml-autoload 'html-upl-ediff-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-upl" nxhtml-install-dir) "\ +Run ediff on local and remote file. +FILENAME could be either the remote or the local file. + +\(fn FILENAME)" t nil) + +;;;*** + +;;;### (autoloads (html-wtoc) "../../../../../.emacs.d/nxhtml/nxhtml/html-wtoc" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/html-wtoc.el" (19364 +;;;;;; 59816)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/html-wtoc.el +(web-autoload-require 'html-wtoc 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/html-wtoc" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'html-wtoc 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/nxhtml/html-wtoc" loads) nil (put 'html-wtoc 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/nxhtml/html-wtoc" loads)))) + +;;;*** + +;;;### (autoloads (nxhtml-features-check nxhtml-customize nxhtml) +;;;;;; "../../../../../.emacs.d/nxhtml/nxhtml/nxhtml" "../../../../.emacs.d/nxhtml/nxhtml/nxhtml.el" +;;;;;; (19412 30366)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/nxhtml.el +(web-autoload-require 'nxhtml 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'nxhtml 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/nxhtml/nxhtml" loads) nil (put 'nxhtml 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/nxhtml/nxhtml" loads)))) + +(nxhtml-autoload 'nxhtml-customize `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml" nxhtml-install-dir) "\ +Customize nXhtml. + +\(fn)" t nil) + +(nxhtml-autoload 'nxhtml-features-check `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml" nxhtml-install-dir) "\ +Check if external modules used by nXhtml are found. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (nxhtml-report-bug) "../../../../../.emacs.d/nxhtml/nxhtml/nxhtml-bug" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-bug.el" (19278 +;;;;;; 3420)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/nxhtml-bug.el +(web-autoload-require 'nxhtml-bug 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-bug" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'nxhtml-report-bug `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-bug" nxhtml-install-dir) "\ +Report a bug in nXhtml. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (nxhtml-overview nxhtml-menu-mode nxhtml-browse-region +;;;;;; nxhtml-browse-file nxhtml-edit-with-gimp) "../../../../../.emacs.d/nxhtml/nxhtml/nxhtml-menu" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-menu.el" (19412 +;;;;;; 30366)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/nxhtml-menu.el +(web-autoload-require 'nxhtml-menu 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-menu" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'nxhtml-edit-with-gimp `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-menu" nxhtml-install-dir) "\ +Edit with GIMP buffer or file at point. + +\(fn)" t nil) + +(nxhtml-autoload 'nxhtml-browse-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-menu" nxhtml-install-dir) "\ +View file in web browser. + +\(fn FILE)" t nil) + +(nxhtml-autoload 'nxhtml-browse-region `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-menu" nxhtml-install-dir) "\ +View region in web browser. + +\(fn)" t nil) + +(defvar nxhtml-menu-mode nil "\ +Non-nil if Nxhtml-Menu mode is enabled. +See the command `nxhtml-menu-mode' for a description of this minor mode.") + +(nxhtml-custom-autoload 'nxhtml-menu-mode '../../../../../.emacs.d/nxhtml/nxhtml/nxhtml-menu nil) + +(nxhtml-autoload 'nxhtml-menu-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-menu" nxhtml-install-dir) "\ +Minor mode to turn on some key and menu bindings. +See `nxhtml-mode' for more information. + +This minor mode adds the entry 'nXhtml' to the menu bar. This +submenu gives easy access to most of the important features of +nXhtml. + +To see an (incomplete) overview in html format do +\\[nxhtml-overview]. + +* Note: Please observe that when loading nXhtml some file + associations are done, see `nxhtml-setup-file-assoc'. + +Here are some important features: + +- multiple major modes, see `define-mumamo-multi-major-mode' +- easy uploading and viewing of files, see for example + `html-upl-upload-file' + +- validation in XHTML part for php etc, see + `nxhtml-validation-header-mode' (you probably also want to know + about `nxhtml-toggle-visible-warnings' for this!) + +- converting of html to xhtml, see `tidy-buffer' + +Some smaller, useful, but easy-to-miss features: + +* Following links. The href and src attribute names are + underlined and a special keymap is bound to + them:\\ + + \\[mlinks-backward-link], \\[mlinks-forward-link] Move + between underlined href/src attributes + + \\[mlinks-goto], Mouse-1 Follow link inside Emacs + (if possible) + + It is even a little bit quicker when the links are in an active + state (marked with the face `isearch'):\\ + + \\[mlinks-backward-link], \\[mlinks-forward-link] Move + between underlined href/src attributes + \\[mlinks-goto], Mouse-1 Follow link inside Emacs (if possible) + + If the link is not into a file that you can edit (a mailto link + for example) you will be prompted for an alternative action. + +* Creating links. To make it easier to create links to id/name + attribute in different files there are two special + functions:\\ + + \\[nxhtml-save-link-to-here] copy link to id/name (you must + be in the tag to get the link) + \\[nxhtml-paste-link-as-a-tag] paste this as an a-tag. + +This minor mode also adds some bindings: + +\\{nxhtml-menu-mode-map} + +--------- +* Note: Some of the features supported are optional and available + only if other Emacs modules are found. Use + \\[nxhtml-features-check] to get a list of these optional + features and modules needed. You should however have no problem + with this if you have followed the installation instructions + for nXhtml. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'nxhtml-overview `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-menu" nxhtml-install-dir) "\ +Show a HTML page with an overview of nXhtml. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (nxhtml-validation-header-mode nxhtml-short-tag-help +;;;;;; nxhtml-mode) "../../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mode" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mode.el" (19412 +;;;;;; 30366)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mode.el +(web-autoload-require 'nxhtml-mode 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mode" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(when (fboundp 'nxml-mode) +(nxhtml-autoload 'nxhtml-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mode" nxhtml-install-dir) "\ +Major mode for editing XHTML documents. +It is based on `nxml-mode' and adds some features that are useful +when editing XHTML files.\\ + +The XML menu contains functionality added by `nxml-mode' (on +which this major mode is based). There is also a popup menu +added to the [apps] key. + +The most important features are probably completion and +validation, which is inherited from `nxml-mode' with some small +addtions. In very many situation you can use completion. To +access it type \\[nxml-complete]. Completion has been enhanced in +the following way: + +- If region is active and visible then completion will surround the + region with the chosen tag's start and end tag. However only the + starting point is checked for validity. If something is wrong after + insertion you will however immediately see it if you have validation + on. +- It can in some cases give assistance with attribute values. +- Completion can be customized, see the menus XHTML - Completion: + * You can use a menu popup style completion. + * You can have alternatives grouped. + * You can get a short help text shown for each alternative. +- There does not have to be a '<' before point for tag name + completion. (`nxml-mode' requires a '<' before point for tag name + completion.) +- Completes xml version and encoding. +- Completes in an empty buffer, ie inserts a skeleton. + +Here are all key bindings in nxhtml-mode itself: + +\\{nxhtml-mode-map} + +Notice that other minor mode key bindings may also be active, as +well as emulation modes. Do \\[describe-bindings] to get a list +of all active key bindings. Also, *VERY IMPORTANT*, if mumamo is +used in the buffer each mumamo chunk has a different major mode +with different key bindings. You can however still see all +bindings with \\[describe-bindings], but you have to do that with +point in the mumamo chunk you want to know the key bindings in. + +\(fn)" t nil)) + +(nxhtml-autoload 'nxhtml-short-tag-help `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mode" nxhtml-install-dir) "\ +Display description of tag TAG. If TAG is omitted, try tag at point. + +\(fn TAG)" t nil) + +(when (fboundp 'nxml-mode) +(nxhtml-autoload 'nxhtml-validation-header-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mode" nxhtml-install-dir) "\ +If on use a Fictive XHTML Validation Header for the buffer. +See `nxhtml-set-validation-header' for information about Fictive XHTML Validation Headers. + +This mode may be turned on automatically in two ways: +- If you try to do completion of a XHTML tag or attribute then + `nxthml-mode' may ask you if you want to turn this mode on if + needed. +- You can also choose to have it turned on automatically whenever + a mumamo multi major mode is used, see + `nxhtml-validation-header-if-mumamo' for further information. + +\(fn &optional ARG)" t nil)) + +;;;*** + +;;;### (autoloads (mako-nxhtml-mumamo-mode asp-nxhtml-mumamo-mode +;;;;;; eruby-nxhtml-mumamo-mode jsp-nxhtml-mumamo-mode gsp-nxhtml-mumamo-mode +;;;;;; smarty-nxhtml-mumamo-mode mjt-nxhtml-mumamo-mode genshi-nxhtml-mumamo-mode +;;;;;; mason-nxhtml-mumamo-mode django-nxhtml-mumamo-mode embperl-nxhtml-mumamo-mode +;;;;;; nxhtml-mumamo-mode) "../../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo.el" (19390 +;;;;;; 29616)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo.el +(web-autoload-require 'nxhtml-mumamo 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for (X)HTML with main mode `nxhtml-mode'. +This covers inlined style and javascript and PHP. + +See also `mumamo-alt-php-tags-mode'." t) + +(nxhtml-autoload 'embperl-nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for Embperl files with main mode `nxhtml-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'django-nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for Django with main mode `nxhtml-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'mason-nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for Mason using main mode `nxhtml-mode'. +This covers inlined style and javascript." t) + +(nxhtml-autoload 'genshi-nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for Genshi with main mode `nxhtml-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'mjt-nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for MJT with main mode `nxhtml-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'smarty-nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for Smarty with main mode `nxhtml-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'gsp-nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for GSP with main mode `nxhtml-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'jsp-nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for JSP with main mode `nxhtml-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'eruby-nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for eRuby with main mode `nxhtml-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'asp-nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for ASP with main mode `nxhtml-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'mako-nxhtml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes for Mako with main mode `nxhtml-mode'. +This also covers inlined style and javascript." t) + +;;;*** + +;;;### (autoloads (nxml-where-global-mode nxml-where-mode nxml-where) +;;;;;; "../../../../../.emacs.d/nxhtml/nxhtml/nxml-where" "../../../../.emacs.d/nxhtml/nxhtml/nxml-where.el" +;;;;;; (19365 37362)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/nxml-where.el +(web-autoload-require 'nxml-where 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxml-where" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'nxml-where 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/nxhtml/nxml-where" loads) nil (put 'nxml-where 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/nxhtml/nxml-where" loads)))) + +(nxhtml-autoload 'nxml-where-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxml-where" nxhtml-install-dir) "\ +Shows path in mode line. + +\(fn &optional ARG)" t nil) + +(defvar nxml-where-global-mode nil "\ +Non-nil if Nxml-Where-Global mode is enabled. +See the command `nxml-where-global-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `nxml-where-global-mode'.") + +(nxhtml-custom-autoload 'nxml-where-global-mode '../../../../../.emacs.d/nxhtml/nxhtml/nxml-where nil) + +(nxhtml-autoload 'nxml-where-global-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/nxml-where" nxhtml-install-dir) "\ +Toggle Nxml-Where mode in every possible buffer. +With prefix ARG, turn Nxml-Where-Global mode on if and only if +ARG is positive. +Nxml-Where mode is enabled in all buffers where +`nxml-where-turn-on-in-nxml-child' would do it. +See `nxml-where-mode' for more information on Nxml-Where mode. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (rngalt-set-validation-header) "../../../../../.emacs.d/nxhtml/nxhtml/rngalt" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/rngalt.el" (19365 37362)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/rngalt.el +(web-autoload-require 'rngalt 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/rngalt" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'rngalt-set-validation-header `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/rngalt" nxhtml-install-dir) "\ +Not documented + +\(fn START-OF-DOC)" nil nil) + +;;;*** + +;;;### (autoloads (tidy-build-menu tidy) "../../../../../.emacs.d/nxhtml/nxhtml/tidy-xhtml" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/tidy-xhtml.el" (19364 +;;;;;; 59816)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/tidy-xhtml.el +(web-autoload-require 'tidy-xhtml 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/tidy-xhtml" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'tidy 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/nxhtml/tidy-xhtml" loads) nil (put 'tidy 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/nxhtml/tidy-xhtml" loads)))) + +(nxhtml-autoload 'tidy-build-menu `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/tidy-xhtml" nxhtml-install-dir) "\ +Set up the tidy menu in MAP. +Used to set up a Tidy menu in your favourite mode. + +\(fn &optional MAP)" t nil) + +;;;*** + +;;;### (autoloads (xhtml-help xhtml-help-show-tag-ref xhtml-help-tag-at-point +;;;;;; xhtml-help-show-css-ref) "../../../../../.emacs.d/nxhtml/nxhtml/xhtml-help" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/xhtml-help.el" (19364 +;;;;;; 59816)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml/xhtml-help.el +(web-autoload-require 'xhtml-help 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/xhtml-help" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'xhtml-help-show-css-ref `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/xhtml-help" nxhtml-install-dir) "\ +Show CSS reference for CSS property name at point. + +\(fn)" t nil) + +(nxhtml-autoload 'xhtml-help-tag-at-point `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/xhtml-help" nxhtml-install-dir) "\ +Get xhtml tag name at or before point. + +\(fn)" nil nil) + +(nxhtml-autoload 'xhtml-help-show-tag-ref `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml/xhtml-help" nxhtml-install-dir) "\ +Show xhtml reference for tag name at or before point. + +\(fn)" t nil) + +(let ((loads (get 'xhtml-help 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/nxhtml/xhtml-help" loads) nil (put 'xhtml-help 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/nxhtml/xhtml-help" loads)))) + +;;;*** + +;;;### (autoloads (nxhtmlmaint-byte-uncompile-all nxhtmlmaint-byte-recompile +;;;;;; nxhtmlmaint-start-byte-compilation) "../../../../../.emacs.d/nxhtml/nxhtmlmaint" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtmlmaint.el" (19378 49412)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtmlmaint.el +(web-autoload-require 'nxhtmlmaint 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtmlmaint" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'nxhtmlmaint-start-byte-compilation `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtmlmaint" nxhtml-install-dir) "\ +Start byte compilation of nXhtml in new Emacs instance. +Byte compiling in general makes elisp code run 5-10 times faster +which is quite noticeable when you use nXhtml. + +This will also update the file nxhtml-loaddefs.el. + +You must restart Emacs to use the byte compiled files. + +If for some reason the byte compiled files does not work you can +remove then with `nxhtmlmaint-byte-uncompile-all'. + +\(fn)" t nil) + +(nxhtml-autoload 'nxhtmlmaint-byte-recompile `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtmlmaint" nxhtml-install-dir) "\ +Recompile or compile all nXhtml files in current Emacs. + +\(fn)" t nil) + +(nxhtml-autoload 'nxhtmlmaint-byte-uncompile-all `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtmlmaint" nxhtml-install-dir) "\ +Delete byte compiled files in nXhtml. +This will also update the file nxhtml-loaddefs.el. + +See `nxhtmlmaint-start-byte-compilation' for byte compiling. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (csharp-mode csharp-mode-hook) "../../../../../.emacs.d/nxhtml/related/csharp-mode" +;;;;;; "../../../../.emacs.d/nxhtml/related/csharp-mode.el" (19412 +;;;;;; 27328)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/csharp-mode.el +(web-autoload-require 'csharp-mode 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/csharp-mode" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(add-to-list 'auto-mode-alist '("\\.cs$" . csharp-mode)) + +(defvar csharp-mode-hook nil "\ +*Hook called by `csharp-mode'.") + +(nxhtml-custom-autoload 'csharp-mode-hook '../../../../../.emacs.d/nxhtml/related/csharp-mode t) + +(nxhtml-autoload 'csharp-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/csharp-mode" nxhtml-install-dir) "\ +Major mode for editing C# code. This mode is derived from CC Mode to +support C#. + +The hook `c-mode-common-hook' is run with no args at mode +initialization, then `csharp-mode-hook'. + +This mode will automatically add a regexp for Csc.exe error and warning +messages to the `compilation-error-regexp-alist'. + +Key bindings: +\\{csharp-mode-map} + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (django-mode) "../../../../../.emacs.d/nxhtml/related/django" +;;;;;; "../../../../.emacs.d/nxhtml/related/django.el" (19411 8712)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/django.el +(web-autoload-require 'django 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/django" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'django-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/django" nxhtml-install-dir) "\ +Simple Django mode for use with mumamo. +This mode only provides syntax highlighting. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (flymake-css-load) "../../../../../.emacs.d/nxhtml/related/flymake-css" +;;;;;; "../../../../.emacs.d/nxhtml/related/flymake-css.el" (19292 +;;;;;; 15280)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/flymake-css.el +(web-autoload-require 'flymake-css 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/flymake-css" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'flymake-css-load `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/flymake-css" nxhtml-install-dir) "\ +Not documented + +\(fn)" nil nil) + +;;;*** + +;;;### (autoloads (flymake-java-1-load) "../../../../../.emacs.d/nxhtml/related/flymake-java-1" +;;;;;; "../../../../.emacs.d/nxhtml/related/flymake-java-1.el" (19264 +;;;;;; 30606)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/flymake-java-1.el +(web-autoload-require 'flymake-java-1 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/flymake-java-1" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'flymake-java-1-load `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/flymake-java-1" nxhtml-install-dir) "\ +Not documented + +\(fn)" nil nil) + +;;;*** + +;;;### (autoloads (flymake-js-load flymake-js) "../../../../../.emacs.d/nxhtml/related/flymake-js" +;;;;;; "../../../../.emacs.d/nxhtml/related/flymake-js.el" (19218 +;;;;;; 45782)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/flymake-js.el +(web-autoload-require 'flymake-js 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/flymake-js" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'flymake-js 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/related/flymake-js" loads) nil (put 'flymake-js 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/related/flymake-js" loads)))) + +(nxhtml-autoload 'flymake-js-load `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/flymake-js" nxhtml-install-dir) "\ +Not documented + +\(fn)" nil nil) + +;;;*** + +;;;### (autoloads (iss-mode) "../../../../../.emacs.d/nxhtml/related/iss-mode" +;;;;;; "../../../../.emacs.d/nxhtml/related/iss-mode.el" (19294 +;;;;;; 57644)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/iss-mode.el +(web-autoload-require 'iss-mode 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/iss-mode" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'iss-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/iss-mode" nxhtml-install-dir) "\ +Major mode for editing InnoSetup script files. Upon startup iss-mode-hook is run. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (iss-mumamo-mode) "../../../../../.emacs.d/nxhtml/related/iss-mumamo" +;;;;;; "../../../../.emacs.d/nxhtml/related/iss-mumamo.el" (19294 +;;;;;; 57644)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/iss-mumamo.el +(web-autoload-require 'iss-mumamo 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/iss-mumamo" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'iss-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/iss-mumamo" nxhtml-install-dir) "\ +Turn on multiple major modes Inno Setup .iss files. +The main major mode will be `iss-mode'. +The [code] section, if any, will be in `pascal-mode'." t) + +;;;*** + +;;;### (autoloads (inferior-moz-mode moz-minor-mode) "../../../../../.emacs.d/nxhtml/related/moz" +;;;;;; "../../../../.emacs.d/nxhtml/related/moz.el" (19048 2104)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/moz.el +(web-autoload-require 'moz 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/moz" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'moz-minor-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/moz" nxhtml-install-dir) "\ +MozRepl minor mode for interaction with Firefox. +With no argument, this command toggles the mode. +Non-null prefix argument turns on the mode. +Null prefix argument turns off the mode. + +When this minor mode is enabled, some commands become available +to send current code area (as understood by c-mark-function) or +region or buffer to an inferior MozRepl process (which will be +started as needed). + +The following keys are bound in this minor mode: + +\\{moz-minor-mode-map} + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'inferior-moz-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/moz" nxhtml-install-dir) "\ +Major mode for interacting with Firefox via MozRepl. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (global-mozadd-mirror-mode mozadd-mirror-mode global-mozadd-refresh-edited-on-save-mode +;;;;;; mozadd-refresh-edited-on-save-mode) "../../../../../.emacs.d/nxhtml/related/mozadd" +;;;;;; "../../../../.emacs.d/nxhtml/related/mozadd.el" (19235 5252)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/mozadd.el +(web-autoload-require 'mozadd 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/mozadd" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'mozadd-refresh-edited-on-save-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/mozadd" nxhtml-install-dir) "\ +Refresh mozadd edited file in Firefox when saving file. +The mozadd edited file is the file in the last buffer visited in +`mozadd-mirror-mode'. + +You can use this for example when you edit CSS files. + +The mozadd edited file must be shown in Firefox and visible. + +\(fn &optional ARG)" t nil) + +(defvar global-mozadd-refresh-edited-on-save-mode nil "\ +Non-nil if Global-Mozadd-Refresh-Edited-On-Save mode is enabled. +See the command `global-mozadd-refresh-edited-on-save-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `global-mozadd-refresh-edited-on-save-mode'.") + +(nxhtml-custom-autoload 'global-mozadd-refresh-edited-on-save-mode '../../../../../.emacs.d/nxhtml/related/mozadd nil) + +(nxhtml-autoload 'global-mozadd-refresh-edited-on-save-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/mozadd" nxhtml-install-dir) "\ +Toggle Mozadd-Refresh-Edited-On-Save mode in every possible buffer. +With prefix ARG, turn Global-Mozadd-Refresh-Edited-On-Save mode on if and only if +ARG is positive. +Mozadd-Refresh-Edited-On-Save mode is enabled in all buffers where +`(lambda nil (when (or (derived-mode-p (quote css-mode)) (mozadd-html-buffer-file-p)) (mozadd-refresh-edited-on-save-mode 1)))' would do it. +See `mozadd-refresh-edited-on-save-mode' for more information on Mozadd-Refresh-Edited-On-Save mode. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'mozadd-mirror-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/mozadd" nxhtml-install-dir) "\ +Mirror content of current file buffer immediately in Firefox. +When you turn on this mode the file will be opened in Firefox. +Every change you make in the buffer will trigger a redraw in +Firefox - regardless of if you save the file or not. + +For the mirroring to work the edited file must be shown in +Firefox and visible. + +If `nxml-where-mode' is on the marks will also be shown in +Firefox as CSS outline style. You can customize the style +through the option `mozadd-xml-path-outline-style'. + +See also `mozadd-refresh-edited-on-save-mode'. + +\(fn &optional ARG)" t nil) + +(defvar global-mozadd-mirror-mode nil "\ +Non-nil if Global-Mozadd-Mirror mode is enabled. +See the command `global-mozadd-mirror-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `global-mozadd-mirror-mode'.") + +(nxhtml-custom-autoload 'global-mozadd-mirror-mode '../../../../../.emacs.d/nxhtml/related/mozadd nil) + +(nxhtml-autoload 'global-mozadd-mirror-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/mozadd" nxhtml-install-dir) "\ +Toggle Mozadd-Mirror mode in every possible buffer. +With prefix ARG, turn Global-Mozadd-Mirror mode on if and only if +ARG is positive. +Mozadd-Mirror mode is enabled in all buffers where +`(lambda nil (when (mozadd-html-buffer-file-p) (mozadd-mirror-mode 1)))' would do it. +See `mozadd-mirror-mode' for more information on Mozadd-Mirror mode. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (php-mode php-file-patterns php) "../../../../../.emacs.d/nxhtml/related/php-mode" +;;;;;; "../../../../.emacs.d/nxhtml/related/php-mode.el" (19218 +;;;;;; 45782)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/php-mode.el +(web-autoload-require 'php-mode 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/php-mode" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'php 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/related/php-mode" loads) nil (put 'php 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/related/php-mode" loads)))) + +(defvar php-file-patterns '("\\.php[s34]?\\'" "\\.phtml\\'" "\\.inc\\'") "\ +List of file patterns for which to automatically invoke `php-mode'.") + +(nxhtml-custom-autoload 'php-file-patterns '../../../../../.emacs.d/nxhtml/related/php-mode nil) + +(nxhtml-autoload 'php-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/php-mode" nxhtml-install-dir) "\ +Major mode for editing PHP code. + +\\{php-mode-map} + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (smarty-mode smarty) "../../../../../.emacs.d/nxhtml/related/smarty-mode" +;;;;;; "../../../../.emacs.d/nxhtml/related/smarty-mode.el" (19235 +;;;;;; 5252)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/smarty-mode.el +(web-autoload-require 'smarty-mode 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/smarty-mode" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'smarty 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/related/smarty-mode" loads) nil (put 'smarty 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/related/smarty-mode" loads)))) + +(nxhtml-autoload 'smarty-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/smarty-mode" nxhtml-install-dir) "\ +Smarty Mode +*********** + +Smarty Mode is a GNU XEmacs major mode for editing Smarty templates. + +1 Introduction +************** + +Smarty-Mode is a mode allowing easy edit of Smarty templates: +highlight, templates, navigation into source files... + + + +Features (new features in bold) : + + * Completion + + * Customizable + + * Highlight + + * Menu + + * Stuttering + + * Templates + - Built-in Functions + + - User Functions + + - Variable Modifiers + + - Plugin (Functions) + * BlockRepeatPlugin + + * ClipCache + + * Smarty Formtool + + * Smarty Paginate + + * Smarty Validate + + - Plugin (Variable Modifiers) + * AlternativeDateModifierPlugin + + * B2Smilies + + * BBCodePlugin + + - Fonctions Non-Smarty + + + +This manual describes Smarty Mode version 0.0.5. + +2 Installation +************** + +2.1 Requirements +================ + +Smarty Mode is a XEmacs major mode that needs the following +software/packages: + + * XEmacs (http://www.xemacs.org/). + + * `font-lock' mode generaly installed with XEmacs. + + * `assoc' mode generaly installed with XEmacs. + + * `easymenu' mode generaly installed with XEmacs. + + * `hippie-exp' mode generaly installed with XEmacs. + +Before continuing, you must be sure to have all this packages +installed. + +2.2 Download +============ + +Two internet address to download Smarty Mode : + + * Principal: Smarty-Mode 0.0.5 + (http://deboutv.free.fr/lisp/smarty/download/smarty-0.0.5.tar.gz) + (http://deboutv.free.fr/lisp/smarty/) + + * Secondary: Smarty-Mode 0.0.5 + (http://www.morinie.fr/lisp/smarty/download/smarty-0.0.5.tar.gz) + (http://www.morinie.fr/lisp/smarty/) + + * Old releases: Smarty-Mode + (http://deboutv.free.fr/lisp/smarty/download.php) + (http://deboutv.free.fr/lisp/smarty/) + +2.3 Installation +================ + +2.3.1 Installation +------------------ + +To install Smarty Mode you need to choose an installation directory +\(for example `/usr/local/share/lisp' or `c:lisp'). The administrator +must have the write rights on this directory. + +With your favorite unzip software, unzip the archive in the +installation directory. + +Example: + cd /usr/local/share/lisp + tar zxvf smarty-0.0.5.tar.gz +Now you have a `smarty' directory in the installation directory. This +directory contains 2 files `smarty-mode.el' and `smarty-mode.elc' and +another directory `docs' containing the documentation. + +You need to configure XEmacs. open you initialization file `init.el' +\(open the file or start XEmacs then choose the Options menu and Edit +Init File). Add the following lines (the installation directory in +this example is `/usr/local/share/lisp') : + + (setq load-path + (append (list \"/usr/local/share/lisp/\") load-path)) + (nxhtml-autoload 'smarty-mode \"smarty-mode\" \"Smarty Mode\" t) + +2.3.2 Update +------------ + +The update is easy. You need to unzip the archive in the installation +directory to remove the old release. + +Example: + cd /usr/local/share/lisp + rm -rf smarty + tar zxvf smarty-0.0.5.tar.gz + +2.4 Invoke Smarty-Mode +====================== + +You have two possibilities to invoke the Smarty Mode. + + - Manually: At each file opening you need to launch Smarty Mode + with the following command: + + `M-x smarty-mode' + + - Automatically: Add the following linesin your initialization + file `init.el' : + + (setq auto-mode-alist + (append + '((\"\\.tpl$\" . smarty-mode)) + auto-mode-alist)) + + +3 Customization +*************** + +This chapter describes the differents parameters and functions that +you can change to customize Smarty Mode. To do that, open a Smarty +file, click on the Smarty menu and choose Options then Browse +Options.... + +3.1 Parameters +============== + +3.1.1 Mode +---------- + +Smarty Mode has 2 modes allowing to simplify the writing of Smarty +templates. You can enable/disable each mode individually. + +`smarty-electric-mode' + Type: boolean + Default value: `t' + Description: If `t'; enable automatic generation of template. + If `nil'; template generators can still be invoked through key + bindings and menu. Is indicated in the modeline by \"/e\" after + the mode name and can be toggled by `smarty-electric-mode'. + +`smarty-stutter-mode' + Type: boolean + Default value: `t' + Description: If `t'; enable the stuttering. Is indicated in the + modeline by \"/s\" after the mode name and can be toggled by + `smarty-stutter-mode'. + +3.1.2 Menu +---------- + +Smarty Mode has also 1 menu that you can enable/disable. The menu +Sources is specific to each Smarty files opened. + +`smarty-source-file-menu' + Type: boolean + Default value: `t' + Description: If `t'; the Sources menu is enabled. This menu + contains the list of Smarty file located in the current + directory. The Sources menu scans the directory when a file is + opened. + +3.1.3 Menu +---------- + +`smarty-highlight-plugin-functions' + Type: boolean + Default value: `t' + Description: If `t'; the functions described in the smarty + plugins are highlighted. + +3.1.4 Templates +--------------- + +3.1.4.1 Header +.............. + +`smarty-file-header' + Type: string + Default value: `\"\"' + Description: String or file to insert as file header. If the + string specifies an existing file name the contents of the file + is inserted; otherwise the string itself is inserted as file + header. + Type `C-j' for newlines. + The follonwing keywords are supported: + : replaced by the file name. + : replaced by the user name and email address. + : replaced by `user-login-name'. + : replaced by `smarty-company-name' content. + : replaced by the current date. + : replaced by the current year. + : replaced by `smarty-copyright-string' content. + : final cursor position. + +`smarty-file-footer' + Type: string + Default value: `\"\"' + Description: String or file to insert as file footer. See + `smarty-file-header' + +`smarty-company-name' + Type: string + Default value: `\"\"' + Description: Name of the company to insert in file header. + +`smarty-copyright-string' + Type: string + Default value: `\"\"' + Description: Coryright string to insert in file header. + +`smarty-date-format' + Type: string + Default value: `\"%Y-%m-%d\"' + Description: Date format. + +`smarty-modify-date-prefix-string' + Type: string + Default value: `\"\"' + Description: Prefix string of modification date in Smarty file + header. + +`smarty-modify-date-on-saving' + Type: bool + Default value: `nil' + Description: If `t'; update the modification date when the + buffer is saved. + +3.1.5 Miscellaneous +------------------- + +`smarty-left-delimiter' + Type: string + Default value: `\"\"' + Description: Left escaping delimiter for Smarty templates. + +`smarty-right-delimiter' + Type: string + Default value: `\"\"' + Description: Right escaping delimiter for Smarty templates. + +`smarty-intelligent-tab' + Type: bool + Default value: `t' + Description: If `t'; TAB does indentation; completion and insert + tabulations. If `nil'; TAB does only indentation. + +`smarty-word-completion-in-minibuffer' + Type: bool + Default value: `t' + Description: If `t'; enable completion in the minibuffer. + +`smarty-word-completion-case-sensitive' + Type: bool + Default value: `nil' + Description: If `t'; completion is case sensitive. + +3.2 Functions +============= + +3.2.1 Mode +---------- + +`smarty-electric-mode' + Menu: Smarty -> Options -> Mode -> Electric Mode + Keybinding: `C-c C-m C-e' + Description: This functions is used to enable/disable the + electric mode. + +`smarty-stutter-mode' + Menu: Smarty -> Options -> Mode -> Stutter Mode + Keybinding: `C-c C-m C-s' + Description: This function is used to enable/disable the stutter + mode. + +4 Menus +******* + +There are 2 menus: Smarty and Sources. All theses menus can be +accessed from the menubar or from the right click. This chapter +describes each menus. + +4.1 Smarty +========== + +This is the main menu of Smarty Mode. It allows an easy access to the +main features of the Smarty Mode: Templates (see *Note Templates::) +and Options (see *Note Customization::). + +This menu contains also 3 functions that are discussed in the next +part. + +4.1.1 Functions +--------------- + +`smarty-show-messages' + Menu: Smarty -> Show Messages + Keybinding: `C-c M-m' + Description: This function opens the *Messages* buffer to + display previous error messages. + +`smarty-doc-mode' + Menu: Smarty -> Smarty Mode Documentation + Keybinding: `C-c C-h' + Description: This function opens the *Help* buffer and prints in + it the Smarty Mode documentation. + +`smarty-version' + Menu: Smarty -> Version + Keybinding: `C-c C-v' + Description: This function displays in the minibuffer the + current Smarty Mode version with the timestamp. + +4.2 Sources +=========== + +The Sources menu shows the Smarty files in the current directory. If +you add or delete a file in the current directory, you need to +refresh the menu. + +4.2.1 Customization +------------------- + +`smarty-source-file-menu' + Type: boolean + Default value: `t' + Description: If `t'; the Sources menu is enabled. This menu + contains the list of Smarty file located in the current + directory. The Sources menu scans the directory when a file is + opened. + +4.2.2 Functions +--------------- + +`smarty-add-source-files-menu' + Menu: Sources -> *Rescan* + Keybinding: `C-c C-s C-u' + Description: This function is used to refresh the Sources menu. + +5 Stuttering +************ + +The stutter mode is a mode that affects a function to a key. For +example, when you use the `ENTER' key, the associated function will +create a new line and indent it. + +5.1 Customization +================= + +`smarty-stutter-mode' + Type: boolean + Default value: `t' + Description: If `t'; enable the stuttering. Is indicated in the + modeline by \"/s\" after the mode name and can be toggled by + `smarty-stutter-mode'. + +5.2 Functions +============= + +`SPACE' + If in comment, indent the comment and add new line if necessary. + In other case, add a space. + +`(' + If the previous character is a `(', the `((' will be replaced by + `['. + If the previous character is a `[', the `[(' will be replaced by + `{'. + In other case, insert a `('. + +`)' + If the previous character is a `)', the `))' will be replaced by + `]'. + If the previous character is a `]', the `])' will be replaced by + `}'. + In other case, insert a `)'. + +6 Templates +*********** + +In the Smarty Mode, the Smarty functions (like if, while, for, fopen, +fclose) are predefined in functions called \"Templates\". + +Each template can be invoked by the function name or by using the + key after the Smarty function name in the buffer (Note, using +`M-' disable the template). + +A template can be aborted by using the `C-g' or by lefting empty the +tempate prompt (in the minibuffer). + +6.1 Customization +================= + +`smarty-electric-mode' + Type: boolean + Default value: `t' + Description: If `t'; enable automatic generation of template. + If `nil'; template generators can still be invoked through key + bindings and menu. Is indicated in the modeline by \"/e\" after + the mode name and can be toggled by `smarty-electric-mode'. + +For a complete description of the template customizable variables, +see *Note Cu01-Pa01-Template:: + +6.2 Functions +============= + +6.2.1 Smarty Functions +---------------------- + +For Smarty functions, see PDF or HTML documentation. + +6.2.2 Non-Smarty Functions +-------------------------- + +`smarty-template-header' + Menu: Smarty -> Templates -> Insert Header + Keybinding: `C-c C-t C-h' + Description: This function is used to insert a header in the + current buffer. + +`smarty-template-footer' + Menu: Smarty -> Templates -> Insert Footer + Keybinding: `C-c C-t C-f' + Description: This function is used to insert a footer in the + current buffer. + +`smarty-template-insert-date' + Menu: Smarty -> Templates -> Insert Date + Keybinding: `C-c C-t C-d i' + Description: This function is used to insert the date in the + current buffer. + +`smarty-template-modify' + Menu: Smarty -> Templates -> Modify Date + Keybinding: `C-c C-t C-d m' + Description: This function is used to modify the last + modification date in the current buffer. + +7 Bugs, Help +************ + + * To report bugs: Bugtracker + (http://bugtracker.morinie.fr/lisp/set_project.php?project_id=2) + + * To obtain help you can post on the dedicated forum: Forum + (http://forum.morinie.fr/lisp/) + +8 Key bindings +************** + +\\{smarty-mode-map} + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (tt-mode) "../../../../../.emacs.d/nxhtml/related/tt-mode" +;;;;;; "../../../../.emacs.d/nxhtml/related/tt-mode.el" (18603 15794)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/tt-mode.el +(web-autoload-require 'tt-mode 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/tt-mode" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'tt-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/tt-mode" nxhtml-install-dir) "\ +Major mode for editing Template Toolkit files. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (visual-basic-mode) "../../../../../.emacs.d/nxhtml/related/visual-basic-mode" +;;;;;; "../../../../.emacs.d/nxhtml/related/visual-basic-mode.el" +;;;;;; (19235 5252)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/visual-basic-mode.el +(web-autoload-require 'visual-basic-mode 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/visual-basic-mode" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'visual-basic-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/visual-basic-mode" nxhtml-install-dir) "\ +A mode for editing Microsoft Visual Basic programs. +Features automatic indentation, font locking, keyword capitalization, +and some minor convenience functions. +Commands: +\\{visual-basic-mode-map} + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (wikipedia-draft-buffer wikipedia-draft-page wikipedia-draft +;;;;;; wikipedia-mode) "../../../../../.emacs.d/nxhtml/related/wikipedia-mode" +;;;;;; "../../../../.emacs.d/nxhtml/related/wikipedia-mode.el" (19278 +;;;;;; 3422)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/related/wikipedia-mode.el +(web-autoload-require 'wikipedia-mode 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/wikipedia-mode" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'wikipedia-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/wikipedia-mode" nxhtml-install-dir) "\ +Major mode for editing wikimedia style wikis. +Major mode for editing articles written in the markup language +used by Wikipedia, the free on-line +encyclopedia (see URL `http://www.wikipedia.org'). + +There are several ways to use wikipedia-mode: + +- You can simply cut and paste articles between Emacs and your + web browser's text box. +- If you are using Firefox you can use the It's All Text add-on + for Firefox. +- You can use MozEx, a Mozilla/Firefox web browser extension that + allows you to call Emacs from a text + box (see URL `http://mozex.mozdev.org/'). +- Another way is to use the PERL script ee-helper, which allows + you to up and download wiki texts. + +Wikipedia articles are usually unfilled: newline characters are not +used for breaking paragraphs into lines. Unfortunately, Emacs does not +handle word wrapping yet. As a workaround, wikipedia-mode turns on +longlines-mode automatically. In case something goes wrong, the +following commands may come in handy: + +\\[wikipedia-fill-article] fills the buffer. +\\[wikipedia-unfill-article] unfills the buffer. +Be warned that function can be dead slow, better use wikipedia-unfill-paragraph-or-region. +\\[wikipedia-unfill-paragraph-or-region] unfills the paragraph +\\[wikipedia-unfill-paragraph-simple] doehe same but simpler. + + + +The following commands put in markup structures. + +\\[wikipedia-insert-bold-italic] bold+italic +\\[wikipedia-insert-bold] bold text +\\[wikipedia-insert-italics] italics +\\[wikipedia-insert-nowiki] no wiki markup +\\[wikipedia-insert-link-wiki] inserts a link + +The following commands are also defined: +\\[wikipedia-insert-user] inserts user name +\\[wikipedia-insert-signature] inserts ~~~~ +\\[wikipedia-insert-enumerate] inserts enumerate type structures +\\[wikipedia-insert-itemize] inserts itemize type structures +\\[wikipedia-insert-hline] inserts a hline + +The draft functionality +\\[wikipedia-draft] +\\[wikipedia-draft-region] +\\[wikipedia-draft-view-draft] +\\[wikipedia-draft-page] +\\[wikipedia-draft-buffer] + +Replying and sending functionality +\\[wikipedia-reply-at-point-simple] +\\[wikipedia-draft-reply] + + +The register functionality +\\[wikipedia-copy-page-to-register] +\\[defun wikipedia-insert-page-to-register] + + +Some simple editing commands. +\\[wikipedia-enhance-indent] +\\[wikipedia-yank-prefix] +\\[wikipedia-unfill-paragraph-or-region] + + + +\\[wikipedia-terminate-paragraph] starts a new list item or paragraph in a context-aware manner. + +\(fn)" t nil) + +(nxhtml-autoload 'wikipedia-draft `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/wikipedia-mode" nxhtml-install-dir) "\ +Open a temporary buffer in wikipedia mode for editing an + wikipedia draft, which an arbitrary piece of data. After + finishing the editing either use \\[wikipedia-draft-buffer] to + send the data into the wikipedia-draft-data-file, or send the + buffer using `wikipedia-draft-send-to-mozex' and insert it later + into a wikipedia article. + +\(fn)" t nil) + +(nxhtml-autoload 'wikipedia-draft-page `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/wikipedia-mode" nxhtml-install-dir) "\ +Not documented + +\(fn)" t nil) + +(nxhtml-autoload 'wikipedia-draft-buffer `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/related/wikipedia-mode" nxhtml-install-dir) "\ +Wikipedia-draft-buffer sends the contents of the current (temporary) +buffer to the wikipedia-draft-buffer, see the variable +wikipedia-draft-data-file. + +\(fn)" t nil) + +(defvar wikipedia-draft-send-archive t "\ +*Archive the reply.") + +;;;*** + +;;;### (autoloads (ert-run-tests-interactively ert-deftest) "../../../../../.emacs.d/nxhtml/tests/ert" +;;;;;; "../../../../.emacs.d/nxhtml/tests/ert.el" (19173 59742)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/tests/ert.el +(web-autoload-require 'ert 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/tests/ert" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'ert-deftest `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/tests/ert" nxhtml-install-dir) "\ +Define NAME (a symbol) as a test. + +\(fn NAME () [:documentation DOCSTRING] [:expected-result TYPE] BODY...)" nil (quote macro)) + +(put 'ert-deftest 'lisp-indent-function '2) + +(nxhtml-autoload 'ert-run-tests-interactively `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/tests/ert" nxhtml-install-dir) "\ +Run the tests specified by SELECTOR and display the results in a buffer. + +\(fn SELECTOR &optional OUTPUT-BUFFER-NAME MESSAGE-FN)" t nil) + +;;;*** + +;;;### (autoloads (nxhtmltest-run-Q) "../../../../../.emacs.d/nxhtml/tests/nxhtmltest-Q" +;;;;;; "../../../../.emacs.d/nxhtml/tests/nxhtmltest-Q.el" (19264 +;;;;;; 40286)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/tests/nxhtmltest-Q.el +(web-autoload-require 'nxhtmltest-Q 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/tests/nxhtmltest-Q" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'nxhtmltest-run-Q `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/tests/nxhtmltest-Q" nxhtml-install-dir) "\ +Run all tests defined for nXhtml in fresh Emacs. +See `nxhtmltest-run' for more information about the tests. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (nxhtmltest-run nxhtmltest-run-indent) "../../../../../.emacs.d/nxhtml/tests/nxhtmltest-suites" +;;;;;; "../../../../.emacs.d/nxhtml/tests/nxhtmltest-suites.el" +;;;;;; (19360 9896)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/tests/nxhtmltest-suites.el +(web-autoload-require 'nxhtmltest-suites 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/tests/nxhtmltest-suites" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'nxhtmltest-run-indent `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/tests/nxhtmltest-suites" nxhtml-install-dir) "\ +Run indentation tests. + +\(fn)" t nil) + +(nxhtml-autoload 'nxhtmltest-run `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/tests/nxhtmltest-suites" nxhtml-install-dir) "\ +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' + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (cancel-secondary-selection set-secondary-selection +;;;;;; anchored-transpose) "../../../../../.emacs.d/nxhtml/util/anchored-transpose" +;;;;;; "../../../../.emacs.d/nxhtml/util/anchored-transpose.el" +;;;;;; (19333 58526)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/anchored-transpose.el +(web-autoload-require 'anchored-transpose 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/anchored-transpose" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'anchored-transpose `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/anchored-transpose" nxhtml-install-dir) "\ +Transpose portions of the region around an anchor phrase. + +`this phrase but not that word' can be transposed into +`that word but not this phrase' + +I want this phrase but not that word. + |----------------------------|. .This is the entire phrase. + |-------|. . . . . . .This is the anchor phrase. + +First select the entire phrase and type \\[anchored-transpose]. +This set the secondary selection. + +Then select the anchor phrase and type \\[anchored-transpose] +again. Alternatively you can do the selections like this: + +I want this phrase but not that word. + |----------| |---------| Separate phrase selection. + +By default the anchor phrase will automatically include +any surrounding whitespace even if you don't explicitly select +it. Also, it won't include certain trailing punctuation. See +`anchored-transpose-do-fuzzy' for details. A prefix arg prior to +either selection means `no fuzzy logic, use selections +literally'. + +You can select the regions to be swapped separately in any +order. + +After swapping both primary and secondary selection are still +active. They will be canceled after second next command if you +do not swap regions again. (Second because this allow you to +adjust the regions and try again.) + +You can also swap text between different buffers this way. + +Typing \\[anchored-transpose] with nothing selected clears any +prior selection, ie secondary selection. + +\(fn BEG1 END1 FLG1 &optional BEG2 END2 FLG2 WIN2)" t nil) + +(nxhtml-autoload 'set-secondary-selection `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/anchored-transpose" nxhtml-install-dir) "\ +Set the secondary selection to the current region. +This must be bound to a mouse drag event. + +\(fn BEG END)" t nil) + +(nxhtml-autoload 'cancel-secondary-selection `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/anchored-transpose" nxhtml-install-dir) "\ +Not documented + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (appmenu-mode appmenu-add appmenu) "../../../../../.emacs.d/nxhtml/util/appmenu" +;;;;;; "../../../../.emacs.d/nxhtml/util/appmenu.el" (19276 1446)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/appmenu.el +(web-autoload-require 'appmenu 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/appmenu" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'appmenu 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/appmenu" loads) nil (put 'appmenu 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/appmenu" loads)))) + +(nxhtml-autoload 'appmenu-add `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/appmenu" nxhtml-install-dir) "\ +Add entry to `appmenu-alist'. +Add an entry to this list with ID, PRIORITY, TEST, TITLE and +DEFINITION as explained there. + +\(fn ID PRIORITY TEST TITLE DEFINITION)" nil nil) + +(defvar appmenu-mode nil "\ +Non-nil if Appmenu mode is enabled. +See the command `appmenu-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `appmenu-mode'.") + +(nxhtml-custom-autoload 'appmenu-mode '../../../../../.emacs.d/nxhtml/util/appmenu nil) + +(nxhtml-autoload 'appmenu-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/appmenu" nxhtml-install-dir) "\ +Use a context sensitive popup menu. +AppMenu (appmenu.el) is a framework for creating cooperative +context sensitive popup menus with commands from different major +and minor modes. Using this different modes may cooperate about +the use of popup menus. + +There is also the command `appmenu-as-help' that shows the key +bindings at current point in the help buffer. + +The popup menu and the help buffer version are on these keys: + +\\{appmenu-mode-map} + +The variable `appmenu-alist' is where the popup menu entries +comes from. + +If there is a `keymap' property at point then relevant bindings +from this is also shown in the popup menu. + +You can write functions that use whatever information you want in +Emacs to construct these entries. Since this information is only +collected when the popup menu is shown you do not have to care as +much about computation time as for entries in the menu bar. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (as-external-mode as-external-for-wiki as-external-for-mail-mode +;;;;;; as-external-for-xhtml as-external) "../../../../../.emacs.d/nxhtml/util/as-external" +;;;;;; "../../../../.emacs.d/nxhtml/util/as-external.el" (19292 +;;;;;; 53308)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/as-external.el +(web-autoload-require 'as-external 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/as-external" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'as-external 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/as-external" loads) nil (put 'as-external 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/as-external" loads)))) + +(nxhtml-autoload 'as-external-for-xhtml `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/as-external" nxhtml-install-dir) "\ +Setup for Firefox addon It's All Text to edit XHTML. +It's All Text is a Firefox add-on for editing textareas with an +external editor. +See URL `https://addons.mozilla.org/en-US/firefox/addon/4125'. + +In this case Emacs is used to edit textarea fields on a web page. +The text will most often be part of a web page later, like on a +blog. Therefore turn on these: + +- `nxhtml-mode' since some XHTML tags may be allowed. +- `nxhtml-validation-header-mode' since it is not a full page. +- `wrap-to-fill-column-mode' to see what you are writing. +- `html-write-mode' to see it even better. + +Also bypass the question for line end conversion when using +emacsw32-eol. + +\(fn)" t nil) + +(nxhtml-autoload 'as-external-for-mail-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/as-external" nxhtml-install-dir) "\ +Setup for Firefox addon It's All Text to edit mail. +Set normal mail comment markers in column 1 (ie >). + +Set `fill-column' to 90 and enable `wrap-to-fill-column-mode' so +that it will look similar to how it will look in the sent plain +text mail. + +See also `as-external-mode'. + +\(fn)" t nil) + +(nxhtml-autoload 'as-external-for-wiki `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/as-external" nxhtml-install-dir) "\ +Setup for Firefox addon It's All Text to edit MediaWikis. + +\(fn)" t nil) + +(defvar as-external-mode nil "\ +Non-nil if As-External mode is enabled. +See the command `as-external-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `as-external-mode'.") + +(nxhtml-custom-autoload 'as-external-mode '../../../../../.emacs.d/nxhtml/util/as-external nil) + +(nxhtml-autoload 'as-external-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/as-external" nxhtml-install-dir) "\ +If non-nil check if Emacs is called as external editor. +When Emacs is called as an external editor for example to edit +text areas on a web page viewed with Firefox this library tries +to help to setup the buffer in a useful way. It may for example +set major and minor modes for the buffer. + +This can for example be useful when blogging or writing comments +on blogs. + +See `as-external-alist' for more information. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (buffer-bg-set-color) "../../../../../.emacs.d/nxhtml/util/buffer-bg" +;;;;;; "../../../../.emacs.d/nxhtml/util/buffer-bg.el" (19255 2170)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/buffer-bg.el +(web-autoload-require 'buffer-bg 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/buffer-bg" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'buffer-bg-set-color `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/buffer-bg" nxhtml-install-dir) "\ +Add an overlay with background color COLOR to buffer BUFFER. +If COLOR is nil remove previously added overlay. + +\(fn COLOR BUFFER)" t nil) + +;;;*** + +;;;### (autoloads (chartg-make-chart chartg-complete) "../../../../../.emacs.d/nxhtml/util/chartg" +;;;;;; "../../../../.emacs.d/nxhtml/util/chartg.el" (19278 19348)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/chartg.el +(web-autoload-require 'chartg 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/chartg" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'chartg-complete `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/chartg" nxhtml-install-dir) "\ +Not documented + +\(fn)" t nil) + +(nxhtml-autoload 'chartg-make-chart `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/chartg" nxhtml-install-dir) "\ +Try to make a new chart. +If region is active then make a new chart from data in the +selected region. + +Else if current buffer is in `chartg-mode' then do it from the +chart specifications in this buffer. Otherwise create a new +buffer and initialize it with `chartg-mode'. + +If the chart specifications are complete enough to make a chart +then do it and show the resulting chart image. If not then tell +user what is missing. + +NOTE: This is beta, no alpha code. It is not ready. + +Below are some examples. To test them mark an example and do + + M-x chartg-make-chart + +* Example, simple x-y chart: + + Output-file: \"~/temp-chart.png\" + Size: 200 200 + Data: 3 8 5 | 10 20 30 + Type: line-chartg-xy + +* Example, pie: + + Output-file: \"~/temp-depression.png\" + Size: 400 200 + Data: + 2,160,000 + 3,110,000 + 1,510,000 + 73,600 + 775,000 + 726,000 + 8,180,000 + 419,000 + Type: pie-3-dimensional + Chartg-title: \"Depression hits on Google\" + Legends: + \"SSRI\" + | \"Psychotherapy\" + | \"CBT\" + | \"IPT\" + | \"Psychoanalysis\" + | \"Mindfulness\" + | \"Meditation\" + | \"Exercise\" + + +* Example, pie: + + Output-file: \"~/temp-panic.png\" + Size: 400 200 + Data: + 979,000 + 969,000 + 500,000 + 71,900 + 193,000 + 154,000 + 2,500,000 + 9,310,000 + Type: pie-3-dimensional + Chartg-title: \"Depression hits on Google\" + Legends: + \"SSRI\" + | \"Psychotherapy\" + | \"CBT\" + | \"IPT\" + | \"Psychoanalysis\" + | \"Mindfulness\" + | \"Meditation\" + | \"Exercise\" + + +* Example using raw: + + Output-file: \"~/temp-chartg-slipsen-kostar.png\" + Size: 400 130 + Data: 300 1000 30000 + Type: bar-chartg-horizontal + Chartg-title: \"Vad killen i slips tjänar jämfört med dig och mig\" + Google-chartg-raw: \"&chds=0,30000&chco=00cd00|ff4500|483d8b&chxt=y,x&chxl=0:|Killen+i+slips|Partiledarna|Du+och+jag&chf=bg,s,ffd700\" + + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (css-color-test css-color-global-mode css-color-mode +;;;;;; css-color) "../../../../../.emacs.d/nxhtml/util/css-color" +;;;;;; "../../../../.emacs.d/nxhtml/util/css-color.el" (19266 40216)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/css-color.el +(web-autoload-require 'css-color 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/css-color" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'css-color 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/css-color" loads) nil (put 'css-color 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/css-color" loads)))) + +(nxhtml-autoload 'css-color-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/css-color" nxhtml-install-dir) "\ +Show hex color literals with the given color as background. +In this mode hexadecimal colour specifications like #6600ff are +displayed with the specified colour as background. + +Certain keys are bound to special colour editing commands when +point is at a hexadecimal colour: + +\\{css-color-map} + +\(fn &optional ARG)" t nil) + +(defvar css-color-global-mode nil "\ +Non-nil if Css-Color-Global mode is enabled. +See the command `css-color-global-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `css-color-global-mode'.") + +(nxhtml-custom-autoload 'css-color-global-mode '../../../../../.emacs.d/nxhtml/util/css-color nil) + +(nxhtml-autoload 'css-color-global-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/css-color" nxhtml-install-dir) "\ +Toggle Css-Color mode in every possible buffer. +With prefix ARG, turn Css-Color-Global mode on if and only if +ARG is positive. +Css-Color mode is enabled in all buffers where +`css-color-turn-on-in-buffer' would do it. +See `css-color-mode' for more information on Css-Color mode. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'css-color-test `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/css-color" nxhtml-install-dir) "\ +Test colors interactively. +The colors are displayed in the echo area. You can specify the +colors as any viable css color. Example: + + red + #f00 + #0C0 + #b0ff00 + hsla(100, 50%, 25%) + rgb(255,100,120) + +\(fn FG-COLOR BG-COLOR)" t nil) + +;;;*** + +;;;### (autoloads (css-palette-global-mode css-palette css-palette-mode) +;;;;;; "../../../../../.emacs.d/nxhtml/util/css-palette" "../../../../.emacs.d/nxhtml/util/css-palette.el" +;;;;;; (19235 5252)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/css-palette.el +(web-autoload-require 'css-palette 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/css-palette" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'css-palette-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/css-palette" nxhtml-install-dir) "\ +Minor mode for palettes in CSS. + +The mode `css-palette-mode' acts on the first COLORS declaration in your + file of the form: + +COLORS: +\( +c0 \"#6f5d25\" ;tainted sand +c1 \"#000000\" ;Black +c2 \"#cca42b\" ;goldenslumber +c3 \"#6889cb\" ;far off sky +c4 \"#fff\" ;strange aeons +) + +Such declarations should appear inside a block comment, in order + to be parsed properly by the LISP reader. + +Type \\[css-palette-update-all], and any occurence of + + color: #f55; /*[c3]*/ + +will be updated with + + color: #6899cb; /*[c3]*/ + +The following commands are available to insert key-value pairs + and palette declarations: + \\{css-palette-mode-map} + +You can extend or redefine the types of palettes by defining a + new palette specification of the form (PATTERN REGEXP + REF-FOLLOWS-VALUE), named according to the naming scheme + css-palette:my-type, where + +PATTERN is a pattern containing two (%s) format directives which + will be filled in with the variable and its value, + +REGEXP is a regular expression to match a value - variable + pattern, + +and REF-FOLLOWS-VALUE defined whether or not the reference comes + after the value. This allows for more flexibility. + +Note that, although the w3c spec at URL + `http://www.w3.org/TR/CSS2/syndata.html#comments' says that + comments \" may occur anywhere between tokens, and their + contents have no influence on the rendering\", Internet + Explorer does not think so. Better keep all your comments after + a \"statement\", as per the default. This means `css-palette' + is ill-suited for use within shorthands. + +See variable `css-palette:colors' for an example of a palette + type. + +The extension mechanism means that palette types can be used to + contain arbitrary key-value mappings. + +Besides the colors palette, css-palette defines the palette + definition variables `css-palette:colors-outside' and + `css-palette:files', for colors with the reference outside and + for file url()'s respectively. + +You can fine-control which palette types css-palette should look + at via the variable `css-palette-types'. + +\(fn &optional ARG)" t nil) + +(let ((loads (get 'css-palette 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/css-palette" loads) nil (put 'css-palette 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/css-palette" loads)))) + +(defvar css-palette-global-mode nil "\ +Non-nil if Css-Palette-Global mode is enabled. +See the command `css-palette-global-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `css-palette-global-mode'.") + +(nxhtml-custom-autoload 'css-palette-global-mode '../../../../../.emacs.d/nxhtml/util/css-palette nil) + +(nxhtml-autoload 'css-palette-global-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/css-palette" nxhtml-install-dir) "\ +Toggle Css-Palette mode in every possible buffer. +With prefix ARG, turn Css-Palette-Global mode on if and only if +ARG is positive. +Css-Palette mode is enabled in all buffers where +`css-palette-turn-on-in-buffer' would do it. +See `css-palette-mode' for more information on Css-Palette mode. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (cusnu-export-my-skin-options customize-for-new-user) +;;;;;; "../../../../../.emacs.d/nxhtml/util/cus-new-user" "../../../../.emacs.d/nxhtml/util/cus-new-user.el" +;;;;;; (19173 59742)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/cus-new-user.el +(web-autoload-require 'cus-new-user 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/cus-new-user" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'customize-for-new-user `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/cus-new-user" nxhtml-install-dir) "\ +Show special customization page for new user. + +\(fn &optional NAME)" t nil) + +(nxhtml-autoload 'cusnu-export-my-skin-options `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/cus-new-user" nxhtml-install-dir) "\ +Export to file FILE custom options in `cusnu-my-skin-options'. +The options is exported to elisp code that other users can run to +set the options that you have added to `cusnu-my-skin-options'. + +For more information about this see `cusnu-export-cust-group'. + +\(fn FILE)" t nil) + +;;;*** + +;;;### (autoloads (ediff-url) "../../../../../.emacs.d/nxhtml/util/ediff-url" +;;;;;; "../../../../.emacs.d/nxhtml/util/ediff-url.el" (19362 37860)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/ediff-url.el +(web-autoload-require 'ediff-url 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ediff-url" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'ediff-url `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ediff-url" nxhtml-install-dir) "\ +Compare current buffer to a web URL using `ediff-buffers'. +Check URL using `ediff-url-redirects' before fetching the file. + +This is for checking downloaded file. A the file may have a comment +telling the download URL of thise form in the header: + + ;; URL: http://the-server.net/the-path/the-file.el + +If not the user is asked for the URL. + +\(fn URL)" t nil) + +;;;*** + +;;;### (autoloads (ffip-find-file-in-dirtree ffip-set-current-project) +;;;;;; "../../../../../.emacs.d/nxhtml/util/ffip" "../../../../.emacs.d/nxhtml/util/ffip.el" +;;;;;; (19257 29034)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/ffip.el +(web-autoload-require 'ffip 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ffip" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'ffip-set-current-project `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ffip" nxhtml-install-dir) "\ +Setup ffip project NAME with top directory ROOT of type TYPE. +ROOT can either be just a directory or a list of directory where +the first used just for prompting purposes and the files in the +rest are read into the ffip project. + +Type is a type in `ffip-project-file-types'. + +\(fn NAME ROOT TYPE)" nil nil) + +(nxhtml-autoload 'ffip-find-file-in-dirtree `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ffip" nxhtml-install-dir) "\ +Find files in directory tree ROOT. + +\(fn ROOT)" t nil) + +;;;*** + +;;;### (autoloads (fold-dwim-turn-on-outline-and-hide-all fold-dwim-turn-on-hs-and-hide +;;;;;; fold-dwim-unhide-hs-and-outline fold-dwim-mode fold-dwim-toggle +;;;;;; fold-dwim) "../../../../../.emacs.d/nxhtml/util/fold-dwim" +;;;;;; "../../../../.emacs.d/nxhtml/util/fold-dwim.el" (19218 45782)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/fold-dwim.el +(web-autoload-require 'fold-dwim 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/fold-dwim" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'fold-dwim 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/fold-dwim" loads) nil (put 'fold-dwim 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/fold-dwim" loads)))) + +(nxhtml-autoload 'fold-dwim-toggle `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/fold-dwim" nxhtml-install-dir) "\ +Toggle visibility or some other visual things. +Try toggling different visual things in this order: + +- Images shown at point with `inlimg-mode' +- Text at point prettified by `html-write-mode'. + +For the rest it unhides if possible, otherwise hides in this +order: + +- `org-mode' header or something else using that outlines. +- Maybe `fold-dwim-toggle-selective-display'. +- `Tex-fold-mode' things. +- In html if `outline-minor-mode' and after heading hide content. +- `hs-minor-mode' things. +- `outline-minor-mode' things. (Turns maybe on this.) + +It uses `fold-dwim-show' to show any hidden text at point; if no +hidden fold is found, try `fold-dwim-hide' to hide the +construction at the cursor. + +Note: Also first turn on `fold-dwim-mode' to get the keybinding +for this function from it. + +\(fn)" t nil) + +(defvar fold-dwim-mode nil "\ +Non-nil if Fold-Dwim mode is enabled. +See the command `fold-dwim-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `fold-dwim-mode'.") + +(nxhtml-custom-autoload 'fold-dwim-mode '../../../../../.emacs.d/nxhtml/util/fold-dwim nil) + +(nxhtml-autoload 'fold-dwim-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/fold-dwim" nxhtml-install-dir) "\ +Key binding for `fold-dwim-toggle'. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'fold-dwim-unhide-hs-and-outline `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/fold-dwim" nxhtml-install-dir) "\ +Unhide everything hidden by Hide/Show and Outline. +Ie everything hidden by `hs-minor-mode' and +`outline-minor-mode'. + +\(fn)" t nil) + +(nxhtml-autoload 'fold-dwim-turn-on-hs-and-hide `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/fold-dwim" nxhtml-install-dir) "\ +Turn on minor mode `hs-minor-mode' and hide. +If major mode is derived from `nxml-mode' call `hs-hide-block' +else call `hs-hide-all'. + +\(fn)" t nil) + +(nxhtml-autoload 'fold-dwim-turn-on-outline-and-hide-all `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/fold-dwim" nxhtml-install-dir) "\ +Turn on `outline-minor-mode' and call `hide-body'. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (foldit-global-mode foldit-mode foldit) "../../../../../.emacs.d/nxhtml/util/foldit" +;;;;;; "../../../../.emacs.d/nxhtml/util/foldit.el" (19276 1446)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/foldit.el +(web-autoload-require 'foldit 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/foldit" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'foldit 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/foldit" loads) nil (put 'foldit 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/foldit" loads)))) + +(nxhtml-autoload 'foldit-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/foldit" nxhtml-install-dir) "\ +Minor mode providing visual aids for folding. +Shows some hints about what you have hidden and how to reveal it. + +Supports `hs-minor-mode', `outline-minor-mode' and major modes +derived from `outline-mode'. + +\(fn &optional ARG)" t nil) + +(defvar foldit-global-mode nil "\ +Non-nil if Foldit-Global mode is enabled. +See the command `foldit-global-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `foldit-global-mode'.") + +(nxhtml-custom-autoload 'foldit-global-mode '../../../../../.emacs.d/nxhtml/util/foldit nil) + +(nxhtml-autoload 'foldit-global-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/foldit" nxhtml-install-dir) "\ +Toggle Foldit mode in every possible buffer. +With prefix ARG, turn Foldit-Global mode on if and only if +ARG is positive. +Foldit mode is enabled in all buffers where +`(lambda nil (foldit-mode 1))' would do it. +See `foldit-mode' for more information on Foldit mode. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (gimpedit-can-edit gimpedit-edit-buffer gimpedit-edit-file +;;;;;; gimpedit) "../../../../../.emacs.d/nxhtml/util/gimpedit" +;;;;;; "../../../../.emacs.d/nxhtml/util/gimpedit.el" (19276 1446)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/gimpedit.el +(web-autoload-require 'gimpedit 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/gimpedit" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'gimpedit 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/gimpedit" loads) nil (put 'gimpedit 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/gimpedit" loads)))) + +(nxhtml-autoload 'gimpedit-edit-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/gimpedit" nxhtml-install-dir) "\ +Edit IMAGE-FILE with GIMP. +See also `gimpedit-edit-file'. + +\(fn IMAGE-FILE &optional EXTRA-ARGS)" t nil) + +(nxhtml-autoload 'gimpedit-edit-buffer `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/gimpedit" nxhtml-install-dir) "\ +Edit image file in current buffer with GIMP. +See also `gimpedit-edit-file'. + +You may also be interested in gimpedit-mode with which you can edit +gimp files from within Emacs using GIMP's scripting +possibilities. See + + URL `http://www.emacswiki.org/emacs/GimpMode' + +\(fn)" t nil) + +(nxhtml-autoload 'gimpedit-can-edit `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/gimpedit" nxhtml-install-dir) "\ +Not documented + +\(fn FILE-NAME)" nil nil) + +;;;*** + +;;;### (autoloads (gpl-mode) "../../../../../.emacs.d/nxhtml/util/gpl" +;;;;;; "../../../../.emacs.d/nxhtml/util/gpl.el" (18795 30910)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/gpl.el +(web-autoload-require 'gpl 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/gpl" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'gpl-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/gpl" nxhtml-install-dir) "\ +Mode for font-locking and editing color palettes of the GPL format. + +Such palettes are used and produced by free software applications +such as the GIMP, Inkscape, Scribus, Agave and on-line tools such +as http://colourlovers.com. + +You can also use +URL `http://niels.kicks-ass.org/public/elisp/css-palette.el' to import +such palette into a css-file as hexadecimal color palette. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (hfyview-frame hfyview-window hfyview-region hfyview-buffer +;;;;;; hfyview-quick-print-in-files-menu) "../../../../../.emacs.d/nxhtml/util/hfyview" +;;;;;; "../../../../.emacs.d/nxhtml/util/hfyview.el" (19406 19692)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/hfyview.el +(web-autoload-require 'hfyview 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/hfyview" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(defvar hfyview-quick-print-in-files-menu nil "\ +Add Quick print entries to File menu if non-nil. +If you set this to nil you have to restart Emacs to get rid of +the Quick Print entry.") + +(nxhtml-custom-autoload 'hfyview-quick-print-in-files-menu '../../../../../.emacs.d/nxhtml/util/hfyview nil) + +(nxhtml-autoload 'hfyview-buffer `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/hfyview" nxhtml-install-dir) "\ +Convert buffer to html preserving faces and show in web browser. +With command prefix ARG also show html source in other window. + +\(fn ARG)" t nil) + +(nxhtml-autoload 'hfyview-region `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/hfyview" nxhtml-install-dir) "\ +Convert region to html preserving faces and show in web browser. +With command prefix ARG also show html source in other window. + +\(fn ARG)" t nil) + +(nxhtml-autoload 'hfyview-window `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/hfyview" nxhtml-install-dir) "\ +Convert window to html preserving faces and show in web browser. +With command prefix ARG also show html source in other window. + +\(fn ARG)" t nil) + +(nxhtml-autoload 'hfyview-frame `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/hfyview" nxhtml-install-dir) "\ +Convert frame to html preserving faces and show in web browser. +Make an XHTML view of the current Emacs frame. Put it in a buffer +named *hfyview-frame* and show that buffer in a web browser. + +If WHOLE-BUFFERS is non-nil then the whole content of the buffers +is shown in the XHTML page, otherwise just the part that is +visible currently on the frame. + +If you turn on the minor mode `hfyview-frame-mode' you can also +get the minibuffer/echo area in the output. See this mode for +details. + +With command prefix also show html source in other window. + +\(fn WHOLE-BUFFERS)" t nil) + +;;;*** + +;;;### (autoloads (hl-needed-mode hl-needed) "../../../../../.emacs.d/nxhtml/util/hl-needed" +;;;;;; "../../../../.emacs.d/nxhtml/util/hl-needed.el" (19406 19692)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/hl-needed.el +(web-autoload-require 'hl-needed 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/hl-needed" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'hl-needed 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/hl-needed" loads) nil (put 'hl-needed 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/hl-needed" loads)))) + +(defvar hl-needed-mode nil "\ +Non-nil if Hl-Needed mode is enabled. +See the command `hl-needed-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `hl-needed-mode'.") + +(nxhtml-custom-autoload 'hl-needed-mode '../../../../../.emacs.d/nxhtml/util/hl-needed nil) + +(nxhtml-autoload 'hl-needed-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/hl-needed" nxhtml-install-dir) "\ +Try to highlight current line and column when needed. +This is a global minor mode. It can operate in some different +ways: + +- Highlighting can be on always, see `hl-needed-always'. + +Or, it can be turned on depending on some conditions. In this +case highlighting is turned off after each command and turned on +again in the current window when either: + +- A new window was selected, see `hl-needed-on-new-window'. +- A new buffer was selected, see `hl-needed-on-new-buffer'. +- Window configuration was changed, see `hl-needed-on-config-change'. +- Buffer was scrolled see `hl-needed-on-scrolling'. +- A window was clicked with the mouse, see `hl-needed-on-mouse'. + +After this highlighting may be turned off again, normally after a +short delay, see `hl-needed-flash'. + +If either highlighting was not turned on or was turned off again +it will be turned on when + +- Emacs has been idle for `hl-needed-idle-time' seconds. + +See also `hl-needed-not-in-modes' and `hl-needed-currently-fun'. + +Note 1: For columns to be highlighted vline.el must be available. + +Note 2: This mode depends on `hl-line-mode' and `vline-mode' and +tries to cooperate with them. If you turn on either of these that +overrides the variables for turning on the respective +highlighting here. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (html-write-mode html-write) "../../../../../.emacs.d/nxhtml/util/html-write" +;;;;;; "../../../../.emacs.d/nxhtml/util/html-write.el" (19276 1446)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/html-write.el +(web-autoload-require 'html-write 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/html-write" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'html-write 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/html-write" loads) nil (put 'html-write 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/html-write" loads)))) + +(nxhtml-autoload 'html-write-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/html-write" nxhtml-install-dir) "\ +Minor mode for convenient display of some HTML tags. +When this mode is on a tag in `html-write-tag-list' is displayed as +the inner text of the tag with a face corresponding to the tag. +By default for example ... is displayed as italic and +... is displayed as an underlined clickable link. + +Only non-nested tags are hidden. The idea is just that it should +be easier to read and write, not that it should look as html +rendered text. + +See the customization group `html-write' for more information about +faces. + +The following keys are defined when you are on a tag handled by +this minor mode: + +\\{html-write-keymap} + +IMPORTANT: Most commands you use works also on the text that is +hidden. The movement commands is an exception, but as soon as +you edit the buffer you may also change the hidden parts. + +Hint: Together with `wrap-to-fill-column-mode' this can make it +easier to see what text you are actually writing in html parts of +a web file. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (inlimg-toggle-slicing inlimg-toggle-display inlimg-global-mode +;;;;;; inlimg-mode inlimg) "../../../../../.emacs.d/nxhtml/util/inlimg" +;;;;;; "../../../../.emacs.d/nxhtml/util/inlimg.el" (19269 36610)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/inlimg.el +(web-autoload-require 'inlimg 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/inlimg" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'inlimg 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/inlimg" loads) nil (put 'inlimg 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/inlimg" loads)))) + +(nxhtml-autoload 'inlimg-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/inlimg" nxhtml-install-dir) "\ +Display images inline. +Search buffer for image tags. Display found images. + +Image tags are setup per major mode in `inlimg-mode-specs'. + +Images are displayed on a line below the tag referencing them. +The whole image or a slice of it may be displayed, see +`inlimg-slice'. Margins relative text are specified in +`inlimg-margins'. + +See also the commands `inlimg-toggle-display' and +`inlimg-toggle-slicing'. + +Note: This minor mode uses `font-lock-mode'. + +\(fn &optional ARG)" t nil) + +(defvar inlimg-global-mode nil "\ +Non-nil if Inlimg-Global mode is enabled. +See the command `inlimg-global-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `inlimg-global-mode'.") + +(nxhtml-custom-autoload 'inlimg-global-mode '../../../../../.emacs.d/nxhtml/util/inlimg nil) + +(nxhtml-autoload 'inlimg-global-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/inlimg" nxhtml-install-dir) "\ +Toggle Inlimg mode in every possible buffer. +With prefix ARG, turn Inlimg-Global mode on if and only if +ARG is positive. +Inlimg mode is enabled in all buffers where +`inlimg--global-turn-on' would do it. +See `inlimg-mode' for more information on Inlimg mode. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'inlimg-toggle-display `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/inlimg" nxhtml-install-dir) "\ +Toggle display of image at point POINT. +See also the command `inlimg-mode'. + +\(fn POINT)" t nil) + +(nxhtml-autoload 'inlimg-toggle-slicing `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/inlimg" nxhtml-install-dir) "\ +Toggle slicing of image at point POINT. +See also the command `inlimg-mode'. + +\(fn POINT)" t nil) + +;;;*** + +;;;### (autoloads (majmodpri majmodpri-apply-priorities majmodpri-apply +;;;;;; majmodpri-sort-lists) "../../../../../.emacs.d/nxhtml/util/majmodpri" +;;;;;; "../../../../.emacs.d/nxhtml/util/majmodpri.el" (19407 22790)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/majmodpri.el +(web-autoload-require 'majmodpri 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/majmodpri" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'majmodpri-sort-lists `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/majmodpri" nxhtml-install-dir) "\ +Sort the list used when selecting major mode. +Only sort those lists choosen in `majmodpri-lists-to-sort'. +Sort according to priorities in `majmodpri-mode-priorities'. +Keep the old order in the list otherwise. + +The lists can be sorted when loading elisp libraries, see +`majmodpri-sort-after-load'. + +See also `majmodpri-apply-priorities'. + +\(fn)" t nil) + +(nxhtml-autoload 'majmodpri-apply `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/majmodpri" nxhtml-install-dir) "\ +Sort major mode lists and apply to existing buffers. +Note: This function is suitable to add to +`desktop-after-read-hook'. It will restore the multi major modes +in buffers. + +\(fn)" nil nil) + +(nxhtml-autoload 'majmodpri-apply-priorities `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/majmodpri" nxhtml-install-dir) "\ +Apply major mode priorities. +First run `majmodpri-sort-lists' and then if CHANGE-MODES is +non-nil apply to existing file buffers. If interactive ask +before applying. + +\(fn CHANGE-MODES)" t nil) + +(let ((loads (get 'majmodpri 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/majmodpri" loads) nil (put 'majmodpri 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/majmodpri" loads)))) + +;;;*** + +;;;### (autoloads (markchars-global-mode markchars-mode markchars) +;;;;;; "../../../../../.emacs.d/nxhtml/util/markchars" "../../../../.emacs.d/nxhtml/util/markchars.el" +;;;;;; (19376 1954)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/markchars.el +(web-autoload-require 'markchars 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/markchars" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'markchars 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/markchars" loads) nil (put 'markchars 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/markchars" loads)))) + +(nxhtml-autoload 'markchars-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/markchars" nxhtml-install-dir) "\ +Mark special characters. +Which characters to mark are defined by `markchars-keywords'. + +The default is to mark non-IDN, non-ascii chars with a magenta +underline. + +For information about IDN chars see `idn-is-recommended'. + +If you change anything in the customization group `markchars' you +must restart this minor mode for the changes to take effect. + +\(fn &optional ARG)" t nil) + +(defvar markchars-global-mode nil "\ +Non-nil if Markchars-Global mode is enabled. +See the command `markchars-global-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `markchars-global-mode'.") + +(nxhtml-custom-autoload 'markchars-global-mode '../../../../../.emacs.d/nxhtml/util/markchars nil) + +(nxhtml-autoload 'markchars-global-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/markchars" nxhtml-install-dir) "\ +Toggle Markchars mode in every possible buffer. +With prefix ARG, turn Markchars-Global mode on if and only if +ARG is positive. +Markchars mode is enabled in all buffers where +`(lambda nil (markchars-mode 1))' would do it. +See `markchars-mode' for more information on Markchars mode. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (mlinks-global-mode mlinks-mode mlinks) "../../../../../.emacs.d/nxhtml/util/mlinks" +;;;;;; "../../../../.emacs.d/nxhtml/util/mlinks.el" (19364 59816)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/mlinks.el +(web-autoload-require 'mlinks 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mlinks" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'mlinks 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/mlinks" loads) nil (put 'mlinks 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/mlinks" loads)))) + +(nxhtml-autoload 'mlinks-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mlinks" nxhtml-install-dir) "\ +Recognizes certain parts of a buffer as hyperlinks. +The hyperlinks are created in different ways for different major +modes with the help of the functions in the list +`mlinks-mode-functions'. + +The hyperlinks can be hilighted when point is over them. Use +`mlinks-toggle-hilight' to toggle this feature for the current +buffer. + +All keybindings in this mode are by default done under the prefi§x +key + + C-c RET + +which is supposed to be a kind of mnemonic for link (alluding to +the RET key commonly used in web browser to follow a link). +\(Unfortunately this breaks the rules in info node `Key Binding +Conventions'.) Below are the key bindings defined by this mode: + +\\{mlinks-mode-map} + +For some major modes `mlinks-backward-link' and +`mlinks-forward-link' will take you to the previous/next link. +By default the link moved to will be active, see +`mlinks-active-links'. + +\(fn &optional ARG)" t nil) + +(defvar mlinks-global-mode nil "\ +Non-nil if Mlinks-Global mode is enabled. +See the command `mlinks-global-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `mlinks-global-mode'.") + +(nxhtml-custom-autoload 'mlinks-global-mode '../../../../../.emacs.d/nxhtml/util/mlinks nil) + +(nxhtml-autoload 'mlinks-global-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mlinks" nxhtml-install-dir) "\ +Toggle Mlinks mode in every possible buffer. +With prefix ARG, turn Mlinks-Global mode on if and only if +ARG is positive. +Mlinks mode is enabled in all buffers where +`mlinks-turn-on-in-buffer' would do it. +See `mlinks-mode' for more information on Mlinks mode. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (mumamo-multi-major-modep mumamo-list-defined-multi-major-modes +;;;;;; mumamo-mark-for-refontification mumamo-hi-lock-faces mumamo +;;;;;; mumamo-add-to-defined-multi-major-modes define-mumamo-multi-major-mode) +;;;;;; "../../../../../.emacs.d/nxhtml/util/mumamo" "../../../../.emacs.d/nxhtml/util/mumamo.el" +;;;;;; (19412 30366)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/mumamo.el +(web-autoload-require 'mumamo 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'define-mumamo-multi-major-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo" nxhtml-install-dir) "\ +Define a function that turn on support for multiple major modes. +Define a function FUN-SYM that set up to divide the current +buffer into chunks with different major modes. + +The documentation string for FUN-SYM should contain the special +documentation in the string SPEC-DOC, general documentation for +functions of this type and information about chunks. + +The new function will use the definitions in CHUNKS (which is +called a \"chunk family\") to make the dividing of the buffer. + +The function FUN-SYM can be used to setup a buffer instead of a +major mode function: + +- The function FUN-SYM can be called instead of calling a major + mode function when you want to use multiple major modes in a + buffer. + +- The defined function can be used instead of a major mode + function in for example `auto-mode-alist'. + +- As the very last thing FUN-SYM will run the hook FUN-SYM-hook, + just as major modes do. + +- There is also a general hook, `mumamo-turn-on-hook', which is + run when turning on mumamo with any of these functions. This + is run right before the hook specific to any of the functions + above that turns on the multiple major mode support. + +- The multi major mode FUN-SYM has a keymap named FUN-SYM-map. + This overrides the major modes' keymaps since it is handled as + a minor mode keymap. + +- There is also a special mumamo keymap, `mumamo-map' that is + active in every buffer with a multi major mode. This is also + handled as a minor mode keymap and therefor overrides the major + modes' keymaps. + +- However when this support for multiple major mode is on the + buffer is divided into chunks, each with its own major mode. + +- The chunks are fontified according the major mode assigned to + them for that. + +- Indenting is also done according to the major mode assigned to + them for that. + +- The actual major mode used in the buffer is changed to the one + in the chunk when moving point between these chunks. + +- When major mode is changed the hooks for the new major mode, + `after-change-major-mode-hook' and `change-major-mode-hook' are + run. + +- There will be an alias for FUN-SYM called mumamo-alias-FUN-SYM. + This can be used to check whic multi major modes have been + defined. + +** A little bit more technical description: + +The dividing of a buffer into chunks is done during fontification +by `mumamo-get-chunk-at'. + +The name of the function is saved in in the buffer local variable +`mumamo-multi-major-mode' when the function is called. + +All functions defined by this macro is added to the list +`mumamo-defined-multi-major-modes'. + +Basically Mumamo handles only major modes that uses jit-lock. +However as a special effort also `nxml-mode' and derivatives +thereof are handled. Since it seems impossible to me to restrict +those major modes fontification to only a chunk without changing +`nxml-mode' the fontification is instead done by +`html-mode'/`sgml-mode' for chunks using `nxml-mode' and its +derivates. + +CHUNKS is a list where each entry have the format + + (CHUNK-DEF-NAME MAIN-MAJOR-MODE SUBMODE-CHUNK-FUNCTIONS) + +CHUNK-DEF-NAME is the key name by which the entry is recognized. +MAIN-MAJOR-MODE is the major mode used when there is no chunks. +If this is nil then `major-mode' before turning on this mode will +be used. + +SUBMODE-CHUNK-FUNCTIONS is a list of the functions that does the +chunk division of the buffer. They are tried in the order they +appear here during the chunk division process. + +If you want to write new functions for chunk divisions then +please see `mumamo-find-possible-chunk'. You can perhaps also +use `mumamo-quick-static-chunk' which is more easy-to-use +alternative. See also the file mumamo-fun.el where there are +many routines for chunk division. + +When you write those new functions you may want to use some of +the functions for testing chunks: + + `mumamo-test-create-chunk-at' `mumamo-test-create-chunks-at-all' + `mumamo-test-easy-make' `mumamo-test-fontify-region' + +These are in the file mumamo-test.el. + +\(fn FUN-SYM SPEC-DOC CHUNKS)" nil (quote macro)) + +(nxhtml-autoload 'mumamo-add-to-defined-multi-major-modes `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo" nxhtml-install-dir) "\ +Not documented + +\(fn ENTRY)" nil nil) + +(let ((loads (get 'mumamo 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/mumamo" loads) nil (put 'mumamo 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/mumamo" loads)))) + +(let ((loads (get 'mumamo-hi-lock-faces 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/mumamo" loads) nil (put 'mumamo-hi-lock-faces 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/mumamo" loads)))) + +(nxhtml-autoload 'mumamo-mark-for-refontification `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo" nxhtml-install-dir) "\ +Mark region between MIN and MAX for refontification. + +\(fn MIN MAX)" nil nil) + +(nxhtml-autoload 'mumamo-list-defined-multi-major-modes `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo" nxhtml-install-dir) "\ +List currently defined multi major modes. +If SHOW-DOC is non-nil show the doc strings added when defining +them. (This is not the full doc string. To show the full doc +string you can click on the multi major mode in the list.) + +If SHOW-CHUNKS is non-nil show the names of the chunk dividing +functions each multi major mode uses. + +If MATCH then show only multi major modes whos names matches. + +\(fn SHOW-DOC SHOW-CHUNKS MATCH)" t nil) + +(nxhtml-autoload 'mumamo-multi-major-modep `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo" nxhtml-install-dir) "\ +Return t if VALUE is a multi major mode function. + +\(fn VALUE)" nil nil) + +;;;*** + +;;;### (autoloads (python-rst-mumamo-mode latex-haskell-mumamo-mode +;;;;;; latex-clojure-mumamo-mode markdown-html-mumamo-mode xsl-sgml-mumamo-mode +;;;;;; xsl-nxml-mumamo-mode mako-html-mumamo-mode org-mumamo-mode +;;;;;; asp-html-mumamo-mode noweb2-mumamo-mode mumamo-noweb2 csound-sgml-mumamo-mode +;;;;;; laszlo-nxml-mumamo-mode metapost-mumamo-mode ruby-heredoc-mumamo-mode +;;;;;; python-heredoc-mumamo-mode cperl-heredoc-mumamo-mode perl-heredoc-mumamo-mode +;;;;;; php-heredoc-mumamo-mode sh-heredoc-mumamo-mode eruby-javascript-mumamo-mode +;;;;;; eruby-html-mumamo-mode eruby-mumamo-mode jsp-html-mumamo-mode +;;;;;; gsp-html-mumamo-mode ssjs-html-mumamo-mode smarty-html-mumamo-mode +;;;;;; mjt-html-mumamo-mode genshi-html-mumamo-mode django-html-mumamo-mode +;;;;;; embperl-html-mumamo-mode mason-html-mumamo-mode nxml-mumamo-mode +;;;;;; html-mumamo-mode mumamo-define-html-file-wide-keys) "../../../../../.emacs.d/nxhtml/util/mumamo-fun" +;;;;;; "../../../../.emacs.d/nxhtml/util/mumamo-fun.el" (19410 23172)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/mumamo-fun.el +(web-autoload-require 'mumamo-fun 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'mumamo-define-html-file-wide-keys `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Define keys in multi major mode keymap for html files. + +\(fn)" nil nil) + +(nxhtml-autoload 'html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for (X)HTML with main mode `html-mode'. +This covers inlined style and javascript and PHP." t) + +(nxhtml-autoload 'nxml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for (X)HTML with main mode `nxml-mode'. +This covers inlined style and javascript and PHP. + +See also `mumamo-alt-php-tags-mode'." t) + +(nxhtml-autoload 'mason-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for Mason using main mode `html-mode'. +This covers inlined style and javascript." t) + +(nxhtml-autoload 'embperl-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for Embperl files with main mode `html-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'django-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for Django with main mode `html-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'genshi-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for Genshi with main mode `html-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'mjt-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for MJT with main mode `html-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'smarty-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for Smarty with main mode `html-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'ssjs-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for SSJS with main mode `html-mode'. +This covers inlined style and javascript." t) + +(nxhtml-autoload 'gsp-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for GSP with main mode `html-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'jsp-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for JSP with main mode `html-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'eruby-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major mode for eRuby with unspecified main mode. +Current major-mode will be used as the main major mode." t) + +(nxhtml-autoload 'eruby-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for eRuby with main mode `html-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'eruby-javascript-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for eRuby with main mode `javascript-mode'." t) + +(nxhtml-autoload 'sh-heredoc-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for sh heredoc document. +See `mumamo-heredoc-modes' for how to specify heredoc major modes." t) + +(nxhtml-autoload 'php-heredoc-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for PHP heredoc document. +See `mumamo-heredoc-modes' for how to specify heredoc major modes." t) + +(nxhtml-autoload 'perl-heredoc-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for Perl heredoc document. +See `mumamo-heredoc-modes' for how to specify heredoc major modes." t) + +(nxhtml-autoload 'cperl-heredoc-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for Perl heredoc document. +See `mumamo-heredoc-modes' for how to specify heredoc major modes." t) + +(nxhtml-autoload 'python-heredoc-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for Perl heredoc document. +See `mumamo-heredoc-modes' for how to specify heredoc major modes." t) + +(nxhtml-autoload 'ruby-heredoc-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for Ruby heredoc document. +See `mumamo-heredoc-modes' for how to specify heredoc major modes." t) + +(nxhtml-autoload 'metapost-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for MetaPost." t) + +(nxhtml-autoload 'laszlo-nxml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for OpenLaszlo." t) + +(nxhtml-autoload 'csound-sgml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on mutiple major modes for CSound orc/sco Modes." t) + +(let ((loads (get 'mumamo-noweb2 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/mumamo-fun" loads) nil (put 'mumamo-noweb2 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/mumamo-fun" loads)))) + +(nxhtml-autoload 'noweb2-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Multi major mode for noweb files." t) + +(nxhtml-autoload 'asp-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for ASP with main mode `html-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'org-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for `org-mode' files with main mode `org-mode'. +** Note about HTML subchunks: +Unfortunately this only allows `html-mode' (not `nxhtml-mode') in +sub chunks." t) + +(nxhtml-autoload 'mako-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for Mako with main mode `html-mode'. +This also covers inlined style and javascript." t) + +(nxhtml-autoload 'xsl-nxml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multi major mode for XSL with main mode `nxml-mode'. +This covers inlined style and javascript." t) + +(nxhtml-autoload 'xsl-sgml-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multi major mode for XSL with main mode `sgml-mode'. +This covers inlined style and javascript." t) + +(nxhtml-autoload 'markdown-html-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multi major markdown mode in buffer. +Main major mode will be `markdown-mode'. +Inlined html will be in `html-mode'. + +You need `markdown-mode' which you can download from URL +`http://jblevins.org/projects/markdown-mode/'." t) + +(nxhtml-autoload 'latex-clojure-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multi major mode latex+clojure. +Main major mode will be `latex-mode'. +Subchunks will be in `clojure-mode'. + +You will need `clojure-mode' which you can download from URL +`http://github.com/jochu/clojure-mode/tree'." t) + +(nxhtml-autoload 'latex-haskell-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multi major mode latex+haskell. +Main major mode will be `latex-mode'. +Subchunks will be in `haskell-mode'. + +You will need `haskell-mode' which you can download from URL +`http://projects.haskell.org/haskellmode-emacs/'." t) + +(nxhtml-autoload 'python-rst-mumamo-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-fun" nxhtml-install-dir) "\ +Turn on multiple major modes for Python with RestructuredText docstrings." t) + +;;;*** + +;;;### (autoloads (mumamo-add-region-from-string mumamo-add-region) +;;;;;; "../../../../../.emacs.d/nxhtml/util/mumamo-regions" "../../../../.emacs.d/nxhtml/util/mumamo-regions.el" +;;;;;; (19276 1446)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/mumamo-regions.el +(web-autoload-require 'mumamo-regions 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-regions" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'mumamo-add-region `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-regions" nxhtml-install-dir) "\ +Add a mumamo region from selection. +Mumamo regions are like another layer of chunks above the normal chunks. +They does not affect the normal chunks, but they overrides them. + +To create a mumamo region first select a visible region and then +call this function. + +If the buffer is not in a multi major mode a temporary multi +major mode will be created applied to the buffer first. +To get out of this and get back to a single major mode just use + + M-x normal-mode + +\(fn)" t nil) + +(nxhtml-autoload 'mumamo-add-region-from-string `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/mumamo-regions" nxhtml-install-dir) "\ +Add a mumamo region from string at point. +Works as `mumamo-add-region' but for string or comment at point. + +Buffer must be fontified. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (n-back-game n-back) "../../../../../.emacs.d/nxhtml/util/n-back" +;;;;;; "../../../../.emacs.d/nxhtml/util/n-back.el" (19278 19348)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/n-back.el +(web-autoload-require 'n-back 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/n-back" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'n-back 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/n-back" loads) nil (put 'n-back 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/n-back" loads)))) + +(nxhtml-autoload 'n-back-game `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/n-back" nxhtml-install-dir) "\ +Emacs n-Back game. +This game is supposed to increase your working memory and fluid +intelligence. + +In this game something is shown for half a second on the screen +and maybe a sound is played. You should then answer if parts of +it is the same as you have seen or heard before. This is +repeated for about 20 trials. + +You answer with the keys shown in the bottom window. + +In the easiest version of the game you should answer if you have +just seen or heard what is shown now. By default the game gets +harder as you play it with success. Then first the number of +items presented in a trial grows. After that it gets harder by +that you have to somehow remember not the last item, but the item +before that (or even earlier). That is what \"n-Back\" stands +for. + +Note that remember does not really mean remember clearly. The +game is for training your brain getting used to keep those things +in the working memory, maybe as a cross-modal unit. You are +supposed to just nearly be able to do what you do in the game. +And you are supposed to have fun, that is what your brain like. + +You should probably not overdue this. Half an hour a day playing +might be an optimal time according to some people. + +The game is shamelessly modeled after Brain Workshop, see URL +`http://brainworkshop.sourceforge.net/' just for the fun of +getting it into Emacs. The game resembles but it not the same as +that used in the report by Jaeggi mentioned at the above URL. + +Not all features in Brain Workshop are implemented here, but some +new are maybe ... - and you have it available here in Emacs. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (ocr-user-mode) "../../../../../.emacs.d/nxhtml/util/ocr-user" +;;;;;; "../../../../.emacs.d/nxhtml/util/ocr-user.el" (19290 25228)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/ocr-user.el +(web-autoload-require 'ocr-user 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ocr-user" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'ocr-user-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ocr-user" nxhtml-install-dir) "\ +Color up digits three by three. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (ourcomments-warning ourcomments-M-x-menu-mode +;;;;;; ourcomments-paste-with-convert-mode use-custom-style info-open-file +;;;;;; replace-read-files rdir-query-replace ldir-query-replace +;;;;;; grep-query-replace emacs-Q-nxhtml emacs-Q emacs--no-desktop +;;;;;; emacs--debug-init emacs-buffer-file emacs emacs-restart ourcomments-ido-ctrl-tab +;;;;;; ourcomments-ido-buffer-raise-frame ourcomments-ido-buffer-other-frame +;;;;;; ourcomments-ido-buffer-other-window describe-symbol describe-defstruct +;;;;;; describe-custom-group narrow-to-comment buffer-narrowed-p +;;;;;; describe-command ourcomments-ediff-files find-emacs-other-file +;;;;;; ourcomments-insert-date-and-time describe-timers ourcomments-copy+paste-set-point +;;;;;; better-fringes-mode describe-key-and-map-briefly ourcomments-move-end-of-line +;;;;;; ourcomments-move-beginning-of-line ourcomments-mark-whole-buffer-or-field +;;;;;; fill-dwim unfill-individual-paragraphs unfill-region unfill-paragraph +;;;;;; define-toggle-old define-toggle popup-menu-at-point ourcomments-indirect-fun) +;;;;;; "../../../../../.emacs.d/nxhtml/util/ourcomments-util" "../../../../.emacs.d/nxhtml/util/ourcomments-util.el" +;;;;;; (19412 30366)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/ourcomments-util.el +(web-autoload-require 'ourcomments-util 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'ourcomments-indirect-fun `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Get the alias symbol for function FUN if any. + +\(fn FUN)" nil nil) + +(nxhtml-autoload 'popup-menu-at-point `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Popup the given menu at point. +This is similar to `popup-menu' and MENU and PREFIX has the same +meaning as there. The position for the popup is however where +the window point is. + +\(fn MENU &optional PREFIX)" nil nil) + +(nxhtml-autoload 'define-toggle `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Declare SYMBOL as a customizable variable with a toggle function. +The purpose of this macro is to define a defcustom and a toggle +function suitable for use in a menu. + +The arguments have the same meaning as for `defcustom' with these +restrictions: + +- The :type keyword cannot be used. Type is always 'boolean. +- VALUE must be t or nil. + +DOC and ARGS are just passed to `defcustom'. + +A `defcustom' named SYMBOL with doc-string DOC and a function +named SYMBOL-toggle is defined. The function toggles the value +of SYMBOL. It takes no parameters. + +To create a menu item something similar to this can be used: + + (define-key map [SYMBOL] + (list 'menu-item \"Toggle nice SYMBOL\" + 'SYMBOL-toggle + :button '(:toggle . SYMBOL))) + +\(fn SYMBOL VALUE DOC &rest ARGS)" nil (quote macro)) + +(put 'define-toggle 'doc-string-elt '3) + +(nxhtml-autoload 'define-toggle-old `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Not documented + +\(fn SYMBOL VALUE DOC &rest ARGS)" nil (quote macro)) + +(put 'define-toggle-old 'doc-string-elt '3) + +(nxhtml-autoload 'unfill-paragraph `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Unfill the current paragraph. + +\(fn)" t nil) + +(nxhtml-autoload 'unfill-region `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Unfill the current region. + +\(fn)" t nil) + +(nxhtml-autoload 'unfill-individual-paragraphs `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Unfill individual paragraphs in the current region. + +\(fn)" t nil) + +(nxhtml-autoload 'fill-dwim `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Fill or unfill paragraph or region. +With prefix ARG fill only current line. + +\(fn ARG)" t nil) + +(nxhtml-autoload 'ourcomments-mark-whole-buffer-or-field `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Mark whole buffer or editable field at point. + +\(fn)" t nil) + +(nxhtml-autoload 'ourcomments-move-beginning-of-line `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Move point to beginning of line or indentation. +See `beginning-of-line' for ARG. + +If `line-move-visual' is non-nil then the visual line beginning +is first tried. + +If in a widget field stay in that. + +\(fn ARG)" t nil) + +(nxhtml-autoload 'ourcomments-move-end-of-line `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Move point to end of line or after last non blank char. +See `end-of-line' for ARG. + +Similar to `ourcomments-move-beginning-of-line' but for end of +line. + +\(fn ARG)" t nil) + +(nxhtml-autoload 'describe-key-and-map-briefly `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Try to print names of keymap from which KEY fetch its definition. +Look in current active keymaps and find keymap variables with the +same value as the keymap where KEY is bound. Print a message +with those keymap variable names. Return a list with the keymap +variable symbols. + +When called interactively prompt for KEY. + +INSERT and UNTRANSLATED should normall be nil (and I am not sure +what they will do ;-). + +\(fn &optional KEY INSERT UNTRANSLATED)" t nil) + +(defvar better-fringes-mode nil "\ +Non-nil if Better-Fringes mode is enabled. +See the command `better-fringes-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `better-fringes-mode'.") + +(nxhtml-custom-autoload 'better-fringes-mode '../../../../../.emacs.d/nxhtml/util/ourcomments-util nil) + +(nxhtml-autoload 'better-fringes-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Choose another fringe bitmap color and bottom angle. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'ourcomments-copy+paste-set-point `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Set point for copy+paste here. +Enable temporary minor mode `ourcomments-copy+paste-mode'. +However if point for copy+paste already is set then cancel it and +disable the minor mode. + +The purpose of this command is to make it easy to grab a piece of +text and paste it at current position. After this command you +should select a piece of text to copy and then call the command +`ourcomments-copy+paste'. + +\(fn)" t nil) + +(nxhtml-autoload 'describe-timers `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Show timers with readable time format. + +\(fn)" t nil) + +(nxhtml-autoload 'ourcomments-insert-date-and-time `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Insert date and time. +See option `ourcomments-insert-date-and-time' for how to +customize it. + +\(fn)" t nil) + +(nxhtml-autoload 'find-emacs-other-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Find corresponding file to source or installed elisp file. +If you have checked out and compiled Emacs yourself you may have +Emacs lisp files in two places, the checked out source tree and +the installed Emacs tree. If buffer contains an Emacs elisp file +in one of these places then find the corresponding elisp file in +the other place. Return the file name of this file. + +Rename current buffer using your `uniquify-buffer-name-style' if +it is set. + +When DISPLAY-FILE is non-nil display this file in other window +and go to the same line number as in the current buffer. + +\(fn DISPLAY-FILE)" t nil) + +(nxhtml-autoload 'ourcomments-ediff-files `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +In directory DEF-DIR run `ediff-files' on files FILE-A and FILE-B. +The purpose of this function is to make it eaiser to start +`ediff-files' from a shell through Emacs Client. + +This is used in EmacsW32 in the file ediff.cmd where Emacs Client +is called like this: + + @%emacs_client% -e \"(setq default-directory \\\"%emacs_cd%\\\")\" + @%emacs_client% -n -e \"(ediff-files \\\"%f1%\\\" \\\"%f2%\\\")\" + +It can of course be done in a similar way with other shells. + +\(fn DEF-DIR FILE-A FILE-B)" nil nil) + +(nxhtml-autoload 'describe-command `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Like `describe-function', but prompts only for interactive commands. + +\(fn COMMAND)" t nil) + +(nxhtml-autoload 'buffer-narrowed-p `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Return non-nil if the current buffer is narrowed. + +\(fn)" nil nil) + +(nxhtml-autoload 'narrow-to-comment `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Not documented + +\(fn)" t nil) + +(nxhtml-autoload 'describe-custom-group `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Describe customization group SYMBOL. + +\(fn SYMBOL)" t nil) + +(nxhtml-autoload 'describe-defstruct `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Not documented + +\(fn SYMBOL)" t nil) + +(nxhtml-autoload 'describe-symbol `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Show information about SYMBOL. +Show SYMBOL plist and whether is is a variable or/and a +function. + +\(fn SYMBOL)" t nil) + +(nxhtml-autoload 'ourcomments-ido-buffer-other-window `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Show buffer in other window. + +\(fn)" t nil) + +(nxhtml-autoload 'ourcomments-ido-buffer-other-frame `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Show buffer in other frame. + +\(fn)" t nil) + +(nxhtml-autoload 'ourcomments-ido-buffer-raise-frame `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Raise frame showing buffer. + +\(fn)" t nil) + +(defvar ourcomments-ido-ctrl-tab nil "\ +Non-nil if Ourcomments-Ido-Ctrl-Tab mode is enabled. +See the command `ourcomments-ido-ctrl-tab' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `ourcomments-ido-ctrl-tab'.") + +(nxhtml-custom-autoload 'ourcomments-ido-ctrl-tab '../../../../../.emacs.d/nxhtml/util/ourcomments-util nil) + +(nxhtml-autoload 'ourcomments-ido-ctrl-tab `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Enable buffer switching using C-Tab with function `ido-mode'. +This changes buffer switching with function `ido-mode' the +following way: + +- You can use C-Tab. + +- You can show the selected buffer in three ways independent of + how you entered function `ido-mode' buffer switching: + + * S-return: other window + * C-return: other frame + * M-return: raise frame + +Those keys are selected to at least be a little bit reminiscent +of those in for example common web browsers. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'emacs-restart `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Restart Emacs and start `server-mode' if on before. + +\(fn)" t nil) + +(nxhtml-autoload 'emacs `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Start a new Emacs with default parameters. +Additional ARGS are passed to the new Emacs. + +See also `ourcomments-started-emacs-use-output-buffer'. + +\(fn &rest ARGS)" t nil) + +(nxhtml-autoload 'emacs-buffer-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Start a new Emacs showing current buffer file. +Go to the current line and column in that file. +If there is no buffer file then instead start with `dired'. + +This calls the function `emacs' with argument --no-desktop and +the file or a call to dired. + +\(fn)" t nil) + +(nxhtml-autoload 'emacs--debug-init `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Start a new Emacs with --debug-init parameter. +This calls the function `emacs' with added arguments ARGS. + +\(fn &rest ARGS)" t nil) + +(nxhtml-autoload 'emacs--no-desktop `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Start a new Emacs with --no-desktop parameter. +This calls the function `emacs' with added arguments ARGS. + +\(fn &rest ARGS)" t nil) + +(nxhtml-autoload 'emacs-Q `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Start a new Emacs with -Q parameter. +Start new Emacs without any customization whatsoever. +This calls the function `emacs' with added arguments ARGS. + +\(fn &rest ARGS)" t nil) + +(nxhtml-autoload 'emacs-Q-nxhtml `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Start new Emacs with -Q and load nXhtml. +This calls the function `emacs' with added arguments ARGS. + +\(fn &rest ARGS)" t nil) + +(nxhtml-autoload 'grep-query-replace `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Do `query-replace-regexp' of FROM with TO, on all files in *grep*. +Third arg DELIMITED (prefix arg) means replace only word-delimited matches. +If you exit (\\[keyboard-quit], RET or q), you can resume the query replace +with the command \\[tags-loop-continue]. + +\(fn FROM TO &optional DELIMITED)" t nil) + +(nxhtml-autoload 'ldir-query-replace `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Replace FROM with TO in FILES in directory DIR. +This runs `query-replace-regexp' in files matching FILES in +directory DIR. + +See `tags-query-replace' for DELIMETED and more information. + +\(fn FROM TO FILES DIR &optional DELIMITED)" t nil) + +(nxhtml-autoload 'rdir-query-replace `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Replace FROM with TO in FILES in directory tree ROOT. +This runs `query-replace-regexp' in files matching FILES in +directory tree ROOT. + +See `tags-query-replace' for DELIMETED and more information. + +\(fn FROM TO FILE-REGEXP ROOT &optional DELIMITED)" t nil) + +(nxhtml-autoload 'replace-read-files `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Read files arg for replace. + +\(fn REGEXP &optional REPLACE)" nil nil) + +(nxhtml-autoload 'info-open-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Open an info file in `Info-mode'. + +\(fn INFO-FILE)" t nil) + +(nxhtml-autoload 'use-custom-style `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Setup like in `Custom-mode', but without things specific to Custom. + +\(fn)" nil nil) + +(defvar ourcomments-paste-with-convert-mode nil "\ +Non-nil if Ourcomments-Paste-With-Convert mode is enabled. +See the command `ourcomments-paste-with-convert-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `ourcomments-paste-with-convert-mode'.") + +(nxhtml-custom-autoload 'ourcomments-paste-with-convert-mode '../../../../../.emacs.d/nxhtml/util/ourcomments-util nil) + +(nxhtml-autoload 'ourcomments-paste-with-convert-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Pasted text may be automatically converted in this mode. +The functions in `ourcomments-paste-with-convert-hook' are run +after commands in `ourcomments-paste-with-convert-commands' if any +of the functions returns non-nil that text is inserted instead of +the original text. + +For exampel when this mode is on and you paste an html link in an +`org-mode' buffer it will be directly converted to an org style +link. (This is the default behaviour.) + +Tip: The Firefox plugin Copy as HTML Link is handy, see URL + `https://addons.mozilla.org/en-US/firefox/addon/2617'. + +Note: This minor mode will defadvice the paste commands. + +\(fn &optional ARG)" t nil) + +(defvar ourcomments-M-x-menu-mode nil "\ +Non-nil if Ourcomments-M-X-Menu mode is enabled. +See the command `ourcomments-M-x-menu-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `ourcomments-M-x-menu-mode'.") + +(nxhtml-custom-autoload 'ourcomments-M-x-menu-mode '../../../../../.emacs.d/nxhtml/util/ourcomments-util nil) + +(nxhtml-autoload 'ourcomments-M-x-menu-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Add commands started from Emacs menus to M-x history. +The purpose of this is to make it easier to redo them and easier +to learn how to do them from the command line (which is often +faster if you know how to do it). + +Only commands that are not already in M-x history are added. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'ourcomments-warning `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-util" nxhtml-install-dir) "\ +Not documented + +\(fn FORMAT-STRING &rest ARGS)" nil nil) + +;;;*** + +;;;### (autoloads (major-modep major-or-multi-majorp) "../../../../../.emacs.d/nxhtml/util/ourcomments-widgets" +;;;;;; "../../../../.emacs.d/nxhtml/util/ourcomments-widgets.el" +;;;;;; (19276 1446)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/ourcomments-widgets.el +(web-autoload-require 'ourcomments-widgets 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-widgets" nxhtml-install-dir 'nxhtml-byte-compile-file) + + (nxhtml-autoload 'command "ourcomments-widgets") + +(nxhtml-autoload 'major-or-multi-majorp `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-widgets" nxhtml-install-dir) "\ +Return t if VALUE is a major or multi major mode function. + +\(fn VALUE)" nil nil) + +(nxhtml-autoload 'major-modep `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/ourcomments-widgets" nxhtml-install-dir) "\ +Return t if VALUE is a major mode function. + +\(fn VALUE)" nil nil) + (nxhtml-autoload 'major-mode-function "ourcomments-widgets") + +;;;*** + +;;;### (autoloads (pause-start-in-new-emacs pause-mode pause) "../../../../../.emacs.d/nxhtml/util/pause" +;;;;;; "../../../../.emacs.d/nxhtml/util/pause.el" (19335 62524)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/pause.el +(web-autoload-require 'pause 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/pause" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'pause 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/pause" loads) nil (put 'pause 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/pause" loads)))) + +(defvar pause-mode nil "\ +Non-nil if Pause mode is enabled. +See the command `pause-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `pause-mode'.") + +(nxhtml-custom-autoload 'pause-mode '../../../../../.emacs.d/nxhtml/util/pause nil) + +(nxhtml-autoload 'pause-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/pause" nxhtml-install-dir) "\ +This minor mode tries to make you take a break. +It will jump up and temporary stop your work - even if you are +not in Emacs. If you are in Emacs it will however try to be +gentle and wait until you have been idle with the keyboard for a +short while. (If you are not in Emacs it can't be gentle. How +could it?) + +Then it will show you a special screen with a link to a yoga +exercise you can do when you pause. + +After the pause you continue your work where you were +interrupted. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'pause-start-in-new-emacs `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/pause" nxhtml-install-dir) "\ +Start pause with interval AFTER-MINUTES in a new Emacs instance. +The new Emacs instance will be started with -Q. However if +`custom-file' is non-nil it will be loaded so you can still +customize pause. + +One way of using this function may be to put in your .emacs +something like + + ;; for just one Emacs running pause + (when server-mode (pause-start-in-new-emacs 15)) + +See `pause-start' for more info. + +\(fn AFTER-MINUTES)" t nil) + +;;;*** + +;;;### (autoloads (global-pointback-mode pointback-mode) "../../../../../.emacs.d/nxhtml/util/pointback" +;;;;;; "../../../../.emacs.d/nxhtml/util/pointback.el" (19023 47098)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/pointback.el +(web-autoload-require 'pointback 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/pointback" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'pointback-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/pointback" nxhtml-install-dir) "\ +Restore previous window point when switching back to a buffer. + +\(fn &optional ARG)" t nil) + +(defvar global-pointback-mode nil "\ +Non-nil if Global-Pointback mode is enabled. +See the command `global-pointback-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `global-pointback-mode'.") + +(nxhtml-custom-autoload 'global-pointback-mode '../../../../../.emacs.d/nxhtml/util/pointback nil) + +(nxhtml-autoload 'global-pointback-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/pointback" nxhtml-install-dir) "\ +Toggle Pointback mode in every possible buffer. +With prefix ARG, turn Global-Pointback mode on if and only if +ARG is positive. +Pointback mode is enabled in all buffers where +`pointback-on' would do it. +See `pointback-mode' for more information on Pointback mode. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (popcmp-completing-read popcmp-completion-style +;;;;;; popcmp) "../../../../../.emacs.d/nxhtml/util/popcmp" "../../../../.emacs.d/nxhtml/util/popcmp.el" +;;;;;; (19365 37362)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/popcmp.el +(web-autoload-require 'popcmp 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/popcmp" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'popcmp 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/popcmp" loads) nil (put 'popcmp 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/popcmp" loads)))) + +(defvar popcmp-completion-style (cond (t 'popcmp-popup)) "\ +Completion style. +The currently available completion styles are: + +- popcmp-popup: Use OS popup menus (default). +- emacs-default: Emacs default completion. +- Company Mode completion. +- anything: The Anything elisp lib completion style. + +The style of completion set here is not implemented for all +completions. The scope varies however with which completion +style you have choosen. + +For information about Company Mode and how to use it see URL +`http://www.emacswiki.org/emacs/CompanyMode'. + +For information about Anything and how to use it see URL +`http://www.emacswiki.org/emacs/Anything'. + +See also the options `popcmp-short-help-beside-alts' and +`popcmp-group-alternatives' which are also availabe when popup +completion is available.") + +(nxhtml-custom-autoload 'popcmp-completion-style '../../../../../.emacs.d/nxhtml/util/popcmp nil) + +(nxhtml-autoload 'popcmp-completing-read `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/popcmp" nxhtml-install-dir) "\ +Read a string in the minubuffer with completion, or popup a menu. +This function can be used instead `completing-read'. The main +purpose is to provide a popup style menu for completion when +completion is tighed to text at point in a buffer. If a popup +menu is used it will be shown at window point. Whether a popup +menu or minibuffer completion is used is governed by +`popcmp-completion-style'. + +The variables PROMPT, TABLE, PREDICATE, REQUIRE-MATCH, +INITIAL-INPUT, POP-HIST, DEF and INHERIT-INPUT-METHOD all have the +same meaning is for `completing-read'. + +ALT-HELP should be nil or a hash variable or an association list +with the completion alternative as key and a short help text as +value. You do not need to supply help text for all alternatives. +The use of ALT-HELP is set by `popcmp-short-help-beside-alts'. + +ALT-SETS should be nil or an association list that has as keys +groups and as second element an alternative that should go into +this group. + +\(fn PROMPT TABLE &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT POP-HIST DEF INHERIT-INPUT-METHOD ALT-HELP ALT-SETS)" nil nil) + +;;;*** + +;;;### (autoloads (rebind-keys-mode rebind) "../../../../../.emacs.d/nxhtml/util/rebind" +;;;;;; "../../../../.emacs.d/nxhtml/util/rebind.el" (19292 15280)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/rebind.el +(web-autoload-require 'rebind 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/rebind" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'rebind 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/rebind" loads) nil (put 'rebind 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/rebind" loads)))) + +(defvar rebind-keys-mode nil "\ +Non-nil if Rebind-Keys mode is enabled. +See the command `rebind-keys-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `rebind-keys-mode'.") + +(nxhtml-custom-autoload 'rebind-keys-mode '../../../../../.emacs.d/nxhtml/util/rebind nil) + +(nxhtml-autoload 'rebind-keys-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/rebind" nxhtml-install-dir) "\ +Rebind keys as defined in `rebind-keys'. +The key bindings will override almost all other key bindings +since it is put on emulation level, like for example ``cua-mode' +and `viper-mode'. + +This is for using for example C-a to mark the whole buffer (or a +field). There are some predifined keybindings for this. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (rnc-mode) "../../../../../.emacs.d/nxhtml/util/rnc-mode" +;;;;;; "../../../../.emacs.d/nxhtml/util/rnc-mode.el" (18775 63606)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/rnc-mode.el +(web-autoload-require 'rnc-mode 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/rnc-mode" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'rnc-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/rnc-mode" nxhtml-install-dir) "\ +Major mode for editing RELAX NG Compact Syntax schemas. +\\{rnc-mode-map} + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (search-form) "../../../../../.emacs.d/nxhtml/util/search-form" +;;;;;; "../../../../.emacs.d/nxhtml/util/search-form.el" (19276 +;;;;;; 1446)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/search-form.el +(web-autoload-require 'search-form 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/search-form" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'search-form `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/search-form" nxhtml-install-dir) "\ +Display a form for search and replace. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (sex-mode sex) "../../../../../.emacs.d/nxhtml/util/sex-mode" +;;;;;; "../../../../.emacs.d/nxhtml/util/sex-mode.el" (19218 45784)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/sex-mode.el +(web-autoload-require 'sex-mode 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/sex-mode" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'sex 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/sex-mode" loads) nil (put 'sex 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/sex-mode" loads)))) + +(defvar sex-mode nil "\ +Non-nil if Sex mode is enabled. +See the command `sex-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `sex-mode'.") + +(nxhtml-custom-autoload 'sex-mode '../../../../../.emacs.d/nxhtml/util/sex-mode nil) + +(nxhtml-autoload 'sex-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/sex-mode" nxhtml-install-dir) "\ +Open certain files in external programs. +See `sex-get-file-open-cmd' for how to determine which files to +open by external applications. Note that this selection is +nearly the same as in `org-mode'. The main difference is that +the fallback always is to open a file in Emacs. (This is +necessary to avoid to disturb many of Emacs operations.) + +This affects all functions that opens files, like `find-file', +`find-file-noselect' etc. + +However it does not affect files opened through Emacs client. + +Urls can also be handled, see `sex-handle-urls'. + +When opening a file with the shell a (temporary) dummy buffer is +created in Emacs with major mode `sex-file-mode' and an external +program is called to handle the file. How this dummy buffer is +handled is governed by `sex-keep-dummy-buffer'. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (sml-modeline-mode sml-modeline) "../../../../../.emacs.d/nxhtml/util/sml-modeline" +;;;;;; "../../../../.emacs.d/nxhtml/util/sml-modeline.el" (19362 +;;;;;; 52688)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/sml-modeline.el +(web-autoload-require 'sml-modeline 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/sml-modeline" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'sml-modeline 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/sml-modeline" loads) nil (put 'sml-modeline 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/sml-modeline" loads)))) + +(defvar sml-modeline-mode nil "\ +Non-nil if Sml-Modeline mode is enabled. +See the command `sml-modeline-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `sml-modeline-mode'.") + +(nxhtml-custom-autoload 'sml-modeline-mode '../../../../../.emacs.d/nxhtml/util/sml-modeline nil) + +(nxhtml-autoload 'sml-modeline-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/sml-modeline" nxhtml-install-dir) "\ +Show buffer size and position like scrollbar in mode line. +You can customize this minor mode, see option `sml-modeline-mode'. + +Note: If you turn this mode on then you probably want to turn off +option `scroll-bar-mode'. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (tabkey2-emma-without-tabkey2 tabkey2-mode tabkey2) +;;;;;; "../../../../../.emacs.d/nxhtml/util/tabkey2" "../../../../.emacs.d/nxhtml/util/tabkey2.el" +;;;;;; (19278 3422)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/tabkey2.el +(web-autoload-require 'tabkey2 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/tabkey2" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'tabkey2 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/tabkey2" loads) nil (put 'tabkey2 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/tabkey2" loads)))) + +(defvar tabkey2-mode nil "\ +Non-nil if Tabkey2 mode is enabled. +See the command `tabkey2-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `tabkey2-mode'.") + +(nxhtml-custom-autoload 'tabkey2-mode '../../../../../.emacs.d/nxhtml/util/tabkey2 nil) + +(nxhtml-autoload 'tabkey2-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/tabkey2" nxhtml-install-dir) "\ +More fun with Tab key number two (completion etc). +This global minor mode by default binds Tab in a way that let you +do completion with Tab in all buffers (where it is possible). + +The Tab key is easy to type on your keyboard. Then why not use +it for completion, something that is very useful? Shells usually +use Tab for completion so many are used to it. This was the idea +of Smart Tabs and this is a generalization of that idea. + +However in Emacs the Tab key is usually used for indentation. +The idea here is that if Tab has been pressed once for +indentation, then as long as point stays further Tab keys might +as well do completion. + +So you kind of do Tab-Tab for first completion (and then just +Tab for further completions as long as point is not moved). + +And there is even kind of Tab-Tab-Tab completion: If completion +fails the next completion function will be the one you try with +next Tab. (You get some notification of this, of course.) + +See `tabkey2-first' for more information about usage. + +Note: If you do not want the Tab-Tab behaviour above, but still +want an easy way to reach the available completion functions, +then you can instead of turning on tabkey2-mode enter this in +your .emacs: + + (global-set-key [f8] 'tabkey2-cycle-completion-functions) + +After hitting f8 you will then be in the same state as after the +first in tabkey2-mode. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'tabkey2-emma-without-tabkey2 `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/tabkey2" nxhtml-install-dir) "\ +Not documented + +\(fn)" nil nil) + +;;;*** + +;;;### (autoloads (tyda-mode) "../../../../../.emacs.d/nxhtml/util/tyda" +;;;;;; "../../../../.emacs.d/nxhtml/util/tyda.el" (19276 1446)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/tyda.el +(web-autoload-require 'tyda 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/tyda" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(defvar tyda-mode nil "\ +Non-nil if Tyda mode is enabled. +See the command `tyda-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `tyda-mode'.") + +(nxhtml-custom-autoload 'tyda-mode '../../../../../.emacs.d/nxhtml/util/tyda nil) + +(nxhtml-autoload 'tyda-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/tyda" nxhtml-install-dir) "\ +Minor mode for key bindings for `tyda-lookup-word'. +It binds Alt-Mouse-1 just as the Tyda add-on does in Firefox. +Here are all key bindings + +\\{tyda-mode-map} + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (udev-call-first-step) "../../../../../.emacs.d/nxhtml/util/udev" +;;;;;; "../../../../.emacs.d/nxhtml/util/udev.el" (19412 30366)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/udev.el +(web-autoload-require 'udev 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/udev" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'udev-call-first-step `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/udev" nxhtml-install-dir) "\ +Set up and call first step. +Set up buffer LOG-BUFFER to be used for log messages and +controling of the execution of the functions in list STEPS which +are executed one after another. + +Write HEADER at the end of LOG-BUFFER. + +Call first step. + +If FINISH-FUN non-nil it should be a function. This is called +after last step with LOG-BUFFER as parameter. + +\(fn LOG-BUFFER STEPS HEADER FINISH-FUN)" nil nil) + +;;;*** + +;;;### (autoloads (udev-ecb-customize-startup udev-ecb-update) "../../../../../.emacs.d/nxhtml/util/udev-ecb" +;;;;;; "../../../../.emacs.d/nxhtml/util/udev-ecb.el" (19256 9012)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/udev-ecb.el +(web-autoload-require 'udev-ecb 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/udev-ecb" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'udev-ecb-update `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/udev-ecb" nxhtml-install-dir) "\ +Fetch and install ECB from the devel sources. +To determine where to store the sources see `udev-ecb-dir'. +For how to start ECB see `udev-ecb-load-ecb'. + +\(fn)" t nil) + +(nxhtml-autoload 'udev-ecb-customize-startup `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/udev-ecb" nxhtml-install-dir) "\ +Customize ECB dev nXhtml startup group. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (udev-rinari-update) "../../../../../.emacs.d/nxhtml/util/udev-rinari" +;;;;;; "../../../../.emacs.d/nxhtml/util/udev-rinari.el" (19256 +;;;;;; 9012)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/udev-rinari.el +(web-autoload-require 'udev-rinari 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/udev-rinari" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'udev-rinari-update `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/udev-rinari" nxhtml-install-dir) "\ +Fetch and install Rinari from the devel sources. +To determine where to store the sources and how to start rinari +see `udev-rinari-dir' and `udev-rinari-load-rinari'. + +\(fn)" t nil) + +;;;*** + +;;;### (autoloads (viper-tutorial) "../../../../../.emacs.d/nxhtml/util/viper-tut" +;;;;;; "../../../../.emacs.d/nxhtml/util/viper-tut.el" (19389 13794)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/viper-tut.el +(web-autoload-require 'viper-tut 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/viper-tut" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'viper-tutorial `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/viper-tut" nxhtml-install-dir) "\ +Run a tutorial for Viper. + +A simple classic tutorial in 5 parts that have been used by many +people starting to learn vi keys. You may learn enough to start +using `viper-mode' in Emacs. + +Some people find that vi keys helps against repetetive strain +injury, see URL + + `http://www.emacswiki.org/emacs/RepeatedStrainInjury'. + +Note: There might be a few clashes between vi key binding and +Emacs standard key bindings. You will be notified about those in +the tutorial. Even more, if your own key bindings comes in +between you will be notified about that too. + +\(fn PART &optional DONT-ASK-FOR-REVERT)" t nil) + +;;;*** + +;;;### (autoloads (vline-global-mode vline-mode) "../../../../../.emacs.d/nxhtml/util/vline" +;;;;;; "../../../../.emacs.d/nxhtml/util/vline.el" (19157 2170)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/vline.el +(web-autoload-require 'vline 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/vline" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'vline-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/vline" nxhtml-install-dir) "\ +Display vertical line mode. + +\(fn &optional ARG)" t nil) + +(defvar vline-global-mode nil "\ +Non-nil if Vline-Global mode is enabled. +See the command `vline-global-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `vline-global-mode'.") + +(nxhtml-custom-autoload 'vline-global-mode '../../../../../.emacs.d/nxhtml/util/vline nil) + +(nxhtml-autoload 'vline-global-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/vline" nxhtml-install-dir) "\ +Display vertical line mode as globally. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (whelp) "../../../../../.emacs.d/nxhtml/util/whelp" +;;;;;; "../../../../.emacs.d/nxhtml/util/whelp.el" (19278 3422)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/whelp.el +(web-autoload-require 'whelp 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/whelp" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'whelp 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/whelp" loads) nil (put 'whelp 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/whelp" loads)))) + +;;;*** + +;;;### (autoloads (winsav-switch-config winsav-save-full-config winsav-save-mode +;;;;;; winsav winsav-put-window-tree) "../../../../../.emacs.d/nxhtml/util/winsav" +;;;;;; "../../../../.emacs.d/nxhtml/util/winsav.el" (19295 41684)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/winsav.el +(web-autoload-require 'winsav 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/winsav" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'winsav-put-window-tree `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/winsav" nxhtml-install-dir) "\ +Put window structure SAVED-TREE into WINDOW. +Restore a structure SAVED-TREE returned from +`winsav-get-window-tree' into window WINDOW. + +If COPY-WIN-OVL is non-nil then overlays having a 'window +property pointing to one of the windows in SAVED-TREE where this +window still is shown will be copied to a new overlay with +'window property pointing to the corresponding new window. + +If WIN-OVL-ALL-BUFS is non-nil then all buffers will be searched +for overlays with a 'window property of the kind above. + +At the very end of this function the hook `winsav-after-put' is +run. + +\(fn SAVED-TREE WINDOW &optional COPY-WIN-OVL WIN-OVL-ALL-BUFS)" nil nil) + +(let ((loads (get 'winsav 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/winsav" loads) nil (put 'winsav 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/winsav" loads)))) + +(defvar winsav-save-mode nil "\ +Non-nil if Winsav-Save mode is enabled. +See the command `winsav-save-mode' for a description of this minor mode.") + +(nxhtml-custom-autoload 'winsav-save-mode '../../../../../.emacs.d/nxhtml/util/winsav nil) + +(nxhtml-autoload 'winsav-save-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/winsav" nxhtml-install-dir) "\ +Toggle winsav configuration saving mode. +With numeric ARG, turn winsav saving on if ARG is positive, off +otherwise. + +When this mode is turned on, winsav configurations are saved from +one session to another. A winsav configuration consists of +frames, windows and visible buffers configurations plus +optionally buffers and files managed by the functions used by +option `desktop-save-mode' + +By default this is integrated with `desktop-save-mode'. If +`desktop-save-mode' is on and `winsav-handle-also-desktop' is +non-nil then save and restore also desktop. + +See the command `winsav-switch-config' for more information and +other possibilities. + +Note: If you want to avoid saving when you exit just turn off +this minor mode. + +For information about what is saved and restored and how to save +and restore additional information see the function +`winsav-save-configuration'. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'winsav-save-full-config `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/winsav" nxhtml-install-dir) "\ +Saved current winsav configuration in directory DIRNAME. +Then change to this configuration. + +See also `winsav-switch-config'. + +\(fn DIRNAME)" nil nil) + +(nxhtml-autoload 'winsav-switch-config `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/winsav" nxhtml-install-dir) "\ +Change to winsav configuration in directory DIRNAME. +If DIRNAME is the current winsav configuration directory then +offer to save it or restore it from saved values. + +Otherwise, before switching offer to save the current winsav +configuration. Then finally switch to the new winsav +configuration, creating it if it does not exist. + +If option `desktop-save-mode' is on then buffers and files are also +restored and saved the same way. + +See also option `winsav-save-mode' and command +`winsav-tell-configuration'. + +\(fn DIRNAME)" t nil) + +;;;*** + +;;;### (autoloads (winsav-rotate winsize-set-mode-line-colors winsize-save-window-configuration +;;;;;; winsize-balance-siblings resize-windows) "../../../../../.emacs.d/nxhtml/util/winsize" +;;;;;; "../../../../.emacs.d/nxhtml/util/winsize.el" (19292 53308)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/winsize.el +(web-autoload-require 'winsize 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/winsize" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'resize-windows `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/winsize" nxhtml-install-dir) "\ +Start window resizing. +During resizing a window is selected. You can move its +borders. In the default configuration the arrow keys moves the +right or bottom border if they are there. To move the opposite +border use S-arrowkeys. + +You can also do other window operations, like splitting, deleting +and balancing the sizes. The keybindings below describes the key +bindings during resizing:\\ + + `balance-windows' \\[balance-windows] + `winsize-balance-siblings' \\[winsize-balance-siblings] + `fit-window-to-buffer' \\[fit-window-to-buffer] + `shrink-window-if-larger-than-buffer' \\[shrink-window-if-larger-than-buffer] + + `winsav-rotate' \\[winsav-rotate] + + `winsize-move-border-up' \\[winsize-move-border-up] + `winsize-move-border-down' \\[winsize-move-border-down] + `winsize-move-border-left' \\[winsize-move-border-left] + `winsize-move-border-right' \\[winsize-move-border-right] + + `winsize-to-border-or-window-left' \\[winsize-to-border-or-window-left] + `winsize-to-border-or-window-up' \\[winsize-to-border-or-window-up] + `winsize-to-border-or-window-right' \\[winsize-to-border-or-window-right] + `winsize-to-border-or-window-down' \\[winsize-to-border-or-window-down] + + Note that you can also use your normal keys for + `forward-char', `backward-char', `next-line', `previous-line' + and what you have on HOME and END to move in the windows. That + might sometimes be necessary to directly select a + window. (You may however also use `other-window' or click + with the mouse, see below.) + + `delete-window' \\[delete-window] + `delete-other-windows' \\[delete-other-windows] + `split-window-vertically' \\[split-window-vertically] + `split-window-horizontally' \\[split-window-horizontally] + `other-window' \\[other-window] + + `winsize-save-window-configuration' \\[winsize-save-window-configuration] + `winsize-next-window-configuration' \\[winsize-next-window-configuration] + `winsize-previous-window-configuration' \\[winsize-previous-window-configuration] + + `mouse-set-point' \\[mouse-set-point] + + `winsize-quit' \\[winsize-quit] + `winsize-stop-go-back' \\[winsize-stop-go-back] + `winsize-stop' \\[winsize-stop] + `winsize-stop-and-execute' \\[winsize-stop-and-execute] + + `winsize-help' \\[winsize-help] + `describe-key' \\[describe-key] + `describe-key-briefly' \\[describe-key-briefly] + (All the normal help keys work, and at least those above will + play well with resizing.) + +Nearly all other keys exits window resizing and they are also +executed. However, the key sequences in `winsize-let-me-use' and +dito for commands there are also executed without exiting +resizing. + +The colors of the modelines are changed to those given in +`winsize-mode-line-colors' to indicate that you are resizing +windows. To make this indication more prominent the text in the +selected window is marked with the face hold in the variable +`winsize-selected-window-face'. + +The option `winsize-juris-way' decides how the borders to move +are selected. If this option is non-nil then the right or bottom +border are the ones that are moved with the arrow keys and the +opposite border with shift arrow keys. + +If `winsize-juris-way' is nil then the following apply: + +As you select other borders or move to new a window the mouse +pointer is moved inside the selected window to show which borders +are beeing moved. The mouse jumps a little bit to make its +position more visible. You can turn this off by customizing +`winsize-make-mouse-prominent'. + +Which borders initially are choosen are controlled by the +variable `winsize-autoselect-borders'. + +** Example: Border selection, movements and windows. + + Suppose you have a frame divided into windows like in the + figure below. If window B is selected when you start resizing + then (with default settings) the borders marked with 'v' and + 'h' will be the ones that the arrow keys moves. To indicate + this the mouse pointer is placed in the right lower corner of + the selected window B. + + +----------+-----------+--------+ + | | v | + | | v | + | A | _B_ v | + | | v | + | | v | + | | x v | + +hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh+ + | | | + | | | + | | | + | | | + | | | + | | | + +----------+---------+----------+ + + Now if you press M- then the picture below shows what has + happened. Note that the selected vertical border is now the one + between A and B. The mouse pointer has moved to the + corresponding corner in the window B, which is still selected. + + +----------+-----------+--------+ + | v | | + | v | | + | A v _B_ | | + | v | | + | v | | + | v x | | + +hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh+ + | | | + | | | + | | | + | | | + | | | + | | | + +----------+---------+----------+ + + Press M- once again. This gives this picture: + + +----------+-----------+--------+ + | v | | + | v | | + | _A_ v B | | + | v | | + | v | | + | x v | | + +hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh+ + | | | + | | | + | | | + | | | + | | | + | | | + +----------+---------+----------+ + + Note that the window A is now selected. However there is no + border that could be moved to the left of this window (which + would otherwise be chosen now) so the border between A and B is + still the one that and moves. The mouse has + moved to A. + + If we now delete window A the new situation will look like + this: + + +----------+-----------+--------+ + | | | + | | | + | _B_ | | + | | | + | | | + | x | | + +hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh+ + | | | + | | | + | | | + | | | + | | | + | | | + +----------+---------+----------+ + + + +>>>> testing stuff >>>> +`help-mode-hook' +`temp-buffer-show-function' +`view-exit-action' +<<<<<<<<<<<<<<<<<<<<<<< + +\(fn)" t nil) + +(nxhtml-autoload 'winsize-balance-siblings `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/winsize" nxhtml-install-dir) "\ +Make current window siblings the same height or width. +It works the same way as `balance-windows', but only for the +current window and its siblings. + +\(fn)" t nil) + +(nxhtml-autoload 'winsize-save-window-configuration `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/winsize" nxhtml-install-dir) "\ +Not documented + +\(fn)" t nil) + +(nxhtml-autoload 'winsize-set-mode-line-colors `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/winsize" nxhtml-install-dir) "\ +Turn mode line colors on if ON is non-nil, otherwise off. + +\(fn ON)" nil nil) + +(nxhtml-autoload 'winsav-rotate `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/winsize" nxhtml-install-dir) "\ +Rotate window configuration on selected frame. +MIRROR should be either 'mirror-left-right, 'mirror-top-bottom or +nil. In the first case the window configuration is mirrored +vertically and in the second case horizontally. If MIRROR is nil +the configuration is not mirrored. + +If TRANSPOSE is non-nil then the window structure is transposed +along the diagonal from top left to bottom right (in analogy with +matrix transosition). + +If called interactively MIRROR will is 'mirror-left-right by +default, but 'mirror-top-bottom if called with prefix. TRANSPOSE +is t. This mean that the window configuration will be turned one +quarter clockwise (or counter clockwise with prefix). + +\(fn MIRROR TRANSPOSE)" t nil) + +;;;*** + +;;;### (autoloads (wrap-to-fill-column-mode wrap-to-fill-left-marg-modes +;;;;;; wrap-to-fill-left-marg wrap-to-fill) "../../../../../.emacs.d/nxhtml/util/wrap-to-fill" +;;;;;; "../../../../.emacs.d/nxhtml/util/wrap-to-fill.el" (19306 +;;;;;; 54112)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/wrap-to-fill.el +(web-autoload-require 'wrap-to-fill 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/wrap-to-fill" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'wrap-to-fill 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/wrap-to-fill" loads) nil (put 'wrap-to-fill 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/wrap-to-fill" loads)))) + +(defvar wrap-to-fill-left-marg nil "\ +Left margin handling for `wrap-to-fill-column-mode'. +Used by `wrap-to-fill-column-mode'. If nil then center the +display columns. Otherwise it should be a number which will be +the left margin.") + +(nxhtml-custom-autoload 'wrap-to-fill-left-marg '../../../../../.emacs.d/nxhtml/util/wrap-to-fill t) + +(defvar wrap-to-fill-left-marg-modes '(text-mode fundamental-mode) "\ +Major modes where `wrap-to-fill-left-margin' may be nil.") + +(nxhtml-custom-autoload 'wrap-to-fill-left-marg-modes '../../../../../.emacs.d/nxhtml/util/wrap-to-fill t) + +(nxhtml-autoload 'wrap-to-fill-column-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/wrap-to-fill" nxhtml-install-dir) "\ +Use `fill-column' display columns in buffer windows. +By default the display columns are centered, but see the option +`wrap-to-fill-left-marg'. + +Fix-me: +Note 1: When turning this on `visual-line-mode' is also turned on. This +is not reset when turning off this mode. + +Note 2: The text properties 'wrap-prefix and 'wrap-to-fill-prefix +is set by this mode to indent continuation lines. + +Key bindings added by this minor mode: + +\\{wrap-to-fill-column-mode-map} + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (zencoding-preview zencoding-expand-yas zencoding-mode +;;;;;; zencoding-expand-line zencoding) "../../../../../.emacs.d/nxhtml/util/zencoding-mode" +;;;;;; "../../../../.emacs.d/nxhtml/util/zencoding-mode.el" (19276 +;;;;;; 1446)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/util/zencoding-mode.el +(web-autoload-require 'zencoding-mode 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/zencoding-mode" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(let ((loads (get 'zencoding 'custom-loads))) (if (member '"../../../../../.emacs.d/nxhtml/util/zencoding-mode" loads) nil (put 'zencoding 'custom-loads (cons '"../../../../../.emacs.d/nxhtml/util/zencoding-mode" loads)))) + +(nxhtml-autoload 'zencoding-expand-line `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/zencoding-mode" nxhtml-install-dir) "\ +Replace the current line's zencode expression with the corresponding expansion. +If prefix ARG is given or region is visible call `zencoding-preview' to start an +interactive preview. + +Otherwise expand line directly. + +For more information see `zencoding-mode'. + +\(fn ARG)" t nil) + +(nxhtml-autoload 'zencoding-mode `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/zencoding-mode" nxhtml-install-dir) "\ +Minor mode for writing HTML and CSS markup. +With zen coding for HTML and CSS you can write a line like + + ul#name>li.item*2 + +and have it expanded to + +
    +
  • +
  • +
+ +This minor mode defines keys for quick access: + +\\{zencoding-mode-keymap} + +Home page URL `http://www.emacswiki.org/emacs/ZenCoding'. + +See also `zencoding-expand-line'. + +\(fn &optional ARG)" t nil) + +(nxhtml-autoload 'zencoding-expand-yas `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/zencoding-mode" nxhtml-install-dir) "\ +Not documented + +\(fn)" t nil) + +(nxhtml-autoload 'zencoding-preview `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/util/zencoding-mode" nxhtml-install-dir) "\ +Expand zencode between BEG and END interactively. +This will show a preview of the expanded zen code and you can +accept it or skip it. + +\(fn BEG END)" t nil) + +;;;*** + +;;;### (autoloads (web-vcs-investigate-elisp-file web-vcs-byte-compile-file +;;;;;; web-vcs-message-with-face web-vcs-get-files-from-root web-vcs-log-edit +;;;;;; web-vcs-default-download-directory) "../../../../../.emacs.d/nxhtml/web-vcs" +;;;;;; "../../../../.emacs.d/nxhtml/web-vcs.el" (19412 30366)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/web-vcs.el +(web-autoload-require 'web-vcs 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/web-vcs" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'web-vcs-default-download-directory `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/web-vcs" nxhtml-install-dir) "\ +Try to find a suitable place. +Considers site-start.el, site- + +\(fn)" nil nil) + +(nxhtml-autoload 'web-vcs-log-edit `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/web-vcs" nxhtml-install-dir) "\ +Open log file. + +\(fn)" t nil) + +(nxhtml-autoload 'web-vcs-get-files-from-root `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/web-vcs" nxhtml-install-dir) "\ +Download a file tree from VCS system using the web interface. +Use WEB-VCS entry in variable `web-vcs-links-regexp' to download +files via http from URL to directory DL-DIR. + +Show URL first and offer to visit the page. That page will give +you information about version control system (VCS) system used +etc. + +\(fn WEB-VCS URL DL-DIR)" nil nil) + +(nxhtml-autoload 'web-vcs-message-with-face `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/web-vcs" nxhtml-install-dir) "\ +Display a colored message at the bottom of the string. +FACE is the face to use for the message. +FORMAT-STRING and ARGS are the same as for `message'. + +Also put FACE on the message in *Messages* buffer. + +\(fn FACE FORMAT-STRING &rest ARGS)" nil nil) + +(nxhtml-autoload 'web-vcs-byte-compile-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/web-vcs" nxhtml-install-dir) "\ +Byte compile FILE in a new Emacs sub process. +EXTRA-LOAD-PATH is added to the front of `load-path' during +compilation. + +FILE is set to `buffer-file-name' when called interactively. +If LOAD + +\(fn FILE &optional LOAD EXTRA-LOAD-PATH COMP-DIR)" t nil) + +(nxhtml-autoload 'web-vcs-investigate-elisp-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/web-vcs" nxhtml-install-dir) "\ +Not documented + +\(fn FILE-OR-BUFFER)" t nil) + +;;;*** + +;;;### (autoloads nil nil ("../../../../.emacs.d/nxhtml/autostart.el" +;;;;;; "../../../../.emacs.d/nxhtml/autostart22.el" "../../../../.emacs.d/nxhtml/etc/schema/schema-path-patch.el" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml-base.el" "../../../../.emacs.d/nxhtml/nxhtml-loaddefs.el" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/html-imenu.el" "../../../../.emacs.d/nxhtml/nxhtml/html-move.el" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/html-quote.el" "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-autoload.el" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/nxhtml-strval.el" "../../../../.emacs.d/nxhtml/nxhtml/nxhtmljs.el" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml/outline-magic.el" "../../../../.emacs.d/nxhtml/nxhtml/wtest.el" +;;;;;; "../../../../.emacs.d/nxhtml/related/flymake-helpers.el" +;;;;;; "../../../../.emacs.d/nxhtml/related/flymakemsg.el" "../../../../.emacs.d/nxhtml/related/flymu.el" +;;;;;; "../../../../.emacs.d/nxhtml/related/php-imenu.el" "../../../../.emacs.d/nxhtml/tests/angus77-setup-jde.el" +;;;;;; "../../../../.emacs.d/nxhtml/tests/emacstest-suites.el" "../../../../.emacs.d/nxhtml/tests/ert2.el" +;;;;;; "../../../../.emacs.d/nxhtml/tests/hfy-test.el" "../../../../.emacs.d/nxhtml/tests/inemacs/bug1013.el" +;;;;;; "../../../../.emacs.d/nxhtml/tests/mumamo-test.el" "../../../../.emacs.d/nxhtml/tests/nxhtmltest-helpers.el" +;;;;;; "../../../../.emacs.d/nxhtml/util/appmenu-fold.el" "../../../../.emacs.d/nxhtml/util/css-simple-completion.el" +;;;;;; "../../../../.emacs.d/nxhtml/util/custsets.el" "../../../../.emacs.d/nxhtml/util/ecb-batch-compile.el" +;;;;;; "../../../../.emacs.d/nxhtml/util/fupd.el" "../../../../.emacs.d/nxhtml/util/idn.el" +;;;;;; "../../../../.emacs.d/nxhtml/util/key-cat.el" "../../../../.emacs.d/nxhtml/util/mumamo-aspnet.el" +;;;;;; "../../../../.emacs.d/nxhtml/util/mumamo-trace.el" "../../../../.emacs.d/nxhtml/util/new-key-seq-widget.el" +;;;;;; "../../../../.emacs.d/nxhtml/util/nxml-mode-os-additions.el" +;;;;;; "../../../../.emacs.d/nxhtml/util/org-panel.el" "../../../../.emacs.d/nxhtml/util/rxi.el" +;;;;;; "../../../../.emacs.d/nxhtml/util/useful-commands.el" "../../../../.emacs.d/nxhtml/web-autoload.el") +;;;;;; (19826 40509 115984)) + +;;;*** + +;;;### (autoloads (nxhtml-byte-recompile-file nxhtml-byte-compile-file +;;;;;; nxhtml-get-missing-files nxhtml-update-existing-files nxhtml-setup-download-all +;;;;;; nxhtml-setup-auto-download nxhtml-setup-install) "../../../../../.emacs.d/nxhtml/nxhtml-web-vcs" +;;;;;; "../../../../.emacs.d/nxhtml/nxhtml-web-vcs.el" (19412 30366)) +;;; Generated autoloads from ../../../../.emacs.d/nxhtml/nxhtml-web-vcs.el +(web-autoload-require 'nxhtml-web-vcs 'lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml-web-vcs" nxhtml-install-dir 'nxhtml-byte-compile-file) + + +(nxhtml-autoload 'nxhtml-setup-install `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml-web-vcs" nxhtml-install-dir) "\ +Setup and start nXhtml installation. + +This is for installation and updating directly from the nXhtml +development sources. + +There are two different ways to install: + + (1) Download all at once: `nxhtml-setup-download-all' + (2) Automatically download part by part: `nxhtml-setup-auto-download' + +You can convert between those ways by calling this function again. +You can also do this by setting the option `nxhtml-autoload-web' yourself. + +When you have nXhtml installed you can update it: + + (3) Update new files in nXhtml: `nxhtml-update-existing-files' + +To learn more about nXhtml visit its home page at URL +`http://www.emacswiki.com/NxhtmlMode/'. + +If you want to test auto download (but not use it further) there +is a special function for that, you answer T here: + + (T) Test automatic download part by part: `nxhtml-setup-test-auto-download' + +====== +*Note* +If you want to download a zip file with latest released version instead then +please see URL `http://ourcomments.org/Emacs/nXhtml/doc/nxhtml.html'. + +\(fn WAY)" t nil) + +(nxhtml-autoload 'nxhtml-setup-auto-download `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml-web-vcs" nxhtml-install-dir) "\ +Set up to autoload nXhtml files from the web. + +This function will download some initial files and then setup to +download the rest when you need them. + +Files will be downloaded under the directory root you specify in +DL-DIR. + +Note that files will not be upgraded automatically. The auto +downloading is just for files you are missing. (This may change a +bit in the future.) If you want to upgrade those files that you +have downloaded you can just call `nxhtml-update-existing-files'. + +You can easily switch between this mode of downloading or +downloading the whole of nXhtml by once. To switch just call the +command `nxhtml-setup-install'. + +See also the command `nxhtml-setup-download-all'. + +Note: If your nXhtml is to old you can't use this function + directly. You have to upgrade first, se the function + above. Version 2.07 or above is good for this. + +\(fn DL-DIR)" t nil) + +(nxhtml-autoload 'nxhtml-setup-download-all `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml-web-vcs" nxhtml-install-dir) "\ +Download or update all of nXhtml. + +You can download all if nXhtml with this command. + +To update existing files use `nxhtml-update-existing-files'. + +If you want to download only those files you are actually using +then call `nxhtml-setup-auto-download' instead. + +See the command `nxhtml-setup-install' for a convenient way to +call these commands. + +For more information about auto download of nXhtml files see +`nxhtml-setup-auto-download'. + +\(fn DL-DIR)" t nil) + +(nxhtml-autoload 'nxhtml-update-existing-files `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml-web-vcs" nxhtml-install-dir) "\ +Update existing nXhtml files from the development sources. +Only files you already have will be updated. + +Note that this works both if you have setup nXhtml to auto +download files as you need them or if you have downloaded all of +nXhtml at once. + +For more information about installing and updating nXhtml see the +command `nxhtml-setup-install'. + +\(fn)" t nil) + +(nxhtml-autoload 'nxhtml-get-missing-files `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml-web-vcs" nxhtml-install-dir) "\ +Not documented + +\(fn SUB-DIR FILE-NAME-LIST)" nil nil) + +(nxhtml-autoload 'nxhtml-byte-compile-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml-web-vcs" nxhtml-install-dir) "\ +Not documented + +\(fn FILE &optional LOAD)" nil nil) + +(nxhtml-autoload 'nxhtml-byte-recompile-file `(lp '(nxhtml-download-root-url nil) "../../../../.emacs.d/nxhtml/nxhtml-web-vcs" nxhtml-install-dir) "\ +Byte recompile FILE file if necessary. +For more information see `nxhtml-byte-compile-file'. +Loading is done if recompiled and LOAD is t. + +\(fn FILE &optional LOAD)" t nil) + +;;;*** diff --git a/emacs.d/nxhtml/nxhtml-web-vcs.el b/emacs.d/nxhtml/nxhtml-web-vcs.el new file mode 100644 index 0000000..fb0fb09 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml-web-vcs.el @@ -0,0 +1,689 @@ +;;; nxhtml-web-vcs.el --- nXhtml things for web-vcs.el +;; +;; Author: Lennart Borgman (lennart O borgman A gmail O com) +;; Created: 2010-01-13 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 3, 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 'nxhtml-base nil t)) +;;(eval-when-compile (require 'nxhtmlmaint nil t)) +(eval-when-compile (require 'web-vcs nil t)) + +(defvar nxhtml-web-vcs-file (or load-file-name + (when (boundp 'bytecomp-filename) bytecomp-filename) + buffer-file-name) + "This file.") + +(defun nxhtml-require-base () + (require 'nxhtml-base nil t) + (unless (featurep 'nxhtml-base) + ;; At startup, need to load it by hand. + (let ((load-path load-path)) + (add-to-list 'load-path (file-name-directory nxhtml-web-vcs-file)) + (require 'nxhtml-base)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Repository URL + + +;;(nxhtml-default-download-directory) +(defun nxhtml-default-download-directory () + (let* ((ur (expand-file-name "" "~")) + (ur-len (length ur)) + (full (if (and (boundp 'nxhtml-install-dir) + nxhtml-install-dir) + nxhtml-install-dir + (file-name-as-directory + (expand-file-name "" + (web-vcs-default-download-directory))))) + (full-len (length full))) + (if (and (> full-len ur-len) + (string= ur (substring full 0 ur-len))) + (concat "~" (substring full ur-len)) + full))) + + +(defun nxhtml-web-vcs-read-dl-dir (prompt) + "Return current nXhtml install dir or read dir." + (or (and (boundp 'nxhtml-install-dir) + nxhtml-install-dir) + (let* ((pr (concat + "A directory named 'nxhtml' will be created below the root you give." + "\n" + prompt)) + (root (read-directory-name pr (nxhtml-default-download-directory)))) + (when root + (expand-file-name "nxhtml" root))))) + +;;(call-interactively 'nxhtml-setup-install) +;; (read-key "Prompt: ") +;; (y-or-n-p "Prompt") +;;;###autoload +(defun nxhtml-setup-install (way) + "Setup and start nXhtml installation. + +This is for installation and updating directly from the nXhtml +development sources. + +There are two different ways to install: + + (1) Download all at once: `nxhtml-setup-download-all' + (2) Automatically download part by part: `nxhtml-setup-auto-download' + +You can convert between those ways by calling this function again. +You can also do this by setting the option `nxhtml-autoload-web' yourself. + +When you have nXhtml installed you can update it: + + (3) Update new files in nXhtml: `nxhtml-update-existing-files' + +To learn more about nXhtml visit its home page at URL +`http://www.emacswiki.com/NxhtmlMode/'. + +If you want to test auto download \(but not use it further) there +is a special function for that, you answer T here: + + (T) Test automatic download part by part: `nxhtml-setup-test-auto-download' + +====== +*Note* +If you want to download a zip file with latest released version instead then +please see URL `http://ourcomments.org/Emacs/nXhtml/doc/nxhtml.html'." + (interactive (let ((curr-cfg (current-window-configuration))) + (describe-function 'nxhtml-setup-install) + (select-window (get-buffer-window (help-buffer))) + (delete-other-windows) + (list + (let* ((key nil) + (has-nxhtml (and (boundp 'nxhtml-install-dir) nxhtml-install-dir)) + (current-way (if has-nxhtml + (if (and (boundp 'nxhtml-autoload-web) + nxhtml-autoload-web) + "Your current setup is to download part by part from the web." + "Your current setup it to download all of nXhtml at once.") + "(You have not currently installed nXhtml.)")) + (prompt (concat "Setup nXhtml install." + "\n" current-way + "\n" + "\n(1) Download whole at once, or (2) part by part as needed" + (if has-nxhtml "\n(3) Update your existing nXhtml" "") + "\n(T) For temporary testing downloading part by part" + "\n" + "\n(? for help, q to quit): ")) + (allowed-keys (if has-nxhtml + '(?1 ?2 ?3 ?T ?q 7) + '(?1 ?2 ?T ?q 7))) + (please nil)) + (while (not (member key allowed-keys)) + (if (not (member key '(??))) + (when key + (unless please + (setq prompt (concat "Please answer with one of the alternatives.\n\n" + prompt)) + (setq please t))) + (describe-function 'nxhtml-setup-install) + (select-window (get-buffer-window (help-buffer))) + (delete-other-windows)) + (setq key (web-vcs-read-key prompt)) + ;;(message "key = %S" key) (sit-for 1) + ) + (case key + (7 (set-window-configuration curr-cfg) + nil) + (?1 'whole) + (?2 'part-by-part) + (?3 'update-existing) + (?T 'test-part-by-part) + ))))) + (message "") + (case way + (whole (call-interactively 'nxhtml-setup-download-all)) + (part-by-part (call-interactively 'nxhtml-setup-auto-download)) + (update-existing (call-interactively 'nxhtml-update-existing-files)) + (test-part-by-part (call-interactively 'nxhtml-setup-test-auto-download)) + ((eq nil way) nil) + (t (error "Unknown way = %S" way)))) + +(defvar nxhtml-basic-files '( + "nxhtml-base.el" + "nxhtml-loaddefs.el" + "web-autoload.el" + "etc/schema/schema-path-patch.el" + "nxhtml/nxhtml-autoload.el" + "autostart.el" + )) + +;;;###autoload +(defun nxhtml-setup-auto-download (dl-dir) + "Set up to autoload nXhtml files from the web. + +This function will download some initial files and then setup to +download the rest when you need them. + +Files will be downloaded under the directory root you specify in +DL-DIR. + +Note that files will not be upgraded automatically. The auto +downloading is just for files you are missing. (This may change a +bit in the future.) If you want to upgrade those files that you +have downloaded you can just call `nxhtml-update-existing-files'. + +You can easily switch between this mode of downloading or +downloading the whole of nXhtml by once. To switch just call the +command `nxhtml-setup-install'. + +See also the command `nxhtml-setup-download-all'. + +Note: If your nXhtml is to old you can't use this function + directly. You have to upgrade first, se the function + above. Version 2.07 or above is good for this." + (interactive (progn + (describe-function 'nxhtml-setup-auto-download) + (select-window (get-buffer-window (help-buffer))) + (delete-other-windows) + (nxhtml-check-convert-to-part-by-part) + (list + (progn + (when (and (boundp 'nxhtml-autoload-web) + (not nxhtml-autoload-web)) + (unless (yes-or-no-p "Convert to updating nXhtml part by part? ") + (throw 'command-level nil))) + (nxhtml-web-vcs-read-dl-dir "Download nXhtml part by part to directory: "))))) + (catch 'command-level + (if (not dl-dir) + (unless (with-no-warnings (called-interactively-p)) + (error "dl-dir should be a directory")) + (nxhtml-check-convert-to-part-by-part) + (when (and (boundp 'nxhtml-install-dir) + nxhtml-install-dir) + (unless (string= (file-truename dl-dir) + (file-truename nxhtml-install-dir)) + (error "Download dir must be same as nxhtml-install-dir=%S" nxhtml-install-dir))) + (let* (;; Need some files: + (web-vcs-el-src (concat (file-name-sans-extension web-vcs-el-this) ".el")) + (web-vcs-el (expand-file-name (file-name-nondirectory web-vcs-el-src) + dl-dir)) + (vcs 'lp) + (base-url (nxhtml-download-root-url nil)) + (byte-comp (if (boundp 'web-autoload-autocompile) + web-autoload-autocompile + t)) + (has-nxhtml (and (boundp 'nxhtml-install-dir) + nxhtml-install-dir)) + (web-vcs-folder-cache nil)) + (setq nxhtml-install-dir dl-dir) + (let ((root (file-name-directory dl-dir))) + (unless (file-exists-p root) + (unless (yes-or-no-p (format "Directory %S does not exist, create it? " root)) + (error "Aborted by user")))) + (make-directory dl-dir t) + (setq message-log-max t) + (view-echo-area-messages) + (message "") + (message "") + (web-vcs-message-with-face 'web-vcs-green "==== Starting nXhtml part by part state ====") + (message "has-nxhtml=%s" has-nxhtml) + ;; Fix-me: First copy this file and web-vcs.el to its destination: + (unless (string= (file-truename dl-dir) + (file-truename (file-name-directory nxhtml-web-vcs-file))) + (dolist (f (list web-vcs-el-src nxhtml-web-vcs-file)) + (copy-file f (expand-file-name (file-name-nondirectory f) dl-dir) + 'ok-overwrite))) + (when byte-comp (web-vcs-byte-compile-newer-file web-vcs-el t)) + ;; Get basic file list: + (catch 'web-autoload-comp-restart + ;;(let ((file-mask (regexp-opt nxhtml-basic-files))) + ;; (web-vcs-get-missing-matching-files vcs base-url dl-dir file-mask)) + (dolist (f nxhtml-basic-files) + (web-vcs-get-missing-matching-files vcs base-url dl-dir f)) + ;; Autostart.el has not run yet, add download dir to load-path. + (let ((load-path (cons (file-name-directory web-vcs-el) load-path))) + (when byte-comp + (dolist (file nxhtml-basic-files) + (let ((el-file (expand-file-name file dl-dir))) + (web-vcs-byte-compile-newer-file el-file nil))))) + (let ((autostart-file (expand-file-name "autostart" dl-dir))) + ;;(ad-deactivate 'require) + (web-vcs-set&save-option 'nxhtml-autoload-web t) + (web-vcs-log nil nil "* nXhtml: Download Part by Part as Needed\n") + (load autostart-file) + (unless (ad-is-active 'require) (ad-activate 'require)) + (web-vcs-log-save) + (web-vcs-message-with-face 'web-vcs-green "==== Basic files for nXhtml part by part are now installed ====") + (web-vcs-display-messages t) + (unless has-nxhtml (nxhtml-add-loading-to-custom-file autostart-file t)))))))) + +;;(call-interactively 'nxhtml-download) +;;;###autoload +(defun nxhtml-setup-download-all (dl-dir) + "Download or update all of nXhtml. + +You can download all if nXhtml with this command. + +To update existing files use `nxhtml-update-existing-files'. + +If you want to download only those files you are actually using +then call `nxhtml-setup-auto-download' instead. + +See the command `nxhtml-setup-install' for a convenient way to +call these commands. + +For more information about auto download of nXhtml files see +`nxhtml-setup-auto-download'." + (interactive (progn + (describe-function 'nxhtml-setup-auto-download) + (select-window (get-buffer-window (help-buffer))) + (delete-other-windows) + ;;(nxhtml-check-convert-to-part-by-part) + (list + (nxhtml-web-vcs-read-dl-dir "Download whole nXhtml to directory: ")))) + + (let ((root (file-name-directory dl-dir))) + (unless (file-exists-p root) + (unless (yes-or-no-p (format "Directory %S does not exist, create it? " root)) + (error "Aborted by user")))) + (make-directory dl-dir t) + (let ((msg (concat "Downloading nXhtml through Launchpad web interface will take rather long\n" + "time (5-15 minutes) so you may want to do it in a separate Emacs session.\n\n" + "Do you want to download using this Emacs session? " + ))) + (if (not (y-or-n-p msg)) + (message "Aborted") + (setq message-log-max t) + (let ((do-byte (y-or-n-p "Do you want to byte compile the files after downloading? "))) + (nxhtml-download-1 dl-dir nil do-byte))))) + + +(defun nxhtml-download-1 (dl-dir revision do-byte) + "Download nXhtml to directory DL-DIR. +If REVISION is nil download latest revision, otherwise the +specified one. + +If DO-BYTE is non-nil byte compile nXhtml after download." + (let* ((has-nxhtml (and (boundp 'nxhtml-install-dir) + nxhtml-install-dir)) + (base-url nxhtml-web-vcs-base-url) + (files-url (concat base-url "files/")) + ;;(revs-url (concat base-url "changes/")) + (rev-part (if revision (number-to-string revision) "head%3A/")) + (full-root-url (concat files-url rev-part)) + (web-vcs-folder-cache nil) + (web-autoload-paranoid nil)) + ;;(nxhtml-require-base) + (when (web-vcs-get-files-from-root 'lp full-root-url dl-dir) + (web-vcs-display-messages t) + (web-vcs-log nil nil "* nXhtml: Download All\n") + (web-vcs-set&save-option 'nxhtml-autoload-web nil) + (message "") + (web-vcs-message-with-face 'web-vcs-green "==== Starting downloading whole nXhtml ====") + (let ((autostart-file (expand-file-name "autostart" dl-dir))) + (load autostart-file) + (web-vcs-log-save) + (web-vcs-message-with-face 'web-vcs-green "==== All files for nXhtml are now installed ====") + (nxhtmlmaint-byte-recompile) + (unless has-nxhtml (nxhtml-add-loading-to-custom-file autostart-file nil)))))) + +(defun nxhtml-check-convert-to-part-by-part () + (when (and (boundp 'nxhtml-install-dir) + nxhtml-install-dir) + (unless (and (boundp 'nxhtml-autoload-web) + nxhtml-autoload-web) + (if (not (boundp 'nxhtml-menu:version)) + (error "nxhtml-install-dir set but no version found") + (unless (string-match "[\.0-9]+" nxhtml-menu:version) + (error "Can't find current version nxhtml-menu:version=%S" nxhtml-menu:version)) + (let* ((ver-str (match-string 0 nxhtml-menu:version)) + (ver-num (string-to-number ver-str))) + (when (< ver-num 2.07) + (web-vcs-message-with-face 'web-vcs-red "Too old nXhtml for download part by part.") + (throw 'command-level nil))))))) + + +;;(directory-files default-directory nil "\\el$") +;;(directory-files default-directory nil "[^#~]$") +;;;###autoload +(defun nxhtml-update-existing-files () + "Update existing nXhtml files from the development sources. +Only files you already have will be updated. + +Note that this works both if you have setup nXhtml to auto +download files as you need them or if you have downloaded all of +nXhtml at once. + +For more information about installing and updating nXhtml see the +command `nxhtml-setup-install'." + ;; Fix-me: download new files too if you are not auto downloading. + (interactive) + (when (y-or-n-p "Do you want to update your nXhtml files? ") + (message "") + (web-vcs-display-messages t) + (web-vcs-message-with-face 'web-vcs-yellow "*\nStarting updating your nXhtml files.\n*\n") + (message nil) + (web-vcs-clear-folder-cache) + (let ((vcs 'lp) + (base-url (nxhtml-download-root-url nil)) + (dl-dir nxhtml-install-dir) + web-vcs-folder-cache) + (setq dl-dir (file-name-as-directory dl-dir)) + (web-vcs-update-existing-files vcs base-url dl-dir dl-dir) + (web-vcs-clear-folder-cache)) + (display-buffer (get-buffer-create "*Compile-Log*")) + (nxhtmlmaint-byte-recompile) + (web-vcs-log-save) + (web-vcs-message-with-face 'web-vcs-yellow "*\nFinished updating your nXhtml files.\n*\n") + (message nil))) + + +;;(nxhtml-maybe-download-files (expand-file-name "nxhtml/doc/img/" nxhtml-install-dir) nil) +;;;###autoload +(defun nxhtml-get-missing-files (sub-dir file-name-list) + (let (file-mask + (root-url (nxhtml-download-root-url nil)) + files-regexp + (full-dir (expand-file-name sub-dir nxhtml-install-dir)) + miss-names) + (if file-name-list + (progn + (dolist (f file-name-list) + (let ((full-f (expand-file-name f full-dir))) + (unless (file-exists-p full-f) + (setq miss-names (cons f miss-names))))) + (setq files-regexp (regexp-opt miss-names))) + (setq files-regexp ".*")) + ;;(unless (file-exists-p full-dir) (make-directory full-dir t)) + (setq file-mask + (concat (file-relative-name (file-name-as-directory full-dir) + nxhtml-install-dir) + files-regexp)) + (let ((web-vcs-folder-cache nil)) + (web-vcs-get-missing-matching-files 'lp root-url nxhtml-install-dir + file-mask)))) + +;; Fix-me: Does not work, Emacs Bug +;; Maybe use wget? http://gnuwin32.sourceforge.net/packages/wget.htm +;; http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=5103 +;; (nxhtml-get-release-revision) +(defun nxhtml-get-release-revision () + "Get revision number for last release." + (let* ((all-rev-url "http://code.launchpad.net/%7Enxhtml/nxhtml/main") + (url-buf (url-retrieve-synchronously all-rev-url)) + (vcs-rec (or (assq 'lp web-vcs-links-regexp) + (error "Does not know web-vcs 'lp"))) + (rel-ver-regexp (nth 6 vcs-rec)) + ) + (message "%S" url-buf) + (with-current-buffer url-buf + (when (re-search-forward rel-ver-regexp nil t) + (match-string 1))))) + +;;;###autoload +(defun nxhtml-byte-compile-file (file &optional load) + (let ((extra-load-path (when nxhtml-install-dir + (mapcar (lambda (p) + (file-name-as-directory + (expand-file-name p nxhtml-install-dir))) + '("tests" "related" "nxhtml" "util" "."))))) + ;; (message "nxhtml-byte-compile-file:extra-load-path=%s" extra-load-path) + (web-vcs-byte-compile-file file load extra-load-path))) + +;; fix-me: change web-vcs-byte-compile-file instead +;;;###autoload +(defun nxhtml-byte-recompile-file (file &optional load) + "Byte recompile FILE file if necessary. +For more information see `nxhtml-byte-compile-file'. +Loading is done if recompiled and LOAD is t." + (interactive (list (buffer-file-name) + t)) + (let ((elc-file (byte-compile-dest-file file))) + (if (file-newer-than-file-p file elc-file) + (nxhtml-byte-compile-file file load) + (message "Byte compilation of this file is up to date.")))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Add to custom file + + +(defvar nxhtml-handheld-wincfg nil) +(defun nxhtml-handheld-restore-wincg () + (when nxhtml-handheld-wincfg + (set-window-configuration nxhtml-handheld-wincfg) + (setq nxhtml-handheld-wincfg nil))) + +;;(nxhtml-handheld-add-loading-to-custom-file "TEST-ME") +(defun nxhtml-handheld-add-loading-to-custom-file (file-to-load) + (setq nxhtml-handheld-wincfg (current-window-configuration)) + (delete-other-windows) + (let ((info-buf (get-buffer-create "Information about how to add nXhtml to (custom-file)")) + (load-str (format "(load %S)" file-to-load))) + (with-current-buffer info-buf + (add-hook 'kill-buffer-hook 'nxhtml-handheld-restore-wincg nil t) + (insert "Insert the following line to (custom-file), ie the file in the other window:\n\n") + (let ((here (point))) + (insert " " + (propertize load-str 'face 'secondary-selection) + "\n") + (copy-region-as-kill here (point)) + (insert "\nThe line above is in the clipboard so you can just paste it where you want it.\n") + (insert "When ready kill this buffer.") + (goto-char here)) + (setq buffer-read-only t) + (set-buffer-modified-p nil)) + (set-window-buffer (selected-window) info-buf) + (find-file-other-window (custom-file)))) + +;; (nxhtml-add-loading-to-custom-file "test-file") +(defun nxhtml-add-loading-to-custom-file (file-to-load part-by-part) + (message "") + (require 'cus-edit) + (if (not (condition-case nil (custom-file) (error nil))) + (progn + (message "\n\n") + (web-vcs-message-with-face + 'web-vcs-red + (concat "Since you have started this Emacs session without running your init files" + "\nthey are unknown and the installation can not add the statement below." + "\nTo finish the setup of nXhtml you must add" + "\n\n (load %S)" + "\n\nto your custom-file if you have not done it yet." + "\nYou must also customize the variable `nxhtml-autoload-web' to tell that" + (if part-by-part + "\nyou want to download nXhml files as you need them." + "\nyou do not want to allow automatic downloading of nXhtml files." + ) + "\n") + file-to-load) + (message "") + (web-vcs-display-messages t)) + (let ((prompt (concat "Basic setup of nXhtml is done, but it must be loaded from (custom-file)." + "\nShould I add loading of nXhtml to (custom-file) for you? "))) + (if (yes-or-no-p prompt) + (nxhtml-add-loading-to-custom-file-auto file-to-load) + (if (yes-or-no-p "Should I guide you through how to do it? ") + (nxhtml-handheld-add-loading-to-custom-file file-to-load) + (web-vcs-message-with-face 'web-vcs-green + "OK. You need to add (load %S) to your init file" file-to-load)))))) + +;; Fix-me: really do this? Is it safe enough? +(defun nxhtml-add-loading-to-custom-file-auto (file-to-load) + (unless (file-name-absolute-p file-to-load) + (error "nxhtml-add-loading-to-custom-file: Not abs file name: %S" file-to-load)) + (let ((old-buf (find-buffer-visiting (custom-file))) + (full-to-load (expand-file-name file-to-load))) + (with-current-buffer (or old-buf (find-file-noselect (custom-file))) + (save-restriction + (widen) + (catch 'done + (while (progn + (while (progn (skip-chars-forward " \t\n\^l") + (looking-at ";")) + (forward-line 1)) + (not (eobp))) + (let ((start (point)) + (form (read (current-buffer)))) + (when (eq (nth 0 form) 'load) + (let* ((form-file (nth 1 form)) + (full-form-file (expand-file-name form-file))) + (when (string= full-form-file full-to-load) + (throw 'done nil)) + (when (and (string= (file-name-nondirectory full-form-file) + (file-name-nondirectory full-to-load)) + (not (string= full-form-file full-to-load))) + (if (yes-or-no-p "Replace current nXhtml loading in (custom-file)? ") + (progn + (goto-char start) ;; at form start now + (forward-char (length "(load ")) + (skip-chars-forward " \t\n\^l") ;; at start of string + (setq start (point)) + (setq form (read (current-buffer))) + (delete-region start (point)) + (insert (format "%S" full-to-load)) + (basic-save-buffer)) + (web-vcs-message-with-face 'web-vcs-red "Can't continue then") + (web-vcs-display-messages t) + (throw 'command-level nil))))))) + ;; At end of file + (insert (format "\n(load %S)\n" file-to-load)) + (basic-save-buffer)) + (unless old-buf (kill-buffer old-buf)))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;; Start Testing function +(defun emacs-Q-no-nxhtml (&rest args) + (let* ((old-env-load-path (getenv "EMACSLOADPATH")) + sub-env-load-path + (elp-list (or (when old-env-load-path + ;;(split-string old-env-load-path ";")) + (split-string old-env-load-path path-separator)) + load-path)) + (sub-elp-list nil) + ret + (this-emacs-exe (locate-file invocation-name + (list invocation-directory) + exec-suffixes))) + (dolist (p elp-list) + (when (file-exists-p p) + (unless (string= nxhtml-install-dir p) + (let* ((dir (file-name-directory p)) + (last (file-name-nondirectory p)) + (last-dir (file-name-nondirectory + (directory-file-name dir)))) + (unless (and (string= "nxhtml" last-dir) + (member last '("util" "test" "nxhtml" "related" "alt"))) + (setq sub-elp-list (cons p sub-elp-list))))))) + ;;(setq sub-env-load-path (mapconcat 'identity (reverse sub-elp-list) ";")) + (setq sub-env-load-path (mapconcat 'identity (reverse sub-elp-list) path-separator)) + (setenv "EMACSLOADPATH" sub-env-load-path) + (setq ret (apply 'call-process this-emacs-exe nil 0 nil "-Q" args)) + (setenv "EMACSLOADPATH" old-env-load-path) + ret)) + +;; (call-interactively-p 'nxhtml-setup-test-auto-download) +;; (nxhtml-setup-test-auto-download "c:/test2/") +(defun nxhtml-setup-test-auto-download (test-dir) + "Test autoload in a new emacs, started with 'emacs -Q'. +You can choose where to download the files and just delete them +when you have tested enough." + (interactive (list (read-directory-name "Directory for test of auto download of nXhtml: "))) + (let ((this-dir (file-name-directory web-vcs-el-this)) + (this-name (file-name-nondirectory web-vcs-el-this)) + that-file) + (when (and (file-exists-p test-dir) + (not (y-or-n-p (format "Directory %S exists, really test there? " test-dir)))) + (error "Aborted")) + (unless (file-exists-p test-dir) (make-directory test-dir)) + (setq that-file (expand-file-name this-name test-dir)) + (when (file-exists-p that-file) (delete-file that-file)) + (copy-file web-vcs-el-this that-file) + (emacs-Q-no-nxhtml "-l" that-file "-f" "nxhtml-setup-test-auto-download-do-it-here"))) + +(defun nxhtml-setup-test-auto-download-do-it-here () + "Helper for `nxhtml-setup-test-auto-down-load'." + (let ((this-dir (file-name-directory web-vcs-el-this))) + (nxhtml-setup-auto-download this-dir))) + +(defun web-vcs-check-if-modified () + (let ( + (t1 (format-time-string "%Y-%m-%dT%T%z" (date-to-time "2010-01-01 18:20"))) + (t2 (format-time-string "%Y-%m-%dT%T%z" (date-to-time "Mon, 28 Dec 2009 08:57:44 GMT"))) + (url-request-extra-headers + (list + (cons "If-Modified-Since" + (format-time-string + ;;"%Y-%m-%dT%T%z" + "%a, %e %b %Y %H:%M:%S GMT" + (nth 5 (file-attributes "c:/test/temp.el" ))) + ))) + xb) + (setq xb (url-retrieve-synchronously "http://www.emacswiki.org/emacs/download/anything.el")) + (switch-to-buffer xb) + )) +;; (emacs-Q-no-nxhtml "web-vcs.el" "-l" "c:/test/d27/web-autostart.el") +;; (emacs-Q-no-nxhtml "web-vcs.el" "-l" "c:/test/d27/autostart.el") +;; (emacs-Q-no-nxhtml "web-vcs.el" "-f" "eval-buffer" "-f" "nxhtml-temp-setup-auto-download") +;; (emacs-Q-no-nxhtml "-l" "c:/test/d27/web-vcs" "-l" "c:/test/d27/nxhtml-web-vcs" "-f" "nxhtml-temp-setup-auto-download") +;; (emacs-Q-no-nxhtml "-l" "c:/test/d27/nxhtml-web-vcs" "-f" "nxhtml-temp-setup-auto-download") +;; (emacs-Q-no-nxhtml "--geometry=200x50+100+100" "-l" "c:/test/d27/web-vcs" "-f" "web-vcs-nxhtml") +(defun nxhtml-temp-setup-auto-download () + ;;(when (fboundp 'w32-send-sys-command) (w32-send-sys-command #xf030) (sit-for 2)) + (set-frame-size (selected-frame) + (/ 1024 (frame-char-width)) + (/ 512 (frame-char-height)) + ) + (tool-bar-mode -1) + (set-frame-position (selected-frame) 100 50) + (when (y-or-n-p "Do nXhtml? ") + (view-echo-area-messages) + (setq truncate-lines t) + (split-window-horizontally) + (let ((load-path (cons default-directory load-path))) + (require 'web-vcs)) + ;(nxhtml-setup-auto-download "c:/test/d27") + (call-interactively 'nxhtml-setup-auto-download) + )) +;;;;;; End Testing function +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +(provide 'nxhtml-web-vcs) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; nxhtml-web-vcs.el ends here diff --git a/emacs.d/nxhtml/nxhtml/ChangeLog b/emacs.d/nxhtml/nxhtml/ChangeLog new file mode 100644 index 0000000..c24d360 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/ChangeLog @@ -0,0 +1,17 @@ +2006-04-26 + + * nxhtml.el (nxhtml-insert-skeleton-if-empty) + (nxhtml-insert-frame-skeleton): New functions. + +2006-04-25 + + * nxhtml.el (nxhtml-coding-systems-complete) + (nxhtml-script-url-predicate, nxhtml-script-completion-pattern) + (nxhtml-image-url-predicate, nxhtml-image-completion-pattern) + (nxhtml-mailto-predicate, nxhtml-predicate-error) + (nxhtml-in-xml-attribute-value-regex) + (nxhtml-read-mail-url-history, nxhtml-read-web-url-history) + (nxhtml-read-url-history, nxhtml-read-url-type) + (nxhtml-read-url-type-help, nxhtml-read-url) + (rng-complete-attribute-value): New entries for completion. + diff --git a/emacs.d/nxhtml/nxhtml/doc/demo.html b/emacs.d/nxhtml/nxhtml/doc/demo.html new file mode 100644 index 0000000..8696032 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/doc/demo.html @@ -0,0 +1,71 @@ + + + + + nXhtml Short Tour + + + + + + + + + +
+ +
+

Popup completion

+

nXhtml can use popup style completion too (for XHTML)

+ + Popup completion + Popup completion (thumbnail) +
+

+ more about popup +

+

+ more about popup +

+
+
+ +
+

Emacs style completion

+

Emacs default style for completion uses the minibuffer and an Emacs window

+ + Emacs style completion + Emacs style completion (thumbnail) +
du
+
+
+ +
+ desc div +
+ + diff --git a/emacs.d/nxhtml/nxhtml/doc/html2xhtml.html b/emacs.d/nxhtml/nxhtml/doc/html2xhtml.html new file mode 100644 index 0000000..2228c80 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/doc/html2xhtml.html @@ -0,0 +1,39 @@ + + + + + + How to Convert to XHTML + + + + +

+ How to Convert to XHTML +

+

+ With nxhtml-mode you can edit XHTML documents, but not HTML + dito. So what do you do with your old HTML documents? The + answer is simple: You convert them to XHTML! There is today + not many reasons not to convert them to XHTML. You may say + "but what about old browsers?". Most users just do not have + old browsers today. Old browsers are too dangerous to use on the + Internet. +

+

+ You can convert the documents easily from within nxhtml-mode + with Tidy. However + Tidy does not come with nxhtml, you have to install it yourself. +

+

+ When Tidy is called from Emacs you can do a whole directory tree + at once. When a buffer is in nxhtml-mode (and tidy.el is found) + there is an entry on the menus called Tidy from which you + can access tidy and set the options for it. Note especially the + Quick Options Settings where you can set options for + converting to XHTML easily. +

+ + + diff --git a/emacs.d/nxhtml/nxhtml/doc/htmlfontify-example.html b/emacs.d/nxhtml/nxhtml/doc/htmlfontify-example.html new file mode 100644 index 0000000..0eafb8d --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/doc/htmlfontify-example.html @@ -0,0 +1,424 @@ + + + + + + + + + + +

Example of htmlfontify.el output

+ +

+ The following is an example of the output you can get with htmlfontify.el. + The version used here is shipped with nXhtml. + (A new version from the original author is on its way.) +

+ + + + + + + + + + + +
Emacs Icon (patched)  Emacs - Frame Dump
+ + + + + + + + + + + + + + + +
+ + + +
+ +
;; This buffer is for notes you don't want to save, and for Lisp evaluation.
+;; If you want to create a file, visit that file with C-x C-f,
+;; then enter the text in that file's own buffer.
+
+
+ +
+
-- (Unix)-- *scratch* (Lisp Interaction Abbrev hs) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ + + + +
cadr is a compiled Lisp function in `subr.el'.
+(cadr x)
+
+Return the car of the cdr of x.
+
+[back]
+
+ +
+
-- (Unix)%% *Help* (Help View Abbrev) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+ + + +
+ + + + +
comint-highlight-prompt                       abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+compilation-column-number                     abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+compilation-error                             abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+compilation-info                              abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+compilation-line-number                       abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+compilation-warning                           abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+completion-dynamic-face                       abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+completion-tooltip-face                       abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
+
+ + +
Truncated to line 11 - 19!
+
+
-- (Unix)%% *Faces* (Help View Abbrev) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ + + + +
snow                   snow                                                                                                                        #fffafa
+ghost white            GhostWhite                                                                                                                  #f8f8ff
+white smoke            WhiteSmoke                                                                                                                  #f5f5f5
+gainsboro              gainsboro                                                                                                                   #dcdcdc
+floral white           FloralWhite                                                                                                                 #fffaf0
+old lace               OldLace                                                                                                                     #fdf5e6
+linen                  linen                                                                                                                       #faf0e6
+antique white          AntiqueWhite                                                                                                                #faebd7
+
+ + +
Truncated to line 1 - 9!
+
+
-- (Unix)%% *Colors* (Help View Abbrev) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+ + + + +
________________________
+Program and Value Search
+
+When you use Emacs on MS Windows you sometimes want to fetch values
+and program locations from MS Windows.  Many of these values are
+stored in the MS Windows Registry.  Since Emacs is written to be used
+on many platforms (with the emphasis on GPL platforms) the effort to
+let Emacs read the Registry directly has not been made.  Below you can
+
+ + +
Truncated to line 29 - 37!
+
+
-- (Unix)** *Customize EmacsW32* (Custom Abbrev) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ + + + +
  Add quick printing to File menu (htmlize-view-print-visible): t
+  Keep default print entries in File menu (w32-print-menu-show-print): nil
+  Keep default ps print entries in File menu (w32-print-menu-show-ps-print): nil
+  Use keyboard Window keys as Emacs META (w32-meta-style): w32-lr
+  Underlined accelerators in menu bar (menuacc-active): t
+  Inferior shell + path for unix style programs (w32shell-shell): cmd
+
+   Set all to w32 style!   Reset all to default!   Customize EmacsW32 ... 
+
+ + +
Truncated to line 13 - 21!
+
+
-- (Unix)** *Customize EmacsW32* (Custom Abbrev) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ + + +
+ + + + +
-*- mode: grep; default-directory: "c:/emacs/p/070604/EmacsW32/nxml/util/" -*-
+Grep started at Fri Dec 28 22:54:06
+
+grep -i -nH -e "hfy-tmpfont-stack" *.el
+htmlfontify.el:596:(defvar hfy-tmpfont-stack nil
+htmlfontify.el:999:           (entry (assoc key hfy-tmpfont-stack))
+htmlfontify.el:1003:        (setq tag               (format "%04d" (length hfy-tmpfont-stack))
+htmlfontify.el:1005:              hfy-tmpfont-stack (cons entry hfy-tmpfont-stack)))
+
+ + +
Truncated to line 1 - 9!
+
+
-- (Unix)%% *grep* (Grep Abbrev) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ + + + +
5 matches for "hfy-tmpfont-stack" in buffer: htmlfontify.el
+    596:(defvar hfy-tmpfont-stack nil
+    999:           (entry (assoc key hfy-tmpfont-stack))
+   1003:        (setq tag               (format "%04d" (length hfy-tmpfont-stack))
+   1005:              hfy-tmpfont-stack (cons entry hfy-tmpfont-stack)))
+   1228:        ;;(hfy-tmpfont-stack nil)
+
+ +
+
-- (Unix)%% *Occur* (Occur Abbrev) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+
+ M-x  hfyview-frame
+ + diff --git a/emacs.d/nxhtml/nxhtml/doc/img/Las_Medulas.jpg b/emacs.d/nxhtml/nxhtml/doc/img/Las_Medulas.jpg new file mode 100644 index 0000000000000000000000000000000000000000..694a2c5a08326cf4a70f3c2c0b4bad24ef0cfc2c GIT binary patch literal 40927 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 Z!RpSXz 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/Toco_toucan.jpg b/emacs.d/nxhtml/nxhtml/doc/img/Toco_toucan.jpg new file mode 100644 index 0000000000000000000000000000000000000000..269886c070dad674a077dacbf25cce9164ca0886 GIT binary patch literal 17430 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/bacchante2.jpg b/emacs.d/nxhtml/nxhtml/doc/img/bacchante2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a736099335dd062d1b72d104dba59e8054e62d0f GIT binary patch literal 67205 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

=xA&Fut9;?c(V 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/butterflies.jpg b/emacs.d/nxhtml/nxhtml/doc/img/butterflies.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a7352a686e597713cdddd91206705cbaa1dc0ba6 GIT binary patch literal 14954 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/butterflies.png b/emacs.d/nxhtml/nxhtml/doc/img/butterflies.png new file mode 100644 index 0000000000000000000000000000000000000000..8d606370bc91615877294e8d9f023dec76342401 GIT binary patch literal 65893 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/continue-play.jpg b/emacs.d/nxhtml/nxhtml/doc/img/continue-play.jpg new file mode 100644 index 0000000000000000000000000000000000000000..587113ee38a25a48232ebfe54a72aed12047447b GIT binary patch literal 44390 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 SBQo$n!2Kw1;f?+@p#RxIk>(!& literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/divine2.jpg b/emacs.d/nxhtml/nxhtml/doc/img/divine2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6a8ea5158499b6db338ef0f8c1324b26b8e4f830 GIT binary patch literal 69985 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/edit-part.png b/emacs.d/nxhtml/nxhtml/doc/img/edit-part.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6ab2a81a4ce8be2c7e441a85052ab84d87a922 GIT binary patch literal 23263 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 F{TC<2(0u>^ literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/editing-web-files.png b/emacs.d/nxhtml/nxhtml/doc/img/editing-web-files.png new file mode 100644 index 0000000000000000000000000000000000000000..ce30bdfc50b34eb57797806baf7490bb7ef2f586 GIT binary patch literal 7237 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 T@6J(r00000NkvXXu0mjfY*bpq literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/editing-web-files.xcf b/emacs.d/nxhtml/nxhtml/doc/img/editing-web-files.xcf new file mode 100644 index 0000000000000000000000000000000000000000..670388214446d2fc9b70479cc2edbc6f5b85074b GIT binary patch literal 15415 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 bHtSxpvBlXQ>)-Q|AA!o>Kj$SsF17wI4ONR= literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/emacs-style-completion.png b/emacs.d/nxhtml/nxhtml/doc/img/emacs-style-completion.png new file mode 100644 index 0000000000000000000000000000000000000000..0a404fbf48d1fda7ea4fef6f88f020408bfac5ec GIT binary patch literal 23199 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%0D;z|Oa#70lucC;Q3TCZV&7sh~Al)U3|>!!GN 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 Pr7@IWX~>tzntu2{Wt-&N literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/emacsP.png b/emacs.d/nxhtml/nxhtml/doc/img/emacsP.png new file mode 100644 index 0000000000000000000000000000000000000000..e0a5ecb60f46493ab46b3a3cd824cc6f71e5372f GIT binary patch literal 1882 zcmV-g2c`IlP)WFU8GbZ8({Xk{QrNlj4iWF>9@00zEEL_t(|+U=T8XdG1> z$3MH>F4H6}yWMWxn2brStwyL?G!PJ>7mEpPF-4>vEYw4x1rI%lc(fjZryc}_3icuh z9&G7K0~I`Yu@XuWq-~0SnmFoix{15pZZ?nUFyrCP?9A>=_Fp%x1s@Dy-@Kjqet*C3 z@6UUiP=61P^a%5akH~|3nYNsIJ_q5mv_nF%Zm`G&-9VBe&?vG5#(Q;?L4?`jg2C$;RB5>`fT(D!9#6TAMK7gq>m*2x0dI{9z-jKGOv1+~0 zk_Q$(leyh1nJVB$6XtQ&D9E?~$a_4}orJEO^vI<+0OoC&{T=qc3hEf`5ty04O4Lfm z3p|?j69B1u?{L<|jzQ_140z}J00jYebFjybkv>(_`!W2Kz;`FNtdLVk{-R2Ml6A%*dEzBD3d|h&Sr~X zmSEsrLUjo&e1f%Fvh}`NeNP9X;hbyreUq|a)ebQaOVe=YJQS|D^RW>aI1SehNdghq zTNV&9v(hl$?B*EF)VT2-?4KaCW)RPOB*EW{LSZ2nsN*uQB?_wsbPHfhz=M=Q=pTfB z+dHLsFs7kv6ru_!FF-l#0tXvaN?u-hM(lTIU}*Om?eyFkteKCn6a_YUyra~BS0WJG znIznsWJ46V`(ty#)H4XNaVlNuz<6tEa6tnTI56$c6LV*H}lfWte{Pq#_sO&mxjUfs^A&r<#yV8t+vJHq2R|Ku= zy)xrQGtyuSX$j;t5BSTYo){2~4Nyx&{9<>R#VZuPh{M-$xOx=CJj$Nq61)?5-pi2B zaxM%ISr9j-U@=_@=!&-kz?&CGD|H|O(A_VyT`MDM0=KU~G{Z&{R*JCc=QPEuX=2Z- zD2kMjV`WED6-xvdO)LRRQz*)mEMSXTAozh3ZZ(!3cx{?Qir`AR_WMBl6k_9Sh)T&h zq7*kZM9JehquTP78w!CM6#@#sH3shzFn}X@5-HbetA-1_Hh`Vn&u>!8&L*a)<4UK2 z9F;l~0%X890PhmW$u!21Jc)j30blbKFjk6o+Eh<86*qP78?A$P3H*5$ZoMyO-mpoO zq@`;|Y#W649ORx;0?U)oKaSqU2~(A4jn=_e2&iL(nDvv$J0uL(LWL!p$UAwu4^7Id z3MhTa=HezumTiKsY9-XS330WCM9M?L+adp)mT7Cdr+M2xUKgyW1@7E5WZbm_-q#DM z#{x+7`$-ga;PPI#eE`riZmO*30;8JA{eWL{KcJn%;>F{z<6}8-AWEm*z-;2R#V*Cin&k&R&w5u=F~B-}ahO>gRba{4;X^56Ep!DIQl(n6Bm z&;`mHodMs{sf3TjH*uE#uv>>n6B06@I|dx?9Qc-gq4CM-aGu0d_NK+~q({Sl31M$f zI}E<9qeY)5zKyf|Yn@;=AifR4Z+0Gh+h?OeDfZTNw{AJ1v87Aaj_{iq=;}Q9mL$|D zJMDPR-#)}+z&e7z|Ks&qPh5&){$pE40dp)PH}2~Mz9TqW}N^07*qoM6N<$f=e=E;s5{u literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/emacsP16.png b/emacs.d/nxhtml/nxhtml/doc/img/emacsP16.png new file mode 100644 index 0000000000000000000000000000000000000000..54b597b6ece9515c79940ead71a5a047bdbdcff7 GIT binary patch literal 694 zcmV;n0!jUeP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFW7 z7AhEcdIYZE~j$A2?Bn;1f>(UiU*D%gV1i+Hf$y^wQMc znR!M4m>=^70MURbg3dDkeM&+w0h!p2T?aAsUI_F3oWUtWb`1Ky4e19%ULB0%7B<0* zTAh&4c?8=YidGCG0=?tmx?dqW2uIID?${u}#e-%QUDLQ>9h3p54Bgu(+|QWKDO~dl z+zgz!I$XNH1nZ9>8pX|J(7l;7xD}yjl@R$gi0V+9A2$EI54Go@T#yF3lPK9pd8dv- z*CFzu8^h`YD4t0LT@QK&Q~>)LAVGvO<=Y_X^?)^qYtZ@x)j8PyXa&=^VC=O0-w9wR zhG1=g-8M+VI5ZbBh3$qXF70*5OQuY>l9y8QvRnjp*z%;u`SxrxiKVgGDW zp9jkoYD-lBvYDhE)Sfd6K+@lH?Pd?Ta-FTWRq~0UAJ_u5P7y~S<1qF7eprT;i+1&s zcR4U^ML7X^1%Vz$6oZHsF}`O7ag=P`fswfzwkMj;;9Z4{Z{Wz3?}U&sAb~-dU{ke* zjaPSQFBI+M*(QfBEgOV07*qoM6N<$f+Kq_S^xk5 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/embedded-css.png b/emacs.d/nxhtml/nxhtml/doc/img/embedded-css.png new file mode 100644 index 0000000000000000000000000000000000000000..25c11d4b675cd1652cbca8dae42833d03023fc8f GIT binary patch literal 14019 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/embedded-xhtml.png b/emacs.d/nxhtml/nxhtml/doc/img/embedded-xhtml.png new file mode 100644 index 0000000000000000000000000000000000000000..85b98f3cb605eb87a04ef97b6cb1785178614155 GIT binary patch literal 17326 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 A8UO$Q literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/foldit-temp-opened.png b/emacs.d/nxhtml/nxhtml/doc/img/foldit-temp-opened.png new file mode 100644 index 0000000000000000000000000000000000000000..5e027257860c526f6bce9b15ea6fc9924c88a49b GIT binary patch literal 17590 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 R1CJSD@O1TaS?83{1OTLepu7M8 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/fun-brain-2.png b/emacs.d/nxhtml/nxhtml/doc/img/fun-brain-2.png new file mode 100644 index 0000000000000000000000000000000000000000..a24f0f4730ed6cc12538d84255a28d3a5294402f GIT binary patch literal 40042 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 F& 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 RJ68Yz002ovPDHLkV1f&mmjM6( literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/getitbuttons-1.xcf b/emacs.d/nxhtml/nxhtml/doc/img/getitbuttons-1.xcf new file mode 100644 index 0000000000000000000000000000000000000000..8ec9aaa86baed854515c6eb18851a153ff05cec5 GIT binary patch literal 5446 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 TN+W(L-KD>&YXAJh@1MT{YrtuL literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/giraffe.jpg b/emacs.d/nxhtml/nxhtml/doc/img/giraffe.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6bf9b57ef94f217595a099571fcfa7c57876bd0d GIT binary patch literal 20966 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 JX)3gT|Jh62BhUZ< literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/healthy_feet2.jpg b/emacs.d/nxhtml/nxhtml/doc/img/healthy_feet2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed3ab6f8ee9aeea5060d00ee727090b278ba58ab GIT binary patch literal 24042 zcmb5VWl)?=6E3{C23T})*(GQQ?k)=p1a}MW?hptTe6huOaCi3vcPF?7g0m1H1W5t` z4sU%`U!A|_s+##RT|G1R%+&Ps)qOv&J%0xfDMMjU0LlwEQ8)pB=Uo7~g1>_;0PyY| zfE@q;V84_XJZ}Qz02pZK=;&w|FBJv`1|}9hHr5LW@$hi)frP}wKtdppgq((ggp`U5 z2m~>LsAy^F>FG%*m>^7a5E?pqy8m^8@}i1`iA8{oO+ZHqB&GX*#&bUahz1|>Kx@| zG;|Ei7a23~MTGi4{QtwFpaRht(Rnb4No1HbEl9z<&l>>z7wwm3AV3Q6K}dX_^Z@_B zin3UKQ3%YJ2|Jspi02Bt*kS}#T&4oC5EJ#J%l)z=u^7vB7P zTT?Rax|+;eVHGChU<@D}X2-9ZA{6*Aqm4R`vgm`^vR;w!pGl0+Ro8>|imhR`b>wok zVwDFx?pE^cc&Fz_vD5C4b~K&A&j63CFP2;wyiqMQtLxTa$NxP3+9ZZu-oTmIXk&lObj_G;#>+9{l$#XbsWI18 z{oA9~6gxXJp|tVnxjD)*b-nw$N)uc7uWOIzqXT2>zoGG3&2nkHmh?H*u(0>ge}01t zzaz4Xg)?Y>il%J$`X Z$8rEY^He?ipOI~?U766Dc3k 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 Fe*n-agkS&w literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/nxml-where.png b/emacs.d/nxhtml/nxhtml/doc/img/nxml-where.png new file mode 100644 index 0000000000000000000000000000000000000000..102d0849ece3a70b9a5da8639a126733862dad18 GIT binary patch literal 17217 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 Q7MKPo%fFGUdTkN>Kg?F>e*gdg literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/php-in-nxhtml.png b/emacs.d/nxhtml/nxhtml/doc/img/php-in-nxhtml.png new file mode 100644 index 0000000000000000000000000000000000000000..cda754a79adb1e1535b1fb5c0651b7a73f2907f7 GIT binary patch literal 22179 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 VLL%BLfeU8wbTstUYaYIM`#+Jy28;jz literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/php-in-php.png b/emacs.d/nxhtml/nxhtml/doc/img/php-in-php.png new file mode 100644 index 0000000000000000000000000000000000000000..c7664da519395f358478bfdc6d99e114a1efa9bb GIT binary patch literal 21113 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¢>J#Ewz01&zy!guLZ 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 P00000NkvXXu0mjf0r{_D literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/php-in-xhtml.png b/emacs.d/nxhtml/nxhtml/doc/img/php-in-xhtml.png new file mode 100644 index 0000000000000000000000000000000000000000..310d07f0e9634fdcab155e0f54b9edddcc497cc5 GIT binary patch literal 21510 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 D2m0}j literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/popup-compl.png b/emacs.d/nxhtml/nxhtml/doc/img/popup-compl.png new file mode 100644 index 0000000000000000000000000000000000000000..a40bd49a70015adad62751767e1773b9e948f190 GIT binary patch literal 8709 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 C8=1ra literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/raindrops2.jpg b/emacs.d/nxhtml/nxhtml/doc/img/raindrops2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04d0610fe47f7813ce1b3c63b87ac354b805b5eb GIT binary patch literal 36480 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 YqgY@`7&{PYNe&}ifI&DQ)iWRe*`xlB_5c6? literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/region-selected-after.png b/emacs.d/nxhtml/nxhtml/doc/img/region-selected-after.png new file mode 100644 index 0000000000000000000000000000000000000000..c7ea5533ac493cf42914ad4b0f72ecb4f3feba86 GIT binary patch literal 3122 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%0A`8`{{jssv1C&I&4t8&LLl z6=&V9sEVYKqRm@<{SuA9G3LFQ(cKYh0SpxDh_oo)ek9DuqVT(7)a)65OlHQGOVV2N z?QWGPg}1&dDnIm=Bpf_Lw<sDd?kLyKkBOyJVp(oh;a}zQ$d%7U)Q`qm1O6Z1MH0 z6Xhn#*QCg~`AMUuZU5$RTc`U2>5PBE`TuV8U&Zjh87_11KWP82i~rx~>qgy@O>Ih( V9W7Vy(xiLIxH@_|pw9e$;~#Z6Ea3nE literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/region-selected-completion.png b/emacs.d/nxhtml/nxhtml/doc/img/region-selected-completion.png new file mode 100644 index 0000000000000000000000000000000000000000..b971b9da85511b4bbaaecec1717f6d2f3f7e27f3 GIT binary patch literal 27193 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 +ccHHo=Smb@- zCK7QQ~T{a%|5IhKTevKa5X;e zdf>1U$*?kfcIyri&m~!LOTkpso~XYWMao(X7gGv4-ZEBt-`h+xt|`+lQNoK4I=}BI zfr6VocFS{hKCKOP*JpSz@rUR$Vd+9isU~=le*=!|U5YIA*kcLnrcf43*g>7AQdOHv zUB)I*SZD@jV5}A<6;V_M2(tazLF0i9MTPP?CXf)^x!N)h3J*2U;ly?8!cNE4Z}1N4 zUN{SAVob1gvctFsHi3?a((N|*!AAH;6c~aMuxuK3u?)!_FkEJY3k&T!S@^j4wh0)N*~ddYK&mEOa;Zal zX-+US?Q@eSl*Fa)0_LkpbQv1AZ%wOHa`6YowCGC#%gLO8nDP6|O+59H3JPd@YCI4e z34r!197C=SBlCaquzLuCx5g*H_u^Sn2H56F9PAA5$Ny_>Bg5~@jPQfMq@P8+dZGjB zsLfs(h^~Qqem?fC(~R!|ZsY`s7q^I^nD<~Y=5w8y4I|bWQaSkLM)}jg1vL}1y90Jg z6=92fIXpRW&jx0-Vt0fT%)nLyy>@<@CXsz))0h3zzZ3i($(V351ZtC6RM1c%t5k?_ zH8U!jjhm&4ceCV!6Y2K&ShpeKLY^N@#gK6ig7UI8`h5nApOE4xpu(AY)#U&Q{O&bgM<*51K+u?~Jb4p|e7PM&$5!62M*LvY>+27wbLODQFB^M4gpNW;^Kb;svK|X&Y!v zl&RX{()x43vs}ND3VUAi08(C~0WW!XV>e@n*&PuIkes$Oz}rJL`oYX$o>Z4`ex7HI zFWIOFRJ>0NLIGj!HspS}EWM@mbFYUcjkG?6^@$TssXNsO`3@8B_FAXL=gqzZkFl9@ ze>FHr)M3~oRg3|CKLM-NzX3sH30wQUGlq1?!(re48l%6P&ryN5QsIfqkxqcK|++3%AfyW(}YFP7klyj&MC_FGSN^)@)}hICFjM_mIE6505+S z%CX-j?)G}G_b`1)zuop}F9@QDcv^>5>uU`STio9$15Oz^wse8_xfVq@3H9Nb`pRBT z(1>bMn546q7>x(n@*-2z%4+!GE8NRfq(M@6w@k!$@xBzBg}{p-5l5dXJ#8(2eIAA8 z1LD`b{MA$2&VEG8JP*h%_qebLl~3)3{L53T!^g{1@smzJR;lwWMoY3#ytns=Z3_Ugd%eecNdOaQ!tMc2)H}odFg3D`N)j4e)Kjt=Ej!Cu@=?#U(-M)_uN;T{CqP#fO5pE3Z%b+MMwAe+ zF4WJJ|0J5f8&1ViZ(rQx1v=okazCY|To$V<0{+Miz6vZT`HNyKARJpLDj2jRJ>ETk z2ip^wd?F5i4}W7(v;DR#*cbnB-Up?5ugUv%lRrHOe^>`A(aO9C3%{5@nh#6-k!mTg z&dj1<{5;Gy;PkPg7zs6TIFQ$;fC06`sQ~%f?t(OPe@jINE%IL&P4w{3q64~Odp=}^ zXx~zziAyqN|Lx50EB?Z@w{?)W=wb>Hf+Zo!Y>q$lR30*J)SbFZC> zX>a0EoW;BpDCJCm5;wcbYcI8K4`NK-fgFNbNbN3Lb^lp26schkbm{VNDdDTI8QM%J z4*#Js*zsu?0{}P$dLCAwn0bvFyzGKauW7Fw?PC1;Q@dP(O=B)Bu3T)ljE*Z6H*Er{ zL>|(Oo)p-GS9&&Xy4(%0O|p9Dg}r??#&J6k4y30SSRDV7>FK9FMqQupHTYh6Uk^LL z40N_yy?AQZcRZi8o&^isrYABG2@5naZam4mO|P(9-_V^2Tb!M~#n{pUak|6jY5(2~ zab#jv;Sk|SFmXC9jmda*Dy&L%e1!8lKe1GHK>~+O;4tx6Z3h!*&sjwE9IBlquCbr+ z=KgcmD;D@!MKxD@H<^V1F|U8UBPHD8`&b>R1 zaT!EJ_M*uDN7S^YSwm(C1~93MR-u=20H&hMAU-wGv-!zTU-x06@3qU2G4<*)y;Hp& zFXEFF)~pFX;LEc=H*-`^Pt^#F!?>(WnMlrpNL3QbwuxBA?hWrDSPJuOY-5ARpIF$5 zn2Bxtt={>naF7I&8?C<_d;#|5z5%~o<)8o03MvmY$v>inkINzb04;}X$iT6x>;eIB z6K&u$NDHMw2@Wj9PIC0=t-ucP1dv%e2-^yK`#$}OXqIc3{_W8pP^@>Tt|(}O3Aj_i zdQrui&=_;r|FXBIe{L&aE6jiW2Y{(Ufs6^^{# z;jv%knis{~l@_<9VSFx_HV}MJsuB$JD+x*Py6VTox|R+{O=3(UI&xYK%zFePksdNe zu0WAvH*oCAZo7}}*+|z(fo)I(Y7Gd$|cdgqr_m$zE?=Qya?K){J;^N!N24xbz1CXmTX>LQ+ z5gwb+I5pR1g{KjjNzf-GHpQID11hH&>r~y3|LH3^hnR2#V#<~{hj?~N=;KHw*vE6w zZ%?)D7tL1+@frUg_lT5+aRO&&jkLL2Rs0Qo_PT?{TQ?U#kv_ zM&o5J9X~HBe`ZE^&nD7q8e}e8;~RG#_b zAXgVl+>XpJe>|rHO_<##r$9;ti>C(ii1cO?Qe;I{$gsex12a@YFN;h;zEAha* zX2PB2&XN*OUXI^19CoeONsh}y{eG=wX`hDs&^J0L_-L|Y0V`-6S4ZP;n;4={Z_x1x zdAKEgZ1K|yn8rp0=+g{18;$wMX~|qQX7Vm+pp=EF`ShhfAHp-rakcs3g2-C59 z_$)~B1XhgMUs4Ut;P;VlW;qk*BnBGd%%*zWlMqeBE?ZvNNCEub&6hPV??fTx!-S9} zArr*Lt0c9QXovmseF@z?xRnoUs8Om6XMqrS_1Y5+9}W}O^3ezDj~3BHV(=8R4~Otc zghs8b!xL@MyA4JMY(pzpD<)1|UMkt&ZXhEy?EKpcqon=I35ivfFN2AzT<;Z}S3W+s z$n!(BLwT+RYx!<+H!6phm;QT;Na{Vb<9Xy#_qBIJHAf2hNnzzH{+4m+Y^3Kbp=)d@ z_n^3Y=|$vnRjUvA4#t?;ejAgZna{`K(~)Ds6&MRpYlRQLISFZZQLUu+dn)_Hkm!MGAq9gf#{lxHII3OESsimXn-P}~cL8BYNb}Q#9}i3 zyOC_m5;wgN3a6?;8RLIw7~bK3;Eoj&%wM!aKt6QE1aJBxihIQQ{8pK(o&iDQ)a*+) z=X~&>lzr78^2Q1_FSK8-^tAtHAVN&uq)BBQpDa-e4{4aU1aYvd=#Qb=L(a*7x|w(N zc7vgZ&|C$Uxw3xeSS3w$a5RgGW~80olc9AgTS^qQ_j9f0SO2V=KJ5G9mH;1Khn8)dYLOX`khx#Il0>Xtg& z+Osr_`d5ljMDp3Ik*v;4vB|_&u`r#46q^^vDqJ%b6&?_9U#8PgPF%5)AYJuY#{v}! zH7sM}fFzQ(06~dOIi0MSB)W3)(i@DBzJapwF*QH?P-ggdYCSgK-7`Z_{PZ3ZrB8CZ(rBf}NNmMV5n?O=pibyir#uZO5Fi`T|A>RZxd>v$+a zccw&Sb(Z#{`DmEEwan4Hz4e`1Q9H6f%gZm={e{g*sjkoX^fI-lAC9(x%DuRS1`=g0 zt2C>l`No^Yy*O($E&3|IJC?t4XO$Tw$`^-^`H0Lps_;WGjeJCCeIO@fo4qI*5JCx*@v!eEk{Yd%o#!@ZVr1#64` z-_813Ssou*EI66plpw*{f*|h^->GkewWOTY_ho#?-#$}cSAt>oL6oE|8LQxzBsJB> zby5@7+`6lba-aU{@N)%+m&YGBj<;w=_bs_7%TagEgSqDAt`t+%@XEMwlTgk3DX(li zsR`_-FCJX%f}3lQC|*pD!k-=6oIP}*HE}kkaA#7&fJ)4*w(xO_FtcjXmsB#P<;NQz z_HfKgP*5C^$`}8~11)HJ~lAa~4hs|B&k5dsj? zRD#0e*WV}g9rFUYi-pEgqdwc(duwrZNjznSX#QR}9jIfr0f@iURbh^6e==qwr33AaMrbjkXcSvt zd*7tDE5iaxQonB>_!9-_S}S}Q?@$iozql>pX6}g+KKaomRhiD#%n!;wNbjHo@IMR~ zbSWGs#1FTZ6JXoI2s(C7tSCytL=H-NrePRjZ5TC7z;DnNn->P_Y%`8~RYAs+f%^baRFrriSP%#C~F$6rbf z!uBKv_qzqRgNThkCOl>@hC40(3cL(8+%f%lS!EUW|JS!7x337)T}_e|+N;8c(hqfd zhc0MXrn8T*M(hyx;dx7n}LfKmP*6>hqF^A6d@Yb3a z49QCDZu`y*f6EgS;OqWjr4YaCx=U~NeMX*XfaK zC|K6khEP`&9s_nW)E-q~0jDDk4o!4=P;r>wj^6@$5%)C0NjR(6FdE9T5U)?jP<9Uh zDDt0Q7+LY2Nna>#a0r5J?E%ka)R(ukO@wTO#mq{qKQ3MSR0NyTp&)ZkB0LgM?}F_O z!7FW_g&nMOIJ0$0S+C39ctX>RyO+~(4uc0yz}K5moL3)r$jaL3VQKU_YVqm{0z+Zn z_?hO$3N5Kn6+%aVi~}c3ME{kB7$ovUC7MdaL1>!lk@hKgk09#g)j8F+Qe8DLV&kqm z$jzmBsY7|w1T=rymha)bVlaof+ts!99IYtdFWh9|=Jd8gx0!q)5398!d)eLqazEDV zlZRF65pQ0SwUr}0McKs{WAB~ojMV5C9}9VkhJredh^*vd>{Eawr$x| z>?T4wIY65*w+tsj1z{jDaTC3B9KMgbDTUvd@Z;o43^b^C@;lJQ_QwJ0VsKX(BezH(}+6ZAcjGlnIf%1v*q$xvN?`v={T}B}pe~YRY}z)Y(@GCHLTLM%a|R_!p=D z=PzYnO7g7Cxf(^1QJ&BE26sL`i#!~UQ~QJ(*nZKlV%$4mZEw{dISr=_^2_A)X@OGD z2Qe8hvW~YA7FQx)FQOGDdBj?xRW~D%>O0d3f4Ji0$h;4(`1dLYI4N)CDYO=-uGy-`Wx;} zH0#m=Od(3g2-9Si3~*2`uVtpO#H?5|>|}rgIpakto~n`m`Z{WhbUNN&Em`q6d*<)) zNI$>viuHVsXQU(ySKuDil?*?7zTwHLoECUc$uY>b`-x`8mX zu!uwNH9Y1_x~vq4yAXX{mEX@?seBntSZ;j$jkF?nux5A`dwMKA*V9jrFW`k>>po#P z9vwTEJ%oJFRM}OGRdb84-7j(y5`D6IQ=!Cr2(;^<7se|Ay}Rc8Nm+E%jMB@mm#+3I z&%o5ooe!mhQpgGf&i-9oc9?4+PNx!uZiPAImM;{r4D(C0Cs`aiq!sqz9-OLrWeJh+N!^muu=Saw_8ht_~;&h?cBO64gi9gFcPdq$up5v+RtLr#W0nI%Ob!d`6Ip%^BtRBAO>ac21??pE*d8zWhHP$grc zJUoJt0tSblsQ~XZP{GIc@nNw~pjsZ-5!=zAGXfF#JxA$z(L%iq|K`AufCC??j{6jA zSY&eYwbYOY2nHCw_^pzb|1smGU2P1q-mP*LBEKYH7$IO|bU+QUR*ljNdI*5YdfJw? zmznY!K623>twkYg@#>G4Q10X?&?dZR+jk({a{0dVTg_Q|4*3_U#m6GFo(Z+Z%{pDf z2U?i2-0;~(h1Tt0nz_&gl3<&yDdX?IzwSsuMH<9#>W98DXk**j`E8bRA9Xsj2qDK; zJANE%(9}g4yD1#utNqG%`Kl#AXP$Yv8@R+VnEIR6;bw(O)3AQ*gr6xdY%sj8Q1E^j z^s%7mf~CV4dB1IweY)ZIjgk7lVo0h2vYVjt71Vtr5%2HikBCN zqvx0b>pab^&!~f(cZ4FKa`~v)tAzSZB>UByO69>=gD5YPt7l_xHO8-MM0!%+7DO|E zj}yo`T`4~UDm2IsFv1p(VhmDc*ibTq$r3mWQgXijV@}tq`gbpOb2YcoZH}lN?WTa( zg9(}-rTIwy6+5RRowi5=a*EaFe*jcDTbw)W`ixUWv7Ty@Y_-RSAl9>lL7i3mQ2ZEZ*w^$k z&U?vv{*pA-DG7d*m_i2zs)rF6umu@s;XvB%V}8|Fbjj~@w~!oM7=O24SwU3$;bb;X zxZAcoL^616H>}TuT^ZXs%;Z0tr)x0A2%cRjVD3S`xM8(NJU&`~ceK*0OX4mQnhEi0 zXYz1C=ZKcS(^H*urWR_jyRsAWGTuAfZAjBi!_o;d91{Gvk5tmZ`aTUFT92A(95enP zbR-3k+UtqrPRSVK)ck~!Q@9&Zgq7mD3OPm?BX$ZQP+tD;1Jq}5Z`KgpZF5UL}FR>NF?OpNZx6Shf9918zIn!o)3Yh)|mj$wXe;u!1jMglQ0FbmiDoE@j`~8V$ zAei{`4I^btS$#ICm_R&T|AC60Uge?{OkSFPrsS*nubx{ws}96FrhLR%8g1(gnfA~x zjSec*e1d!#q=}jhr4`0-iNbaieTF9Vaw=cYIA9N?>^?$$8=vUJP{3(jP8kflSf8@2 zuyIVTK7aAEM)VO;8AGxglDV+^Gy(`vvQt&c=_lA(scFVl&zs5bIZTN)wtm$XEMs8= zh==~|*GMYP^h3{qI~|q-2e;ME=p?kr@V=L`d?I<6~10kCNS*2)mO_QjjUCs#3=)qDZTUtnCj zBjrDSCy+S6ggv!YI+GMKR_Pg?{8Gl_&tc$AoWibxM>zfF1p+c6*0#Q`_N}f$??2?! zqIjKiEpGkIc2uQ0{ozpjm$z!o3(wlecYvETcUS0!A4gXAL!5Q-H#sPWgeZVha1VJQ z=Z@jwgTPCj^%I5TiRrrmXdN(o?Yxoe{U0f$Wz22q0!NUZDJ6YfPM?KDs-ERs*r;>J zOnj^MS2t1AeX}Gw#rrbtlH-?IJ&WXHeKEb3OUx~`;+6y`rh!gynH2JTiP08B#nhF; zX|?Of^Ja4CVZnRI#=6ir#gMa{U5(>j;I)nZXZpxx!EEx~9=pNe*mb$6WIaciRXip? zP*ag8aTcR$vX%a4!2|FIxQ&E4nK~{R%m$Dyql7g-+q3u8plBMOL?`lDMke_jjsR1j)IMwU~p z|D1^p8}=*Tx)jM7I1hq9BGQ-|HFar7DYMIyi6@P!FcD5>2U~bb5=m1H^Sw`(`UsT| zl+idFf2bb@rExeTb@fq7nb0q0lHQKjfy@HB2r(y|VQ-r(*4On43^TRP5wJs&MJEk1 z2E3OAlsEo~A}EBjsMMr+DP4UD%&AQL=a=&Zf}91e97OsO5n5@osk0u@QdnOuV#Sh$ z`+-q4C+Pjy-Y5)y*=~9L6cw#M_uCWc^w=d2l7yPpNNve5=oaqcIL?o}U6$l5fIAFG zIUY32*2JRzPfi>{@Fqj}NKp^hi^}eAbx|e)c2U*l(dco>W`iqwn*bKNwl#UL%S8a2 zQWAG^5&|}-#02YFA4Fn)eWEOjoA+bWr^+=Zp|4t;QjkR6~%CDoLDaG*80SFF(y$zAoie;s-{C zK`&IV;y!8R>c2A;r5J#(3&S~8rw|pF4jmFMRh*`)@w$`-s-i-viR_D{niEt?;_n~F zeeB%DqQdw13-f+LL4BQuRX>iA(>Ij){+e;D4vs)y@XVFnR$Pb;Hw)AV55B1g@O)lE zh{muzI>4?Er_7o82B)a(^>X!AtWpJFWD`Zc%a*+q z*7p!C)2ZxrAs+aCx*P1ZG7X&Trl!qZrY=@bs~$H1yXNze#WJ1Vbrk{mR6veUX4Dw0 zJmqsZ)%uAPu{p*Ti8dq4K#fFUIhP#^Wx3J>5`MZTqin+cK~t1ZNm{>%xbaej8Zd~B z35pTBr#s7(N5^Fkt8VPURN~@5g zP?KJjEjY(~D>gHBf)Tm{VZN3H)7NuMz84!wl+G_9TI1u;X%VzH*(g9ovlj^?k^OkW z-hxM1nDpG|BU10+b}dPsfV!_#!0Cnus^jh!8!0DS$=$@Bj8KPQja zv}ZFPMi->F0|n5fQM*^p0DUgdU0PnI9+jNgBjf+*-pF)o@ceQ4@-NZKMw7&ujxR!m zNP$$M(mc_(-GWz*Zh*N*%R1=zIqi#F}K?{^ho^Rs?2z0T0LJrkNm z19}r`%L(zJ*1$MSKMFr!iejhN6>)ma=Ejl{mrX}E4%GJoeACcM3?QSL;C<0Jb-@A_ z-Anmyn~&})%3o}P?1$&5nTj&Psv^jt+s>7BY7Bth!*hjtMx+4pybYVqI`_O!oc@YX zJIt^~Vdn8`{#oCqPx>eUG07EB zf951RRKIlS(Y|)FI;Sezc`B&kw-{k8&XsNQcr%YkcNce^=#N(Re-{uvyoDJE(@XYw zE^F<`uj=#Kx>78rwUR8^P+YB&ggO}BHju|JU0@Gfz*}Tk3A7lrIl`X?G>AgMI!xR1 zMFr%Zr0o`aL3IiV3R$pnOwy@X;0UgXzA9lQL22qi*slMT`?@CZcqz;Fh^LL$W)L)! z{q&ZgkQTQ5IL%f38R2{hdoXG_*#*wNKliM>n`gOT3q$7g7h&<6ahi?7E0b#%CDnI7 zKDpIgZT1bs|A8UDba86A2yC*lBP$CZ!rtgMI-`ndVl*{~TDUzbY9W zDOYsx-rSzpvRaMtYOZpAGm~Z?lr2c^_~e^aUcsZieDF3sl8_Y!!`_Gdw(gmam>0jMUxmr`WAOaHUVyq~pEVYaQprkD-wkekV6}JBet(X)6g|igcxP8%A$CZb>2IuK%iuH0F+^Px5DI% zM7;8!MYLko&OyL8y_@0TG8Xd?Kb3SEtJ)$Z0W6u1oYjXJc1jmm>#u9MaxGLNNZwz7 zFXb|5e3`u=<7ivu&UMz1*a|gq16@wuEHX^D7sOyZ@CpX@2vyw5$$Ig`U(oJ@y3BP{ zTwD_AGyq(%?6P>R5QQaE&_5K_k2meF@s+A!-}Qq8v?%`J>xogjM(|7(`fXiWTwHz< zPF%R}u1cK#a*9Fw%1Ns~0=0}kI{lo`Kj&1C@@QQ1IYfoLS!345Z)_eGV;AI{P(}MP zn%3DuoKCde&ogdx`h;TD(DLsrgV}hM{M9w#fDHAkXccRptwGz2h_{}y53Z>!5X6Aw zm;0yCV<`Gy`&@wA@#-@Q1^{(h3iIsG5XZjIHj*nJaZb7jiigd@Ip;eCz0dfF6Xx0$ z(Zpu+okK0Nj#`~0c6#Fa>!(A}`tljNw35MqrcUNVll@z@tc_|znBS5HKgfLKm{-mk zH-b7J%=1SUIh~<)t?Z#}|J$*R?ceff>dxF8lr?8m%G4H}oZo4-(CC@qXFGmhws}dc z%klHsIj=AEFrBsd?r&6JTa57dSClS9eYW^uv{-O|z;Ha#J?Gt|f-)H=?H(-sse@ixYuC1)iw;RppWH9QDge}y#6h9Dd7av#i`kVJ&|NEma zsiu%CU_U8hU8bme;u`;TN(`px|7+_jqv8nKF0mjXIKd@?1Shx?2<{#v1oy$+6C8qT z@Zj$5gy1%~4Hn!9&M*vYllT43?w;L0bB3C#?&_+d>XCbIi!38zp+@xWDvrHaAtGEm z*~Hsc$OVVKk`8il9d~%gL3y3!c6n0=fR;KM@*bu2pfMe14CD>Sv-3fz(tX9W$nP&$ znKK)I9G-Z0(m%B3(Fj6LF1aX8T^n;ifF|71HQ6)+&4yeRQ5z2NM{y4sU2~I!8eCEVD-#j~*`PMg)KrHsv{#aF07&G z`2(RHP3^U{Qxv-W)`Z|ZiK}1q5KFAB;)pmEh!7~;2u=l!HE2`7(Icq|G!ih%*DYx?8jNYYG zw1*PO&dSq{q3CZKp#gAmQ<|ea>PMp@lk3uX=mn5xv?M^d_1nFto_MkvQAou|95Z(T zPmIUTwUoWX6KWyIF3gJsF{r=tAJb0@Ic96@vqw7|UOVXqFAxVD&)*m5AXKycDMVbD zd<$OEflEA|tkvS2)B9EuA|TX`J6@EZ3QONJz$zZ1y_Xq}u@SnZvqy#hCW`K~8g!41 zIBep0Q^UPa;yZ}TlUkZytW6&oI<`Bd?iT&|CH%#{0W2!KFM5{m#3s06o&9*B_w=B5 zGuJGX?fZ}SL=Zus%lwxa8kLWr&4gpcy6;^=nQ$b-yJkNdy^Nh~{hcd42(`im_`y{G zRxv<&39c&Iaa$c6#XP(B2l+eTtk3Vzt|nJr2pWL0d4-p^o9kB7S4X?_;ildM>-Y5c zY={~7ZV$`Qb+9?&t;MdAR+o@pLRRhRf#5(F+Aa6v5r_Z7T)GO>eWTLmVR_H?3J0Re zIo8z~*CkxCe39}8$4HQ`y}~aCtRF(|zp($|wwLlOxziKAa^e5*txKrE_D+UZI3W6X zFs}-OQ$8&}HN6%G&o-6dL_1sBp(SqilirS2-HPMmvsLebA|tQu)ys&hn{l>3SVu>G zSHcMGlkTh9)c5rKs$r|vYY3~*BUF^>`#|q@HlbVtnUt{)4!coyg^QE+KID2ru=3Nj z6ND}&oOJ@z_YC3lE zA7S*RoHcK>%u{!}`dXZm?Mp4#{mnuY<-@~;g8+|NPP}hMPqO77pIgZW%m9v~^CuyL z+V|%TaI0BfBqzv^$ch8;kIpF@;|`nn2neSZ{#gKO;LBqwITdY}%Ce6420a9UKFQme zsk-i9bW11C0kYfW{)S3w_?x`s4VUA5$5p>zZu3Q-+m-j%n`_mO?(iMBNAPA;!jeCB z|3X!S>3*!IOUviX9GR6@^4lYXClSeX5p&dJg;}Y9K#Y&9O%jqOCnj6@exqT$w^h@Z z>tFALTVBt&t7I0*thD8~x?qeD^xfFI7ec41LZ`F3*7zTvl`n6CZ#;8=5mQk1y`=h= zU8VM(^PV2=qC{ID5Vf*DqS);iVLRR%9u7@%sy=x1vbM9hVLA{gpPbKh6aVrsbr=l< z_+A(ZqWpMRWJ?VeE%_WWt1KYsxvC#yT_}pAl8x!*&p`#>1@>g%@XT6SzA`o`kviD< zkgWB3{iMnx$7u1*+fu)kSM)o;4%+|B#$VD^>-*xbgiIWSndI^}u7}5(Mc_;}J^`aX zY0kN*$kEW3(83X6=B{NT>lR4r&+lffq_;s&^n@Ed z*1Cdy{-x4yoSYx^s{Bp`W}@bSHJIh24XiEyrQwT3GwlK;oxU&g=fU*y&;<5$UpFB6 zF8m-=0F2IU)wvI_u9tVZI5S70!HD-*`3095M;m`PosjUz`&QVgflk~Gi5Eb z^!~FU_>-zjVB)h!nrV<|)x~C^g%k$#JNT3E)%iO`9Pzd7$Qpk}n#lrkNl#pBk_e`q zfy^y%-yjV9TByr}swS>r>b`Y=7tnDv3MK`B&Q&lgqPlWH|{a{hD|CE#at)G=1Tx}6>{Z*JO06^*U zn_bhR&G^$DD{rLI2=mOm{&;7PQw)UB%~WD+m&GVKOhu1>`SjqS@Czt>HTg)%fdWAe zcm)rvEBwEM70Yn`*eP#TgLCQ7 zNqPV#D!315N(D?^6iEZQFEn&pV(4TJi?^Rq7`c&xKt;UY`0_`Y(iOGKEGJinB3)Sb z!CiIjEMt48F(0`wQ>(XJ5(3+tS$s-cNDk{kP9or6Y>$rRxh_7EFYOV?YNi;;PJZ~5 zOeU%Sl5_Qv!~$TLVG}N~p67W_8~C!4``T~CL<)N9aM`~B6CnKWTq4XZ_N-H>uS-|b z0&-ZNvm>R?qJNXMVPl_@*rAl3#&Ipd&YNV1xeO%9?nK>hQ9DgjebrSw>?!NZTzhUYPrUd^;)~8S zqRi~xu%~z6{7hZ&6G$a@pr(R^DUl;#>L3}x4asdK3E$khNDhv`C~E?-Q3e)&*WFzC5EGaJW;?3Xk0 z>9!ucLv&Y_$3Gs?cw*z+ura@M z#J1=CrxJjt;-t9FXB34~K%+UfvioIia2o8DX`M55&xQ?tbm zF6EDgjf0^(yXRLvs!YOG1JD0=qsP~JAy z2l6x*-1cyPm4R~#9H(4c?})gx1Avd*OG~SRf-xYHP&S-KS=qO(TvElkmpB&_46qIR zV|o4kH}5(7lk754Xtab6slxxkA3}_Za~5fa1jh8?3R|rxJM2I4MEc~|cCAvY&x&r) zd+t8z%g?nNR%cwF@o_O|lXyMgUAb0L8I**ZKfz1_C~Tu=)Yq@f67mN^y0s)d7&cBL z?*7OysJ=!QdGzQ>o^?fbN*pubBD0Y@Z@yILn=7(^3S$v3cZBLHGS747)?hjtw-%r@(jhwq=z zbYtp+jAFCuTZ8VmO+&YiVH$MQezE(8GDIK_{z zZ}Sh+*7+lHX5Dk3C_JLHXfVzR1i|?aD+Ne9QBqd^zcg<(M||-AMf0XnJg>Dzqm`AV z6IeQ|zYxL+lnX%x8_VUO+DNoeFeKWHu~c|UGhQ-0tg52`>S{NXEx88_9Fx(ur&iJ} zkhwK*#FO9Jvo>uppKq`LhGICvT_FEqhC5Mrb(JmKZgxnh1sP~);v&T*1DnJ)Quyq} z5%GVLiXzjY&6Yp@>cpuP+eMM2yv-iAeN%tIxjkoM5ZvdrJ$jDsUiRP*eU5ke!^jn(C4em|V|FEEiRBmjr;MJNo*e zz>P-r1%fMx#ne8)YU%WO0jf>t*Feb1 z3N>mTTS3sV-2)Th|6U=Qhy-tV0-#k#zocbTO?jkan8hWBq}zG_-P`KSxTk% z3ge*iHQHu&bG{(2z*a5k1#-!1qhIEt>GPnafQ(8JdU=g$0~-6tZLD@5@t>XL0l7a{ z?NgX8DT)sYfxAUT8$4w}Vjaal5uuQ%NGB2wa|61IRa;n+uegdA_9u7qBdo90^Bo#H z%f)klX4#8wlkx{)#sJwW%b&d!L7T!O>3v>=Yhk<63f#{rnnpW7z0}uNPqHxj2pnr@(e!?%u3pMT! z&`gs@mlsbwe7cy5;RV|!|K^t~DphuGC?J9Z3ROIa(TaLIKFl`zJIX5qJd%meq-jlk z-ba1Sr9oSE^-A;H>iC~y!*oc_)(Tyhqk5*xt4zxCRSg$z5tAQrj|I>gh+i!iL zX2=nQSJhOYrMP~V{9)P2j12Z-9O%isDlQS>up{d)%Bw*kEv}0zA2D1@XwXGd^ulE6 z%f2N^<0Q_Sl`o8m=PJj^3lGUMg{h+)lFj$mt{r&!I*WUHQVq(Cj_oBJWQlu6{{iOB z$$TO@D)o#$WkMPcDeFriHLl+M(LfiK$LM zR7&FMT$R)jC>m$wcO($I8P0%DP$7ipCU5Sqc&@v^pJE2K%WR%M&zApYp8Z6KT3B*PU2vCU zfgKjhs%Wiv7s;;s436l7g#jfA_cmBdF+mL}V5s2BlwNg-imeB-5>%gl*NObAQ%+W( ztzM>4j|5R1UGvizVs&d$LTx4b&3t))Mh(3^_lPDrYamzWd8}9319Nv6$d!p2U6Pk> zEz9ZCt&6~hs^o_ryB=X(nN=~P8*yJOlC-HhXAUgFoM@Z4OgiwMGDx}5*2y25`udvy zaRRcp*{8^K29P*%jWm2WeYan}M@Hy=6xwYcpSS>rJ;hLcN_12Z04{T`D{Dgr@@p&W zYN4Uye$!4}pM1+}h}LF+3~CcSZ7&AI;%}~bEq^h_XG!E&O=T#S_?d+$FTe!5f!rCE zvcJ21!~)!kq&>OK84@|9C~fQ}aA#^A2iOC}3%}L%aLaWRdVT)pJ%;MhtFfP3C|j8{ zXlX<_zW_WiO&jH=RCBh`jeN-!{fwVUnNA%hGO6PVCp_-9wf;UTI}(FBLLpM?54q$D zd1f#8M02I-Qy5NEp0AWnKyqhx+};tWZF<@zc6KqOcGe1P9;!Odb<|Ha*M(iEmHH%n zs-8t|46%p}Ujf7(q;mEn$pxh*w!bMFj_;5GuFv@@cyx7f#_1yX*{oj`mC%SmUJj7; zK*F(VmuaX{UqEo5B!M-jPflrrASbg2yM6MM#-ThxYe zI%xfr>UceqXz_W8MKcFIs|uBX+qLo~t`7HmoNKH4h4Ux=bl&2{XR~U^`%aa+g3CJs z-LCgQyn138w3W3h0Ci=6k{c?FQl#r*2hEn+lXd%Dgk_HYZRf@NiJW1T- zLH=NdhhEjIhDxS++P^Ob>gfA@u1S5O$EF!azqj60GV3_=9PL;3^5iW1>gej+EdQ=X zpW$Qi%qG!KF*T)dUUjP7Kg21lu5_BY!pZCI`Pzk9@;7d3B7G`lO!q2$)i%dWle}xr zOFxE!2b$6~2ZBJ26`(l>g|WIuhE<;CwJX+mrbkU0e9B zTtG)zZ0%q4Te*h!wyNpzYFxDIH{~XRJC&GJ;1$6$wdrK@zbWhJPNt5@S70H=LRd6x zT3Hl+nZOMW0kjQIOVIS!t3@x$Z^NL9UrwBH(DEvnG@mBPa?;86lA^_;4 z-Zp0YaXgIhHG;=NfhxGBKI|`k$D4iB1B{bbp@Al+_ZNbv_c87iq~yS_D5;MXqyd8OCauv?g8hyId|?w97eeMWRrkq4 zhq|=)+G$1I`fkO0+j?&1n;%UZ6{rO+F=Bx_`QeQgPsUgZgK7~ zHs>~WPBcZ18(fn;r^R@gMu`OV{IGi+FO#85zmQVuoyA2q5O3is`IsHUex+wn;V75m zH7}h}N;`b-(etzX{NmvFGN%e_U|UDdRa6@!2V~#5E9V(Zsc9U{(}n*-pF-ypmOENU z!>w&_7ww~z9xltT@m#Fd?#9b|UK$G-xm*g_2fw7>VZT$Q$J#wP^KK-itXIP* zsDCcT@tQ3YKer;&)wW7-1?8Sg_PCFpTNQ3)iShdd6Fd`jb^vXhqrKx9t8qNA>Q70| z^bWqxHX9&HS$kn|YoCVNsM+zn$o9!{3tPZ_QgoksmOAZ^y)8 zlORQ%IM+HjE%~N$sESYQfvXx)k_Y9-hEK^KE<6YACEL6!9^Ay*L}T$c%*?4d2vwv= zk3+QGJwNFSH|6hOXkii=N*Ru{^6RH%6`m@P#yPCK-XMU^=n%>o*tudc?(Bs)8l)3`3W?5p~J0Y`A}z77ZDd1O*hB)M;l4WFyy)PuW~W z6tRi=PMn}=?n$3?{Xj+Zr=Y=GE?>LabOWVqpD2^|roSRm@Q9(XR=Jteb#g$Bq$-gx|5$o*hvQ@|x%DahQzwCy=7EyxbJAbD;BweDlc~_y zWv~Xd=0Sr>bAMTpATn){s*{ba@&zM<#G{Chhv|p{vw>w(;&AA(VMjUZ%&5MkHHGRe zJl@MN_RV{)Q9>A)^|OxBT*IxAT&c#+dFf8LX0%JhuTO!axvu=h;)OCHiN>vYq|f9B zOl$tQi0Dwx6c@>YGPlv@$ggNkEOb;tn;YKJ3}vTb1;2n4&+r87gO=@Hh5mlak5^6> z6Y7{Ey4*cQZ5{VIR zoWzOQI$Q{FmM96up|AB3EMLy_dcYlBC>eaO7;j9TYA8fB0z*gj`ZdGP!`s%i(sb-+ z7b-o2tVd~)$bWJkF5_tpQN{xYs=jZ^Kj8H5j4>GaZEP4R6Tfv&2XO_JUju^tocRom z+B)3WhJz!!v(MFPG?)o7D@_h>?m9%h_yNu>0z$W>S_Tu5yrgtkh0DWsyMMF;7Es6~ z$OA6JQ!TlXW;@L`M+WKO%%9d~;d z%MD2ja~iGKS8BrXUi(?Os_RO$wEEAwI14J+TeaKldUQS&noicy zfp=!^q`rQ;$!I+BGCjX3q3p!u=K%lm?Qcopbz-xQa;+gai%G(P7>SBjQ_8_)rIB)| z$=i4{ff@?`6Yi2)ZERQXedFzRXq-VV_VR}~TC76y-Nfy~viIs#mA(>J3dLRBuyR-&ual*6eHLAgD~CU|baa=Gt~8A(}HZ z{auT^rM=SY*Pi9b+%*Q@t6&&;wtp9 zMjOtJx2yZ^`uwUyX`?IJwO{Avxmm!I6cos#m)ZywAjH;ml)7~_LbPjZl^&_lWniw& zSHgV}JG+!@WmVS#$9eZh30l#$?gws3+nG7Okp_<{g%>A7CTt9K>k!eo=HVF1v5*<| zj|4-dtF9)*zBWOo*JiVS^J?r&$8C7FTKDxHyjPx65l7W6raGw%IedOuaX-Ow^@ium zx8$ZNTz`~Pf!m0%yM|jY3o!AVs+)KTpXX*w^<&zxyP_yk!YTO)Pr~V2Gb`{%Xb`5I2a zkE6C0Tx}zZtIMviT~%*)XH6p-b5Na{za2gvvBsj1R)outG1eTUptuTGkxyk|GYzREJLL4#O0rSDn8Q&DwP8Me$-Opyv7sJNWNL zi+;Q|uvOnw`c+{d_=`eUAxGs$R)Nfc%c@n`2u)S_WSzclV&<*kJ2?B~eL1W>P$%4ZJ@`m99r&3`3M(Ts-#{(A!APUC^LI2*=UnfgFTcgC4dnx~Di1&}v!i^KcTez|JNTdGfoSr(+SKhRtnxP@UF zXrvM4(GpS~n0(}FbGL*v+TOr?A5Uf7LBt;x43N;>nuXONmov9N5bs=+b9^Y$*#`Rd zoXp%oXKm$$JAP5hAFYG`-A>zVBb$Fk-EtaN3;#nSUDpr#^Vx&UoBJ-z6k*2GgNl!~ zFp+4lZ+{O4hIMyS>9f8(?MUNsSy2hYGJ<}gcKq>|+Kn0NnZwbuNAK`&mZhh@fVL{n zbIbm)veeHRJo7%cN}_HqSO$9>>n<1wVr}h*+K?gaZ(eV@j}3lnSoLJnPQJf~SUgf+ zeA+d7&rV){?f+Ttk^Bf@0+UtN#Q$;aw1BB#<8xe?oW~8Yj~7xx0BP=w8yMWU1bqM% z0l`qpNAI+K{`3kHs3%^7@Exf1!*5s0ZH<+1H^O;s^yO{@XxtwtHI!qJjhDbrs!Ti* z30edS6ogOS8)>6PotWDpL>X5M?y%!9crvW!T=h!^21z+dac;e zfYU<P99xA?AE3`Q@YC&x`or$l?QrJZhy*o+jrsd6xhwF1tmH>( zru${H8~tO{RLiD4+`2H#$0nO|mfsINPRC1(b5y|ODQNX3Bf_;y1w}kMt=6>88i9uS zQXqokf72;ONgn?Sn1CM)|EBlz0W=e#G9*110Hkqmuvt4ckdX zK~#9!?VUet8%Gw0-yW`Tk-`F8D1Z*&8Yzx}i&Kz>f>Uq_si1LN~Ve|9Y7`< zODrk5p%NhGrjX1gMx?@!Iw}0AQ5)8%zKI0009U0001hfvq==@`4}; z4>f%|B?v-lTlapbJ#4??TzAMH4Nh5}KBFRk)b%ly$_s)pqxh6CeaXi$I@@J_rPBjL z*&(pr2-?ewmxhw^waFmu54v;}p1*w(aoT4-{_)ZIGlmeoED=dt=Z2OeqMX*7@+~2M$PKWdU zFd9pdlV6BLL?nq~z>G$FCH&!mE9<(_siOlP-OnMo-POV8}#W~w9oW$NQdNNwwGMW#wT zdxp}}$8K)Fbe$5tRXXK_ohft6bNqx|FW=5x_#vaco$*3M()Z=F$6Y5<{k6ZA_ms43 zXt%C2Uc8yE>0|!A<6oW~FJb+Y882-8%@j73H=W_gG*n7ym?bUu5bTTH_lv7%$T*Gc zzU1S#O!>&zT4sMFm34C}+CDX4&uGGCY+8LuwoINqL+i=0 zo2Oq4HAlgA@U}6a6}?>N`iW1yEIW7Mhwbh4i5Ks;jH|W3q2-uu=fz7)rrY}6;LO-l zo)a&j{gW3j9R1atnLTScv!tU&d78+nx}(cje#O-@RGdb5Ut-qFm5+?gnP`>_RgMwG zWYs81eX3*Y-1toKYLpRX11G6JU%ObFA?$W8Cp+{-HxhfTTg9;rIKFm#!qsZdU^YErqzCa5~5zdAM)Gl z6EBiDt?6BEwe;Km$~4z5 zPq)shN8$Y;Ed9PO^}ioS|KX9VVx?^s!WdJdzajQG@H;b83R;TP^5Xui?#)`F*GD#k z^C+La^WFH2gjxSB%Ix%djO>W_Lm<~>Y+wN%41r~h*umhS7Yb)<>F!WhtUHA z8+$rgewAWu6(rNSAFG-Z{L*HCoR~cOYTYwc(WbZ1Xyd3L;n_D@c{^b+q{cG;bb zR-aF%li}}6VdFI7`%*`}{lD*h0()${jkorNC1;J^cY+fj$Me`&+eh{~vgTgSt>ip= z3~YUj)@2z>zH@O!bp-k@XLs4&;K!3Zvu`Q4B6*wa71i?ioZDnaKEJ(AE$x=)*fW%# zK6dl;3$5h*w|N}l_O^#3hu5yK*V%r;ua{@%uKX~ty*=zb_tpNbuGQ)Z%y?hCOhW@tX>9Y0difWoy+Bz>!Tjp(b2A}xi>lrFeqq#5f{g&5{gF?V7 zwR%S1PTi-c>flyU0Q}?<%Zm?%>c5Rra+pkWlux~tuX6+`Gb!3q2c6AeDH5=J(cZj$ zK8sNejE0{yl=WBT;ThGeXXT|$ZTa>fU!gE;9+ExOvLb%Z9zDp|0000WV*>yH0EU&n z!vr7_J~Y;01OPrUZpPLG5{Sqk0~s3t004l24FCWDz`zCo004~Mz;+$a6Y2x~IS;Ih zdUq>hVxdqQKEK*1%Da;$e+~a#DbY;w9G~uFYN1{NUI%;*@e5AZdVqq z^u%I<-a`uJo*W)&^MO(BaFhW>md$2N4&#NW~?R0h@~|MN8YqDMQo z*kQ3U=TYA5Q?pS{D|r3F?Jt&{x$=GN@Ahx2vjzJ@*QpZ2o_fI}!D^b1RWBD8uB-UV z2~{ssJ}X`@u=QsemQfk+7mvxRUX~7N);c%nY~8-g>)WaQZ|(Dz?r5GD(UNBWI>cyiBOFSg59R zrkv&unKyKrnA$r|ODEK!KS#;OX(_YRTov8?EF+d4Ple6EdYcO77d%b=#=KXCwzIxl zaqO@cx6VfKW*E|HvAL57>KE>Hrk%O+x%T(;uf9YJ6~$R*4D^SV@?q^M7IzZTM$U9^ zaek?EH?j9@D!RBJN_@GuV--$UH?0B5S5CNknetijGNJ?9DF2Sldv4HMXCPdg6mAR4 z=Kpf4;hwj&DR^HBKB*D8?|F5`iDaqNn=+01x|B-U|I0na|YxQ_> zVnAWx*qJ7#N*k3*jU)pdZkA7_~!##;}HK5iJirwUMxDxR*Ns1&!$G{HV~Cx@$5;o^c{_D=*?BJ z@-xZLqTQ*rGN-)>D|@a)oz{0Fe~|HV?Uo|L647}}CZWzD3v+&zpL~{_sLuD|uA}y5 zA0F@Y3;TxXza5phSE^Sccq)u1C-J4c{aSOEr-Evlm`c|*&r@)^R*x_Blxa!Has8Lq z^>kcHj#q!K$CCqlc1F)Xdf_CX`PFeVy$EaP%3|x&fS!T5-mv$*7JBVDUpt48pZGGq z`ocX2?iV{o`2N5yAJ(33Em~#wpqieNqKyk8qH%G;sZ_s&9A0^r{D64T^4)B-4++D4 z9vkO8A^y2RA+&O)7I#FfK72QHj^-}As&_6c)7Q`26@_iVjbi~G*T ziM-=}Ds7lsENxGwx%&aEzxK!2{W`469Z!(M0q?PZ8al-CZ@C%+?J48tIU$RPU`5qvWo2Jm+O z(PKEzfgApJMe4hiJk4Io^Znq{q;@dZnEF&b%8VEFQE3$46^WN1kI*WskUbKg~~WrXNg-Z|cgEdhIPXj8_vxwXS%*|k zh3sEB^=?TbqCb_?e{}V3sbzrN{k?hXb9sIoeF*>nV9*2GhtvA6wZFy^@rAFM6>0gC zYT6vbJOi5^GfKDIkxz`NOtJEVNpvRw0DyrmMc({6ESiTv< zs0IK4;0gvdlf*o8dyMxmq?Y}!d)#LAy=MS(HtMhr2><}V=IUOl)w(^_xw~efoTl{8 zX!E^wxScd{uEs>757j5SPV9|30002jnX5at=GOSagKp}KUAvja z+9Ln}fZ@v6xD(sYb!9bW02&$^K=pY8{QCx=QhMX+1ORAh z0eAoa0PgetEdNjdMF18CCMG5Z*7Jgeg@uhnh>PR)iH?Ph2Ef66)+&(z(9zJb(4V8n#>7TP z!@xpA$G{{7V3Dy1lFMVW>e*6&eWTej%P1A}TZg~k2-*DxD*DBIJEwvQzqbFhXz;GQ z?b*!B|8emDJUlx=d-nRQU?lyY5vQqRPz*t-#U6=qm=;h0qiHF?Wp z>K`TixfH|bZ>tb%M)_X)5*hier`-$jgwBbg^u~GClm_J-0I~0Pm(xT0w;DU6R)aVB zP|h+a1J7GB3Hi$xcEl4WKATPo(Z$EAySEdRUsM_&wm$?`ns0qV*1TWs?;cI=t!=gU z_D^*4ubB5cdfGd)ZiY0**~6VuKGqtj zag0Q??$@SHt)G1?^n6bWgUa_wWynzPee&}n=m!1+P*H}$7S*%nx<|D%Lp$g;y+ns$ zbj$YuaTI^Sm@~dE`DhYU$@Y(&CN*Po?P7xp5$L*+dl4wT3rkfKPCN^{di1 zU0y%DGzSf#uZ*uFylDP7-nB;Jmak}{eu_ly7^pdjae4)fk~t1k8KFPDPqy9n@paBM zx{&D?Tq*Di&R;`$@GN2JYMmnOr*w0B>}_NOPECnu6QlT6?2p0&c^r9kO#8!_j^bvM zCZ>ZC$mIF5xTfHT6sfn$iV>m7NcGd7ElcK%j$!Oh9MKR{Woc9&2rBh@i<~fP zt5;)H9Be`1fBgOP^K5Ccvea7I>L6#~F6zGR1(Bus3t?2c5;fbhCN+i-!-K8req#8y z#DUGdcvXwD7u2Fp4JGkUJnkrSfFKZF3#OZuJGBvjd+QT#`X-1Ny88Nd&FTPbpKUR^ zB{uN!KAa<@+h^5Y2$4@BkP5W-rWzoBUI56$N21G^C>>g%pS$Une; zk9JzZAFr8?eE+tZGuq=RU~KJqhpTH&1KnMNP+j5Xe@&@~fJ580qc5)C?vbu>(@k;q zr|}+LqDe3h?F4;&^Y|G(k0z8)dKOaB{V9 zsq}nA@9pDB3@wAGJ=otBhJR0e*kw79UL;!^iC{+4EeyIIb*z!Yz`DE<4*}$h{aGgd z+MFPLoccX*QR;YjKUUan13PQ{Wm9OVs^kj0KBjq}z>alEHD-3;mDh&mBp=EM2on%l z){MD56U0o)N9JXlq#C2|q$oFGc020g6BM0#NM@N$>jv~|Dm8oO*(q0lC=Ary9w>{8 zq{R#{=;1e88)V)Mg)k>TX-`zD(jTZh@s|vy7@+2Vf3w$C0o-e~CfIw1#6q> zl3b|b$zJYIHaV^{qJVuc+qa0p-dz>1P%lWLpR1@X5R2-Tyv6VDGuaGD>~F&6#vUj- zzjCK>h9~fPP`3c~CWOmy)EeLGqw=wlf2`~wjE?yrLk<;Jc7ifI6La-<5wD5&(Pf_Q z=%EJ7`m2Ulw7~{d<#9>1FFV)!2sXXvALvbuJ0g7Dj_$oz>r>E!`iRbd98@My-bHyw znlrJ@T=G~n+BS2wYYxW>cm)(%WLs&y=htbjYBex5FK~vAL3E^(`Q(3mI_VAc4}5=T zv@QHTas)xcHK5bS=SY~q2Vs(wBkKPvINuNMdnXBw_CKVezAO71ow3iK=A^?PbdWxlP3YJ>$Yh5l2}V ztIOQ{mIqNi_cf*KH{kDA{^?LBaJ8!zxxPV@fg)7}eOA{V>97yc>07G^obXrJ&d?d{ zj;od5pX!Dka*Ro>wgpnito5V|vrfkeYpm_m??qBx)<$8AnzyuyXUu_r@iZFZt1SY2 z7pi4h@(-^351c}!`_(A1i0$^r>4Qvi#tM@?2c=Mi<5{#F>bvz8%T;zYN8^t1QqOOt z!@U()$OIo@zKN)_m`(z}hUqb*pTdW_zDIL-=Fk91R}FHgFhNlnIt&kcm+(SviCsk{ zV{H4v^nU;|0^omX{MN^( zh>zG>gK)jd)1ld9OnCIAnw^)Wj#M1L)17?#W!+6=R+=g*&0zw$4_1>7 zY;2+?+*wwH_eVNtvb4ivBuZuNa+JobDLZQC=U0<=zDWx&zL#|JvvM!X-?j7}y_q@* z8N3xM{&X@);VPN9jZxiT78R>Ojjsp2!91r6qNnY}3hM$e5cAKd%y;APKuO20QrYNo}7oOPxmu50>| zz8Oqfzj_e=03+99ah?Xo8uFMhN@4)S#9;iZ;(*PMS1vW<%`$VLvtcWWE1Z#b+610n3mA!@Y@ z$!w=xUHQSELbjYnfVriF?PYGEBTV^2I8JT9A|E|#@9oCwX@8VQr$z{A2x*aN;1Q}W zr-nt~+WaRSemlB;<4#gCN^un^Xl9fqAu|3Y#}Po_*3-3kBhy;(esnp5=OBOr*5IaB zP-tEb^Fgycbl(`I3p-DTIp?R@xw%yo^GQS~S;UyAItgzm=h|*;q|UwP>E28UffN}h z{sb=&9(+#XUJT_PZ8Q9DSGj5>FZiW@{lTdRe=#T6xI#-h&@pez*w9#PS$Y$b-m?{O zI~Jj!zji>XDC?*hlY}7=RB*n&=JG|f@60=_N^hzS1~-N)okT~SJ^q> zva?e$Q~wORZD&{jSXg|}H(L4VDG6R!p@qHL2W;y!txDbYw2V5JL!o*aI)XVrmvYRU zg3RF3T`3|Bs@*s(8*5Uz*d0AuiaG@bj}$_y%i5rMYq=7wv9b3#f}OboYfOE~l;`Rz z`1k7f_hz*Ic%~e37qbtW^0=alU37&n{Ip5yYYW-AT8!0nEPjI_8g!k|8`c7_*3HH~ z-C6MNk)Bf)A{Yh?@G)FE*h%2F3*<_lQJvN5B*Oy*Q2{-$3C)CIWR>Jb&dYvA#(DQX zm8Z0PKt+az^B%-9YGZg=PNJ zQbNadT)vSo+K0}e#o)!_W9bq19q8hlV9ppAcb#jy#SxvwWI!i_ICE64*y>P*cW;c? z#%)efQXfye%IxLz#)my{W?%!!R13q1z`8M#;6Cnbz_dt97tSDS!0;KJrs$FmCO9` zQ%#4$w^FqfnV1;HOoa&tX>UY}x4PX+Y)Jyou^sbYX{$==L0~evLysN1H>Z7AooPec z6g@B!QlPJ)`t=GK4ZU=95u5kchh(DH(T=S9k6*K8U~kO9=hA+L`iAP43d34zmK0x@ zUjkoZw#r0dY)0G0)4iHHayf>Fi!eC(nv2 zFSWnX!`>*FdD5SgX27p=-jK$rh9z}@i`v7ybH){YZ*H6uC%OGaLTEbSmkDeLey4Q6 zP-|*nuzMzafo(g+GeKBb?YI9zwo?gZ{shrR313Z@eA2~5NOSeWpXSc=FuOq|{W*Sn zb|Z5|sn>D^;8aRU#E*pfHq^lWuj@}C@s=M}4JQmwRg{=bwywd#?J#=RSPu$+Pceq6 zq5VlEEEz2sho29S$u|Z%W_6ZLpm(~uDq+cHt7FMV6ne&o6n;xe5IzgREa|x=)o=b? z>P}Pja+|pS9dW&HQyOtDM&l8R!sWW@4de?bh(wn7ByYVBPg!31ZrxqSJ{m-M(o4}#vgY_R~DUUJ~D81 z49hJWM#Fojsh5Q-v3gHEhgf%a2tG*cX#N9m&-fdbQ)Vu!sH=axP#4b7n$RRdv|Ekb zwqBYg^(JkI&hc>9{mfw?S{1Znjx-k%kU~T3Z|-hn@y)hP%s2$98#Wt%FdbW@LX3?q z0Els08@4%4+P zcO{W2VwUVmU-PmY0bU?n1LRrIHXVI=Tg9vS%IKH1wdHERT1Ycn^_~jTJO8%6R}1_I z{q9?P+A|uhTVa`q;ek))AosHy<8XJ6(GtvG<}*;3LTi~x1tD$wqrG2zmm!B81;TOn zOruFFVP-`|_;A31=n1o1Bi;i9w$$VGhgyj@6UHWya+pEVdoyfc*9k0k3MMcYc^h*pf!Pnm;D@+xACNg~RXWNR)^eTx>#q`@qUY%h} z=wJ%B{s45Z3{-5KpR8Y=>+Ek8fE9h^&DZ(;c5%RcuW6arSk*{f8ckkvcq4{O0DE zhP#|#nfP)wl%0;)9wC}e&h;g=ksF++>b3FbV?s{?mPDE0d?vCWj%amMD;%K; zQOe9qDbQp7gM-8=bgzByVIoso@*3he4B6KZ%GqR zUA?0I*i!ypQd;Gr<{9FsG6huW-??;}q*Qe{YlQW~m4K{fMAJ&HOauMLtFu1qRpfN! z(m9p!E>F*1OlDQ}i}UCM7EX;Q`qU_9RWX!}HwynvilM#}Sf0zd()9C`&}J4@E6INX z%OLvDwzwbV1|4H{xyvWzNiL~)W`f7yqJdVDh5T&!+Gw2nLK2?bVG zTk=xKg+%oyh+%y8^z(^4eH7d5lHw5LI1Oy^A>Akd4)Q zI}o3ihu>@oDMhE90x(4XXpJoz-nA%0@nYZCMhGw703`hR;P>bbZ9WSYn){~me9*?H z$&Xq7ega(y_O^Q3PW3Z&d#L~d%~Gy^0JzeJd+UhqQNL;W-g2K*V|H_v4p-bSw5W)g zrsgO3Lbx1;6io^)riiQEILV`)FGpusq#b?d zg1Vet8fq#BUrGfh#G16hb}iMX-H|BllX$H!m_w>t%p znFvEwl+#eDQJ`D<1zQg+Ta6rtkosW;ZD&ZHWK30!Ty2dV8FdBwf{)yy*nw|ozL65P zNsHQRR(ZNuvTkS)^O^deUb{6a^j%cTck1r~2S2r0>t~IsCFJg2M^_NWdJ$GEOt{k% zaKS?tNSE*lVVqE>CE5dQLQgY_46 z-o#WXT(ftcRrU;`G>BRV5xKIn9EtiLR%gBKmqhqlQFCEvEsU0p?;HX<1T?FiKCEa) zNv{}ImQqnIRu~8lzHAX?>|VLkk$|^;i+Mz?oO(`j~3-k4$$cnp6 zS%JIy)8weDGdn^{;0%(Sg@>SGr|pQ_!SBfyHLuiR4K50Ke zM#&I7IlpT@0k07JnGzxoxDm5{8o2wj6{u!uU@ffmxwgO*%hFPDp_<1faWf>m{Iqjy z!3(*4XKPi+QC0V5E2rG;AK+7zg{vGM51JV7)Uerk#DARs0KeIQErR4UFQ3Sa?`?ky z_6Y$heX#EuCcUosk1_Cg*lq1mrh8P5@kQ@WPlCsNJAhCn6Jo3nfO z?otZ#0xlJ58|cjOlWyzp;B87r2m~r%dKTe1E{V6~nGUCJYN$_x7Fm@g!QIi^OD1g; z#cEhAfU`{?+{AwX%T^cjajXvRK8!G8B#AT6XiSaouPD7`<%c7f+GZpj;H|W<{x>fEUkkap^%x=OFs)I2+fFRoouR+J zD+(YmFY&-;XIUnb?mwNE;-v%ux@EglJQO*aK*6J|4u!6*J^%GZ$2s^qLUct%zlW1X zEz^sxT}?C(tfG9AG&ENGYOhZd+FkwO;w=L}+EJ0yE);1-Q_j|LeSb@g@I{u<;>HZH z3hhSE`;eG?rb^&VOjG{+Vs+=^KR{FYf2YHHMw-28GMYt(qF$<5PB>TM^|KDpI(6v{ z3IYR_SK4pVQ0MM{=LUb`5bhX2I?0v}u6_@-w(GBu+@~feVSOC94|+V;+NGbk(Gr%J z3SqAi+S1tEnm<_msu4$}wgTj%>+Zi@#_K}Sen>W*@;7V9m7NlD?ZC%R?zQAwR9b^$^-*T&GOjYT zmeTZVd9pJlF$dJT`2z{P&Hi?n;LN1)M>F+|W{xd21A#s`Kwq7nN_i(@*d@C8dS`aIRrx zqDi7ecE~7U^{greB7^Uzw}rFNM-;feP^hsi)uCD)_j_?3R0La>vUzwheCQVQ-Nwq` zw^S_|rZk6lf*;1Tj8%sT=*rwg9b@fuH8}725YRFq{x&|1>!|WgKnToqOUm27HuINFm^Edh3^22@3iznT?lw(L z42_m+7i(qj+gR&t^a%2^X`14>xDg?JG_1~-$8Y+vue|woDeMO0XTt0sh?cCm?%D6< z3At~F0FtG?o=ZRR9Xheawefr^r)0j;`HSNKLDdY}K)GDPs;NF+uj-8m@l7%xE>rNH z^BMUtrO{ojr?7aoMTBWV=&9!@As`a^`%A5j8)e*O9OC!$_lF=jV zopip_A=%FPKSjjmA~>g^a!$E*%WZ6G(u-@qwubrPO!Rax>Vc4mEA%x*ieIrSzDBAY}5^cOzspVe%)+ z{2Ol-)p{aw2-);`k4=@a-U{>IUsufxC%*N+fB$Zdy)>J@siQpR3$$mZ zvd%`?whj)EH$vgxr)_eSDrd?QHv{ToXYI{1;xy$MVK9d60P9-KU8df*q}qzKs7?)i^u=Wy4kJ6_a;+xOjZd3rA>+(%pylPg z<$YpVH=UMht3}?U@nl*H&>K!^cEWv zBo))_<@NBIS(o0xS4%G88|zp%kGz8J&l%?Vcbq?F8oyezSk-UZd`bOl=s`RXWN(Ch zawF;e$c*$79ebPD9vXhw#!b$bGD8Q{>!AIh8r);wW2Y6@>FFN2*Vz%G@cF1R2jRL8 z&uW@aq#aKhWm&`;K9e^OHAChYYwSj=sF)JjCt&WpGE(|%s+|l2srdAz4quJN!Y6+^ zmKN95aLw5#+V@UF1MCvJq{Wd;a%#8Rn3ESCTQz+7v}uU`H`6Y%OcGkl#yYvlYx^Y)5=6wPa&@7HrcPYh|*0rfSrKk2DVVpfil zQ+rbgd?&I~qsAakYUbDh%ON9UxvB$pZhDi0%;=Pj3rkd#jP!F@?D__Wyq3A6p=ZnO z?FzJ8_I5bvLm7O7GA&hXMh0J6G9?3F3vdv5eR=oO4(V69dg69Y~;sKyLW=k^E~15=Ijtg1MB<{THG!eSMIXQ#inNvUp6<}y(=~3P0dT>kp_9u;MgE;1qG(%3TWPu37tKk53GXYo`+#7Kirfbmwy zJ5eD@q2AvI&^p0xX_PIw5h5+sLMlHYc0tAg@&CEqIUS8*@H>7qZAa>W5037 zn}b(o65ly2+Z`L$viaPM)sx%M4BL*4lV}%H#&;JH1z8Jab$#|u7XGu0vFRDB`wuWi zLUigAd~e%5HeF0K{tpnYO7qN$V}$L90$B84b+au2ehNDEp?M~Z#-^DXruIh!4Z9^8 z#z0JnG;v!vpNWw`tDEoPA$ivT3_BUYT}bY%2I(Zjxowb`s5xiO+AeZ`v={99Cz{Ug z`B_y!Uk$L9UK8&`DR1S4;cwK>WCZjcIL2}ysCrFebXHNj?P4LWN88}^nsdXW^4`1* zxc++^rH5Ob6JK|W0(ZuOm-v^%jb1^Z#%<&=#!-?{qJzmE1Z)BxS&@?T`TU<$GF^mB znn-zWTzR!&F|!-EVVon$$Z6B+UjFv$d-%q~WoB8u*;^9F{BXU702r<|3b%@z^$4Q{ zM7wpOQZ2mfiyitAkyNU@_yp2j_7XvV?xvWde};*Pe_{|B0M#`^VMn!*EH1GrN=Jvr zrg($)wzj|Gh2+kQbZ6S#%>0E$Xe+(-V@-jvQPY7h6fDAyFla`UlpuM|)lhj#IyPF_ z`sbcA?kGy>W;N&vV~OesILBR+!|l!@l2s*~t)FVFoDxm{nkksJNgO1B5Nw+@qi*Zq zYSzxVIGcuq#W~oX&fW z^}6SSih%Q7l&4*rDD>m)_TpnQA#HVejyK5?Tu2L3nX-;ZG(%3e0fXzJS=y)1uF1@d z+6HQtFIn@tnz}p;%WsFPXFFASTPK`()yH;v)-DHOoao9{3?|A@{}vcMccNU>IDueg zEax%hY^X{9y^|!Y^hYH($G}c)_q*qUlpT#j75Oetj{0bIY587Uj)0!DdA{h0j`&z}id-|g}?GwqX%014^k~Zg#S)3(zO3NXj zTdV}sbQGGOXIB`bMPt%iVjXKWOD!xu!4##%@(*};4o1rS%5a>*IXelNmbK(d{Ne?R(D_Yn^?^;ALZ!vr$gQ%yKU@q6gF|5S z=DD|CB47RSkE6DG^>8S3P&1Q;*A6zG#oUSH?&HE_*ce%|O?0xx!*&$TKXc_Y=KWT%hoH49?4IbnZ7P+BPf6KUcs$W2-O7|nNkp{5Z#LQ8 z!gaIId*ggeRZl%MsvpzU!wYB9q*>?33D{fad6|_tqfuH-j06E zh1hq~ddO{UXAWeU&88LRcO}m{Gc+OyDOvyRA1c4;3lFs((eod$9O*MXE zmfGzToP4`?T+duz3&jtGfgwEZZ)lK|PS)GBs{LI(SN8Gv4K*`A2R${kFPk(BEsb&- zs7U*`5y!#i$*5#2R0?N_V{mR1X4c=$0=6f4eH=GF#qnz4v6cZ-hA|f6&nSy`IY8s37*uU=foY zL_2a0G8#SkuStw%z#!Y`K%u-m5q|V7t8y_03z_U{BWr}Yb%PeSusS$O5ec07sHCC- zF?2gBt9pesl!2SjnTUaSKyHkX*wtTr*bQ4Va)d#^ft2j9Y6Cwn08jZ|jF@yff;y;> z3r>+erL|O=eLeZ~~w!EMj zkRzq$$>}X{h4|Y&=62YcB<}ZvxxCC}L%UHowHI3d;sP1x*$)y$C3{sBiH7Cx6Mzi$ zzLU;KJ_(qTRB+Q-!qk2ZV(u9FJHf79zswYZXW7$DFppV0BNC+0=J}*0%wZ`>t`+CN z3}d_vvrske_2{dhIcW4FY3p|Dwx!-Z7`9D~K{(r2Tzg&18C+uzOsfNcbNekrMplbit75QD)HhRwhmT z6^)$zbR{AVXNoI-rE^Zb<*OU);RLA?adcFa7}8!%L@Cm!oANUlERkh8sS0nQK4!@VRDlmuGEA@ zzKK;(sHzm(j*dAAG)KIw&38FsudVfARRVb~Jo%Q^&mFsNe8lBQSzaOS1$YDiCe-J9(zg~s*R>lbTM^}2w__{i`Z)7>oY~m7@Rw?j z4=BnO!xa^Ih$5xVxb(IDgaI{HLu2E}#EB8=MVNQIGNg08$o(!m&^C>JI)-lYyyPE% z?t~JYkf`O~ zy$8>_K-&H|)Cs)I45-wwXUmb-UIK!JYx|_X0>ML&RNs|s?w*K(0^jr#w zhB3(FyC)aLH6=x8?jqkX4!*f#Bu#nE?|mACXMP}~1RKR4LlzD7`SIy-RO_}KQPhL| zN>8L^uF*;fi8P-je9MM|gGbkpj;ADl{umpTwmQI8_~sK0N4iuEE-%asU)&DR2r^&) zaGR0C>4m*nm^4UmK)$Byw0;n(#V)P-I&|XC5+l~+=GOSvzwy9Vao~av-^IPxml}D1 zo*Zzz%$PJ(_`*e&JKEMNRYF;Hn!OB`^mQP5aCPkL1`6(-2LP#FinSsR$2VwCru-HN zK@xtvPT-ZU2}l$=0i1zikoD8O(hybuFArjvm7$r-4#o2Cr5vc94Jl3dk{}Kg7lKn* zxS18r`|&>+DJ2sa>GJ&NO?lN%N5Gid%m$D`k@EMRt~L8_;r*99>);=Um3kUjDfcQ0 zIfrK?KJ#AE6Wd2gAG1cvGxTPD`&Ce49(sT|EMTL0t8S>%hv9i&EnHrB~GpoD(P ze^WAhuNg(xUL>jyV4be8AENs}#LF6XATk9TU(DwSC_t2&H)xm%>unNy+PZu2wYH|w ziUgO=y0evt)F+u9YrfxyKo(!Rn;g;m4)6$J*M`#fvQL`xS2!u>eC)|Lny1})?G?7! zin-f226pt(TVa2ZKqq9%l4cTHVeZBk@!@TbGK@+Vfqs`|oA>!Ze@aV8+Lv<1v39k# zpt7xYSs7a6M?q(8KR|KL?mcu^%vjb4!%)Rs0mtLAC0=pA+&SYzc|O>`_;zxrnZr)g zFQNfi(TBxV_u!|9w$K5D3txntCjSGF=xA9JYX5NK*@&B=$N<;BZ|T{I(+flM?DyGS znG?N|C`mIg!1X5u(i-i3BXI>rKxQIMT7P>wDp|*J)TbKG80VE4*?@MBOOc_je+4ZK zEdC%A#o{lV)E$b^gb(=5a9_I!qmmIb3-C{j6iu^Wl~YZ*kdDhR#MA7xb|CK8UZ?d zqEdHCVKGt)1jVBB)fN&zb$2ebtC|bcH&s^6*79(qxW~U1B=7SX`lHh{i^u78H#}o) zt;A(&@Xc4Z9W~Z`FHp=R8WqE@F~kV+D8y0*BC02^@At>G$~n!JqlL9r_x>8g zH;ArK07%qNO!v1>@gHEOo)^AC1(mdpPgv>@=$!vmE9GJvk!b!_I{c|!cJ9c})UQDD zt{tDI%Y-xbC}wW@Ww*X4B8M$fkjE6o2Nl0m=XP;}lJgiCF45R!(hj-OflKn@IWs4} z6B5vR6R&Dg`5TZKF84_s74cEqc;Ii`^LZ`{Y;Lbn;7MQciBP#yw13v_of5@TZXry< z9^X*yz8y#HR?b{Z*Bg-*#qba3AyduL=^5UazL#ZeT&O$Dzr+jxZ%P-yG|W!q5D)MC zWW*5MZMP|<<+D6h#9=~3%rU_|qUfuCeGZ+K@@6#HP2dIUn37f7lF5p|fZrW4M}63QJ=n*1Eja!0Lf6%~to3QRf-`kTxb=5+v6(w*f(@yh zYJ3qaaVK6XViRBL{F8b;h7}KB=&rkM%CQ1K#(iJ+qJIG1z3&pjnNz>vxjI-9+&=42{ibI$P7u zJFiiq-@zqixp)o{{F5|Is;vn0_^?8QMTJkN>`F~7V;@uh0&YdA;lJ`+>uMc}VS&RJUIUu5H*KEuDw9(sf z^=UEfTC2vP-3M!eCP#E9Qhl0T)5;)LQEwrx!)-r7TGelg4Z~FJgPETH03T_ok5=0a zXI?G1Ilxz4eH?&NO6MLze-Ux`?{8`Z67#%pWX?~O8o=`sB0S-*LQ zc`wlIv=nkDXs2os~1Y;c4&b9Lh~1cHzU8fgnFN6&eYfv3hF}DXiNEjN;_&Lq57MY{!TQ) z>v_s6ppw1B(8W$o5kZZxJj^7$krz8{A`@q*3w}po@SC1vZh93BW;90#`*SH;u6&C% z*?sa>P!Zb!R-YxUYFk{#6#K>k%k--^wdC#K>}pp;nxw?W?25Lw+>c49^dA%+q*~HJ z#TjB7fnXVX%6l2V|DJ!g+{|qy^oTtt(F`JKl%H+pwYE5x-ZQvHpu$aFpt%S&5~hTB zo9hIAE{h`A&X^CrMGau-yavy{+YLX>mlv#b`P%8)+XM7Gp7I*KoEM>~Px|b4k|SAH zSJ3;_sp4CP;0mACBsh)^iB8T6k3gY=&ks= zLr*vjAG-8UzQ{lW#oxco@iq#inbe+A#7 zlvJ|E@kihJp-H`z+ARF7v_L&L-}VT_pDe)JpLKD)?%0{5=Lq_bTffXS`tZsAem9*5 z4zFnV@Oex_OV8S+JSX5-TCOuK$GtFh;`z@rmI!PJOz-e=B5O50#?0BJj>iy?1R^ZW zv<(8GonSqjS&XV+c94!}B=>gnVvC>6^kQMWK8%If}?m>y0< zelF~(R`B^iiMwu8Fwr?lKs6S1@XAk&Gwg-jD;vS~oFpF2c22Vbj)HpOY@;<5!qDVc z^EkG)bgnMXa}^m8JN+q3pf;>08NOWpO}8KR%JY4u*6H>(twsAyoa|eO?n>`5cP$BJ z4&8d{JWN+PiZbjxVr-s3n+OVCak>hGEPZmNZK>i>UQ4C_=}vl$B;RC|$`ybXXYz6j z(KpN~YL1SXxQ4C;0?5$mCY%Ny{5Oy-Q{f_*;4f-MwJR^^8zt*fg@^%xJDJVJzQ5Kb zJelG))Hf0jD8V8*ruob6{udQwuk1U2z0;O;E^?G`*FTtn&hUnti)X&(m3)S%)z3;d zlMAh$F>J#%-Ee6U%!5CC!Yyq|wD1h|vhZo_Qvj(Jtp}D+P0SGuV7HVhwf6g z+f+PU81a3sJN*DdJtiE5mj2=3I(yxso_HWWM^8`KjWHz9>|TTn(s*QlwV4XeHf40q zTh?E8(&04y)?r}yNlvg7z{<(-R7$t)Z4p6RkXA3)VCqy$(XONZm$6Db1Yb}uFg>#P zKCQY3@GD_Iz%y_5+VGESO-*%$DXW1{Jywt7@uYmPtogchg|C0Abu75bw5nEw>l3bB z+!KQWuQ*m(h2QAeEC1_Z*G#3Ih9>F4kxoZ@wK^WoL?g>)u@C6{VaIDX2$}`1wheXM zS{`>E?hUgzw}1rdsx;2qG+@U|)G^@p7#Zr8ddw0{F{k0uL4CVN@}1QO`KmHqf52mV z%U@9la@+eKID-PR&d^Zy1F~h`(utN9zY}N~!0^ai_G#-6%-;JuZi?P#hx*U|ZN2n; zqOG>h776m)1=XcFdVh*DpB;hphz>R#2Tg!qkvNC2dlH&5C2{fCGsh(%X2{%L@@SoW zK(iSMCty-OXL_#{9A|fDCeEnJIE4{q@4MWB=D`;cce6Jr{^v!)-t-seJ04e-qEBhr ziy2q@WR}XS%;(;^&+MdHxVN!l4j)ID0vAuUWbMx#pQ}ZZ+kvXVT;w|sy?=lNQ_ar6 zW&;ujKJC~#^irz_ui%$-uDw}a0%InGZDw!S&<(`lY!C^9AoHz#R1EIUKfu{|vT*gZ zKja0$3K|@rOjwPMjay90!lLl0Z)e>>B&L{t7`r*%U#Avk^f7AVX^pL`F}-|?qpV@t z2~x{}XPXaK0Ik^wU%dL1F=X-$KQy4$)JW2GKL=VC3v9W%?RmTzI|ys5nnb04aQH$W6u!{k*o|@P*)_n$eQ<|aRbN%auyNs%5dUU~(U}9q zsFl!-e78+Sx-`emED>)@FSxWwl?MJ^V#ur3dVE@ zdS~nCYJ)z$49SI;VNsc=kv2a}UE>hkZAz7X4^{G+9Au>TcU zpdR7|Ve@e-lDtnl8HOlwUlO6b!`*CW!1V3l6ubdRmrDJ89ha#^?UO!{L^^`5*6~nR z-)~3YhJJ958yF#?jFnTNMG(H<9^&;MZ_wk=0gAOfvr4v zOhIpaT)R34#H(r)JW6T(dxi{aSQmSU92G|9YniE{nH{fw2S09?fW><1+P|(Dlr_b* z_tvZ1OSVGJ=y!#Puo~`PcPy6o3u&G!ZT%R~^R7yJLK;4kdIuDzdMu6s=n6!gq`z*4 zU4FXSPTNoUNl?|5i;t?avOxJ7;Ybe|&#A2uwC0+$;&}Rx%PpkLi{AeWt3Xu0=50Oq z#%pj)q83OVKADL@C5ouu76nVTu^}o3$;kd#sK_%2iaN>~<*j0O7v9*mhGb&eRe&qS z#`qDs24alwW?xb)0l+H-druP4B{YMnd4$YHz-?kLV|#YPRO(a?3fp@Q_~N6G>rPfV zj^UYZqv|d%i5gJI`mcNQ-x4nS`9K4VLs_`?KAhrB<~~(Ew>UhEajbN**k7Mc8%&4Tw$4+`wQ>m1Y1=q-Lzsk&Q$RBJlR!cgLOs;vFifMj0O0_yJf=D$kJ;7jyM;$`f=>$qHMxgvw0wDibxtUTQZWRo!GD}2e7vt zhdWL-9Y%P17Wm#@vo>OF$ zl`95ENe9Q*${1dDHqr^;0Hihj_Tu=-_$M-_qVWturWk2Kqxf@IQ6Z>`6LJEz^y#?T z#Gb>x5z7`+msC(oQyjv%R%TG=&l;!+eYU>j5A+NOV)XU1W))CL9X3%(RszQyVVY~5 zDyR4F`qT8%9g$66H6LRI9S%k!JUD*7Yr-_1oyWVULL8brfTs5 zszaAk`9t2)PUog%2h?5d&j$_Va^!Tm4P6}Wj_Du>)Uh*{*Tvr6KsVapn|#*8D6w5Y zA+4I0moT0h3S7RKVmbyj4ji+g|s!37XM}=xCs6+sODbh&*$Q0X8nhQulEkB0Y6x{n(My3KT`G*+T-~XC zuX0!qDp*?En-6n~S`P&HcP)5e&+3}DFr7lJG(KB_$CXb29#7|pu^IhGjXYOc)b@r7 zS!5(em$I`E0b)DbU`gWk?~5-1cpkQsK8jrLEn;Js$daiNQ&<8BxV@OSYXP=4aOIu} zO4iBIXUc1os|7NU*F0E~%1y8NoIO01-VcCFEljzNRA2GBk={hOve?`LE-Y{AF?%!W z1q~HU(5u!N0#rn(A&8ayF{BMgV%Jq;ZHD;UO-f^=YFY@Pr&dBNtEWk}!~uY0^>kUR zbITk-UO5ah18agiTyiWy+t&`HGNcTmrdDGny+kP>Uix_A+hS@5M@-R}lxXQg7)Ze9 zjmhoX`Qzq);;lA^lBmgOW|bkFENrSk40q%c#^Uz39kKOgB(1<8U-QOO{7vxD@eWQ= z>iP=+GN~(jGK0Ol{{X*SFjwbH)!M4EolY3tuV2?L= z@?4)L$mEu*HZ=V?9V04$kQB4A_Z!&X>5r68lUGpCw0W3i6v+A&&aRra;ep%ALbo4r zkEMTwIry)uq@k&)r_1YT;t@wp(y~+_+fZx#)*sK`4zVFW9_865f-=fF+}4IX+cv3_ zLiM+fExgUAV#DfpJ@H>YahFoo7)D=^<`fb%OHg8`jx>z8y^V&hE-!tLBOgNl01jr%IjQO64@)6JWU*Nya4+sS{{Y@Tdl&dw;z~^Nwx23)jSWP7L)CTDsGZbW_wQhT zKKQj>6<$8@Ej29yXWka5kus{Z5*lZh@Yho8cROFqH{;h7IR!p%M`_+#&)J$$!z88B zosR_abb?Ryzkjjkeh!s99Z8jD71b_~()7(dB(h4%q%G_N6Rn28_U~*Dz?nppnRREy z(?umMJt>M77u;zk#2$Wf4}QdLa_ZzVce`Cii0o6!(4aTpo%VW*C z#%IS_B(R!961?k}#Ac3ZNl+vQQxJfEsHnfM(;s7tDELf@o|a>%Lrof`ti`}xFXIYF4?(xA#6)*sst1_1)3tMd<`rHgss~-#~t3@2~qf1lO=`d5VPyqy6 zj!54RLo7MQbxT>9fDkf?<6){o29+Y@Zf&@@^&6Z{xoKgZo(D46src0vA~^vn0`~b- zZh!SxnN3iWO&drQJ8B54rEV-WC?2{;YiuyG(8oYCYAC4a)oJ3RNhFFup)~~>i!rtP zC>Qqi!xW%T;mS;!qDobH=VuelQALznL6X-5*baRUdvH#-1# zILl4nhid6F0QrqvF&LqaN|e$A7Lb-Vdv3NC^0l|MuWV~F`ri+}O&nhvm(3g?BdC#H z&uiM=zpg%a;g18<$4gXvL!Z@A$4tU$Dby%UBwR7&Z?Wujk+I_z8B4?2cRnb&KQ%WJ8G}OabV5DxW57c^g!$nMrgr%=$*@?y*ROM7H4OEto$PTN6bNb@$ zD2kE@C+IC<`CyPD^?IE))oWjT9u&JX*o%#U?TG||fzla5`!&h>;cV&iD4|JmxKe4v zsd(P@Do73a3*oS!$W)PVeQ;P68enysfv^p>B${e0rP9nmBwvGqxw2VJkM_X9w6|qY zez(C142`+twknDhv)tcvbB{}VjXQ70d`dzI)4vwy0|bzvh0XhOfV!oafJK+SJeopZ zP0zL?AYmvgabdpP;316e(J#uQ%rDQiu_a^`Ff-<{5cNdMr==aP0Z=V|FME%+DyXFR z?4qA2sDes*%BH(ZAU9#8lOmC^Hn1Z5UyE#8mNtfUmNp4IGY3+{>11J~gY<6wuYaob zwM~*$(alv#R+VPd(yf@o84L(wH_!_L4`FaXw(J!uY??8eS5nL)>by%g%d@KjvMKwG zUd8_aJcSlvRTTwnX+kH036gp0W+aVq`5wT0#sHI^hq=t*eH*o7x;m=R_KZEfx`xfrT?o}|fH zUzh}%i8a;HK!Zw-PRiRe9g7Xf)wg_7{{VB?tlIjs$E`g*A-J4e1 zaxcLcYb^0*Z$SkvQB<)_Lq;TM=ZGUnR0C~;5C)QN4gGs#f?wJ5OeD)+Fv}1$v~;xd z7c|llrCFE@F#F3JZLDr=J6n7;RhCIw9j6H# z8iSY>zsw+Qtom#=1Gjux#Y&2?rla^)<753Q}~ zi)vUSr;n!?B;M@IZdmsu;?*P6l(4}IM+zc>#fSsBJDe4KpnxsdgT^@Ejn3ZqgQ=3~ zV!C$+vwbjW!8hst?eM)!vFOvNF}{Oia1XvEB#ahAp_C%r6KgU4cnbrh5(k=4zyXE_ z%74Vl7?K2&F-C5kEX^FTk21=oZ@;Dc9zzk2pLlcNA1#KCRxwVph3Yd|sip&Fu(9c# zJDc4|zCP>X$|{Lp;=-9@f=%JQmD0q>8?}hH`#AVEdzGd`<5?P-pd=E+T8)VX2x0zP zdV&cT>_#;hyjR^k6Pnlj5>VDRR$W>Wc@6GueJx?lxI7zk>#&hs($P9Ak+ETM`D5b# z604d>sc5H1rOsgrNF)ayQa>@?{{ThF+P0(#De7J+<6tUi=VPf4dlP>t z?d#Z#8Hcs(bgCv-sh6)YCq}KU{{Tq;0B7F{&qEwE=9wcdvdkIU!+$oSPvvjR76}Av zA(;OFm_Quf-ow)pHapyb&LfI^#RW{Q1Od^JZ*VLwFJb=uF_@{Qk*h0ZqlP_oGnRmK zt!Iufy31b2b|h_$hGkH}dUT{2^#CrsZFBY59A|SZ#yVy-lnLtU-T_Tc*s zu|Z?udCe?M7G)62A5~ixqLBzMWhG9te#CLc_{e4yz-AB`(kQARWu}%keUyc@{+o8- zoNxR|C46m7EDp6&Nb>%HIBhS!qCwlY z*4FQij%(;MsOg}pG;a+wRnf$?p~-TttPY{MJ&wlw;XJ;ghLby|dhjNqS(R$l9P3+g zAh*r2?Q*uiI7X6VLsHSf8WgC$qauflBdaT1k~gu~++2(|5;Qp{#zibshNyaI{vzN= zpq(ybHwNX+h&+R}`IALlX2|AT$0?|$sA36?psLXBq#-LNk~NFCwTL?(O`H9(m{&`d zWz9z(S2nWgRaP1WR2R~xQS$&vu_ceD_@<+Z6PU?T^!0fhGU|-Wm#c{6kTQnS3k|nC z`r-MqsMo`g*R4y`NAXM}mZGY`U`>Vei(j7pw)ZKEtkSNcgE5e|h@tTgW7CZ(Leh1= z7URnupGZ6W>{6!B10BK3@crMhr}wf~^{oEG$OWy8sB|7L?6X9I{eW%90gO$jY|VJ;$!yu#QnV zs?MUTj>=?%L9(AP8}Do6~{0^q4Vho&TOi;-=Q9O4!rFy7n~gG#Jfclwcty}E2~z`gKO3P?ufx3_XJ z5JPEV4afF48>NU?49Dn}sPcgAX~GMgmM;DIfgPq#!Cc{`E9{Neg^wC|ITMMVq1QR1i58?>*c(y3#sg;U1D+wW;-*?v^iB89Tq7c_TXoUtq2h4ika zVgNT~1lrr}>5G)78NNngpjmRf-ju3TmSsf@2yG+_+-gy#+)#I7_)k45)HV5?Tsd)0jV(NqM_{CbpuO43-B*Er zH^z38Kh0?TQ!PbB6cJU5p))jdXzGHo29C#La#YwGjm@o%m>JPB%1?pD&?Ql8_`R5j1tNMIth@0jys^3<Mx+fKuO zt*`X9E)o4Y(!^V__rzz~7FAMNR{IQ1nAibxdv9z;c~S_TSFlt<%zc2yun>_JSgGkJ zg``PQmOyqE(l3AI`Qzh%;unXYr_AS)BuA%{TcsqbL~BnFyM=wi+?KHHN|9`Rj!e>& z0yUngjU?%?v9l9ycI>iw=A494gsPAsucL(p;4Qx5B6jjvmH1UC@<9{tpIp*5CjmOkj z+}|IX>uRa0>S2?kQ3TGiM=GUA8W01eKy9ye)Ni>K1J@r&{{RQPW@vL$k>+|9HwvjK zAn0;z6cA0&leh4bZZO!-jeW`|UYfBlum)Lmyds#wg(= zy_ZV~I)|OMx%*=O06M0TsxvCdMxh$2Qp2j@n5Y`9{8l6nP5pMp_@m*fYwD{ir&Nb4 zcwjPL=9!ooEq#dsu;tonZz#H zf;_VjO-pN<5v(nMU03c&AMW_D&m@g7X!&cOE>MwW_Sl0p2``-}Y!D5Z}-j%k-Iq3FRN)gpD(iW}}?xdV>PVSmWt@ac;R zG)c3%s)ZqG>6fG$*1MhD{Qw9)#~jI6RLMPfL?UMVBVltI?7yDp?}e!-D{7&JhFUhE z%TZ3Wl2FskcG!^r)?x1@E3+9)TNbo+fLtX zOD<$@DFI3m`^4-ql6aQot@JpIjKNz@+hR>^7rp%5yJL-OdwSxcE7@dAEx`u-blAJw0Mw?vSqiuloH@~39 z%P^;kts_~NO4{Yc!ME_=weeM%q%<)?lvH$a#q%thcSgOgEIw`d=Y9?~IA*YZFqWS# z=*>q9G_+DfJc2kJ7`*pu-?z(dHv3~~FG^}kS(OylMHqIL3kO@CJqb7Ow9H zGEbPx4IK=TOn@-q%G^AL`<;!x-T2M;dRLONl*v0%&`d{2yiAcZYyz-7zHzY{h}`Xs z{9~%3@x=9h8S!Kpl{}8(sS&jl*=7KP)eX(m*!;HxYYs2!^L*np%ORnw%W0`0EDON| ziyX5H`HCc#*o%NcKb9%8>L1&Aj6wRsi5@_+QIdWdDBYCE5RySHdjWli)Eu^PK6#Tt zPeGREaAq`hkcBWRER3sjA!QdETGjyX>5rY#ze_k;(MdRh z7PPB8$kLL;gJjqS&!%rnj9ZOCB05uA&fiA~Tu_oaBpqt+SjdCCUO$?OM)m2BAx`Oga)H3<4 zBbPmvG}CT3YYzBNEz6^*q-AQH(pV=FJvu3lAtH$-1e*@$NH@0a>17#kkmQt&_g4##`ai%s>02~56@fO1-%Vem}GkPSaXsP05iKVsmADY75w6Gt1YAIhk zf~KB^O%l?^y5)8RGM&n+G3T|&1nuv(4eS-u~pSx2>i7%V1NH1@GxpPZgko=NtPt}e%cG_t!ZTAM?17qv;!afi2B=t1RYEo%4Cu@)+H=gaVylkez*RvC1 z1*|WPV;9M(o5Zp@rAJAOwaiu~nflTQR^y~suq1XngT1!K560D*mRnmDM71eBT|{gH z*m(<)Cbo7_cm#t=AR2tXlS59V{t5o&80O3b|J|c?shjDH`f^v9Mv?hm@7*+ z!vL?Y`l8=w{qHT#_U>`17`4$=8+2LAiA3gEUCq!NjkXr_{Jrgq9N#fotk!C(c+52J z&SU5c4zc4&wd`%MJa*$1)NM2r8HEc#W~h}_2#f|Q+LVu$_uuJ(<@sFmSJA-}!jd%V zy*cD61KCI}K><|U*n@s>;C_ey00_Utm^?uQSx#o=I{3zwmE2l;UyFYB+;`sC`ZZgo zlrqY(s37VmVtWjJRipeEA)<-pO6VP>Vm3(%s*r}qok~uj?aA1FnDG8#NtorZx=317 zh-(Zy;E*r=$F?zJq`Iii%g-G1BZLBV=@;1Dbn0L`*e>5(eBZ{+C+zc+GR+Z&aamAp za1M|aK|G#reNWdPO|B4C&rMHEi41hbr#7HYp=IBo?ny4PgRjEO;tL4WG1pX zB9lYMV8kWvG`6b|zc}dThD8+gHMDa?j|F8MqLQW+a;!mJHzM4d8{AuQd~a%I_!pBj z%3`PxN}T~T<4eR1^?|6}pPR6_18ZLx8kuJOu9X$if5x_kMp6e@zWUnRUdGoR#~(uQ zjRs094q+u))CbWo!?c!C#^OK}aMudM*5lgQrYyWW;kvxvF_ynDqOSOgJ6e@MOZ6OECzXJrLP-kLJ(2wg#b@80sVuwkn7=lGpzLSLu$vtER)9?esW|CPO1^ z4Yn97*_B$@Aw@_odD2b(xCUbF9W;)B9+(V4;|1A(u-taUW>D1f0t0zX!Q&7sM?*(F zG;dW5RZdprrCoi!_#VRx<{llPo;FHhEeUOy(zbwpt750>Met}1O$Cu*YKnEZ1y7v^ z)42EN>xz#Mc&ch>>IPd(WoT?3SKR{>V5%+)wZ|6#Z@$=Ks?QSS`Fs&k!(E-!v-OWo zTAGDAWL0KDS7ke|a7p#XOT&I4r-p+#q7#bdSQ4(4^?>n6S4lt|k+a`x@aJnBY;#z1 znQ}8#n9)=vd^%@{Q|S>SDGj(*)ZM|qK7$xf70Z{sEqck8O%$t2jT(F-7uw``wA#uX zDLfS*@-2n*0VZ{* zvw*FrDYzweW?(IQ;u%d6PgMmTShrg}8fcND>PSl`P?anVl-O@$zhSuZtgf_FBUY|p z?ANJ>sOczW^Xn|4+KDKT>+PlD?i;VJ4B(j;4P=dFhy{p}Hw1>X!ciP2@iJH|>iYf&r$I6%0isIi}D6 zLp-tZLknIq61!q^&vMVh4aQG6s)%R@%#PYls$RR>yLOJ4WVQpU%2INCzOmozy< z8fFoy)e(K8W3UI%UhV$IFu4lLmqSlT_L-{V5y%Sv0MB4b7P;ci#Qy-&2VslqOvJp+ zLrG4{QYJ`iDx^2+NXRuQJ&vHGZUy+;8LdW(TT@ra)RHWW2wI7sxd5@Zz4imOv1dW? z5)_tCnpZtU^Z{-5EGC(^yEXQ|yEX6hIBppddFQAM$q0`^I{KZ- z2kt)L<2ADoH$srZ0x2;Q5_%{er|E|y47zvNuWkv&Z5W!8l9{DY%{wTcP`8+^uld-0 z@Y+<DzNU5$m#!|jSAN)|U70lSiIemmfx+sZdQ;whoG9gf$;MZ|@5jm5|H z!x3!Gm*XkI7AVSYtT|R4{qgd8>3l~HXIqsnTUj*yRq3(w!6E~7vowIB-L6-Cz!$dI z`u#+(#S=8{sGxa?Hnu5hq^6p6sF7Vm3q*^}+@9Xnxfr$0vJVbDJkwHBJv_AV#}d2)Q$cVFX;E!N-p9T)wGAv3 z6ICLEFzGg%SUa0vw|!Q^GG%g!DGRMoNaHI|V7272@}2kfJ8#A`&#U2nEAU2X4NOay zQ?+^oDveBqgK$V7u^@~6e=H36Z^c=SC344aO*hA_#S}P&be_5TU{h&Astl~b-2<= z+(re-1Lh$5W9nWVXz~dS8&{=GWZ#D)*p)`J9U|NkM;mMgDCk8c97JXkH7!dhlq!_z z1&x0Upa$yqTVKB8*iSF6pcL7I)X7uvhecox3s|Gy%2xJKy8Vs@qhp%XQ?)S)hAM_q zuPmpFX&(k)OYw`mhrOqw0eA1scTDWNDsOr?u z2~nV^iY7sEe_cfV$i_?jN3Wu!ppPq~s)~|im?}qdNr<52jqX@n-1gto1dGbCwY1fL z@o8HZ{AFr2Mz=dEF0$i~P%JyxV&5#tCmkBvw}_#piJh$OWR5_pLV!MC9C=56I2e@h zO`iC+8DmjSB|0KqAX*U_B(D39FYAl%4`tKT_-84hSXNRqa)L(HXv(O%zW1>KM&C?o zv5fm=bb(}~o>9~2Ek!Ks4wXV|qUUgJy|%IT!C{RlsMXb>ffh5UPVN5y5~526C@gqx zH3D?7!K$T5>uRUy$dXM~)U66Wuo+c=U!yZyi)=k{I$=vBQRW$-T6#)YjX9S#>RkzT`4^KW~8qts&!#{0q9vCU{4%^OEiPTeU{?R`VO$8Y`O z%6&^_Rn$qo{f0hw;p&sKET%$QJjacf%V>4Bh%IY|JL#>WSYE5K9}zqc5oMx|OzvUQ96_Kbuh_=wvXJgT0TFsgcJ z5kjmiP%*xjDyla13vu^8ry6R8lAA4(NRGEeETfy9ILc=f6Wp_QJcTx$e1 ziC_h-dk#GZ0_Pi?vbY(Gs!JRuI3z^ZP_;7Y^Q&5(d;TJ?n6_i=DGZtg$+pWMO9PtN< z>Y|D`88YJ{r&XkhnxHP$I@NUP7H(LD_r{|)`ol%xyzYv&Dt4f!GB#Hw)_R?35myYX zJcRZl$DQ{WEcqpI%|=Qn@`|A?FT~1@=3x$)nRmL4$zZ^Gk=P6$EY0cWsFJR$#FejE zT)zykWt8F6M7oNNat5{TPdD6Pc|J*<=5oDtJT)}5)X;o9hcK*YSdqKw>2L|#f4=-` zF^p%8A*_WdXv`T>2&r`SY2a9l>g>8?zN;3xZDF_PZLfw}gE7dWqOW==SOF^NjYQn_ZJMdWv=e!rF=3 zx2eH~RmB}YMuJFVc6T5-mD=RJhJa7;Uc~)<4lSdGIH;hY5=OQ=sM}S!u>0Q?`D{@= z=_6s%qn(~<4%+3pHv0k(>B&_?<4SL(MbZ-Rnjcz zfRR%MnGk)is2^*6@k3Xc491P8qGXxsSy7`KvMFtsl6T+GYKfWfB_>1g{df4IK~v$Xid?3XFnXGqgof(BhMb8-OW z18z<<#>TfQ&jw|g<uCy1X|X<_-cO^W=mQo zrOBnBsaQyh8`hdw&h^ zD5H94>J24bQ<{WRO7zkztf)ts8@|k-az?~`bF`i!mVCJ6@*UQNI)NWUhJ|egb)MBhB%?NB>gXKA=)0|q zWtzio))(KlA>tgi2_Q#ydWye?jIm?qd0m1Xz_Ng<2ez*GmQMr_)e4hNN0NCYrzfYN zvVw{jU--B?altq>WnqqvuQHBF2&$D@D5i}`)E+nfnm)6${{Y-=ZrkHIp3+g}RP_x@)RJUYo=F;SG>a|PA1%IRTe13%ZZM@N zlCq9}f}(LO@wu9MptevHmJTd<7P&s%_Q$KHt7=L&X{qO@C6*WnGBdH*$z~fHDu8{q zzW6_bvaH8A%~L7LDH3_53-Ja=IubBPm5un>M&9Dr+wLT`YmYTOPVj4<^ zgb)b*)Cc5IzytNfWPGb8qRz7qhgX)Orh;ba&Lmc+ra};q6eNJXg4)DwZN@KXvb>zv zW*K&4l~Plzl;~iVAVS39L9*Nc3BBwudmH0hJwj%Am32}Qlr(V~SU1__djj_M8bJD- zQ}~f4j=r*Z9bTWNuvErC(ienbZOI$={y<|I)QQ$*G?a0gbfbwKO1z2`BGd)kykuKU zmc78Y^~1AMRY^{=(`LDjV@Lb3tcj{4{45B&+qgTAOjttKr1)&b&1D0DqO1$DdS6ec zXCHfFbo5hEqRSSkTn#YI7}eBKvWW)Q+xNeha@L5$Eo@M%vt`RYHsh&D7>-MOGB-bE z#k~$<%MV_brR(UyvliZ1y?Ex{hkvga1#9NHe1@hfYIcHaEb*BL3de0=*xS(U@7sFJ z%D#>YrJPKeRcT;l^P?o|du~O+JMDcZ>43GcXeufdgNZE5zSg%m?DGqrZ*A?0oU<`% zN&wTqWT#zPW~Um3wH{DhkG1f{Jw#PtO$5D2+k!a#F={Xx;GUc8Yyl?)rJ0%ZT-|#P z*TS+wk1o$5u-p-G{{V~*jz@~4Kp?Y`X)JWM{{W^lsdQZE*f}KH=NxpqTI38CL3qg6 z_S+CtYwx%`4@^|WDgzVwh$8qi?6L1+c^F=$5IJXkI(*#i_rq)Q#~~o!w;i$1$MLFK zLQ9J+>_+DdM$Ms#xYFBu;AfW7Kpls!I{`j$2AkN7XbA~20F7b2&e*G{j(Qp?sa+ac zQyX+$L1P{GRs(wvQGL1fHp-4J7Q)@n-v(3-q_Ny~7}OQ>w6BQfRLunq1awns_^8Vk z5uQe{Qpn!C@!OnAuP2~}f%7cVvYxVro>q~lSgO;hzS=+l6Tk0X_w9UYd`FYXI>|j0 zaWl8i8>lutop0aT`~LtuEnt0xi zJ$R{dXg(2X!FQ^xlc5|gR?ES=8#8PyJx(YqQim_eE266L1lfxzQwKt!k_9da)+|_- z4XcB>?QTAdxr5}{dO~QX6*D^)k$`a09m%p1Pp}<@w#GZeRQZ(EbJe635UBW0R*3v4%oK%T4}QR^AK5Mb`>h2zZId8w8`cs z#nFN{u>)=K4B|@v01;A0RZH=Ne?6g>$NJ5BRLp zW<7c=s%1i2NeYCzoiZsF+vNw;HO;NI6x zG8wflS(@iC(^6)!Q&7c7^(BNT(!@0H1A+-)E)A?kp4(p-y3DsF%kt1Fm*OhwAdjWe zoq|Tp&t{N=ZGc}W{X023TT0Yt^|cdxMMW~CQoYg0VCCsGC zGYv2`RLGREI!AtkEyEH^0ecg*k73^*CZ3uqc&#L`ofO{?8g_3osSBbpZq!7BxKvuwbX01z7F#7)oG?TW=K^d$?@&8sh`f}#lH7pm$li6ee{ zlY5d0{c&jw?LJ)6qbzE`v`=k-{nPL3j8;x*vx%wbY3bSuX!V&~5TZ>c&tRmBF*<&M zy{~%(Y}Ezo+C3EM)u)A65J>|1$mCy10DpXQc0WT|3T2{b(7di$7$t!+Ex{)J_UGFc zP=CWw(?VFeAR%ktdmjG)Y-gUS8Cq&SoYeZ#sa;#j5r&sO!zI|2hDaxDnZ;_Tpl;R4vZSKI78Sx20ooRSc%_AxY%F6zAPvjPlQ2x*l9mdZHYPwB_uG}O55_q zsq-%#_;Wh(9aSn*(q;4%G|0o^jGbA5JDvsa^gP_0QaAW@oMzFWsi>)vHuGwcqe#)O zV8sUHfw=^3dyaASxoSEU5mN}G*6Lcs+f!}8-2L%Un)r^3Dz1uIr|HwwNb$PqEXCAV z6$5)4bL>5FXvfWSFYqD05Pr+{Gx=}$N#fbFhoY6KX&^yqiq^9S zQ?{VC)B!7d8*$qoV5RXa%ah1zrG}imrW#2#h6Q*o&GPC15=Z)ZBYYDp@lH=JabD5a zL{=!GiC$R(2Wz&#lfLW+-wv_s6qyhBd6M{PX>$C%4AZsRy0Sy(=>w}x#kAdm+t?m( z_I_lkuFW8g`ZTRe9Xn38+jFQ3{{Yqn{{Yf(kBGcj)DYEDQ&S~Glb16|@kt)w*?_s! zKwW{;$R4<%t?@lWQ%tWFEHBjpDj1x|(U5ck%%a2s3BRc(*C66qjNVh0<#4l0h~C+Y922a`6<@ z@S1qk!2KzO^tD7x#_u6NCgp8=@_FD}_=3H%>Uw%}6&8}hM2Wo0MavDjYZkrDiLl$8 zR;*^z;3(x-DWsN;oyS*HfSaziu_L$1ALKppl+Eaz)0(t~s?9`|5NlV&w*$4n?~9z~pwwp)R-C;l*vvIK1QVqOgjFNd?%v>U!QX#^-WWMHK_+Eb zy0aY4PQ1-~ohJH4{`dRhwMnaQ1Y}ehJIhT&P8C%|YbKrK(rnDf)SLa3V&6TRL^498 zs`SfDRPL$hJ=p9%_;#8xN~J;#1AFprah=WTq*>coKzgBxJQw}NKFS88^cXeM3R6-% zhMy%+LbJ6+WQuL1jr6bm#YeCkdwN{G>Ykoz5ES)1vG9!ye0?s!5J#>apre#G;xmP+h#W>>fYG3%V~rRWMmQaz=|Z*dm!WPf3`De#WZA7{{WLL^h6T!!BG(^ zw%nB<+wKV;d|c5|K?Fsq^)FBZU~Im-F9QEEz~6?S&{lE^0X0bwL{-I@@-& zyAB86^2KzCQPbNERGY~f$)LBTzctT@5{2nsj)VK?gyyu{QnQG1}@rx~z~HBAEux zz4zeyk8B94Rn^lJk1?g4RkrwuS5l9t8-ed{%N8_-lBmYeNF`Ivjm9}cSj}pBfFh{1 z^qv@cgWvg#0!j!)Z^gnyQD(;Hyu4SN>t>4|Fr^dHO&MmZG)$gl@{V5m1{ zw&#pEoj?@=mn=Bk+~buL>ntQPtDzocBKOCNj&>I!!yRuZB#YnE8e|GeDmqeRhMEYQ zgP{VG`C@}RQYa-cjar(nJ9FkLZv77B4%2Oc|UY805JUl zKDv%K1&^86)5+nQtg@n=qnj<9ii&d}TPu_b%FW0Ot-0TD81UETYe`8-qP~Jg6ulWb zDggw!;?tlD|l5PRO> z+fc-tFWNxK}%5t~39q~g`lGNw0Rc6$V;!!8V(L)>~MMP_RozB}Y2VtahjWdkrh*dL; z=_{$^fK=62^inwFP$Sl$Dvw<^vmOB^*WVM%7Ho&a)VWy}rKXg%L`G8?l!dg3u^ww6 zAYXfdy~Yn;Q!OLW%adgjP*Ky7aQr` z``dd(p2sB&8KnV+M5BqBBaRZTvAD6m$8bRe4T00Yt}Jd=x@x4RD?$~SA`J_&rl2B| zWZS*XhTew_Wzw}XQe~{oP|S@DT#wk?k$ZPC@}CBiw-vWTkVfi(?q6> zGMADlufMSVdz>8?X>SAo^gs*0m4r3W9fNbK*FVo5(IjjkhH{-XEh~|GvHt*M{#XcWr2JIj{QbZq`T>W!Y-ZHLF;DY9W@Fm^*l;Rp55rJRQv`(8%zeFSI%;by0%KHJk24Bo*MaDHj-G;!r2*%s-2UmsH5Y+AQCF8lza33NI*lk6U{g^)Dvv1G-s5rYjYceHv-wiG zin!6`bu&xQQ0?&YqEc*0OC36ixZLgE&|;T68ND*hi48hZ7*aK8mGrRlaPn#d4adxE zcN}ARKY@Hf6*Wx|ucVkN1=BEIpXr0PIw4xy4j|7i^}gl7^`usx=M+QhakLR=>>lTXAw0_uIX%i)_+Y z%c^O<5scGy0{lvnP%LbAQb{%e*8AAlf^j0$64T}R!@H$B$m-CTh;P6fivV+Ydp`CmTT%O;=8c>m_=kJY!U@3s{946L47E zcO$UA7SA)}$`YqFpQ%<>R+V95I(H_+Q2^>YC?C2l>wF11IKOT9s-Gr`HkO)-b)KSU zBuP89!X@pp>D1Qx_s86kRy9z7C<4|8jC`B?1j{O9p{emUV{WZ%jOlytbGwhPADM;UBgQZ+j3V0X3mx9fo6iRub6p<))-01<%-gbc@0 zl20YK0|b;aScf3?+Y3iEL(EcG%wRQx5wm(8aV&C5-jXUt9(f5i3ODfNQHH7*VSQiP7kSHSC>gy5bD%Svc`2Rf%KJYaxJ&7 zH^Hb_OFGk3T+Ws^4o0s==MA(mh1SidNWYu=;A={g$sI&tjFAzgfUqOd{l+W{MprLj zq$nHXz_DHLZr-?=1TDcAzZmzQQtm%2RwXr6ik1e)>4Py17zi(Mef!{50eVK`z6upq zHBdO`dyHejx>iE=WEK~($0k;lRE8jl0UpPU5@>*%P0s2Yk4xZnWubnk0It{eu?F~X z8>hcfmF=ur;D3BK4T}$vFDQWlGbHA?#c(IG&Px~N&87gTa{ES zkq(VKaA~M44(3K+#Iq??umpv+`|!7kvU;4>I=E^w`ROEy%=EEHZ8E{D%-fwjdXswr zZumn&YqI>-kmqzYQoS0^8ma~P;ky@CBmFnHA5qxh>M7bOCZvGVB~w&q`Nt4%zpsJygGL2769$|l#tal!&ZE$|K#p22}h6qRz zUiRYtzm_r-al=bZnbqcVEY*RdNgWiDk)1Y;Z@Ji?sW`exY9y(SR!4!SD6bne^o<1R z+iTsA<$~6t6iGZ)8C-0O(^%bEufeyc+XbhbQnq1HB#dbh{IS^TB!#_++Qji~x4>)N zrOM)$LrX0BLdSa|n;V1N4sZEkXx==(C74L>Gb)i95JPJt(XK!puX_vya}*TxR0E|J zq>Z&SdbMdh?WpZ+Sj08kk+$Oaprxy3T1vw_4=kw6B7oewF&4GYZM@uWco=Squ^^gc zG~sLvlC*y)W5VS-o2)5jFVqQZa8mg)#* z-un@<-1&&#d_7F{)KMwcu~Ve2QBu!kAT7?K2ExRRE4ka~F-C0$s-BA~qKEc_%TV!D z6>v!DrLGltw&V@C9P%-X&1)y|mx^g}8X9&?zG|PvlSavJAiOAvYjk<0PZlpV>81NtO=^B zeH;3R>Y7wz>);4N_Yd`71YwpS5)(e^iv`j(TVd&Z@C_ew%)itV(gh@ zt*c21x2^5A*qlffk~oBHsE7rC;9`W0Z5$PA(0Gc(eo}`?Ut1s3448oy1;D<-`0VQD zJ++M^j&T#F!ZWD-uq0|wstD1DB=Apc0LI5fxf@*n0DO9(pn(jMH$_3U-1GkcoC%g% zh;O|-d=Y;+A704_m#Qw$Oyk=(dDDlVo!VS+Sub!Zt^;fL`#1-~J%{LUo>98~cY zh$@_x8xBt{|njz}B;Er%5j8cv#m^K~BAI-9;6r9iHA7UXx^`Qi$SkE+_Q z+}nH>0=-fZLf>+4hQMUC*J}~)-vevvQOLdsY_XCpesL1I_rBoqd><07MN**N#ZAqR zI3QJM@6WaaGOz$Hn*)9K!4p!&a5?O8j|Qn~qoS!uAnF#k@nUmmG+=@n@t@AvgOA4y zR2w(m#2k2_frAlf*@z?4-{^3sB04HjTE!d@8NX{@-=-Q!x(r@6C-{Ipu(L)a%jv&# z>Q)4P>Gs3aa)$+8%PJo*{zQ8mST!|OaI$Pgt`D{(#P4I<5K+;T?hJ0%upcf7AQoT` zJ@CYgJwenmkayU3wg`+G=GVuRT-)=w$B|YyAPWXJB>LgRmBHYP5y2Z^RvM3(x7!6F zbdsk1js+Vd$iZY*3Ur$r@80->rtB|>gnH<}|8BEYrLzYxmTl2mmR>}wkf$iL!X`FoWo59{8qNEVeP2tlLTHh0w^&U@FcLZFYp~R`Y zADl$%S0-ha$02Jmr^^>#n2$Bso)5Od`1%)2k>B4QNKT>%1OsqwwXht=%5#74>N?tL zidwwZwz9gN1e7fLbX#qeZDGB^QDI`Y9Ah9L&vFXr>f(SsOFER@zv5JE8E^jpFmOlB z*oL_{`_5rR)AZ$ygmb{!k^2$dPq81+_Qe;9vVkoe%ethk)`~?sTAp#k1IP?^K9@eb zFk>B(c#kB`b15avsf8YHv8$>XTqRNgabOL#?rnRK*q!llmexsCn3}4(+3DzFZ8UPf zl%em}+>4!nxECJh8GjJ?bY_rL=5!Lx)-=MVN^_^F9HVn0u(tmIA-^m;o(froeP&Yh zk6%kqT}M$7{CM8b)HcimuAl)Sw^OleTGuzRZa1-bmQ$Bj=FtR_nHtGQ0{$z8uvsHN zy{U<|->4%6s%pH}mWnFTNFJ#MiD8hQxBwC@YXCRDuO0D}pv>~|nYqnts`BTia4Dj! zanz&?2c1Cx$r=2=d{CAX)b8x4l!;I-9BNerRPl2j1R(IljFZ*3|_-sFp(_crg0 zy*%S8%qe1~=w=NIUY9VOv5F+pZxKO#G7X6UT=H#$LtkB(#ZtzRpvhu)c`D(U8EfSy z%cR&F18ZBj7ULJH_Bop8Rh3zFJq0j@8kg|hM3*JNvD_OAZ*zTyqp=$$o_K<4h^B}; zsxkvmLTM$n0;r|7wTAcSQuo-^By}@KG?R%bXeB{SPX#)Mkge_`P01y#=4%`2+h9&B zg%)Bf=gjA%%$&t9;(1g@PJw-0m3o?NHCTUkMr}5kl}I%!PnOFS8nO7TGOD|%u+WFo zfu_KZEzcO8ZetEtSp@ZP6`E-ur%hCRwC|*8z5abG+VU0&w8g!L#p& z%2JOdj+qgvBv-7g8lFZ3u?UTADh-W^1J|5prmw7eS!7zc>Z3I4*J^-IO_+dMz*vxP zVRLTQCkaPMPfTcYoZgt!Qrbo^s@bNs?Y9aw5H{FbgWfa~MN^ffO+;={WLH?w^u*eH zzED4g%B${JpG;U6{uatBbI%x2trD@Ml2+3chz68ZP}49Q3!T8zgbF<|hW`KtGHGe@sWaThoJU<;{{V&x+ouQsDi8G73wr^L>37x?U*8zG>EjZ4 z1TnmmHi*z&nD!mc6Ux!%FPYRU10l31!o?G|-lvoKcEZ(e*^Xi;H7SB0HBR3%au9xC zpSP|pR=@y$UvAjTcq6#6Awf3p+Y1Wlm6n{#A63cHq}Y+_2YfKkWsU(M`Ui2I?>j2|;6FbA@FOC2S}ODFC}MjkUJOm))Dt1Az1< zS9+<3R(9A0J1G7Uf9Ky40pMntTBI2yDs<`H6WDwE^Yr5kC5vfb&9^q>;&LRWln9AN zwT10~LjwrOsCQ{NK6?+yTM|gir$V&7HNN26j1m`;M$m7djhgnp2GO8P^pFNSi(rH= z?jS#GNXsqb7h=VI`N1jUK-$9C`r-iHcLw(EEs0aer?Ii^Y%~q2jmX=Rz6b^V_P~<& zYpu8BVnpfWk?uQSN~*a$mKL)RFX@6W$)Fw&CjiV8bfaNoVh{ds!kew#YykQUW;IDv zp;-)}kCcEx@4gKf53CXyZ^u2bIovc4BAtNMj{~M|svSbWvaf!3AMbog8066$bmrxH zmW_$*56kt#(#NbT!obMC{{XP=rvRr5QBNY9Ix`+VxBGL6(X^2=#W`X>b^U#hzw^WN z8dru|TRCM9bt3j4_Zx6=*x~{+7&{Gx`TAfrD8agsrm_D3F>mu*xc3-gSzZAwCsMH6 zd@wk^LuMfHYxc)jo05FT9*ntFB!F-FU{z*KBco#11ds<9i1yeJLXn8XgZ^RjbAMb+ z*pLPH+X7(0_PHQo!0W51HXsj7Nl0WIgYAxahyxucpz7alZ`%f>n2T5fJ#obx9VCoP zPn3^bb5Q^;k?DmaA+lIsayJ8kiQF=aZSRh;IyM6SnB}ZC+wF%j2H=7~y}7Xd*yM<< z8AnjjxUs(kTZ~MzF4nmR(;Q;NSnx4K$<3AYA`sItj!J1BC2JPEE(ugU$i0+$TKM^7 z`7Lcd4LC5YFjGl-m@Wu(e=#Zzz&5h)u_JpM;5>rw9Q~`^=n5;jGP$+)J{{Wsd zInP3`ERt9iiH0crw)w)HzN7IF{jkPwO#W$;MN#4LQqs%tb5ad)NWq$&qHV&l1fQJP z0;g+S@rCMqAz78vNR*YW6qA@bG}0+uW!;nl6@b(L1e;uMzSs;oh>tp?%j9F2E@363 zTZKh=Be4LDfd$l`-XG6a)m0KY%x7Ah&V03HAOWJ0QNvo?_wTtQu;FGh)fq2|=_IYn zpm>=hmN8Oc)p?!D=(%&{V}F@QI~$%ZrDYe2B9=gqa!QZqe?kUYx7hxv&OGaZL^TXF7i{{Zcbo;mY1sms}mgYeKpHi-3f{%snptL}H^{e~el z*^G5@W*MZCR1pyoC&skV$94f!XpQb}cjJ3;gfY@(iIV=V#DC#q^Zm1%_$+S%&H?T z9V8MEt8lstboDvd9k%*&iu9ps3R)VjyHc#HJgl~`M+_GG9a~>*N1cGbD=L2$oY`|1 z%cprGSfEJc5)e9JQsH*u*ZZ~hzBb?CkB48xncOWTVmz`C5f}G_G4?)%iQj(b&|;p8 zDy`4+I(lkpP>DdTaAZA-OiXn*wgu>^c1#;arn1@cvZ=1sqGJC9^m;F5SuZ z#(b~iUNe=HP{$oONZ17*Ex5O)63%KQ5+w~Auf@o>x!gpY7eCNzYH{`h5ogW1FlJj*c2CWriI`a!V6-VtFL@B;l<9 z0B^Y-n`4fu04Ddp0|E!DG=MSEgf5bM+W!F85gdRQNGd&d#1P1*N{gZ3`rDL1t@ygWCdE(JBh^^#VzzF@jx5(xZKWTD6s(i!p!Oh(*U9*V9W^Bc?mR**BQxY6*T0(!I{&>u59gQ1HL~f$S z+w5`D!kV%zMCg!MA47lTzC0b)CyYkUz<@Wm`}M~u!h4 z^gr+48f12nshLECv_yZHe|Omb0DN|63=GpiJgjv*V|)9Lf9Gs=2}MGdMFb1#3^xbR z;57|XPRj7dt|7B1#|zVfgRf6_NAoZT zW9~iiH82&_BOi!PpckL6FM%p>I*iU3$~M$@+uP7!;agU#1F+=aXv(Svh9cgVKi>h? zDovJI6e;sB$^QVHT8xcrYo);K1|~|}k@7x%9U9fE_U3!aYtdlBdPUuaH!sU<(1J{06wO`yKIx z@ZegEx~s1GYGjs3W-z*Tq>ZG*QT7rzFcH*1Bm@57ed3=Z(3x zD5=7V>*mNK%d<$?lC4~6M=VGe{oO$DcDV0+Y6{B9B4&ARUuk+(RLWx12b@ZuBLmnH zh&JDl2(~Wrsg}N$fJFn)Jaw|tPN;tn8Bn$L@2O3a&B?eo7^<#{JdYr#jcL{5qpomd zMzMIBO-b8tGJ$b$H^crIhH0BL*F1pJQq#z=GvaJBY58I~*>M_XBBaEvM;q@Jt<}_zepp~?vKfY7mg&qV%xg1YRW&ux z!wkhm)vmgj9e`1CZF_dLf-9CS7gI6JGI`~IQApIwSvV0R4K`z~iPUa((mtHyL*jZW z>YT(1+~Ha|I+1_)A>zzYko0nK~7|Lt*SsOWKb+k#7q1m`IFrJ1|E-1^bv9EibGqPRZ6CdERqy& z`PEIJ526F8{Rm&KEa?_VsnsTw%P)5-7U%88GS&?+xnQIN+YqB=B1Yo!5%sp%jb%(Q zK-0J?K-otm`VVuDP{h&GAeJy$foHd7JD=AXoRJNhQc!p9Ftv4DS#(lJ>hd$2A}5)g z`T>s`g6v|;k~ed3^Dw$6xB8E;``ZMhpoSSttXf)v4ds2w^&Z36V_1o0w3D>0Q&{?4 z{{ZFf^%wrb^~JTzY!=6z&Ia+7od~fuKb8xmf^2(WkyIriJj62_+hKfo>K zQU;w@w)o_N_TPcHzBOPgGCqUN$-fvACZr6Yt6PJHrb6lzF;G9OT!qKrdmvuqT6qcw;QVPn-K- zwCJKwC^tOVVl?TYTc{8gu{Q7Se@qcN z8BV)&@3S7;cf)O^=@D6fdvkjpaDzxAnc3M{ETw@rw>b2IYHEFGtYXv|kxrt5;Q4(= zx8>=I1Cg;c4Nq3L4uC2CJ74wx0AmG;QA;3(W+pb-CG_-G_xJDh<_i*4L?uTOM!*#y z@!sPcrPL%8)xW#S{ z`1iu4Anq|Xk;=uts z?}1GdGHHrllV4}kaz2;Z{{WsM84*jd09(G;EJfJ^l_`D!!vZ7~KnX2vuiXAvt*moh zRA^C%fdZM>Y)$x2xZL|&*A`MEIRHpSxwi)tdDy7SDeG(L>nY)lywBB(Rhwl59YWo? zz9g>9>CHs5*FjXVG>!1FYc`Lhx9VTg=T`l!xTf(5hMOyrkZYr;Ea&0bbwMJ4OER7T z(odzy7aQLeo*1C0k*`+O0+p#kLXr?0kV}97D|2J(>x!)6vYwhlHgck(hcJ_-vY7R- zfjrDgsK1)Sa4ljlYhzGV4sR-C)Ge20kkq9uepu+r-ee30q|!k=u_J!uZQP5)J}62m z>SoSZg`SwvPb;_%`hHd;h8+31BG(rJ=y>jO+2t)VS3>z*A||9W5Xu#c=xsvxj1Zvm zZE>*18#B%;A_9&|Q53YY7`i<$$nq)DNZXR3K?j@P8^=9Tr-1dy~$K?G|S zZ@%i->j=O2l1A~Fo;V7&vVU}o-2GSUkDmA&#IKiRa8lMHd6!Ha?j~u}MLhQR`BroUP8*ajW^U##@(JT+VuWe9~H~yqm2gb#_vK6K04D0`}hI zckPN?##-9^vX&HrNNJLgh1J%SkQGPDs8oJu>M^IEI-zBl$5JPB6w~Q}Or$V2U_xJj zxJIkQbw&z&yDiEpC7IG#6H^2lyIgL<*5HBm!>Ygy8&OnKOzBpru*s~O(xdL5F}q5~ zj!ye+jCN61Ne*?GQ^}VKipiXc94s0}{8l3O7t~L%@jSV2TrR%#o#)Njwi> z#udro6)ud*t4T(5Qy?2N0b<{6!2A1P)5$Jq<|=7gIwd7!ojz#~1yJ@Lt@a+HGp9uJ zEY6x5gG(HZHCeNCqD^c*qlNmC1_J*8wJR(Dr=g6Cwz6c9`&d{5?{kM~XkesO6v`t} z`=i&?o=HBZ5|>PD?Chwjq_ds?^}(8mMVH4(A*rdVlA=ib-C5XKcI-A)+WUcjd`R`P zO(mV+%h+%Yo_|kpzp3^djpLU!9Y<@^p#~V(?J52y{{T;*`*tqNE!!*U0F9T#Jb zA&F5CBxnFtQD6on31jjQJ#jtm8*Q=4KvJx2&!#j2eJ;Vly}j|l*GoAq z&m*=xMUCzN#o12CpcN;5@d|KARq+uem^`hP;NNB_QLXpE};oK>;dBi;YSkbD-xiQ#f}OiEK7~Az`&DS zWUFq>cQ)Vo@`?e;du)Qn1vsm?SfO>$W6e%t~F7( z^=YtBr?B?KNF#gS{W$WSw)fiI@HS@DECv0$; z*cJ8dgUAMg$B+g&`0~|NMNFZY%8QYHFML3g1uU|y-V!&{`-a^8KbO;nUCIFGbvp}k zF$XLan@5#}qyy8}8l1CJ5XhtADD8ILqbJKC_Vhmg0H3oo^1)XNM#@iTjmGQgfA56p zfuyEc70XlU1geYZ_a39${{UEMQ^i#p)IlzpNV-gxJAYB_{{XyfIj%|+B69LmZKgxH zPiF6Lf6vzuhBt~`bUFetypZ0?*Y3WDzoGqc<*aDmpEb{2TQ8yj2Rwe8d|RJdd^jokf?X{{V>@y_g-x*8c#{{{VOs zymd+*Fw0WBZDwC$4{S@~UKUiTL{=m!z5J|yq4ve_=+mr)b;d$^@n#-}5{g8S0dFui zV0jAChe#V<_^u{%vn$hwD`HWmc>gWC$dP?6WJ z)iLShL<58W0Mrxwuv&&^jn$*L7P_l$M{)knA@Q`)wv(zQ8(rgNA8U&oQS3jTYi<2L*a9RF z&SQxtYY#gglzq=9^Tmkdj*S^vO@j+xRgJxlGTGFWxr}PlvdH~YrV>S?3*3YI+#lud zqDi43tbTUyq+Z{AW_)HNd4ZOgNfc3oB!x9JVU4Z@u1_}ivBj1RH(66cAX+@ELS$lL zD^36bh`G5N1Eo*CDRXljZBph@Xr`#72~W~<@~~^L_W+c+<4HKO%IfL**+m2pNfdD- zxF#o0Fd9Jf0oj=1hr}&OEm=y*Ridht%;?Q#NQ|o)Vcb|Od;b8{hD6Qyu7w{lmb!|V zUX`M#NKgRD9;WKX!q%{3ZSQLi+*W7a52Vg=%**yv(zSgBM^z(zouMc%86U=^HLuS9 z0BfAp=gRZyy1J*ng<4vWi~j)RM%t5GAL1%F`}R1WhVxTQuxC-D)#{2UYSzTHhM=#0 z?QJAqkk%)RX^Rw|8>ozUWahD_#mh=W8LbkNc2azkN8MkABzM2w=faWX)jcs;TVBvk z2g8WvFBo+;3DXxvS|x& z*VrGf9*!K+k0(lzQAbRa^On&aD?Eg~>;>C%=i1|whq6g(ppXWpmFzdv9-;#LFs6Q)-%qYg0jOF^1<+ z=Jw}N;@b=J3Kp7K8!x1&4>&rjD$c|)+RDDWThM!(j0oGHos%r20y;>>iP#$p58PjW zQ|az@w2m}}G>H`wFf0^sJvPN`4MvAV6NHMHh?2+3cH9>A-sj&EIjYqwN0-KH5AmV2 zL;n5`+UMI8yc3mj$4wtrNqTXn>`uVp2;-A5aXmsw6)@c?+yGzEoBA*3zQD22wDYA+ zW32Kayl6H^kFf52&)V0+#2sW10Ota5-}gWw*5d?)w>(&KF&#^!d2N0$NWjt#z~G&i zWVMEod-wFfXEq^C$o2HWwW|*;o9T{iZI_;Q#;nkayODDdxZ`n%GqAnlV&0eM5;7D5 z$miC}h;?q~@Yq|_Y;a0m^Q#XofXCYtwVzRT``|{ZJyvCJvYd4%MtdDV+xSSo=ZXZS zTfUH30yf-&59f~}7*k4nbfYIzF+7raz>rNOu{+Yas9FA%f!Z_hs_rHq2qq`^giFq27*SW zkzuK`hHE6Ar0@@+{&*|X-eV*U(v#Os!+R0m9T|v;pv-B?l@cR)T^(#x`Ve?H6kS>X zY+9n6AFHRg`iJZF#3~{(Rdphe(^dg(R@ANsuc-Wp!6U3gD1vYJdVnvdv-^YGez<7F z3%zu84bx?ie9CzrTn?;-rcw&sn@aDt_<)qN zfhD4x4X?rVx2VBHsU_l(Hy<((2tV9m0mn!hJ5M2#+SVVJ{_r%*C}TRl79)REx&3f8 zf}Nz0z>dCsEoq7a>%sn*E7Q3bSsj1>06QP%F(cH}^zbQIA&ww-AruRnVS0$;BTzvh z?4`Ci0t$ePy;(2WwFCbE@xh@5=>&BLs7SFaEvxdy;;0Z*s&yioWO)#VD2ws~*n0l} z=Lyd&(@yq`rn#eEG36A3O}?x#V+AZ4K!JKngsUnoum11ODxxLprV&`AQpN~la6=Kt z>59P+&LmoVz`(!;N;1(&`>NpT0RI5={SGpoD>-dsd26hbtdt!wE|sy8G68KTg31n} zJukL2*~|3vg@#oHCFv@VY)75HnAATkW#r7Mj%JTv3~=SO(gr6{D;e_uNwCs&Tpvpd z6TUO8VDz+dQs-4!ZfvO~9c3PvYZr+M8>g+D0)70T?~LDsGI?OlDrobDmMSX6mXQ^% zh$pyZxB|)uB!GRb=r3t$>Q^XgD#@mrf|7gCO&KAh(nBC`a=$6#f2J(+8VT#9t;(vj zxUHv2>E~U9(ns7|xm`CN*nO6ALGp)!MVe@g*=}JFRzSL*nx$^)+}^>paeevkeGsUE zXQzT{9<*{EtThO1@aqAFpM62b#Btw@DNj05($AGtRTi0o)=_NIe4o@1jz4YmD2X} z3lPo7^AJg}ARJm{GR;WcYRU}SQ5ioA140|3zVCfHh`!|PHo>U1Y4IIKYZWKOQAJf) zx0FVV#+Dtf748N7?YSe3tn~&#B{Y%clo^Fu(#CaE$TTTpe{>a4bspyX1N60zhbXEV zqI}xEG)d}>(jmExJqi9Jwe9E!Yn!-ZSkx?N0`frPoLW`1*%nt!vBs3B`YofZOoeUf zsFE>ev5|kL0C9*()CsEM#E;7!exM|?Se^y3YDtvoBHIto1B|neGjZxIi49sn)JYrj zi4x|+Nat)8ltBDm0Uu0Em1QFKBX4nz68vc!@JAyMkV#={YJ9b#@rpFYx9`oFjvXi#>8IAWWKm*^LafHDbj^g@3#9~%0atH^p zJRA}vM^H*ewbDkz5|NyZfNyJJVM$SaDsSH&DJG@!sUx>zhY%s9jhxEFt8l-=wml0x za$8R1UchmQ$|N%Hqxy_OG98G&m~C=#oREtclH~Gl`eGHXZV?l6`3w*>n%V{MG`mPx z$K|%d++k33Hi<`jet6}td$B&)nbJ@nmuxQ~(AEcj-F{n9P$aC10iV#-3>u(`ePzLL@dVpX~J!zC4ZgkQGz z$3G2k%K&bso1iA&yX*JB1>^=wLIYmzr)&QJV}=<{opCm$9IgKV-uR0td(TXK<7ZQ~ z{{ZuiV)@0VhCE0jar@&wxi}KJ^S0=^T!=ynO0R|B^CjPBiR1{V}eCC zmI*mjW3sjUt@QWyKdv?fnh2*&4nqUSud%|l6zb9ZEm#u3!~}D2LH8qr=tuLxolG(b zY5xEcGxJ72nEu#d9tq%L2Bd9`{{WWwXfBI27LA&s5wRn8QS1J%=k>&j($&Ts>6IAj z1Rg!X>~ZA}NWn$qfcGZlKe)taq*rrQM=Hf53)~x{{YQVVIJDrtdUN=M$q^qtw_m9K zxa5%~)!<|1+^FHtuh-ulr>Ii>Db&X`zEW-*=zHU@6T>lhEX!{+L~VanJ&)*puv7!a zlg37tRvoWqQ~fY0mSs>UH@C?k*pILK{IJt$meRyRu-f+A9^m3*Ov@y5DHmH5zaZk2 zSX3oEz$~`f-0na7H7i=s{=@ZRG;sdw+ZZL^0+D|9 zJp1E0G?X$JA*h4?6=cy?t`4QuvAFE5VAuNk;{O0R5hOJAYDz4Sm0K zr^{$2G?VH&s$nW*3N;qk`MVxSvD<-+HVq{h%B$Zls3L5(vM`YucOZ?lG4FLC1MO@= zDjLZ0>GGmvwJU0(nk||zyQ-i2O@Z&YKIEm3F@{FVvs4qo3!M`a^RFNg&BB)ahjEMQ zNQE@*63HZ&iFbZYiRAY-wkg3?<=J>IOlr(E9T^6bqQcBI1_1G6u=K>}BaRHjvmpyk zT~klZD-*J)?_~r1gM!1>l1BI@ZmeX+O9P=mV_@F99tQsaOh1!H5;JuatymUqcH91* z+IZvdi%@iQ(^OWPy7<*(O`?b!g&wSXw?9tZ$+4?p)9C5l_S?|&i8a&^b|A<7@SPHjrO+~g5Otf&iEpzaDOjM9i(O|(Xb>1vELm-)r}aE4TZtP zb_i0$_BY2>mq_iuesNCHNQ4t>5O}c1nS93F@s8{^?SYm7$xfuMmo&He#eg3h}U2&q~Gs@Q_Rk%S%1S9CvMpA9Ypz>&EEK%nJg?64(8ZiV=;Sb z3ZwW&BqvDRYLT>$Y)MUre^Y*O=-Ha&y0yIr806%TG`i|1)0{iU0m%ln2h1#W3_v?5 zEL4&>w|sI^=TI&H1HRYCl{BC&DJ1dV?Zz|og)DM88oTqoh&b$!1*U$LmO9YI)VL*y=x? z3~$rYH4wZT^ZDV`Qj#&#u+*oEj&LrPl24}hCilU$9Uu~Kh@mB|<@W&K#Vd$540!Lp zCXI48Tt-A7FPh!|0P%>%H@Fwye_SytYMh6#BsI3dCA*^{ld)Ukb#Vqz>O?!8|nS9Mr~?gsZpqny9WAt z94N~1k|qsP3boeDcTfKSsD8g(G(*wFGy>56Bv<(u*ssv{`{R+ulHKX7jy59Oea0ai zl8A(m9<*2Bn-TOq{`e|{sF2AUGD-!tDcpMz{qXi(r9NlaeX)bhy9F1wN)&EZSfIyx6Y&g0OUVkt~1gQm}+%H zGI@aA8)hE=0Qne>x#{lY8i;|~-#Y&Qf9LhY_-O>Uy6Z_kSZg$ zdj}uT{-1nEK(W-QsHc@dBH_CqV~)n_ET$*Ca<6afdyEMdDHzL7DT;63R_=e)zt@}= zGOofol*b_4Z~B9WlsMF*%r9Zv0ERbZIw}by-^`%cAEmK1U&YkQu0Ywq+~bCsLtZ%w zEw>wi_1KJ8wD4N3L@d$iw|L3^xL&3@lB^!EMu(D-fNkk=PA2^&O);~~&$^K-TmJyH z@D!$jY7wQDM`Z=P&Pu7U;^+0n+(9ZlG$2f5_+)Lwhf}z}C)4Tw0IV#iu0>R+G|d@C z1uktNx{tMo=Z3Co>1rdCTt{?_cQ+nZ_UH7#DVlofc}hkj+sZHUuol1C*8K5s6?TqU zA)zwap>`1s$RkTxkLhor!E%^a;-||I3MvrTW|VW{{W^eYH6UBrkcG_1Z3&B zJP>|U_B(yf7iw8)sszkBnwf~RZ^rBT1M9XkgylgRKMv~x2FK^xhpSP|Hza$V(BMZ}2($quLhIr;c6&Dg3~<%E#9eAb=N>Y(W49 z#E^N!+%~~>^*Eq$Y*Cbs*1*^(Dl87zn|WI0ha2Oh17HUpm~&DnilE&=2evxeRe%d( zeX+@Ja8wh&Y;Y@B75wmYonRO+1OPb)j0Hf{W4K}kz~;l>1Y6vYY~E>>wy@{IAUzXo8PeX!So`)k^pVHwj{(PYR==QwvYzr9%%F-8?YXW z$n?i!0!=bK{HMwfVStRtsxB{ncjp~bWd_$6jD!G9$vlg8$F&V09(&@U)1)A^uYj}Z za6q^_SYmSDK+~rKHUow2jx+_(3}P zN~;hF?Q8bL0~2s-_$>S}LlFSruxS81@2dc~8`S>HR;J4DfX2*93uA za?ziaul$ZJSYc5mQ#CBQSocsY-K@jE^TcA1Nh?EA8VS&a4!t%@UQW3R2rh2bBFsY(_Ghwc5XiKOm;{7Quv*@5z$S;|fz zrV_~^D%-8i@RY1;DdkvhVp49$ZB{#h?a00hQz3eVrCpLxOEC2G`k&}=Dmz6yu_5OI01}JIr=!GIEia#=dZ~pIqG~X2*RZ0P+QV2VZVE6iPe%PEKPb8GYf5YEW zZT@1D$J6=kf+{RxN>{f{!7<$S?!RmPxUp$0<=&cTAg1gtdz zM!;@C{H=$815nMHPP5m%p9nw8qz1~?;hx-|^qs!=dFrVt)mVdW+l&~It4@Lx>`!6&;1ec}nnLQKTXY}1Ju$_eS&o?~ z)(4$y57Z`(D{{V)f{0od-C#$6k5r{WClY4$x^csk>5D%rX2~dd@nB4y8wS~qQ zB;TFSYhyRGgE9hiHMzbx#^AHxNIPwgFk6KLlkc`9;jY`*4hOHkB||r1u{P`o++(2# zI-5}#i^c=`-`@pPI>pWQ!hwm&W=3leeK^76)xohoxZ=VAVzvdjIGlF5J@H9ZB|KzQ z2j;^60MiP>2C2g?#P=SUdZCHZMeYTN`r@(3XPrRY5Pz;I5)sH^U}=w0T<*8n4{z;; zrC~e;3i00igZ#n5P_Ck8ipeGX!2GTM0H1tJ%C#)rH)v{OJA=U<b60*Zr7)Ku?2HNM)+hh4+ zVXCRFS-SD|zsx^NAJgxKA=JnLdU*pVJI3$)y*`+e7^eJHEgZmo58tsE1T#ZWHK8Ha zz>%mjpF%&O#Hu6#8E1?I?Be6|^v0kOB@+dTqCb?}J+>#-{ETv_?Y=u2$d_osx^fd&A5ZOrl$AE4_>@!YOMjHy59&Uj zrXA~a<1ICi4b9Hqo)%FPFHu2?V!QhN{c&HOR=q56$1|%&?P&`9#eIi!z}wdr;&xV# zL)CS9eP6_hxB#gBR{m!bl6I=6O09i3P~0q=89h|`eLZlb@YU8jq=9Lnzfu)8EKk2+ zeYgJ2(!&H({97SyUcNyZX+j=_x^Y#9Dfey_mWd{e#h7S_r+%`Qm2nhDIhG`Jd!T1 z2in|!TpUxzt{oylq;Iz8>+5U&xCg~5RJTo7=vz2mKlU(sIZ37l#H;y%+->QLF)!Xk>f%b6%vzZp zP0`egskN{A;I{x0e?f_&DY5Tu?~FpDql+_&g(#j%bwIr`%7uwN&gR3{d`U7`UMHSO z*{WDrPM%g@%NLHK*1fNR2-5ww7;!QgY*WzYg=CI8i6nL@G`o@N0l%fa>@jDWCUGO9 zER^iZr^#}+zrD@Aw#Brxkk21VSe1vrKU?79o+VW#H747hahyseT_!MOs6lTk^|uXe z!QXxR;fiV+qcTs{Xsr6)@2H<{*tH6v01-lt*5eSm?214)*kUhD4!hlkj^O%Y8re>S z(go~q=rC{qxxLRA43PpDf#z+2KieDJPPC=$3}W}N+X1YFBwnLPvC5?M*bWc%9@y|| zl1kYWTEVaVG3cqnzP2Vy?g>0!(00M7YGOo7c(h1V7qPg%*AtkrOI#^D9&sk$fB^Tz zw!V^A55R~AN`^MR+u{lggxnA>-?;U`nL#4p8*aDlf!I3jaxK0isLTig!rxQIC)5f6 zQZH+fe%OI+jm^TIFdCV1c~V^Qs4{@X{BFy{0UgHY5C z!?C^%2`qU(-vDP~tOd6|m@Fqa>A)H{7g>4PcLU{78mb}PF9 z+V1( zrz6Vf7!9m&yp@q@W$MMnt*Y29NYvI4#8{G#q>w+B7J`x5wAD=@nLx2tHw%66#W;+% zp*k~K#QR{-x}xa1GhXD91@ISDQdsoryQP_1)6o9_d<~tCQM8ba<&<(SZrJ0qD-9(; z2EycV>5n^H0<1sPw`^0fT#uy;4Ff-t)&-9C{`iuIsft99{vC+D>{xxc!ZOn|@(!yW znB7!tKD_UTDf)&cRlV+c1m7CBmT+WIPe>BL=^Xmtlv0(4r5as;+@1y%sCfeEWdQpg zG1@6(g)XPdZNY2rf9HzT2Un6QnU3P$t_d49otSI4+Y2p9+}&E_@neETF%sMY1;75; z#%0#9+LqnlU^`!&7f@Kq4Y#@Ngw|U;gpyG3EOzzBl68Boi8dVRIFXp@W0e6OamJuA zC6i_VSa3GNblo_kDGXXSEnv3Z{{T!7NJ`itVm7eEOgx%wZ}%7~zk7`~#d^x5g=o%_ zZ;qu;oCQWB*4tvxeVK?X3X$)CG?#lRA6wuisl$+CU_H(}va#Hz{e`g+!(Faz^z^`| zfn=TuS=_WFl>vwwi*7sZ>xhSN`^J5E{{YS+Wn%kndy;Vh3q)k<62?Uuc|3hFF(;5U zwkHdT19@3?JDsuU*=}XjSwmY-Yy|QhM^%Nb`e1UgNdv5We)oUN3;a;(6|-;cY)|54 zy^360*K8ol%dS6CIkpx_9a*DxP%W{y7?6;tvZ)09FedZJp{`2qI3N4Ne^52mD@_+u zs=5H@l203ZUIRVqnQ9PSwO@1=Ele=JT>x~LC+`~&*n%9D8m6wq7$ z09b^M*JB{^slD;o6sl}pjnA0aeX-dBNHoZ&N!Z+hd|0&wkTNT%y7D>S1Zmhc$r?|o zwXxPjQUF3o8w>0(Jt!hKMbmqm@81lcqKW|y9FykX1!7vnkO!f_I__G_8ZZLuzW2lp zPMH;4fZTmf3*&}U5?gBn?Q8|ZD;7m0cOJMD)vIym;Q6jFFONr!lxjYfz6o-x$%*Gg zTWJ=tB!g>xu*Cy2Er_+izAG~KGq{nEs&WmiTkDHxhLtQXEsmCJ64;ys6|uSBz6ViG zB~rkZU^X}79F4q!*SEeHfc2rhtar9EI&PJSE2ZR6J#pg>JHb$6_uERyMt@t;}(}{ST{Nr zd`_0jfSF@Hr~t5 z3entv4T#^IPBpq(_WEFu(%lsRl}$fEfblD++M=t+XvJIL<=G`Z>d9z0yZP)aTJO)CNM^uZE?OD7IIYj*n40S zD7#yMi6f#LkWd@!O}k=nBsL2g+v|?2Xdfu<4m%X1SQh7vu_ts!q+j(MV0t4bcvNq= z#L`7!q=I{ba8^}tJ6z$JL1vB^&9nf=k_I?dC6D}}&iFkoIffw|lC;hRi?H0{T_A3L zm~#*f9BkmcLcnu^h2P48-SO+MOze5S=MzL=p>8)9zc{!^1iRR%+uMvm)M;yreKx}? z1-B>dfoKNcSR3uP7_k>B6@0*PjzkjR0rnUyj;*O|Mx0Fofn^r;_rtJY3>RB6s4LiF zS`eN%JAs3;r~=~UjykFo550iBY1$@9*UU<{ICcXz8f1m u3l4GJK-__~uZ-+#3Zx-GB~%Ylxy1B&#+~p+Hv{X4+^Hjr4@@`7WB=Jsm1*1n literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/style-in-nxhtml.png b/emacs.d/nxhtml/nxhtml/doc/img/style-in-nxhtml.png new file mode 100644 index 0000000000000000000000000000000000000000..151681d14ef872ce1bd102459a5b176d189feeda GIT binary patch literal 19275 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

`yvTpSBwIAN|t}h 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 Y0Z=fIbhbF_G5`Po07*qoM6N<$g2t7(Hvj+t literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/use-nXhtml-trans.png b/emacs.d/nxhtml/nxhtml/doc/img/use-nXhtml-trans.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae2ff82088d83e7388626793bbf071a1c3b3062 GIT binary patch literal 1485 zcmV;;1v2`HP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOK3 z6fiavS?0z7000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000FjNklh_I$Z(cg5Vh zlf$n~?y2W;A6Lz)b_)IHs$hE&b({$_L*zKdirPIJ z3i)xFW!&hJu=|N(DsjnvQi;2!bn0@2L~JH*X+ug>9Vei?kiSvhN4GUT&ySHMjx_b_ z%DHQDz1#B_daJGmWO@I1s*~lSvoUBUhdf9Y10?afO7)iW>KYI<5FiP2n`!E?HQU1# zl3-y+@j?dK$08}u+4ZTX6uGUxMI~)8KSt!MY9N@sLbZ%Lza`6ys{hX|rt+lk(F`MD z)$6Uw7XpBe!BG|R<1$m{U)Z1Wy4EOyHgMaVLF&T5zlA$bT@vodphoX8)2VGy)9>?` zMlJnCevC-QDI9`sL@4&fHrmfCAE=ZxR=mb)r_ee8DCEcGiW-kbiW-lt8SVl+;L#{?0&X`yM0kEp9yDPD>5?k06-(N zPZ+JK4fS1PL!2{DkAuIQ2aRUJv6N+Ke#8O*R8>ww>d#?dGW9reJPQtvhLLu7;vczI zMnA&)>k81_H3?sB4h8^hiG2q>Ivd1qmqHYxnvh4X;iP&Ze@FH@<*7iPzIlp~pd0Sm z&bl8rBR#Ly##7sGa8gXc|?_6cdcO?e-*oeSg`H0)O9RMjrQUa61vo?~oFhRD&N<~+1=Rc`Y7HM@`_Y9I5A z`=sT>qCM{4U78lqcxchQ;#4i&PJg_5{fcMbP6K{BeE~MMI$X)~2iHZ3^fQ-V7Lyay zDKX#8m-)F+P5#U^KAC?C{Ob?P?1QS4YvMnQYR{Ro*5~XQfq(ts686H{pA_4|$3>}b z_DVZ{##!8`rP~>6Z9KJ`ywa}tXzvZYC(`NYFdCoC<8ikglr5}bV^U5LHMX7gSuSO5sp^oA4H z{D_5wZL2_%G>Bsh;4XM_kQRlg@X@FFFq!E1`ipnbsceYD6M8{*=` z;pk91faj{j4+qNn+4d)u!gI!bw5y!3VeRsvLLTLPc5QFnu9fN{hlJ7C3=@{WToY}L nvk+$?&LS4#EW}xed(-59+ihwUEM7l700000NkvXXu0mjfVJ*)@ literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/use-nXhtml-trans2.png b/emacs.d/nxhtml/nxhtml/doc/img/use-nXhtml-trans2.png new file mode 100644 index 0000000000000000000000000000000000000000..c348c923633cef9bb0a50f1ddf2535d11a19a546 GIT binary patch literal 1520 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 FV1l9ZhY#nfJy_Ej*I^V-@1 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 I+AeW_1NZf3XaE2J literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/volga.jpg b/emacs.d/nxhtml/nxhtml/doc/img/volga.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c11e93cf2467f1ec0eb1ef079b0d42e6cd9299dd GIT binary patch literal 34027 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˗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�(SaIRCe`dy$Ls5nZhdgEuOt9NI+)M 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/img/xml-validation-header.png b/emacs.d/nxhtml/nxhtml/doc/img/xml-validation-header.png new file mode 100644 index 0000000000000000000000000000000000000000..2093781df3d6cdc57c0a8a4370fab61a8c95fc81 GIT binary patch literal 23172 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/carrow1.gif b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/carrow1.gif new file mode 100644 index 0000000000000000000000000000000000000000..316dea7a64856915da98577cafafd03f8638e125 GIT binary patch literal 243 zcmZ?wbhEHb6k-r#IKsf7t*x!2qr<|&!pzKUWMm{QEv=`g$IZ=cU|?WqXeb~cz{bX= zudmO+!NJMNDIp;tA|fIsCB@6jtEHu-sHn)!&aSMitgEZb#l^+M#H660pr)qA%F4>X zz+h}_3?vnQvH(d21|1LqvXg71^U7DZnxZU5MJ+2DNlU$!}S-z7L1 zYB?n`wic+gGO=hXR;p<#HyxT4(xY%E#rX?|I=fuk0UeiWhU~I*9VV8W_a@F=Yx#C3 mb5LEmzqe++lZ30LgOiM%IU~0*ySTXuBcGt&^tp114AuaR_cnk4 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/carrow2.gif b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/carrow2.gif new file mode 100644 index 0000000000000000000000000000000000000000..24a6be117297b04c3ef48eae65fdc48e72399412 GIT binary patch literal 241 zcmZ?wbhEHb6k-r#IKsf7t*x!2qr<|&!pzKUWMm{QEv=`g$IZ=cU|?WqXeb~cz{bX= zudmO+!NJMNDIp;tA|fIsCB@6jtEHu-sHn)!&aSMitgEZb#l^+M#H660pr)qA%F4>X zz+h}_3?vnQvH(d21|1LqvXg-|Z-IKBoa4NVAP%utQtsDNXM0O^>+nyGJ!U1To}kUr zEXu~EXu&4iA$+uQii!uSrfhXZ?z8@d$pa k;Z|R*!Xn|g@uLQ-rnWq<>%+; ziHV8k=H^>lTjAm1)YR0<%F4aHy~D%9?Ck7;fq|%~s6IYE3kwU~-QD)~_R`YQ-{0Si zjEvaW*xK6K*Vos#x3_tDdCkquw6wHgVPQErIiaDUe}8|juC9WDf+r^@#l^)Q9v#(q}e0+Qi3=AnLDUXkjJUl!Y7#L(^WV*V#W@ct-X=zwkSiZi#(b3T@EiKN@&Yqs0 z6B83dLqoZ_xhpFxC@3i6;^G?{8$dunPEJnf=;+JK%hlD@r>Cdt>gsZGaza8vCMG6z zb#;=GlET8m$;ruUYiql^yT`}JoSdAswY6_=Z!Rt_Qc_ac+1VKx85b89mzS5An3#@^ zj**d(+uPfUii)MBrMS4bq@<+${QUm@{r~^~|NsC0|Nj6000000A^8LW004aeEC2ui z044x1000O7fP8|3goTEOf_;jMiinPng^Z1ml#h&+n23v+g#dX60imG>c>sEZlbm{a z1P%%f5)BCu5e5W#r-^->e5(ct3so5@86OA>4GsYSsH%Abd(lBwO;H{|GaCs8xP!Zx ztI*MVC`Cdi9x*To4cxhW-<09w(E=AcUwC9L9SQ`@yynr{V{Z+dB~CJsaB$!qxMu^S zS?Dq3NQf5;A}k9CG2$L5bz+=>u>rzHXW}9XnDBr{1r7cHW)i3p!vhLi5G44=G3CIO zH$muRAoHP5dO#@%O+d7#M}in=j9KwPf{Fm8OzClWh~_{GI&zo^(ME#=2o6*jU_byX z08?H6J4UpCgUb&QS}L$W&>>3~5)u^DB5(jMA+G~Z)G(4nO&A#^IEX=GBFzXUDKauB z-0A33dMMmXxuV2N3lk$=B)j!akDSk+1-zj`giRR?H$+tM0f9j`K|^52z5vDs79=H} zNLjH!fq{mDS_pq?ulVug%bP!M?RmOv+O~1)=Iz@d01nd!h8|t|bn4Z=1+6OZSutbB zkR?;Lj9D}1Li0UEmtA=2#g|`z31&-ST*;RQeI9`&7FlMYr50Om85S3WHAzL4RT*y8 z;D*$(q|{JF&GcZ2L7~WtgB<>3Voou=*vpC@3BW;1FV*;BfF40HfJiQsbP`7~jx*6{ z92U`$(UHz1Nzesr#DNeC3qkiIj^o&aj~)B;!;_6bMpMo?9^A1`JMqO+Ntx4Bb4@ne zw8_yg!3?If+M0NKxJqIY7tOS zgQCqtT0>uH)#niAC{QB;BDIW)fg-3NlOcJxKhD|fthM*r-#PpH&ffXlut19bDt!O| zC|iU4c$l@tmJ5l1?Pq=^*d31*$;pmANVLZTz6U4?N zTa#lF<9YEhai>zB#CrpPUiVf%PWZ|GSdC7{hQCtiHy=hjz?&Xbhr{f~d`x^3n!4py zF&pg?ppltat!3Q#>ANC>xL@MeSUf@%rhCOg*P_RAK`8ILr_V`g^rrdg!Ap-a78_^Z z|K%QmR8Z^)PcPLX?w|$SD4Cp`lrWi0No8dvLKOQ@-vn)udM1j1>$jQ|+X-Zwb0sD8 z3Y%|APc}A-4HqcCX;!dUgU%dI!?o3`SF`DK`lCQUKkpq85n4(?fHYg1-duV{M4xb9sikSwt1-8NPjzDtw~EwJ!NlizeJ-erCewv6G@e3a~N@t5Uea*t7=hx zg)w8@k&2DU`mN*Ud>QznCt4twCJKeZ!M?seE%f3gn@Y&{wII&8tw4e8BXXTI3G}ev zw5jhrG zZzNMwQ^RYvT@A5%BU37sqphv2g70#2v>;8xDsB=PYMwPU%@{E*bVz;7c9TIIb*mx# zor!Gds8Cq&C}r4Zqh%oI+8iUjF#z0n&yr6r86544E{4U0kiRqRR;}ovNBz2p(ag__ z9GT^Mc6sUIlZFOMZGZhC{6aT$Enx^wuKxðfv)ZY%4L$YWExo%fW{%m6>O~D(|w9xotbjipiF{@eE*dK?HJf}SnX#;7=rWctlqBnL_g2x*pSty~S z0U_78bKY9qO(yURsOZAeI-P6cpOeozJLAF9_|P0j;+WiAQ8`EGegc@9qV0+nylf9- zYAPjI7HbVUE@g5;5Avrpl#VOXkr8*945$;Q4_RWolPt74iSUl*s_o2u`}X-y4?MiR zCR_nI%)eLgbQ|QB3#@xxgnC=)d#8j*S7LCsexFX|Gv~~+biiZ5IfR{}ohDxL;1OK! zkBgW#@7RXhfEB)8qR(#}xE6ZkhQSLLE@W~FaUOZ}P~3O(z(QHe3iC;>4g$gryDk%NC*6INMHA$ydXyC0zsr@bEQtoU0r zaiXHU`~l8?rOV}V>3iqm7G2e`QFg{=XH4t&Hxq&t(mls!)z42A78W{|IqiMg^zJUj zeB)iPXBzY{41dU}*!WmH$(E|%o@+sczJeAlR?`bna_InBnVM^85rvyH|FzO1&DNl3 zG!nx-4TV2mp}zYPX%k1$RU@NDN~Rn}e%3phy9|>Mv#;&rQbvyqK04Fx?d=^|WZ_j> z@Y9P%{Yk(JUNO&bXX6XG<5DL`|J1Q-TzEaKg+r!&=bCH zJ#XGA{>qckJ#SX>J9;&{7s`zJY}FmY<*&!S1%ImoBpdB{ax1i=7jC~3zffacJo@{Q zzYk{o)4PttPpX4!};#)e(P zw?{;U`w69KQAI5F7t`XQNsg*;_AcBJ0kb!UJe>8hg^EE^E3kwk`E$YwJyKxqbc%a^@cT1oU zklzAccFF4^xUQ?pTeXe)ySS!!A(K0`LY4wg{0Q`P1)v9^(a@T~90ZPw33*Q2R%9&4Q6I$ z&d$y~Jv|K#4F?Y%OixcYHa4!QsmaR9GBh-lm6g49>(-SkSEQw-eSCb{+S-2n_>qy3 z(bUw`-rinYTf2V!`rO>yr%#{WxN##bEiEM_<T!^j?`#IoZ+W5?dvBE@Aw4huusxTV5A za5O2pOj>QXxhVL_0j4%B-T!4ZjfyRve0sh)6`e&#Qnt?TQt+vGpxh=R8L*<}!)b|U zZ3mhiOKvu$wzVJa`75{J;{mP|5rs`QFAbk|O+3>x@ruPq%P%i3Ef1V+vq9<;^T{c? z$$lmvJG;t1zkB=oIzuBH*N@z{uejDkY)ZShXmj6R zWfgzdg-#S&et&W>{hnHf1YlcqN=PI%3JyOWk@H3jzkAr z6I0TaLvCu0Gvpif9YP*f3mz+OlVI*lUs(T<$ARC`j&Y(;XJ^A^4z|ZribW+~Zz+DL z(!=n<$3$ZhBb(W+I~~d@d;bWXF*qtSxktN6ch?Fo?R5u~xOKM~+)PoK*I>k@xop8C aFOOXbOv_aJEG(ZXrFK=ODK#=MSOWm%MZM|( literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/fleche2.png b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/fleche2.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf66a19a6d8799b6aa6311112079986a40d7d1e GIT binary patch literal 2889 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/loading-bar-black.gif b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/loading-bar-black.gif new file mode 100644 index 0000000000000000000000000000000000000000..99368d6c6ced24b85d1ffb731d3718dd7b2eb8e3 GIT binary patch literal 10814 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/open.gif b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/open.gif new file mode 100644 index 0000000000000000000000000000000000000000..d145e6687104015a07a607c5550f1144ec51032e GIT binary patch literal 489 zcmZ?wbhEHblw#0gxN5+VmX`MO=TClq{&nltadLA0`SYixrA1Lu@ywYsU0q$@zI{_s zQK_h?Sg~Tov}w~meE87Y+w1M^9TgQ79v<%J=T}rz^!)jAHa0e0U0n$Y2{}2rSbZl&_v9a;YnKQMtw6<^G-q_gK-rj!Tz=4Mk zA5NY;`Tzg_3=9kq638GDDE?$&WMD90&;h9j`H6w;zr&0IjS|Uzk3~V9IcC#+mS5q} zm1Cak`SPokuT8_)y&Sw(oX4&&R@o{rr6f;c2yn+=;%tE#JU;5%H?S8pyd-PbPTBNpyB)f^Wh~7R`Q@j3ffV)nM z(#t!HEnHvj$d@zyydzSs@xyx20fvTV4&DdS;ZHl7t@+rb953+nF|Y{5N^G92pxoY- x!BTL7;~`&5kDh>pPsc@hb8#^x0R@4BOtZC4E!%O})8)Az+dSK)4|tdutO4;=vO)j= literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/open.png b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/img/open.png new file mode 100644 index 0000000000000000000000000000000000000000..aebf4989a8a6873eb2eed6d64f1f1d6944ea8e0c GIT binary patch literal 1258 zcmVRCwBA z{Qv(y0|CGb#JWJN2*kobECUsP3B)ge_&yL{1>%qR3;_rrMm!eD0&xJ8CI&nP;!QyO z5St`G0O7L86^h9LTY>l>x*$LRVY4U^h&5rHuV241PntAIWz(ijYR{iP7kv2ep*Tof zQd07*yuAEtFE6j#MMXuoxw*OjBAIash?gK63J^dHAd8T2A`o}Ma9dm3MiCK_cR+Rj z@nKvsxPT!k&=?qD^5^Ygn+EsK18eUZ(&4-i1049f*%G=O-&e*I#Ul9Eb&`}QqAC6)*X2z+_@^5qOR zHa1v1H39?>$VcB`l@&-LK0f{=rM`)cjXjBE3CQfP009K6k3e}T8&(VfeU<*{(Kp0mOu)?hdq7!vIof zWo31XRNsK~AX)MPW(f!Y1P~LN+CxYYdX-d*A|oTOVKWN^00IcTaRRcq1D4b!BqY+_ zzkkn1j3t7Cf}dWzcrgnpwN(N!yuktxKnFrogr*jwT?Y_A*err;aB*>YNrFXhkhss$kA#GTeoUA!;R3o|WB?FAxPtB(+-vss&p~m3FMdF3u<1nx00D%{B6wSG+qP}; z_zG8$97qi|y~qF{fCwfAVDOlS0To`Bl`t{;KtcafSKq)RTFz`MQBbOkPVU;K{00VAZPsvI2hpcd&GAjaD!1PCBvECMGkAhv|ID-@7Y7pST}4lUpC0)PMm0Cf`+ Ud;!mb^8f$<07*qoM6N<$g4OE=egFUf literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/jd.gallery.css b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/jd.gallery.css new file mode 100644 index 0000000..b0d87ec --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/jd.gallery.css @@ -0,0 +1,238 @@ +#myGallery +{ + width: 460px; + height: 345px; + z-index:5; + display: none; + border: 1px solid #000; +} + +.jdGallery +{ + overflow: hidden; + position: relative; +} + +.jdGallery img +{ + border: 0; + margin: 0; +} + +.jdGallery .slideElement +{ + width: 100%; + height: 100%; + background-color: #000; + background-repeat: no-repeat; +} + +.jdGallery .loadingElement +{ + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + background-color: #000; + background-repeat: no-repeat; + background-position: center center; + background-image: url('img/loading-bar-black.gif'); +} + +.jdGallery .slideInfoZone +{ + position: absolute; + z-index: 10; + width: 100%; + margin: 0px; + left: 0; + bottom: 0; + height: 40px; + background: #333; + color: #fff; + text-indent: 0; + overflow: hidden; +} + +* html .jdGallery .slideInfoZone +{ + bottom: -1px; +} + +.jdGallery .slideInfoZone h2 +{ + padding: 0; + font-size: 80%; + margin: 0; + margin: 2px 5px; + font-weight: bold; + color: inherit; +} + +.jdGallery .slideInfoZone p +{ + padding: 0; + font-size: 80%; + margin: 2px 5px; + color: #eee; +} + +.jdGallery div.carouselContainer +{ + position: absolute; + height: 135px; + width: 100%; + z-index: 10; + margin: 0px; + left: 0; + top: 0; +} + +.jdGallery a.carouselBtn +{ + position: absolute; + bottom: 0; + right: 30px; + height: 20px; + /*width: 100px; background: url('img/carousel_btn.gif') no-repeat;*/ + text-align: center; + padding: 0 10px; + font-size: 13px; + background: #333; + color: #fff; + cursor: pointer; +} + +.jdGallery .carousel +{ + position: absolute; + width: 100%; + margin: 0px; + left: 0; + top: 0; + height: 115px; + background: #333; + color: #fff; + text-indent: 0; + overflow: hidden; +} + +.jdGallery .carousel .carouselWrapper +{ + position: absolute; + width: 100%; + height: 78px; + top: 10px; + left: 0; + overflow: hidden; +} + +.jdGallery .carousel .carouselInner +{ + position: relative; +} + +.jdGallery .carousel .carouselInner .thumbnail +{ + cursor: pointer; + background: #000; + background-position: center center; + float: left; + border: solid 1px #fff; +} + +.jdGallery .carousel .label +{ + font-size: 13px; + position: absolute; + bottom: 5px; + left: 10px; + padding: 0; + margin: 0; +} + +.jdGallery .carousel .label .number +{ + color: #b5b5b5; +} + +.jdGallery a +{ + font-size: 100%; + text-decoration: none; + color: inherit; +} + +.jdGallery a.right, .jdGallery a.left +{ + position: absolute; + height: 99%; + width: 25%; + cursor: pointer; + z-index:10; + filter:alpha(opacity=20); + -moz-opacity:0.2; + -khtml-opacity: 0.2; + opacity: 0.2; +} + +* html .jdGallery a.right, * html .jdGallery a.left +{ + filter:alpha(opacity=50); +} + +.jdGallery a.right:hover, .jdGallery a.left:hover +{ + filter:alpha(opacity=80); + -moz-opacity:0.8; + -khtml-opacity: 0.8; + opacity: 0.8; +} + +.jdGallery a.left +{ + left: 0; + top: 0; + background: url('img/fleche1.png') no-repeat center left; +} + +* html .jdGallery a.left { background: url('img/fleche1.gif') no-repeat center left; } + +.jdGallery a.right +{ + right: 0; + top: 0; + background: url('img/fleche2.png') no-repeat center right; +} + +* html .jdGallery a.right { background: url('img/fleche2.gif') no-repeat center right; } + +.jdGallery a.open +{ + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.withArrows a.open +{ + position: absolute; + top: 0; + left: 25%; + height: 99%; + width: 50%; + cursor: pointer; + z-index: 10; + background: none; + -moz-opacity:0.8; + -khtml-opacity: 0.8; + opacity: 0.8; +} + +.withArrows a.open:hover { background: url('img/open.png') no-repeat center center; } + +* html .withArrows a.open:hover { background: url('img/open.gif') no-repeat center center; + filter:alpha(opacity=80); } + diff --git a/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/layout.css b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/layout.css new file mode 100644 index 0000000..9c807b6 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/css/layout.css @@ -0,0 +1,91 @@ +body { + color: #ccc; + font-family: "Trebuchet MS", "Lucida Grande", Arial, Helvetica, sans-serif; + margin: 0 auto; + padding: 0; + font-size: 1.0em; + background: #111 url('../images/bg/gradient1.gif') top left repeat-x; +} + +h1 +{ + color: #fff; + font-size: 47px; + font-weight: bolder; + margin: 0 40px; + padding: 0.08em 0; +} + +h1 sup +{ + color: #ddd; +} + +h1 a +{ + color: #fff; + text-decoration: none; +} + +h1 .company, h1 a .company +{ + color: #d01a71; +} + +h2 +{ + color: #ddd; + font-size: 2.5em; +} + +h3 +{ + color: #fff; + font-size: 1.5em; +} + +h4 +{ + font-size: 1.3em; +} + +.content +{ + margin: 0 20px; +} + +.content a +{ + color: #fff; +} + + +.content p.linkage +{ + margin-top: 2em; + text-align: right; + font-size: 1.7em; + color: #ddd; +} + +.content p.linkage a { color: #fff; } + +/*.content p.linkage a +{ + color: #fff; + background: url('../images/bg/biglink_off.gif') center right no-repeat; + padding: 10px 20px; + text-decoration: none; +} + +.content p.linkage a:hover +{ + background: url('../images/bg/biglink_on.gif') center right no-repeat; + font-style: italic; +}*/ + +#myGallery +{ + text-align: left; + margin: 0 auto; +} diff --git a/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/scripts/jd.gallery.js b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/scripts/jd.gallery.js new file mode 100644 index 0000000..af83b13 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/scripts/jd.gallery.js @@ -0,0 +1,449 @@ +/* + This file is part of JonDesign's SmoothGallery v1.0.1. + + JonDesign's SmoothGallery is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + JonDesign's SmoothGallery 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 JonDesign's SmoothGallery; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Main Developer: Jonathan Schemoul (JonDesign: http://www.jondesign.net/) + Contributed code by: + - Christian Ehret (bugfix) + - Nitrix (bugfix) + - Valerio from Mad4Milk for his great help with the carousel scrolling and many other things. + - Archie Cowan for helping me find a bugfix on carousel inner width problem. + Many thanks to: + - The mootools team for the great mootools lib, and it's help and support throughout the project. +*/ + + +var $removeEvents = function (object, type) +{ + if (!object.events) return object; + if (type){ + if (!object.events[type]) return object; + for (var fn in object.events[type]) object.removeEvent(type, fn); + object.events[type] = null; + } else { + for (var evType in object.events) object.removeEvents(evType); + object.events = null; + } + return object; +}; + + +// declaring the class +var gallery = new Class({ + initialize: function(element, options) { + this.setOptions({ + showArrows: true, + showCarousel: true, + showInfopane: true, + showDescription: false, + thumbHeight: 75, + thumbWidth: 100, + thumbSpacing: 10, + embedLinks: true, + fadeDuration: 500, + timed: false, + delay: 9000, + preloader: true, + manualData: [], + populateData: true, + elementSelector: "div.imageElement", + titleSelector: "h3", + subtitleSelector: "p", + descriptionSelector: "div", + linkSelector: "a.open", + imageSelector: "img.full", + thumbnailSelector: "img.thumbnail", + slideInfoZoneOpacity: 0.7, + carouselMinimizedOpacity: 0.4, + carouselMinimizedHeight: 20, + carouselMaximizedOpacity: 0.7, + destroyAfterPopulate: true, + baseClass: 'jdGallery', + withArrowsClass: 'withArrows', + textShowCarousel: 'Pictures', + useThumbGenerator: false, + thumbGenerator: 'resizer.php' + }, options); + this.fireEvent('onInit'); + this.currentIter = 0; + this.lastIter = 0; + this.maxIter = 0; + this.galleryElement = element; + this.galleryData = this.options.manualData; + this.galleryInit = 1; + this.galleryElements = Array(); + this.thumbnailElements = Array(); + this.galleryElement.addClass(this.options.baseClass); + if (this.options.populateData) + this.populateData(); + element.style.display="block"; + + if (this.options.embedLinks) + { + this.currentLink = new Element('a').addClass('open').setProperties({ + href: '#', + title: '' + }).injectInside(element); + if ((!this.options.showArrows) && (!this.options.showCarousel)) + this.galleryElement = element = this.currentLink; + else + this.currentLink.setStyle('display', 'none'); + } + + this.constructElements(); + if ((data.length>1)&&(this.options.showArrows)) + { + var leftArrow = new Element('a').addClass('left').addEvent( + 'click', + this.prevItem.bind(this) + ).injectInside(element); + var rightArrow = new Element('a').addClass('right').addEvent( + 'click', + this.nextItem.bind(this) + ).injectInside(element); + this.galleryElement.addClass(this.options.withArrowsClass); + } + this.loadingElement = new Element('div').addClass('loadingElement').injectInside(element); + if (this.options.showInfopane) this.initInfoSlideshow(); + if (this.options.showCarousel) this.initCarousel(); + this.doSlideShow(1); + }, + populateData: function() { + currentArrayPlace = this.galleryData.length; + options = this.options; + data = this.galleryData; + this.galleryElement.getElements(options.elementSelector).each(function(el) { + elementDict = { + image: el.getElement(options.imageSelector).getProperty('src'), + number: currentArrayPlace + }; + if ((options.showInfopane) | (options.showCarousel)) + Object.extend(elementDict, { + title: el.getElement(options.titleSelector).innerHTML, + description: el.getElement(options.subtitleSelector).innerHTML + }); + if ((options.showDescription)) + Object.extend(elementDict, { + outsideDescription: el.getElement(options.descriptionSelector).innerHTML + }); + if (options.embedLinks) + Object.extend(elementDict, { + link: el.getElement(options.linkSelector).href||false, + linkTitle: el.getElement(options.linkSelector).title||false + }); + if ((!options.useThumbGenerator) && (options.showCarousel)) + Object.extend(elementDict, { + thumbnail: el.getElement(options.thumbnailSelector).src + }); + else if (options.useThumbGenerator) + Object.extend(elementDict, { + thumbnail: 'resizer.php?imgfile=' + elementDict.image + '&max_width=' + options.thumbWidth + '&max_height=' + options.thumbHeight + }); + + data[currentArrayPlace] = elementDict; + currentArrayPlace++; + if (this.options.destroyAfterPopulate) + el.remove(); + }); + this.galleryData = data; + this.fireEvent('onPopulated'); + }, + constructElements: function() { + el = this.galleryElement; + this.maxIter = this.galleryData.length; + var currentImg; + for(i=0;i= this.maxIter) + this.nextIter = 0; + this.galleryInit = 0; + this.goTo(this.nextIter); + }, + prevItem: function() { + this.fireEvent('onPreviousCalled'); + this.nextIter = this.currentIter-1; + if (this.nextIter <= -1) + this.nextIter = this.maxIter - 1; + this.galleryInit = 0; + this.goTo(this.nextIter); + }, + goTo: function(num) { + this.clearTimer(); + if (this.options.embedLinks) + this.clearLink(); + if (this.options.showInfopane) + { + this.slideInfoZone.clearChain(); + this.hideInfoSlideShow().chain(this.changeItem.pass(num, this)); + } else + this.changeItem.delay(500, this, num); + if (this.options.embedLinks) + this.makeLink(num); + if (this.options.showDescription) + this.showDescription(num); + this.prepareTimer(); + /*if (this.options.showCarousel) + this.clearThumbnailsHighlights();*/ + }, + changeItem: function(num) { + this.fireEvent('onStartChanging'); + this.galleryInit = 0; + if (this.currentIter != num) + { + for(i=0;i this.currentIter) this.galleryElements[num].custom(1); + else + { + this.galleryElements[num].set(1); + this.galleryElements[this.currentIter].custom(0); + } + this.currentIter = num; + } + this.doSlideShow.bind(this)(); + this.fireEvent('onChanged'); + }, + clearTimer: function() { + if (this.options.timed) + $clear(this.timer); + }, + prepareTimer: function() { + if (this.options.timed) + this.timer = this.nextItem.delay(this.options.delay, this); + }, + doSlideShow: function(position) { + if (this.galleryInit == 1) + { + imgPreloader = new Image(); + imgPreloader.onload=function(){ + this.startSlideShow.delay(10, this); + }.bind(this); + imgPreloader.src = this.galleryData[0].image; + } else { + if (this.options.showInfopane) + { + if (this.options.showInfopane) + { + this.showInfoSlideShow.delay((500 + this.options.fadeDuration), this); + } else + if (this.options.showCarousel) + this.centerCarouselOn(position); + } + } + }, + initCarousel: function () { + var carouselContainerElement = new Element('div').addClass('carouselContainer').injectInside(this.galleryElement); + this.carouselContainer = new Fx.Styles(carouselContainerElement, {transition: Fx.Transitions.expoOut}); + this.carouselContainer.normalHeight = carouselContainerElement.offsetHeight; + this.carouselContainer.set({'opacity': this.options.carouselMinimizedOpacity, 'top': (this.options.carouselMinimizedHeight - this.carouselContainer.normalHeight)}); + + this.carouselBtn = new Element('a').addClass('carouselBtn').setProperties({ + title: this.options.textShowCarousel + }).setHTML(this.options.textShowCarousel).injectInside(carouselContainerElement); + + this.carouselBtn.addEvent( + 'click', + function () { + this.carouselContainer.clearTimer(); + this.toggleCarousel(); + }.bind(this) + ); + this.carouselActive = false; + + var carouselElement = new Element('div').addClass('carousel').injectInside(carouselContainerElement); + this.carousel = new Fx.Styles(carouselElement); + + this.carouselLabel = new Element('p').addClass('label').injectInside(this.carousel.element); + this.carouselWrapper = new Element('div').addClass('carouselWrapper').injectInside(this.carousel.element); + this.carouselInner = new Element('div').addClass('carouselInner').injectInside(this.carouselWrapper); + + this.carouselWrapper.scroller = new Scroller(this.carouselWrapper, { + area: 100, + velocity: 0.2 + }) + + this.carouselWrapper.elementScroller = new Fx.Scroll(this.carouselWrapper, { + duration: 400, + onStart: this.carouselWrapper.scroller.stop.bind(this.carouselWrapper.scroller), + onComplete: this.carouselWrapper.scroller.start.bind(this.carouselWrapper.scroller) + }); + + this.constructThumbnails(); + + this.carouselInner.style.width = ((this.maxIter * (this.options.thumbWidth + this.options.thumbSpacing)) - this.options.thumbSpacing + this.options.thumbWidth) + "px"; + }, + toggleCarousel: function() { + if (this.carouselActive) + this.hideCarousel(); + else + this.showCarousel(); + }, + showCarousel: function () { + this.fireEvent('onShowCarousel'); + this.carouselContainer.custom({ + 'opacity': this.options.carouselMaximizedOpacity, + 'top': 0 + }).addEvent('onComplete', function() { this.carouselActive = true; this.carouselWrapper.scroller.start(); }.bind(this)); + }, + hideCarousel: function () { + this.fireEvent('onHideCarousel'); + this.carouselContainer.custom({ + 'opacity': this.options.carouselMinimizedOpacity, + 'top': (this.options.carouselMinimizedHeight - this.carouselContainer.normalHeight) + }).addEvent('onComplete', function() { this.carouselActive = false; this.carouselWrapper.scroller.stop(); }.bind(this)); + }, + constructThumbnails: function () { + element = this.carouselInner; + for(i=0;i' + (myself.relatedImage.number + 1) + "/" + this.maxIter + ": " + myself.relatedImage.title); + }.pass(currentImg, this), + 'mouseout': function (myself) { + myself.clearTimer(); + myself.custom(0.2); + }.pass(currentImg, this), + 'click': function (myself) { + this.goTo(myself.relatedImage.number); + }.pass(currentImg, this) + }); + + currentImg.relatedImage = this.galleryData[i]; + this.thumbnailElements[parseInt(i)] = currentImg; + } + }, + clearThumbnailsHighlights: function() + { + for(i=0;i, MIT Style License. +eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('k 11=f(1S){k 4s=f(){j(9.1e&&Y[0]!=\'7h\')h 9.1e.2m(9,Y);Q h 9};I(k n W 9)4s[n]=9[n];4s.U=1S;h 4s};11.1G=f(){};11.U={N:f(1S){k 4r=M 9(\'7h\');k 7g=f(2s,2f){j(!2s.2m||!2f.2m)h T;h f(){9.1t=2s;h 2f.2m(9,Y)}};I(k n W 1S){k 2s=4r[n];k 2f=1S[n];j(2s&&2s!=2f)2f=7g(2s,2f)||2f;4r[n]=2f}h M 11(4r)},1T:f(1S){I(k n W 1S)9.U[n]=1S[n]}};1H.N=f(){k R=Y;R=(R[1])?[R[0],R[1]]:[9,R[0]];I(k n W R[1])R[0][n]=R[1][n];h R[0]};1H.5p=f(){I(k i=0;i\'));$1o(9.96,f(4e){j(4e.24!=\'24\')l.4d(4e.24,4e.K)});j(9.26)9.6G(l);h l}6F:9.6E(n,K)}h 9},95:f(1L){I(k n W 1L)9.4d(n,1L[n]);h 9},94:f(6D){9.93=6D;h 9},92:f(n){h(n==\'6C\')?9.1d:9.6k(n)},3C:f(){h 9.41.3G()},2O:f(){k l=9,4c=0,4b=0;91{4c+=l.4c||0;4b+=l.4b||0;l=l.90}34(l);h{\'x\':4c,\'y\':4b}},2a:f(x,y){9.3U=x;9.3V=y},3P:f(){h{\'1V\':{\'x\':9.3U,\'y\':9.3V},\'2A\':{\'x\':9.2x,\'y\':9.2v},\'3O\':{\'x\':9.68,\'y\':9.69}}},4D:f(){h 9.2O().y},4F:f(){h 9.2O().x},8Z:f(){k 5i=9.2O();k u={\'3j\':9.2x,\'3i\':9.2v,\'2i\':5i.x,\'2w\':5i.y};u.5a=u.2i+u.3j;u.6B=u.2w+u.3i;h u},2F:f(){2c(9.3C()){1c\'2U\':j(9.6A!=-1)h 9.m[9.6A].K;1P;1c\'8Y\':j(!(9.8X&&[\'8W\',\'8V\'].15(9.q))&&![\'3S\',\'33\',\'8U\'].15(9.q))1P;1c\'8T\':h 9.K}h T}});k 8S=12;12.1a=L.1a=1b.U.1a;12.1E=L.1E=1b.U.1E;k 31={1w:[],6z:f(r){31.1w.18(r)},5g:f(){12.1E(\'6y\',31.5g);31.1w.1o(f(l){l.5h();I(k p W 1b.U)2I[p]=12[p]=L[p]=l[p]=1K;l.N=1K})}};12.1a(\'6y\',31.5g);k 3F=M 11({1e:f(o){9.o=o||12.o;9.q=9.o.q;9.3H=9.o.3H||9.o.8R;j(9.3H.6x==3)9.3H=9.3H.26;9.8Q=9.o.8P;9.8O=9.o.8N;9.8M=9.o.8L;9.8K=9.o.8J;j([\'5f\',\'2M\'].15(9.q)){9.3f=9.o.6w?(9.o.6w/ (12.51 ? -6v : 6v)) : -(9.o.8I || 0) /3}Q j(9.q.15(\'1O\')){9.5d=9.o.6r||9.o.8H;I(k 24 W 3F.1u){j(3F.1u[24]==9.5d)k 6u=24}9.1O=6u||5e.8G(9.5d).3G()}Q j(9.q.15(\'2l\')||9.q==\'8F\'){9.1y={\'x\':9.o.5c||9.o.6t+L.2r.3U,\'y\':9.o.5b||9.o.6s+L.2r.3V};9.5y={\'x\':9.o.5c?9.o.5c-12.66:9.o.6t,\'y\':9.o.5b?9.o.5b-12.67:9.o.6s};9.8E=(9.o.6r==3)||(9.o.8D==2);2c(9.q){1c\'8C\':9.4a=9.o.4a||9.o.8B;1P;1c\'8A\':9.4a=9.o.4a||9.o.5L}}},1s:f(){9.49();9.48();h 9},49:f(){j(9.o.49)9.o.49();Q 9.o.8z=1g;h 9},48:f(){j(9.o.48)9.o.48();Q 9.o.8y=T;h 9}});3F.1u={\'8x\':13,\'8w\':38,\'8v\':40,\'2i\':37,\'5a\':39,\'8u\':27,\'8t\':32,\'8s\':8,\'8r\':46};59.N({2y:f(J,R){h 9.2e({\'J\':J,\'Y\':R,\'o\':3F})}});k 5S=M 11({8q:f(O){9.2H=9.2H||[];9.2H.18(O);h 9},5Z:f(){j(9.2H&&9.2H.14)9.2H.47(0,1)[0].2d(10,9)},8p:f(){9.2H=[]}});k 3c=M 11({1a:f(q,O){j(O!=11.1G){9.V=9.V||{};9.V[q]=9.V[q]||[];j(!9.V[q].15(O))9.V[q].18(O)}h 9},1x:f(q,R,2d){j(9.V&&9.V[q]){9.V[q].1o(f(O){O.2e({\'J\':9,\'2d\':2d,\'Y\':R})()},9)}h 9},1E:f(q,O){j(9.V&&9.V[q])9.V[q].3Z(O);h 9}});k 3b=M 11({2N:f(6q,m){9.m=1H.N(6q,m);j(9.1a){I(k 3E W 9.m){j(($q(9.m[3E])==\'f\')&&3E.15(\'^58[A-Z]\'))9.1a(3E,9.m[3E])}}h 9}});f $E(1v,3D){h($(3D)||L).42(1v)};f $8o(1v,3D){h($(3D)||L).2G(1v)};1b.N({3B:f(1v){k 1Q=[];1v.45().4Y(\' \').1o(f(43,i){k 1q=43.28(\'^(\\\\w*|\\\\*)(?:#([\\\\6p-]+)|\\\\.([\\\\6p-]+))?(?:\\\\[["\\\']?(\\\\w+)["\\\']?(?:([\\\\*\\\\^\\\\$]?=)["\\\']?(\\\\w*)["\\\']?)?\\\\])?$\');j(!1q)h;1q[1]=1q[1]||\'*\';j(i==0){j(1q[2]){k l=9.44(1q[2]);j(!l||((1q[1]!=\'*\')&&(1b.U.3C.1i(l)!=1q[1])))h;1Q=[l]}Q{1Q=$A(9.56(1q[1]))}}Q{1Q=1N.U.6m.1i(1Q,1q[1]);j(1q[2])1Q=1N.U.6o.1i(1Q,1q[2])}j(1q[3])1Q=1N.U.6n.1i(1Q,1q[3]);j(1q[4])1Q=1N.U.6l.1i(1Q,1q[4],1q[6],1q[5])},9);h $$(1Q)},44:f(2Z){k l=L.44(2Z);j(!l)h T;I(k 1t=l.26;1t!=9;1t=1t.26){j(!1t)h T}h l},42:f(1v){h 9.2G(1v)[0]},2G:f(1v){k 57=[];1v.4Y(\',\').1o(f(43){57.N(9.3B(43))},9);h $$(57)}});L.N=1H.N;L.N({8n:f(1d){h L.3B(\'.\'+1d)},42:1b.U.42,3B:1b.U.3B,2G:1b.U.2G});1N.N({6o:f(2Z,8m){k 1p=[];9.1o(f(l){j(l.2Z==2Z)1p.18(l)});h 1p},6n:f(1d){k 1p=[];9.1o(f(l){j(1b.U.3A.1i(l,1d))1p.18(l)});h 1p},6m:f(41){k 1p=[];9.1o(f(l){1p.N(l.56(41))});h 1p},6l:f(24,K,55){k 1p=[];9.1o(f(l){k 30=l.6k(24);j(!30)h 1p;j(!55)h 1p.18(l);2c(55){1c\'*=\':j(30.15(K))1p.18(l);1P;1c\'=\':j(30==K)1p.18(l);1P;1c\'^=\':j(30.15(\'^\'+K))1p.18(l);1P;1c\'$=\':j(30.15(K+\'$\'))1p.18(l)}h 1p});h 1p}});k 6j=M 11({14:0,1e:f(u){9.u={};I(k n W u){9.u[n]=u[n];9.14++}},8l:f(1O){h 9.u[1O]},1U:f(1O,K){j(K==1K)h T;j(9.u[1O]==3z)9.14++;9.u[1O]=K;h 9},3Z:f(1O){j(9.u[1O]==3z)h T;k u={};9.14--;I(k n W 9.u){j(n!=1O)u[n]=9.u[n]}9.u=u;h 9},1o:f(O,J){I(k n W 9.u)O.1i(J||9,n,9.u[n])},N:f(u){9.1e(1H.N(9.u,u));h 9},1G:f(){h(9.14==0)},1u:f(){k 1u=[];I(k n W 9.u)1u.18(n);h 1u},1z:f(){k 1z=[];I(k n W 9.u)1z.18(9.u[n]);h 1z}});f $H(u){h M 6j(u)};k 2q=M 11({1e:f(1A){j(1A.6i&&1A.6h)h 1A;k 1l=(1A.18)?1A:1A.3s(1g);h 1H.N(1l,2q.U)},6i:f(){k 3y=$A(Y);k 3x=50;j($q(3y[3y.14-1])==\'5N\')3x=3y.8k();k 1l=9.54();3y.1o(f(1A){1A=M 2q(1A);I(k i=0;i<3;i++)1l[i]=G.3e((1l[i]/ 3g * (3g - 3x)) + (1A[i] /3g*3x))});h M 2q(1l)},6h:f(){k 1l=[];I(k i=0;i<3;i++)1l.18(8j-9[i]);h M 2q(1l)}});f $C(1A){h M 2q(1A)};12.N=1H.N;12.N({8i:f(){j(9.53)6g{L.8h("8g",T,1g)}6f(e){}},1a:f(q,O){j(q==\'3u\'){j(9.3Y)O();Q j(!9.V||!9.V.3u){k 3v=f(){j(9.3Y)h;9.3Y=1g;j(9.1f)9.1f=$3Q(9.1f);1b.U.1x.1i(9,\'3u\');9.V.3u=1K}.J(9);j(L.3X&&9.3W){9.1f=f(){j([\'3Y\',\'6d\'].15(L.3X))3v()}.2k(50)}Q j(L.3X&&9.3w){L.8f("<52 2Z=6e 8e 8d=8c:8b(0)><\\/52>");$(\'6e\').8a=f(){j(9.3X==\'6d\')3v()}}Q{9.1a("89",3v);L.1a("88",3v)}}}1b.U.1a.1i(9,q,O);h 9},87:f(6c){h 9.1a(\'3u\',6c)}});12.N({63:f(){j(9.3W||9.51)h 9.86;Q h L.2r.6b||L.4N.6b},62:f(){j(9.3W||9.51)h 9.85;h L.2r.6a||L.4N.6a},60:f(){h L.2r.69},61:f(){h L.2r.68},64:f(){h 9.67||L.2r.3V},65:f(){h 9.66||L.2r.3U},3P:f(){h{\'1V\':{\'x\':9.65(),\'y\':9.64()},\'2A\':{\'x\':9.63(),\'y\':9.62()},\'3O\':{\'x\':9.61(),\'y\':9.60()}}},2O:f(){h{\'x\':0,\'y\':0}}});k X={};X.1C=M 11({2j:f(){h{2K:11.1G,2g:11.1G,5T:11.1G,5Y:X.2Q.4U,4Z:84,1J:\'4I\',2T:1g,5U:50}},1e:f(m){9.r=9.r||1K;9.2N(9.2j(),m);j(9.m.1e)9.m.1e.1i(9)},19:f(){k 2Y=M 5W().5V();j(2Y<9.2Y+9.m.4Z){9.5X=2Y-9.2Y;9.2E();9.2o()}Q{9.1s(1g);9.P=9.B;9.2o();9.1x(\'2g\',9.r,10);9.5Z()}},1U:f(B){9.P=B;9.2o();h 9},2E:f(){9.P=9.2D(9.F,9.B)},2D:f(F,B){h 9.m.5Y(9.5X,F,(B-F),9.m.4Z)},1m:f(F,B){j(!9.m.2T)9.1s();Q j(9.1f)h 9;9.F=F;9.B=B;9.2Y=M 5W().5V();9.1f=9.19.2k(G.3e(83/9.m.5U),9);9.1x(\'2K\',9.r);h 9},1s:f(2h){j(!9.1f)h 9;9.1f=$3Q(9.1f);j(!2h)9.1x(\'5T\',9.r);h 9},82:f(F,B){h 9.1m(F,B)},81:f(2h){h 9.1s(2h)}});X.1C.1T(M 5S);X.1C.1T(M 3c);X.1C.1T(M 3b);X.2Q={5F:f(t,b,c,d){h c*t/d+b},4U:f(t,b,c,d){h-c/2*(G.4T(G.1X*t/d)-1)+b}};X.23={2U:f(n,B){j(n.15(\'1A\',\'i\'))h 9.2q;j(B.15&&B.15(\' \'))h 9.3T;h 9.5R},1M:f(l,n,2X){j(!2X.18)2X=[2X];k F=2X[0],B=2X[1];j(!B&&B!=0){B=F;F=l.1W(n)}k 17=9.2U(n,B);h{F:17.1M(F),B:17.1M(B),17:17}}};X.23.5R={1M:f(K){h 3t(K)},2V:f(F,B,2W){h 2W.2D(F,B)},2F:f(K,1J){h K+1J}};X.23.3T={1M:f(K){h K.18?K:K.4Y(\' \').4X(f(v){h 3t(v)})},2V:f(F,B,2W){k P=[];I(k i=0;i9.m.3N){L.1E(\'2P\',9.1I.3l);L.1a(\'2P\',9.1I.29);9.29(o);9.1x(\'5B\',9.r)}o.1s()},29:f(o){9.4O=T;9.2l.P=o.1y;I(k z W 9.m.2u){9.K.P[z]=o.1y[z]-9.2l.1D[z];j(9.1j[z]){j($2B(9.1j[z][1])&&(9.K.P[z]>9.1j[z][1])){9.K.P[z]=9.1j[z][1];9.4O=1g}Q j($2B(9.1j[z][0])&&(9.K.P[z]<9.1j[z][0])){9.K.P[z]=9.1j[z][0];9.4O=1g}}9.r.1F(9.m.2u[z],9.K.P[z]+9.m.1J)}9.1x(\'4A\',9.r);o.1s()},7k:f(){9.3k.1E(\'4H\',9.1I.1m)},1s:f(){L.1E(\'2P\',9.1I.29);L.1E(\'5A\',9.1I.1s);9.1x(\'2g\',9.r)}});2L.1C.1T(M 3c);2L.1C.1T(M 3b);1b.N({7j:f(m){h M 2L.1C(9,1H.N(m||{},{2u:{x:\'3j\',y:\'3i\'}}))}});k 4J=M 11({2j:f(){h{3h:20,4K:1,3K:f(x,y){9.r.2a(x,y)}}},1e:f(r,m){9.2N(9.2j(),m);9.r=$(r);9.4M=([12,L].15(r))?$(L.4N):9.r},1m:f(){9.4L=9.5z.2y(9);9.4M.1a(\'2P\',9.4L)},1s:f(){9.4M.1E(\'2P\',9.4L);9.1f=$3Q(9.1f)},5z:f(o){9.1y=(9.r==12)?o.5y:o.1y;j(!9.1f)9.1f=9.1V.2k(50,9)},1V:f(){k l=9.r.3P();k 1D=9.r.2O();k 2z={\'x\':0,\'y\':0};I(k z W 9.1y){j(9.1y[z]<(9.m.3h+1D[z])&&l.1V[z]!=0)2z[z]=(9.1y[z]-9.m.3h-1D[z])*9.m.4K;Q j(9.1y[z]+9.m.3h>(l.2A[z]+1D[z])&&l.1V[z]+l.2A[z]!=l.3O[z])2z[z]=(9.1y[z]-l.2A[z]+9.m.3h-1D[z])*9.m.4K}j(2z.y||2z.x)9.1x(\'3K\',[l.1V.x+2z.x,l.1V.y+2z.y])}});4J.1T(M 3c);4J.1T(M 3b);k 4t=M 11({2j:f(){h{3K:11.1G,2g:11.1G,4x:f(1D){9.21.1F(9.p,1D+\'4I\')},3d:3g,1k:\'4G\',3f:T}},1e:f(l,21,m){9.r=$(l);9.21=$(21);9.2N(9.2j(),m);9.4w=-1;9.4v=-1;9.19=-1;9.r.1a(\'4H\',9.5w.2y(9));j(9.m.3f)9.r.1a(\'2M\',9.5x.2y(9));j(9.m.1k==\'4G\'){9.z=\'x\';9.p=\'2i\';9.1B=9.r.2x-9.21.2x;9.4y=9.21.2x/2;9.4z=9.r.4F.J(9.r)}Q j(9.m.1k==\'4E\'){9.z=\'y\';9.p=\'2w\';9.1B=9.r.2v-9.21.2v;9.4y=9.21.2v/2;9.4z=9.r.4D.J(9.r)}9.21.1F(\'1Z\',\'7i\').1F(9.p,0);k 4B={},4C={};4C[9.z]=[0,9.1B];4B[9.z]=9.p;9.29=M 2L.1C(9.21,{1j:4C,3N:0,2u:4B,2K:f(){9.3M()}.J(9),4A:f(){9.3M()}.J(9),2g:f(){9.3M();9.2h()}.J(9)});j(9.m.1e)9.m.1e.1i(9)},1U:f(19){j(19>9.m.3d)19=9.m.3d;Q j(19<0)19=0;9.19=19;9.3L();9.2h();9.1x(\'4x\',9.5v(9.19)+\'\');h 9},5x:f(o){j(o.3f<0)9.1U(9.19+1);Q j(o.3f>0)9.1U(9.19-1);o.1s()},5w:f(o){k 1Z=o.1y[9.z]-9.4z()-9.4y;j(1Z>9.1B)1Z=9.1B;Q j(1Z<0)1Z=0;9.19=9.4u(1Z);9.3L();9.2h();9.1x(\'4x\',1Z+\'\')},3M:f(){9.19=9.4u(9.29.K.P[9.z]);9.3L()},3L:f(){j(9.4w!=9.19){9.4w=9.19;9.1x(\'3K\',9.19)}},2h:f(){j(9.4v!==9.19){9.4v=9.19;9.1x(\'2g\',9.19+\'\')}},4u:f(1Z){h G.3e(1Z/9.1B*9.m.3d)},5v:f(19){h(9.1B)*19/9.m.3d}});4t.1T(M 3c);4t.1T(M 3b);',62,619,'|||||||||this||||||function||return||if|var|el|options|property|event||type|element|||obj|||||||to||||from|Math||for|bind|value|document|new|extend|fn|now|else|args||false|prototype|events|in|Fx|arguments|||Class|window||length|test||css|push|step|addEvent|Element|case|className|initialize|timer|true|style|call|limit|mode|rgb|start|parsed|each|found|param|Array|stop|parent|keys|selector|elements|fireEvent|page|values|color|max|Base|pos|removeEvent|setStyle|empty|Object|bound|unit|null|source|parse|Elements|key|break|filters|array|properties|implement|set|scroll|getStyle|PI|opacity|position||knob|pow|CSS|name||parentNode||match|drag|scrollTo|iCss|switch|delay|create|current|onComplete|end|left|getOptions|periodical|mouse|apply|margin|increase|iTo|Color|documentElement|previous|returns|modifiers|offsetHeight|top|offsetWidth|bindWithEvent|change|size|chk|toInt|compute|setNow|getValue|getElementsBySelector|chains|HTMLElement|hex|onStart|Drag|mousewheel|setOptions|getOffsets|mousemove|Transitions|wrapper|offset|wait|select|getNow|fx|fromTo|time|id|att|Garbage||text|while|replace|newArray||||item|Options|Events|steps|round|wheel|100|area|height|width|handle|checkAndDrag|sqrt|sin|min|iNow|iFrom|join|hexToRgb|parseFloat|domready|domReady|ie|alpha|colors|undefined|hasClass|getElements|getTag|filter|option|Event|toLowerCase|target|rgbToHex|items|onChange|checkStep|draggedKnob|snap|scrollSize|getSize|clear|5625|hidden|Multi|scrollLeft|scrollTop|khtml|readyState|loaded|remove||tagName|getElement|sel|getElementById|clean||splice|preventDefault|stopPropagation|relatedTarget|offsetTop|offsetLeft|setProperty|attribute|whitespace|indexOf|currentStyle|visibility|string|appendChild|inject|instanceof|ms|attempt|bit|forEach|pr0t0typ3|klass|Slider|toStep|previousEnd|previousChange|onTick|half|getPos|onDrag|modSlide|limSlide|getTop|vertical|getLeft|horizontal|mousedown|px|Scroller|velocity|coord|mousemover|body|out|bounceOut|70158|asin|abs|cos|sineInOut|layout|iProps|map|split|duration||opera|script|ie6|copy|operator|getElementsByTagName|els|on|Function|right|pageY|pageX|code|String|DOMMouseScroll|trash|removeEvents|offs|getBrother|getNext|what|gecko|camelCase|object|Native|result|typeof|parseInt|charAt|results|toPosition|clickedElement|scrolledElement|client|getCoords|mouseup|onSnap|distance|bounceIn|525|linear|slideOut|slideIn|hide|adopt|injectAfter|toElement|full|number|iParsed|Styles|Style|Single|Chain|onCancel|fps|getTime|Date|cTime|transition|callChain|getScrollHeight|getScrollWidth|getHeight|getWidth|getScrollTop|getScrollLeft|pageXOffset|pageYOffset|scrollWidth|scrollHeight|clientHeight|clientWidth|init|complete|ie_ready|catch|try|invert|mix|Hash|getAttribute|filterByAttribute|filterByTagName|filterByClassName|filterById|w_|defaults|which|clientY|clientX|special|120|wheelDelta|nodeType|unload|collect|selectedIndex|bottom|class|html|setAttribute|default|replaceWith|createElement|setStyles|childNodes|Sibling|evType|removeEventListener|addEventListener|hyphenate|defaultView|visible|setOpacity|cssText|addClass|removeClass|contents|inside|after|before|insertBefore|where|_elements_extended_|_element_extended_|err|toFloat||Number|trim|toUpperCase|params|regex|iterable|some|every|random|picked|parentize|noinit|relative|makeResizable|detach|bounceInOut|984375|625|9375|backInOut|backOut|backIn|elasticInOut|elasticOut|elasticIn|circInOut|circOut|circIn|expoInOut|expoOut|expoIn|sineOut|sineIn|quintInOut|quintOut|quintIn|quartInOut|quartOut|quartIn|cubicInOut|cubicOut|cubicIn|quadInOut|quadOut|quadIn|toggle|show|overflow|div|Slide|toRight|toLeft|toBottom|toTop|Scroll|effects|effect|clearTimer|custom|1000|500|innerHeight|innerWidth|onDomReady|DOMContentLoaded|load|onreadystatechange|void|javascript|src|defer|write|BackgroundImageCache|execCommand|disableImageCache|255|pop|get|tag|getElementsByClassName|ES|clearChain|chain|delete|backspace|space|esc|down|up|enter|returnValue|cancelBubble|mouseout|fromElement|mouseover|button|rightClick|click|fromCharCode|keyCode|detail|metaKey|meta|altKey|alt|ctrlKey|control|shiftKey|shift|srcElement|Window|textarea|password|radio|checkbox|checked|input|getPosition|offsetParent|do|getProperty|innerHTML|setHTML|setProperties|attributes|getChildren|getParent|previousSibling|lastChild|getLast|nextSibling|firstChild|getFirst|next|getPrevious|detachEvent|addEvents|attachEvent|getPropertyValue|getComputedStyle|padding|zoom|hasLayout|toggleClass|createTextNode|styleSheet|appendText|replaceChild|cloneNode|clone|removeChild|injectInside|injectBefore|embed|bindAsEventListener|pass|finally|setInterval|setTimeout|concat|toString|transparent|capitalize|RegExp|associate|getBoxObjectFor|taintEnabled|navigator|all|ie7|XMLHttpRequest|ActiveXObject|clearInterval|clearTimeout|floor|pick|textnode|nodeValue|nodeName'.split('|'),0,{})) diff --git a/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/scripts/mootools.uncompressed.js b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/scripts/mootools.uncompressed.js new file mode 100644 index 0000000..d0ef7e8 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/doc/js/smoothgallery/scripts/mootools.uncompressed.js @@ -0,0 +1,4078 @@ +/* +Script: Moo.js + My Object Oriented javascript. + +Author: + Valerio Proietti, + +License: + MIT-style license. + +Credits: + - Class is slightly based on Base.js (c) 2006 Dean Edwards, License + - Some functions are based on those found in prototype.js (c) 2005 Sam Stephenson sam [at] conio [dot] net, MIT-style license + - Documentation by Aaron Newton (aaron.newton [at] cnet [dot] com) and Valerio Proietti. +*/ + +/* +Class: Class + The base class object of the framework. + +Arguments: + properties - the collection of properties that apply to the class. Creates a new class, its initialize method will fire upon class instantiation. + +Example: + (start code) + var Cat = new Class({ + initialize: function(name){ + this.name = name; + } + }); + var myCat = new Cat('Micia'); + alert myCat.name; //alerts 'Micia' + (end) +*/ + +var Class = function(properties){ + var klass = function(){ + if (this.initialize && arguments[0] != 'noinit') return this.initialize.apply(this, arguments); + else return this; + }; + for (var property in this) klass[property] = this[property]; + klass.prototype = properties; + return klass; +}; + +/* +Property: empty + Returns an empty function +*/ + +Class.empty = function(){}; + +Class.prototype = { + + /* + Property: extend + Returns the copy of the Class extended with the passed in properties. + + Arguments: + properties - the properties to add to the base class in this new Class. + + Example: + (start code) + var Animal = new Class({ + initialize: function(age){ + this.age = age; + } + }); + var Cat = Animal.extend({ + initialize: function(name, age){ + this.parent(age); //will call the previous initialize; + this.name = name; + } + }); + var myCat = new Cat('Micia', 20); + alert myCat.name; //alerts 'Micia' + alert myCat.age; //alerts 20 + (end) + */ + + extend: function(properties){ + var pr0t0typ3 = new this('noinit'); + + var parentize = function(previous, current){ + if (!previous.apply || !current.apply) return false; + return function(){ + this.parent = previous; + return current.apply(this, arguments); + }; + }; + + for (var property in properties){ + var previous = pr0t0typ3[property]; + var current = properties[property]; + if (previous && previous != current) current = parentize(previous, current) || current; + pr0t0typ3[property] = current; + } + return new Class(pr0t0typ3); + }, + + /* + Property: implement + Implements the passed in properties to the base Class prototypes, altering the base class, unlike . + + Arguments: + properties - the properties to add to the base class. + + Example: + (start code) + var Animal = new Class({ + initialize: function(age){ + this.age = age; + } + }); + Animal.implement({ + setName: function(name){ + this.name = name + } + }); + var myAnimal = new Animal(20); + myAnimal.setName('Micia'); + alert(myAnimal.name); //alerts 'Micia' + (end) + */ + + implement: function(properties){ + for (var property in properties) this.prototype[property] = properties[property]; + } + +}; + +/* Section: Object related Functions */ + +/* +Function: Object.extend + Copies all the properties from the second passed object to the first passed Object. + If you do myWhatever.extend = Object.extend the first parameter will become myWhatever, and your extend function will only need one parameter. + +Example: + (start code) + var firstOb = { + 'name': 'John', + 'lastName': 'Doe' + }; + var secondOb = { + 'age': '20', + 'sex': 'male', + 'lastName': 'Dorian' + }; + Object.extend(firstOb, secondOb); + //firstOb will become: + { + 'name': 'John', + 'lastName': 'Dorian', + 'age': '20', + 'sex': 'male' + }; + (end) + +Returns: + The first object, extended. +*/ + +Object.extend = function(){ + var args = arguments; + args = (args[1]) ? [args[0], args[1]] : [this, args[0]]; + for (var property in args[1]) args[0][property] = args[1][property]; + return args[0]; +}; + +/* +Function: Object.Native + Will add a .extend method to the objects passed as a parameter, equivalent to + +Arguments: + a number of classes/native javascript objects + +*/ + +Object.Native = function(){ + for (var i = 0; i < arguments.length; i++) arguments[i].extend = Class.prototype.implement; +}; + +new Object.Native(Function, Array, String, Number, Class); + +/* +Script: Utility.js + Contains Utility functions + +Author: + Valerio Proietti, + +License: + MIT-style license. +*/ + +//htmlelement mapping + +if (typeof HTMLElement == 'undefined'){ + var HTMLElement = Class.empty; + HTMLElement.prototype = {}; +} + +/* +Function: $type + Returns the type of object that matches the element passed in. + +Arguments: + obj - the object to inspect. + +Example: + >var myString = 'hello'; + >$type(myString); //returns "string" + +Returns: + 'element' - if obj is a DOM element node + 'textnode' - if obj is a DOM text node + 'whitespace' - if obj is a DOM whitespace node + 'array' - if obj is an array + 'object' - if obj is an object + 'string' - if obj is a string + 'number' - if obj is a number + 'boolean' - if obj is a boolean + 'function' - if obj is a function + false - (boolean) if the object is not defined or none of the above. +*/ + +function $type(obj){ + if (obj === null || obj === undefined) return false; + var type = typeof obj; + if (type == 'object'){ + if (obj instanceof HTMLElement) return 'element'; + if (obj instanceof Array) return 'array'; + if (obj.nodeName){ + switch (obj.nodeType){ + case 1: return 'element'; + case 3: return obj.nodeValue.test('\\S') ? 'textnode' : 'whitespace'; + } + } + } + return type; +}; + +/* +Function: $chk + Returns true if the passed in value/object exists or is 0, otherwise returns false. + Useful to accept zeroes. +*/ + +function $chk(obj){ + return !!(obj || obj === 0); +}; + +/* +Function: $pick + Returns the first object if defined, otherwise returns the second. +*/ + +function $pick(obj, picked){ + return ($type(obj)) ? obj : picked; +}; + +/* +Function: $random + Returns a random integer number between the two passed in values. + +Arguments: + min - integer, the minimum value (inclusive). + max - integer, the maximum value (inclusive). + +Returns: + a random integer between min and max. +*/ + +function $random(min, max){ + return Math.floor(Math.random() * (max - min + 1) + min); +}; + +/* +Function: $clear + clears a timeout or an Interval. + +Returns: + null + +Arguments: + timer - the setInterval or setTimeout to clear. + +Example: + >var myTimer = myFunction.delay(5000); //wait 5 seconds and execute my function. + >myTimer = $clear(myTimer); //nevermind + +See also: + , +*/ + +function $clear(timer){ + clearTimeout(timer); + clearInterval(timer); + return null; +}; + +/* Section: Browser Detection */ + +/* +Properties: + window.ie - will be set to true if the current browser is internet explorer (any). + window.ie6 - will be set to true if the current browser is internet explorer 6. + window.ie7 - will be set to true if the current browser is internet explorer 7. + window.khtml - will be set to true if the current browser is Safari/Konqueror. + window.gecko - will be set to true if the current browser is Mozilla/Gecko. +*/ + +if (window.ActiveXObject) window.ie = window[window.XMLHttpRequest ? 'ie7' : 'ie6'] = true; +else if (document.childNodes && !document.all && !navigator.taintEnabled) window.khtml = true; +else if (document.getBoxObjectFor != null) window.gecko = true; + +/* +Script: Array.js + Contains Array prototypes and the function <$A>; + +Author: + Valerio Proietti, + +License: + MIT-style license. +*/ + +/* +Class: Array + A collection of The Array Object prototype methods. +*/ + +//emulated methods + +/* +Property: forEach + Iterates through an array; This method is only available for browsers without native *forEach* support. + For more info see +*/ + +Array.prototype.forEach = Array.prototype.forEach || function(fn, bind){ + for (var i = 0; i < this.length; i++) fn.call(bind, this[i], i, this); +}; + +/* +Property: map + This method is provided only for browsers without native *map* support. + For more info see +*/ + +Array.prototype.map = Array.prototype.map || function(fn, bind){ + var results = []; + for (var i = 0; i < this.length; i++) results[i] = fn.call(bind, this[i], i, this); + return results; +}; + +/* +Property: every + This method is provided only for browsers without native *every* support. + For more info see +*/ + +Array.prototype.every = Array.prototype.every || function(fn, bind){ + for (var i = 0; i < this.length; i++){ + if (!fn.call(bind, this[i], i, this)) return false; + } + return true; +}; + +/* +Property: some + This method is provided only for browsers without native *some* support. + For more info see +*/ + +Array.prototype.some = Array.prototype.some || function(fn, bind){ + for (var i = 0; i < this.length; i++){ + if (fn.call(bind, this[i], i, this)) return true; + } + return false; +}; + +/* +Property: indexOf + This method is provided only for browsers without native *indexOf* support. + For more info see +*/ + +Array.prototype.indexOf = Array.prototype.indexOf || function(item, from){ + from = from || 0; + if (from < 0) from = Math.max(0, this.length + from); + while (from < this.length){ + if(this[from] === item) return from; + from++; + } + return -1; +}; + +//custom methods + +Array.extend({ + + /* + Property: each + Same as . + + Arguments: + fn - the function to execute with each item in the array + bind - optional, the object that the "this" of the function will refer to. + + Example: + >var Animals = ['Cat', 'Dog', 'Coala']; + >Animals.forEach(function(animal){ + > document.write(animal) + >}); + */ + + each: Array.prototype.forEach, + + /* + Property: copy + Copy the array and returns it. + + Returns: + an Array + + Example: + >var letters = ["a","b","c"]; + >var copy = ["a","b","c"].copy(); + */ + + copy: function(){ + var newArray = []; + for (var i = 0; i < this.length; i++) newArray[i] = this[i]; + return newArray; + }, + + /* + Property: remove + Removes all occurrences of an item from the array. + + Arguments: + item - the item to remove + + Returns: + the Array with all occurrences of the item removed. + + Example: + >["1","2","3","2"].remove("2") // ["1","3"]; + */ + + remove: function(item){ + var i = 0; + while (i < this.length){ + if (this[i] == item) this.splice(i, 1); + else i++; + } + return this; + }, + + /* + Property: test + Tests an array for the presence of an item. + + Arguments: + item - the item to search for in the array. + from - optional, the index at which to begin the search, default is 0. If negative, it is taken as the offset from the end of the array. + + Returns: + true - the item was found + false - it wasn't + + Example: + >["a","b","c"].test("a"); // true + >["a","b","c"].test("d"); // false + */ + + test: function(item, from){ + return this.indexOf(item, from) != -1; + }, + + /* + Property: extend + Extends an array with another + + Arguments: + newArray - the array to extend ours with + + Example: + >var Animals = ['Cat', 'Dog', 'Coala']; + >Animals.extend(['Lizard']); + >//Animals is now: ['Cat', 'Dog', 'Coala', 'Lizard']; + */ + + extend: function(newArray){ + for (var i = 0; i < newArray.length; i++) this.push(newArray[i]); + return this; + }, + + /* + Property: associate + Creates an object with key-value pairs based on the array of keywords passed in + and the current content of the array. + + Arguments: + keys - the array of keywords. + + Example: + (start code) + var Animals = ['Cat', 'Dog', 'Coala', 'Lizard']; + var Speech = ['Miao', 'Bau', 'Fruuu', 'Mute']; + var Speeches = Animals.associate(speech); + //Speeches['Miao'] is now Cat. + //Speeches['Bau'] is now Dog. + //... + (end) + */ + + associate: function(keys){ + var obj = {}, length = Math.min(this.length, keys.length); + for (var i = 0; i < length; i++) obj[keys[i]] = this[i]; + return obj; + } + +}); + +/* Section: Utility Functions */ + +/* +Function: $A() + Same as , but as function. + Useful to apply Array prototypes to iterable objects, as a collection of DOM elements or the arguments object. + +Example: + (start code) + function myFunction(){ + $A(arguments).each(argument, function(){ + alert(argument); + }); + }; + //the above will alert all the arguments passed to the function myFunction. + (end) +*/ + +function $A(array){ + return Array.prototype.copy.call(array); +}; + +/* +Function: $each + use to iterate through iterables that are not regular arrays, such as builtin getElementsByTagName calls, or arguments of a function. + +Arguments: + iterable - an iterable element. + function - function to apply to the iterable. + bind - optional, the 'this' of the function will refer to this object. +*/ + +function $each(iterable, fn, bind){ + return Array.prototype.forEach.call(iterable, fn, bind); +}; + +/* +Script: String.js + Contains String prototypes and Number prototypes. + +Author: + Valerio Proietti, + +License: + MIT-style license. +*/ + +/* +Class: String + A collection of The String Object prototype methods. +*/ + +String.extend({ + + /* + Property: test + Tests a string with a regular expression. + + Arguments: + regex - the regular expression you want to match the string with + params - optional, any parameters you want to pass to the regex ('g' has no effect) + + Returns: + true if a match for the regular expression is found in the string, false if not. + See + + Example: + >"I like cookies".test("cookie"); // returns true + >"I like cookies".test("COOKIE", "i") // ignore case, returns true + >"I like cookies".test("cake"); // returns false + */ + + test: function(regex, params){ + return new RegExp(regex, params).test(this); + }, + + /* + Property: toInt + parses a string to an integer. + + Returns: + either an int or "NaN" if the string is not a number. + + Example: + >var value = "10px".toInt(); // value is 10 + */ + + toInt: function(){ + return parseInt(this); + }, + + toFloat: function(){ + return parseFloat(this); + }, + + /* + Property: camelCase + Converts a hiphenated string to a camelcase string. + + Example: + >"I-like-cookies".camelCase(); //"ILikeCookies" + + Returns: + the camel cased string + */ + + camelCase: function(){ + return this.replace(/-\D/g, function(match){ + return match.charAt(1).toUpperCase(); + }); + }, + + /* + Property: hyphenate + Converts a camelCased string to a hyphen-ated string. + + Example: + >"ILikeCookies".hyphenate(); //"I-like-cookies" + */ + + hyphenate: function(){ + return this.replace(/\w[A-Z]/g, function(match){ + return (match.charAt(0)+'-'+match.charAt(1).toLowerCase()); + }); + }, + + /* + Property: capitalize + Converts the first letter in each word of a string to Uppercase. + + Example: + >"i like cookies".capitalize(); //"I Like Cookies" + + Returns: + the capitalized string + */ + + capitalize: function(){ + return this.toLowerCase().replace(/\b[a-z]/g, function(match){ + return match.toUpperCase(); + }); + }, + + /* + Property: trim + Trims the leading and trailing spaces off a string. + + Example: + >" i like cookies ".trim() //"i like cookies" + + Returns: + the trimmed string + */ + + trim: function(){ + return this.replace(/^\s+|\s+$/g, ''); + }, + + /* + Property: clean + trims () a string AND removes all the double spaces in a string. + + Returns: + the cleaned string + + Example: + >" i like cookies \n\n".clean() //"i like cookies" + */ + + clean: function(){ + return this.replace(/\s{2,}/g, ' ').trim(); + }, + + /* + Property: rgbToHex + Converts an RGB value to hexidecimal. The string must be in the format of "rgb(255, 255, 255)" or "rgba(255, 255, 255, 1)"; + + Arguments: + array - boolean value, defaults to false. Use true if you want the array ['FF', '33', '00'] as output instead of #FF3300 + + Returns: + hex string or array. returns transparent if the fourth value of rgba in input string is 0, + + Example: + >"rgb(17,34,51)".rgbToHex(); //"#112233" + >"rgba(17,34,51,0)".rgbToHex(); //"transparent" + >"rgb(17,34,51)".rgbToHex(true); //[11,22,33] + */ + + rgbToHex: function(array){ + var rgb = this.match(/\d{1,3}/g); + return (rgb) ? rgb.rgbToHex(array) : false; + }, + + /* + Property: hexToRgb + Converts a hexidecimal color value to RGB. Input string must be the hex color value (with or without the hash). Also accepts triplets ('333'); + + Arguments: + array - boolean value, defaults to false. Use true if you want the array ['255', '255', '255'] as output instead of "rgb(255,255,255)"; + + Returns: + rgb string or array. + + Example: + >"#112233".hexToRgb(); //"rgb(17,34,51)" + >"#112233".hexToRgb(true); //[17,34,51] + */ + + hexToRgb: function(array){ + var hex = this.match('^#?(\\w{1,2})(\\w{1,2})(\\w{1,2})$'); + return (hex) ? hex.hexToRgb(array) : false; + } + +}); + +Array.extend({ + + rgbToHex: function(array){ + if (this.length < 3) return false; + if (this[3] && this[3] == 0) return 'transparent'; + var hex = []; + for (var i = 0; i < 3; i++){ + var bit = (this[i]-0).toString(16); + hex.push(bit.length == 1 ? '0'+bit : bit); + } + return array ? hex : '#'+hex.join(''); + }, + + hexToRgb: function(array){ + if (this.length != 4) return false; + var rgb = []; + for (var i = 1; i < 4; i++){ + if (this[i].length == 1) this[i] += this[i]; + rgb.push(parseInt(this[i], 16)); + } + return array ? rgb : 'rgb('+rgb.join(',')+')'; + } + +}); + +/* +Class: Number + contains the internal method toInt. +*/ + +Number.extend({ + + /* + Property: toInt + Returns this number; useful because toInt must work on both Strings and Numbers. + */ + + toInt: function(){ + return parseInt(this); + }, + + toFloat: function(){ + return parseFloat(this); + } + +}); + +/* +Script: Function.js + Contains Function prototypes and utility functions . + +Author: + Valerio Proietti, + +License: + MIT-style license. + +Credits: + - Some functions are inspired by those found in prototype.js (c) 2005 Sam Stephenson sam [at] conio [dot] net, MIT-style license +*/ + +/* +Class: Function + A collection of The Function Object prototype methods. +*/ + +Function.extend({ + + create: function(options){ + var fn = this; + options = Object.extend({ + 'bind': fn, + 'event': false, + 'arguments': null, + 'delay': false, + 'periodical': false, + 'attempt': false + }, options || {}); + if (options.arguments != null && typeof options.arguments != 'undefined' && !(options.arguments instanceof Array)) + options.arguments = [options.arguments]; + return function(event){ + var args = options.arguments || arguments; + if (options.event){ + event = (options.event === true) ? event || window.event : new options.event(event); + args = [event].concat(args); + } + var returns = function(){ + return fn.apply(options.bind, args); + }; + if (options.delay) return setTimeout(returns, options.delay); + if (options.periodical) return setInterval(returns, options.periodical); + if (options.attempt){ + try { + var result = returns(); + } catch(err){ + result = err; + } finally { + return result; + } + } else return returns(); + }; + }, + + /* + Property: pass + Shortcut to create closures with arguments and bind. + + Returns: + a function. + + Arguments: + args - the arguments passed. must be an array if arguments > 1 + bind - optional, the object that the "this" of the function will refer to. + + Example: + >myFunction.pass([arg1, arg2], myElement); + */ + + pass: function(args, bind){ + return this.create({'arguments': args, 'bind': bind}); + }, + + /* + Property: attempt + Tries to execute the function, returns either the function results or the error. + + Arguments: + args - the arguments passed. must be an array if arguments > 1 + bind - optional, the object that the "this" of the function will refer to. + + Example: + >myFunction.attempt([arg1, arg2], myElement); + */ + + attempt: function(args, bind){ + return this.create({'arguments': args, 'bind': bind, 'attempt': true})(); + }, + + /* + Property: bind + method to easily create closures with "this" altered. + + Arguments: + bind - optional, the object that the "this" of the function will refer to. + args - optional, the arguments passed. must be an array if arguments > 1 + + Returns: + a function. + + Example: + >function myFunction(){ + > this.setStyle('color', 'red'); + > // note that 'this' here refers to myFunction, not an element + > // we'll need to bind this function to the element we want to alter + >}; + >var myBoundFunction = myFunction.bind(myElement); + >myBoundFunction(); // this will make the element myElement red. + */ + + bind: function(bind, args){ + return this.create({'bind': bind, 'arguments': args}); + }, + + /* + Property: bindAsEventListener + cross browser method to pass event firer + + Arguments: + bind - optional, the object that the "this" of the function will refer to. + args - optional, the arguments passed. must be an array if arguments > 1 + + Returns: + a function with the parameter bind as its "this" and as a pre-passed argument event or window.event, depending on the browser. + + Example: + >function myFunction(event){ + > alert(event.clientx) //returns the coordinates of the mouse.. + >}; + >myElement.onclick = myFunction.bindAsEventListener(myElement); + */ + + bindAsEventListener: function(bind, args){ + return this.create({'bind': bind, 'event': true, 'arguments': args}); + }, + + /* + Property: delay + Delays the execution of a function by a specified duration. + + Arguments: + ms - the duration to wait in milliseconds + bind - optional, the object that the "this" of the function will refer to. + args - optional, the arguments passed. must be an array if arguments > 1 + + Example: + >myFunction.delay(50, myElement) //wait 50 milliseconds, then call myFunction and bind myElement to it + >(function(){alert('one second later...')}).delay(1000); //wait a second and alert + */ + + delay: function(ms, bind, args){ + return this.create({'delay': ms, 'bind': bind, 'arguments': args})(); + }, + + /* + Property: periodical + Executes a function in the specified intervals of time + + Arguments: + ms - the duration of the intervals between executions. + bind - optional, the object that the "this" of the function will refer to. + args - optional, the arguments passed. must be an array if arguments > 1 + */ + + periodical: function(ms, bind, args){ + return this.create({'periodical': ms, 'bind': bind, 'arguments': args})(); + } + +}); + +/* +Script: Element.js + Contains useful Element prototypes, to be used with the dollar function <$>. + +Author: + Valerio Proietti, + +License: + MIT-style license. + +Credits: + - Some functions are inspired by those found in prototype.js (c) 2005 Sam Stephenson sam [at] conio [dot] net, MIT-style license +*/ + +/* +Class: Element + Custom class to allow all of its methods to be used with any DOM element via the dollar function <$>. +*/ + +var Element = new Class({ + + /* + Property: initialize + Creates a new element of the type passed in. + + Arguments: + el - the tag name for the element you wish to create. + + Example: + >var div = new Element('div'); + */ + + initialize: function(el){ + if ($type(el) == 'string') el = document.createElement(el); + return $(el); + } + +}); + +/* +Function: $() + returns the element passed in with all the Element prototypes applied. + +Arguments: + el - a reference to an actual element or a string representing the id of an element + +Example: + >$('myElement') // gets a DOM element by id with all the Element prototypes applied. + >var div = document.getElementById('myElement'); + >$(div) //returns an Element also with all the mootools extentions applied. + + You'll use this when you aren't sure if a variable is an actual element or an id, as + well as just shorthand for document.getElementById(). + +Returns: + a DOM element or false (if no id was found). + +Note: + you need to call $ on an element only once to get all the prototypes. + But its no harm to call it multiple times, as it will detect if it has been already extended. +*/ + +function $(el){ + if (!el) return false; + if (el._element_extended_ || [window, document].test(el)) return el; + if ($type(el) == 'string') el = document.getElementById(el); + if ($type(el) != 'element') return false; + if (['object', 'embed'].test(el.tagName.toLowerCase()) || el.extend) return el; + el._element_extended_ = true; + Garbage.collect(el); + el.extend = Object.extend; + if (!(el instanceof HTMLElement)) el.extend(Element.prototype); + return el; +}; + +//elements class + +var Elements = new Class({}); + +new Object.Native(Elements); + +document.getElementsBySelector = document.getElementsByTagName; + +/* +Function: $$() + Selects, and extends DOM elements. + +Arguments: + HTMLCollection(document.getElementsByTagName, element.childNodes), an array of elements, a string. + +Note: + if you loaded , $$ will also accept CSS Selectors. + +Example: + >$$('a') //an array of all anchor tags on the page + >$$('a', 'b') //an array of all anchor and bold tags on the page + >$$('#myElement') //array containing only the element with id = myElement. (only with ) + >$$('#myElement a.myClass') //an array of all anchor tags with the class "myClass" within the DOM element with id "myElement" (only with ) + +Returns: + array - array of all the dom elements matched +*/ + +function $$(){ + if (!arguments) return false; + if (arguments.length == 1){ + if (!arguments[0]) return false; + if (arguments[0]._elements_extended_) return arguments[0]; + } + var elements = []; + $each(arguments, function(selector){ + switch ($type(selector)){ + case 'element': elements.push($(selector)); break; + case 'string': selector = document.getElementsBySelector(selector); + default: + if (selector.length){ + $each(selector, function(el){ + if ($(el)) elements.push(el); + }); + } + } + }); + elements._elements_extended_ = true; + return Object.extend(elements, new Elements); +}; + +Elements.Multi = function(property){ + return function(){ + var args = arguments; + var items = []; + var elements = true; + $each(this, function(el){ + var returns = el[property].apply(el, args); + if ($type(returns) != 'element') elements = false; + items.push(returns); + }); + if (elements) items = $$(items); + return items; + }; +}; + +Element.extend = function(properties){ + for (var property in properties){ + HTMLElement.prototype[property] = properties[property]; + Element.prototype[property] = properties[property]; + Elements.prototype[property] = Elements.Multi(property); + } +}; + +Element.extend({ + + inject: function(el, where){ + el = $(el) || new Element(el); + switch (where){ + case "before": $(el.parentNode).insertBefore(this, el); break; + case "after": + if (!el.getNext()) $(el.parentNode).appendChild(this); + else $(el.parentNode).insertBefore(this, el.getNext()); + break; + case "inside": el.appendChild(this); + } + return this; + }, + + /* + Property: injectBefore + Inserts the Element before the passed element. + + Parameteres: + el - a string representing the element to be injected in (myElementId, or div), or an element reference. + If you pass div or another tag, the element will be created. + + Example: + >html: + >

+ >
+ >js: + >$('mySecondElement').injectBefore('myElement'); + >resulting html: + >
+ >
+ + */ + + injectBefore: function(el){ + return this.inject(el, 'before'); + }, + + /* + Property: injectAfter + Same as , but inserts the element after. + */ + + injectAfter: function(el){ + return this.inject(el, 'after'); + }, + + /* + Property: injectInside + Same as , but inserts the element inside. + */ + + injectInside: function(el){ + return this.inject(el, 'inside'); + }, + + /* + Property: adopt + Inserts the passed element inside the Element. Works as but in reverse. + + Parameteres: + el - a string representing the element to be injected in (myElementId, or div), or an element reference. + If you pass div or another tag, the element will be created. + */ + + adopt: function(el){ + this.appendChild($(el) || new Element(el)); + return this; + }, + + /* + Property: remove + Removes the Element from the DOM. + + Example: + >$('myElement').remove() //bye bye + */ + + remove: function(){ + this.parentNode.removeChild(this); + return this; + }, + + /* + Property: clone + Clones the Element and returns the cloned one. + + Returns: + the cloned element + + Example: + >var clone = $('myElement').clone().injectAfter('myElement'); + >//clones the Element and append the clone after the Element. + */ + + clone: function(contents){ + var el = this.cloneNode(contents !== false); + return $(el); + }, + + /* + Property: replaceWith + Replaces the Element with an element passed. + + Parameteres: + el - a string representing the element to be injected in (myElementId, or div), or an element reference. + If you pass div or another tag, the element will be created. + + Returns: + the passed in element + + Example: + >$('myOldElement').replaceWith($('myNewElement')); //$('myOldElement') is gone, and $('myNewElement') is in its place. + */ + + replaceWith: function(el){ + el = $(el) || new Element(el); + this.parentNode.replaceChild(el, this); + return el; + }, + + /* + Property: appendText + Appends text node to a DOM element. + + Arguments: + text - the text to append. + + Example: + >
hey
+ >$('myElement').appendText(' howdy'); //myElement innerHTML is now "hey howdy" + */ + + appendText: function(text){ + if (window.ie){ + switch(this.getTag()){ + case 'style': this.styleSheet.cssText = text; return this; + case 'script': this.setProperty('text', text); return this; + } + } + this.appendChild(document.createTextNode(text)); + return this; + }, + + /* + Property: hasClass + Tests the Element to see if it has the passed in className. + + Returns: + true - the Element has the class + false - it doesn't + + Arguments: + className - the class name to test. + + Example: + >
+ >$('myElement').hasClass('testClass'); //returns true + */ + + hasClass: function(className){ + return this.className.test('(?:^|\\s+)' + className + '(?:\\s+|$)'); + }, + + /* + Property: addClass + Adds the passed in class to the Element, if the element doesnt already have it. + + Arguments: + className - the class name to add + + Example: + >
+ >$('myElement').addClass('newClass'); //
+ */ + + addClass: function(className){ + if (!this.hasClass(className)) this.className = (this.className+' '+className).clean(); + return this; + }, + + /* + Property: removeClass + works like , but removes the class from the element. + */ + + removeClass: function(className){ + if (this.hasClass(className)) this.className = this.className.replace(className, '').clean(); + return this; + }, + + /* + Property: toggleClass + Adds or removes the passed in class name to the element, depending on if it's present or not. + + Arguments: + className - the class to add or remove + + Example: + >
+ >$('myElement').toggleClass('myClass'); + >
+ >$('myElement').toggleClass('myClass'); + >
+ */ + + toggleClass: function(className){ + return this.hasClass(className) ? this.removeClass(className) : this.addClass(className); + }, + + /* + Property: setStyle + Sets a css property to the Element. + + Arguments: + property - the property to set + value - the value to which to set it + + Example: + >$('myElement').setStyle('width', '300px'); //the width is now 300px + */ + + setStyle: function(property, value){ + if (property == 'opacity') this.setOpacity(parseFloat(value)); + else this.style[property.camelCase()] = (value.push) ? value.rgbToHex() : value; + return this; + }, + + /* + Property: setStyles + Applies a collection of styles to the Element. + + Arguments: + source - an object or string containing all the styles to apply + + Examples: + >$('myElement').setStyles({ + > border: '1px solid #000', + > width: '300px', + > height: '400px' + >}); + + OR + + >$('myElement').setStyle('border: 1px solid #000; width: 300px; height: 400px;'); + */ + + setStyles: function(source){ + switch ($type(source)){ + case 'object': + for (var property in source) this.setStyle(property, source[property]); + break; + case 'string': + if (window.ie) this.cssText = source; + else this.setAttribute('style', source); + } + return this; + }, + + /* + Property: setOpacity + Sets the opacity of the Element, and sets also visibility == "hidden" if opacity == 0, and visibility = "visible" if opacity == 1. + + Arguments: + opacity - Accepts numbers from 0 to 1. + + Example: + >$('myElement').setOpacity(0.5) //make it 50% transparent + */ + + setOpacity: function(opacity){ + if (opacity == 0){ + if(this.style.visibility != "hidden") this.style.visibility = "hidden"; + } else { + if(this.style.visibility != "visible") this.style.visibility = "visible"; + } + if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1; + if (window.ie) this.style.filter = "alpha(opacity=" + opacity*100 + ")"; + this.style.opacity = this.opacity = opacity; + return this; + }, + + /* + Property: getStyle + Returns the style of the Element given the property passed in. + + Arguments: + property - the css style property you want to retrieve + + Example: + >$('myElement').getStyle('width'); //returns "400px" + >//but you can also use + >$('myElement').getStyle('width').toInt(); //returns "400" + + Returns: + the style as a string + */ + + getStyle: function(property){ + property = property.camelCase(); + var style = this.style[property] || false; + if (!$chk(style)){ + if (property == 'opacity') return $chk(this.opacity) ? this.opacity : 1; + if (['margin', 'padding'].test(property)){ + return [this.getStyle(property+'-top') || 0, this.getStyle(property+'-right') || 0, + this.getStyle(property+'-bottom') || 0, this.getStyle(property+'-left') || 0].join(' '); + } + if (document.defaultView) style = document.defaultView.getComputedStyle(this, null).getPropertyValue(property.hyphenate()); + else if (this.currentStyle) style = this.currentStyle[property]; + } + return (style && property.test('color', 'i') && style.test('rgb')) ? style.rgbToHex() : style; + }, + + /* + Property: addEvent + Attaches an event listener to a DOM element. + + Arguments: + type - the event to monitor ('click', 'load', etc) without the prefix 'on'. + fn - the function to execute + + Example: + >$('myElement').addEvent('click', function(){alert('clicked!')}); + */ + + addEvent: function(type, fn){ + this.events = this.events || {}; + this.events[type] = this.events[type] || {'keys': [], 'values': []}; + if (!this.events[type].keys.test(fn)){ + this.events[type].keys.push(fn); + if (this.addEventListener){ + this.addEventListener((type == 'mousewheel' && window.gecko) ? 'DOMMouseScroll' : type, fn, false); + } else { + fn = fn.bind(this); + this.attachEvent('on'+type, fn); + this.events[type].values.push(fn); + } + } + return this; + }, + + addEvents: function(source){ + if (source){ + for (var type in source) this.addEvent(type, source[type]); + } + return this; + }, + + /* + Property: removeEvent + Works as Element.addEvent, but instead removes the previously added event listener. + */ + + removeEvent: function(type, fn){ + if (this.events && this.events[type]){ + var pos = this.events[type].keys.indexOf(fn); + if (pos == -1) return this; + var key = this.events[type].keys.splice(pos,1)[0]; + if (this.removeEventListener){ + this.removeEventListener((type == 'mousewheel' && window.gecko) ? 'DOMMouseScroll' : type, key, false); + } else { + this.detachEvent('on'+type, this.events[type].values.splice(pos,1)[0]); + } + } + return this; + }, + + /* + Property: removeEvents + removes all events of a certain type from an element. if no argument is passed in, removes all events. + */ + + removeEvents: function(type){ + if (this.events){ + if (type){ + if (this.events[type]){ + this.events[type].keys.each(function(fn){ + this.removeEvent(type, fn); + }, this); + this.events[type] = null; + } + } else { + for (var evType in this.events) this.removeEvents(evType); + this.events = null; + } + } + return this; + }, + + /* + Property: fireEvent + executes all events of the specified type present in the element. + */ + + fireEvent: function(type, args){ + if (this.events && this.events[type]){ + args = args || []; + if ($type(args) != 'array') args = [args]; + this.events[type].keys.each(function(fn){ + fn.apply(this, args); + }, this); + } + }, + + getBrother: function(what){ + var el = this[what+'Sibling']; + while ($type(el) == 'whitespace') el = el[what+'Sibling']; + return $(el); + }, + + /* + Property: getPrevious + Returns the previousSibling of the Element, excluding text nodes. + + Example: + >$('myElement').getPrevious(); //get the previous DOM element from myElement + + Returns: + the sibling element or undefined if none found. + */ + + getPrevious: function(){ + return this.getBrother('previous'); + }, + + /* + Property: getNext + Works as Element.getPrevious, but tries to find the nextSibling. + */ + + getNext: function(){ + return this.getBrother('next'); + }, + + /* + Property: getFirst + Works as , but tries to find the firstChild. + */ + + getFirst: function(){ + var el = this.firstChild; + while ($type(el) == 'whitespace') el = el.nextSibling; + return $(el); + }, + + /* + Property: getLast + Works as , but tries to find the lastChild. + */ + + getLast: function(){ + var el = this.lastChild; + while ($type(el) == 'whitespace') el = el.previousSibling; + return $(el); + }, + + /* + Property: getParent + returns the $(element.parentNode) + */ + + getParent: function(){ + return $(this.parentNode); + }, + + /* + Property: getChildren + returns all the $(element.childNodes), excluding text nodes. Returns as . + */ + + getChildren: function(){ + return $$(this.childNodes); + }, + + /* + Property: setProperty + Sets an attribute for the Element. + + Arguments: + property - the property to assign the value passed in + value - the value to assign to the property passed in + + Example: + >$('myImage').setProperty('src', 'whatever.gif'); //myImage now points to whatever.gif for its source + */ + + setProperty: function(property, value){ + switch (property){ + case 'class': this.className = value; break; + case 'style': this.setStyles(value); break; + case 'name': if (window.ie6){ + var el = $(document.createElement('<'+this.getTag()+' name="'+value+'" />')); + $each(this.attributes, function(attribute){ + if (attribute.name != 'name') el.setProperty(attribute.name, attribute.value); + }); + if (this.parentNode) this.replaceWith(el); + return el; + } + default: this.setAttribute(property, value); + } + return this; + }, + + /* + Property: setProperties + Sets numerous attributes for the Element. + + Arguments: + source - an object with key/value pairs. + + Example: + >$('myElement').setProperties({ + > src: 'whatever.gif', + > alt: 'whatever dude' + >}); + >whatever dude + */ + + setProperties: function(source){ + for (var property in source) this.setProperty(property, source[property]); + return this; + }, + + /* + Property: setHTML + Sets the innerHTML of the Element. + + Arguments: + html - the new innerHTML for the element. + + Example: + >$('myElement').setHTML(newHTML) //the innerHTML of myElement is now = newHTML + */ + + setHTML: function(html){ + this.innerHTML = html; + return this; + }, + + /* + Property: getProperty + Gets the an attribute of the Element. + + Arguments: + property - the attribute to retrieve + + Example: + >$('myImage').getProperty('src') // returns whatever.gif + + Returns: + the value, or an empty string + */ + + getProperty: function(property){ + return (property == 'class') ? this.className : this.getAttribute(property); + }, + + /* + Property: getTag + Returns the tagName of the element in lower case. + + Example: + >$('myImage').getTag() // returns 'img' + + Returns: + The tag name in lower case + */ + + getTag: function(){ + return this.tagName.toLowerCase(); + }, + + getOffsets: function(){ + var el = this, offsetLeft = 0, offsetTop = 0; + do { + offsetLeft += el.offsetLeft || 0; + offsetTop += el.offsetTop || 0; + el = el.offsetParent; + } while (el); + return {'x': offsetLeft, 'y': offsetTop}; + }, + + /* + Property: scrollTo + scrolls the element to the specified coordinated (if the element has an overflow) + + Arguments: + x - the x coordinate + y - the y coordinate + + Example: + >$('myElement').scrollTo(0, 100) + */ + + scrollTo: function(x, y){ + this.scrollLeft = x; + this.scrollTop = y; + }, + + /* + Property: getSize + return an Object representing the size/scroll values of the element. + + Example: + (start code) + $('myElement').getSize(); + (end) + + Returns: + (start code) + { + 'scroll': {'x': 100, 'y': 100}, + 'size': {'x': 200, 'y': 400}, + 'scrollSize': {'x': 300, 'y': 500} + } + (end) + */ + + getSize: function(){ + return { + 'scroll': {'x': this.scrollLeft, 'y': this.scrollTop}, + 'size': {'x': this.offsetWidth, 'y': this.offsetHeight}, + 'scrollSize': {'x': this.scrollWidth, 'y': this.scrollHeight} + }; + }, + + /* + Property: getTop + Returns the distance from the top of the window to the Element. + */ + + getTop: function(){ + return this.getOffsets().y; + }, + + /* + Property: getLeft + Returns the distance from the left of the window to the Element. + */ + + getLeft: function(){ + return this.getOffsets().x; + }, + + /* + Property: getPosition + Returns an object with width, height, left, right, top, and bottom, representing the values of the Element + + Example: + (start code) + var myValues = $('myElement').getPosition(); + (end) + + Returns: + (start code) + { + width: 200, + height: 300, + left: 100, + top: 50, + right: 300, + bottom: 350 + } + (end) + */ + + getPosition: function(){ + var offs = this.getOffsets(); + var obj = { + 'width': this.offsetWidth, + 'height': this.offsetHeight, + 'left': offs.x, + 'top': offs.y + }; + obj.right = obj.left + obj.width; + obj.bottom = obj.top + obj.height; + return obj; + }, + + /* + Property: getValue + Returns the value of the Element, if its tag is textarea, select or input. no multiple select support. + */ + + getValue: function(){ + switch (this.getTag()){ + case 'select': if (this.selectedIndex != -1) return this.options[this.selectedIndex].value; break; + case 'input': if (!(this.checked && ['checkbox', 'radio'].test(this.type)) && !['hidden', 'text', 'password'].test(this.type)) break; + case 'textarea': return this.value; + } + return false; + } + +}); + +var Window = window; + +window.addEvent = document.addEvent = Element.prototype.addEvent; +window.removeEvent = document.removeEvent = Element.prototype.removeEvent; + +var Garbage = { + + elements: [], + + collect: function(element){ + Garbage.elements.push(element); + }, + + trash: function(){ + window.removeEvent('unload', Garbage.trash); + Garbage.elements.each(function(el){ + el.removeEvents(); + for (var p in Element.prototype) HTMLElement[p] = window[p] = document[p] = el[p] = null; + el.extend = null; + }); + } + +}; + +window.addEvent('unload', Garbage.trash); + +/* +Script: Event.js + Event class + +Author: + Valerio Proietti, , Michael Jackson, + +License: + MIT-style license. +*/ + +/* +Class: Event + Cross browser methods to manage events. + +Arguments: + event - the event + +Properties: + shift - true if the user pressed the shift + control - true if the user pressed the control + alt - true if the user pressed the alt + meta - true if the user pressed the meta key + code - the keycode of the key pressed + page.x - the x position of the mouse, relative to the full window + page.y - the y position of the mouse, relative to the full window + client.x - the x position of the mouse, relative to the viewport + client.y - the y position of the mouse, relative to the viewport + key - the key pressed as a lowercase string. key also returns 'enter', 'up', 'down', 'left', 'right', 'space', 'backspace', 'delete', 'esc'. Handy for these special keys. + target - the event target + relatedTarget - the event related target + +Example: + (start code) + $('myLink').onkeydown = function(event){ + var event = new Event(event); + //event is now the Event class. + alert(event.key); //returns the lowercase letter pressed + alert(event.shift); //returns true if the key pressed is shift + if (event.key == 's' && event.control) alert('document saved'); + }; + (end) +*/ + +var Event = new Class({ + + initialize: function(event){ + this.event = event || window.event; + this.type = this.event.type; + this.target = this.event.target || this.event.srcElement; + if (this.target.nodeType == 3) this.target = this.target.parentNode; // Safari + this.shift = this.event.shiftKey; + this.control = this.event.ctrlKey; + this.alt = this.event.altKey; + this.meta = this.event.metaKey; + if (['DOMMouseScroll', 'mousewheel'].test(this.type)){ + this.wheel = this.event.wheelDelta ? (this.event.wheelDelta / (window.opera ? -120 : 120)) : -(this.event.detail || 0) / 3; + } else if (this.type.test('key')){ + this.code = this.event.which || this.event.keyCode; + for (var name in Event.keys){ + if (Event.keys[name] == this.code) var special = name; + } + this.key = special || String.fromCharCode(this.code).toLowerCase(); + + } else if (this.type.test('mouse') || this.type == 'click'){ + this.page = { + 'x': this.event.pageX || this.event.clientX + document.documentElement.scrollLeft, + 'y': this.event.pageY || this.event.clientY + document.documentElement.scrollTop + }; + this.client = { + 'x': this.event.pageX ? this.event.pageX - window.pageXOffset : this.event.clientX, + 'y': this.event.pageY ? this.event.pageY - window.pageYOffset : this.event.clientY + }; + this.rightClick = (this.event.which == 3) || (this.event.button == 2); + switch (this.type){ + case 'mouseover': this.relatedTarget = this.event.relatedTarget || this.event.fromElement; break; + case 'mouseout': this.relatedTarget = this.event.relatedTarget || this.event.toElement; + } + } + }, + + /* + Property: stop + cross browser method to stop an event + */ + + stop: function() { + this.stopPropagation(); + this.preventDefault(); + return this; + }, + + /* + Property: stopPropagation + cross browser method to stop the propagation of an event + */ + + stopPropagation: function(){ + if (this.event.stopPropagation) this.event.stopPropagation(); + else this.event.cancelBubble = true; + return this; + }, + + /* + Property: preventDefault + cross browser method to prevent the default action of the event + */ + + preventDefault: function(){ + if (this.event.preventDefault) this.event.preventDefault(); + else this.event.returnValue = false; + return this; + } + +}); + +Event.keys = { + 'enter': 13, + 'up': 38, + 'down': 40, + 'left': 37, + 'right': 39, + 'esc': 27, + 'space': 32, + 'backspace': 8, + 'delete': 46 +}; + +Function.extend({ + + /* + Property: bindWithEvent + automatically passes mootools Event Class. + + Arguments: + bind - optional, the object that the "this" of the function will refer to. + + Returns: + a function with the parameter bind as its "this" and as a pre-passed argument event or window.event, depending on the browser. + + Example: + >function myFunction(event){ + > alert(event.clientx) //returns the coordinates of the mouse.. + >}; + >myElement.onclick = myFunction.bindWithEvent(myElement); + */ + + bindWithEvent: function(bind, args){ + return this.create({'bind': bind, 'arguments': args, 'event': Event}); + } + +}); + + +/* +Script: Common.js + Contains common implementations for custom classes. In Mootools is implemented in and . + +Author: + Valerio Proietti, + +License: + MIT-style license. +*/ + +/* +Class: Chain + An "Utility" Class. Its methods can be implemented with into any . + Currently implemented in and . In for example, is used to execute a list of function, one after another, once the effect is completed. + The functions will not be fired all togheter, but one every completion, to create custom complex animations. + +Example: + (start code) + var myFx = new Fx.Style('element', 'opacity'); + + myFx.start(1,0).chain(function(){ + myFx.start(0,1); + }).chain(function(){ + myFx.start(1,0); + }).chain(function(){ + myFx.start(0,1); + }); + //the element will appear and disappear three times + (end) +*/ + +var Chain = new Class({ + + /* + Property: chain + adds a function to the Chain instance stack. + + Arguments: + fn - the function to append. + */ + + chain: function(fn){ + this.chains = this.chains || []; + this.chains.push(fn); + return this; + }, + + /* + Property: callChain + Executes the first function of the Chain instance stack, then removes it. The first function will then become the second. + */ + + callChain: function(){ + if (this.chains && this.chains.length) this.chains.splice(0, 1)[0].delay(10, this); + }, + + /* + Property: clearChain + Clears the stack of a Chain instance. + */ + + clearChain: function(){ + this.chains = []; + } + +}); + +/* +Class: Events + An "Utility" Class. Its methods can be implemented with into any . + In Class, for example, is used to give the possibility add any number of functions to the Effects events, like onComplete, onStart, onCancel + +Example: + (start code) + var myFx = new Fx.Style('element', 'opacity').addEvent('onComplete', function(){ + alert('the effect is completed'); + }).addEvent('onComplete', function(){ + alert('I told you the effect is completed'); + }); + + myFx.start(0,1); + //upon completion it will display the 2 alerts, in order. + (end) +*/ + +var Events = new Class({ + + /* + Property: addEvent + adds an event to the stack of events of the Class instance. + */ + + addEvent: function(type, fn){ + if (fn != Class.empty){ + this.events = this.events || {}; + this.events[type] = this.events[type] || []; + if (!this.events[type].test(fn)) this.events[type].push(fn); + } + return this; + }, + + /* + Property: fireEvent + fires all events of the specified type in the Class instance. + */ + + fireEvent: function(type, args, delay){ + if (this.events && this.events[type]){ + this.events[type].each(function(fn){ + fn.create({'bind': this, 'delay': delay, 'arguments': args})(); + }, this); + } + return this; + }, + + /* + Property: removeEvent + removes an event from the stack of events of the Class instance. + */ + + removeEvent: function(type, fn){ + if (this.events && this.events[type]) this.events[type].remove(fn); + return this; + } + +}); + +/* +Class: Options + An "Utility" Class. Its methods can be implemented with into any . + Used to automate the options settings, also adding Class when the option begins with on. +*/ + +var Options = new Class({ + + /* + Property: setOptions + sets this.options + + Arguments: + defaults - the default set of options + options - the user entered options. can be empty too. + + Note: + if your Class has implemented, every option beginning with on, followed by a capital letter (onComplete) becomes an Class instance event. + */ + + setOptions: function(defaults, options){ + this.options = Object.extend(defaults, options); + if (this.addEvent){ + for (var option in this.options){ + if (($type(this.options[option]) == 'function') && option.test('^on[A-Z]')) this.addEvent(option, this.options[option]); + } + } + return this; + } + +}); + +/* +Script: Dom.js + Css Query related function and extensions + +Author: + Valerio Proietti, + +License: + MIT-style license. +*/ + +/* Section: Utility Functions */ + +/* +Function: $E + Selects a single (i.e. the first found) Element based on the selector passed in and an optional filter element. + +Arguments: + selector - the css selector to match + filter - optional; a DOM element to limit the scope of the selector match; defaults to document. + +Example: + >$E('a', 'myElement') //find the first anchor tag inside the DOM element with id 'myElement' + +Returns: + a DOM element - the first element that matches the selector +*/ + +function $E(selector, filter){ + return ($(filter) || document).getElement(selector); +}; + +/* +Function: $ES + Returns a collection of Elements that match the selector passed in limited to the scope of the optional filter. + See Also: for an alternate syntax. + +Returns: + an array of dom elements that match the selector within the filter + +Arguments: + selector - css selector to match + filter - optional; a DOM element to limit the scope of the selector match; defaults to document. + +Examples: + >$ES("a") //gets all the anchor tags; synonymous with $$("a") + >$ES('a','myElement') //get all the anchor tags within $('myElement') +*/ + +function $ES(selector, filter){ + return ($(filter) || document).getElementsBySelector(selector); +}; + +/* +Class: Element + Custom class to allow all of its methods to be used with any DOM element via the dollar function <$>. +*/ + +Element.extend({ + + /* + Property: getElements + Gets all the elements within an element that match the given (single) selector. + + Arguments: + selector - the css selector to match + + Example: + >$('myElement').getElements('a'); // get all anchors within myElement + + Credits: + Say thanks to Christophe Beyls for the new regular expression that rules getElements, a big step forward in terms of speed. + */ + + getElements: function(selector){ + var filters = []; + selector.clean().split(' ').each(function(sel, i){ + var param = sel.match('^(\\w*|\\*)(?:#([\\w_-]+)|\\.([\\w_-]+))?(?:\\[["\']?(\\w+)["\']?(?:([\\*\\^\\$]?=)["\']?(\\w*)["\']?)?\\])?$'); + //PARAM ARRAY: 0 = full string: 1 = tag; 2 = id; 3 = class; 4 = attribute; 5 = operator; 6 = value; + if (!param) return; + param[1] = param[1] || '*'; + if (i == 0){ + if (param[2]){ + var el = this.getElementById(param[2]); + if (!el || ((param[1] != '*') && (Element.prototype.getTag.call(el) != param[1]))) return; + filters = [el]; + } else { + filters = $A(this.getElementsByTagName(param[1])); + } + } else { + filters = Elements.prototype.filterByTagName.call(filters, param[1]); + if (param[2]) filters = Elements.prototype.filterById.call(filters, param[2]); + } + if (param[3]) filters = Elements.prototype.filterByClassName.call(filters, param[3]); + if (param[4]) filters = Elements.prototype.filterByAttribute.call(filters, param[4], param[6], param[5]); + }, this); + return $$(filters); + }, + + /* + Property: getElementById + Targets an element with the specified id found inside the Element. Does not overwrite document.getElementById. + + Arguments: + id - the id of the element to find. + */ + + getElementById: function(id){ + var el = document.getElementById(id); + if (!el) return false; + for (var parent = el.parentNode; parent != this; parent = parent.parentNode){ + if (!parent) return false; + } + return el; + }, + + /* + Property: getElement + Same as , but returns only the first. Alternate syntax for <$E>, where filter is the Element. + */ + + getElement: function(selector){ + return this.getElementsBySelector(selector)[0]; + }, + + /* + Property: getElementsBySelector + Same as , but allows for comma separated selectors, as in css. Alternate syntax for <$$>, where filter is the Element. + + */ + + getElementsBySelector: function(selector){ + var els = []; + selector.split(',').each(function(sel){ + els.extend(this.getElements(sel)); + }, this); + return $$(els); + } + +}); + +document.extend = Object.extend; + +/* Section: document related functions */ + +document.extend({ + /* + Function: document.getElementsByClassName + Returns all the elements that match a specific class name. + Here for compatibility purposes. can also be written: document.getElements('.className'), or $$('.className') + */ + + getElementsByClassName: function(className){ + return document.getElements('.'+className); + }, + getElement: Element.prototype.getElement, + getElements: Element.prototype.getElements, + getElementsBySelector: Element.prototype.getElementsBySelector + +}); + +/* +Class: Elements + Methods for dom queries arrays, as <$$>. +*/ + +Elements.extend({ + + //internal methods + + filterById: function(id, tag){ + var found = []; + this.each(function(el){ + if (el.id == id) found.push(el); + }); + return found; + }, + + filterByClassName: function(className){ + var found = []; + this.each(function(el){ + if (Element.prototype.hasClass.call(el, className)) found.push(el); + }); + return found; + }, + + filterByTagName: function(tagName){ + var found = []; + this.each(function(el){ + found.extend(el.getElementsByTagName(tagName)); + }); + return found; + }, + + filterByAttribute: function(name, value, operator){ + var found = []; + this.each(function(el){ + var att = el.getAttribute(name); + if (!att) return found; + if (!operator) return found.push(el); + + switch (operator){ + case '*=': if (att.test(value)) found.push(el); break; + case '=': if (att == value) found.push(el); break; + case '^=': if (att.test('^'+value)) found.push(el); break; + case '$=': if (att.test(value+'$')) found.push(el); + } + return found; + }); + return found; + } + +}); + +/* +Script: Hash.js + Contains the class Hash. + +Author: + Christophe Beyls + +License: + MIT-style license. +*/ + +/* +Class: Hash + It wraps an object that it uses internally as a map. The user must use put(), get(), and remove() to add/change, retrieve and remove values, it must not access the internal object directly. With this implementation, null values are not allowed. + +Example: + (start code) + var hash = new Hash({a: 'hi', b: 'world', c: 'howdy'}); + hash.remove('b'); // b is removed. + hash.set('c', 'hello'); + hash.get('c'); // returns 'hello' + hash.length // returns 2 (a and b) + (end) +*/ + +var Hash = new Class({ + + length: 0, + + initialize: function(obj) { + this.obj = {}; + for (var property in obj) { + this.obj[property] = obj[property]; + this.length++; + } + }, + + get: function(key) { + return this.obj[key]; + }, + + set: function(key, value) { + if (value == null) return false; + if (this.obj[key] == undefined) this.length++; + this.obj[key] = value; + return this; + }, + + remove: function(key) { + if (this.obj[key] == undefined) return false; + var obj = {}; + this.length--; + for (var property in this.obj){ + if (property != key) obj[property] = this.obj[property]; + } + this.obj = obj; + return this; + }, + + each: function(fn, bind) { + for (var property in this.obj) fn.call(bind || this, property, this.obj[property]); + }, + + extend: function(obj){ + this.initialize(Object.extend(this.obj, obj)); + return this; + }, + + empty: function() { + return (this.length == 0); + }, + + keys: function() { + var keys = []; + for (var property in this.obj) keys.push(property); + return keys; + }, + + values: function() { + var values = []; + for (var property in this.obj) values.push(this.obj[property]); + return values; + } + +}); + +/* +Function: $H + Shortcut to create an Hash from an Object. +*/ + +function $H(obj) { + return new Hash(obj); +}; + +/* +Script: Color.js + Contains the Color class. + +Author: + Michael Jackson + +License: + MIT-style license. +*/ + +/* +Class: Color + Creates a new Color Object, which is an array with some color specific methods. + +Example: + (start code) + var black = new Color('#000'); + var purple = new Color([255,0,255]); + // mix black with white and purple, each time at 10% of the new color + var darkpurple = black.mix('#fff', purple, 10); + $('myDiv').setStyle('background-color', darkpurple); + (end) +*/ + +var Color = new Class({ + + initialize: function(color){ + if (color.mix && color.invert) return color; + var rgb = (color.push) ? color : color.hexToRgb(true); + return Object.extend(rgb, Color.prototype); + }, + + mix: function(){ + var colors = $A(arguments); + var alpha = 50; + if ($type(colors[colors.length-1]) == 'number') alpha = colors.pop(); + var rgb = this.copy(); + colors.each(function(color){ + color = new Color(color); + for (var i = 0; i < 3; i++) rgb[i] = Math.round((rgb[i] / 100 * (100 - alpha)) + (color[i] / 100 * alpha)); + }); + return new Color(rgb); + }, + + invert: function(){ + var rgb = []; + for (var i = 0; i < 3; i++) rgb.push(255 - this[i]); + return new Color(rgb); + } + +}); + +function $C(color){ + return new Color(color); +}; + +/* +Script: Window.Base.js + Contains Window.onDomReady and Window.disableImageCache + +License: + MIT-style license. +*/ + +/* +Class: Window + Cross browser methods to get the window size, onDomReady method. +*/ + +window.extend = Object.extend; + +window.extend({ + + /* + Function: window.disableImageCache + Disables background image chache for internex explorer, to prevent flickering. + To be called if you have effects with background images, and they flicker. + + Example: + Window.disableImageCache(); + */ + + disableImageCache: function(){ + if (this.ie6) try {document.execCommand("BackgroundImageCache", false, true);} catch (e){}; + }, + + addEvent: function(type, fn){ + if (type == 'domready'){ + if (this.loaded) fn(); + else if (!this.events || !this.events.domready){ + var domReady = function(){ + if (this.loaded) return; + this.loaded = true; + if (this.timer) this.timer = $clear(this.timer); + Element.prototype.fireEvent.call(this, 'domready'); + this.events.domready = null; + }.bind(this); + if (document.readyState && this.khtml){ //safari and konqueror + this.timer = function(){ + if (['loaded','complete'].test(document.readyState)) domReady(); + }.periodical(50); + } + else if (document.readyState && this.ie){ //ie + document.write(" + + + + +

My 1st demo

+ + +
+ + + diff --git a/emacs.d/nxhtml/nxhtml/html-chklnk.el b/emacs.d/nxhtml/nxhtml/html-chklnk.el new file mode 100644 index 0000000..6fdbb49 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-chklnk.el @@ -0,0 +1,168 @@ +;;; html-chklnk.el --- Check links in local HTML sites +;; +;; Author: Lennart Borgman (lennart O borgman A gmail O com) +;; Created: Wed Mar 15 14:46:17 2006 +(defconst html-chklnk:version "0.2") ;; Version: +;; Last-Updated: Tue Apr 10 04:12:32 2007 (7200 +0200) +;; 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., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Code: + +(eval-when-compile (add-to-list 'load-path default-directory load-path)) +(eval-when-compile + (when (> emacs-major-version 22) + (let* ((load-path load-path) + (this-file (or load-file-name + (when (boundp 'bytecomp-filename) bytecomp-filename) + buffer-file-name)) + (this-dir (file-name-directory this-file))) + (add-to-list 'load-path (expand-file-name "../../lisp" this-dir)) + (require 'w32shell nil t)))) + + +(eval-when-compile (require 'html-site nil t)) +(require 'compile) + +;;;###autoload +(defgroup html-chklnk nil + "Customization group for html-chklnk." + :group 'nxhtml) + +(defcustom html-chklnk-dir + (file-name-as-directory + (expand-file-name + "html-chklnk" + (file-name-directory + (if load-file-name load-file-name buffer-file-name)))) + + "Directory where the tools needed are located. +" + :type 'directory + :group 'html-chklnk) + +(defun html-chklnk-check-site-links (start-file) + "Check local file web site links. +Currently only internal links are checked." + (interactive + (progn + (html-site-current-ensure-site-defined) + (if (y-or-n-p "Start from a given file and check links from there? ") + (let* ((default-start (if (html-site-current-contains buffer-file-name) + buffer-file-name + (car (directory-files (html-site-current-site-dir) + nil + "\\.html?$")))) + (start-file + (read-file-name "Start checking from file: " + (html-site-current-site-dir) + nil + nil + default-start))) + (unless (html-site-dir-contains (html-site-current-site-dir) start-file) + (error "File %s is not in the site %s" start-file html-site-current)) + (list start-file)) + (list nil)))) + (let* ((default-directory html-chklnk-dir) + (compile-cmd (concat "perl link_checker.pl " + "--site=" + ;;(html-chklnk-convert-file-name + (html-site-current-site-dir) + ;;) + (if start-file + (concat " --start=" + ;;(html-chklnk-convert-file-name + start-file + ;;) + ) + ""))) + (compilation-buffer-name-function + '(lambda (dummy) (concat "** Checking links in site " + html-site-current " **"))) + (compilation-scroll-output t) + (compilation-error-regexp-alist-alist + '( + (html-chklnk + "^\\(.*\\)\\s-+at line \\([0-9]+\\):" + 1 ;; file + 2 ;; line + ))) + (compilation-error-regexp-alist '(html-chklnk)) + ;;(shell-file-name "cmd") + ;;(explicit-shell-file-name "cmd") + ;;(shell (concat exec-directory "cmdproxy.exe")) + ;;(old-w32shell nil) + ) + ;; There are trouble with perl paths +;; (when (featurep 'w32shell) +;; (when w32shell-current-shell-path +;; (setq old-w32shell w32shell-current-shell-path) +;; (w32shell-set-shell "cmd"))) + ;;(message "uses-cygwin=%s" uses-cygwin)(sit-for 8) + + (if (fboundp 'w32shell-save-shell) + (w32shell-save-shell + "cmd" + (compile compile-cmd)) + (compile compile-cmd)) + +;; (when old-w32shell +;; (cond ((string= old-w32shell w32shell-cygwin-bin) +;; (w32shell-set-shell "cygwin")) +;; ((string= old-w32shell w32shell-msys-bin) +;; (w32shell-set-shell "msys")))) + )) + +(defun html-chklnk-convert-file-name (filename) + (let ((uses-cygwin (and (featurep 'w32shell) + (string= w32shell-current-shell-path + w32shell-cygwin-bin))) + (case-fold-search t) + ) + (save-match-data + (if (and uses-cygwin + (string-match "^\\([a-z]\\):" filename)) + (concat "/cygdrive/" (match-string 1 filename) + (substring filename 2)) + filename)))) + + + + +(provide 'html-chklnk) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; html-chklnk.el ends here diff --git a/emacs.d/nxhtml/nxhtml/html-chklnk/PerlLib/HTML/LinkWalker.pm b/emacs.d/nxhtml/nxhtml/html-chklnk/PerlLib/HTML/LinkWalker.pm new file mode 100644 index 0000000..14b0ccb --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-chklnk/PerlLib/HTML/LinkWalker.pm @@ -0,0 +1,774 @@ +### File: LinkWalker.pm +### Author: Lennart Borgman +### All rights reserved + +########################################################## +### UserAgent module +########################################################## +package LWP::WalkerUA; +require LWP::UserAgent; +@ISA = qw(LWP::UserAgent); + +### Mirror to another file (why???) +sub mirror +{ + my($self, $url, $file, $mirr_tmp) = @_; + die "no mirr_tmp" unless defined $mirr_tmp; + + LWP::Debug::trace('()'); + my $request = new HTTP::Request('GET', $url); + + if (-e $file) { + my($mtime) = (stat($file))[9]; + if($mtime) { + $request->header('If-Modified-Since' => + HTTP::Date::time2str($mtime)); + } + } + my $tmpfile = "$file-$$"; + + my $response = $self->request($request, $tmpfile); + if ($response->is_success) { + + my $file_length = (stat($tmpfile))[7]; + my($content_length) = $response->header('Content-length'); + + if (defined $content_length and $file_length < $content_length) { + unlink($tmpfile); + die "Transfer truncated: " . + "only $file_length out of $content_length bytes received\n"; + } elsif (defined $content_length and $file_length > $content_length) { + unlink($tmpfile); + die "Content-length mismatch: " . + "expected $content_length bytes, got $file_length\n"; + } else { + # OK + if (-e $mirr_tmp) { + # Some dosish systems fail to rename if the target exists + chmod 0777, $mirr_tmp; + unlink $mirr_tmp; + } + rename($tmpfile, $mirr_tmp) or + die "Cannot rename '$tmpfile' to '$mirr_tmp': $!\n"; + + if (my $lm = $response->last_modified) { + # make sure the file has the same last modification time + utime $lm, $lm, $mirr_tmp; + } + } + } else { + unlink($tmpfile); + } + return $response; +} + + +########################################################## +### Parser module +########################################################## +package HTML::WalkerParser; +require HTML::ParserTagEnd; +@ISA = qw(HTML::ParserTagEnd); +use strict; +use vars qw(%LINK_ELEMENT); + +# Elements that might contain links and the name of the link attribute +%LINK_ELEMENT = +( + body => 'background', + base => 'href', + a => 'href', + img => [qw(src lowsrc usemap)], # 'lowsrc' is a Netscape invention + form => 'action', + input => 'src', +'link' => 'href', # need quoting since link is a perl builtin + frame => 'src', + applet => [qw(codebase code)], + area => 'href', + iframe => 'src', # Netscape 2.0 extention + embed => 'src', # used in Netscape 2.0 for Shockwave and things like that +); + +my %LINKATTRIBS = ( + "href" => 1, + "src" => 1, + "action" => 1, + "background" => 1, + "usemap" => 1, + "code" => 1, + "codebase" => 1, + "lowsrc" => 1, + ); +my %MAYBECONT = ( + a => 'href', + area => 'href', + form => 'action', + frame => 'src', + iframe => 'src', + ); + +sub maybecont($$) { + my $tag = shift; + my $att = shift; + return unless exists $MAYBECONT{$tag}; + return ($MAYBECONT{$tag} eq $att); +} + +sub new { + my($class, $parsed_fh) = @_; + my $self = $class->SUPER::new; + $self->{parsed_fh} = $parsed_fh; + $self; +} + + + + + + + +########################################################## +### Walker module +########################################################## +package HTML::LinkWalker; +use strict; + +use IO::File; +use File::Copy qw(); +use File::Path qw(); +use PathSubs qw(); +use HTML::Entities; +use FindBin qw(); + + +########################################################## +### Globals +########################################################## +my $ua; +my $m_ua_personality = "LinkWalker/0.9"; +my %m_is_outside; +my %m_is_container; +my $m_bOnlyCont; +my @m_sLinkRoots; +my $m_subReport; +my $m_subAction; +my $m_subMirrorAction; + + +############################# +### Collecting info +############################# +my %m_CheckedLinks; +my %m_MissedLinks; + +sub tell_bad_link($$$$$) { + my $what = shift; + my $file = shift; + my $lnum = shift; + my $link = shift; + my $line = shift; + $file = "START" unless defined $file; + $lnum = "(start)" unless defined $lnum; + my $longMsg = "<<$what>>"; + my $shortMsg = $what; + if (defined $link) { + my @lines = split("\\s+", $line); + my $disp_line = join("\n\t\t ", @lines); + $longMsg .= ",\n\t\tlink=$link\n\t\t$disp_line"; + } + my @msg = ($shortMsg, $longMsg); + $m_CheckedLinks{$file}->{ERR}->{$lnum} = \@msg; + &$m_subReport("\t* Error * " . $what . "\n"); +} # tell_bad_link + + +############################# +### Helpers +############################# + +sub get_contenttype($) { + my $response = shift; + my @rh = $response->header("Content-Type"); + for my $r (@rh) { + my $c = $r; + if ((my $iPos = index($r, ";")) > -1) { + $c = substr($r, 0, $iPos); + } + return $c; + } +} +sub is_linked_contenttype($) { + my $response = shift; + return (get_contenttype($response) eq "text/html"); +} + +sub ending_is_container($) { + my $link_addr = shift; + $link_addr =~ s!#.*$!!; + $link_addr =~ s!\?.*$!!; + return (($link_addr =~ m!\.s?html?$!i) ? 1 : 0); +} + +my $m_sMirrorRoot; +my $m_bMirror = 1; + +sub mk_mirror_name($) { + my $orig_name = shift; + $orig_name =~ tr!\\!/!; + my $mirr_name = $orig_name; + my ($orig_host) = ($orig_name =~ m!(^https?://[^/]*)!i); + if (defined $orig_host) { + my $host = $orig_host; + $host =~ tr!:!_!; + $host =~ tr!/!_!; + $mirr_name =~ s!^$orig_host!$host!; + if (substr($mirr_name, -1) eq "/") { $mirr_name .= "default.html"; } + } else { + die "Can't find host in $orig_name\n"; + } + my $mirr_full = sMirrorRoot() . $mirr_name; + if (!$m_bMirror) { + my $sExt = $mirr_name; $sExt =~ s!.*\.([^\.]*$)!$1!; + $mirr_full = sMirrorRoot() . "temp.$sExt"; + } + my $mirr_fold = $mirr_full; + $mirr_fold =~ s![^/]*$!!; + File::Path::mkpath($mirr_fold, 0, 0777); + return $mirr_full; +} + +############################# +### Checks +############################# +sub is_outside($) { + my $uq_link_addr = shift; + if (!exists $m_is_outside{$uq_link_addr}) { + $m_is_outside{$uq_link_addr} = test_is_outside($uq_link_addr, \@m_sLinkRoots); + } + return $m_is_outside{$uq_link_addr}; +} +sub set_is_container($$) { + my $uq_link_addr = shift; + return if exists $m_is_container{$uq_link_addr}; + $m_is_container{$uq_link_addr} = shift; +} +sub is_outside_container($) { + my $uq_link_addr = shift; + if (exists $m_is_container{$uq_link_addr}) { + if ($m_is_container{$uq_link_addr}) { + return is_outside($uq_link_addr); + } + } +} +sub test_is_outside($$) { + my $uq_link_addr = shift; + my $link_roots = shift; + if (defined $link_roots) { + my $in_roots; + for my $link_root (@$link_roots) { + if (substr($uq_link_addr, 0, length($link_root)) eq $link_root) { + return 0; + } + } + return 1; + } +} # is_outside + + + +########################################################## +### Parsing +########################################################## + + +### Parser subs +sub HTML::WalkerParser::declaration { + my($self, $decl) = @_; + return unless defined $self->{parsed_fh}; + my $fh = $self->{parsed_fh}; + print $fh ""; +} +my $m_start_cb; +sub HTML::WalkerParser::start { + my($self, $tag, $attr, $ended) = @_; + &$m_start_cb($tag, $attr); + return unless defined $self->{parsed_fh}; + my $t = "<$tag"; + for my $k (keys %$attr) { + my $encoded = encode_entities($$attr{$k}); + $t .= qq( $k="$encoded"); + } + if ($ended) { + $t .= " />"; + } else { + $t .= ">"; + } + my $fh = $self->{parsed_fh}; + print $fh $t; +} +sub HTML::WalkerParser::end { + my ($self, $tag) = @_; + return unless defined $self->{parsed_fh}; + my $fh = $self->{parsed_fh}; + print $fh ""; +} +sub HTML::WalkerParser::text { + my ($self, $txt) = @_; + return unless defined $self->{parsed_fh}; + my $fh = $self->{parsed_fh}; + print $fh $txt; +} +sub HTML::WalkerParser::comment { + my($self, $comment) = @_; + return unless defined $self->{parsed_fh}; + my $fh = $self->{parsed_fh}; + print $fh ""; +} + + + + +### Main parsing routine + +sub parse_file($$$$$$$$$) { + my ($file_name, $parsed_fh, $uq_link_addr, $link_roots, + $ref_links, $ref_anchs, $ref_lines, $ref_tagname, $ref_attname) = @_; + my $fh; + if (-d $file_name) { + $file_name = PathSubs::uniq_dir($file_name) . "default.html"; + $uq_link_addr .= "/" unless substr($uq_link_addr, -1) eq "/"; + $uq_link_addr .= "default.html"; + &$m_subReport("dir => $file_name\n"); + } + $fh = new IO::File($file_name); + die "Can't read $file_name: $!\n" unless defined $fh; + my $base_href; + my $n; + my $line; + my $uq_link_fold = $uq_link_addr; $uq_link_fold =~ s![^/]*$!!; + + my $start_cb = + sub { + my ($tag, $attr_hash) = @_; + for my $k (keys %$attr_hash) { + if (($k eq "id") || ($k eq "name")) { + my $v = $$attr_hash{$k}; + $$ref_anchs{$v} = $n; + $$ref_lines{$n} = $line; + } elsif (exists $LINKATTRIBS{$k}) { + my $v = $$attr_hash{$k}; + next if $v =~ m!^javascript:!; + next if $v =~ m!^ftp://!; + next if $v =~ m!^mailto://!; + if ($tag eq "base") { $base_href = $v if $k eq "href"; next; } + my $v_abs; my $v_rel; + my $v_is_abs = PathSubs::is_abs_path($v); + if ($v_is_abs) { + $v_abs = $v; + $v_rel = PathSubs::mk_relative_link($uq_link_addr, $v_abs); + } else { + $v_rel = $v; + if (defined $base_href) { + $v_abs = PathSubs::mk_abs_link($base_href, $v); + } else { + if (substr($v_rel, 0, 1) ne "#") { + $v_abs = $uq_link_fold . $v_rel; + } else { + $v_abs = $uq_link_addr . $v_rel; + } + $v_abs = PathSubs::resolve_dotdot($v_abs); + } + } + next if exists $m_CheckedLinks{$v_abs}; + if (is_outside($v_abs)) { + if (!$v_is_abs) { + if (ending_is_container($v_abs)) { + $m_CheckedLinks{$v_abs} = {}; + tell_bad_link("Outside relative link ($v_rel)", + $uq_link_addr, $n, $v, $line); + } + } + ### Skip outside absolute links + ### Could be things like banners etc... + next; + } + $$ref_links{$v_rel} = $n; + $$ref_lines{$n} = $line; + if (substr($v_rel, 0, 1) ne "#") { + my $v_rel_name = $v_rel; + $v_rel_name =~ s!#.*$!!; + $v_rel_name =~ s!\?.*$!!; + $$ref_tagname{$v_rel_name} = $tag; + $$ref_attname{$v_rel_name} = $k; + } + if ($v_is_abs && ($v_rel ne $v)) { $$attr_hash{$k} = $v_rel; } + } + } + }; # $start_cb + + $m_start_cb = $start_cb; + my $p = HTML::WalkerParser->new($parsed_fh); + while ($line = <$fh>) { + $n++; + $p->parse($line); + } + $fh->close(); +} # parse_file + + + +########################################################## +### Do the walk... +########################################################## +sub walk_link($$;$$$$) { + die "$#_" unless ($#_ == 1 || $#_ == 5); + my $link_fold = shift; + my $link_file = shift; + my $parent_url = shift; + my $parent_lnum = shift; + my $parent_link = shift; + my $parent_line = shift; + + my $link_addr = $link_fold . $link_file; + my $uq_link_addr; + my $is_file = ($link_addr !~ m!^https?://!i); + if ($is_file) { + $uq_link_addr = PathSubs::uniq_file($link_addr); + } else { + $uq_link_addr = PathSubs::resolve_dotdot($link_addr); + } + return if exists $m_CheckedLinks{$uq_link_addr}; + return if exists $m_MissedLinks{$uq_link_addr}; + $m_CheckedLinks{$uq_link_addr} = {}; + my $link_is_container = ending_is_container($uq_link_addr); + if ($link_is_container) { + set_is_container($uq_link_addr, 1); + return if is_outside($uq_link_addr); + } else { + return if $m_bOnlyCont; + } + my $response; + my $contenttype; + my $bDoRewrite; + my $file_name; + if ($is_file) { + if (!-r $uq_link_addr) { + tell_bad_link("Can't read file ($uq_link_addr)", + $parent_url, $parent_lnum, $parent_link, $parent_line); + $m_MissedLinks{$uq_link_addr} = 1; + return; + } + $file_name = $uq_link_addr; + } else { + $file_name = mk_mirror_name($uq_link_addr); + if (!defined $ua) { + $ua = new LWP::UserAgent; + $ua->agent($m_ua_personality); + #$ua->delay(0.1); + } + if ($m_bMirror) { + $response = $ua->mirror($uq_link_addr, $file_name); + &$m_subMirrorAction($uq_link_addr, $file_name, $response); + } else { + my $request = new HTTP::Request('GET', $uq_link_addr); + $response = $ua->request($request, $file_name); + } + #dump_response($response); exit; + if ($response->code != 304) { + if (!$response->is_success) { + tell_bad_link($response->status_line . " ($uq_link_addr)", + $parent_url, $parent_lnum, $parent_link, $parent_line); + $m_MissedLinks{$uq_link_addr} = 1; + return; + } + $bDoRewrite = $m_bMirror; + $contenttype = get_contenttype($response); + $link_is_container = is_linked_contenttype($response); + } + if ($uq_link_addr ne $response->base) { + if ($m_bMirror) { + my $base_file = mk_mirror_name($response->base); + if (!File::Copy::copy($file_name, $base_file)) { + die "Can't copy($file_name, $base_file): $!\n"; + } + if (my $lm = $response->last_modified) { utime $lm, $lm, $base_file; } + $file_name = $base_file; + } + $uq_link_addr = $response->base; + } + } + ### Test again, could be new info from net! + if ($link_is_container) { + set_is_container($uq_link_addr, 1); + return if is_outside($uq_link_addr); + } else { + return if $m_bOnlyCont; + return; + } + &$m_subReport("$uq_link_addr ..."); + + my %links; + my %anchs; + my %lines; + my %tagname; + my %attname; + my $parsed_fh; + my $parsed_file; + my $file_to_parse = $file_name; + if ($bDoRewrite) { + $parsed_file = $file_to_parse . "-p$$"; + &$m_subReport(" < $parsed_file"); + die "Can't create $parsed_file: $!\n" unless defined $parsed_fh; + print $parsed_fh "\n"; + } + &$m_subReport("\n"); + parse_file($file_to_parse, $parsed_fh, $uq_link_addr, + \@m_sLinkRoots, + \%links, \%anchs, \%lines, \%tagname, \%attname); + if (defined $parsed_fh) { + $parsed_fh->close(); + if (-e $file_name) { unlink $file_name or die "Can't unlink $file_name: $!"; } + rename($parsed_file, $file_name) or die "Can't rename($parsed_file, $file_name): $!\n"; + if (my $lm = $response->last_modified) { utime $lm, $lm, $file_name; } + } + ### Now we know... + if ($link_is_container) { return if is_outside($uq_link_addr); } + + $m_CheckedLinks{$uq_link_addr}->{ANC} = \%anchs; + my $file_dir; + if ($is_file) { + $file_dir = $uq_link_addr; + $file_dir =~ s![^/]*$!!; + #chdir $file_dir; + } + my $container_folder = $uq_link_addr; $container_folder =~ s![^/]*$!!; + &$m_subAction($uq_link_addr, $file_name, $contenttype); + for my $link (sort keys %links) { + # Next line is for onclick lines in prepared docs + next if ($link eq "#"); + my $lnum = $links{$link}; + my $line = $lines{$lnum}; + if ($link eq "") { + tell_bad_link("Empty link", $uq_link_addr, $lnum, $link, $line); + next; + } + if ($link =~ m!(.*)\?!) { $link = $1; } + my $anchor; + if ($link =~ m!(.*)#(.*)!) { $link = $1; $anchor = $2; } + if ($link eq "") { + if (!exists $anchs{$anchor}) { + tell_bad_link("Anchor not found ($anchor)", $uq_link_addr, $lnum, $link, $line); + } + next; + } + my $sub_fold; + my $sub_file; + my $uq_sublink; + if ($link =~ m!^https?://!i) { + $sub_fold = ""; + $sub_file = $link; + $uq_sublink = $link; + } else { + $sub_file = $link; + if ($is_file) { + $sub_fold = $file_dir; + $uq_sublink = PathSubs::uniq_file($sub_fold . $sub_file); + } else { + $sub_fold = $container_folder; + $uq_sublink = $sub_fold . $sub_file; + } + } + next if (exists $m_CheckedLinks{$uq_sublink}); + if (defined $anchor) { + $m_CheckedLinks{$uq_link_addr}->{EXTANC}->{$uq_sublink} = + { ANC=> $anchor, LINE=>$line, LNUM=>$lnum}; + } + if ($m_bOnlyCont) { + die "link=$link\tattr=$tagname{$link}\n" unless exists $tagname{$link}; + next unless maybecont($tagname{$link}, $attname{$link}); + } + if (is_outside($uq_link_addr)) { + if (maybecont($tagname{$link}, $attname{$link}) ) { + next; + } + } + walk_link($sub_fold, $sub_file, $uq_link_addr, $lnum, $link, $line); + } +} # walk_link + + + + +############################################ +### Some more checks! +############################################ +sub check_external_anchors() { + &$m_subReport("\nChecking external anchors...\n"); + for my $f (sort keys %m_CheckedLinks) { + my $fnode = $m_CheckedLinks{$f}; + if (exists ${$fnode}{"EXTANC"}) { + my $extanc_hash = ${$fnode}{"EXTANC"}; + for my $fx (keys %$extanc_hash) { + next unless (exists $m_CheckedLinks{$fx}); + my $ea_hash = ${$extanc_hash}{$fx}; + my $ea = ${$ea_hash}{ANC}; + my $fxnode = $m_CheckedLinks{$fx}; + my $fx_anc_hash = ${$fxnode}{"ANC"}; + if (!exists ${$fx_anc_hash}{$ea}) { + my $line = ${$ea_hash}{LINE}; + my $lnum = ${$ea_hash}{LNUM}; + &$m_subReport("From $f\n"); + tell_bad_link("Ext anchor not found ($fx#$ea)", + $f, $lnum, "$fx#$ea", $line); + } + } + } + } +} # check_external_anchors + + + +############################# +### Reporting +############################# +sub report_errors($$) { + my $bSum = shift; + my $bDet = shift; + my $errors_reported; + my $errors_found; + for my $f (sort keys %m_CheckedLinks) { + my $fnode = $m_CheckedLinks{$f}; + if (exists ${$fnode}{ERR}) { + $errors_found = 1; + last unless $bSum; + if (!defined $errors_reported) { + $errors_reported = 1; + &$m_subReport("\n\n*********** Summary ERRORS and WARNINGS **********\n"); + } + &$m_subReport("$f\n"); + my $err_hash = ${$fnode}{ERR}; + for my $e (sort keys %$err_hash) { + my $refE = ${$err_hash}{$e}; + &$m_subReport("\t" . ${$refE}[0] . "\n"); + } + } + } + undef $errors_reported; + if ($bDet) { + for my $f (sort keys %m_CheckedLinks) { + my $fnode = $m_CheckedLinks{$f}; + if (exists ${$fnode}{ERR}) { + if (!defined $errors_reported) { + $errors_reported = 1; + &$m_subReport("\n\n*********** Detailed ERRORS and WARNINGS **********\n"); + } + &$m_subReport("$f\n"); + my $err_hash = ${$fnode}{ERR}; + for my $e (sort keys %$err_hash) { + my $refE = ${$err_hash}{$e}; + &$m_subReport("\tat line $e: " . ${$refE}[1] . "\n"); + } + } + } + } + if ($errors_found) { + die "\n*** There where errors ***\n"; + } else { + &$m_subReport("No errors found\n"); + } +} # report_errors + +sub dump_response($) { + my $response = shift; + &$m_subReport( $response->code . " " . $response->message . "\n"); + &$m_subReport( "****************************************\n"); + #&$m_subReport( $response->request . "\n"); + #&$m_subReport( "****************************************\n"); + #&$m_subReport( $response->previous . "\n"); + #&$m_subReport( "****************************************\n"); + &$m_subReport( " i=" . $response->is_info . + ", s=" . $response->is_success . + ", r=" . $response->is_redirect . + ", e=" . $response->is_error . "\n"); + &$m_subReport( "****************************************\n"); + &$m_subReport( "content: " . $response->content . "\n"); + &$m_subReport( "****************************************\n"); + &$m_subReport( "base: " . $response->base . "\n"); + &$m_subReport( "****************************************\n"); + &$m_subReport( $response->as_string); + &$m_subReport( "****************************************\n"); + &$m_subReport( $response->current_age . "\n"); + &$m_subReport( "****************************************\n"); + my @rh = $response->header("Content-Type"); + for my $r (@rh) { &$m_subReport( "ct: $r\n"); } + &$m_subReport( "****************************************\n"); +} # dump_response + + +############################# +### Parameters +############################# +sub sMirrorRoot() { + my $val = shift; + $m_sMirrorRoot = PathSubs::get_temp_path() . "LinkWalker/" unless defined $m_sMirrorRoot; + my $old = $m_sMirrorRoot; + $m_sMirrorRoot = PathSubs::uniq_dir($val) if defined $val; + return $old; +} +sub bMirror(;$) { + my $val = shift; + my $old = $m_bMirror; + $m_bMirror = $val if defined $val; + $old; +} + +sub subReporter(;$) { + my $val = shift; + my $old = $m_subReport; + $m_subReport = $val if defined $val; + $old +} +sub subAction(;$) { + my $val = shift; + my $old = $m_subAction; + $m_subAction = $val if defined $val; + $old +} +sub bOnlyCont(;$) { + my $val = shift; + my $old = $m_bOnlyCont; + $m_bOnlyCont = $val if defined $val; + $old +} +sub ua_personality(;$) { + my $val = shift; + my $old = $m_ua_personality; + $m_ua_personality = $val if defined $val; + $old +} + +sub clear_roots() { @m_sLinkRoots = (); } +sub get_roots() { return \@m_sLinkRoots; } +sub add_root($) { push @m_sLinkRoots, shift; } +sub add_files_root($) { + my $file = shift; + my $default_root; + my ($host) = ($file =~ m!(^https?://[^/]*)!i); + if (defined $host) { + $default_root = $file; + } else { + die "Can't find $file\n" unless -e $file; + $default_root = PathSubs::uniq_file($file); + } + $default_root =~ s![^/]*$!!; + add_root($default_root); +} + +### Default actions +sub default_sub {} +$m_subReport = \&default_sub; +$m_subAction = \&default_sub; +$m_subMirrorAction = \&default_sub; + +1; diff --git a/emacs.d/nxhtml/nxhtml/html-chklnk/PerlLib/HTML/ParserTagEnd.pm b/emacs.d/nxhtml/nxhtml/html-chklnk/PerlLib/HTML/ParserTagEnd.pm new file mode 100644 index 0000000..32407d6 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-chklnk/PerlLib/HTML/ParserTagEnd.pm @@ -0,0 +1,448 @@ +package HTML::ParserTagEnd; + +# Author address: +### Modified for , Lennart + +use strict; +use HTML::Entities (); + +use vars qw($VERSION); +$VERSION = "2.23"; # $Date: 1999/06/09 10:27:16 $ + + +sub new +{ + my $class = shift; + my $self = bless { '_buf' => '', + '_strict_comment' => 0, + }, $class; + $self; +} + + +# A little note about the observed Netscape behaviour: +# +# It parse in the depreceated 'literal' mode, i.e. no tags are +# recognized until a is found. +# +# is parsed like
, i.e. tags are recognized.  +# are presentend in smaller font than 
+#
+# Netscape does not parse this comment correctly (it terminates the comment
+# too early):
+#
+#     more comment -->
+#
+# Netscape ignores '' within the 
+    
+    
+  
+  
+
+
+    
+      
+        
+
+      
+    
+ + + + + + + + +
+ + + + + +
+ + + + + + + +
%%TOC%%
+
+   +
+
+
+ + diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc-template.css b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc-template.css new file mode 100644 index 0000000..a6ffabb --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc-template.css @@ -0,0 +1,141 @@ +/* Main structures >>>>>>>>>>>>>>> */ +.html-wtoc-maintop { + font-size: 1px; + font-size: 1em; + margin-top: 0em; + margin-bottom: 0em; +/* background-color:green; */ +} +.html-wtoc-main { +} + +td.html-wtoc-vdivline { + //background-color: #8be; + width: 0px; +} + +.html-wtoc-search-form { + margin-bottom: 0.1em; +} +.html-wtoc-search { + font-size: 0.8em; + color: green; +} +.html-wtoc-search a { + color: green; +} +/* <<<<<<<<<<<<<<<<<<< */ + + + + +/* Table of content >>>>>>>>>>>>>> */ + +#html-wtoc-id-hidetoc { + height: 20px; + border-bottom: 2px inset #ddf; + border-color: #dff; +} + +#html-wtoc-id-tocdiv { + width: 2.5em; + //background-color: #eff; +} +#html-wtoc-id-logo { + width: 100%; + height: 120px; + padding: 0em; + margin: 0em; + border: 0em; +} +#html-wtoc-id-toc { +} +#html-wtoc-id-tocwidth { + width: 18em; + height: 0em; + padding: 0em; + margin: 0em; + border: 0em; + line-height: 0em; +/* background-color: red; */ +} +#html-wtoc-id-toccol { + width: 18em; +} + +.html-wtoc-contcol { + background-color: #dFEfff; + background-color: #dFEfff; + background-color: #cd950c; + background-color: #eead0e; +} +/* <<<<<<<<<<<<<<<<<<< */ + + + + +/* Buttons etc >>>>>>>>>>>>>>> */ +.html-wtoc-button { + font-size: 0.75em; + font-size: 8pt; + color: #5A5D00; + background-color: #9cf; + background-color: #bcee68; + background-color: #a2cd5a; + padding: 0.2em; + Border-Width: 2px; + Border-Style: outset; + text-align: center; + border-color: #ddf; +} +a.html-wtoc-button { + text-decoration: none; + color: #5A5D00; +} +a.html-wtoc-button:hover { + text-decoration:none; + background-color: #6af; + color:#340; +} + +a.html-wtoc-buttonimg img { + width: 16px; + height: 16px; + padding: 4px; + border: 8px; +} +a.html-wtoc-buttonimg { + border:2px; + margin:2px; + margin-left:2px; + margin-right:2px; +} +a.html-wtoc-buttonimg { + font-size:1px; +} +a.html-wtoc-buttonimg:hover { + margin: 6px; + margin-left:0px; + margin-right:0px; + border-color: #ddf; + border-width: 2px; + border-style: outset; + background-color: #595C00; + background-color: #bef; + background-color: #b9ffb9; +} + +/* <<<<<<<<<<<<<<<<<<< */ + + +#nxhtml-link { + font-size: 0.7em; + text-align: center; + padding-top: 2em; + padding: 1em; +} + +.copyright { + color : #872; +} + diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc.css b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc.css new file mode 100644 index 0000000..a12cb65 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc.css @@ -0,0 +1,84 @@ +body { + margin: 0; +} +td { + font-size: 1em; +} + +/* Added by html-wtoc.pl >>>>>>>>>>>>> */ +.html-wtoc-mark { +/* background-color: #9cf; */ +/* background-color: #bcee68; */ +/* background-color: #a2cd5a; */ + width: 20px; + padding: 0; + border: 0; + text-align: center; +} +.html-wtoc-contline { + width: 100%; +} + +.html-wtoc-margin { + width: 0.6em; +} +.html-wtoc-contents { + font-size: 0.9em; + padding: 1em; + background-color: #9cf; + background-color: #a2cd5a; + background-color: #efffcf; + background-color: #ffffdf; + -moz-border-radius-topleft: 2em; +} +.html-wtoc-contents td { +/* background-color: #9cf; */ +/* background-color: #bcee68; */ +/* background-color: #a2cd5a; */ +} +.html-wtoc-contents-a { + text-decoration: none; + color: #595C00; +/* background-color: #9cf; */ +/* background-color: #bcee68; */ +/* background-color: #a2cd5a; */ + border: 1px #9cf solid; + border: 1px #a2cd5a solid; + border: 1px #ffffc0 solid; + padding-left: 0.25em; + padding-right: 0; + margin: 1px; + display: block; +} +.html-wtoc-contents a:hover { + text-decoration: none; + background-color: #b9ffb9; + border: 1px #6b8e23 solid; +} +.html-wtoc-currcont { + background-color: #738600; + color: #ffff2f; + background-color: #535600; + border: 1px #6b8e23 inset; + padding-left: 0.25em; + padding-right: 0; + margin: 1px; + display: block; +} +a.html-wtoc-currcont { + text-decoration: none; +} +a.html-wtoc-currcont:hover { + background-color: #738600; + background-color: #536600; + background-color: #434620; +} +/* <<<<<<<<<<<<<<<<<<< */ + + + + + + + + diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc.js b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc.js new file mode 100644 index 0000000..7f22db7 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/html-toc.js @@ -0,0 +1,361 @@ + +// © Copyright 2006 Lennart Borgman, http://www.OurComments.org/. All rights reserved. +// +// 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, 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. + + +var HTML_WTOC_NS_sCurrTocId; + + +HTML_WTOC_NS = { + + ///////////////////////////// + //// Basic event functions + ///////////////////////////// + + getEventObject : function (ev) { + var o; + if (window.event) + o = window.event.srcElement; + else if (null != ev) + o = ( ev.target ); + return o; + }, + getEvent : function (ev) { + if (window.event) { + return window.event; + } else if (null != ev) { + return ev; + } + }, + + eventStopPropagation : function (e) { + if (e.stopPropagation) + e.stopPropagation(); + else + e.cancelBubble=true; + }, + + eventPreventDefault : function (e) { + if (e.preventDefault) + e.preventDefault(); + else + e.returnValue=false; + }, + + ///////////////////////////// + //// TOC hide + ///////////////////////////// + + show_content : function (on) { + var toc = document.getElementById("html-wtoc-id-toccol").style; + var tdv = document.getElementById("html-wtoc-id-tocdiv").style; + var shw = document.getElementById("html-wtoc-id-showtoc").style; + var hid = document.getElementById("html-wtoc-id-hidetoc").style; + if (on) { + toc.display = ""; + tdv.display = ""; + shw.display = "none"; + hid.display = ""; + HTML_WTOC_NS.focus_page_link(0); + } else { + toc.display = "none"; + tdv.display = "none"; + shw.display = ""; + hid.display = "none"; + } + }, + + + + + + ///////////////////////////// + //// Open-Close + ///////////////////////////// + onblur_action : function(ev) { + HTML_WTOC_NS_sCurrTocId = null; + }, + onfocus_action : function(ev) { + var o = HTML_WTOC_NS.getEventObject(ev); + if (!o) return; + + HTML_WTOC_NS_sCurrTocId = o.id; + }, + onclick_action : function(ev) { + var o = HTML_WTOC_NS.getEventObject(ev); + var e = HTML_WTOC_NS.getEvent(ev); + if (13 == e.keyCode) return true; + if (!o) return true; + if ("IMG" == o.tagName) o = o.parentNode; + var iId = HTML_WTOC_NS.getIdnumFromId(o.id); + var sChildId = "toc_child_"+iId; + var sOldCurrTocId = HTML_WTOC_NS_sCurrTocId; + HTML_WTOC_NS.toggle_open(sChildId, o); + HTML_WTOC_NS_sCurrTocId = sOldCurrTocId; + return false; + }, + + toggle_open : function (id, parent) { + var child = document.getElementById(id).style; + var sInner = parent.innerHTML; + var re = new RegExp("[^/]*\.gif", "i"); + if ("none" == child.display) { + child.display = ""; + parent.innerHTML = sInner.replace(re, "down.gif")+""; + } else { + child.display = "none"; + parent.innerHTML = sInner.replace(re, "right.gif")+""; + } + }, + + + + ///////////////////////////// + //// Load + ///////////////////////////// + + onload_actions : function (iPageNum) { + document.body.onkeydown = HTML_WTOC_NS.onkeydown_action; + document.body.onmouseover = HTML_WTOC_NS.onmouseover_action; + var aATags = document.getElementsByTagName("a"); + for(var i = 0; i < aATags.length; i++) { + var o = aATags[i]; + if (null != HTML_WTOC_NS.getIdnumFromId(o.id)) { + o.onfocus = HTML_WTOC_NS.onfocus_action; + o.onblur = HTML_WTOC_NS.onblur_action; + if (o.id.substr(0, 12) == "opener_text_") { + o.onclick = HTML_WTOC_NS.onclick_action; + o.title = "Open/Close"; + } else if (o.id.substr(0, 7) == "opener_") { + o.onclick = HTML_WTOC_NS.onclick_action; + o.className = "html-wtoc-mark"; + o.title = "Open/Close"; + } + } + } + HTML_WTOC_NS.focus_page_link(iPageNum); + }, + focus_page_link : function (iPageNum) { + // Element might be hidden + try { + document.getElementById("toc_link_"+iPageNum).focus(); + } catch (exc) { + } + }, + + + + + + + + ///////////////////// + //// Mouse + ///////////////////// + + onmouseover_action : function (ev) { + if (null == HTML_WTOC_NS_sCurrTocId) return true; + var o = HTML_WTOC_NS.getEventObject(ev); + var iId = HTML_WTOC_NS.getIdnumFromId(o.id); + if (null == iId) return true; + o.focus(); + }, + + + + ///////////////////// + //// Key + ///////////////////// + + onkeydown_action: function (ev) { + var keyDown = 40; + var keyUp = 38; + var keyLeft = 37; + var keyRight = 39; + var keyReturn = 13; + var keyF2 = 113; + var keyInsert = 45; + // Opera + var keyOperaDown = 57386; + var keyOperaUp = 57385; + var keyOperaLeft = 57387; + var keyOperaRight = 57388; + var keyOperaF2 = 57346; + var keyOperaInsert = 57394; + + var SwitchKey = keyInsert; + var SwitchKeyOpera = keyOperaInsert; + + var bUp; + var e = HTML_WTOC_NS.getEvent(ev); + if (null == HTML_WTOC_NS_sCurrTocId) { + switch (e.keyCode) { + case SwitchKey: + case SwitchKeyOpera: + HTML_WTOC_NS.focus_page_link(0); + HTML_WTOC_NS.eventStopPropagation(e); + HTML_WTOC_NS.eventPreventDefault(e); + return false; + } + return true; + } + switch (e.keyCode) { + case keyLeft: + case keyOperaLeft: + case keyRight: + case keyOperaRight: + HTML_WTOC_NS.handle_leftright_keys(e); + HTML_WTOC_NS.eventStopPropagation(e); + HTML_WTOC_NS.eventPreventDefault(e); + return false; + case keyDown: + case keyOperaDown: + bUp = false; + break; + case keyUp: + case keyOperaUp: + bUp = true; + break; + case SwitchKey: + case SwitchKeyOpera: + if (null != HTML_WTOC_NS_sCurrTocId) { + var o = document.getElementById(HTML_WTOC_NS_sCurrTocId); + if (o) o.blur(); + HTML_WTOC_NS_sCurrTocId = null; + } + HTML_WTOC_NS.eventStopPropagation(e); + HTML_WTOC_NS.eventPreventDefault(e); + return false; + default: + //alert(e.keyCode); + return true; + } + var oOpener; + oOpener = HTML_WTOC_NS.getNextVisOpener(HTML_WTOC_NS_sCurrTocId, bUp); + oOpener.focus(); + HTML_WTOC_NS.eventStopPropagation(e); + HTML_WTOC_NS.eventPreventDefault(e); + return false; + }, + + handle_leftright_keys: function (e) { + var keyLeft = 37; + var keyRight = 39; + var keyOperaLeft = 57387; + var keyOperaRight = 57388; + var iId = HTML_WTOC_NS.getIdnumFromId(HTML_WTOC_NS_sCurrTocId); + if (null == iId) return; + var sId = "opener_" + iId; + var oOpener = document.getElementById(sId); + var sId = HTML_WTOC_NS_sCurrTocId; // It will be cleared before getNextVis + + var bOpenAction; + var bOpened; + var bUp; + var oChild = document.getElementById("toc_child_"+iId); + if (null == oChild) { + } else { + bOpened = (oChild.style.display != "none"); + } + switch (e.keyCode) { + case keyLeft: + case keyOperaLeft: + bUp = true; + bOpenAction = (null != bOpened) && (bOpened); + break; + case keyRight: + case keyOperaRight: + bUp = false; + bOpenAction = (null != bOpened) && (!bOpened); + break; + default: + alert("bad key handling..."); + } + if (bOpenAction) { + oOpener.click(); + HTML_WTOC_NS_sCurrTocId = sId; + } else { + var oPrev = HTML_WTOC_NS.getNextVisOpener(sId, bUp); + oPrev.focus(); + } + }, + + + + + + + ////////////////////// + //// Util + ////////////////////// + getNameFromId: function (sId) { + var re = new RegExp("(.*?_)(\\d+)", "i"); + if (!re.test(sId)) return null; + var iId = sId.replace(re, "$1"); + return iId; + }, + getIdnumFromId: function (sId) { + var re = new RegExp("(.*?_)(\\d+)", "i"); + if (!re.test(sId)) return null; + var iId = sId.replace(re, "$2"); + return iId; + }, + + + getNextVisOpener: function (sId, bUp, bTrace) { + if (bTrace) alert("getNextVisOpener("+sId+","+bUp+")"); + var iId = HTML_WTOC_NS.getIdnumFromId(sId); + if (null == iId) { + alert("getNextVisOpener err iId==null"); + return; + } + var sIdName = HTML_WTOC_NS.getNameFromId(sId); + if (null == sIdName) { + alert("getNextVisOpener err sIdName==null"); + return; + } + var oOpener; + var iLoop = -2; + while (oOpener == null) { + if (bTrace) alert(iId); + if (iLoop++ > iMaxChildNum) { alert("Child num error"); return; } + if (!bUp) { + iId++; + } else { + iId--; + } + if (iId > iMaxChildNum) { iId = 0; } + if (iId < 0) { iId = iMaxChildNum; } + var s = sIdName+iId; + oOpener = document.getElementById(s); + if (oOpener != null) { + if (bTrace) alert(oOpener.offsetLeft); + if (oOpener.style.display == "none") { // All + oOpener = null; + } else if (oOpener.offsetLeft < 0) { // IE + oOpener = null; + } else if (0 == oOpener.scrollWidth) { // Opera + oOpener = null; + } + } + } + return oOpener; + } + + + +}; //HTML_WTOC_NS diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/blank12.gif b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/blank12.gif new file mode 100644 index 0000000000000000000000000000000000000000..0869f9ffe832b7778e8af9dc74cd36f2ef3436ca GIT binary patch literal 825 zcmZ?wbhEHbC^m3io7tWu+b zqaiR9LqPE-3nK#%=zs`No?zfGVqoNu@z}87V55MLRt$$@0t2IfBA>yBhJ*%23Elvc aiooQf&5UMpB0mb3oSdu?%*DgOU=0A%U<8f; literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/freeCont.gif b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/freeCont.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c94b60111dd28a2de5e270cbbec1f0146b1f869 GIT binary patch literal 913 zcmZ?wbhEHb6krfw_|51Ih`YJi)+`$MF9zv%`i32bh@I z6a+K`7+Tr|82%^=EOcaQ<&kw_d62-s%*G`kaDv0|Q8Oc_lbnP@(c}G7IeB;@E__;e zq+W^p!Wzkmi4C)D8vmu-*svsEfom+6j918F-$eoJQoXlIw5~4kU+)!KwRM5xDn>>I FYXCc(5>5aB literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/gnu-m-x-160.png b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/gnu-m-x-160.png new file mode 100644 index 0000000000000000000000000000000000000000..5254ef110b1fc505925f854d0b582b9ddf094123 GIT binary patch literal 1957 zcmV;W2U_@vP)005u}1^@s6i_d2*00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-Xb4FEGWBEf$=0000TbVXQnLvL+uWo~o;Lvm$dbY)~9 zcWHEJAXI2&AV*0}Q14_VZU6uW8%ab#RCwC$o!gPzI1EKamZNYeb`FlfnfQA$nFySN z9m=G^{n^>-?bd@7i5GcL<&UkMYC*)|1t3yX+Aufv_s92g_W!^A{*z|A=S0|Jz&9&| z0BEc{wcyPPVFEgvz~8z4j36e!(+~Ox_-27H0iSN*NBS@WgbDEUg73u-0Gt54*5GUS z5)r}#eDcB9^d%aE3Gift?`a}eDNX7z!wgt|NeO%tJ-U3;EM&`PQw!#!UTN&!K)k>H|h8>MpxI% zz!yjHPDCWtg5_-t69C>*pIXHcRK3(QMp8<+cm0QJm1n;*@ZD3N)tpe0II3`%57Jl!osHc&TP~w}M#VN75L> z9uO;D?1}}T@a|#JMy)aE;*DbKShj-LptLXdm7agd!?KMN_>%NJXu#JqrdKT70Q=?M zvXjEp6MRV{GibthH@*J-@x2_y<4&CRN|P@~KW?FfPT(6B@Q(X&RT>G!rEJ@la>XA3 zpRPYi@VXw#tN;CXt^lF{pIX2*Qokp4E&0qj$>k;oN~2cqb#&m9Rlb&^;J&6;<}SNW_K^9@zd%Y7Yo?~U0hE`T$`chZn}y0;N5v~S7x0O1Po1%a>!#F*~| zd)P%{+!ed12RkQx>iQ8Y6`b{POYnNIMG@1`z-gaSup)ecQnAhB3N{x2p(%jU5CY#C z5av!uQbhPPH%d6|MCVYz(Ml-&0@20MVW?nK06%Br-JR1KrxjcroCAarQ}8n!tw)tL z{=Msl$q2^qsaRs>6iE>xrp_F8X zdN3V^_Vtp}&vklNF9oOSXOJwF7%09GP&)zMXOIsiw&Q4>h75TbzdfcygC z&go$#g5LlbNc~#X#?hDBL#ARBaDbY4gs`TT1;AkHcNS=G={U;aqA1{iuGkZV(NZx0 z9tZMtqr_3?=~xL100x5Zt_praxbmTs04St-t%3HUhMrXr04HjWBB~$&UZ>qp+ubZt z6KD?*dR0LH-1=XFs)f)|gW?9l=??Q544>-{MBnkt+rB{*aNy+hc5r(H6^Pix$9oC)mZgIHo*IlY*nYnA75K=WC`{ySb?W9axG0 zVJnC?z%5G*yj5!Rl75{u9!F!NIu_F@;EhzA0{T2nM?7T;j`*UsgAY|x1FrrQz|q7h z0JxwEM)sQ~q@uvzX+lyI-wm1(mGPNA1=sFMK@Cwri`pjaxzH#e6HYxf8hkOd03Z-f zovqS_g)Aeap4(|RYODpv6pb{?2fR^0)bLFG#2Ep=$+~-i@AUy7CJW-om-7J-dwFzn z1f%rlaRCqz-SYu}fN07F00N>Z7XS!|FoCUW>F2MnLl&Ih-#%1kPBee9b7LtEn*+d6 z%4B^F3MDqm0w9LP1+YiKP`@?o z3quggMoi36JAp>{l06O>>L&}2m-_tu?ITeG0->o2s{q*IFzTn9My-8E0T+hQqC9%` zSq;D%$5B7uO^rl+veoQcIR&jc4tu`lh%*t>PsO8C?+^f6Z=5&UVnQedpBn{4{rqMj zN%%|v1UBlyp#W;%H0f6_6-%q1SqdI`lb8&I8t`q~pv?&HZy!kmBrEl^nj}5to53#1p}e!wQ_`;Mg9Db-`#7VfIw*a+W?5o(S%6NG}5o{ zvF!a#6c7kae=B>wNz{)Nj7?@E7XU{5me@*2?^2K_^_xYBC03t){`y+zf-zF?NadjR zi=loaej5b@KGSOeAn=)9OB}$~bV~Y-3E$mos_X{@DvT72`nkL|00Q4`#?m@>1^|KY zuw2rB5CDPC)F%MMPMbyP1`+^Kze~_0Q!xMnUlm|d5CR}|pQ*0^NZpqt{+1dL^%DVV rbSefwQm?7+0Jtc8y$2tSx`%%N{cE*N>e#VT00000NkvXXu0mjf#|w$? literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/gnu-m-x-160.xcf b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/gnu-m-x-160.xcf new file mode 100644 index 0000000000000000000000000000000000000000..f2ce5ceb4e44ba3e0d8365f81cf3018bc084d11d GIT binary patch literal 22466 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 literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/hideCont.gif b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/hideCont.gif new file mode 100644 index 0000000000000000000000000000000000000000..9908895699cf345553771565f1fe8acd047ceed2 GIT binary patch literal 917 zcmZ?wbhEHb6krfw_|5P0JTCu@h1x-1A_sB4k#yp@&p4%5kuku28Rs`9GjUK8zMNE z92(mNxEVZ7Y}Q zI{)?c|C^ZnH#7ThYy02M?!UeLe-DrU>FNJ-a{gCV{;#Y1-_Y=X=FI<#7X4qo{Qrs- z3`n2>DE0sUzyI@*#73E;Auw1%K=CIFBLjmtgAT|+pgh6AQN*Ah^T1)l0tZ$W783!D z3C$htN)|C50*9Jd7zHJ)T23%BGjNNl*=Q^fOgh5LsL~OWut4QFHy@irf2?{1 zf`*0%2UyyeeP6M7l`QU9=+c;XMbmJlcf0Rgwpz_nt#hlwl#@(XZPmKI!jD_3L`s0c F8UQ@RUC96d literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/nosearch.gif b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/nosearch.gif new file mode 100644 index 0000000000000000000000000000000000000000..e824f5ba3052fafda09da2a8ade818fb978d7a44 GIT binary patch literal 1100 zcmdUu(Tf#T9LG<(#<-MRH+84faJE&OTgIKjaMp_5;nuoS$U1BolhDT81?%=uT(X7Z zgNw7V3r9=+6Btr=-NB#G=Hd#G_zQuqkg*fvFHw5{4@byDW4W z(HSuqF&VKK=nP7?8S|M4%9bpOc<6KDa4Y zmSt9!C0Ukcxt`@l9#`@VqSy2a#ZA5QLYM96k1V~ z;r}UA-v1wE-0iv#p#}6LDs}HCkoFIHWA&yz7uuJPY7bQpOjd3_Rs%muXcvt z{dV;1$@=Uk&rWUQuHLw2YA1U1h3?z$4Akyl^HtZ{oqybU`-FL6=hB*b*n9&X+5W z^}p3njqTdLc6$8jt<}D%tFw>n-!$F#+uiZbbB|Z6^_eYB_uTLGV|_otxffUU+&cHe d*g_53kM{PxQk%OpH#oEr)uuL{>FPqe{{>0koPPiS literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/right.gif b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/right.gif new file mode 100644 index 0000000000000000000000000000000000000000..2400cf102023d1a797370260a959cebdb79632b0 GIT binary patch literal 857 zcmZ?wbhEHbC^m3io7tWu+b zqaiR9LqPE-3nK#%=zs`No?zfGV_;-xP}s1*u~C3Y#)iYO;ZQ3FD^JCa4G$YS1$3nh fJ}g+&&?~FW_kg2N;p8L%r$ss^FC{oIFjxZsK}ZQy literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/search.gif b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/search.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f58dfd4a3b0bdae3dcd29aac5a33fab9070013b GIT binary patch literal 1118 zcmd^;?~4^x7{`yg>g)yM>NR&jg`K?FPH8l?MMFm3@z%P7yREZHGW5gkZo+n7v~s14 z27!;gi}@?knq5oHs}VY4P#yo8q|nEvm3$?MAPiw(U%V&zC6#X z=f%_4|H9MuNEh0IGK8?JW6#1&U?#DUSSl=|z_)`&fg3cnfHVTq3ZNBm2skIUO>Boa zHgR0y8N@e8!z4|evIe-yh4X^>& z1Z)FwfHVL+5Ew!MiqmG9HVujkOd9Bv6quA)l(>|56f6ohY>PctKn%2|rCG|4iQWrfo$%X08?>g3YOm61n!9+&eBz&*7Uua)>U#mR)%8ByL9rg0YXTQI;bm)t|@ry%qGxgIS zJvFhDyL##8PaYlp=i}O9`|5|)H@hD^aQx_v?Su69YWdFm4^zFHHw-%8u9-AEcKp7R zx8CS$53Q@16U*lpdxqWh;k>o8r&b@>bJ-s~KRi3T=C{$?kKgEi;E@+!d-d+Msp*-C zleU*8?=pPnCp>r1<}u^+d(r*;f~w_G}Q_RDqqZZH4!`QWVm_MHoJ zOK<(OwR)mm+P&{weQihQrfu5N!Ut3LAL~BTtBsKjTRNUNve@3ccIL5(%bRHM(1A+V zbMIWdH5Zo7lzL~*O^=Nqs@5h~?>YT0m!Z` m=4Y!r?+uT?e6Z)#z42N{MK_K-|CRR5Dpa{N-M<&1XZ`~l*`Xo; literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/showCont.gif b/emacs.d/nxhtml/nxhtml/html-toc/html-toc/img/showCont.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bd2e7d310bb028a4692f672267a51adab5038ba GIT binary patch literal 909 zcmZ?wbhEHb6krfw_|5- oao5?b3`%uxR!=R{@d!x|Xf<@zi|yF-BDmXOx!;ls0|f?a01IpwjQ{`u literal 0 HcmV?d00001 diff --git a/emacs.d/nxhtml/nxhtml/html-upl.el b/emacs.d/nxhtml/nxhtml/html-upl.el new file mode 100644 index 0000000..1ce2e98 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-upl.el @@ -0,0 +1,329 @@ +;;; html-upl.el --- Uploading of web sites +;; +;; Author: Lennart Borgman (lennart O borgman A gmail O com) +;; Created: Mon Mar 06 19:09:19 2006 +(defconst html-upl:version "0.3") ;; Version: +;; Last-Updated: 2008-03-22T01:23:01+0100 Sat +;; Keywords: +;; Compatibility: +;; +;; Features that might be required by this library: +;; +;; `cl', `html-site', `html-upl', `mail-prsvr', `mm-util', `timer', +;; `url-c', `url-parse', `url-vars'. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; 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., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Code: +(eval-when-compile (add-to-list 'load-path default-directory load-path)) +(eval-when-compile (require 'html-site nil t)) + +;;;###autoload +(defgroup html-upl nil + "Customization group for html-upl." + :group 'nxhtml) + +(defcustom html-upl-dir + (file-name-as-directory + (expand-file-name + "html-upl" + (file-name-directory + (if load-file-name load-file-name buffer-file-name)))) + + "Directory where the tools needed are located. +The tools for html-upl includes: + +- ftpsync.pl +" + :type 'directory + :group 'html-upl) + +(defun html-upl-browse-remote () + (interactive) + (let ((url (html-site-local-to-web html-site-current + ;;buffer-file-name + (html-site-buffer-or-dired-file-name) + nil))) + (browse-url url))) +(defun html-upl-browse-remote-with-toc () + (interactive) + (let ((url (html-site-local-to-web html-site-current + ;;buffer-file-name + (html-site-buffer-or-dired-file-name) + t))) + (browse-url url))) +(defun html-upl-browse-remote-frames () + (interactive) + (let ((url (html-site-local-to-web (html-site-current-frames-file) + ;;buffer-file-name + (html-site-buffer-or-dired-file-name) + nil))) + (browse-url url))) + +;;;###autoload +(defun html-upl-upload-site-with-toc () + (interactive) + (html-upl-upload-site1 t)) + +;;;###autoload +(defun html-upl-upload-site () + (interactive) + (html-upl-upload-site1 nil)) +(defun html-upl-upload-site1(with-toc) + (html-site-current-ensure-site-defined) + (html-upl-ensure-site-has-host) + (let ((local-dir (if with-toc + (html-site-current-merge-dir) + (html-site-current-site-dir))) + (ftp-host (html-site-current-ftp-host)) + (ftp-user (html-site-current-ftp-user)) + (ftp-pw (html-site-current-ftp-password)) + (ftp-dir (if with-toc + (html-site-current-ftp-wtoc-dir) + (html-site-current-ftp-dir))) + (ftpsync-pl (expand-file-name "ftpsync.pl" html-upl-dir)) + ) + (unless (< 0 (length ftp-host)) + (error "Ftp host not defined")) + (unless (< 0 (length ftp-user)) + (error "Ftp user not defined")) + (unless (< 0 (length ftp-dir)) + (if with-toc + (error "Ftp remote directory for pages with TOC not defined") + (error "Ftp remote directory not defined"))) + (unless (< 0 (length ftp-pw)) + (setq ftp-pw (html-site-get-ftp-pw))) + (let* ( + (buffer (noshell-procbuf-setup "subprocess for upload")) + (remote-url (concat "ftp://" ftp-user ":" ftp-pw "@" ftp-host ftp-dir)) + (opt (list + "-v" + "-p" + local-dir + remote-url))) + (apply 'noshell-procbuf-run + buffer + "perl" "-w" + ftpsync-pl + opt + )))) + +(defun html-upl-ensure-site-has-host () + (let ((host (html-site-current-ftp-host))) + (unless (and host (< 0 (length host))) + (error "Site %s has no ftp host defined" html-site-current)))) + +;;;###autoload +(defun html-upl-remote-dired (dirname) + "Start dired for remote directory or its parent/ancestor." + (interactive (list + (read-directory-name "Local directory: " nil nil t))) + (html-site-current-ensure-file-in-site dirname) + (html-upl-ensure-site-has-host) + (let* ((local-dir dirname) + (remote-dir (html-site-current-local-to-remote local-dir nil)) + to-parent + res + msg) + (while (not res) + (condition-case err + (progn + (dired remote-dir) + (setq res t)) + (error ;;(lwarn 't :warning "err=%s" err) + (setq msg (error-message-string err)))) + ;; It does not look like we always get an error. Check where we are: + (when res + (unless (string= default-directory remote-dir) + (setq res nil) + (setq msg ""))) + (unless res + ;; 450 Requested file action not taken File unavailable (e.g. file busy). + ;; 550 Requested action not taken File unavailable (e.g. file not found, no access). + (if (or (string= msg "") + (save-match-data (string-match " \\(?:550\\|450\\) " msg))) + (progn + (if (not to-parent) + (setq to-parent (concat + (file-name-nondirectory remote-dir) + "/..")) + (setq to-parent (concat + (file-name-nondirectory remote-dir) + "/" + to-parent "/.."))) + ;;(setq local-dir (directory-file-name (file-name-directory (directory-file-name local-dir)))) + ;;(html-site-current-ensure-file-in-site local-dir) + ;;(setq remote-dir (html-site-current-local-to-remote local-dir nil)) + (setq remote-dir (directory-file-name (file-name-directory remote-dir))) + ) + (setq res msg)))) + (if (stringp res) + (error "%s" msg) + (when to-parent + (message "Remote dir not found, showing ancestor %s" to-parent))))) + +;;;###autoload +(defun html-upl-upload-file (filename) + "Upload a single file in a site. +For the definition of a site see `html-site-current'." + (interactive (list + (let ((use-dialog-box nil) + (f (file-relative-name + ;;(if (derived-mode-p 'dired-mode) (dired-get-file-for-visit) buffer-file-name) + (html-site-buffer-or-dired-file-name) + ))) + (read-file-name "File: " nil nil t f)) + )) + (html-site-current-ensure-file-in-site filename) + (html-upl-ensure-site-has-host) + (let* ((buffer (get-file-buffer filename)) + (remote-file (html-site-current-local-to-remote filename nil)) + (remote-buffer (get-file-buffer remote-file)) + (local-file filename)) + (when (or (not buffer-file-name) + (not (buffer-modified-p buffer)) + (and + (y-or-n-p (format "Buffer %s is modified. Save buffer and copy? " + (buffer-name buffer))) + (with-current-buffer buffer + (save-buffer) + (not (buffer-modified-p))))) + (when (= ?~ (string-to-char local-file)) + (setq local-file (expand-file-name local-file))) + (when (and (fboundp 'w32-short-file-name) + (string-match " " local-file)) + (setq local-file (w32-short-file-name local-file))) + (copy-file local-file + ;;(html-site-current-local-to-remote filename nil) + remote-file + 0) + (when remote-buffer + (with-current-buffer remote-buffer + (revert-buffer nil t t))) + (message "Upload ready") + ))) + +;;;###autoload +(defun html-upl-edit-remote-file () + (interactive) + (html-upl-edit-remote-file1 nil)) + +;;;###autoload +(defun html-upl-edit-remote-file-with-toc () + (interactive) + (html-upl-edit-remote-file1 t)) + +(defun html-upl-edit-remote-file1(with-toc) + (html-site-current-ensure-buffer-in-site) + (html-upl-ensure-site-has-host) + (let* ((remote-root (concat "/ftp:" + (html-site-current-ftp-user) + "@" (html-site-current-ftp-host) + ":" + (if with-toc + (html-site-current-ftp-wtoc-dir) + (html-site-current-ftp-dir)))) +;; (remote-file (html-site-path-in-mirror (html-site-current-site-dir) +;; buffer-file-name +;; remote-root)) + (remote-file (html-site-current-local-to-remote buffer-file-name nil)) + ) + (find-file remote-file))) + +;;;###autoload +(defun html-upl-ediff-file (filename) + "Run ediff on local and remote file. +FILENAME could be either the remote or the local file." + ;;(interactive "fFile (local or remote): ") + (interactive (list + (or (html-site-buffer-or-dired-file-name) + (read-file-name "File: ")))) + (html-upl-ensure-site-has-host) + (let* ((is-local (html-site-file-is-local filename)) + remote-name + local-name) + (if is-local + (progn + (html-site-current-ensure-file-in-site filename) + (setq remote-name (html-site-current-local-to-remote filename nil)) + (setq local-name filename)) + (setq local-name (html-site-current-remote-to-local filename nil)) + (html-site-current-ensure-file-in-site local-name) + (setq remote-name filename)) + (let ((local-buf (find-file local-name)) + (remote-buf (find-file remote-name))) + (ediff-buffers local-buf remote-buf)))) + +;;(defun html-site-buffer-or-dired-file-name () +;; (defun html-upl-ediff-buffer () +;; "Run ediff on local and remote buffer file. +;; The current buffer must contain either the local or the remote file." +;; (interactive) +;; (html-upl-ediff-file (buffer-file-name))) + +(provide 'html-upl) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; html-upl.el ends here + +;; (defun html-site-local-to-remote-path (local-file protocol with-toc) +;; (let ((remote-dir (if (eq protocol 'ftp) +;; (if with-toc +;; (html-site-current-ftp-wtoc-dir) +;; (html-site-current-ftp-dir)) +;; (if with-toc +;; (html-site-current-web-wtoc-dir) +;; (html-site-current-web-dir))))) +;; (html-site-path-in-mirror +;; (html-site-current-site-dir) local-file remote-dir))) + +;; (defun html-site-local-to-web (local-file with-toc) +;; (let ((web-file (html-site-local-to-remote-path local-file 'http with-toc)) +;; (web-host (html-site-current-web-host))) +;; (save-match-data +;; (unless (string-match "^https?://" web-host) +;; (setq web-host (concat "http://" web-host)))) +;; (when (string= "/" (substring web-host -1)) +;; (setq web-host (substring web-host 0 -1))) +;; (concat web-host web-file) +;; )) +;; +;;; Use tramp-tramp-file-p instead: +;; (defun html-upl-file-name-is-local (file-name) +;; "Return nil unless FILE-NAME is a Tramp file name." +;; (save-match-data +;; (not (string-match "^/[a-z]+:" file-name)))) + +;; (defun html-upl-remote-to-local (remote-file) +;; (let ((remote-site-dir (html-site-current-web-dir))) +;; (unless (html-site-dir-contains remote-site-dir remote-file) +;; (error ""))) +;; ) + diff --git a/emacs.d/nxhtml/nxhtml/html-upl/COPYING b/emacs.d/nxhtml/nxhtml/html-upl/COPYING new file mode 100644 index 0000000..5b6e7c6 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-upl/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/emacs.d/nxhtml/nxhtml/html-upl/Changes b/emacs.d/nxhtml/nxhtml/html-upl/Changes new file mode 100644 index 0000000..0bfd93c --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-upl/Changes @@ -0,0 +1,115 @@ + +1.26 => 1.27 (2004-08-23) +========================= + + * Proposed and partially provided by Samuel Marshall + * enhanced timezone handling, should be perfect now + * new option -c, like -i but then asks interactively to let do it + * if FTP user/password are set to ?, they are asked for interactively + + +1.25 => 1.26 (2004-03-31) +========================= + + * fixed "dangerous" algorithm of synchronization direction + + +1.24 => 1.25 (2004-03-20) +========================= + + * fixed some 1.24 bugs + * clock offset computation now more resistant against very slow connections + * clock offset computation disabled for GET mode, so mirroring of foreign + stuff is now possible again + * default localdir of . disabled, therefore + * using . as localdir parameter does not cause a parsing error any more + * replaced damn indentation tabs in sourcecode by appropriate number of + spaces, so code is readable independent of tab settings + * enabled handling of ftpdir / + * handling of relative ftpdir corrected + + +1.23 => 1.24 (2003-10-11) +========================= + + By Michiel Steltman + + * handle files with blanks etc in names + * clock offset remote-local to reduce unnecessary transfers + * error handling + + +1.22 => 1.23 (2003-09-28) +========================= + + * New parameter timeout + + +1.21 => 1.22 (2003-03-24) +========================= + + * Now cuts of / at directory spec's end, to avoid pwd() being different + from target of cwd() (which lead to unneccesarry abortions) + + +1.20 => 1.21 (2003-03-24) +========================= + + * version information in sourcefile and output of -h command + + +1.11 => 1.20 (2003-03-22) +========================= + + * generally, most foreseeable problems are beeing checked, in particular: + + - unability to connect to FTP server + - unability to login into FTP server + - unability to change to local or remote base directory + - unability to change to remote subdirectory + - unability to create local or remote subdirectory + - unability to remove local or remote subdirectory + - unability to put or get a file within 3 trials + + All these errors (except the last one) leads to immediate abortion. + + +1.10 => 1.11 (2002-05-10) +========================= + + * Some optical corrections concerning output + + * Files are now automatically re-transferred until the size on both ends + matches + + * -? now corrrectly recognized + + +1.00 => 1.10 (2001-10-28) +========================= + + * config file support + This is mportant to avoid putting ftp passwords in the process list! + + * much more informative standard and verbose/debug output, including kind + of a advance information + + * better FTP-URL parsing supporting such without user/password + + * much better default values, e.g. ftp://ftp:anonymous@localhost/., ... + + * softlinks are now detected (locally and remote) and treated somewhat + correctly, i.e. they are ignored correctly ;-)) + + + +=> 1.00 (2001-10-26) +==================== + +* 1.0 created 2001-10-20 23:10 by Christoph Lechleitner + +Quite good for a 5 hour hack, isn't it? +O.K., I have already written similar programs for local file systems +in Pascal for DOS, Win3x and OS/2, and in VisualBasic for Win95b. + + diff --git a/emacs.d/nxhtml/nxhtml/html-upl/README b/emacs.d/nxhtml/nxhtml/html-upl/README new file mode 100644 index 0000000..3f9f505 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-upl/README @@ -0,0 +1,111 @@ +# README file for ftpsync.pl + + +Contents: +========= + +- Overview +- Why use ftpsync.pl instead of mirror, sitecopy, ...? +- Requirements/Restrictions +- Bug reports, Contact +- License +- Updates + + +Overview: +--------- + +ftpsync.pl synchronizes a local directory tree and a remote FTP directory tree. + +It was initally written to automize web publishing, but might be useful for +some other purposes, like mirroring not-too-large public sites, data +replication, and more. + +Call "ftpsync.pl -h" to get a short parameter explanation. + + +Why use ftpsync.pl instead of mirror, sitecopy, ...? +---------------------------------------------------- + +Yes, there are similar projects, so some comments on them: + +Compared to mirror, ftpsync.pl is capable of PUTing, not only GETing stuff +(Don't blame me if mirror is able to PUT, I could'nt find a way). + +Compared to sitecopy, ftpsync.pl has no problems, if the remote site has been +changed since its last run by other tools and activites. Unless network +problems or bugs occur, ftpsync.pl does a reliable synchronization. + +Compared to both, ftpsync.pl is very lightweight ;-)) + + +Requirements / Restrictions: +---------------------------- + +- Perl 5.6+ + ftpsync.pl was initially developed on Perl 5.6.0-81 on SuSE Linux 7.2, + older Perl 5.x version might work. Test reports welcome at ftpsync@ibcl.at! + +- File::Find, IO::Handle + IMHO parts of the basic perl package. + +- Net::FTP + Part of the perl-libnet package. + +- UNIX like operating systems on local system + Porting to DOS based systems should be easily done by changing the + directory separator. + +- Perhaps, the script does not work with all FTP servers + It is beeing tested only against UNIX based FTP servers. + + +Bug-Reports, Contact: +--------------------- + +Besides ftpsync.sourceforge.net, ftpsync@ibcl.at is a good target for comments +of any kind. + + +License: +-------- + +FTPSync.pl is GNU/GPL software and eMail ware. + + +FTPSync.pl as GNU/GPL software: +------------------------------- + +FTPSync.pl (ftpsync.pl) is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +See attached file COPYING. + + +FTPSync.pl as eMail ware: +------------------------- + +FTPSync.pl is also eMail-Ware, which means that the initial author +(Christoph Lechleitner) would like to get an eMail (to ftpsync@ibcl.at), +- if anyone uses the script on production level, +- if anyone distributes or advertises it in any way, +- if anyone starts to (try to) improve it. + + +Updates +------- + +The software and updates should be available from +http://ftpsync.sourceforge.net/ +http://www.ibcl.at/ossw/FTPSync diff --git a/emacs.d/nxhtml/nxhtml/html-upl/TODO b/emacs.d/nxhtml/nxhtml/html-upl/TODO new file mode 100644 index 0000000..923583d --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-upl/TODO @@ -0,0 +1,2 @@ + +Nothing as of now. diff --git a/emacs.d/nxhtml/nxhtml/html-upl/ftpsync.pl b/emacs.d/nxhtml/nxhtml/html-upl/ftpsync.pl new file mode 100644 index 0000000..729d964 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-upl/ftpsync.pl @@ -0,0 +1,700 @@ +#!/usr/bin/perl +# +# ftpsync.pl +# +# See attached README file for any details, or call +# ftpsync.pl -h +# for quick start. +# +# LICENSE +# +# FTPSync.pl (ftpsync) is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# FTPSync.pl (ftpsync) is also eMail-Ware, which means that the initial author +# (Christoph Lechleitner) would like to get an eMail at ftpsync@ibcl.at, if +# - if anyone uses the script on production level, +# - if anyone distributes or advertises it in any way, +# - if anyone starts to (try to) improve it. +# +# +################################################################################ + +# +# Options etc. +# +#print "Starting imports.\n"; # For major problem debugging +printf STDERR "argv=@ARGV\n"; + +use File::Find; +use File::Listing; +use Net::FTP; +use strict; +# flushing ... +use IO::Handle; +STDOUT->autoflush(1); +STDERR->autoflush(1); + +sub dosync(); +sub print_syntax(); +sub print_options(); +sub buildremotetree(); +sub buildlocaltree(); +sub listremotedirs(); +sub parseRemoteURL(); + +# Option Variables +#print "Defining variables.\n"; # For major problem debugging +# meta +my $returncode=0; +my $configfile=$ENV{"HOME"}."/.ftpsync"; +# basics +my $localdir=""; +my $remoteURL=""; +my $syncdirection=""; +my $ftpuser="ftp"; +my $ftppasswd="anonymous"; +my $ftpserver="localhost"; +my $ftpdir=""; +my $ftptimeout=120; +my $syncoff=0; +# verbosity +my $doverbose=1; +my $dodebug=0; +my $doquiet=0; +my $doinfoonly=0; +my $infotext=""; +my $docheckfirst=0; + +# Read command line options/parameters +#print "Reading command line options.\n"; # For major problem debugging +my $curopt; +my @cloptions=(); +for $curopt (@ARGV) { + if ($curopt =~ /^cfg=/) { + $configfile=$'; + if (! -r $configfile) { print "Config file does not exist: ".$configfile."\n"; $returncode+=1; } + } else { + push @cloptions, $curopt; + } +} + +# Read Config File, if given +my @cfgfoptions=(); +if ($configfile ne "") { + if (-r $configfile) { + #print "Reading config file.\n"; # For major problem debugging + open (CONFIGFILE,"<$configfile"); + while () { + $_ =~ s/([ \n\r]*$|\.\.|#.*$)//gs; + if ($_ eq "") { next; } + if ( ($_ =~ /[^=]+=[^=]+/) || ($_ =~ /^-[a-zA-Z]+$/) ) { push @cfgfoptions, $_; } + } + close (CONFIGFILE); + } # else { print "Config file does not exist.\n"; } # For major problem debugging +} # else { print "No config file to read.\n"; } # For major problem debugging + +# Parse Options/Parameters +print "Parsing all options.\n"; # For major problem debugging +my $noofopts=0; +for $curopt (@cfgfoptions, @cloptions) { + if ($curopt =~ /^-[a-zA-Z]/) { + my $i; + for ($i=1; $i0) { $ftptimeout =$fvalue; } } + } + else { + if ($localdir eq "") { + $localdir = $curopt; + if ( $syncdirection eq "" ) + { $syncdirection="put"; } + } else { + print "ERROR: Unknown parameter: \"".$curopt."\"\n"; $returncode+=1 + } + } +} +if ($noofopts == 0) { print_syntax(); exit 0; } + +if($ftpuser eq "?") { print "User: "; $ftpuser=; chomp($ftpuser); } +if($ftppasswd eq "?") { print "Password: "; $ftppasswd=; chomp($ftppasswd); } + +if ($dodebug) { print_options(); } +# check options +if ( ($localdir eq "") || (! -d $localdir) ) +{ print "ERROR: Local directory does not exist: ".$localdir."\n"; $returncode+=1; } +#if ($localdir eq "") { print "ERROR: No localdir given.\n"; $returncode+=1; } +#if ( ($remoteURL eq "") { print "ERROR: No remoteURL given.\n"; $returncode+=1; } +if ($ftpserver eq "") { print "ERROR: No FTP server given.\n"; $returncode+=1; } +if ($ftpdir eq "") { print "ERROR: No FTP directory given.\n"; $returncode+=1; } +if ($ftpuser eq "") { print "ERROR: No FTP user given.\n"; $returncode+=1; } +if ($ftppasswd eq "") { print "ERROR: No FTP password given.\n"; $returncode+=1; } +if ($returncode > 0) { die "Aborting due to missing or wrong options! Call ftpsync -? for more information.\n"; } + + +#print "Exiting.\n"; exit 0; + +if ($dodebug) { print "\nFind out if ftp server is online & accessible.\n"; } +my $doftpdebug=($doverbose > 2); +my $ftpc = Net::FTP->new($ftpserver,Debug=>$doftpdebug,Timeout=>$ftptimeout) || die "Could not connect to $ftpserver\n"; +if ($dodebug) { print "Logging in as $ftpuser with password $ftppasswd.\n" } +$ftpc->login($ftpuser,$ftppasswd) || die "Could not login to $ftpserver as $ftpuser\n"; +my $ftpdefdir=$ftpc->pwd(); +if ($dodebug) { print "Remote directory is now ".$ftpdefdir."\n"; } +if ($ftpdir !~ /^\//) # insert remote login directory into relative ftpdir specification +{ if ($ftpdefdir eq "/") + { $ftpdir = $ftpdefdir . $ftpdir; } + else + { $ftpdir = $ftpdefdir . "/" . $ftpdir; } + if (!$doquiet) + { print "Absolute remote directory is $ftpdir\n"; } +} +if (substr($ftpdir, -1) eq "/") { + if (!$doquiet) + { print " Remote directory ends in /, removing this\n"; } + chop($ftpdir); +} +if ($dodebug) { print "Changing to remote directory $ftpdir.\n" } +$ftpc->binary() + or die "Cannot set binary mode :\n\t" . $ftpc->message; +$ftpc->cwd($ftpdir) + or die "Cannot cwd to $ftpdir :\n\t" . $ftpc->message; +if ($ftpc->pwd() ne $ftpdir) { + my $pwd = $ftpc->pwd(); + die "Could not change to remote base directory $ftpdir (at $pwd)\n"; } +if ($dodebug) { print "Remote directory is now ".$ftpc->pwd()."\n"; } + +if (! $doquiet) { print "\nDetermine s offset.\n"; } +if ($syncdirection eq "put") { clocksync($ftpc,"syncfile"); } + +# local & remote tree vars +#chdir $localdir; +my $ldl=length($localdir) + 1; +#my $ldl=length($localdir); +my %localfiledates=(); +my %localfilesizes=(); +my %localdirs=(); +my %locallinks=(); + +my %remotefilesizes=(); +my %remotefiledates=(); +my %remotedirs=(); +my %remotelinks=(); +my $curremotesubdir=""; + +# Build local & remote tree +if (! $doquiet) { print "\nBuilding local file tree.\n"; } +buildlocaltree(); +if (! $doquiet) { print "\nBuilding remote file tree.\n"; } +buildremotetree(); +listremotedirs(); +#if ($dodebug) { print "Quitting FTP connection.\n" } +#$ftpc->quit(); + +#print "Exiting.\n"; exit 0; + +# Work ... +if ($doinfoonly) { $docheckfirst=0; } +if ($docheckfirst) +{ print "Simulating synchronization.\n"; + $doinfoonly=1; + dosync(); + $doinfoonly=0; + print "\nOK to really update files? (y/n) [n] "; + my $yn=; + if ($yn =~ /^y/i) + { print "OK, going to do it.\n"; + } + else + { print "OK, exiting without actions.\n"; + exit 1; + } +} +if ($doinfoonly) { print "\nSimulating synchronization.\n"; } +elsif (! $doquiet) { print "\nStarting synchronization.\n"; } +dosync(); + +if (!$doquiet) { print "Done.\n"; } + +if ($dodebug) { print "Quitting FTP connection.\n" } +$ftpc->quit(); + +exit 0; + + + +# +# Subs +# + +sub buildlocaltree() { + find (\¬icelocalfile, $localdir."/"); + sub noticelocalfile { + if ($ldl > length($File::Find::name)) { return; } + #printf "name=%s, length(name)=%d, ldl=$ldl\n", $File::Find::name, length($File::Find::name); + my $relfilename=substr($File::Find::name,$ldl); + if (length($relfilename) == 0) { return; } + if (-d $_) { + if ($dodebug) { print "Directory: ".$File::Find::name."\n"; } + elsif (! $doquiet) { print ":"; } + $localdirs{$relfilename}="$relfilename"; + } + elsif (-f $_) { + #my @curfilestat=lstat $File::Find::name; + my @curfilestat=lstat $_; + my $curfilesize=$curfilestat[7]; + my $curfilemdt=$curfilestat[9]; + if ($dodebug) { print "File: ".$File::Find::name."\n"; + print "Modified ".$curfilemdt."\nSize ".$curfilesize." bytes\n"; } + elsif (! $doquiet) { print "."; } + $localfiledates{$relfilename}=$curfilemdt; + $localfilesizes{$relfilename}=$curfilesize; + } + elsif (-l $_) { + if ($dodebug) { print "Link: ".$File::Find::name."\n"; } + elsif (! $doquiet) { print ","; } + $locallinks{$relfilename}="$relfilename"; + } else { + #print "u ".$File::Find::name."\n"; + if (! $doquiet) { print "Ignoring file of unknown type: ".$File::Find::name."\n"; } + } + #if (! ($doquiet || $dodebug)) { print "\n"; } + #print "File mode is ".@curfilestat[2]."\n"; + } + if ($dodebug) { + print "Local dirs (relative to ".$localdir."/):\n"; + my $curlocaldir=""; + foreach $curlocaldir (keys(%localdirs)) + { print $curlocaldir."/\n"; } + print "Local files (relative to ".$localdir."/):\n"; + my $curlocalfile=""; + foreach $curlocalfile (keys(%localfiledates)) + { print $curlocalfile."\n"; } + } +} + + +sub buildremotetree() { + my @currecursedirs=(); + #$ftpc->ls() + # or die $ftpc->message . "\nCannot ls remote dir " . $ftpc->pwd(); + my @rfl = $ftpc->dir(); + # or @rfl=(); # we have to survive empty remote directories !!! + my $currf=""; + my $curyear = (gmtime(time))[5] + 1900; + my %monthtonr=(); + $monthtonr{"Jan"}=1; $monthtonr{"Feb"}=2; $monthtonr{"Mar"}=3; $monthtonr{"Apr"}=4; $monthtonr{"May"}=5; $monthtonr{"Jun"}=6; + $monthtonr{"Jul"}=7; $monthtonr{"Aug"}=8; $monthtonr{"Sep"}=9; $monthtonr{"Oct"}=10; $monthtonr{"Nov"}=11; $monthtonr{"Dec"}=12; + if ($dodebug) { print "Remote pwd is ".$ftpc->pwd()."\nDIRing.\n"; } + my $curlsline; + foreach $curlsline (parse_dir(\@rfl)) { + my ($cfname,$cftype,$cfsize,$cftime,$mode)=@$curlsline; + #if ($dodebug) { print "Analysing remote file/dir ".$currf."\n" }; + if ( $cftype ) { + if ($cfname eq ".") { next; } + if ($cfname eq "..") { next; } + if (substr($cftype,0,1) eq 'l') { # link, rest of string = linkto + my $curnrl; + if ($curremotesubdir eq "") { $curnrl = $cfname; } + else { $curnrl = $curremotesubdir."/".$cfname; } + $remotelinks{$curnrl}=$cfname; + if ($dodebug) { print "Link: ".$curnrl." -> ".$cfname."\n"; } + } + elsif ($cftype eq 'd') { + my $curnewrsd; + if ($curremotesubdir eq "") { $curnewrsd = $cfname; } + else { $curnewrsd = $curremotesubdir."/".$cfname; } + $remotedirs{$curnewrsd}=$curnewrsd; + if ($dodebug) { print "Directory: ".$curnewrsd."\n"; } + elsif (! $doquiet) { print ":"; } + push @currecursedirs, $cfname; + } + elsif ($cftype eq 'f') { #plain file + my $curnewrf; + if ($curremotesubdir eq "") { $curnewrf = $cfname; } + else { $curnewrf = $curremotesubdir."/".$cfname; } + #$remotefiledates{$curnewrf}=$cftime; + $remotefiledates{$curnewrf}=$ftpc->mdtm($cfname)+$syncoff; + if ($remotefiledates{$curnewrf} le 0) { die "Timeout detecting modification time of $curnewrf\n"; } + $remotefilesizes{$curnewrf}=$cfsize; + if ($remotefilesizes{$curnewrf} lt 0) { die "Timeout detecting size of $curnewrf\n"; } + if ($dodebug) { print "File: ".$curnewrf."\n"; } + elsif (! $doquiet) { print "."; } + } + elsif (! $doquiet) { print "Unkown file: $curlsline\n"; } + } + elsif ($dodebug) { print "Ignoring.\n"; } + } + #recurse + my $currecurseddir; + foreach $currecurseddir (@currecursedirs) + { my $oldcurremotesubdir; + $oldcurremotesubdir=$curremotesubdir; + if ($curremotesubdir eq "") { $curremotesubdir = $currecurseddir; } + else { $curremotesubdir .= "/".$currecurseddir; } + my $curcwddir=""; + if ($ftpdir eq "/") + { $curcwddir=$ftpdir.$curremotesubdir; } + else + { $curcwddir=$ftpdir."/".$curremotesubdir; } + if ($dodebug) { print "Change dir: ".$curcwddir."\n"; } + $ftpc->cwd($curcwddir) + or die "Cannot cwd to $curcwddir :\n\t" . $ftpc->message ; + if ($ftpc->pwd() ne $curcwddir) { + die "Could not cwd to $curcwddir :\n\t" . $ftpc->message ; } + if (! $doquiet) { print "\n"; } + buildremotetree(); + $ftpc->cdup(); + $curremotesubdir = $oldcurremotesubdir; + } +} + + +# Synchronize clocks. +sub clocksync { + my $conn = shift @_; + my $fn = shift @_; + my $fndidexist=1; + + if(! -f $fn) { + open(SF, ">$fn") or die "Cannot create $fn for time sync option"; + close(SF); + $fndidexist=0; + } + -z $fn or + die "File $fn for time sync must be empty."; + my $putsyncok=1; + $conn->put($fn) or $putsyncok=0; + if (!$putsyncok) + { unlink($fn); # cleanup! + die "Cannot send timesync file $fn"; + } + + my $now_here1 = time(); + my $now_there = $conn->mdtm($fn) or + die "Cannot get write time of timesync file $fn"; + my $now_here2 = time(); + + if ($now_here2 < $now_there) # remote is in the future + { $syncoff=($now_there - $now_here1); + $syncoff -= $syncoff % 60; + $syncoff = 0-$syncoff; + } + else + #if ($now_here1 > $now_there) # remote is the past # or equal + { $syncoff=($now_here2 - $now_there); + $syncoff -= $syncoff % 60; + } + + $conn->delete($fn); + + my $hrs = int(abs($syncoff)/3600); + my $mins = int(abs($syncoff)/60) - $hrs*60; + my $secs = abs($syncoff) - $hrs*3600 - $mins*60; + if (! $doquiet) { + printf("Clock sync offset: %d:%02d:%02d\n", $hrs, $mins, $secs); + } + unlink ($fn) unless $fndidexist; +} + + +sub dosync() +{ + chdir $localdir || die "Could not change to local base directory $localdir\n"; + if ($syncdirection eq "put") { + # create dirs missing at the target + if ($doinfoonly) { print "\nWould create new remote directories.\n"; } + elsif (! $doquiet) { print "\nCreating new remote directories.\n"; } + my $curlocaldir; + foreach $curlocaldir (sort { return length($a) <=> length($b); } keys(%localdirs)) + { if (! exists $remotedirs{$curlocaldir}) + { if ($doinfoonly) { print $curlocaldir."\n"; next; } + if ($doverbose) { print $curlocaldir."\n"; } + elsif (! $doquiet) { print "d"; } + if ($ftpc->mkdir($curlocaldir) ne $curlocaldir) { die "Could not create remote subdirectory $curlocaldir\n"; } + } + } + # copy files missing or too old at the target, synchronize timestamp _after_ copying + if ($doinfoonly) { print "\nWould copy new(er) local files.\n"; } + elsif (! $doquiet) { print "\nCopying new(er) local files.\n"; } + my $curlocalfile; + foreach $curlocalfile (sort { return length($b) <=> length($a); } keys(%localfiledates)) + { my $dorefresh=0; + if (! exists $remotefiledates{$curlocalfile}) { + $dorefresh=1; + $infotext="New: ".$curlocalfile." (".$localfilesizes{$curlocalfile}." bytes)\n"; + if ($doinfoonly) { print $infotext; next; } + elsif ($doverbose) { print $infotext; } + elsif (! $doquiet) { print "n"; } + } + elsif ($remotefiledates{$curlocalfile} < $localfiledates{$curlocalfile}) { + $dorefresh=1; + $infotext="Newer: ".$curlocalfile." (".$localfilesizes{$curlocalfile}." bytes, ".$localfiledates{$curlocalfile}." versus ".$remotefiledates{$curlocalfile}.")\n"; + if ($doinfoonly) { print $infotext; next; } + if ($doverbose) { print $infotext; } + elsif (! $doquiet) { print "u"; } + } + elsif ($remotefilesizes{$curlocalfile} != $localfilesizes{$curlocalfile}) { + $dorefresh=1; + $infotext="Changed (different sized): ".$curlocalfile." (".$localfilesizes{$curlocalfile}." versus ".$remotefilesizes{$curlocalfile}." bytes)\n"; + if ($doinfoonly) { print $infotext; next; } + if ($doverbose) { print $infotext; } + elsif (! $doquiet) { print "u"; } + } + if (! $dorefresh) { next; } + if ($dodebug) { print "Really PUTting file ".$curlocalfile."\n"; } + if ($ftpc->put($curlocalfile, $curlocalfile) ne $curlocalfile) + { print STDERR "Could not put localfile $curlocalfile\n"; } + my $retries = 3; + while ( ($ftpc->size($curlocalfile) != (lstat $curlocalfile)[7]) and ($retries-- > 0) ) + { if (! $doquiet) { print "Re-Transfering $curlocalfile\n"; } + if ($ftpc->put($curlocalfile, $curlocalfile) ne $curlocalfile) + { print STDERR "Could not re-put localfile $curlocalfile\n"; } + } + my $newremotemdt=$ftpc->mdtm($curlocalfile)+$syncoff; + utime ($newremotemdt, $newremotemdt, $curlocalfile); + } + # delete files too much at the target + if ($doinfoonly) { print "\nWould delete obsolete remote files.\n"; } + elsif (! $doquiet) { print "\nDeleting obsolete remote files.\n"; } + my $curremotefile; + foreach $curremotefile (keys(%remotefiledates)) + { if (not exists $localfiledates{$curremotefile}) + { if ($doinfoonly) { print $curremotefile."\n"; next; } + if ($doverbose) { print $curremotefile."\n"; } + elsif (! $doquiet) { print "r"; } + if ($ftpc->delete($curremotefile) ne 1) { die "Could not delete remote file $curremotefile\n"; } + } + } + # delete dirs too much at the target + if ($doinfoonly) { print "\nWould delete obsolete remote directories.\n"; } + elsif (! $doquiet) { print "\nDeleting obsolete remote directories.\n"; } + my $curremotedir; + foreach $curremotedir (sort { return length($b) <=> length($a); } keys(%remotedirs)) + { if (! exists $localdirs{$curremotedir}) + { if ($doinfoonly) { print $curremotedir."\n"; next; } + if ($doverbose) { print $curremotedir."\n"; } + elsif (! $doquiet) { print "R"; } + if ($ftpc->rmdir($curremotedir) ne 1) { die "Could not remove remote subdirectory $curremotedir\n"; } + } + } + } else { # $syncdirection eq "GET" + # create dirs missing at the target + if ($doinfoonly) { print "\nWould create new local directories.\n"; } + elsif (! $doquiet) { print "\nCreating new local directories.\n"; } + my $curremotedir; + foreach $curremotedir (sort { return length($a) <=> length($b); } keys(%remotedirs)) + { if (! exists $localdirs{$curremotedir}) + { if ($doinfoonly) { print $curremotedir."\n"; next; } + if ($doverbose) { print $curremotedir."\n"; } + elsif (! $doquiet) { print "d"; } + mkdir($curremotedir) || die "Could not create local subdirectory $curremotedir\n"; + } + } + # copy files missing or too old at the target, synchronize timestamp _after_ copying + if ($doinfoonly) { print "\nWould copy new(er) remote files.\n"; } + elsif (! $doquiet) { print "\nCopying new(er) remote files.\n"; } + my $curremotefile; + foreach $curremotefile (sort { return length($b) <=> length($a); } keys(%remotefiledates)) + { my $dorefresh=0; + if (! exists $localfiledates{$curremotefile}) { + $dorefresh=1; + $infotext="New: ".$curremotefile." (".$remotefilesizes{$curremotefile}." bytes)\n"; + if ($doinfoonly) { print $infotext; next; } + if ($doverbose) { print $infotext; } + elsif (! $doquiet) { print "n"; } + } + elsif ($remotefiledates{$curremotefile} > $localfiledates{$curremotefile}) { + $dorefresh=1; + $infotext="Newer: ".$curremotefile." (".$remotefilesizes{$curremotefile}." bytes, ".$remotefiledates{$curremotefile}." versus ".$localfiledates{$curremotefile}.")\n"; + if ($doinfoonly) { print $infotext; next; } + if ($doverbose) { print $infotext; } + elsif (! $doquiet) { print "u"; } + } + elsif ($remotefilesizes{$curremotefile} != $localfilesizes{$curremotefile}) { + $dorefresh=1; + $infotext="Changed (different sized): ".$curremotefile." (".$remotefilesizes{$curremotefile}." bytes)\n"; + if ($doinfoonly) { print $infotext; next; } + if ($doverbose) { print $infotext; } + elsif (! $doquiet) { print "c"; } + } + if (! $dorefresh) { next; } + if ($dodebug) { print "Really GETting file ".$curremotefile."\n"; } + my $rc=$ftpc->get($curremotefile, $curremotefile); + if ( ($rc eq undef) or ($rc ne $curremotefile) ) + { print STDERR "Could not get file ".$curremotefile."\n"; } + my $retries=3; + while ( ($ftpc->size($curremotefile) != (lstat $curremotefile)[7]) and ($retries-- > 0) ) + { if (! $doquiet) { print "Re-Transfering $curremotefile\n"; } + if ( ($rc eq undef) or ($rc ne $curremotefile) ) + { print STDERR "Could not get file ".$curremotefile."\n"; } + } + my $newlocalmdt=$remotefiledates{$curremotefile}; + utime ($newlocalmdt, $newlocalmdt, $curremotefile); + } + # delete files too much at the target + if ($doinfoonly) { print "\nWould delete obsolete local files.\n"; } + elsif (! $doquiet) { print "\nDeleting obsolete local files.\n"; } + my $curlocalfile; + foreach $curlocalfile (sort { return length($b) <=> length($a); } keys(%localfiledates)) + { if (not exists $remotefiledates{$curlocalfile}) + { if ($doinfoonly) { print $curlocalfile."\n"; next; } + if ($doverbose) { print $curlocalfile."\n"; } + elsif (! $doquiet) { print "r"; } + if (unlink($curlocalfile) ne 1) { die "Could not remove local file $curlocalfile\n"; } + } + } + # delete dirs too much at the target + if ($doinfoonly) { print "\nWould delete obsolete local directories.\n"; } + elsif (! $doquiet) { print "\nDeleting obsolete local directories.\n"; } + my $curlocaldir; + foreach $curlocaldir (keys(%localdirs)) + { if (! exists $remotedirs{$curlocaldir}) + { if ($doinfoonly) { print $curlocaldir."\n"; next; } + if ($doverbose) { print $curlocaldir."\n"; } + elsif (! $doquiet) { print "d"; } + rmdir($curlocaldir) || die "Could not remove local subdirectory $curlocaldir\n"; + } + } + } +} + + +sub listremotedirs() { + if ($dodebug) { + print "Remote dirs (relative to ".$ftpdir."):\n"; + my $curremotedir=""; + foreach $curremotedir (keys(%remotedirs)) + { print $curremotedir."/\n"; } + print "Remote files (relative to ".$ftpdir."):\n"; + my $curremotefile=""; + foreach $curremotefile (keys(%remotefiledates)) + { print $curremotefile."\n"; } + print "Remote links (relative to ".$ftpdir."):\n"; + my $curremotelink=""; + foreach $curremotelink (keys(%remotelinks)) + { print $curremotelink." -> ".$remotelinks{$curremotelink}."\n"; } + } +} +sub parseRemoteURL() { + if ($remoteURL =~ /^ftp:\/\/(([^@\/\\\:]+)(:([^@\/\\\:]+))?@)?([a-zA-Z01-9\.]+)\/(.*)/) { + #print "DEBUG: parsing ".$remoteURL."\n"; + #print "match 1 = ".$1."\n"; + #print "match 2 = ".$2."\n"; + #print "match 3 = ".$3."\n"; + #print "match 4 = ".$4."\n"; + #print "match 5 = ".$5."\n"; + #print "match 6 = ".$6."\n"; + #print "match 7 = ".$7."\n"; + if (length($2) > 0) { $ftpuser=$2; } + if (length($4) > 0) { $ftppasswd=$4; } + $ftpserver=$5; + $ftpdir=$6; + #if ($ftpdir eq "") { $ftpdir="/"; } + } +} + + +sub print_syntax() { + print "\n"; + print "FTPSync.pl 1.27 (2004-08-23)\n"; + print "\n"; + print " ftpsync [ options ] [ localdir remoteURL ]\n"; + print " ftpsync [ options ] [ remoteURL localdir ]\n"; + print " options = [-dgpqv] [ cfg|ftpuser|ftppasswd|ftpserver|ftpdir=value ... ] \n"; + print " localdir local directory, defaults to \".\".\n"; + print " ftpURL full FTP URL, scheme\n"; + print ' ftp://[ftpuser[:ftppasswd]@]ftpserver/ftpdir'."\n"; + print " ftpdir is relative, so double / for absolute paths as well as /\n"; + print " -c | -C like -i, but then prompts whether to actually do work\n"; + print " -d | -D turns debug output (including verbose output) on\n"; + print " -g | -G forces sync direction to GET (remote to local)\n"; + print " -h | -H turns debugging on\n"; + print " -i | -I forces info mode, only telling what would be done\n"; + print " -p | -P forces sync direction to PUT (local to remote)\n"; + print " -q | -Q turnes quiet operation on\n"; + print " -v | -V turnes verbose output on\n"; + print " cfg= read parameters and options from file defined by value.\n"; + print " ftpserver= defines the FTP server, defaults to \"localhost\".\n"; + print " ftpdir= defines the FTP directory, defaults to \".\" (/wo '\"') \n"; + print " ftpuser= defines the FTP user, defaults to \"ftp\".\n"; + print " ftppasswd= defines the FTP password, defaults to \"anonymous\".\n"; + print "\n"; + print " Later mentioned options and parameters overwrite those mentioned earlier.\n"; + print " Command line options and parameters overwrite those in the config file.\n"; + print " Don't use '\"', although mentioned default values might motiviate you to.\n"; + print "\n"; +} + + +sub print_options() { + print "\nPrinting options:\n"; + # meta + print "returncode = ", $returncode , "\n"; + print "configfile = ", $configfile , "\n"; + # basiscs + print "syncdirection = ", $syncdirection , "\n"; + print "localdir = ", $localdir , "\n"; + # FTP stuff + print "remoteURL = ", $remoteURL , "\n"; + print "ftpuser = ", $ftpuser , "\n"; + print "ftppasswd = ", $ftppasswd , "\n"; + print "ftpserver = ", $ftpserver , "\n"; + print "ftpdir = ", $ftpdir , "\n"; + # verbsityosity + print "doverbose = ", $doverbose , "\n"; + print "dodebug = ", $dodebug , "\n"; + print "doquiet = ", $doquiet , "\n"; + # + print "doinfoonly = ", $doinfoonly , "\n"; + print "\n"; +} diff --git a/emacs.d/nxhtml/nxhtml/html-wtoc.el b/emacs.d/nxhtml/nxhtml/html-wtoc.el new file mode 100644 index 0000000..94533da --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-wtoc.el @@ -0,0 +1,200 @@ +;;; html-wtoc.el --- Creating pages with site TOC +;; +;; Author: Lennart Borgman (lennart O borgman A gmail O com) +;; Created: Sat Feb 11 00:06:14 2006 +(defconst html-wtoc:version "0.2") ;; Version: +;; Last-Updated: Sun Nov 04 21:49:34 2007 (3600 +0100) +;; 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., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Code: + +(eval-when-compile (add-to-list 'load-path default-directory load-path)) +(eval-when-compile (require 'html-site nil t)) + +;;;###autoload +(defgroup html-wtoc nil + "Customization group for html-wtoc." + :group 'nxhtml) + +(defcustom html-wtoc-dir + (file-name-as-directory + (expand-file-name + "html-wtoc" + (file-name-directory + (if load-file-name load-file-name buffer-file-name)))) + + "Directory where the tools needed are located. +The tools for html-wtoc includes: + +- html-wtoc.pl +- html-wtoc.js +- html-wtoc.css +- html-wtoc-template.htm +- html-wtoc-template.js +- html-wtoc-template.css +- img/ + +" + :type 'directory + :group 'html-wtoc) + +;; (defun html-wtoc-get-parsed-html-toc () +;; (save-excursion +;; (let ((toc-file (html-toc-file))) +;; (unless (file-exists-p toc-file) +;; (html-toc-write-toc-file)) +;; (with-current-buffer (find-file-noselect toc-file) +;; (goto-char (point-min)) +;; (let ((toc-begin (search-forward html-toc-mark-begin nil t)) +;; (toc-middle (search-forward html-toc-mark-middle nil t)) +;; toc-parsed) +;; (unless (and toc-begin toc-middle) +;; (error "Can't find table of contents in %s" toc-file)) +;; (setq toc-parsed (html-toc-parse-toc +;; (buffer-substring-no-properties +;; toc-begin toc-middle)))))))) + +;; (defun html-wtoc-get-atags (parsed-ul level) +;; (assert (eq 'ul (car parsed-ul))) +;; (let (atags) +;; (dolist (l parsed-ul) +;; (when (and (listp l) +;; (eq 'li (car l))) +;; (dolist (ll l) +;; (when (listp ll) +;; (when (eq 'a (car ll)) +;; (setq atags +;; (cons +;; (list level +;; (caddr ll) +;; (cdaadr ll)) +;; atags))) +;; (when (eq 'ul (car ll)) +;; (let ((subs (html-wtoc-get-atags ll (1+ level)))) +;; (dolist (s subs) +;; (setq atags (cons s atags))))))))) +;; (reverse atags))) + +;; (defcustom html-wtoc-pages-default-name "html-wtoc-pages.txt" +;; "Default file name sans directory for list of pages file. +;; This file is located in the same directory as `html-toc-file'." +;; :type 'string) + +;; (defun html-wtoc-pages-file () +;; (expand-file-name html-wtoc-pages-default-name +;; (file-name-directory (html-toc-file)))) + +(defun html-wtoc-browse-page-with-toc () + (interactive) + (unless buffer-file-name + (error "This buffer is not visiting a file")) + (html-site-current-ensure-site-defined) + (let ((merge-dir (html-site-current-merge-dir)) + merged-file + (in-site (html-site-dir-contains + (html-site-current-site-dir) + buffer-file-name))) + (unless merge-dir + (error "There is no output dir for pages with TOC defined for the site %s" + html-site-current)) + (unless in-site + (error "This buffer's file is not in %s" (html-site-current-site-dir))) + (setq merged-file + (expand-file-name + (file-relative-name buffer-file-name + (html-site-current-site-dir)) + (html-site-current-merge-dir))) + (unless (file-exists-p merged-file) + (error "The file %s does not yet exist.\nPlease do use `html-wtoc-write-merged' to create it." + merged-file)) + (browse-url-of-file merged-file))) + + +(defun html-wtoc-write-pages-with-toc (allow-overwrite) + "Merge the TOC with the pages. + +If an entry with the name MERGE-NAME exists in `html-wtoc-merges' +then this is chosen. Otherwise a new entry is created and added +to `html-wtoc-merges'. The entry has all necessary information to +do the merge. + +If `html-move-site-directory' has a non-nil value then the list +of completions when prompting for MERGE-NAME contains only those +merge names from `html-wtoc-merges' where the site directory has +the same value. Otherwise the completion list contains all merge +names and `html-move-site-directory' will be set to the chosen +merge's site directory. + +The merging of the pages and the table of contents is done in a +subprocess using a Perl script named html-wtoc.pl the directory +`html-wtoc-dir'. +" + (interactive (list (y-or-n-p "Allow overwrite? "))) + (html-site-current-ensure-site-defined) + (let ((pag-file (html-site-current-page-list)) + (out-dir (html-site-current-merge-dir)) + (tpl-file (html-site-current-merge-template)) + (html-wtoc-pl (expand-file-name "html-wtoc.pl" html-wtoc-dir)) + ) + (unless (< 0 (length pag-file)) + (error "Page list file not defined for site %s" html-site-current)) + (unless (file-exists-p pag-file) + (error "Can't find page file for site %s.\nHave you done M-x html-toc-create-pages-file?" + html-site-current)) + (unless (< 0 (length tpl-file)) + ;;(error "Template file not defined for site %s.\nPlease use customize to add this in `html-site-list'." html-site-current) + (setq tpl-file (expand-file-name "html-wtoc-template.html" html-wtoc-dir)) + ) + (let ( + (buffer (noshell-procbuf-setup "*Merging pages and TOC*")) + (opt (list + (concat "pages=" pag-file) + (concat "outroot=" out-dir) + (concat "template=" tpl-file)))) + (when allow-overwrite + (setq opt (cons "update=1" opt))) + (apply 'noshell-procbuf-run + buffer + "perl" "-w" + html-wtoc-pl "merge" + opt + )))) + +(provide 'html-wtoc) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; html-wtoc.el ends here diff --git a/emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/PathSubs.pm b/emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/PathSubs.pm new file mode 100644 index 0000000..e95b8d5 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/PathSubs.pm @@ -0,0 +1,207 @@ +# Copyright 2006 Lennart Borgman, http://OurComments.org/. All rights +# reserved. +# +# 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, 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. + +package PathSubs; + +##################################################### +### This package contains general path handling +### routines and some win32 specific dito. +### The latter should ev be moved to a new module! +##################################################### +use strict; + +use File::Spec; + +### Absolute path names + +sub is_abs_path ($) { + my $path = shift; + return 0 if $path eq ""; + return 1 if File::Spec->file_name_is_absolute($path); + #return 1 if substr($path, 1, 1) eq ":"; # MSWin32 + #return 1 if substr($path, 0, 1) eq "/"; + return 1 if $path =~ /^https?:/i; + return 1 if $path =~ /^file:/i; + return 1 if $path =~ /^javascript:/i; + return 1 if $path =~ /^mailto:/i; +} +sub is_abs_netpath($) { + my $path = shift; + return 1 if $path =~ /^https?:/i; + # New + return 1 if $path =~ /^ftp:/i; + return 1 if $path =~ /^mailto:/i; +} + + +sub uniq_file($) { + my $fname = shift; + $fname =~ s!^\s+|\s+$!!g; + return "" if ($fname eq ""); + $fname = File::Spec->rel2abs($fname); + if (!File::Spec->file_name_is_absolute($fname)) { + die "File name is not absolute: $fname"; + } + #print STDERR "uniq_file($fname)\n"; + $fname =~ tr!\\!/!; + if (-e $fname) { + #print STDERR "exists $fname\n"; + ### There is an error in 522, compensate for this! + #die substr($fname, -1); + if (substr($fname, -1) eq "/") { chop $fname; } + #print STDERR "exists $fname\n"; + ### Translate .. + if (substr($fname, 1, 1) eq ":") { + my $ffname = Win32::GetFullPathName($fname); + ### Get case + my $lfname = Win32::GetLongPathName($ffname); + #print STDERR "lexists $lfname\n"; + $fname = $lfname if ($lfname ne ""); + } + } else { + #print STDERR "NOT exists $fname\n"; + if (substr($fname, -1) eq "/") { chop $fname; } + my $head = ""; + if (substr($fname, 0, 2) eq "//") { + $head = "//"; + $fname = substr($fname, 2); + } + my @fname = split("/", $fname); + my $tail = pop @fname; + $fname = uniq_dir($head . join("/", @fname)) . $tail; + } + if (substr($fname, 1, 1) eq ":") { + $fname = uc(substr($fname, 0, 1)) . substr($fname, 1); + #print STDERR "fname $fname\n"; + } + $fname =~ tr!\\!/!; + #print STDERR "fname ($fname)\n"; + return $fname; +} +sub uniq_dir($) { + my $dir = shift; + my $uq_dir = uniq_file($dir); + if (substr($uq_dir, -1) ne "/") { $uq_dir .= "/"; } + return $uq_dir; +} + + + +### Relative paths +sub _get_link_root($) { + my $lnk = shift; + if ($lnk =~ m!^(/|ftp://[^/]*|https?://[^/]*|[a-z]:/)!i) { + return $1; + } else { + return ""; + } +} + +sub resolve_dotdot($) { + my $orig_url = shift; + my $root = _get_link_root($orig_url); + return $orig_url if length($root) == length($orig_url); + my $url = substr($orig_url, length($root)); + if (substr($root, -1) eq "/") { + chop $root; + $url = "/$url"; + } + #die "$root\n$url"; + my $iPosSearch = 2; + #print "url=$url\n"; + while ((my $iPos = index($url, "/../", $iPosSearch)) > -1) { + my $sLeft = substr($url, 0, $iPos); + if (substr($sLeft, -2) eq "..") { + $iPosSearch += 3; + next; + } + my $sRight = substr($url, $iPos+3); + #print "url=$url\n"; + #print "iPos=$iPos\n"; + #print "sLeft=$sLeft\n"; + $sLeft =~ s!/[^/]*$!!; + #print "sLeft=$sLeft\n"; + #print "sRight=$sRight\n"; + $url = $sLeft . $sRight; + #print "\t***url=$url\n"; + #print "url=$url\n"; + } + if (index($url, "../") > -1) { + return $orig_url; + } + return $root . $url; +} + +sub mk_relative_link($$;$) { + my $from = shift; + my $to = shift; + my $norm = shift; + if ($norm) { + $from = uniq_file($from); + $to = uniq_file($to); + } + if (-e $from) { + $from = uniq_file($from); + } else { + $from = resolve_dotdot($from); + } + if (-e $to) { + $to = uniq_file($to); + } else { + $to = resolve_dotdot($to); + } + my $root_from = _get_link_root($from); + my $root_to = _get_link_root($to ); + if ($root_from ne $root_to) { + return $to; + } + my @from = split "/", $from; + my @to = split "/", $to; + while (@to) { + last if ($to[0] ne $from[0]); + shift @to; + shift @from; + } + if (@to == 1 && @from == 1) { + if (length($to[0]) > length($from[0])) { + if (substr($to[0], 0, length($from[0])+1) eq ($from[0] . "#")) { + return substr($to[0], length($from[0])); + } + } + } + my $rl; + for (1..$#from) { $rl .= "../"; } + $rl .= join("/", @to); + + return $rl; +} + + + +sub mk_absolute_link($$) { + my $from = shift; + my $rel_to = shift; + my $abs = $from; + $abs =~ s![^/]*$!!; + $abs .= $rel_to; + if (!is_abs_netpath($abs)) { $abs = uniq_file($abs); } + $abs; +} + + +1; diff --git a/emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/html_tags.pm b/emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/html_tags.pm new file mode 100644 index 0000000..ecdfd53 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-wtoc/PerlLib/html_tags.pm @@ -0,0 +1,127 @@ +# Copyright 2006 Lennart Borgman, http://OurComments.org/. All rights +# reserved. +# +# 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, 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. + + +package html_tags; +use strict; + +use vars qw($AUTOLOAD); + +sub _make_attributes { + my($self,$attr) = @_; + return () unless $attr && ref($attr) && ref($attr) eq 'HASH'; + my(@att); + foreach (keys %{$attr}) { + my($key) = $_; + $key=~s/^\-//; # get rid of initial - if present + #$key=~tr/a-z_/A-Z-/; # parameters are upper case, use dashes + $key=~tr/A-Z_/a-z-/; # parameters are lower case in XHTML + push(@att,defined($attr->{$_}) ? qq/$key="$attr->{$_}"/ : qq/$key/); + } + return @att; +} + +sub _tag { + my $tag_name = shift; + my $part = shift; + my($attr) = ''; + if (ref($_[0]) && ref($_[0]) eq 'HASH') { + my(@attr) = html_tags::_make_attributes( '',shift() ); + $attr = " @attr" if @attr; + } + #return "<$tag_name$attr />" unless @_; + return "<$tag_name$attr />" if $part == 1; + return "<$tag_name$attr>" if $part == 2; + my($tag,$untag) = ("<$tag_name$attr\n>",""); + my @result = map { "$tag$_$untag" } (ref($_[0]) eq 'ARRAY') ? @{$_[0]} : "@_"; + return $result[0] if $part == 1; + return "@result"; +} + +sub _mk_tag_sub($$) { + my $name = shift; + my $package = shift; + my $caller = caller; + my $sep = ($name =~ s/^\*//); + my $lc_name = lc $name; + my $code = + ($lc_name =~ m/^(?:br|hr|input|img)$/ ? + "sub $package\:\:$name(;\$\$) { return $caller\:\:_tag('$lc_name',1,\@_); }\n" + : + "sub $package\:\:$name(\$;\$) { return $caller\:\:_tag('$lc_name',0,\@_); }\n" + ); + if ($sep) { + if ($lc_name eq "html") { + $code .= "sub $package\:\:start_$name(\$;\$\$) + {return $caller\:\:_start_html(\@_);}\n"; + $code .= "sub $package\:\:end_$name {return $caller\:\:_end_html();}\n"; + } else { + $code .= "sub $package\:\:start_$name(;\$\$) + {return $caller\:\:_tag('$lc_name',1,\@_);}\n"; + $code .= "sub $package\:\:end_$name {'';}\n"; + } + } + $code; +} +sub _start_html { + my $title = shift; + my $head_tags = shift; + my $body_attr = shift; + # compensate for perl laziness... (will not detect undef sub) + $head_tags = $head_tags . _tag("title", 0, $title); + my $start = + _tag("html", 2) . + _tag("head", 0, $head_tags) . + _tag("body", 2, $body_attr); +} +sub _end_html { + return ''; +} + +sub header(@) { + my @lines = @_; + my $header; + my $type; + while (@lines) { + my $key = shift @lines; my $value = shift @lines; + $header .= "$key: $value\n"; + $type = $value if $key =~ m/content-type/i; + } + $header .= "Content-type: text/html\n" unless defined $type; + $header .= "\n"; +} +sub import { + shift; + my %exported; + $exported{$_}++ for (@_); + my $caller = caller; + my $to_eval = "package $caller;\n"; + for my $name (keys %exported) { + die "Will not redefine $caller\:\:$name" if $caller->can($name); + my $func; + if ($name eq "header") { + $func = "sub header { html_tags::header(); }"; + } + $func = _mk_tag_sub($name, $caller) unless defined $func; + $to_eval .= "$func\n"; + } + eval $to_eval; + die $@ if $@; +} + +1; diff --git a/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc-template.css b/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc-template.css new file mode 100644 index 0000000..a6ffabb --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc-template.css @@ -0,0 +1,141 @@ +/* Main structures >>>>>>>>>>>>>>> */ +.html-wtoc-maintop { + font-size: 1px; + font-size: 1em; + margin-top: 0em; + margin-bottom: 0em; +/* background-color:green; */ +} +.html-wtoc-main { +} + +td.html-wtoc-vdivline { + //background-color: #8be; + width: 0px; +} + +.html-wtoc-search-form { + margin-bottom: 0.1em; +} +.html-wtoc-search { + font-size: 0.8em; + color: green; +} +.html-wtoc-search a { + color: green; +} +/* <<<<<<<<<<<<<<<<<<< */ + + + + +/* Table of content >>>>>>>>>>>>>> */ + +#html-wtoc-id-hidetoc { + height: 20px; + border-bottom: 2px inset #ddf; + border-color: #dff; +} + +#html-wtoc-id-tocdiv { + width: 2.5em; + //background-color: #eff; +} +#html-wtoc-id-logo { + width: 100%; + height: 120px; + padding: 0em; + margin: 0em; + border: 0em; +} +#html-wtoc-id-toc { +} +#html-wtoc-id-tocwidth { + width: 18em; + height: 0em; + padding: 0em; + margin: 0em; + border: 0em; + line-height: 0em; +/* background-color: red; */ +} +#html-wtoc-id-toccol { + width: 18em; +} + +.html-wtoc-contcol { + background-color: #dFEfff; + background-color: #dFEfff; + background-color: #cd950c; + background-color: #eead0e; +} +/* <<<<<<<<<<<<<<<<<<< */ + + + + +/* Buttons etc >>>>>>>>>>>>>>> */ +.html-wtoc-button { + font-size: 0.75em; + font-size: 8pt; + color: #5A5D00; + background-color: #9cf; + background-color: #bcee68; + background-color: #a2cd5a; + padding: 0.2em; + Border-Width: 2px; + Border-Style: outset; + text-align: center; + border-color: #ddf; +} +a.html-wtoc-button { + text-decoration: none; + color: #5A5D00; +} +a.html-wtoc-button:hover { + text-decoration:none; + background-color: #6af; + color:#340; +} + +a.html-wtoc-buttonimg img { + width: 16px; + height: 16px; + padding: 4px; + border: 8px; +} +a.html-wtoc-buttonimg { + border:2px; + margin:2px; + margin-left:2px; + margin-right:2px; +} +a.html-wtoc-buttonimg { + font-size:1px; +} +a.html-wtoc-buttonimg:hover { + margin: 6px; + margin-left:0px; + margin-right:0px; + border-color: #ddf; + border-width: 2px; + border-style: outset; + background-color: #595C00; + background-color: #bef; + background-color: #b9ffb9; +} + +/* <<<<<<<<<<<<<<<<<<< */ + + +#nxhtml-link { + font-size: 0.7em; + text-align: center; + padding-top: 2em; + padding: 1em; +} + +.copyright { + color : #872; +} + diff --git a/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc-template.html b/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc-template.html new file mode 100644 index 0000000..440ece7 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc-template.html @@ -0,0 +1,143 @@ + + + + + HEAD + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + +
+ Show table of content + + + +
+ + + + + +
+ + + + + + + +
%%TOC%%
+
+
+
+
+ + + + + + +
    +

+ +   +

+ %%PAGE%% +

 

+ +
+
+
 
+
+ + diff --git a/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.css b/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.css new file mode 100644 index 0000000..a12cb65 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.css @@ -0,0 +1,84 @@ +body { + margin: 0; +} +td { + font-size: 1em; +} + +/* Added by html-wtoc.pl >>>>>>>>>>>>> */ +.html-wtoc-mark { +/* background-color: #9cf; */ +/* background-color: #bcee68; */ +/* background-color: #a2cd5a; */ + width: 20px; + padding: 0; + border: 0; + text-align: center; +} +.html-wtoc-contline { + width: 100%; +} + +.html-wtoc-margin { + width: 0.6em; +} +.html-wtoc-contents { + font-size: 0.9em; + padding: 1em; + background-color: #9cf; + background-color: #a2cd5a; + background-color: #efffcf; + background-color: #ffffdf; + -moz-border-radius-topleft: 2em; +} +.html-wtoc-contents td { +/* background-color: #9cf; */ +/* background-color: #bcee68; */ +/* background-color: #a2cd5a; */ +} +.html-wtoc-contents-a { + text-decoration: none; + color: #595C00; +/* background-color: #9cf; */ +/* background-color: #bcee68; */ +/* background-color: #a2cd5a; */ + border: 1px #9cf solid; + border: 1px #a2cd5a solid; + border: 1px #ffffc0 solid; + padding-left: 0.25em; + padding-right: 0; + margin: 1px; + display: block; +} +.html-wtoc-contents a:hover { + text-decoration: none; + background-color: #b9ffb9; + border: 1px #6b8e23 solid; +} +.html-wtoc-currcont { + background-color: #738600; + color: #ffff2f; + background-color: #535600; + border: 1px #6b8e23 inset; + padding-left: 0.25em; + padding-right: 0; + margin: 1px; + display: block; +} +a.html-wtoc-currcont { + text-decoration: none; +} +a.html-wtoc-currcont:hover { + background-color: #738600; + background-color: #536600; + background-color: #434620; +} +/* <<<<<<<<<<<<<<<<<<< */ + + + + + + + + diff --git a/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.js b/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.js new file mode 100644 index 0000000..7f22db7 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.js @@ -0,0 +1,361 @@ + +// © Copyright 2006 Lennart Borgman, http://www.OurComments.org/. All rights reserved. +// +// 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, 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. + + +var HTML_WTOC_NS_sCurrTocId; + + +HTML_WTOC_NS = { + + ///////////////////////////// + //// Basic event functions + ///////////////////////////// + + getEventObject : function (ev) { + var o; + if (window.event) + o = window.event.srcElement; + else if (null != ev) + o = ( ev.target ); + return o; + }, + getEvent : function (ev) { + if (window.event) { + return window.event; + } else if (null != ev) { + return ev; + } + }, + + eventStopPropagation : function (e) { + if (e.stopPropagation) + e.stopPropagation(); + else + e.cancelBubble=true; + }, + + eventPreventDefault : function (e) { + if (e.preventDefault) + e.preventDefault(); + else + e.returnValue=false; + }, + + ///////////////////////////// + //// TOC hide + ///////////////////////////// + + show_content : function (on) { + var toc = document.getElementById("html-wtoc-id-toccol").style; + var tdv = document.getElementById("html-wtoc-id-tocdiv").style; + var shw = document.getElementById("html-wtoc-id-showtoc").style; + var hid = document.getElementById("html-wtoc-id-hidetoc").style; + if (on) { + toc.display = ""; + tdv.display = ""; + shw.display = "none"; + hid.display = ""; + HTML_WTOC_NS.focus_page_link(0); + } else { + toc.display = "none"; + tdv.display = "none"; + shw.display = ""; + hid.display = "none"; + } + }, + + + + + + ///////////////////////////// + //// Open-Close + ///////////////////////////// + onblur_action : function(ev) { + HTML_WTOC_NS_sCurrTocId = null; + }, + onfocus_action : function(ev) { + var o = HTML_WTOC_NS.getEventObject(ev); + if (!o) return; + + HTML_WTOC_NS_sCurrTocId = o.id; + }, + onclick_action : function(ev) { + var o = HTML_WTOC_NS.getEventObject(ev); + var e = HTML_WTOC_NS.getEvent(ev); + if (13 == e.keyCode) return true; + if (!o) return true; + if ("IMG" == o.tagName) o = o.parentNode; + var iId = HTML_WTOC_NS.getIdnumFromId(o.id); + var sChildId = "toc_child_"+iId; + var sOldCurrTocId = HTML_WTOC_NS_sCurrTocId; + HTML_WTOC_NS.toggle_open(sChildId, o); + HTML_WTOC_NS_sCurrTocId = sOldCurrTocId; + return false; + }, + + toggle_open : function (id, parent) { + var child = document.getElementById(id).style; + var sInner = parent.innerHTML; + var re = new RegExp("[^/]*\.gif", "i"); + if ("none" == child.display) { + child.display = ""; + parent.innerHTML = sInner.replace(re, "down.gif")+""; + } else { + child.display = "none"; + parent.innerHTML = sInner.replace(re, "right.gif")+""; + } + }, + + + + ///////////////////////////// + //// Load + ///////////////////////////// + + onload_actions : function (iPageNum) { + document.body.onkeydown = HTML_WTOC_NS.onkeydown_action; + document.body.onmouseover = HTML_WTOC_NS.onmouseover_action; + var aATags = document.getElementsByTagName("a"); + for(var i = 0; i < aATags.length; i++) { + var o = aATags[i]; + if (null != HTML_WTOC_NS.getIdnumFromId(o.id)) { + o.onfocus = HTML_WTOC_NS.onfocus_action; + o.onblur = HTML_WTOC_NS.onblur_action; + if (o.id.substr(0, 12) == "opener_text_") { + o.onclick = HTML_WTOC_NS.onclick_action; + o.title = "Open/Close"; + } else if (o.id.substr(0, 7) == "opener_") { + o.onclick = HTML_WTOC_NS.onclick_action; + o.className = "html-wtoc-mark"; + o.title = "Open/Close"; + } + } + } + HTML_WTOC_NS.focus_page_link(iPageNum); + }, + focus_page_link : function (iPageNum) { + // Element might be hidden + try { + document.getElementById("toc_link_"+iPageNum).focus(); + } catch (exc) { + } + }, + + + + + + + + ///////////////////// + //// Mouse + ///////////////////// + + onmouseover_action : function (ev) { + if (null == HTML_WTOC_NS_sCurrTocId) return true; + var o = HTML_WTOC_NS.getEventObject(ev); + var iId = HTML_WTOC_NS.getIdnumFromId(o.id); + if (null == iId) return true; + o.focus(); + }, + + + + ///////////////////// + //// Key + ///////////////////// + + onkeydown_action: function (ev) { + var keyDown = 40; + var keyUp = 38; + var keyLeft = 37; + var keyRight = 39; + var keyReturn = 13; + var keyF2 = 113; + var keyInsert = 45; + // Opera + var keyOperaDown = 57386; + var keyOperaUp = 57385; + var keyOperaLeft = 57387; + var keyOperaRight = 57388; + var keyOperaF2 = 57346; + var keyOperaInsert = 57394; + + var SwitchKey = keyInsert; + var SwitchKeyOpera = keyOperaInsert; + + var bUp; + var e = HTML_WTOC_NS.getEvent(ev); + if (null == HTML_WTOC_NS_sCurrTocId) { + switch (e.keyCode) { + case SwitchKey: + case SwitchKeyOpera: + HTML_WTOC_NS.focus_page_link(0); + HTML_WTOC_NS.eventStopPropagation(e); + HTML_WTOC_NS.eventPreventDefault(e); + return false; + } + return true; + } + switch (e.keyCode) { + case keyLeft: + case keyOperaLeft: + case keyRight: + case keyOperaRight: + HTML_WTOC_NS.handle_leftright_keys(e); + HTML_WTOC_NS.eventStopPropagation(e); + HTML_WTOC_NS.eventPreventDefault(e); + return false; + case keyDown: + case keyOperaDown: + bUp = false; + break; + case keyUp: + case keyOperaUp: + bUp = true; + break; + case SwitchKey: + case SwitchKeyOpera: + if (null != HTML_WTOC_NS_sCurrTocId) { + var o = document.getElementById(HTML_WTOC_NS_sCurrTocId); + if (o) o.blur(); + HTML_WTOC_NS_sCurrTocId = null; + } + HTML_WTOC_NS.eventStopPropagation(e); + HTML_WTOC_NS.eventPreventDefault(e); + return false; + default: + //alert(e.keyCode); + return true; + } + var oOpener; + oOpener = HTML_WTOC_NS.getNextVisOpener(HTML_WTOC_NS_sCurrTocId, bUp); + oOpener.focus(); + HTML_WTOC_NS.eventStopPropagation(e); + HTML_WTOC_NS.eventPreventDefault(e); + return false; + }, + + handle_leftright_keys: function (e) { + var keyLeft = 37; + var keyRight = 39; + var keyOperaLeft = 57387; + var keyOperaRight = 57388; + var iId = HTML_WTOC_NS.getIdnumFromId(HTML_WTOC_NS_sCurrTocId); + if (null == iId) return; + var sId = "opener_" + iId; + var oOpener = document.getElementById(sId); + var sId = HTML_WTOC_NS_sCurrTocId; // It will be cleared before getNextVis + + var bOpenAction; + var bOpened; + var bUp; + var oChild = document.getElementById("toc_child_"+iId); + if (null == oChild) { + } else { + bOpened = (oChild.style.display != "none"); + } + switch (e.keyCode) { + case keyLeft: + case keyOperaLeft: + bUp = true; + bOpenAction = (null != bOpened) && (bOpened); + break; + case keyRight: + case keyOperaRight: + bUp = false; + bOpenAction = (null != bOpened) && (!bOpened); + break; + default: + alert("bad key handling..."); + } + if (bOpenAction) { + oOpener.click(); + HTML_WTOC_NS_sCurrTocId = sId; + } else { + var oPrev = HTML_WTOC_NS.getNextVisOpener(sId, bUp); + oPrev.focus(); + } + }, + + + + + + + ////////////////////// + //// Util + ////////////////////// + getNameFromId: function (sId) { + var re = new RegExp("(.*?_)(\\d+)", "i"); + if (!re.test(sId)) return null; + var iId = sId.replace(re, "$1"); + return iId; + }, + getIdnumFromId: function (sId) { + var re = new RegExp("(.*?_)(\\d+)", "i"); + if (!re.test(sId)) return null; + var iId = sId.replace(re, "$2"); + return iId; + }, + + + getNextVisOpener: function (sId, bUp, bTrace) { + if (bTrace) alert("getNextVisOpener("+sId+","+bUp+")"); + var iId = HTML_WTOC_NS.getIdnumFromId(sId); + if (null == iId) { + alert("getNextVisOpener err iId==null"); + return; + } + var sIdName = HTML_WTOC_NS.getNameFromId(sId); + if (null == sIdName) { + alert("getNextVisOpener err sIdName==null"); + return; + } + var oOpener; + var iLoop = -2; + while (oOpener == null) { + if (bTrace) alert(iId); + if (iLoop++ > iMaxChildNum) { alert("Child num error"); return; } + if (!bUp) { + iId++; + } else { + iId--; + } + if (iId > iMaxChildNum) { iId = 0; } + if (iId < 0) { iId = iMaxChildNum; } + var s = sIdName+iId; + oOpener = document.getElementById(s); + if (oOpener != null) { + if (bTrace) alert(oOpener.offsetLeft); + if (oOpener.style.display == "none") { // All + oOpener = null; + } else if (oOpener.offsetLeft < 0) { // IE + oOpener = null; + } else if (0 == oOpener.scrollWidth) { // Opera + oOpener = null; + } + } + } + return oOpener; + } + + + +}; //HTML_WTOC_NS diff --git a/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.pl b/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.pl new file mode 100644 index 0000000..56c0e21 --- /dev/null +++ b/emacs.d/nxhtml/nxhtml/html-wtoc/html-wtoc.pl @@ -0,0 +1,1395 @@ +#! perl + +# Copyright 2006, 2007 Lennart Borgman, http://OurComments.org/. All +# rights reserved. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This file is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. + +use strict; +use File::Copy; +use File::Spec; +#use File::Path qw(); +use File::Path; +use File::Find qw(); +use FindBin; + +use lib "$FindBin::Bin/PerlLib"; +use PathSubs qw(); +use html_tags qw( +*html header +div +table Tr td +p hr br +a span img b +); + +### Script start parameters +my $m_param_action; +my $m_param_files = 1; +my $m_param_pnum = 0; +my $m_param_single = 0; +my $m_param_Template; +my $m_param_InPages; +my $m_param_OutRoot; +my @m_param_InRoot; +my $m_param_Overwrite; + +### Globals +my $m_iAlwaysOpenedLevel = 0; +my $m_sCommonIn; +my $m_sInPagesFolder; +my $m_sTemplateFolder; +my $m_sStartTemplate; +my $m_sBodyTemplate; +#my $m_sEndTemplate; +my $m_bBorders = 0; +my @pages; +my %page_num; +my %js_show_page; +my $m_TemplateTime; +my $m_InPagesTime; +my %m_linked_files; + +sub get_params(); +sub get_template(); +sub read_page_list($); +sub find_pages($$); +sub write_pages(); +sub send_page(); +sub find_template_files(); +sub find_linked_from_pages(); +sub copy_wtoc_files(); +sub copy_linked_files(); + +#push @pages, [$ind, $tit, $full_fil, $anc, $hrf, $trg, $tip]; +sub IND { 0 } +sub TIT { 1 } +sub FULL_FIL { 2 } +sub ANC { 3 } +sub HRF { 4 } +sub TRG { 5 } +sub TIP { 6 } + +########################################################## +### Main +########################################################## +print "\n"; +get_params(); +if ($m_param_action eq "FIND") { + find_pages(\@m_param_InRoot, $m_param_InPages); +} elsif($m_param_action eq "MERGE") { + get_template(); + read_page_list($m_param_InPages); + find_template_files(); + copy_wtoc_files(); + if ($m_param_files) { + write_pages(); + } else { + send_page(); + } + find_linked_from_pages(); + copy_linked_files(); +} elsif($m_param_action eq "TOC") { +} +exit; + +sub copy_if_newer_or_overwrite($$) { + my $in_file = shift; + my $out = shift; + my $out_file = $out; + if (-d $out) { + my ($in_v, $in_d, $in_f) = File::Spec->splitpath( $in_file ); + my ($out_v,$out_d,$out_f) = File::Spec->splitpath( $out, 1 ); + $out_file = File::Spec->catpath( $out_v, $out_d, $in_f ); + } + my $should_write = 1; + if (-e $out_file) { + if ($m_param_Overwrite) { + my $in_mdt = (stat $in_file)[9]; + my $outmdt = (stat $out_file)[9]; + if (($outmdt > $in_mdt)) { + $should_write = 0; + } + } else { + $should_write = 0; + } + } + if ($should_write) { + if (!File::Copy::syscopy($in_file, $out_file)) { + die "syscopy($in_file, $out_file): $!"; + } else { + print " $in_file => $out_file\n"; + } + } +} # copy_if_newer_or_overwrite + +sub copy_wtoc_files() { + print "\n**** Copy html-wtoc files\n"; + mkdir $m_param_OutRoot, 0777; + my $css_file = $FindBin::Bin . "/html-wtoc.css"; + copy_if_newer_or_overwrite($css_file, $m_param_OutRoot); + my $js_file = $FindBin::Bin . "/html-wtoc.js"; + copy_if_newer_or_overwrite($js_file, $m_param_OutRoot); + my $OutRootImg = $m_param_OutRoot . "img/"; + mkpath($OutRootImg); + my $imgsrc = $FindBin::Bin . "/img/"; + opendir(IMGDIR, $imgsrc) or die "Can't opendir $imgsrc: $!"; + while (my $imgfile = readdir(IMGDIR)) { + my $outimg = $OutRootImg . $imgfile; + $imgfile = $imgsrc . $imgfile; + #print STDERR ">>>$imgfile\n"; + if (-f $imgfile) { + copy_if_newer_or_overwrite($imgfile, $outimg); + } + } + closedir(IMGDIR); +} # copy_wtoc_files + +sub add_to_linked_files($$) { + my $from_file = shift; + my $to_file = shift; + if (exists $m_linked_files{$to_file}) { + my $old_from = $m_linked_files{$to_file}; + unless ($old_from eq $from_file) { + die "Both $from_file and $old_from should be copied to $to_file"; + } + } + $m_linked_files{$to_file} = $from_file; +} # add_to_linked_files + +sub copy_linked_files() { + print "\n**** Copy linked files\n"; + my %pages; + for my $pnum (0..$#pages) { + $pages{ full_in_name($pnum) } = 1; + } + for my $to_file (keys %m_linked_files) { + my $from_file = $m_linked_files{$to_file}; + unless (exists $pages{$from_file}) { + if (-e $from_file) { + mkpath4file($to_file); + copy_if_newer_or_overwrite($from_file, $to_file); + } + } + } +} # copy_linked_files + +sub find_linked_files($;$) { + my $in_file = shift; + my $out_file = shift; + $out_file = in2out($in_file) unless ($out_file); + my $whole = get_file($in_file); + while ($whole =~ m!(?:\s|^)(?:href|src)="(.*?)"!gis) { + my $l = $1; + next unless $l =~ m!\.(?:css|js|jpg|jpeg|gif|png)$!; + if (!File::Spec->file_name_is_absolute($l)) { + next if $l =~ m!^javascript:!; + next if $l =~ m!^http://!; + next if $l =~ m!^ftp://!; + next if $l =~ m!^mailto:!; + } + my $rel_l = $l; + my $full_in = $l; + if (File::Spec->file_name_is_absolute($l)) { + $rel_l = PathSubs::mk_relative_link($in_file, $l); + } else { + $full_in = PathSubs::mk_absolute_link($in_file, $l); + } + my $full_out = PathSubs::mk_absolute_link($out_file, $rel_l); + add_to_linked_files($full_in, $full_out); + } +} # find_linked_files + +sub find_template_files() { + print "\n**** Find files referenced in template file\n"; + my $in_file = $m_param_Template; + my $out_file = $m_param_OutRoot . "dummy.htm"; + find_linked_files($in_file, $out_file); +} +sub find_linked_from_pages() { + for my $pnum (0..$#pages) { + next unless defined $pages[$pnum][FULL_FIL]; + next unless $pages[$pnum][FULL_FIL] ne ""; + next if defined $pages[$pnum][TRG]; + find_linked_files( full_in_name($pnum) ); + } +} + +sub should_write_merged($$) { + my $pnum = shift; + my $out_file = shift; + my $should_write = 1; + if (-e $out_file) { + if ($m_param_Overwrite) { + my $srcmdt = page_src_time($pnum); + my $outmdt = (stat $out_file)[9]; + if (($outmdt > $srcmdt) + && ($outmdt > $m_TemplateTime) + && ($outmdt > $m_InPagesTime)) { + $should_write = 0; + } + } else { + $should_write = 0; + } + } + return $should_write; +} +sub write_pages() { + #print STDERR "*** param_OutRoot=$m_param_OutRoot\n"; + if ($m_param_single) { + my $out_file = $m_param_OutRoot . "single_$m_param_pnum.html"; + if (should_write_merged($m_param_pnum, $out_file)) { + my $page = create_single_page($m_param_pnum); + $page = shrink($page); + create_file_and_path($out_file, $page); + } + } else { + my $iPages = 0; + print "\n*** Creating pages:\n"; + for my $pnum (0..$#pages) { + next unless defined $pages[$pnum][FULL_FIL]; + next unless $pages[$pnum][FULL_FIL] ne ""; + next if defined $pages[$pnum][TRG]; + $iPages++; + my $out_file = full_out_name($pnum); + if (should_write_merged($pnum, $out_file)) { + my $page = create_page($pnum); + next unless $page; + print " Creating page $iPages: " . full_in_name($pnum) . "\n"; + $page = shrink($page); + print "\t=> $out_file\n"; + create_file_and_path($out_file, $page); + } + } + } +} # write_pages + +sub send_page() { + my $page = ($m_param_single ? + create_single_page($m_param_pnum) + : + create_page($m_param_pnum) ); + print $page; +} # send_page + +########################################################## +### Params +########################################################## +sub die_usage() { + my $sScript = $0; + $sScript =~ tr!\\!/!; + $sScript =~ s!.*/(.*)!$1!; + die qq(Usage: + Making preliminary file list: + $sScript find in="in-dir" pages="pages-file" [overwrite=1] + + Merging pages and table of contents: + $sScript merge pages="pages-file" outroot="out-dir" template="template-file" [overwrite=1] + + \n); +} +#use Getopt::Long; +sub get_params() { + $| = 1; + for my $arg (@ARGV) { print " "; print $arg; } print "\n\n"; + die_usage() unless $#ARGV > 0; + $m_param_action = $ARGV[0]; + $m_param_action =~ tr/a-z/A-Z/; + #push @m_param_InRoot, $FindBin::Bin . "/doc/"; + #$m_param_OutRoot = $FindBin::Bin . "/tmp/"; + #$m_param_Template = $FindBin::Bin . "/doc/home_template.htm"; + #$m_param_InPages = $FindBin::Bin . "/doc/toc_pages.txt"; + for (my $i = 1; $i <= $#ARGV; $i++) { + my ($k, $v) = ($ARGV[$i] =~ m!(.*?)=(.*)!); + $v =~ tr!\\!/!; + if ($k eq "in") { + $v = PathSubs::uniq_file($v); + $v .= "/" unless substr($v, -1) eq "/"; + push @m_param_InRoot, $v; + } elsif( $k eq "outroot") { + $v = PathSubs::uniq_dir($v); + $v .= "/" unless substr($v, -1) eq "/"; + $m_param_OutRoot = $v; + } elsif( $k eq "pages") { + $v = PathSubs::uniq_file($v); + $m_param_InPages = $v; + } elsif( $k eq "template") { + $v = PathSubs::uniq_file($v); + $m_param_Template = $v; + } elsif( $k eq "overwrite" ) { + $m_param_Overwrite = $v; + } elsif( $k eq "openedlevel" ) { + $m_iAlwaysOpenedLevel = $v * 1; + } else { + die "Unknown parameter: $ARGV[$i]\n"; + } + } + if($m_param_action eq "FIND") { + if ($#m_param_InRoot < 0) { die_usage(); } + if (! defined $m_param_InPages) { die_usage(); } + } elsif($m_param_action eq "MERGE") { + if (! defined $m_param_InPages) { die_usage(); } + if (! defined $m_param_OutRoot) { die_usage(); } + if (! defined $m_param_Template) { die_usage(); } + $m_sTemplateFolder = $m_param_Template; + $m_sTemplateFolder =~ s![^/]*$!!; + } else { + die_usage(); + } + + $m_sInPagesFolder = $m_param_InPages; + $m_sInPagesFolder =~ s![^/]*$!!; + print "Parameters:\n"; + print " " . $m_param_action . "\n"; + print " pages=" . $m_param_InPages . "\n"; + print " outroot=" . $m_param_OutRoot . "\n"; + print " template=" . $m_param_Template . "\n"; + if (defined $m_param_Overwrite) { + print " overwrite=" . $m_param_Overwrite . "\n"; + } + #if ($#m_param_InRoot == -1) { push @m_param_InRoot,$m_sInPagesFolder; } +} + +sub get_template() { + my $sTemplate = get_file($m_param_Template, 1); + $m_TemplateTime = (stat $m_param_Template)[9]; + $m_InPagesTime = (stat $m_param_InPages)[9]; + $sTemplate =~ s///gs; + if ( $sTemplate =~ m!(.*?)(.*)!si ) { + $m_sStartTemplate = $1; + $m_sBodyTemplate = $2; + #$m_sEndTemplate = $3; + } else { + die "Can't find body of template\n"; + } +} # get_template + +sub read_page_list($) { + my $sPagesFile = shift; + my @in_files; + open(P,$sPagesFile) or die "Can't open toc list file $sPagesFile: $!\n"; + while (my $sLine =

) { + chomp $sLine; + $sLine =~ s/^\s+|\s+$//g; + next if $sLine eq ""; + next if substr($sLine, 0, 1) eq ";"; + #print STDERR "$sLine\n"; + my ($ind, $tit, $ref, $tip, $trg, $ico) + = map { s/^\s+|\s+$//g; $_; } split("###", $sLine); + #warn "trg=$trg\n" if defined $trg; + my ($fil, $anc) = ("", ""); + my $hrf = ""; + my $full_fil = ""; + #$ref = "" unless defined $ref; + #print STDERR "ref=$ref\n"; + if (defined $ref) { + if (defined $trg) { undef $trg unless $trg ne ""; } + if ((defined $trg) || ($ref =~ m/https?:/i)) { + $hrf = $ref; + } else { + ($fil, $anc) = split('#', $ref); + if ($ind >= 0) { + if (File::Spec->file_name_is_absolute($fil)) { + $full_fil = $fil; + } else { + $full_fil = PathSubs::uniq_file($m_sInPagesFolder . $fil); + } + } + } + } + if ((!$tip) && ($full_fil ne "")) { + $tip = get_title($full_fil); + } + push @pages, [$ind, $tit, $full_fil, $anc, $hrf, $trg, $tip]; + push @in_files, $full_fil if !defined $trg; + } + close P; + $m_sCommonIn = get_common_root(\@in_files). "/"; +} # read_page_list + + + +sub get_common_root($) { + my $psRoots = shift; + my @sCommon; + for my $s (@$psRoots) { + my $full_s = PathSubs::uniq_file($s); + my @full_s = split("/", $full_s); + if ($#sCommon == -1) { + @sCommon = @full_s; + } else { + my $iMax = $#sCommon; if ($#full_s < $iMax) { $iMax = $#full_s; } + for (my $i = 0; $i <= $iMax; $i++) { + if ($sCommon[$i] ne $full_s[$i]) { + #print STDERR "$i: $sCommon[$i] != $full_s[$i]\n"; + @sCommon = @sCommon[0..$i-1]; + last; + } + } + } + } + my $sCommon = join("/", @sCommon); + return $sCommon; +} # get_common_root + + +sub find_pages($$) { + my $pasInRoot = shift; + my $sOutFile = shift; + if (!$m_param_Overwrite) { + die "Don't want to overwrite existing output file $sOutFile!\n" if -e $sOutFile; + } + my $root_level; + my $sList; + my $handle_file = + sub { + return unless m/.html?/i; + return if -d $_; + my $fname = PathSubs::uniq_file($_); + die "Can't read $fname\n" unless -r $_; + my $title = get_title($_); + my $level = $fname =~ tr!/!!; + $level -= $root_level; + my $rel_fname = PathSubs::mk_relative_link($sOutFile, $fname); + $sList .= "$level ### $title ### $rel_fname\n"; + }; + for my $sInRoot (@$pasInRoot) { + $sInRoot = PathSubs::uniq_file($sInRoot); + chop($sInRoot) if (substr($sInRoot, -1) eq "/"); + $root_level = $sInRoot =~ tr!/!!; + File::Find::find($handle_file, $sInRoot); + } + create_file($sOutFile, $sList); +} # find_pages + + +########################################################## +### File - page helpers +########################################################## + +sub file_name($) { + my $num = shift; + return $pages[$num][FULL_FIL]; +} +sub file_anchor($) { + my $num = shift; + return $pages[$num][ANC]; +} +sub file_href($) { + my $num = shift; + #die $pages[$num][HRF] if defined $pages[$num][HRF]; + return $pages[$num][HRF]; +} +sub file_target($) { + my $num = shift; + return $pages[$num][TRG]; +} +sub file_title($) { + my $num = shift; + return $pages[$num][TIT]; +} +sub file_tip($) { + my $num = shift; + return $pages[$num][TIP]; +} +sub full_in_name($) { + my $num = shift; + my $name = file_name($num); + return $name; +} +sub full_out_href($) { + my $num = shift; + my $anchor = file_anchor($num); + my $full_href = full_out_name($num); + warn "full_href is null" unless $full_href; + if ((defined $anchor) && ($anchor ne "")) { $full_href .= "#" . $anchor; } + return $full_href; +} +sub full_out_name($) { + my $num = shift; + my $in_name = file_name($num); + return unless $in_name; + my $anchor = file_anchor($num); + #$m_param_OutRoot . $name; + $anchor = ""; + my $name = substr($in_name, length($m_sCommonIn)); + if ($anchor) { + my $base; + my $ext; + for (my $i = length($name);$i>0;$i--) { + if (substr($name, $i, 1) eq ".") { + $base = substr($name, 0, $i-1); + $ext = substr($name, $i); + $name = $base . "_sharp_" . $anchor . $ext; + last; + } + } + } + $m_param_OutRoot . $name; +} +sub replace_name_link($) { + my $page = shift; + for my $k (keys %page_num) { + my $num = $page_num{$k}; + my $href = ($m_param_single ? "javascript:ShowPage($num)" : file_name($num)); + $page =~ s!%%$k%%!$href!gs; + } + return $page; +} + +########################################################## +### File name helpers +########################################################## +sub in2out($) { + my $in_name = shift; + die "in2out: File name is not abs: $in_name" unless File::Spec->file_name_is_absolute($in_name); + my $name = substr($in_name, length($m_sCommonIn)); + $m_param_OutRoot . $name; +} + +########################################################## +### File reading/writing +########################################################## + +sub mkpath4file($) { + my $file = shift; + my $path = $file; + $path =~ s|[^/]*$||; + File::Path::mkpath($path); +} +sub create_file($$) { + my ($out_file, $page) = @_; + if (!$m_param_Overwrite) { + if (-e $out_file) { die "Will not overwrite $out_file\n"; } + } + open(OUT, ">$out_file") or die "Can't create $out_file: $!"; + print OUT $page; + close OUT; + chmod 0111|((stat $out_file)[2]&07777), $out_file +} +sub create_file_and_path($$) { + my ($out_file, $page) = @_; + mkpath4file($out_file); + create_file($out_file, $page); +} + + +sub get_file($$) { + my ($file, $need) = @_; + if (open(FL, $file)) { + local $/; + my $whole = ; + close FL; + return $whole; + } else { + my $err = $!; + die "Can't open $file: $err\n" if $need; + return ""; + } +} + +sub get_title($) { + my $file = shift; + open(H, $file) or die "Can't open and get title from $file: $!"; + while (my $line = ) { + if ($line =~ m!(.*?)!i) { close H; return $1; } + } + close H; +} + + + +########################################################## +### Html parsing etc +########################################################## + +sub get_head_from_file($) { + my $fname = shift; + my $err; + my $head = get_head(get_file($fname, 1), \$err); + die "\n\n$fname\n\t" . $err if defined $err; + return $head; +} +# BUG: These actually requires parsing of the file, but it does not +# seem very important: +sub get_head($$) { + my $html = shift; + my $perr = shift; + return "" unless $html; + $html =~ s///g; + if ($html =~ m!(.*)!is) { + return $1; + } + $$perr = "Can't find -tag in $html\n"; +} +sub get_body($) { + my $html = shift; + return "" unless $html; + $html =~ s///gs; + if ($html =~ m!]*>(.*)!is) { + return $1; + } + die "Can't find -tag in $html\n"; +} + +sub shrink($) { + my $str = shift; + my $out_str = ""; + my @str = split("\n", $str); + my $in_pre = 0; + for my $s (@str) { + if ($s =~ m!

!i)  { $in_pre = 1; }
+        if ($s =~ m!
!i) { $in_pre = 0; } + $s =~ s!^(\s*)!! unless $in_pre; + $out_str .= $s . "\n"; + } + return $out_str; + $str =~ s!^(\s*)!!gm; + $str; +} + + +########################################################## +### Making what we see +########################################################## + +sub mk_search() { + return "" if ! $m_param_single; + return qq[ + + Sök + ]; +} +sub mk_main_table($$$$$) { + my $left = shift; + my $main = shift; + my $srch_table = shift; + my $sFile = shift; + my $pNum = shift; + my $search_tr = ""; + if ($m_param_single) { + $search_tr = + Tr( + td("  ") + . td({-valign=>'bottom', }, mk_search(), ) ) + } + my $cont_table = + table( + { -border=>"$m_bBorders", -cellpadding=>0, -cellspacing=>0, + -width=>"100%", + -id=>"html-wtoc-contents", + #-style=>"display:", + -summary=>"Table of contents", + }, + Tr( + #td("  ") + td({-class=>"html-wtoc-margin"}) + . td({-valign=>'top'}, $left) ) + . $search_tr + ) + ; + my $page = $m_sBodyTemplate; + $page = replace_template_links($m_sBodyTemplate, $sFile); + $page =~ s!%%TOC%%!$cont_table!; + $page =~ s!%%PAGE%%!$main!; + return $page; +} # mk_main_table + + +sub find_ind_level_prev($) { + my $lThis = shift; + for (my $i = $lThis - 1; $i > 0; $i--) { + my $ind_lev = $pages[$i][IND]; + if ($ind_lev < 50) { return $ind_lev; } + } + return undef; +} +sub find_ind_level_next($) { + my $lThis = shift; + #print "find_ind_level_next($lThis)"; + #print ", "; + #print file_title($lThis); + #print "\n"; + #for (my $i = $lThis; $i < $#pages; $i++) { + for (my $i = $lThis + 1; $i <= $#pages; $i++) { + my $ind_lev = $pages[$i][IND]; + if ($ind_lev < 50) { return $ind_lev; } + } + return undef; +} + + + + + + + + +sub mk_opener_elem($$$) { + my $iPi = shift; + my $sHref = shift; + my $bOpened = shift; + my $Aattrib = + { + -id =>"opener_$iPi", + }; + if ($sHref) { $$Aattrib{href} = $sHref; } + my $sImg; + my $sAlt; + if ($bOpened) { + $sImg = "down"; + $sAlt = "Close"; + } else { + $sImg = "right"; + $sAlt = "Open"; + } + return + a( + $Aattrib, + img({ + -src=>"img/$sImg.gif", + -alt=>$sAlt, + -border=>0, + -width=>12, + -height=>12, + }, + ), + ); +} # mk_opener_elem + +sub mk_content($) { + my $pnum = shift; + if (!$pages[$pnum]) { + return br(); + } + my $cont; + my @father; + my @child_trace; + my $this_indent = $pages[$pnum][IND]; + my $this_file = $pages[$pnum][FULL_FIL]; + if ($this_indent == -2) { + return ""; + } + my $this_href = full_out_name($pnum); + #my $anchor = file_anchor($pnum); + #if (defined $anchor) { $this_href .= "#" . $anchor; } + my @size; + $size[0] = "1em"; + $size[1] = "0.8em"; + $size[2] = "0.8em"; + + + + ### Open all main level nodes + my @opened; # rename to visible!!!!! + for my $pi (0..$#pages) { + my $indent = $pages[$pi][IND]; + if ($indent <= $m_iAlwaysOpenedLevel) { + $opened[$pi] = 1; + } else { + $opened[$pi] = 0; # more simple to handle + } + } + + + + ### Open ancestors and older sisters (if not a standalone node) + my $pnum_indent = $pages[$pnum][IND]; + my $high_open = $pnum_indent; + my $standalone_open = 10; + if ($high_open < $standalone_open) { ### Not a standalone node + for (my $pi = $pnum; $pi >= 0; $pi--) { + my $pi_indent = $pages[$pi][IND]; + if ($high_open >= $pi_indent) { + $opened[$pi] = 1; + $high_open = $pi_indent; + for (my $ps = $pi+1; $ps <= $#pages; $ps++) { + my $ps_indent = $pages[$ps][IND]; + last if $ps_indent < $pi_indent; + $opened[$ps] = 1 if $ps_indent == $pi_indent; + } + } + last if $pi_indent == 0; + } + } + + + + + ### Open direct childs and younger sisters + my $maybe_child = 1; + my $more_sisters = 1; + my $max_open_indent = $pnum_indent; + for my $pi ($pnum+1..$#pages) { + my $pi_indent = $pages[$pi][IND]; + if ($pi_indent <= $max_open_indent) { $maybe_child = 0; } + if ($pi_indent < $pnum_indent) { $more_sisters = 0; } + if ($pi_indent == $pnum_indent) { + if ($more_sisters) { $opened[$pi] = 1; } + $maybe_child = 0; + } elsif ($pi_indent == $pnum_indent+1) { + if ($maybe_child) { $opened[$pi] = 1; } + } + } + #exit if $pnum == 3; + + + + + ### Open all in the same file (necessary for non-JavaScript) + for my $pi (0..$#pages) { + my $file = $pages[$pi][FULL_FIL]; + #printf STDERR "file - open=(%s)\n", $file; + #if ($file eq $this_file) { + if ($file eq $this_file) { + $opened[$pi] = 1; + } + if ($file eq "") { + if ($pi < $#pages) { + if ($pages[$pi][IND] < $pages[$pi+1][IND]) { + $opened[$pi+1] = 1; + } + } + } + if ($pages[$pi][IND] > 10) { + $opened[$pi] = 0; + #print ">>>>>>>>\$opened[$pi] = 0;\n"; + } + #print STDERR "+++++++++\$opened[$pi] = $opened[$pi]\n"; + } + + + + + ### Make the actual contents + my $tooltip; + my $child_id; + for my $pi (0..$#pages) { +# if (!$pages[$pi][FULL_FIL] && !$pages[$pi][HRF]) { +# my $txt = file_title($pi); #$pages[$pi][TIT]; +# $txt = qq(


) if $txt eq "-"; +# $cont .= $txt; +# $cont .= br(); +# next; +# } + my $txt = file_title($pi); #$pages[$pi][TIT]; + if ($txt eq "-") { + $txt = qq(


); + $cont .= $txt; + $cont .= br(); + next; + } + #if ($pages[$pi][TRG]) { + # next; + #} + #next if ! defined $opened[$pi]; + #next if ! $opened[$pi]; + my $ind_lev = $pages[$pi][IND]; + next if $ind_lev > 50; + my $ind_lev_next = find_ind_level_next($pi); + #my $ind_lev_prev = find_ind_level_prev($pi); + + my $this_entry = ""; + + ### Child id from previous row + if (defined $child_id) { + my $display = ""; + if (!$opened[$pi]) { + $display = qq(style="display:none"); + } else { + } + $this_entry .= "\n

\n"; + undef $child_id; + } + my $opener_elem = ""; #qq( ); + my $childs_are_visible = ($pi == $pnum); + if ($pi < $#pages) { + if ($pages[$pi][IND] < $pages[$pi+1][IND]) { + if ($opened[$pi+1]) { $childs_are_visible = 1; } + } + } + #if ($pages[$pi][IND] < $m_iAlwaysOpenedLevel) { $childs_are_visible = 1; } + + my $file_href; + my $target; + my $href; + my $href_self; + my $target_attrib; + my $title = file_title($pi); + my $file_name = file_name($pi); + if ($title) { + $file_href = file_href($pi); # || ""; + $target = file_target($pi); + $href = + ($file_name ? + ($m_param_files ? + ($m_param_single ? "JavaScript:ShowPage($pi);" : + ($file_href ne ""? $file_href + : + PathSubs::mk_relative_link($this_href, full_out_href($pi)))) + : + ($m_param_single ? "JavaScript:ShowPage($pi)" : "?pnum=$pi") + ) + : + (File::Spec->splitpath($this_href))[2]); + if ($pi == $pnum) { + $href_self = $this_href; + if ($href_self =~ m!([^/\\]*$)!) { + $href_self = $1; + } + } + $target_attrib = (defined $target? qq(target="$target"): ""); + } else { + $href = ""; + $target_attrib = ""; + } + + if (defined $ind_lev_next && $ind_lev_next > $ind_lev) { + $child_id = "toc_child_$pi"; + #print " child_id=$child_id\n"; + push @child_trace, $child_id; + $opener_elem = mk_opener_elem($pi, + ($href? $href : $href_self), + $childs_are_visible); + } + $title =~ s/_/ /go; + my $indent = ($ind_lev ? " " x (($ind_lev-1) * 4) : ""); + my $size = $size[$ind_lev]; + $title = b($title) if $ind_lev == 0; + + my $Aattrib = + { + id=>"toc_link_$pi", + onclick=>"html_wtoc_nailing(this)", + }; + if (!$file_name) { + $Aattrib = + { + id=>"opener_text_$pi", + }; + } + if ($pi == $pnum) { + ### Current page + $$Aattrib{class} = "html-wtoc-currcont"; + $$Aattrib{title} = "You are here"; + $$Aattrib{href} = $href_self; + $this_entry .= + table({ + -cellspacing=>0, + -cellpadding=>0, + -class=>"html-wtoc-contline", + -border=>0, + -summary=>"Formatter", + }, + Tr({ + }, + td({ + }, + a( + $Aattrib, + $indent . $title . " " + ) + ) + . td({ + -class=>"html-wtoc-mark", + }, + $opener_elem + ) + ) + ); + + + + + } else { + ### Link to other page + if (file_title($pi)) { + $tooltip = $pages[$pi][TIP]; + if (!defined $tooltip) { $tooltip = "Go to the page $title"; } + $$Aattrib{class} = "html-wtoc-contents-a"; + my $a_or_span; + if (!defined $href) { + $a_or_span = span($Aattrib, $indent . $title); + } else { + $$Aattrib{title} = $tooltip; + $$Aattrib{href} = $href; + if (defined $target) { $$Aattrib{target} = $target; } + $a_or_span = a($Aattrib, $indent . $title); + } + $this_entry .= + table({ + -cellspacing=>0, + -cellpadding=>0, + -class=>"html-wtoc-contline", + -border=>0, + -summary=>"Formatter", + }, + Tr({ + }, + td({ + }, + $a_or_span + ) + . td({ + -class=>"html-wtoc-mark", + }, + $opener_elem + ) + ) + ); + } else { + $this_entry .= $indent . " " . $title; + #die $this_entry; + } + } + if ((!defined $ind_lev_next) || $ind_lev_next <= $ind_lev) { + my $ind_end = $ind_lev; + if (defined $ind_lev_next) { $ind_end = $ind_lev_next+1; } + for (my $i = $ind_end; $i <= $ind_lev; $i++) { + my $end_id = pop @child_trace; + if (defined $end_id) { + $this_entry .= "
"; # end childs' span + #print " end $end_id\n"; + } + } + } + $cont .= $this_entry; + $father[$ind_lev] = $pi; + } #for my $pi (0..$#pages) + + $cont = div({-class=>"html-wtoc-contents"}, $cont) . p(" "); + #$cont =~ s|<|\n<|gms; + #$cont =~ tr!\n\r! !; + $cont =~ s{ + (\ssrc=)"(.*?)" + } + { + my $s1 = $1; + my $src = $2; + if (!PathSubs::is_abs_path($src)) { + my $srcabs = PathSubs::mk_absolute_link(full_out_name(0), $src); + $src = PathSubs::mk_relative_link(full_out_name($pnum), $srcabs); + }; + "${s1}\"$src\""; + }egsmx; + $cont; +} # mk_content + +sub mk_main_window($) { + my $pnum = shift; + my $full_name = full_in_name($pnum); + return unless defined $full_name; + return get_body(get_file($full_name, 1)); +} + + + + + + + + +########################################################## +### The JavaScripts and styles we need +########################################################## + +sub mk_style($) { + return ""; + my $pnum = shift; + my $rel_link = + PathSubs::mk_relative_link(full_out_name($pnum), $m_param_OutRoot . "html-wtoc.css"); + return qq(\n); +} +sub mk_js($) { + my $pnum = shift; + return <<__HTML_END_JS_PNUM__; + +__HTML_END_JS_PNUM__ + return ""; + my $single_js = ""; + if ($m_param_single) { + $single_js = qq[if (!document.all) { navigate("0.html"); }]; + my $page_info = "var page_name = new Array;\n"; + for my $i (0..$#pages) { + my $page_name = file_title($i); #$pages[$i][TIT]; + $page_info .= qq[ page_name[$i] = "$page_name";\n]; + } + $single_js .= $page_info; + } + my $sch_link = + PathSubs::mk_relative_link(full_out_name($pnum), $m_param_OutRoot . "search.js"); + my $top_link = + PathSubs::mk_relative_link(full_out_name($pnum), $m_param_OutRoot . "html-wtoc.js"); + return <<__HTML_END_JS__; + + + +__HTML_END_JS__ +} + +########################################################## +### Page creation +########################################################## + +sub replace_template_links($$) { + my $template = shift; + my $sFile = shift; + $template =~ s{\ssrc="(.*?)"} + { + my $sSrc = $m_param_OutRoot . $1; + my $sRelSrc = PathSubs::mk_relative_link($sFile, $sSrc); + qq( src="$sRelSrc"); + }exg; + $template =~ s{\shref="(.*?)"} + { + my $sOld = $1; + if ((lc substr($sOld, 0, 11)) eq "javascript:") { + qq( href="$sOld"); + } elsif (PathSubs::is_abs_netpath($sOld)) { + qq( href="$sOld"); + } else { + my $sSrc = $m_param_OutRoot . $sOld; + my $sRelSrc = PathSubs::mk_relative_link($sFile, $sSrc); + qq( href="$sRelSrc"); + } + }exg; + return $template; +} # replace_template_links + +sub mk_start_of_page($) { + my $pnum = shift; + my $page = ""; + my $page_style = mk_style($pnum); + my $page_js = mk_js($pnum); + my $sFile = full_out_name($pnum); + my $head = ""; + $head .= $page_js; + $head .= $page_style; + $head .= get_head_from_file(full_in_name($pnum)); + $page .= header if !$m_param_files; + $page .= replace_template_links($m_sStartTemplate, $sFile); + $page =~ s!HEAD!$head!; + my $focus_pnum = $pnum; + my $ind_lev = $pages[$pnum][IND]; + if ($ind_lev > 50) { $focus_pnum = 0; } + $page =~ s!%%PNUM%%!$focus_pnum!; + return $page; +} # mk_start_of_page + +my %m_sCreatedPages; +sub page_src_time($) { + my $pnum = shift; + my $src_file = $pages[$pnum][FULL_FIL]; + return (stat $src_file)[9]; +} +sub create_page($) { + my $pnum = shift; + return unless $pages[$pnum][FULL_FIL]; + + my $out_name = full_out_name($pnum); + return if exists $m_sCreatedPages{$out_name}; + $m_sCreatedPages{$out_name} = 1; + + my $page = mk_start_of_page($pnum); + my $cont_win = mk_content($pnum); + my $main_win = mk_main_window($pnum); + $page .= mk_main_table( + $cont_win, + $main_win, + "", + $out_name, + $pnum, + ); + $page .= end_html; + $page = replace_name_link($page); + return $page; +} # create_page + + +__END__ + + + ########################################################## + ### Unused currently + ########################################################## + + sub build_ShowPage() { + for my $num (0..$#pages) { + $page_num{$pages[$num][FULL_FIL]} = $num; + my $fon = full_out_name($num); + if ($fon) { $js_show_page{$fon} = "ShowPage($num);"; } + } +} +build_ShowPage(); + + +sub mk_meta_enter_exit() { + return <<__HTML_EE__; + + +__HTML_EE__ +} + +########################################################## +### Single page +########################################################## + +sub mk_noscript() { + return <<__HTML_END_NOSCRIPT__; +