;ELC ;;; Compiled by jjc@pineapple.bkk.thaiopensource.com on Mon Oct 4 11:58:42 2004 ;;; from file /home/jjc/elisp/rng-valid.el ;;; in Emacs version 21.3.1 ;;; with bytecomp version 2.85.4.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. (if (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.29"))) (error "`rng-valid.el' was compiled for Emacs 19.29 or later")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\210\310\311\312\313\314\315\314\316\314\317& \210\320\321\322\323\314\311%\207" [require xmltok nxml-enc nxml-util nxml-ns rng-match rng-util rng-loc custom-declare-group relax-ng nil "Validation of XML using RELAX NG." :group wp nxml languages custom-declare-face rng-error-face ((t (:underline "red"))) "Face for highlighting XML errors."] 10) #@74 *Distance in characters between each parsing and validation state cache. (custom-declare-variable 'rng-state-cache-distance '2000 '(#$ . -1063) :type 'integer :group 'relax-ng) #@230 *Number of characters in a RELAX NG validation chunk. A validation chunk will be the smallest chunk that is at least this size and ends with a tag. After validating a chunk, validation will continue only if Emacs is still idle. (custom-declare-variable 'rng-validate-chunk-size '8000 '(#$ . -1247) :type 'integer :group 'relax-ng) #@171 *Time in seconds that Emacs must be idle before starting a full validation. A full validation continues until either validation is up to date or Emacs is no longer idle. (custom-declare-variable 'rng-validate-delay '1.5 '(#$ . -1586) :type 'number :group 'relax-ng) #@126 *Time in seconds that Emacs must be idle before starting a quick validation. A quick validation validates at most one chunk. (custom-declare-variable 'rng-validate-quick-delay '0.3 '(#$ . -1859) :type 'number :group 'relax-ng) (byte-code "\301B\303\301!\204\f\304\305\301!\210\306\301\307\310#\210\302B\303\302!\204\"\304\305\302!\210\306\302\307\310#\207" [current-load-list rng-validate-timer rng-validate-quick-timer boundp nil make-variable-buffer-local put permanent-local t] 4) #@102 Number of errors in the current buffer. Always equal to number of overlays with category rng-error. (defvar rng-error-count nil (#$ . 2358)) (make-variable-buffer-local 'rng-error-count) #@80 Overlay in this buffer whose help-echo property was last printed. Nil if none. (defvar rng-message-overlay nil (#$ . 2552)) (make-variable-buffer-local 'rng-message-overlay) #@237 Position at which message from overlay should be inhibited. If point is equal to this and the error overlay around point is `rng-message-overlay', then the `help-echo' property of the error overlay should not be printed with `message'. (defvar rng-message-overlay-inhibit-point nil (#$ . 2733)) (make-variable-buffer-local 'rng-message-overlay-inhibit-point) #@64 Non-nil if `rng-message-overlay' is still the current message. (defvar rng-message-overlay-current nil (#$ . 3098)) (make-variable-buffer-local 'rng-message-overlay-current) #@212 Stack of names of open elements represented as a list. Each member of the list is either t or a (PREFIX . LOCAL-NAME) pair. (PREFIX . LOCAL-NAME) is pushed for a start-tag; t is pushed for a mismatched end-tag. (defvar rng-open-elements nil (#$ . 3279)) #@319 Text content of current element that has yet to be processed. Value is a list of segments (VALUE START END) positions in reverse order. VALUE is a string or nil. If VALUE is nil, then the value is the string between START and END. A segment can also be nil indicating an unresolvable entity or character reference. (defvar rng-pending-contents nil (#$ . 3540)) (byte-code "\301B\302\301!\204\f\303\303\207" [current-load-list rng-collecting-text boundp nil] 2) #@59 Last position where validation is known to be up to date. (defvar rng-validate-up-to-date-end nil (#$ . 4014)) (make-variable-buffer-local 'rng-validate-up-to-date-end) #@494 Marker for the start of the conditionally up-to-date region. Nil if there is no conditionally up-to-date region. The conditionally up-to-date region must be such that for any cached state S with position P in the conditionally up-to-date region, if at some point it is determined that S becomes correct for P, then all states with position >= P in the conditionally up to date region must also then be correct and all errors between P and the end of the region must then be correctly marked. (defvar rng-conditional-up-to-date-start nil (#$ . 4190)) (make-variable-buffer-local 'rng-conditional-up-to-date-start) #@166 Marker for the end of the conditionally up-to-date region. Nil if there is no conditionally up-to-date region. See the variable `rng-conditional-up-to-date-start'. (defvar rng-conditional-up-to-date-end nil (#$ . 4811)) (make-variable-buffer-local 'rng-conditional-up-to-date-end) #@96 Non-nil means we are currently parsing just to compute the state. Should be dynamically bound. (defvar rng-parsing-for-state nil (#$ . 5099)) (byte-code "\301B\303\301!\204\f\304\305\301!\210\302B\303\302!\204\304\305\302!\207" [current-load-list rng-validate-mode rng-dtd boundp nil make-variable-buffer-local] 2) #@1203 Minor mode performing continual validation against a RELAX NG schema. Checks whether the buffer is a well-formed XML 1.0 document, conforming to the XML Namespaces Recommendation and valid against a RELAX NG schema. The mode-line indicates whether it is or not. Any parts of the buffer that cause it not to be are considered errors and are highlighted with `rng-error-face'. A description of each error is available as a tooltip. \[rng-next-error] goes to the next error after point. Clicking mouse-1 on the word `Invalid' in the mode-line goes to the first error in the buffer. If the buffer changes, then it will be automatically rechecked when Emacs becomes idle; the rechecking will be paused whenever there is input pending.. By default, uses a vacuous schema that allows any well-formed XML document. A schema can be specified explictly using \[rng-set-schema-file-and-validate], or implicitly based on the buffer's file name or on the root element name. In each case the schema must be a RELAX NG schema using the compact schema (such schemas conventionally have a suffix of `.rnc'). The variable `rng-schema-locating-files' specifies files containing rules to use for finding the schema. (defalias 'rng-validate-mode #[(&optional arg no-change-schema) "\204 ?\202\306!\307V\214~\210\310 \311\211\211\312\211\211 \313\216\314ed\"\210.\315edT\"\210)\316!\317 \210\307\"\320\321\322\311#\210 \203b\323\216\212#\203]#$=\205`%?\205`\324\311!*\207\325 \210\326 \210\320\327\325\311#\210\320\330\331\311#\210\320\332\333\311#\210\320\334\335\311#\207" [arg rng-validate-mode buffer-file-truename buffer-file-name deactivate-mark buffer-undo-list prefix-numeric-value 0 buffer-modified-p t nil ((byte-code "\204\301\302!\210\302\207" [#1=#:modified restore-buffer-modified-p nil] 2)) rng-clear-cached-state rng-clear-overlays 1 rng-clear-conditional-region remove-hook rng-schema-change-hook rng-validate-clear ((byte-code "\204\301\302!\210\303\304\305\302\306$\210\303\307\310\302\306$\210\303\311\312\302\306$\210\303\313\314\302\306$\210\303\315\316\302\306$\210\317 \210\320 \210\321p\322\"\203<\323p!\210\302\207" [rng-current-schema rng-set-schema-file-1 nil add-hook rng-schema-change-hook rng-validate-clear t after-change-functions rng-after-change-function kill-buffer-hook rng-kill-timers echo-area-clear-hook rng-echo-area-clear-function post-command-hook rng-maybe-echo-error-at-point rng-match-init-buffer rng-activate-timers get-buffer-window visible rng-validate-while-idle] 5)) rng-auto-set-schema rng-cancel-timers force-mode-line-update kill-buffer-hook post-command-hook rng-maybe-echo-error-at-point echo-area-clear-hook rng-echo-area-clear-function after-change-functions rng-after-change-function inhibit-modification-hooks inhibit-read-only #1# rng-validate-up-to-date-end rng-error-count rng-current-schema rng-any-element no-change-schema] 7 (#$ . 5431) "P"]) #@110 Sets the schema and turns on `rng-validate-mode' if not already on. The schema is set like `rng-set-schema'. (defalias 'rng-set-schema-file-and-validate #[(filename) "\302!\210 \206\n\301 \207" [filename rng-validate-mode rng-set-schema-file] 2 (#$ . 8365) "fSchema file: "]) (defalias 'rng-set-document-type-and-validate #[(type-id) "\302!\205\f \206\f\301 \207" [type-id rng-validate-mode rng-set-document-type] 2 nil (list (rng-read-type-id))]) #@125 Set the schema for this buffer automatically and turn on `rng-validate-mode'. The schema is set like `rng-auto-set-schema'. (defalias 'rng-auto-set-schema-and-validate #[nil "\301 \210\206 \300 \207" [rng-validate-mode rng-auto-set-schema] 1 (#$ . 8825) nil]) (defalias 'rng-after-change-function #[(start end pre-change-len) "\306 TV\203\307\306 T\310\311 \312\211\211\310\211\211\313\216\314 \"\210. W\203L \\X\203I ZZ\\\202J \203nW\203\202W\203h\310\223\210\202\202\315 \210\202\202W\203\202\316\310\"\316\312\" W\203\214 \306 V\203\233\307S]\317 \210\320 \207" [end start rng-message-overlay-inhibit-point buffer-file-truename buffer-file-name deactivate-mark buffer-size 1 nil buffer-modified-p t ((byte-code "\204\301\302!\210\302\207" [#1=#:modified restore-buffer-modified-p nil] 2)) rng-clear-cached-state rng-clear-conditional-region copy-marker rng-activate-timers force-mode-line-update buffer-undo-list inhibit-modification-hooks inhibit-read-only #1# rng-validate-up-to-date-end pre-change-len rng-conditional-up-to-date-start rng-conditional-up-to-date-end] 7]) (defalias 'rng-compute-mode-line-string #[nil "\203\303\304\305\306 \307=\203\310\202 S\311_\306 \245!!\312Q\207\n\307V\2031\313\314\315\316\317\320\321\322\323\"%P\207\324\207" [rng-validate-timer rng-validate-up-to-date-end rng-error-count " Validated:" number-to-string floor buffer-size 0 0.0 100.0 "%%" " " propertize "Invalid" help-echo "mouse-1: go to first error" local-map make-mode-line-mouse-map mouse-1 rng-mouse-first-error " Valid"] 9]) (defalias 'rng-cancel-timers #[nil "\303 \203\f\304 !\210\305\n\205\304\n!\210\305\211)\207" [inhibit-quit rng-validate-timer rng-validate-quick-timer t cancel-timer nil] 2]) (defalias 'rng-kill-timers #[nil "\302\300!\203\203\303!\210\304\300!\210\302\301!\205# \203 \303 !\210\304\301!\207" [rng-validate-timer rng-validate-quick-timer local-variable-p cancel-timer kill-local-variable] 2]) (defalias 'rng-activate-timers #[nil "?\205\305\306\n\305\307p$\306 \305\310p$\211)\207" [rng-validate-timer inhibit-quit rng-validate-delay rng-validate-quick-delay rng-validate-quick-timer t run-with-idle-timer rng-validate-while-idle rng-validate-quick-while-idle] 5]) (defalias 'rng-validate-clear #[nil "\300\301\302\"\207" [rng-validate-mode 1 t] 3]) (byte-code "\301B\303\301!\204\f\304\302B\303\302!\204\304\304\207" [current-load-list rng-validate-display-point rng-validate-display-modified-p boundp nil] 2) (defalias 'rng-validate-while-idle-continue-p #[nil "\305\306 ?\205!`\nb\210 \204\307\305!\210\310 \210\311\312! b\210\f*)\207" [timer-idle-list rng-validate-up-to-date-end rng-validate-display-point rng-validate-display-modified-p continue nil input-pending-p restore-buffer-modified-p force-mode-line-update sit-for 0] 2]) (defalias 'rng-validate-while-idle #[(buffer) "rq\210 \203`\304 \305\306!*\203\307 \202 \310 \202 \311 )\207" [buffer rng-validate-mode rng-validate-display-modified-p rng-validate-display-point buffer-modified-p rng-do-some-validation rng-validate-while-idle-continue-p force-mode-line-update rng-validate-done rng-kill-timers] 2]) (defalias 'rng-validate-quick-while-idle #[(buffer) "rq\210 \203\302 \203\303 \202\304 \202\305 )\207" [buffer rng-validate-mode rng-do-some-validation force-mode-line-update rng-validate-done rng-kill-timers] 1]) (defalias 'rng-validate-done #[nil "\300 \203\n\301 \203\302\303`!\206\303`S!!\210\304 \210\305 \207" [current-message rng-current-message-from-error-overlay-p rng-error-overlay-message rng-error-overlay-after rng-cancel-timers force-mode-line-update] 3]) #@65 Do some validation work. Return t if more to do, nil otherwise. (defalias 'rng-do-some-validation #[(&optional continue-p-function) "\212\214~\210\301\302\303\304\217+\207" [inhibit-point-motion-hooks t err (byte-code "\306 \205 \307\310 \311\211\211\312\211\211 \313\216\314!. \207" [rng-dt-namespace-context-getter buffer-file-truename buffer-file-name deactivate-mark buffer-undo-list inhibit-modification-hooks rng-validate-prepare (nxml-ns-get-context) buffer-modified-p t nil ((byte-code "\204\301\302!\210\302\207" [#1=#:modified restore-buffer-modified-p nil] 2)) rng-do-some-validation-1 inhibit-read-only #1# continue-p-function] 7) ((rng-compile-error (byte-code "\301\302A@\"\210\303\304!\210\305\207" [err message "Incorrect schema. %s" rng-validate-mode 0 nil] 3)) (error (byte-code "\301\302`\303!#\210\304\305!\210\306\207" [err message "Internal error in rng-validate-mode triggered at buffer position %d. %s" error-message-string rng-validate-mode 0 nil] 5)))] 3 (#$ . 12543)]) #@114 Prepare to do some validation, initializing point and the state. Return t if there is work to do, nil otherwise. (defalias 'rng-validate-prepare #[nil "eU\203 \303 \210\304\207dU\203\305\207\306S\307\"\211\203&\310 !\210b\202E\311\307\"\211\203B\310\306\nS\307\"\206;\312\313!!\210\nb\202D\303 ))\207" [rng-validate-up-to-date-end state pos rng-set-initial-state t nil get-text-property rng-state rng-restore-state previous-single-property-change error "Internal error: state null"] 5 (#$ . 13564)]) (defalias 'rng-do-some-validation-1 #[(&optional continue-p-function) " \\`\n\\\306 \307\211\211\211\211\211\211\211\211\211 !\"#$%&'`\310U\203q\311 (\312\310`\"\210(\203c(@\313H\314=\203Z\315(@\310H(@\316H\"\210(A\211(\204C) #\232\204n\317 \210#$\203r\320 \"`)\"\205\240)'W\206\240*\205\240* \205\240' \\\211'\205\240\306$+\203\354)+V\203\354),W\203\354\321\322)S\323\"!\203\354&)SW\203\323\324&)S\"\210\307$\325 \210\326 \210\327,!\317 \210dW\"\202n)%Y\204\371$\204n)\n\\%\324&)\"\210\"\203\330)S!\210)&$\204n\"\203;\331\307w\210`dU\203;\312)`\"\210\324)`\"\210\307\"`)\"\204C\332 \210\325 \210\326 \210),\203n,)X\203_\317 \210\202n+)W\203n+)\307\223\210)\202q\".\207" [rng-validate-up-to-date-end rng-validate-chunk-size rng-state-cache-distance rng-dtd xmltok-errors xmltok-dependent-regions t nil 1 xmltok-forward-prolog rng-clear-overlays 0 encoding-name rng-process-encoding-name 2 rng-clear-conditional-region rng-forward rng-state-matches-current get-text-property rng-state rng-clear-cached-state rng-mark-xmltok-errors rng-mark-xmltok-dependent-regions marker-position rng-cache-state " \n" rng-process-end-document xmltok-namespace-attributes xmltok-attributes xmltok-replacement xmltok-name-end xmltok-name-colon xmltok-start xmltok-type have-remaining-chars xmltok-dtd continue next-cache-point remove-start limit regions pos continue-p-function rng-conditional-up-to-date-start rng-conditional-up-to-date-end] 16]) (defalias 'rng-clear-conditional-region #[nil "\203 \302\211\223\210\302 \205 \302\211\223\210\302\211\207" [rng-conditional-up-to-date-start rng-conditional-up-to-date-end nil] 3]) #@43 Clear cached state between START and END. (defalias 'rng-clear-cached-state #[(start end) "\302 \303#\207" [start end remove-text-properties (rng-state nil)] 4 (#$ . 15823)]) #@68 Save the current state in a text property on the character at pos. (defalias 'rng-cache-state #[(pos) "\301\211T\302\303 $\207" [pos put-text-property rng-state rng-get-state] 5 (#$ . 16005)]) (defalias 'rng-state-matches-current #[(state) "\205@\211 )=\205A@\n\232)\205\3048 \232\207" [state rng-match-state nxml-ns-state rng-open-elements 2] 3]) (defalias 'rng-get-state #[nil " \nE\207" [rng-match-state nxml-ns-state rng-open-elements] 3]) (defalias 'rng-restore-state #[(state) "@\211)A\211@\211)\211A@)\306\307 \211\207" [state rng-match-state nxml-ns-state x rng-open-elements rng-pending-contents nil rng-match-text-typed-p rng-collecting-text] 3]) (defalias 'rng-set-initial-state #[nil "\302 \210\303 \210\304\304eb\207" [rng-open-elements rng-pending-contents nxml-ns-init rng-match-start-document nil] 1]) (defalias 'rng-clear-overlays #[(beg end) "?\205X\306 \n\"\211\205W @\307\f\305\"\211\310=\203<\311\f=\203*\312\313!\210\314\f!\210\2038S)\202N \315=\203N \316\f!X\203N\314\f!\210* A\211\204\313)\207" [rng-parsing-for-state beg end overlays overlay category overlays-in overlay-get rng-error t rng-error-overlay-message nil delete-overlay rng-dependent overlay-start inhibit-quit rng-message-overlay rng-error-count] 4]) (defalias 'rng-mark-xmltok-dependent-regions #[nil "\205\301\302@\"\210A\211\204\303\207" [xmltok-dependent-regions apply rng-mark-xmltok-dependent-region nil] 4]) (defalias 'rng-mark-xmltok-dependent-region #[(fun start end &rest args) "\305 \306\307\211%\310\n\311\312#\210\310\n\313 \fB#)\207" [start end overlay fun args make-overlay nil t overlay-put category rng-dependent rng-funargs] 6]) (byte-code "\300\301\302\303#\210\300\301\304\305#\210\300\301\306\307#\207" [put rng-dependent evaporate t modification-hooks (rng-dependent-region-changed) insert-behind-hooks (rng-dependent-region-changed)] 4) (defalias 'rng-dependent-region-changed #[(overlay after-p change-start change-end &optional pre-change-length) "\205B\306 !\205B\307 \310\"\311 \312\216\212\214~\210\313\n@\314\f \306 !\315 !\257\nA\"\"-\205B\316\306 ! \306 !\fZ\\#\210\317 !\207" [after-p overlay funargs save-match-data-internal change-start change-end overlay-start overlay-get rng-funargs match-data ((set-match-data save-match-data-internal)) apply append overlay-end rng-after-change-function delete-overlay pre-change-length] 9]) (defalias 'rng-mark-xmltok-errors #[nil "\205%@\302 \211\303H) \211\304H) \211\305H)#\210)A\211\204\306\207" [xmltok-errors err rng-mark-not-well-formed 0 1 2 nil] 6]) (defalias 'rng-mark-invalid #[(message beg end) "\303 \n#\207" [message beg end rng-mark-error] 4]) (defalias 'rng-mark-not-well-formed #[(message beg end) "\303 \n#\207" [message beg end rng-mark-error] 4]) (defalias 'rng-mark-error #[(message beg end) "?\205q\306 \n\"\211\203D\f\203D @\307 \310\"\311=\203<\312 ! U\203<\313 !\nU\203<\314 \315\307 \315\"\316\fQ#\210\317) A\211\204)\f\205q\320T\321 \n\317\320 \nU%\314\322 #\210\314\310\311#\210\314\315\f#*\207" [rng-parsing-for-state beg end overlays message o overlays-in overlay-get category rng-error overlay-start overlay-end overlay-put help-echo "\n" nil t make-overlay priority inhibit-quit rng-error-count overlay] 8]) (byte-code "\300\301\302\303#\210\300\301\304\305#\207" [put rng-error face rng-error-face modification-hooks (rng-error-modified)] 4) (defalias 'rng-error-modified #[(overlay after-p beg end &optional pre-change-len) "\205\304 !\205\304 !\305 !Y\205\306\307 !\210 S\211)\207" [after-p overlay inhibit-quit rng-error-count overlay-start overlay-end t delete-overlay] 3]) (defalias 'rng-echo-area-clear-function #[nil "\301\211\207" [rng-message-overlay-current nil] 2]) (defalias 'rng-maybe-echo-error-at-point #[nil "\300 \203\n\301 \205\302\303`!!\207" [current-message rng-current-message-from-error-overlay-p rng-error-overlay-message rng-error-overlay-after] 3]) (defalias 'rng-error-overlay-after #[(pos) "\304\211T\"\305\211\2030\n@\306 \307\"\310=\203( \203&\311 !\311 !W\203( )\nA\211\204\f *\207" [pos best overlays overlay overlays-in nil overlay-get category rng-error overlay-start] 4]) #@88 Go to the first validation error. Turn on `rng-validate-mode' if it is not already on. (defalias 'rng-first-error #[nil "\204\300 \210 \304=\203 dW\203\305 \210\306eS!\211\203%\307\n!\2025\212eb\210\310\304!)\211\2054 b))\207" [rng-validate-mode rng-validate-up-to-date-end err pos 1 rng-do-some-validation rng-find-next-error-overlay rng-goto-error-overlay rng-next-error] 3 (#$ . 20253) nil]) #@54 Go to the first validation error from a mouse click. (defalias 'rng-mouse-first-error #[(event) "\302\211A@)\211@)!\210\303 \207" [event position select-window rng-first-error] 3 (#$ . 20666) "e"]) #@246 Go to the next validation error after point. Turn on `rng-validate-mode' if it is not already on. A prefix ARG specifies how many errors to move. A negative ARG moves backwards. Just \[universal-argument] as a prefix means goto the first error. (defalias 'rng-next-error #[(arg) ":\203\302 \207 \204\301 \210\303!\211\304W\203\305[!\207\306!\207" [arg rng-validate-mode rng-first-error prefix-numeric-value 0 rng-previous-error-1 rng-next-error-1] 3 (#$ . 20874) "P"]) #@250 Go to the previous validation error before point. Turn on `rng-validate-mode' if it is not already on. A prefix ARG specifies how many errors to move. A negative ARG moves forwards. Just \[universal-argument] as a prefix means goto the first error. (defalias 'rng-previous-error #[(arg) ":\203\302 \207 \204\301 \210\303!\211\304W\203\305[!\207\306!\207" [arg rng-validate-mode rng-first-error prefix-numeric-value 0 rng-next-error-1 rng-previous-error-1] 3 (#$ . 21361) "P"]) (defalias 'rng-next-error-1 #[(arg) "`\306\306 \307V\203 \310!\211\203 S \311 !\202 \307V\203w\fS]\fdW\203w\312\313!\210\314  \307V\203R\310!\211\203R S \311 !\2028 \307V\205s \205s\fdW\205s\315 \210\306\316\307!\210)\fS]\317)\2045\n\203\201\320\n!\202\206\312\321!\210\306+\207" [pos err last-err arg rng-validate-up-to-date-end more-to-do nil 0 rng-find-next-error-overlay overlay-start message "Parsing..." rng-do-some-validation force-mode-line-update sit-for t rng-goto-error-overlay "No more errors" timer-idle-list] 2]) (defalias 'rng-previous-error-1 #[(arg) "`\306\306 \307V\203!\310!\211\203!\311 !  S\211\202 \307V\203h\fd^W\203h\312\313!\210\314 \203M\fd^W\203M\315 \210\306\316\307!\210)\2023 \307V\203h\310!\211\203h\311 !  S\211\202N\n\203r\317\n!\202w\312\320!\210\306+\207" [pos err last-err arg rng-validate-up-to-date-end timer-idle-list nil 0 rng-find-previous-error-overlay overlay-start message "Parsing..." rng-do-some-validation force-mode-line-update sit-for rng-goto-error-overlay "No previous errors"] 4]) #@60 Goto the start of error overlay ERR and print its message. (defalias 'rng-goto-error-overlay #[(err) "\302!b\210\303\304!\207" [err rng-message-overlay-inhibit-point overlay-start nil rng-error-overlay-message] 2 (#$ . 22954)]) (defalias 'rng-error-overlay-message #[(err) "\203% `=\203\n=\2040d\304U\2040\305\306\307\310\"\"\210\311`\2020\312 \203.\305\313!\210\313\211\207" [err rng-message-overlay-inhibit-point rng-message-overlay rng-message-overlay-current 1 message "%s" overlay-get help-echo t rng-current-message-from-error-overlay-p nil] 5]) (defalias 'rng-current-message-from-error-overlay-p #[nil "\205 \205\302 \303\"\304 \232\207" [rng-message-overlay-current rng-message-overlay overlay-get help-echo current-message] 3]) #@157 Return the overlay for the next error starting after POS. Return nil if there is no such overlay or it is out of date. Do not do any additional validation. (defalias 'rng-find-next-error-overlay #[(pos) "\205\\\306\211\211 \204Z \203: @ A\307\f\310\"\311=\2036\312\f! U\2036\313\f!X\2036\314\f)\202\n dU\204K\315 !\211V\203Q\314\211\202 \316 \211T\"\202\n\n+\207" [rng-error-count overlays found done overlay pos nil overlay-get category rng-error overlay-start overlay-end t next-overlay-change overlays-in rng-validate-up-to-date-end] 4 (#$ . 23722)]) #@158 Return the overlay for the last error starting before POS. Return nil if there is no such overlay or it is out of date. Do not do any additional validation. (defalias 'rng-find-previous-error-overlay #[(pos) "\205V \nX\205V\306\211\211 \204T \203; @ A\307\310\"\311=\2037\312! U\2037\313)\202 eU\203G\313\211\202\314 !\315 \211T\"\202\f+\207" [rng-error-count pos rng-validate-up-to-date-end overlays found done nil overlay-get category rng-error overlay-start t previous-overlay-change overlays-in overlay] 4 (#$ . 24309)]) #@203 Move forward over one or more tokens updating the state. If LIMIT is nil, stop after tags. If LIMIT is non-nil, stop when end of last token parsed is >= LIMIT. Return nil at end of buffer, t otherwise. (defalias 'rng-forward #[(&optional limit) "\305\306 \307 `\"\210\310=\203\311\310!\210\305\202\271\312=\203%\313 \210\305\202\271\314=\2033\311\314!\210\305\202\271\315=\203C\316 \305\317#\210\317\202\271\320=\203S\316 \305\211#\210\317\202\271\321>\203z\n\203g\316 \305\322\n$\210\202v\323=\203s\324 \210\202v\325 \210\317\202\271\326=\203\216\316 \327\\`\330Z\322#\210\317\202\271\331=\203\234\311\331!\210\317\202\271\332=\203\252\311\314!\210\317\202\271\333=\203\270\313\334!\210\317\202\271\f\203\304`\fW\202\305 )\204\205\316\317)\207" [type xmltok-start xmltok-replacement continue limit nil xmltok-forward rng-clear-overlays start-tag rng-process-start-tag end-tag rng-process-end-tag empty-element space rng-process-text t data (entity-ref char-ref) maybe char-ref rng-process-unknown-char rng-process-unknown-entity cdata-section 9 3 partial-start-tag partial-empty-element partial-end-tag partial] 5 (#$ . 24872)]) #@138 TAG-TYPE is `start-tag' for a start-tag, `empty-element' for an empty element. partial-empty-element should be passed as empty-element. (defalias 'rng-process-start-tag #[(tag-type) "\203\304 \210\305\305\306 \210\307 \310 \210 \311=\203.\312 \210\313 \204)\314 \210\315\316!\210\317 \202N \320=\203@\312 \210\321 \322\n!\202N \323=\205N\312 \210\314 \210\317 )\207" [rng-collecting-text rng-pending-contents tag tag-type rng-flush-text nil rng-process-namespaces rng-process-tag-name rng-process-attributes empty-element rng-process-start-tag-close rng-match-empty-content rng-match-after rng-mark-start-tag-close "Empty content not allowed" nxml-ns-pop-state start-tag rng-match-text-typed-p rng-push-tag partial-start-tag] 2 (#$ . 26055)]) (defalias 'rng-process-namespaces #[nil "\306\307 \210\n\205x\n@\310 !\211\203o\311\f!\312 !\205\"\313 ! \235\203>\314\315 \211\316H) \211\317H)#\210\202j \204J\320!\210\202j\203X\321 \"\210\202j\314\322 \211\323H)S \211\324H)T#\210 B**\nA\211\204 \306*\207" [xmltok-namespace-attributes prefixes nsatts att value prefix nil nxml-ns-push-state xmltok-attribute-value nxml-make-namespace xmltok-attribute-prefix xmltok-attribute-local-name rng-mark-invalid "Duplicate namespace declaration" 0 2 nxml-ns-set-default nxml-ns-set-prefix "Namespace prefix cannot be undeclared" 3 4 ns] 6]) (defalias 'rng-process-tag-name #[nil "\304 \305 \203A\306!\211\203\n B\202=\307 !\211\2039\310\n B!\2039\311\n\"\210\312\313\314\n!#\210\315\202=\316 \210\315)\202E\317 B\211\203z\310 !\204z @\204v\307 A!\211\205r\310\n B!\205r\320\n!\210\312\321\314\n!\"\210\322)\204z\323 !\210 +B\207" [prefix local-name ns name xmltok-start-tag-prefix xmltok-start-tag-local-name nxml-ns-get-prefix rng-match-infer-start-tag-namespace rng-match-start-tag-open nxml-ns-set-prefix rng-mark-start-tag-close "Missing xmlns:%s=\"%s\"" nxml-namespace-name nil rng-recover-bad-element-prefix nxml-ns-get-default nxml-ns-set-default "Missing xmlns=\"%s\"" t rng-recover-start-tag-open] 6]) (defalias 'rng-process-attributes #[nil "\306\211\205\216\n@\307 !\310 !\f\203(\311\f!\211\205$ B)\202+\306 B\211\2048\312 !\210\202\200 \235\203F\313 !\210\202\200\314!\204T\315 !\210\202\200\316 \203w\317 !\211\203p\320!\204s\321 !\210\202s\322 \210)\202\200\323 \204\200\324\325!\210 B,\nA\211\204\306*\207" [xmltok-attributes names atts att prefix local-name nil xmltok-attribute-prefix xmltok-attribute-local-name nxml-ns-get-prefix rng-recover-bad-attribute-prefix rng-recover-duplicate-attribute-name rng-match-attribute-name rng-recover-attribute-name rng-match-text-typed-p xmltok-attribute-value rng-match-attribute-value rng-recover-attribute-value rng-match-after rng-match-end-tag error "Internal error: invalid on untyped attribute value" ns name value] 3]) (defalias 'rng-process-start-tag-close #[nil "\300 ?\205 \301\302 !\210\303 \207" [rng-match-start-tag-close rng-mark-start-tag-close rng-missing-attributes-message rng-match-ignore-attributes] 2]) (defalias 'rng-mark-start-tag-close #[(&rest args) "\302=?\205\303\304\305 \"`\306=\203\307\202\310Z`#\207" [xmltok-type args partial-start-tag rng-mark-invalid apply format empty-element 2 1] 5]) (defalias 'rng-recover-bad-element-prefix #[nil "\302\303T #\210\304 \207" [xmltok-start xmltok-name-colon rng-mark-invalid "Prefix not declared" rng-match-unknown-start-tag-open] 4]) (defalias 'rng-recover-bad-attribute-prefix #[(att) "\301\302\211\303H)\211\304H)#\207" [att rng-mark-invalid "Prefix not declared" 0 1] 6]) (defalias 'rng-recover-duplicate-attribute-name #[(att) "\301\302\211\303H)\211\304H)#\207" [att rng-mark-invalid "Duplicate attribute" 0 2] 6]) (defalias 'rng-recover-start-tag-open #[(name) "\304 \211\203'\305!\203'\306 \203'\305 !\203'\307\310\311\312!!P\n\211T#\202S\313 \203;\305 !\203;\307\314\n\211T#\202S\315 !\203J\307\316\nT #\202S\317 \210\307\320\nT #)\207" [required name xmltok-start xmltok-name-end rng-match-required-element-name rng-match-start-tag-open rng-match-after rng-mark-invalid "Missing element " rng-quote-string rng-name-to-string rng-match-optionalize-elements "Required elements missing" rng-match-out-of-context-start-tag-open "Element not allowed in this context" rng-match-unknown-start-tag-open "Unknown element"] 6]) (defalias 'rng-recover-attribute-value #[(att) "\211\303H)\211\304H)\211 U\203\305\306\n T#\210\202$\305\307\n #\210*\310 \207" [att end start 3 4 rng-mark-invalid "Empty attribute value invalid" "Attribute value invalid" rng-match-after] 5]) (defalias 'rng-recover-attribute-name #[(att) "\301\302\211\303H)\211\304H)#\207" [att rng-mark-invalid "Attribute not allowed" 0 2] 6]) (defalias 'rng-missing-attributes-message #[nil "\301 \211\204 \302\202#A\204\303\304\305@\306\"!P\202#\307\310\311\312#P)\207" [required-attributes rng-match-required-attribute-names "Required attributes missing" "Missing attribute " rng-quote-string rng-name-to-string t "Missing attributes " mapconcat #[(nm) "\301\302\303\"!\207" [nm rng-quote-string rng-name-to-string t] 4] ", "] 6]) (defalias 'rng-process-end-tag #[(&optional partial) "\204\n\303\304 `#\207\n\204\305 \306 B@\232\203\307 \207\310 \207" [rng-open-elements xmltok-start partial rng-mark-not-well-formed "Extra end-tag" xmltok-end-tag-prefix xmltok-end-tag-local-name rng-end-element rng-recover-mismatched-end-tag] 4]) (defalias 'rng-end-element #[nil "\203=\306 \211\204\307 \210\2025\310 !\2045\311 \211\204)\312\313 \211\314\\#\210\2021\312\315\n@\nA#\210)\307 \210\316\316)\202N\317 \204N\312\320 \211\314\\#\210\307 \210\321 \210 @\322=\203[\323 \210\323 \207" [rng-collecting-text contents region xmltok-start rng-pending-contents rng-open-elements rng-contents-string rng-match-after rng-match-element-value rng-contents-region rng-mark-invalid "Empty content not allowed" 2 "Invalid data" nil rng-match-end-tag rng-missing-element-message nxml-ns-pop-state t rng-pop-tag] 6]) (defalias 'rng-missing-element-message #[nil "\301 \211\203\302\303\304!!P\202\305)\207" [element rng-match-required-element-name "Missing element " rng-quote-string rng-name-to-string "Required child elements missing"] 5]) (defalias 'rng-recover-mismatched-end-tag #[nil "\305 \306 B\211 A\235\203? @\307=\310\310 @\311 \210\f\307=\204,\f B\312 \210\313 \210\f\232\203\n?\205;\314 A!+\202T\315 \203L\316 \210\317 \202T\316 \210\307 B\211)\207" [name rng-open-elements suppress-error missing top xmltok-end-tag-prefix xmltok-end-tag-local-name t nil rng-pop-tag nxml-ns-pop-state rng-match-after rng-mark-missing-end-tags rng-match-empty-before-p rng-mark-mismatched-end-tag rng-end-element] 3]) (defalias 'rng-mark-missing-end-tags #[(missing) "\302\303\304A\204\f\305\202 \306\307\310\311## \211\312\\#\207" [missing xmltok-start rng-mark-not-well-formed format "Missing end-tag%s %s" "" "s" mapconcat #[(name) "\301@\203@\302AQ\202A!\207" [name rng-quote-string ":"] 4] ", " 2] 8]) (defalias 'rng-mark-mismatched-end-tag #[nil "\302\303\304\\ #\207" [xmltok-start xmltok-name-end rng-mark-not-well-formed "Mismatched end-tag" 2] 4]) (defalias 'rng-push-tag #[(prefix-local-name) " B\211\207" [prefix-local-name rng-open-elements] 2]) (defalias 'rng-pop-tag #[nil "A\211\207" [rng-open-elements] 2]) (defalias 'rng-contents-string #[nil "\211\204\n\302\202(\303 >\203\303\202( A\204 \304 @!\202(\305\306\307\304 \"\237\")\207" [rng-pending-contents contents "" nil rng-segment-string apply concat mapcar] 6]) (defalias 'rng-segment-string #[(segment) "@\206\n\301\302A\"\207" [segment apply buffer-substring-no-properties] 3]) (defalias 'rng-segment-blank-p #[(segment) "@\203\n\301@!\207\302\303A\"\207" [segment rng-blank-p apply rng-region-blank-p] 3]) (defalias 'rng-contents-region #[nil "\205-\211\211@A)\211@ \211A@) A\211\203) \211@A)@\202\f ,B\207" [rng-pending-contents contents x head start end] 3]) #@354 Process characters between position START and END as text. END nil means point. WHITESPACE t means known to be whitespace, nil means known not to be, anything else means unknown whether whitespace or not. END must not be nil if WHITESPACE is neither t nor nil. VALUE is a string or nil; nil means the value is equal to the string between START and END. (defalias 'rng-process-text #[(start end whitespace &optional value) "\203 \n \206 `E\fB\211\207 \203, \306=\206. \203%\307 !\202)\310\n \"\206.\311 ?\205;\312\313\n \206:`#\207" [rng-collecting-text value start end rng-pending-contents whitespace t rng-blank-p rng-region-blank-p rng-match-mixed-text rng-mark-invalid "Text not allowed"] 4 (#$ . 34115)]) (defalias 'rng-process-unknown-char #[nil "\205 \302 B\211\207" [rng-collecting-text rng-pending-contents nil] 2]) (defalias 'rng-process-unknown-entity #[nil "\300 \210\301 \207" [rng-process-unknown-char rng-match-optionalize-elements] 1]) (defalias 'rng-region-blank-p #[(beg end) "\212b\210\302 w ZU)\207" [beg end " \n "] 3]) (defalias 'rng-flush-text #[nil "\205+@\304 !\204\"\305 \204\" A\306\307\n@\n\211A@)#\210))A\211\204\310\207" [rng-pending-contents segment region x rng-segment-blank-p rng-match-mixed-text rng-mark-invalid "In this context text cannot be mixed with elements" nil] 5]) (defalias 'rng-process-end-document #[nil "\302``\"\210\212\303\304x\210`) \203! @\305=?\205,\306\307`#\202,\310 ?\205,\306\311`#)\207" [start rng-open-elements rng-clear-overlays " \n" nil t rng-mark-not-well-formed "Missing end-tag" rng-match-nullable-p "No document element"] 4]) (defalias 'rng-process-encoding-name #[(beg end) "\303 \"\304\n!\206\n\227\305\230)?\205\306\307 #\207" [beg end charset buffer-substring-no-properties nxml-mime-charset-coding-system "utf-16" rng-mark-not-well-formed "Unsupported encoding"] 4]) (defalias 'rng-name-to-string #[(name &optional attributep) "@A\211\203 \204\305 \n=\203 \2020\306\n!\211\203(\f\307 Q\202/\310\311\n!\312 R)*\207" [name local-name ns attributep prefix nxml-ns-get-default nxml-ns-prefix-for ":" "{" symbol-name "}"] 5]) (provide 'rng-valid)