X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/a8ce5598c5067f19f2cba9cac77d5d6390c7f1fe..971eea5ba3ff339ea6129cebff1fa2457fc9a6dc:/company-nxml.el diff --git a/company-nxml.el b/company-nxml.el index 5d05bc685..9c180e985 100644 --- a/company-nxml.el +++ b/company-nxml.el @@ -1,26 +1,43 @@ -;;; company-nxml.el --- a company-mode completion back-end for nxml-mode -;; -;; Copyright (C) 2009 Nikolaj Schumacher -;; -;; This file is part of company 0.5. -;; -;; 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, +;;; company-nxml.el --- company-mode completion backend for nxml-mode + +;; Copyright (C) 2009-2011, 2013 Free Software Foundation, Inc. + +;; Author: Nikolaj Schumacher + +;; This file is part of GNU Emacs. + +;; GNU Emacs 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. + +;; GNU Emacs 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 . +;; along with GNU Emacs. If not, see . + + +;;; Commentary: +;; + +;;; Code: (require 'company) -(require 'nxml-mode) -(require 'rng-nxml) -(eval-when-compile (require 'cl)) +(require 'cl-lib) + +(defvar rng-open-elements) +(defvar rng-validate-mode) +(defvar rng-in-attribute-regex) +(defvar rng-in-attribute-value-regex) +(declare-function rng-set-state-after "rng-nxml") +(declare-function rng-match-possible-start-tag-names "rng-match") +(declare-function rng-adjust-state-for-attribute "rng-nxml") +(declare-function rng-match-possible-attribute-names "rng-match") +(declare-function rng-adjust-state-for-attribute-value "rng-nxml") +(declare-function rng-match-possible-value-strings "rng-match") (defconst company-nxml-token-regexp "\\(?:[_[:alpha:]][-._[:alnum:]]*\\_>\\)") @@ -29,8 +46,8 @@ (replace-regexp-in-string "w" company-nxml-token-regexp "\\)\\|'\\([^']*\\>\\)\\)\\=" t t)) @@ -59,7 +76,7 @@ ,@body))) (defun company-nxml-tag (command &optional arg &rest ignored) - (case command + (cl-case command (prefix (and (derived-mode-p 'nxml-mode) rng-validate-mode (company-grab company-nxml-in-tag-name-regexp 1))) @@ -69,7 +86,7 @@ (sorted t))) (defun company-nxml-attribute (command &optional arg &rest ignored) - (case command + (cl-case command (prefix (and (derived-mode-p 'nxml-mode) rng-validate-mode (memq (char-after) '(?\ ?\t ?\n)) ;; outside word @@ -82,7 +99,7 @@ (sorted t))) (defun company-nxml-attribute-value (command &optional arg &rest ignored) - (case command + (cl-case command (prefix (and (derived-mode-p 'nxml-mode) rng-validate-mode (and (memq (char-after) '(?' ?\" ?\ ?\t ?\n)) ;; outside word @@ -104,9 +121,9 @@ ;;;###autoload (defun company-nxml (command &optional arg &rest ignored) - "A `company-mode' completion back-end for `nxml-mode'." + "`company-mode' completion backend for `nxml-mode'." (interactive (list 'interactive)) - (case command + (cl-case command (interactive (company-begin-backend 'company-nxml)) (prefix (or (company-nxml-tag 'prefix) (company-nxml-attribute 'prefix)