From 9e78e16fd8366453259386da577b625b02613a9d Mon Sep 17 00:00:00 2001 From: Phil Hagelberg Date: Thu, 30 Jul 2009 10:08:56 -0700 Subject: [PATCH 01/25] Turn off toolbar even when in daemon-mode. Thanks to jmhodges for the report. --- starter-kit-defuns.el | 3 +++ starter-kit-misc.el | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/starter-kit-defuns.el b/starter-kit-defuns.el index c019ee654f..9633400d69 100644 --- a/starter-kit-defuns.el +++ b/starter-kit-defuns.el @@ -86,6 +86,9 @@ Symbols matching the text at point are put first in the completion list." (defun turn-on-whitespace () (whitespace-mode t)) +(defun turn-off-tool-bar () + (tool-bar-mode -1)) + (add-hook 'coding-hook 'local-column-number-mode) (add-hook 'coding-hook 'local-comment-auto-fill) (add-hook 'coding-hook 'turn-on-hl-line-mode) diff --git a/starter-kit-misc.el b/starter-kit-misc.el index 84b58447f1..93ba74ec61 100644 --- a/starter-kit-misc.el +++ b/starter-kit-misc.el @@ -5,9 +5,10 @@ (when window-system (setq frame-title-format '(buffer-file-name "%f" ("%b"))) (tooltip-mode -1) - (tool-bar-mode -1) (blink-cursor-mode -1)) +(add-hook 'before-make-frame-hook 'turn-off-tool-bar) + (mouse-wheel-mode t) (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) From 93fda5ed95b437b336f43cdbd5063a50e20b4e63 Mon Sep 17 00:00:00 2001 From: Phil Hagelberg Date: Thu, 30 Jul 2009 10:09:22 -0700 Subject: [PATCH 02/25] Remove clojure fixes that have been added to swank-clojure. If you miss them, update swank-clojure! --- starter-kit-lisp.el | 45 --------------------------------------------- 1 file changed, 45 deletions(-) diff --git a/starter-kit-lisp.el b/starter-kit-lisp.el index 0368d29d33..765b2a57d1 100644 --- a/starter-kit-lisp.el +++ b/starter-kit-lisp.el @@ -50,51 +50,6 @@ (font-lock-add-keywords 'clojure-mode '(("(\\|)" . 'esk-paren-face))) -(defface esk-clojure-trace-face - '((((class color) (background dark)) - (:foreground "grey50")) - (((class color) (background light)) - (:foreground "grey55"))) - "Face used to dim parentheses." - :group 'starter-kit-faces) - -(setq esk-clojure-trace-face 'esk-clojure-trace-face) - -;; This will make relevant lines stand out more in stack traces -(defun sldb-font-lock () - (font-lock-add-keywords nil - '(("[0-9]+: \\(clojure\.\\(core\\|lang\\).*\\)" - 1 esk-clojure-trace-face) - ("[0-9]+: \\(java.*\\)" - 1 esk-clojure-trace-face) - ("[0-9]+: \\(swank.*\\)" - 1 esk-clojure-trace-face) - ("\\[\\([A-Z]+\\)\\]" - 1 font-lock-function-name-face)))) - -(add-hook 'sldb-mode-hook 'sldb-font-lock) - -(defun slime-jump-to-trace (&optional on) - "Jump to the file/line that the current stack trace line references. -Only works with files in your project root's src/, not in dependencies." - (interactive) - (save-excursion - (beginning-of-line) - (search-forward-regexp "[0-9]: \\([^$(]+\\).*?\\([0-9]*\\))") - (let ((line (string-to-number (match-string 2))) - (ns-path (split-string (match-string 1) "\\.")) - (project-root (locate-dominating-file default-directory "src/"))) - (find-file (format "%s/src/%s.clj" project-root - (mapconcat 'identity ns-path "/"))) - (goto-line line)))) - -(eval-after-load 'slime - '(progn - (defalias 'sldb-toggle-details 'slime-jump-to-trace) - (defun sldb-prune-initial-frames (frames) - "Show all stack trace lines by default." - frames))) - (eval-after-load 'find-file-in-project '(add-to-list 'ffip-patterns "*.clj")) From eb07d4c962d28c5ebeefcb368f8fde5ac165f169 Mon Sep 17 00:00:00 2001 From: Phil Hagelberg Date: Mon, 3 Aug 2009 11:02:54 -0700 Subject: [PATCH 03/25] Don't rely on before-make-frame-hook to turn off toolbar. Thanks to Tim Dysinger. --- starter-kit-misc.el | 1 + 1 file changed, 1 insertion(+) diff --git a/starter-kit-misc.el b/starter-kit-misc.el index 93ba74ec61..8ca2bf2334 100644 --- a/starter-kit-misc.el +++ b/starter-kit-misc.el @@ -5,6 +5,7 @@ (when window-system (setq frame-title-format '(buffer-file-name "%f" ("%b"))) (tooltip-mode -1) + (turn-off-tool-bar) (blink-cursor-mode -1)) (add-hook 'before-make-frame-hook 'turn-off-tool-bar) From fda26a0ee5d463bed75c6cd314dffdb355fd6e6f Mon Sep 17 00:00:00 2001 From: Tim Dysinger Date: Sun, 2 Aug 2009 01:06:17 -0500 Subject: [PATCH 04/25] Add paredit mode to scheme --- starter-kit-lisp.el | 1 + 1 file changed, 1 insertion(+) diff --git a/starter-kit-lisp.el b/starter-kit-lisp.el index 765b2a57d1..f87f872ec3 100644 --- a/starter-kit-lisp.el +++ b/starter-kit-lisp.el @@ -90,6 +90,7 @@ Kills existing SLIME session, if any." (add-hook 'scheme-mode-hook 'run-coding-hook) (add-hook 'scheme-mode-hook 'idle-highlight) +(add-hook 'scheme-mode-hook 'turn-on-paredit) (font-lock-add-keywords 'scheme-mode '(("(\\|)" . 'esk-paren-face))) From 9eb53a22156fae85aa288a484a13add64e027d26 Mon Sep 17 00:00:00 2001 From: Tim Dysinger Date: Sat, 1 Aug 2009 23:57:59 -0500 Subject: [PATCH 05/25] This was already added to elpa --- elpa-to-submit/cssh.el | 428 ----------------------------------------- 1 file changed, 428 deletions(-) delete mode 100644 elpa-to-submit/cssh.el diff --git a/elpa-to-submit/cssh.el b/elpa-to-submit/cssh.el deleted file mode 100644 index 4fb01e4714..0000000000 --- a/elpa-to-submit/cssh.el +++ /dev/null @@ -1,428 +0,0 @@ -;;; cssh.el --- clusterssh implementation for emacs -;; -;; Copyright (C) 2008 Dimitri Fontaine -;; -;; Author: Dimitri Fontaine -;; URL: http://pgsql.tapoueh.org/elisp -;; Version: 0.1 -;; Created: 2008-09-26 -;; Keywords: ClusterSSH ssh cssh -;; -;; This file is NOT part of GNU Emacs. -;; -;; Emacs Integration: -;; (require 'cssh) -;; -;; cssh bindings to open ClusterSSH controler in cssh-mode on some buffers: -;; -;; C-= asks remote hostname then opens a term and ssh to it -;; C-= from IBuffer mode opens ClusterSSH controler on marked buffers -;; C-u C-= asks for the name of the ClusterSSH controler buffer -;; C-M-= matches given regexp against ssh known_hosts and open -;; buffers in which ssh is typed -;; C-u C-M-= asks for a name before -;; -;; -;; TODO -;; * add some more documentation -;; * implement a char mode where each key typed is directly sent -;; * implement a toggle to switch from and to char and line mode -;; - -(require 'pcmpl-ssh) -(require 'ibuffer) -(require 'term) - -(defgroup cssh nil "ClusterSSH mode customization group" - :group 'convenience) - -(defcustom split-horizontally-first t - "Do we first split horizontally or vertically" - :group 'cssh - :options '(t nil)) - -(defcustom cssh-prompt "cssh> " - "cssh buffer prompt" - :group 'cssh) - -(defcustom cssh-default-buffer-name "*cssh*" - "cssh default buffer name, the one in cssh major mode" - :group 'cssh) - -(defun turn-on-cssh-binding () - (local-set-key (kbd "C-=") 'cssh-interactive-start)) - -(add-hook 'ibuffer-mode-hook 'turn-on-cssh-binding) - -(global-set-key (kbd "C-M-=") 'cssh-regexp-host-start) - -(defun ssh-term-remote-open () - "Opens a M-x term and type in ssh remotehost with given hostname" - (interactive) - (let* - ((ssh-term-remote-host - (completing-read "Remote host: " (pcmpl-ssh-hosts))) - (ssh-command (concat "ssh " ssh-term-remote-host)) - (ssh-buffer-name (concat "*" ssh-command "*"))) - - (if (get-buffer ssh-buffer-name) - (switch-to-buffer ssh-buffer-name) - - (ansi-term "/bin/bash" ssh-command) - (set-buffer (get-buffer ssh-buffer-name)) - (insert (concat "TERM=screen " ssh-command)) - (term-send-input)))) - -(global-set-key (kbd "C-=") 'ssh-term-remote-open) - - -;;; -;;; open cssh windows and create buffers from a regexp -;;; the regexp matches host names as in pcmpl-ssh-hosts -;;; -(defun cssh-regexp-host-start (&optional cssh-buffer-name) - "start ClusterSSH for all mathing hosts in known_hosts" - (interactive - (list - (and current-prefix-arg - (read-buffer "ClusterSSH buffer name: " - (generate-new-buffer-name cssh-default-buffer-name))))) - (setq cssh-buffer-name - (or cssh-buffer-name cssh-default-buffer-name)) - - (let* ((re (read-from-minibuffer "Host regexp: ")) - (cssh-buffer-list '())) - - (dolist (elt (pcmpl-ssh-hosts) cssh-buffer-list) - (when (string-match re elt) - (let* ((buffer-ssh-command (concat "ssh " elt)) - (buffer-name (concat "*" buffer-ssh-command "*"))) - - (unless (get-buffer buffer-name) - (ansi-term "/bin/bash" buffer-ssh-command) - (with-current-buffer buffer-name - (insert (concat "TERM=screen " buffer-ssh-command)))) - - (add-to-list 'cssh-buffer-list (get-buffer buffer-name))))) - - (message "%S" cssh-buffer-list) - - (cssh-open cssh-buffer-name cssh-buffer-list) - (cssh-send-string ""))) - -;;; -;;; ibuffer interaction: open cssh mode for marked buffers -;;; -(defun cssh-interactive-start (&optional cssh-buffer-name) - "start ClusterSSH from current iBuffer marked buffers list" - (interactive - (list - (and current-prefix-arg - (read-buffer "ClusterSSH buffer name: " - (generate-new-buffer-name cssh-default-buffer-name))))) - (setq cssh-buffer-name - (or cssh-buffer-name cssh-default-buffer-name)) - - (cssh-init-from-ibuffer-marked-buffers cssh-buffer-name)) - -(defun cssh-init-from-ibuffer-marked-buffers (cssh-buffer-name) - "open cssh global input frame and the buffers windows from -marked ibuffers buffers" - (let* ((buffers-all-in-term-mode t) - (marked-buffers (ibuffer-get-marked-buffers))) - - (dolist (elt marked-buffers) - (progn - (message (buffer-name elt)) - ;;(select-window (get-buffer-window elt)) - (with-current-buffer elt - (when (not (eq major-mode 'term-mode)) - (progn - (setq buffers-all-in-term-mode nil) - (message "ClusterSSH only supports Term mode buffers")))))) - - (when buffers-all-in-term-mode - (cssh-open cssh-buffer-name marked-buffers)))) - -;;; -;;; Entry point -;;; -(defun cssh-open (cssh-buffer-name buffer-list) - "open the cssh global input frame then the ssh buffer windows" - - (cond ((endp buffer-list) - (ssh-term-remote-open)) - - ((eq 1 (length buffer-list)) - (set-window-buffer (selected-window) (car buffer-list))) - - (t - (set-window-buffer - (selected-window) (get-buffer-create cssh-buffer-name)) - - ;; make the controler buffer then split the window - (let* ((cssh-controler (split-window-vertically -4))) - ;; switch to css-mode, which make-local-variable cssh-buffer-list - ;; which we overwrite - (set-buffer cssh-buffer-name) - (cssh-mode) - (setq cssh-buffer-list buffer-list) - - ;; create the windows needed to host our buffer-list - (cssh-nsplit-window buffer-list) - - ;; now place the user into the cssh-controler and prompt him - (select-window cssh-controler) - (insert (concat "\n" cssh-prompt)) - - ;; return the buffer list - cssh-buffer-list)))) - -;;; -;;; cssh editing mode -;;; -(defvar cssh-mode-map - (let ((map (make-sparse-keymap))) - (define-key map [up] 'cssh-send-up) - (define-key map [down] 'cssh-send-down) - (define-key map [tab] 'cssh-send-tab) - (define-key map (kbd "RET") 'cssh-send-input) - (define-key map (kbd "C-j") 'cssh-send-input) - (define-key map (kbd "C-m") 'cssh-send-input) - (define-key map (kbd "C-c") 'cssh-cancel-input) - (define-key map (kbd "C-l") 'cssh-clear) - (define-key map (kbd "C-d") 'cssh-eof) - (define-key map (kbd "C-=") 'cssh-reopen) - (define-key map (kbd "C-!") 'cssh-reconnect-ssh) - map) - "Keymap for `cssh-mode'.") - -;;;###autoload -(define-derived-mode cssh-mode fundamental-mode "ClusterSSH" - "A major mode for controlling multiple terms at once." - :group 'cssh - (make-local-variable 'cssh-buffer-list)) - -;; -;; Input functions -;; -(defun cssh-send-string (string) - "generic function to send input to the terms" - - (dolist (elt cssh-buffer-list) - ;; FIXME: get rid of artefacts elements in cssh-buffer-list - (when (bufferp elt) - (with-current-buffer elt - (insert string) - (term-send-input))))) - -(defun cssh-send-defun (term-fun) - "generic function to apply term function to the terms" - - (dolist (elt cssh-buffer-list) - ;; FIXME: get rid of artefacts elements in cssh-buffer-list - (when (bufferp elt) - (with-current-buffer elt - (funcall term-fun))))) - -(defun cssh-send-up () - (interactive) - (cssh-send-defun 'term-send-up)) - -(defun cssh-send-down () - (interactive) - (cssh-send-defun 'term-send-down)) - -(defun cssh-send-tab () - (interactive) - (cssh-send-string - (buffer-substring (+ (length cssh-prompt) (line-beginning-position)) - (line-end-position))) - (cssh-send-string "\C-i")) - -(defun cssh-cancel-input () - (interactive) - (cssh-send-string "\C-c") - (insert (concat "\n" cssh-prompt))) - -(defun cssh-send-input () - "send current line content to all cssh-mode buffers" - (interactive) - (cssh-send-string - (buffer-substring (+ (length cssh-prompt) (line-beginning-position)) - (line-end-position))) - (insert (concat "\n" cssh-prompt))) - -(defun cssh-clear () - (interactive) - (cssh-send-string "\C-l")) - -(defun cssh-eof () - (interactive) - (cssh-send-string "\C-d")) - -(defun cssh-reopen () - (interactive) - (cssh-open (buffer-name) cssh-buffer-list)) - -(defun cssh-reconnect-ssh (&optional clear) - (interactive "P") - (when (consp clear) (cssh-clear)) - - (dolist (elt cssh-buffer-list) - ;; FIXME: get rid of artefacts elements in cssh-buffer-list - (when (bufferp elt) - (let* ((elt-name (buffer-name elt)) - (buffer-ssh-command (substring elt-name 1 -1))) - (with-current-buffer elt - (insert (concat "TERM=screen " buffer-ssh-command)) - (term-send-input)))))) - -;;; -;;; Window splitting code -;;; -(defun cssh-split-window (&optional backward? &optional size) - "split current window either vertically or horizontally -depending on split-preference value" - (let* ((go-horizontal - (if backward? (not split-horizontally-first) - split-horizontally-first))) - - (if size - (if go-horizontal - (split-window-horizontally size) - (split-window-vertically size)) - - (if go-horizontal - (split-window-horizontally) - (split-window-vertically))))) - -(defun cssh-get-third-size (backward? left top right bottom) - "Given a window edges and a direction" - (let* ((go-horizontal - (if backward? (not split-horizontally-first) - split-horizontally-first))) - - (/ (+ 1 (if go-horizontal (- right left) (- bottom top))) 3))) - -(defun cssh-nsplit-window (buffer-list &optional backward?) - "split current window into n windows" - (let* ((w (selected-window)) - (n (length buffer-list))) - - (cond ((= n 2) - ;; if at least one of the list elements is a buffer, it's final - ;; recursion and we always prefer to maximize line length - (let* ((w1 (cssh-split-window (if (or (bufferp (car buffer-list)) - (bufferp (cadr buffer-list))) - ;; force to split horizontally first - split-horizontally-first - backward?)))) - - (when (bufferp (car buffer-list)) - (set-window-buffer w (car buffer-list))) - - (when (bufferp (cadr buffer-list)) - (set-window-buffer w1 (cadr buffer-list))) - - (list w w1))) - - ((= n 3) - ;; if at least one of the list elements is a buffer, it's final - ;; recursion and we always prefer to maximize line length - (let* ((edges (window-edges)) - (direction (if (or (bufferp (car buffer-list)) - (bufferp (cadr buffer-list)) - (bufferp (cadr (cdr buffer-list)))) - ;; force to split horizontally first - split-horizontally-first - backward?)) - (size (apply #'cssh-get-third-size - (cons direction edges))) - (w1 (cssh-split-window direction size)) - (w2 (progn (select-window w1) - (cssh-split-window direction size)))) - - (when (bufferp (car buffer-list)) - (set-window-buffer w (car buffer-list))) - - (when (bufferp (cadr buffer-list)) - (set-window-buffer w1 (cadr buffer-list))) - - (when (bufferp (cadr (cdr buffer-list))) - (set-window-buffer w2 (cadr (cdr buffer-list)))) - - (list w w1 w2))) - - ((= n 5) - ;; cut in half then split one half in 2 and the other in 3 - ;; cut in half then split other parts by n/2 - ;; gives cssh-nsplit-window any 2 elements list - (let* ((halves (cssh-nsplit-window '(1 2) backward?))) - - (select-window (nth 1 halves)) - - (let* ((h1l - (cssh-nsplit-window - (butlast buffer-list 3) (not backward?)))) - - (select-window w) - (append h1l - (cssh-nsplit-window - (last buffer-list 3) (not backward?)))))) - - ((= 0 (% n 2)) - ;; cut in half then split other parts by n/2 - ;; gives cssh-nsplit-window any 2 elements list - (let* ((halves (cssh-nsplit-window '(1 2) backward?))) - - (select-window (nth 1 halves)) - - (let* ((h1l - (cssh-nsplit-window - (butlast buffer-list (/ n 2)) (not backward?)))) - - (select-window w) - (append h1l - (cssh-nsplit-window - (last buffer-list (/ n 2)) (not backward?)))))) - - ((= 0 (% n 3)) - ;; cut in three parts then re split - (let* ((thirds (cssh-nsplit-window '(1 2 3) backward?))) - - (select-window (nth 1 thirds)) - - (let* ((t1l (cssh-nsplit-window - ;; take the first third of the list - (butlast (butlast buffer-list (/ n 3)) (/ n 3)) - (not backward?)))) - - (select-window (nth 2 thirds)) - - (let* ((t2l (cssh-nsplit-window - ;; take the second third of the list - (last (butlast buffer-list (/ n 3)) (/ n 3)) - (not backward?)))) - - (select-window w) - (append t1l - t2l - (cssh-nsplit-window - ;; take the last third of the list - (last buffer-list (/ n 3)) (not backward?))))))) - - ;; n is not divisible by either 2 or 3, produce some more windows - ;; than necessary - ((= 0 (% (+ 1 n) 2)) - (cssh-nsplit-window (cons 1 buffer-list))) - - ((= 0 (% (+ 1 n) 3)) - (cssh-nsplit-window (cons 1 buffer-list))) - - (t (message "error: number of windows not a multiple of 2 or 3.")) - ) - ) -) - -(provide 'cssh) From 52e36a71e17f275814f77a521795cbdc23913913 Mon Sep 17 00:00:00 2001 From: Tim Dysinger Date: Sun, 2 Aug 2009 01:29:52 -0500 Subject: [PATCH 06/25] Removed whitespace line in middle of function comment --- starter-kit-lisp.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/starter-kit-lisp.el b/starter-kit-lisp.el index f87f872ec3..ae27fec419 100644 --- a/starter-kit-lisp.el +++ b/starter-kit-lisp.el @@ -58,8 +58,7 @@ (defun clojure-project (path) "Setup classpaths for a clojure project and starts a new SLIME session. - -Kills existing SLIME session, if any." + Kills existing SLIME session, if any." (interactive (list (ido-read-directory-name "Project root: " From 5f0a888aaca4877fc65a97c89ee6c3733b16eedc Mon Sep 17 00:00:00 2001 From: Tim Dysinger Date: Mon, 3 Aug 2009 18:17:36 -0500 Subject: [PATCH 07/25] Refactored out repeated mode hook lines into a lambda that applies to all lisps --- starter-kit-lisp.el | 53 ++++++++++++++------------------------------- 1 file changed, 16 insertions(+), 37 deletions(-) diff --git a/starter-kit-lisp.el b/starter-kit-lisp.el index ae27fec419..0ad96de404 100644 --- a/starter-kit-lisp.el +++ b/starter-kit-lisp.el @@ -8,13 +8,6 @@ (define-key lisp-mode-shared-map (kbd "C-\\") 'lisp-complete-symbol) (define-key lisp-mode-shared-map (kbd "C-c v") 'eval-buffer) -(defun turn-on-paredit () - (paredit-mode +1)) - -;; (eval-after-load 'paredit -;; ;; Not sure why paredit behaves this way with comments; it's annoying -;; '(define-key paredit-mode-map (kbd ";") 'self-insert-command)) - (defface esk-paren-face '((((class color) (background dark)) (:foreground "grey50")) @@ -26,10 +19,7 @@ ;;; Emacs Lisp (add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode) -(add-hook 'emacs-lisp-mode-hook 'run-coding-hook) (add-hook 'emacs-lisp-mode-hook 'esk-remove-elc-on-save) -(add-hook 'emacs-lisp-mode-hook 'idle-highlight) -(add-hook 'emacs-lisp-mode-hook 'turn-on-paredit) (defun esk-remove-elc-on-save () "If you're saving an elisp file, likely the .elc is no longer valid." @@ -39,23 +29,11 @@ (if (file-exists-p (concat buffer-file-name "c")) (delete-file (concat buffer-file-name "c")))))) -(font-lock-add-keywords 'emacs-lisp-mode - '(("(\\|)" . 'esk-paren-face))) - ;;; Clojure -(add-hook 'clojure-mode-hook 'run-coding-hook) -(add-hook 'clojure-mode-hook 'idle-highlight) - -(font-lock-add-keywords 'clojure-mode - '(("(\\|)" . 'esk-paren-face))) - (eval-after-load 'find-file-in-project '(add-to-list 'ffip-patterns "*.clj")) -;; You might like this, but it's a bit disorienting at first: -(add-hook 'clojure-mode-hook 'turn-on-paredit) - (defun clojure-project (path) "Setup classpaths for a clojure project and starts a new SLIME session. Kills existing SLIME session, if any." @@ -85,21 +63,22 @@ (save-window-excursion (slime))) -;;; Scheme - -(add-hook 'scheme-mode-hook 'run-coding-hook) -(add-hook 'scheme-mode-hook 'idle-highlight) -(add-hook 'scheme-mode-hook 'turn-on-paredit) -(font-lock-add-keywords 'scheme-mode - '(("(\\|)" . 'esk-paren-face))) - -;;; Common Lisp - -(add-hook 'lisp-mode-hook 'run-coding-hook) -(add-hook 'lisp-mode-hook 'idle-highlight) -(add-hook 'lisp-mode-hook 'turn-on-paredit) -(font-lock-add-keywords 'lisp-mode - '(("(\\|)" . 'esk-paren-face))) +;;; Enhance Lisp Modes + +(eval-after-load 'paredit + '(define-key paredit-mode-map (kbd ";") 'self-insert-command)) +(require 'paredit) + +(dolist (x '(scheme emacs-lisp lisp inferior-lisp clojure)) + (font-lock-add-keywords + (intern (concat (symbol-name x) "-mode")) + '(("(\\|)" . 'esk-paren-face))) + (add-hook + (intern (concat (symbol-name x) "-mode-hook")) + (lambda () + (paredit-mode +1) + (idle-highlight +1) + (run-coding-hook)))) (provide 'starter-kit-lisp) ;; starter-kit-lisp.el ends here \ No newline at end of file From 92bf56fac1e00ec71569dc8ad82bf89a99fe63d8 Mon Sep 17 00:00:00 2001 From: Phil Hagelberg Date: Tue, 11 Aug 2009 09:26:42 -0700 Subject: [PATCH 08/25] Let paredit be handled by autoload and don't set hooks for inf-lisp. --- starter-kit-lisp.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/starter-kit-lisp.el b/starter-kit-lisp.el index 0ad96de404..4f410c624d 100644 --- a/starter-kit-lisp.el +++ b/starter-kit-lisp.el @@ -67,9 +67,8 @@ (eval-after-load 'paredit '(define-key paredit-mode-map (kbd ";") 'self-insert-command)) -(require 'paredit) -(dolist (x '(scheme emacs-lisp lisp inferior-lisp clojure)) +(dolist (x '(scheme emacs-lisp lisp clojure)) (font-lock-add-keywords (intern (concat (symbol-name x) "-mode")) '(("(\\|)" . 'esk-paren-face))) From e4045940c5c09be9cee46cecace22f5ca6ec2ab7 Mon Sep 17 00:00:00 2001 From: Phil Hagelberg Date: Tue, 11 Aug 2009 09:27:36 -0700 Subject: [PATCH 09/25] Fix sudo-edit and turn off toolbar always. --- starter-kit-bindings.el | 2 -- starter-kit-defuns.el | 3 +-- starter-kit-misc.el | 1 + 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/starter-kit-bindings.el b/starter-kit-bindings.el index 6ca0a37a64..f059c94d2b 100644 --- a/starter-kit-bindings.el +++ b/starter-kit-bindings.el @@ -2,8 +2,6 @@ ;; ;; Part of the Emacs Starter Kit. -;; TODO: switch to kbd invocations everywhere - ;; You know, like Readline. (global-set-key (kbd "C-M-h") 'backward-kill-word) diff --git a/starter-kit-defuns.el b/starter-kit-defuns.el index 9633400d69..1c0095627d 100644 --- a/starter-kit-defuns.el +++ b/starter-kit-defuns.el @@ -162,10 +162,9 @@ Symbols matching the text at point are put first in the completion list." (update-directory-autoloads autoload-dir)))) (load autoload-file)) -;; TODO: fix this (defun sudo-edit (&optional arg) (interactive "p") - (if arg + (if (or arg (not buffer-file-name)) (find-file (concat "/sudo:root@localhost:" (ido-read-file-name "File: "))) (find-alternate-file (concat "/sudo:root@localhost:" buffer-file-name)))) diff --git a/starter-kit-misc.el b/starter-kit-misc.el index 8ca2bf2334..533bbb6230 100644 --- a/starter-kit-misc.el +++ b/starter-kit-misc.el @@ -4,6 +4,7 @@ (when window-system (setq frame-title-format '(buffer-file-name "%f" ("%b"))) + (turn-off-tool-bar) (tooltip-mode -1) (turn-off-tool-bar) (blink-cursor-mode -1)) From 6d71efafabb43c9f9bbb5c13324c6c5c29990fac Mon Sep 17 00:00:00 2001 From: Phil Hagelberg Date: Fri, 4 Sep 2009 09:35:06 -0700 Subject: [PATCH 10/25] Fix ido-find-file-at-point behaviour for /* */ comments. --- starter-kit-misc.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/starter-kit-misc.el b/starter-kit-misc.el index 533bbb6230..259fc638ae 100644 --- a/starter-kit-misc.el +++ b/starter-kit-misc.el @@ -65,7 +65,7 @@ (setq ido-enable-prefix nil ido-enable-flex-matching t ido-create-new-buffer 'always - ido-use-filename-at-point t + ido-use-filename-at-point 'guess ido-max-prospects 10)) (set-default 'indent-tabs-mode nil) From bc907d277113d771fff2d3647c1724a0d2aaa37e Mon Sep 17 00:00:00 2001 From: Phil Hagelberg Date: Sun, 6 Sep 2009 13:21:08 -0700 Subject: [PATCH 11/25] Add org bindings; fix clojure-project root heuristic. --- starter-kit-bindings.el | 5 ++++- starter-kit-defuns.el | 3 +++ starter-kit-lisp.el | 4 +++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/starter-kit-bindings.el b/starter-kit-bindings.el index f059c94d2b..1293ca2e8b 100644 --- a/starter-kit-bindings.el +++ b/starter-kit-bindings.el @@ -34,7 +34,6 @@ (global-set-key (kbd "C-x M-f") 'ido-find-file-other-window) (global-set-key (kbd "C-x C-M-f") 'find-file-in-project) (global-set-key (kbd "C-x f") 'recentf-ido-find-file) -(global-set-key (kbd "C-x C-p") 'find-file-at-point) (global-set-key (kbd "C-c y") 'bury-buffer) (global-set-key (kbd "C-c r") 'revert-buffer) (global-set-key (kbd "M-`") 'file-cache-minibuffer-complete) @@ -94,5 +93,9 @@ (let ((case-fold-search isearch-case-fold-search)) (occur (if isearch-regexp isearch-string (regexp-quote isearch-string)))))) +;; Org +(define-key global-map "\C-cl" 'org-store-link) +(define-key global-map "\C-ca" 'org-agenda) + (provide 'starter-kit-bindings) ;;; starter-kit-bindings.el ends here \ No newline at end of file diff --git a/starter-kit-defuns.el b/starter-kit-defuns.el index 1c0095627d..fa4b5e63c8 100644 --- a/starter-kit-defuns.el +++ b/starter-kit-defuns.el @@ -86,6 +86,9 @@ Symbols matching the text at point are put first in the completion list." (defun turn-on-whitespace () (whitespace-mode t)) +(defun turn-on-paredit () + (paredit-mode t)) + (defun turn-off-tool-bar () (tool-bar-mode -1)) diff --git a/starter-kit-lisp.el b/starter-kit-lisp.el index 4f410c624d..f419a75184 100644 --- a/starter-kit-lisp.el +++ b/starter-kit-lisp.el @@ -29,6 +29,8 @@ (if (file-exists-p (concat buffer-file-name "c")) (delete-file (concat buffer-file-name "c")))))) +(define-key emacs-lisp-mode-map (kbd "M-.") 'find-function-at-point) + ;;; Clojure (eval-after-load 'find-file-in-project @@ -40,7 +42,7 @@ (interactive (list (ido-read-directory-name "Project root: " - (locate-dominating-file default-directory "pom.xml")))) + (locate-dominating-file default-directory "src")))) (when (get-buffer "*inferior-lisp*") (kill-buffer "*inferior-lisp*")) (defvar swank-clojure-extra-vm-args nil) From b31b53da3be0c09f2e31cd514c8960ce27c1e491 Mon Sep 17 00:00:00 2001 From: Phil Hagelberg Date: Sun, 6 Sep 2009 13:25:23 -0700 Subject: [PATCH 12/25] Updated to latest htmlize.el: 1.36 Thanks to Bryan Larsen, whose patch I regrettably have been sitting on since February. Mea culpa. --- elpa-to-submit/htmlize.el | 346 +++++++++++++++++++++++++++----------- 1 file changed, 250 insertions(+), 96 deletions(-) diff --git a/elpa-to-submit/htmlize.el b/elpa-to-submit/htmlize.el index 9f22bb238c..89a57b4bee 100644 --- a/elpa-to-submit/htmlize.el +++ b/elpa-to-submit/htmlize.el @@ -1,6 +1,6 @@ ;; htmlize.el -- Convert buffer text and decorations to HTML. -;; Copyright (C) 1997,1998,1999,2000,2001,2002,2003,2005 Hrvoje Niksic +;; Copyright (C) 1997,1998,1999,2000,2001,2002,2003,2005,2006,2009 Hrvoje Niksic ;; Author: Hrvoje Niksic ;; Keywords: hypermedia, extensions @@ -36,14 +36,17 @@ ;; the same manner. `M-x htmlize-many-files-dired' does the same for ;; files marked in a dired buffer. -;; htmlize supports two types of HTML output, selected by setting -;; `htmlize-output-type': `css' and `font'. In `css' mode, htmlize -;; uses cascading style sheets to specify colors; it generates classes -;; that correspond to Emacs faces and uses ... -;; to color parts of text. In this mode, the produced HTML is valid -;; under the 4.01 strict DTD, as confirmed by the W3C validator. In -;; `font' mode, htmlize uses ... to colorize -;; HTML, which is not standard-compliant, but works better in older +;; htmlize supports three types of HTML output, selected by setting +;; `htmlize-output-type': `css', `inline-css', and `font'. In `css' +;; mode, htmlize uses cascading style sheets to specify colors; it +;; generates classes that correspond to Emacs faces and uses ... to color parts of text. In this mode, the +;; produced HTML is valid under the 4.01 strict DTD, as confirmed by +;; the W3C validator. `inline-css' is like `css', except the CSS is +;; put directly in the STYLE attribute of the SPAN element, making it +;; possible to paste the generated HTML to other documents. In `font' +;; mode, htmlize uses ... to colorize HTML, +;; which is not standard-compliant, but works better in older ;; browsers. `css' mode is the default. ;; You can also use htmlize from your Emacs Lisp code. When called @@ -57,7 +60,7 @@ ;; fix it. I relied heavily on the presence of CL extensions, ;; especially for cross-emacs compatibility; please don't try to ;; remove that particular dependency. When byte-compiling under GNU -;; Emacs, you're likely to get lots of warnings; just ignore them. +;; Emacs, you're likely to get some warnings; just ignore them. ;; The latest version should be available at: ;; @@ -71,11 +74,12 @@ ;; Thanks go to the multitudes of people who have sent reports and ;; contributed comments, suggestions, and fixes. They include Ron ;; Gut, Bob Weiner, Toni Drabik, Peter Breton, Thomas Vogels, Juri -;; Linkov, and many others. +;; Linkov, Maciek Pasternacki, and many others. ;; User quotes: "You sir, are a sick, sick, _sick_ person. :)" ;; -- Bill Perry, author of Emacs/W3 + ;;; Code: (require 'cl) @@ -92,7 +96,7 @@ ;; `cl' is loaded. (load "cl-extra"))) -(defconst htmlize-version "1.30") +(defconst htmlize-version "1.36") ;; Incantations to make custom stuff work without customize, e.g. on ;; XEmacs 19.14 or GNU Emacs 19.34. @@ -121,18 +125,24 @@ :group 'htmlize) (defcustom htmlize-output-type 'css - "*Output type of generated HTML. Legal values are `css' and `font'. + "*Output type of generated HTML, one of `css', `inline-css', or `font'. When set to `css' (the default), htmlize will generate a style sheet with description of faces, and use it in the HTML document, specifying the faces in the actual text with . +When set to `inline-css', the style will be generated as above, but +placed directly in the STYLE attribute of the span ELEMENT: . This makes it easier to paste the resulting HTML to +other documents. + When set to `font', the properties will be set using layout tags , , , , and . `css' output is normally preferred, but `font' is still useful for -supporting old, pre-CSS browsers, or for easy embedding of colorized -text in foreign HTML documents (no style sheet to carry around)." - :type '(choice (const css) (const font)) +supporting old, pre-CSS browsers, and both `inline-css' and `font' for +easier embedding of colorized text in foreign HTML documents (no style +sheet to carry around)." + :type '(choice (const css) (const inline-css) (const font)) :group 'htmlize) (defcustom htmlize-generate-hyperlinks t @@ -160,11 +170,14 @@ do your own hyperlinkification from htmlize-after-hook.)" (defcustom htmlize-replace-form-feeds t "*Non-nil means replace form feeds in source code with HTML separators. -Form feeds are the ^L characters sometimes used to separate sections of -source code. If this variable is set to `t', form feed characters are -retained in HTML, but followed by the
separator. If this is a -string, it specifies the replacement string, the default being -\"\\^L\\n
\". +Form feeds are the ^L characters at line beginnings that are sometimes +used to separate sections of source code. If this variable is set to +`t', form feed characters are replaced with the
separator. If this +is a string, it specifies the replacement to use. Note that
 is
+temporarily closed before the separator is inserted, so the default
+replacement is effectively \"

\".  If you specify
+another replacement, don't forget to close and reopen the 
 if you
+want the output to remain valid HTML.
 
 If you need more elaborate processing, set this to nil and use
 htmlize-after-hook."
@@ -231,6 +244,16 @@ default setting; don't change it unless you know what you're doing."
   :type 'sexp
   :group 'htmlize)
 
+(defcustom htmlize-ignore-face-size 'absolute
+  "*Whether face size should be ignored when generating HTML.
+If this is nil, face sizes are used.  If set to t, sizes are ignored
+If set to `absolute', only absolute size specifications are ignored.
+Please note that font sizes only work with CSS-based output types."
+  :type '(choice (const :tag "Don't ignore" nil)
+		 (const :tag "Ignore all" t)
+		 (const :tag "Ignore absolute" absolute))
+  :group 'htmlize)
+
 (defcustom htmlize-css-name-prefix ""
   "*The prefix used for CSS names.
 The CSS names that htmlize generates from face names are often too
@@ -279,6 +302,8 @@ output.")
 
 (defvar htmlize-file-hook nil
   "Hook run by `htmlize-file' after htmlizing a file, but before saving it.")
+
+(defvar htmlize-buffer-places)
 
 ;;; Some cross-Emacs compatibility.
 
@@ -801,6 +826,7 @@ If no rgb.txt file is found, return nil."
 (defstruct htmlize-fstruct
   foreground				; foreground color, #rrggbb
   background				; background color, #rrggbb
+  size					; size
   boldp					; whether face is bold
   italicp				; whether face is italic
   underlinep				; whether face is underlined
@@ -816,6 +842,8 @@ If no rgb.txt file is found, return nil."
      (setf (htmlize-fstruct-foreground fstruct) (htmlize-color-to-rgb value)))
     (:background
      (setf (htmlize-fstruct-background fstruct) (htmlize-color-to-rgb value)))
+    (:height
+     (setf (htmlize-fstruct-size fstruct) value))
     (:weight
      (when (string-match (symbol-name value) "bold")
        (setf (htmlize-fstruct-boldp fstruct) t)))
@@ -833,6 +861,17 @@ If no rgb.txt file is found, return nil."
     (:strike-through
      (setf (htmlize-fstruct-strikep fstruct) value))))
 
+(defun htmlize-face-size (face)
+  ;; The size (height) of FACE, taking inheritance into account.
+  ;; Only works in Emacs 21 and later.
+  (let ((size-list
+	 (loop
+	  for f = face then (face-attribute f :inherit)
+	  until (or (not f) (eq f 'unspecified))
+	  for h = (face-attribute f :height)
+	  collect (if (eq h 'unspecified) nil h))))
+    (reduce 'htmlize-merge-size (cons nil size-list))))
+
 (defun htmlize-face-to-fstruct (face)
   "Convert Emacs face FACE to fstruct."
   (let ((fstruct (make-htmlize-fstruct
@@ -862,9 +901,19 @@ If no rgb.txt file is found, return nil."
 	     (let ((value (if (>= emacs-major-version 22)
 			      ;; Use the INHERIT arg in GNU Emacs 22.
 			      (face-attribute face attr nil t)
-			    (face-attribute face attr))))
+			    ;; Otherwise, fake it.
+			    (let ((face face))
+			      (while (and (eq (face-attribute face attr)
+					      'unspecified)
+					  (not (eq (face-attribute face :inherit)
+						   'unspecified)))
+				(setq face (face-attribute face :inherit)))
+			      (face-attribute face attr)))))
 	       (when (and value (not (eq value 'unspecified)))
-		 (htmlize-face-emacs21-attr fstruct attr value)))))
+		 (htmlize-face-emacs21-attr fstruct attr value))))
+	   (let ((size (htmlize-face-size face)))
+	     (unless (eql size 1.0) 	; ignore non-spec
+	       (setf (htmlize-fstruct-size fstruct) size))))
 	  (t
 	   ;; Older GNU Emacs.  Some of these functions are only
 	   ;; available under Emacs 20+, hence the guards.
@@ -901,6 +950,46 @@ If no rgb.txt file is found, return nil."
 	    name))
     fstruct))
 
+(defmacro htmlize-copy-attr-if-set (attr-list dest source)
+  ;; Expand the code of the type
+  ;; (and (htmlize-fstruct-ATTR source)
+  ;;      (setf (htmlize-fstruct-ATTR dest) (htmlize-fstruct-ATTR source)))
+  ;; for the given list of boolean attributes.
+  (cons 'progn
+	(loop for attr in attr-list
+	      for attr-sym = (intern (format "htmlize-fstruct-%s" attr))
+	      collect `(and (,attr-sym ,source)
+			    (setf (,attr-sym ,dest) (,attr-sym ,source))))))
+
+(defun htmlize-merge-size (merged next)
+  ;; Calculate the size of the merge of MERGED and NEXT.
+  (cond ((null merged)     next)
+	((integerp next)   next)
+	((null next)       merged)
+	((floatp merged)   (* merged next))
+	((integerp merged) (round (* merged next)))))
+
+(defun htmlize-merge-two-faces (merged next)
+  (htmlize-copy-attr-if-set
+   (foreground background boldp italicp underlinep overlinep strikep)
+   merged next)
+  (setf (htmlize-fstruct-size merged)
+	(htmlize-merge-size (htmlize-fstruct-size merged)
+			    (htmlize-fstruct-size next)))
+  merged)
+
+(defun htmlize-merge-faces (fstruct-list)
+  (cond ((null fstruct-list)
+	 ;; Nothing to do, return a dummy face.
+	 (make-htmlize-fstruct))
+	((null (cdr fstruct-list))
+	 ;; Optimize for the common case of a single face, simply
+	 ;; return it.
+	 (car fstruct-list))
+	(t
+	 (reduce #'htmlize-merge-two-faces
+		 (cons (make-htmlize-fstruct) fstruct-list)))))
+
 ;; GNU Emacs 20+ supports attribute lists in `face' properties.  For
 ;; example, you can use `(:foreground "red" :weight bold)' as an
 ;; overlay's "face", or you can even use a list of such lists, etc.
@@ -1139,13 +1228,63 @@ property and by buffer overlays that specify `face'."
   ;; Return METHOD's function definition for the current output type.
   ;; The returned object can be safely funcalled.
   (let ((sym (intern (format "htmlize-%s-%s" htmlize-output-type method))))
-    (indirect-function (if (fboundp sym) sym 'ignore))))
+    (indirect-function (if (fboundp sym)
+			   sym
+			 (let ((default (intern (concat "htmlize-default-"
+							(symbol-name method)))))
+			   (if (fboundp default)
+			       default
+			     'ignore))))))
+
+(defvar htmlize-memoization-table (make-hash-table :test 'equal))
+
+(defmacro htmlize-memoize (key generator)
+  "Return the value of GENERATOR, memoized as KEY.
+That means that GENERATOR will be evaluated and returned the first time
+it's called with the same value of KEY.  All other times, the cached
+\(memoized) value will be returned."
+  (let ((value (gensym)))
+    `(let ((,value (gethash ,key htmlize-memoization-table)))
+       (unless ,value
+	 (setq ,value ,generator)
+	 (setf (gethash ,key htmlize-memoization-table) ,value))
+       ,value)))
 
-;;; CSS based output support.
+;;; Default methods.
+
+(defun htmlize-default-doctype ()
+  nil					; no doc-string
+  ;; According to DTDs published by the W3C, it is illegal to embed
+  ;;  in 
.  This makes sense in general, but is bad for
+  ;; htmlize's intended usage of  to specify the document color.
+
+  ;; To make generated HTML legal, htmlize's `font' mode used to
+  ;; specify the SGML declaration of "HTML Pro" DTD here.  HTML Pro
+  ;; aka Silmaril DTD was a project whose goal was to produce a GPL'ed
+  ;; DTD that would encompass all the incompatible HTML extensions
+  ;; procured by Netscape, MSIE, and other players in the field.
+  ;; Apparently the project got abandoned, the last available version
+  ;; being "Draft 0 Revision 11" from January 1997, as documented at
+  ;; .
+
+  ;; Since by now HTML Pro is remembered by none but the most die-hard
+  ;; early-web-days nostalgics and used by not even them, there is no
+  ;; use in specifying it.  So we return the standard HTML 4.0
+  ;; declaration, which makes generated HTML technically illegal.  If
+  ;; you have a problem with that, use the `css' engine designed to
+  ;; create fully conforming HTML.
+
+  ""
+
+  ;; Now-abandoned HTML Pro declaration.
+  ;""
+  )
 
-(defun htmlize-css-doctype ()
+(defun htmlize-default-body-tag (face-map)
   nil					; no doc-string
-  "")
+  "")
+
+;;; CSS based output support.
 
 ;; Internal function; not a method.
 (defun htmlize-css-specs (fstruct)
@@ -1157,6 +1296,12 @@ property and by buffer overlays that specify `face'."
       (push (format "background-color: %s;"
 		    (htmlize-fstruct-background fstruct))
 	    result))
+    (let ((size (htmlize-fstruct-size fstruct)))
+      (when (and size (not (eq htmlize-ignore-face-size t)))
+	(cond ((floatp size)
+	       (push (format "font-size: %d%%;" (* 100 size)) result))
+	      ((not (eq htmlize-ignore-face-size 'absolute))
+	       (push (format "font-size: %spt;" (/ size 10.0)) result)))))
     (when (htmlize-fstruct-boldp fstruct)
       (push "font-weight: bold;" result))
     (when (htmlize-fstruct-italicp fstruct)
@@ -1215,77 +1360,59 @@ property and by buffer overlays that specify `face'."
     (ignore fstruct)			; shut up the byte-compiler
     (princ "" buffer)))
 
+;; `inline-css' output support.
+
+(defun htmlize-inline-css-body-tag (face-map)
+  (format ""
+	  (mapconcat #'identity (htmlize-css-specs (gethash 'default face-map))
+		     " ")))
+
+(defun htmlize-inline-css-insert-text (text fstruct-list buffer)
+  (let* ((merged (htmlize-merge-faces fstruct-list))
+	 (style (htmlize-memoize
+		 merged
+		 (let ((specs (htmlize-css-specs merged)))
+		   (and specs
+			(mapconcat #'identity (htmlize-css-specs merged) " "))))))
+    (when style
+      (princ "" buffer))
+    (princ text buffer)
+    (when style
+      (princ "" buffer))))
+
 ;;; `font' tag based output support.
 
-(defun htmlize-font-doctype ()
-  nil					; no doc-string
-
-  ;; According to DTDs published by the W3C, it is illegal to embed
-  ;;  in 
.  This makes sense in general, but is bad for
-  ;; htmlize's intended usage of  to specify the document color.
-
-  ;; To make generated HTML legal, htmlize.el used to specify the SGML
-  ;; declaration of "HTML Pro" DTD here.  HTML Pro aka Silmaril DTD
-  ;; was a project whose goal was to produce a GPL'ed DTD that would
-  ;; encompass all the incompatible HTML extensions procured by
-  ;; Netscape, MSIE, and other players in the field.  Apparently the
-  ;; project got abandoned, the last available version being "Draft 0
-  ;; Revision 11" from January 1997, as documented at
-  ;; .
-
-  ;; Since by now (2005) HTML Pro is remembered by none but the most
-  ;; die-hard early-web-days nostalgics and used by not even them,
-  ;; there is no use in specifying it.  So we return the standard HTML
-  ;; 4.0 declaration, which makes generated HTML technically illegal.
-  ;; If you have a problem with that, use the `css' generation engine
-  ;; which I believe creates fully conforming HTML.
-
-  ""
-
-  ;; Now-abandoned HTML Pro declaration.
-  ;""
-  )
-
 (defun htmlize-font-body-tag (face-map)
   (let ((fstruct (gethash 'default face-map)))
     (format ""
 	    (htmlize-fstruct-foreground fstruct)
 	    (htmlize-fstruct-background fstruct))))
-
+       
 (defun htmlize-font-insert-text (text fstruct-list buffer)
   ;; In `font' mode, we use the traditional HTML means of altering
   ;; presentation:  tag for colors,  for bold,  for
   ;; underline, and  for strike-through.
-  (let (bold italic underline strike fg)
-    ;; Merge the face attributes.
-    (dolist (fstruct fstruct-list)
-      ;; A non-null boolean attribute in any face sets the attribute.
-      (and (htmlize-fstruct-boldp fstruct)      (setq bold t))
-      (and (htmlize-fstruct-italicp fstruct)    (setq italic t))
-      (and (htmlize-fstruct-underlinep fstruct) (setq underline t))
-      (and (htmlize-fstruct-strikep fstruct)    (setq strike t))
-      ;; The foreground/background of the last face in the list wins.
-      (and (htmlize-fstruct-foreground fstruct)
-	   (setq fg (htmlize-fstruct-foreground fstruct))))
-
-    ;; Generate the markup that reflects the merged attributes.
-    (princ (concat
-	    (and fg        (format "" fg))
-	    (and bold      "")
-	    (and italic    "")
-	    (and underline "")
-	    (and strike    ""))
-	   buffer)
-    ;; Print the text.
+  (let* ((merged (htmlize-merge-faces fstruct-list))
+	 (markup (htmlize-memoize
+		  merged
+		  (cons (concat
+			 (and (htmlize-fstruct-foreground merged)
+			      (format "" (htmlize-fstruct-foreground merged)))
+			 (and (htmlize-fstruct-boldp merged)      "")
+			 (and (htmlize-fstruct-italicp merged)    "")
+			 (and (htmlize-fstruct-underlinep merged) "")
+			 (and (htmlize-fstruct-strikep merged)    ""))
+			(concat
+			 (and (htmlize-fstruct-strikep merged)    "")
+			 (and (htmlize-fstruct-underlinep merged) "")
+			 (and (htmlize-fstruct-italicp merged)    "")
+			 (and (htmlize-fstruct-boldp merged)      "")
+			 (and (htmlize-fstruct-foreground merged) ""))))))
+    (princ (car markup) buffer)
     (princ text buffer)
-    ;; Close the tags we've opened.
-    (princ (concat
-	    (and strike    "")
-	    (and underline "")
-	    (and italic    "")
-	    (and bold      "")
-	    (and fg        ""))
-	   buffer)))
+    (princ (cdr markup) buffer)))
 
 (defun htmlize-buffer-1 ()
   ;; Internal function; don't call it from outside this file.  Htmlize
@@ -1300,6 +1427,7 @@ property and by buffer overlays that specify `face'."
     ;; in advance.
     (htmlize-ensure-fontified)
     (clrhash htmlize-extended-character-cache)
+    (clrhash htmlize-memoization-table)
     (let* ((buffer-faces (htmlize-faces-in-buffer))
 	   (face-map (htmlize-make-face-map (adjoin 'default buffer-faces)))
 	   ;; Generate the new buffer.  It's important that it inherits
@@ -1309,6 +1437,9 @@ property and by buffer overlays that specify `face'."
 					      (file-name-nondirectory
 					       (buffer-file-name)))
 					   "*html*")))
+	   ;; Having a dummy value in the plist allows writing simply
+	   ;; (plist-put places foo bar).
+	   (places '(nil nil))
 	   (title (if (buffer-file-name)
 		      (file-name-nondirectory (buffer-file-name))
 		    (buffer-name))))
@@ -1318,7 +1449,9 @@ property and by buffer overlays that specify `face'."
 	(insert (htmlize-method doctype) ?\n
 		(format "\n"
 			htmlize-version htmlize-output-type)
-		"\n  \n"
+		"\n  ")
+	(plist-put places 'head-start (point-marker))
+	(insert "\n"
 		"    " (htmlize-protect-string title) "\n"
 		(if htmlize-html-charset
 		    (format (concat "    "
-		"\n  "
-		(or (htmlize-method body-tag face-map)
-		    "")
-		"\n    
\n"))
+	(insert "  ")
+	(plist-put places 'head-end (point-marker))
+	(insert "\n  ")
+	(plist-put places 'body-start (point-marker))
+	(insert (htmlize-method body-tag face-map)
+		"\n    ")
+	(plist-put places 'content-start (point-marker))
+	(insert "
\n"))
       (let ((insert-text-method
 	     ;; Get the inserter method, so we can funcall it inside
 	     ;; the loop.  Not calling `htmlize-method' in the loop
@@ -1379,20 +1515,24 @@ property and by buffer overlays that specify `face'."
 
       ;; Insert the epilog and post-process the buffer.
       (with-current-buffer htmlbuf
-	(insert "
\n \n\n") + (insert "
") + (plist-put places 'content-end (point-marker)) + (insert "\n ") + (plist-put places 'body-end (point-marker)) + (insert "\n\n") (when htmlize-generate-hyperlinks (htmlize-make-hyperlinks)) (htmlize-defang-local-variables) (when htmlize-replace-form-feeds - ;; Change each "^L\n" to "^L\n
". + ;; Change each "\n^L" to "
". (goto-char (point-min)) (let ((source ;; ^L has already been escaped, so search for that. - (htmlize-protect-string "\^L\n")) + (htmlize-protect-string "\n\^L")) (replacement (if (stringp htmlize-replace-form-feeds) htmlize-replace-form-feeds - "\^L\n
"))) + "

")))
 	    (while (search-forward source nil t)
 	      (replace-match replacement t t))))
 	(goto-char (point-min))
@@ -1400,6 +1540,7 @@ property and by buffer overlays that specify `face'."
 	  ;; What sucks about this is that the minor modes, most notably
 	  ;; font-lock-mode, won't be initialized.  Oh well.
 	  (funcall htmlize-html-major-mode))
+	(set (make-local-variable 'htmlize-buffer-places) places)
 	(run-hooks 'htmlize-after-hook)
 	(buffer-enable-undo))
       htmlbuf)))
@@ -1484,6 +1625,19 @@ See `htmlize-buffer' for details."
       (switch-to-buffer htmlbuf))
     htmlbuf))
 
+(defun htmlize-region-for-paste (beg end)
+  "Htmlize the region and return just the HTML as a string.
+This forces the `inline-css' style and only returns the HTML body,
+but without the BODY tag.  This should make it useful for inserting
+the text to another HTML buffer."
+  (let* ((htmlize-output-type 'inline-css)
+	 (htmlbuf (htmlize-region beg end)))
+    (unwind-protect
+	(with-current-buffer htmlbuf
+	  (buffer-substring (plist-get htmlize-buffer-places 'content-start)
+			    (plist-get htmlize-buffer-places 'content-end)))
+      (kill-buffer htmlbuf))))
+
 (defun htmlize-make-file-name (file)
   "Make an HTML file name from FILE.
 

From 3e66ebea59d14cf1434f043cee77b41df16c9fa9 Mon Sep 17 00:00:00 2001
From: Daniel Nelson 
Date: Mon, 31 Aug 2009 00:59:02 -0500
Subject: [PATCH 13/25] Remove mouse interactive elements at very beginning of
 initialization to prevent momentary display of the the toolbar

---
 .gitignore          | 3 ++-
 init.el             | 6 ++++++
 starter-kit-misc.el | 5 -----
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/.gitignore b/.gitignore
index df9101c40d..2d08f72d57 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,4 +17,5 @@ oddmuse/*
 image-dired/
 elim/
 elpa-to-submit/nxhtml/etc/schema/xhtml-loader.rnc~
-tramp
\ No newline at end of file
+tramp
+\#*
diff --git a/init.el b/init.el
index fd399b8910..0e80b7df3c 100644
--- a/init.el
+++ b/init.el
@@ -9,6 +9,12 @@
 ;; and brighter; it simply makes everything else vanish."
 ;; -Neal Stephenson, "In the Beginning was the Command Line"
 
+;; Turn off mouse interface early in startup to avoid momentary display
+;; You really don't need these; trust me.
+(if (fboundp 'menu-bar-mode) (menu-bar-mode -1))
+(if (fboundp 'tool-bar-mode) (tool-bar-mode -1))
+(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
+
 ;; Load path etc.
 
 (setq dotfiles-dir (file-name-directory
diff --git a/starter-kit-misc.el b/starter-kit-misc.el
index 259fc638ae..117dd71d45 100644
--- a/starter-kit-misc.el
+++ b/starter-kit-misc.el
@@ -4,9 +4,7 @@
 
 (when window-system
   (setq frame-title-format '(buffer-file-name "%f" ("%b")))
-  (turn-off-tool-bar)
   (tooltip-mode -1)
-  (turn-off-tool-bar)
   (blink-cursor-mode -1))
 
 (add-hook 'before-make-frame-hook 'turn-off-tool-bar)
@@ -50,9 +48,6 @@
 ;; Enable syntax highlighting for older Emacsen that have it off
 (global-font-lock-mode t)
 
-;; You really don't need this; trust me.
-(menu-bar-mode -1)
-
 ;; Save a list of recent files visited.
 (recentf-mode 1)
 

From 92fe7e3ad8ef934cc9606cce6ad5300346983e00 Mon Sep 17 00:00:00 2001
From: Phil Hagelberg 
Date: Sun, 6 Sep 2009 13:50:15 -0700
Subject: [PATCH 14/25] Add toggle-fullscreen function. (for X only)

Thanks to Daniel Nelson (Bluejade)
---
 starter-kit-defuns.el | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/starter-kit-defuns.el b/starter-kit-defuns.el
index fa4b5e63c8..b8b72228d9 100644
--- a/starter-kit-defuns.el
+++ b/starter-kit-defuns.el
@@ -207,6 +207,15 @@ Symbols matching the text at point are put first in the completion list."
          (equal (char-syntax (char-before)) ?\")))
   (paredit-mode 1))
 
+(defun toggle-fullscreen ()
+  (interactive)
+  ;; TODO: this only works for X. patches welcome for other OSes.
+  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
+                         '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
+  (x-send-client-message nil 0 nil "_NET_WM_STATE" 32
+                         '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0)))
+
+
 ;; A monkeypatch to cause annotate to ignore whitespace
 (defun vc-git-annotate-command (file buf &optional rev)
   (let ((name (file-relative-name file)))

From 317de8060650dd5d4195827a8295cb84210b0508 Mon Sep 17 00:00:00 2001
From: Phil Hagelberg 
Date: Sun, 6 Sep 2009 14:00:55 -0700
Subject: [PATCH 15/25] Update nxhtml to latest version.

You may need to remove bytecode if you've got stale files around:
$ find elpa-to-submit/nxhtml/ -name *elc | xargs rm
---
 .../{related => alts}/javascript-mozlab.el    |     0
 .../{related => alts}/js2-font-lock-new.el    |     0
 .../nxhtml/{related => alts}/js2-font-lock.el |     0
 .../nxhtml/{related => alts}/js2-mumamo.el    |     0
 .../nxhtml/{related => alts}/js2-new.el       |     0
 elpa-to-submit/nxhtml/alts/php-mode-1.5.0.el  |   319 +
 .../nxhtml/alts/php-mode-2008-10-23.el        |  1118 ++
 .../{related => alts}/smarty-mode-vdebout.el  |     0
 .../nxhtml/{related => alts}/snippet.el       |     0
 elpa-to-submit/nxhtml/autostart.el            |   164 +-
 .../nxhtml-anything-1.el => autostart22.el}   |    49 +-
 elpa-to-submit/nxhtml/emacs22.cmd             |     1 +
 elpa-to-submit/nxhtml/etc/img/pause/pause.jpg |   Bin 0 -> 25849 bytes
 .../nxhtml/etc/img/pause/pause2.jpg           |   Bin 0 -> 26756 bytes
 .../nxhtml/etc/schema/rncpp-patch-files.done  |     1 -
 .../nxhtml/etc/schema/schema-path-patch.el    |    49 +-
 elpa-to-submit/nxhtml/nxhtml-loaddefs.el      |  2150 ++-
 elpa-to-submit/nxhtml/nxhtml-maintenance.el   |   186 -
 .../nxhtml/nxhtml/doc/cedet-build.el          |    55 +
 .../nxhtml/nxhtml/doc/img/Las_Medulas.jpg     |   Bin 0 -> 40927 bytes
 .../nxhtml/nxhtml/doc/img/Thumbs.db           |   Bin 63488 -> 118784 bytes
 .../nxhtml/nxhtml/doc/img/Toco_toucan.jpg     |   Bin 0 -> 17430 bytes
 .../nxhtml/nxhtml/doc/img/bacchante2.jpg      |   Bin 0 -> 67205 bytes
 .../nxhtml/nxhtml/doc/img/butterflies.jpg     |   Bin 0 -> 14954 bytes
 .../nxhtml/nxhtml/doc/img/butterflies.png     |   Bin 0 -> 65893 bytes
 .../nxhtml/nxhtml/doc/img/butterflies.xcf     |   Bin 0 -> 87456 bytes
 .../nxhtml/nxhtml/doc/img/continue-play.jpg   |   Bin 0 -> 44390 bytes
 .../nxhtml/nxhtml/doc/img/divine2.jpg         |   Bin 0 -> 69985 bytes
 .../nxhtml/nxhtml/doc/img/fun-brain-2.png     |   Bin 0 -> 40042 bytes
 .../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/raindrops2.jpg      |   Bin 0 -> 36480 bytes
 .../doc/img/rembrandt-self-portrait.jpg       |   Bin 0 -> 52583 bytes
 .../nxhtml/nxhtml/doc/img/volga.jpg           |   Bin 0 -> 34027 bytes
 .../nxhtml/nxhtml/doc/nxhtml-changes.html     |   764 +-
 elpa-to-submit/nxhtml/nxhtml/doc/nxhtml.html  |    50 +-
 elpa-to-submit/nxhtml/nxhtml/doc/test.html    |   204 +
 .../nxhtml/doc/wd/grapes/nxhtml-grapes.css    |     4 +
 elpa-to-submit/nxhtml/nxhtml/html-chklnk.el   |    15 +-
 elpa-to-submit/nxhtml/nxhtml/html-imenu.el    |     2 +
 elpa-to-submit/nxhtml/nxhtml/html-move.el     |     2 +-
 elpa-to-submit/nxhtml/nxhtml/html-pagetoc.el  |     3 +
 elpa-to-submit/nxhtml/nxhtml/html-site.el     |    13 +-
 elpa-to-submit/nxhtml/nxhtml/html-toc.el      |     5 +-
 elpa-to-submit/nxhtml/nxhtml/html-upl.el      |    11 +-
 elpa-to-submit/nxhtml/nxhtml/html-wtoc.el     |     2 +-
 elpa-to-submit/nxhtml/nxhtml/inlimg.el        |   335 -
 .../nxhtml/nxhtml/nxhtml-autoload.el          |   204 +-
 elpa-to-submit/nxhtml/nxhtml/nxhtml-bug.el    |     2 +
 elpa-to-submit/nxhtml/nxhtml/nxhtml-menu.el   |  2511 ++--
 elpa-to-submit/nxhtml/nxhtml/nxhtml-mode.el   |  2779 ++++
 elpa-to-submit/nxhtml/nxhtml/nxhtml-mumamo.el |    15 +-
 elpa-to-submit/nxhtml/nxhtml/nxhtml.el        |  2925 +---
 .../nxhtml/{nxhtml-js.el => nxhtmljs.el}      |    45 +-
 elpa-to-submit/nxhtml/nxhtml/nxml-where.el    |   833 +-
 elpa-to-submit/nxhtml/nxhtml/old/.nosearch    |     0
 .../nxhtml/nxhtml/old/html-inlined.el         |   356 -
 elpa-to-submit/nxhtml/nxhtml/old/nxhpcmpl.el  |   477 -
 .../nxhtml/nxhtml/old/nxhtml-part.css         |    21 -
 .../nxhtml/nxhtml/old/nxhtml-part.el          |   616 -
 elpa-to-submit/nxhtml/nxhtml/old/xhtmlin.el   |   256 -
 elpa-to-submit/nxhtml/nxhtml/old/xmlpe.css    |    21 -
 elpa-to-submit/nxhtml/nxhtml/old/xmlpe.el     |   693 -
 elpa-to-submit/nxhtml/nxhtml/rngalt.el        |    76 +-
 elpa-to-submit/nxhtml/nxhtml/test-c-m.el      |    37 -
 elpa-to-submit/nxhtml/nxhtml/test-cust.el     |    75 -
 elpa-to-submit/nxhtml/nxhtml/tests.el         |     7 -
 elpa-to-submit/nxhtml/nxhtml/tidy-xhtml.el    |    33 +-
 elpa-to-submit/nxhtml/nxhtml/xhtml-help.el    |   132 +-
 elpa-to-submit/nxhtml/nxhtmlmaint.el          |   344 +
 .../nxhtml/nxml-mode-20041004/COPYING         |   340 -
 .../nxhtml/nxml-mode-20041004/Makefile        |    82 -
 elpa-to-submit/nxhtml/nxml-mode-20041004/NEWS |   199 -
 .../nxhtml/nxml-mode-20041004/README          |   106 -
 elpa-to-submit/nxhtml/nxml-mode-20041004/TODO |   468 -
 .../nxhtml/nxml-mode-20041004/VERSION         |     1 -
 .../char-name/unicode/00000-0007F.el          |    97 -
 .../char-name/unicode/00080-000FF.el          |    98 -
 .../char-name/unicode/00100-0017F.el          |   130 -
 .../char-name/unicode/00180-0024F.el          |   181 -
 .../char-name/unicode/00250-002AF.el          |    96 -
 .../char-name/unicode/002B0-002FF.el          |    65 -
 .../char-name/unicode/00300-0036F.el          |    98 -
 .../char-name/unicode/00370-003FF.el          |   117 -
 .../char-name/unicode/00400-004FF.el          |   248 -
 .../char-name/unicode/00500-0052F.el          |    18 -
 .../char-name/unicode/00530-0058F.el          |    88 -
 .../char-name/unicode/00590-005FF.el          |    84 -
 .../char-name/unicode/00600-006FF.el          |   210 -
 .../char-name/unicode/00700-0074F.el          |    73 -
 .../char-name/unicode/00780-007BF.el          |    52 -
 .../char-name/unicode/00900-0097F.el          |   106 -
 .../char-name/unicode/00980-009FF.el          |    91 -
 .../char-name/unicode/00A00-00A7F.el          |    77 -
 .../char-name/unicode/00A80-00AFF.el          |    80 -
 .../char-name/unicode/00B00-00B7F.el          |    81 -
 .../char-name/unicode/00B80-00BFF.el          |    63 -
 .../char-name/unicode/00C00-00C7F.el          |    82 -
 .../char-name/unicode/00C80-00CFF.el          |    82 -
 .../char-name/unicode/00D00-00D7F.el          |    80 -
 .../char-name/unicode/00D80-00DFF.el          |    82 -
 .../char-name/unicode/00E00-00E7F.el          |    89 -
 .../char-name/unicode/00E80-00EFF.el          |    67 -
 .../char-name/unicode/00F00-00FFF.el          |   195 -
 .../char-name/unicode/01000-0109F.el          |    80 -
 .../char-name/unicode/010A0-010FF.el          |    82 -
 .../char-name/unicode/01100-011FF.el          |   242 -
 .../char-name/unicode/01200-0137F.el          |   347 -
 .../char-name/unicode/013A0-013FF.el          |    87 -
 .../char-name/unicode/01400-0167F.el          |   632 -
 .../char-name/unicode/01680-0169F.el          |    31 -
 .../char-name/unicode/016A0-016FF.el          |    83 -
 .../char-name/unicode/01700-0171F.el          |    22 -
 .../char-name/unicode/01720-0173F.el          |    25 -
 .../char-name/unicode/01740-0175F.el          |    22 -
 .../char-name/unicode/01760-0177F.el          |    20 -
 .../char-name/unicode/01780-017FF.el          |   105 -
 .../char-name/unicode/01800-018AF.el          |   157 -
 .../char-name/unicode/01E00-01EFF.el          |   248 -
 .../char-name/unicode/01F00-01FFF.el          |   235 -
 .../char-name/unicode/02000-0206F.el          |    97 -
 .../char-name/unicode/02070-0209F.el          |    31 -
 .../char-name/unicode/020A0-020CF.el          |    20 -
 .../char-name/unicode/020D0-020FF.el          |    29 -
 .../char-name/unicode/02100-0214F.el          |    76 -
 .../char-name/unicode/02150-0218F.el          |    51 -
 .../char-name/unicode/02190-021FF.el          |   114 -
 .../char-name/unicode/02200-022FF.el          |   258 -
 .../char-name/unicode/02300-023FF.el          |   209 -
 .../char-name/unicode/02400-0243F.el          |    41 -
 .../char-name/unicode/02440-0245F.el          |    13 -
 .../char-name/unicode/02460-024FF.el          |   161 -
 .../char-name/unicode/02500-0257F.el          |   130 -
 .../char-name/unicode/02580-0259F.el          |    34 -
 .../char-name/unicode/025A0-025FF.el          |    98 -
 .../char-name/unicode/02600-026FF.el          |   135 -
 .../char-name/unicode/02700-027BF.el          |   176 -
 .../char-name/unicode/027C0-027EF.el          |    30 -
 .../char-name/unicode/027F0-027FF.el          |    18 -
 .../char-name/unicode/02800-028FF.el          |   258 -
 .../char-name/unicode/02900-0297F.el          |   130 -
 .../char-name/unicode/02980-029FF.el          |   130 -
 .../char-name/unicode/02A00-02AFF.el          |   258 -
 .../char-name/unicode/02E80-02EFF.el          |   117 -
 .../char-name/unicode/02F00-02FDF.el          |   216 -
 .../char-name/unicode/02FF0-02FFF.el          |    14 -
 .../char-name/unicode/03000-0303F.el          |    66 -
 .../char-name/unicode/03040-0309F.el          |    95 -
 .../char-name/unicode/030A0-030FF.el          |    98 -
 .../char-name/unicode/03100-0312F.el          |    42 -
 .../char-name/unicode/03130-0318F.el          |    96 -
 .../char-name/unicode/03190-0319F.el          |    18 -
 .../char-name/unicode/031A0-031BF.el          |    26 -
 .../char-name/unicode/031F0-031FF.el          |    18 -
 .../char-name/unicode/03200-032FF.el          |   234 -
 .../char-name/unicode/03300-033FF.el          |   251 -
 .../char-name/unicode/03400-04DBF.el          |     2 -
 .../char-name/unicode/0A000-0A48F.el          |  1167 --
 .../char-name/unicode/0A490-0A4CF.el          |    57 -
 .../char-name/unicode/0FB00-0FB4F.el          |    60 -
 .../char-name/unicode/0FB50-0FDFF.el          |   596 -
 .../char-name/unicode/0FE00-0FE0F.el          |    18 -
 .../char-name/unicode/0FE20-0FE2F.el          |     6 -
 .../char-name/unicode/0FE30-0FE4F.el          |    32 -
 .../char-name/unicode/0FE50-0FE6F.el          |    28 -
 .../char-name/unicode/0FE70-0FEFF.el          |   143 -
 .../char-name/unicode/0FF00-0FFEF.el          |   227 -
 .../char-name/unicode/0FFF0-0FFFF.el          |     7 -
 .../char-name/unicode/10300-1032F.el          |    37 -
 .../char-name/unicode/10330-1034F.el          |    29 -
 .../char-name/unicode/10400-1044F.el          |    78 -
 .../char-name/unicode/1D000-1D0FF.el          |   248 -
 .../char-name/unicode/1D100-1D1FF.el          |   221 -
 .../char-name/unicode/1D400-1D7FF.el          |   993 --
 .../char-name/unicode/E0000-E007F.el          |    99 -
 elpa-to-submit/nxhtml/nxml-mode-20041004/dir  |    18 -
 .../nxhtml/nxml-mode-20041004/nxml-enc.el     |   167 -
 .../nxhtml/nxml-mode-20041004/nxml-glyph.el   |   418 -
 .../nxhtml/nxml-mode-20041004/nxml-maint.el   |   106 -
 .../nxml-mode-20041004/nxml-mode-new.el       |  2706 ----
 .../nxhtml/nxml-mode-20041004/nxml-mode.el    |  2665 ----
 .../nxhtml/nxml-mode-20041004/nxml-mode.info  |   745 -
 .../nxhtml/nxml-mode-20041004/nxml-mode.rnc   |    20 -
 .../nxhtml/nxml-mode-20041004/nxml-mode.texi  |   834 --
 .../nxhtml/nxml-mode-20041004/nxml-mode.xml   |   852 --
 .../nxhtml/nxml-mode-20041004/nxml-ns.el      |   148 -
 .../nxhtml/nxml-mode-20041004/nxml-outln.el   |  1040 --
 .../nxhtml/nxml-mode-20041004/nxml-parse.el   |   320 -
 .../nxhtml/nxml-mode-20041004/nxml-rap.el     |   467 -
 .../nxhtml/nxml-mode-20041004/nxml-uchnm.el   |   257 -
 .../nxhtml/nxml-mode-20041004/nxml-util.el    |   100 -
 .../nxhtml/nxml-mode-20041004/rng-auto.el     |   278 -
 .../nxhtml/nxml-mode-20041004/rng-cmpct.el    |   937 --
 .../nxhtml/nxml-mode-20041004/rng-dt.el       |    64 -
 .../nxhtml/nxml-mode-20041004/rng-loc.el      |   548 -
 .../nxhtml/nxml-mode-20041004/rng-maint.el    |   343 -
 .../nxhtml/nxml-mode-20041004/rng-match.el    |  1739 ---
 .../nxhtml/nxml-mode-20041004/rng-nxml.el     |   592 -
 .../nxhtml/nxml-mode-20041004/rng-parse.el    |   104 -
 .../nxhtml/nxml-mode-20041004/rng-pttrn.el    |   189 -
 .../nxhtml/nxml-mode-20041004/rng-uri.el      |   355 -
 .../nxhtml/nxml-mode-20041004/rng-util.el     |   172 -
 .../nxhtml/nxml-mode-20041004/rng-valid.el    |  1467 --
 .../nxhtml/nxml-mode-20041004/rng-xsd.el      |   858 --
 .../nxml-mode-20041004/schema/calstbl.rnc     |   184 -
 .../nxml-mode-20041004/schema/dbcalstbl.rnc   |    25 -
 .../nxml-mode-20041004/schema/dbdyntbl.rnc    |   116 -
 .../nxml-mode-20041004/schema/dbhier.rnc      |  1467 --
 .../nxml-mode-20041004/schema/dbnotn.rnc      |    84 -
 .../nxml-mode-20041004/schema/dbpool.rnc      |  5083 -------
 .../nxml-mode-20041004/schema/dbsoextbl.rnc   |    30 -
 .../nxml-mode-20041004/schema/dbstart.rnc     |    23 -
 .../schema/docbook-dyntbl.rnc                 |    18 -
 .../schema/docbook-soextbl.rnc                |    17 -
 .../nxml-mode-20041004/schema/docbook.rnc     |    48 -
 .../nxml-mode-20041004/schema/locate.rnc      |   200 -
 .../nxml-mode-20041004/schema/rdfxml.rnc      |   205 -
 .../nxml-mode-20041004/schema/relaxng.rnc     |    63 -
 .../nxml-mode-20041004/schema/schemas.xml     |    36 -
 .../nxml-mode-20041004/schema/soextbl.rnc     |   260 -
 .../schema/xhtml-applet.rnc                   |    19 -
 .../schema/xhtml-attribs.rnc                  |    14 -
 .../nxml-mode-20041004/schema/xhtml-base.rnc  |     5 -
 .../schema/xhtml-basic-form.rnc               |    64 -
 .../schema/xhtml-basic-table.rnc              |    28 -
 .../nxml-mode-20041004/schema/xhtml-bdo.rnc   |     7 -
 .../schema/xhtml-csismap.rnc                  |    29 -
 .../schema/xhtml-datatypes.rnc                |    47 -
 .../nxml-mode-20041004/schema/xhtml-edit.rnc  |    12 -
 .../schema/xhtml-events.rnc                   |    47 -
 .../nxml-mode-20041004/schema/xhtml-form.rnc  |    49 -
 .../schema/xhtml-frames.rnc                   |    26 -
 .../schema/xhtml-hypertext.rnc                |    16 -
 .../schema/xhtml-iframe.rnc                   |    14 -
 .../nxml-mode-20041004/schema/xhtml-image.rnc |    11 -
 .../schema/xhtml-inlstyle.rnc                 |     3 -
 .../schema/xhtml-legacy.rnc                   |   100 -
 .../nxml-mode-20041004/schema/xhtml-link.rnc  |    13 -
 .../nxml-mode-20041004/schema/xhtml-list.rnc  |    16 -
 .../nxml-mode-20041004/schema/xhtml-meta.rnc  |    10 -
 .../schema/xhtml-nameident.rnc                |    10 -
 .../schema/xhtml-object.rnc                   |    24 -
 .../nxml-mode-20041004/schema/xhtml-param.rnc |     9 -
 .../nxml-mode-20041004/schema/xhtml-pres.rnc  |    18 -
 .../nxml-mode-20041004/schema/xhtml-ruby.rnc  |    21 -
 .../schema/xhtml-script.rnc                   |    15 -
 .../schema/xhtml-ssismap.rnc                  |     5 -
 .../schema/xhtml-struct.rnc                   |    14 -
 .../nxml-mode-20041004/schema/xhtml-style.rnc |    10 -
 .../nxml-mode-20041004/schema/xhtml-table.rnc |    67 -
 .../schema/xhtml-target.rnc                   |     8 -
 .../nxml-mode-20041004/schema/xhtml-text.rnc  |    73 -
 .../nxml-mode-20041004/schema/xhtml.rnc       |    37 -
 .../nxhtml/nxml-mode-20041004/schema/xslt.rnc |   356 -
 .../nxml-mode-20041004/stamp-byte-compile     |     0
 .../nxhtml/nxml-mode-20041004/test-noval.el   |     4 -
 .../nxml-mode-20041004/test.invalid.xml       |     8 -
 .../nxhtml/nxml-mode-20041004/test.valid.xml  |     8 -
 .../nxhtml/nxml-mode-20041004/xmltok.el       |  1925 ---
 .../nxhtml/nxml-mode-20041004/xsd-regexp.el   |  2121 ---
 elpa-to-submit/nxhtml/readme.txt              |     5 +-
 elpa-to-submit/nxhtml/related/cgi+.el         |   296 -
 elpa-to-submit/nxhtml/related/css-mode.el     |   473 -
 elpa-to-submit/nxhtml/related/espresso.el     |  3396 +++++
 .../nxhtml/related/find-recursive-orig.el     |   137 -
 .../nxhtml/related/find-recursive.el          |   152 -
 elpa-to-submit/nxhtml/related/flymake-keys.el |     1 +
 elpa-to-submit/nxhtml/related/flymu.el        |     2 +-
 .../nxhtml/related/javascript-old.el          |   713 +
 elpa-to-submit/nxhtml/related/javascript.el   |  1461 +-
 elpa-to-submit/nxhtml/related/js2.el          | 11659 ----------------
 elpa-to-submit/nxhtml/related/moz.el          |    51 +-
 elpa-to-submit/nxhtml/related/mozadd.el       |   364 +
 elpa-to-submit/nxhtml/related/php-imenu.el    |    33 +-
 elpa-to-submit/nxhtml/related/php-mode.el     |    49 +-
 elpa-to-submit/nxhtml/related/smarty-mode.el  |  1367 +-
 .../nxhtml/related/wikipedia-mode.el          |     3 +-
 elpa-to-submit/nxhtml/tests/elunit.el         |   334 -
 .../nxhtml/tests/emacstest-suites.el          |     2 +
 elpa-to-submit/nxhtml/tests/ert-080729.el     |  2095 ---
 elpa-to-submit/nxhtml/tests/ert.el            |    67 +-
 elpa-to-submit/nxhtml/tests/ert2.el           |    35 +-
 elpa-to-submit/nxhtml/tests/hfy-test.el       |   102 +
 elpa-to-submit/nxhtml/tests/in/3-heights.html |    42 +
 .../nxhtml/tests/in/400415-index.phtml        |    43 +
 .../nxhtml/tests/in/bastien-test.mm           |    38 +
 elpa-to-submit/nxhtml/tests/in/bug-290364.php |    66 +
 .../nxhtml/tests/in/bug-300946-index.html     |    24 +
 .../nxhtml/tests/in/bug-311640-index.html     |    24 +
 elpa-to-submit/nxhtml/tests/in/bug-311641.php |     7 +
 .../nxhtml/tests/in/bug-373106-flipbook.html  |   160 +
 .../nxhtml/tests/in/bug-381191-dh-test.el     |    23 +
 .../nxhtml/tests/in/bug-381191-dh-test.php    |     6 +
 elpa-to-submit/nxhtml/tests/in/bug271497.el   |    14 +-
 .../nxhtml/tests/in/bug290364-messages.txt    |    97 +
 .../nxhtml/tests/in/bug354363-index.php       |    38 +
 .../nxhtml/tests/in/bug354363-test.php        |     3 +
 .../tests/in/bug369800-load-history.txt       |  9483 +++++++++++++
 elpa-to-submit/nxhtml/tests/in/bug370417.php  |    10 +
 .../tests/in/bug381979-2-bad-traceb.txt       |    24 +
 .../nxhtml/tests/in/bug381979-2.php           |     6 +
 .../nxhtml/tests/in/bug381979-svnlib.inc      |   744 +
 .../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    |    19 +
 .../nxhtml/tests/in/bug400415-foo.php         |     9 +
 .../nxhtml/tests/in/bug400415-foo2.php        |     9 +
 .../nxhtml/tests/in/chunks-in-chunks1.php     |    19 +
 elpa-to-submit/nxhtml/tests/in/heredoc.php    |    61 +
 elpa-to-submit/nxhtml/tests/in/heredoc.pl     |    11 +
 elpa-to-submit/nxhtml/tests/in/heredoc.py     |    11 +
 elpa-to-submit/nxhtml/tests/in/heredoc.rb     |     8 +
 elpa-to-submit/nxhtml/tests/in/heredoc.sh     |     4 +
 elpa-to-submit/nxhtml/tests/in/jj-081226.html |    26 +
 .../tests/in/kubica-080516-freezing-2j.html   |   174 +
 .../in/kubica-080516-freezing-a-notabs.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.txt       |    10 +
 elpa-to-submit/nxhtml/tests/in/nutshell.mako  |     1 +
 elpa-to-submit/nxhtml/tests/in/only-html.html |    11 +
 .../tests/in/pastie-246693.txt-ruby-mode.el   |  1280 --
 .../nxhtml/tests/in/question49234.sh          |    41 +
 .../nxhtml/tests/in/rr-090524-header.php      |    76 +
 .../nxhtml/tests/in/rr-address-090304.php     |     4 +
 .../nxhtml/tests/in/rr-address-nxhtml.err     |   Bin 0 -> 6647 bytes
 elpa-to-submit/nxhtml/tests/in/temp3.html     |    44 +
 .../tests/in/wiki-080708-ind-problem.rhtml    |     2 +-
 .../nxhtml/tests/in/wiki-090804-js.html       |    32 +
 .../nxhtml/tests/in/zn-090529-doxysample.php  |    37 +
 .../nxhtml/{util => tests}/mumamo-test.el     |   168 +-
 elpa-to-submit/nxhtml/tests/nxhtmltest-Q.el   |    12 +-
 .../nxhtml/tests/nxhtmltest-helpers.el        |    14 +-
 .../nxhtml/tests/nxhtmltest-suites.el         |    80 +-
 elpa-to-submit/nxhtml/util/appmenu-fold.el    |     1 +
 elpa-to-submit/nxhtml/util/appmenu.el         |    68 +-
 elpa-to-submit/nxhtml/util/as-external.el     |    37 +-
 .../nxhtml/util/bw-rnc-load/mjt.rnc           |    74 -
 .../nxhtml/util/bw-rnc-load/qtmstr-xhtml.rnc  |    58 -
 .../nxhtml/util/bw-rnc-load/schema-find.el    |    18 -
 .../nxhtml/util/bw-rnc-load/xinclude.rnc      |    11 -
 elpa-to-submit/nxhtml/util/chart.el           |   681 +-
 elpa-to-submit/nxhtml/util/color-test-sent.el |   149 -
 elpa-to-submit/nxhtml/util/color-test.el      |   154 -
 .../nxhtml/util/company-mode/README.txt       |     1 +
 .../util/company-mode/company-abbrev.el       |    43 +
 .../util/company-mode/company-autoloads.el    |   229 +
 .../nxhtml/util/company-mode/company-css.el   |   355 +
 .../util/company-mode/company-dabbrev-code.el |    81 +
 .../util/company-mode/company-dabbrev.el      |   118 +
 .../nxhtml/util/company-mode/company-eclim.el |   138 +
 .../nxhtml/util/company-mode/company-elisp.el |   128 +
 .../nxhtml/util/company-mode/company-etags.el |    75 +
 .../nxhtml/util/company-mode/company-files.el |    80 +
 .../nxhtml/util/company-mode/company-gtags.el |    79 +
 .../util/company-mode/company-ispell.el       |    58 +
 .../util/company-mode/company-keywords.el     |   229 +
 .../util/company-mode/company-nograb.el       |   372 +
 .../nxhtml/util/company-mode/company-nxml.el  |   127 +
 .../util/company-mode/company-oddmuse.el      |    49 +
 .../nxhtml/util/company-mode/company-pkg.el   |     1 +
 .../util/company-mode/company-predictive.el   |    82 +
 .../util/company-mode/company-pysmell.el      |    59 +
 .../util/company-mode/company-ropemacs.el     |    53 +
 .../util/company-mode/company-semantic.el     |   112 +
 .../nxhtml/util/company-mode/company-start.el |    40 +
 .../nxhtml/util/company-mode/company-tempo.el |    55 +
 .../nxhtml/util/company-mode/company-xcode.el |   114 +
 .../nxhtml/util/company-mode/company.el       |  2212 +++
 elpa-to-submit/nxhtml/util/css-color.el       |   962 ++
 elpa-to-submit/nxhtml/util/css-palette.el     |   472 +
 elpa-to-submit/nxhtml/util/cus-new-user.el    |   803 ++
 .../nxhtml/util/ecb-batch-compile.el          |     2 +-
 elpa-to-submit/nxhtml/util/elunit.el          |   338 -
 elpa-to-submit/nxhtml/util/ffip.el            |    57 +-
 elpa-to-submit/nxhtml/util/freemind.el        |   195 +-
 elpa-to-submit/nxhtml/util/from-osxkeys.el    |   621 -
 elpa-to-submit/nxhtml/util/gpl.el             |   213 +
 elpa-to-submit/nxhtml/util/half-qwerty.el     |   193 -
 elpa-to-submit/nxhtml/util/hexcolor.el        |   146 -
 elpa-to-submit/nxhtml/util/hfyview.el         |   196 +-
 elpa-to-submit/nxhtml/util/hl-needed.el       |     3 +-
 elpa-to-submit/nxhtml/util/html-write.el      |   107 +-
 elpa-to-submit/nxhtml/util/htmlfontify.el     |     1 +
 elpa-to-submit/nxhtml/util/inlimg.el          |   423 +
 elpa-to-submit/nxhtml/util/key-cat.el         |   331 +
 elpa-to-submit/nxhtml/util/majmodpri.el       |   316 +-
 elpa-to-submit/nxhtml/util/mlinks.el          |   295 +-
 elpa-to-submit/nxhtml/util/mumamo-aspnet.el   |    91 +-
 elpa-to-submit/nxhtml/util/mumamo-fun.el      |  4428 +++---
 elpa-to-submit/nxhtml/util/mumamo-regions.el  |   267 +
 elpa-to-submit/nxhtml/util/mumamo.el          |  4712 ++++---
 elpa-to-submit/nxhtml/util/n-back.el          |  1277 ++
 .../nxhtml/util/new-key-seq-widget.el         |     2 +
 .../nxhtml/util/nxml-mode-os-additions.el     |     5 +
 elpa-to-submit/nxhtml/util/org-panel.el       |    93 +-
 .../nxhtml/util/ourcomments-util.el           |   556 +-
 elpa-to-submit/nxhtml/util/pause.el           |   176 +-
 elpa-to-submit/nxhtml/util/physical-line.el   |   436 -
 elpa-to-submit/nxhtml/util/pointback.el       |    93 +
 elpa-to-submit/nxhtml/util/popcmp.el          |   251 +-
 elpa-to-submit/nxhtml/util/rnc-mode.el        |     6 +-
 elpa-to-submit/nxhtml/util/search-form.el     |   236 +-
 elpa-to-submit/nxhtml/util/sex-mode.el        |    28 +-
 elpa-to-submit/nxhtml/util/tabkey2.el         |   180 +-
 elpa-to-submit/nxhtml/util/udev-cedet.el      |   201 +-
 elpa-to-submit/nxhtml/util/udev-ecb.el        |   114 +-
 elpa-to-submit/nxhtml/util/udev-nxhtml.el     |     6 +-
 elpa-to-submit/nxhtml/util/udev-rinari.el     |    11 +-
 elpa-to-submit/nxhtml/util/udev.el            |    50 +-
 elpa-to-submit/nxhtml/util/viper-tut.el       |   207 +-
 elpa-to-submit/nxhtml/util/vline.el           |     2 +
 elpa-to-submit/nxhtml/util/whelp.el           |    41 +-
 elpa-to-submit/nxhtml/util/winsav.el          |  1183 +-
 elpa-to-submit/nxhtml/util/winsize.el         |   358 +-
 starter-kit-elpa.el                           |     5 +-
 425 files changed, 47254 insertions(+), 80001 deletions(-)
 rename elpa-to-submit/nxhtml/{related => alts}/javascript-mozlab.el (100%)
 rename elpa-to-submit/nxhtml/{related => alts}/js2-font-lock-new.el (100%)
 rename elpa-to-submit/nxhtml/{related => alts}/js2-font-lock.el (100%)
 rename elpa-to-submit/nxhtml/{related => alts}/js2-mumamo.el (100%)
 rename elpa-to-submit/nxhtml/{related => alts}/js2-new.el (100%)
 create mode 100644 elpa-to-submit/nxhtml/alts/php-mode-1.5.0.el
 create mode 100644 elpa-to-submit/nxhtml/alts/php-mode-2008-10-23.el
 rename elpa-to-submit/nxhtml/{related => alts}/smarty-mode-vdebout.el (100%)
 rename elpa-to-submit/nxhtml/{related => alts}/snippet.el (100%)
 rename elpa-to-submit/nxhtml/{nxhtml/nxhtml-anything-1.el => autostart22.el} (54%)
 create mode 100644 elpa-to-submit/nxhtml/emacs22.cmd
 create mode 100644 elpa-to-submit/nxhtml/etc/img/pause/pause.jpg
 create mode 100644 elpa-to-submit/nxhtml/etc/img/pause/pause2.jpg
 delete mode 100644 elpa-to-submit/nxhtml/etc/schema/rncpp-patch-files.done
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml-maintenance.el
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/cedet-build.el
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/Las_Medulas.jpg
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/Toco_toucan.jpg
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/bacchante2.jpg
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/butterflies.jpg
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/butterflies.png
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/butterflies.xcf
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/continue-play.jpg
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/divine2.jpg
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/fun-brain-2.png
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/giraffe.jpg
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/healthy_feet2.jpg
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/raindrops2.jpg
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/rembrandt-self-portrait.jpg
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/img/volga.jpg
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/doc/test.html
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/inlimg.el
 create mode 100644 elpa-to-submit/nxhtml/nxhtml/nxhtml-mode.el
 rename elpa-to-submit/nxhtml/nxhtml/{nxhtml-js.el => nxhtmljs.el} (87%)
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/old/.nosearch
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/old/html-inlined.el
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/old/nxhpcmpl.el
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/old/nxhtml-part.css
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/old/nxhtml-part.el
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/old/xhtmlin.el
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/old/xmlpe.css
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/old/xmlpe.el
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/test-c-m.el
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/test-cust.el
 delete mode 100644 elpa-to-submit/nxhtml/nxhtml/tests.el
 create mode 100644 elpa-to-submit/nxhtml/nxhtmlmaint.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/COPYING
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/Makefile
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/NEWS
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/README
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/TODO
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/VERSION
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00000-0007F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00080-000FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00100-0017F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00180-0024F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00250-002AF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/002B0-002FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00300-0036F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00370-003FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00400-004FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00500-0052F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00530-0058F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00590-005FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00600-006FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00700-0074F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00780-007BF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00900-0097F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00980-009FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00A00-00A7F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00A80-00AFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00B00-00B7F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00B80-00BFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00C00-00C7F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00C80-00CFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00D00-00D7F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00D80-00DFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00E00-00E7F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00E80-00EFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/00F00-00FFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01000-0109F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/010A0-010FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01100-011FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01200-0137F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/013A0-013FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01400-0167F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01680-0169F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/016A0-016FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01700-0171F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01720-0173F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01740-0175F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01760-0177F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01780-017FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01800-018AF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01E00-01EFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/01F00-01FFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02000-0206F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02070-0209F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/020A0-020CF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/020D0-020FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02100-0214F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02150-0218F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02190-021FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02200-022FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02300-023FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02400-0243F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02440-0245F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02460-024FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02500-0257F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02580-0259F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/025A0-025FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02600-026FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02700-027BF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/027C0-027EF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/027F0-027FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02800-028FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02900-0297F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02980-029FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02A00-02AFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02E80-02EFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02F00-02FDF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/02FF0-02FFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/03000-0303F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/03040-0309F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/030A0-030FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/03100-0312F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/03130-0318F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/03190-0319F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/031A0-031BF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/031F0-031FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/03200-032FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/03300-033FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/03400-04DBF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/0A000-0A48F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/0A490-0A4CF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/0FB00-0FB4F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/0FB50-0FDFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/0FE00-0FE0F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/0FE20-0FE2F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/0FE30-0FE4F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/0FE50-0FE6F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/0FE70-0FEFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/0FF00-0FFEF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/0FFF0-0FFFF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/10300-1032F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/10330-1034F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/10400-1044F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/1D000-1D0FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/1D100-1D1FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/1D400-1D7FF.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/char-name/unicode/E0000-E007F.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/dir
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-enc.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-glyph.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-maint.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-mode-new.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-mode.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-mode.info
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-mode.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-mode.texi
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-mode.xml
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-ns.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-outln.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-parse.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-rap.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-uchnm.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/nxml-util.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-auto.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-cmpct.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-dt.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-loc.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-maint.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-match.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-nxml.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-parse.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-pttrn.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-uri.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-util.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-valid.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/rng-xsd.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/calstbl.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/dbcalstbl.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/dbdyntbl.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/dbhier.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/dbnotn.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/dbpool.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/dbsoextbl.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/dbstart.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/docbook-dyntbl.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/docbook-soextbl.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/docbook.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/locate.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/rdfxml.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/relaxng.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/schemas.xml
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/soextbl.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-applet.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-attribs.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-base.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-basic-form.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-basic-table.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-bdo.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-csismap.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-datatypes.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-edit.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-events.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-form.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-frames.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-hypertext.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-iframe.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-image.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-inlstyle.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-legacy.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-link.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-list.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-meta.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-nameident.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-object.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-param.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-pres.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-ruby.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-script.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-ssismap.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-struct.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-style.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-table.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-target.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml-text.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xhtml.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/schema/xslt.rnc
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/stamp-byte-compile
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/test-noval.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/test.invalid.xml
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/test.valid.xml
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/xmltok.el
 delete mode 100644 elpa-to-submit/nxhtml/nxml-mode-20041004/xsd-regexp.el
 delete mode 100644 elpa-to-submit/nxhtml/related/cgi+.el
 delete mode 100644 elpa-to-submit/nxhtml/related/css-mode.el
 create mode 100644 elpa-to-submit/nxhtml/related/espresso.el
 delete mode 100644 elpa-to-submit/nxhtml/related/find-recursive-orig.el
 delete mode 100644 elpa-to-submit/nxhtml/related/find-recursive.el
 create mode 100644 elpa-to-submit/nxhtml/related/javascript-old.el
 delete mode 100644 elpa-to-submit/nxhtml/related/js2.el
 create mode 100644 elpa-to-submit/nxhtml/related/mozadd.el
 delete mode 100644 elpa-to-submit/nxhtml/tests/elunit.el
 delete mode 100644 elpa-to-submit/nxhtml/tests/ert-080729.el
 create mode 100644 elpa-to-submit/nxhtml/tests/hfy-test.el
 create mode 100644 elpa-to-submit/nxhtml/tests/in/3-heights.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/400415-index.phtml
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bastien-test.mm
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug-290364.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug-300946-index.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug-311640-index.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug-311641.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug-373106-flipbook.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug-381191-dh-test.el
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug-381191-dh-test.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug290364-messages.txt
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug354363-index.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug354363-test.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug369800-load-history.txt
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug370417.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug381979-2-bad-traceb.txt
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug381979-2.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug381979-svnlib.inc
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug384115-bt2.txt
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug388729-messages.txt
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug388729-nxhtml_test.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug393137-new.html.erb
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug400415-foo.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/bug400415-foo2.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/chunks-in-chunks1.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/heredoc.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/heredoc.pl
 create mode 100644 elpa-to-submit/nxhtml/tests/in/heredoc.py
 create mode 100644 elpa-to-submit/nxhtml/tests/in/heredoc.rb
 create mode 100644 elpa-to-submit/nxhtml/tests/in/heredoc.sh
 create mode 100644 elpa-to-submit/nxhtml/tests/in/jj-081226.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-2j.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-a-notabs.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-b.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-c.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-d.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-e.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-f.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-g.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-h.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-i.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-j.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-k.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing.txt
 create mode 100644 elpa-to-submit/nxhtml/tests/in/only-html.html
 delete mode 100644 elpa-to-submit/nxhtml/tests/in/pastie-246693.txt-ruby-mode.el
 create mode 100644 elpa-to-submit/nxhtml/tests/in/question49234.sh
 create mode 100644 elpa-to-submit/nxhtml/tests/in/rr-090524-header.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/rr-address-090304.php
 create mode 100644 elpa-to-submit/nxhtml/tests/in/rr-address-nxhtml.err
 create mode 100644 elpa-to-submit/nxhtml/tests/in/temp3.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/wiki-090804-js.html
 create mode 100644 elpa-to-submit/nxhtml/tests/in/zn-090529-doxysample.php
 rename elpa-to-submit/nxhtml/{util => tests}/mumamo-test.el (68%)
 delete mode 100644 elpa-to-submit/nxhtml/util/bw-rnc-load/mjt.rnc
 delete mode 100644 elpa-to-submit/nxhtml/util/bw-rnc-load/qtmstr-xhtml.rnc
 delete mode 100644 elpa-to-submit/nxhtml/util/bw-rnc-load/schema-find.el
 delete mode 100644 elpa-to-submit/nxhtml/util/bw-rnc-load/xinclude.rnc
 delete mode 100644 elpa-to-submit/nxhtml/util/color-test-sent.el
 delete mode 100644 elpa-to-submit/nxhtml/util/color-test.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/README.txt
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-abbrev.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-autoloads.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-css.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-dabbrev-code.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-dabbrev.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-eclim.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-elisp.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-etags.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-files.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-gtags.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-ispell.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-keywords.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-nograb.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-nxml.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-oddmuse.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-pkg.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-predictive.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-pysmell.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-ropemacs.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-semantic.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-start.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-tempo.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company-xcode.el
 create mode 100644 elpa-to-submit/nxhtml/util/company-mode/company.el
 create mode 100644 elpa-to-submit/nxhtml/util/css-color.el
 create mode 100644 elpa-to-submit/nxhtml/util/css-palette.el
 create mode 100644 elpa-to-submit/nxhtml/util/cus-new-user.el
 delete mode 100644 elpa-to-submit/nxhtml/util/elunit.el
 delete mode 100644 elpa-to-submit/nxhtml/util/from-osxkeys.el
 create mode 100644 elpa-to-submit/nxhtml/util/gpl.el
 delete mode 100644 elpa-to-submit/nxhtml/util/half-qwerty.el
 delete mode 100644 elpa-to-submit/nxhtml/util/hexcolor.el
 create mode 100644 elpa-to-submit/nxhtml/util/inlimg.el
 create mode 100644 elpa-to-submit/nxhtml/util/key-cat.el
 create mode 100644 elpa-to-submit/nxhtml/util/mumamo-regions.el
 create mode 100644 elpa-to-submit/nxhtml/util/n-back.el
 delete mode 100644 elpa-to-submit/nxhtml/util/physical-line.el
 create mode 100644 elpa-to-submit/nxhtml/util/pointback.el

diff --git a/elpa-to-submit/nxhtml/related/javascript-mozlab.el b/elpa-to-submit/nxhtml/alts/javascript-mozlab.el
similarity index 100%
rename from elpa-to-submit/nxhtml/related/javascript-mozlab.el
rename to elpa-to-submit/nxhtml/alts/javascript-mozlab.el
diff --git a/elpa-to-submit/nxhtml/related/js2-font-lock-new.el b/elpa-to-submit/nxhtml/alts/js2-font-lock-new.el
similarity index 100%
rename from elpa-to-submit/nxhtml/related/js2-font-lock-new.el
rename to elpa-to-submit/nxhtml/alts/js2-font-lock-new.el
diff --git a/elpa-to-submit/nxhtml/related/js2-font-lock.el b/elpa-to-submit/nxhtml/alts/js2-font-lock.el
similarity index 100%
rename from elpa-to-submit/nxhtml/related/js2-font-lock.el
rename to elpa-to-submit/nxhtml/alts/js2-font-lock.el
diff --git a/elpa-to-submit/nxhtml/related/js2-mumamo.el b/elpa-to-submit/nxhtml/alts/js2-mumamo.el
similarity index 100%
rename from elpa-to-submit/nxhtml/related/js2-mumamo.el
rename to elpa-to-submit/nxhtml/alts/js2-mumamo.el
diff --git a/elpa-to-submit/nxhtml/related/js2-new.el b/elpa-to-submit/nxhtml/alts/js2-new.el
similarity index 100%
rename from elpa-to-submit/nxhtml/related/js2-new.el
rename to elpa-to-submit/nxhtml/alts/js2-new.el
diff --git a/elpa-to-submit/nxhtml/alts/php-mode-1.5.0.el b/elpa-to-submit/nxhtml/alts/php-mode-1.5.0.el
new file mode 100644
index 0000000000..e5de2d7e4e
--- /dev/null
+++ b/elpa-to-submit/nxhtml/alts/php-mode-1.5.0.el
@@ -0,0 +1,319 @@
+
+
+
+
+
+
+
+
+
+
+
+
+SourceForge.net Repository - [php-mode] Index of /
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/elpa-to-submit/nxhtml/alts/php-mode-2008-10-23.el b/elpa-to-submit/nxhtml/alts/php-mode-2008-10-23.el
new file mode 100644
index 0000000000..c0be94969d
--- /dev/null
+++ b/elpa-to-submit/nxhtml/alts/php-mode-2008-10-23.el
@@ -0,0 +1,1118 @@
+;;; php-mode.el --- major mode for editing PHP code
+
+;; Copyright (C) 1999, 2000, 2001, 2003, 2004 Turadg Aleahmad
+;;               2008 Aaron S. Hawley
+
+;; Maintainer: Aaron S. Hawley 
+;; Author: Turadg Aleahmad, 1999-2004
+;; Keywords: php languages oop
+;; Created: 1999-05-17
+;; Modified: 2008-10-20
+;; X-URL:   http://php-mode.sourceforge.net/
+
+(defconst php-mode-version-number "1.4.1-alpha"
+  "PHP Mode version number.")
+
+;;; License
+
+;; 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 3
+;; of the License, 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 this file; if not, write to the Free Software
+;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+;; 02110-1301, USA.
+
+;;; Usage
+
+;; Put this file in your Emacs lisp path (eg. site-lisp) and add to
+;; your .emacs file:
+;;
+;;   (require 'php-mode)
+
+;; To use abbrev-mode, add lines like this:
+;;   (add-hook 'php-mode-hook
+;;     '(lambda () (define-abbrev php-mode-abbrev-table "ex" "extends")))
+
+;; To make php-mode compatible with html-mode, see http://php-mode.sf.net
+
+;; Many options available under Help:Customize
+;; Options specific to php-mode are in
+;;  Programming/Languages/Php
+;; Since it inherits much functionality from c-mode, look there too
+;;  Programming/Languages/C
+
+;;; Commentary:
+
+;; PHP mode is a major mode for editing PHP 3 and 4 source code.  It's
+;; an extension of C mode; thus it inherits all C mode's navigation
+;; functionality.  But it colors according to the PHP grammar and indents
+;; according to the PEAR coding guidelines.  It also includes a couple
+;; handy IDE-type features such as documentation search and a source
+;; and class browser.
+
+
+;;; Contributors: (in chronological order)
+
+;; Juanjo, Torsten Martinsen, Vinai Kopp, Sean Champ, Doug Marcey,
+;; Kevin Blake, Rex McMaster, Mathias Meyer, Boris Folgmann, Roland
+;; Rosenfeld, Fred Yankowski, Craig Andrews, John Keller, Ryan
+;; Sammartino, ppercot, Valentin Funk, Stig Bakken, Gregory Stark,
+;; Chris Morris, Nils Rennebarth, Gerrit Riessen, Eric Mc Sween,
+;; Ville Skytta, Giacomo Tesio, Lennart Borgman, Stefan Monnier,
+;; Aaron S. Hawley, Ian Eure, Bill Lovett, Dias Badekas
+
+;;; Changelog:
+
+;; 1.4
+;;   Updated GNU GPL to version 3.  Ported to Emacs 22 (CC mode
+;;   5.31). M-x php-mode-version shows version.  Provide end-of-defun
+;;   beginning-of-defun functionality. Support add-log library.
+;;   Fix __CLASS__ constant (Ian Eure).  Allow imenu to see visibility
+;;   declarations -- "private", "public", "protected". (Bill Lovett)
+;;
+;; 1.3
+;;   Changed the definition of # using a tip from Stefan
+;;   Monnier to correct highlighting and indentation. (Lennart Borgman)
+;;   Changed the highlighting of the HTML part. (Lennart Borgman)
+;;
+;; 1.2
+;;   Implemented php-show-arglist, C-. (Engelke Eschner)
+;;   Implemented php-complete-function, M-tab (Engelke Eschner)
+;;   Re-enabled # comment detection in GNU Emacs (Urban Müller)
+;;   Fixed some keybindings and default settings (Engelke Eschner)
+;;
+;; 1.1
+;;   Added PHP5 support (Giacomo Tesio)
+;;     known problem: doesn't highlight after first 'implements'
+;;   Better XEmacs compatibility (imenu, regexp, and comments!) (Ville Skytta)
+;;   Improvement to php-conditional-key regexp (Eric Mc Sween)
+
+;; 1.05
+;;   Incorporated speedbar defs by Gerrit Riessen
+;;   Add "foreach" to conditional introducing keywords (Nils Rennebarth)
+;;   Cleared the Changelog
+;;   Moved contribution credits into comments above
+
+
+;;; Code:
+
+(require 'speedbar)
+(require 'font-lock)
+(require 'cc-mode)
+(require 'custom)
+(require 'etags)
+(eval-when-compile
+  (require 'regexp-opt))
+
+;; Local variables
+(defgroup php nil
+  "Major mode `php-mode' for editing PHP code."
+  :prefix "php-"
+  :group 'languages)
+
+(defcustom php-default-face 'default
+  "Default face in `php-mode' buffers."
+  :type 'face
+  :group 'php)
+
+(defcustom php-speedbar-config t
+  "When set to true automatically configures Speedbar to observe PHP files.
+Ignores php-file patterns option; fixed to expression \"\\.\\(inc\\|php[s34]?\\)\""
+  :type 'boolean
+  :set (lambda (sym val)
+         (set-default sym val)
+         (if (and val (boundp 'speedbar))
+             (speedbar-add-supported-extension
+	      "\\.\\(inc\\|php[s34]?\\|phtml\\)")))
+  :group 'php)
+
+(defcustom php-mode-speedbar-open nil
+  "Normally `php-mode' starts with the speedbar closed.
+Turning this on will open it whenever `php-mode' is loaded."
+  :type 'boolean
+  :set (lambda (sym val)
+         (set-default sym val)
+         (when val
+             (speedbar 1)))
+  :group 'php)
+
+(defvar php-imenu-generic-expression
+ '(
+   ("All Functions"
+    "^\\s-*\\(?:\\(?:abstract\\|final\\|private\\|protected\\|public\\|static\\)\\s-+\\)*function\\s-+\\(\\(?:\\sw\\|\\s_\\)+\\)\\s-*(" 1)
+   ("Classes"
+    "^\\s-*class\\s-+\\(\\(?:\\sw\\|\\s_\\)+\\)\\s-*" 1)
+   ("Public Methods"
+    "^\\s-*\\(?:\\(?:abstract\\|final\\)\\s-+\\)?public\\s-+\\(?:static\\s-+\\)?function\\s-+\\(\\(?:\\sw\\|\\s_\\)+\\)\\s-*(" 1)
+   ("Protected Methods"
+    "^\\s-*\\(?:\\(?:abstract\\|final\\)\\s-+\\)?protected\\s-+\\(?:static\\s-+\\)?function\\s-+\\(\\(?:\\sw\\|\\s_\\)+\\)\\s-*(" 1)
+   ("Private Methods"
+    "^\\s-*\\(?:\\(?:abstract\\|final\\)\\s-+\\)?private\\s-+\\(?:static\\s-+\\)?function\\s-+\\(\\(?:\\sw\\|\\s_\\)+\\)\\s-*(" 1)
+   )
+ "Imenu generic expression for PHP Mode. See `imenu-generic-expression'."
+ )
+
+(defcustom php-manual-url "http://www.php.net/manual/en/"
+  "URL at which to find PHP manual.
+You can replace \"en\" with your ISO language code."
+  :type 'string
+  :group 'php)
+
+(defcustom php-search-url "http://www.php.net/"
+  "URL at which to search for documentation on a word"
+  :type 'string
+  :group 'php)
+
+(defcustom php-completion-file ""
+  "Path to the file which contains the function names known to PHP"
+  :type 'string
+  :group 'php)
+
+(defcustom php-manual-path ""
+  "Path to the directory which contains the PHP manual"
+  :type 'string
+  :group 'php)
+
+;;;###NOautoload
+(defcustom php-file-patterns '("\\.php[s34]?\\'" "\\.phtml\\'" "\\.inc\\'")
+  "List of file patterns for which to automatically invoke `php-mode'."
+  :type '(repeat (regexp :tag "Pattern"))
+  :set (lambda (sym val)
+         (set-default sym val)
+         (let ((php-file-patterns-temp val))
+           (while php-file-patterns-temp
+             (add-to-list 'auto-mode-alist
+                          (cons (car php-file-patterns-temp) 'php-mode))
+             (setq php-file-patterns-temp (cdr php-file-patterns-temp)))))
+  :group 'php)
+
+(defcustom php-mode-hook nil
+  "List of functions to be executed on entry to `php-mode'."
+  :type 'hook
+  :group 'php)
+
+(defcustom php-mode-pear-hook nil
+  "Hook called when a PHP PEAR file is opened with `php-mode'."
+  :type 'hook
+  :group 'php)
+
+(defcustom php-mode-force-pear nil
+  "Normally PEAR coding rules are enforced only when the filename contains \"PEAR\"
+Turning this on will force PEAR rules on all PHP files."
+  :type 'boolean
+  :group 'php)
+
+(defconst php-mode-modified "2008-10-20"
+  "PHP Mode build date.")
+
+(defun php-mode-version ()
+  "Display string describing the version of PHP mode"
+  (interactive)
+  (message "PHP mode %s of %s"
+	   php-mode-version-number php-mode-modified))
+
+(defconst php-beginning-of-defun-regexp
+  "^\\s-*\\(?:\\(?:abstract\\|final\\|private\\|protected\\|public\\|static\\)\\s-+\\)*function\\s-+&?\\(\\(?:\\sw\\|\\s_\\)+\\)\\s-*("
+  "Regular expression for a PHP function.")
+
+(defun php-beginning-of-defun (&optional arg)
+  "Move to the beginning of the ARGth PHP function from point.
+Implements PHP version of `beginning-of-defun-function'."
+  (interactive "p")
+  (let ((arg (or arg 1)))
+    (while (> arg 0)
+      (re-search-backward php-beginning-of-defun-regexp
+			  nil 'noerror)
+      (setq arg (1- arg)))
+    (while (< arg 0)
+      (end-of-line 1)
+      (let ((opoint (point)))
+	(beginning-of-defun 1)
+	(forward-list 2)
+	(forward-line 1)
+	(if (eq opoint (point))
+	    (re-search-forward php-beginning-of-defun-regexp
+			       nil 'noerror))
+	(setq arg (1+ arg))))))
+
+(defun php-end-of-defun (&optional arg)
+  "Move the end of the ARGth PHP function from point.
+Implements PHP befsion of `end-of-defun-function'
+
+See `php-beginning-of-defun'."
+  (interactive "p")
+  (php-beginning-of-defun (- (or arg 1))))
+
+
+(defvar php-completion-table nil
+  "Obarray of tag names defined in current tags table and functions know to PHP.")
+
+(defvar php-warned-bad-indent nil)
+(make-variable-buffer-local 'php-warned-bad-indent)
+
+;; Do it but tell it is not good if html tags in buffer.
+(defun php-check-html-for-indentation ()
+  (let ((html-tag-re "^\\s-*")
+        (here (point)))
+    (if (not (or (re-search-forward html-tag-re (line-end-position) t)
+                 (re-search-backward html-tag-re (line-beginning-position) t)))
+        t
+      (goto-char here)
+      (setq php-warned-bad-indent t)
+      (lwarn 'php-indent :warning
+	     "\n\t%s\n\t%s\n\t%s\n"
+	     "Indentation fails badly with mixed HTML and PHP."
+	     "Look for an Emacs Lisp library that supports \"multiple"
+	     "major modes\" like mumamo, mmm-mode or multi-mode.")
+      nil)))
+
+(defun php-cautious-indent-region (start end &optional quiet)
+  (if (or php-warned-bad-indent
+          (php-check-html-for-indentation))
+      (funcall 'c-indent-region start end quiet)))
+
+(defun php-cautious-indent-line ()
+  (if (or php-warned-bad-indent
+          (php-check-html-for-indentation))
+      (funcall 'c-indent-line)))
+
+(defconst php-tags '("" "[^_]?")
+    '(1 font-lock-constant-face))
+
+   ;; Fontify keywords
+   (cons
+    (concat "[^_$]?\\<\\(" php-keywords "\\)\\>[^_]?")
+    '(1 font-lock-keyword-face))
+
+   ;; Fontify keywords and targets, and case default tags.
+   (list "[^_$]?\\<\\(break\\|case\\|continue\\)\\>\\s-*\\(-?\\(?:\\sw\\|\\s_\\)+\\)?"
+	 '(1 font-lock-keyword-face) '(2 font-lock-constant-face t t))
+   ;; This must come after the one for keywords and targets.
+   '(":" ("^\\s-*\\(\\(?:\\sw\\|\\s_\\)+\\)\\s-*:\\s-*$"
+	  (beginning-of-line) (end-of-line)
+	  (1 font-lock-constant-face)))
+
+   ;; treat 'print' as keyword only when not used like a function name
+   '("\\[^_]?" (1 font-lock-keyword-face))
+
+   ;; Fontify PHP tag
+   (cons php-tags-key font-lock-preprocessor-face)
+
+   ;; Fontify ASP-style tag
+   '("<\\%\\(=\\)?" . font-lock-preprocessor-face)
+   '("\\%>" . font-lock-preprocessor-face)
+
+   )
+  "Subdued level highlighting for PHP mode.")
+
+(defconst php-font-lock-keywords-2
+  (append
+   php-font-lock-keywords-1
+   (list
+
+    ;; class declaration
+    '("[^_]?\\<\\(class\\|interface\\)\\s-*\\(\\(?:\\sw\\|\\s_\\)+\\)?"
+      (1 font-lock-keyword-face) (2 font-lock-type-face nil t))
+    ;; handle several words specially, to include following word,
+    ;; thereby excluding it from unknown-symbol checks later
+    ;; FIX to handle implementing multiple
+    ;; currently breaks on "class Foo implements Bar, Baz"
+    '("\\<\\(new\\|extends\\|implements\\)\\s-+\\$?\\(\\(?:\\sw\\|\\s_\\)+\\)"
+      (1 font-lock-keyword-face) (2 font-lock-type-face))
+
+    ;; function declaration
+    '("\\<\\(function\\)\\s-+&?\\(\\(?:\\sw\\|\\s_\\)+\\)\\s-*("
+      (1 font-lock-keyword-face)
+      (2 font-lock-function-name-face nil t))
+
+    ;; class hierarchy
+    '("[^_$]?\\<\\(self\\|parent\\)\\>[^_]?" (1 font-lock-constant-face nil nil))
+
+    ;; method and variable features
+    '("\\<\\(private\\|protected\\|public\\)\\s-+\\$?\\(?:\\sw\\|\\s_\\)+"
+      (1 font-lock-keyword-face))
+
+    ;; method features
+    '("^\\s-*\\(abstract\\|static\\|final\\)\\s-+\\$?\\(?:\\sw\\|\\s_\\)+"
+      (1 font-lock-keyword-face))
+
+    ;; variable features
+    '("^\\s-*\\(static\\|const\\)\\s-+\\$?\\(?:\\sw\\|\\s_\\)+"
+      (1 font-lock-keyword-face))
+    ))
+  "Medium level highlighting for PHP mode.")
+
+(defconst php-font-lock-keywords-3
+  (append
+   php-font-lock-keywords-2
+   (list
+
+    ;;  or  for HTML
+    ;;'(" ]*>" . font-lock-constant-face)
+    ;;'("]*" . font-lock-constant-face)
+    ;;'("
+    '("<[^>]*\\(>\\)" (1 font-lock-constant-face))
+
+    ;; HTML tags
+    '("\\(<[a-z]+\\)[[:space:]]+\\([a-z:]+=\\)[^>]*?" (1 font-lock-constant-face) (2 font-lock-constant-face) )
+    '("\"[[:space:]]+\\([a-z:]+=\\)" (1 font-lock-constant-face))
+
+    ;; HTML entities
+    ;;'("&\\w+;" . font-lock-variable-name-face)
+
+    ;; warn about '$' immediately after ->
+    '("\\$\\(?:\\sw\\|\\s_\\)+->\\s-*\\(\\$\\)\\(\\(?:\\sw\\|\\s_\\)+\\)"
+      (1 font-lock-warning-face) (2 php-default-face))
+
+    ;; warn about $word.word -- it could be a valid concatenation,
+    ;; but without any spaces we'll assume $word->word was meant.
+    '("\\$\\(?:\\sw\\|\\s_\\)+\\(\\.\\)\\sw"
+      1 font-lock-warning-face)
+
+    ;; Warn about ==> instead of =>
+    '("==+>" . font-lock-warning-face)
+
+    ;; exclude casts from bare-word treatment (may contain spaces)
+    `(,(concat "(\\s-*\\(" php-types "\\)\\s-*)")
+      1 font-lock-type-face)
+
+    ;; PHP5: function declarations may contain classes as parameters type
+    `(,(concat "[(,]\\s-*\\(\\(?:\\sw\\|\\s_\\)+\\)\\s-+&?\\$\\(?:\\sw\\|\\s_\\)+\\>")
+      1 font-lock-type-face)
+
+    ;; Fontify variables and function calls
+    '("\\$\\(this\\|that\\)\\W" (1 font-lock-constant-face nil nil))
+    `(,(concat "\\$\\(" php-superglobals "\\)\\W")
+      (1 font-lock-constant-face nil nil)) ; $_GET & co
+    '("\\$\\(\\(?:\\sw\\|\\s_\\)+\\)" (1 font-lock-variable-name-face)) ; $variable
+    '("->\\(\\(?:\\sw\\|\\s_\\)+\\)" (1 font-lock-variable-name-face t t)) ; ->variable
+    '("->\\(\\(?:\\sw\\|\\s_\\)+\\)\\s-*(" . (1 php-default-face t t)) ; ->function_call
+    '("\\(\\(?:\\sw\\|\\s_\\)+\\)::\\(?:\\sw\\|\\s_\\)+\\s-*(?" . (1 font-lock-type-face)) ; class::member
+    '("::\\(\\(?:\\sw\\|\\s_\\)+\\>[^(]\\)" . (1 php-default-face)) ; class::constant
+    '("\\<\\(?:\\sw\\|\\s_\\)+\\s-*[[(]" . php-default-face)	; word( or word[
+    '("\\<[0-9]+" . php-default-face)		; number (also matches word)
+
+    ;; Warn on any words not already fontified
+    '("\\<\\(?:\\sw\\|\\s_\\)+\\>" . font-lock-warning-face)
+
+    ))
+  "Gauchy level highlighting for PHP mode.")
+
+;; Create "php-default-face" symbol for GNU Emacs so that both XEmacs
+;; and GNU emacs can refer to the default face.
+(unless (boundp 'php-default-face)
+   (defvar php-default-face 'php-default-face))
+
+;; Create faces for XEmacs
+(when (featurep 'xemacs)
+  (unless (boundp 'font-lock-keyword-face)
+    (copy-face 'bold 'font-lock-keyword-face))
+  (unless (boundp 'font-lock-constant-face)
+    (copy-face 'font-lock-keyword-face 'font-lock-constant-face)))
+
+(provide 'php-mode)
+
+;;; php-mode.el ends here
diff --git a/elpa-to-submit/nxhtml/related/smarty-mode-vdebout.el b/elpa-to-submit/nxhtml/alts/smarty-mode-vdebout.el
similarity index 100%
rename from elpa-to-submit/nxhtml/related/smarty-mode-vdebout.el
rename to elpa-to-submit/nxhtml/alts/smarty-mode-vdebout.el
diff --git a/elpa-to-submit/nxhtml/related/snippet.el b/elpa-to-submit/nxhtml/alts/snippet.el
similarity index 100%
rename from elpa-to-submit/nxhtml/related/snippet.el
rename to elpa-to-submit/nxhtml/alts/snippet.el
diff --git a/elpa-to-submit/nxhtml/autostart.el b/elpa-to-submit/nxhtml/autostart.el
index a46c4bdb08..5e837de4a8 100644
--- a/elpa-to-submit/nxhtml/autostart.el
+++ b/elpa-to-submit/nxhtml/autostart.el
@@ -1,9 +1,11 @@
+(setq message-log-max t)
+(setq debug-on-error t)
 ;;; autostart.el --- Load nxhtml
 ;;
 ;; Author: By: Lennart Borgman
-;; Created: Fri Dec 15 10:22:41 2006
+;; Created: Fri Dec 15 2006
 ;; Version:
-;; Last-Updated: 2008-03-06T23:49:43+0100 Thu
+;; Last-Updated: 2009-04-30 Thu
 ;; Keywords:
 ;; Compatibility:
 ;;
@@ -40,45 +42,145 @@
 ;;; Code:
 
 (message "Nxml/Nxhtml Autostart.el loading ...")
+(defconst nxhtml-load-time-start (float-time))
 
-;; ;; In case an old Emacs 22 beta is used, ie mostly for Debian/Ubuntu
-;; ;; at the moment. Suggested by Hadron Quark, thanks.
-;; (unless (fboundp 'define-globalized-minor-mode)
-;;   (defalias 'define-globalized-minor-mode 'define-global-minor-mode))
-
-(defvar nxhtml-install-dir
-  (file-name-directory (if load-file-name load-file-name buffer-file-name))
+(defconst nxhtml-install-dir
+  (file-name-directory (or load-file-name
+                           (when (boundp 'bytecomp-filename) bytecomp-filename)
+                           buffer-file-name))
   "Installation directory for nXhtml.")
+;; (setq nxhtml-install-dir (file-name-directory
+;;                           (or load-file-name
+;;                               (when (boundp 'bytecomp-filename) bytecomp-filename)
+;;                               buffer-file-name)))
+
+;; (defun nxhtml-custom-load-and-get-value (symbol)
+;;   (custom-load-symbol symbol)
+;;   (symbol-value symbol))
+
+(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.
+  (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
+    ;;(message "nx:symbol = %s, standard/saved=%s/%s, custom-set=%s, boundp=%s,val=%s" symbol standard saved custom-set is-boundp (when is-boundp (symbol-value symbol)))
+    (setq custom-set t) ;; Not available here
+    (when (or custom-initialize
+              (and saved
+                   (not (equal (car saved) (symbol-value symbol)))
+                   custom-set))
+      ;;(message "nx:custom-load-symbol %s" symbol)
+      (funcall set symbol (car saved))
+      (custom-load-symbol symbol)
+      )))
+
+(defun nxhtml-list-loaded-features ()
+  (interactive)
+  (let ((buf (when (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 ""))))
 
 (unless (featurep 'nxhtml-autostart)
-  ;; Provide the feature to avoid loading looping on error.
+  ;; Provide the feature here to avoid loading looping on error.
   (provide 'nxhtml-autostart)
-  ;; Use the css-mode that comes with Emacs if there is one.
-  ;; Fix-me: remove this loading later:
-  (when (fboundp 'css-mode) (require 'css-mode))
-  (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))))
-    (add-to-list 'load-path util-dir)
+
+  (if (< emacs-major-version 23)
+      (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/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)
+
+    (message "... nXhtml loading %.1f seconds elapsed ..." (- (float-time) nxhtml-load-time-start))
 
     ;; Autoloading etc
-    (require 'as-external)
-    (load (expand-file-name "nxhtml-loaddefs.el" nxhtml-install-dir))
-    ;; Use the nxml-mode that comes with Emacs if available:
-    (unless (fboundp 'nxml-mode)
-      (load (expand-file-name "nxml-mode-20041004/rng-auto"
-                              nxhtml-install-dir)))
+
+    ;; Fix-me: Why must as-external be loaded? Why doesn't it work in batch?
+    ;;(unless noninteractive (require 'as-external))
+
+    (load (expand-file-name "nxhtml-loaddefs" nxhtml-install-dir))
+    (message "... nXhtml loading %.1f seconds elapsed ..." (- (float-time) nxhtml-load-time-start))
+
+    ;; Turn on `nxhtml-global-minor-mode' unconditionally
+    (nxhtml-global-minor-mode 1)
+    (message "... nXhtml loading %.1f seconds elapsed ..." (- (float-time) nxhtml-load-time-start))
+
     ;; Patch the rnc include paths
-    (load-file (expand-file-name "etc/schema/schema-path-patch.el"
-                                 nxhtml-install-dir))
-    (rncpp-patch-xhtml-loader)
+    (when (fboundp 'nxml-mode)
+      (load (expand-file-name "etc/schema/schema-path-patch"
+                              nxhtml-install-dir))
+      (rncpp-patch-xhtml-loader))
+    (message "... nXhtml loading %.1f seconds elapsed ..." (- (float-time) nxhtml-load-time-start))
+
     ;; Load nXhtml
-    (load (expand-file-name "nxhtml/nxhtml-autoload"
-                            nxhtml-install-dir))))
+    (load (expand-file-name "nxhtml/nxhtml-autoload" nxhtml-install-dir)))
+    (message "... nXhtml loading %.1f seconds elapsed ..." (- (float-time) nxhtml-load-time-start))
+
+  ;; Tell what have been loaded of nXhtml:
+  (nxhtml-list-loaded-features)
+
+  ;; 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/elpa-to-submit/nxhtml/nxhtml/nxhtml-anything-1.el b/elpa-to-submit/nxhtml/autostart22.el
similarity index 54%
rename from elpa-to-submit/nxhtml/nxhtml/nxhtml-anything-1.el
rename to elpa-to-submit/nxhtml/autostart22.el
index f6ff5a853c..5784add9c8 100644
--- a/elpa-to-submit/nxhtml/nxhtml/nxhtml-anything-1.el
+++ b/elpa-to-submit/nxhtml/autostart22.el
@@ -1,22 +1,26 @@
-;;; nxhtml-anything-1.el ---
+;;; autostart22.el --- Example of autostart file for Emacs22
 ;;
 ;; Author: Lennart Borgman (lennart O borgman A gmail O com)
-;; Created: 2008-08-07T14:34:20+0200 Thu
+;; Created: 2009-01-01 Thu
 ;; Version:
-;; Last-Updated:
+;; Last-Updated: 2009-01-05 Mon
 ;; URL:
 ;; Keywords:
 ;; Compatibility:
 ;;
 ;; Features that might be required by this library:
 ;;
-;;   None
+;;   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.
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
@@ -44,30 +48,23 @@
 ;;
 ;;; Code:
 
-;; Found this on the web. Maybe this could be an alternative completion function?
-(require 'anything)
-(defmacro nxhtml-with-anything-sources (sources &rest body)
-  (let ((saved-anything-souces (gensym)))
-    `(let ((,saved-anything-souces anything-sources))
-       (unwind-protect
-           (let ((anything-sources ,sources))
-             ,@body)
-         (setq anything-sources ,saved-anything-souces)))))
+(let ((debug-on-error t))
+  (unless (= emacs-major-version 22)
+    (error "This file is for Emacs 22 only"))
 
-(defadvice popcmp-completing-read (around popcml-with-anything)
-  (let* ((table (ad-get-arg 1))
-         (alt-sets (apply 'append (mapcar 'cdr (ad-get-arg 9))));(apply 'append (mapcar 'cdr nxhtml-tag-sets)))
-         (cands (cond ((not (listp table)) alt-sets)
-                      (t table)))
-         (source
-          `((name . "nxhtml-completion")
-            (candidates . ,cands)
-            (action . (("select" . (lambda (candidate)
-                                     (setq ad-return-value candidate))))))))
-    (nxhtml-with-anything-sources (list source)
-      (anything))))
+  (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")
+                            (concat this-dir "../nxml-mode/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)))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; nxhtml-anything-1.el ends here
+;;; autostart22.el ends here
diff --git a/elpa-to-submit/nxhtml/emacs22.cmd b/elpa-to-submit/nxhtml/emacs22.cmd
new file mode 100644
index 0000000000..d50ac962c7
--- /dev/null
+++ b/elpa-to-submit/nxhtml/emacs22.cmd
@@ -0,0 +1 @@
+c:\emacs\emacs-22.3\bin\emacs.exe -Q --debug-init -l autostart.el
diff --git a/elpa-to-submit/nxhtml/etc/img/pause/pause.jpg b/elpa-to-submit/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/elpa-to-submit/nxhtml/etc/img/pause/pause2.jpg b/elpa-to-submit/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/elpa-to-submit/nxhtml/etc/schema/rncpp-patch-files.done b/elpa-to-submit/nxhtml/etc/schema/rncpp-patch-files.done
deleted file mode 100644
index 2383bff5d8..0000000000
--- a/elpa-to-submit/nxhtml/etc/schema/rncpp-patch-files.done
+++ /dev/null
@@ -1 +0,0 @@
-2008-0818T16:43:47+0200
\ No newline at end of file
diff --git a/elpa-to-submit/nxhtml/etc/schema/schema-path-patch.el b/elpa-to-submit/nxhtml/etc/schema/schema-path-patch.el
index d2962b9780..a6d59fc432 100644
--- a/elpa-to-submit/nxhtml/etc/schema/schema-path-patch.el
+++ b/elpa-to-submit/nxhtml/etc/schema/schema-path-patch.el
@@ -45,8 +45,6 @@
 ;;
 ;;; Code:
 
-;;(eval-when-compile (require 'cl))
-
 (defvar rncpp-this-dir
   (file-name-as-directory
    (file-name-directory
@@ -66,28 +64,6 @@
       (error "Can't find schema-dir=%s" schema-dir))
     schema-dir))
 
-;; (defun rncpp-patch-file (file)
-;;   (let ((schema-dir (rncpp-get-nxml-schema-dir))
-;;         relative-inc-file
-;;         absolute-inc-file
-;;         (buf (find-file-noselect file))
-;;         file-dir
-;;         )
-;;     (with-current-buffer buf
-;;       (setq file-dir (file-name-directory buffer-file-name))
-;;       (widen)
-;;       (goto-char (point-min))
-;;       (setq absolute-inc-file (expand-file-name "xhtml.rnc" schema-dir))
-;;       (assert (file-exists-p absolute-inc-file) t)
-;;       (setq relative-inc-file
-;;             (file-relative-name absolute-inc-file file-dir))
-;;       (assert (file-exists-p relative-inc-file) t)
-;;       (when (re-search-forward "include \"\\(.*[^a-zA-Z0-9-]xhtml.rnc\\)\"" nil t)
-;;         (replace-match relative-inc-file t t nil 1)
-;;         (basic-save-buffer)
-;;         (kill-buffer (current-buffer))
-;;         (message "Patched %s" file)))))
-
 ;; 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."
@@ -99,7 +75,7 @@
          (schema-relative-dir (file-relative-name schema-dir))
          (loader-string (concat "include \""
                                 schema-relative-dir
-                                "xhtml.rnc\"")))
+                                "xhtml.rnc\"\n")))
     (when loader-buf (kill-buffer loader-buf))
     (setq loader-buf (find-file-noselect loader-path))
     (with-current-buffer loader-buf
@@ -115,28 +91,5 @@
       (basic-save-buffer)
       (kill-buffer (current-buffer)))))
 
-;; (defun rncpp-patch-files (&optional no-check-done)
-;;   "Patch rnc files in this directory.
-;; This will make the includes from here point to those that
-;; `nxml-mode' use."
-;;   (interactive (list t))
-;;   (let ((default-directory rncpp-this-dir)
-;;         (done nil)
-;;         (done-mark "rncpp-patch-files.done"))
-;;     (message "Patching rnc files path in %s" default-directory)
-;;     (unless no-check-done
-;;       (setq done (file-exists-p done-mark)))
-;;     (if done
-;;         (message "... patching was already done")
-;;       (rncpp-patch-file "mjt.rnc")
-;;       (rncpp-patch-file "qtmstr-xhtml.rnc")
-;;       (with-current-buffer (find-file-noselect done-mark)
-;;         (insert (format-time-string "%Y-%m%dT%T%z"))
-;;         (basic-save-buffer)
-;;         (kill-buffer (current-buffer)))
-;;       (message "... ready patching"))))
-
-;;(rncpp-patch-files)
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; schema-path-patch.el ends here
diff --git a/elpa-to-submit/nxhtml/nxhtml-loaddefs.el b/elpa-to-submit/nxhtml/nxhtml-loaddefs.el
index da62fd54f3..3c4419161d 100644
--- a/elpa-to-submit/nxhtml/nxhtml-loaddefs.el
+++ b/elpa-to-submit/nxhtml/nxhtml-loaddefs.el
@@ -3,9 +3,31 @@
 ;; This file should be updated by `nxhtmlmaint-get-file-autoloads',
 ;; `nxhtmlmaint-get-dir-autoloads' or `nxhtmlmaint-get-all-autoloads'.
 
+;;;### (autoloads (html-pagetoc-rebuild-toc html-pagetoc-insert-toc)
+;;;;;;  "../nxhtml/html-pagetoc" "nxhtml/html-pagetoc.el" (18974
+;;;;;;  59066))
+;;; Generated autoloads from nxhtml/html-pagetoc.el
+
+(autoload 'html-pagetoc-insert-toc "../nxhtml/html-pagetoc" "\
+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)
+
+(autoload 'html-pagetoc-rebuild-toc "../nxhtml/html-pagetoc" "\
+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)
-;;;;;;  "../nxhtml/html-site" "nxhtml/html-site.el" (18658 47798))
+;;;;;;  "../nxhtml/html-site" "nxhtml/html-site.el" (18790 45398))
 ;;; Generated autoloads from nxhtml/html-site.el
 
 (autoload 'html-site-buffer-or-dired-file-name "../nxhtml/html-site" "\
@@ -41,33 +63,137 @@ Query replace in current site's files.
 
 ;;;***
 
-;;;### (autoloads (inlimg-toggle-img-display inlimg-mode) "../nxhtml/inlimg"
-;;;;;;  "nxhtml/inlimg.el" (18658 47798))
-;;; Generated autoloads from nxhtml/inlimg.el
+;;;### (autoloads nil "../nxhtml/html-toc" "nxhtml/html-toc.el" (18974
+;;;;;;  59066))
+;;; Generated autoloads from nxhtml/html-toc.el
 
-(autoload 'inlimg-mode "../nxhtml/inlimg" "\
-Display  images inline.
-Images are displayed below the  tag using the margins in
-`inlimg-margins'.  The whole image or a slice of it may be
-displayed, see `inlimg-slice'.
+(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))
 
-See also the command `inlimg-toggle-img-display'.
+;;;***
+
+;;;### (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) "../nxhtml/html-upl"
+;;;;;;  "nxhtml/html-upl.el" (18969 63118))
+;;; Generated autoloads from nxhtml/html-upl.el
 
-\(fn &optional ARG)" t nil)
+(autoload 'html-upl-upload-site-with-toc "../nxhtml/html-upl" "\
+Not documented
 
-(autoload 'inlimg-toggle-img-display "../nxhtml/inlimg" "\
-Toggle display of img image at point POINT.
-See also the command `inlimg-mode'.
+\(fn)" t nil)
 
-\(fn POINT)" t nil)
+(autoload 'html-upl-upload-site "../nxhtml/html-upl" "\
+Not documented
+
+\(fn)" t nil)
+
+(autoload 'html-upl-remote-dired "../nxhtml/html-upl" "\
+Start dired for remote directory or its parent/ancestor.
+
+\(fn DIRNAME)" t nil)
+
+(autoload 'html-upl-upload-file "../nxhtml/html-upl" "\
+Upload a single file in a site.
+For the definition of a site see `html-site-current'.
+
+\(fn FILENAME)" t nil)
+
+(autoload 'html-upl-edit-remote-file "../nxhtml/html-upl" "\
+Not documented
+
+\(fn)" t nil)
+
+(autoload 'html-upl-edit-remote-file-with-toc "../nxhtml/html-upl" "\
+Not documented
+
+\(fn)" t nil)
+
+(autoload 'html-upl-ediff-file "../nxhtml/html-upl" "\
+Run ediff on local and remote file.
+FILENAME could be either the remote or the local file.
+
+\(fn FILENAME)" t nil)
 
 ;;;***
 
-;;;### (autoloads (nxhtml-validation-header-mode nxhtml-mode) "../nxhtml/nxhtml"
-;;;;;;  "nxhtml/nxhtml.el" (18735 15066))
+;;;### (autoloads (nxhtml-features-check nxhtml-customize) "../nxhtml/nxhtml"
+;;;;;;  "nxhtml/nxhtml.el" (19063 47343))
 ;;; Generated autoloads from nxhtml/nxhtml.el
 
-(autoload 'nxhtml-mode "../nxhtml/nxhtml" "\
+(autoload 'nxhtml-customize "../nxhtml/nxhtml" "\
+Customize nXhtml.
+
+\(fn)" t nil)
+
+(autoload 'nxhtml-features-check "../nxhtml/nxhtml" "\
+Check if external modules used by nXhtml are found.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads (nxhtml-report-bug) "../nxhtml/nxhtml-bug" "nxhtml/nxhtml-bug.el"
+;;;;;;  (18775 60002))
+;;; Generated autoloads from nxhtml/nxhtml-bug.el
+
+(autoload 'nxhtml-report-bug "../nxhtml/nxhtml-bug" "\
+Report a bug in nXhtml.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads (nxhtml-overview nxhtml-global-minor-mode nxhtml-browse-region
+;;;;;;  nxhtml-browse-file nxhtml-edit-with-gimp) "../nxhtml/nxhtml-menu"
+;;;;;;  "nxhtml/nxhtml-menu.el" (19064 18624))
+;;; Generated autoloads from nxhtml/nxhtml-menu.el
+
+(autoload 'nxhtml-edit-with-gimp "../nxhtml/nxhtml-menu" "\
+Edit with GIMP buffer or file at point.
+
+\(fn)" t nil)
+
+(autoload 'nxhtml-browse-file "../nxhtml/nxhtml-menu" "\
+View file in web browser.
+
+\(fn FILE)" t nil)
+
+(autoload 'nxhtml-browse-region "../nxhtml/nxhtml-menu" "\
+View region in web browser.
+
+\(fn)" t nil)
+
+(defvar nxhtml-global-minor-mode nil "\
+Non-nil if Nxhtml-Global minor mode is enabled.
+See the command `nxhtml-global-minor-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 `nxhtml-global-minor-mode'.")
+
+(nxhtml-custom-autoload 'nxhtml-global-minor-mode "../nxhtml/nxhtml-menu" nil)
+
+(autoload 'nxhtml-global-minor-mode "../nxhtml/nxhtml-menu" "\
+Toggle Nxhtml minor mode in every possible buffer.
+With prefix ARG, turn Nxhtml-Global minor mode on if and only if ARG is positive.
+Nxhtml minor mode is enabled in all buffers where `nxhtml-maybe-turn-on-minor-mode' would do it.
+See `nxhtml-minor-mode' for more information on Nxhtml minor mode.
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'nxhtml-overview "../nxhtml/nxhtml-menu" "\
+Show a HTML page with an overview of nXhtml.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads (nxhtml-validation-header-mode nxhtml-short-tag-help
+;;;;;;  nxhtml-mode) "../nxhtml/nxhtml-mode" "nxhtml/nxhtml-mode.el"
+;;;;;;  (19061 60294))
+;;; Generated autoloads from nxhtml/nxhtml-mode.el
+
+(when (fboundp 'nxml-mode)
+(autoload 'nxhtml-mode "../nxhtml/nxhtml-mode" "\
 Major mode for editing XHTML documents.
 It is based on `nxml-mode' and adds some features that are useful
 when editing XHTML files.\\
@@ -169,9 +295,15 @@ point in the mumamo chunk you want to know the key bindings in.
   with this if you have followed the installation instructions
   for nXhtml.
 
-\(fn)" t nil)
+\(fn)" t nil))
 
-(autoload 'nxhtml-validation-header-mode "../nxhtml/nxhtml" "\
+(autoload 'nxhtml-short-tag-help "../nxhtml/nxhtml-mode" "\
+Display description of tag TAG.  If TAG is omitted, try tag at point.
+
+\(fn TAG)" t nil)
+
+(when (fboundp 'nxml-mode)
+(autoload 'nxhtml-validation-header-mode "../nxhtml/nxhtml-mode" "\
 If on use a Fictive XHTML Validation Header for the buffer.
 See `nxhtml-set-validation-header' for information about Fictive XHTML Validation Headers.
 
@@ -180,50 +312,10 @@ This mode may be turned on automatically in two ways:
   `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
-  mumamo is used, see `nxhtml-validation-header-if-mumamo' for
-  further information.
-
-\(fn &optional ARG)" t nil)
-
-;;;***
-
-;;;### (autoloads (nxhtml-report-bug) "../nxhtml/nxhtml-bug" "nxhtml/nxhtml-bug.el"
-;;;;;;  (18654 33920))
-;;; Generated autoloads from nxhtml/nxhtml-bug.el
-
-(autoload 'nxhtml-report-bug "../nxhtml/nxhtml-bug" "\
-Report a bug in nXhtml.
-
-\(fn)" t nil)
-
-;;;***
-
-;;;### (autoloads (nxhtml-global-minor-mode nxhtml-minor-mode) "../nxhtml/nxhtml-menu"
-;;;;;;  "nxhtml/nxhtml-menu.el" (18671 42692))
-;;; Generated autoloads from nxhtml/nxhtml-menu.el
-
-(autoload 'nxhtml-minor-mode "../nxhtml/nxhtml-menu" "\
-Minor mode to turn on some key and menu bindings.
-See `nxhtml-mode' for more information.
-
-\(fn &optional ARG)" t nil)
-
-(defvar nxhtml-global-minor-mode nil "\
-Non-nil if Nxhtml-Global minor mode is enabled.
-See the command `nxhtml-global-minor-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 `nxhtml-global-minor-mode'.")
-
-(custom-autoload 'nxhtml-global-minor-mode "../nxhtml/nxhtml-menu" nil)
-
-(autoload 'nxhtml-global-minor-mode "../nxhtml/nxhtml-menu" "\
-Toggle Nxhtml minor mode in every possible buffer.
-With prefix ARG, turn Nxhtml-Global minor mode on if and only if ARG is positive.
-Nxhtml minor mode is enabled in all buffers where `nxhtml-maybe-turn-on-minor-mode' would do it.
-See `nxhtml-minor-mode' for more information on Nxhtml minor mode.
+  a mumamo multi major mode is used, see
+  `nxhtml-validation-header-if-mumamo' for further information.
 
-\(fn &optional ARG)" t nil)
+\(fn &optional ARG)" t nil))
 
 ;;;***
 
@@ -231,12 +323,14 @@ See `nxhtml-minor-mode' for more information on Nxhtml minor mode.
 ;;;;;;  eruby-nxhtml-mumamo-mode jsp-nxhtml-mumamo-mode smarty-nxhtml-mumamo-mode
 ;;;;;;  mjt-nxhtml-mumamo-mode genshi-nxhtml-mumamo-mode django-nxhtml-mumamo-mode
 ;;;;;;  embperl-nxhtml-mumamo-mode nxhtml-mumamo-mode) "../nxhtml/nxhtml-mumamo"
-;;;;;;  "nxhtml/nxhtml-mumamo.el" (18764 14404))
+;;;;;;  "nxhtml/nxhtml-mumamo.el" (18982 33732))
 ;;; Generated autoloads from nxhtml/nxhtml-mumamo.el
 
 (autoload 'nxhtml-mumamo-mode "../nxhtml/nxhtml-mumamo" "\
 Turn on multiple major modes for (X)HTML with main mode `nxhtml-mode'.
-This covers inlined style and javascript and PHP." t)
+This covers inlined style and javascript and PHP.
+
+See also `mumamo-alt-php-tags-mode'." t)
 
 (autoload 'embperl-nxhtml-mumamo-mode "../nxhtml/nxhtml-mumamo" "\
 Turn on multiple major modes for Embperl files with main mode `nxhtml-mode'.
@@ -277,7 +371,7 @@ This also covers inlined style and javascript." t)
 ;;;***
 
 ;;;### (autoloads (nxml-where-global-mode nxml-where-mode) "../nxhtml/nxml-where"
-;;;;;;  "nxhtml/nxml-where.el" (18658 47798))
+;;;;;;  "nxhtml/nxml-where.el" (19061 60294))
 ;;; Generated autoloads from nxhtml/nxml-where.el
 
 (autoload 'nxml-where-mode "../nxhtml/nxml-where" "\
@@ -292,7 +386,7 @@ 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'.")
 
-(custom-autoload 'nxml-where-global-mode "../nxhtml/nxml-where" nil)
+(nxhtml-custom-autoload 'nxml-where-global-mode "../nxhtml/nxml-where" nil)
 
 (autoload 'nxml-where-global-mode "../nxhtml/nxml-where" "\
 Toggle Nxml-Where mode in every possible buffer.
@@ -302,6 +396,51 @@ See `nxml-where-mode' for more information on Nxml-Where mode.
 
 \(fn &optional ARG)" t nil)
 
+;;;***
+
+;;;### (autoloads (rngalt-set-validation-header) "../nxhtml/rngalt"
+;;;;;;  "nxhtml/rngalt.el" (18982 33732))
+;;; Generated autoloads from nxhtml/rngalt.el
+
+(autoload 'rngalt-set-validation-header "../nxhtml/rngalt" "\
+Not documented
+
+\(fn START-OF-DOC)" nil nil)
+
+;;;***
+
+;;;### (autoloads (tidy-build-menu) "../nxhtml/tidy-xhtml" "nxhtml/tidy-xhtml.el"
+;;;;;;  (19039 48498))
+;;; Generated autoloads from nxhtml/tidy-xhtml.el
+
+(autoload 'tidy-build-menu "../nxhtml/tidy-xhtml" "\
+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-show-tag-ref xhtml-help-tag-at-point
+;;;;;;  xhtml-help-show-css-ref) "../nxhtml/xhtml-help" "nxhtml/xhtml-help.el"
+;;;;;;  (19036 37218))
+;;; Generated autoloads from nxhtml/xhtml-help.el
+
+(autoload 'xhtml-help-show-css-ref "../nxhtml/xhtml-help" "\
+Show CSS reference for CSS property name at point.
+
+\(fn)" t nil)
+
+(autoload 'xhtml-help-tag-at-point "../nxhtml/xhtml-help" "\
+Get xhtml tag name at or before point.
+
+\(fn)" nil nil)
+
+(autoload 'xhtml-help-show-tag-ref "../nxhtml/xhtml-help" "\
+Show xhtml reference for tag name at or before point.
+
+\(fn)" t nil)
+
 ;;;***
 
 ;;;### (autoloads (csharp-mode) "../related/csharp-mode" "related/csharp-mode.el"
@@ -321,18 +460,6 @@ Key bindings:
 
 \(fn)" t nil)
 
-;;;***
-
-;;;### (autoloads (css-mode) "../related/css-mode" "related/css-mode.el"
-;;;;;;  (18248 47980))
-;;; Generated autoloads from related/css-mode.el
- (add-to-list 'auto-mode-alist '("\\.css\\'" . css-mode))
-
-(autoload 'css-mode "../related/css-mode" "\
-Major mode to edit Cascading Style Sheets.
-
-\(fn)" t nil)
-
 ;;;***
 
 ;;;### (autoloads (django-mode) "../related/django" "related/django.el"
@@ -347,26 +474,26 @@ This mode only provides syntax highlighting.
 
 ;;;***
 
-;;;### (autoloads (javascript-mode) "../related/javascript" "related/javascript.el"
-;;;;;;  (18418 45624))
-;;; Generated autoloads from related/javascript.el
+;;;### (autoloads (espresso-mode) "../related/espresso" "related/espresso.el"
+;;;;;;  (19039 48498))
+;;; Generated autoloads from related/espresso.el
 
-(autoload 'javascript-mode "../related/javascript" "\
+(autoload 'espresso-mode "../related/espresso" "\
 Major mode for editing JavaScript source text.
 
 Key bindings:
 
-\\{javascript-mode-map}
+\\{espresso-mode-map}
 
 \(fn)" t nil)
 
 ;;;***
 
-;;;### (autoloads (javascript-mode) "../related/javascript-mozlab"
-;;;;;;  "related/javascript-mozlab.el" (18562 39536))
-;;; Generated autoloads from related/javascript-mozlab.el
+;;;### (autoloads (javascript-mode) "../related/javascript" "related/javascript.el"
+;;;;;;  (18946 55162))
+;;; Generated autoloads from related/javascript.el
 
-(autoload 'javascript-mode "../related/javascript-mozlab" "\
+(autoload 'javascript-mode "../related/javascript" "\
 Major mode for editing JavaScript source text.
 
 Key bindings:
@@ -375,46 +502,10 @@ Key bindings:
 
 \(fn)" t nil)
 
-;;;***
-
-;;;### (autoloads (js2-mode) "../related/js2" "related/js2.el" (18624
-;;;;;;  30036))
-;;; Generated autoloads from related/js2.el
- (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
-
-(autoload 'js2-mode "../related/js2" "\
-Major mode for editing JavaScript code.
-
-\(fn)" t nil)
-
-;;;***
-
-;;;### (autoloads (js2-mode) "../related/js2-mumamo" "related/js2-mumamo.el"
-;;;;;;  (18496 38616))
-;;; Generated autoloads from related/js2-mumamo.el
- (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
-
-(autoload 'js2-mode "../related/js2-mumamo" "\
-Major mode for editing JavaScript code.
-
-\(fn)" t nil)
-
-;;;***
-
-;;;### (autoloads (js2-mode) "../related/js2-new" "related/js2-new.el"
-;;;;;;  (18455 47788))
-;;; Generated autoloads from related/js2-new.el
- (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
-
-(autoload 'js2-mode "../related/js2-new" "\
-Major mode for editing JavaScript code.
-
-\(fn)" t nil)
-
 ;;;***
 
 ;;;### (autoloads (inferior-moz-mode moz-minor-mode) "../related/moz"
-;;;;;;  "related/moz.el" (18654 33920))
+;;;;;;  "related/moz.el" (19048 2102))
 ;;; Generated autoloads from related/moz.el
 
 (autoload 'moz-minor-mode "../related/moz" "\
@@ -441,443 +532,98 @@ Major mode for interacting with Firefox via MozRepl.
 
 ;;;***
 
-;;;### (autoloads (php-mode php-file-patterns) "../related/php-mode"
-;;;;;;  "related/php-mode.el" (18735 15066))
-;;; Generated autoloads from related/php-mode.el
-
-(defvar php-file-patterns '("\\.php[s34]?\\'" "\\.phtml\\'" "\\.inc\\'") "\
-List of file patterns for which to automatically invoke `php-mode'.")
-
-(custom-autoload 'php-file-patterns "../related/php-mode" nil)
-
-(autoload 'php-mode "../related/php-mode" "\
-Major mode for editing PHP code.
-
-\\{php-mode-map}
-
-\(fn)" t nil)
-
-;;;***
-
-;;;### (autoloads (php-mode php-file-patterns) "../related/php-mode-2008-10-23"
-;;;;;;  "related/php-mode-2008-10-23.el" (18688 64648))
-;;; Generated autoloads from related/php-mode-2008-10-23.el
-
-(defvar php-file-patterns '("\\.php[s34]?\\'" "\\.phtml\\'" "\\.inc\\'") "\
-List of file patterns for which to automatically invoke `php-mode'.")
-
-(custom-autoload 'php-file-patterns "../related/php-mode-2008-10-23" nil)
-
-(autoload 'php-mode "../related/php-mode-2008-10-23" "\
-Major mode for editing PHP code.
-
-\\{php-mode-map}
-
-\(fn)" t nil)
-
-;;;***
-
-;;;### (autoloads (smarty-mode) "../related/smarty-mode" "related/smarty-mode.el"
-;;;;;;  (18317 23898))
-;;; Generated autoloads from related/smarty-mode.el
-
-(autoload 'smarty-mode "../related/smarty-mode" "\
-Mode for editing php smarty files.
-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
+;;;### (autoloads (global-mozadd-mirror-mode mozadd-mirror-mode global-mozadd-refresh-edited-on-save-mode
+;;;;;;  mozadd-refresh-edited-on-save-mode) "../related/mozadd" "related/mozadd.el"
+;;;;;;  (19063 53089))
+;;; Generated autoloads from related/mozadd.el
 
+(autoload 'mozadd-refresh-edited-on-save-mode "../related/mozadd" "\
+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.
 
-This manual describes Smarty Mode version 0.0.4.
-
-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' \\[smarty-show-messages]
-     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' \\[smarty-doc-mode]
-     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
-***********
+The mozadd edited file must be shown in Firefox and visible.
 
-In the Smarty Mode, the Smarty functions (like if, while, for, fopen,
-fclose) are predefined in functions called \"Templates\".
+\(fn &optional ARG)" t nil)
 
-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).
+(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'.")
 
-A template can be aborted by using the `C-g' or by lefting empty the
-tempate prompt (in the minibuffer).
+(nxhtml-custom-autoload 'global-mozadd-refresh-edited-on-save-mode "../related/mozadd" nil)
 
-6.1 Customization
-=================
+(autoload 'global-mozadd-refresh-edited-on-save-mode "../related/mozadd" "\
+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.
 
-`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'.
+\(fn &optional ARG)" t nil)
 
-For a complete description of the template customizable variables,
-see *Note Cu01-Pa01-Template::
+(autoload 'mozadd-mirror-mode "../related/mozadd" "\
+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.
 
-6.2 Functions
-=============
+For the mirroring to work the edited file must be shown in
+Firefox and visible.
 
-6.2.1 Smarty Functions
-----------------------
+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'.
 
-For Smarty functions, see PDF or HTML documentation.
+See also `mozadd-refresh-edited-on-save-mode'.
 
-6.2.2 Non-Smarty Functions
---------------------------
+\(fn &optional ARG)" t nil)
 
-`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.
+(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'.")
 
-`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.
+(nxhtml-custom-autoload 'global-mozadd-mirror-mode "../related/mozadd" nil)
 
-`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.
+(autoload 'global-mozadd-mirror-mode "../related/mozadd" "\
+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.
 
-`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.
+\(fn &optional ARG)" t nil)
 
-7 Bugs, Help
-************
+;;;***
+
+;;;### (autoloads (php-mode php-file-patterns) "../related/php-mode"
+;;;;;;  "related/php-mode.el" (19032 52516))
+;;; Generated autoloads from related/php-mode.el
 
-   * To report bugs: Bugtracker
-     (http://bugtracker.morinie.fr/lisp/set_project.php?project_id=2)
+(defvar php-file-patterns '("\\.php[s34]?\\'" "\\.phtml\\'" "\\.inc\\'") "\
+List of file patterns for which to automatically invoke `php-mode'.")
 
-   * To obtain help you can post on the dedicated forum: Forum
-     (http://forum.morinie.fr/lisp/)
+(nxhtml-custom-autoload 'php-file-patterns "../related/php-mode" nil)
 
-8 Key bindings
-**************
+(autoload 'php-mode "../related/php-mode" "\
+Major mode for editing PHP code.
 
-\\{smarty-mode-map}
+\\{php-mode-map}
 
 \(fn)" t nil)
 
 ;;;***
 
-;;;### (autoloads (smarty-mode) "../related/smarty-mode-vdebout"
-;;;;;;  "related/smarty-mode-vdebout.el" (18295 31440))
-;;; Generated autoloads from related/smarty-mode-vdebout.el
+;;;### (autoloads (smarty-mode) "../related/smarty-mode" "related/smarty-mode.el"
+;;;;;;  (19039 48498))
+;;; Generated autoloads from related/smarty-mode.el
 
-(autoload 'smarty-mode "../related/smarty-mode-vdebout" "\
+(autoload 'smarty-mode "../related/smarty-mode" "\
 Smarty Mode
 ***********
 
@@ -911,6 +657,10 @@ Features (new features in bold) :
         - Variable Modifiers
 
         - Plugin (Functions)
+             * BlockRepeatPlugin
+
+             * ClipCache
+
              * Smarty Formtool
 
              * Smarty Paginate
@@ -928,7 +678,7 @@ Features (new features in bold) :
 
 
 
-This manual describes Smarty Mode version 0.0.4.
+This manual describes Smarty Mode version 0.0.5.
 
 2 Installation
 **************
@@ -957,12 +707,12 @@ installed.
 
 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)
+   * 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.4
-     (http://www.morinie.fr/lisp/smarty/download/smarty-0.0.4.tar.gz)
+   * 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
@@ -984,7 +734,7 @@ installation directory.
 
 Example:
      cd /usr/local/share/lisp
-     tar zxvf smarty-0.0.4.tar.gz
+     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.
@@ -1007,7 +757,7 @@ directory to remove the old release.
 Example:
      cd /usr/local/share/lisp
      rm -rf smarty
-     tar zxvf smarty-0.0.4.tar.gz
+     tar zxvf smarty-0.0.5.tar.gz
 
 2.4 Invoke Smarty-Mode
 ======================
@@ -1382,7 +1132,7 @@ Major mode for editing Template Toolkit files.
 
 ;;;### (autoloads (wikipedia-draft-buffer wikipedia-draft-page wikipedia-draft
 ;;;;;;  wikipedia-mode) "../related/wikipedia-mode" "related/wikipedia-mode.el"
-;;;;;;  (18401 44650))
+;;;;;;  (18790 45400))
 ;;; Generated autoloads from related/wikipedia-mode.el
 
 (autoload 'wikipedia-mode "../related/wikipedia-mode" "\
@@ -1488,7 +1238,7 @@ wikipedia-draft-data-file.
 ;;;***
 
 ;;;### (autoloads (ert-run-tests-interactively ert-deftest) "../tests/ert"
-;;;;;;  "tests/ert.el" (18614 1898))
+;;;;;;  "tests/ert.el" (18775 60002))
 ;;; Generated autoloads from tests/ert.el
 
 (autoload 'ert-deftest "../tests/ert" "\
@@ -1504,7 +1254,7 @@ Run the tests specified by SELECTOR and display the results in a buffer.
 ;;;***
 
 ;;;### (autoloads (nxhtmltest-run-Q) "../tests/nxhtmltest-Q" "tests/nxhtmltest-Q.el"
-;;;;;;  (18762 63688))
+;;;;;;  (18781 14068))
 ;;; Generated autoloads from tests/nxhtmltest-Q.el
 
 (autoload 'nxhtmltest-run-Q "../tests/nxhtmltest-Q" "\
@@ -1516,7 +1266,7 @@ See `nxhtmltest-run' for more information about the tests.
 ;;;***
 
 ;;;### (autoloads (nxhtmltest-run nxhtmltest-run-indent) "../tests/nxhtmltest-suites"
-;;;;;;  "tests/nxhtmltest-suites.el" (18764 7444))
+;;;;;;  "tests/nxhtmltest-suites.el" (19062 23630))
 ;;; Generated autoloads from tests/nxhtmltest-suites.el
 
 (autoload 'nxhtmltest-run-indent "../tests/nxhtmltest-suites" "\
@@ -1536,11 +1286,24 @@ fail (they corresponds to known errors in nXhtml/Emacs):
 
 \(fn)" t nil)
 
+;;;***
+
+;;;### (autoloads (appmenu-add) "appmenu" "util/appmenu.el" (18977
+;;;;;;  25246))
+;;; Generated autoloads from util/appmenu.el
+
+(autoload 'appmenu-add "appmenu" "\
+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)
+
 ;;;***
 
 ;;;### (autoloads (as-external-mode as-external-for-wiki as-external-for-mail
 ;;;;;;  as-external-for-xhtml) "as-external" "util/as-external.el"
-;;;;;;  (18686 30854))
+;;;;;;  (19063 48015))
 ;;; Generated autoloads from util/as-external.el
 
 (autoload 'as-external-for-xhtml "as-external" "\
@@ -1586,24 +1349,529 @@ Setting this variable directly does not take effect;
 either customize it (see the info node `Easy Customization')
 or call the function `as-external-mode'.")
 
-(custom-autoload 'as-external-mode "as-external" nil)
+(nxhtml-custom-autoload 'as-external-mode "as-external" nil)
+
+(autoload 'as-external-mode "as-external" "\
+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 (chart-make-chart chart-complete) "chart" "util/chart.el"
+;;;;;;  (19063 39536))
+;;; Generated autoloads from util/chart.el
+
+(autoload 'chart-complete "chart" "\
+Not documented
+
+\(fn)" t nil)
+
+(autoload 'chart-make-chart "chart" "\
+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 `chart-mode' then do it from the
+chart specifications in this buffer.  Otherwise create a new
+buffer and initialize it with `chart-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 chart-make-chart
+
+* Example, simple x-y chart:
+
+  Output-file: \"~/temp-chart.png\"
+  Size: 200 200
+  Data: 3 8 5 | 10 20 30
+  Type: line-chart-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
+  Chart-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
+  Chart-title: \"Depression hits on Google\"
+  Legends:
+  \"SSRI\"
+  | \"Psychotherapy\"
+  | \"CBT\"
+  | \"IPT\"
+  | \"Psychoanalysis\"
+  | \"Mindfulness\"
+  | \"Meditation\"
+  | \"Exercise\"
+
+
+* Example using raw:
+
+  Output-file: \"~/temp-chart-slipsen-kostar.png\"
+  Size: 400 130
+  Data: 300 1000 30000
+  Type: bar-chart-horizontal
+  Chart-title: \"Vad killen i slips tjänar jämfört med dig och mig\"
+  Google-chart-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 (global-company-mode company-mode) "company-mode/company"
+;;;;;;  "util/company-mode/company.el" (19063 31164))
+;;; Generated autoloads from util/company-mode/company.el
+
+(autoload 'company-mode "company-mode/company" "\
+\"complete anything\"; in in-buffer completion framework.
+Completion starts automatically, depending on the values
+`company-idle-delay' and `company-minimum-prefix-length'.
+
+Completion can be controlled with the commands:
+`company-complete-common', `company-complete-selection', `company-complete',
+`company-select-next', `company-select-previous'.  If these commands are
+called before `company-idle-delay', completion will also start.
+
+Completions can be searched with `company-search-candidates' or
+`company-filter-candidates'.  These can be used while completion is
+inactive, as well.
+
+The completion data is retrieved using `company-backends' and displayed using
+`company-frontends'.  If you want to start a specific back-end, call it
+interactively or use `company-begin-backend'.
+
+regular keymap (`company-mode-map'):
+
+\\{company-mode-map}
+keymap during active completions (`company-active-map'):
+
+\\{company-active-map}
+
+\(fn &optional ARG)" t nil)
+
+(defvar global-company-mode nil "\
+Non-nil if Global-Company mode is enabled.
+See the command `global-company-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-company-mode'.")
+
+(nxhtml-custom-autoload 'global-company-mode "company-mode/company" nil)
+
+(autoload 'global-company-mode "company-mode/company" "\
+Toggle Company mode in every possible buffer.
+With prefix ARG, turn Global-Company mode on if and only if ARG is positive.
+Company mode is enabled in all buffers where `(lambda nil (when (catch (quote cm) (dolist (mode company-major-modes) (when (derived-mode-p mode) (throw (quote cm) t)))) (company-mode 1)))' would do it.
+See `company-mode' for more information on Company mode.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-abbrev) "company-mode/company-abbrev"
+;;;;;;  "util/company-mode/company-abbrev.el" (19039 49090))
+;;; Generated autoloads from util/company-mode/company-abbrev.el
+
+(autoload 'company-abbrev "company-mode/company-abbrev" "\
+A `company-mode' completion back-end for abbrev.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-css) "company-mode/company-css" "util/company-mode/company-css.el"
+;;;;;;  (19048 2102))
+;;; Generated autoloads from util/company-mode/company-css.el
+
+(autoload 'company-css "company-mode/company-css" "\
+A `company-mode' completion back-end for `css-mode'.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-dabbrev) "company-mode/company-dabbrev"
+;;;;;;  "util/company-mode/company-dabbrev.el" (19039 49092))
+;;; Generated autoloads from util/company-mode/company-dabbrev.el
+
+(autoload 'company-dabbrev "company-mode/company-dabbrev" "\
+A dabbrev-like `company-mode' completion back-end.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-dabbrev-code) "company-mode/company-dabbrev-code"
+;;;;;;  "util/company-mode/company-dabbrev-code.el" (19039 49092))
+;;; Generated autoloads from util/company-mode/company-dabbrev-code.el
+
+(autoload 'company-dabbrev-code "company-mode/company-dabbrev-code" "\
+A dabbrev-like `company-mode' back-end for code.
+The back-end looks for all symbols in the current buffer that aren't in
+comments or strings.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-elisp) "company-mode/company-elisp" "util/company-mode/company-elisp.el"
+;;;;;;  (19039 49092))
+;;; Generated autoloads from util/company-mode/company-elisp.el
+
+(autoload 'company-elisp "company-mode/company-elisp" "\
+A `company-mode' completion back-end for `emacs-lisp-mode'.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-etags) "company-mode/company-etags" "util/company-mode/company-etags.el"
+;;;;;;  (19039 49092))
+;;; Generated autoloads from util/company-mode/company-etags.el
+
+(autoload 'company-etags "company-mode/company-etags" "\
+A `company-mode' completion back-end for etags.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-files) "company-mode/company-files" "util/company-mode/company-files.el"
+;;;;;;  (19039 49092))
+;;; Generated autoloads from util/company-mode/company-files.el
+
+(autoload 'company-files "company-mode/company-files" "\
+a `company-mode' completion back-end existing file names.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-gtags) "company-mode/company-gtags" "util/company-mode/company-gtags.el"
+;;;;;;  (19039 49092))
+;;; Generated autoloads from util/company-mode/company-gtags.el
+
+(autoload 'company-gtags "company-mode/company-gtags" "\
+A `company-mode' completion back-end for GNU Global.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-ispell) "company-mode/company-ispell"
+;;;;;;  "util/company-mode/company-ispell.el" (19039 49092))
+;;; Generated autoloads from util/company-mode/company-ispell.el
+
+(autoload 'company-ispell "company-mode/company-ispell" "\
+A `company-mode' completion back-end using ispell.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-keywords) "company-mode/company-keywords"
+;;;;;;  "util/company-mode/company-keywords.el" (19039 49092))
+;;; Generated autoloads from util/company-mode/company-keywords.el
+
+(autoload 'company-keywords "company-mode/company-keywords" "\
+A `company-mode' back-end for programming language keywords.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-choose) "company-mode/company-nograb"
+;;;;;;  "util/company-mode/company-nograb.el" (19045 31314))
+;;; Generated autoloads from util/company-mode/company-nograb.el
+
+(autoload 'company-choose "company-mode/company-nograb" "\
+Not documented
+
+\(fn CANDIDATES)" nil nil)
+
+;;;***
+
+;;;### (autoloads (company-nxml) "company-mode/company-nxml" "util/company-mode/company-nxml.el"
+;;;;;;  (19039 49092))
+;;; Generated autoloads from util/company-mode/company-nxml.el
+
+(autoload 'company-nxml "company-mode/company-nxml" "\
+A `company-mode' completion back-end for `nxml-mode'.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-oddmuse) "company-mode/company-oddmuse"
+;;;;;;  "util/company-mode/company-oddmuse.el" (19039 49092))
+;;; Generated autoloads from util/company-mode/company-oddmuse.el
+
+(autoload 'company-oddmuse "company-mode/company-oddmuse" "\
+A `company-mode' completion back-end for `oddmuse-mode'.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-predictive) "company-mode/company-predictive"
+;;;;;;  "util/company-mode/company-predictive.el" (19060 15106))
+;;; Generated autoloads from util/company-mode/company-predictive.el
+
+(autoload 'company-predictive "company-mode/company-predictive" "\
+A predictive-like `company-mode' completion back-end.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-pysmell) "company-mode/company-pysmell"
+;;;;;;  "util/company-mode/company-pysmell.el" (19040 9010))
+;;; Generated autoloads from util/company-mode/company-pysmell.el
+
+(autoload 'company-pysmell "company-mode/company-pysmell" "\
+A `company-mode' completion back-end for pysmell.
+This requires pysmell.el and pymacs.el.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-semantic) "company-mode/company-semantic"
+;;;;;;  "util/company-mode/company-semantic.el" (19061 60296))
+;;; Generated autoloads from util/company-mode/company-semantic.el
+
+(autoload 'company-semantic "company-mode/company-semantic" "\
+A `company-mode' completion back-end using CEDET Semantic.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-tempo) "company-mode/company-tempo" "util/company-mode/company-tempo.el"
+;;;;;;  (19039 49092))
+;;; Generated autoloads from util/company-mode/company-tempo.el
+
+(autoload 'company-tempo "company-mode/company-tempo" "\
+A `company-mode' completion back-end for tempo.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (company-xcode) "company-mode/company-xcode" "util/company-mode/company-xcode.el"
+;;;;;;  (19039 49092))
+;;; Generated autoloads from util/company-mode/company-xcode.el
+
+(autoload 'company-xcode "company-mode/company-xcode" "\
+A `company-mode' completion back-end for Xcode projects.
+
+\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
+
+;;;***
+
+;;;### (autoloads (css-color-mode css-color-global-mode css-color)
+;;;;;;  "css-color" "util/css-color.el" (18969 63118))
+;;; Generated autoloads from util/css-color.el
+
+(let ((loads (get 'css-color 'custom-loads))) (if (member '"css-color" loads) nil (put 'css-color 'custom-loads (cons '"css-color" loads))))
+
+(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 "css-color" nil)
+
+(autoload 'css-color-global-mode "css-color" "\
+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)
+
+(autoload 'css-color-mode "css-color" "\
+Show hex color literals with the given color as background.
+In this mode hexadecimal colour specifications like #3253ff 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)
+
+;;;***
+
+;;;### (autoloads (css-palette-global-mode css-palette css-palette-mode)
+;;;;;;  "css-palette" "util/css-palette.el" (18795 27308))
+;;; Generated autoloads from util/css-palette.el
+
+(autoload 'css-palette-mode "css-palette" "\
+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 '"css-palette" loads) nil (put 'css-palette 'custom-loads (cons '"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 "css-palette" nil)
+
+(autoload 'css-palette-global-mode "css-palette" "\
+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)
+;;;;;;  "cus-new-user" "util/cus-new-user.el" (19061 60294))
+;;; Generated autoloads from util/cus-new-user.el
 
-(autoload 'as-external-mode "as-external" "\
-If non-nil check for if Emacs is used as external editor.
-When Emacs is used 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.
+(autoload 'customize-for-new-user "cus-new-user" "\
+Show special customization page for new user.
 
-See `as-external-alist' for more information.
+\(fn &optional NAME)" t nil)
 
-\(fn &optional ARG)" t nil)
+(autoload 'cusnu-export-my-skin-options "cus-new-user" "\
+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 (freemind-to-org-mode freemind-from-org-sparse-tree
 ;;;;;;  freemind-from-org-mode freemind-from-org-mode-node freemind-show)
-;;;;;;  "freemind" "util/freemind.el" (18659 17016))
+;;;;;;  "freemind" "util/freemind.el" (19063 39026))
 ;;; Generated autoloads from util/freemind.el
 
 (autoload 'freemind-show "freemind" "\
@@ -1652,10 +1920,65 @@ Not documented
 
 \(fn FILE-NAME)" nil nil)
 
+;;;***
+
+;;;### (autoloads (gpl-mode) "gpl" "util/gpl.el" (18795 27308))
+;;; Generated autoloads from util/gpl.el
+
+(autoload 'gpl-mode "gpl" "\
+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" "util/hfyview.el" (19063 39203))
+;;; Generated autoloads from util/hfyview.el
+
+(autoload 'hfyview-buffer "hfyview" "\
+Convert buffer to html preserving faces and show in web browser.
+With command prefix also show created HTML source in other window.
+
+\(fn ARG)" t nil)
+
+(autoload 'hfyview-region "hfyview" "\
+Convert region to html preserving faces and show in web browser.
+With command prefix also show created HTML source in other window.
+
+\(fn ARG)" t nil)
+
+(autoload 'hfyview-window "hfyview" "\
+Convert window to html preserving faces and show in web browser.
+With command prefix also show created HTML source in other window.
+
+\(fn ARG)" t nil)
+
+(autoload 'hfyview-frame "hfyview" "\
+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.
+
+With command prefix also show created HTML source in other window.
+
+\(fn WHOLE-BUFFERS)" t nil)
+
 ;;;***
 
 ;;;### (autoloads (html-write-mode) "html-write" "util/html-write.el"
-;;;;;;  (18692 35034))
+;;;;;;  (18790 45400))
 ;;; Generated autoloads from util/html-write.el
 
 (autoload 'html-write-mode "html-write" "\
@@ -1672,6 +1995,11 @@ 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.
@@ -1680,11 +2008,88 @@ you edit the buffer you may also change the hidden parts.
 
 ;;;***
 
-;;;### (autoloads (majmodpri-apply-priorities majmodpri-sort-lists
-;;;;;;  majmodpri) "majmodpri" "util/majmodpri.el" (18654 33920))
-;;; Generated autoloads from util/majmodpri.el
+;;;### (autoloads (htmlfontify-buffer) "htmlfontify" "util/htmlfontify.el"
+;;;;;;  (18790 45400))
+;;; Generated autoloads from util/htmlfontify.el
 
-(let ((loads (get 'majmodpri 'custom-loads))) (if (member '"majmodpri" loads) nil (put 'majmodpri 'custom-loads (cons '"majmodpri" loads))))
+(autoload 'htmlfontify-buffer "htmlfontify" "\
+Create a new buffer, named for the current buffer + a .html extension,
+containing an inline css-stylesheet and formatted css-markup html
+that reproduces the look of the current emacs buffer as closely
+as possible.
+
+Dangerous characters in the existing buffer are turned into html
+entities, so you should even be able to do html-within-html
+fontified display.
+
+You should, however, note that random control or eight-bit
+characters such as ^L () or ¤ (\244) won't get mapped yet.
+
+If the SRCDIR and FILE arguments are set, lookup etags derived
+entries in the `hfy-tags-cache' and add html anchors and
+hyperlinks as appropriate.
+
+\(fn &optional SRCDIR FILE)" t nil)
+
+;;;***
+
+;;;### (autoloads (inlimg-toggle-slicing inlimg-toggle-display inlimg-global-mode
+;;;;;;  inlimg-mode) "inlimg" "util/inlimg.el" (19045 31314))
+;;; Generated autoloads from util/inlimg.el
+
+(autoload 'inlimg-mode "inlimg" "\
+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 "inlimg" nil)
+
+(autoload 'inlimg-global-mode "inlimg" "\
+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)
+
+(autoload 'inlimg-toggle-display "inlimg" "\
+Toggle display of image at point POINT.
+See also the command `inlimg-mode'.
+
+\(fn POINT)" t nil)
+
+(autoload 'inlimg-toggle-slicing "inlimg" "\
+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) "majmodpri" "util/majmodpri.el" (19061
+;;;;;;  60294))
+;;; Generated autoloads from util/majmodpri.el
 
 (autoload 'majmodpri-sort-lists "majmodpri" "\
 Sort the list used when selecting major mode.
@@ -1699,6 +2104,14 @@ See also `majmodpri-apply-priorities'.
 
 \(fn)" t nil)
 
+(autoload 'majmodpri-apply "majmodpri" "\
+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)
+
 (autoload 'majmodpri-apply-priorities "majmodpri" "\
 Apply major mode priorities.
 First run `majmodpri-sort-lists' and then if CHANGE-MODES is
@@ -1707,10 +2120,12 @@ before applying.
 
 \(fn CHANGE-MODES)" t nil)
 
+(let ((loads (get 'majmodpri 'custom-loads))) (if (member '"majmodpri" loads) nil (put 'majmodpri 'custom-loads (cons '"majmodpri" loads))))
+
 ;;;***
 
-;;;### (autoloads (mlinks-mode) "mlinks" "util/mlinks.el" (18685
-;;;;;;  3334))
+;;;### (autoloads (mlinks-mode) "mlinks" "util/mlinks.el" (19061
+;;;;;;  60296))
 ;;; Generated autoloads from util/mlinks.el
 
 (autoload 'mlinks-mode "mlinks" "\
@@ -1742,15 +2157,33 @@ By default the link moved to will be active, see
 
 \(fn &optional ARG)" t nil)
 
+;;;***
+
+;;;### (autoloads (mumamo-multi-major-modep mumamo-mark-for-refontification)
+;;;;;;  "mumamo" "util/mumamo.el" (19064 6796))
+;;; Generated autoloads from util/mumamo.el
+
+(autoload 'mumamo-mark-for-refontification "mumamo" "\
+Mark region between MIN and MAX for refontification.
+
+\(fn MIN MAX)" nil nil)
+
+(autoload 'mumamo-multi-major-modep "mumamo" "\
+Return t if VALUE is a multi major mode function.
+
+\(fn VALUE)" nil nil)
+
 ;;;***
 
 ;;;### (autoloads (mako-html-mumamo-mode org-mumamo-mode asp-html-mumamo-mode
 ;;;;;;  noweb2-mumamo-mode csound-sgml-mumamo-mode laszlo-nxml-mumamo-mode
-;;;;;;  metapost-mumamo-mode cperl-mumamo-mode perl-mumamo-mode eruby-html-mumamo-mode
-;;;;;;  eruby-mumamo-mode jsp-html-mumamo-mode smarty-html-mumamo-mode
-;;;;;;  mjt-html-mumamo-mode genshi-html-mumamo-mode django-html-mumamo-mode
-;;;;;;  embperl-html-mumamo-mode nxml-mumamo-mode html-mumamo-mode)
-;;;;;;  "mumamo-fun" "util/mumamo-fun.el" (18764 14316))
+;;;;;;  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-html-mumamo-mode eruby-mumamo-mode
+;;;;;;  jsp-html-mumamo-mode smarty-html-mumamo-mode mjt-html-mumamo-mode
+;;;;;;  genshi-html-mumamo-mode django-html-mumamo-mode embperl-html-mumamo-mode
+;;;;;;  nxml-mumamo-mode html-mumamo-mode) "mumamo-fun" "util/mumamo-fun.el"
+;;;;;;  (19061 60296))
 ;;; Generated autoloads from util/mumamo-fun.el
 
 (autoload 'html-mumamo-mode "mumamo-fun" "\
@@ -1759,7 +2192,9 @@ This covers inlined style and javascript and PHP." t)
 
 (autoload 'nxml-mumamo-mode "mumamo-fun" "\
 Turn on multiple major modes for (X)HTML with main mode `nxml-mode'.
-This covers inlined style and javascript and PHP." t)
+This covers inlined style and javascript and PHP.
+
+See also `mumamo-alt-php-tags-mode'." t)
 
 (autoload 'embperl-html-mumamo-mode "mumamo-fun" "\
 Turn on multiple major modes for Embperl files with main mode `html-mode'.
@@ -1802,11 +2237,32 @@ Current major-mode will be used as the main major mode." t)
 Turn on multiple major modes for eRuby with main mode `html-mode'.
 This also covers inlined style and javascript." t)
 
-(autoload 'perl-mumamo-mode "mumamo-fun" "\
-Turn on multiple major modes for Perl Here Document." t)
+(autoload 'sh-heredoc-mumamo-mode "mumamo-fun" "\
+Turn on multiple major modes for sh heredoc document.
+See `mumamo-heredoc-modes' for how to specify heredoc major modes." t)
+
+(autoload 'php-heredoc-mumamo-mode "mumamo-fun" "\
+Turn on multiple major modes for PHP heredoc document.
+See `mumamo-heredoc-modes' for how to specify heredoc major modes." t)
+
+(autoload 'perl-heredoc-mumamo-mode "mumamo-fun" "\
+Turn on multiple major modes for Perl heredoc document.
+See `mumamo-heredoc-modes' for how to specify heredoc major modes." t)
+
+(autoload 'cperl-heredoc-mumamo-mode "mumamo-fun" "\
+Turn on multiple major modes for Perl heredoc document.
+See `mumamo-heredoc-modes' for how to specify heredoc major modes.
 
-(autoload 'cperl-mumamo-mode "mumamo-fun" "\
-Turn on multiple major modes for Perl Here Document." t)
+Note: I have seen some problems with this.  Use
+`perl-mumamo-mode' instead for now." t)
+
+(autoload 'python-heredoc-mumamo-mode "mumamo-fun" "\
+Turn on multiple major modes for Perl heredoc document.
+See `mumamo-heredoc-modes' for how to specify heredoc major modes." t)
+
+(autoload 'ruby-heredoc-mumamo-mode "mumamo-fun" "\
+Turn on multiple major modes for Ruby heredoc document.
+See `mumamo-heredoc-modes' for how to specify heredoc major modes." t)
 
 (autoload 'metapost-mumamo-mode "mumamo-fun" "\
 Turn on multiple major modes for MetaPost." t)
@@ -1835,17 +2291,80 @@ This also covers inlined style and javascript." t)
 
 ;;;***
 
-;;;### (autoloads (info-open-file grep-query-replace emacs-Q-nxhtml
-;;;;;;  emacs-Q emacs--debug-init emacs-buffer-file emacs ourcomments-ido-buffer-raise-frame
+;;;### (autoloads (mumamo-add-region) "mumamo-regions" "util/mumamo-regions.el"
+;;;;;;  (19056 34298))
+;;; Generated autoloads from util/mumamo-regions.el
+
+(autoload 'mumamo-add-region "mumamo-regions" "\
+Add a mumamo region.
+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.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads (n-back-game) "n-back" "util/n-back.el" (19063
+;;;;;;  38663))
+;;; Generated autoloads from util/n-back.el
+
+(autoload 'n-back-game "n-back" "\
+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 (ourcomments-warning ourcomments-M-x-menu-mode
+;;;;;;  use-custom-style info-open-file 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
-;;;;;;  describe-command ourcomments-ediff-files find-emacs-other-file
-;;;;;;  better-fringes-mode wrap-to-fill-column-mode wrap-to-fill-left-marg-modes
-;;;;;;  wrap-to-fill-left-marg describe-key-and-map-briefly ourcomments-move-end-of-line
-;;;;;;  ourcomments-move-beginning-of-line major-modep multi-major-modep
-;;;;;;  major-or-multi-majorp unfill-individual-paragraphs unfill-region
-;;;;;;  unfill-paragraph define-toggle popup-menu-at-point) "ourcomments-util"
-;;;;;;  "util/ourcomments-util.el" (18764 17429))
+;;;;;;  narrow-to-comment describe-command ourcomments-ediff-files
+;;;;;;  find-emacs-other-file better-fringes-mode wrap-to-fill-column-mode
+;;;;;;  wrap-to-fill-left-marg-modes wrap-to-fill-left-marg describe-key-and-map-briefly
+;;;;;;  ourcomments-move-end-of-line ourcomments-move-beginning-of-line
+;;;;;;  major-modep major-or-multi-majorp unfill-individual-paragraphs
+;;;;;;  unfill-region unfill-paragraph define-toggle popup-menu-at-point)
+;;;;;;  "ourcomments-util" "util/ourcomments-util.el" (19063 48876))
 ;;; Generated autoloads from util/ourcomments-util.el
 
 (autoload 'popup-menu-at-point "ourcomments-util" "\
@@ -1902,11 +2421,6 @@ Not documented
 
 \(fn VALUE)" nil nil)
 
-(autoload 'multi-major-modep "ourcomments-util" "\
-Return t if VALUE is a multi major mode function.
-
-\(fn VALUE)" nil nil)
-
 (autoload 'major-modep "ourcomments-util" "\
 Return t if VALUE is a major mode function.
 
@@ -1919,17 +2433,17 @@ A major mode lisp function." :complete-function (lambda nil (interactive) (lisp-
 Move point to beginning of line or indentation.
 See `beginning-of-line' for ARG.
 
-If `physical-line-mode' is on then the visual line beginning is
-first tried.
+If `line-move-visual' is non-nil then the visual line beginning
+is first tried.
 
 \(fn ARG)" t nil)
 
 (autoload 'ourcomments-move-end-of-line "ourcomments-util" "\
-Move point to end of line or indentation.
+Move point to end of line or after last non blank char.
 See `end-of-line' for ARG.
 
-If `physical-line-mode' is on then the visual line ending is
-first tried.
+Similar to `ourcomments-move-beginning-of-line' but for end of
+line.
 
 \(fn ARG)" t nil)
 
@@ -1953,12 +2467,12 @@ 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.")
 
-(custom-autoload 'wrap-to-fill-left-marg "ourcomments-util" t)
+(nxhtml-custom-autoload 'wrap-to-fill-left-marg "ourcomments-util" t)
 
 (defvar wrap-to-fill-left-marg-modes '(text-mode fundamental-mode) "\
 Major modes where `wrap-to-fill-left-margin' may be nil.")
 
-(custom-autoload 'wrap-to-fill-left-marg-modes "ourcomments-util" t)
+(nxhtml-custom-autoload 'wrap-to-fill-left-marg-modes "ourcomments-util" t)
 
 (autoload 'wrap-to-fill-column-mode "ourcomments-util" "\
 Use `fill-column' display columns in buffer windows.
@@ -1985,7 +2499,7 @@ Setting this variable directly does not take effect;
 either customize it (see the info node `Easy Customization')
 or call the function `better-fringes-mode'.")
 
-(custom-autoload 'better-fringes-mode "ourcomments-util" nil)
+(nxhtml-custom-autoload 'better-fringes-mode "ourcomments-util" nil)
 
 (autoload 'better-fringes-mode "ourcomments-util" "\
 Choose another fringe bitmap color and bottom angle.
@@ -2010,7 +2524,13 @@ 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.
+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)
 
@@ -2019,6 +2539,11 @@ Like `describe-function', but prompts only for interactive commands.
 
 \(fn COMMAND)" t nil)
 
+(autoload 'narrow-to-comment "ourcomments-util" "\
+Not documented
+
+\(fn)" t nil)
+
 (autoload 'describe-custom-group "ourcomments-util" "\
 Describe customization group SYMBOL.
 
@@ -2051,6 +2576,30 @@ Raise frame showing buffer.
 
 \(fn)" t nil)
 
+(defvar ourcomments-ido-ctrl-tab nil "\
+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.")
+
+(nxhtml-custom-autoload 'ourcomments-ido-ctrl-tab "ourcomments-util" nil)
+
+(autoload 'emacs-restart "ourcomments-util" "\
+Restart Emacs and start `server-mode' if on before.
+
+\(fn)" t nil)
+
 (autoload 'emacs "ourcomments-util" "\
 Start a new Emacs.
 
@@ -2058,7 +2607,8 @@ Start a new Emacs.
 
 (autoload 'emacs-buffer-file "ourcomments-util" "\
 Start a new Emacs showing current buffer file.
-If there is no buffer file start with `dired'.
+Go to the current line and column in that file.
+If there is no buffer file then instead start with `dired'.
 
 \(fn)" t nil)
 
@@ -2067,6 +2617,11 @@ Not documented
 
 \(fn)" t nil)
 
+(autoload 'emacs--no-desktop "ourcomments-util" "\
+Not documented
+
+\(fn)" t nil)
+
 (autoload 'emacs-Q "ourcomments-util" "\
 Start new Emacs without any customization whatsoever.
 
@@ -2090,10 +2645,93 @@ Open an info file in `Info-mode'.
 
 \(fn INFO-FILE)" t nil)
 
+(autoload 'use-custom-style "ourcomments-util" "\
+Setup like in `Custom-mode', but without things specific to Custom.
+
+\(fn)" nil 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 "ourcomments-util" nil)
+
+(autoload 'ourcomments-M-x-menu-mode "ourcomments-util" "\
+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)
+
+(autoload 'ourcomments-warning "ourcomments-util" "\
+Not documented
+
+\(fn FORMAT-STRING &rest ARGS)" nil nil)
+
+;;;***
+
+;;;### (autoloads (pause-mode) "pause" "util/pause.el" (19064 18015))
+;;; Generated autoloads from util/pause.el
+
+(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 "pause" nil)
+
+(autoload 'pause-mode "pause" "\
+This minor mode tries to make you take a break!
+To customize it see:
+
+ `pause-after-minutes'
+ `pause-text-color'
+ `pause-prompt1-color'
+ `pause-prompt2-color'
+ `pause-message-color'
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
+;;;### (autoloads (global-pointback-mode pointback-mode) "pointback"
+;;;;;;  "util/pointback.el" (19023 47096))
+;;; Generated autoloads from util/pointback.el
+
+(autoload 'pointback-mode "pointback" "\
+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 "pointback" nil)
+
+(autoload 'global-pointback-mode "pointback" "\
+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 (rnc-mode) "rnc-mode" "util/rnc-mode.el" (18654
-;;;;;;  33922))
+;;;### (autoloads (rnc-mode) "rnc-mode" "util/rnc-mode.el" (18775
+;;;;;;  60004))
 ;;; Generated autoloads from util/rnc-mode.el
 
 (autoload 'rnc-mode "rnc-mode" "\
@@ -2104,10 +2742,63 @@ Major mode for editing RELAX NG Compact Syntax schemas.
 
 ;;;***
 
-;;;### (autoloads (tabkey2-mode) "tabkey2" "util/tabkey2.el" (18662
-;;;;;;  2982))
+;;;### (autoloads (search-form) "search-form" "util/search-form.el"
+;;;;;;  (18778 14464))
+;;; Generated autoloads from util/search-form.el
+
+(autoload 'search-form "search-form" "\
+Display a form for search and replace.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads (sex-mode) "sex-mode" "util/sex-mode.el" (19039
+;;;;;;  48498))
+;;; Generated autoloads from util/sex-mode.el
+
+(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 "sex-mode" nil)
+
+(autoload 'sex-mode "sex-mode" "\
+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 (tabkey2-mode tabkey2-emma-without-tabkey2) "tabkey2"
+;;;;;;  "util/tabkey2.el" (19048 2102))
 ;;; Generated autoloads from util/tabkey2.el
 
+(autoload 'tabkey2-emma-without-tabkey2 "tabkey2" "\
+Not documented
+
+\(fn)" nil nil)
+
 (defvar tabkey2-mode nil "\
 Non-nil if Tabkey2 mode is enabled.
 See the command `tabkey2-mode' for a description of this minor mode.
@@ -2115,7 +2806,7 @@ Setting this variable directly does not take effect;
 either customize it (see the info node `Easy Customization')
 or call the function `tabkey2-mode'.")
 
-(custom-autoload 'tabkey2-mode "tabkey2" nil)
+(nxhtml-custom-autoload 'tabkey2-mode "tabkey2" nil)
 
 (autoload 'tabkey2-mode "tabkey2" "\
 More fun with Tab key number two (completion etc).
@@ -2168,21 +2859,56 @@ be opened in your webbrowser with WORD looked up.
 
 ;;;***
 
-;;;### (autoloads (udev-cedet-update) "udev-cedet" "util/udev-cedet.el"
-;;;;;;  (18654 33922))
+;;;### (autoloads (udev-call-first-step) "udev" "util/udev.el" (19061
+;;;;;;  60296))
+;;; Generated autoloads from util/udev.el
+
+(autoload 'udev-call-first-step "udev" "\
+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-cedet-utest udev-cedet-customize-startup
+;;;;;;  udev-cedet-update) "udev-cedet" "util/udev-cedet.el" (19061
+;;;;;;  38124))
 ;;; Generated autoloads from util/udev-cedet.el
 
 (autoload 'udev-cedet-update "udev-cedet" "\
-Fetch and install CEDET from the devel sources.
+Fetch and install CEDET from the development sources.
 To determine where to store the sources see `udev-cedet-dir'.
 For how to start CEDET see `udev-cedet-load-cedet'.
 
+Note that if you install CEDET yourself you should not use this function.
+
+\(fn)" t nil)
+
+(autoload 'udev-cedet-customize-startup "udev-cedet" "\
+Customize CEDET dev nXhtml startup group.
+
+\(fn)" t nil)
+
+(autoload 'udev-cedet-utest "udev-cedet" "\
+Start CEDET unit tests.
+These runs in a fresh Emacs.
+
 \(fn)" t nil)
 
 ;;;***
 
-;;;### (autoloads (udev-ecb-update) "udev-ecb" "util/udev-ecb.el"
-;;;;;;  (18654 33922))
+;;;### (autoloads (udev-ecb-customize-startup udev-ecb-update) "udev-ecb"
+;;;;;;  "util/udev-ecb.el" (19061 60296))
 ;;; Generated autoloads from util/udev-ecb.el
 
 (autoload 'udev-ecb-update "udev-ecb" "\
@@ -2192,10 +2918,15 @@ For how to start ECB see `udev-ecb-load-ecb'.
 
 \(fn)" t nil)
 
+(autoload 'udev-ecb-customize-startup "udev-ecb" "\
+Customize ECB dev nXhtml startup group.
+
+\(fn)" t nil)
+
 ;;;***
 
 ;;;### (autoloads (udev-rinari-update) "udev-rinari" "util/udev-rinari.el"
-;;;;;;  (18654 44936))
+;;;;;;  (19025 6424))
 ;;; Generated autoloads from util/udev-rinari.el
 
 (autoload 'udev-rinari-update "udev-rinari" "\
@@ -2208,7 +2939,7 @@ see `udev-rinari-dir' and `udev-rinari-load-rinari'.
 ;;;***
 
 ;;;### (autoloads (viper-tutorial) "viper-tut" "util/viper-tut.el"
-;;;;;;  (18685 3334))
+;;;;;;  (19063 44564))
 ;;; Generated autoloads from util/viper-tut.el
 
 (autoload 'viper-tutorial "viper-tut" "\
@@ -2223,10 +2954,118 @@ later.
 
 \(fn PART &optional DONT-ASK-FOR-REVERT)" t nil)
 
+;;;***
+
+;;;### (autoloads (vline-global-mode vline-mode) "vline" "util/vline.el"
+;;;;;;  (18973 28380))
+;;; Generated autoloads from util/vline.el
+
+(autoload 'vline-mode "vline" "\
+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 "vline" nil)
+
+(autoload 'vline-global-mode "vline" "\
+Display vertical line mode as globally.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
+;;;### (autoloads (winsav-switch-config winsav-save-full-config winsav-save-mode
+;;;;;;  winsav-put-window-tree) "winsav" "util/winsav.el" (19063
+;;;;;;  42266))
+;;; Generated autoloads from util/winsav.el
+
+(autoload 'winsav-put-window-tree "winsav" "\
+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)
+
+(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 "winsav" nil)
+
+(autoload 'winsav-save-mode "winsav" "\
+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)
+
+(autoload 'winsav-save-full-config "winsav" "\
+Saved current winsav configuration in directory DIRNAME.
+Then change to this configuration.
+
+See also `winsav-switch-config'.
+
+\(fn DIRNAME)" nil nil)
+
+(autoload 'winsav-switch-config "winsav" "\
+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 (winsize-save-window-configuration winsize-balance-siblings
-;;;;;;  resize-windows) "winsize" "util/winsize.el" (18761 37866))
+;;;;;;  resize-windows) "winsize" "util/winsize.el" (19063 37855))
 ;;; Generated autoloads from util/winsize.el
 
 (autoload 'resize-windows "winsize" "\
@@ -2298,12 +3137,12 @@ 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 `juris-way' decides how the borders to move are
-selected. If this option is non-nil then the right or bottom
+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 `juris-way' is nil then the following apply:
+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
@@ -2427,45 +3266,52 @@ Not documented
 
 ;;;***
 
-;;;### (autoloads nil nil ("autostart.el" "etc/schema/schema-path-patch.el"
-;;;;;;  "nxhtml/html-chklnk.el" "nxhtml/html-imenu.el" "nxhtml/html-move.el"
-;;;;;;  "nxhtml/html-pagetoc.el" "nxhtml/html-quote.el" "nxhtml/html-toc.el"
-;;;;;;  "nxhtml/html-upl.el" "nxhtml/html-wtoc.el" "nxhtml/nxhtml-anything-1.el"
-;;;;;;  "nxhtml/nxhtml-autoload.el" "nxhtml/nxhtml-js.el" "nxhtml/nxhtml-strval.el"
-;;;;;;  "nxhtml/outline-magic.el" "nxhtml/rngalt.el" "nxhtml/test-c-m.el"
-;;;;;;  "nxhtml/test-cust.el" "nxhtml/tests.el" "nxhtml/tidy-xhtml.el"
-;;;;;;  "nxhtml/wtest.el" "nxhtml/xhtml-help.el" "related/cgi+.el"
-;;;;;;  "related/find-recursive-orig.el" "related/find-recursive.el"
-;;;;;;  "related/flymake-helpers.el" "related/flymake-js.el" "related/flymake-keys.el"
-;;;;;;  "related/flymake-php.el" "related/flymu.el" "related/fold-dwim.el"
-;;;;;;  "related/js2-font-lock-new.el" "related/js2-font-lock.el"
-;;;;;;  "related/php-imenu.el" "related/php-mode-1.5.0.el" "related/snippet.el"
-;;;;;;  "tests/angus77-setup-jde.el" "tests/elunit.el" "tests/emacstest-suites.el"
-;;;;;;  "tests/ert-080729.el" "tests/ert2.el" "tests/inemacs/bug1013.el"
-;;;;;;  "tests/nxhtmltest-helpers.el" "tests/temp-test.el" "util/appmenu-fold.el"
-;;;;;;  "util/appmenu.el" "util/buffer-bg.el" "util/bw-rnc-load/schema-find.el"
-;;;;;;  "util/chart.el" "util/color-test-sent.el" "util/color-test.el"
-;;;;;;  "util/custsets.el" "util/ecb-batch-compile.el" "util/elunit.el"
-;;;;;;  "util/ffip.el" "util/fmode.el" "util/from-osxkeys.el" "util/fupd.el"
-;;;;;;  "util/half-qwerty.el" "util/hexcolor.el" "util/hfy-test.el"
-;;;;;;  "util/hfyview.el" "util/hl-needed.el" "util/htmlfontify.21.el"
-;;;;;;  "util/htmlfontify.el" "util/mumamo-aspnet.el" "util/mumamo-test.el"
-;;;;;;  "util/mumamo-trace.el" "util/mumamo.el" "util/new-key-seq-widget.el"
-;;;;;;  "util/nxml-mode-os-additions.el" "util/ocr-user.el" "util/org-panel.el"
-;;;;;;  "util/pause.el" "util/physical-line.el" "util/popcmp.el"
-;;;;;;  "util/rebind.el" "util/rxi.el" "util/search-form.el" "util/sex-mode.el"
-;;;;;;  "util/udev-nxhtml.el" "util/udev.el" "util/useful-commands.el"
-;;;;;;  "util/vline.el" "util/whelp.el" "util/winsav.el" "util/zen-mode.el")
-;;;;;;  (18766 53631 796000))
-
-;;;***
-
-;;;### (autoloads (nxhtmlmaint-get-all-autoloads) "../nxhtml-maintenance"
-;;;;;;  "nxhtml-maintenance.el" (18766 50614))
-;;; Generated autoloads from nxhtml-maintenance.el
-
-(autoload 'nxhtmlmaint-get-all-autoloads "../nxhtml-maintenance" "\
-Not documented
+;;;### (autoloads nil nil ("autostart.el" "autostart22.el" "etc/schema/schema-path-patch.el"
+;;;;;;  "nxhtml/doc/cedet-build.el" "nxhtml/html-chklnk.el" "nxhtml/html-imenu.el"
+;;;;;;  "nxhtml/html-move.el" "nxhtml/html-quote.el" "nxhtml/html-wtoc.el"
+;;;;;;  "nxhtml/nxhtml-autoload.el" "nxhtml/nxhtml-strval.el" "nxhtml/nxhtmljs.el"
+;;;;;;  "nxhtml/outline-magic.el" "nxhtml/wtest.el" "related/flymake-helpers.el"
+;;;;;;  "related/flymake-js.el" "related/flymake-keys.el" "related/flymake-php.el"
+;;;;;;  "related/flymu.el" "related/fold-dwim.el" "related/javascript-old.el"
+;;;;;;  "related/php-imenu.el" "tests/angus77-setup-jde.el" "tests/emacstest-suites.el"
+;;;;;;  "tests/ert2.el" "tests/hfy-test.el" "tests/inemacs/bug1013.el"
+;;;;;;  "tests/mumamo-test.el" "tests/nxhtmltest-helpers.el" "tests/temp-test.el"
+;;;;;;  "util/appmenu-fold.el" "util/buffer-bg.el" "util/company-mode/company-autoloads.el"
+;;;;;;  "util/company-mode/company-eclim.el" "util/company-mode/company-pkg.el"
+;;;;;;  "util/company-mode/company-ropemacs.el" "util/company-mode/company-start.el"
+;;;;;;  "util/custsets.el" "util/ecb-batch-compile.el" "util/ffip.el"
+;;;;;;  "util/fmode.el" "util/fupd.el" "util/hl-needed.el" "util/htmlfontify.21.el"
+;;;;;;  "util/key-cat.el" "util/mumamo-aspnet.el" "util/mumamo-trace.el"
+;;;;;;  "util/new-key-seq-widget.el" "util/nxml-mode-os-additions.el"
+;;;;;;  "util/ocr-user.el" "util/org-panel.el" "util/popcmp.el" "util/rebind.el"
+;;;;;;  "util/rxi.el" "util/udev-nxhtml.el" "util/useful-commands.el"
+;;;;;;  "util/whelp.el" "util/zen-mode.el") (19064 20991 718000))
+
+;;;***
+
+;;;### (autoloads (nxhtmlmaint-byte-uncompile-all nxhtmlmaint-start-byte-compilation)
+;;;;;;  "../nxhtmlmaint" "nxhtmlmaint.el" (19062 21392))
+;;; Generated autoloads from nxhtmlmaint.el
+
+(autoload 'nxhtmlmaint-start-byte-compilation "../nxhtmlmaint" "\
+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)
+
+(autoload 'nxhtmlmaint-byte-uncompile-all "../nxhtmlmaint" "\
+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)
 
diff --git a/elpa-to-submit/nxhtml/nxhtml-maintenance.el b/elpa-to-submit/nxhtml/nxhtml-maintenance.el
deleted file mode 100644
index 397c6d06a2..0000000000
--- a/elpa-to-submit/nxhtml/nxhtml-maintenance.el
+++ /dev/null
@@ -1,186 +0,0 @@
-;;; nxhtml-maintenance.el --- Some maintenance helpers
-;;
-;; Author: Lennart Borgman (lennart O borgman A gmail O com)
-;; Created: 2008-09-27T15:29:35+0200 Sat
-;; Version:
-;; Last-Updated:
-;; URL:
-;; Keywords:
-;; Compatibility:
-;;
-;; Features that might be required by this library:
-;;
-;;   None
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Commentary:
-;;
-;;
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Change log:
-;;
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or
-;; (at your option) any later version.
-;;
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with this program; see the file COPYING.  If not, write to
-;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
-;; Floor, Boston, MA 02110-1301, USA.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Code:
-
-(defvar nxhtmlmaint-dir
-  (file-name-directory (if load-file-name load-file-name buffer-file-name))
-  "Maintenance directory for nXhtml.")
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;; Autoload helpers
-
-(defun nxhtmlmaint-autoloads-file ()
-  (file-truename (expand-file-name "nxhtml-loaddefs.el" nxhtmlmaint-dir)))
-
-(defun nxhtmlmaint-util-dir ()
-  (file-truename (file-name-as-directory
-                  (expand-file-name "util" nxhtmlmaint-dir))))
-
-(defvar nxhtmlmaint-autoload-default-directory (nxhtmlmaint-util-dir))
-
-(defun nxhtmlmaint-initialize-autoloads-file ()
-  (with-current-buffer (find-file-noselect generated-autoload-file)
-    (when (= 0 (buffer-size))
-      (insert ";; Autoloads for nXthml
-;;
-;; This file should be updated by `nxhtmlmaint-get-file-autoloads',
-;; `nxhtmlmaint-get-dir-autoloads' or `nxhtmlmaint-get-all-autoloads'.")
-    (basic-save-buffer))))
-
-(defun nxmtmlmaint-advice-autoload (on)
-  (if on
-      (progn
-        (ad-activate 'autoload-file-load-name)
-        (ad-activate 'make-autoload))
-    (ad-deactivate 'autoload-file-load-name)
-    (ad-deactivate 'make-autoload)))
-
-(defun nxhtmlmaint-get-file-autoloads (file)
-  (interactive (list (buffer-file-name)))
-  (let* ((generated-autoload-file (nxhtmlmaint-autoloads-file))
-         (emacs-lisp-mode-hook nil)
-         (default-directory (nxhtmlmaint-util-dir)))
-    (nxhtmlmaint-initialize-autoloads-file)
-    ;; Get the autoloads using advice
-    (nxmtmlmaint-advice-autoload t)
-    (update-file-autoloads file nil)
-    (nxmtmlmaint-advice-autoload nil)
-    ;; Display
-    (display-buffer (find-file-noselect generated-autoload-file))))
-
-(defun nxhtmlmaint-get-dir-autoloads (dir)
-  (interactive (list (or (when (buffer-file-name)
-                           (file-name-directory (buffer-file-name)))
-                         default-directory)))
-  (let* ((generated-autoload-file (nxhtmlmaint-autoloads-file))
-         (emacs-lisp-mode-hook nil)
-         (auto-buf (find-file-noselect generated-autoload-file)))
-    (nxhtmlmaint-initialize-autoloads-file)
-    ;; Get the autoloads using advice
-    (nxmtmlmaint-advice-autoload t)
-    ;; Fix-me: Loop instead, some files must be avoided.
-    (update-directory-autoloads dir)
-    (nxmtmlmaint-advice-autoload nil)
-    ;; Display
-    (display-buffer (find-file-noselect generated-autoload-file))))
-
-(defun nxhtmlmaint-get-tree-autoloads (root)
-  (interactive (list (or (when (buffer-file-name)
-                           (file-name-directory (buffer-file-name)))
-                         default-directory)))
-  (nxhtmlmaint-get-dir-autoloads root)
-  (message "----- ROOT=%s" root)
-  (let* ((files (directory-files root))
-         (sub-dirs (mapcar (lambda (file)
-                             (when (and (not (member file '("." "..")))
-                                        (not (member file '("nxml-mode-20041004" "old")))
-                                        (not (member file '("in")))
-                                        (file-directory-p (expand-file-name file root)))
-                               file))
-                           files)))
-    (setq sub-dirs (delq nil sub-dirs))
-    (message "sub-dirs=%s" sub-dirs)
-    (dolist (dir sub-dirs)
-      (let ((full-dir (expand-file-name dir root)))
-        (unless (string= full-dir nxhtmlmaint-dir)
-          (nxhtmlmaint-get-tree-autoloads full-dir))))))
-
-;;;###autoload
-(defun nxhtmlmaint-get-all-autoloads ()
-  (interactive)
-  (let ((auto-buf (find-file-noselect (nxhtmlmaint-autoloads-file))))
-    (with-current-buffer auto-buf
-      (erase-buffer)
-      (basic-save-buffer)))
-  (nxhtmlmaint-get-tree-autoloads nxhtmlmaint-dir))
-
-(defun nxhtmlmaint-autoload-file-load-name (file)
-  (let ((name (if nxhtmlmaint-autoload-default-directory
-                  (file-relative-name
-                   file nxhtmlmaint-autoload-default-directory)
-                (file-name-nondirectory file))))
-    (if (string-match "\\.elc?\\(\\.\\|\\'\\)" name)
-        (substring name 0 (match-beginning 0))
-      name)))
-
-(defadvice autoload-file-load-name (around
-                                    nxhtmlmaint-advice-autoload-file-load-name
-                                    ;;activate
-                                    compile)
-  (setq ad-return-value (nxhtmlmaint-autoload-file-load-name (ad-get-arg 0))))
-
-(defun nxhtmlmaint-make-autoload (form file)
-  ;;(message "form=%S" form)
-  (if (or (not (listp form))
-          (not (eq 'define-mumamo-multi-major-mode (car form))))
-      ad-return-value
-    (if ad-return-value
-        ad-return-value
-      ;; Fix-me: Maybe expand??
-      (let ((name (nth 1 form))
-            (doc  (nth 2 form)))
-        `(autoload ',name ,file ,doc t)
-        ))))
-
-(defadvice make-autoload (after
-                          nxhtmlmaint-advice-make-autoload
-                          ;;activate
-                          compile)
-  (setq ad-return-value
-        (nxhtmlmaint-make-autoload (ad-get-arg 0)
-                                             (ad-get-arg 1))))
-
-(defun generate-library-autoloads (library)
-  "Insert at point autoloads for Emacs library LIBRARY.
-  Works like `generate-file-autoloads', but for a library."
-  (interactive
-   (list (completing-read "Generate autoloads for library: "
-                          'locate-file-completion
-                          (cons load-path (get-load-suffixes)))))
-  (let ((file (locate-library library)))
-    (generate-file-autoloads file)))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; nxhtml-maintenance.el ends here
diff --git a/elpa-to-submit/nxhtml/nxhtml/doc/cedet-build.el b/elpa-to-submit/nxhtml/nxhtml/doc/cedet-build.el
new file mode 100644
index 0000000000..f49197f8be
--- /dev/null
+++ b/elpa-to-submit/nxhtml/nxhtml/doc/cedet-build.el
@@ -0,0 +1,55 @@
+(setq debug-on-error t)
+(setq debug-on-error t)
+(setq debug-on-error t)
+(setq debug-on-error t)
+;;; cedet-build.el<2> --- 
+;; 
+;; Author: Lennart Borgman (lennart O borgman A gmail O com)
+;; Created: 2009-01-05 Mon
+;; Version: 
+;; Last-Updated: 
+;; URL: 
+;; Keywords: 
+;; Compatibility: 
+;; 
+;; Features that might be required by this library:
+;;
+;;   None
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; 
+;;; Commentary: 
+;; 
+;; 
+;; 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; 
+;;; Change log:
+;; 
+;; 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; 
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation; either version 2, or
+;; (at your option) any later version.
+;; 
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+;; 
+;; You should have received a copy of the GNU General Public License
+;; along with this program; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
+;; Floor, Boston, MA 02110-1301, USA.
+;; 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; 
+;;; Code:
+
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; cedet-build.el<2> ends here
diff --git a/elpa-to-submit/nxhtml/nxhtml/doc/img/Las_Medulas.jpg b/elpa-to-submit/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/elpa-to-submit/nxhtml/nxhtml/doc/img/Thumbs.db b/elpa-to-submit/nxhtml/nxhtml/doc/img/Thumbs.db
index 3e94de46d04939aec48ee80cba73a56a475b1729..60618792b1f7327fb0634a4a1b0e033dd78a5579 100644
GIT binary patch
delta 41428
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
z
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
IDNIiOUx)r>UH||9

delta 257
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 literal 0 HcmV?d00001 diff --git a/elpa-to-submit/nxhtml/nxhtml/doc/img/bacchante2.jpg b/elpa-to-submit/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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

nXhtml Changes

v1.59 v1.60 v1.61 + v1.62 + v1.63 + v1.64 + v1.65 + v1.66 + v1.67 + v1.68 + v1.69 + v1.70 + v1.71 + v1.72 + v1.73 + v1.74 + v1.75 + v1.76 + v1.77 + v1.78 + v1.79 + v1.80 + v1.81 + v1.82 + v1.83 + v1.84 + v1.85 + v1.86 + v1.87 + v1.88 + v1.89 + v1.90 + v1.91 + v1.92 + v1.93
@@ -1673,7 +1708,7 @@

nXhtml Changes

  • - Changed top directory name from nxml to nxhtml

    This will of course case some problems if you do not @@ -2264,8 +2299,10 @@

    nXhtml Changes

    Fixed bug 290364, see below about MuMaMo important changes.
  • -
  • Fixed bug 304569.
  • +
  • Fixed bug 272526.
  • Fixed bug 292393.
  • +
  • Fixed bug 300946.
  • +
  • Fixed bug 304569.
  • Added some support for editing gmail messages in as-external.el (to be used with It's All Text for @@ -2303,24 +2340,725 @@

    nXhtml Changes

    do.

    - I have done first part of this rewrite. Chunk - dividing is now always done from the beginning. - However the routines actually finding the chunks - still looks both upwards and downwards. I will try - to remove this unnecessary complexity later. + I have done first part of this rewrite and I hope + chunk dividing can not loop any more. Chunk dividing + is now always done from the beginning. However the + routines actually finding the chunks still looks + both upwards and downwards. I will try to remove + this unnecessary complexity later. +

    +
  • +
+
+
1.62
+
+
    +
  • + MuMaMo: +
      +
    • + Fixed bugs in chunk creation that caused args out + of range at buffer end. +
    • +
    +
  • +
  • + Autoloading caused wrong libraries to load (for + example javascript from mozdev). Fixed. +
  • +
+
+
1.63
+
+
    +
  • + Removed find-recursive.el since there is no use for it + any more and it interferes with emacs-rails. (It was + initally a bug fixs for emacs-rails.) +
  • +
  • + Fixed bugs in html-write-mode. +
  • +
  • + Used the new routines for finding chunks also during + xml validation and syntax-ppss. +
  • +
+
+
1.64
+
+
    +
  • + MuMaMo: nxml was not turned off properly when + switching from a multi major mode that used nxml-mode + or nxhtml-mode. Fixed. This was especially troublesome + for Emacs 22 users where multi major modes based on + nxhtml-mode does not always work. +
  • +
  • + Majmodpri.el: Added a defcustom to give multi major + modes based on nxhtm-mode or nxml-mode lower + priority. This is on by default in Emacs 22. +
  • +
+
+
1.65
+
+
    +
  • Fixed a bug in nxml-where.el.
  • +
  • + Fixed a minor bug in majmodpri.el. It did not work if + magic-mode-alist contained anonymous functions. + (Thanks from Niels Giesen.) +
  • +
  • + Fixed a bug in pause.el and added some mindfulness to it. +
  • +
  • + Adjusted ourcomments-move-beginning-of-line (and dito + for end) to the new line-move-visual in Emacs 23. + Moved physical-line.el to old subdir since it is now + obsolete. +
  • +
  • + Made it possible to byte compile nXhtml. +

    + To do that use + M-x nxhtmlmaint-start-byte-compilation. +

    +

    + A lot of code changes to make byte compilation + possible without a lot of warnings. Most changes + where just moving code around, but some where bug + fixes. +

    +
  • +
+
+
1.66
+
+
    +
  • + Further work on byte compiling. +
  • +
  • + Tried to fix some problem with defadvice in + ourcomments-util.el. +
  • +
  • + Tried to finish the command M-x search-form. +
  • +
  • + When no chunk is found (border case) then set the + major mode to the main major mode for the current + multi major mode. +
  • +
+
+
1.67
+
+
    +
  • + Removed css.el since it is in Emacs 22.2 and later. +
  • +
+
+
1.68
+
+
    +
  • + Fixed bugs related to byte compilation. This should + now work for both Emacs 22 and 23. Also added a menu + entry for byte compilation. +
  • +
  • + Removed nXml from the distribution to make it + smaller. nXml comes with Emacs 23 (not yet released of + course). For Emacs 22 users see EmacsWiki about where + to get nXml. +

    + Adding nXml to Emacs 22 startup should be done by + using the file nxhtml/autostart22.el. +

    +

    + NOTE 1: if you want to use nxhtml-mode in + multi major modes in Emacs 22 (not recommended) you + must also customize majmodpri-no-nxml. +

    +

    + NOTE 2: The major mode nxhtml-mode as a + major-mode works however very well also in Emacs 22. +

    +
  • +
+
+
1.69
+
+
    +
  • + Chunks were unnecessary deleted and recreated after a + change even if all changes where within one + chunk. This could make editing very slow. Fixed. +
  • +
  • + Search for rng-auto.el in path. (Emacs 22 only.) +
  • +
+
+
1.70
+
+
    +
  • + Validation could not be turned on in multi major + modes. Fixed. +
  • +
+
+
1.71
+
+
    +
  • + Fixed the problem that showed up in the file + nxhtml/tests/in/kubica-freezing-i.html which could + make Emacs freeze. +
  • +
+
+
1.72
+
+
    +
  • + Somehow I dropped this: Search for rng-auto.el in + path. (Emacs 22 only.) Don't ask me how. Fixed again. +
  • +
+
+
1.73
+
+
    +
  • + Worked a bit more on byte compilation and elisp + libraries loading. If you byte compile nXhtml it will + now load very few modules by default. It loads more + modules if you don't. +
  • +
  • + Added chart.el, a small elisp library to create charts. + This works by calling google charts library. + Chart.el is a bit beta, eh alpha, but still useful I believe. +
  • +
+
+
1.74
+
+
    +
  • + Found and fixed a bug in fictive XML validation + headers. This bug depended on the load order of + libraries. +
  • +
  • + Fixed a small bug in nxml-where-mode. +
  • +
+
+
1.75
+
+
    +
  • + Included css-color.el, css-palette.el and gpl.el from Niels Giesen. + (This replaces hexcolor.el which is no longer in nXhtml.) +
  • +
+
+
1.76 -- Released 2009-02-26
+
+
    +
  • + Fixed a long standing bug in XML validation. (I had + forgot to set the defadvice return value in defadvice + rng-set-initial-state in rngalt.el - I wonder why I + did not get any bug reports about this...) +
  • +
  • + css-color.el: bug fix for mIxEd case color names. +
  • +
  • + freemind.el: bug fixes. +
  • +
+
+
1.77 -- Never released!
+
+
    +
  • + Fixed numerous bugs, please + see nXhtml bug tracker + and dito question and answers. +
  • +
  • + Added some missing autoloads. +
  • +
  • + Tried to fix some smaller troubles with Viper when + changing chunk. +
  • +
  • + Menus for Tidy were broken. Fixed. +
  • +
  • + Added a test that the nxml-mode libraries included + in Emacs are used and not the old ones. (If I + understand it correctly this might have been a problem + for Debian/Ubuntu Emacs 23 snap-shots users where the + old nxml-mode has been a left over from earlier + snap-shots where it was needed.) +
  • +
  • + MuMaMo: +
      +
    • + Chunks are now always created from top to bottom. + This should make chunk creation more stable. + It also opens up for chunks in chunks in the future. + (The code still needs work...) +
    • +
    +
  • +
  • + majmodpri.el: +
      +
    • + To restore multi major modes in files loaded by + desktop-save-mode the new + function majmodpri-apply can be added + to desktop-after-read-hook. +
    • +
    • + New default for majmodpri-sort-after-load: + Sort after loading certain features/libraries that + are known to change auto-mode-alist and + apply to current buffer. This new default should + hopefully make major mode selection less + confusing. +
    • +
    +
  • +
  • + winsav.el: +
      +
    • + Added save and restore between Emacs sessions for frame configuration. + I am not sure how this works with special frames yet, but I have tested this with oneonone.el and it seems to work. + Dedicated windows should also work. +
    • +
    • + Added saving and restoring of named frame configurations. +
    • +
    +
  • +
  • + javascript.el: +
      +
    • + Updated to Karl's newest version (and added my additions). +
    • +
    +
  • +
  • + Added library usb-setup.el that might help a bit with + using Emacs from an USB stick. +
  • +
  • + Updated smarty-mode.el to the latest version. +
  • +
  • + Happy brain + Added an n-back game for your brain (and mine). + Just do M-x n-back-game to start it. +
  • +
+
+
1.78 -- Released 2009-05-28
+
+
    +
  • + nXhtml version 1.78 is the + release of the previous beta (which had number + 1.77 and existed in many versions). +
  • +
+
+
1.79
+
+
    +
  • + Added a function to simplify adding for example font + lock keywords for major modes used in multi major + mode: mumamo-refresh-multi-font-lock. +
  • +
+
+
1.80 -- Released 2009-06-02
+
+
    +
  • + Fixed a (rather serious) bug and cleaned up. +
  • +
  • + Added mumamo regions. Mumamo regions are temporary + mumamo chunks that you set up by selecting a region + and telling you want that in a new major mode. To use + this feature look in the nXhtml menu under Chunks - + Region Chunks. +
  • +
+
+
1.81 -- Released 2009-06-19
+
+
    +
  • + Added the minor mode mumamo-alt-php-tags-mode + that lets you work more easily with <?php tags in + strings while you are still able to use XHTML + completion. (I added something looking rather similare + earlier, but removed it again because of difficulties + with undo. They are now fixed in Emacs and this should + be safe.) +
  • +
  • + Added support for hi-lock, but please be aware that + chunk overlays hides background marking that hi-lock + does... - so you must use marking that changes + foreground part of face. +
  • +
+
+
1.82 -- Released 2009-06-23
+
+
    +
  • + Find and fixed some bugs when + I tried to fix bug 388729. Not sure I fixed that + bug though. +
  • +
+
+
1.83 -- Released 2009-06-24
+
+
    +
  • + Fontification disappeared for example in *grep* buffer. Fixed. +
  • +
+
+
1.84 -- Released 2009-06-30
+
+
    +
  • + MuMaMo: +
      +
    • + Worked around bug in Emacs + 22.3 where c-after-change was left in + after-change-functions. (This makes no + difference in Emacs 23.) +
    • +
    • + Fixed a bug that occured + after deletion of whole chunks. +
    • +
    +
  • +
+
+
1.85 -- Released 2009-07-04
+
+
    +
  • + MuMaMo: +
      +
    • + Corrected various mostly + minor bugs, like indent-line-function which + where globally set to + mumamo-indent-line. Corrected. +
    • +
    • + Forgot to finish the implementation of support for + font-lock-add-keywords. Done. +
    • +
    • + Added some faces hi-mumamo-* to use with hi-lock, + but unfortunately they are not very + visible. Suggestions are welcome. +
    • +
    +
  • +
  • + CEDET and ECB: +
      +
    • + Made the routines for fetching and installing CEDET and ECB + from the development sources work again. +
    • +
    • + Added support for ECB in winsav-save-mode. Though I suspect it need some rework... +
    • +
    +
  • +
  • + Added pointback.el, found on EmacsWiki. This is just + so missing in Emacs... +
  • +
+
+
1.86 -- Released 2009-07-05
+
+
    +
  • + Made the fetching and installing of CEDET and ECB a + bit better. +
  • +
+
+
1.87 -- Released 2009-07-08
+
+
    +
  • + Some enhancements to winsav.el and menuacc.el. +
  • +
  • + MuMaMo: +
      +
    • + Added heredoc for some modes. They are currently + kind of hidden since they are only available in + multiple major modes that offer just heredocs. + The implemented heredoc multi major modes are + + sh-mumamo-heredoc-mode, + php-mumamo-heredoc-mode, + perl-mumamo-heredoc-mode, + cperl-mumamo-heredoc-mode, + python-mumamo-heredoc-mode and + ruby-mumamo-heredoc-mode. +
    • +
    +
  • +
+
+
1.88 -- Never released, only betas
+
+
    +
  • + MuMaMo: +
      +
    • + + Background colors could not be removed by + setting mumamo-background-coloring. + Fixed, but please notice that this variable now + is a number. + +
    • +
    • + Support for chunks in chunks. +
    • +
    • + Removed string-match-p which does not exist in Emacs 22. +
    • +
    • + + mumamo-alt-php-tags-mode hardly survived major mode + changes. Rescued. + +
    • +
    • + + Added possibility to display chunk info in + window margins as an alternative/addon to + colored chunks. + +
    • +
    • + + Fixed a bug in n-back.el that prevented the game to be used on Emacs 22. + +
    • +
    +
  • +
  • + Bug fixes and changes to udev for CEDET and ECB. (Udev + is a little utility to fetch and install dev sources.) +
      +
    • + + Changed default directory for installing CEDET and + ECB to be under ~/.emacs.d/udev/. + +
    • +
    • + + Several bug fixes for udev. + It should now work again (it did not if you compiled nXhtml). + +
    • +
    +
  • +
  • + Added support + for Company + Mode style completion. Temporary included a copy + of Company Mode with bug fixes and changes needed for + nXhtml and Viper. It also include a lot of other + small features (which I hope can be included in + Company Mode). On of these is integration + with Predictive + Mode. (You have to get Predictive Mode + yourself. If you want to install it on MS Windows I + recommend using the latest version of Cygwin. A + smaller change to the Makefile is required, there is + one absolute path you probably want to remove.) +

    + Note: I thought that I should make Company Mode the default completion style. + However there are still some problem so I kept the old default completion style. +

    +
  • +
  • + TabKey2: +
      +
    • + Added support for Company Mode. +
    • +
    • + Made completion only occur at word ends. +
    • +
    +
  • +
  • + Added support + for anything + style completion in XHTML completion. +
  • +
  • + Added support in inlimg-mode to show images in org-mode. + (Also made inlimg-mode use font lock which makes it more reliable.) +
  • +
  • + Included espresso-mode (with some possible bug fixes). Not yet the default for Javascript. +
  • +
  • +

    + Added simple functions for mirroring html files in + Firefox as typing. This works - at least for small + files. There is also support for automatic update + of Firefox when saving CSS files. +

    +

    + This is a simple framework for communicating with + MozRepl which enqueues requests, waiting for + response prompt before sending next requests. + Maybe this can be used to make + some more efficient routines than those I have + written here. Any takers?

    +

    + For larger files (like this one) this version is + rather slow since it always changes the whole DOM. +

    +
  • +
  • + + Rewrote nxml-where-mode to be more efficient and + fixed some minor bugs. It can now also be used with + MozRepl to track position in file. + +
  • +
  • + + Made winsav-save-mode remember maximized state and + forget about empty non-file buffers. + +
  • +
  • + + Added workaround for Emacs bug 4015 on w32. + +
  • +
  • + Added ourcomments-M-x-menu-mode which adds + menu commands to M-x history. +
  • +
+
+
1.89 -- Released 2009-08-04
+
+
    +
  • + The release version of all the fixes in beta 1.88. +
  • +
+
+
1.90 -- Released 2009-08-04
+
+
    +
  • + + Made wrap-to-fill-column-mode cooperate a bit with + mumamo-margin-info-mode. + +
  • +
  • + Made an inventory of utilities in nXhtml and made some + of them more visible in the menus. +
  • +
+
+
1.91 -- Released 2009-08-04
+
+
    +
  • + + Mumamo bug fix for bug reported on Emacs wiki today. + Inline scripts end tag could not be in column one if + previous line had a // style js comment. + +
  • +
+
+
1.92 -- Released 2009-08-04
+
+
    +
  • + + An Emacs bug that sometimes prevent changing local keymap in a timer hit us. + Made a workaround. + +
  • +
+
+
1.93 -- Released 2009-08-04
+
+
    +
  • + + Minor bug in menus gave major problem. Fixed - I hope. +
+ + + - - diff --git a/elpa-to-submit/nxhtml/nxhtml/doc/nxhtml.html b/elpa-to-submit/nxhtml/nxhtml/doc/nxhtml.html index 3c1b9118a0..1438fb32b0 100644 --- a/elpa-to-submit/nxhtml/nxhtml/doc/nxhtml.html +++ b/elpa-to-submit/nxhtml/nxhtml/doc/nxhtml.html @@ -104,13 +104,13 @@
- @@ -298,6 +299,10 @@

The Quick Guide

After this files with extensions for example .html will open in nxhtml-mode.

+

+ To make nXhtml run faster you can also byte compile the files. + You do that with M-x nxhtmlmaint-start-byte-compilation. +

The nXhtml Menu
@@ -412,6 +417,32 @@

The Quick Guide

for this in the nXhtml menu.

+
Keyboard shortcuts (aka keybindings in Emacs)
+
+

+ When you start to use a new program you often wonder + about which keybindings there are to use. If you have + not used Emacs before you may feel quite lost because + you have looked in all documentation and you have not + seen any list of keybindings. +

+

+ Well, that is how it often is in Emacs. Get use to it ... +

+

+ But do not panic. Because there is help, probably even + better than you are used to - in Emacs dynamic help + system. A help system that change if you for example add + a keybinding yourself. Try the command C-h b (or F1 + b). This list all the keybindings (in their priority + order) that are active where you are in Emacs. +

+

+ You can also try C-h m which gives information about + minor modes and the current major mode. There is + sometimes information about the keybindings there too. +

+
Some More You Can Do ...

@@ -778,7 +809,8 @@

Why Are Colors Different in Multiple Modes?

More Multiple Modes

- nXhtml handles for example embedded style sheets the same way as PHP: + nXhtml mode handles for example embedded style sheets the + same way as it handles PHP chunks:

+

And Other Goodies...

+

+ There are a lot of other things in the package too, please + see the nXhtml menu in Emacs. You can for example find a + n-back-game (if you do not know what it is now, do not + worry, just try it and you will learn - and understand why I + put it there). +

diff --git a/elpa-to-submit/nxhtml/nxhtml/doc/test.html b/elpa-to-submit/nxhtml/nxhtml/doc/test.html new file mode 100644 index 0000000000..4bb801d020 --- /dev/null +++ b/elpa-to-submit/nxhtml/nxhtml/doc/test.html @@ -0,0 +1,204 @@ + + + + + + + + + + +

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 w32 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 w32 View Abbrev) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
+
+  M-x  hfyview-frame
+ + diff --git a/elpa-to-submit/nxhtml/nxhtml/doc/wd/grapes/nxhtml-grapes.css b/elpa-to-submit/nxhtml/nxhtml/doc/wd/grapes/nxhtml-grapes.css index 863040f462..a241c1e38a 100644 --- a/elpa-to-submit/nxhtml/nxhtml/doc/wd/grapes/nxhtml-grapes.css +++ b/elpa-to-submit/nxhtml/nxhtml/doc/wd/grapes/nxhtml-grapes.css @@ -72,6 +72,10 @@ acronym {font-weight: bold; border-bottom: 1px dashed #000; cursor: help} p, li, dt, dd { margin-right: 1em; } +dt { + margin-top: 1em; + margin-bottom: 0.5em; +} li ul li { margin-right: 0; } diff --git a/elpa-to-submit/nxhtml/nxhtml/html-chklnk.el b/elpa-to-submit/nxhtml/nxhtml/html-chklnk.el index 312f6d414e..9e84d27ac9 100644 --- a/elpa-to-submit/nxhtml/nxhtml/html-chklnk.el +++ b/elpa-to-submit/nxhtml/nxhtml/html-chklnk.el @@ -47,14 +47,17 @@ (eval-when-compile (add-to-list 'load-path default-directory load-path)) (eval-when-compile - (let ((load-path load-path) - (this-dir (file-name-directory - (if load-file-name load-file-name buffer-file-name)))) - (add-to-list 'load-path (expand-file-name "../../lisp" this-dir)) - (require 'w32shell nil t))) + (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)))) -(require 'html-site) +(eval-when-compile (require 'html-site)) (require 'compile) (defgroup html-chklnk nil diff --git a/elpa-to-submit/nxhtml/nxhtml/html-imenu.el b/elpa-to-submit/nxhtml/nxhtml/html-imenu.el index b26558f36c..98cccce783 100644 --- a/elpa-to-submit/nxhtml/nxhtml/html-imenu.el +++ b/elpa-to-submit/nxhtml/nxhtml/html-imenu.el @@ -38,6 +38,8 @@ ;;; Code: +(eval-when-compile (require 'imenu)) + (defvar html-imenu-title "Index" "*Title of the menu which will be added to the menubar.") diff --git a/elpa-to-submit/nxhtml/nxhtml/html-move.el b/elpa-to-submit/nxhtml/nxhtml/html-move.el index 0942f8c478..3a2c88fb63 100644 --- a/elpa-to-submit/nxhtml/nxhtml/html-move.el +++ b/elpa-to-submit/nxhtml/nxhtml/html-move.el @@ -55,7 +55,7 @@ ;;; Code: (eval-when-compile (add-to-list 'load-path default-directory load-path)) -(require 'html-site) +(eval-when-compile (require 'html-site)) (require 'url-parse) (defun html-move-make-new-url (old-url from-dir to-dir) diff --git a/elpa-to-submit/nxhtml/nxhtml/html-pagetoc.el b/elpa-to-submit/nxhtml/nxhtml/html-pagetoc.el index 73ad4282ff..43c8fd8a95 100644 --- a/elpa-to-submit/nxhtml/nxhtml/html-pagetoc.el +++ b/elpa-to-submit/nxhtml/nxhtml/html-pagetoc.el @@ -115,6 +115,7 @@ See `html-pagetoc-tocheads'." (setq header (cdr th)))) header))) +;;;###autoload (defun html-pagetoc-insert-toc (&optional min-level max-level) "Inserts a table of contents for the current html file. The html header tags h1-h6 found in the file are inserted into @@ -285,6 +286,7 @@ the table of contents." (message "Please edit the style guide!") ) +;;;###autoload (defun html-pagetoc-rebuild-toc () "Update the table of contents inserted by `html-pagetoc-insert-toc'." (interactive) @@ -319,6 +321,7 @@ the table of contents." (delete-region start-toc end-toc) (html-pagetoc-insert-toc old-min old-max )))))))) +;;;###autoload (defconst html-pagetoc-menu-map (let ((map (make-sparse-keymap))) (define-key map [html-pagetoc-rebuild-toc] diff --git a/elpa-to-submit/nxhtml/nxhtml/html-site.el b/elpa-to-submit/nxhtml/nxhtml/html-site.el index e8540fadb8..2c37cd2048 100644 --- a/elpa-to-submit/nxhtml/nxhtml/html-site.el +++ b/elpa-to-submit/nxhtml/nxhtml/html-site.el @@ -52,8 +52,11 @@ ;; TODO: maybe use browse-url-filename-alist +(eval-when-compile (require 'ourcomments-util)) (eval-when-compile (require 'cl)) -;;(eval-when-compile (load-library "cl-macs")) +(eval-when-compile (require 'dired)) +(eval-when-compile (require 'ffip)) +(eval-when-compile (require 'grep)) ;;(defvar html-site-list) ;; Silence compiler ;;(defvar html-site-current) ;; Silence compiler @@ -209,9 +212,9 @@ See `rgrep' for the arguments REGEXP and FILES." (interactive (let ((parameters (dir-replace-read-parameters t t))) ;; Delete element 3 - (length parameters) + ;;(length parameters) (setcdr (nthcdr 2 parameters) (nthcdr 4 parameters)) - (length parameters) + ;;(length parameters) parameters)) ;; fix-me: ask for site (when (called-interactively-p) @@ -719,7 +722,9 @@ Use the entry with this name in `html-site-list'." ;; Provide here to be able to load the files in any order (provide 'html-site) -(require 'html-upl nil t) + +(eval-when-compile (require 'html-upl nil t)) + (defvar html-site-mode-menu-map (let ((map (make-sparse-keymap "html-site-mode-menu-map"))) diff --git a/elpa-to-submit/nxhtml/nxhtml/html-toc.el b/elpa-to-submit/nxhtml/nxhtml/html-toc.el index 2c18840ebe..6a9db1a76d 100644 --- a/elpa-to-submit/nxhtml/nxhtml/html-toc.el +++ b/elpa-to-submit/nxhtml/nxhtml/html-toc.el @@ -52,9 +52,9 @@ (eval-when-compile (require 'cl)) (eval-when-compile (add-to-list 'load-path default-directory load-path)) -(require 'fupd) +(eval-when-compile (require 'fupd)) ;;(require 'html-move) -(require 'html-site) +(eval-when-compile (require 'html-site)) ;;(require 'dom) (require 'xml) @@ -341,6 +341,7 @@ You may also want to look at `html-wtoc-write-pages-with-toc'." (save-buffer)) frames-file))) +;;;###autoload (defconst html-toc-menu-map (let ((map (make-sparse-keymap))) (define-key map [html-toc-browse-frames-file] diff --git a/elpa-to-submit/nxhtml/nxhtml/html-upl.el b/elpa-to-submit/nxhtml/nxhtml/html-upl.el index d0fc3daf74..47ef108b04 100644 --- a/elpa-to-submit/nxhtml/nxhtml/html-upl.el +++ b/elpa-to-submit/nxhtml/nxhtml/html-upl.el @@ -46,7 +46,7 @@ ;; ;;; Code: (eval-when-compile (add-to-list 'load-path default-directory load-path)) -(require 'html-site) +(eval-when-compile (require 'html-site)) (defgroup html-upl nil "Customization group for html-upl." @@ -89,9 +89,12 @@ The tools for html-upl includes: 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)) @@ -139,6 +142,7 @@ The tools for html-upl includes: (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 @@ -187,6 +191,7 @@ The tools for html-upl includes: (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'." @@ -227,9 +232,12 @@ For the definition of a site see `html-site-current'." (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)) @@ -251,6 +259,7 @@ For the definition of a site see `html-site-current'." ) (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." diff --git a/elpa-to-submit/nxhtml/nxhtml/html-wtoc.el b/elpa-to-submit/nxhtml/nxhtml/html-wtoc.el index 0bae4914c7..42472a6996 100644 --- a/elpa-to-submit/nxhtml/nxhtml/html-wtoc.el +++ b/elpa-to-submit/nxhtml/nxhtml/html-wtoc.el @@ -46,7 +46,7 @@ ;;; Code: (eval-when-compile (add-to-list 'load-path default-directory load-path)) -(require 'html-toc) +(eval-when-compile (require 'html-toc)) (defgroup html-wtoc nil "Customization group for html-wtoc." diff --git a/elpa-to-submit/nxhtml/nxhtml/inlimg.el b/elpa-to-submit/nxhtml/nxhtml/inlimg.el deleted file mode 100644 index a6b1fba0c6..0000000000 --- a/elpa-to-submit/nxhtml/nxhtml/inlimg.el +++ /dev/null @@ -1,335 +0,0 @@ -;;; inlimg.el --- Display images inline -;; -;; Author: Lennart Borgman (lennart O borgman A gmail O com) -;; Created: 2008-09-27 -(defconst inlimg:version "0.5") ;; Version: -;; Last-Updated: 2008-09-27T13:26:46+0200 Sat -;; URL: -;; Keywords: -;; Compatibility: -;; -;; Features that might be required by this library: -;; -;; None -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Commentary: -;; -;; Display images inline. By default it can handle image referenced in -;; inline. -;; -;; See `inlimg-mode' and `inlimg-toggle-img-display'. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; 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 inlimg-img-regexp - (rx (or (and ""))) - (1+ space)) - "src=\"" - (group (1+ (not (any "\"")))) - "\"" - (*? anything) - "/>") - (and "url(" - ?\" - (group (1+ (not (any "\"")))) - ?\" - ")" - ) - ))) - -(defgroup inlimg nil - "Customization group for inlimg." - :group 'nxhtml) - -(defcustom inlimg-margins '(50 . 5) - "Margins when displaying image." - :type '(cons (integer :tag "Left margin") - (integer :tag "Top margin")) - :set (lambda (sym val) - (set-default sym val) - (when (fboundp 'inlimg-update-all-buffers) - (inlimg-update-all-buffers))) - :group 'inlimg) - -(defcustom inlimg-slice '(0 0 400 100) - "How to slice images." - :type '(choice (const :tag "Show whole images" nil) - (list :tag "Show slice of image" - (integer :tag "Top") - (integer :tag "Left") - (integer :tag "Width") - (integer :tag "Height"))) - :set (lambda (sym val) - (set-default sym val) - (when (fboundp 'inlimg-update-all-buffers) - (inlimg-update-all-buffers))) - :group 'inlimg) - -(defface inlimg-img-tag '((t :inherit 'lazy-highlight)) - "Face added to img tag when displaying image." - :group 'inlimg) - -(defface inlimg-img-remote '((t :inherit 'isearch-fail)) - "Face used for notes telling image is remote." - :group 'inlimg) - -(defface inlimg-img-missing '((t :inherit 'trailing-whitespace)) - "Face used for notes telling image is missing." - :group 'inlimg) - -(defun inlimg-next (pt display-image) - "Display or hide next image after point PT. -If DISPLAY-IMAGE is non-nil then display image, otherwise hide it. - -Return non-nil if an img tag was found." - (let (src beg end end-str img ovl remote beg-face) - (goto-char pt) - (when (setq res (re-search-forward inlimg-img-regexp nil t)) - (setq src (or (match-string-no-properties 1) - (match-string-no-properties 2))) - (setq beg (match-beginning 0)) - (setq end (match-end 0)) - (setq end-str (buffer-substring-no-properties (- end 2) end)) - (setq beg-face (get-text-property beg 'face)) - (setq remote (string-match "^https?://" src)) - (if display-image - (unless (memq beg-face '(font-lock-comment-face font-lock-string-face)) - (setq ovl (make-overlay beg end)) - (overlay-put ovl 'inlimg-img t) - (overlay-put ovl 'priority 100) - (overlay-put ovl 'face 'inlimg-img-tag) - (overlay-put ovl 'keymap inlimg-img-keymap) - (overlay-put ovl 'image-file (expand-file-name src)) - (if (or remote (not (file-exists-p src))) - (mumamo-with-buffer-prepared-for-jit-lock - (put-text-property (- end 2) (- end 1) - 'display - end-str ;;"/>" - ) - (put-text-property (- end 1) end - 'display - (propertize (if remote - " Image is on the web " - " Image not found ") - 'face - (if remote - 'inlimg-img-remote - ;;'custom-invalid - ;;'match - 'inlimg-img-missing)))) - ;; Get src value before macro since buffer-file-name is nil inside. - (setq src (expand-file-name - src - (file-name-directory (buffer-file-name)))) - (mumamo-with-buffer-prepared-for-jit-lock - (put-text-property (- end 2) (- end 1) - 'display - ;;"/>\n" - (concat end-str "\n") - ) - (setq img (create-image src nil nil - :relief 5 - :margin inlimg-margins)) - (when inlimg-slice - (let* ((sizes (image-size img t)) - (width (car sizes)) - (height (cdr sizes)) - (sl-left (nth 0 inlimg-slice)) - (sl-top (nth 1 inlimg-slice)) - (sl-width (nth 2 inlimg-slice)) - (sl-height (nth 3 inlimg-slice)) - ) - (when (> sl-left width) (setq sl-left 0)) - (when (> (+ sl-left sl-width) width) - (setq sl-width (- width sl-left))) - (when (> sl-top height) (setq sl-top 0)) - (when (> (+ sl-top sl-height) height) - (setq sl-height (- height sl-top))) - (setq img (list img)) - (setq img (cons - (append '(slice) - inlimg-slice - (list sl-top sl-left sl-width sl-height) - nil) - img)))) - (put-text-property (- end 1) end - 'display img)))) - (mumamo-with-buffer-prepared-for-jit-lock - (put-text-property (- end 2) end - 'display nil))) - (mumamo-with-buffer-prepared-for-jit-lock - (put-text-property (- end 2) end - 'inlimg-display display-image))) - res)) - -(defvar inlimg-img-keymap - (let ((map (make-sparse-keymap))) - (define-key map [(control ?c) ?+] 'inlimg-toggle-img-display) - map)) - -(eval-after-load 'gimp - '(gimp-add-point-bindings inlimg-img-keymap)) - -(defvar inlimg-timer nil) -(make-variable-buffer-local 'inlimg-timer) -(put 'inlimg-timer 'permanent-local t) - -(defun inlimg-cancel-timer () - "Cancel timer for displaying/hiding images." - (when inlimg-timer - (cancel-timer inlimg-timer) - (setq inlimg-timer nil))) - -(defun inlimg-request-update (start end) - "Request update of images display between START and END." - (inlimg-cancel-timer) - (setq inlimg-timer - (run-with-idle-timer idle-update-delay - nil - 'inlimg-update-in-timer - start - end - (current-buffer)))) - -(defun inlimg-update-in-timer (start end buffer) - "Update image display between START and END in buffer BUFFER." - (with-current-buffer buffer - (let ((here (point)) - res - ovls - prop-pos1 - prop-pos2) - (save-restriction - (widen) - (goto-char start) - (setq ovls (overlays-in start end)) - (dolist (ovl ovls) - (when (overlay-get ovl 'inlimg-img) - (delete-overlay ovl))) - (goto-char start) - (setq prop-pos1 start) - (mumamo-with-buffer-prepared-for-jit-lock - (while (setq prop-pos1 - (next-single-property-change prop-pos1 'inlimg-display)) - (put-text-property prop-pos1 (+ 2 prop-pos1) 'inlimg-display nil) - (put-text-property prop-pos1 (+ 2 prop-pos1) 'display nil))) - (goto-char start) - (setq res (save-match-data - (inlimg-next (point) inlimg-mode)))) - (when (and res - (< res end)) - (inlimg-request-update res end)) - (goto-char here)))) - -(defun inlimg-after-change (beg end pre-len) - "Actions to take after a change in buffer. -This is put in `after-change-functions'. For BEG, END and -PRE-LEN see that function." - (let ((here (point))) - (goto-char beg) - (setq beg (line-beginning-position -2)) - (goto-char end) - (setq end (line-end-position 3)) - (inlimg-request-update beg end))) - -(defun inlimg-update-whole-buffer () - "Request update of image display in the current buffer." - (save-restriction - (widen) - (inlimg-request-update (point-min) (point-max)))) - -(defun inlimg-update-all-buffers () - "Request update of image display in all buffers. -Update image display in all buffers where the option -`inlimg-mode' is on." - (dolist (buff (buffer-list)) - (with-current-buffer buff - (when inlimg-mode - (inlimg-update-whole-buffer))))) - -;;;###autoload -(define-minor-mode inlimg-mode - "Display images inline. -Images are displayed below the tag using the margins in -`inlimg-margins'. The whole image or a slice of it may be -displayed, see `inlimg-slice'. - -See also the command `inlimg-toggle-img-display'." - :keymap nil - :group 'inlimg - (if inlimg-mode - (add-hook 'after-change-functions 'inlimg-after-change nil t) - (remove-hook 'after-change-functions 'inlimg-after-change t)) - (inlimg-cancel-timer) - (inlimg-update-whole-buffer)) -(put 'inlimg-mode 'permanent-local t) - -;;;###autoload -(defun inlimg-toggle-img-display (point) - "Toggle display of img image at point POINT. -See also the command `inlimg-mode'." - (interactive (list (point))) - (save-match-data - (let ((here (point)) - img-start - img-end - (ovls (overlays-at (point))) - iovl - ) - (dolist (ovl ovls) - (when (overlay-get ovl 'inlimg-img) - (setq iovl ovl))) - (if iovl - (progn - (setq img-start (overlay-start iovl)) - (setq img-end (- (overlay-end iovl) 2))) - (skip-chars-backward "^<") - (unless (and (> (point) (point-min)) - (= ?\< (char-before)) - (progn - (backward-char) - (looking-at inlimg-img-regexp))) - (goto-char here) - (error "No image here")) - (setq img-start (point)) - (setq img-end (- (match-end 0) 2))) - (setq is-displayed (get-text-property img-end 'inlimg-display)) - (inlimg-next img-start (not is-displayed)) - (when (and iovl - (not inlimg-mode) - is-displayed) - (delete-overlay iovl)) - (goto-char here)))) - - -(provide 'inlimg) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; inlimg.el ends here diff --git a/elpa-to-submit/nxhtml/nxhtml/nxhtml-autoload.el b/elpa-to-submit/nxhtml/nxhtml/nxhtml-autoload.el index 9d840c4c2f..6cd46294ec 100644 --- a/elpa-to-submit/nxhtml/nxhtml/nxhtml-autoload.el +++ b/elpa-to-submit/nxhtml/nxhtml/nxhtml-autoload.el @@ -45,123 +45,45 @@ ;; ;;; Code: -;;(require 'ourcomments-util) - -(unless (featurep 'nxml-enc) - ;; This is for the case when nXml is included in Emacs - (require 'nxml-mode)) - -(if (not (or (featurep 'nxml-enc) ;; nXml not in Emacs - (featurep 'nxml-mode))) ;; nXml in Emacs - (progn - (lwarn - '(nxhtml-autoload) - :emergency - (concat - "\n\n\nERROR: nxml not loaded!\n\n" - " Please load nxml before loading nxhtml!\n" - " Load nxml by loading rng-auto.el in the nxml distribution.\n\n\n\n")) - (sit-for 10)) - - (add-to-list 'load-path - (file-name-directory - (if load-file-name load-file-name buffer-file-name))) - - ;;(autoload 'nxhtml-report-bug "nxhtml-bug" "Report a bug in nXhtml." t) - ;;(autoload 'nxhtml-mode "nxhtml" "Major mode for editing XHTML documents." t) - ;;(autoload 'nxhtml-global-minor-mode "nxhtml-menu" "Toggle `nxhtml-minor-mode' in every buffer." t) - ;;(autoload 'gimp-edit-buffer "gimp" "Edit image file in current buffer with GIMP." t) - ;;(autoload 'gimp-edit-file "gimp" "Edit file with GIMP." t) - ;; Testing - (let* ((this-dir (file-name-directory (if load-file-name load-file-name buffer-file-name))) - (test-q-file (expand-file-name "../tests/nxhtmltest-Q.el" this-dir)) - (test-file (expand-file-name "../tests/nxhtmltest-suites.el" this-dir))) - ;;(autoload 'nxhtmltest-run-Q test-q-file "Run all tests defined for nXhtml in fresh Emacs." t) - ;;(autoload 'nxhtmltest-run test-file "Run all tests defined for nXhtml." t) - ;;(autoload 'nxhtmltest-run-indent test-file "Run all indentation tests defined for nXhtml." t) - ) - - ;; (require 'fmode) - ;; (fmode-replace-default-mode 'html-mode 'nxhtml-mode) - ;; (fmode-replace-default-mode 'xml-mode 'nxml-mode) - - ;; Replaced all the major mode file stuff here with majmodpri and - ;; just adding to auto-mode-alist etc: - ;;(require 'majmodpri) - - ;; Add entries similar to those that are already there for html-mode - ;; and xml-mode. - (dolist (mode-list '(auto-mode-alist magic-fallback-mode-alist)) - (dolist (rec (symbol-value mode-list)) - (when (eq (cdr rec) 'html-mode) - (add-to-list mode-list (cons (car rec) 'nxhtml-mode))) - (when (eq (cdr rec) 'html-mode) - (add-to-list mode-list (cons (car rec) 'nxhtml-mumamo-mode))) - (when (eq (cdr rec) 'html-mode) - (add-to-list mode-list (cons (car rec) 'html-mumamo-mode))) - (when (eq (cdr rec) 'xml-mode) - (add-to-list mode-list (cons (car rec) 'nxml-mode))) - )) - - ;;(require 'html-site) - ;;(require 'nxhtml-menu) - - ;;; Change below if you need to: - ;;(autoload 'rnc-mode "rnc-mode" "Major mode for editing RELAX NG" t) - ;;(autoload 'css-mode "css-mode" "Mode for editing css files" t) - ;;(autoload 'javascript-mode "javascript" "Mode for JavaScript" t) - ;;(autoload 'js2-fl-mode "js2-font-lock-new" "Mode for JavaScript" t) - ;;(autoload 'php-mode "php-mode" "Mode for editing php files" t) - ;;(autoload 'smarty-mode "smarty-mode" "Mode for editing php smarty files" t) - ;;(autoload 'csharp-mode "csharp-mode" "Mode for editing C# code" t) - ;;(autoload 'django-mode "django" "Simple Django mode for use with mumamo." t) - (eval-after-load 'nxml-mode - '(progn - (define-key nxml-mode-map [C-M-left] 'nxml-backward-element) - (define-key nxml-mode-map [C-M-right] 'nxml-forward-element) - (define-key nxml-mode-map [C-M-up] 'nxml-backward-up-element) - (define-key nxml-mode-map [C-M-down] 'nxml-down-element))) - - ;; MozLab support, for more info see moz.el - ;;(autoload 'inferior-moz-mode "moz" "MozRepl Inferior Mode" t) - ;;(autoload 'moz-minor-mode "moz" "MozRepl Minor Mode" t) - (defun javascript-moz-setup () (moz-minor-mode 1)) - (add-hook 'javascript-mode-hook 'javascript-moz-setup) - (add-hook 'js2-fl-mode 'javascript-moz-setup) - - ;; Development versions support - ;;(autoload 'udev-rinari-update "udev-rinari" "Fetch and install rinari from the devel sources." t) - ;;(autoload 'udev-cedet-update "udev-cedet" "Fetch and install CEDET from the devel sources." t) - ;;(autoload 'udev-ecb-update "udev-ecb" "Fetch and install ECB from the devel sources." t) - - ;;(require 'mumamo-fun) - ;;(require 'nxhtml-mumamo) - ;;(require 'as-external) - ) - -;; (setq magic-mode-alist nil) -;; (defcustom nxhtml-magic-mode-alist -;; '( - +(message "nxhtml-autoload starting ... (hm, should maybe be renamed ...)") + +(eval-when-compile (require 'majmodpri)) +(eval-when-compile (require 'moz)) + +;;; Convenient moving by tags: +(eval-after-load 'nxml-mode + '(progn + (define-key nxml-mode-map [C-M-left] 'nxml-backward-element) + (define-key nxml-mode-map [C-M-right] 'nxml-forward-element) + (define-key nxml-mode-map [C-M-up] 'nxml-backward-up-element) + (define-key nxml-mode-map [C-M-down] 'nxml-down-element))) + +;; MozLab support, for more info see moz.el +;;(autoload 'inferior-moz-mode "moz" "MozRepl Inferior Mode" t) +;;(autoload 'moz-minor-mode "moz" "MozRepl Minor Mode" t) +(defun javascript-moz-setup () (moz-minor-mode 1)) +(add-hook 'javascript-mode-hook 'javascript-moz-setup) +;;(add-hook 'js2-fl-mode-hook 'javascript-moz-setup) + + +;; Add nXhtml entries similar to those that are already there for +;; html-mode and xml-mode. +(dolist (mode-list '(auto-mode-alist magic-fallback-mode-alist magic-mode-alist)) + (dolist (rec (symbol-value mode-list)) + (when (eq (cdr rec) 'html-mode) + (add-to-list mode-list (cons (car rec) 'nxhtml-mode))) + (when (eq (cdr rec) 'html-mode) + (add-to-list mode-list (cons (car rec) 'nxhtml-mumamo-mode))) + ;; (when (eq (cdr rec) 'html-mode) + ;; (add-to-list mode-list (cons (car rec) 'html-mumamo-mode))) + (when (eq (cdr rec) 'xml-mode) + (add-to-list mode-list (cons (car rec) 'nxml-mode))) + )) + +;; Add multi major mode entries. (add-to-list 'magic-mode-alist '("\\(?:.\\|\n\\)\\{,200\\}xmlns:py=\"http://genshi.edgewall.org/\"" . genshi-nxhtml-mumamo-mode)) -;;; ) -;;; "List to add to `magic-mode-alist'. -;;; Works similar to `nxhtml-auto-mode-alist'. Note that -;;; `magic-mode-alist' is the first thing tried when choosing a major -;;; mode." -;;; :type '(repeat (cons :tag "Enter file name pattern and major mode" -;;; (regexp :tag "Regexp for file name") -;;; (major-mode-function :tag "Major mode"))) -;;; :set (lambda (sym val) -;;; (set-default sym val) -;;; (dolist (v val) -;;; (add-to-list 'magic-mode-alist v))) -;;; :group 'nxhtml) - -;; (defcustom nxhtml-auto-mode-alist -;; '( (add-to-list 'auto-mode-alist '("\\.htm\\'" . nxhtml-mumamo-mode)) (add-to-list 'auto-mode-alist '("\\.html\\'" . nxhtml-mumamo-mode)) (add-to-list 'auto-mode-alist '("\\.xhtm\\'" . nxhtml-mumamo-mode)) @@ -179,50 +101,34 @@ (add-to-list 'auto-mode-alist '("\\.erb\\'" . eruby-nxhtml-mumamo-mode)) (add-to-list 'auto-mode-alist '("\\.phps\\'" . smarty-nxhtml-mumamo-mode)) (add-to-list 'auto-mode-alist '("\\.epl\\'" . embperl-nxhtml-mumamo-mode)) -(add-to-list 'auto-mode-alist '("\\.lzx\\'" . laszlo-nxml-mumamo-mode)) (add-to-list 'auto-mode-alist '("\\.ghtml\\'" . genshi-nxhtml-mumamo-mode)) + +;; Add html-mumamo style entry if there is an nxhtml-mumamo style entry. +(save-match-data + (dolist (mode-list '(auto-mode-alist magic-fallback-mode-alist magic-mode-alist)) + (dolist (rec (symbol-value mode-list)) + (let* ((mode (cdr rec)) + (name (when (symbolp mode) (symbol-name mode))) + nxmode) + (when (and name + (string-match "nxhtml-mumamo" name)) + (setq name (replace-regexp-in-string "nxhtml-mumamo" "html-mumamo" name t t)) + (setq nxmode (intern-soft name)) + (when nxmode + (add-to-list mode-list (cons (car rec) nxmode)))))))) + +(add-to-list 'auto-mode-alist '("\\.lzx\\'" . laszlo-nxml-mumamo-mode)) (add-to-list 'auto-mode-alist '("\\.js\\'" . javascript-mode)) (add-to-list 'auto-mode-alist '("\\.css\\'" . css-mode)) (add-to-list 'auto-mode-alist '("\\.rnc\\'" . rnc-mode)) -;;; ) -;;; "List to add to `auto-mode-alist'. -;;; This list is added to `auto-mode-alist' when loading -;;; nxhtml-autostart.el and will therefore help Emacs to determine -;;; which major mode a file will be opened in. - -;;; Please notice that `mumamo-mode' may override this choice of -;;; major mode when setting the chunk family. The chunk family then -;;; determines the major mode. The chunk family is set from -;;; `mumamo-filenames-list'. You may want to synch the two list, but -;;; it is not necessary. However not synching may perhaps lead to -;;; surpricing results. To synch the lists means that the mode in -;;; this list should correspond to the main major mode in the mumamo -;;; chunk family. - -;;; * Note: This variable (nxhtml-auto-mode-alist) is just for your -;;; convenience. Probably most users normally just adds to -;;; `auto-mode-alist' in their .emacs with lines like - -;;; \(add-to-list 'auto-mode-alist '(\"\\.x?html?\\'\" . nxhtml-mode)) - -;;; but doing something like that here would make it impossible to -;;; customize that easily for you." -;;; ;;:type '(alist :key-type regexp :tag "hej" :value-type major-mode-function) -;;; :type '(repeat (cons :tag "Enter file name pattern and major mode" -;;; (regexp :tag "Regexp for file name") -;;; (major-mode-function :tag "Major mode"))) -;;; ;;(command :tag "Major mode"))) -;;; :set (lambda (sym val) -;;; (set-default sym val) -;;; (dolist (v val) -;;; (add-to-list 'auto-mode-alist v))) -;;; :group 'nxhtml) (majmodpri-sort-lists) (defvar nxhtml-src-dir (file-name-directory (if load-file-name load-file-name buffer-file-name))) -(provide `nxhtml-autoload) +(message "nxhtml-autoload finished") + +(provide 'nxhtml-autoload) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; nxhtml-autoload.el ends here diff --git a/elpa-to-submit/nxhtml/nxhtml/nxhtml-bug.el b/elpa-to-submit/nxhtml/nxhtml/nxhtml-bug.el index a1820294e2..c415332fb4 100644 --- a/elpa-to-submit/nxhtml/nxhtml/nxhtml-bug.el +++ b/elpa-to-submit/nxhtml/nxhtml/nxhtml-bug.el @@ -44,6 +44,8 @@ ;; ;;; Code: +(eval-when-compile (require 'nxhtml-menu)) + (require 'sendmail) ;;(require 'emacsbug) diff --git a/elpa-to-submit/nxhtml/nxhtml/nxhtml-menu.el b/elpa-to-submit/nxhtml/nxhtml/nxhtml-menu.el index c57568cafc..7cf6a01002 100644 --- a/elpa-to-submit/nxhtml/nxhtml/nxhtml-menu.el +++ b/elpa-to-submit/nxhtml/nxhtml/nxhtml-menu.el @@ -1,1121 +1,1390 @@ -;;; nxhtml-menu.el --- Defines menus for nXhtml -;; -;; Author: Lennart Borgman (lennart O borgman A gmail O com) -;; Created: Sat Apr 21 13:49:41 2007 -(defconst nxhtml-menu:version "1.61") ;;Version: -;; Last-Updated: 2008-08-26T23:28:00+0200 Tue -;; URL: -;; Keywords: -;; Compatibility: -;; -;; Features that might be required by this library: -;; -;; `compile', `flymake', `flymake-js', `flymake-php', `hexcolor', -;; `tool-bar', `xhtml-help'. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Commentary: -;; -;; Menus for nXhtml to be used in different major modes. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Change log: -;; -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2, or -;; (at your option) any later version. -;; -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth -;; Floor, Boston, MA 02110-1301, USA. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Code: - -(require 'hexcolor) -(require 'flymake) -(require 'flymake-php) -(require 'flymake-js) - -(defun nxhtml-nxhtml-in-buffer () - ;;(message "nxhtml-nxhtml-in-buffer ()") - (or (derived-mode-p 'nxhtml-mode) - (when (and (boundp 'mumamo-multi-major-mode) - mumamo-multi-major-mode) - (let ((major-mode (mumamo-main-major-mode))) - (derived-mode-p 'nxhtml-mode))))) - -(defun nxhtml-nxml-in-buffer () - ;;(message "nxhtml-nxml-in-buffer ()") - (or (derived-mode-p 'nxml-mode) - (when (and (boundp 'mumamo-multi-major-mode) - mumamo-multi-major-mode) - (let ((major-mode (mumamo-main-major-mode))) - (derived-mode-p 'nxml-mode))))) - -(defun nxhtml-html-in-buffer () - ;;(message "nxhtml-html-in-buffer ()") - (or (derived-mode-p 'html-mode) - (when (and (boundp 'mumamo-multi-major-mode) - mumamo-multi-major-mode) - (let ((major-mode (mumamo-main-major-mode))) - (derived-mode-p 'html-mode))) - (nxhtml-nxhtml-in-buffer))) - -(defun nxhtml-nxml-html-in-buffer () - ;;(message "nxhtml-nxml-html-in-buffer") - (or (derived-mode-p 'html-mode) - (when (and (boundp 'mumamo-multi-major-mode) - mumamo-multi-major-mode) - (let ((major-mode (mumamo-main-major-mode))) - (derived-mode-p 'html-mode))) - (nxhtml-nxml-in-buffer))) - -(defun nxhtml-this-file-can-have-toc (&optional file) - (unless file - (setq file (html-site-buffer-or-dired-file-name))) - (and (nxhtml-buffer-possibly-local-viewable file) - (html-site-current-merge-dir) - (html-site-current-ensure-file-in-site file))) - -(defun nxhtml-buffer-possibly-local-viewable (&optional file) - ;;(message "nxhtml-buffer-possibly-local-viewable ()") - (unless file - (setq file (html-site-buffer-or-dired-file-name))) - (or (and file - (member (file-name-extension file) - '("html" "htm" "gif" "png"))))) - -(defun nxhtml-buffer-possibly-remote-viewable () - ;;(message "nxhtml-buffer-possibly-remote-viewable ()") - ;; Fix-me - (let* ((fmt "nxhtml-buffer-possibly-remote-viewable.dgffv: %s") - (file (or buffer-file-name - (and (derived-mode-p 'dired-mode) - (condition-case err - (dired-get-file-for-visit) - (error - (message fmt (error-message-string err)) - nil)))))) - (and (featurep 'html-upl) - file - (member (downcase (file-name-extension file)) - '("html" "htm" "gif" "png" "pl" "php"))))) - -(defun nxhtml-insert-menu-dynamically (real-binding) - ;;(message "nxhtml-insert-menu-dynamically (%s)" real-binding) - (when (and (symbolp real-binding) - (boundp real-binding)) - (symbol-value real-binding))) - -(defun nxhtml-menu-image-file () - (or (get-char-property (point) 'image-file) - buffer-file-name)) - -(defun nxhtml-gimp-can-edit () - (gimp-can-edit (nxhtml-menu-image-file))) - -(defun nxhtml-edit-with-gimp () - "Edit with GIMP buffer or file at point." - (interactive) - (gimp-edit-file (nxhtml-menu-image-file))) - -(defconst nxhtml-minor-mode-menu-map - (let ((map (make-sparse-keymap "nxhtml-minor-mode-menu"))) - - (let ((help-map (make-sparse-keymap))) - (define-key help-map [emacs-Q-nxhtml] - (list 'menu-item "Start 'emacs -Q' and load nXhtml" 'emacs-Q-nxhtml)) - (define-key help-map [nxhtmltest-run] - (list 'menu-item "Run nXhtml Tests in Current Emacs" 'nxhtmltest-run)) - (define-key help-map [nxhtmltest-run-Q] - (list 'menu-item "Run nXhtml Tests in a Fresh Emacs" 'nxhtmltest-run-Q)) - (define-key help-map [nxhtml-report-bug] - (list 'menu-item "Report a Bug in nXhtml ..." 'nxhtml-report-bug)) - (define-key help-map [nxhtml-help-separator2] (list 'menu-item "--")) - (define-key help-map [nxhtml-features-check] - (list 'menu-item "Check Optional Features" 'nxhtml-features-check)) - (define-key help-map [nxhtml-customize] - (list 'menu-item "Customize nXhtml ..." 'nxhtml-customize)) -;;; (define-key help-map [nxhtml-quick-customize] -;;; (list 'menu-item "Quick Customize nXhtml ..." 'nxhtml-quick-customize)) - (define-key help-map [nxhtml-help-separator3] (list 'menu-item "--")) -;;; (define-key help-map [nxhtml-help] -;;; (list 'menu-item "nXhtml Help" 'nxhtml-help)) - (define-key help-map [nxhtml-tutorials] - (list 'menu-item "nXhtml Tutorials" 'nxhtml-tutorials)) - (define-key help-map [nxhtml-overview] - (list 'menu-item (concat "nXhtml Version " nxhtml-menu:version " Overview") 'nxhtml-overview)) - (define-key help-map [nxhtml-welcome] - (list 'menu-item "Welcome to nXhtml" 'nxhtml-welcome)) - (define-key map [nxhtml-help-map] - (list 'menu-item "nXhtml Help and Setup" help-map)) - (define-key map [nxhtml-info-separator] (list 'menu-item "--")) - ) - - - - - (let ((tools-map (make-sparse-keymap))) - (define-key map [nxhtml-tools-map] - (list 'menu-item "Tools" tools-map - :visible `(not (derived-mode-p 'dired-mode)) - )) - (let ((fill-map (make-sparse-keymap))) - (define-key tools-map [nxhtml-filling] - (list 'menu-item "Writing Text" fill-map)) - (define-key fill-map [nxhtml-unfill-paragraph] - (list 'menu-item "Unfill Paragraph" 'unfill-paragraph)) - (define-key fill-map [nxhtml-fill-paragraph] - (list 'menu-item "Fill Paragraph" 'fill-paragraph)) - (define-key fill-map [nxhtml-wrap-to-fill-separator] - (list 'menu-item "--" nil)) - (define-key fill-map [nxhtml-html-write-mode] - (list 'menu-item "HTML Write Mode" - 'html-write-mode - :button '(:toggle . (and (boundp 'html-write-mode) - html-write-mode)))) - (define-key fill-map [nxhtml-wrap-to-fill-column-mode] - (list 'menu-item "Wrap To Fill Column Mode" - 'wrap-to-fill-column-mode - :button '(:toggle . wrap-to-fill-column-mode))) - ) - (define-key tools-map [nxhtml-ecb-separator] - (list 'menu-item "--" nil)) - (let ((ecb-map (make-sparse-keymap))) - (define-key tools-map [nxhtml-ecb-map] - (list 'menu-item "ECB" ecb-map)) - (define-key ecb-map [nxhtml-rinari-homepage] - (list 'menu-item "ECB Home Page" - (lambda () - "Open ECB home page in your web browser." - (interactive) - (browse-url "http://ecb.sourceforge.net/")))) - (define-key ecb-map [nxhtml-ecb-home-separator] - (list 'menu-item "--" nil)) - (define-key ecb-map [nxhtml-update-ecb] - (list 'menu-item "Fetch/update ECB dev sources" - 'udev-ecb-update)) - (define-key ecb-map [nxhtml-custom-ecb] - (list 'menu-item "Customize ECB dev startup" - (lambda () (interactive) - (require 'udev-ecb) - (customize-group-other-window 'udev-ecb)))) - (define-key ecb-map [nxhtml-custom-important-ecb] - (list 'menu-item "Customize important ECB things" - (lambda () (interactive) - (customize-group-other-window 'ecb-most-important)) - :enable (featurep 'ecb))) - ) - ;;(define-key tools-map [nxhtml-cedet-separator] (list 'menu-item "--" nil)) - (let ((cedet-map (make-sparse-keymap))) - (define-key tools-map [nxhtml-cedet-map] - (list 'menu-item "CEDET" cedet-map)) - (define-key cedet-map [nxhtml-rinari-homepage] - (list 'menu-item "CEDET Home Page" - (lambda () - "Open CEDET home page in your web browser." - (interactive) - (browse-url "http://cedet.sourceforge.net/")))) - (define-key cedet-map [nxhtml-cedet-home-separator] - (list 'menu-item "--" nil)) - (define-key cedet-map [nxhtml-update-cedet] - (list 'menu-item "Fetch/update CEDET dev sources" - 'udev-cedet-update)) - (define-key cedet-map [nxhtml-custom-cedet] - (list 'menu-item "Customize CEDET dev startup" - (lambda () (interactive) - (require 'udev-cedet) - (customize-group-other-window 'udev-cedet)))) - ) - (let ((rinari-map (make-sparse-keymap))) - (define-key tools-map [nxhtml-rinari-map] - (list 'menu-item "Rinari" rinari-map)) - (define-key rinari-map [nxhtml-rinari-homepage] - (list 'menu-item "Rinari Home Page" - (lambda () - "Open Rinari home page in your web browser." - (interactive) - (browse-url "http://rubyforge.org/projects/rinari/")))) - (define-key rinari-map [nxhtml-rinari-home-separator] - (list 'menu-item "--" nil)) - (define-key rinari-map [nxhtml-update-rinari] - (list 'menu-item "Fetch/update Rinari dev sources" - 'udev-rinari-update)) - (define-key rinari-map [nxhtml-custom-rinari] - (list 'menu-item "Customize Rinari startup" - (lambda () (interactive) - (require 'udev-rinari) - (customize-group-other-window 'udev-rinari)))) - ) - (let ((mozrepl-map (make-sparse-keymap))) - (define-key tools-map [nxhtml-mozrepl-map] - (list 'menu-item "MozRepl for Javascript" mozrepl-map - )) - (define-key mozrepl-map [nxhtml-mozrepl-home-page] - (list 'menu-item "MozLab/MozRepl Home Page" - (lambda () - "Open MozLab/MozRepl home page in your web browser." - (interactive) - (browse-url "http://hyperstruct.net/projects/mozlab")))) - (define-key mozrepl-map [nxhtml-mozrepl-separator2] - (list 'menu-item "--" nil)) - (define-key mozrepl-map [nxhtml-mozrepl-run-mozilla] - (list 'menu-item "Display/Start MozRepl Process" 'run-mozilla - :enable '(and (boundp 'moz-minor-mode) moz-minor-mode))) - (define-key mozrepl-map [nxhtml-mozrepl-separator1] - (list 'menu-item "--" nil)) - (define-key mozrepl-map [nxhtml-mozrepl-save-and-send] - (list 'menu-item "Save Buffer and Send it" 'moz-save-buffer-and-send - :enable '(or (not (boundp 'mumamo-multi-major-mode)) - (not mumamo-multi-major-mode)))) - - - - (define-key mozrepl-map [nxhtml-mozrepl-send-defun-and-go] - (list 'menu-item "Send Current Function, Go to MozRepl" - 'moz-send-defun-and-go - :enable '(and (boundp 'moz-minor-mode) moz-minor-mode))) - (define-key mozrepl-map [nxhtml-mozrepl-send-defun] - (list 'menu-item "Send Current Function" 'moz-send-defun - :enable '(and (boundp 'moz-minor-mode) moz-minor-mode))) - (define-key mozrepl-map [nxhtml-mozrepl-send-region] - (list 'menu-item "Send the Region" 'moz-send-region - :enable '(and mark-active - (boundp 'moz-minor-mode) moz-minor-mode))) - ) - (define-key tools-map [nxhtml-majpri-separator] - (list 'menu-item "--" nil)) - (let ((majpri-map (make-sparse-keymap))) - (define-key tools-map [nxhtml-majpri-map] - (list 'menu-item "Major Modes Priorities" majpri-map)) - (define-key majpri-map [nxhtml-majpri-act] - (list 'menu-item "Apply Major Modes Priorities" - 'majmodpri-apply-priorities)) - (define-key majpri-map [nxhtml-majpri-cust] - (list 'menu-item "Customize Major Mode Priorities" - (lambda () (interactive) - (customize-group-other-window 'majmodpri)))) - ) - (define-key tools-map [nxhtml-tidy-separator] - (list 'menu-item "--" nil)) - (define-key tools-map [nxhtml-tidy-map] - (list 'menu-item "Tidy XHTML" 'tidy-menu-symbol - :filter 'nxhtml-insert-menu-dynamically - :visible '(featurep 'tidy-xhtml) - :enable '(and (featurep 'tidy-xhtml) - (or (derived-mode-p 'html-mode) - (nxhtml-nxhtml-in-buffer))))) - (define-key tools-map [nxhtml-flymake] - (list 'menu-item "Flymake Mode" 'flymake-mode - :button '(:toggle . flymake-mode) - :enable '(and buffer-file-name - (flymake-get-init-function buffer-file-name) - ))) - (let ((flyspell-map (make-sparse-keymap))) - (define-key tools-map [nxhtml-flyspell-map] - (list 'menu-item "Flyspell" flyspell-map)) - (define-key flyspell-map [nxhtml-flyspell-goto-next] - (list 'menu-item "Flyspell Go To Next Error" 'flyspell-goto-next-error - :enable 'flyspell-mode)) - (define-key flyspell-map [nxhtml-flyspell-region] - (list 'menu-item "Flyspell Region" 'flyspell-region - :enable 'flyspell-mode)) - (define-key flyspell-map [nxhtml-flyspell-div-1] - (list 'menu-item "--")) - (define-key flyspell-map [nxhtml-flyspell] - (list 'menu-item "Flyspell Mode" 'flyspell-mode - :button '(:toggle . flyspell-mode))) - ) - (define-key tools-map [nxhtml-flyspell-separator] - (list 'menu-item "--")) - (let ((img-map (make-sparse-keymap))) - (define-key tools-map [nxhtml-img-map] - (list 'menu-item "Images" img-map)) - (define-key img-map [nxhtml-gimp-edit] - (list 'menu-item "Edit with GIMP" 'nxhtml-edit-with-gimp - :enable '(nxhtml-gimp-can-edit))) - (define-key img-map [nxhtml-gimp-separator] - (list 'menu-item "--")) - (define-key img-map [nxhtml-inlimg-toggle-img] - (list 'menu-item "Toggle Display of Image" 'inlimg-toggle-img-display)) - (define-key img-map [nxhtml-inlimg-mode] - (list 'menu-item "Show Images" 'inlimg-mode - :button '(:toggle . (and (boundp 'inlimg-mode) inlimg-mode))))) - (define-key tools-map [nxhtml-img-separator] - (list 'menu-item "--")) - (let ((some-help-map (make-sparse-keymap))) - (define-key tools-map [nxhtml-some-help-map] - (list 'menu-item "Help for Item at Point" some-help-map)) - (define-key some-help-map [nxhtml-css-help] - (list 'menu-item "CSS Help" 'xhtml-help-show-css-ref - :enable '(featurep 'xhtml-help))) - (define-key some-help-map [nxhtml-tag-help] - (list 'menu-item "XHTML Tag Help" 'nxhtml-short-tag-help - :enable '(featurep 'xhtml-help)))) - - (let ((hexclr-map (make-sparse-keymap))) - (define-key tools-map [nxhtml-hexcolor] - (list 'menu-item "Color Help" hexclr-map)) - (define-key hexclr-map [nxhtml-hexcolor-mode] - (list 'menu-item "Hex Color Mode" - 'hexcolor-mode - :filter 'nxhtml-insert-menu-dynamically - :enable '(and font-lock-mode - (or (not (boundp 'mumamo-multi-major-mode)) - (not mumamo-multi-major-mode)) - (featurep 'hexcolor)) - :button '(:toggle . (and (boundp 'hexcolor-mode) hexcolor-mode)))) - (define-key hexclr-map [nxhtml-hexcolor-test] - (list 'menu-item "Color Test" 'hexcolor-test - :enable '(featurep 'hexcolor)))) - - (let ((where-map (make-sparse-keymap))) - (define-key tools-map [nxml-where] - (list 'menu-item "XML Path" where-map - :enable '(and (fboundp 'nxml-where-mode) - (or (derived-mode-p 'nxml-mode) - (nxhtml-nxhtml-in-buffer))))) - (define-key where-map [nxml-where-id] - (list 'menu-item "Show tag ids in path" 'nxml-where-tag+id-toggle - :enable '(boundp 'nxml-where-tag+id) - :button '(:toggle . (and (boundp 'nxml-where-tag+id) - nxml-where-tag+id)))) - (define-key where-map [nxml-where-header] - (list 'menu-item "Show XML path in header" 'nxml-where-header-toggle - :enable '(boundp 'nxml-where-header) - :button '(:toggle . (and (boundp 'nxml-where-header) - 'nxml-where-header)))) - (define-key where-map [nxml-where-marks] - (list 'menu-item "Show XML path marks" 'nxml-where-marks-toggle - :enable '(boundp 'nxml-where-marks) - :button '(:toggle . (and (boundp 'nxml-where-marks) - nxml-where-marks)))) - (define-key where-map [where-separator] (list 'menu-item "--")) - (define-key where-map [nxml-where-global-toggle] - (list 'menu-item "Show XML path" 'nxml-where-global-mode - :button '(:toggle . nxml-where-global-mode))) - (define-key where-map [nxml-where-toggle] - (list 'menu-item "Show XML path in buffer" 'nxml-where-mode - :button '(:toggle . (and (boundp 'nxml-where-mode) - nxml-where-mode)))) - )) - - (let ((quick-map (make-sparse-keymap))) - (define-key map [nxhtml-quick-map] - (list 'menu-item "Quick Inserts etc" quick-map - :visible '(or (derived-mode-p 'html-mode) - (nxhtml-nxhtml-in-buffer)))) - (let ((sometoc-map (make-sparse-keymap))) - (let ((toc-map (make-sparse-keymap))) - (define-key sometoc-map [nxhtml-toc-map] - (list 'menu-item "For Site" toc-map - :enable '(featurep 'html-toc))) - (define-key toc-map [nxhtml-html-wtoc] - (list 'menu-item "Merge Pages and TOC" - 'html-wtoc-write-pages-with-toc - :enable '(and (html-site-current-page-list)))) - (define-key toc-map [nxthml-html-toc] - (list 'menu-item "With Frames" 'html-toc-menu-map - :filter 'nxhtml-insert-menu-dynamically))) - (define-key sometoc-map [nxhtml-html-pagetoc] - (list 'menu-item "For Page" 'html-pagetoc-menu-map - :filter 'nxhtml-insert-menu-dynamically - :enable '(featurep 'html-pagetoc))) - (define-key quick-map [nxhtml-sometoc-map] - (list 'menu-item "Table of Contents" sometoc-map - :visible '(or (derived-mode-p 'html-mode) - (nxhtml-nxhtml-in-buffer))))) - (define-key quick-map [nxhtml-quick-sep-1] - (list 'menu-item "--")) - (define-key quick-map [nxhtml-spec-chars] - (list 'menu-item "Insert special character" - 'nxml-insert-named-char)) - (define-key quick-map [nxhtml-css-rollover] - (list 'menu-item "Insert CSS Rollover Images" - 'nxhtml-rollover-insert-2v))) - - (define-key map [nxhtml-help-tools-separator] - ;; Notice that removing nil below gives an error that is quite - ;; hard to catch: - ;; - ;; Wrong type argument: arrayp, not - (list 'menu-item "--" nil - :visible `(not (derived-mode-p 'dired-mode)) - )) - - - (let ((upl-map (make-sparse-keymap "html-upl"))) - (define-key map [nxhtml-upl-map] - (list 'menu-item "File Transfer" upl-map - :enable '(featurep 'html-upl))) - (define-key upl-map [nxhtml-upl-remote-dired] - (list 'menu-item "Remote Dired" 'html-upl-remote-dired)) - (define-key upl-map [nxhtml-upl-dired-sep] (list 'menu-item "--")) - (define-key upl-map [nxhtml-upl-edit-remote-wtoc] - (list 'menu-item "Edit Remote File With TOC" 'html-upl-edit-remote-file-with-toc - :visible '(nxhtml-this-file-can-have-toc))) - (define-key upl-map [nxhtml-upl-edit-remote] - (list 'menu-item "Edit Remote File" 'html-upl-edit-remote-file)) - (define-key upl-map [nxhtml-upl-ediff-file] - (list 'menu-item "Ediff Remote/Local Files" 'html-upl-ediff-file)) - (define-key upl-map [nxhtml-upl-sep] (list 'menu-item "--")) - (define-key upl-map [nxhtml-upl-upload-site-with-toc] - (list 'menu-item "Upload Site with TOC" 'html-upl-upload-site-with-toc - :visible '(and (html-site-current-merge-dir) - (html-site-current-ensure-file-in-site file)))) - (define-key upl-map [nxhtml-upl-upload-site] - (list 'menu-item "Upload Site" 'html-upl-upload-site)) - (define-key upl-map [nxhtml-upl-upload-file] - (list 'menu-item "Upload Single File" 'html-upl-upload-file)) - ) - - - (let ((browse-map (make-sparse-keymap))) - (define-key map [nxhtml-browse-map] - (list 'menu-item "Browse" browse-map - '(or buffer-file-name - (eq major-mode 'nxhtml-mode)) - :enable '(nxhtml-buffer-possibly-local-viewable))) - (define-key browse-map [nxhtml-browse-region] - (list 'menu-item "Browse the Region Only" 'nxhtml-browse-region - :enable 'mark-active)) - (define-key browse-map [nxhtml-upl-sep3] (list 'menu-item "--")) - (define-key browse-map [nxhtml-upl-browse-remote-wtoc] - (list 'menu-item "Browse Uploaded File With TOC" 'html-upl-browse-remote-with-toc - :visible '(and (nxhtml-buffer-possibly-local-viewable) - (featurep 'html-wtoc) - (html-site-current-merge-dir) - (html-site-current-ensure-file-in-site file) - (nxhtml-buffer-possibly-remote-viewable) - ))) - (define-key browse-map [nxhtml-upl-browse-remote-frame-file] - (list 'menu-item "Browse Uploaded Frames File" 'html-upl-browse-remote-frames - :enable '(nxhtml-buffer-possibly-remote-viewable))) - (define-key browse-map [nxhtml-upl-browse-remote] - (list 'menu-item "Browse Uploaded File" 'html-upl-browse-remote - :enable '(nxhtml-buffer-possibly-remote-viewable))) - (define-key browse-map [nxhtml-upl-sep2] - (list 'menu-item "--")) - (define-key browse-map [nxhtml-browse-merged-file] - (list 'menu-item "Browse File With TOC" 'html-wtoc-browse-page-with-toc - :visible '(and (nxhtml-buffer-possibly-local-viewable) - (featurep 'html-wtoc) - (html-site-current-merge-dir) - (html-site-current-ensure-file-in-site file) - ))) - (define-key browse-map [nxhtml-browse-frame-file] - (list 'menu-item "Browse Frames File" 'html-toc-browse-frames-file - :enable '(and (featurep 'html-toc) - (nxhtml-buffer-possibly-local-viewable)))) - (define-key browse-map [nxhtml-browse-file] - (list 'menu-item "Browse File" 'nxhtml-browse-file - :enable '(nxhtml-buffer-possibly-local-viewable))) - ) - - - (let ((link-map (make-sparse-keymap))) - - (define-key link-map [nxhtml-chklnk] - (list 'menu-item "Check Links" 'html-chklnk-check-site-links - :enable '(featurep 'html-chklnk))) - - (let ((move-map (make-sparse-keymap))) - (define-key move-map [html-move-buffer-file] - (list 'menu-item "Move Buffer File" 'html-move-buffer-file - :help "Move buffer file and update links" - :enable '(and buffer-file-name - (featurep 'html-move)))) - (define-key link-map [move-map] - (list 'menu-item "Moving Files" move-map)) - (define-key link-map [move-map-separator] (list 'menu-item "--")) - ) - - - (define-key link-map [nxhtml-paste-link] - (list 'menu-item "Paste Saved Relative Link" 'nxhtml-paste-link - :help "Paste link" - :enable '(and (boundp 'nxhtml-saved-link-file) - nxhtml-saved-link-file))) - (define-key link-map [nxhtml-paste-link-as-a-tag] - (list 'menu-item "Paste Saved Relative Link as " 'nxhtml-paste-link-as-a-tag - :help "Paste link as tag" - :enable '(and (boundp 'nxhtml-saved-link-file) - nxhtml-saved-link-file - (nxhtml-nxml-html-in-buffer)))) - (define-key link-map [nxhtml-save-link-to-here] - (list 'menu-item "Save Relative Link to Current File" 'nxhtml-save-link-to-here - :help "Save link info for current file" - :enable 'buffer-file-name)) - - (define-key link-map [nxhtml-separator-1] (list 'menu-item "--")) - (define-key link-map [mlinks-goto-link-other-frame] - (list 'menu-item "Follow MLink Link in New Frame" 'mlinks-goto-other-frame - :enable '(and (boundp 'mlinks-mode) - mlinks-mode) - :help "Follow MLinks Link in New Frame")) - (define-key link-map [mlinks-goto-link-other-window] - (list 'menu-item "Follow MLink Link in Other Window" 'mlinks-goto-other-window - :enable '(and (boundp 'mlinks-mode) - mlinks-mode) - :help "Follow MLinks Link in Other Window")) - (define-key link-map [mlinks-goto-link] - (list 'menu-item "Follow MLink Link" 'mlinks-goto - :enable '(and (boundp 'mlinks-mode) - mlinks-mode) - :help "Follow MLinks Link")) - (define-key link-map [nxhtml-separator-follow-mlink] (list 'menu-item "--")) - (define-key link-map [mlinks-next-link] - (list 'menu-item "Next MLink Link" 'mlinks-forward-link - :enable '(and (boundp 'mlinks-mode) - mlinks-mode) - :help "Go to next MLinks link")) - (define-key link-map [mlinks-prev-link] - (list 'menu-item "Previous MLink Link" 'mlinks-backward-link - :enable '(and (boundp 'mlinks-mode) - mlinks-mode) - :help "Go to previous MLinks link")) - -;; (define-key link-map [nxhtml-next-href] -;; (list 'menu-item "Next Link" 'nxhtml-next-href -;; :help "Go to next href field")) -;; (define-key link-map [nxhtml-prev-href] -;; (list 'menu-item "Previous Link" 'nxhtml-prev-href -;; :help "Go to previous href field")) - - (define-key map [nxhtml-link-map] - (list 'menu-item "Links" link-map - :visible `(not (derived-mode-p 'dired-mode)) - ))) - - - (let ((site-map (make-sparse-keymap))) - (define-key map [nxhtml-site-map] - (list 'menu-item "Site" site-map)) - (define-key site-map [html-site-global-mode] - (list 'menu-item "HTML Site Global Mode" - 'html-site-global-mode - :button '(:toggle . (and (boundp 'html-site-global-mode) - html-site-global-mode)))) - (define-key site-map [nxhtml-site-separator] (list 'menu-item "--")) - (define-key site-map [nxhtml-customize-site-list] - (list 'menu-item "Edit Sites" (lambda () (interactive) - (customize-option-other-window 'html-site-list)))) - (define-key site-map [nxhtml-set-site] - (list 'menu-item "Set Current Site" 'html-site-set-site)) - (define-key site-map [nxhtml-site-separator-1] (list 'menu-item "--")) - (define-key site-map [nxhtml-dired-site-top] - (list 'menu-item "Dired Site" 'html-site-dired-current)) - (define-key site-map [nxhtml-find-site-file] - (list 'menu-item "Find File in Site" 'html-site-find-file)) - (define-key site-map [nxhtml-site-search-separator] - (list 'menu-item "--" nil)) - (define-key site-map [nxhtml-replace-in-site] - (list 'menu-item "Replace in Site Files" 'html-site-query-replace)) - (define-key site-map [nxhtml-rgrep-in-site] - (list 'menu-item "Search Site Files" 'html-site-rgrep)) - ) - - (define-key map [nxhtml-insert-separator] - (list 'menu-item "--" nil - :visible `(not (derived-mode-p 'dired-mode)) - )) - (let ((chunk-map (make-sparse-keymap))) - (define-key map [nxhtml-chunk-map] - (list 'menu-item "Chunk" chunk-map - :visible `(not (derived-mode-p 'dired-mode)) - :enable '(and (boundp 'mumamo-multi-major-mode) - mumamo-multi-major-mode))) - (define-key chunk-map [mumamo-mark-chunk] - (list 'menu-item "Mark Chunk" - 'mumamo-mark-chunk)) - (define-key chunk-map [nxhtml-separator-mark-chunk] (list 'menu-item "--")) - (define-key chunk-map [mumamo-backward-chunk] - (list 'menu-item "Backward Chunk" - 'mumamo-backward-chunk)) - (define-key chunk-map [mumamo-forward-chunk] - (list 'menu-item "Forward Chunk" - 'mumamo-forward-chunk))) - (let ((tag-map (make-sparse-keymap))) - (define-key map [nxhtml-tag-map] - (list 'menu-item "Move by Tag" tag-map - :visible '(or (derived-mode-p 'nxml-mode) - (derived-mode-p 'sgml-mode)) - :enable '(or (derived-mode-p 'nxml-mode) - (nxhtml-nxhtml-in-buffer)))) - (define-key tag-map [nxml-forward-par] - (list 'menu-item "Forward Paragraph" - 'nxml-forward-paragraph)) - (define-key tag-map [nxml-backward-par] - (list 'menu-item "Backward Paragraph" - 'nxml-backward-paragraph)) - (define-key tag-map [nxml-insert-separator-move2] (list 'menu-item "--")) - (define-key tag-map [nxml-down] - (list 'menu-item "Forward Into Tag" - 'nxml-down-element)) - (define-key tag-map [nxml-backward-up] - (list 'menu-item "Backward Out of Tag" - 'nxml-backward-up-element)) - (define-key tag-map [nxml-insert-separator-move] (list 'menu-item "--")) - (define-key tag-map [nxml-forward] - (list 'menu-item "Forward Balanced Tag" - 'nxml-forward-element)) - (define-key tag-map [nxml-backward] - (list 'menu-item "Backward Balanced Tag" - 'nxml-backward-element)) - ) - - (let ((cmpl-map (make-sparse-keymap))) - (define-key map [nxhtml-cmpl-map] - (list 'menu-item "Completion and Validation" cmpl-map - ;; :enable '(or (derived-mode-p 'nxml-mode) (nxhtml-nxhtml-in-buffer)) - :visible `(not (derived-mode-p 'dired-mode)) - )) - (let ((val-map (make-sparse-keymap))) - (define-key cmpl-map [nxhtml-cmpl-val-map] - (list 'menu-item "Validation Helpers (for php etc)" val-map - :enable '(nxhtml-nxhtml-in-buffer) - :visible '(nxhtml-nxml-html-in-buffer))) -;;; (define-key val-map [nxhtml-strval-mode] -;;; (list 'menu-item "Allow attr=\"\" etc" -;;; 'nxhtml-strval-mode -;;; :button '(:toggle . nxhtml-strval-mode))) - (define-key val-map [nxhtml-toggle-warnings] - (list 'menu-item "Hide Validation Errors" - 'nxhtml-toggle-visible-warnings - :button '(:toggle . (not (nxhtml-warnings-are-visible))) - )) - (define-key val-map [nxhtml-error-separator] (list 'menu-item "--")) - (define-key val-map [nxhtml-remove-saved-validation-header] - (list 'menu-item "Remove File's Fictive XHTML Validation Header" - 'nxhtml-remove-saved-validation-header - ;; Fix-me: maybe a better enable here? - :enable 'nxhtml-validation-header-mode)) - (define-key val-map [nxhtml-save-validation-header] - (list 'menu-item "Save File's Fictive XHTML Validation Header" - 'nxhtml-save-validation-header - :enable 'nxhtml-validation-header-mode)) - (define-key val-map [nxhtml-set-validation-header] - (list 'menu-item "Choose Fictive XHTML Validation Header for Buffer" - 'nxhtml-set-validation-header)) - (define-key val-map [nxhtml-update-validation-header] - (list 'menu-item "Update Fictive XHTML Validation Header for Buffer" - 'nxhtml-update-validation-header)) - (define-key val-map [nxhtml-use-saved-val-separator] (list 'menu-item "--")) -;;; (let ((afic-map (make-sparse-keymap))) -;;; (define-key val-map [nxhtml-afic-map] -;;; (list 'menu-item "Automatic Fictive XHTML Validation Header" afic-map)) -;;; (define-key afic-map [nxhtml-validation-header-mumamo-set] -;;; (list 'menu-item "Customize Automatic XHTML Validation Turn On" -;;; (lambda () (interactive) (customize-option 'nxhtml-validation-header-mumamo-modes)))) -;;; (define-key afic-map [nxhtml-validation-header-mumamo] -;;; (list 'menu-item "Turn on Fictive XHTML Validation Header with MuMaMo" -;;; 'nxhtml-validation-header-if-mumamo-toggle -;;; :button '(:toggle . nxhtml-validation-header-if-mumamo)))) - (define-key val-map [nxhtml-show-validation-header] - (list 'menu-item "Display Fictive XHTML Validation Header" - 'rngalt-display-validation-header-toggle - :help-echo "Displays the Fictive XHTML validation header (if any) at top of buffer" - :button '(:toggle . rngalt-display-validation-header))) - (define-key val-map [nxhtml-recheck-validation-header] - (list 'menu-item "Recheck Fictive XHTML Validation Header in Buffer" - 'nxhtml-recheck-validation-header - :enable 'nxhtml-validation-header-mode)) - (define-key val-map [nxhtml-validation-header-mode] - (list 'menu-item "Use Fictive XHTML Validation Header in Buffer" - 'nxhtml-validation-header-mode - :button '(:toggle . nxhtml-validation-header-mode))) - ) - (define-key cmpl-map [nxhtml-validation-separator] - (list 'menu-item "--" nil - :visible '(nxhtml-nxml-html-in-buffer))) - (let ((style-map (make-sparse-keymap))) - (define-key cmpl-map [nxhtml-cmpl-style-map] - (list 'menu-item "Completion Style" style-map - :visible '(nxhtml-nxml-html-in-buffer) - :enable '(nxhtml-nxhtml-in-buffer))) - ;;(defun nxhtml-nxml-html-in-buffer () - (define-key style-map [popcmp-with-help] - (list 'menu-item "Show Short Help Beside Alternatives" - 'popcmp-short-help-beside-alts-toggle - :button '(:toggle . popcmp-short-help-beside-alts))) - (define-key style-map [nxhtml-tag-do-also] - (list 'menu-item "Complete Tag Extras" - 'nxhtml-tag-do-also-toggle - :button '(:toggle . nxhtml-tag-do-also))) - (define-key style-map [popcmp-group-alternatives] - (list 'menu-item "Group Alternatives" - 'popcmp-group-alternatives-toggle - :button '(:toggle . popcmp-group-alternatives))) - (define-key style-map [popcmp-popup-completion] - (list 'menu-item "Popup Style Completion" - 'popcmp-popup-completion-toggle - :button '(:toggle . popcmp-popup-completion))) - ) - (define-key cmpl-map [nxhtml-cmpl-separator] - (list 'menu-item "--" nil - :visible '(nxhtml-nxml-html-in-buffer))) - (define-key cmpl-map [nxhtml-untag-element] - (list 'menu-item "Untag Element" 'nxml-untag-element - :enable '(nxhtml-nxhtml-in-buffer) - :visible '(nxhtml-nxml-html-in-buffer))) - (define-key cmpl-map [rngalt-finish-element] - (list 'menu-item "Insert End Tag" 'rngalt-finish-element - :enable '(nxhtml-nxhtml-in-buffer) - :visible '(nxhtml-nxml-html-in-buffer))) - (define-key cmpl-map [nxhtml-complete] - (list 'menu-item "Complete tag, attribute etc" 'nxml-complete - :enable '(nxhtml-nxml-in-buffer) - :visible '(nxhtml-nxml-html-in-buffer))) - (define-key cmpl-map [nxhtml-tab-complete-div] - (list 'menu-item "--" nil - :visible '(nxhtml-nxml-html-in-buffer))) - (define-key cmpl-map [nxhtml-tab-complete] - (list 'menu-item "Indent and then Complete" 'tabkey2-first)) - ) - - map)) - -(defvar nxhtml-minor-mode-map - (let ((map (make-sparse-keymap))) - (require 'xhtml-help nil t) - (when (featurep 'xhtml-help) - (define-key map [(control ?c) ?? ?x] 'nxhtml-short-tag-help) - (define-key map [(control ?c) ?? ?c] 'xhtml-help-show-css-ref) - ) - (define-key map [(control ?c) ?_] 'nxhtml-toggle-visible-warnings) - (define-key map [menu-bar nxhtml-minor-mode] - (list 'menu-item "nXhtml" nxhtml-minor-mode-menu-map)) - map)) - -;;;###autoload -(define-minor-mode nxhtml-minor-mode - "Minor mode to turn on some key and menu bindings. -See `nxhtml-mode' for more information." - :keymap nxhtml-minor-mode-map - :group 'nxhtml - ;;(if nxhtml-minor-mode (message "+++> Turning on nxhtml-minor-mode") (message "---> Turning off nxhtml-minor-mode")) - ) -;;(put 'nxhtml-minor-mode 'permanent-local t) - -(defcustom nxhtml-minor-mode-modes - '( - nxhtml-mode - nxml-mode - html-mode - sgml-mode - xml-mode - php-mode - css-mode - javascript-mode - java-mode ;; jsp - image-mode - ;; - dired-mode - ) - "List for turning on `nxhtml-minor-mode'. -If the buffer's major modes is any of those in this list then -`nxhtml-global-minor-mode' will turn on `nxhtml-minor-mode' in -the buffer." - :type '(repeat (symbol :tag "Major mode")) - :group 'nxhtml) - -(defun nxhtml-maybe-turn-on-minor-mode () - "Maybe turn on `nxhtml-minor-mode'. -See `nxhtml-minor-mode-modes'." - (unless (or (minibufferp (current-buffer)) - (string= " " (substring (buffer-name) 0 1)) - (string= "*" (substring (buffer-name) 0 1)) - ) - (let ((on (and (boundp 'mumamo-multi-major-mode) - mumamo-multi-major-mode))) - (dolist (major nxhtml-minor-mode-modes) - (when (derived-mode-p major) - (setq on t))) -;; (when (string= "php" (file-name-extension (buffer-file-name))) -;; (lwarn 't :warning "on=%s, major-mode=%s" on major-mode)) - (when on - (nxhtml-minor-mode 1))))) - -;;;###autoload -(define-globalized-minor-mode nxhtml-global-minor-mode - nxhtml-minor-mode - nxhtml-maybe-turn-on-minor-mode - :require 'nxhtml-menu - :group 'nxhtml) -(custom-reevaluate-setting 'nxhtml-global-minor-mode) -(when nxhtml-global-minor-mode (nxhtml-global-minor-mode 1)) - - -(defun nxhtml-docfile () - (let* ((libfile (locate-library "nxhtml")) - (docfile (expand-file-name "doc/nxhtml.html" - (file-name-directory libfile)))) - docfile)) - -(defun nxhtml-docfile-url () - (concat "file://" (nxhtml-docfile))) - -(defun nxhtml-overview () - "Show a HTML page with an overview of nXhtml." - (interactive) - (browse-url (nxhtml-docfile-url))) - -(defun nxhtml-tutorials () - "Show a HTML page with a list of tutorials for nXhtml'." - (interactive) - (browse-url "http://ourcomments.org/Emacs/nXhtml/tut/tutorials.html")) - -(defun nxhtml-custom-valfaced (value &optional bgcolor) - (let ((v (if (sequencep value) - (copy-seq value) - value)) - (bgcolor (if bgcolor bgcolor "RGB:FF/FF/AA"))) - (put-text-property 0 (length v) - 'face (list - 'bold - (cons 'background-color bgcolor) - ) - v) - v)) -(defun nxhtml-custom-insert-nxhtml-row (symbol nxhtml-value description) - (let ((desc (if description - (format "%s (%s)" description symbol) - (format "%s" (custom-unlispify-tag-name symbol))))) - (widget-insert " " description " (") - (nxhtml-custom-describe-defun symbol) - (widget-insert "): " - (nxhtml-custom-valfaced - (format "%s" (symbol-value symbol)) - (if (eq (symbol-value symbol) - nxhtml-value) - "GreenYellow" - "gainsboro")) - "\n"))) - -(defun nxhtml-custom-h1(title &optional divider top-newline) - (let ((s title)) - (put-text-property 0 (length s) - 'face '(:weight bold - :height 1.4 - :foreground "DarkGreen" - ;;:underline t - ) - s) - (when top-newline (widget-insert "\n")) - ;;(when divider (widget-insert (nxhtml-custom-divider (length s)))) - (widget-insert s) - )) - -(defun widget-button-notify (widget &rest ignore) - (apply (widget-get widget 'function) (widget-get widget 'data))) - -(defun widget-insert-link (txt function data) - (widget-insert-button txt function data - :button-face 'link - :mouse-face 'highlight - :button-prefix "" - :button-suffix "")) - -(defun widget-insert-button (txt function data &rest keywords) - (let ((btn (apply 'widget-create - (append - '(push-button - :notify - widget-button-notify) - keywords - (list txt))))) - (widget-put btn 'data data) - (widget-put btn 'function function))) - -(defun nxhtml-custom-url-link (txt url) - (let ((plain-url (substring-no-properties url))) - (unless (equal txt url) - (put-text-property 0 (length txt) 'help-echo plain-url txt)) - (put-text-property 0 (length txt) 'mouse-face 'highlight txt) - (widget-insert-link txt 'browse-url (list url)))) - -(defun nxhtml-custom-describe-defun (sym &optional help) - (let ((txt (symbol-name sym))) - (when help - (put-text-property 0 (length txt) 'help-echo help txt)) - (put-text-property 0 (length txt) 'mouse-face 'highlight txt) - (widget-insert-link txt 'describe-function (list sym)))) - -;; (defun nxhtml-quick-customize (&optional same-window) -;; "Show page for Quick Customize of nXhtml." -;; (interactive) -;; (require 'nxhtml) -;; (require 'custom) -;; (require 'cus-edit) -;; (if same-window -;; (switch-to-buffer "*Quick Customize nXhtml*") -;; (switch-to-buffer-other-window "*Quick Customize nXhtml*")) -;; (kill-all-local-variables) -;; (custom-mode) -;; (let ((inhibit-read-only t)) -;; (erase-buffer)) -;; (let ((sFound "found") -;; (sError "error")) -;; (put-text-property 0 (length sFound) -;; 'face '(bold -;; (foreground-color . "green")) sFound) -;; (put-text-property 0 (length sError) -;; 'face '(bold -;; (foreground-color . "red")) sError) -;; (let* ( -;; (default-used "(not set yet - default used)") -;; ) -;; (nxhtml-custom-h1 "Quick Customize for nXhtml" t) -;; (widget-insert " - -;; This page is for a quick and easy setup of some ") -;; (nxhtml-custom-url-link "nXhtml" (nxhtml-docfile-url)) -;; (widget-insert " features -;; that I did not want to turn on by default since they alter what -;; happens when you open a file. I suggest however that you turn -;; them on since they are quite useful if you just understands what -;; is happening. - -;; The values you set here are saved so that they will be used next -;; time you start Emacs too.") -;; ;;(widget-insert-link "customize nXhtml" 'customize-group (list 'nxhtml)) -;; (widget-insert "\n\n") - -;; (nxhtml-custom-insert-nxhtml-row 'nxhtml-global-minor-mode t "Show the nXhtml menu in all relevant buffers\n\t") -;; ;;(nxhtml-custom-insert-nxhtml-row 'mumamo-global-mode t "Turn on Multiple Major Mode in all relevant buffers\n\t") -;; ;;(nxhtml-custom-insert-nxhtml-row 'mlinks-global-mode t "Make link of lins, for example href=\"...\"\n\t") -;; ;;(nxhtml-custom-insert-nxhtml-row 'indent-region-mode t "Use TAB to indent region when it is selected\n\t") - -;; (widget-insert "\n") -;; (widget-insert-button " Turn them all on " -;; (lambda () -;; (nxhtml-quick-all t) -;; (nxhtml-quick-customize t)) -;; nil) -;; (widget-insert " ") -;; (widget-insert-button " Turn them all off " -;; (lambda () -;; (nxhtml-quick-all nil) -;; (nxhtml-quick-customize t)) -;; nil) -;; (beginning-of-line) -;; ))) - -;; (defun nxhtml-quick-all (on) -;; (custom-set-and-prepare-save 'nxhtml-global-minor-mode on) -;; ;;(custom-set-and-prepare-save 'mumamo-global-mode on) -;; (custom-set-and-prepare-save 'indent-region-mode on) -;; (when custom-file -;; (custom-save-all))) - -(defun custom-set-and-prepare-save (symbol value) - "Set SYMBOL to VALUE and add to customize. -Both the current value and the value to save is set, but -`custom-save-all' must be called to save customization." - (customize-set-variable symbol value) - (customize-set-value symbol value) - (customize-mark-to-save symbol)) - - -;;(nxhtml-quick-customize) - -(defun nxhtml-welcome () - "Show welcome information." - (interactive) - (require 'cus-edit) - (let* ((bufnam "*nXhtml Welcome*") - (oldbuf (get-buffer bufnam)) - (curwin (selected-window))) - (switch-to-buffer-other-window bufnam) - (unless oldbuf - (let ((inhibit-read-only t) - (here (point))) - (custom-mode) - (setq cursor-in-non-selected-windows nil) - (nxhtml-custom-h1 "Welcome to nXhtml - a package for web editing" t) - (insert "\n\n") - (setq here (point)) - (insert "If you have not done it already it might " - "be a good time to read at least The Quick Guide in the ") - (nxhtml-custom-url-link "nXhtml overview" (nxhtml-docfile-url)) - (insert " now.\n\n") - (fill-region here (point)) - (setq here (point)) - (insert "And oh, wait! If you are new to Emacs too you might want " - "to take a quick ") - (nxhtml-custom-url-link - "Emacs tour" - "http://www.gnu.org/software/emacs/tour/") - (insert ". And then perhaps the Emacs tutorial " - "(which is in the Help menu above).\n\n") - (fill-region here (point)) - (setq here (point)) - -;;; (insert " - -;;; To make the use of nXhtml as smooth as possible I also recommend -;;; that you go to ") - -;;; (widget-insert-link "Quick Customize nXhtml" -;;; (lambda () -;;; (nxhtml-quick-customize)) -;;; nil) - -;;; (insert " and follow the instructions -;;; there.") - - (unless (nxhtml-skip-welcome) - (insert "Click to ") - (widget-insert-link "remove this message" - (lambda () - (customize-option 'nxhtml-skip-welcome)) - nil) - (insert " at startup. (This page is still " - "available in the nXhtml menu, at the bottom.)")) - (fill-region here (point)) - (setq here (point)) - (goto-char (point-min)))) - (select-window curwin))) - -(defcustom nxhtml-skip-welcome nil - "Turn this on to always skip the nXhtml welcome message." - :type 'boolean - :group 'nxhtml) - -(defun nxhtml-skip-welcome () - "Return t if nXhtml welcome message should be skipped. -If nil then the message will be shown when you open the first -file using nxhtml-mode." - (or nxhtml-skip-welcome - (and nxhtml-global-minor-mode - ;;mumamo-global-mode - ;;indent-region-mode - ))) - -(defun nxhtml-say-welcome-unless-skip () - (unless (nxhtml-skip-welcome) - (nxhtml-welcome))) - -;; Show welcome screen once after loading nxhtml: -(eval-after-load 'nxhtml - ;; Use a short delay if something like desktop is used: - '(run-with-idle-timer 0.5 nil 'nxhtml-say-welcome-unless-skip)) - -(provide 'nxhtml-menu) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; nxhtml-menu.el ends here +;;; nxhtml-menu.el --- Defines menus for nXhtml +;; +;; Author: Lennart Borgman (lennart O borgman A gmail O com) +;; Created: Sat Apr 21 2007 +(defconst nxhtml-menu:version "1.93") ;;Version: +;; Last-Updated: 2009-05-29 Fri +;; URL: +;; Keywords: +;; Compatibility: +;; +;; Features that might be required by this library: +;; + ;; `appmenu', `appmenu-fold', `apropos', `backquote', `button', + ;; `bytecomp', `cl', `comint', `compile', `css-color', `cus-edit', + ;; `cus-face', `cus-load', `cus-start', `dired', `easymenu', + ;; `ediff', `ediff-diff', `ediff-help', `ediff-init', `ediff-merg', + ;; `ediff-mult', `ediff-util', `ediff-wind', `ffip', `flymake', + ;; `flymake-js', `flymake-php', `flyspell', `fold-dwim', `gimp', + ;; `grep', `help-mode', `hideshow', `html-imenu', `html-quote', + ;; `html-site', `html-upl', `ido', `ietf-drums', `imenu', `ispell', + ;; `loadhist', `mail-parse', `mail-prsvr', `mailcap', `mlinks', + ;; `mm-util', `mumamo', `nxhtml-mode', `nxml-enc', `nxml-glyph', + ;; `nxml-mode', `nxml-ns', `nxml-outln', `nxml-parse', `nxml-rap', + ;; `nxml-util', `ourcomments-util', `outline', `popcmp', `qp', + ;; `recentf', `rfc2045', `rfc2047', `rfc2231', `ring', `rng-dt', + ;; `rng-loc', `rng-match', `rng-nxml', `rng-parse', `rng-pttrn', + ;; `rng-uri', `rng-util', `rng-valid', `rngalt', `rx', + ;; `setup-helper', `sgml-mode', `tidy-xhtml', `time-date', `timer', + ;; `timezone', `tls', `tool-bar', `tree-widget', `typesetter', + ;; `udev', `udev-cedet', `udev-ecb', `udev-rinari', `url', + ;; `url-auth', `url-c', `url-cookie', `url-expand', `url-gw', + ;; `url-history', `url-http', `url-methods', `url-parse', + ;; `url-privacy', `url-proxy', `url-util', `url-vars', `view', + ;; `w32-reg-iface', `w32-regdat', `wid-edit', `xmltok'. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Commentary: +;; +;; Menus for nXhtml to be used in different major modes. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Change log: +;; +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth +;; Floor, Boston, MA 02110-1301, USA. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Code: + +(eval-when-compile (require 'cl)) +(eval-when-compile (require 'cus-edit)) +(eval-when-compile (require 'dired)) +(eval-when-compile (require 'gimp)) +(eval-when-compile (require 'html-site)) +(eval-when-compile (when (fboundp 'nxml-mode) (require 'nxhtml-mode))) +(eval-when-compile (require 'css-color)) +(eval-when-compile (require 'flymake)) +(eval-when-compile (require 'flymake-php)) +(eval-when-compile (require 'flymake-js)) +(eval-when-compile (require 'udev-ecb)) +(eval-when-compile (require 'udev-cedet)) +(eval-when-compile (require 'udev-rinari)) + +(defun nxhtml-nxhtml-in-buffer () + (or (derived-mode-p 'nxhtml-mode) + (when (and (boundp 'mumamo-multi-major-mode) + mumamo-multi-major-mode) + (let ((major-mode (mumamo-main-major-mode))) + (derived-mode-p 'nxhtml-mode))))) + +(defun nxhtml-nxml-in-buffer () + (or (derived-mode-p 'nxml-mode) + (when (and (boundp 'mumamo-multi-major-mode) + mumamo-multi-major-mode) + (let ((major-mode (mumamo-main-major-mode))) + (derived-mode-p 'nxml-mode))))) + +(defun nxhtml-html-in-buffer () + (or (derived-mode-p 'html-mode) + (when (and (boundp 'mumamo-multi-major-mode) + mumamo-multi-major-mode) + (let ((major-mode (mumamo-main-major-mode))) + (derived-mode-p 'html-mode))) + (nxhtml-nxhtml-in-buffer))) + +(defun nxhtml-nxml-html-in-buffer () + (or (derived-mode-p 'html-mode) + (when (and (boundp 'mumamo-multi-major-mode) + mumamo-multi-major-mode) + (let ((major-mode (mumamo-main-major-mode))) + (derived-mode-p 'html-mode))) + (nxhtml-nxml-in-buffer))) + +(defun nxhtml-this-file-can-have-toc (&optional file) + (unless file + (setq file (html-site-buffer-or-dired-file-name))) + (and (nxhtml-buffer-possibly-local-viewable file) + (html-site-current-merge-dir) + (html-site-current-ensure-file-in-site file))) + +(defun nxhtml-buffer-possibly-local-viewable (&optional file) + (unless file + (setq file (html-site-buffer-or-dired-file-name))) + (or (and file + (member (file-name-extension file) + '("html" "htm" "gif" "png"))))) + +(defun nxhtml-buffer-possibly-remote-viewable () + ;; Fix-me + (let* ((fmt "nxhtml-buffer-possibly-remote-viewable.dgffv: %s") + (file (or buffer-file-name + (and (derived-mode-p 'dired-mode) + (condition-case err + (dired-get-file-for-visit) + (error + (message fmt (error-message-string err)) + nil)))))) + (and (featurep 'html-upl) + file + (member (downcase (file-name-extension file)) + '("html" "htm" "gif" "png" "pl" "php"))))) + +(defun nxhtml-insert-menu-dynamically (real-binding) + (when (and (symbolp real-binding) + (boundp real-binding)) + (symbol-value real-binding))) + +(defun nxhtml-menu-image-file () + (or (get-char-property (point) 'image-file) + buffer-file-name)) + +(defun nxhtml-gimp-can-edit () + (gimp-can-edit (nxhtml-menu-image-file))) + +;;;###autoload +(defun nxhtml-edit-with-gimp () + "Edit with GIMP buffer or file at point." + (interactive) + (gimp-edit-file (nxhtml-menu-image-file))) + +;;;###autoload +(defun nxhtml-browse-file (file) + "View file in web browser." + (interactive (list + (or (html-site-buffer-or-dired-file-name) + (read-file-name "File: ")))) + (let* ((buf (if (buffer-file-name) + (current-buffer) + (find-buffer-visiting file))) + (use-temp (and (buffer-file-name) + (or (and (boundp 'nxhtml-current-validation-header) + nxhtml-current-validation-header) + (buffer-modified-p) + (not buffer-file-name) + (not (file-exists-p buffer-file-name))))) + (file-to-browse file)) + (when use-temp + (setq file-to-browse (nxhtml-save-browseable-temp-file nil nil use-temp))) + ;; Fix-me: Workaround for Emacs bug on w32 + ;; http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=4015 + (if (eq system-type 'windows-nt) + (w32-shell-execute "open" file nil 1) + (browse-url-of-file file)) + )) + +;;;###autoload +(defun nxhtml-browse-region () + "View region in web browser." + (interactive) + (unless mark-active + (error "The region is not active")) + (browse-url (nxhtml-save-browseable-temp-file (region-beginning) (region-end)))) + +;;(defvar nxhtml-browseable-buffer-name "*nXhtml Browsing Buffer*") +(defvar nxhtml-browseable-buffer-file "~/.temp-nxhtml-browse.htm") +;; Fix-me: Handle base href here! +(defun nxhtml-save-browseable-temp-file (start end &optional doit-anyway) + "Return a temporary file for viewing in web browser." + ;; When using this either region should be active or there should be + ;; a validation header or both. + (or doit-anyway + (and start end) ;mark-active + (and (boundp 'nxhtml-validation-header-mode) + nxhtml-validation-header-mode + nxhtml-current-validation-header) + (error "Neither region nor validation header")) + (save-excursion + (let ((curbuf (current-buffer)) + (view-buffer (find-file-noselect nxhtml-browseable-buffer-file)) + header + content) + ;; Get header and content + (save-restriction + (widen) + (setq header + (if nxhtml-validation-header-mode + (let* ((key nxhtml-current-validation-header) + (rec (unless (listp key) + (assoc key nxhtml-validation-headers))) + (header (cdr rec))) + header) + (if (and doit-anyway (not start)) + "" + (goto-char (point-min)) + (save-match-data + (let ((body (re-search-forward "]*>"))) + (if body + (buffer-substring-no-properties (point-min) (match-end 0)) + "")))))) + (setq content + (if start + (buffer-substring-no-properties start end) + (buffer-substring-no-properties (point-min) (point-max)))) + ) + ;; Switch to view buffer + (set-buffer view-buffer) + ;; (unless buffer-file-name + ;; (set-visited-file-name nxhtml-browseable-buffer-file) + ;; (rename-buffer nxhtml-valhead-view-buffer-name)) + (erase-buffer) + (insert header content) + ;;(when (fboundp 'emacsw32-eol-set) (emacsw32-eol-set nil)) + (nxhtml-mode) + (save-buffer) + ;;(current-buffer) + (kill-buffer view-buffer) + (expand-file-name nxhtml-browseable-buffer-file) + ))) + + + +(defconst nxhtml-minor-mode-menu-map + (let ((map (make-sparse-keymap "nxhtml-minor-mode-menu"))) + + (let ((help-map (make-sparse-keymap))) + (define-key help-map [emacs-Q-nxhtml] + (list 'menu-item "Start 'emacs -Q' and load nXhtml" 'emacs-Q-nxhtml)) + (define-key help-map [nxhtmltest-run] + (list 'menu-item "Run nXhtml Tests in Current Emacs" 'nxhtmltest-run)) + (define-key help-map [nxhtmltest-run-Q] + (list 'menu-item "Run nXhtml Tests in a Fresh Emacs" 'nxhtmltest-run-Q)) + (define-key help-map [nxhtml-report-bug] + (list 'menu-item "Report a Bug in nXhtml ..." 'nxhtml-report-bug)) + (define-key help-map [nxhtml-help-separator2] (list 'menu-item "--")) + (define-key help-map [nxhtml-byte-compile-nxhtml] + (list 'menu-item "Byte Compile nXhtml" 'nxhtmlmaint-start-byte-compilation)) + (define-key help-map [nxhtml-features-check] + (list 'menu-item "Check Optional Features" 'nxhtml-features-check)) + (define-key help-map [nxhtml-customize] + (list 'menu-item "Customize nXhtml ..." 'nxhtml-customize)) +;;; (define-key help-map [nxhtml-quick-customize] +;;; (list 'menu-item "Quick Customize nXhtml ..." 'nxhtml-quick-customize)) + (define-key help-map [nxhtml-help-separator3] (list 'menu-item "--")) +;;; (define-key help-map [nxhtml-help] +;;; (list 'menu-item "nXhtml Help" 'nxhtml-help)) + (define-key help-map [nxhtml-tutorials] + (list 'menu-item "nXhtml Tutorials" 'nxhtml-tutorials)) + (define-key help-map [nxhtml-overview] + (list 'menu-item (concat "nXhtml Version " nxhtml-menu:version " Overview") 'nxhtml-overview)) + (define-key help-map [nxhtml-welcome] + (list 'menu-item "Welcome to nXhtml" 'nxhtml-welcome)) + (define-key map [nxhtml-help-map] + (list 'menu-item "nXhtml Help and Setup" help-map)) + (define-key map [nxhtml-info-separator] (list 'menu-item "--")) + ) + + + + + (let ((tools-map (make-sparse-keymap))) + (define-key map [nxhtml-tools-map] + (list 'menu-item "Tools" tools-map + :visible `(not (derived-mode-p 'dired-mode)) + )) + (define-key tools-map [nxhtml-last-resort] + (list 'menu-item "Last Resort" 'n-back-game)) + (define-key tools-map [nxhtml-pause] + (list 'menu-item "Life Reminder" 'pause-mode + :button '(:toggle . (and (boundp 'pause-mode) + pause-mode)))) + (define-key tools-map [nxhtml-last-resort-separator] + (list 'menu-item "--" nil)) + (define-key tools-map [nxhtml-viper-tut] + (list 'menu-item "Viper try-out tutorial" + 'viper-tutorial)) + (define-key tools-map [nxhtml-menu-to-m-x] + (list 'menu-item "Add Menu Commands to M-x history" + 'ourcomments-M-x-menu-mode + :button '(:toggle . (and (boundp 'ourcomments-M-x-menu-mode) + ourcomments-M-x-menu-mode)))) + (define-key tools-map [nxhtml-next-last-resort-separator] + (list 'menu-item "--" nil)) + (let ((fill-map (make-sparse-keymap))) + (define-key tools-map [nxhtml-filling] + (list 'menu-item "Writing Text" fill-map)) + (define-key fill-map [nxhtml-unfill-paragraph] + (list 'menu-item "Unfill Paragraph" 'unfill-paragraph)) + (define-key fill-map [nxhtml-fill-paragraph] + (list 'menu-item "Fill Paragraph" 'fill-paragraph)) + (define-key fill-map [nxhtml-wrap-to-fill-separator] + (list 'menu-item "--" nil)) + (define-key fill-map [nxhtml-html-write-mode] + (list 'menu-item "HTML Write Mode" + 'html-write-mode + :button '(:toggle . (and (boundp 'html-write-mode) + html-write-mode)))) + (define-key fill-map [nxhtml-wrap-to-fill-column-mode] + (list 'menu-item "Wrap To Fill Column Mode" + 'wrap-to-fill-column-mode + :button '(:toggle . (and (boundp 'wrap-to-fill-column-mode) + wrap-to-fill-column-mode)))) + ) + + (define-key tools-map [nxhtml-ecb-separator] + (list 'menu-item "--" nil)) + + + (let ((ecb-map (make-sparse-keymap))) + (define-key tools-map [nxhtml-ecb-map] + (list 'menu-item "ECB" ecb-map)) + (define-key ecb-map [nxhtml-custom-important-ecb] + (list 'menu-item "Customize important ECB things" + (lambda () + "Customize group `ecb-most-important'." + (interactive) + (customize-group-other-window 'ecb-most-important)) + :enable '(featurep 'ecb))) + (define-key ecb-map [nxhtml-ecb-mode] + (list 'menu-item "ECB Minor Mode" + 'ecb-minor-mode + :button '(:toggle . (and (boundp 'ecb-minor-mode) + ecb-minor-mode)) + :enable '(boundp 'ecb-minor-mode))) + (define-key ecb-map [nxhtml-ecb-show-help] + (list 'menu-item "ECB Help" + 'ecb-show-help + :enable '(fboundp 'ecb-show-help))) + (define-key ecb-map [nxhtml-ecb-custom-separator] + (list 'menu-item "--" nil)) + (define-key ecb-map [nxhtml-custom-ecb] + (list 'menu-item "Customize ECB dev startup from nXhtml" + 'udev-ecb-customize-startup)) + (define-key ecb-map [nxhtml-update-ecb] + (list 'menu-item "Fetch/update ECB dev sources" + 'udev-ecb-update)) + (define-key ecb-map [nxhtml-ecb-home-separator] + (list 'menu-item "--" nil)) + (define-key ecb-map [nxhtml-rinari-homepage] + (list 'menu-item "ECB Home Page" + (lambda () + "Open ECB home page in your web browser." + (interactive) + (browse-url "http://ecb.sourceforge.net/")))) + ) + + + (let ((cedet-map (make-sparse-keymap))) + (define-key tools-map [nxhtml-cedet-map] + (list 'menu-item "CEDET" cedet-map)) + (define-key cedet-map [nxhtml-custom-cedet] + (list 'menu-item "Customize CEDET dev startup from nXhtml" + 'udev-cedet-customize-startup)) + (define-key cedet-map [nxhtml-cedet-utest] + (list 'menu-item "Run CEDET unit tests" + 'udev-cedet-utest)) + (define-key cedet-map [nxhtml-update-cedet] + (list 'menu-item "Fetch/update and install CEDET dev sources" + 'udev-cedet-update)) + (define-key cedet-map [nxhtml-cedet-home-separator] + (list 'menu-item "--" nil)) + (define-key cedet-map [nxhtml-rinari-homepage] + (list 'menu-item "CEDET Home Page" + (lambda () + "Open CEDET home page in your web browser." + (interactive) + (browse-url "http://cedet.sourceforge.net/")))) + ) + + + (let ((rinari-map (make-sparse-keymap))) + (define-key tools-map [nxhtml-rinari-map] + (list 'menu-item "Rinari" rinari-map)) + (define-key rinari-map [nxhtml-custom-rinari] + (list 'menu-item "Customize Rinari startup from nXhtml" + (lambda () + "Customize Rinari dev nXhtml startup options." + (interactive) + (customize-group-other-window 'udev-rinari)))) + (define-key rinari-map [nxhtml-update-rinari] + (list 'menu-item "Fetch/update Rinari dev sources" + 'udev-rinari-update)) + (define-key rinari-map [nxhtml-rinari-home-separator] + (list 'menu-item "--" nil)) + (define-key rinari-map [nxhtml-rinari-homepage] + (list 'menu-item "Rinari Home Page" + (lambda () + "Open Rinari home page in your web browser." + (interactive) + (browse-url "http://rubyforge.org/projects/rinari/")))) + ) + (let ((mozrepl-map (make-sparse-keymap))) + (define-key tools-map [nxhtml-mozrepl-map] + (list 'menu-item "MozRepl - control Firefox" mozrepl-map)) + + (let ((mozrepl-low-map (make-sparse-keymap))) + (define-key mozrepl-map [nxhtml-mozrepl-map] + (list 'menu-item "MozRepl Basic Functions" mozrepl-low-map)) + (define-key mozrepl-low-map [nxhtml-mozrepl-run-mozilla] + (list 'menu-item "Display/Start MozRepl Process" 'run-mozilla + :enable '(fboundp 'moz-minor-mode))) + (define-key mozrepl-low-map [nxhtml-mozrepl-separator1] + (list 'menu-item "--" nil)) + (define-key mozrepl-low-map [nxhtml-mozrepl-save-and-send] + (list 'menu-item "Save Buffer and Send it" 'moz-save-buffer-and-send + :enable '(or (not (boundp 'mumamo-multi-major-mode)) + (not mumamo-multi-major-mode)))) + (define-key mozrepl-low-map [nxhtml-mozrepl-send-defun-and-go] + (list 'menu-item "Send Current Function, Go to MozRepl" + 'moz-send-defun-and-go + :enable '(and (boundp 'moz-minor-mode) moz-minor-mode))) + (define-key mozrepl-low-map [nxhtml-mozrepl-send-defun] + (list 'menu-item "Send Current Function" 'moz-send-defun + :enable '(and (boundp 'moz-minor-mode) moz-minor-mode))) + (define-key mozrepl-low-map [nxhtml-mozrepl-send-region] + (list 'menu-item "Send the Region" 'moz-send-region + :enable '(and mark-active + (boundp 'moz-minor-mode) moz-minor-mode)))) + + (define-key mozrepl-map [nxhtml-mozrepl-separator2] + (list 'menu-item "--" nil)) + (define-key mozrepl-map [nxhtml-mozrepl-refresh] + (list 'menu-item "Refresh Firefox on Save" 'mozadd-refresh-edited-on-save-mode + :button '(:toggle . (and (boundp 'mozadd-refresh-edited-on-save-mode) + mozadd-refresh-edited-on-save-mode)))) + (define-key mozrepl-map [nxhtml-mozrepl-mirror] + (list 'menu-item "Mirror Buffer in Firefox" 'mozadd-mirror-mode + :button '(:toggle . (and (boundp 'mozadd-mirror-mode) + mozadd-mirror-mode)))) + (define-key mozrepl-map [nxhtml-mozrepl-separator3] + (list 'menu-item "--" nil)) + (define-key mozrepl-map [nxhtml-mozrepl-home-page] + (list 'menu-item "MozLab/MozRepl Home Page" + (lambda () + "Open MozLab/MozRepl home page in your web browser." + (interactive) + (browse-url "http://hyperstruct.net/projects/mozlab")))) + ) + + (define-key tools-map [nxhtml-frame-win-separator] + (list 'menu-item "--" nil)) + (let ((frame-map (make-sparse-keymap))) + (define-key tools-map [nxhtml-frame-map] + (list 'menu-item "Windows and Frames" frame-map)) + (define-key frame-map [nxhtml-winsav-mode] + (list 'menu-item "Save/restore Frames and Windows" + 'winsav-save-mode + :button '(:toggle . (and (boundp 'winsav-save-mode) + winsav-save-mode)))) + (define-key frame-map [nxhtml-resize-windows] + (list 'menu-item "Resize Windows" + 'resize-windows))) + + (define-key tools-map [nxhtml-majpri-separator] + (list 'menu-item "--" nil)) + (define-key tools-map [nxhtml-as-external] + (list 'menu-item "External Editor Setup" + 'as-external-mode + :button '(:toggle . (and (boundp 'as-external-mode) + as-external-mode)))) + (define-key tools-map [nxhtml-sex-mode] + (list 'menu-item "Open files in External Apps" + 'sex-mode + :button '(:toggle . (and (boundp 'sex-mode) + sex-mode)))) + (let ((majpri-map (make-sparse-keymap))) + (define-key tools-map [nxhtml-majpri-map] + (list 'menu-item "Major Modes Priorities" majpri-map)) + (define-key majpri-map [nxhtml-majpri-act] + (list 'menu-item "Apply Major Modes Priorities" + 'majmodpri-apply-priorities)) + (define-key majpri-map [nxhtml-majpri-cust] + (list 'menu-item "Customize Major Mode Priorities" + (lambda () + "Customize group Major Mode priorities." + (interactive) + (customize-group-other-window 'majmodpri)))) + ) + (define-key tools-map [nxhtml-tidy-separator] + (list 'menu-item "--" nil)) + (define-key tools-map [nxhtml-tidy-map] + (list 'menu-item "Tidy XHTML" 'tidy-menu-symbol + :filter 'nxhtml-insert-menu-dynamically + :visible '(and (fboundp 'tidy-build-menu) + (tidy-build-menu)) + :enable '(and (fboundp 'tidy-build-menu) + (tidy-build-menu) + (or (derived-mode-p 'html-mode) + (nxhtml-nxhtml-in-buffer))))) + (define-key tools-map [nxhtml-flymake] + (list 'menu-item "Flymake Mode" 'flymake-mode + :button '(:toggle . (and (boundp 'flymake-mode) + flymake-mode)) + :enable '(and buffer-file-name + (fboundp 'flymake-get-init-function) + (flymake-get-init-function buffer-file-name) + ))) + (let ((flyspell-map (make-sparse-keymap))) + (define-key tools-map [nxhtml-flyspell-map] + (list 'menu-item "Flyspell" flyspell-map)) + (define-key flyspell-map [nxhtml-flyspell-goto-next] + (list 'menu-item "Flyspell Go To Next Error" 'flyspell-goto-next-error + :enable 'flyspell-mode)) + (define-key flyspell-map [nxhtml-flyspell-region] + (list 'menu-item "Flyspell Region" 'flyspell-region + :enable 'flyspell-mode)) + (define-key flyspell-map [nxhtml-flyspell-div-1] + (list 'menu-item "--")) + (define-key flyspell-map [nxhtml-flyspell] + (list 'menu-item "Flyspell Mode" 'flyspell-mode + :button '(:toggle . (and (boundp flyspell-mode) + flyspell-mode)))) + ) + (define-key tools-map [nxhtml-flyspell-separator] + (list 'menu-item "--")) + (let ((img-map (make-sparse-keymap))) + (define-key tools-map [nxhtml-img-map] + (list 'menu-item "Images" img-map)) + (define-key img-map [nxhtml-chart] + (list 'menu-item "Make Chart" 'chart-make-chart)) + (define-key img-map [nxhtml-chart-separator] (list 'menu-item "--")) + (define-key img-map [nxhtml-gimp-edit] + (list 'menu-item "Edit with GIMP" 'nxhtml-edit-with-gimp + :enable '(nxhtml-gimp-can-edit))) + (define-key img-map [nxhtml-gimp-separator] (list 'menu-item "--")) + (define-key img-map [nxhtml-inlimg-toggle-display] + (list 'menu-item "Toggle Display of Image" 'inlimg-toggle-display)) + (define-key img-map [nxhtml-inlimg-toggle-slicing] + (list 'menu-item "Toggle Slicing of Image" 'inlimg-toggle-slicing)) + (define-key img-map [nxhtml-inlimg-mode] + (list 'menu-item "Show Images" 'inlimg-mode + :button '(:toggle . (and (boundp 'inlimg-mode) + inlimg-mode))))) + (define-key tools-map [nxhtml-img-separator] + (list 'menu-item "--")) + (let ((some-help-map (make-sparse-keymap))) + (define-key tools-map [nxhtml-some-help-map] + (list 'menu-item "Help for Item at Point" some-help-map)) + (define-key some-help-map [nxhtml-css-help] + (list 'menu-item "CSS Help" 'xhtml-help-show-css-ref)) + (define-key some-help-map [nxhtml-tag-help] + (list 'menu-item "XHTML Tag Help" 'nxhtml-short-tag-help))) + + (let ((cssclr-map (make-sparse-keymap))) + (define-key tools-map [nxhtml-css-color] + (list 'menu-item "Color Help" cssclr-map)) + (define-key cssclr-map [nxhtml-css-color-mode] + (list 'menu-item "Css Color Mode" 'css-color-mode + :enable '(and font-lock-mode + (or (not (boundp 'mumamo-multi-major-mode)) + (not mumamo-multi-major-mode)) + (featurep 'css-color)) + :button '(:toggle . (and (boundp 'css-color-mode) + css-color-mode)))) + (define-key cssclr-map [nxhtml-css-color-test] + (list 'menu-item "Color Test" 'css-color-test + :enable '(featurep 'css-color)))) + + (let ((where-map (make-sparse-keymap))) + (define-key tools-map [nxml-where] + (list 'menu-item "XML Path" where-map + :enable '(and (fboundp 'nxml-where-mode) + (or (derived-mode-p 'nxml-mode) + (nxhtml-nxhtml-in-buffer))))) + (define-key where-map [nxhtml-nxml-where-cust] + (list 'menu-item "Customize display of XML Path" + (lambda () + "Customize XML path, ie group `nxml-where'." + (interactive) + (customize-group-other-window 'nxml-where)))) + (define-key where-map [where-separator-2] (list 'menu-item "--")) + (define-key where-map [nxml-where-inner] + (list 'menu-item "Show inly inner tag" 'nxml-where-only-inner-toggle + :enable '(boundp 'nxml-where-only-inner) + :button '(:toggle . (and (boundp 'nxml-where-only-inner) + nxml-where-only-inner)))) + (define-key where-map [nxml-where-id] + (list 'menu-item "Show tag ids in path" 'nxml-where-tag+id-toggle + :enable '(boundp 'nxml-where-tag+id) + :button '(:toggle . (and (boundp 'nxml-where-tag+id) + nxml-where-tag+id)))) + (define-key where-map [nxml-where-header] + (list 'menu-item "Show XML path in header" 'nxml-where-header-toggle + :enable '(boundp 'nxml-where-header) + :button '(:toggle . (and (boundp 'nxml-where-header) + 'nxml-where-header)))) + (define-key where-map [nxml-where-marks] + (list 'menu-item "Show XML path marks" 'nxml-where-marks-toggle + :enable '(boundp 'nxml-where-marks) + :button '(:toggle . (and (boundp 'nxml-where-marks) + nxml-where-marks)))) + (define-key where-map [where-separator] (list 'menu-item "--")) + (define-key where-map [nxml-where-global-toggle] + (list 'menu-item "Show XML path" 'nxml-where-global-mode + :button '(:toggle . (and (boundp 'nxml-where-global-mode) + nxml-where-global-mode)))) + (define-key where-map [nxml-where-toggle] + (list 'menu-item "Show XML path in buffer" 'nxml-where-mode + :button '(:toggle . (and (boundp 'nxml-where-mode) + nxml-where-mode)))) + )) + + (let ((quick-map (make-sparse-keymap))) + (define-key map [nxhtml-quick-map] + (list 'menu-item "Quick Inserts etc" quick-map + :visible '(or (derived-mode-p 'html-mode) + (nxhtml-nxhtml-in-buffer)))) + (let ((sometoc-map (make-sparse-keymap))) + (let ((toc-map (make-sparse-keymap))) + (define-key sometoc-map [nxhtml-toc-map] + (list 'menu-item "For Site" toc-map + :enable '(featurep 'html-toc))) + (define-key toc-map [nxhtml-html-wtoc] + (list 'menu-item "Merge Pages and TOC" + 'html-wtoc-write-pages-with-toc + :enable '(and (html-site-current-page-list)))) + (define-key toc-map [nxthml-html-toc] + (list 'menu-item "With Frames" 'html-toc-menu-map + :filter 'nxhtml-insert-menu-dynamically))) + (define-key sometoc-map [nxhtml-html-pagetoc] + (list 'menu-item "For Page" 'html-pagetoc-menu-map + :enable (boundp 'html-pagetoc-menu-map) + :filter 'nxhtml-insert-menu-dynamically + )) + (define-key quick-map [nxhtml-sometoc-map] + (list 'menu-item "Table of Contents" sometoc-map + :visible '(or (derived-mode-p 'html-mode) + (nxhtml-nxhtml-in-buffer))))) + (define-key quick-map [nxhtml-quick-sep-1] + (list 'menu-item "--")) + (define-key quick-map [nxhtml-spec-chars] + (list 'menu-item "Insert special character" + 'nxml-insert-named-char)) + (define-key quick-map [nxhtml-css-rollover] + (list 'menu-item "Insert CSS Rollover Images" + 'nxhtml-rollover-insert-2v))) + + (define-key map [nxhtml-help-tools-separator] + ;; Notice that removing nil below gives an error that is quite + ;; hard to catch: + ;; + ;; Wrong type argument: arrayp, not + (list 'menu-item "--" nil + :visible `(not (derived-mode-p 'dired-mode)) + )) + + + (let ((upl-map (make-sparse-keymap "html-upl"))) + (define-key map [nxhtml-upl-map] + (list 'menu-item "File Transfer" upl-map + ;;:enable '(featurep 'html-upl))) + :enable '(fboundp 'html-upl-upload-file))) + (define-key upl-map [nxhtml-upl-remote-dired] + (list 'menu-item "Remote Dired" 'html-upl-remote-dired)) + (define-key upl-map [nxhtml-upl-dired-sep] (list 'menu-item "--")) + (define-key upl-map [nxhtml-upl-edit-remote-wtoc] + (list 'menu-item "Edit Remote File With TOC" 'html-upl-edit-remote-file-with-toc + :visible '(nxhtml-this-file-can-have-toc))) + (define-key upl-map [nxhtml-upl-edit-remote] + (list 'menu-item "Edit Remote File" 'html-upl-edit-remote-file)) + (define-key upl-map [nxhtml-upl-ediff-file] + (list 'menu-item "Ediff Remote/Local Files" 'html-upl-ediff-file)) + (define-key upl-map [nxhtml-upl-sep] (list 'menu-item "--")) + (define-key upl-map [nxhtml-upl-upload-site-with-toc] + (list 'menu-item "Upload Site with TOC" 'html-upl-upload-site-with-toc + :visible '(and (html-site-current-merge-dir) + (html-site-current-ensure-file-in-site file)))) + (define-key upl-map [nxhtml-upl-upload-site] + (list 'menu-item "Upload Site" 'html-upl-upload-site)) + (define-key upl-map [nxhtml-upl-upload-file] + (list 'menu-item "Upload Single File" 'html-upl-upload-file)) + ) + + + (let ((browse-map (make-sparse-keymap))) + (define-key map [nxhtml-browse-map] + (list 'menu-item "Browse" browse-map + '(or buffer-file-name + (eq major-mode 'nxhtml-mode)) + :enable '(nxhtml-buffer-possibly-local-viewable))) + (define-key browse-map [nxhtml-browse-region] + (list 'menu-item "Browse the Region Only" 'nxhtml-browse-region + :enable 'mark-active)) + (define-key browse-map [nxhtml-upl-sep3] (list 'menu-item "--")) + (define-key browse-map [nxhtml-upl-browse-remote-wtoc] + (list 'menu-item "Browse Uploaded File With TOC" 'html-upl-browse-remote-with-toc + :visible '(and (nxhtml-buffer-possibly-local-viewable) + (featurep 'html-wtoc) + (html-site-current-merge-dir) + (html-site-current-ensure-file-in-site file) + (nxhtml-buffer-possibly-remote-viewable) + ))) + (define-key browse-map [nxhtml-upl-browse-remote-frame-file] + (list 'menu-item "Browse Uploaded Frames File" 'html-upl-browse-remote-frames + :enable '(nxhtml-buffer-possibly-remote-viewable))) + (define-key browse-map [nxhtml-upl-browse-remote] + (list 'menu-item "Browse Uploaded File" 'html-upl-browse-remote + :enable '(nxhtml-buffer-possibly-remote-viewable))) + (define-key browse-map [nxhtml-upl-sep2] + (list 'menu-item "--")) + (define-key browse-map [nxhtml-browse-merged-file] + (list 'menu-item "Browse File With TOC" 'html-wtoc-browse-page-with-toc + :visible '(and (nxhtml-buffer-possibly-local-viewable) + (featurep 'html-wtoc) + (html-site-current-merge-dir) + (html-site-current-ensure-file-in-site file) + ))) + (define-key browse-map [nxhtml-browse-frame-file] + (list 'menu-item "Browse Frames File" 'html-toc-browse-frames-file + :enable '(and (featurep 'html-toc) + (nxhtml-buffer-possibly-local-viewable)))) + (define-key browse-map [nxhtml-browse-file] + (list 'menu-item "Browse File" 'nxhtml-browse-file + :enable '(nxhtml-buffer-possibly-local-viewable))) + ) + + + (let ((link-map (make-sparse-keymap))) + + (define-key link-map [nxhtml-chklnk] + (list 'menu-item "Check Links" 'html-chklnk-check-site-links + :enable '(featurep 'html-chklnk))) + + (let ((move-map (make-sparse-keymap))) + (define-key move-map [html-move-buffer-file] + (list 'menu-item "Move Buffer File" 'html-move-buffer-file + :help "Move buffer file and update links" + :enable '(and buffer-file-name + (featurep 'html-move)))) + (define-key link-map [move-map] + (list 'menu-item "Moving Files" move-map)) + (define-key link-map [move-map-separator] (list 'menu-item "--")) + ) + + + (define-key link-map [nxhtml-paste-link] + (list 'menu-item "Paste Saved Relative Link" 'nxhtml-paste-link + :help "Paste link" + :enable '(and (boundp 'nxhtml-saved-link-file) + nxhtml-saved-link-file))) + (define-key link-map [nxhtml-paste-link-as-a-tag] + (list 'menu-item "Paste Saved Relative Link as " 'nxhtml-paste-link-as-a-tag + :help "Paste link as tag" + :enable '(and (boundp 'nxhtml-saved-link-file) + nxhtml-saved-link-file + (nxhtml-nxml-html-in-buffer)))) + (define-key link-map [nxhtml-save-link-to-here] + (list 'menu-item "Save Relative Link to Current File" 'nxhtml-save-link-to-here + :help "Save link info for current file" + :enable 'buffer-file-name)) + + (define-key link-map [nxhtml-separator-1] (list 'menu-item "--")) + (define-key link-map [mlinks-goto-link-other-frame] + (list 'menu-item "Follow MLink Link in New Frame" 'mlinks-goto-other-frame + :enable '(and (boundp 'mlinks-mode) + mlinks-mode) + :help "Follow MLinks Link in New Frame")) + (define-key link-map [mlinks-goto-link-other-window] + (list 'menu-item "Follow MLink Link in Other Window" 'mlinks-goto-other-window + :enable '(and (boundp 'mlinks-mode) + mlinks-mode) + :help "Follow MLinks Link in Other Window")) + (define-key link-map [mlinks-goto-link] + (list 'menu-item "Follow MLink Link" 'mlinks-goto + :enable '(and (boundp 'mlinks-mode) + mlinks-mode) + :help "Follow MLinks Link")) + (define-key link-map [nxhtml-separator-follow-mlink] (list 'menu-item "--")) + (define-key link-map [mlinks-next-link] + (list 'menu-item "Next MLink Link" 'mlinks-forward-link + :enable '(and (boundp 'mlinks-mode) + mlinks-mode) + :help "Go to next MLinks link")) + (define-key link-map [mlinks-prev-link] + (list 'menu-item "Previous MLink Link" 'mlinks-backward-link + :enable '(and (boundp 'mlinks-mode) + mlinks-mode) + :help "Go to previous MLinks link")) + +;; (define-key link-map [nxhtml-next-href] +;; (list 'menu-item "Next Link" 'nxhtml-next-href +;; :help "Go to next href field")) +;; (define-key link-map [nxhtml-prev-href] +;; (list 'menu-item "Previous Link" 'nxhtml-prev-href +;; :help "Go to previous href field")) + + (define-key map [nxhtml-link-map] + (list 'menu-item "Links" link-map + :visible `(not (derived-mode-p 'dired-mode)) + ))) + + + (let ((site-map (make-sparse-keymap))) + (define-key map [nxhtml-site-map] + (list 'menu-item "Site" site-map)) + (define-key site-map [html-site-global-mode] + (list 'menu-item "HTML Site Global Mode" + 'html-site-global-mode + :button '(:toggle . (and (boundp 'html-site-global-mode) + html-site-global-mode)))) + (define-key site-map [nxhtml-site-separator] (list 'menu-item "--")) + (define-key site-map [nxhtml-customize-site-list] + (list 'menu-item "Edit Sites" (lambda () + "Customize option `html-size-list'." + (interactive) + (customize-option-other-window 'html-site-list)))) + (define-key site-map [nxhtml-set-site] + (list 'menu-item "Set Current Site" 'html-site-set-site)) + (define-key site-map [nxhtml-site-separator-1] (list 'menu-item "--")) + (define-key site-map [nxhtml-dired-site-top] + (list 'menu-item "Dired Site" 'html-site-dired-current)) + (define-key site-map [nxhtml-find-site-file] + (list 'menu-item "Find File in Site" 'html-site-find-file)) + (define-key site-map [nxhtml-site-search-separator] + (list 'menu-item "--" nil)) + (define-key site-map [nxhtml-replace-in-site] + (list 'menu-item "Replace in Site Files" 'html-site-query-replace)) + (define-key site-map [nxhtml-rgrep-in-site] + (list 'menu-item "Search Site Files" 'html-site-rgrep)) + ) + + (define-key map [nxhtml-insert-separator] + (list 'menu-item "--" nil + :visible `(not (derived-mode-p 'dired-mode)) + )) + (let ((chunk-map (make-sparse-keymap))) + (define-key map [nxhtml-chunk-map] + (list 'menu-item "Chunks" chunk-map + :visible `(not (derived-mode-p 'dired-mode)) + :enable '(and (boundp 'mumamo-multi-major-mode) + mumamo-multi-major-mode))) + (define-key chunk-map [nxhtml-customize-mumamo] + (list 'menu-item "Customize MuMaMo" + (lambda () (interactive) (customize-group-other-window 'mumamo)))) + (define-key chunk-map [nxhtml-list-mumamo] + (list 'menu-item "List defined Multi Major Modes" + 'mumamo-list-defined-multi-major-modes)) + (define-key chunk-map [nxhtml-chunks-separator2] + (list 'menu-item "--" nil)) + (define-key chunk-map [nxhtml-chunk-margin-info] + (list 'menu-item "Display chunk info in margin" + 'mumamo-margin-info-global-mode + :button '(:toggle . (and (boundp 'mumamo-margin-info-global-mode) + mumamo-margin-info-global-mode)))) + (define-key chunk-map [nxhtml-chunks-separator1] + (list 'menu-item "--" nil)) + (let ((region-map (make-sparse-keymap))) + (define-key chunk-map [nxhtml-region-map] + (list 'menu-item "Make Chunks from Visible Region" region-map)) + (define-key region-map [mumamo-clear-all-regions] + (list 'menu-item "Clear Region Chunks" + 'mumamo-clear-all-regions + :enable '(fboundp 'mumamo-clear-all-regions))) + (define-key region-map [mumamo-add-region] + (list 'menu-item "Add Region Chunk" + 'mumamo-add-region))) + (define-key chunk-map [nxhtml-region-separator] + (list 'menu-item "--" nil)) + (define-key chunk-map [mumamo-mark-chunk] + (list 'menu-item "Mark Chunk" + 'mumamo-mark-chunk)) + (define-key chunk-map [nxhtml-separator-mark-chunk] (list 'menu-item "--")) + (define-key chunk-map [mumamo-backward-chunk] + (list 'menu-item "Backward Chunk" + 'mumamo-backward-chunk)) + (define-key chunk-map [mumamo-forward-chunk] + (list 'menu-item "Forward Chunk" + 'mumamo-forward-chunk))) + (let ((tag-map (make-sparse-keymap))) + (define-key map [nxhtml-tag-map] + (list 'menu-item "Move by Tag" tag-map + :visible '(or (derived-mode-p 'nxml-mode) + (derived-mode-p 'sgml-mode)) + :enable '(or (derived-mode-p 'nxml-mode) + (nxhtml-nxhtml-in-buffer)))) + (define-key tag-map [nxml-forward-par] + (list 'menu-item "Forward Paragraph" + 'nxml-forward-paragraph)) + (define-key tag-map [nxml-backward-par] + (list 'menu-item "Backward Paragraph" + 'nxml-backward-paragraph)) + (define-key tag-map [nxml-insert-separator-move2] (list 'menu-item "--")) + (define-key tag-map [nxml-down] + (list 'menu-item "Forward Into Tag" + 'nxml-down-element)) + (define-key tag-map [nxml-backward-up] + (list 'menu-item "Backward Out of Tag" + 'nxml-backward-up-element)) + (define-key tag-map [nxml-insert-separator-move] (list 'menu-item "--")) + (define-key tag-map [nxml-forward] + (list 'menu-item "Forward Balanced Tag" + 'nxml-forward-element)) + (define-key tag-map [nxml-backward] + (list 'menu-item "Backward Balanced Tag" + 'nxml-backward-element)) + ) + + (let ((cmpl-map (make-sparse-keymap))) + (define-key map [nxhtml-cmpl-map] + (list 'menu-item "Completion and Validation" cmpl-map + ;; :enable '(or (derived-mode-p 'nxml-mode) (nxhtml-nxhtml-in-buffer)) + :visible `(not (derived-mode-p 'dired-mode)) + )) + (let ((val-map (make-sparse-keymap))) + (define-key cmpl-map [nxhtml-cmpl-val-map] + (list 'menu-item "Validation Helpers (for php etc)" val-map + :enable '(nxhtml-nxhtml-in-buffer) + :visible '(nxhtml-nxml-html-in-buffer))) +;;; (define-key val-map [nxhtml-strval-mode] +;;; (list 'menu-item "Allow attr=\"\" etc" +;;; 'nxhtml-strval-mode +;;; :button '(:toggle . nxhtml-strval-mode))) + (define-key val-map [mumamo-alt-php-tags] + (list 'menu-item "Use (?php" + 'mumamo-alt-php-tags-mode + :button '(:toggle . (and (boundp 'mumamo-alt-php-tags-mode) + mumamo-alt-php-tags-mode)))) + (define-key val-map [mumamo-alt-tags-separator] (list 'menu-item "--")) + (define-key val-map [nxhtml-toggle-warnings] + (list 'menu-item "Hide Validation Errors" + 'nxhtml-toggle-visible-warnings + :button '(:toggle . (not (nxhtml-warnings-are-visible))) + )) + (define-key val-map [nxhtml-error-separator] (list 'menu-item "--")) + (define-key val-map [nxhtml-remove-saved-validation-header] + (list 'menu-item "Remove File's Fictive XHTML Validation Header" + 'nxhtml-remove-saved-validation-header + ;; Fix-me: maybe a better enable here? + :enable 'nxhtml-validation-header-mode)) + (define-key val-map [nxhtml-save-validation-header] + (list 'menu-item "Save File's Fictive XHTML Validation Header" + 'nxhtml-save-validation-header + :enable 'nxhtml-validation-header-mode)) + (define-key val-map [nxhtml-set-validation-header] + (list 'menu-item "Choose Fictive XHTML Validation Header for Buffer" + 'nxhtml-set-validation-header)) + (define-key val-map [nxhtml-update-validation-header] + (list 'menu-item "Update Fictive XHTML Validation Header for Buffer" + 'nxhtml-update-validation-header)) + (define-key val-map [nxhtml-use-saved-val-separator] (list 'menu-item "--")) +;;; (let ((afic-map (make-sparse-keymap))) +;;; (define-key val-map [nxhtml-afic-map] +;;; (list 'menu-item "Automatic Fictive XHTML Validation Header" afic-map)) +;;; (define-key afic-map [nxhtml-validation-header-mumamo-set] +;;; (list 'menu-item "Customize Automatic XHTML Validation Turn On" +;;; (lambda () (interactive) (customize-option 'nxhtml-validation-header-mumamo-modes)))) +;;; (define-key afic-map [nxhtml-validation-header-mumamo] +;;; (list 'menu-item "Turn on Fictive XHTML Validation Header with MuMaMo" +;;; 'nxhtml-validation-header-if-mumamo-toggle +;;; :button '(:toggle . nxhtml-validation-header-if-mumamo)))) + (define-key val-map [nxhtml-show-validation-header] + (list 'menu-item "Display Fictive XHTML Validation Header" + 'rngalt-display-validation-header-toggle + :help-echo "Displays the Fictive XHTML validation header (if any) at top of buffer" + :button '(:toggle . (and (boundp 'rngalt-display-validation-header) + rngalt-display-validation-header)))) + (define-key val-map [nxhtml-recheck-validation-header] + (list 'menu-item "Recheck Fictive XHTML Validation Header in Buffer" + 'nxhtml-recheck-validation-header + :enable 'nxhtml-validation-header-mode)) + (define-key val-map [nxhtml-validation-header-mode] + (list 'menu-item "Use Fictive XHTML Validation Header in Buffer" + 'nxhtml-validation-header-mode + :button '(:toggle . (and (boundp 'nxhtml-validation-header-mode) + nxhtml-validation-header-mode)))) + ) + (define-key cmpl-map [nxhtml-validation-separator] + (list 'menu-item "--" nil + :visible '(nxhtml-nxml-html-in-buffer))) + (let ((style-map (make-sparse-keymap))) + (define-key cmpl-map [nxhtml-cmpl-style-map] + (list 'menu-item "Completion Style" style-map + :visible '(nxhtml-nxml-html-in-buffer) + :enable '(nxhtml-nxhtml-in-buffer))) + (define-key style-map [popcmp-customize] + (list 'menu-item "Customize Completion Style" + (lambda () (interactive) (customize-group-other-window 'popcmp)))) + (define-key style-map [popcmp-style-div2] + (list 'menu-item "--")) + ;;(defun nxhtml-nxml-html-in-buffer () + (define-key style-map [popcmp-with-help] + (list 'menu-item "Show Short Help Beside Alternatives" + 'popcmp-short-help-beside-alts-toggle + :button '(:toggle . (and (boundp 'popcmp-short-help-beside-alts) + popcmp-short-help-beside-alts)))) + (define-key style-map [nxhtml-tag-do-also] + (list 'menu-item "Complete Tag Extras" + 'nxhtml-tag-do-also-toggle + :button '(:toggle . (and (boundp 'nxhtml-tag-do-also) + nxhtml-tag-do-also)))) + (define-key style-map [popcmp-group-alternatives] + (list 'menu-item "Group Alternatives" + 'popcmp-group-alternatives-toggle + :button '(:toggle . (and (boundp 'popcmp-group-alternatives) + popcmp-group-alternatives)))) + (define-key style-map [popcmp-style-div1] + (list 'menu-item "--")) + (define-key style-map [popcmp-anything-completion] + (list 'menu-item "Anything Style Completion" + (lambda () (interactive) (customize-set-variable 'popcmp-completion-style 'anything)) + :enable `(fboundp 'anything) + :button `(:radio . (eq popcmp-completion-style 'anything)))) + (define-key style-map [popcmp-emacs-completion] + (list 'menu-item "Emacs Default Style Completion" + (lambda () (interactive) (customize-set-variable 'popcmp-completion-style 'emacs-default)) + :button `(:radio . (eq popcmp-completion-style 'emacs-default)))) + (define-key style-map [popcmp-popup-completion] + (list 'menu-item "Popup Style Completion" + (lambda () (interactive) (customize-set-variable 'popcmp-completion-style 'popcmp-popup)) + :button `(:radio . (eq popcmp-completion-style 'popcmp-popup)))) + (define-key style-map [popcmp-company-completion] + (list 'menu-item "Company Mode Style Completion" + (lambda () (interactive) (customize-set-variable 'popcmp-completion-style 'company-mode)) + :enable `(fboundp 'company-mode) + :button `(:radio . (eq popcmp-completion-style 'company-mode)))) + ) + (define-key cmpl-map [nxhtml-cmpl-separator] + (list 'menu-item "--" nil + :visible '(nxhtml-nxml-html-in-buffer))) + (define-key cmpl-map [nxhtml-untag-element] + (list 'menu-item "Untag Element" 'nxml-untag-element + :enable '(nxhtml-nxhtml-in-buffer) + :visible '(nxhtml-nxml-html-in-buffer))) + (define-key cmpl-map [rngalt-finish-element] + (list 'menu-item "Insert End Tag" 'rngalt-finish-element + :enable '(nxhtml-nxhtml-in-buffer) + :visible '(nxhtml-nxml-html-in-buffer))) + (define-key cmpl-map [nxhtml-complete] + (list 'menu-item "Complete tag, attribute etc" 'nxml-complete + :enable '(nxhtml-nxml-in-buffer) + :visible '(nxhtml-nxml-html-in-buffer))) + (define-key cmpl-map [nxhtml-tab-complete-div] + (list 'menu-item "--" nil + :visible '(nxhtml-nxml-html-in-buffer))) + (define-key cmpl-map [nxhtml-tab-complete] + (list 'menu-item "Indent and then Complete" 'tabkey2-first)) + ) + + map)) + +(defvar nxhtml-minor-mode-map + (let ((map (make-sparse-keymap))) + (define-key map [(control ?c) ?? ?x] 'nxhtml-short-tag-help) + (define-key map [(control ?c) ?? ?c] 'xhtml-help-show-css-ref) + (define-key map [(control ?c) ?_] 'nxhtml-toggle-visible-warnings) + (define-key map [menu-bar nxhtml-minor-mode] + (list 'menu-item "nXhtml" nxhtml-minor-mode-menu-map)) + map)) + +(define-minor-mode nxhtml-minor-mode + "Minor mode to turn on some key and menu bindings. +See `nxhtml-mode' for more information." + :keymap nxhtml-minor-mode-map + :group 'nxhtml + ) +;;(put 'nxhtml-minor-mode 'permanent-local t) + +(defcustom nxhtml-minor-mode-modes + '( + nxhtml-mode + nxml-mode + html-mode + sgml-mode + xml-mode + php-mode + css-mode + javascript-mode + java-mode ;; jsp + image-mode + ;; + dired-mode + ) + "List for turning on `nxhtml-minor-mode'. +If the buffer's major modes is any of those in this list then +`nxhtml-global-minor-mode' will turn on `nxhtml-minor-mode' in +the buffer." + :type '(repeat (symbol :tag "Major mode")) + :group 'nxhtml) + +(defun nxhtml-maybe-turn-on-minor-mode () + "Maybe turn on `nxhtml-minor-mode'. +See `nxhtml-minor-mode-modes'." + (unless (or (minibufferp (current-buffer)) + (string= " " (substring (buffer-name) 0 1)) + (string= "*" (substring (buffer-name) 0 1)) + ) + (let ((on (and (boundp 'mumamo-multi-major-mode) + mumamo-multi-major-mode))) + (dolist (major nxhtml-minor-mode-modes) + (when (derived-mode-p major) + (setq on t))) +;; (when (string= "php" (file-name-extension (buffer-file-name))) +;; (lwarn 't :warning "on=%s, major-mode=%s" on major-mode)) + (when on + (nxhtml-minor-mode 1))))) + +;;;###autoload +(define-globalized-minor-mode nxhtml-global-minor-mode + nxhtml-minor-mode + nxhtml-maybe-turn-on-minor-mode + ;;:require 'nxhtml-menu + :group 'nxhtml) +;;(message "nxhtml-menu:here A") +;;(custom-reevaluate-setting 'nxhtml-global-minor-mode) +;;(message "nxhtml-menu:here B") +;;(when nxhtml-global-minor-mode (nxhtml-global-minor-mode 1)) +;;(message "nxhtml-menu:here C") + + +(defun nxhtml-docfile () + (let* ((libfile (locate-library "nxhtml")) + (docfile (expand-file-name "doc/nxhtml.html" + (file-name-directory libfile)))) + docfile)) + +(defun nxhtml-docfile-url () + (concat "file://" (nxhtml-docfile))) + +;;;###autoload +(defun nxhtml-overview () + "Show a HTML page with an overview of nXhtml." + (interactive) + (browse-url (nxhtml-docfile-url))) + +(defun nxhtml-tutorials () + "Show a HTML page with a list of tutorials for nXhtml'." + (interactive) + (browse-url "http://ourcomments.org/Emacs/nXhtml/tut/tutorials.html")) + +(defun nxhtml-custom-valfaced (value &optional bgcolor) + (let ((v (if (sequencep value) + (copy-seq value) + value)) + (bgcolor (if bgcolor bgcolor "RGB:FF/FF/AA"))) + (put-text-property 0 (length v) + 'face (list + 'bold + (cons 'background-color bgcolor) + ) + v) + v)) +(defun nxhtml-custom-insert-nxhtml-row (symbol nxhtml-value description) + (let ((desc (if description + (format "%s (%s)" description symbol) + (format "%s" (custom-unlispify-tag-name symbol))))) + (widget-insert " " description " (") + (nxhtml-custom-describe-defun symbol) + (widget-insert "): " + (nxhtml-custom-valfaced + (format "%s" (symbol-value symbol)) + (if (eq (symbol-value symbol) + nxhtml-value) + "GreenYellow" + "gainsboro")) + "\n"))) + +(defun nxhtml-custom-h1(title &optional divider top-newline) + (let ((s title)) + (put-text-property 0 (length s) + 'face '(:weight bold + :height 1.4 + :foreground "DarkGreen" + ;;:underline t + ) + s) + (when top-newline (widget-insert "\n")) + ;;(when divider (widget-insert (nxhtml-custom-divider (length s)))) + (widget-insert s) + )) + +(defun widget-button-notify (widget &rest ignore) + (apply (widget-get widget 'function) (widget-get widget 'data))) + +(defun widget-insert-link (txt function data) + (widget-insert-button txt function data + :button-face 'link + :mouse-face 'highlight + :button-prefix "" + :button-suffix "")) + +(defun widget-insert-button (txt function data &rest keywords) + (let ((btn (apply 'widget-create + (append + '(push-button + :notify + widget-button-notify) + keywords + (list txt))))) + (widget-put btn 'data data) + (widget-put btn 'function function))) + +(defun nxhtml-custom-url-link (txt url) + (let ((plain-url (substring-no-properties url))) + (unless (equal txt url) + (put-text-property 0 (length txt) 'help-echo plain-url txt)) + (put-text-property 0 (length txt) 'mouse-face 'highlight txt) + (widget-insert-link txt 'browse-url (list url)))) + +(defun nxhtml-custom-describe-defun (sym &optional help) + (let ((txt (symbol-name sym))) + (when help + (put-text-property 0 (length txt) 'help-echo help txt)) + (put-text-property 0 (length txt) 'mouse-face 'highlight txt) + (widget-insert-link txt 'describe-function (list sym)))) + +;; (defun nxhtml-quick-customize (&optional same-window) +;; "Show page for Quick Customize of nXhtml." +;; (interactive) +;; (require 'nxhtml) +;; (require 'custom) +;; (require 'cus-edit) +;; (if same-window +;; (switch-to-buffer "*Quick Customize nXhtml*") +;; (switch-to-buffer-other-window "*Quick Customize nXhtml*")) +;; (kill-all-local-variables) +;; (custom-mode) +;; (let ((inhibit-read-only t)) +;; (erase-buffer)) +;; (let ((sFound "found") +;; (sError "error")) +;; (put-text-property 0 (length sFound) +;; 'face '(bold +;; (foreground-color . "green")) sFound) +;; (put-text-property 0 (length sError) +;; 'face '(bold +;; (foreground-color . "red")) sError) +;; (let* ( +;; (default-used "(not set yet - default used)") +;; ) +;; (nxhtml-custom-h1 "Quick Customize for nXhtml" t) +;; (widget-insert " + +;; This page is for a quick and easy setup of some ") +;; (nxhtml-custom-url-link "nXhtml" (nxhtml-docfile-url)) +;; (widget-insert " features +;; that I did not want to turn on by default since they alter what +;; happens when you open a file. I suggest however that you turn +;; them on since they are quite useful if you just understands what +;; is happening. + +;; The values you set here are saved so that they will be used next +;; time you start Emacs too.") +;; ;;(widget-insert-link "customize nXhtml" 'customize-group (list 'nxhtml)) +;; (widget-insert "\n\n") + +;; (nxhtml-custom-insert-nxhtml-row 'nxhtml-global-minor-mode t "Show the nXhtml menu in all relevant buffers\n\t") +;; ;;(nxhtml-custom-insert-nxhtml-row 'mumamo-global-mode t "Turn on Multiple Major Mode in all relevant buffers\n\t") +;; ;;(nxhtml-custom-insert-nxhtml-row 'mlinks-global-mode t "Make link of lins, for example href=\"...\"\n\t") +;; ;;(nxhtml-custom-insert-nxhtml-row 'indent-region-mode t "Use TAB to indent region when it is selected\n\t") + +;; (widget-insert "\n") +;; (widget-insert-button " Turn them all on " +;; (lambda () +;; (nxhtml-quick-all t) +;; (nxhtml-quick-customize t)) +;; nil) +;; (widget-insert " ") +;; (widget-insert-button " Turn them all off " +;; (lambda () +;; (nxhtml-quick-all nil) +;; (nxhtml-quick-customize t)) +;; nil) +;; (beginning-of-line) +;; ))) + +;; (defun nxhtml-quick-all (on) +;; (custom-set-and-prepare-save 'nxhtml-global-minor-mode on) +;; ;;(custom-set-and-prepare-save 'mumamo-global-mode on) +;; (custom-set-and-prepare-save 'indent-region-mode on) +;; (when custom-file +;; (custom-save-all))) + +(defun custom-set-and-prepare-save (symbol value) + "Set SYMBOL to VALUE and add to customize. +Both the current value and the value to save is set, but +`custom-save-all' must be called to save customization." + (customize-set-variable symbol value) + (customize-set-value symbol value) + (customize-mark-to-save symbol)) + + +;;(nxhtml-quick-customize) + +(defun nxhtml-welcome () + "Show welcome information." + (interactive) + (require 'cus-edit) + (let* ((bufnam "*nXhtml Welcome*") + (oldbuf (get-buffer bufnam)) + (curwin (selected-window))) + (switch-to-buffer-other-window bufnam) + (unless oldbuf + (let ((inhibit-read-only t) + (here (point))) + (Custom-mode) + (nxhtml-minor-mode 1) + (setq cursor-in-non-selected-windows nil) + (nxhtml-custom-h1 "Welcome to nXhtml - a package for web editing" t) + (insert "\n\n") + (setq here (point)) + (insert "If you have not done it already it might " + "be a good time to read at least The Quick Guide in the ") + (nxhtml-custom-url-link "nXhtml overview" (nxhtml-docfile-url)) + (insert " now.\n\n") + (fill-region here (point)) + (setq here (point)) + (insert "And oh, wait! If you are new to Emacs too you might want " + "to take a quick ") + (nxhtml-custom-url-link + "Emacs tour" + "http://www.gnu.org/software/emacs/tour/") + (insert ". And then perhaps the Emacs tutorial " + "(which is in the Help menu above).\n\n") + (fill-region here (point)) + (setq here (point)) + + (unless (nxhtml-skip-welcome) + (insert "Click to ") + (widget-insert-link "remove this message" + (lambda () + "Customize `nxhtml-skip-welcome'." + (customize-option 'nxhtml-skip-welcome)) + nil) + (insert " at startup. (This page is still " + "available in the nXhtml menu, at the bottom.)")) + (fill-region here (point)) + (setq here (point)) + (goto-char (point-min)))) + (select-window curwin))) + +(defcustom nxhtml-skip-welcome nil + "Turn this on to always skip the nXhtml welcome message." + :type 'boolean + :group 'nxhtml) + +(defun nxhtml-skip-welcome () + "Return t if nXhtml welcome message should be skipped. +If nil then the message will be shown when you open the first +file using nxhtml-mode." + (or nxhtml-skip-welcome + (and nxhtml-global-minor-mode + ;;mumamo-global-mode + ;;indent-region-mode + ))) + +(defun nxhtml-say-welcome-unless-skip () + (condition-case err + (unless (nxhtml-skip-welcome) + (save-match-data + (nxhtml-welcome))) + (error (message "ERROR nxhtml-say-welcome-unless-skip: %s" err)))) + +;; Show welcome screen once after loading nxhtml: +;;(unless (boundp 'bytecomp-filename) +(eval-when '(load) + (eval-after-load 'nxhtml + ;; Use a short delay if something like desktop is used: + '(run-with-idle-timer 0.5 nil 'nxhtml-say-welcome-unless-skip))) + +(provide 'nxhtml-menu) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; nxhtml-menu.el ends here diff --git a/elpa-to-submit/nxhtml/nxhtml/nxhtml-mode.el b/elpa-to-submit/nxhtml/nxhtml/nxhtml-mode.el new file mode 100644 index 0000000000..9b1ab802bf --- /dev/null +++ b/elpa-to-submit/nxhtml/nxhtml/nxhtml-mode.el @@ -0,0 +1,2779 @@ +;;; nxhtml-mode.el --- Edit XHTML files + +;; Copyright (C) 2005-2008 by Lennart Borgman +;; Parts are from Peter Heslin (see below) + +;; Author: Lennart Borgman +;; Created: 2005-08-05 +;;Version: +;; Last-Updated: 2008-12-28 Sun +;; Keywords: languages +;; +;; +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; Commentary: +;; +;; The purpose of nxhtml.el is to add some features that are useful +;; when editing XHTML files to nxml-mode. For more information see +;; `nxhtml-mode'. +;; +;; +;; Usage: +;; +;; See the file readme.txt in the directory above this file. Or, if +;; you do not have that follow the instructions below. + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;;; History: +;; +;; 2006-04-25: Added completion for href, src etc. Removed xhtmlin. + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; This file is not part of Emacs +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2, or (at +;; your option) any later version. +;; +;; This 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 (require 'mumamo)) +(eval-when-compile + (require 'cl) + (require 'appmenu-fold) + (require 'xhtml-help) + ;;(require 'nxhtml-menu) + (require 'fold-dwim) + (require 'typesetter nil t) + ;;(require 'outline) + (unless (or (< emacs-major-version 23) + (featurep 'nxhtml-autostart)) + (let ((efn (expand-file-name + "../autostart.el" + (file-name-directory + (or load-file-name + (when (boundp 'bytecomp-filename) bytecomp-filename) + buffer-file-name))))) + (message "efn=%s" efn) + (load efn)) + (require 'rng-valid) + (require 'rng-nxml) + (require 'html-toc nil t) + (require 'html-pagetoc nil t))) + +(require 'typesetter nil t) +(require 'button) +(require 'loadhist) +(require 'nxml-mode) + +;; Require nxml things conditionally to silence byte compiler under +;; Emacs 22. +(require 'rngalt) + +(require 'url-parse) +(require 'url-expand) +(require 'popcmp) +(eval-when-compile (require 'html-imenu)) +(eval-when-compile (require 'tidy-xhtml)) +(eval-when-compile (require 'html-quote)) + +(defun nxhtml-version () + "Show nxthml version." + (interactive) + (message "nXhtml mode version %s" nxhtml-menu:version)) + +;;(defun nxhtml-nxml-fontify-attribute (att &optional namespace-declaration) +;;"Holds the original `nxml-fontify-attribute' function.") +;;(fset 'nxhtml-nxml-fontify-attribute (symbol-function 'nxml-fontify-attribute)) + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Folding etc. This part is taken from +;; http://www.emacswiki.org/cgi-bin/wiki/NxmlModeForXHTML and was +;; originally written by Peter Heslin. It requires fold-dwim.el. + +(defun nxhtml-setup-for-fold-dwim () + (make-local-variable 'outline-regexp) + (setq outline-regexp "\\s *<\\([h][1-6]\\|html\\|body\\|head\\)\\b") + (make-local-variable 'outline-level) + (setq outline-level 'nxhtml-outline-level) + (outline-minor-mode 1) + (hs-minor-mode 1) + (add-to-list 'hs-special-modes-alist + '(nxhtml-mode + "" + "") + t)) + ((eq where 'in-xml-attr-val) + (let (attr + delimiter + val) + (save-excursion + (save-match-data + (re-search-forward "\\=[^<> \t\r\n\"]*" nil t))) + (let* ((name-start (match-beginning 1)) + (name-end (match-end 1)) + (colon (match-beginning 2)) + (attr (buffer-substring-no-properties name-start + (or colon name-end))) + (value-start (1+ (match-beginning 3))) + (tag (save-excursion + (when (search-backward-regexp "<[[:alpha:]]+" nil t) + (match-string 0)))) + (init (buffer-substring-no-properties value-start (point)))) + (setq delimiter (char-before value-start)) + (cond ((string= "encoding" attr) + ;; Give a default that works in browsers today + (setq val (nxhtml-coding-systems-complete + init + (symbol-name nxhtml-default-encoding)))) + ((string= "version" attr) + (setq val "1.0"))) + (when val + (insert val) + t) + ))) + ((or (memq where '(in-text + after-validation-header + in-empty-page))) + (rngalt-complete-tag-region-prepare) + (insert "<") + (condition-case err + (nxhtml-redisplay-complete) + (quit + (message "%s" (error-message-string err)) + (undo-start) + (undo-more 1) + (rngalt-complete-tag-region-cleanup))) + t) + (t + ;;(message "LAST TRY where=%s" (nxhtml-check-where))(sit-for 1) + nil) + )))) + +(defun nxhtml-img-tag-do-also () + (insert "alt=\"") + (rngalt-validate) + (insert (read-string "Alt attribute: ") + "\" ") + (insert "src=\"") + (rngalt-validate) + (let ((src (nxhtml-read-url nil nil 'nxhtml-image-url-predicate "Image"))) + (insert src) + (insert "\"") + (when (file-exists-p src) + (let ((sizes (image-size (create-image (expand-file-name src)) t))) + (insert + " width=\"" (format "%d" (car sizes)) "\"" + " height=\"" (format "%d" (cdr sizes)) "\"") + ))) + (unless (save-match-data (looking-at "[^<]\\{,200\\}>")) + (insert " />"))) + +(defun nxhtml-redisplay-complete () + (rngalt-validate) + (rng-cancel-timers) + (message "") + (redisplay t) + (nxml-complete) + (rng-activate-timers)) + +(defun nxhtml-read-from-minibuffer (prompt &optional + initial-contents keymap + read hist default-value + inherit-input-method) + (rng-cancel-timers) + (message "") + (let ((res (read-from-minibuffer prompt initial-contents keymap + read hist default-value inherit-input-method))) + (rng-activate-timers) + res)) + +(defun nxhtml-meta-tag-do-also () + (let ((type (popcmp-completing-read + "Type: " + '( + ;;"Refresh/Redirect" + "HTTP Message Headers" + "Robot Rules" + "Description for Search Engines" + )))) + (cond + ((string= type "Description for Search Engines") + (insert " name=\"Description\"") + (insert " content=\"") + (insert (nxhtml-read-from-minibuffer "Description: ")) + (insert "\" />")) + ((string= type "Robot Rules") + (insert " name=\"Robots\"") + (insert " content=\"") + (nxhtml-redisplay-complete) + (insert " />")) + ((string= type "HTTP Message Headers") + (insert " http-equiv=\"") + (nxhtml-redisplay-complete) + (insert " content=\"") + (insert (nxhtml-read-from-minibuffer "Content: ")) + (insert "\" />"))))) + +(defun nxhtml-style-tag-do-also () + (insert "type=\"text/css\"") + (insert " media=\"") + (nxhtml-redisplay-complete) + (insert ">") + (indent-according-to-mode) + (insert "\n/* ") + (indent-according-to-mode) + (insert "\n") + (end-of-line -2)) + +(defun nxhtml-script-tag-do-also () + (let ((type (popcmp-completing-read + "Type: " + '("Inlined" + "Linked")))) + (cond + ((string= type "Inlined") + (insert "type=\"text/javascript\">") + (indent-according-to-mode) + (insert "\n// ") + (indent-according-to-mode) + (insert "\n") + (indent-according-to-mode) + (end-of-line -1)) + ((string= type "Linked") + (insert "type=\"text/javascript\"") + (insert " src=\"") + (nxhtml-redisplay-complete) + (insert ">"))))) + +(defun nxhtml-link-tag-do-also () + (let ((type (popcmp-completing-read "Type: " + '( + "Other" + "Shortcut icon" + "Style sheet" + )))) + (cond + ((string= type "Style sheet") + (insert " rel=\"Stylesheet\" ") + (insert "type=\"text/css\" ") + (insert "href=\"") + (nxhtml-redisplay-complete) + (insert " media=\"") + (nxhtml-redisplay-complete) + (insert " />")) + ((string= type "Shortcut icon") + (insert " rel=\"Shortcut Icon\" ") + (insert "href=\"") + (nxhtml-redisplay-complete) + (insert " />")) + (t + (insert " ") + (nxhtml-redisplay-complete) + )))) + +(defun nxhtml-input-tag-do-also () + (insert " ") + (rngalt-validate) + ;; type= + (insert "type=\"") + (nxhtml-redisplay-complete) + (insert " ") + + (let* ((choice (save-match-data + (when (looking-back "type=\"\\(.*\\)\" ") + (match-string 1))))) + ;;(insert "type=\"" choice "\" ") + (rngalt-validate) + ;;(message "choice=%s" choice)(sit-for 2) + ;; name= + (when (member choice '("button" "checkbox" "file" "hidden" "image" + "password" "radio" "text")) + (insert "name=\"" + (read-string "Name (name): ") + "\" ") + (rngalt-validate)) + ;; checked= + (when (member choice '("checkbox" "radio")) + (when (y-or-n-p "Checked? (checked): ") + (insert "checked=\"checked\" ") + (rngalt-validate))) + ;; disabled= + (unless (string= choice "hidden") + (unless (y-or-n-p "Enabled? : ") + (insert "disabled=\"disabled\" ") + (rngalt-validate))) + ;; readonly= + (when (string= choice "text") + (when (y-or-n-p "Readonly? (readonly): ") + (insert "readonly=\"readonly\" ")) + (rngalt-validate)) + (when (string= choice "file") + ;; accept= + (require 'mailcap) + (condition-case err + (let ((prompt (concat + "Accept mime type, RET to stop (" + "C-g to skip" + "): ")) + (mime " ") + mimes + (types (when (boundp 'mailcap-mime-extensions) + (mapcar (lambda (elt) + (cdr elt)) + mailcap-mime-extensions)))) + (while (< 0 (length mime)) + (setq mime + (if types + (completing-read prompt types) + (read-string prompt))) + (when (< 0 (length mime)) + (if mimes + (setq mimes (concat mimes "," mime)) + (setq mimes mime)))) + (when (and mimes + (< 0 (length mimes))) + (insert "accept=\"" mimes "\" "))) + (quit (message "Skipped accept attribute"))) + (rngalt-validate)) + (when (string= choice "image") + ;; alt= + (insert "alt=\"") + (rngalt-validate) + (insert (read-string "Alt attribute: ") + "\" ") + (rngalt-validate) + ;; src= + (insert "src=\"") + (rngalt-validate) + (let ((src (nxhtml-read-url nil nil 'nxhtml-image-url-predicate "Image"))) + (insert src) + (insert "\" ")) + (rngalt-validate)) + ;; value= + (cond + ((member choice '("button" "reset" "submit")) + (nxhtml-do-also-value "Label")) + ((member choice '("checkbox" "radio")) + (nxhtml-do-also-value "Result")) + ((member choice '("hidden" "password" "text")) + (nxhtml-do-also-value "Value")) + ) + (insert "/>") + ;;(message "type=%s" choice)(sit-for 2) + )) + +(defun nxhtml-do-also-value (label) + (let ((v (read-string (concat label " (value): ")))) + (when (and v + (< 0 (length v))) + (insert " value=\"" v "\" ")))) + +(defun nxhtml-form-tag-do-also () + (insert "action=\"") + (rngalt-validate) + (let ((src (nxhtml-read-url nil nil nil "Action"))) + (insert src "\" ")) + ) + +(defconst nxhtml-complete-tag-do-also + '(("a" + (lambda () + (insert " href=\"") + (rngalt-validate) + (insert (nxhtml-read-url t)) + (insert "\""))) + ("form" nxhtml-form-tag-do-also) + ("img" nxhtml-img-tag-do-also) + ("input" nxhtml-input-tag-do-also) + ("link" nxhtml-link-tag-do-also) + ("script" nxhtml-script-tag-do-also) + ("style" nxhtml-style-tag-do-also) + ("meta" nxhtml-meta-tag-do-also) + ) + "List of functions to call at tag completion. +Each element of the list have the form + + \(TAG-NAME TAG-FUN) + +If `nxhtml-tag-do-also' is non-nil then TAG-FUN is called after +by `nxml-complete' (with the special setup of this function for +`nxhtml-mode') when completing a tag with the name TAG-NAME. + +The list is handled as an association list, ie only the first +occurence of a tag name is used.") + +(defun nxhtml-complete-tag-do-also-for-state-completion (dummy-completed) + "Add this to state completion functions completed hook." + (when (and nxhtml-tag-do-also + (derived-mode-p 'nxhtml-mode)) + ;; Find out tag + (let ((tag nil)) + (save-match-data + ;;(when (looking-back "<\\([a-z]+\\)[[:blank:]]+") + (when (looking-back "<\\([a-z]+\\)") + (setq tag (match-string 1)))) + (when tag + (insert " ") + (nxhtml-complete-tag-do-also tag))))) + +(defun nxhtml-complete-tag-do-also (tag) + ;; First required attributes: + (let ((tagrec (assoc tag nxhtml-complete-tag-do-also))) + (when tagrec + (funcall (cadr tagrec)))) + ) + +(defun nxhtml-turn-onoff-tag-do-also (on) + (add-hook 'nxhtml-mode-hook 'nxhtml-check-tag-do-also) + (dolist (b (buffer-list)) + (when (with-current-buffer b + (eq major-mode 'nxhtml-mode)) + (if on + (progn + (add-hook 'rngalt-complete-tag-hooks 'nxhtml-complete-tag-do-also t t) + ) + (remove-hook 'rngalt-complete-tag-hooks 'nxhtml-complete-tag-do-also t) + )))) + +(define-toggle nxhtml-tag-do-also t + "When completing tag names do some more if non-nil. +For some tag names additional things can be done at completion to +speed writing up. For example for an tag `nxhtml-mode' +can prompt for src attribute and add width and height attributes +if this attribute points to a local file. + +You can add additional elisp code for completing to +`nxhtml-complete-tag-do-also'." + :set (lambda (symbol value) + (set-default symbol value) + (nxhtml-turn-onoff-tag-do-also value)) + :group 'nxhtml) + +(defun nxhtml-check-tag-do-also () + (when nxhtml-tag-do-also + (nxhtml-turn-onoff-tag-do-also t))) + + +;;;###autoload +(define-minor-mode nxhtml-validation-header-mode + "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." + :global nil + :lighter " VH" + :group 'nxhtml + (if nxhtml-validation-header-mode + (progn + (unless nxhtml-current-validation-header + (setq nxhtml-current-validation-header + (nxhtml-get-default-validation-header))) + ;;(message "nxhtml-current-validation-header=%s" nxhtml-current-validation-header) + (if nxhtml-current-validation-header + (progn + (nxhtml-apply-validation-header) + (add-hook 'change-major-mode-hook 'nxhtml-vhm-change-major nil t) + (when (and (boundp 'mumamo-multi-major-mode) mumamo-multi-major-mode) + (add-hook 'mumamo-change-major-mode-hook 'nxhtml-vhm-mumamo-change-major nil t) + (add-hook 'mumamo-after-change-major-mode-hook 'nxhtml-vhm-mumamo-after-change-major nil t))) + (run-with-idle-timer 0 nil 'nxhtml-validation-header-empty (current-buffer)))) + (rngalt-set-validation-header nil) + (setq nxhtml-current-validation-header nil) + (remove-hook 'after-change-major-mode-hook 'nxhtml-vhm-after-change-major t) + (when (and (boundp 'mumamo-multi-major-mode) mumamo-multi-major-mode) + (remove-hook 'mumamo-change-major-mode-hook 'nxhtml-vhm-mumamo-change-major t) + (remove-hook 'mumamo-after-change-major-mode-hook 'nxhtml-vhm-mumamo-after-change-major t)))) + +(defun nxhtml-can-insert-page-here () + (and (not nxhtml-validation-header-mode) + (= 1 (point)) + (or (= 0 (buffer-size)) + (save-restriction + (widen) + (save-match-data + (looking-at (rx buffer-start + (0+ space) + buffer-end))))))) + +(defun nxhtml-complete-first-try () + (when (nxhtml-can-insert-page-here) + (nxhtml-empty-page-completion))) + +(defun nxhtml-completing-read-tag (prompt + table + &optional predicate require-match + initial-input hist def inherit-input-method) + (let ((popcmp-in-buffer-allowed t)) + (popcmp-completing-read prompt + table + predicate require-match + initial-input hist def inherit-input-method + nxhtml-help-tag + nxhtml-tag-sets))) + +(defun nxhtml-add-required-to-attr-set (tag) + (let ((missing (when tag + (rngalt-get-missing-required-attr + (nxthml-is-single-tag tag))))) + (if (not missing) + nxhtml-attr-sets + (cons (cons "Required" missing) + nxhtml-attr-sets)))) + +(defun nxhtml-get-tag-specific-attr-help (tag) + (append (cdr (assoc tag nxhtml-help-attribute-name-tag)) nxhtml-help-attribute-name) + ) + +(defconst nxhtml-in-start-tag-regex + ;;(defconst rng-in-start-tag-name-regex + (replace-regexp-in-string + "w" + xmltok-ncname-regexp + ;; Not entirely correct since < could be part of attribute value: + "<\\(w\\(?::w?\\)?\\)+ [^<]*" + t + t)) + +(defun nxhtml-completing-read-attribute-name (prompt + table + &optional predicate require-match + initial-input hist def inherit-input-method) + (let* ((tag (save-match-data + ;;(when (looking-back "<\\([a-z1-6]+\\) [^<]*") + (when (looking-back nxhtml-in-start-tag-regex) + (match-string 1)))) + (attr-sets (nxhtml-add-required-to-attr-set tag)) + (help-attr (nxhtml-get-tag-specific-attr-help tag)) + (popcmp-in-buffer-allowed t) + ) + (popcmp-completing-read prompt + table + predicate require-match + initial-input hist def inherit-input-method + help-attr + attr-sets))) + +(defun nxhtml-completing-read-attribute-value (prompt + table + &optional predicate require-match + initial-input hist def inherit-input-method) + (let (val) + (if table + (let ((popcmp-in-buffer-allowed t)) + (setq val (popcmp-completing-read prompt table + predicate require-match + initial-input hist def inherit-input-method))) + (let* (init + delimiter + (lt-pos (save-excursion (search-backward "<" nil t))) + (in-attr-val + (save-excursion + (re-search-backward rng-in-attribute-value-regex lt-pos t))) + (in-xml-attr-val + (unless in-attr-val + (save-excursion + (re-search-backward nxhtml-in-xml-attribute-value-regex lt-pos t)))) + ) + (when (or in-attr-val in-xml-attr-val) + ;;(save-match-data (save-excursion (re-search-forward "\\=[^<> \t\r\n\"]*" nil t))) + (let* ((name-start (match-beginning 1)) + (name-end (match-end 1)) + (colon (match-beginning 2)) + (attr (buffer-substring-no-properties name-start + (or colon name-end))) + (value-start (1+ (match-beginning 3))) + tag-start-end + (tag (save-excursion + (when (search-backward-regexp "<[[:alpha:]]+" nil t) + (setq tag-start-end (match-end 0)) + (match-string-no-properties 0))))) + (setq init (buffer-substring-no-properties value-start (point))) + (setq delimiter (char-before value-start)) + (if in-xml-attr-val + (error "in-xml-attr-val should not be true here!") + ;; (cond ((string= "encoding" attr) + ;; ;; Give a default that works in browsers today + ;; (setq val (nxhtml-coding-systems-complete + ;; init + ;; (symbol-name nxhtml-default-encoding)))) + ;; ((string= "version" attr) + ;; (setq val "1.0"))) + (cond ((string= "rel" attr) + (cond ((string= " + + + + Fictive XHTML Validation Header + + +" + ) + ("head-iso-8859-1" . + " + + + +" + ) + ("html-iso-8859-1" . + " + + +" + ) + ;; ("doctype-iso-8859-1" . + ;; " + ;; + ;; " + ;; ) + ;; ("xml-iso-8859-1" . + ;; " + ;; " + ;; ) + + ("body-utf-8" . + " + + + + Fictive XHTML Validation Header + + +" + ) + ("head-utf-8" . + " + + + +" + ) + ("head-closed-utf-8" . + " + + + + + +" + ) + ("html-utf-8" . + " + + +" + ) + ;; ("doctype-utf-8" . + ;; " + ;; + ;; " + ;; ) + ;; ("xml-utf-8" . + ;; " + ;; " + ;; ) + ) + "Fictive XHTML validation headers. +Used by `nxhtml-set-validation-header'." + :type '(alist :key-type string :value-type string) + :group 'nxhtml) + +(defcustom nxhtml-default-validation-header nil + "Default Fictive XHTML validation header. +Must be nil or one of the key values in +`nxhtml-validation-headers'." + :type 'string + :set (lambda (sym val) + (if (or (null val) + (assoc val nxhtml-validation-headers)) + (set-default sym val) + (lwarn 'nxhtml-default-validation-header + :warning "There is no Fictive XHTML Validation Header named %s" val))) + :group 'nxhtml) + +(defun nxhtml-must-have-validation-headers () + (unless nxhtml-validation-headers + (error + "No XHTML validation headers. Please customize nxhtml-validation-headers."))) + +(defvar nxhtml-set-validation-header-hist nil) + +(defcustom nxhtml-guess-validation-header-alist + ;;(rx line-start (0+ blank) "" . "head-closed-utf-8") + ("^[[:blank:]]* nh 1) + (completing-read "XHTML validation header: " + nxhtml-validation-headers + nil + t + default + nxhtml-set-validation-header-hist) + (if (not (y-or-n-p "Only one XHTML validation header is defined. Define more? ")) + default + (customize-option 'nxhtml-validation-headers) + 'adding))))) + ;;(lwarn 'svh2 :warning "key=%s" key) + (or key + (setq key (nxhtml-get-default-validation-header)) + (setq key (cons 'schema "XHTML"))) + (unless (eq key 'adding) + (setq nxhtml-current-validation-header key) + (nxhtml-validation-header-mode 1) + (nxhtml-apply-validation-header))) + +(defun nxhtml-apply-validation-header () + (when nxhtml-current-validation-header + (setq rngalt-major-mode + (if (and (boundp 'mumamo-multi-major-mode) mumamo-multi-major-mode) + (mumamo-main-major-mode) + major-mode)) + (let* ((key nxhtml-current-validation-header) + (rec (unless (listp key) + (assoc key nxhtml-validation-headers))) + (header (cdr rec))) + (if (listp key) + (let ((schema-file (rng-locate-schema-file (cdr key)))) + (unless schema-file + (error "Could not locate schema for type id `%s'" key)) ;type-id)) + (rng-set-schema-file-1 schema-file)) + (rngalt-set-validation-header header) + )))) + +(defun nxhtml-update-validation-header () + "Update the validation header in the buffer as needed." + (interactive) + (let ((mode-on nxhtml-validation-header-mode)) + (when mode-on (nxhtml-validation-header-mode 0)) + (setq nxhtml-current-validation-header nil) + (when mode-on (nxhtml-validation-header-mode 1)))) + +(defun nxhtml-vhm-change-major () + "Turn off `nxhtml-validation-header-mode' after change major." + ;;(message "nxhtml-vhm-change-major here") + (unless (and (boundp 'mumamo-multi-major-mode) mumamo-multi-major-mode) + (setq nxhtml-current-validation-header nil)) + (run-with-idle-timer 0 nil 'nxhtml-validation-header-empty (current-buffer))) +(put 'nxhtml-vhm-change-mode 'permanent-local-hook t) + +(defun nxhtml-recheck-validation-header () + "Just turn off and on again `nxhtml-validation-header-mode'. +This will adjust the XHTML validation to the code currently in +the buffer." + (interactive) + (nxhtml-validation-header-mode -1) + (nxhtml-validation-header-mode 1)) + +(defun nxhtml-validation-header-empty (buffer) + "Turn off validation header mode. +This is called because there was no validation header." + (with-current-buffer buffer + (unless nxhtml-current-validation-header + ;;(message "nxhtml-validation-header-empty") + (save-match-data ;; runs in timer + (nxhtml-validation-header-mode -1)) + ;;(message "No validation header was needed") + ))) + +(defun nxhtml-turn-on-validation-header-mode () + "Turn on `nxhtml-validation-header-mode'." + (nxhtml-validation-header-mode 1)) + + +(defun nxhtml-vhm-mumamo-change-major () + (put 'rngalt-validation-header 'permanent-local t) + (put 'nxhtml-validation-header-mode 'permanent-local t) + (put 'nxhtml-current-validation-header 'permanent-local t) + ;;(put 'nxhtml-validation-header-mode-major-mode 'permanent-local t) + ;;(setq nxhtml-validation-header-mode-major-mode mumamo-set-major-running) + ) + +(defun nxhtml-vhm-mumamo-after-change-major () + (put 'rngalt-validation-header 'permanent-local nil) + (put 'nxhtml-validation-header-mode 'permanent-local nil) + (put 'nxhtml-current-validation-header 'permanent-local nil) + ;;(put 'nxhtml-validation-header-mode-major-mode 'permanent-local nil) + ) + +(defcustom nxhtml-validation-headers-check 'html + "Defines what check the function with the same name does. +The function returns true if the condition here is met." + :type '(choice :tag "Add Fictive XHTML Validation Header if:" + (const :tag "If buffer contains html" html) + (const :tag "If buffer contains html or is empty" html-empty)) + :group 'nxhtml) + +;; (defun nxhtml-validation-headers-check (buffer) +;; "Return non-nil if buffer contains a html tag or is empty. +;; This is for use with `nxhtml-validation-header-filenames'. + +;; The variable `nxhtml-validation-headers-check' determines how the +;; check is made." +;; (if (= 0 (buffer-size buffer)) +;; (eq 'html-empty nxhtml-validation-headers-check) +;; (save-match-data +;; (save-restriction +;; (let ((here (point)) +;; (html nil)) +;; (goto-char (point-min)) +;; (setq html (re-search-forward "" nil t)) +;; (goto-char here) +;; html))))) + +;; (defcustom nxhtml-validation-header-filenames +;; '( +;; ("\.php\\'" nxhtml-validation-headers-check) +;; ("\.rhtml\\'" nxhtml-validation-headers-check) +;; ("\.jsp\\'" nxhtml-validation-headers-check) +;; ) +;; "Alist for turning on `nxhtml-validation-mode'. +;; The entries in the list should have the form + +;; \(FILE-REGEXP CHECK-FUNCION) + +;; If buffer file name matches the regexp FILE-REGEXP and the +;; function CHECK-FUNCTION returns non-nil when called with the +;; buffer as an argument \(or CHECK-FUNCTION is nil) then +;; `nxhtml-global-validation-header-mode' will turn on +;; `nxhtml-validation-header-mode' in buffer. + +;; The function `nxhtml-validation-headers-check' may be a useful +;; value for CHECK-FUNCTION. + +;; See also `nxhtml-maybe-turn-on-validation-header'." +;; :type '(alist :key-type regexp :tag "File name regexp" +;; :value-type (group (choice (const :tag "No more check" nil) +;; (function :tag "Check buffer with")))) +;; :group 'nxhtml) + + + +;; (defun nxhtml-maybe-turn-on-validation-header () +;; "Maybe turn on `nxhtml-validation-header-mode' in buffer. +;; This is called by `nxhtml-global-validation-header-mode'. + +;; See `nxhtml-validation-header-filenames' for how the check +;; is made." +;; (or (and (or (and mumamo-mode +;; (eq (mumamo-main-major-mode) 'nxhtml-mode)) +;; (eq major-mode 'nxhtml-mode)) +;; rngalt-validation-header +;; nxhtml-current-validation-header +;; nxhtml-validation-header-mode +;; (progn +;; ;;(lwarn 'maybe :warning "quick, buffer=%s" (current-buffer)) +;; (nxhtml-validation-header-mode 1) +;; t)) +;; (when (buffer-file-name) +;; (unless (or ;;nxhtml-validation-header-mode +;; (minibufferp (current-buffer)) +;; (string= " " (substring (buffer-name) 0 1)) +;; (string= "*" (substring (buffer-name) 0 1)) +;; ) +;; (when (catch 'turn-on +;; (save-match-data +;; (dolist (rec nxhtml-validation-header-filenames) +;; (when (string-match (car rec) (buffer-file-name)) +;; (let ((fun (nth 1 rec))) +;; (if (not fun) +;; (progn +;; ;;(lwarn 't :warning "matched %s to %s, nil" (car rec) (buffer-file-name)) +;; (throw 'turn-on t)) +;; (when (funcall fun (current-buffer)) +;; ;;(lwarn 't :warning "matched %s to %s" (car rec) (buffer-file-name)) +;; (throw 'turn-on t)))))))) +;; ;;(lwarn 't :warning "turn on %s, buffer=%s" major-mode (current-buffer)) +;; (nxhtml-validation-header-mode 1)))))) + + +;; ;; Fix-me: Is this really the way to do it? Would it not be better to +;; ;; tie this to mumamo-mode in the turn on hook there? After all +;; ;; validation headers are probably not used unless mumamo-mode is on. +;; (define-globalized-minor-mode nxhtml-global-validation-header-mode +;; nxhtml-validation-header-mode +;; nxhtml-maybe-turn-on-validation-header +;; :group 'nxhtml) +;; ;; The problem with global minor modes: +;; (when (and nxhtml-global-validation-header-mode +;; (not (boundp 'define-global-minor-mode-bug))) +;; (nxhtml-global-validation-header-mode 1)) + + +(defcustom nxhtml-validation-header-mumamo-modes + '(nxhtml-mode) + "Main major modes for which to turn on validation header. +Turn on Fictive XHTML Validation Header if main major mode for the +used mumamo multi major mode is any of those in this list. + +See `mumamo-defined-turn-on-functions' for information about +mumamo multi major modes." + :type '(repeat (function :tag "Main major mode in mumamo")) + :group 'nxhtml) + +(defun nxhtml-add-validation-header-if-mumamo () + "Maybe turn on validation header. +See `nxhtml-validation-header-if-mumamo' for more information." + ;;(nxhtml-validation-headers-check (current-buffer)) + (when (and (fboundp 'mumamo-main-major-mode) + (memq (mumamo-main-major-mode) nxhtml-validation-header-mumamo-modes)) + (nxhtml-validation-header-mode 1))) + +(define-toggle nxhtml-validation-header-if-mumamo nil + "Add a fictive validation header when mumamo is used. +If this variable is t then add a Fictive XHTML Validation Header +\(see `nxhtml-validation-header-mode') in buffer when mumamo is +used. However do this only if `mumamo-main-major-mode' is one of +those in `nxhtml-validation-header-mumamo-modes'. + +Changing this variable through custom adds/removes the function +`nxhtml-add-validation-header-if-mumamo' to +`mumamo-turn-on-hook'." + :set '(lambda (sym val) + (set-default sym val) + (if val + (add-hook 'mumamo-turn-on-hook 'nxhtml-add-validation-header-if-mumamo) + (remove-hook 'mumamo-turn-on-hook 'nxhtml-add-validation-header-if-mumamo))) + :group 'nxhtml) + +(defun nxhtml-warnings-are-visible () + (get 'rng-error 'face)) + +(defvar nxhtml-old-rng-error-face nil) +(defun nxhtml-toggle-visible-warnings () + "Toggle the red underline on validation errors. +Those can be quite disturbing when using mumamo multi major modes +because there will probably be many validation errors in for +example a php buffer, since unfortunately the validation routines +in `rng-validate-mode' from `nxml-mode' tries to validate the +whole buffer as XHTML. + +Also, because of a \(normally unimportant) bug in Emacs 22, +the red underline that marks an error will sometimes span several +lines instead of just marking a single character as it +should. \(This bug is a problem with overlays in Emacs 22.)" + (interactive) + (let ((face (get 'rng-error 'face))) + (if face + (progn + (setq nxhtml-old-rng-error-face (get 'rng-error 'face)) + (put 'rng-error 'face nil)) + (put 'rng-error 'face nxhtml-old-rng-error-face)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Bug corrections +;; (defun nxml-indent-line () +;; "Indent current line as XML." +;; (let ((indent (nxml-compute-indent)) +;; (from-end (- (point-max) (point)))) +;; (when indent +;; (beginning-of-line) +;; (let ((bol (point))) +;; (skip-chars-forward " \t") +;; ;; There is a problem with some lines, try a quick fix: +;; (when (and (= 0 indent) +;; (not (eq (char-after) ?<))) +;; (save-excursion +;; (save-match-data +;; (when (re-search-backward "^<" nil t) +;; (when (search-forward " ") +;; (setq indent (current-column)))))) +;; (when (= 0 indent) +;; (setq indent nxml-child-indent))) +;; ;; And sometimes nxml-compute-indent get very upset, check for +;; ;; that: +;; (let ((here (point))) +;; (beginning-of-line 0) +;; (back-to-indentation) +;; (when (and (= indent (current-column)) +;; (eq (char-after) ?\")) +;; (setq indent 0)) +;; (goto-char here)) +;; (unless (= (current-column) indent) +;; (delete-region bol (point)) +;; (indent-to indent))) +;; (when (> (- (point-max) from-end) (point)) +;; (goto-char (- (point-max) from-end)))))) + + +;; FIX-ME: untag should be in nxml-mode.el since it is in no way +;; specific to nxhtml-mode, but I do not want to change nxml-mode.el +;; at the moment. + +(defcustom nxml-untag-select 'yes + "Decide whether to select an element untagged by `nxml-untag-element'. +If this variable is 'yes the element is selected after untagging +the element. The mark is set at the end of the element and point +at the beginning of the element. + +If this variable is 'no then the element is not selected and +point is not moved. If it is 'ask the user is asked what to do." + :type '(choice (const :tag "Yes" yes) + (const :tag "No" no) + (const :tag "Ask" ask)) + :group 'nxml) + +(defun nxml-untag-element (arg) + "Remove start and end tag from current element. +The mark is by default set to the end of the former element and +point is moved to the beginning. Mark is also activated so that +it is easy to surround the former element with a new tag. + +Whether to select the old element is controlled by +`nxml-untag-select'. The meaning of the values 'yes and 'no for +this variable is flipped by using a universal argument. + +Note: If you want to `undo' the untag and you use +`transient-mark-mode' then you must first do something so that +the region is not highlighted (for example C-g)." + (interactive "*P") + (let ((here (point-marker)) + el-start + el-start-end + el-end + el-end-end + (select t)) + (nxml-backward-up-element) + (setq el-start (point)) + (nxml-forward-balanced-item) + (setq el-start-end (point)) + (goto-char el-start) + (nxml-forward-element) + (setq el-end-end (point-marker)) + (nxml-backward-single-balanced-item) + (setq el-end (point)) + (delete-region el-end el-end-end) + (delete-region el-start el-start-end) + ;; Select the element or not? + (if (eq nxml-untag-select 'ask) + (setq select (y-or-n-p "Select the old element? ")) + (when (eq nxml-untag-select 'no) + (setq select nil)) + (when arg + (setq select (not select)))) + (if (not select) + (goto-char here) + (goto-char el-end-end) + (push-mark nil t t) + (setq mark-active t) + (setq deactivate-mark nil) + (goto-char el-start)))) + +(defun nxhtml-rollover-insert-2v () + "Insert CSS rollover images. +The upper half of the image will be used when mouse is out and +the lower half when mouse is over the image. + +Only CSS is used for the rollover. The CSS code is written to the +header part of the file if possible, otherwise it is copied to +the kill ring/clipboard. + +The CSS code is built from a template file and the image size. + +This might be used for example for creating a menu with +alternatives vertically or horizontally. + +Usage example: + + If you want to make a small button style menu with images you + can start like this: + + + + Then put point at the X above (this is just a mark, should not + be in your code) and call this function. + + It will add some CSS code to in the header of your file. You + may want to tweak this a little bit, see below (or place it + somewhere else). It may look like this: + + #mylinks a { + /* Image */ + display: block; + background: transparent url(\"img/mybutton.png\") 0 0 no-repeat; + overflow: hidden; + width: 200px; + /* Text placement and size, etc */ + text-align: center; + /* You may need to change top and bottom padding depending + on font size. */ + padding-top: 11px; + font-size: 12px; + padding-bottom: 9px; + text-decoration: none; + white-space: nowrap; + border: none; + } + #mylinks a:hover { + background-position: 0 -35px; + } + #mylinks li { + display: inline; + padding: 0; + margin: 0; + float: none; + } + +For an example of usage see the file nxhtml.html that comes with +nXhtml and can be opened from the nXhtml menu under + + nXhtml / nXhtml Help and Setup / nXhtml version nn Overview" + (interactive) + ;; Fix-me: not quite ready yet, but should work OK." + (save-excursion + (let* ((tag (progn + (search-forward ">" nil t) + (unless (re-search-backward (rx "<" + (1+ (any "a-zA-Z:")) + (1+ (not (any ">"))) + " id=\"" + (submatch (+? anything)) + "\"") + nil t) + (error "Can't find tag with id backwards")) + (match-string-no-properties 0))) + (tagid (match-string-no-properties 1)) + (tagovl (let ((ovl (make-overlay + (match-beginning 0) (match-end 0)))) + (overlay-put ovl 'face 'highlight) + ovl)) + (head-end (save-excursion (search-backward "\n" + css + "\n\n") + (select-window this-window)) + (kill-new css) + (message "No place to insert CSS, copied to clipboard instead")))) + (delete-overlay tagovl) + )))) + +;; Fix-me: image border 0 +;; Fix-me: SSI +;; Fix-me: Better a tag completion, target etc. +;; Fix-me: image map - is that possible now? +;; Fix-me: Special chars - completing on &? Or popup? Use nxml-insert-named-char +;; Fix-me: Quick table insert? A form? +;; Fix-me: Quick object insert? (applet is depreceated) +;; Fix-me: Better meta insert? Quick meta? +;; Fix-me: Quick div! Better div completion with position: static, +;; relative, absolute and fixed - with some explanations. +;; Fix-me: Quick hr? +;; Fix-me: Import CSS? Export CSS? +;; Fix-me: Use nxhtml-js.el? +;; Fix-me: Scroll bar colors etc? See 1stPage. +;; body { +;; scrollbar-arrow-color: #FF6699; +;; scrollbar-3dlight-color: #00FF33; +;; scrollbar-highlight-color: #66FFFF; +;; scrollbar-face-color: #6699FF; +;; scrollbar-shadow-color: #6633CC; +;; scrollbar-darkshadow-color: #660099; +;; scrollbar-track-color: #CC6633; +;; } +;; Fix-me: More quick menus: http://www.cssplay.co.uk/menus/ + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(provide 'nxhtml-mode) + +;;; nxhtml-mode.el ends here diff --git a/elpa-to-submit/nxhtml/nxhtml/nxhtml-mumamo.el b/elpa-to-submit/nxhtml/nxhtml/nxhtml-mumamo.el index 32459f1835..91a2e89b4a 100644 --- a/elpa-to-submit/nxhtml/nxhtml/nxhtml-mumamo.el +++ b/elpa-to-submit/nxhtml/nxhtml/nxhtml-mumamo.el @@ -3,14 +3,14 @@ ;; Author: Lennart Borgman (lennart O borgman A gmail O com) ;; Created: 2008-03-10T19:04:20+0100 Mon (defconst nxhtml-mumamo:version "0.5") -;; Last-Updated: x +;; Last-Updated: 2009-01-06 Tue ;; URL: ;; Keywords: ;; Compatibility: ;; ;; Features that might be required by this library: ;; -;; None + ;; `backquote', `bytecomp', `mumamo', `mumamo-fun'. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; @@ -44,6 +44,9 @@ ;; ;;; Code: +(eval-when-compile (require 'cl)) +(eval-when-compile (require 'nxhtml)) +(eval-when-compile (require 'rng-valid nil t)) (require 'mumamo-fun) ;; (defgroup nxhtml-auto-val-head nil @@ -75,10 +78,12 @@ ;;;###autoload (define-mumamo-multi-major-mode nxhtml-mumamo-mode "Turn on multiple major modes for (X)HTML with main mode `nxhtml-mode'. -This covers inlined style and javascript and PHP." +This covers inlined style and javascript and PHP. + +See also `mumamo-alt-php-tags-mode'." ("nXhtml Family" nxhtml-mode (mumamo-chunk-xml-pi - ;;mumamo-chunk-xml-pi2 + mumamo-chunk-alt-php mumamo-chunk-inlined-style mumamo-chunk-inlined-script mumamo-chunk-style= @@ -150,6 +155,7 @@ This also covers inlined style and javascript." (mumamo-chunk-genshi% mumamo-chunk-genshi$ mumamo-chunk-xml-pi + mumamo-chunk-alt-php mumamo-chunk-inlined-style mumamo-chunk-inlined-script mumamo-chunk-style= @@ -191,7 +197,6 @@ This also covers inlined style and javascript." ( mumamo-chunk-mjt$ mumamo-chunk-xml-pi - ;;mumamo-chunk-xml-pi2 mumamo-chunk-inlined-style mumamo-chunk-inlined-script mumamo-chunk-style= diff --git a/elpa-to-submit/nxhtml/nxhtml/nxhtml.el b/elpa-to-submit/nxhtml/nxhtml/nxhtml.el index 2a8848ea43..5658bf37f1 100644 --- a/elpa-to-submit/nxhtml/nxhtml/nxhtml.el +++ b/elpa-to-submit/nxhtml/nxhtml/nxhtml.el @@ -1,115 +1,64 @@ -;;; nxhtml.el --- Edit XHTML files - -;; Copyright (C) 2005-2008 by Lennart Borgman -;; Parts are from Peter Heslin (see below) - -;; Author: Lennart Borgman -;; Created: 2005-08-05 -;;(defconst nxhtml:version "1.45") ;;Version: -;; Last-Updated: 2008-09-30T11:46:26+0200 Tue -;; Keywords: languages +;;; nxhtml.el --- Keeping nXhtml together +;; +;; Author: Lennart Borgman (lennart O borgman A gmail O com) +;; Created: 2009-01-01 Thu +;; Version: +;; Last-Updated: +;; URL: +;; Keywords: +;; Compatibility: ;; +;; Features that might be required by this library: ;; +;; None ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Commentary: ;; -;; The purpose of nxhtml.el is to add some features that are useful -;; when editing XHTML files to nxml-mode. For more information see -;; `nxhtml-mode'. -;; -;; -;; Usage: -;; -;; See the file readme.txt in the directory above this file. Or, if -;; you do not have that follow the instructions below. -;; -;; Put this file in `load-path'. In your .emacs: -;; -;; ;; Load nxml according to the instructions, ie something like: -;; (load "your-path/nxml-mode-20041004/rng-auto.el") -;; -;; ;; Then autoload nxhtml-mode: -;; (autoload 'nxhtml-mode "nxhtml" "Mode for editing XHTML files - based on nxml-mode." t) -;; -;; ;; For file associations you can use: -;; (majmodpri-apply-priorities t) ;; ;; -;; Tip: Why not put all these in a .nxml file that you load in your -;; .emacs? - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -;;; History: +;;; Change log: ;; -;; 2006-04-25: Added completion for href, src etc. Removed xhtmlin. - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; -;; This file is not part of Emacs +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2, or (at -;; your option) any later version. +;; 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 +;; 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. - - +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth +;; Floor, Boston, MA 02110-1301, USA. +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Code: -(eval-when-compile - (require 'cl) - (unless (featurep 'nxhtml-autostart) - (let ((efn (expand-file-name - "../autostart.el" - (file-name-directory - (if load-file-name - load-file-name - (buffer-file-name)))))) - (load efn)) - (require 'rng-valid) - (require 'rng-nxml) - (require 'html-toc nil t) - (require 'html-pagetoc nil t))) - -(require 'button) -(require 'loadhist) -(require 'nxml-mode) -(require 'url-parse) -(require 'url-expand) -(require 'popcmp) -(require 'rngalt) -(require 'html-imenu) -(require 'fold-dwim) -(require 'tidy-xhtml) -;;(require 'nxhtml-menu) -(require 'html-quote) -;;(require 'nxhtml-mumamo) +(defgroup nxhtml nil + "Customization of `nxhtml-mode'." + :group 'nxml) -(defun nxhtml-version () - "Show nxthml version." +;;;###autoload +(defun nxhtml-customize () + "Customize nXhtml." (interactive) - (message "nXhtml mode version %s" nxhtml-menu:version)) + (customize-group 'nxhtml)) -(defgroup nxhtml nil - "Customization of nxhtml-mode." - :group 'nxml) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Features + +;; Fix-me: add help links (defvar nxhtml-req-features (let ((req-features '( @@ -128,6 +77,7 @@ (html-move "Moving files in web sites" "html-move.el" "0.31") (html-toc "Web site TOC" "html-toc.el" "0.4") (html-wtoc "Merge pages and web Site TOC" "html-wtoc.el" "0.2") + (html-write "Show as italic etc" "html-write.el" "0.6") "General" (mumamo "Multiple major modes in buffer" "mumamo.el" "0.73") (majmodpri "Major mode priorities" "majmodpri.el" "0.5") @@ -135,17 +85,29 @@ (fold-dwim "Folding on headers and tags" "fold-dwim.el" "1.3") (appmenu "General popup menu" "appmenu.el" "0.53") (appmenu-fold "Popup menu entries for folding" "appmenu-fold.el" "0.51" appmenu fold-dwim) + (winsize "Resizing and window handling" "winsize.el" "0.98") + (winsav "Save/restore for windows/frames" "winsav.el" "0.77") + (viper-tut "Viper try-out tutorial" "viper-tut.el" "0.2") + (ourcomments-util "Some minor utilities" "ourcomments-util.el" "0.25") "External applications / Emacs as dito" (as-external "Emacs as an external editor" "as-external.el" "0.5") (sex-mode "Send to EXternal program" "sex-mode.el" "0.71") + (freemind "Export/import freemind maps" "freemind.el" "0.60") + (hfyview "Print with browser/copy to html" "hfyview.el" "0.63") + (mozadd "Mirroring in Firefox" "mozadd.el" "0.2") "Images and Colors" (gimp "Edit images with GIMP" "gimp.el" "0.2") - (hexcolor "Hex color help functions" "hexcolor.el" "0.51") + (inlimg "Inline images" "inlimg.el" "0.7") + (css-color "Css color help functions" "css-color.el" "0.02") + (chart "Easy google charts" "chart.el" "0.2") "Fetching and using elisp from repositories" - (udev "Fetch and load from elisp repostories" "udev.el" "0.5") + (udev "Fetch and from elisp repostories" "udev.el" "0.5") (udev-cedet "CEDET fetcher and loader" "udev-cedet.el" "0.2") (udev-ecb "ECB fetcher and loader" "udev-ecb.el" "0.2") (udev-rinari "Rinari fetcher and loader" "udev-rinari.el" "0.2") + "Games and life" + (pause "Take a break! I wish you some fun!" "pause.el" "0.64") + (n-back "n-back game for fun and brain" "n-back.el" "0.5") ) )) req-features)) @@ -169,14 +131,12 @@ (defun nxhtml-feature-insert (ok msg) (put-text-property 0 (length msg) - 'face (list - (cons 'foreground-color - (if ok "RGB:00/cc/00" - "RGB:cc/00/00"))) + 'face (if ok font-lock-type-face font-lock-warning-face) msg) (insert msg)) (defun nxhtml-feature-check (feat-entry silent) + (require 'loadhist) (let ((feature (nth 0 feat-entry)) (description (nth 1 feat-entry)) (file (nth 2 feat-entry)) @@ -229,31 +189,37 @@ description file)))) ok)) +;; Fix-me: move help here from `nxhtml-mode'? + +;;;###autoload (defun nxhtml-features-check () "Check if external modules used by nXhtml are found." (interactive) - (switch-to-buffer-other-window (get-buffer-create "*nXhtml Optional Features Check*") t) - (help-mode) - (setq buffer-read-only t) - (let ((inhibit-read-only t)) - (erase-buffer) - (let ((s (concat "Elisp modules used by nXhtml version " nxhtml-menu:version ":"))) - (put-text-property 0 (length s) - 'face '( :weight bold :height 1.4) - s) - (insert s "\n\n")) - ;;(nxhtml-load-req-features) - (dolist (feat-entry nxhtml-req-features) - (if (stringp feat-entry) - (insert "==== " (propertize feat-entry 'face 'font-lock-comment-face 'face '(:weight bold)) "\n") - (nxhtml-feature-check feat-entry nil))) - (goto-char (point-min)) - (while (search-forward-regexp "[-a-zA-Z0-9]+\\.el" nil t) - (nxhtml-make-library-link - (match-beginning 0) - (match-end 0))) - (goto-char (point-min))) - (set-buffer-modified-p nil)) + (with-output-to-temp-buffer (help-buffer) + (help-setup-xref (list #'nxhtml-features-check) (interactive-p)) + (with-current-buffer (help-buffer) + (nxhtml-minor-mode 1) + (erase-buffer) + (let ((s (concat "Elisp modules used by nXhtml version " nxhtml-menu:version ":"))) + (put-text-property 0 (length s) + 'face '( :weight bold :height 1.4) + s) + (insert s "\n\n")) + (nxhtml-load-req-features) + (nxhtml-load-req-features) + (nxhtml-load-req-features) + (nxhtml-load-req-features) + (dolist (feat-entry nxhtml-req-features) + (if (stringp feat-entry) + (insert "==== " (propertize feat-entry 'face 'font-lock-comment-face 'face '(:weight bold)) "\n") + (nxhtml-feature-check feat-entry nil))) + (goto-char (point-min)) + (while (search-forward-regexp "[-a-zA-Z0-9]+\\.el" nil t) + (nxhtml-make-library-link + (match-beginning 0) + (match-end 0))) + (goto-char (point-min))) + (set-buffer-modified-p nil))) (defun nxhtml-all-features-found () (let ((all t)) @@ -264,59 +230,9 @@ (setq all nil)))) all)) -;;(defun nxhtml-nxml-fontify-attribute (att &optional namespace-declaration) -;;"Holds the original `nxml-fontify-attribute' function.") -;;(fset 'nxhtml-nxml-fontify-attribute (symbol-function 'nxml-fontify-attribute)) - - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; Folding etc. This part is taken from -;; http://www.emacswiki.org/cgi-bin/wiki/NxmlModeForXHTML and was -;; originally written by Peter Heslin. It requires fold-dwim.el. - -(when (featurep 'fold-dwim) - - (defun nxhtml-setup-for-fold-dwim () - (make-local-variable 'outline-regexp) - (setq outline-regexp "\\s *<\\([h][1-6]\\|html\\|body\\|head\\)\\b") - (make-local-variable 'outline-level) - (setq outline-level 'nxhtml-outline-level) - (outline-minor-mode 1) - (hs-minor-mode 1) - (add-to-list 'hs-special-modes-alist - '(nxhtml-mode - "" - "") - t)) - ((eq where 'in-xml-attr-val) - (let (attr - delimiter - val) - (save-excursion - (save-match-data - (re-search-forward "\\=[^<> \t\r\n\"]*" nil t))) - (let* ((name-start (match-beginning 1)) - (name-end (match-end 1)) - (colon (match-beginning 2)) - (attr (buffer-substring-no-properties name-start - (or colon name-end))) - (value-start (1+ (match-beginning 3))) - (tag (save-excursion - (when (search-backward-regexp "<[[:alpha:]]+" nil t) - (match-string 0)))) - (init (buffer-substring-no-properties value-start (point)))) - (setq delimiter (char-before value-start)) - (cond ((string= "encoding" attr) - ;; Give a default that works in browsers today - (setq val (nxhtml-coding-systems-complete - init - (symbol-name nxhtml-default-encoding)))) - ((string= "version" attr) - (setq val "1.0"))) - (when val - (insert val) - t) - ))) - ((or (memq where '(in-text - after-validation-header - in-empty-page))) - (rngalt-complete-tag-region-prepare) - (insert "<") - (condition-case err - (nxhtml-redisplay-complete) - (quit - (message "%s" (error-message-string err)) - (undo-start) - (undo-more 1) - (rngalt-complete-tag-region-cleanup))) - t) - (t - ;;(message "LAST TRY where=%s" (nxhtml-check-where))(sit-for 1) - nil) - )))) - -(defun nxhtml-img-tag-do-also () - (insert "alt=\"") - (rngalt-validate) - (insert (read-string "Alt attribute: ") - "\" ") - (insert "src=\"") - (rngalt-validate) - (let ((src (nxhtml-read-url nil nil 'nxhtml-image-url-predicate "Image"))) - (insert src) - (insert "\"") - (when (file-exists-p src) - (let ((sizes (image-size (create-image (expand-file-name src)) t))) - (insert - " width=\"" (format "%d" (car sizes)) "\"" - " height=\"" (format "%d" (cdr sizes)) "\"") - ))) - (unless (save-match-data (looking-at "[^<]\\{,200\\}>")) - (insert " />"))) - -(defun nxhtml-redisplay-complete () - (rngalt-validate) - (rng-cancel-timers) - (message "") - (redisplay t) - (nxml-complete) - (rng-activate-timers)) - -(defun nxhtml-read-from-minibuffer (prompt &optional - initial-contents keymap - read hist default-value - inherit-input-method) - (rng-cancel-timers) - (message "") - (let ((res (read-from-minibuffer prompt initial-contents keymap - read hist default-value inherit-input-method))) - (rng-activate-timers) - res)) - -(defun nxhtml-meta-tag-do-also () - (let ((type (popcmp-completing-read - "Type: " - '( - ;;"Refresh/Redirect" - "HTTP Message Headers" - "Robot Rules" - "Description for Search Engines" - )))) - (cond - ((string= type "Description for Search Engines") - (insert " name=\"Description\"") - (insert " content=\"") - (insert (nxhtml-read-from-minibuffer "Description: ")) - (insert "\" />")) - ((string= type "Robot Rules") - (insert " name=\"Robots\"") - (insert " content=\"") - (nxhtml-redisplay-complete) - (insert " />")) - ((string= type "HTTP Message Headers") - (insert " http-equiv=\"") - (nxhtml-redisplay-complete) - (insert " content=\"") - (insert (nxhtml-read-from-minibuffer "Content: ")) - (insert "\" />"))))) - -(defun nxhtml-style-tag-do-also () - (insert "type=\"text/css\"") - (insert " media=\"") - (nxhtml-redisplay-complete) - (insert ">") - (indent-according-to-mode) - (insert "\n/* ") - (indent-according-to-mode) - (insert "\n") - (end-of-line -2)) - -(defun nxhtml-script-tag-do-also () - (let ((type (popcmp-completing-read - "Type: " - '("Inlined" - "Linked")))) - (cond - ((string= type "Inlined") - (insert "type=\"text/javascript\">") - (indent-according-to-mode) - (insert "\n// ") - (indent-according-to-mode) - (insert "\n") - (indent-according-to-mode) - (end-of-line -1)) - ((string= type "Linked") - (insert "type=\"text/javascript\"") - (insert " src=\"") - (nxhtml-redisplay-complete) - (insert ">"))))) - -(defun nxhtml-link-tag-do-also () - (let ((type (popcmp-completing-read "Type: " - '( - "Other" - "Shortcut icon" - "Style sheet" - )))) - (cond - ((string= type "Style sheet") - (insert " rel=\"Stylesheet\" ") - (insert "type=\"text/css\" ") - (insert "href=\"") - (nxhtml-redisplay-complete) - (insert " media=\"") - (nxhtml-redisplay-complete) - (insert " />")) - ((string= type "Shortcut icon") - (insert " rel=\"Shortcut Icon\" ") - (insert "href=\"") - (nxhtml-redisplay-complete) - (insert " />")) - (t - (insert " ") - (nxhtml-redisplay-complete) - )))) - -(defun nxhtml-input-tag-do-also () - (insert " ") - (rngalt-validate) - ;; type= - (insert "type=\"") - (nxhtml-redisplay-complete) - (insert " ") - - (let* ((choice (save-match-data - (when (looking-back "type=\"\\(.*\\)\" ") - (match-string 1))))) - ;;(insert "type=\"" choice "\" ") - (rngalt-validate) - ;;(message "choice=%s" choice)(sit-for 2) - ;; name= - (when (member choice '("button" "checkbox" "file" "hidden" "image" - "password" "radio" "text")) - (insert "name=\"" - (read-string "Name (name): ") - "\" ") - (rngalt-validate)) - ;; checked= - (when (member choice '("checkbox" "radio")) - (when (y-or-n-p "Checked? (checked): ") - (insert "checked=\"checked\" ") - (rngalt-validate))) - ;; disabled= - (unless (string= choice "hidden") - (unless (y-or-n-p "Enabled? : ") - (insert "disabled=\"disabled\" ") - (rngalt-validate))) - ;; readonly= - (when (string= choice "text") - (when (y-or-n-p "Readonly? (readonly): ") - (insert "readonly=\"readonly\" ")) - (rngalt-validate)) - (when (string= choice "file") - ;; accept= - (require 'mailcap) - (condition-case err - (let ((prompt (concat - "Accept mime type, RET to stop (" - "C-g to skip" - "): ")) - (mime " ") - mimes - (types (when (boundp 'mailcap-mime-extensions) - (mapcar (lambda (elt) - (cdr elt)) - mailcap-mime-extensions)))) - (while (< 0 (length mime)) - (setq mime - (if types - (completing-read prompt types) - (read-string prompt))) - (when (< 0 (length mime)) - (if mimes - (setq mimes (concat mimes "," mime)) - (setq mimes mime)))) - (when (and mimes - (< 0 (length mimes))) - (insert "accept=\"" mimes "\" "))) - (quit (message "Skipped accept attribute"))) - (rngalt-validate)) - (when (string= choice "image") - ;; alt= - (insert "alt=\"") - (rngalt-validate) - (insert (read-string "Alt attribute: ") - "\" ") - (rngalt-validate) - ;; src= - (insert "src=\"") - (rngalt-validate) - (let ((src (nxhtml-read-url nil nil 'nxhtml-image-url-predicate "Image"))) - (insert src) - (insert "\" ")) - (rngalt-validate)) - ;; value= - (cond - ((member choice '("button" "reset" "submit")) - (nxhtml-do-also-value "Label")) - ((member choice '("checkbox" "radio")) - (nxhtml-do-also-value "Result")) - ((member choice '("hidden" "password" "text")) - (nxhtml-do-also-value "Value")) - ) - (insert "/>") - ;;(message "type=%s" choice)(sit-for 2) - )) - -(defun nxhtml-do-also-value (label) - (let ((v (read-string (concat label " (value): ")))) - (when (and v - (< 0 (length v))) - (insert " value=\"" v "\" ")))) - -(defun nxhtml-form-tag-do-also () - (insert "action=\"") - (rngalt-validate) - (let ((src (nxhtml-read-url nil nil nil "Action"))) - (insert src "\" ")) - ) - -(defconst nxhtml-complete-tag-do-also - '(("a" - (lambda () - (insert " href=\"") - (rngalt-validate) - (insert (nxhtml-read-url t)) - (insert "\""))) - ("form" nxhtml-form-tag-do-also) - ("img" nxhtml-img-tag-do-also) - ("input" nxhtml-input-tag-do-also) - ("link" nxhtml-link-tag-do-also) - ("script" nxhtml-script-tag-do-also) - ("style" nxhtml-style-tag-do-also) - ("meta" nxhtml-meta-tag-do-also) - ) - "List of functions to call at tag completion. -Each element of the list have the form - - \(TAG-NAME TAG-FUN) - -If `nxhtml-tag-do-also' is non-nil then TAG-FUN is called after -by `nxml-complete' (with the special setup of this function for -`nxhtml-mode') when completing a tag with the name TAG-NAME. - -The list is handled as an association list, ie only the first -occurence of a tag name is used.") - - -(defun nxhtml-complete-tag-do-also (tag) - ;; First required attributes: - (let ((tagrec (assoc tag nxhtml-complete-tag-do-also))) - (when tagrec - (funcall (cadr tagrec)))) - ) - -(defun nxhtml-check-tag-do-also () - (when nxhtml-tag-do-also - (nxhtml-turn-onoff-tag-do-also t))) - -(defun nxhtml-turn-onoff-tag-do-also (on) - (add-hook 'nxhtml-mode-hook 'nxhtml-check-tag-do-also) - (dolist (b (buffer-list)) - (when (with-current-buffer b - (eq major-mode 'nxhtml-mode)) - (if on - (progn - (add-hook 'rngalt-complete-tag-hooks 'nxhtml-complete-tag-do-also t t) - ) - (remove-hook 'rngalt-complete-tag-hooks 'nxhtml-complete-tag-do-also t) - )))) - -(define-toggle nxhtml-tag-do-also t - "When completing tag names do some more if non-nil. -For some tag names additional things can be done at completion to -speed writing up. For example for an tag `nxhtml-mode' -can prompt for src attribute and add width and height attributes -if this attribute points to a local file. - -You can add additional elisp code for completing to -`nxhtml-complete-tag-do-also'." - :set (lambda (symbol value) - (set-default symbol value) - (nxhtml-turn-onoff-tag-do-also value)) - :group 'nxhtml) - -(defun nxhtml-can-insert-page-here () - (and (not nxhtml-validation-header-mode) - (= 1 (point)) - (or (= 0 (buffer-size)) - (save-restriction - (widen) - (save-match-data - (looking-at (rx buffer-start - (0+ space) - buffer-end))))))) - -(defun nxhtml-complete-first-try () - (when (nxhtml-can-insert-page-here) - (nxhtml-empty-page-completion))) - -(defun nxhtml-completing-read-tag (prompt - table - &optional predicate require-match - initial-input hist def inherit-input-method) - (popcmp-completing-read prompt - table - predicate require-match - initial-input hist def inherit-input-method - nxhtml-help-tag - nxhtml-tag-sets)) - -(defun nxhtml-add-required-to-attr-set (tag) - (let ((missing (when tag - (rngalt-get-missing-required-attr - (nxthml-is-single-tag tag))))) - (if (not missing) - nxhtml-attr-sets - (cons (cons "Required" missing) - nxhtml-attr-sets)))) - -(defun nxhtml-get-tag-specific-attr-help (tag) - (append (cdr (assoc tag nxhtml-help-attribute-name-tag)) nxhtml-help-attribute-name) - ) - -(defconst nxhtml-in-start-tag-regex -;;(defconst rng-in-start-tag-name-regex - (replace-regexp-in-string - "w" - xmltok-ncname-regexp - ;; Not entirely correct since < could be part of attribute value: - "<\\(w\\(?::w?\\)?\\)+ [^<]*" - t - t)) - -(defun nxhtml-completing-read-attribute-name (prompt - table - &optional predicate require-match - initial-input hist def inherit-input-method) - (let* ((tag (save-match-data - ;;(when (looking-back "<\\([a-z1-6]+\\) [^<]*") - (when (looking-back nxhtml-in-start-tag-regex) - (match-string 1)))) - (attr-sets (nxhtml-add-required-to-attr-set tag)) - (help-attr (nxhtml-get-tag-specific-attr-help tag)) - ) - (popcmp-completing-read prompt - table - predicate require-match - initial-input hist def inherit-input-method - help-attr - attr-sets))) - -(defun nxhtml-completing-read-attribute-value (prompt - table - &optional predicate require-match - initial-input hist def inherit-input-method) - (let (val) - (if table - (setq val (popcmp-completing-read prompt table - predicate require-match - initial-input hist def inherit-input-method)) - (let* (init - delimiter - (lt-pos (save-excursion (search-backward "<" nil t))) - (in-attr-val - (save-excursion - (re-search-backward rng-in-attribute-value-regex lt-pos t))) - (in-xml-attr-val - (unless in-attr-val - (save-excursion - (re-search-backward nxhtml-in-xml-attribute-value-regex lt-pos t)))) - ) - (when (or in-attr-val in-xml-attr-val) - ;;(save-match-data (save-excursion (re-search-forward "\\=[^<> \t\r\n\"]*" nil t))) - (let* ((name-start (match-beginning 1)) - (name-end (match-end 1)) - (colon (match-beginning 2)) - (attr (buffer-substring-no-properties name-start - (or colon name-end))) - (value-start (1+ (match-beginning 3))) - tag-start-end - (tag (save-excursion - (when (search-backward-regexp "<[[:alpha:]]+" nil t) - (setq tag-start-end (match-end 0)) - (match-string-no-properties 0))))) - (setq init (buffer-substring-no-properties value-start (point))) - (setq delimiter (char-before value-start)) - (if in-xml-attr-val - (error "in-xml-attr-val should not be true here!") - ;; (cond ((string= "encoding" attr) - ;; ;; Give a default that works in browsers today - ;; (setq val (nxhtml-coding-systems-complete - ;; init - ;; (symbol-name nxhtml-default-encoding)))) - ;; ((string= "version" attr) - ;; (setq val "1.0"))) - (cond ((string= "rel" attr) - (cond ((string= " - - - - Fictive XHTML Validation Header - - -" - ) - ("head-iso-8859-1" . - " - - - -" - ) - ("html-iso-8859-1" . - " - - -" - ) -;; ("doctype-iso-8859-1" . -;; " -;; -;; " -;; ) -;; ("xml-iso-8859-1" . -;; " -;; " -;; ) - - ("body-utf-8" . - " - - - - Fictive XHTML Validation Header - - -" - ) - ("head-utf-8" . - " - - - -" - ) - ("head-closed-utf-8" . - " - - - - - -" - ) - ("html-utf-8" . - " - - -" - ) -;; ("doctype-utf-8" . -;; " -;; -;; " -;; ) -;; ("xml-utf-8" . -;; " -;; " -;; ) - ) - "Fictive XHTML validation headers. -Used by `nxhtml-set-validation-header'." - :type '(alist :key-type string :value-type string) - :group 'nxhtml) - -(defcustom nxhtml-default-validation-header nil - "Default Fictive XHTML validation header. -Must be nil or one of the key values in -`nxhtml-validation-headers'." - :type 'string - :set (lambda (sym val) - (if (or (null val) - (assoc val nxhtml-validation-headers)) - (set-default sym val) - (lwarn 'nxhtml-default-validation-header - :warning "There is no Fictive XHTML Validation Header named %s" val))) - :group 'nxhtml) - -(defun nxhtml-must-have-validation-headers () - (unless nxhtml-validation-headers - (error - "No XHTML validation headers. Please customize nxhtml-validation-headers."))) - -(defvar nxhtml-set-validation-header-hist nil) - -(defvar nxhtml-current-validation-header nil) -(make-variable-buffer-local 'nxhtml-current-validation-header) -(put 'nxhtml-current-validation-header 'permanent-local t) - -(defcustom nxhtml-guess-validation-header-alist - ;;(rx line-start (0+ blank) "" . "head-closed-utf-8") - ("^[[:blank:]]* nh 1) - (completing-read "XHTML validation header: " - nxhtml-validation-headers - nil - t - default - nxhtml-set-validation-header-hist) - (if (not (y-or-n-p "Only one XHTML validation header is defined. Define more? ")) - default - (customize-option 'nxhtml-validation-headers) - 'adding))))) - ;;(lwarn 'svh2 :warning "key=%s" key) - (or key - (setq key (nxhtml-get-default-validation-header)) - (setq key (cons 'schema "XHTML"))) - (unless (eq key 'adding) - (setq nxhtml-current-validation-header key) - (nxhtml-validation-header-mode 1) - (nxhtml-apply-validation-header))) - -(defun nxhtml-apply-validation-header () - (when nxhtml-current-validation-header - (setq rngalt-major-mode - (if mumamo-multi-major-mode - (mumamo-main-major-mode) - major-mode)) - (let* ((key nxhtml-current-validation-header) - (rec (unless (listp key) - (assoc key nxhtml-validation-headers))) - (header (cdr rec))) - (if (listp key) - (let ((schema-file (rng-locate-schema-file (cdr key)))) - (unless schema-file - (error "Could not locate schema for type id `%s'" key)) ;type-id)) - (rng-set-schema-file-1 schema-file)) - (rngalt-set-validation-header header) - )))) - -(defun nxhtml-update-validation-header () - "Update the validation header in the buffer as needed." - (interactive) - (let ((mode-on nxhtml-validation-header-mode)) - (when mode-on (nxhtml-validation-header-mode 0)) - (setq nxhtml-current-validation-header nil) - (when mode-on (nxhtml-validation-header-mode 1)))) - -;;;###autoload -(define-minor-mode nxhtml-validation-header-mode - "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 - mumamo is used, see `nxhtml-validation-header-if-mumamo' for - further information." - :global nil - :lighter " VH" - :group 'nxhtml - (if nxhtml-validation-header-mode - (progn - (unless nxhtml-current-validation-header - (setq nxhtml-current-validation-header - (nxhtml-get-default-validation-header))) - ;;(message "nxhtml-current-validation-header=%s" nxhtml-current-validation-header) - (if nxhtml-current-validation-header - (progn - (nxhtml-apply-validation-header) - (add-hook 'change-major-mode-hook 'nxhtml-vhm-change-major nil t) - (when (featurep 'mumamo) - (add-hook 'mumamo-change-major-mode-hook 'nxhtml-vhm-mumamo-change-major nil t) - (add-hook 'mumamo-after-change-major-mode-hook 'nxhtml-vhm-mumamo-after-change-major nil t))) - (run-with-idle-timer 0 nil 'nxhtml-validation-header-empty (current-buffer)))) - (rngalt-set-validation-header nil) - (setq nxhtml-current-validation-header nil) - (remove-hook 'after-change-major-mode-hook 'nxhtml-vhm-after-change-major t) - (when (featurep 'mumamo) - (remove-hook 'mumamo-change-major-mode-hook 'nxhtml-vhm-mumamo-change-major t) - (remove-hook 'mumamo-after-change-major-mode-hook 'nxhtml-vhm-mumamo-after-change-major t)))) - -(defun nxhtml-vhm-change-major () - "Turn off `nxhtml-validation-header-mode' after change major." - ;;(message "nxhtml-vhm-change-major here") - (unless mumamo-multi-major-mode - (setq nxhtml-current-validation-header nil)) - (run-with-idle-timer 0 nil 'nxhtml-validation-header-empty (current-buffer))) -(put 'nxhtml-vhm-change-mode 'permanent-local-hook t) - -(defun nxhtml-recheck-validation-header () - "Just turn off and on again `nxhtml-validation-header-mode'. -This will adjust the XHTML validation to the code currently in -the buffer." - (interactive) - (nxhtml-validation-header-mode -1) - (nxhtml-validation-header-mode 1)) - -(defun nxhtml-validation-header-empty (buffer) - "Turn off validation header mode. -This is called because there was no validation header." - (with-current-buffer buffer - (unless nxhtml-current-validation-header - ;;(message "nxhtml-validation-header-empty") - (nxhtml-validation-header-mode -1) - ;;(message "No validation header was needed") - ))) - -(defun nxhtml-turn-on-validation-header-mode () - "Turn on `nxhtml-validation-header-mode'." - (nxhtml-validation-header-mode 1)) - -;;(defvar nxhtml-browseable-buffer-name "*nXhtml Browsing Buffer*") -(defvar nxhtml-browseable-buffer-file "~/.temp-nxhtml-browse.htm") -;; Fix-me: Handle base href here! -(defun nxhtml-save-browseable-temp-file (start end &optional doit-anyway) - "Return a temporary file for viewing in web browser." - ;; When using this either region should be active or there should be - ;; a validation header or both. - (or doit-anyway - (and start end) ;mark-active - (and nxhtml-validation-header-mode - nxhtml-current-validation-header) - (error "Neither region nor validation header")) - (save-excursion - (let ((curbuf (current-buffer)) - (view-buffer (find-file-noselect nxhtml-browseable-buffer-file)) - header - content) - ;; Get header and content - (save-restriction - (widen) - (setq header - (if nxhtml-validation-header-mode - (let* ((key nxhtml-current-validation-header) - (rec (unless (listp key) - (assoc key nxhtml-validation-headers))) - (header (cdr rec))) - header) - (goto-char (point-min)) - (save-match-data - (let ((body (re-search-forward "]*>"))) - (if body - (buffer-substring-no-properties (point-min) (match-end 0)) - ""))))) - (setq content - (if start - (buffer-substring-no-properties start end) - (buffer-substring-no-properties (point-min) (point-max)))) - ) - ;; Switch to view buffer - (set-buffer view-buffer) -;; (unless buffer-file-name -;; (set-visited-file-name nxhtml-browseable-buffer-file) -;; (rename-buffer nxhtml-valhead-view-buffer-name)) - (erase-buffer) - (insert header content) - ;;(when (fboundp 'emacsw32-eol-set) (emacsw32-eol-set nil)) - (nxhtml-mode) - (save-buffer) - ;;(current-buffer) - (kill-buffer view-buffer) - (expand-file-name nxhtml-browseable-buffer-file) - ))) - - -(defun nxhtml-vhm-mumamo-change-major () - (put 'rngalt-validation-header 'permanent-local t) - (put 'nxhtml-validation-header-mode 'permanent-local t) - (put 'nxhtml-current-validation-header 'permanent-local t) - (put 'nxhtml-validation-header-mode-major-mode 'permanent-local t) - (setq nxhtml-validation-header-mode-major-mode mumamo-set-major-running) - ) - -(defun nxhtml-vhm-mumamo-after-change-major () - (put 'rngalt-validation-header 'permanent-local nil) - (put 'nxhtml-validation-header-mode 'permanent-local nil) - (put 'nxhtml-current-validation-header 'permanent-local nil) - (put 'nxhtml-validation-header-mode-major-mode 'permanent-local nil) - ) - -(defcustom nxhtml-validation-headers-check 'html - "Defines what check the function with the same name does. -The function returns true if the condition here is met." - :type '(choice :tag "Add Fictive XHTML Validation Header if:" - (const :tag "If buffer contains html" html) - (const :tag "If buffer contains html or is empty" html-empty)) - :group 'nxhtml) - -;; (defun nxhtml-validation-headers-check (buffer) -;; "Return non-nil if buffer contains a html tag or is empty. -;; This is for use with `nxhtml-validation-header-filenames'. - -;; The variable `nxhtml-validation-headers-check' determines how the -;; check is made." -;; (if (= 0 (buffer-size buffer)) -;; (eq 'html-empty nxhtml-validation-headers-check) -;; (save-match-data -;; (save-restriction -;; (let ((here (point)) -;; (html nil)) -;; (goto-char (point-min)) -;; (setq html (re-search-forward "" nil t)) -;; (goto-char here) -;; html))))) - -;; (defcustom nxhtml-validation-header-filenames -;; '( -;; ("\.php\\'" nxhtml-validation-headers-check) -;; ("\.rhtml\\'" nxhtml-validation-headers-check) -;; ("\.jsp\\'" nxhtml-validation-headers-check) -;; ) -;; "Alist for turning on `nxhtml-validation-mode'. -;; The entries in the list should have the form - -;; \(FILE-REGEXP CHECK-FUNCION) - -;; If buffer file name matches the regexp FILE-REGEXP and the -;; function CHECK-FUNCTION returns non-nil when called with the -;; buffer as an argument \(or CHECK-FUNCTION is nil) then -;; `nxhtml-global-validation-header-mode' will turn on -;; `nxhtml-validation-header-mode' in buffer. - -;; The function `nxhtml-validation-headers-check' may be a useful -;; value for CHECK-FUNCTION. - -;; See also `nxhtml-maybe-turn-on-validation-header'." -;; :type '(alist :key-type regexp :tag "File name regexp" -;; :value-type (group (choice (const :tag "No more check" nil) -;; (function :tag "Check buffer with")))) -;; :group 'nxhtml) - - - -;; (defun nxhtml-maybe-turn-on-validation-header () -;; "Maybe turn on `nxhtml-validation-header-mode' in buffer. -;; This is called by `nxhtml-global-validation-header-mode'. - -;; See `nxhtml-validation-header-filenames' for how the check -;; is made." -;; (or (and (or (and mumamo-mode -;; (eq (mumamo-main-major-mode) 'nxhtml-mode)) -;; (eq major-mode 'nxhtml-mode)) -;; rngalt-validation-header -;; nxhtml-current-validation-header -;; nxhtml-validation-header-mode -;; (progn -;; ;;(lwarn 'maybe :warning "quick, buffer=%s" (current-buffer)) -;; (nxhtml-validation-header-mode 1) -;; t)) -;; (when (buffer-file-name) -;; (unless (or ;;nxhtml-validation-header-mode -;; (minibufferp (current-buffer)) -;; (string= " " (substring (buffer-name) 0 1)) -;; (string= "*" (substring (buffer-name) 0 1)) -;; ) -;; (when (catch 'turn-on -;; (save-match-data -;; (dolist (rec nxhtml-validation-header-filenames) -;; (when (string-match (car rec) (buffer-file-name)) -;; (let ((fun (nth 1 rec))) -;; (if (not fun) -;; (progn -;; ;;(lwarn 't :warning "matched %s to %s, nil" (car rec) (buffer-file-name)) -;; (throw 'turn-on t)) -;; (when (funcall fun (current-buffer)) -;; ;;(lwarn 't :warning "matched %s to %s" (car rec) (buffer-file-name)) -;; (throw 'turn-on t)))))))) -;; ;;(lwarn 't :warning "turn on %s, buffer=%s" major-mode (current-buffer)) -;; (nxhtml-validation-header-mode 1)))))) - - -;; ;; Fix-me: Is this really the way to do it? Would it not be better to -;; ;; tie this to mumamo-mode in the turn on hook there? After all -;; ;; validation headers are probably not used unless mumamo-mode is on. -;; (define-globalized-minor-mode nxhtml-global-validation-header-mode -;; nxhtml-validation-header-mode -;; nxhtml-maybe-turn-on-validation-header -;; :group 'nxhtml) -;; ;; The problem with global minor modes: -;; (when (and nxhtml-global-validation-header-mode -;; (not (boundp 'define-global-minor-mode-bug))) -;; (nxhtml-global-validation-header-mode 1)) - - -(defcustom nxhtml-validation-header-mumamo-modes - '(nxhtml-mode) - "Main major modes for which to turn on validation header. -Turn on Fictive XHTML Validation Header if main major mode for the -used mumamo chunk family is any of those in this list. - -See `mumamo-set-chunk-family' for information about mumamo chunk -families." - :type '(repeat (function :tag "Main major mode in mumamo")) - :group 'nxhtml) - -(defun nxhtml-add-validation-header-if-mumamo () - "Maybe turn on validation header. -See `nxhtml-validation-header-if-mumamo' for more information." - ;;(nxhtml-validation-headers-check (current-buffer)) - (when (memq (mumamo-main-major-mode) nxhtml-validation-header-mumamo-modes) - (nxhtml-validation-header-mode 1))) - -(define-toggle nxhtml-validation-header-if-mumamo nil - "Add a fictive validation header when mumamo is used. -If this variable is t then add a Fictive XHTML Validation Header -\(see `nxhtml-validation-header-mode') in buffer when mumamo is -used. However do this only if `mumamo-main-major-mode' is one of -those in `nxhtml-validation-header-mumamo-modes'. - -Changing this variable through custom adds/removes the function -`nxhtml-add-validation-header-if-mumamo' to -`mumamo-turn-on-hook'." - :set '(lambda (sym val) - (set-default sym val) - (if val - (add-hook 'mumamo-turn-on-hook 'nxhtml-add-validation-header-if-mumamo) - (remove-hook 'mumamo-turn-on-hook 'nxhtml-add-validation-header-if-mumamo))) - :group 'nxhtml) - -(defun nxhtml-warnings-are-visible () - (get 'rng-error 'face)) - -(defvar nxhtml-old-rng-error-face nil) -(defun nxhtml-toggle-visible-warnings () - "Toggle the red underline on validation errors. -Those can be quite disturbing when using mumamo because there -will probably be many validation errors in for example a php -buffer, since unfortunately the validation routines in -`rng-validate-mode' from `nxml-mode' tries to validate the whole -buffer as XHTML. - -Also, because of a \(normally unimportant) bug in Emacs 22, -the red underline that marks an error will sometimes span several -lines instead of just marking a single character as it -should. \(This bug is a problem with overlays in Emacs 22.)" - (interactive) - (let ((face (get 'rng-error 'face))) - (if face - (progn - (setq nxhtml-old-rng-error-face (get 'rng-error 'face)) - (put 'rng-error 'face nil)) - (put 'rng-error 'face nxhtml-old-rng-error-face)))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Bug corrections -;; (defun nxml-indent-line () -;; "Indent current line as XML." -;; (let ((indent (nxml-compute-indent)) -;; (from-end (- (point-max) (point)))) -;; (when indent -;; (beginning-of-line) -;; (let ((bol (point))) -;; (skip-chars-forward " \t") -;; ;; There is a problem with some lines, try a quick fix: -;; (when (and (= 0 indent) -;; (not (eq (char-after) ?<))) -;; (save-excursion -;; (save-match-data -;; (when (re-search-backward "^<" nil t) -;; (when (search-forward " ") -;; (setq indent (current-column)))))) -;; (when (= 0 indent) -;; (setq indent nxml-child-indent))) -;; ;; And sometimes nxml-compute-indent get very upset, check for -;; ;; that: -;; (let ((here (point))) -;; (beginning-of-line 0) -;; (back-to-indentation) -;; (when (and (= indent (current-column)) -;; (eq (char-after) ?\")) -;; (setq indent 0)) -;; (goto-char here)) -;; (unless (= (current-column) indent) -;; (delete-region bol (point)) -;; (indent-to indent))) -;; (when (> (- (point-max) from-end) (point)) -;; (goto-char (- (point-max) from-end)))))) - - -;; FIX-ME: untag should be in nxml-mode.el since it is in no way -;; specific to nxhtml-mode, but I do not want to change nxml-mode.el -;; at the moment. - -(defcustom nxml-untag-select 'yes - "Decide whether to select an element untagged by `nxml-untag-element'. -If this variable is 'yes the element is selected after untagging -the element. The mark is set at the end of the element and point -at the beginning of the element. - -If this variable is 'no then the element is not selected and -point is not moved. If it is 'ask the user is asked what to do." - :type '(choice (const :tag "Yes" yes) - (const :tag "No" no) - (const :tag "Ask" ask)) - :group 'nxml) - -(defun nxml-untag-element (arg) - "Remove start and end tag from current element. -The mark is by default set to the end of the former element and -point is moved to the beginning. Mark is also activated so that -it is easy to surround the former element with a new tag. - -Whether to select the old element is controlled by -`nxml-untag-select'. The meaning of the values 'yes and 'no for -this variable is flipped by using a universal argument. - -Note: If you want to `undo' the untag and you use -`transient-mark-mode' then you must first do something so that -the region is not highlighted (for example C-g)." - (interactive "*P") - (let ((here (point-marker)) - el-start - el-start-end - el-end - el-end-end - (select t)) - (nxml-backward-up-element) - (setq el-start (point)) - (nxml-forward-balanced-item) - (setq el-start-end (point)) - (goto-char el-start) - (nxml-forward-element) - (setq el-end-end (point-marker)) - (nxml-backward-single-balanced-item) - (setq el-end (point)) - (delete-region el-end el-end-end) - (delete-region el-start el-start-end) - ;; Select the element or not? - (if (eq nxml-untag-select 'ask) - (setq select (y-or-n-p "Select the old element? ")) - (when (eq nxml-untag-select 'no) - (setq select nil)) - (when arg - (setq select (not select)))) - (if (not select) - (goto-char here) - (goto-char el-end-end) - (push-mark nil t t) - (setq mark-active t) - (setq deactivate-mark nil) - (goto-char el-start)))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Misc (defun nxhtml-update-mark-today (date-str) "Update marks for today's date. @@ -2882,213 +325,9 @@ The mark has this form (submatch (0+ anything)) "") nil t) - (replace-match date-str nil nil nil 1)) - (goto-char here))) - -(defun nxhtml-rollover-insert-2v () - "Insert CSS rollover images. -The upper half of the image will be used when mouse is out and -the lower half when mouse is over the image. - -Only CSS is used for the rollover. The CSS code is written to the -header part of the file if possible, otherwise it is copied to -the kill ring/clipboard. - -The CSS code is built from a template file and the image size. - -This might be used for example for creating a menu with -alternatives vertically or horizontally. - -Usage example: - - If you want to make a small button style menu with images you - can start like this: - -
-
+ (replace-match date-str nil nil nil 1)))) - Then put point at the X above (this is just a mark, should not - be in your code) and call this function. - It will add some CSS code to in the header of your file. You - may want to tweak this a little bit, see below (or place it - somewhere else). It may look like this: - - #mylinks a { - /* Image */ - display: block; - background: transparent url(\"img/mybutton.png\") 0 0 no-repeat; - overflow: hidden; - width: 200px; - /* Text placement and size, etc */ - text-align: center; - /* You may need to change top and bottom padding depending - on font size. */ - padding-top: 11px; - font-size: 12px; - padding-bottom: 9px; - text-decoration: none; - white-space: nowrap; - border: none; - } - #mylinks a:hover { - background-position: 0 -35px; - } - #mylinks li { - display: inline; - padding: 0; - margin: 0; - float: none; - } - -For an example of usage see the file nxhtml.html that comes with -nXhtml and can be opened from the nXhtml menu under - - nXhtml / nXhtml Help and Setup / nXhtml version nn Overview" - (interactive) -;; Fix-me: not quite ready yet, but should work OK." - (save-excursion - (let* ((tag (progn - (search-forward ">" nil t) - (unless (re-search-backward (rx "<" - (1+ (any "a-zA-Z:")) - (1+ (not (any ">"))) - " id=\"" - (submatch (+? anything)) - "\"") - nil t) - (error "Can't find tag with id backwards")) - (match-string-no-properties 0))) - (tagid (match-string-no-properties 1)) - (tagovl (let ((ovl (make-overlay - (match-beginning 0) (match-end 0)))) - (overlay-put ovl 'face 'highlight) - ovl)) - (head-end (save-excursion (search-backward "
\n" - css - "\n\n") - (select-window this-window)) - (kill-new css) - (message "No place to insert CSS, copied to clipboard instead")))) - (delete-overlay tagovl) - )))) - -;; Fix-me: image border 0 -;; Fix-me: SSI -;; Fix-me: Better a tag completion, target etc. -;; Fix-me: image map - is that possible now? -;; Fix-me: Special chars - completing on &? Or popup? Use nxml-insert-named-char -;; Fix-me: Quick table insert? A form? -;; Fix-me: Quick object insert? (applet is depreceated) -;; Fix-me: Better meta insert? Quick meta? -;; Fix-me: Quick div! Better div completion with position: static, -;; relative, absolute and fixed - with some explanations. -;; Fix-me: Quick hr? -;; Fix-me: Import CSS? Export CSS? -;; Fix-me: Use nxhtml-js.el? -;; Fix-me: Scroll bar colors etc? See 1stPage. -;; body { -;; scrollbar-arrow-color: #FF6699; -;; scrollbar-3dlight-color: #00FF33; -;; scrollbar-highlight-color: #66FFFF; -;; scrollbar-face-color: #6699FF; -;; scrollbar-shadow-color: #6633CC; -;; scrollbar-darkshadow-color: #660099; -;; scrollbar-track-color: #CC6633; -;; } -;; Fix-me: Built with nXhtml button! -;; Fix-me: More quick menus: http://www.cssplay.co.uk/menus/ - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (provide 'nxhtml) - +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; nxhtml.el ends here diff --git a/elpa-to-submit/nxhtml/nxhtml/nxhtml-js.el b/elpa-to-submit/nxhtml/nxhtml/nxhtmljs.el similarity index 87% rename from elpa-to-submit/nxhtml/nxhtml/nxhtml-js.el rename to elpa-to-submit/nxhtml/nxhtml/nxhtmljs.el index 8eed104bcb..b7f3a67f9f 100644 --- a/elpa-to-submit/nxhtml/nxhtml/nxhtml-js.el +++ b/elpa-to-submit/nxhtml/nxhtml/nxhtmljs.el @@ -1,9 +1,9 @@ ;;; nxhtml-js.el --- Javascript support functions ;; ;; Author: Lennart Borgman (lennart O borgman A gmail O com) -;; Created: Sat Apr 28 01:51:17 2007 -;; Version: 0.0 -;; Lxast-Updated: +;; Created: Sat Apr 28 2007 +;; Version: 0.1 +;; Last-Updated: 2008-12-28 Sun ;; URL: ;; Keywords: ;; Compatibility: @@ -44,6 +44,9 @@ ;; ;;; Code: +(eval-when-compile (require 'nxhtml)) +(eval-when-compile (require 'nxhtml-mode)) + (defun nxhtml-add-link (type src silent) ;; (catch 'exit @@ -122,13 +125,23 @@ files that comes with nXhtml are linked to directly." (goto-char (point-min)) (when (search-forward nxhtml-smoothgallery-mark nil t) (back-to-indentation) - (when (looking-at (rx - "
"))) - ) - "\">" (eval nxhtml-smoothgallery-mark) - )) + (when (looking-at + ;; (rx + ;; "
"))) + ;; ) + ;; "\">" (eval nxhtml-smoothgallery-mark)) + ;;(concat "
]+\\)\">" nxhtml-smoothgallery-mark) + (rx-to-string + `(and + "
"))) + ) + "\">" + ,nxhtml-smoothgallery-mark)) + ) (cons (copy-marker (match-beginning 0)) (buffer-substring-no-properties @@ -143,11 +156,11 @@ files that comes with nXhtml are linked to directly." (search-forward jsmark nil t))) (defun nxhtml-smoothgallery-add (point-name) - (interactive (list - (let ((old-name (nxhtml-smoothgallery-find))) - (if old-name - old-name - "myGallery")))) + (interactive "i") + (unless point-name + (setq point-name (nxhtml-smoothgallery-find)) + (unless point-name + (setq point-name "myGallery"))) (let ((name (if (consp point-name) (cdr point-name) point-name)) @@ -195,7 +208,7 @@ files that comes with nXhtml are linked to directly." (unless thumbsrc (setq thumbsrc imgsrc)) (let ((gallery (nxhtml-smoothgallery-find))) (unless gallery - (setq gallery (nxhtml-smoothgallery-add))) + (setq gallery (nxhtml-smoothgallery-add nil))) (goto-char (car gallery)) (end-of-line) (insert-and-indent " diff --git a/elpa-to-submit/nxhtml/nxhtml/nxml-where.el b/elpa-to-submit/nxhtml/nxhtml/nxml-where.el index ba10c889fd..0625cb8a56 100644 --- a/elpa-to-submit/nxhtml/nxhtml/nxml-where.el +++ b/elpa-to-submit/nxhtml/nxhtml/nxml-where.el @@ -48,113 +48,108 @@ ;; 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. +(eval-when-compile (require 'cl)) +(eval-when-compile (require 'mumamo)) (eval-when-compile - (require 'cl) (unless (featurep 'nxhtml-autostart) (let ((efn (expand-file-name "../autostart.el"))) (load efn)) (require 'nxml-mode))) -(defvar nxml-where-once-update-timer nil) -(make-variable-buffer-local 'nxml-where-once-update-timer) -(put 'nxml-where-once-update-timer 'permanent-local t) +(defun nxml-where-error-message (format-string &rest args) + (with-current-buffer (get-buffer-create "*Messages*") + (let ((start (1+ (point-max)))) + (apply 'message format-string args) + (goto-char (point-max)) + (backward-char) + ;; fix-me: got some error here: + ;;(put-text-property start (point) 'face 'highlight) + ))) + +(defvar nxml-where-last-point nil + "Where point was last time marking finished. +Ie we should not restart marking if point is still there and no +changes have occured.") +(make-variable-buffer-local 'nxml-where-last-point) +(put 'nxml-where-last-point 'permanent-local t) -(defun nxml-where-cancel-once () - (when (timerp nxml-where-once-update-timer) - (cancel-timer nxml-where-once-update-timer) - (setq nxml-where-once-update-timer nil))) +(defvar nxml-where-last-finished nil + "Non-nil then marking is finished.") +(make-variable-buffer-local 'nxml-where-last-finished) +(put 'nxml-where-last-finished 'permanent-local t) -(defun nxml-where-start-second-in-timer (next-point buffer) - ;;(message "start second") - (condition-case err - (setq nxml-where-once-update-timer - (run-with-idle-timer idle-update-delay - nil - 'nxml-where-do-marking-in-timer - next-point - buffer)) - (error - (nxml-where-error-message - "nxml-where-start-second error %s" err)))) +(defvar nxml-where-last-added nil) +(make-variable-buffer-local 'nxml-where-last-added) +(put 'nxml-where-last-added 'permanent-local t) -(defun nxml-where-update-buffers () - (when (boundp 'nxml-where-mode) - (dolist (buf (buffer-list)) - (when nxml-where-mode - (nxml-where-mode -1) - (nxml-where-mode 1))))) +(defvar nxml-where-path nil + "The current where path. +This is a list where the records have the form -(defun nxml-where-restart-update () - (condition-case err - (unless (and nxml-where-last-point - (= nxml-where-last-point (point))) - ;;(message "\n restart-update: this-command=%s, nxml-where-last-point=%s, point=%s" this-command nxml-where-last-point (point)) - (setq nxml-where-last-point nil) - (setq nxml-where-last-finished nil) - (nxml-where-cancel-once) - (setq nxml-where-once-update-timer - (run-with-idle-timer - (* 0.2 idle-update-delay) - nil - 'nxml-where-start-update-in-timer - (current-buffer)))) - (error - (nxml-where-error-message - "%s" (error-message-string err))))) -(put 'nxml-where-restart-update 'permanent-local-hook t) + \(START END TAG-STR OVERLAY)") +(make-variable-buffer-local 'nxml-where-path) +(put 'nxml-where-path 'permanent-local t) -(defun nxml-where-stop-updating () - (remove-hook 'post-command-hook 'nxml-where-restart-update t)) +(defvar nxml-where-new-path nil + "The new where path. +This is a list where the records have the form -(defun nxml-where-setup-updating () - (nxml-where-clear-path) - (setq nxml-where-last-added nil) - (setq nxml-where-last-point nil) - (when (and nxml-where-header - (not nxml-where-only-inner)) - (setq header-line-format "Started nxml-where-mode ...")) - ;;(nxml-where-restart-update) - (add-hook 'post-command-hook 'nxml-where-restart-update nil t)) + \(START END TAG-STR OVERLAY)") +(make-variable-buffer-local 'nxml-where-new-path) +(put 'nxml-where-new-path 'permanent-local t) + +(defvar nxml-where-once-update-timer nil) +(make-variable-buffer-local 'nxml-where-once-update-timer) +(put 'nxml-where-once-update-timer 'permanent-local t) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Custom options (defgroup nxml-where nil "Customization group for nxml-where." :group 'nxhtml :group 'nxml) -(define-toggle nxml-where-tag+id t - "Show tags + id in path if non-nil. -If nil show only tag names." +(define-toggle nxml-where-only-inner nil + "Mark only inner-most tag." :set (lambda (sym val) (set-default sym val) - (nxml-where-update-buffers)) + (when (fboundp 'nxml-where-update-buffers) + (nxml-where-update-buffers))) :group 'nxml-where) (define-toggle nxml-where-header t "Show header with XML-path if non-nil." :set (lambda (sym val) (set-default sym val) - (nxml-where-update-buffers)) + (when (fboundp 'nxml-where-update-buffers) + (nxml-where-update-buffers))) :group 'nxml-where) -(define-toggle nxml-where-marks t - "Show marks in buffer for XML-path if non-nil." +(define-toggle nxml-where-tag+id t + "Show tags + id in path if non-nil. +If nil show only tag names." :set (lambda (sym val) (set-default sym val) - (nxml-where-update-buffers)) + (when (fboundp 'nxml-where-update-buffers) + (nxml-where-update-buffers))) :group 'nxml-where) -(define-toggle nxml-where-only-inner nil - "Mark only inner-most tag." +(define-toggle nxml-where-marks t + "Show marks in buffer for XML-path if non-nil." :set (lambda (sym val) (set-default sym val) - (nxml-where-update-buffers)) + (when (fboundp 'nxml-where-update-buffers) + (nxml-where-update-buffers))) :group 'nxml-where) (define-toggle nxml-where-only-tags-with-id t "Show only tags with id in the header line." :set (lambda (sym val) (set-default sym val) - (nxml-where-update-buffers)) + (when (fboundp 'nxml-where-update-buffers) + (nxml-where-update-buffers))) :group 'nxml-where) (defface nxml-where-marking @@ -167,7 +162,8 @@ If nil show only tag names." :type 'face :set (lambda (sym val) (set-default sym val) - (nxml-where-update-buffers)) + (when (fboundp 'nxml-where-update-buffers) + (nxml-where-update-buffers))) :group 'nxml-where) (defcustom nxml-where-header-attributes '("id" "name") @@ -175,7 +171,8 @@ If nil show only tag names." :type '(repeat string) :set (lambda (sym val) (set-default sym val) - (nxml-where-update-buffers)) + (when (fboundp 'nxml-where-update-buffers) + (nxml-where-update-buffers))) :group 'nxml-where) (defcustom nxml-where-widen t @@ -184,16 +181,11 @@ If nil show only tag names." :group 'nxml-where) -(defvar nxml-where-saved-header-line-format nil) -(make-variable-buffer-local 'nxml-where-saved-header-line-format) -(put 'nxml-where-saved-header-line-format 'permanent-local t) -(defun nxml-where-save-header-line-format () - (unless nxml-where-saved-header-line-format - (setq nxml-where-saved-header-line-format header-line-format))) -(defun nxml-where-restore-header-line-format () - (setq header-line-format nxml-where-saved-header-line-format)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Modes (defvar nxml-where-modes '(nxml-mode nxhtml-mode)) @@ -204,21 +196,33 @@ If nil show only tag names." (let ((major-mode (mumamo-main-major-mode))) (derived-mode-p 'nxml-mode))))) +(defun nxml-where-setup-updating () + (nxml-where-clear-old-path 0 "setup") + (setq nxml-where-last-added nil) + (setq nxml-where-last-point nil) + (when (and nxml-where-header + (not nxml-where-only-inner)) + (setq header-line-format "Started nxml-where-mode ...")) + ;;(nxml-where-restart-update) + (add-hook 'post-command-hook 'nxml-where-restart-update nil t)) + (defun nxml-where-mode-start () ;;(message "START") (unless (nxml-where-is-nxml) (error "Can't display XML path since major mode is not nxml-mode child.")) - (add-hook 'after-change-major-mode-hook - 'nxml-where-turn-off-unless-nxml nil t) + (add-hook 'after-change-major-mode-hook 'nxml-where-turn-off-unless-nxml nil t) + (add-hook 'after-change-functions 'nxml-where-after-change nil t) (nxml-where-save-header-line-format) (nxml-where-setup-updating)) (defun nxml-where-mode-stop () ;;(message "STOP") + (remove-hook 'after-change-major-mode-hook 'nxml-where-turn-off-unless-nxml t) + (remove-hook 'after-change-functions 'nxml-where-after-change t) (nxml-where-stop-updating) (nxml-where-unmark-forward-element) (nxml-where-restore-header-line-format) - (nxml-where-clear-path)) + (nxml-where-clear-old-path 0 "stop")) (defun nxml-where-turn-off-unless-nxml () (unless (nxml-where-is-nxml) @@ -242,8 +246,12 @@ If nil show only tag names." "Turn on `nxml-where-mode' if possible. This is possible if `major-mode' in the buffer is derived from `nxml-mode'." - (when (derived-mode-p 'nxml-mode) - (nxml-where-mode 1))) + (when (or (derived-mode-p 'nxml-mode) + (and mumamo-multi-major-mode + (let ((major-mode (mumamo-main-major-mode))) + (derived-mode-p 'nxml-mode)))) + (unless nxml-where-mode + (nxml-where-mode 1)))) ;;;###autoload (define-globalized-minor-mode nxml-where-global-mode nxml-where-mode @@ -254,34 +262,130 @@ This is possible if `major-mode' in the buffer is derived from (not (boundp 'define-global-minor-mode-bug))) (nxml-where-global-mode 1)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Auto updating + +(defvar nxhtml-where-hook nil + "Normal hook run when marking has changed.") + (defun nxml-where-start-update-in-timer (buffer) + "First checks post command." ;;(message "nxml-where-start-update buffer=%s (bufferp buffer)=%s" buffer (bufferp buffer)) + (when (and (bufferp buffer) + (buffer-live-p buffer)) + (with-current-buffer buffer + (let ((here (point))) + (save-match-data + (condition-case err + (progn + ;;(unless nxml-where-marks (nxml-where-clear-old-path)) + (unless (and nxml-where-header + (not nxml-where-only-inner)) + (setq header-line-format nil)) + (when (and nxml-where-mode + (or nxml-where-header nxml-where-marks)) + (nxml-where-do-marking nil buffer))) + (error + (nxml-where-error-message + "nxml-where-start-update-in-timer error: %s" err))) + (goto-char here)))))) + +(defun nxml-where-continue-marking-in-timer (this-point buffer) + "Continue unfinished marking after last restart. +Ie we have run at least once post command." + ;;(message "continue-marking-in-timer %s %s" this-point buffer) + (with-current-buffer buffer + (let ((here (point))) + (condition-case err + (save-match-data ;; runs in timer + (nxml-where-do-marking this-point buffer)) + (error + (nxml-where-error-message + "nxml-where-do-marking error: %s" + err))) + (goto-char here)))) + +(defun nxml-where-start-continue-in-timer (next-point buffer) + ;;(message "start second") + (condition-case err + (setq nxml-where-once-update-timer + (run-with-idle-timer idle-update-delay + nil + 'nxml-where-continue-marking-in-timer + next-point + buffer)) + (error + (nxml-where-error-message + "nxml-where-start-second error %s" err)))) + +(defun nxml-where-restart-update () + "Restart update, runs in `post-command-hook'." + ;;(message "restart-update") (condition-case err - (when (and (bufferp buffer) - (buffer-live-p buffer)) - (with-current-buffer buffer - (unless nxml-where-marks (nxml-where-clear-path)) - (unless nxml-where-header (setq header-line-format nil)) - (when (and nxml-where-mode - (or nxml-where-header nxml-where-marks)) - (nxml-where-do-marking nil buffer)))) + (save-match-data ;; runs in timer + (unless (and nxml-where-last-point + (= nxml-where-last-point (point))) + (setq nxml-where-last-point nil) + (setq nxml-where-last-finished nil) + (nxml-where-cancel-once) + (setq nxml-where-once-update-timer + (run-with-idle-timer + (* 0.2 idle-update-delay) + nil + 'nxml-where-start-update-in-timer + (current-buffer))))) (error (nxml-where-error-message - "nxml-where-start-update-in-timer error: %s" err)))) + "%s" (error-message-string err))))) +(put 'nxml-where-restart-update 'permanent-local-hook t) -(defvar nxml-where-get-id-pattern - (rx space - (eval (cons 'or nxml-where-header-attributes)) - (0+ space) - ?= - (0+ space) - ?\" - (0+ (not (any ?\"))) - ?\" - )) +(defvar nxml-where-first-change-pos nil) +(make-variable-buffer-local 'nxml-where-first-change-pos) +(put 'nxml-where-first-change-pos 'permanent-local t) + +(defun nxml-where-after-change (beg end len) + (setq nxml-where-last-point nil) + (setq nxml-where-first-change-pos + (min beg + (or nxml-where-first-change-pos + beg)))) + +(defun nxml-where-cancel-once () + (when (timerp nxml-where-once-update-timer) + (cancel-timer nxml-where-once-update-timer) + (setq nxml-where-once-update-timer nil))) + +(defun nxml-where-update-buffers () + (when (boundp 'nxml-where-mode) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when nxml-where-mode + (nxml-where-mode -1) + (nxml-where-mode 1)))))) + +(defun nxml-where-stop-updating () + (remove-hook 'post-command-hook 'nxml-where-restart-update t)) + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Marking + +(defconst nxml-where-get-id-pattern + (rx-to-string + `(and + space + ,(cons 'or nxml-where-header-attributes) + (0+ space) + ?= + (0+ space) + ?\" + (0+ (not (any ?\"))) + ?\") + t)) (defvar nxml-where-tag+id-pattern - ;;(insert ;; ------------------- (rx ?< (submatch (1+ (char "-a-z0-9:")) @@ -297,46 +401,35 @@ This is possible if `major-mode' in the buffer is derived from ) (0+ space) (opt ?/) - ?>) - ;;) ;; ------------------- - ) + ?>)) -;; (defun nxml-where-mark (start end) -;; (let (ovl -;; (ovls (overlays-at start))) -;; (dolist (o ovls) -;; (when (and (eq (overlay-get o 'face) nxml-where-marking) -;; (= start (overlay-start o)) -;; (= end (overlay-end o))) -;; (setq ovl o))) -;; (unless ovl -;; (setq ovl (make-overlay start end)) -;; (overlay-put ovl 'face nxml-where-marking) -;; (move-overlay ovl start end)) -;; ovl)) (defvar nxml-where-forward-element nil) (make-variable-buffer-local 'nxml-where-forward-element) (put 'nxml-where-forward-element 'permanent-local t) (defun nxml-where-unmark-forward-element () - ;;(message "unmark-for %s" nxml-where-forward-element) + "Unmark currently marked end tag." (when nxml-where-forward-element - (let ((ovl (nth 1 nxml-where-forward-element))) - (when (overlayp ovl) (delete-overlay ovl))) + (let* ((ovl (nth 1 nxml-where-forward-element)) + (str (when ovl (buffer-substring-no-properties (overlay-start ovl) (overlay-end ovl))))) + (when (overlayp ovl) + ;;(message "unmark-forward-element:delete-overlay %s %s" str ovl) + (delete-overlay ovl))) (setq nxml-where-forward-element nil))) (defun nxml-where-mark-forward-element (start-tag) - ;;(message "point 0 = %s, start-tag=%s fe=%s" (point) start-tag nxml-where-forward-element) - ;;(message " path=%s" nxml-where-path) - (unless (and nxml-where-forward-element + "Mark the end tag matching START-TAG." + ;;(message "nxml-where-forward-element=%s" nxml-where-forward-element) + (unless (and start-tag + nxml-where-forward-element (nth 1 nxml-where-forward-element) (= (nth 0 nxml-where-forward-element) start-tag)) - ;;(message "h3re") + ;;(message "before unmark") (nxml-where-unmark-forward-element) - (save-restriction - ;;(message "point 1 = %s" (point)) + ;;(message "after unmark") + (when start-tag (let ((here (point)) (end-of-narrow (progn @@ -348,300 +441,224 @@ This is possible if `major-mode' in the buffer is derived from end-of-narrow)) (setq end-of-narrow (min (point-max) end-of-narrow)) - (narrow-to-region here end-of-narrow) - (condition-case err - (progn - ;;(message "point X forw= %s" (point)) - (nxml-forward-element) - (when (looking-back "") - (setq start (match-beginning 0)) - (setq end (point)) - (setq ovl (make-overlay start end)) - (overlay-put ovl 'face nxml-where-marking))) - (error - (let ((msg (error-message-string err))) - (unless (string= msg "Start-tag has no end-tag") - (message "nxml-where-mark-forw: %s" str))))) - (widen) + (save-restriction + (narrow-to-region start-tag end-of-narrow) + (condition-case err + (progn + (goto-char start-tag) + (nxml-forward-element) + (when (looking-back "") + (setq start (match-beginning 0)) + (setq end (point)) + (setq ovl (make-overlay start end)) + (overlay-put ovl 'nxml-where t) + (overlay-put ovl 'face nxml-where-marking))) + (error + (let ((msg (error-message-string err))) + (unless (string= msg "Start-tag has no end-tag") + (message "nxml-where-mark-forw: %s" msg)))))) (goto-char here) ;;(message "point 2 = %s" (point)) (setq nxml-where-forward-element (list start-tag ovl)))))) -(defvar nxml-where-path nil) -(make-variable-buffer-local 'nxml-where-path) -(put 'nxml-where-path 'permanent-local t) (defun nxml-where-make-rec (tag-start tag-end tag-str buf) ;;(message "nxml-where-make-rec %s %s %s %s" tag-start tag-end tag-str buf) - (let ((ovls (overlays-at tag-start))) + (let ((ovls (overlays-at tag-start)) + str) (dolist (ovl ovls) - (when (equal (overlay-get ovl 'face) nxml-where-marking) - (nxml-where-error-message "old ovl=%s" ovl)))) + (when (overlay-get ovl 'nxml-where) + (setq str (buffer-substring-no-properties (overlay-start ovl) (overlay-end ovl))) + (message "==================================================") + (nxml-where-error-message "old ovl=%s %S" ovl str) + (message "old: nxml-where-path=%s" nxml-where-path) + (message "old: nxml-where-new-path=%s" nxml-where-new-path) + ))) (let ((ovl (when buf (make-overlay tag-start tag-end)))) - (when ovl (overlay-put ovl 'face nxml-where-marking)) + (when ovl + (overlay-put ovl 'nxml-where t) + (overlay-put ovl 'face nxml-where-marking)) (list tag-start tag-end tag-str ovl))) -(defun nxml-where-delete-rec (rec) - ;;(message "delete-overlay rec=%s" rec) - (let ((ovl (nth 3 rec))) - (when ovl +(defun nxml-where-delete-rec (rec from) + (let* ((ovl (nth 3 rec)) + (str (when ovl + (buffer-substring-no-properties (overlay-start ovl) (overlay-end ovl))))) + (when (and ovl (overlay-buffer ovl)) (assert (overlayp ovl) t) - ;;(message "delete-overlay %s" ovl) - (delete-overlay ovl)))) - -(defvar nxml-where-last-point nil) -(make-variable-buffer-local 'nxml-where-last-point) -(put 'nxml-where-last-point 'permanent-local t) + ;;(message "delete-rec:delete-overlay %s %s (%s)" str ovl from) + (delete-overlay ovl) + ;;(message "after delete=%s" ovl) + ))) -(defvar nxml-where-last-finished nil) -(make-variable-buffer-local 'nxml-where-last-finished) -(put 'nxml-where-last-finished 'permanent-local t) - -(defvar nxml-where-last-added nil) -(make-variable-buffer-local 'nxml-where-last-added) -(put 'nxml-where-last-added 'permanent-local t) -(defun nxml-where-clear-path () +(defun nxml-where-clear-old-path (end-of-interest from) + "Clear all marking below END-OF-INTEREST. +Update `nxml-where-path accordingly." (setq nxml-where-last-added nil) - (nxml-where-update-where-path -1 nil nil nil)) - -(defun nxml-where-update-where-path (tag-start tag-end tag-str buffer) - ;;(message "nxml-where-last-added=%s" nxml-where-last-added) - ;; - ;; Fix-me: Deletion is not handled correctly when moving quickly. - (when nxml-where-only-inner - (setq nxml-where-path - (mapcar (lambda (rec) - (if (and (= tag-start (nth 0 rec)) - (= tag-end (nth 0 rec)) - (string= tag-str (nth 2 rec))) - rec - (nxml-where-delete-rec rec) - nil)) - nxml-where-path)) - (setq nxml-where-path (delq nil nxml-where-path))) - (unless nxml-where-last-added - ;; Trim off everything below tag-start. - (let ((ptr nxml-where-path) - prev-ptr - old-rec - tail) - (while (and ptr - (<= (nth 0 (car ptr)) (1+ tag-start))) - (setq prev-ptr ptr) - (setq ptr (cdr ptr))) - ;;(message "trimming tag-start=%s, tag-end=%s, tail ptr at=%s, nxml-where-last-added=%s" tag-start tag-end (caar ptr) nxml-where-last-added) - (when ptr - ;;(setq tail (cdr ptr)) - (setq tail ptr) - (if prev-ptr - (setcdr prev-ptr nil) - (setq nxml-where-path nil))) - ;; Clean up tail - ;;(message "tail=%s" tail) - (dolist (rec tail) - (nxml-where-delete-rec rec)))) - ;; If tag-end is nil we are just clearing - (when tag-end - (let (result) - ;; Check we are sane - (if (or (not nxml-where-last-added) - (< tag-start (nth 0 nxml-where-last-added))) - (setq nxml-where-last-added t) - ;;(message "nxml-where internal error: tag-start below last added, %s < %s" tag-start nxml-where-last-added) - (setq nxml-where-last-added nil)) - (when nxml-where-last-added - ;; Find out where to insert - (let ((ptr nxml-where-path) - prev-ptr - old-rec - new-rec) - ;;(message "before while ptr=%s" ptr) - (while (and ptr (< (nth 0 (car ptr)) tag-start)) - (setq prev-ptr ptr) - (setq ptr (cdr ptr)) - ) - ;; Is this now the same as the old value? - ;;(message "Same? ptr=%s" ptr) - (if (and ptr - (= tag-start (nth 0 (car ptr))) - (= tag-end (nth 1 (car ptr)))) - (progn - ;;(message "vvvvvvvvvvvvvvvvv") - ;;(message "ready tag-start=%s-%s tag-str=%s nxml-where-last-added=%s" tag-start tag-end tag-str nxml-where-last-added) - (when (eq nxml-where-last-added t) - (setq nxml-where-last-added (car (last nxml-where-path)))) - ;; Clean up between here and last added. Unfortunately - ;; we can't catch everything here. We need to walk up - ;; the list to check, but that takes some time so do - ;; not do that here. - ;; - ;; Fix-me: implement the walk up above. - - ;;(message "trimming 2 tag-start=%s, tag-end=%s, ptr at=%s, nxml-where-last-added=%s" tag-start tag-end (caar ptr) nxml-where-last-added) - ;;(message "ptr 1=%s" ptr) - (while (and ptr ;; Not needed, but just in case to prevent looping ... - (cdr ptr) - (not (eq nxml-where-last-added (cadr ptr)))) - ;; Delete entry after ptr. - ;;(message "ptr=%s" ptr) - (setq old-rec (cadr ptr)) - (nxml-where-delete-rec old-rec) - (setcdr ptr (cddr ptr)) - ) - (setq nxml-where-last-finished t) - (setq result 'ready)) - (setq new-rec (nxml-where-make-rec tag-start tag-end tag-str buffer)) - (setq nxml-where-last-added new-rec) - (if (not prev-ptr) - (setq nxml-where-path (cons new-rec nxml-where-path)) - (setcdr prev-ptr (cons new-rec (cdr prev-ptr)))) - (setq result 'continue)))) - ;;(message "Mark forward path=%s" nxml-where-path) - (nxml-where-mark-forward-element (caar (last nxml-where-path))) - result))) - -;;(nxhtmltest-nxml-where-adding) -;;(global-set-key [f9] 'nxhtmltest-nxml-where-adding) -(defun nxhtmltest-nxml-where-add1 (rec) - (let* ((tag-start (nth 0 rec)) - (tag-end (nth 1 rec)) - (tag-str (nth 2 rec)) - (res - (nxml-where-update-where-path tag-start tag-end tag-str nil))) - (message "*** (%s %s %s) => %s, last=%s" tag-start tag-end tag-str res nxml-where-last-added) - (message "nxml-where-path=%s" nxml-where-path) - )) - -(defun nxhtmltest-nxml-where-adding () - (interactive) - (let ((nxml-where-path nil) - (nxml-where-last-added nil) - rec) - (message "=====================") - (assert (equal nxml-where-path nil) t) - (nxhtmltest-nxml-where-add1 (setq rec '(50 55 "" nil))) - (assert (equal nxml-where-path `(,rec)) t) - (nxhtmltest-nxml-where-add1 (setq rec '(30 35 "" nil))) - (assert (equal nxml-where-path `(,rec - (50 55 "" nil))) t) - (message "------ A") (setq nxml-where-last-added nil) - (nxhtmltest-nxml-where-add1 (setq rec '(50 55 "" nil))) - (assert (equal nxml-where-path `((30 35 "" nil) - (50 55 "" nil))) t) - (message "------ B") (setq nxml-where-last-added nil) - (nxhtmltest-nxml-where-add1 (setq rec '(50 55 ""))) - (assert (equal nxml-where-path `((30 35 "" nil) - (50 55 "" nil))) t) - (nxhtmltest-nxml-where-add1 (setq rec '(30 35 "" nil))) - (assert (equal nxml-where-path `((30 35 "" nil) - (50 55 "" nil))) t) - (message "------ C") (setq nxml-where-last-added nil) - (nxhtmltest-nxml-where-add1 (setq rec '(40 45 "" nil))) - (assert (equal nxml-where-path `((30 35 "" nil) - ,rec)) t) - (nxhtmltest-nxml-where-add1 (setq rec '(50 55 "" nil))) - (assert (eq nxml-where-last-added nil) t) - (message "---- Clear") - (nxml-where-clear-path) - (assert (eq nxml-where-path nil) t) - )) + ;;(message "++++++ clear A: %s (%s)" end-of-interest from) + (setq nxml-where-path (cons 'dummy nxml-where-path)) + (let ((path nxml-where-path)) + ;;(message "path 1=%s" path) + (while (cdr path) + ;;(message "path 2=%s" path) + (when (> (nth 1 (cadr path)) end-of-interest) + (dolist (p (cdr path)) + (nxml-where-delete-rec p "clear")) + (setcdr path nil)) + (setq path (cdr path)))) + (setq nxml-where-path (cdr nxml-where-path))) + +(defun nxml-where-clear-new-path () + (dolist (new nxml-where-new-path) + (nxml-where-delete-rec new "clear new")) + (setq nxml-where-new-path nil) + ;;(message "clear B:nxml-where-path=%s" nxml-where-path) + ) -(defun nxml-where-do-marking-in-timer (this-point buffer) - (condition-case err - (nxml-where-do-marking this-point buffer) - (error - (nxml-where-error-message - "nxml-where-do-marking error: %s" - err)))) -;; (nxml-where-error-message "%s" "something") -(defun nxml-where-error-message (format-string &rest args) - (with-current-buffer (get-buffer-create "*Messages*") - (let ((start (1+ (point-max)))) - (apply 'message format-string args) - (goto-char (point-max)) - (backward-char) - (put-text-property start (point) - 'face 'highlight)))) +(defun nxml-where-update-where-path (tag-start tag-end tag-str buffer) + "Update where path with given tag. +The tag is between TAG-START and TAG-END and the string to +display for it in the header-line is TAG-STR. This is in buffer +BUFFER." + ;; Delete old marks below tag-start: + (nxml-where-clear-old-path (+ tag-end 0) (format "update-where-path, tag-start=%s" tag-start)) + ;; Is this now the same as the old value? + (let ((last-old (last nxml-where-path)) + new-rec + result) + ;;(message "update: %s %s %s %s, last-old=%s" tag-start tag-end tag-str buffer last-old) + (if (and last-old + (= tag-start (nth 0 (car last-old))) + (= tag-end (nth 1 (car last-old)))) + (progn + (setq result 'ready)) + (when nxml-where-only-inner + ;;(message "last-old=%S, nwp=%S, nwnp=%S" last-old nxml-where-path nxml-where-new-path) + (setq last-old (car (last nxml-where-path))) + (when last-old + (setq nxml-where-path nil) + (nxml-where-delete-rec last-old "only-inner"))) + (setq new-rec (nxml-where-make-rec tag-start tag-end tag-str buffer)) + (setq nxml-where-last-added new-rec) + (setq nxml-where-new-path (cons new-rec nxml-where-new-path)) + (setq result 'continue)) + result)) (defun nxml-where-do-marking (this-point buffer) - ;;(message "nxml-where-do-marking %s %s, point=%s" this-point buffer (point)) - (with-current-buffer buffer - (save-restriction - (when nxml-where-widen (widen)) - (let (ovl - (here (point)) - next-point - (is-first (not this-point)) - same-as-last) - ;; If on beginning of tag step forward one char. - (unless (or (eobp) - this-point - (not (eq ?< (char-after)))) - (forward-char)) - (unless this-point (setq nxml-where-last-added nil)) - (unless this-point (setq this-point (point))) - (goto-char this-point) - (setq next-point - (catch 'cnext-point - ;; Are we ready? - (condition-case err - (nxml-backward-up-element) - (error - (if (equal err '(error "No parent element")) - (throw 'cnext-point nil) - (nxml-where-error-message "nxml-where error: %S" err) - (throw 'cnext-point "uh?")))) - ;; Is this the first call - (when is-first - ;;(message "is-first=%s, (last nxml-where-path=%s" is-first (last nxml-where-path)) - (setq same-as-last - (and nxml-where-path - nxml-where-last-finished - (= (point) (caar (last nxml-where-path))))) - (when same-as-last - (throw 'cnext-point 'same-as-last))) - (save-match-data - (when (looking-at nxml-where-tag+id-pattern) - (let ((start (point)) - (end (match-end 0)) - (tag (match-string-no-properties 1)) - (all (match-string-no-properties 0)) - result) - (when nxml-where-tag+id - (when (string-match nxml-where-get-id-pattern all) - (setq tag (concat tag (match-string 0 all))))) - (setq tag (concat "<" tag ">")) - (setq result (nxml-where-update-where-path start end tag t)) - (when (or (eq result 'ready) - nxml-where-only-inner) - (throw 'cnext-point nil)) - ;;(message "here 2") - ))) - (throw 'cnext-point (max (1- (point)) (point-min))))) - ;) - (goto-char here) - ;;(message "next-point=%s" next-point) - (if next-point - (cond - ((stringp next-point) (message "%s" next-point) ;; Some error - (when nxml-where-header (setq header-line-format next-point))) - ((eq 'same-as-last next-point) - nil) - (t - (unless nxml-where-only-inner - (setq nxml-where-once-update-timer - (run-with-timer (* 0.2 idle-update-delay) - nil - 'nxml-where-start-second-in-timer - next-point (current-buffer)))))) - (setq nxml-where-last-point (point)) - (when (and nxml-where-header - (not nxml-where-only-inner)) - (nxml-where-write-header))))))) - -(defun nxml-where-write-header () + "Do marking. +If THIS-POINT is nil then it is the first marking post command in +buffer BUFFER. In that case start from current point, otherwise +from THIS-POINT. + +Go up to previous tag. Then check if this is the same tag where +we started last time and ran to completion. If so just finish. + +Otherwise check this tag. If not ready after that then restart +this command with arg THIS-POINT set to right before this tag." + ;;(message "****************nxml-where-do-marking %s %s, point=%s" this-point buffer (point)) + (when (buffer-live-p buffer) + (with-current-buffer buffer + (save-restriction + (when nxml-where-widen (widen)) + (let ((here (point)) + next-point + (is-first (not this-point)) + (end-of-interest (if nxml-where-first-change-pos + (min (point) nxml-where-first-change-pos) + ;; Check for tag at point + (catch 'eoi + (let (ovl) + (dolist (ovl (overlays-at (point))) + (when (overlay-get ovl 'nxml-where) + (throw 'eoi (overlay-end ovl))))) + (point))))) + ;; If on beginning of tag step forward one char. + (unless (or (eobp) + this-point + (not (eq ?< (char-after)))) + (forward-char)) + (when this-point (goto-char this-point)) + (setq next-point + (catch 'cnext-point + (progn + (condition-case err + (nxml-backward-up-element) + (error + (if (equal err '(error "No parent element")) + (let (rec) + ;;(message "------------ No parent element") + (dolist (rec nxml-where-path) + (nxml-where-delete-rec rec "no parent")) + (setq nxml-where-path nil) + (throw 'cnext-point nil)) ;; <---- remember... + (nxml-where-error-message "nxml-where error: %S" err) + (throw 'cnext-point "uh?")))) + ;; Is this the first call + ;;(message ";; Is this the first call, %s" is-first) + (when is-first + (when (and nxml-where-path + nxml-where-last-finished + (= (point) (caar (last nxml-where-path)))) + (throw 'cnext-point 'same-as-last)) + ;;(setq nxml-where-new-path nil) + (setq nxml-where-last-added nil) + ;; Delete those parts we can't trust or don't + ;; need any more. Fix-me, Note: this is different + ;; dependent on if some buffer changes occured. + (nxml-where-clear-old-path end-of-interest (format "is-first,p=%s" (point))) + (nxml-where-clear-new-path)) + ;;(message "looking-at") + (when (looking-at nxml-where-tag+id-pattern) + (let ((start (point)) + (end (match-end 0)) + (tag (match-string-no-properties 1)) + (all (match-string-no-properties 0))) + (when nxml-where-tag+id + (when (string-match nxml-where-get-id-pattern all) + (setq tag (concat tag (match-string 0 all))))) + (setq tag (concat "<" tag ">")) + (when (or (eq 'ready + (nxml-where-update-where-path start end tag t)) + nxml-where-only-inner) + ;;(message "throw 'cp nil") + (throw 'cnext-point nil)))) + (throw 'cnext-point (max (1- (point)) (point-min)))))) + (goto-char here) + (if next-point + (cond + ((stringp next-point) (message "%s" next-point) ;; Some error + (when nxml-where-header (setq header-line-format next-point))) + ((eq 'same-as-last next-point) + nil) + (t + (unless nxml-where-only-inner + (setq nxml-where-once-update-timer + (run-with-timer (* 0.2 idle-update-delay) + nil + 'nxml-where-start-continue-in-timer + next-point (current-buffer)))))) + (if nxml-where-path + (setcdr (last nxml-where-path) nxml-where-new-path) + (setq nxml-where-path nxml-where-new-path)) + (setq nxml-where-new-path nil) + ;;(message "nxml-where-path=%s" nxml-where-path) + (nxml-where-mark-forward-element (caar (last nxml-where-path))) + (setq nxml-where-last-finished t) + (setq nxml-where-first-change-pos nil) + (run-hooks 'nxhtml-where-hook) + (setq nxml-where-last-point (point)) + (when (and nxml-where-header + (not nxml-where-only-inner)) + (nxml-where-insert-header)))))))) + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; Header path + +(defun nxml-where-insert-header () (let ((path (mapcar (lambda (elt) (nth 2 elt)) nxml-where-path))) @@ -672,6 +689,18 @@ This is possible if `major-mode' in the buffer is derived from (when nxml-where-header (setq header-line-format header))))) +(defvar nxml-where-saved-header-line-format nil) +(make-variable-buffer-local 'nxml-where-saved-header-line-format) +(put 'nxml-where-saved-header-line-format 'permanent-local t) + +(defun nxml-where-save-header-line-format () + (unless nxml-where-saved-header-line-format + (setq nxml-where-saved-header-line-format header-line-format))) + +(defun nxml-where-restore-header-line-format () + (setq header-line-format nxml-where-saved-header-line-format)) + + (provide 'nxml-where) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/elpa-to-submit/nxhtml/nxhtml/old/.nosearch b/elpa-to-submit/nxhtml/nxhtml/old/.nosearch deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/elpa-to-submit/nxhtml/nxhtml/old/html-inlined.el b/elpa-to-submit/nxhtml/nxhtml/old/html-inlined.el deleted file mode 100644 index a73a4217c8..0000000000 --- a/elpa-to-submit/nxhtml/nxhtml/old/html-inlined.el +++ /dev/null @@ -1,356 +0,0 @@ -;; html-inlined.el --- narrow/widen embedded blocks of css etc -;; -;; Copyright (C) 2005 by P J Heslin -;; -;; Author: Peter Heslin -;; Additions by: Lennart Borgman -(defconst html-inlined:version "2.2") ;; Version: -;; -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. -;; -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, 675 Massachusettes Ave, -;; Cambridge, MA 02139, USA. - -;;; Commentary: -;; -;; When using html-mode, nxhtml-mode or nxml-mode to edit (X)HTML, -;; this file enables you to narrow the visible buffer to show just a -;; php/javascript/visual basic script block, or a css style block, and -;; then to switch from html-mode or nxml-mode to the appropriate mode -;; for that block. When finished editing that block, it enables you -;; easily to show the whole buffer and switch back to the original -;; mode again. -;; -;; The user interface consists of a single keystroke: by default, C-c %. -;; To change it, customize the value of 'html-inlined-key. In html-mode -;; or nxml-mode, this key looks to see if the cursor is inside a -;; script/style block, and if it is, it narrows the buffer to that -;; block and switches to the appropriate mode. Hit the same key again -;; to go back to editing the whole file in the original mode. -;; -;; This file used to be called nxml-script.el, when it only supported -;; nxml-mode; now it has been completely rewritten and made a bit more -;; general, so it can be used with any major mode for editing (X)HTML. -;; -;; Based on html-script.el: -;; URL: http://www.dur.ac.uk/p.j.heslin/Software/Emacs/Download/html-script.el -;; The original idea was taken from html-helper-mode.el - -;;; Installation: -;; -;; To install, put this file in your load-path, and require it via -;; your .emacs. -;; -;; (require 'html-inlined) -;; (html-inlined-add-key-to-modes) -;; -;; There are various customizations available, including a list of -;; modes in which to install html-inlined (defaults to html-mode and -;; nxml-mode). -;; -;; You also need to have the relevant autoloads set up for the script -;; modes you want to use, like so: -;; -;; (autoload 'php-mode "php-mode" "PHP mode" t) -;; -;; Supported major modes for script/style blocks include php-mode, -;; css-mode, javascript-generic-mode, jde-mode, visual-basic-mode. -;; -;; You might also need to tell emacs to open .php, .jsp and such files -;; in html-mode or nxml-mode, like so: -;; -;; (setq auto-mode-alist (cons '("\\.php[34]?$" . nxml-mode) auto-mode-alist)) -;; -;; BUGS: -;; -;; I regularly use only CSS and PHP, very occasionally Javascript, and -;; Visual Basic not at all, and so the code for these last two has not -;; been tested. -;; -;; Changes: -;; -;; 1.0 First public release of nxml-script.el -;; -;; 2.0 Changed name to html-inlined.el and completely rewritten. -;; Removed 'nxml-script-function and 'nxml-script-region-function, as -;; too confusing. Various user customization variables have changed. -;; -;; 2.1 Bugfix for javascript and vbscript and added ecmascript mode -- -;; thanks to Mark Takacs. -;; -;; 2.2 -;; 2006-02-08 Lennart Borgman -;; * Renamed to html-inlined.el -;; * (html-inlined-install-modes): Added nxhtml-mode -;; * (html-inlined-narrow, html-inlined-narrow-handler): -;; Only inner part of script or css tag shown in narrowed state. -;; * (html-inlined-indentation, html-inlined-indent-line-function-orig, -;; html-inlined-indent-line): Support for indentation - -(eval-when-compile (require 'cl)) - -(defgroup html-inlined nil - "Narrow \(X)HTML documents to script blocks and widen again" - :tag "Narrow (X)HTML documents to script blocks and widen again" - :group 'hypermedia - :prefix "html-inlined-") - -(defcustom html-inlined-install-modes '(nxml-mode nxhtmlmode html-mode) - "A list of modes in which to install a binding for html-inlined. -The key to bind is defined by html-inlined-key" - :group 'html-inlined) - -(defvar html-inlined-inlined-keymap nil) - -(defun html-inlined-make-inlined-keymap(inlined-key) - (let ((m (make-sparse-keymap))) - (define-key m inlined-key 'html-inlined-widen) - (define-key m [(control ?x) ?n ?w] 'html-inlined-widen) - (setq html-inlined-inlined-keymap m))) - -(defcustom html-inlined-key [(control c) ?%] - "Key to use to toggle narrowing and widening" - :set (lambda(symbol value) - (set-default symbol value) - (html-inlined-make-inlined-keymap value)) - :group 'html-inlined) - -(defcustom html-inlined-regions - '( - ;; Those two seems better to handle other ways: - ;;("<%" "%>" visual-basic-mode) - ;;("<\\?" "\\?>" php-mode c-mode) - - ("" "" css-mode c-mode) - ("" "" css-mode c-mode) - ("[ \t]style=\"" "\"" css-mode c-mode) - ("" "" visual-basic-mode) - ("" "" visual-basic-mode) - ("" "" - ecmascript-mode jde-mode java-mode javascript-generic-mode c-mode) - ("" "" - ecmascript-mode jde-mode java-mode javascript-generic-mode c-mode) - ;;("\s-on[a-z]+=\"javascript:" "\"" - ("[ \t]on[a-z]+=\"javascript:" "\"" - ecmascript-mode jde-mode java-mode javascript-generic-mode c-mode) - ) - "Define script regions. Each entry should consist of a list of - a starting regexp, an ending regexp, and a list of modes to try - for that region in that order." - :group 'html-inlined) - -(defvar html-inlined-start-regexp - (concat "\\(" (mapconcat (lambda (x) (car x)) html-inlined-regions "\\|") "\\)")) - -(defvar html-inlined-original-mode nil) -(make-variable-buffer-local 'html-inlined-original-mode) -;; This immunizes it against kill-all-local-variables, which is run -;; when the new major-mode is called. -(put 'html-inlined-original-mode 'permanent-local t) - -(defvar html-inlined-original-header nil) -(make-variable-buffer-local 'html-inlined-original-header) -(put 'html-inlined-original-header 'permanent-local t) - - -(defvar html-inlined-indentation nil) -(make-variable-buffer-local 'html-inlined-indentation) -(put 'html-inlined-indentation 'permanent-local t) - - -(defun html-inlined-find-indentation(narrow-start) - (setq html-inlined-indentation 0) - (save-excursion - (goto-char narrow-start) - (setq html-inlined-indentation (current-indentation))) - html-inlined-indentation) - -(defvar html-inlined-indent-line-function-orig nil) -(make-variable-buffer-local 'html-inlined-indent-line-function-orig) -(put 'html-inlined-indent-line-function-orig 'permanent-local t) - -(defcustom html-indent-inline-indentation 4 - "Extra indentation for inlined part." - :group 'html-inlined - :type 'integer) - -(fset 'html-inlined-indent-to-orig (symbol-function 'indent-to)) -(defun html-inlined-indent-line(&optional something) - (interactive) - (let ((is-first-line - (save-excursion - (beginning-of-line) - (string-match "\\`[ \n\r]*\\'" - (buffer-substring-no-properties - (point-min)(point)))))) - (if is-first-line - (save-excursion - (beginning-of-line) - (let ((start-of-line (point))) - (skip-syntax-forward "\\s-") - (delete-region start-of-line (point))) - (indent-to (+ html-inlined-indentation html-inlined-indentation) 0)) -;; ;; This does not work?? -;; (flet ((indent-to (column &optional minimum) -;; (let ((colnew -;; (if (= 0 column) -;; (+ column html-inlined-indentation html-inlined-indentation) -;; column))) -;; (message "flet ind-to: cn=%s" colnew)(sit-for 2) -;; (html-inlined-indent-to-orig colnew)))) - (beginning-of-line) - (funcall html-inlined-indent-line-function-orig) - ;; If 0 then it was not a relative indentation: - (when (= 0 (current-indentation)) - (indent-to (+ html-inlined-indentation - html-indent-inline-indentation)))))) - -(defvar html-inlined-mode-map - (let ((map (make-sparse-keymap)) - (menu-map (make-sparse-keymap))) - (define-key map [tab] 'html-inlined-indent-line) - (define-key menu-map [html-inlined-back] - (list 'menu-item "Back to whole file" 'html-inlined-widen)) - (define-key map [menu-bar inlined-mode] - (list 'menu-item "Inlined" menu-map)) - map)) - -(define-minor-mode html-inlined-mode - "Temporary mode for keymap when editing inlined code." - :keymap 'html-inlined-mode-map) - -(defun html-inlined-narrow () - (interactive) - (save-match-data - (let* ((orig (point)) - (case-fold-search t) - (handler-list - (if (re-search-backward html-inlined-start-regexp nil t) - (loop for x in html-inlined-regions - when (looking-at (car x)) return x - finally return nil) - nil))) - (if handler-list - (progn - (html-inlined-find-indentation (point)) - (html-inlined-narrow-handler orig handler-list (match-beginning 0))) - (message "Not in an inlined region.") - (goto-char orig))))) - -(defvar html-inlined-overlay nil) -(make-variable-buffer-local 'html-inlined-overlay) -(put 'html-inlined-overlay 'permanent-local t) -(defvar html-inlined-overlay-markers-face - (list - (cons 'background-color "OliveDrab3"))) - -(defun html-inlined-narrow-handler (orig arg-list start) - (let ((is-attr (not (memq ?< (append (car arg-list) nil))))) - (if is-attr - (beginning-of-line 1) - (beginning-of-line 2)) - (let ((start-str - (if is-attr - (buffer-substring (point) (match-end 0)) - (buffer-substring (match-beginning 0) (point)))) - end-str - (ending-re (cadr arg-list)) - (modes (cddr arg-list)) - (beg (if is-attr - (match-end 0) - (point))) - end - (case-fold-search t)) - (when is-attr (goto-char orig)) - (if (re-search-forward ending-re nil t) - (if (>= (point) orig) - (progn - (setq html-inlined-original-mode major-mode) - (setq html-inlined-original-header header-line-format) - (when (overlayp html-inlined-overlay) - (delete-overlay html-inlined-overlay)) - (if is-attr - (setq end (1- (point))) - (beginning-of-line) - (setq end (point))) - (goto-char orig) - (setq html-inlined-overlay (make-overlay - beg end - nil - nil t)) - (let ((s start-str)) - (put-text-property 0 (length s) - 'face html-inlined-overlay-markers-face - s) - (overlay-put html-inlined-overlay 'before-string s)) - ;; Add to blanks to avoid a bug that lets the cursor pass the after-string - ;; Suggested by Kim Storm 2006-03-21 - (let ((s (concat (buffer-substring (match-beginning 0) - (save-excursion - (goto-char (match-end 0)) - (beginning-of-line 2) - (point))) - " "))) - (put-text-property 0 (- (length s) 2) - 'face html-inlined-overlay-markers-face - s) - ;;(put-text-property 0 1 'cursor t s) - (overlay-put html-inlined-overlay 'after-string s)) - ;; Kim suggests that this should hold the cursor in the "after-string", but it does not work - ;; (though Kim's example work???): - (put-text-property 0 1 'cursor t (overlay-get html-inlined-overlay 'after-string)) - (overlay-put html-inlined-overlay 'keymap html-inlined-inlined-keymap) - ;;(narrow-to-region beg end) - (loop for x in modes when (fboundp x) do (funcall x) and return nil - finally do (error "html-inlined: no relevant mode found.")) - (narrow-to-region beg end) - (setq html-inlined-indent-line-function-orig indent-line-function) - (setq indent-line-function 'html-inlined-indent-line) - (setq indent-region-function nil) - (html-inlined-mode t) - (setq header-line-format - (replace-regexp-in-string - "%" "%%" - (concat - "%%%% Editing inlined code -- use " - (key-description html-inlined-key) - " to edit whole file again %%%% "))) - ) - (message "No inlined code or style found here.")) - (message "No inlined code or style here.")) - (goto-char orig) - ))) - -(defun html-inlined-widen () - (interactive) - (when (overlayp html-inlined-overlay) - (delete-overlay html-inlined-overlay)) - (widen) - (scroll-down 1) - (html-inlined-mode 0) - (funcall html-inlined-original-mode) - (setq header-line-format html-inlined-original-header) - (setq html-inlined-original-mode nil)) - -(defun html-inlined-install-narrow-key () - (local-set-key html-inlined-key 'html-inlined-narrow)) - -(defun html-inlined-add-key-to-modes() - "Add `html-inlined-key' to supported major modes." - (dolist (x html-inlined-install-modes) - (add-hook - (intern (concat (symbol-name x) "-hook")) - 'html-inlined-install-narrow-key))) - -(provide 'html-inlined) - diff --git a/elpa-to-submit/nxhtml/nxhtml/old/nxhpcmpl.el b/elpa-to-submit/nxhtml/nxhtml/old/nxhpcmpl.el deleted file mode 100644 index 7ab47bfe3d..0000000000 --- a/elpa-to-submit/nxhtml/nxhtml/old/nxhpcmpl.el +++ /dev/null @@ -1,477 +0,0 @@ -;;; nxhpcmpl.el --- Popup completion -;; -;; Author: Lennart Borgman -;; Created: Thu Dec 28 23:23:21 2006 -(setq nxhpcmpl:version "0.50") ;; Version: -;; Lxast-Updated: Fri Dec 29 01:42:55 2006 (3600 +0100) -;; Keywords: -;; Compatibility: -;; -;; Features that might be required by this library: -;; -;; None -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; Commentary: -;; -;; Functions for pop style completion for nxhtml-mode. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;;; 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: - -(require 'appmenu) - -(defun nxhpcmpl-complete () - "Complete the string before point using the current schema. -Return non-nil if in a context it understands." - (interactive) - ;;(message "where=%s" (nxhtml-check-where)) (sit-for 1) - (unless (eq 'in-tag-start (nxhtml-check-where)) - (error "Not in start tag")) - (and rng-validate-mode - (let ((lt-pos (save-excursion (search-backward "<" nil t))) - xmltok-dtd) - (and lt-pos - (= (rng-set-state-after lt-pos) lt-pos) - (or (nxhpcmpl-complete-tag lt-pos) -;; t -;; (rng-complete-end-tag lt-pos) -;; (rng-complete-attribute-name lt-pos) -;; (rng-complete-attribute-value lt-pos) - ))))) - -(defun nxhpcmpl-complete-tag (lt-pos) - (let (rng-complete-extra-strings) - (when (and (= lt-pos (1- (point))) - rng-complete-end-tags-after-< - rng-open-elements - (not (eq (car rng-open-elements) t)) - (or rng-collecting-text - (rng-match-save - (rng-match-end-tag)))) - (setq rng-complete-extra-strings - (cons (concat "/" - (if (caar rng-open-elements) - (concat (caar rng-open-elements) - ":" - (cdar rng-open-elements)) - (cdar rng-open-elements))) - rng-complete-extra-strings))) - (when (save-excursion - (re-search-backward rng-in-start-tag-name-regex - lt-pos - t)) - (and rng-collecting-text (rng-flush-text)) -;; (let ((completion -;; (let ((rng-complete-target-names -;; (rng-match-possible-start-tag-names)) -;; (rng-complete-name-attribute-flag nil)) - (let* ((orig (buffer-substring-no-properties (1+ lt-pos) (point))) - (rng-complete-target-names - (rng-match-possible-start-tag-names)) - (rng-complete-name-attribute-flag nil) - my-list - (olen (length orig))) - ;;(message "orig=%s, l=%s" orig olen)(sit-for 1) - (dolist (alt (rng-generate-qname-list)) - (when (string= orig - (if (> (length alt) olen) - (substring alt 0 olen) - alt)) - (setq my-list (cons alt my-list)))) - ;;(message "qnl=%s" (rng-generate-qname-list))(sit-for 2) - ;;(message "myl=%s" my-list) - ;;(message "%s" (try-completion "a" 'rng-complete-qname-function nil))(sit-for 2) - ;;(rng-complete-before-point (1+ lt-pos) 'rng-complete-qname-function "Tag: " nil 'rng-tag-history) - (let ((sets nil) - s-cdr) - (dolist (tg my-list) - (let (found) - (dolist (s nxhpcmpl-tag-sets) - (when (member tg (cdr s)) - (setq found t) - (let ((sets-entry (assq (car s) sets))) - (unless sets-entry - (setq sets (cons (list (car s)) sets)) - (setq sets-entry (assq (car s) sets))) - (setcdr sets-entry (cons tg (cdr sets-entry)))))) - (unless found - (let ((sets-entry (assq 'unsorted sets))) - (unless sets-entry - (setq sets (cons (list 'unsorted) sets)) - (setq sets-entry (assq 'unsorted sets))) - (setcdr sets-entry (cons tg (cdr sets-entry))))))) - (setq sets (sort sets (lambda(a b) - (string< (format "%s" b) - (format "%s" a))))) - (dolist (s sets) - (setcdr s (reverse (cdr s)))) - ;;(message "sets=%s" sets) - (let ((pop-map (make-sparse-keymap "Insert Tag"))) - (dolist (s sets) - (let ((k (make-sparse-keymap))) - (dolist (tg (cdr s)) - ;;(message "tg=%s" tg) - (define-key k - (read (format "[nx-%s]" tg)) - (list 'menu-item - (format "%s" (let ((h (gethash tg nxhtml-completion-hash))) - (if h h tg))) - `(lambda() - (interactive) - (unless (looking-back (concat "<" ,orig)) - (error "Not looking at %s" ,orig)) - (delete-char (- (length (match-string 0)))) - (insert "<" ,tg) - ;;(message "e=%s" ,tg) - ) - :value tg))) - (define-key pop-map - (read (format "[nxp-%s]" (car s))) - (list 'menu-item - (capitalize (format "%s" (car s))) - k)))) - ;;(message "pm=%s" pop-map) - (let ((where (appmenu-point-to-coord (point))) - (ret t)) - (condition-case err - (progn - (popup-menu pop-map where) - t) - (quit nil))))))))) - -(defconst nxhpcmpl-tag-sets nil) - -(defun nxhpcmpl-make-tag-sets(elt) - (let* ((group (nth 0 elt)) - (tag (nth 2 elt)) - (saved-grp (assq group nxhpcmpl-tag-sets)) - tmp - name - ) - (dolist (c (cdr (append tag nil))) - (unless name - (if (memq c '(?\ ?>)) - (setq name (concat (reverse tmp))) - (setq tmp (cons c tmp))))) - (unless name - (setq name (concat (reverse tmp)))) - ;;(message "group=%s, sg=%s, name=%s, tag=%s" group saved-grp name tag) - (if saved-grp - (let ((saved-cdr (cdr saved-grp))) - (unless (member name saved-cdr) - (setcdr saved-grp (cons name (cdr saved-grp))))) - (setq nxhpcmpl-tag-sets (cons (list group name) nxhpcmpl-tag-sets))) - )) - -(mapcar - 'nxhpcmpl-make-tag-sets - '( - ;;entities - (entity "\C-c#" "&#" "Ascii Code" ("&#" (r "Ascii: ") ";")) - (entity "\C-c\"" """ "Quotation mark" (""")) - (entity "\C-c$" "®" "Registered" ("®")) - (entity "\C-c@" "©" "Copyright" ("©")) - (entity "\C-c-" "­" "Soft Hyphen" ("­")) - (entity "\C-c " " " "Nonbreaking Space" (" ")) - (entity "\C-c&" "&" "Ampersand" ("&")) - (entity "\C-c>" ">" "Greater Than" (">")) - (entity "\C-c<" "<" "Less Than" ("<")) - ;; letters with accents common in italian - (entity nil "à" "a` (&à)" ("à")) - (entity nil "è" "e` (&è)" ("è")) - (entity nil "é" "e' (&é)" ("é")) - (entity nil "ò" "o` (&ò)" ("ò")) - (entity nil "ì" "i` (&ì)" ("ì")) - (entity nil "ù" "u` (&ù)" ("ù")) - - ;; logical styles - (logical nil "" "Blockquote" - ("
" (r "Quote: ") "
")) - (logical "c" "" "Code" - ("" (r "Code: ") "")) - (logical "x" "" "Sample" - ("" (r "Sample code") "")) - (logical "r" "" "Citation" - ("" (r "Citation: ") "")) - (logical "k" "" "Keyboard Input" - ("" (r "Keyboard: ") "")) - (logical "v" "" "Variable" - ("" (r "Variable: ") "")) - (logical "d" "" "Definition" - ("" (r "Definition: ") "")) - (logical "a" "
" "Address" - ("
" r "
")) - (logical "e" "" "Emphasized" - ("" (r "Text: ") "")) - (logical "s" "" "Strong" - ("" (r "Text: ") "")) - (logical "p" "
"		"Preformatted"
-	    ("
" (r "Text: ") "
")) - - ;;physical styles - (physical nil "") - (physical nil "") - (physical "s" "" "Strikethru" - ("" (r "Text: ") "")) - (physical "u" "" "Underline" - ("" (r "Text: ") "")) - (physical "i" "" "Italic" - ("" (r "Text: ") "")) - (physical "b" "" "Bold" - ("" (r "Text: ") "")) - (physical "f" "" "Fixed" - ("" (r "Text: ") "")) - (physical "c" "
" "Center" - ("
" (r "Text: ") "
")) - -;; html4.0 stuff, omitted - -; (physical "5" "" 'r "")) -; (physical "l" "" 'r "")) - - - (scripting nil "" "Header 6" - ("
" (r "Header: ") "
")) - (structure "5" "
" "Header 5" - ("
" (r "Header: ") "
")) - (structure "4" "

" "Header 4" - ("

" (r "Header: ") "

")) - (structure "3" "

" "Header 3" - ("

" (r "Header: ") "

")) - (structure "2" "

" "Header 2" - ("

" (r "Header: ") "

")) - (structure "1" "

" "Header 1" - ("

" (r "Header: ") "

")) - - ;; forms - (form nil "" "Option" - (& "
+ + +{% endblock %} + + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-a-notabs.html b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-a-notabs.html new file mode 100644 index 0000000000..61b64e3fa8 --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-a-notabs.html @@ -0,0 +1,57 @@ +{% load transdigest helpers %} + + + + + + + + + {% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %} + + + + + + {% block htmlhead %} + + {% endblock %} + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-b.html b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-b.html new file mode 100644 index 0000000000..89ac466591 --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-b.html @@ -0,0 +1,55 @@ + + + + + + + + {% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %} + + + + + + {% block htmlhead %} + + {% endblock %} + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-c.html b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-c.html new file mode 100644 index 0000000000..f797466190 --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-c.html @@ -0,0 +1,52 @@ + + + + + + + {% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %} + + + + + + {% block htmlhead %} + + {% endblock %} + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-d.html b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-d.html new file mode 100644 index 0000000000..f40fdf6217 --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-d.html @@ -0,0 +1,51 @@ + + + + + + {% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %} + + + + + + {% block htmlhead %} + + {% endblock %} + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-e.html b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-e.html new file mode 100644 index 0000000000..62aafe76e5 --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-e.html @@ -0,0 +1,50 @@ + + + + + + {% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %} + + + + + + {% block htmlhead %} + + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-f.html b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-f.html new file mode 100644 index 0000000000..ac73f84b2f --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-f.html @@ -0,0 +1,49 @@ + + + + + + {% block title %}{% translate "WELCOME_TO_POINTTEC" %}{% endblock %} + + + + + + + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-g.html b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-g.html new file mode 100644 index 0000000000..9d302ce89c --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-g.html @@ -0,0 +1,39 @@ + + + + + + + + + + + + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-h.html b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-h.html new file mode 100644 index 0000000000..5a0a166375 --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-h.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-i.html b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-i.html new file mode 100644 index 0000000000..66ed32f53e --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-i.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-j.html b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-j.html new file mode 100644 index 0000000000..e1beacd49c --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-j.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-k.html b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-k.html new file mode 100644 index 0000000000..9dc91e1947 --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing-k.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing.txt b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing.txt new file mode 100644 index 0000000000..dc3a6cf0a4 --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/kubica-080516-freezing.txt @@ -0,0 +1,10 @@ +The problem seems to have to do with the { block pagestyle } thing +below. If that is removed then the freezing does not happen. + + + + + + + + + + + + + + + + + + <?php echoMessage("website.title")?> + + + + + +
+ + + + + +
+ + <?php echoMessage(" title="">
+ + +
+ +
+ +
+ + '; + createNavigationLinks("navlinks",1); + echo '
'; + echo '
'; + } + + if(isDemo()){ + echo '
'; + echoMessage("admin.demo"); + echo "
"; + } + + ?> + + + +
diff --git a/elpa-to-submit/nxhtml/tests/in/rr-address-090304.php b/elpa-to-submit/nxhtml/tests/in/rr-address-090304.php new file mode 100644 index 0000000000..34cbe259d5 --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/rr-address-090304.php @@ -0,0 +1,4 @@ +
+ +Exhibitors button +
\ No newline at end of file diff --git a/elpa-to-submit/nxhtml/tests/in/rr-address-nxhtml.err b/elpa-to-submit/nxhtml/tests/in/rr-address-nxhtml.err new file mode 100644 index 0000000000000000000000000000000000000000..f06b0a05ec04b50fedf2fd532713970a488e8570 GIT binary patch literal 6647 zcmeHL>r>lC5a(M#0Vi$JOdcI(Awy!*oMrP&n2>4Ok~S^SX$b9f0&UOI*-|Xsd32`$ zo$3GH-IHX?V9H}M{gA?7`?Pnr+Q;v=x6+OVU_I^15yv@8IdW??$2Sxpt@PsW?_L zyQqr@s#>LqCu$c`6>!}ZQN&{93%9t?p%JVdM&i6tGxgto&T^NHvxTlL7~rDZ0{nHdLlhI z;2KodsctLq0xmm3gT#!3QP2{g`Fr8lF5!rq`$GXFpC}y1L|_9;SiwoC2JvIifl4DE zVt$18#{Wb}9-}e1pytH<9VWS#giNc%Fa(m(kfc)PDo*HchceWG@IQ?CmNVp)pW zo4A2I?n59E(qD6`ZNW{N2zZqH91EG&*3E@18B%+k8?Sr?1bM&+wW4$Qm~;~6rP`?Y z7?iDFFI57eY^x;ZCR7r5OQi-8Ks1%AlK0=v7KGX0)= zsY*3uNOv+}b^&gx6RJ6haBaPD7Z&S{`qPG6qK0JvLEqUSVv|ZK4&asUVHtrQRx6=3 zylo}uf)4fxd(Ql?JRz9P0~*ZJ$eDRS58Fp< zVGT|QAzm*)j=4e(yJEfRE;OG4=AOl&bYp&KB~RAi7oLQKS7?RO9uvOknE=G0hc!nd z@edj1!Rz@E)8SvjnV*MO5?X1yEfT=Wm|$+|y`bj+w7Azb3HL;`hF67Ic)CRVh>0Xo zNwpA`9DvyqLUdqGXLiqNcMg$NvfE15U{25GY_|suG=UtX?nSi#Tg-eR*cKH*%O#6fdv=Hd9>LSuCn-g-eQy9}!za@3Yg_djZ+mhh}4hmv<)i7Mjhw_pW_0H9hH|dy5apoUece z_s5)xbsE5!^8$YtX2$H|&v3kSeXKGyxnHSNCV!v4K7FI|DG9|`g(g>?kJ;d%;^~`s zz4$#{ui$9mhq217>05ZqrOH&L@;43|l^Z*^Kc_%fZd9&UZa*N|m$ddB?rJvivw)vP z6tB`${gYf5<$*|mC#Tm%M&Rfm^o4|hP#hY}3rj=?D<5m8(xVcn0Y?ZaDmA6WEzz-A zG+0ntX{R((P%YDAlUVJ81!mEzrSS>ti?ef+taB!(tQ)nGsb_-&OCIKG*eDAowA$lQ zbd+;G#FLKJ66D^Cq@}bt)!2PlszJ4C0b!5qT50L|Fk9SeU|vqwR1;mWW>8S^3_&vr zB2xf6SRQO7`vZo{GD`+2I?ch{v3*!Bmy$j`su|m580CyF)jQfy#Y3Yb;bghV%fw)# zC2@`R2s}Wl7v5Mhj})*_GHO$8O}d=6KD4qrG>#xz-6NDW?-ETWX71g03T8}BRVIl^ z#E`G;-?uYF9wJ9po~U!oDpgh{$w-uFd`z&-id~fr2bC<(V}}+|k+btmr!8$llbQ@~ zVH;s-Ta#0k3xm%$St1Hx^b?4wA;q;mg3shfQNVIl!=yy&o1g@W5*#vsl+tu;XA`$A zEv*1Tf)))&f0-D32jkvY#Z%zHd>&eh>j9kmFdsy)AZFn>F@hPz`bQ*~f-T4GA#Wwe5Fp>8yQXQa~%Z(=8aWI?L=&BXxAs9L96p`&i>c4M=E^oqOW634ZmHV1Z zw*2vQWayA(R`$Dm)sC_M^AFfT> zO1JoyqQ`fYJceE*=!rGL<``eI+Bd25TiF|v`TXscbBP^1=>k4m_1`Mv>#(?2ye<6) DiWrO- literal 0 HcmV?d00001 diff --git a/elpa-to-submit/nxhtml/tests/in/temp3.html b/elpa-to-submit/nxhtml/tests/in/temp3.html new file mode 100644 index 0000000000..276b754db8 --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/temp3.html @@ -0,0 +1,44 @@ + + + + + News and Notes about nXhtml + + + + +
+ +
+

To nXhtml main page

+ +

News and Notes about nXhtml

+ +
+ +
Thanks for testing!
+
diff --git a/elpa-to-submit/nxhtml/tests/in/wiki-080708-ind-problem.rhtml b/elpa-to-submit/nxhtml/tests/in/wiki-080708-ind-problem.rhtml index a75331a451..d51d116674 100644 --- a/elpa-to-submit/nxhtml/tests/in/wiki-080708-ind-problem.rhtml +++ b/elpa-to-submit/nxhtml/tests/in/wiki-080708-ind-problem.rhtml @@ -1,5 +1,5 @@ <%= t("Hola") %> - <%= link_to name, target %> + <%= ink_to name, target %> <% if quiero do %> <%= do_something_nifty(with_me) %> <% end %> diff --git a/elpa-to-submit/nxhtml/tests/in/wiki-090804-js.html b/elpa-to-submit/nxhtml/tests/in/wiki-090804-js.html new file mode 100644 index 0000000000..2762ed954d --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/wiki-090804-js.html @@ -0,0 +1,32 @@ + + + + + + + + + + +some stuff

+

some other stuff

+ + + +EOTHTML; + +?> + + diff --git a/elpa-to-submit/nxhtml/tests/in/zn-090529-doxysample.php b/elpa-to-submit/nxhtml/tests/in/zn-090529-doxysample.php new file mode 100644 index 0000000000..3eddd90db3 --- /dev/null +++ b/elpa-to-submit/nxhtml/tests/in/zn-090529-doxysample.php @@ -0,0 +1,37 @@ + + * @date Fri May 29 15:28:06 2009 + * + * @brief Example file commented with Doxygen (via doxymacs) + * + * Longer description of what this file is + * Possibly multiline + */ + + +/** + * Echos the parameter + * + * @param text Text to echo + * + * @return EOL message + */ +function say($text) +{ + echo $text; + return "I spoketh."; +} +?> + +
+This is HTML, so the following has no special meaning: +/** + * Fake comment + * + * @param whatever Foo + * + * @return bar + */ +
diff --git a/elpa-to-submit/nxhtml/util/mumamo-test.el b/elpa-to-submit/nxhtml/tests/mumamo-test.el similarity index 68% rename from elpa-to-submit/nxhtml/util/mumamo-test.el rename to elpa-to-submit/nxhtml/tests/mumamo-test.el index 60337341a6..198e242d7e 100644 --- a/elpa-to-submit/nxhtml/util/mumamo-test.el +++ b/elpa-to-submit/nxhtml/tests/mumamo-test.el @@ -25,6 +25,10 @@ ;; ;;; Code: +;;(eval-when-compile (require 'mumamo)) +(require 'mumamo) +(require 'whelp) + ;;;;;;; TESTS, run in fundamental-mode buffer (defvar mumamo-test-mode-keymap @@ -35,6 +39,9 @@ (define-key map [f3] 'mumamo-test-create-chunk-at-point) map)) +(defvar mumamo-test-current-chunk-family nil) +(make-variable-buffer-local 'mumamo-test-current-chunk-family) + (define-minor-mode mumamo-test-mode "For testing creating mumamo-mode chunks. When this mode is on the following keys are defined: @@ -56,29 +63,27 @@ When this mode is on the following keys are defined: ) (defun mumamo-test-tell-bindings () - (let ((s "mumamo-test-mode is on, use F3/shift-F3 for simple testing")) - (put-text-property 0 (length s) - 'face 'font-lock-warning-face - s) - (message "%s" s))) + (save-match-data ;; runs in timer + (let ((s "mumamo-test-mode is on, use F3/shift-F3 for simple testing")) + (put-text-property 0 (length s) + 'face 'font-lock-warning-face + s) + (message "%s" s)))) ;;(mumamo-test-mode 1) -(defun mumamo-test-fontify-buffer () - (interactive) - (unless mumamo-current-chunk-family - (mumamo-select-chunk-family)) - (when mumamo-mode - (mumamo-mode 0)) - (save-excursion - (mumamo-remove-all-chunk-overlays) - (mumamo-save-buffer-state nil - (put-text-property (point-min) (point-max) 'face nil)) - (mumamo-fontify-buffer))) - -(defvar mumamo-test-current-chunk-family nil) -(make-variable-buffer-local 'mumamo-test-current-chunk-family) +;; (defun mumamo-test-fontify-buffer () +;; (interactive) +;; (unless mumamo-current-chunk-family +;; (mumamo-select-chunk-family)) +;; ;;(when mumamo-mode (mumamo-mode 0)) +;; (when mumamo-multi-major-mode (mumamo-turn-off-actions)) +;; (save-excursion +;; (mumamo-remove-all-chunk-overlays) +;; (mumamo-save-buffer-state nil +;; (put-text-property (point-min) (point-max) 'face nil)) +;; (mumamo-fontify-buffer))) (defun mumamo-test-create-chunk-at-point () (interactive) @@ -94,15 +99,18 @@ When this mode is on the following keys are defined: chunk chunk2) (mumamo-save-buffer-state nil - (setq chunk (mumamo-create-chunk-at here))) - (setq chunk2 (mumamo-get-chunk-at here)) + ;;(setq chunk (mumamo-create-chunk-at here))) + (setq chunk (mumamo-find-chunks here "test1"))) + ;;(setq chunk2 (mumamo-get-chunk-at here)) + (setq chunk2 (mumamo-find-chunks here "set chunk2")) ;;(message "mumamo-test-create-chunk-at-point.chunk 1=%s" chunk) ;;(lwarn 'test-create-chunk-at :warning "chunk=%s, chunk2=%s" chunk chunk2) ;;(when (overlay-buffer chunk) (assert (eq chunk chunk2)) ;;) ;;(message "mumamo-test-create-chunk-at-point.chunk 2=%s" chunk) - (syntax-ppss-flush-cache (1- (overlay-start chunk))) + ;;(syntax-ppss-flush-cache (1- (overlay-start chunk))) + (syntax-ppss-flush-cache (overlay-start chunk)) (let ((start (overlay-start chunk)) (end (overlay-end chunk))) ;;(setq syntax-ppss-last (cons 319 (parse-partial-sexp 1 1))) @@ -114,7 +122,9 @@ When this mode is on the following keys are defined: ;;(message "mumamo-test-create-chunk-at-point.chunk 4=%s" chunk) chunk ;;(message "test 2.debugger=%s" debugger) - (mumamo-get-chunk-at here)))) + ;;(mumamo-get-chunk-at here) + (mumamo-find-chunks here "return value") + ))) (defun mumamo-test-create-chunks-at-all-points () (interactive) @@ -122,7 +132,8 @@ When this mode is on the following keys are defined: (let (last-ovl this-ovl) (while (< (point) (point-max)) - (setq this-ovl (mumamo-test-create-chunk-at-point)) + ;;(setq this-ovl (mumamo-test-create-chunk-at-point)) + (setq this-ovl (mumamo-find-chunks (point) "test loop")) ;;(message "this-ovl=%s" this-ovl) (sit-for 0.01) ;;(sit-for 0) @@ -146,45 +157,56 @@ When this mode is on the following keys are defined: (mumamo-fontify-region (point-min) (point-max) t))) ;; Fix-me: can't byte compile: -(defun mumamo-test-easy-make () - (interactive) - (let ((start-str "--Start Submode:") - (end-str "--End Submode--") - (start-reg nil)) - (setq start-reg (rx - (eval start-str) - (0+ space) - (submatch - (0+ (any "a-z-"))) - (0+ space) - "--" - )) - (mumamo-easy-make-chunk-fun testchunk - start-str - start-reg - end-str)) - (setq mumamo-current-chunk-family - (list "testing" - 'text-mode - (list - 'testchunk - )))) +;; (defun mumamo-test-easy-make () +;; (interactive) +;; (let ((start-str "--Start Submode:") +;; (end-str "--End Submode--") +;; (start-reg nil)) +;; (setq start-reg +;; ;; (rx +;; ;; (eval start-str) +;; ;; (0+ space) +;; ;; (submatch +;; ;; (0+ (any "a-z-"))) +;; ;; (0+ space) +;; ;; "--" +;; ;; ) +;; (rx-to-string +;; `(and +;; ,start-str +;; (0+ space) +;; (submatch +;; (0+ (any "a-z-"))) +;; (0+ space) +;; "--" +;; )) +;; ) +;; (mumamo-easy-make-chunk-fun testchunk +;; start-str +;; start-reg +;; end-str)) +;; (setq mumamo-current-chunk-family +;; (list "testing" +;; 'text-mode +;; (list +;; 'testchunk +;; )))) -(defun mumamo-test-emb-perl () - (interactive) - (let ((start-str "[-") - (end-str "-]") - (start-reg nil)) - (mumamo-easy-make-chunk-fun testchunk-ep - start-str - start-reg - end-str)) - (setq mumamo-current-chunk-family - (list "emb perl test" - 'perl-mode - (list - 'testchunk-ep - )))) +;; (defun mumamo-test-emb-perl () +;; (interactive) +;; (let ((start-str "[-") +;; (end-str "-]") +;; (start-reg nil)) +;; (mumamo-easy-make-chunk-fun testchunk-ep +;; start-str +;; start-reg +;; end-str)) +;; (setq mumamo-current-chunk-family +;; (list "emb perl test" +;; 'perl-mode +;; (list +;; 'testchunk-ep +;; )))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -227,17 +249,17 @@ When this mode is on the following keys are defined: ;; (dbg-ret (mapconcat 'identity (nthcdr 6 debugger-lines) "\n"))) ;; (concat errmsg "\n" dbg-ret)))))) -(defun mumamo-test3-debug() - (interactive) - (message "%s" - (mumamo-get-backtrace - (mumamo-test-major-mode-init 'php-mode)))) +;; (defun mumamo-test3-debug() +;; (interactive) +;; (message "%s" +;; (mumamo-get-backtrace +;; (mumamo-test-major-mode-init 'php-mode)))) -(defun mumamo-test2-debug() - (interactive) - (mumamo-condition-case var - (mumamo-test-major-mode-init 'php-mode) - handlers)) +;; (defun mumamo-test2-debug() +;; (interactive) +;; (mumamo-condition-case var +;; (mumamo-test-major-mode-init 'php-mode) +;; handlers)) (defun mumamo-test-debug() (interactive) @@ -274,7 +296,7 @@ Send the traceback you get, if any, together with the message in the message buffer when reporting the error." (interactive "CMajor mode: ") (with-temp-buffer - (setq mumamo-explicitly-turned-on-off t) + ;;(setq mumamo-explicitly-turned-on-off t) (setq debug-on-error t) (funcall major))) diff --git a/elpa-to-submit/nxhtml/tests/nxhtmltest-Q.el b/elpa-to-submit/nxhtml/tests/nxhtmltest-Q.el index 7b51f8e91e..665281f3eb 100644 --- a/elpa-to-submit/nxhtml/tests/nxhtmltest-Q.el +++ b/elpa-to-submit/nxhtml/tests/nxhtmltest-Q.el @@ -44,9 +44,17 @@ ;; ;;; Code: +(require 'cl) +(require 'ourcomments-util) -(defvar nxhtmltest-bin-Q - (file-name-directory (if load-file-name load-file-name buffer-file-name))) +(eval-and-compile + (defvar nxhtmltest-bin-Q + (file-name-directory (or load-file-name + (when 'bytecomp-filename bytecomp-filename) + buffer-file-name))) + + (add-to-list 'load-path nxhtmltest-bin-Q) + (require 'nxhtmltest-helpers)) ;;;###autoload (defun nxhtmltest-run-Q () diff --git a/elpa-to-submit/nxhtml/tests/nxhtmltest-helpers.el b/elpa-to-submit/nxhtml/tests/nxhtmltest-helpers.el index 6122b168fc..7916359535 100644 --- a/elpa-to-submit/nxhtml/tests/nxhtmltest-helpers.el +++ b/elpa-to-submit/nxhtml/tests/nxhtmltest-helpers.el @@ -44,17 +44,15 @@ ;; ;;; Code: +(eval-when-compile (require 'cl)) (require 'ert2) (defun nxhtmltest-mumamo-error-messages () - (ert-get-messages "^MuMaMo error")) + (ert-get-messages "^MU:MuMaMo error")) (defun nxhtmltest-should-no-mumamo-errors () (ert-should (not (nxhtmltest-mumamo-error-messages)))) -(defun nxhtmltest-mumamo-error-messages () - (ert-get-messages "^MuMaMo error")) - (defun nxhtmltest-should-no-nxml-errors () (ert-should (not (ert-get-messages "Internal nXML mode error")))) @@ -103,10 +101,14 @@ (defun nxhtmltest-fontify-as-usual (seconds prompt-mark) (font-lock-mode 1) - (font-lock-wait (nxhtmltest-be-really-idle seconds prompt-mark))) + ;; This does not work now since I deleted the function below: + (error "font-lock-wait not defined") + ;;(font-lock-wait (nxhtmltest-be-really-idle seconds prompt-mark)) + ) (defun nxhtmltest-fontify-w-timers-handlers () - (dolist (timer (copy-list timer-idle-list)) + ;;(dolist (timer (copy-list timer-idle-list)) + (dolist (timer (copy-sequence timer-idle-list)) (timer-event-handler timer)) (redisplay t)) diff --git a/elpa-to-submit/nxhtml/tests/nxhtmltest-suites.el b/elpa-to-submit/nxhtml/tests/nxhtmltest-suites.el index af73f54f9d..9a9db12169 100644 --- a/elpa-to-submit/nxhtml/tests/nxhtmltest-suites.el +++ b/elpa-to-submit/nxhtml/tests/nxhtmltest-suites.el @@ -42,7 +42,14 @@ ;; ;;; Code: -(eval-when-compile (require 'cl)) +;;(eval-when-compile (require 'cl)) +(require 'cl) +(require 'mumamo) +(require 'nxhtml) +(require 'nxhtml-mumamo) +(when (fboundp 'nxml-mode) + (require 'rng-valid) + (require 'rngalt)) (setq debug-on-error t) @@ -67,11 +74,11 @@ (when (file-directory-p distr-in) (setq nxhtmltest-files-root distr-in))) -(setq nxhtmltest-update-method - ;;'font-lock-wait - 'font-lock-run-timers - ;;'font-lock-fontify-buffer - ) +;; (setq nxhtmltest-update-method +;; ;;'font-lock-wait +;; 'font-lock-run-timers +;; ;;'font-lock-fontify-buffer +;; ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Define tests using ert.el @@ -80,7 +87,7 @@ "Test for bug 300946 in Launchpad. See URL `https://bugs.launchpad.net/nxhtml/+bug/300946'. This is a test for the file attached by Chris on 2008-12-02." - (ert-with-temp-buffer-include-file "bug-290364.php" + (ert-with-temp-buffer-include-file "bug-300946-index.html" (add-hook 'ert-simulate-command-post-hook 'nxhtmltest-should-no-mumamo-errors nil t) @@ -89,8 +96,8 @@ a test for the file attached by Chris on 2008-12-02." )) (ert-deftest nxhtml-ert-indent-bug290364 () - "Test for bug 271497 in Launchpad. -See URL `https://bugs.launchpad.net/nxhtml/+bug/271497'. + "Test for bug 290364 in Launchpad. +See URL `https://bugs.launchpad.net/nxhtml/+bug/290364'. Note: If this test fails Emacs loops. Therefore the whole test is included in a when clause so you can avoid it easily." @@ -106,6 +113,7 @@ is included in a when clause so you can avoid it easily." (ert-deftest nxhtml-ert-indent-bug271497 () "Test for bug 271497 in Launchpad. +This is a bug in Emacs 22. It should work in Emacs 23 though. See URL `https://bugs.launchpad.net/nxhtml/+bug/271497'." (ert-with-temp-buffer-include-file "bug271497.txt" (add-hook 'ert-simulate-command-post-hook @@ -113,17 +121,34 @@ See URL `https://bugs.launchpad.net/nxhtml/+bug/271497'." nil t) (load-file (ert-get-test-file-name "bug271497.el")) (ert-simulate-command '(bug271497-mumamo) t) - (font-lock-mode 1) + ;;(font-lock-mode 1) + (nxhtmltest-fontify-default-way 2 "trans") (ert-simulate-command '(goto-char 42) t) + (message "after goto-char 42") (let ((ac42 after-change-functions) ac88) (ert-simulate-command '(goto-char 88) t) + (message "after goto-char 88") (setq ac88 after-change-functions) (ert-should (not (equal ac88 ac42)))))) (ert-deftest nxhtml-ert-indent-question43320 () "Test for question 43320 in Launchpad. -See URL `https://answers.launchpad.net/nxhtml/+question/43320'." +See URL `https://answers.launchpad.net/nxhtml/+question/43320'. + +Note: This fails in Emacs 22, but should work in Emacs 23." +;; I did see some problem here: + +;; - nXhtml 081222 + unpatched Emacs 081219 => ok +;; - nXhtml 081222 + unpatched Emacs 081124 => ok +;; - nXhtml 081222 + patched Emacs 081219 => ok + +;; - nXhtml 081222 + patched Emacs 081124 => ok, but it fails if I +;; use `nxhtmltest-run-Q'! I e, it fails if the autostart.el from +;; the nxhtml dir in 081222 is used - but not if the copy in +;; c:/EmacsW32 is used??? Which turned out to be if the old +;; php-mode was used ... + (ert-with-temp-buffer-include-file "question43320.html" (add-hook 'ert-simulate-command-post-hook 'nxhtmltest-should-no-mumamo-errors @@ -145,7 +170,9 @@ See URL `https://answers.launchpad.net/nxhtml/+question/43320'." (goto-line 22) (ert-should (= 6 (current-indentation))) (goto-line 25) (ert-should (= 4 (current-indentation))) (goto-line 8) (indent-line-to 0) + ;;(message "before indent-for-tab-command") (ert-simulate-command '(indent-for-tab-command) t) + ;;(message "after indent-for-tab-command") (ert-should (= 8 (current-indentation))) ;; (set (make-local-variable 'mumamo-submode-indent-offset-0) 0) @@ -180,9 +207,9 @@ See URL `https://answers.launchpad.net/nxhtml/+question/43320'." (ert-deftest nxhtml-ert-xhtml-1.0-transitional () "Test XHTML 1.0 Transitional with `nxhtml-mumamo-mode'. -This test should fail because there is currently no rng schema -for transitional. The schema for strict is used instead and the -file is invalid then." +NOTICE: This test SHOULD FAIL because there is currently no rng +schema for transitional. The schema for strict is used instead +and the file is invalid then." (ert-with-temp-buffer-include-file "lg-080813-label.html" (nxhtml-mumamo-mode) (nxhtmltest-fontify-default-way 2 "trans") @@ -193,11 +220,12 @@ file is invalid then." ;;; (ert-should ;;; (not (eq (get-char-property 398 'category) ;;; 'rng-error))) - (ert-should - (= 0 rng-error-count)) (ert-should (eq (get-text-property 398 'face) - 'font-lock-function-name-face)))) + 'font-lock-function-name-face)) + (ert-should-not + (= 0 rng-error-count)) + )) (ert-deftest nxhtml-ert-genshi-valid-in-genshi () (ert-with-temp-buffer-include-file "genshi-auto-mode.html" @@ -208,7 +236,8 @@ file is invalid then." (ert-should (eq font-lock-mode t)) (ert-should (eq major-mode 'nxhtml-genshi-mode)) (ert-should - (eq mumamo-multi-major-mode 'genshi-nxhtml-mumamo-mode)) + (memq mumamo-multi-major-mode '(genshi-nxhtml-mumamo-mode + genshi-html-mumamo-mode))) (nxhtmltest-fontify-default-way 2 "sheit") (rng-validate-mode 1) (rngalt-validate) @@ -244,7 +273,8 @@ file is invalid then." (nxhtmltest-should-no-mumamo-errors) (ert-should (with-current-buffer buf1 - (eq mumamo-multi-major-mode 'genshi-nxhtml-mumamo-mode))) + (memq mumamo-multi-major-mode '(genshi-nxhtml-mumamo-mode + genshi-html-mumamo-mode)))) (kill-buffer buf1))) (ert-deftest nxhtml-ert-genshi-auto-mode () @@ -260,7 +290,8 @@ file is invalid then." (nxhtmltest-should-no-mumamo-errors) (ert-should (with-current-buffer buf1 - (eq mumamo-multi-major-mode 'genshi-nxhtml-mumamo-mode))) + (memq mumamo-multi-major-mode '(genshi-nxhtml-mumamo-mode + genshi-html-mumamo-mode)))) (kill-buffer buf1))) (ert-deftest nxhtml-ert-opened-modified () @@ -297,6 +328,7 @@ file is invalid then." (nxhtmltest-fontify-default-way 2 "hili") (goto-char 44) (nxhtmltest-should-no-mumamo-errors) + (message "face at 44=%s" (get-text-property 44 'face)) (ert-should (eq (get-text-property 44 'face) 'font-lock-function-name-face)))) @@ -319,6 +351,12 @@ file is invalid then." (ert-should (= (current-indentation) 0))))) (ert-deftest nxhtml-ert-indent-wiki-080708-ind-problem-a () + "From a report on EmacsWiki. +NOTICE: This SHOULD FAIL. There is currently no support for the +kind of indentation needed here. + +Notice 2: For some reason I sometimes get the error overlayp, nil +here." (ert-with-temp-buffer-include-file "wiki-080708-ind-problem.rhtml" (require 'ruby-mode nil t) (if (not (featurep 'ruby-mode)) @@ -333,7 +371,7 @@ file is invalid then." (goto-line 3) ;; Test (nxhtmltest-should-no-mumamo-errors) - (ert-should (= (current-indentation) 2))))) + (ert-should-not (= (current-indentation) 2))))) (ert-deftest nxhtml-ert-sheit-2007-12-26 () (ert-with-temp-buffer-include-file "sheit-2007-12-26.php" diff --git a/elpa-to-submit/nxhtml/util/appmenu-fold.el b/elpa-to-submit/nxhtml/util/appmenu-fold.el index ade4a6ae7f..8ca3811a1b 100644 --- a/elpa-to-submit/nxhtml/util/appmenu-fold.el +++ b/elpa-to-submit/nxhtml/util/appmenu-fold.el @@ -49,6 +49,7 @@ ;;; Code: (require 'fold-dwim nil t) +(eval-when-compile (require 'appmenu)) (when (featurep 'fold-dwim) diff --git a/elpa-to-submit/nxhtml/util/appmenu.el b/elpa-to-submit/nxhtml/util/appmenu.el index 6b528ebf83..d3b019a89b 100644 --- a/elpa-to-submit/nxhtml/util/appmenu.el +++ b/elpa-to-submit/nxhtml/util/appmenu.el @@ -2,7 +2,7 @@ ;; Copyright (C) 2008 by Lennart Borgman -;; Author: Lennart Borgman +;; Author: Lennart Borgman ;; Created: Thu Jan 05 14:00:26 2006 (defconst appmenu:version "0.62") ;; Version: ;; Last-Updated: 2008-06-15T17:54:40+0200 Sun @@ -78,7 +78,7 @@ The entries in this list are lists: \(ID PRIORITY TEST TITLE DEFINITION) -ID is a uniqure identity. +ID is a unique identity. PRIORITY is a number or a variable whose value is a number telling where to put this entry when showing the menu. @@ -106,6 +106,7 @@ For an example of use see mlinks.el.") (when (symbolp priB) (setq priB (symbol-value priB))) (< priA priB)))))) +;;;###autoload (defun appmenu-add (id priority test title definition) "Add entry to `appmenu-alist'. Add an entry to this list with ID, PRIORITY, TEST, TITLE and @@ -134,42 +135,59 @@ DEFINITION as explained there." ml)) (defvar appmenu-mouse-only - '(flyspell-correct-word)) + '((flyspell-correct-word appmenu-flyspell-correct-word-before-point))) + +(defun appmenu-flyspell-correct-word-before-point () + "Pop up a menu of possible corrections for misspelled word before point. +Special version for AppMenu." + (interactive) + (flyspell-correct-word-before-point)) + +(defcustom appmenu-at-any-point '(ispell-word) + "Commands that may work at any point in a buffer. +Some important but not too often used commands that may be useful +for most points in a buffer." + :group 'appmenu) (defun appmenu-make-menu-for-point () - "Construct a menu based on point keymap." + "Construct a menu based on point. +This includes some known commands for point and keymap at +point." (let ((point-map (get-char-property (point) 'keymap)) - funs + (funs appmenu-at-any-point) (map (make-sparse-keymap "At point")) (num 0) last-prefix this-prefix) + ;; Known for any point (when point-map (let ((map-fun (lambda (key fun) (if (keymapp fun) (map-keymap map-fun fun) (when (and (symbolp fun) - (fboundp fun) - (not (memq fun appmenu-mouse-only))) - (add-to-list 'funs fun)))))) - (map-keymap map-fun point-map)) - (dolist (fun funs) - (let ((desc (when fun (documentation fun)))) - (when desc - (setq desc (car (split-string desc "[\n]"))) - ;;(lwarn t :warning "pk: %s, %s" fun desc) - (setq this-prefix - (car (split-string (symbol-name fun) "[-]"))) - (when (and last-prefix - (not (string= last-prefix this-prefix))) - (define-key map - (vector (intern (format "appmenu-point-div-%s" num))) - (list 'menu-item "--"))) - (setq last-prefix this-prefix) - (setq num (1+ num)) + (fboundp fun)) + (let ((mouse-only (assq fun appmenu-mouse-only))) + (when mouse-only + (setq fun (cadr mouse-only))) + (add-to-list 'funs fun))))))) + (map-keymap map-fun point-map))) + (dolist (fun funs) + (let ((desc (when fun (documentation fun)))) + (when desc + (setq desc (car (split-string desc "[\n]"))) + ;;(lwarn t :warning "pk: %s, %s" fun desc) + (setq this-prefix + (car (split-string (symbol-name fun) "[-]"))) + (when (and last-prefix + (not (string= last-prefix this-prefix))) (define-key map - (vector (intern (format "appmenu-point-%s" num))) - (list 'menu-item desc fun)))))) + (vector (intern (format "appmenu-point-div-%s" num))) + (list 'menu-item "--"))) + (setq last-prefix this-prefix) + (setq num (1+ num)) + (define-key map + (vector (intern (format "appmenu-point-%s" num))) + (list 'menu-item desc fun))))) (when (> num 0) map))) (defun appmenu-map () diff --git a/elpa-to-submit/nxhtml/util/as-external.el b/elpa-to-submit/nxhtml/util/as-external.el index 25ba48768a..7777d4ce37 100644 --- a/elpa-to-submit/nxhtml/util/as-external.el +++ b/elpa-to-submit/nxhtml/util/as-external.el @@ -3,14 +3,14 @@ ;; Author: Lennart Borgman (lennart O borgman A gmail O com) ;; Created: Mon Jun 25 19:02:49 2007 (defconst as-external:version "0.6") ;;Version: -;; Last-Updated: 2008-09-30T11:44:43+0200 Tue +;; Last-Updated: 2009-08-04 Tue ;; URL: ;; Keywords: ;; Compatibility: ;; ;; Features that might be required by this library: ;; -;; `server'. +;; None ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; @@ -61,7 +61,16 @@ ;; ;;; Code: -(require 'server) +(eval-when-compile (require 'cl)) +(eval-when-compile (require 'html-write)) +(eval-when-compile (require 'mumamo)) +(eval-when-compile (require 'ourcomments-util)) +(eval-when-compile + (when (featurep 'nxml-mode) + (require 'nxhtml) + (require 'nxhtml-mumamo))) +(eval-when-compile (require 'wikipedia-mode)) +(eval-when-compile (require 'server)) (defgroup as-external nil "Settings related to Emacs as external editor." @@ -146,11 +155,13 @@ blog. Therefore turn on these: Also bypass the question for line end conversion when using emacsw32-eol." (interactive) - (if (not (fboundp 'nxhtml-mumamo-mode)) + ;;(if (not (fboundp 'nxhtml-mumamo-mode)) + (if (not (fboundp 'nxhtml-mode)) (as-external-fall-back "Can't find nXhtml") - (nxhtml-mumamo-mode) + ;;(nxhtml-mumamo-mode) + (nxhtml-mode) (nxhtml-validation-header-mode 1) - (mumamo-post-command) + ;;(mumamo-post-command) (set (make-local-variable 'wrap-to-fill-left-marg-modes) '(nxhtml-mode fundamental-mode)) (wrap-to-fill-column-mode 1) @@ -220,11 +231,14 @@ See also `as-external-mode'." ;;;###autoload (define-minor-mode as-external-mode - "If non-nil check for if Emacs is used as external editor. -When Emacs is used 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. + "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." :global t @@ -235,6 +249,7 @@ See `as-external-alist' for more information." as-external-its-all-text-regexp (cons as-external-its-all-text-coding as-external-its-all-text-coding)))) + ;;(message "as-external-mode=%s" as-external-mode) (if as-external-mode (progn (add-to-list 'file-coding-system-alist coding-entry) diff --git a/elpa-to-submit/nxhtml/util/bw-rnc-load/mjt.rnc b/elpa-to-submit/nxhtml/util/bw-rnc-load/mjt.rnc deleted file mode 100644 index b37f01adf8..0000000000 --- a/elpa-to-submit/nxhtml/util/bw-rnc-load/mjt.rnc +++ /dev/null @@ -1,74 +0,0 @@ -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/elpa-to-submit/nxhtml/util/bw-rnc-load/qtmstr-xhtml.rnc b/elpa-to-submit/nxhtml/util/bw-rnc-load/qtmstr-xhtml.rnc deleted file mode 100644 index 61ab89eec5..0000000000 --- a/elpa-to-submit/nxhtml/util/bw-rnc-load/qtmstr-xhtml.rnc +++ /dev/null @@ -1,58 +0,0 @@ -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/elpa-to-submit/nxhtml/util/bw-rnc-load/schema-find.el b/elpa-to-submit/nxhtml/util/bw-rnc-load/schema-find.el deleted file mode 100644 index 8fe12b3482..0000000000 --- a/elpa-to-submit/nxhtml/util/bw-rnc-load/schema-find.el +++ /dev/null @@ -1,18 +0,0 @@ - -(defun find-nxml (lst) - (if (null lst) - nil - (if (string-match "nxml" (car lst)) - (car lst) - (find-nxml (cdr lst))))) -find-nxml - - -(defun check-loader () - (let ((loader-path "./emacs/site-lisp/nxhtml/etc/schema/xhtml-loader.rnc")) - (if (file-exists-p loader-path) - nil - (progn (find-file loader-path) - (insert (concat "include \"" (find-nxml load-path) "/../../etc/schema/xhtml.rnc\"")) - (save-buffer) - (kill-this-buffer))))) diff --git a/elpa-to-submit/nxhtml/util/bw-rnc-load/xinclude.rnc b/elpa-to-submit/nxhtml/util/bw-rnc-load/xinclude.rnc deleted file mode 100644 index c45cf0ca81..0000000000 --- a/elpa-to-submit/nxhtml/util/bw-rnc-load/xinclude.rnc +++ /dev/null @@ -1,11 +0,0 @@ -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/elpa-to-submit/nxhtml/util/chart.el b/elpa-to-submit/nxhtml/util/chart.el index 5d0107beec..110da361b0 100644 --- a/elpa-to-submit/nxhtml/util/chart.el +++ b/elpa-to-submit/nxhtml/util/chart.el @@ -1,8 +1,8 @@ ;;; chart.el --- Google charts (and maybe other) ;; ;; Author: Lennart Borgman (lennart O borgman A gmail O com) -;; Created: 2008-04-06T15:09:33+0200 Sun -;; Version: +;; Created: 2008-04-06 Sun +(defconst chart:version "0.2") ;; Version: ;; Last-Updated: ;; URL: ;; Keywords: @@ -73,6 +73,85 @@ (symbol-name (car rec))) chart-types)) +(defvar chart-mode-keywords-and-states + '(("Output-file:" (accept file-name)) + ("Size:" (accept number)) + ("Data:" (accept number)) + ("Type:" (accept chart-type)) + )) + +(defvar chart-mode-keywords + (mapcar (lambda (rec) + (car rec)) + chart-mode-keywords-and-states)) + +;; Fix-me: I started to implement a parser, but I think I will drop it +;; and wait for Semantic to be easily available instead. Or just use +;; Calc/Org Tables. + +(defvar chart-intermediate-states + '((end-or-label (or end-of-file label)) + )) + +(defvar chart-extra-keywords-and-states + '( + ;;("Provider:") + ("Colors:") + ("Solid-fill:") + ("Linear-gradient:") + ("Linear-stripes:") + ("Chart-title:" (and string end-or-label)) + ("Legends:" (accept string)) + ("Axis-types:") + ("Axis-labels:") + ("Axis-ranges:") + ("Axis-styles:") + ("Bar-thickness:") + ("Bar-chart-zero-line:") + ("Bar-chart-zero-line-2:") + ("Line-styles-1:") + ("Line-styles-2:") + ("Grid-lines:") + ("Shape-markers:") + ("Range-markers:") + )) + +(defvar chart-extra-keywords + (mapcar (lambda (rec) + (car rec)) + chart-extra-keywords-and-states)) + +(defvar chart-raw-keywords-and-states + '( + ("Google-chart-raw:" (accept string)) + )) + +(defvar chart-raw-keywords + (mapcar (lambda (rec) + (car rec)) + chart-raw-keywords-and-states)) + +(defvar chart-mode-keywords-re (regexp-opt chart-mode-keywords)) +(defvar chart-extra-keywords-re (regexp-opt chart-extra-keywords)) +(defvar chart-types-keywords-re (regexp-opt chart-types-keywords)) +(defvar chart-raw-keywords-re (regexp-opt chart-raw-keywords)) + +(defvar chart-font-lock-keywords + `((,chart-mode-keywords-re . font-lock-keyword-face) + (,chart-extra-keywords-re . font-lock-variable-name-face) + (,chart-types-keywords-re . font-lock-function-name-face) + (,chart-raw-keywords-re . font-lock-preprocessor-face) + )) + +(defvar chart-font-lock-defaults + '(chart-font-lock-keywords nil t)) + +(defvar chart-mode-syntax-table + (let ((table (make-syntax-table))) + (modify-syntax-entry ?\n "> " table) + (modify-syntax-entry ?\; "< " table) + table)) + (defun chart-create (provider out-file size data type title legends &optional extras) "Create a chart image. @@ -181,7 +260,8 @@ be a list (list COLOR START-INDEX END-INDEX) " - (interactive) + (message "(chart-create %s %s %s %s %s %s %s" provider out-file size data type + title legends) (unless (symbolp type) (error "Argument TYPE should be a symbol")) (unless (assoc type chart-types) @@ -217,19 +297,20 @@ be a list (number-to-string num) (concat str "," (number-to-string num))))) str)) - (rec-scale (cdr rec)) + (rec-scale (cadr rec)) (rec-min (car rec-scale)) (rec-max (cdr rec-scale)) (scale-str (when rec-scale (format "%s,%s" rec-min rec-max))) ) (if (not numbers) - (progn - (setq numbers (concat "&chd=t:" number-str)) - (when scale-str - (setq scales (concat "&chds=" scale-str)))) - (setq numbers (concat numbers "|" number-str))) - (when scale-str - (setq scales (concat scales "," scale-str))))) + (progn + (setq numbers (concat "&chd=t:" number-str)) + (when (or scale-str + (memq g-type '(p p3 gom))) + (setq scales (concat "&chds=" scale-str)))) + (setq numbers (concat numbers "|" number-str)) + (when scale-str + (setq scales (concat scales "," scale-str)))))) (setq url (concat url numbers)) (when scales (setq url (concat url scales))) ;; fix-me: encode the url @@ -239,7 +320,7 @@ be a list (arg (if (memq g-type '(p p3 gom)) "&chl=" "&chdl="))) - (setq url (concat url arg url-legends)))) + (setq url (concat url arg url-legends)))) (dolist (extra extras) (let ((extra-type (car extra)) (extra-value (cdr extra))) @@ -266,7 +347,12 @@ be a list (buffer-substring-no-properties (point) (point-max)) (view-buffer-other-window (current-buffer)) (error "Bad content")))) - (let* ((fname (expand-file-name out-file)) + (let* ((is-html (string-match-p "" content)) + (fname (progn + (when is-html + (setq out-file (concat (file-name-sans-extension out-file) ".html"))) + (expand-file-name out-file) + )) (do-it (or (not (file-exists-p fname)) (y-or-n-p (concat "File " fname " exists. Replace it? ")))) @@ -276,64 +362,23 @@ be a list (when buf (kill-buffer buf)) (with-temp-file fname (insert content)) - (view-file-other-window fname) + (if (not is-html) + (view-file-other-window fname) + (chart-show-last-error-file fname)) (select-window this-window))))) (t (error "Unknown provider: %s" provider))) ) -(defvar chart-mode-keywords - '("Output-file:" - ;;"Provider:" - "Size:" "Data:" "Type:") - ) - -(defvar chart-extra-keywords - '( - "Colors:" - "Solid-fill:" - "Linear-gradient:" - "Linear-stripes:" - "Chart-title:" - "Legends:" - "Axis-types:" - "Axis-labels:" - "Axis-ranges:" - "Axis-styles:" - "Bar-thickness:" - "Bar-chart-zero-line:" - "Bar-chart-zero-line-2:" - "Line-styles-1:" - "Line-styles-2:" - "Grid-lines:" - "Shape-markers:" - "Range-markers:" - )) - -(defvar chart-raw-keywords - '( - "Google-chart-raw:" - )) - -(defvar chart-mode-keywords-re (regexp-opt chart-mode-keywords)) -(defvar chart-extra-keywords-re (regexp-opt chart-extra-keywords)) -(defvar chart-types-keywords-re (regexp-opt chart-types-keywords)) -(defvar chart-raw-keywords-re (regexp-opt chart-raw-keywords)) - -(defvar chart-font-lock-keywords - `((,chart-mode-keywords-re . font-lock-keyword-face) - (,chart-extra-keywords-re . font-lock-variable-name-face) - (,chart-types-keywords-re . font-lock-function-name-face) - (,chart-raw-keywords-re . font-lock-preprocessor-face) - )) - -(defvar chart-font-lock-defaults - '(chart-font-lock-keywords nil t)) - -(defvar chart-mode-syntax-table - (let ((table (make-syntax-table))) - (modify-syntax-entry ?\n "> " table) - (modify-syntax-entry ?\; "< " table) - table)) +(defun chart-show-last-error-file (fname) + (interactive) + (with-output-to-temp-buffer (help-buffer) + (help-setup-xref (list #'chart-show-last-error-file fname) (interactive-p)) + (with-current-buffer (help-buffer) + (insert "Error, see ") + (insert-text-button "result error page" + 'action + `(lambda (btn) + (browse-url ,fname)))))) (defvar chart-mode-map (let ((map (make-sparse-keymap))) @@ -353,6 +398,7 @@ be a list collection))))) collection)) +;;;###autoload (defun chart-complete () (interactive) (let* ((here (point)) @@ -372,16 +418,17 @@ be a list res) (when state (cond - ((equal state '(accept number)) - (setq res nil) - (setq msg (propertize "Needs a number here!" - 'face 'secondary-selection))) - ((equal state 'need-label) + ((or (= (current-column) 0) + (equal state 'need-label)) (setq collection (append (chart-missing-keywords) chart-extra-keywords chart-raw-keywords nil)) (setq prompt "Label: ")) + ((equal state '(accept number)) + (setq res nil) + (setq msg (propertize "Needs a number here!" + 'face 'secondary-selection))) ((equal state '(accept chart-type)) (setq collection chart-types-keywords) (setq prompt "Chart type: ")) @@ -410,6 +457,7 @@ be a list par-provider par-size par-data par-data-temp + par-data-min par-data-max par-type par-title par-legends @@ -419,183 +467,198 @@ be a list pos-state (state 'need-label) (problems - (catch 'problems - (save-restriction - (widen) - (if want-pos-state - (unless (re-search-backward chart-mode-keywords-re nil t) - (goto-char (point-min))) - (goto-char (point-min))) - (let (this-keyword - this-start - this-end - params - token - token-pos - next-token - found-labels - current-label) - (while (or token - (progn - (setq pos-state state) - (setq token-before-pos (point)) - (condition-case err - (setq token (read (current-buffer))) - (error - (if (eq (car err) 'end-of-file) - (unless (eq state 'need-label) - (throw 'problems (format "Unexpected end, state=%s" state))) - (throw 'problems - (error-message-string err))))))) - (message "token=%s, label=%s, state=%s" token current-label state) - (when (and want-pos-state - (>= (point) want-pos-state)) - (when (= (point) want-pos-state) - ;; right after item - (setq pos-state nil)) - (goto-char here) - (throw 'pos-state pos-state)) - (cond ;; state - ;; Label - ((eq state 'need-label) - (unless (symbolp token) - (throw 'problems (format "Expected label, got %s" token))) - (unless (member (symbol-name token) - (append chart-mode-keywords - chart-extra-keywords - chart-raw-keywords - nil)) - (throw 'problems (format "Unknown label %s" token))) - (when (member (symbol-name token) found-labels) - (throw 'problems (format "Label %s defined twice" token))) - (setq current-label token) - (setq found-labels (cons current-label found-labels)) - (setq token nil) - ;;(setq state 'need-value) - (case current-label - ('Output-file: - (setq state '(accept file-name))) - ('Size: - (setq state '(accept number))) - ('Data: - (setq state '(accept number))) - ('Type: - (setq state '(accept chart-type))) - ('Chart-title: - (setq state '(accept string))) - ('Legends: - (setq state '(accept string))) - ('Google-chart-raw: - (setq state '(accept string))) - )) - ;;;; Values - ;; Alt - ((equal state '(accept '| symbol)) - (if (eq '| token) - (case current-label - ('Legends: - (setq token nil) - (setq state '(accept string))) - (t (error "internal error, current-label=%s, state=%s" current-label state))) - (if (symbolp token) + (catch 'problems + (save-restriction + ;;(widen) + (if want-pos-state + (unless (re-search-backward chart-mode-keywords-re nil t) + (goto-char (point-min))) + (goto-char (point-min))) + (let (this-keyword + this-start + this-end + params + token + token-pos + next-token + found-labels + current-label) + (while (or token (progn - ;;(setq token nil) - (setq state 'need-label)) - (throw 'problems (format "Expected | or label, got %s" token))))) - ;; Strings - ((equal state '(accept string)) - (unless (stringp token) - (throw 'problems "Expected string")) - (case current-label - ('Chart-title: - (setq par-title token) - (setq token nil) - (setq state 'need-label)) - ('Legends: - (setq par-legends (reverse (cons token par-legends))) - (setq token nil) - (setq state '(accept '| symbol))) - ('Google-chart-raw: - (setq par-google-raw token) - (setq token nil) - (setq state '(accept '| symbol))) - (t (error "internal error, current-label=%s, state=%s" current-label state)))) - ;; Output file - ((equal state '(accept file-name)) - (unless (stringp token) - (throw 'problems "Expected file name string")) - (assert (eq current-label 'Output-file:)) - (setq par-output-file token) - (setq token nil) - (setq state 'need-label)) - ;; Numbers - ((equal state '(accept number)) - (unless (numberp token) - (throw 'problems "Expected number")) - (case current-label - ('Size: - (if (not par-size) - (progn - (setq par-size token) - (setq token nil) - (setq state '(accept number 'x 'X))) - (setq par-size (cons par-size token)) - (setq token nil) - (setq state 'need-label))) - ('Data: - ;;(assert (not par-data-temp)) - (setq par-data-temp (cons token par-data-temp)) - (setq token nil) - (setq state '(accept number ', '| symbol)) - ) - (t (error "internal error, state=%s, current-label=%s" state current-label))) - ) - ;; Numbers or | - ((equal state '(accept number ', '| symbol)) - (if (numberp token) - (progn - (setq par-data-temp (cons token par-data-temp)) - (setq token nil)) - (if (eq ', token) + (setq pos-state state) + (setq token-before-pos (point)) + (condition-case err + (setq token (read (current-buffer))) + (error + (if (eq (car err) 'end-of-file) + (unless (or (eq state 'need-label) + (member '(quote |) state)) + (throw 'problems (format "Unexpected end, state=%s" state))) + (throw 'problems + (error-message-string err))))))) + (message "token=%s, label=%s, state=%s" token current-label state) + (when (and want-pos-state + (>= (point) want-pos-state)) + (when (= (point) want-pos-state) + ;; right after item + (setq pos-state nil)) + (goto-char here) + (throw 'pos-state pos-state)) + (when (and (listp state) (memq 'number state)) + (unless (numberp token) + (save-match-data + (let ((token-str (format "%s" token))) + (setq token-str (replace-regexp-in-string "\\([0-9]\\),\\([0-9]\\)" "\\1\\2" token-str)) + (when (string-match-p "^[0-9]+$" token-str) + (setq token (string-to-number token-str))))))) + (cond ;; state + ;; Label + ((eq state 'need-label) + (unless (symbolp token) + (throw 'problems (format "Expected label, got %s" token))) + (unless (member (symbol-name token) + (append chart-mode-keywords + chart-extra-keywords + chart-raw-keywords + nil)) + (throw 'problems (format "Unknown label %s" token))) + (when (member (symbol-name token) found-labels) + (throw 'problems (format "Label %s defined twice" token))) + (setq current-label token) + (setq found-labels (cons current-label found-labels)) + (setq token nil) + ;;(setq state 'need-value) + (case current-label + ('Output-file: + (setq state '(accept file-name))) + ('Size: + (setq state '(accept number))) + ('Data: + (setq state '(accept number))) + ('Type: + (setq state '(accept chart-type))) + ('Chart-title: + (setq state '(accept string))) + ('Legends: + (setq state '(accept string))) + ('Google-chart-raw: + (setq state '(accept string))) + )) + ;;;; Values + ;; Alt + ((equal state '(accept '| symbol)) + (if (eq '| token) + (case current-label + ('Legends: (setq token nil) - (if (or (eq '| token) - (symbolp token)) - (progn - (unless par-data-temp - (throw 'problems "Empty data set")) - (setq par-data (cons (list (reverse par-data-temp)) par-data)) - (setq par-data-temp nil) - (if (not (eq '| token)) - (setq state 'need-label) - (setq state '(accept number)) - (setq token nil))) - (throw 'problems "Expected | or EOF") - )))) - ;; Numbers or x/X - ((equal state '(accept number 'x 'X)) - (assert (eq current-label 'Size:)) - (let ((is-n (numberp token)) - (is-x (memq token '(x X)))) - (unless (or is-n is-x) - (throw 'problems "Expected X or number")) - (if is-x + (setq state '(accept string))) + (t (error "internal error, current-label=%s, state=%s" current-label state))) + (if (symbolp token) + (progn + ;;(setq token nil) + (setq state 'need-label)) + (throw 'problems (format "Expected | or label, got %s" token))))) + ;; Strings + ((equal state '(accept string)) + (unless (stringp token) + (throw 'problems "Expected string")) + (case current-label + ('Chart-title: + (setq par-title token) + (setq token nil) + (setq state 'need-label)) + ('Legends: + (setq par-legends (cons token par-legends)) + (setq token nil) + (setq state '(accept '| symbol))) + ('Google-chart-raw: + (setq par-google-raw token) + (setq token nil) + (setq state 'need-label)) + (t (error "internal error, current-label=%s, state=%s" current-label state)))) + ;; Output file + ((equal state '(accept file-name)) + (unless (stringp token) + (throw 'problems "Expected file name string")) + (assert (eq current-label 'Output-file:)) + (setq par-output-file token) + (setq token nil) + (setq state 'need-label)) + ;; Numbers + ((equal state '(accept number)) + (unless (numberp token) + (throw 'problems "Expected number")) + (case current-label + ('Size: + (if (not par-size) (progn + (setq par-size token) (setq token nil) - (setq state '(accept number))) + (setq state '(accept number 'x 'X))) (setq par-size (cons par-size token)) (setq token nil) - (setq state 'need-label)))) - ;; Chart type - ((equal state '(accept chart-type)) - (setq par-type token) - (unless (assoc par-type chart-types) - (throw 'problems (format "Unknown chart type: %s" par-type))) - (setq token nil) - (setq state 'need-label)) - (t (error "internal error, state=%s" state)))))) - ;; fix-me here - - nil))) + (setq state 'need-label))) + ('Data: + ;;(assert (not par-data-temp)) + (setq par-data-temp (cons token par-data-temp)) + (setq par-data-min token) + (setq par-data-max token) + (setq token nil) + (setq state '(accept number ', '| symbol)) + ) + (t (error "internal error, state=%s, current-label=%s" state current-label))) + ) + ;; Numbers or | + ((equal state '(accept number ', '| symbol)) + (if (numberp token) + (progn + (setq par-data-min (if par-data-min (min par-data-min token) token)) + (setq par-data-max (if par-data-max (max par-data-max token) token)) + (setq par-data-temp (cons token par-data-temp)) + (message "par-data-min/max=%s/%s, token=%s -- %s" par-data-min par-data-max token par-data-temp) + (setq token nil)) + (if (eq ', token) + (setq token nil) + (if (or (eq '| token) + (symbolp token)) + (progn + (unless par-data-temp + (throw 'problems "Empty data set")) + (setq par-data (cons (list (reverse par-data-temp) (cons par-data-min par-data-max)) par-data)) + (setq par-data-temp nil) + (setq par-data-min nil) + (setq par-data-max nil) + (if (not (eq '| token)) + (setq state 'need-label) + (setq state '(accept number)) + (setq token nil))) + (throw 'problems "Expected | or EOF") + )))) + ;; Numbers or x/X + ((equal state '(accept number 'x 'X)) + (assert (eq current-label 'Size:)) + (let ((is-n (numberp token)) + (is-x (memq token '(x X)))) + (unless (or is-n is-x) + (throw 'problems "Expected X or number")) + (if is-x + (progn + (setq token nil) + (setq state '(accept number))) + (setq par-size (cons par-size token)) + (setq token nil) + (setq state 'need-label)))) + ;; Chart type + ((equal state '(accept chart-type)) + (setq par-type token) + (unless (assoc par-type chart-types) + (throw 'problems (format "Unknown chart type: %s" par-type))) + (setq token nil) + (setq state 'need-label)) + (t (error "internal error, state=%s" state)))))) + ;; fix-me here + + nil))) (when want-pos-state (goto-char here) (throw 'pos-state state)) @@ -611,10 +674,12 @@ be a list (nth 0 problems) token-before-pos))) (goto-char where) - (message msg)) + (skip-chars-forward " \t") + (error msg)) (goto-char here) ;;(defun chart-create (out-file provider size data type &rest extras) (setq par-provider 'google) + (setq par-legends (nreverse par-legends)) (let ((extras nil)) (when par-google-raw (setq extras (cons (cons 'GOOGLE-RAW par-google-raw) extras))) @@ -622,12 +687,131 @@ be a list par-data par-type par-title par-legends extras)) nil))) +;;;###autoload (defun chart-make-chart () + "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 `chart-mode' then do it from the +chart specifications in this buffer. Otherwise create a new +buffer and initialize it with `chart-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 chart-make-chart + +* Example, simple x-y chart: + + Output-file: \"~/temp-chart.png\" + Size: 200 200 + Data: 3 8 5 | 10 20 30 + Type: line-chart-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 + Chart-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 + Chart-title: \"Depression hits on Google\" + Legends: + \"SSRI\" + | \"Psychotherapy\" + | \"CBT\" + | \"IPT\" + | \"Psychoanalysis\" + | \"Mindfulness\" + | \"Meditation\" + | \"Exercise\" + + +* Example using raw: + + Output-file: \"~/temp-chart-slipsen-kostar.png\" + Size: 400 130 + Data: 300 1000 30000 + Type: bar-chart-horizontal + Chart-title: \"Vad killen i slips tjänar jämfört med dig och mig\" + Google-chart-raw: \"&chds=0,30000&chco=00cd00|ff4500|483d8b&chxt=y,x&chxl=0:|Killen+i+slips|Partiledarna|Du+och+jag&chf=bg,s,ffd700\" + + +" (interactive) + (if mark-active + (let* ((rb (region-beginning)) + (re (region-end)) + (data (buffer-substring-no-properties rb re)) + (buf (generate-new-buffer "*Chart from region*"))) + (switch-to-buffer buf) + (insert data) + (chart-mode)) + (unless (eq major-mode 'chart-mode) + (switch-to-buffer (generate-new-buffer "*Chart*")) + (chart-mode))) (chart-get-state nil)) +;; (defun chart-from-region (min max) +;; "Try to make a new chart from data in selected region. +;; See `chart-mode' for examples you can test with this function." +;; (interactive "r") +;; (unless mark-active (error "No region selected")) +;; (let* ((rb (region-beginning)) +;; (re (region-end)) +;; (data (buffer-substring-no-properties rb re)) +;; (buf (generate-new-buffer "*Chart from region*"))) +;; (switch-to-buffer buf) +;; (insert data) +;; (chart-mode) +;; (chart-get-state nil))) + (define-derived-mode chart-mode fundamental-mode "Chart" - "Mode for specifying charts." + "Mode for specifying charts. +\\{chart-mode-map} + +To make a chart see `chart-make-chart'. + +" (set (make-local-variable 'font-lock-defaults) chart-font-lock-defaults) (set (make-local-variable 'comment-start) ";") ;; Look within the line for a ; following an even number of backslashes @@ -642,17 +826,18 @@ be a list (set (make-local-variable 'comment-use-global-state) t) (set-syntax-table chart-mode-syntax-table) (when (looking-at (rx buffer-start (0+ whitespace) buffer-end)) - (insert ";; Type C-c C-c to make a chart\n")) + (insert ";; Type C-c C-c to make a chart, M-Tab to complete\n")) (let ((missing (chart-missing-keywords))) (when missing (save-excursion (goto-char (point-max)) (dolist (miss missing) - (insert "\n\n" miss)))))) + (insert "\n" miss " ")))))) ;; Tests -;;(chart-create 'google "temp.png" '(200 . 150) '(((90 70) . nil)) 'p3 '(colors "FFFFFF" "00FF00")) +;;(chart-create 'google "temp.png" '(200 . 150) '(((90 70) . nil)) 'pie-3-dimensional "test title" nil '((colors "FFFFFF" "00FF00"))) +;; Fix-me (add-to-list 'auto-mode-alist '("\\.mx-chart\\'" . chart-mode)) (provide 'chart) diff --git a/elpa-to-submit/nxhtml/util/color-test-sent.el b/elpa-to-submit/nxhtml/util/color-test-sent.el deleted file mode 100644 index b8142afd7f..0000000000 --- a/elpa-to-submit/nxhtml/util/color-test-sent.el +++ /dev/null @@ -1,149 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; For wid-edit.el - -(defun widget-color-validate (widget) - (let ((value (widget-value widget))) - (unless - ;; Drews suggestion is to use display-color-p instead, but - ;; unfortunately this does not match #rgb: - ;;(display-color-p value) - (color-defined-p value) - (widget-put widget :error (format "Invalid color: %S" value)) - widget))) - -(defun widget-color-match (widget value) - (and (stringp value) - (color-defined-p value))) - -(define-widget 'color 'string - "Choose a color (with sample)." - :format "%{%t%}: %v (%{sample%})\n" - :size 30 - :tag "Color" - :match 'widget-color-match - :validate 'widget-color-validate - :value "black" - :complete 'widget-color-complete - :sample-face-get 'widget-color-sample-face-get - :notify 'widget-color-notify - :action 'widget-color-action) - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; For custom.el - -;; Borrowed from `set-variable'. It might be useful in -;; `custom-variable-type': -(defun custom-get-type (variable) - "Get the :type declaration used when creating custom VARIABLE." - (and (custom-variable-p variable) - (not (get variable 'custom-type)) - (custom-load-symbol variable)) - (get variable 'custom-type)) - -;; external values = those stored in the variables -;; internal values = those shown in "buffer widgets" - -;; This function tests the same way `set-variable' does it. However -;; `set-variable' also does (require 'cus-edit), shouldn't that be -;; (require 'wid-edit)? -(defun custom-type-value-p (value custom-type) - "Return non-nil if VALUE matches CUSTOM-TYPE. -CUSTOM-TYPE could be anything that can be used for the :type -keyword in `defcustom'. - -See `custom-get-type' for how to get CUSTOM-TYPE from a -custom variable." - (require 'wid-edit) ;; for widget-convert, but why is not that in widget.el? - (let* ((widget (widget-convert custom-type))) - (widget-apply widget :match value))) - - ;;(match-fun (widget-get widget :match)) - ;;(valid-fun (widget-get widget :validate)) -;; (if nil ;(listp custom-type) -;; ;; Fix-me: Some type of conversion of the list must be -;; ;; done. And it actually looks like :validate must be -;; ;; used. Otherwise the children here get called with the -;; ;; :match and that does nothing for simple type. (What is -;; ;; match actually useful for??) -;; (progn -;; (widget-apply widget :match value) -;; ) -;; (let ((int-val (widget-apply widget :value-to-internal value))) -;; (widget-put widget :value int-val) -;; (with-current-buffer (get-buffer-create "temp dummy") -;; (lwarn t :warning "result=%s" (widget-choice-value-create widget))) -;; ;;(null (widget-apply widget :validate)) -;; )))) - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Tests - -;; (custom-type-value-p "something" 'color) -;; (custom-type-value-p "#f" 'color) -;; (custom-type-value-p "#fff" 'color) -;; (custom-type-value-p "red" 'color) -;; (custom-get-type 'test-color) -;; (setq test-color "bla") -;; (setq test-color "black") - -(defcustom test-color "red" - "color test" - :type 'color) - -;; (customize-option 'test-color) -;; (custom-get-type 'test-more) -;; (custom-type-value-p "something" (custom-get-type 'test-more)) -;; (custom-type-value-p "some[" (custom-get-type 'test-more)) -;; (custom-type-value-p 10 (custom-get-type 'test-more)) -;; (custom-type-value-p 1.0 (custom-get-type 'test-more)) -(defcustom test-more "b[" - "choice and regexp text" - :type '(choice (integer) - (regexp))) - - -;; (custom-get-type 'ks-test7) -;; (custom-type-value-p ks-test7 'key-sequence) - - -(defcustom ks-test7 - [(control ?a) ?2] - "" - :type 'key-sequence - ) - -(defcustom ks-test8 - [(control ?a) ?2] - "testing internal/external with a choice" - :type '(choice (key-sequence) - (color)) - ) -;; (customize-option 'ks-test8) -;; (custom-get-type 'ks-test8) -;; (setq ks-test8 [(control ?a) ?2]) -;; (setq ks-test8 "reda") -;; (setq ks-test8 8) -;; (custom-type-value-p ks-test8 'key-sequence) -;; (custom-type-value-p ks-test8 (custom-get-type 'ks-test8)) - - -;; (insert (format "%S" (symbol-plist 'ks-test8))) -;; (standard-value ([(control 97) 50]) -;; variable-documentation "testing internal/external with a choice" -;; custom-type (choice (key-sequence) (color)) -;; custom-requests nil -;; backup-value (8) -;; variable-comment nil -;; customized-value nil -;; customized-variable-comment nil) - -(defun test8 () - (let ((widget (widget-convert (custom-get-type 'ks-test8)))) - (widget-choice-match widget ks-test8) - (widget-choice-match widget 8) - (widget-apply widget :match 8) - (widget-apply widget :match ks-test8) - )) -;; (test8) diff --git a/elpa-to-submit/nxhtml/util/color-test.el b/elpa-to-submit/nxhtml/util/color-test.el deleted file mode 100644 index 47b9c8056c..0000000000 --- a/elpa-to-submit/nxhtml/util/color-test.el +++ /dev/null @@ -1,154 +0,0 @@ - -(defun color-digits-p (color) - (save-match-data - (string-match (rx bos - "#" - (1+ (repeat 3 3 hex-digit)) - eos) - color))) - -(defun widget-color-validate (widget) - (let ((value (widget-value widget))) - (unless (color-defined-p value) - (widget-put widget :error (format "Invalid color: %S" value)) - widget))) - -(define-widget 'color 'editable-field - "Choose a color (with sample)." - :format "%{%t%}: %v (%{sample%})\n" - :size 30 - :tag "Color" - :validate 'widget-color-validate - :value "black" - :complete 'widget-color-complete - :sample-face-get 'widget-color-sample-face-get - :notify 'widget-color-notify - :action 'widget-color-action) - -(defun custom-type-is-super (super-type base-type) - (unless (get super-type 'widget-type) (error "Not a widget type: %s" super-type)) - (unless (get base-type 'widget-type) (error "Not a widget type: %s" base-type)) - (let ((found nil) - (type super-type)) - (while (and (not found) type) - (setq found (eq type base-type)) - (unless found - (setq type (car (get type 'widget-type))))) - found)) -;; (custom-type-simple-is-super 'color 'string) -;; (custom-type-simple-is-super 'color 'editable-field) - -(defun custom-type-symbol-p (symbol custom-type) - "Return t if value of SYMBOL should fit CUSTOM-TYPE." - (let ((found nil) - (type (get symbol 'custom-type))) - ;; Fix-me: How should different things that are not directly - ;; value-related be handled? - (while (and (not found) type) - (setq found (equal type custom-type)) - (unless nil ;found - (if (symbolp type) - (setq found (custom-type-simple-is-super type custom-type)) - (unless (symbolp custom-type) - (let ((symbol-comp-type (car type)) - (symbol-childs (cdr type)) - (custom-comp-type (car custom-type)) - (custom-childs (cdr custom-type))) - (setq found - (and (eq symbol-comp-type custom-comp-type) - (let ((ok t)) - (while (and ok symbol-childs custom-childs) - (setq ok (custom-type-symbol-p (caar symbol-childs) (caar custom-childs))) - (setq symbol-childs (cdr symbol-childs)) - (setq custom-childs (cdr custom-childs))) - ok))) - ))))) - found)) - -;; (custom-type-p 'test-color 'color) -;; (custom-type-symbol-p 'bar (get 'bar 'custom-type)) -;; (custom-type-value-p bar (get 'bar 'custom-type)) -;; (custom-type-value-p "b" (get 'bar 'custom-type)) -;; (custom-type-value-p 10 (get 'bar 'custom-type)) -;; (custom-type-value-p 'b (get 'bar 'custom-type)) - -;;(insert (format "%S" (symbol-plist 'bar))) -;;(standard-value ("b") variable-documentation "yyyyyyy" custom-type (choice (integer :tag "WWWWWWWWW") (string :tag "ZZZZZZZZZZZZZ")) custom-requests nil) - -;; (custom-get-type 'bar) -;; (defvar bar-var 'bar) -;; (custom-get-type bar-var) -;; (custom-get-type 'bar-var) -;; (custom-variable-p bar) -;; (custom-variable-type 'bar) -;; (custom-variable-type bar-var) -;; (custom-variable-type 'bar-var) - -;; Borrowed from `set-variable'. It might be useful in -;; `custom-variable-type': -(defun custom-get-type (variable) - "Get the :type declaration from custom VARIABLE." - (and (custom-variable-p variable) - (not (get variable 'custom-type)) - (custom-load-symbol variable)) - (get variable 'custom-type)) - -;; This function tests the same way as `set-variable' does and could -;; be used there. However `set-variable' does (require 'cus-edit), -;; shouldn't that be (require 'wid-edit)? -(defun custom-type-value-p (value custom-type) - "Return non-nil if VALUE matches CUSTOM-TYPE. -CUSTOM-TYPE could be anything that can be used for the :type -keyword in `defcustom'. - -See `custom-get-type' for how to get CUSTOM-TYPE form a -custom variable." - (require 'wid-edit) - (let ((widget (widget-convert custom-type))) - (widget-apply widget :match value))) - -(defun custom-type-p (val-or-sym custom-type) - "Return non-nil if VAL-OR-SYM fits CUSTOM-TYPE. -VAL-OR-SYM may be either a variable or a symbol. If it is a -variable then return non-nil if the value fits custom type -CUSTOM-TYPE. - -If it is a symbol then return non-nil if the values this symbol's -variable can have fits CUSTOM-TYPE." - (if (symbolp val-or-sym) - (custom-type-symbol-p val-or-sym custom-type) - (custom-type-value-p val-or-sym custom-type))) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Tests - -;; (custom-type-p 'test-color 'color) -;; (custom-type-p 'test-color 'edit) -;; (custom-type-p 'test-color 'editable-field) -;; (custom-type-p test-color 'color) -;; (get 'test-color 'custom-type) -;; (setq test-color "bla") -;; (setq test-color "black") - -(defcustom test-color "black" - "color test" - :type 'color) - -(defun max-color-length() - (let ((len 0) - (longest "")) - (mapc (lambda (color) - (when (< len (length color)) - (setq len (length color)) - (setq longest color))) - x-colors) - (cons len longest))) -;; (max-color-length) - -(defcustom bar "b[" "yyyyyyy" - :type '(choice (integer :tag "WWWWWWWWW") - (regexp :tag "ZZZZZZZZZZZZZ"))) - -;; (custom-type-symbol-p 'bar (get 'bar 'custom-type)) - - diff --git a/elpa-to-submit/nxhtml/util/company-mode/README.txt b/elpa-to-submit/nxhtml/util/company-mode/README.txt new file mode 100644 index 0000000000..af3d7f5f51 --- /dev/null +++ b/elpa-to-submit/nxhtml/util/company-mode/README.txt @@ -0,0 +1 @@ +This is a temporary copy for my changes of company-mode. diff --git a/elpa-to-submit/nxhtml/util/company-mode/company-abbrev.el b/elpa-to-submit/nxhtml/util/company-mode/company-abbrev.el new file mode 100644 index 0000000000..89d87a6eab --- /dev/null +++ b/elpa-to-submit/nxhtml/util/company-mode/company-abbrev.el @@ -0,0 +1,43 @@ +;;; company-abbrev.el --- a company-mode completion back-end for abbrev +;; +;; Copyright (C) 2009 Nikolaj Schumacher +;; +;; This file is part of company 0.4.3. +;; +;; 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, see . + +(require 'company) +(eval-when-compile (require 'cl)) +(require 'abbrev) + +(defun company-abbrev-insert (match) + "Replace MATCH with the expanded abbrev." + (expand-abbrev)) + +;;;###autoload +(defun company-abbrev (command &optional arg &rest ignored) + "A `company-mode' completion back-end for abbrev." + (interactive (list 'interactive)) + (case command + ('interactive (company-begin-backend 'company-abbrev + 'company-abbrev-insert)) + ('prefix (company-grab-symbol)) + ('candidates (nconc + (delete "" (all-completions arg global-abbrev-table)) + (delete "" (all-completions arg local-abbrev-table)))) + ('meta (abbrev-expansion arg)) + ('require-match t))) + +(provide 'company-abbrev) +;;; company-abbrev.el ends here diff --git a/elpa-to-submit/nxhtml/util/company-mode/company-autoloads.el b/elpa-to-submit/nxhtml/util/company-mode/company-autoloads.el new file mode 100644 index 0000000000..b9f4010727 --- /dev/null +++ b/elpa-to-submit/nxhtml/util/company-mode/company-autoloads.el @@ -0,0 +1,229 @@ +;;; company-autoloads.el --- automatically extracted autoloads +;; +;;; Code: + + +;;;### (autoloads (company-mode) "company" "company.el" (19036 64075)) +;;; Generated autoloads from company.el + +(autoload 'company-mode "company" "\ +\"complete anything\"; in in-buffer completion framework. +Completion starts automatically, depending on the values +`company-idle-delay' and `company-minimum-prefix-length'. + +Completion can be controlled with the commands: +`company-complete-common', `company-complete-selection', `company-complete', +`company-select-next', `company-select-previous'. If these commands are +called before `company-idle-delay', completion will also start. + +Completions can be searched with `company-search-candidates' or +`company-filter-candidates'. These can be used while completion is +inactive, as well. + +The completion data is retrieved using `company-backends' and displayed using +`company-frontends'. If you want to start a specific back-end, call it +interactively or use `company-begin-backend'. + +regular keymap (`company-mode-map'): + +\\{company-mode-map} +keymap during active completions (`company-active-map'): + +\\{company-active-map} + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads (company-abbrev) "company-abbrev" "company-abbrev.el" +;;;;;; (19036 64074)) +;;; Generated autoloads from company-abbrev.el + +(autoload 'company-abbrev "company-abbrev" "\ +A `company-mode' completion back-end for abbrev. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-css) "company-css" "company-css.el" (19036 +;;;;;; 64074)) +;;; Generated autoloads from company-css.el + +(autoload 'company-css "company-css" "\ +A `company-mode' completion back-end for `css-mode'. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-dabbrev) "company-dabbrev" "company-dabbrev.el" +;;;;;; (19036 64074)) +;;; Generated autoloads from company-dabbrev.el + +(autoload 'company-dabbrev "company-dabbrev" "\ +A dabbrev-like `company-mode' completion back-end. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-dabbrev-code) "company-dabbrev-code" "company-dabbrev-code.el" +;;;;;; (19036 64074)) +;;; Generated autoloads from company-dabbrev-code.el + +(autoload 'company-dabbrev-code "company-dabbrev-code" "\ +A dabbrev-like `company-mode' back-end for code. +The back-end looks for all symbols in the current buffer that aren't in +comments or strings. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-elisp) "company-elisp" "company-elisp.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-elisp.el + +(autoload 'company-elisp "company-elisp" "\ +A `company-mode' completion back-end for `emacs-lisp-mode'. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-etags) "company-etags" "company-etags.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-etags.el + +(autoload 'company-etags "company-etags" "\ +A `company-mode' completion back-end for etags. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-files) "company-files" "company-files.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-files.el + +(autoload 'company-files "company-files" "\ +a `company-mode' completion back-end existing file names. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-gtags) "company-gtags" "company-gtags.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-gtags.el + +(autoload 'company-gtags "company-gtags" "\ +A `company-mode' completion back-end for GNU Global. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-ispell) "company-ispell" "company-ispell.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-ispell.el + +(autoload 'company-ispell "company-ispell" "\ +A `company-mode' completion back-end using ispell. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-keywords) "company-keywords" "company-keywords.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-keywords.el + +(autoload 'company-keywords "company-keywords" "\ +A `company-mode' back-end for programming language keywords. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-nxml) "company-nxml" "company-nxml.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-nxml.el + +(autoload 'company-nxml "company-nxml" "\ +A `company-mode' completion back-end for `nxml-mode'. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-oddmuse) "company-oddmuse" "company-oddmuse.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-oddmuse.el + +(autoload 'company-oddmuse "company-oddmuse" "\ +A `company-mode' completion back-end for `oddmuse-mode'. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-pysmell) "company-pysmell" "company-pysmell.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-pysmell.el + +(autoload 'company-pysmell "company-pysmell" "\ +A `company-mode' completion back-end for pysmell. +This requires pysmell.el and pymacs.el. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-semantic) "company-semantic" "company-semantic.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-semantic.el + +(autoload 'company-semantic "company-semantic" "\ +A `company-mode' completion back-end using CEDET Semantic. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-tempo) "company-tempo" "company-tempo.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-tempo.el + +(autoload 'company-tempo "company-tempo" "\ +A `company-mode' completion back-end for tempo. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads (company-xcode) "company-xcode" "company-xcode.el" +;;;;;; (19036 64075)) +;;; Generated autoloads from company-xcode.el + +(autoload 'company-xcode "company-xcode" "\ +A `company-mode' completion back-end for Xcode projects. + +\(fn COMMAND &optional ARG &rest IGNORED)" t nil) + +;;;*** + +;;;### (autoloads nil nil ("company-eclim.el" "company-pkg.el" "company-ropemacs.el") +;;;;;; (19036 64075 906000)) + +;;;*** + +(provide 'company-autoloads) +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; coding: utf-8 +;; End: +;;; company-autoloads.el ends here diff --git a/elpa-to-submit/nxhtml/util/company-mode/company-css.el b/elpa-to-submit/nxhtml/util/company-mode/company-css.el new file mode 100644 index 0000000000..cff27ab7e1 --- /dev/null +++ b/elpa-to-submit/nxhtml/util/company-mode/company-css.el @@ -0,0 +1,355 @@ +;;; company-css.el --- a company-mode completion back-end for css-mode +;; +;; Copyright (C) 2009 Nikolaj Schumacher +;; +;; This file is part of company 0.4.3. +;; +;; 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, see . + +(require 'company) +(eval-when-compile (require 'cl)) + +(defconst company-css-property-alist + ;; see http://www.w3.org/TR/CSS21/propidx.html + '(("azimuth" angle "left-side" "far-left" "left" "center-left" "center" + "center-right" "right" "far-right" "right-side" "behind" "leftwards" + "rightwards") + ("background" background-color background-image background-repeat + background-attachment background-position) + ("background-attachment" "scroll" "fixed") + ("background-color" color "transparent") + ("background-image" uri "none") + ("background-position" percentage length "left" "center" "right" percentage + length "top" "center" "bottom" "left" "center" "right" "top" "center" + "bottom") + ("background-repeat" "repeat" "repeat-x" "repeat-y" "no-repeat") + ("border" border-width border-style border-color) + ("border-bottom" border) + ("border-bottom-color" border-color) + ("border-bottom-style" border-style) + ("border-bottom-width" border-width) + ("border-collapse" "collapse" "separate") + ("border-color" color "transparent") + ("border-left" border) + ("border-left-color" border-color) + ("border-left-style" border-style) + ("border-left-width" border-width) + ("border-right" border) + ("border-right-color" border-color) + ("border-right-style" border-style) + ("border-right-width" border-width) + ("border-spacing" length length) + ("border-style" border-style) + ("border-top" border) + ("border-top-color" border-color) + ("border-top-style" border-style) + ("border-top-width" border-width) + ("border-width" border-width) + ("bottom" length percentage "auto") + ("caption-side" "top" "bottom") + ("clear" "none" "left" "right" "both") + ("clip" shape "auto") + ("color" color) + ("content" "normal" "none" string uri counter "attr()" "open-quote" + "close-quote" "no-open-quote" "no-close-quote") + ("counter-increment" identifier integer "none") + ("counter-reset" identifier integer "none") + ("cue" cue-before cue-after) + ("cue-after" uri "none") + ("cue-before" uri "none") + ("cursor" uri "*" "auto" "crosshair" "default" "pointer" "move" "e-resize" + "ne-resize" "nw-resize" "n-resize" "se-resize" "sw-resize" "s-resize" + "w-resize" "text" "wait" "help" "progress") + ("direction" "ltr" "rtl") + ("display" "inline" "block" "list-item" "run-in" "inline-block" "table" + "inline-table" "table-row-group" "table-header-group" "table-footer-group" + "table-row" "table-column-group" "table-column" "table-cell" + "table-caption" "none") + ("elevation" angle "below" "level" "above" "higher" "lower") + ("empty-cells" "show" "hide") + ("float" "left" "right" "none") + ("font" font-style font-variant font-weight font-size "/" line-height + font-family "caption" "icon" "menu" "message-box" "small-caption" + "status-bar") + ("font-family" family-name generic-family) + ("font-size" absolute-size relative-size length percentage) + ("font-style" "normal" "italic" "oblique") + ("font-variant" "normal" "small-caps") + ("font-weight" "normal" "bold" "bolder" "lighter" "100" "200" "300" "400" + "500" "600" "700" "800" "900") + ("height" length percentage "auto") + ("left" length percentage "auto") + ("letter-spacing" "normal" length) + ("line-height" "normal" number length percentage) + ("list-style" list-style-type list-style-position list-style-image) + ("list-style-image" uri "none") + ("list-style-position" "inside" "outside") + ("list-style-type" "disc" "circle" "square" "decimal" "decimal-leading-zero" + "lower-roman" "upper-roman" "lower-greek" "lower-latin" "upper-latin" + "armenian" "georgian" "lower-alpha" "upper-alpha" "none") + ("margin" margin-width) + ("margin-bottom" margin-width) + ("margin-left" margin-width) + ("margin-right" margin-width) + ("margin-top" margin-width) + ("max-height" length percentage "none") + ("max-width" length percentage "none") + ("min-height" length percentage) + ("min-width" length percentage) + ("orphans" integer) + ("outline" outline-color outline-style outline-width) + ("outline-color" color "invert") + ("outline-style" border-style) + ("outline-width" border-width) + ("overflow" "visible" "hidden" "scroll" "auto") + ("padding" padding-width) + ("padding-bottom" padding-width) + ("padding-left" padding-width) + ("padding-right" padding-width) + ("padding-top" padding-width) + ("page-break-after" "auto" "always" "avoid" "left" "right") + ("page-break-before" "auto" "always" "avoid" "left" "right") + ("page-break-inside" "avoid" "auto") + ("pause" time percentage) + ("pause-after" time percentage) + ("pause-before" time percentage) + ("pitch" frequency "x-low" "low" "medium" "high" "x-high") + ("pitch-range" number) + ("play-during" uri "mix" "repeat" "auto" "none") + ("position" "static" "relative" "absolute" "fixed") + ("quotes" string string "none") + ("richness" number) + ("right" length percentage "auto") + ("speak" "normal" "none" "spell-out") + ("speak-header" "once" "always") + ("speak-numeral" "digits" "continuous") + ("speak-punctuation" "code" "none") + ("speech-rate" number "x-slow" "slow" "medium" "fast" "x-fast" "faster" + "slower") + ("stress" number) + ("table-layout" "auto" "fixed") + ("text-align" "left" "right" "center" "justify") + ("text-decoration" "none" "underline" "overline" "line-through" "blink") + ("text-indent" length percentage) + ("text-transform" "capitalize" "uppercase" "lowercase" "none") + ("top" length percentage "auto") + ("unicode-bidi" "normal" "embed" "bidi-override") + ("vertical-align" "baseline" "sub" "super" "top" "text-top" "middle" + "bottom" "text-bottom" percentage length) + ("visibility" "visible" "hidden" "collapse") + ("voice-family" specific-voice generic-voice "*" specific-voice + generic-voice) + ("volume" number percentage "silent" "x-soft" "soft" "medium" "loud" + "x-loud") + ("white-space" "normal" "pre" "nowrap" "pre-wrap" "pre-line") + ("widows" integer) + ("width" length percentage "auto") + ("word-spacing" "normal" length) + ("z-index" "auto" integer)) + "A list of CSS properties and their possible values.") + +(defconst company-css-value-classes + '((absolute-size "xx-small" "x-small" "small" "medium" "large" "x-large" + "xx-large") + (border-style "none" "hidden" "dotted" "dashed" "solid" "double" "groove" + "ridge" "inset" "outset") + (color "aqua" "black" "blue" "fuchsia" "gray" "green" "lime" "maroon" "navy" + "olive" "orange" "purple" "red" "silver" "teal" "white" "yellow") + (counter "counter(,)") + (family-name "Courier" "Helvetica" "Times") + (generic-family "serif" "sans-serif" "cursive" "fantasy" "monospace") + (generic-voice "male" "female" "child") + (margin-width "auto") ;; length percentage + (relative-size "larger" "smaller") + (shape "rect(,,,)") + (uri "url()")) + "A list of CSS property value classes and their contents.") +;; missing, because not completable +;; +;;

6Er4pJ$QEbuLbbD(#L`+1px8uhHorm?VX=*unFUhoY`j28l zskp}6RzsuXAQA)zp40+By;|Zp?b}mtjj5$;!h5+ENeXE;OOx6=BwY-c<(EZ%}L)dqyoH2j4RA7G!=NUT+y2qiF+w~x0V8o%${MA^f zvKihs$tP-;6vm{{G*diFoCAU3ZT^2P?h0BbgyWyYwXdV0*o!74!+8SVR3JxaiqnqxTaEeG;eRx%Tf zBM1Gf7dOosZCrINdpXexp;-rWog{rYH7ij+FTk1xg{3S)96t=aRkVo>vsS!?qmdM7 zIM006Q>eUTw9ki6y zhf+y=@P`q=bh91{4sd-c99s2ZMOOV%AF?&%pL$Y4dniBcR^sl5w8!|9#Azz&3^fkR z+PgF~A5$64BPS%DYla^aH{K?@lB97-+Y7hpvp5fo16fN^4lyr#3xr)-asbUr)I~JP z4abld8iRw9F|}UX^Chsj`nBY*rVvYQ_(y+Ahou$G6}hpstWwDsG6UvtNyqfANwl~$ zL5l&88iogYjn)PBw(`tRmNp)wR7!Qo!xGk2z&JkNI?c@iB(;@y$9hg^MdH#@+I08k zr*au`^yVWi$ENwD=8#cvvS8{o{py|e6n!iVucWRqRd@sCwJnCml{{3~Sxv>du0b1i zB8104R|||3*m~8c+?q4Jccf3$q6mdUMslouf8M*iKC*-IWXW2g68KZ979%Nv!6esT z{J5FyV+(Hx^$^Yeyceg#cv!zuuq4rCoRv)3;!^Ht=gN z=CLW<xQcP_JSxX!c zyl*a-Vep)BQ8jM{u)?Q;w)3WNjN>Eju;QI1pRqY_{G5^r6&g3e$2d99%8LgObuAgp zZ-Ktmcx0?_6AZV-G=c!Lrr#w}-T>SwwEdKxzxc>kMju@kNbq(-ie3EfnJvF_y$a=po zn34{OeKBcnm&(b>R@m=b%U&x8;o9YvHnZur@HX)V0PIPwdFnP&fYq85i%>x(2FSag z%Qc2?x2aSB-Cj48LMrr&#=X6v~hNcau~(Y+^F1zI3yGWvUwGZwSR1QIVHWd zq>HXV2_#^s9BtZ*aziYZVX0OCj8Cft#yix;J^ui)q)jdFB_Y}|BA!YTNBdH8k4yIe z>pqj@GvtXt?80U$W2*ey?WDbu!>7JWj#bqady`bgCsx!sX^>9xv0`fDtH`~yICvg zrtQ(pu$PFBhC$o5J&jhb)x)RQaBj1~3E+-6iEp~cbvqyUC{k^TfZjy67yvG%!sm0% zYO+L~5rCm$vy6|HfAnd~$Vs9X7?_CBKvX%-H$OTe=$T~sjjgsLnM;=$+kyGhS1h5u zvBSs}(zI{&#N6jB+G-74eA|A?8>o5Las8y z*0R&njT%XSt=#J;^D+tIMeV=qTWnR2p%%w5lo70rC!DM~BDrPHV(S2R*Ni625$Qp; zqp;8Q`PRB{#$B>)ls)`_<&@*qcmDu_t!aaoafeQ_>KD)nt&Bux7-B;T%TjTRr(&?T z=zU@w%^*Um*g6k?dd+J=;3y`}DdtjTQUKt#)iP;&ii6VD+D8gxR5i)5lPMfG9EFXU3`cd&R zOCxjPyV)651u`=ag;f6lPx*?d>m(+LSa^S^*tnKkN01$zIos3?_oppYEC_uC&72lx z<*8~uLQHBu`2W(^KicTyL6rLG|Sj?V!%7-nJ+b1<& z6`|N)Oz;ZK!K8Dg@E0456YI~l64qh8j;8Q$QR(n9TCm^Z)7Xzdci-t*%3Z^e6t|bw za)oHvNC?>EXY{I3unV;6_m3$J5ehSrkL!w=K_Cd5tJ=vLv2v`Z<6pyymj`2@8}Ak0 zO`ATSZ{{;DTWH|> z8SPCBf~Y$NAbQZm6&exua&h|5mO#SIZymC{a-tKKJA!`iKHc}PMpCzr+ck~|S_`x! zn6+BE7L9b^AAPwM6WaRx%bw-O>+xmJMWLmu0A0?G1Jxg zKBT=ayp&31i^+s57iQ8U19HIQ0QWiD+Nw0|^zJD%m2yY?Hsz(vQ9qaEiCkck0pBDJ zIq$!r4F;wUUClQ>0;VNM_rL=~6~5 zHi0*dh~ozb6?~9}Ru>DQjK|?o@RQDK9Z2T}x^Ec*dB{5f zS;{7nkiy=^;^C2_I$?GpiS1cSQ7=?zqhTN3w zZ4u>){6PBpew8aj&88djA7y;f0t;Zd8bIJyQ`4_v)T|e&bc?|!oUR!TKA+mO)7Fhs zZVz!-gBozx&Htw zY(G9LIYq9>q!hN+tiUQ1W6F)k^{8@}sK(Ls<7&~!iIgB@BVZq(?^t|I-2KU67oAt^ z;Je1l5FnKqB=+C`0ChTgcKJ<(1V|G5rpI#xCMe$_iO2+w`)41Rq5QI@^ZSBTqd473 z5!e*N$MB%|h{w+y{cES;zo=U;gT+@7kUWII*lgXs>R*OWsH}I>I>B%)5Xndzs-smqv3E!z&!Wnp{D(YgHy#&T&t?igq`xOoR5}GIVaT&t?#6n zo@Y9SJ8@E*pd#$I5VA`X;fLP<;|Gcw>cYWO!j_s#Hnxqivu%U&=kuj(X@!oR6htT= z%L7TqagUd+Ct!RdggH<#pS(|he9?3vN=+2gO>EZkBgc`bjH&koZN*fhix~v9irs-5 zs~z{OWXnvMc#NM5V{R!SpJ1~Ck@c!VqGe^%jfFH63nJY7Ac25t&=U&kNC0OUpeQaM zG4KvJ;)P_mn9i$f6WYl8hWpzczns}`?avk1r&CMY{{Zr^TFEAbW3{zS%7Gq6NC)B1 z^~cawDcql(nlLM?Bulc0NYo>ko_;1)bM(mlYe-7gdR%>#A;k->?O{DuC<1_sEQkpi zI1w)2ES%#U{OfHwy_>qYr|-G1@L?s8*=0c?l1Rg`NMT|DAOqk0J{?|e0b}ou!veEW zZF5%J^l{+QSVDWQpdYK+LhwfU5Xu;h)t?MV?cTa$r&?{>=1RPygk`?n7p45k)ezHhfWh44@z-Zu}WE>cwtr}B;!0)Nsyv39XcqG$gFaB2OCyD5w}ICP)ASdb08p% zKmt#`Ds?o|Dl=slGc=6E4Lj%8nz$i1V5@S<{!me*R*nR2r$bvQeAu|t>4WK9)5n># za)v!VX~AfoR*`!KI||EDE_gIfyu!tdO&d$Y0#B`E^#oK*w=ooF(~W^qRN8~UC1n_iOP)q-rLrycCsc_YdhULB%27^ z3P#8N8gq`+yu^s#^=G!3lgknX0D{El^P(CluEkMA*5>k6kjT-Uwj1;Ldey0IUB=1S zLp*mfq_cU^C&1b=f7nXgr{cogjugVzu}&ji-b@R2&mgbnr#cOg%cv4WNl*{6heL zwGK`5&=iIpA~5$LHw;f3V-+o6b~=*c<~2HGIza#_;C8IuT{4h4>K8dFk%7sgs8?l? zOwWKu%ra_N$X>}bD;vhcLpWAOTjic%>!p literal 0 HcmV?d00001 diff --git a/elpa-to-submit/nxhtml/nxhtml/doc/img/butterflies.jpg b/elpa-to-submit/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/elpa-to-submit/nxhtml/nxhtml/doc/img/butterflies.png b/elpa-to-submit/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/elpa-to-submit/nxhtml/nxhtml/doc/img/continue-play.jpg b/elpa-to-submit/nxhtml/nxhtml/doc/img/continue-play.jpg new file mode 100644 index 0000000000000000000000000000000000000000..587113ee38a25a48232ebfe54a72aed12047447b GIT binary patch literal 44390 zcmb4p1ydYd6Ydf;!GgQHJAq)q-Q696v$$&@KyZS4a9P}4cX4-jUSx6C%Xh2p54b%w zGgZ@PdivDNneL~beqVau0(_N|l9d9$z`y`xJ~qJn8vsk(#nRNx(t_O6#_cD$w5+1a z`zk;j01pcX2L}uPae#-1M?geDLi`YPWaQ5%80eUo80Z)nSh&P^SlEO(7#R2z_=F@R zWMpJmc$CzXq}0TuWTgKy0`qYzA_5{B5)v9IHU>87|F^vN05FhXoMDz>VJHEgFkoOY zVBQA+!~no2*pDf|0RErA!NVdTeu4oYeP|`V0zSdO!hZVj{D02F!o$FPf(5`~z++Ni zaUf8Ns$z4R1|tF!@^Prddev&Dx7E!OFL0^3G%j6|{vpwbYld)tSRweI{SWznPxv^0 zn1O@;P*GxhT>hT}fd4u1e+R&P!oZ~9fEC4}ROQ4LdtU*dzIXmY~+CpK~4`|%wx z)9~}xT^HVz10+X{`fs(pqt)(xIc*;9dH>Z=C0u;o&4laZeZ?+80G?z7CiFu8sn8@q zr^;9vp5jz(!=|{!V5~}JT-vovCQ;Y|1&P3f;|OYCJMRCY*f!b{dH}eebXp0f*Rl@L zxT+blzpH9dirVqsNjV@IBLDLaU`5lpGG2s=(d_vo4@C7lX&jDt;qNxDBp-kBGEXYt zkb$A%J2!X`L;lk~Gn9`3vzqeQJ=08^zRqWtMinI!jnQtw?9FegeA-~u(um-_U+>&X z<14Z{8zt>jFiM)wd`++GiO_2wtk{U^XsLVVh-B8TX|5i<{o`DnCYhuGYuJ-Eo21gU z90fdsQhQ4$l8v)HWc7Dl3e5MUy9VeHagxjEQ(Lg{bfVYKv(BL zSAWz3-m0uAD0nguqUnFhJNT#N5xttc0vvsQE!TIC+SsOcq&gh&54aUNK&d^|B#{DG zmhZt_j5++Xi}S|$izlWtvZKWA|N4_(sldIgA^vZa^xt#FR$_EfJ=(Z!D)%bGqic5Q z#+ru$%EwS(cFWEAM&!%aX}5}Q0-2`*>Xe0P?g*l2Okwr&$9V{|Wi$D2qv=maK3avQ z|82-2%MG=M!b73|!Bb4%fae=^ESg0_UGjSc6M}PR8|}K|zI%lJlg@`&+@lhP)ADVG zqbF^iYmgzV=nn2!+Ue57&f@_&JtvqjuOOx=9U)9-Q9nE=mh#b#EA4Vf+f&xl^C+=~ z>;r9U?FiStn~wrvzRYm+i|`+=v|qfHl%Hr(6R83*%-WM{kW6#p1Wm(PhO0;SV&qh zcahup*J+9Xq;-LLFH_NEB=MzPhuGs#FjVW6qEyzVA|vpn3b`fqR*{rX_4el!|wU3YOeFcK1YgFg(@T-NoS` zN|%jFWZcCCy>$0#Q1&J~$!77S)aFvpP_{FIMjj=(_w^{IO`h9^vTkh1Lzal`ixAS? zPJYr44kOS2b-7eJm80Xo^ibSwMVY^WxB`3*Y{GM?Uc49nYE~8{p-a1#OM3N z>&o3$k7V6>Ru;=ENEfdWti!|(Ur{|#s?79M7FpV5Zliw6vOyh^O5I(aJ1XmI0himO zv8kbTKwY&Vchmr0Z_mw>Y8Po!%HAlm%i}JApl3cCOBKQQD+a?6C4sHb=zuxvFi<0m zTi==$Ln_7ZYU0bsJ(>VS2B}<3l+*h z8(`oi29ww{R&v1j+uxL(gDZX(I@}@!#*yLqkt+ydbE9Or;hF(y!BD#a3bp|jSU@9j zQZmI*W&_tlQ%Vg1`%rkUZ&5B~Lt^e0lO^THmv?~CsWaa$X?M07xA;Zs<*+-wzS|xZ zslolTY8T5TYk`-Kht|DPWE{KLXtWPdYt+wh_;@L_pS_=Q(%vV1D8U$?G|N1P!Lh(~ zJG0bpy2aVKDiJEOue*+3r`%K7n=zCwR(tILscvMOOF844I1qM) zkg@WC%soO#HFI?HHI@pai4SKYnowF5bJh+*e!2a!ocR3uUuJ8uthTKQuaK`+vgb_W zujZx@ns|3Q0RoZ!+ow5CANTnsPO;mOl2d zB`!=I*fT}5T{=5@f7_jH2{Wl58oS}cJbQSGOnBKo1|AbXmjy+Lr!()gyuSs(*!%xy z_mCpAqsG5wzK}K!LUncf9#r8F@dA2dv?)}ic09DY*o_57Rrhr>tD#ep(cevSpAE$0 zq$mm1YBO6UYL@hSsE)f6ZYb8V$_luiJkGao`Ek7iNCJ=E0X})UMzZOYmRC*e%TTFz z0M#2sHLcc2@e_a-FXZ?bt!()~?1lL5=5A2Y&YqPf#m<@Hn9HGO(lq1C#16+x>wfPF zU}(atDpyUPr4Yp})RJq{8MN#aru@(5m^%HQ>70OHxaF?e!D{xDhl;fLm*eS(*DGT# zLOV%esg?I<55Z7~k9nD`mNAaw**oAVG^C%e3^-EX=38NGv#3s`L**7vataC7Q2si6 z83euz>8(Q&M7RB>*V$HE_p{A`Q$EE?5-fc#TUiZPH8qOzj~KOu;Ps?>lE|m{cyRj+ zG-pU{xXCEfdakGa=S;Ei#11oPk>#{u*reot=jc@jyo*J z(mm_zpW0;3&nt|b-o*qYRcBOYnqFcq0;>hPD^ zSXt11JIY}!heY6$UXw2CizE{-?=otK$IaV(=g|s#=k%JwJ{CQ4wI4kqUzLbHt=;IK#5SkA=~&0eT_?)mi?r}?OjdDXG3ea? zakTK4+)3~ZTiu`FeU#+6z>9EnYyQbnyc8D7nUKAyTtvBGU+vhaBDJsB@0WHa!f4}L z46#PRs(@F26>ojk4!~kqYCrm(lgn}n1tP^1+oN zv8aIT4?3DLR~Z6T)@$R6WZnI}?u8hJ%>ZzRM@GJJ{>Y%FYP>%1uMmaIB`iq5+&qsj ze4W1TP7LT9t_7G~macoFKEm?9H4YbDufx?SUR1p?{k7#$+-(LTn$6WX`#_%wo&Dn4 zOk=vPkh^22?U@_Z)2#aZ^WX-Q0I~W=Hp-e7+3je=c*aC&>L7$bTf3jrdO96<^~sq; zayedwi>^P~qS@EWhdUgH_?YgB@eM&4{20omMmjmS9l`czd5oqcU%2AUf5mA}Ue8Ez{#WWX6pG->s7EUg{Zt1OB?S4!_iEI!IY%+%QMLo`JV} zgx3NzH?L(Cx8}^ly|yDiQ?;&ZY0sJQf?&w&>F8D}wC-yA(YWDS>S6I<+UCBSE+&t^2bfh%dR0Kr+wc&wmgdZ3qKrL+ovCmr7`pp! z3K6YxwT|OBu#v>u{S&q4LdvPB>K=lUl)#hkK}vOmlcNr652g8|njuRpD~NSn*Bm@g zYEPVjrBo-8Hu6&T2up18W}K~aY8qomLe1fxX)~FTYKvR`6#ZXMJ+#tG%a*oP-|j1rv0~1yO&cRVRK{$HP5P|`ZlyJn=XWQJ25f3 z73}*CxLj$N?0W}%ngl&aA|!izB&{4X&V=RKGUfyr8{KA|6SUYG%a*)+uMOWN3{iI0 zxVMo~hRXUmY{v+b2xhYIQV#L6x@`K?com3uwOrEdEN>XX5Vs8HhDamEP5et7kpZ>g zRh~1U@Ui5M-VK@)pJ_L~3F@+iH}rZ|-t0;Tfwxjb6P~mx%Js$THgt%C8<;SK?SU(K zwX;b|Ru2*qhD&DsQ`cFq$MTT{zW(RJ+H_$CvFM#Y(_~_qcq4h28{oc;4K}^aHS5<~ z{RHhuWD++-t*N4yt@JxaHJz?r!DR+G{uDT}4ig_xkdMWV{lIXHbw~CT?FpE#H1RoBL3@A(rU3E|MW6G^(RqI)}LVq+pO^ z)OCV!a@!wMyiBk6lar0X@0*@+WE&GxGcy9J6u#m%#r-)vGK`-+b*x;+=$+O~ZVM@P z?*R0PRLo(|l5vNhwaM0h9y68msiLhrt)5~kq_LtaBYr^zK3>S;f0KP|U%T4Pz3oaN zL<1`M29HI2XI{H2b=6p2e)109+=Lnl<0z*|U)Q{|e!&3WzH-{-P9AxCa9+gToqWe! zjl8+zdz+h-Cy6m6`p0|wXq@m|SK#m{icWcUY3+qLw4AnI z3K-KZ=k#g)zm+-4gXLd#uSU@vD^z z%wLV<`SY`{mQq5KdapU7p&P$hNq+0loE5v|9kAy!@7eoZwdK;iP~ub)IKdT7JRKO3 z1cUlIx<&&24@^Y%?IVfmng`#f+K#JDt$NMyW4jGJ2(%x5Kxq)Ie&#?tV{rS3tEwQ^ zxW9w*dY+i<9qH}bx?P$>iEdiVn2V4fxYIaOcWK>PF>zHq(I&_WUp@FJ_SWbEo2#<9 z7-s}4dl}4lQf>f#Bjvq*^aTH)KFqo=hjTU3H^{U@Jo-)H%+Cga>UKUErBtIFm6e}d zo#3elQcjt}y&RG?awhE*wPoscf#zc>%QWimz;Y{tc6mdDf6f_5_pDtxKc zx9RR#*wn^oNWuK5HPA9-Zx|%q@srtJuP!sD7yeW~`K0rUliV6Vy=65R`gS8#fOGQC z#stT!uBbiyFv`?@2a$cKX8lH#+SK$sDc1*2e;y|X%VDHENV&?HGf=OtyxAZ12Dc~x zt59XD#qa#^Y9}m5;NhRn45vn{lCyTf5Y_}gh zEV;_X?!T>c>anF}SNy=2`;!Q#c9Wp2a{uo;fMenz&DqYt{WX-hAG?mKSyhRBy_24A zD^_-cPg;YHYL>K-``q!)OW44A{9GPN&F=8if+0s*}n4s)-a>?paojt1R{9bF7E79M>?!5%gOXBXa%BP~w`uv6wDj zc@+&Ddyt?F>9fwp$@Nj_YHq$tUF!qH7#Y?;qEQ%$n2R)$_Jicj0)5b!8dz1ZUG^!+ zu9(ZlOo*AuplNF;E(Gmt?Msaj<`PG%*9EL~vu*WK&pCz40{~sQh$|-D{AYA|KaOlQ zUNbZ$VAKaL13IwGHIcw3Cm8Vg?V%T8m|{a|AJ6d0m(l#eKV#7N)i|6OsmQ5amW2Kr zjlqTeF55Ej`6|dYqq!PWSYKb3$g+pIyjKIZXK2Ds?1gd;KH9U*|8Etkw{zo|Fb7vE;`L0Asxh_waJcJ;UxEL-X?NyccIYV@?m z66uXxPe12v0IA;rV@cGcZ?~qGFTg=}(tl6b9t^+~?Ts;6;m4>%*k;D1A7>zj_wPKoluw8Ba%#Qo5f{k3fA{1=h-f z#36%o51loJ*24nF{MZKHrme_}PE5)O3p>b~?lUxNQA~S_hK@Dd9vNXjMm97oE>$ zjZWBhwmkpsH?a>pT1B_Qj*?T2q1W!>M0pwY(st^s=xj^GyCZk4_gq6x^xpx|FI?LX z9Yi*0sctE!GtvU}Bw)pYP}myV4Q-$e_3)joD$QsRpu?uJT+2J)%kOspRQny!{C0~Tev6L&5ZISe zTgmVu`j}y5kmwT=95;%s{6<&z4pOm=X}>J32>_;tbGh zK3ehY3uLIJQ^9KSQA1Uu3)%72NGhf#YKET2DQJSHcoY12x{9!$zpt~ib47KGm#*7= zcT>&e(dBm-*o(%xDVGkP<9SiVS<~;HslEu@FA0+Rabx*BH`%&eiZD6w4Mez{X-YV- z>e}9N%QvXWb7VCy_>rlk2&)Fk9M*gSy^%)=QQrAJvM&^~bk>Gbb!xpJBRp2oCDb7A z>qKAbLY^K{@E-!eSN%q_24Goh|Fd+E*lRgwvn85V8)^R4a6x}NX?hS4e#Eqm zcf!|`j*3Tgp)j%%1QowUT9e-;ExfA`k|{B^B4HIPK#++xPEq!`qYgn8UiiwXDizQ$ zsJ5Z2hD(u<+1*5cj-|UI?NYm1`iKV?coPNXY%c1=Qc^qE*pkPc)4a-hWdv>ghZ~69 zGgP#0P4etn66gL$KYsV85=YJrU1$b950DYH#LIrZeSTUXpk?tktog!!J}VwfLue$o zOTg0e4$v!lcvg#(f1$W|2S^uMb1^G)UT1~auohKMR_T1NUBZO_wY66>VVhmPJ`VI~ z`lj{{*k@Tc; zJAFO*tG>Z&X?l`E*C-g{m4P zZrFvErkP5&v)Z{W`LYeg%R$0D$s3W}z)n5;?l*mXOqP*Sl+$!JNOKXRKP`~4!B9Fy z_m{PkYp(iRGRH_bDPV@pz5A=sVE>O={p~(T9}M&z5YYIk%XO5H4M1?^t4*@%W6ex!)DSm7K7T`MG6HPdIG!aFJ7}HL`T3Xm-ypU9 zt;IVo1#fWt$Iz5ZDQ)dKp?`-xAxu_2js2Q5#0X#Jy* zJ*v}XXf3DjMT>jUIKn1LJuHak`$fF!HiH4W9Y&j|*lJ44>nxl#W7>s-ArsCIgXq&t zzT0WUULgf4Zb~hYTFeiUrjRGDC5rP&RR|YS3k?5pz@ws&?<`GF%6umI8XSHs4y=hg z5V(I<2MIqvSj>t#np-EpD4c52RPybDK`q?~Y}csF88$D)8i2N=b{ePfyPQKr%yPLg#mQUZN?IT_H~~_=aihZ7Z;iGWy1`QNlQ1t%V(bqcgV*n6qPP%r0w54q6HP%QS5*63cjE5Ue+Z~XQkkwVKYJAVy^x^0 zLhX@Qm`cV$gSPQlDZezGK&L)~3RE%-m z&nr=iLOskt9m={Qt0{l($v=#I`*JL#XfBH*QYP%G)KFUhDJd>qOl&8Ru%Z$8@pRDa zkOSNBe8R$|+}@NkBHWS2#5|fs3=Ed|@4U>;neGyXai#Csle^tFhhBT3VdL+m{y^;Y z5cX~CTRbcQu|L;+1#4uX?z+t#Ybvco#{O7-QIE+V2x&T)DY37AIm+0<}XKxQN`h|@B>b@q5G*_0qG?hEL|-rzCX#EH~z7^wgW6+p_<4MI`y|m zCg}O&ZlU8CLkos8iuqq#cJC?z(!B`XVr4yR4m}-TKG=@}8;UOB{g67Q;(?(jbw$oa zl_*uJGDs(Vlh=VpZhxu_v{lvsy{0gSNV9AG$8fB|f-s8(SA=rFUOAPc2rBL6o$y0~N7 zV%`1d|E6)%i#PP}Vx|&kh0}KaI3e{4myx{X(~f$Y_Mwjb0FZLsRG^Npd`0L@ILROt zk`ni;#1Z@Fa6h@ws&INivp_v-Id2{(I(@kM3I9*Kx#uGO?romsEDv6Xb_Q-H{#DYx zkq}~$5$0{3f*r1o>;B%N2pKWstA^q7mUXB3y;+O>Elzr2I08}7+42pf(Z#`OjF}as zwvJ>-W$OUM=3c`}ZRF3f(%RDc1yPNH{C+}v#faZMn4>JRQHr4->GX8YDPz9Hzz1r2n^f#-|5@0KKoRsM3l`D{B>UY!Z*3Vh z@|CaGG-;*X{4VW|eO=18Wi(82W5D&tk@_*Ffqep!rqIy2aeiw56A@|V3Rw9esOObw zxP#(fJ43LUm_LX1BXHz_)1t1eE1ageF;SN60JzK!T!|nh#X}`;v54I>ac~q8SSWGd z_Vq=UEescnmU5{xpI!OL$q7#Ia2MrjB{I#o&h|5}dAdAqVR!?uSy+c?Y)fPpqRjC%4tP0$#79$PK);An?)38a+-{c+@(75fF zmE`mU8c~!yoDu)d6P)A zUV|r!ZGOGkxzmwaLN;3}Zo0#tmJ$-WKHopaT_ZR%vV4;bnb>*7X+qG5=}8SIzn`pb zbQu+TXrr9ZI1!ztt!?D>$pjC4*7Y*Ty4>8T_#U)r&&qlZS~(LvloYnSA!}kt{bL=y zvA!&Yi-R6hn-$xi_3Hb2Tf0jI3^53aRmei3z8TEBgp z*KePL(wR*UPDN2P4*Rc09txG6)$MHdV;0t(BJT4&mS^V;Vy_HFe-G=3vD!|9zExsr zGV9~c5T%)P1&cPPP*Q0L=WXTA5sG_~{wp`lKuRZ~W_Ntx12b+D^EN*z+)Zl25P#zLGC{N2)^*(2pA97$B ztLnHa%Kri6gy#?qb!0BlRKBj=S3PWkJ-+C#IyQ@OQhfpDJm&KZM`t7TxoZk>MIUC! zbB{P`{x&PHlxNd) zk?rL_7hl^rs#!s1O_iy);62@X(9~O<4BqgA<~sFn=bFUOfMc(u{B( z^gdT`8^<4Xr=Ey9HsuIHV^`)cdvO&`U*}F5z?~9HAn{_B&yJ+t^D%GYEArGEF_yr7 zh>%C2A3@3tju)9pv@^oCYyXu<=Ul_e3qSD==q_TN_T#%;vcLf5`Cl9mE^f>8v_rVrlQ_hYiBeDlTdBg~ z{lC16xiVVVuhLbM_m%s=mv3@S0~M)31VRv;IW9w9JOX36#$_+Jnm4;Ms@CPr`+w$B zI=tqFn~IGwndST0V|UAMay7!Y+sxzD1*i0Fz!GY(4Q)_`G+(tCowd z0mQlPzf_unzJ~IONk@UXsq9r~)?o>ZLywDH#R<(HagAg9O=pqf^p)ifk5s%6v?@xD zUB1bM+IB%LD+>o+?&vHl(890~D6GS|s}FBHIOk=aN~vA` zx&Et%#qs6jLX&_ZgVq8UwZ3Y+16|go?qsh4`W$KsQ-iN(X`XMHN(8hQme1w&ZK(of zMVQF8I^acnvkxUer3CqyZ`>tCSqy__DI(t}Gp@=O*}XGy+emfp29TwhW%DYAU#U3gy<~lB1aedz>m>e%tAu5c}XUTt2Go;9rrRsZCL5$loJe$g6idvxplL_RoG> zuEx@C|MGlMk_A*y%Eejn0F!;JoxEHR9U5QcM4V- zD&Rb8p3SZ59$^|7_f?^U&=5dM#^2@*9$Kr4IP_Qh);asjn#cO-a4H@9a#0K8mA&p` z*9B6qC`4HKp6@1$xGs4@ByH>}_4`VEZ*pP7sa`r-^7HCbtB#y!xEO{sm6i`TKt>pG z4~?DY;nq#*``L)1Q7_T_sBx1gdQFq4*sDSfZG1Bh+fnEdCPQayS1!_y-v0#E3r9`u z9L!xE%^p%T+$X0@UY}=|1-Www>rXcInhHwk_tF1KZ0vRiJlu?HTg;ctH5v*dA9|Ak zJ=R>zdwUR1;axk|dr6Cv@ZWH`za#{8H0NRe!^NE*{Q@-$O+>f9emz>KQ+w#L!~o;( zl}()4pcT+$gKFg6EfBkQ6YT=|+x}*34M27ZlY(=A8wrMndCl>w!k_&MeM3(aZlz*% z;D9lu!i@&)KN8;oY(b^k*K}Eny4-_puzuM*=#6(3fpUl38xtR^2!J>Q*bnD|G*Y%k zM?9t&J`Pi~yfXG~uMScxa@Gz(x`2?o^0f8#xziw31{ShCuMg#e(vAq>QL!aD+#Xoj zM9IdgX6Fq+X(?&6l@lnJ+H-G13UW+eoodmFetv$tWs70Wjr4I{c_{W;VGh3zUWJ9l z_WT7JYhrN1>45TX4Qaw49&N;j9sSIid6aNcWg4Or9NL->Q1@^nCHal)9e|wu-KV@m z4R`h69q_$j^}$ozE)ww)Uz4jZ>FstvPqU*OB>3ZiU9bS3?_65%Ki;u&wIz1dwJSyE zQNiZINR|$vB55QUy2$4b0y}r2Be&1TzOwG`Zx6u@g|pXVS+}VmL1%6`e^_UxfAx}t z;3N(*)s=eJ5pTUYHYbEtMv7>#dM>?z&zl?F+owNojDfRnH+wRdGQG=tPlq`71Lz-3 z3CCqG%kO~Ve~VMU9p@Cx&&7rQR#S1pVFYK7`3qfeK@JU%(5X5i8B{p-&3s?W0wZ@a z^y!(OKtz$jYrmp>&UOhz(kYAi)m4B^DKz8>iNd+nK2Nk>6oBS5>nwk}%(6la#Ilz1 zAPB$%f0Fd|q!Ux#x7F{;QQ6NEbX8nXGwwnqMI5j6;(55z79nF!RDe$%rsB=VJ#oCU zPRReyxi)Xhyi<0&f~I3}H{l!7wCtLcRx$K@)Mg~qI#s?wv!1@s;gDrBcckSKT%Ms7 zgW`-yTyl*eB`tXWJYS-ls`*CW1TmO?`U0^>$IA+^=E-^^xBd2YV{KWP8g*X_9`E-A z0%D`6%7tSbZ}U!fOd?Lk226X(R<146rSL#+S%D~KX*^0$KxkCwgMh?ug=t&?H&dE^ zC-dCD*3AoP#~T<;U2WmsqV7t&8*S#fPwejil%I=gn-VDtr(J%B-5{qs-bG`SNViNe za)2*Tw84k%_ndvR1jACw{XuN)rBSLofKw(vlRWzF5Jxy&(Tz{vJ9?b%FW8rZFW+51 z(taB7ORjqdbrTxp*!|ht5w+eOFKfFt)|RWJ=i-|};^?a2L5qH^`rIw-OW7PYDkB&V zx=~?7K6i`Pk)s36;E4!l3FdUoSMso# zb2@m~L`EG5=P@+G+|Vr)&e9H?ECzu!Oqv30Kj<0Q+5ErhAh1Y&xqK%jLSw8^d_OPO z%{^%2TdziNcR8NDPp{Q|{4LIF3kTeM2ZMaQrFmpChKpm+=#FE^Z+FisBc?U~@(yc*$TjXQPxD@Dy! zun4%dm{N%e6jU2)8CbG3a|XupRq6T5=Euk|A6*l_+H{Wpqs53+&*c@+C^PL6Tpj-f z@o$|xm*<6T?8=Z7!=v`=7b+|Kc3Ib|^As1m3|rO$DAa_5Ig}%~uJP3%T zNEfrfq3craK_8bo5I4nl>5a7@~sglpa4*s6}Qg;{7B)t3>uc1s8*E|8h)z{h4MFvvm7UQ2F1{ic~1j*V>-?2S=P+<4vMPuD zvA?w6v%+)Rspscn{iczT(hU1bw6W`#yj255mi}Qu#4>zpDKA*M*g$4NceDa0^P-gk zPFd%Bb62!4d)8z|w=NrP9QFR7?_J&hVziKHlhkwc)9+womF%QuZ~PI(G`t-s9x{Ik z;A*T>1r`O^w=J@{8Iy>YE3sPDhwlR8rT0Zr_gA5Mej<@t+Io9!pzKZUa=dXt-J{1J ze21~~{R}x=#h_G30M*57M{|-Nx05xkylFwtE0?ZyBrJ6dPR~HOGjR3jSu5e&pBsU7 z?SDMK?c%+UQG16EH&3E8cNCcoN1&WN(^)u-z#OJPk!pW16LWSvW*jB?%^~&F<1+LN<#B*__BU9aomswn7%dn-|a0Gai?I788;Zax9G5Lkr z#NzAnIK!-G% zbi+iX{kN{dwcI9pC?>9h*yntmw0`m-UE#o$6kAVcgE3OCxmvKn)1~3E{_5&6Z|a>V zGc4a)p0hLX{H7u`YW5v~xo~i0)-G4jiwV0)s`69Z6eWNlov%(X;vvpwGXxd*ww(AGSJeA0c)<$vEU}QA#d-`znum9wxyCNXTp9yYiUOf1aP; zp0$7z^h#(YuY&&|Ug18_P6tfBmler3l{u)xxo-0q^%=T}fUn8?v+89@&@IvDj8XO4 z90foKzu+>Yi3yV8N!1i@mS-Qm zVViGMmf!lZWw+jRhZ#oN9z5h7p!lQdZrw_h^xXc^Q2!Vup$bE}nrCqT#TMoHNBn(n zrM;xLIbqO0^0A*z+YTRp&ikrdEp!xnZJR@u_7lT*0Iu>Y1gfHFY4+*7g}G~O>b~bT z*zYD1qaeq{|AYVMY_Up1At_}yLwgede_mU7Imu{(ljKToo@*4)>fwT(WiRsD%N<)ch9AtQ#?1Boir!!KeZP?2XR zIXoJsSLM%j9+jwj#3Vbj zo~dXRL*x>TMxV`5)ZCot3;MxX3m(rZeYLGF^9sM0sawk(Q)!`Q<*)8WX1;YWt-2kT zFT0pbAWYtV1P7#nnbhQu%S9r;w`4r-glJi=N5^Z=RLmO4JD3tgpVtwwzm&VL#ZNvePW)YfEJ4ivHBo zLh1eS)MtkW6t1X|Zk!GpwBIhx-%XFG%;BDh(STZHpO4Rl6Oa;qRoC0G^FasA`GrC@ zodWdetd&Ft+dJXhkx*zx?H!%DvS#`N3B_uEueI{O+9IceF1i$|3mhwDYZjPV=|aD8 z=Zm1n&wbN|z-|2oWjVAJwe342#%+Lp*2quETp_hg>6P#CY9 zKgUYZ*&Ma*$t=#=9^lkTmv|tMZCUg;BBb^zSFZj+BQs*ce@cZxejW?N^^hRB>0&3Ae+v9bwiikFP!I&0oNUKvSUSjDe^q@uxwyh$f|4F&4w zc~GA`MJbRr9ktPxKR>vg>1r76Syyu%hTz`tmXP$ z%AB(dcHa#6tWj2m{i~M?mho@`ef*fQA`mt;CPO+7k@|TS->H(yu-&H$5w3~p`;u$P zri^$2TC6~mYsM8*rZPYH{(hYNo0?#(4pe!fJ>+fL9CAx$Frx^&*A}js!W8<8uDKD< zq$w45ggFmI+#-8DXs5!=i`4s@_uo7I^Fj7$w(a`$8Hb=Jt5R2-?7A+9Q6VUCOc{1H zZY1G&VSi7%?gxGowdqN$fX3qDwP3>94+I3y?N)9UaB)011~H9;e;5L?T1U^>@T#WN znM-ybcJYGqXX3crAGq?$*wIx&QT^aHyl{$b3DX~NI56f;@r265%8$;ycUmdpD{hlT z&B22Iny=dPOTtZUu#}JLd8vfNSNW-@Q$0{NaY_cAK}7lS1zB*yo5nt_cJQ6a)ne?F zZkq5A{+?1E7NrfoPj30@bV6dS%!qL6%=Me%crBcwuKb-#&~|*K0hk~z`O}7~qOh_A zJx(Y2)PNp~-HZ<7CH;*^AFUDIT7JZnocWDlC)0~;5-Hwv*z9tBN2I;WM{VES+l7w7`Qw z?U8O6B5AM-ToG81_AM4K_ERkUisN1E5KTlRrGy~Dc(a|u>wbbiiXG$e`PAB4N7q7( zH~#gCYa_>oEaIsu$)YKh_i~*Qoxx+zI_KeOv5UGP(KijW%kQP(?loB~4b{{I{fa$s zVnySKn$R&%tw^rW?2d|U^)gba?FgmOxZr@?l~J^zkTjcEY*{yIaJOWvoP&tPt=K>N zsfOE7q99vfDoN6Ea*bq8mPIUkvZ=Umv=ijbKwVBK_XT2YRJ9 zWEMgWcq6U+J7T5zKr)J(7!~?5nHC``psN~#xLXkuo93_v=53>H9qp19-IcR zzzay2_)s|u3YeY z^!11qt$ith8OM>N{<;B|E900@ebnU|?TVqL(ful{s?*rua;M)`f3~q zXQDsWzm{e)EoRXt%aOySA_{lSvvMLN487EgM#MRNd)5{Jy>|QP11qKOw#}(oWqP;n z^SW5s9zMdHc{HH}dTqMAlN#U6px52$1qQ*Rx1dMfc2X0XbSHjW2({H3?ZR8}WMHFP zy(rGHK`-UF)&8(>pzY&cqRq=;A>SU#VHD3uq#PDc9HZ$tG-6IMOT=8de~u2?23jAHHCwdeM(98|L7 zz9;l^Fk@qo*rGtjqgljU*6rsVPL!eC)>wZEImU#I131V*{RAjKV+$`uU2Ssf-5dO2FyR zH@_;gH_1`PzaOWplaJy3dhfBjJumOKX*>e@1GKxa`~K_85D~RM6R-TSmcBJv%>LZI zgVe5@$)l#(NL-iQx|7PKgtiSyLm}%AI%}UUBinmQl;uBKQbQ`TZ~>5o6mTjhG-aP+ zGbk_*v9?Tm1)cK)w6~s^BgL3qsZW3Xb%$o!u94}VyM>yqU?8IKbBxO zXL>zuEj{|Chch{_0snsh&_FN0MfBQpn%Cx*RaWZKSj6R`2o&LR-RXKqG^~(D`}X$( z(>&9w=YslB#oGfrk8IRdu)%AdfzE%Z`qYz399wL>0I_9IGBMwZ8vZ%sxbhOQXWE+Y zh_h~Oq<;0uDJ*3VW7yRX^bJ=@xA5xQ-OCh1Ck9Az8=K(v1NyVxpP)vW{F%o&_oyzwm=r;^y}Q-NTkNEeNvI4U&cWHUMh3r@BM^+p6Z*4^ zdepGD!ZO8h-#q}i*6J1D+x+1HOdS3CcVgWh!rxDIb4Y^7`U{7k|_(2~?DI2rN z6jFKK;x$AOkVmd)sMg`qK9oh@`i60eKJH6ka{EXLyCbsf z9081OtB>{YIfHE4QE1&HY#w*=c{N^*B$iSxQHMz3Q1&_Jy>%_Ey`Chqo%)9blRPal zv$!o}zZn|5ay}M7aDO~gf1y3@k#%P$RsdDslj;q5VQCz9FLQZrSh9fJ;2d`2)0(s0 zUfT3hCG5NcdzxFQUO^O!uMl|s_hPk=s;*qYEEj8k3X>ifmIDCtYL6T;UwDFBiMWC= z#d1AsU%a}pmr9!22u2ureBUpZiq%B82azz4o7%bP1jl*%0T z9FNMhoM9w(Efk1~9wHC)zZCM)DIW6P2?=oN-j`^>fCi|`4-o$P0HyPcTvPfcROUNv)2Fb@)Z(?iK#7Y9kxUl!e zD};_P+a=trJMo&->%`PcrfJq~)lnE#;D+x~U+I>2DbMa+$7~wCNbKzGRyGLFX5L7FoZ^ot~n#hXbE(vpp!dV9G(X4)nyGCxL2Gq5HJpV z*QZZ2z7*dW&rrX`GSz?zP@wakzidbYY74uxQIKRk+x&+OS|D;Gr(eIj!!wSd@(2f zYFXuns`koVS2*f@KA*i;uH=^9M-i!I^=#u6WBfmha!IJmD0m7o9yuJIaaq-#v%0VT zBWel!DhqpUYAB;jiKGeTeWld$LF3+si^R7c9n~O;D~Y?q4{Fjw0-&$^O-xYhEjpMb&NYlFs6Aq;Co9 zMR?1{`hSTuSoGT~E2w2}m`E|UlN^ek&rr6WLh%sj-HlA5FNiI>0RI41DF=sROAB>{ zurt%W5UET#d2}`iv}qvA|)zmtp~ekxNmsCj+M?NUoU5J{&*s9$Mj z3>$GgAEqi8pfVux1UWswIwt1mJV8Tr@#)@&S0JkyaINz3-n2ZP&PKV4SVIPn*!QU} z;aTm^@f32(e5<>?d3So&m{M4`&`|HHBgm~d-?Vz1QcHXiCY=JOl}tzn0G-q%wieeD zA(Sg3b^v2FGG296RJWHW2j7~MM6GhFue3659D0vRakJ3AZ9V|PIHfU=c_e2wBym9r zWHK|bTq==(r25hD+y4MHq-4tb``4E+tkT50Kv{hN<#ESPZG;r-=NFzP{DIDThd8XbPyb<0;V*!Y9k-N9vmK%8H88DVp>Ie6!?d;@*7E37P zKpbxMsh5iV8wR4%+Q3tspuo>=D7fUfNF|!*%%d4O@Aj&{hb{y7e$G`=(gi!S$El`^ zst1Nx`bRB~F>XIhSBs37ODLP0o$;qcaC5V>XQ4^DANW_KH;d2j<@9DLMz zvFON+!vHb$$jx%HUsTmE#ol~@J-N*bcF-wM>A8n~Xe(5j2U14p$2+s%?M2N!tdg@g z48UQ2)g+J=6qfTwsF994oc6Bz7T^1U{{T<>(w2@`z}V(CZsQrQz8-J!8qg{OAc-@< z9nZZ>EyA)tp~W(i#opU!3b@V*J?I3r2^mQSTh!BfO0LdiEJ$p|eqoAvXRO-Tcv5(l zHAvVL7&ttVNzdj@F4Zh$4I0AOO!LQj;_AoP+kPq>!(??*>IV4^J6$QTh^|Y`pKp$%H~6Ythy0y`{ks3YCCPMSU$K{G~Z{v>; zTiUcusk)}X1F#H9$0zB{X56Q#K6>$}_}|6$ejU=Kx$4Ix!{muyaX)NvU!DAS<6GYp zT&vGz96LQ%A&pC_-pe)Ey}rF`hLrQVHs{m0$n>FXY}R|3ks(JXl`=`Rw;q`l+Zilt z9A-Wc>7N?cg_dI+UH9%e{pwWIZ;ql&7eP*N(mb1sV~*Gr)~{^#i9AmOqdD!n8#twU zMCoaCv6PBcC$Z&)YlL)_pxT*dwpEq-rM&%BOen_~%^eS3EkN7Fb7;}+1b;ImWCBGY z{w)oyu!b9nIXP&S9P#Wq;)c;BhvTj;V6|XWWQjNwlg=hS+Bw0?u9b?#%5G(Z9GpY2W9EX!px zh}sb<1p_2M`%^`atK834 zs)pft#WuXQSfz-t1gGyp&1VdZ?%RnRfDSQPw$U7AqL?Ybb@d$Ax}?oKfDyg8uOe{_ zYRv(Wxz1Z2zm*V=6tjmh^oPE4Qe6e2)>$uOjAkL+`qNZSuJz6~@t=Az1-YEdyc{k8 z$9^bySEidm-N`xaoSL@U2U|fbEbMlX>5lX=!7;V#7{OF0VwT6PGHEb2?Z@7^jUju8 z)6((s=v#dAv`XGy2exT+usz7!0`EP>aaPN{JVzLgCCYjq&bhGCtzl<*<0X%- zaax(l;Ht-MCdlC2QPA^&ob#GJU80^9!Dm+U4%}1khqaAYWIKsJF+W=9S;reZ-3{#H zgPdZSXUb?V=+4j6jqRre5mxiqIzpJY1{Or}T!?@Z^Jypgi)2r-QN^Ht4Y5aKA#?tjmkltZY9 zTSB>c2xg3MD=nGb&8xEP21Z`_^);mH(R92ueVLIYNcUjpEm?tLEiEK2BmuXOKR(s! z!^P5#A)Zicw|!tDuE^pPg(UhFV%lZuf`@ z$Fc8O%E>!evFN%N@U1c(J~uOTfej(<*(Cn}dL^vTw$y_FcjlXE(Gk>EVuKt4GeR(y zCXfbK-SYZZj^!?0HKL2y!JVP$Wd<-a^r3zV6?3&P2XXC3i%Y{RZu!R~cg0MWcLp_) zqw+U)&nKLAt>c#-(t(Z(M%#ndUqOswnpxV~tH$ys?Sp~sL|WNfNB;n)8NuvN6jV0x zsl#*isr1j3NCxWBn!8Oo*N4sdX2KUml<+9ew3HOFdMBx zHJ)O?5=(6D&*xg-!!6`}2^cC6Mlqh;QtdxU)9vhTW+3n7YG2({BicGaJRX-vyfXtQCxzOAE(l_-y4fx{2dfe4CYtPz!NLn`qq05z5H@P zW=V{Zo>TAIx_>A5B+RrTI6Uxuzk09h7CNHJ zLtX$f2#kY){{VgHx%DQ72wdB*#3;kEoCA*DneC5S=atxFJRK_|G*@vm_Sno9_XN=z za$LQGM{^R&Q?sl2PI>Q-tu1X@9bVPolGO~u=W@iKr+=j|(=MYLS+sk|EurUXlgQ?= zX8jW^Hpr=Oc?dibt{uNVz|v-vMXG#FtOQ9Ko>|KVK9~o$?@euIvRkBvY2%tOr>4R3 zPuugQ7xOTck_ZS$OPySxg(_Jl8zBiz$W0qD0`vFsB$j>S*lU_JJ<&K|d}( zy+;+$nNfC~tH(54P19z%4}gRyi|LN}u6(M2ja9Q7rp=^*&S=OsM{cJWZh8CAjU;kT z%+hT0;BlP&YrBSKjX@nfr26MP)Y#)vGI<@BJG&ox<|v*ynWh_6fWZ4y(K)zxjm82d zQ}gz&?1?jlyF0Or4{FW20?devLodzPR|#&hkR>CY;CB@6`q~Coc-Tnz`EiZE>q>2) z3n7+PEbRMB9@zKAOm4)|EuyL{QfKH!E9O-W!Ixmb+v}by>21`ol}K_=a53A8Br0t( z&Ty-ZgWk3m%Nyk+k$PYs&oox(X91&w4n22wsW0Mt!WK4AiUtmQ@j`Uwjev}8+w)-N zrJDx4^ZYz}p~2^k-&**r*Al2cRXzP^c`gk6ET1pay-Nhst*nyl<#+=%IKkegrq$9k zkEjMY&MS+Hz>u8zcHj|1PjMhcYlhm**mt4i-s>!F9(UmG&(e}e8(N|~GZd2~;|-47 zRG$cu&iIew3V?H+xZr+tzf9`eDMlNTQS)aTaYjKikkW}ZZf&GvIUTcF0BSO@^RUK! zb3uehReWT#g$LfJ)ey={Zo-0aF++v!7#}dsgEd(q383Z7@68nrlhgO5mSM?Cq9C` z9~-->TFtyl5@cp&^AI`vSDqM_L!-0`-})K*A1@t?V5u61?diX9=NW$9XBi_&py>8i`9T-u~aT0UM0trk6PBh z0t;WPQ%|k{{VW)iG(+X@lfa^ube7rS1g|_2IThuiw7a7S1ZR!IyH@Sk=meRWQI&}G z1A{|KtdcBjHs?IkO+LmrhR86!**w&;*_D}ksvl?Xnwm6QWL8^cP;f(&yWgJJuA1Lv ztkS#Svv6_Vh?3P}3)5v$l6L!ZQn^Qo;BW{y!3VWb<)D&C_L%b69<|(7^0a$pTw>4K;*KyH6rP&4#ljg@68r{&1aE7DfwZPrN_q^CJK$vpd0C{_v7G09&{ z@rt<3r7wGvYZ|M+ss8{vGQ#d7G;C$$4oAHYt7-oL7c4O$+5z)EGmo`Rsc7+9>`P0p zh+?_i6K|*HYgZXr9P%KQSsR7V-!xoyj66Lw!?cqHJbv|A)4nW2Bh4985G0KE=B}Es zYi|hY@gd?z-p96bN&fYVjK{%F@r}dX>Y9F&ZF17V9|S1I-%@{4YOy8y$EwaA+{q*j zux0-ML!48MG8buetzG1bC51{trSe&^`%*|FHoALVJTl(NIVGi4+A=$jUc-;Ic9T)(ob1HI8u+^FKAxwVkRG}jTMB48N|oc8v`bEiUe$=Xo`!a$%De0pQrqP?&!b0jv? z%P3+xfrin*A5%%#^3u?3NZ^B}?cQAHc7C7lM_p)^PHk;uD)XF|Vwm;F_4cD+gQaf? zn&RFt1_m1~`cW4aS9dbQHMZGe&fVGCz+cQIj*`!CXPY7%zVW9{i$-a(tBs?OkO`S6T@Q}`&9F!rtwuu z;iDrN_4lqOX$8hD5g9non;7D{xQi;+4H+#E!C?OYH~sdg7s`e>_BL8X1Th1#&O!Ys z$OyZ%wGql>d>zEDI}#~!)LZAxR!mYAzhL(^XuD+xZ^favs^8@ zg=w~e00SPls1o&>RfbRIBxp!E#z{G)F;3G=_P0@;>z_96)y=86Sbzu}mC0gT9A~v} zjAwOb)85`CCU;^;$mbdQe`@Y|0z|VXl^^L5hlh|YjoS6t#>4nqU=++u^AL4lvB0)L!F35N3W%OBg+#jF~J0k{p%`Y zDy7q(iHoPO40E4KU2yW2ZirS;xyfvH^r-JIr1+D@)Z+%UMtb5Yv7R`!xzJ-`UcRYu=me)JsXQyGp=Dj@SWd}o>-I38O? zw_*%$k_kB5&$Ucu)zp_S718M(!GObkg;RWaZ!6xk&fD;yvBz!&J-SP%ZuSv~)PNg3 z>2Kl;ioP8s9Ccf}d)G{F9Hx@7y+O;Xh>i~9yX(y>(k5#^5!8+<$6SJZ^-A8&9v+pz0{r_RuVAxsyAG-iYuBF?ibDRwEe%ZW--MEw5J2^dg>_ zW6##ES_Qfv5oxz^Ak2~lazDWeoAj{Ioa&9qL=# zhO?9hlZITMuhOSxw`(wBAPI1PFM7?oRFg#!3n(ldfX)wU<)n}flDQy%QK%YhOwkT- z03W3pVH8e+DP|F{1m_v4jo1;AJhxF=MnBcN6g)?#F^B>bb|lp6Ix`)+NCbdOV>mSx z((jQ9G6SD_*k^3cBXlXbamO{~waK)#ah@}Rznw)Kts4|90l@5Y>0cDzYcSirnZVC( zG2Vl-Zw#|4Ben`2N4e&s_+kDx{c1Q_t*(ZA+XgY3o8mv@{pbaikWk+h6`JJKzB;^AIs67yb>SZ@supAH#}+o2LXW z+#S6BRYtwJxOili;>^UVa=RqKaz+U!9R6OF+JA$M7S~yGA%b9$WbPtv3I42c@0yl0 z)Dm+Lfj0 ztu30~Q4IEAu^COv&%b)=%4dr9Nl9fgsZ8e8$wS?O^J^07v`h985y``%n%PcEwSds|mJlERArITB)Rw?8o5;N@T8Ab0yz z(U>Prmrr94QgcAhZuZwJHV9QY&UiJIPh$cb=2s6Iu=&aF_O2dvQ*mmpRy^^ZXq$`A z;x3mlAVQ22U_UU&dJ|Bzoo)jyu-eChUm5+V3e)UkxPe+X!-mTodJ5^Ih9b&etoile zewFQ_TtLo+1Xu$&ZNTwC%O~?$)p6y|e_v_{Cs6XbNeDncs2=|SYJu&ZWJFfPYwM2m zVd`Bd+A=`P3Yx&Gvu;o2w*%=x)E3tASiU@s3Kj<$-_Pw{Ae!AHo#PnW=-l&1TgMT% zo*2gR=u{u@(#N&Cg~Q1yZU7*TI2fe53$9=inPoymk{su6YKBWJAd#7s$ny_+u{<$P zYObz2sC?L7^d7AXCBsMG0eQ#JRpm`U`c!dSM3TjnAn$DRxC4x4n)rjF79z3ZATw=# z*%|iw(0W7?v=gPq8U{kBF@nDT0KIS;+DDQ!XGtOeF+N~;{{TvxH0a6GXzne^FyjhO z1-<_OeAEoL7bG^)M*J}L9`q&c(@Ad;N5oOKJ9p>yr%~O<3x-4u9I=J(j30UcMW~YJ z`EqYZ^xKWNS%}O`xHdhYiY)UOzn1H(O=45y;AA9h@#PTxq&n81^B+ z3P23mcf1$Tp9?dhP3MuAU2(TSiD@eZfOx{-a*pfExsEB=@ABhf_RPHx`VJ`(rLPjMIzv z2)$-1Bkz)V{VHR27iu<0(lhMb++h20RQSYSl)1@oY<()_;>N{kCBMWK)%?m?3d(vJ(&MU>nOQy6k_VnsvD~O_Jh_GTo&j4VL+N67>Ll|Al z5k6f0{C;)Kgv+MFkXVId$iesSe`7{RwqmyzsD)%FU>tTC?ODqh2qi`xyty1dy>V<@ z-xig~MHtRI*Gq|Q+E4=`fL1*6IH~RSG%>JE=^!{Kj9}ukCV*4h+eRK(!$<>q98_19 zshG&$8IWc(yF0z=enLwhPZ7V!z~{_3+xgKETgxOa*B~m}NBpDTB=SesWYJ@u8~&bGrpPhQF~Fr-zLy@M;@fFuxI+|NvIFw|W~a~8u~VE) zr$rT|a?tc^|P9qr{fdJ>93nx|rXeha9)pHFwtyjJNLu7fN5UuubEE@0z8{ z4xt9CJ=;REG<+n8!`i(Okdw%5QR3?uqTojvj|@+*ufA!9krF^5NntZH9nHP)6nl1{ zv~c>Ss}IFN)H}%YKO^gmWc{;DwN+TIp2px1Wo?nV9>>sQ+v`dr{vT;~;+U>lIAL2= zCF2ut`Q#4VarxDPSgdYtV@|Wj7kr*VpKq-Pq3N(jA&z)fCyj||o6VkkdS;GkTJ5e@ zduDjS&gi4U?OdhAi*45Ugpwn|B1zA&;~x30Zf_=h zm>_8(JRQ;U0OP)Xlq43`cRH1-D)dxjv0mq&Z%WT9KGy}*Rxfb}P)0HH#ozCmlft&~ zPi+*lNU0;|2h+KtwZ+r=b6PalQUQ#T_)*88t~4ua8>| zd~Npqu~=!umThTs3qa~(XwPqR&THu>X#K2jfWR=%u`fcdI)%7|*A@OLCGW!Rl=Y z-kZK^0&NI0+$b9X!5rt%R~IwyxkZ&Ryl~m}>ESj#p&G3GSx31N;P z(fMQfa7IIarDrRkzUnJj;&|nC!(faGg62)u(5x$kUdKOLlUcHB7~Q5q(LXV^duFRz zRmI9`jciLunHzF2Ip(@aG%Qli{UFS$`xhh^#uxlm7LEea@L{5Lf<7k1GyxGyec$m#+g0>qNRctt7!um|~zV1R#RK zML5VmH637`2$@qkam%0drL)G--J(W%s)x*RjOU;4QM#Fn@V<^_5G06KD^M0WR9 zx^=uzu5J;s(iZuKdt=k}qTXBK02i)t2om8vJF`O}4iS*hTQFzdCoxz|TLOW|P`VWim*t#g9DV zwtvNIc?8gu+VO^9tOo=GfmzeoT->1P?En*!Pi|}1h1`<4<#e$A38;g_?GcG~No?D< z4cX+=&&0h0OL56HO z@4r0#yVgFLTz-;AO?3SFi1D|d8%LB9z466ge+s8`)??fJx53Y@X%4RhFi7gF)m_A? z?Tnn&i}0c0ZFWAoZ3+Ed_g7z~*NGa^%WotqE~7@70~naL2su1s74^l-o4XihVIC0f z1Ds^$iPiVQ@x8J`Bte4>(eeg48TGGalG5-A?h1)W1TwAx=NQM@yf)pm2F_^GW{i^T z(rwRgE^-gp*VmU4rRMIYa^$He10-Pa`O#m)r5c*g6fx{m(hBlz-Jj~tKWgOK+Fi*k zCD!0V+ewW1LHZwBn;u$6dmY-$Zq&I@7!J+G2klMlrkQ0(rj!7g>^M0&{`JIKBo<9= z9p30e41>FNdCe1jrO9_8lEs3eCg3xiz;CX;PhrjKLido$*3h!-%dE*PiAI^e%i@S+#1hL@| zc3fxoscZ{7LX63~e)ny?x$Q&39vgT;jJa@6JYz0EuWxPc3~cZchkgmhdvRH}L9p7= zOu+$BAR)cRJ5e1dzr-njLgfpEe<>;D$8RXf{c26`?fcewQPaVC874_~!ucfQ>r(u1 z_+b!1gOQB#Irpw3zv#X>MdMbLpowjfr637eFb*2K&?JjwRI7aNj_yi z>r?8IM?LggaTx?;ccEZYwU`~pA3Xrm32ww&Ajq)-ua zB+Pd-Es#0&sAQh%`$}#tnL`W|i?_e8HQ)1Wy6_&KZntvZPc~H}I7CyE&&}U~`5(0( z9F}+5=wZGLuT4yf32&x7Gu$7oS@h^*Iy(s3F*Hb}#?TWdu>;WK9<+h9_ib8v?a~>A zstFm8>>G)|BfmcNHnBa(k!Q29GVhH;byFB4la76OrE_X*_iv}^S8}94kjzJwe*Uyh zr1vdxXFaq^-BxJilYepv2aII$4{XvMDOS*GMrOb=5gLQLcfaM%YHMp^eudO-u_e^= zE9Wg3%J-@KHDPo7dvtcp=)L5UOdrz~^`tUIJTWHd_byQb;B(2RdM1^4&^)Pg8mloZ z%_o>(`&MkyM;g|g_h2m3#}@qUA#>RNbfZIS%Q-GBjmk(OIKYn?2cLhfTQ4na<&8;M zTq5BL@)-L5^;5Z9jVn@ySG8u2R>OvD9B1;Z%civsv^_uKuO*h%M2vB~fsFA@ue9s4 zVes~_l;`uJbUWQIO_($@h3WuyE?!Yk5VUG2Dy0lAx$nl0b2R*90;#NqnPeb`ks;I*m9fvur%%$*G zEHtAO1|p;?lga1Sii=E-_*<}$E)O6sN#>lHIyVm-XqODCnO*yPs6Sfn>8&6~REN(d z32pfUk8Dvq7e1u(K`FCDfEY)ZbAwFP3{-U~?5BwnJQ>Fu{CG<#ag*5(kq;T(kn1wDKE z(Ua)S1Cr8$dx96g??mZrwx9n1)WZ+K;Jk&9p3ziDe?U4aeJu{vU=~JBxj-3q0`Rl$tg?H}3 zBQ@ruWoVWQ9fWeYjeMXD!AGgjuQ{f3C9%GpCXLn}kSJ8-8~_jRU1<>8MDp8zHAAl+ ze#%Bj$KI^U-$h4G7t163R1-R~7FP+3jNoxzwY|x|j@d1WA&;o?6VJXj{{X#N^xHuy zvYBReP{=ZH6mB@?xVg7j-brobEh3fN=bVfH2kI+AveU@rA+)y)L-I>wA8b^2kljOb zAXVzi!6Y1GBCOY%IF2=SKrS4fql1B**LIp=wMJ=VMl3iv??F|jNM)92VGyH$ayj&=y$r|kPTWJJ z+9keNMhM9r&Uvi1<~bpSBUWysXLAGYYi;q;q`G8w&cTsM;~b82-m}wVV;tlhZS>81 zeqFPaf;|rsGqr#~s;2(Z*`&T^s%Vz%o8N8%Q^C?^aP7Pgu2CbkG-QHZo)(`?!RPs)H zRX$i`Mk8koN!?oC;Z2)a_)rdwSYoXaAl%uek41IO)(=Td?TnbHYjja5gGi9P%J zdgJY0MxEQ*%9(wOalG{tcOIGBk4`JttwaqP#bq2Y-JSbE+m31*DP3mX)BgZC$^(y0 zqqaS{{{Tv1EdKx#c%5v`F)f@Os;4|+gS}~m!rR)2x|3UsFx~IS=kg+_(S#7Iq@?v4 zGOdQ;a!x5IYujtN;GfE>rNj5#^ro6^rt2`^kZuNdpXv1b)@{&=(&8a3sOyv1WcQ)2 zn5!a`Sjaq*GhVDB8>vT#k+tepR=7^HJ%-6qzn3b?FZx0&$rkwcLdGq@qj?Dp^vzs@sMc$VgmE3r z@!^N~e!p6e_(j+L?&Z0uZDTii)IQa6*yGD)jy6c%B8+>qn8rSsqpdH1g`z5jKnuBB zjQiJ2vY`DlNxEodwu&I*9$5*-bI)prOYm*fQ%N<%h#09-ai3q#uDW)~wAhp>3J`L= z%|UY)N(lg2cpgB zn~|SmOgu=zJRyA)@x8s(+L0P=+(-nB`g>I`!}d~mi^6H9{8UJViJNofmuVv(d}g~z zEN5g<-9@N;E*aIKPv!_B#`1aht4DxsB9mE(SzOwJdXc8uM6B-tkPTApZz>wjy+Ft_NvE*^y%MG zy1c@K>K0|)ymQaep6cr@j+C~dtrtNZdmlp1{!F5wyEANi0EPhHx29?C=IV zeW}Wa9|3E1cOAnsDU5kv7|+_9S=&bnGh5rKjQ;>pIW6zSLjxIYmPdh=Ll6ibHV!jQ z(l}v2)~;BQ$RitSY|%XS?<$5#Ru#{YI-7a?vBxx*ShBluGhbW*)5ZojdJkSI!>C4& zc%4R#iRD{wC+(UORdt%s$2<}#V~ncsam4~X64*y5o^&%pq-|{CwH+nmn%*-8dSG|O zXS!<2movg`hr-A7WQrM(Ur~$N@U(x~jilg~fitJ=(062KxTKqPtd{ixdkcWYp;3~K8q{-JJraog=( zEzo6adlN*q<1;I%F$3ktzwerg(rG`3N(sX(;y^#d2NnM>}7W5pRXcc)L<)&DKgJ$IPreuKIK&I58+kxg&>z}@BV2MOJd}}N+m*2oA+;LMycw$JdpZStt?^PJb zJbu+*isK9|F4`64ihnacr2AKv8icV+IV1){jy%DI1M#XvS>{~y^XtVyt=!pe>nj;RBR;n z$jv~qJZNRV0L1?Q`b0M;?MR@wx4i-coHXEf9N^cMqWs1VqNQVqo||sYdG@Ks{)bRr z&lH5q0TF*g7XH|&?JiTQ%_cf;?dkWVc3Qc+y19<=u^NCP;~C&k*7~xfuWKX@N`i6^ z*MZucV7A?AJrK4~BgqoN+hyCHNhkZ%8h*DL%CB=4N}wC}V7EB!jxkFtJnn?cC{yMO zyB}%}(gX{0Az2z-*a}Wa^AlE03t82mMR)@U;Us{4Pc;p*C@mG6h7IQLl7|>M9=R1- zYkQZK8Jn(>62P$8x1QMNH8q3Wqe_Sx9mk0__xsehLd$2ULvVf${wuiEJgVkDD-TX; zYs)wmBnnu?{XTq}Q7)?;t)fMHHW7YOW$(^?s0p>W9(cCSkt2dtx9;F~;~$ktyWo2) zR?$3CNtuu-Cp==R+UJPlPNa738Z6)(;}l)Sp)`|7uB_;ho$jN`Nc0A?4Qp1jidlqf z!8|E$)n++S--vJeolVb_9EQ)*vwe3~Rh?ER+(GA>XQ^sG5VN6jilc#?`c*aNw~{P3 z50mE4*1fn(j7qdOP<`3HY?tv^cF z?QWtiov6xAN$pwB9r(z1vW=nYHN*;KR2~m{4K67t*Z-EU}9AZupSrdSj&}~s~QHMtid-~Zr(&iW60+@ zqMFZ5y1KXN>T7Qp1fg@1{{FmkUR>yrO&Lpjl|VxA($Ap!)VA6$oC~W|xk%Ru#?$)q zT?-?H6@S`lk7_YI^Xo(Fw>NNjbET() zEYO@_9B@u*NX+uC+lcZ@5WM3oIX{>EiaOTS{vCvi(q|dxox{`i#Z7Fgq13f_;Cv#q zjDsgUjw&r2YIk~bJl=OlA+zN;C%!7enmfrp)R(7m8O(&PLk{DN@y04!%{E`=&bf$6 zp<5lY1~dCoO(d$;p_pJrmI)kSs_kwwlh0}cRn+IUw2CutEMW(fgSemCuM=!KL@-4X zvnU`F+#L6%UkP;EB9)?I`QF7dk8V9UtJmtOaQKGeUZisg0DNQD98~`R#K-(;Kk2JV zX*SWRM~XB9<#02)qy85k_!It`e?a2i1lub7I@}dJXN>2XnJniP`%(^ymmQ9Fk9uz` z3kBlOZlRUO$^P_htQQ%PCKv@s2irX6rnVQ!;#u_T2(9hQEXk3(84bzwp(FABqA!xt z_7c)J_2VCx7^e32FrzX#NlFh@;<{r}!#@XUR`=c{j>6*9N?>Bn=O8f7c4O1OdeZM~R>j5%w}u7C zR6I6$3V$GRNIVy8V~y?_>1KIYIgw-AjBrPPday>{6Mm6OC6*Lz-!4R-O!`(iTXd09 z@#T%yu`B_t;(dx4fExxlJ9F>bnil9@Y5ELylgSKic{nX1pk*MOl?%oOeze2IMeg-N z_AveW=rI1;xgf4aL9nJkE&63K$cReZ9f;s?wR`I~XpnY+;TN=5i87 zM=R3{+bhmHd-kW^9?&APi{d4gG9!J2teFj-ay`5DrO&Bu)NZD~RY+q$%fxs)OJgMZ z(>u#+io({eCF%*Gv9)+wD9Z!>Eab7{@;>!Gp92(< z=n_$nmw4LDKC6?D)`Z<`(8z8rC1q&@VOM~-=jO&wInU|!soFiafrX>QQA;w3G8q0? z<2~wQb|BR)Be%L;NUji%AkKX-e|i8!nvzJ;UJ)mvle7wHcQJUKS~%T+$Wtyh{?rYm zQ%Pv1Q)-M!&y z{6VHf_Q9DE95C4`obUU3ds9s*+7MI{WZE~W7{?WxbRzh5_^E_W3a&jnaYK|#gvV7` z)Zh-)9sIWtUm2i}d{Pm(XBhORb};F!bMbOTu?X~he%O z=chbC^cNua$;TPMAZcM#o|~3v?ZyQAw-%2M4qX4HTKBl9Rc%jsm z71Bm-7W+;z8 znN)=w41jyow$&zhfRQo`+ zhVAaJ->DwNF*S3k8?d`+%eX_s<*Ga1Zjz$XW{0;HDsC%M(4wU#Mv2G>HvV*2uN zLF*nPx{af`)AYk0er9PiyX}rDw`;4V=l+um69CAVl!{iqwe zXPo^h1@i=UidYqq4ii3=yl|HGQL}jd`t~>?y0nChXD5&CK|hV|WxE0kNQr~8?Z^aj zKg`m(`cliCpvZ%;^`(~AUkh_8?O2FDV&1ja50*0c&g#Lac+&n|INM8b_UR+>v9W+S z#y`DQWR;RukO>|VatpU7-iW5f?=98`QJzNO`TJJx5*wi| zrHXZ97*V^^byn`}XO7^i!mOn5+y4OCt_Q;;gY)EnP#yl%k5JPd+V(Y(*^$23txLX* zhJwKY#_u6lJ;pKxJrPKnWSujTZ~+`wme#P#8ZwMVJ$w4p9woSIcx`R%r1DLYTo0EA z9ldJmGj58tiKVuZ8&ph6!!Fyq(cTf(4vnhEJEp+S10DST0F_s@tEQIXIl8%Y;GB1; zwD#)WEQ}0s~t@qetrSvBM9@oIgGD&-bOadhAkP+ap_a+AOJ1*$v71aZL4ig!3p;u^*Y-9p6#=R1n_I zCYYkW#av;%{eR4w@apcQb&py=ees%AEP_sM{810TR zUO{G#;T?che7Oyc!_$vWDS}&zXs&JT<=jf{SH~ZfOEx*YTT4wgI9%YMJ92VKCqLek ze0l!>2k%nP71_60F4h-T`G1|}{V_vyTl^I`!Ec`E+q7swI}glw&#!80XLs?FD>ULY z<0BcW=Zt4~;d`v3s0+wACxPip{4J?GyW~jBsk|T?vD|m93&ycvPU-aN6g+@tO!vUY zZ?#vWgH^J;*)*}pvUhx9xxBw?dzK3$GP%Mo>|@{e%^7VZSN87)8OpBZmv^tWD>+>h zr^WiMj+5c(VYr3{zPKbRvD`odxj5pX@OG6OcxKial1VQwr1*#FuaqD-TvI7Sj0YF08zo?>PCL`t96d!CSDlP zg`KGp#KsmawOfL@CcM`ST4tXyEjnc2NS&k4pdPg9_DO9aotKE!NdTOX2dVm2b*SnM zsNFD@Nu+`(%#uQc`H!Y}uMWOPX7SrNtO9P#wjw}OM2-XuYl5&*bWp7@NxN8wXkLN-1BrMyPigi z{{T?N7y@?ramQ}db%fKy0+oHDX5L;#$zXq{A5PzDOYmaV=V;?xLm5;?d@e~mgU=ZU zKGbcbQtBev*;%A?2c}Nlqto>mKYB@^b;7l*f;32(EOyzkQ&p7W#YcW|diLTWGyWkb>GwV`! z=&vKqZ*?lq8uVu$%RByFKQDTNN`-fHntVu%Nhh(%BvqqQ({#6n-K2Nvrb2Pa78|ApvGBAl~8sHKmJej$7(^T+U4eez^lIm9sRf;O1RyK{4H-BknWafqKVfARy~il zJ?Kk`tfUfJ&nn6-+@eT5a(8F#oMY)yS|c>E*g-5Ts-TVPkuYDGkn|o`SM^TOl^5dUs9uE}U%Ns@0 zOP0tCWnJH=wRPi`vAmj1T?kl{9zZ^Vv*^4>CBCX2-Uksc^ntr~-n&UG?VZ-0t7;bR z>2Ywz7?i6nPInNX5%lJ%TK=c;Q*_{y`ia~<@Kn!dT$sk>$_lLfC0DUjZAs zt{hmr&&FDUv@As)K?`|!w$OaA~XxjkHdCOEYH&4O@h zo2Z|TxiZEB1^$|zIj$~^#zcyUxe5kBKG~(3qf2BUSn`bHE=Z}5sg_e+IEHgBnU0=f!B7ne#khf#`P~<5 zW4ccjkHus_y+VG}%SrI|rEZGm)tMQyxDMRc=JcycMn++h66frZbV89_FmNPNDG=%WN&An_{s$WyvHA`W@xUGF-P274i$;#X3=&DnApZcpRkUqF+UD5KwykR-o?~{&U)r8UsDSC5N}zF* zjFLJ1xTTs@*9jmyKt+Y|wC?Ue!+!avFxeTcQ5qeD5PSTm-}9=@rO+_i1P-zx&&`|y z`tkYF?L}@Da|^+k!-Kg!umS%7 zA^B96kz32CyZl)}81jsK+dhd-3_^ zj!9N^Yk1``MvMpqWS%=_mfT!S?#(Kw0QcX(`&62J4Z zOtAa_AjG9|%a94@JoBGQYta7yyit}~jik16Pco5mfCgRM9B@57u|t0qi~bP*0IU6| zJk+hAxVB|WSuR>r=3w{>jyq%NLc^tB*mPvIL`Vx~%-AQ;{`BKamipJBYN)&0Bqx0G zeP}Ni8E&PFIy_rXJ715|jP90db~jL8!yNY+Yl2!WgLck&9q6qh;$1&gg3-w7JLjld zADGAIMnr9Fbc>ti%(uyff;T5QH~Jl9v&nm)Pkacgqj#cvvUS}8DF^B=Vp;7v0~ zv+*6&S{RXGXbUSb`H17SOs_;+wad%HBM8isOClKX%dt0i+z&i~iXX$UT~B*7HwH@q zwS3`5WE)4!KEIt2bZ%qX*D*Iq)DB;^IpdBw%^hJR0y8m`xH%=HZr=RYJgtog)-3kg z#A0pCl7|6C(SR|J+L1i5$t;O~Zuf3v;vv9{9&#{0y>qX4^TWDaViT#sJ7*2CxnH&_ zwQ=L$3fxRlHG6_tagw`NKKTCtdYI*R;IKwo*<^>|{Ii_qc(<6>I2h;DkF|Uv)7oP8 z_Uw8s{Py3Cj0Qcq&w3X}*5J665*w)6&N$0QHr(zfgT{ZoFV%IMD+?yO6BM?MOWYm2 z$^ql@z`*s+D}3_*00+|~u*hwCZ1KFNRxC5ISpNV|*MZNcv8P&mcG5_<(H8O&E+i+j zWcpPJ{{RrAn%+~cGUbuB!WALPUQL77a1O( zwOU8;$Yz3Ti+6DmY$$J=EKj%B751-fYkOd~5l1z%OilokIl;%b(v!bJD}7C-ki_`T z;DarL+Mt}?MRMC*1t$e_QC{dvXl<4zr8twP7L1=%2%dUN{8K$K<70K+GG=1 zh~8Mbd@`N*Z*npD(KgM{vyoZ)P%>>s-MEwQ=~I;*i(iP6OKD>=bW^DtXC2$ML8@Ec z>F_+{E4m&A++*6fOX(I>XdE$U#ALS}j&n`5dzX6$7aKpAnJlfG5ymRxb}Nf}Jg$>n zTumg0x+`r9?e9`*8jKTM$JO3~IL`9NcJt^n`C_MN&w8+C4&l|Y@)ig0%U9?ux zpm>1~yRmPl+qG;gk4W2OXS~A#NsKQilbZ1$nmJxOn9Ok?1~>1VjP|FNu{FC(C{nS` z*hOQwARK>c`&wwy)x_k>w;OP{&lLqfU0;gR46ggETmv8*3?UWH`u|%vX<5{{VbaEpJ%V zHF=RVYY5|l826r%@CJDmd%5tfzM-z&E1`()E{q0xpF(MdoA_}f{7lJp@O@lq-wX9wsHwBC3T7uk4frVLNVPl9ix$$y8v5)6&|bLtyT-xlxfd2`OJWv zW80p6FLg-BQ$D&g!Fq zh~jg&5W|{_Q`78k3Po}Ni)ayqKQ0C^ed#{(`3^Dpu5S*-4xY}|u9Fw}!R^gyzlVAh zGwJt}MW+|IMP8dR?r=HnR+rN(vn92~mR2?xbH?G{wP-#awX*&gk?H9YF5W=zOupSU zjMZYkCA;wspVeJT_@bm+QWYnXc^{X0%J2L?sod+$s7(v3ZWn61XDzgGU#a|E;Tv6c z)opIq`GL3YEs=rgjz7+nX?_c_OI9~3g(As7zKjXM?^*f%amMYes~hn5grzny-70jZ z>TH!k`qlG9(QS0cw`-eMh2)fmWSf=*W7@2i+B`oO47T>|&@$#l&O33R+NZwL-eCl> z#8|61QcwKn2Bvvi+c8h^FM;oDM3*`{NpTAfqpR@B2iMep-YH8n0SiWqp;T`UHibUf z`uD9$Yw1${HM@{RgsJ14;Xv*0$NN%kO|;!ZRd^@2R=2pBP897V00I5QW_RmE*X?N? z#1@j2>vWZwm9vlPAF-fcR9nlqr*>$THfV%>_mWRJ_xgKtN9%f3rKRle0$d^O9CNl~ z01rd!Rrp9|B1>4~>C84XM+)3$f#`h?yHLsp@w+UBp7b#L&umZVq_Pco^+WuB7edNhn*( zc4nH~+%(ciLoovzI0qkIDV%@9?JeT!sb(Vplj}y=>7sj-dvUx;9$rji1aXXgs$0z( zCSwZ__{P@8IXu=>B3xO=)(wNzUBQ9pfsA5@>)QVS&;I~T7@ioBWR7s*m_Fm5P(3N< zz_UO$>CPxvqJ^~jO#M#0l~NE-(`xS{n$dwXFrMu5j6jimD6fKTP#nL;9u zQnjAxxAil)V;;PI)K7|Rtu7-oz@^of0A~Onf2|EdD;O^tbZeMbY0kr(j!iMrt?o2! zS+3-fNXHl(cLUBomG_65W{0CGJ0ctw;}laY7mOpFT16SexyF9qw|bh{q*}hIsoy%v z-^#WU1qvHHdYsf6)xFfWC~c*dI5FfSXuj1`u|rFVBAcs@Z!AohAsz z6y;bj=QtgyKd*xX*X<3w(!v#?ktA%8d-IyE+@mzXT}dA2zw27Z;&zY~lI__bGjrQL zxc=3c-Aby#LYWGjZUen~ar0wU{421vxX_Xpx{BC_EE(S?89ZW&@x7`xiKyE`@VfLH z&Zi*#sbArJoO+Fjk}x+!`(*`t0(d#k+O1lyi)AEwowyw?x7w{% zcUG_CYd?ZTk|>Vc=WgO_ztg0ZvHT?RD?(*WilYZSjw%6e_L_X1DGM^3?rW1e{~(L}@nqjmEBx90T}VZI>oYq>gY-KhHE?uQE#@ivlqcmQpzcj^p*J%U!Yr!0_u7h6X40)6&-JacsKWtYTUY{6A6~I!mk6ij!I<}$H zD{8DGU;r)$Ex@6=vRfDtWGAfqxaSz-n$|a9c9uwPrG_?i2_et19@Mth21L4$PqS+i zlg|9}`*!NhO~RjjDOiZhO#oT5??4h$8aFhjR1JzdrS?Y$9D+;?>of z0f6`^JDN;2ZcSoHbrE#Iio$Qa4HaKN6#^#mhjl1esM>s2RfT2RWt>6o*5KRBY@gE-{if9&uC-t92F2Th3BQ$jUM{ zK>q+*QGID0%f!-2b0aAs&>f)UoxkP(0C}qbk|?9Mx=hYM<&PV=_VmYU2Kx5mOR>?m z8(8`MI5^Mw3eCC^*jU9JJM5MEPNbH8;=1tEH&Z>ym3G22wQ5~QRfa2@c(-)WHZBUT zK_{H!??+nA92XJ@Wa>cQDaJUgUc%VYIHg>}w3`BM&1}w#%5(!0B%ALAp27JE`!3+2MM`D9sXZWPkPk5=+r|rDFpV-8VMnfu3w;hM~I5 z^G=rUh!8npAmp&mYKD2FivIwu0orqnlbnhM*7;Is+Uq+ph0h$}(&FIis}8nB@dB11SnavvxQh zlzsGelG~J6#w1`1`*H2`?Mvs-)@6CDL317f!NEUVQub;bE5~}}XI1J(xGXzA9DYR`NyV6M`kY7n0s%0dr0(`!J(OSE- zku0eb!7?~mIoupzW7`~JwT-?SMQ=Wvd8^xtiO@WV&6hX|+2JwoOKu^Jbx(;2Uy=8w{neK<+Vwe#{u)t_o)8>fdcCpiBK+Pz+7#??f&!@oqu^Ftm0Hjfgm^=hX)@|YO%;Q z39X~P-WcpCzz$!N&(g0dE7uk=1a^(z&&gGjAGLL*+T6pZ%W%snL^xf~o&NyoR-GqF z(%w-t>d7fwl206cC@agflHzD$1E3U@Uu<#ybv9@mEq?{E5XP}a>=-uw!yJ#-G_z6E zt|GZs>v5hyri*Db(XM4_7a1UNiW*%7uO<+}FqqErGlA-H?VtWA8R>eGUC6P8F3i2d z;*Hri{3ibZuB#e0ojr!HwQdW9;2pTme)VYCbN>Jz{{YAR=nuSWOAqH*1GNa;?0#(W zc%o#I!&f3n_(sAbgvciy{{UVpxjDFSZDjcwxqpAR?M>~j;n*uEL@$II!>adObjr$n0yq)c{m^JJ4#o1crkNLV3oNiNHfJx3G{ zyLUX2$!7apf-q4w0l@s|Q%NnBTU<*LtE%Ny4}ZNYLXFZT#A${AW9nVKzK-~1$#;t+o`M$Mo({0`1fm-Sj z7JR$g1xIto=R%%?e=*Twf-p)DcXd5}n4ohc@%3VkFpi9%6Uv;PYAqxDT(W!XduyeY zWw(invm^Jx#}!UZB3L6NM3Kjgs*gDttCfb6ajASZk8vS|_mYwUxl|S><;c(LS~jWR zT{go-j%#-&;aAM%av1yLJXcI|u6bo+FZ?>cYa0zl(p6~0j3g3l!5|J7AD=m=o+h2! z!n%vXrrt?y_sJ`^I)@#>uS7Dn(?Kr8+`CMIJ_p*O@onKx4qaPZJaWP!>5Pv2cLUP6 z_j8(W@rY@rK_2p~@}4_jnz3khh`PO&^pZDN21Car;-ARqRdi1~SM<199~}^(HoY zE;q?zVHD0GQYU@OAZ~H(iWf;)8VT0Sl-_c4=}PaeRL2}-7TTi^yCb)?1vaU119ae> zLw{5D&)TiWehUh$GD9$&?w&3)?@`#hTf;nZFlk@qbNxSRudbSGs$5qAwE0Lgv$Z>^NdL1b^{V^|_Ye z42X;qX(A4*OAXz+!fhdu%ScHlZa^8}WAdncL1lAl(p$oUJ5^8v7s)(l zkzQ!G3M7_8Zm6)t3gqO!9QtuVKg8P$bQmcp$jR(^_VlhDt|wC>Yz`O)=hGek07@2j z6BcNo>$ctb&fFhwT34vcaRb9KW=^8xgTOU4u+kJ031^JOGGMDl=V{Mu`q4A7hRhOI zZ~y?OgFwlC(MDp7LS$gO+@>?Yt|FE1F6Eh+ED%N;0C4<%)i}X4(ncX*W^p3Ax$@){ zz|9osvdV7{P2;(TrkUq&rtEr9&2tb~ScO$#jz)JW=M@x4ZKRUnRJoJ>YydqlKPs|l zG`Z6uhQ>I_GB;0$FOA3B6)uU3SjD8Mibt4}&NI$GdQEwAw@ZcD9h^wL|kC_dUoy*az=Z$!?Oy@EeV+xMgB9!Q_9PP~%TXWr@&% zwN#${fjQkl+DCC`svEmWac;m5ey14i=}Tj{xP+0NtHS3$I{J^NH9u6vs3b74Y=Bf} zgyMnC>`}`fT*(A7NQGK5*d*tJ^ri3RL>HVp5rU7AfG`K`UPCHeY7!;nNhGQ=&D$Jt z$K{G1;_Yr=X)OQ&Ne9#%9C7VHZJ+*HNnw4`Md(Mj%s+ENYF6c})-EI-8mjR$iqs}uHIFKarVs#e{hE+-aGd_>DBFxgqE?)7>6hhz;T0* ze_C6o-gGV|fVc$l$j&&SP4sOXt*dX_)RlsV2PARrUft=!+&bI@m6wJCjD6{4gHHwW z#}&&zQTLqseJXpYjCT?vPDeRldGE~5tDowB8AXs4c9<&o*TB$o8V))0F{8;a-U%5hoF^ zzIi`$llQJ=wCd>Xa~Al=P$>MpO;|4Un3dN7Q0KnvgZ8P+NOxOLwlyiVU}R+a(KfH> z@>|2N+Cs`LIdz&7DlNIW~HZh!0J}CS_w$b2d zBZH}SepEfbTC(ZO=`UJ$tay4gvuHynT;!GmIIMf|2FB<3eaVEdbR&-Yuqw-A1CPq3TYrnWGDucsY~>FbtA+y4NTA*bs4ou$lc(`bQkLxs-Vf1Q4k z@LsDIiF7@)$Yi)w0ATVl$8WV!wNC=s>Jl(8%L&dwM&gvo;f;Gkkxr6tmLM^{Gs{yv zdEL)hYThI8)s4oMvCAx7bvu`>%s7ioKo=yfowPsK&6^!qj>tjY))Ok{D|T$3Gap)I2ZycZiDws6 z+sJ>U9EGhFEc(h>A`XYs+JL#zm`VJ&@~7$Ax5|o)nk4XAEP8nAq8>vxEuK&AXiNPT z0dXHyQ5X(aB;!A7yUnJ_8pg}IJ)rLO-Tss*vbj6D4C}w8oWO`k#pmtfaNtFD1MN{I5vx7K(A+G9w9PLK)W$&V$K_H)vJ3F>L<1XaHdy07o-sj55-iq|+{(_* zSV@k<3_$&{L|j7zH*R2N%b@~M!Qf}ppQm~#n|HXkwvDDlNo6M_FeA#j#~(~mi+jkg z&>0so5=s;OIXR;4-g)ogX(Y|N#=kQhpCI)=T>k)-d1GT2!aQ*Ky!k8!G0!|u4RLH5 zMoF?nWNagi*%_xc`fD3W87>fsAUtixFmdlt>vpp?xo_~%?}MbJvBw|*L`evSNne(Y z=acv zg&VzdC{N>a-Oi#USVH&CPSMR=X3AT0H&%HdNb?uVzdgRVr?DlXX_H*bG;bS55;p8| z1_{UKnx@BbG#ZP*6ubnJ)Xp>O+NEhNZ)~JnWq&JwkAe29W|C35gf`Q~BFH+S;{yYX zXM%rWQ^vNCY1>{M(kz=x5A^h@Et1|1J$k2ng#g{#vCVk})x0R|P#&bapC`Z4vZVS< zMtP-@2grA2m9d?Qr_=WQ`+885Ni1Iwj!MfLkj>w5&wr&^J_RiGAO8SsIF3ZiAsv|V z4t|+5yxBn_n52`>yA0UvjtA|E1@*G7?@bJPe?|IF(o#r>mgL~$wI!Yz?eg*mXFob`;QM~qpaM-fF%*{e#yRFK z)P33Q*yHlW6{Tp_w@qvD8&t3?WE>I6^rjye@#)rA9|{WrA%8vqGRe1`Zw49Iu$A4NbYhInqN>?Rh->`jo#%t&;A{X<^LqAOb;kM^>b#EyaQYkytxdXNFr503bUDJJ$6wF!NxP+JRi@B=ULO^xwf~O&g`U0cvAS!KjHNL{p;HXwY!YRAk0AI z5OGIeh??2%Y*IYNLWC=v@l+$#h2*^yw}D|q#$+CC-{oCq>;5YL0MY*SWr7(bwjUPJ SBQo$n!2Kw1;f?+@p#RxIk>(!& literal 0 HcmV?d00001 diff --git a/elpa-to-submit/nxhtml/nxhtml/doc/img/divine2.jpg b/elpa-to-submit/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/elpa-to-submit/nxhtml/nxhtml/doc/img/fun-brain-2.png b/elpa-to-submit/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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 JX)3gT|Jh62BhUZ< literal 0 HcmV?d00001 diff --git a/elpa-to-submit/nxhtml/nxhtml/doc/img/healthy_feet2.jpg b/elpa-to-submit/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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 YqgY@`7&{PYNe&}ifI&DQ)iWRe*`xlB_5c6? literal 0 HcmV?d00001 diff --git a/elpa-to-submit/nxhtml/nxhtml/doc/img/rembrandt-self-portrait.jpg b/elpa-to-submit/nxhtml/nxhtml/doc/img/rembrandt-self-portrait.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26895984e084bcea0692164550ba64623ddffb6f GIT binary patch literal 52583 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 literal 0 HcmV?d00001 diff --git a/elpa-to-submit/nxhtml/nxhtml/doc/img/volga.jpg b/elpa-to-submit/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/elpa-to-submit/nxhtml/nxhtml/doc/nxhtml-changes.html b/elpa-to-submit/nxhtml/nxhtml/doc/nxhtml-changes.html index 27baab6dff..5e04c61b38 100644 --- a/elpa-to-submit/nxhtml/nxhtml/doc/nxhtml-changes.html +++ b/elpa-to-submit/nxhtml/nxhtml/doc/nxhtml-changes.html @@ -27,6 +27,9 @@ background-position: 0 -35px; color: yellow; } +.bugfix { + background-color: #ffd700; +} @@ -263,6 +266,38 @@