X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/a73cbc5c6f456d875d18e232998a2d0767747dc0..a6d960ea153c964ffbb89627c1135c3226b28a02:/packages/company/company-nxml.el?ds=sidebyside diff --git a/packages/company/company-nxml.el b/packages/company/company-nxml.el index 5602e5022..9a235310d 100644 --- a/packages/company/company-nxml.el +++ b/packages/company/company-nxml.el @@ -1,6 +1,6 @@ -;;; company-nxml.el --- a company-mode completion back-end for nxml-mode +;;; company-nxml.el --- A company-mode completion back-end for nxml-mode -;; Copyright (C) 2009, 2010 Free Software Foundation, Inc. +;; Copyright (C) 2009-2011 Free Software Foundation, Inc. ;; Author: Nikolaj Schumacher @@ -19,6 +19,10 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . + +;;; Commentary: +;; + ;;; Code: (require 'company) @@ -33,8 +37,8 @@ (replace-regexp-in-string "w" company-nxml-token-regexp "\\)\\|'\\([^']*\\>\\)\\)\\=" t t)) @@ -64,66 +68,66 @@ (defun company-nxml-tag (command &optional arg &rest ignored) (case command - ('prefix (and (derived-mode-p 'nxml-mode) - rng-validate-mode - (company-grab company-nxml-in-tag-name-regexp 1))) - ('candidates (company-nxml-prepared - (company-nxml-all-completions arg - (rng-match-possible-start-tag-names)))) - ('sorted t))) + (prefix (and (derived-mode-p 'nxml-mode) + rng-validate-mode + (company-grab company-nxml-in-tag-name-regexp 1))) + (candidates (company-nxml-prepared + (company-nxml-all-completions arg + (rng-match-possible-start-tag-names)))) + (sorted t))) (defun company-nxml-attribute (command &optional arg &rest ignored) (case command - ('prefix (and (derived-mode-p 'nxml-mode) + (prefix (and (derived-mode-p 'nxml-mode) rng-validate-mode (memq (char-after) '(?\ ?\t ?\n)) ;; outside word (company-grab rng-in-attribute-regex 1))) - ('candidates (company-nxml-prepared - (and (rng-adjust-state-for-attribute - lt-pos (- (point) (length arg))) - (company-nxml-all-completions arg - (rng-match-possible-attribute-names))))) - ('sorted t))) + (candidates (company-nxml-prepared + (and (rng-adjust-state-for-attribute + lt-pos (- (point) (length arg))) + (company-nxml-all-completions arg + (rng-match-possible-attribute-names))))) + (sorted t))) (defun company-nxml-attribute-value (command &optional arg &rest ignored) (case command - ('prefix (and (derived-mode-p 'nxml-mode) - rng-validate-mode - (and (memq (char-after) '(?' ?\" ?\ ?\t ?\n)) ;; outside word - (looking-back company-nxml-in-attribute-value-regexp) - (or (match-string-no-properties 4) - (match-string-no-properties 5) - "")))) - ('candidates (company-nxml-prepared - (let (attr-start attr-end colon) - (and (looking-back rng-in-attribute-value-regex lt-pos) - (setq colon (match-beginning 2) - attr-start (match-beginning 1) - attr-end (match-end 1)) - (rng-adjust-state-for-attribute lt-pos attr-start) - (rng-adjust-state-for-attribute-value - attr-start colon attr-end) - (all-completions arg - (rng-match-possible-value-strings)))))))) + (prefix (and (derived-mode-p 'nxml-mode) + rng-validate-mode + (and (memq (char-after) '(?' ?\" ?\ ?\t ?\n)) ;; outside word + (looking-back company-nxml-in-attribute-value-regexp) + (or (match-string-no-properties 4) + (match-string-no-properties 5) + "")))) + (candidates (company-nxml-prepared + (let (attr-start attr-end colon) + (and (looking-back rng-in-attribute-value-regex lt-pos) + (setq colon (match-beginning 2) + attr-start (match-beginning 1) + attr-end (match-end 1)) + (rng-adjust-state-for-attribute lt-pos attr-start) + (rng-adjust-state-for-attribute-value + attr-start colon attr-end) + (all-completions arg + (rng-match-possible-value-strings)))))))) ;;;###autoload (defun company-nxml (command &optional arg &rest ignored) "A `company-mode' completion back-end for `nxml-mode'." (interactive (list 'interactive)) (case command - ('interactive (company-begin-backend 'company-nxml)) - ('prefix (or (company-nxml-tag 'prefix) - (company-nxml-attribute 'prefix) - (company-nxml-attribute-value 'prefix))) - ('candidates (cond - ((company-nxml-tag 'prefix) - (company-nxml-tag 'candidates arg)) - ((company-nxml-attribute 'prefix) - (company-nxml-attribute 'candidates arg)) - ((company-nxml-attribute-value 'prefix) - (sort (company-nxml-attribute-value 'candidates arg) - 'string<)))) - ('sorted t))) + (interactive (company-begin-backend 'company-nxml)) + (prefix (or (company-nxml-tag 'prefix) + (company-nxml-attribute 'prefix) + (company-nxml-attribute-value 'prefix))) + (candidates (cond + ((company-nxml-tag 'prefix) + (company-nxml-tag 'candidates arg)) + ((company-nxml-attribute 'prefix) + (company-nxml-attribute 'candidates arg)) + ((company-nxml-attribute-value 'prefix) + (sort (company-nxml-attribute-value 'candidates arg) + 'string<)))) + (sorted t))) (provide 'company-nxml) ;;; company-nxml.el ends here