Eliminado web-mode en favor de multi-web-mode.
This commit is contained in:
parent
391a752f61
commit
82819b9ea3
|
@ -1,103 +0,0 @@
|
||||||
;;; ac-haml.el --- auto complete source for html tag and attributes
|
|
||||||
|
|
||||||
;; Copyright (C) 2014 - 2015 Zhang Kai Yu
|
|
||||||
|
|
||||||
;; Author: Zhang Kai Yu <yeannylam@gmail.com>
|
|
||||||
;; Keywords: html, auto-complete, rails, ruby
|
|
||||||
|
|
||||||
;; This program is free software; you can redistribute it and/or modify
|
|
||||||
;; it under the terms of the GNU General Public License as published by
|
|
||||||
;; the Free Software Foundation, either version 3 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 <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; Configuration:
|
|
||||||
|
|
||||||
;;
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'ac-html-core)
|
|
||||||
(require 'ac-slim) ;; haml and slim share some common things
|
|
||||||
|
|
||||||
(defun ac-haml-attr-prefix ()
|
|
||||||
(if (or (ac-slim-inside-ruby-code)
|
|
||||||
(ac-slim-inside-non-slim-block))
|
|
||||||
nil
|
|
||||||
(save-restriction
|
|
||||||
(save-excursion
|
|
||||||
(narrow-to-region
|
|
||||||
(line-beginning-position) (line-end-position))
|
|
||||||
(let ((origin (point)) (right nil) (left nil) (thing nil))
|
|
||||||
;; Go to next whitespace or line end
|
|
||||||
(re-search-forward "\\( \\|$\\)" nil t)
|
|
||||||
(if (equal (char-before) ? )
|
|
||||||
(backward-char))
|
|
||||||
(setq right (point))
|
|
||||||
(goto-char origin)
|
|
||||||
;; Go to previous whitespace or line beginning
|
|
||||||
(re-search-backward "\\( \\|^\\)" nil t)
|
|
||||||
(if (equal (char-after) ? )
|
|
||||||
(forward-char))
|
|
||||||
(setq left (point))
|
|
||||||
;; Figure out what at point
|
|
||||||
(setq thing (buffer-substring-no-properties left right))
|
|
||||||
(if (string= (substring thing 0 1) ":")
|
|
||||||
(1+ left)
|
|
||||||
nil))))))
|
|
||||||
|
|
||||||
(defun ac-haml-attrv-prefix ()
|
|
||||||
(if (re-search-backward "\\w+ *=[>]? *[\"]\\([^\"]+[ ]\\|\\)\\(.*\\)" nil t)
|
|
||||||
(match-beginning 2)))
|
|
||||||
|
|
||||||
(defun ac-haml-class-prefix ()
|
|
||||||
(ac-slim-class-prefix))
|
|
||||||
|
|
||||||
(defun ac-haml-id-prefix ()
|
|
||||||
(ac-slim-id-prefix))
|
|
||||||
|
|
||||||
(defun ac-haml-current-tag ()
|
|
||||||
"Return current haml tag user is typing on."
|
|
||||||
(save-excursion
|
|
||||||
(save-match-data
|
|
||||||
(re-search-backward "^[\t ]*%\\(\\w+\\)" nil t)
|
|
||||||
(match-string 1))))
|
|
||||||
|
|
||||||
(defun ac-haml-current-tag ()
|
|
||||||
"Return current haml tag user is typing on."
|
|
||||||
(let* ((line (buffer-substring-no-properties (line-beginning-position)
|
|
||||||
(line-end-position)))
|
|
||||||
(match-result (s-match "^[\t ]*%\\(\\w+\\)" line)))
|
|
||||||
(if match-result
|
|
||||||
(nth 1 match-result)
|
|
||||||
"div")))
|
|
||||||
|
|
||||||
(defun ac-haml-current-attr ()
|
|
||||||
"Return current html tag's attribute user is typing on."
|
|
||||||
(save-excursion (re-search-backward "[^a-z-]\\([a-z-]+\\) *=" nil t))
|
|
||||||
(match-string 1))
|
|
||||||
|
|
||||||
(defun ac-haml-attrv-prefix ()
|
|
||||||
(if (re-search-backward "\\w+ *=[>]? *[\"]\\([^\"]+[ ]\\|\\)\\(.*\\)" nil t)
|
|
||||||
(match-beginning 2)))
|
|
||||||
|
|
||||||
(ac-html-define-ac-source "haml"
|
|
||||||
:tag-prefix "^[ \t]*%\\(.*\\)"
|
|
||||||
:attr-prefix ac-haml-attr-prefix
|
|
||||||
:attrv-prefix ac-haml-attrv-prefix
|
|
||||||
:class-prefix ac-haml-class-prefix
|
|
||||||
:id-prefix ac-haml-id-prefix
|
|
||||||
:current-tag-func ac-haml-current-tag
|
|
||||||
:current-attr-func ac-haml-current-attr)
|
|
||||||
|
|
||||||
(provide 'ac-haml)
|
|
||||||
;;; ac-haml.el ends here
|
|
Binary file not shown.
|
@ -1,90 +0,0 @@
|
||||||
;;; ac-html-autoloads.el --- automatically extracted autoloads
|
|
||||||
;;
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(add-to-list 'load-path (directory-file-name
|
|
||||||
(or (file-name-directory #$) (car load-path))))
|
|
||||||
|
|
||||||
|
|
||||||
;;;### (autoloads nil "ac-haml" "ac-haml.el" (0 0 0 0))
|
|
||||||
;;; Generated autoloads from ac-haml.el
|
|
||||||
|
|
||||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ac-haml" '("ac-haml-")))
|
|
||||||
|
|
||||||
;;;***
|
|
||||||
|
|
||||||
;;;### (autoloads nil "ac-html" "ac-html.el" (0 0 0 0))
|
|
||||||
;;; Generated autoloads from ac-html.el
|
|
||||||
|
|
||||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ac-html" '("ac-html-")))
|
|
||||||
|
|
||||||
;;;***
|
|
||||||
|
|
||||||
;;;### (autoloads nil "ac-html-core" "ac-html-core.el" (0 0 0 0))
|
|
||||||
;;; Generated autoloads from ac-html-core.el
|
|
||||||
|
|
||||||
(autoload 'ac-html-define-data-provider "ac-html-core" "\
|
|
||||||
Define ac-html data provider with this macro.
|
|
||||||
This macro is buggy and cannot be used now.
|
|
||||||
|
|
||||||
\(fn PROVIDER &rest PAIRS)" nil t)
|
|
||||||
|
|
||||||
(function-put 'ac-html-define-data-provider 'lisp-indent-function '1)
|
|
||||||
|
|
||||||
(autoload 'ac-html-enable-data-provider "ac-html-core" "\
|
|
||||||
Enable data provider PROVIDER.
|
|
||||||
|
|
||||||
\(fn PROVIDER)" nil nil)
|
|
||||||
|
|
||||||
(autoload 'ac-html-define-ac-source "ac-html-core" "\
|
|
||||||
Define ac-html lang with this macro.
|
|
||||||
|
|
||||||
\(fn LANG &rest PAIRS)" nil t)
|
|
||||||
|
|
||||||
(function-put 'ac-html-define-ac-source 'lisp-indent-function '1)
|
|
||||||
|
|
||||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ac-html-core" '("ac-html-")))
|
|
||||||
|
|
||||||
;;;***
|
|
||||||
|
|
||||||
;;;### (autoloads nil "ac-html-default-data-provider" "ac-html-default-data-provider.el"
|
|
||||||
;;;;;; (0 0 0 0))
|
|
||||||
;;; Generated autoloads from ac-html-default-data-provider.el
|
|
||||||
|
|
||||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ac-html-default-data-provider" '("ac-html-" "web-completion-data-")))
|
|
||||||
|
|
||||||
;;;***
|
|
||||||
|
|
||||||
;;;### (autoloads nil "ac-html-testing-data-provider" "ac-html-testing-data-provider.el"
|
|
||||||
;;;;;; (0 0 0 0))
|
|
||||||
;;; Generated autoloads from ac-html-testing-data-provider.el
|
|
||||||
|
|
||||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ac-html-testing-data-provider" '("ac-html-testing-")))
|
|
||||||
|
|
||||||
;;;***
|
|
||||||
|
|
||||||
;;;### (autoloads nil "ac-jade" "ac-jade.el" (0 0 0 0))
|
|
||||||
;;; Generated autoloads from ac-jade.el
|
|
||||||
|
|
||||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ac-jade" '("ac-jade-")))
|
|
||||||
|
|
||||||
;;;***
|
|
||||||
|
|
||||||
;;;### (autoloads nil "ac-slim" "ac-slim.el" (0 0 0 0))
|
|
||||||
;;; Generated autoloads from ac-slim.el
|
|
||||||
|
|
||||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ac-slim" '("ac-slim-")))
|
|
||||||
|
|
||||||
;;;***
|
|
||||||
|
|
||||||
;;;### (autoloads nil nil ("ac-html-pkg.el") (0 0 0 0))
|
|
||||||
|
|
||||||
;;;***
|
|
||||||
|
|
||||||
;; Local Variables:
|
|
||||||
;; version-control: never
|
|
||||||
;; no-byte-compile: t
|
|
||||||
;; no-update-autoloads: t
|
|
||||||
;; coding: utf-8
|
|
||||||
;; End:
|
|
||||||
;;; ac-html-autoloads.el ends here
|
|
|
@ -1,263 +0,0 @@
|
||||||
;;; ac-html-core.el --- auto complete html core -*- lexical-binding: t; -*-
|
|
||||||
|
|
||||||
;; Copyright (C) 2015 Zhang Kai Yu
|
|
||||||
|
|
||||||
;; Author: Zhang Kai Yu <yeannylam@gmail.com>
|
|
||||||
|
|
||||||
;; This program is free software; you can redistribute it and/or modify
|
|
||||||
;; it under the terms of the GNU General Public License as published by
|
|
||||||
;; the Free Software Foundation, either version 3 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 <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;;
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'auto-complete)
|
|
||||||
(require 'cl-lib)
|
|
||||||
(require 'dash)
|
|
||||||
|
|
||||||
;;; Customization
|
|
||||||
|
|
||||||
(defgroup auto-complete-html nil
|
|
||||||
"HTML Auto Complete."
|
|
||||||
:group 'auto-complete
|
|
||||||
:prefix "ac-html-")
|
|
||||||
|
|
||||||
;;; Variables
|
|
||||||
|
|
||||||
(defvar ac-html-data-providers nil "Completion data providers.")
|
|
||||||
|
|
||||||
(defvar-local ac-html-enabled-data-providers nil
|
|
||||||
"The enabled data providers of current buffer.")
|
|
||||||
|
|
||||||
(defvar-local ac-html-current-tag-function nil
|
|
||||||
"The function to find current tag.")
|
|
||||||
|
|
||||||
(defvar-local ac-html-current-attr-function nil
|
|
||||||
"The function to find current attr.")
|
|
||||||
|
|
||||||
;;; Provider
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defmacro ac-html-define-data-provider (provider &rest pairs)
|
|
||||||
"Define ac-html data provider with this macro.
|
|
||||||
This macro is buggy and cannot be used now."
|
|
||||||
(declare (indent 1) (debug t))
|
|
||||||
(let (tag-func attr-func attrv-func id-func class-func tag-doc-func
|
|
||||||
attr-doc-func attrv-doc-func id-doc-func class-doc-func)
|
|
||||||
(let (label value)
|
|
||||||
(while (not (= 0 (length pairs)))
|
|
||||||
(setq label (pop pairs))
|
|
||||||
(setq value (pop pairs))
|
|
||||||
(and (equal :tag-func label) (setq tag-func value))
|
|
||||||
(and (equal :attr-func label) (setq attr-func value))
|
|
||||||
(and (equal :attrv-func label) (setq attrv-func value))
|
|
||||||
(and (equal :id-func label) (setq id-func value))
|
|
||||||
(and (equal :class-func label) (setq class-func value))
|
|
||||||
(and (equal :tag-doc-func label) (setq tag-doc-func value))
|
|
||||||
(and (equal :attr-doc-func label) (setq attr-doc-func value))
|
|
||||||
(and (equal :attrv-doc-func label) (setq attrv-doc-func value))
|
|
||||||
(and (equal :id-doc-func label) (setq id-doc-func value))
|
|
||||||
(and (equal :class-doc-func label) (setq class-doc-func value))))
|
|
||||||
`(progn
|
|
||||||
(add-to-list 'ac-html-data-providers ,provider)
|
|
||||||
(put ,provider :tag-func ,tag-func)
|
|
||||||
(put ,provider :attr-func ,attr-func)
|
|
||||||
(put ,provider :attrv-func ,attrv-func)
|
|
||||||
(put ,provider :id-func ,id-func)
|
|
||||||
(put ,provider :class-func ,class-func)
|
|
||||||
(put ,provider :tag-doc-func ,tag-doc-func)
|
|
||||||
(put ,provider :attr-doc-func ,attr-doc-func)
|
|
||||||
(put ,provider :attrv-doc-func ,attrv-doc-func)
|
|
||||||
(put ,provider :id-doc-func ,id-doc-func)
|
|
||||||
(put ,provider :class-doc-func ,class-doc-func))))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun ac-html-enable-data-provider (provider)
|
|
||||||
"Enable data provider PROVIDER."
|
|
||||||
(add-to-list 'ac-html-enabled-data-providers provider))
|
|
||||||
|
|
||||||
(defun ac-html-query-data-provider (provider key)
|
|
||||||
(get provider key))
|
|
||||||
|
|
||||||
;;; Language (Adaptor)
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defmacro ac-html-define-ac-source (lang &rest pairs)
|
|
||||||
"Define ac-html lang with this macro."
|
|
||||||
(declare (indent 1) (debug t))
|
|
||||||
(let (tag-prefix attr-prefix attrv-prefix id-prefix class-prefix
|
|
||||||
current-tag-func current-attr-func)
|
|
||||||
(let (label value)
|
|
||||||
(while (not (= 0 (length pairs)))
|
|
||||||
(setq label (pop pairs))
|
|
||||||
(setq value (pop pairs))
|
|
||||||
(and (equal :tag-prefix label) (setq tag-prefix value))
|
|
||||||
(and (equal :attr-prefix label) (setq attr-prefix value))
|
|
||||||
(and (equal :attrv-prefix label) (setq attrv-prefix value))
|
|
||||||
(and (equal :id-prefix label) (setq id-prefix value))
|
|
||||||
(and (equal :class-prefix label) (setq class-prefix value))
|
|
||||||
(and (equal :current-tag-func label) (setq current-tag-func value))
|
|
||||||
(and (equal :current-attr-func label) (setq current-attr-func value))))
|
|
||||||
|
|
||||||
`(progn
|
|
||||||
(defun ,(intern (format "ac-%s-setup" lang)) ()
|
|
||||||
,(format "Setup for ac-html to provide completion for %s language." lang)
|
|
||||||
(setq ac-html-current-tag-function (quote ,current-tag-func))
|
|
||||||
(setq ac-html-current-attr-function (quote ,current-attr-func)))
|
|
||||||
,(if tag-prefix
|
|
||||||
`(ac-define-source ,(format "%s-%s" lang "tag")
|
|
||||||
'((candidates . ac-html-all-tag-candidates)
|
|
||||||
(prefix . ,tag-prefix)
|
|
||||||
(document . ac-html-tag-documentation)
|
|
||||||
(symbol . "t"))))
|
|
||||||
,(if attr-prefix
|
|
||||||
`(ac-define-source ,(format "%s-%s" lang "attr")
|
|
||||||
'((candidates . ac-html-all-attr-candidates)
|
|
||||||
(prefix . ,attr-prefix)
|
|
||||||
(document . ac-html-attr-documentation)
|
|
||||||
(symbol . "a"))))
|
|
||||||
,(if attrv-prefix
|
|
||||||
`(ac-define-source ,(format "%s-%s" lang "attrv")
|
|
||||||
'((candidates . ac-html-all-attrv-candidates)
|
|
||||||
(prefix . ,attrv-prefix)
|
|
||||||
(document . ac-html-attrv-documentation)
|
|
||||||
(symbol . "v"))))
|
|
||||||
,(if id-prefix
|
|
||||||
`(ac-define-source ,(format "%s-%s" lang "id")
|
|
||||||
'((candidates . ac-html-all-id-candidates)
|
|
||||||
(prefix . ,id-prefix)
|
|
||||||
(document . ac-html-id-documentation)
|
|
||||||
(symbol . "i"))))
|
|
||||||
,(if class-prefix
|
|
||||||
`(ac-define-source ,(format "%s-%s" lang "class")
|
|
||||||
'((candidates . ac-html-all-class-candidates)
|
|
||||||
(prefix . ,class-prefix)
|
|
||||||
(document . ac-html-class-documentation)
|
|
||||||
(symbol . "c"))))
|
|
||||||
)))
|
|
||||||
|
|
||||||
;;; Data
|
|
||||||
|
|
||||||
(defun ac-html-all-tag-candidates ()
|
|
||||||
"All tag candidates get from data providers."
|
|
||||||
(let (list func)
|
|
||||||
(dolist (provider ac-html-enabled-data-providers)
|
|
||||||
(setq func (ac-html-query-data-provider provider :tag-func))
|
|
||||||
(if func (setq list (-concat list (funcall func)))))
|
|
||||||
list))
|
|
||||||
|
|
||||||
(defun ac-html-all-attr-candidates ()
|
|
||||||
"All attr candidates get from data providers."
|
|
||||||
(let (list func tag)
|
|
||||||
(dolist (provider ac-html-enabled-data-providers)
|
|
||||||
(setq func (ac-html-query-data-provider provider :attr-func))
|
|
||||||
(setq tag (funcall ac-html-current-tag-function))
|
|
||||||
(if func (setq list (-concat list (funcall func tag)))))
|
|
||||||
list))
|
|
||||||
|
|
||||||
(defun ac-html-all-attrv-candidates ()
|
|
||||||
"All attrv candidates get from data providers."
|
|
||||||
(let (list func tag attr)
|
|
||||||
(dolist (provider ac-html-enabled-data-providers)
|
|
||||||
(setq func (ac-html-query-data-provider provider :attrv-func))
|
|
||||||
(setq tag (funcall ac-html-current-tag-function))
|
|
||||||
(setq attr (funcall ac-html-current-attr-function))
|
|
||||||
(if func (setq list (-concat list (funcall func tag attr)))))
|
|
||||||
(if (string= attr "class")
|
|
||||||
(setq list (-concat list (ac-html-all-class-candidates))))
|
|
||||||
(if (string= attr "id")
|
|
||||||
(setq list (-concat list (ac-html-all-id-candidates))))
|
|
||||||
list))
|
|
||||||
|
|
||||||
(defun ac-html-all-id-candidates ()
|
|
||||||
""
|
|
||||||
(let (list func)
|
|
||||||
(dolist (provider ac-html-enabled-data-providers)
|
|
||||||
(setq func (ac-html-query-data-provider provider :id-func))
|
|
||||||
(if func (setq list (-concat list (funcall func)))))
|
|
||||||
list))
|
|
||||||
|
|
||||||
(defun ac-html-all-class-candidates ()
|
|
||||||
""
|
|
||||||
(let (list func)
|
|
||||||
(dolist (provider ac-html-enabled-data-providers)
|
|
||||||
(setq func (ac-html-query-data-provider provider :class-func))
|
|
||||||
(if func (setq list (-concat list (funcall func)))))
|
|
||||||
list))
|
|
||||||
|
|
||||||
(defun ac-html-tag-documentation (tag)
|
|
||||||
"Not documented yet."
|
|
||||||
(catch 'return-val
|
|
||||||
(let (doc func)
|
|
||||||
(dolist (provider ac-html-enabled-data-providers)
|
|
||||||
(setq func (ac-html-query-data-provider provider :tag-doc-func))
|
|
||||||
(if func
|
|
||||||
(progn
|
|
||||||
(setq doc (funcall func tag))
|
|
||||||
(if doc (throw 'return-val doc))))))))
|
|
||||||
|
|
||||||
(defun ac-html-attr-documentation (attr)
|
|
||||||
"Not documented yet."
|
|
||||||
(catch 'return-val
|
|
||||||
(let (doc func tag)
|
|
||||||
(dolist (provider ac-html-enabled-data-providers)
|
|
||||||
(setq func (ac-html-query-data-provider provider :attr-doc-func))
|
|
||||||
(if func
|
|
||||||
(progn
|
|
||||||
(setq tag (funcall ac-html-current-tag-function))
|
|
||||||
(setq doc (funcall func tag attr))
|
|
||||||
(if doc (throw 'return-val doc))))))))
|
|
||||||
|
|
||||||
(defun ac-html-attrv-documentation (attrv)
|
|
||||||
"Not documented yet."
|
|
||||||
(catch 'return-val
|
|
||||||
(let (doc func tag attr)
|
|
||||||
(dolist (provider ac-html-enabled-data-providers)
|
|
||||||
(setq func (ac-html-query-data-provider provider :attrv-doc-func))
|
|
||||||
(if func
|
|
||||||
(progn
|
|
||||||
(setq tag (funcall ac-html-current-tag-function))
|
|
||||||
(setq attr (funcall ac-html-current-attr-function))
|
|
||||||
(setq doc (funcall func tag attr attrv))
|
|
||||||
(if doc (throw 'return-val doc)))))
|
|
||||||
(if (string= attr "class")
|
|
||||||
(throw 'return-val (ac-html-class-documentation attrv)))
|
|
||||||
(if (string= attr "id")
|
|
||||||
(throw 'return-val (ac-html-id-documentation attrv))))))
|
|
||||||
|
|
||||||
(defun ac-html-id-documentation (id)
|
|
||||||
""
|
|
||||||
(catch 'return-val
|
|
||||||
(let (doc func)
|
|
||||||
(dolist (provider ac-html-enabled-data-providers)
|
|
||||||
(setq func (ac-html-query-data-provider provider :id-doc-func))
|
|
||||||
(if func
|
|
||||||
(progn
|
|
||||||
(setq doc (funcall func id))
|
|
||||||
(if doc (throw 'return-val doc))))))))
|
|
||||||
|
|
||||||
(defun ac-html-class-documentation (class)
|
|
||||||
""
|
|
||||||
(catch 'return-val
|
|
||||||
(let (doc func)
|
|
||||||
(dolist (provider ac-html-enabled-data-providers)
|
|
||||||
(setq func (ac-html-query-data-provider provider :class-doc-func))
|
|
||||||
(if func
|
|
||||||
(progn
|
|
||||||
(setq doc (funcall func class))
|
|
||||||
(if doc (throw 'return-val doc))))))))
|
|
||||||
|
|
||||||
(provide 'ac-html-core)
|
|
||||||
;;; ac-html-core.el ends here
|
|
Binary file not shown.
|
@ -1,139 +0,0 @@
|
||||||
(require 'ac-html-core)
|
|
||||||
(require 'f)
|
|
||||||
|
|
||||||
;;; web-completion-data helpers
|
|
||||||
|
|
||||||
(defconst web-completion-data-package-dir
|
|
||||||
(file-name-directory (or load-file-name (buffer-file-name)))
|
|
||||||
"The directory where `web-completion-data' package exists.")
|
|
||||||
|
|
||||||
(defconst web-completion-data-html-source-dir
|
|
||||||
(expand-file-name "completion-data" web-completion-data-package-dir)
|
|
||||||
"The directory where basic completion source of `web-completion-data'
|
|
||||||
exists.")
|
|
||||||
|
|
||||||
(defconst web-completion-data-tag-list-file
|
|
||||||
(f-expand "html-tag-list" web-completion-data-html-source-dir))
|
|
||||||
|
|
||||||
(defconst web-completion-data-tag-doc-dir
|
|
||||||
(f-expand "html-tag-short-docs" web-completion-data-html-source-dir))
|
|
||||||
|
|
||||||
(defun web-completion-data-tag-doc-file (tag)
|
|
||||||
(f-expand tag web-completion-data-tag-doc-dir))
|
|
||||||
|
|
||||||
(defconst web-completion-data-attr-list-dir
|
|
||||||
(f-expand "html-attributes-list" web-completion-data-html-source-dir))
|
|
||||||
|
|
||||||
(defconst web-completion-data-attr-global-list-file
|
|
||||||
(f-expand "global" web-completion-data-attr-list-dir))
|
|
||||||
|
|
||||||
(defun web-completion-data-attr-list-file (tag)
|
|
||||||
(f-expand tag web-completion-data-attr-list-dir))
|
|
||||||
|
|
||||||
(defconst web-completion-data-attr-doc-dir
|
|
||||||
(f-expand "html-attributes-short-docs" web-completion-data-html-source-dir))
|
|
||||||
|
|
||||||
(defun web-completion-data-attr-global-doc-file (attr)
|
|
||||||
(f-expand (format "global-%s" attr) web-completion-data-attr-doc-dir))
|
|
||||||
|
|
||||||
(defun web-completion-data-attr-doc-file (tag attr)
|
|
||||||
(f-expand (format "%s-%s" tag attr) web-completion-data-attr-doc-dir))
|
|
||||||
|
|
||||||
(defconst web-completion-data-attrv-list-dir
|
|
||||||
(f-expand "html-attrv-list" web-completion-data-html-source-dir))
|
|
||||||
|
|
||||||
(defun web-completion-data-attrv-list-file (tag attr)
|
|
||||||
(f-expand (format "%s-%s" tag attr) web-completion-data-attrv-list-dir))
|
|
||||||
|
|
||||||
(defun web-completion-data-attrv-global-list-file (attr)
|
|
||||||
(f-expand (format "global-%s" attr) web-completion-data-attrv-list-dir))
|
|
||||||
|
|
||||||
(defconst web-completion-data-attrv-doc-dir
|
|
||||||
(f-expand "html-attrv-docs" web-completion-data-html-source-dir))
|
|
||||||
|
|
||||||
(defun web-completion-data-attrv-global-doc-file (attr attrv)
|
|
||||||
(f-expand (format "global-%s-%s" attr (url-hexify-string attrv))
|
|
||||||
web-completion-data-attrv-doc-dir))
|
|
||||||
|
|
||||||
(defun web-completion-data-attrv-doc-file (tag attr attrv)
|
|
||||||
(f-expand (format "%s-%s-%s" tag attr (url-hexify-string attrv))
|
|
||||||
web-completion-data-attrv-doc-dir))
|
|
||||||
|
|
||||||
;;; cached data
|
|
||||||
|
|
||||||
(defvar ac-html--tags-list nil "The list of tags.")
|
|
||||||
(defvar ac-html--global-attributes nil "The list of global attrs.")
|
|
||||||
(defvar ac-html--cached-attributes-alist nil)
|
|
||||||
|
|
||||||
;;; helper functions
|
|
||||||
|
|
||||||
(defun ac-html--load-list-from-file (filepath)
|
|
||||||
"Return a list separated by \\n from FILEPATH."
|
|
||||||
(if (file-exists-p filepath)
|
|
||||||
(with-current-buffer (find-file-noselect filepath)
|
|
||||||
(unwind-protect
|
|
||||||
(split-string
|
|
||||||
(save-restriction
|
|
||||||
(widen)
|
|
||||||
(buffer-substring-no-properties (point-min) (point-max)))
|
|
||||||
"\n" t)
|
|
||||||
(kill-buffer)))
|
|
||||||
nil))
|
|
||||||
|
|
||||||
(defun ac-html--read-file (file)
|
|
||||||
"If file exist, return string of contents, otherwise return nil."
|
|
||||||
(if (file-exists-p file)
|
|
||||||
(with-temp-buffer
|
|
||||||
(insert-file-contents file)
|
|
||||||
(buffer-string))
|
|
||||||
nil))
|
|
||||||
|
|
||||||
;;; functions
|
|
||||||
|
|
||||||
(defun ac-html-default-tags ()
|
|
||||||
(if ac-html--tags-list
|
|
||||||
ac-html--tags-list
|
|
||||||
(setq ac-html--tags-list
|
|
||||||
(ac-html--load-list-from-file web-completion-data-tag-list-file))))
|
|
||||||
|
|
||||||
(defun ac-html-default-attrs (tag)
|
|
||||||
(unless ac-html--global-attributes
|
|
||||||
(setq ac-html--global-attributes
|
|
||||||
(ac-html--load-list-from-file
|
|
||||||
web-completion-data-attr-global-list-file)))
|
|
||||||
(let (list attr-file)
|
|
||||||
(setq attr-file (web-completion-data-attr-list-file tag))
|
|
||||||
(if (file-exists-p attr-file)
|
|
||||||
(setq list (ac-html--load-list-from-file
|
|
||||||
attr-file)))
|
|
||||||
(append list ac-html--global-attributes)))
|
|
||||||
|
|
||||||
(defun ac-html-default-attrvs (tag attr)
|
|
||||||
(append
|
|
||||||
(ac-html--load-list-from-file
|
|
||||||
(web-completion-data-attrv-list-file tag attr))
|
|
||||||
(ac-html--load-list-from-file
|
|
||||||
(web-completion-data-attrv-global-list-file attr))))
|
|
||||||
|
|
||||||
(defun ac-html-default-tag-doc (tag)
|
|
||||||
(ac-html--read-file (web-completion-data-tag-doc-file tag)))
|
|
||||||
|
|
||||||
(defun ac-html-default-attr-doc (tag attr)
|
|
||||||
(or (ac-html--read-file (web-completion-data-attr-doc-file tag attr))
|
|
||||||
(ac-html--read-file (web-completion-data-attr-global-doc-file attr))))
|
|
||||||
|
|
||||||
(defun ac-html-default-attrv-doc (tag attr attrv)
|
|
||||||
(or (ac-html--read-file (web-completion-data-attrv-doc-file tag attr attrv))
|
|
||||||
(ac-html--read-file
|
|
||||||
(web-completion-data-attrv-global-doc-file attr attrv))))
|
|
||||||
|
|
||||||
(ac-html-define-data-provider 'ac-html-default-data-provider
|
|
||||||
:tag-func 'ac-html-default-tags
|
|
||||||
:attr-func 'ac-html-default-attrs
|
|
||||||
:attrv-func 'ac-html-default-attrvs
|
|
||||||
:tag-doc-func 'ac-html-default-tag-doc
|
|
||||||
:attr-doc-func 'ac-html-default-attr-doc
|
|
||||||
:attrv-doc-func 'ac-html-default-attrv-doc)
|
|
||||||
|
|
||||||
(provide 'ac-html-default-data-provider)
|
|
||||||
;;; ac-html-default-data-provider.el ends here
|
|
Binary file not shown.
|
@ -1,15 +0,0 @@
|
||||||
(define-package "ac-html" "20151005.731" "auto complete source for html tags and attributes"
|
|
||||||
'((auto-complete "1.4")
|
|
||||||
(s "1.9")
|
|
||||||
(f "0.17")
|
|
||||||
(dash "2.10"))
|
|
||||||
:commit "668154cba123c321d1b07c2dc8b26d14092253b8" :keywords
|
|
||||||
'("html" "auto-complete" "slim" "haml" "jade")
|
|
||||||
:authors
|
|
||||||
'(("Zhang Kai Yu" . "yeannylam@gmail.com"))
|
|
||||||
:maintainer
|
|
||||||
'("Zhang Kai Yu" . "yeannylam@gmail.com")
|
|
||||||
:url "https://github.com/cheunghy/ac-html")
|
|
||||||
;; Local Variables:
|
|
||||||
;; no-byte-compile: t
|
|
||||||
;; End:
|
|
|
@ -1,17 +0,0 @@
|
||||||
(require 'ac-html-core)
|
|
||||||
|
|
||||||
(defun ac-html-testing-tags ()
|
|
||||||
'("tag1" "tag2" "tag3"))
|
|
||||||
|
|
||||||
(defun ac-html-testing-classes ()
|
|
||||||
'("class1" "class2"))
|
|
||||||
|
|
||||||
(defun ac-html-testing-ids ()
|
|
||||||
'("id1" "id2" "id3"))
|
|
||||||
|
|
||||||
(ac-html-define-data-provider 'ac-html-testing-data-provider
|
|
||||||
:tag-func 'ac-html-testing-tags
|
|
||||||
:class-func 'ac-html-testing-classes
|
|
||||||
:id-func 'ac-html-testing-ids)
|
|
||||||
|
|
||||||
(provide 'ac-html-testing-data-provider)
|
|
Binary file not shown.
|
@ -1,89 +0,0 @@
|
||||||
;;; ac-html.el --- auto complete source for html tags and attributes
|
|
||||||
|
|
||||||
;; Copyright (C) 2014 - 2015 Zhang Kai Yu
|
|
||||||
|
|
||||||
;; Author: Zhang Kai Yu <yeannylam@gmail.com>
|
|
||||||
;; Version: 0.4.alpha
|
|
||||||
;; Keywords: html, auto-complete, slim, haml, jade
|
|
||||||
;; Package-Requires: ((auto-complete "1.4") (s "1.9") (f "0.17") (dash "2.10"))
|
|
||||||
;; URL: https://github.com/cheunghy/ac-html
|
|
||||||
|
|
||||||
;; This program is free software; you can redistribute it and/or modify
|
|
||||||
;; it under the terms of the GNU General Public License as published by
|
|
||||||
;; the Free Software Foundation, either version 3 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 <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;;
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'ac-html-core)
|
|
||||||
|
|
||||||
(defun ac-html--inside-attrv ()
|
|
||||||
"Return t if cursor inside attrv aka string.
|
|
||||||
Has bug for quoted quote."
|
|
||||||
(save-match-data
|
|
||||||
(save-excursion
|
|
||||||
(re-search-backward "\\w+[\n\t ]*=[\n\t ]*[\"']\\([^\"']*\\)" nil t))
|
|
||||||
(equal (match-end 1) (point))))
|
|
||||||
|
|
||||||
(defun ac-html--inside-comment ()
|
|
||||||
"Return t if cursor inside comment.
|
|
||||||
Not implemented yet.")
|
|
||||||
|
|
||||||
;;; auto complete HTML for html-mode and web-mode
|
|
||||||
|
|
||||||
(defun ac-html-tag-prefix ()
|
|
||||||
(if (ac-html--inside-attrv)
|
|
||||||
nil
|
|
||||||
(save-match-data
|
|
||||||
(save-excursion
|
|
||||||
(re-search-backward "<\\([^\n\t >'\"]*\\)" nil t))
|
|
||||||
(match-beginning 1))))
|
|
||||||
|
|
||||||
(defun ac-html-attr-prefix ()
|
|
||||||
(if (ac-html--inside-attrv)
|
|
||||||
nil
|
|
||||||
(save-match-data
|
|
||||||
(save-excursion
|
|
||||||
(re-search-backward "<\\w[^>]*[[:space:]]+\\(.*\\)" nil t))
|
|
||||||
(match-beginning 1))))
|
|
||||||
|
|
||||||
(defun ac-html-value-prefix ()
|
|
||||||
(if (re-search-backward "\\w=[\"]\\([^\"]+[ ]\\|\\)\\(.*\\)" nil t)
|
|
||||||
(match-beginning 2)))
|
|
||||||
|
|
||||||
(defun ac-html-current-tag ()
|
|
||||||
"Return current html tag user is typing on.
|
|
||||||
There is a bug if attrv contains string like this <a"
|
|
||||||
(save-excursion
|
|
||||||
(save-match-data
|
|
||||||
(re-search-backward "<\\(\\w+\\)[[:space:]]+" nil t)
|
|
||||||
(match-string 1))))
|
|
||||||
|
|
||||||
(defun ac-html-current-attr ()
|
|
||||||
"Return current html tag's attribute user is typing on.
|
|
||||||
There is a bug if attrv contains string like this href="
|
|
||||||
(save-excursion
|
|
||||||
(re-search-backward "[^a-z-]\\([a-z-]+\\)[\n\t ]*=" nil t)
|
|
||||||
(match-string 1)))
|
|
||||||
|
|
||||||
(ac-html-define-ac-source "html"
|
|
||||||
:tag-prefix ac-html-tag-prefix
|
|
||||||
:attr-prefix ac-html-attr-prefix
|
|
||||||
:attrv-prefix ac-html-value-prefix
|
|
||||||
:current-tag-func ac-html-current-tag
|
|
||||||
:current-attr-func ac-html-current-attr)
|
|
||||||
|
|
||||||
(provide 'ac-html)
|
|
||||||
;;; ac-html.el ends here
|
|
Binary file not shown.
|
@ -1,52 +0,0 @@
|
||||||
;;; ac-jade.el --- auto complete source for html tag and attributes
|
|
||||||
|
|
||||||
;; Copyright (C) 2014 Zhang Kai Yu, Olexandr Sydorchuck
|
|
||||||
|
|
||||||
;; Author: Zhang Kai Yu <yeannylam@gmail.com>
|
|
||||||
;; Keywords: html, auto-complete, jade, node
|
|
||||||
|
|
||||||
;; This program is free software; you can redistribute it and/or modify
|
|
||||||
;; it under the terms of the GNU General Public License as published by
|
|
||||||
;; the Free Software Foundation, either version 3 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 <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; Configuration:
|
|
||||||
;;
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'ac-html-core)
|
|
||||||
|
|
||||||
(defun ac-jade-current-tag ()
|
|
||||||
"Return current jade tag user is typing on."
|
|
||||||
(save-excursion (re-search-backward "^[\t ]*\\(\\w+\\)" nil t))
|
|
||||||
(match-string 1))
|
|
||||||
|
|
||||||
(defun ac-jade-current-attr ()
|
|
||||||
"Return current html tag's attribute user is typing on."
|
|
||||||
(save-excursion (re-search-backward "[^a-z-]\\([a-z-]+\\) *=" nil t))
|
|
||||||
(match-string 1))
|
|
||||||
|
|
||||||
(defun ac-jade-attrv-prefix ()
|
|
||||||
(if (re-search-backward "\\w *= *[\"]\\([^\"]+[ ]\\|\\)\\(.*\\)" nil t)
|
|
||||||
(match-beginning 2)))
|
|
||||||
|
|
||||||
(ac-html-define-ac-source "jade"
|
|
||||||
:tag-prefix "^[\t ]*\\(.*\\)"
|
|
||||||
:attr-prefix "\\(?:,\\|(\\)[ ]*\\(.*\\)"
|
|
||||||
:attrv-prefix ac-jade-attrv-prefix
|
|
||||||
:current-tag-func ac-jade-current-tag
|
|
||||||
:current-attr-func ac-jade-current-attr)
|
|
||||||
|
|
||||||
(provide 'ac-jade)
|
|
||||||
;;; ac-jade.el ends here
|
|
Binary file not shown.
|
@ -1,154 +0,0 @@
|
||||||
;;; ac-slim.el --- auto complete source for html tag and attributes
|
|
||||||
|
|
||||||
;; Copyright (C) 2015 Zhang Kai Yu
|
|
||||||
|
|
||||||
;; Author: Zhang Kai Yu <yeannylam@gmail.com>
|
|
||||||
;; Keywords: html, auto-complete, slim, ruby
|
|
||||||
|
|
||||||
;; This program is free software; you can redistribute it and/or modify
|
|
||||||
;; it under the terms of the GNU General Public License as published by
|
|
||||||
;; the Free Software Foundation, either version 3 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 <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
;;; Commentary:
|
|
||||||
|
|
||||||
;; Configuration:
|
|
||||||
;;
|
|
||||||
|
|
||||||
;;; Code:
|
|
||||||
|
|
||||||
(require 'ac-html-core)
|
|
||||||
|
|
||||||
(require 's)
|
|
||||||
|
|
||||||
(defun ac-slim-inside-ruby-code ()
|
|
||||||
"Return t if inside ruby code."
|
|
||||||
(let ((line (buffer-substring-no-properties (line-beginning-position)
|
|
||||||
(line-end-position))))
|
|
||||||
(numberp (string-match-p "^[\t ]*[-=]" line))))
|
|
||||||
|
|
||||||
(defun ac-slim--line-leading-spaces ()
|
|
||||||
"Return leading space of current line."
|
|
||||||
(let ((saved-point (point)) (number-of-spaces 0) (cur-point nil))
|
|
||||||
(goto-char (line-beginning-position))
|
|
||||||
(setq cur-point (point))
|
|
||||||
(while (-contains-p '(? ?\t) (char-after cur-point))
|
|
||||||
(setq number-of-spaces (1+ number-of-spaces))
|
|
||||||
(setq cur-point (1+ cur-point))
|
|
||||||
(goto-char cur-point))
|
|
||||||
(goto-char saved-point)
|
|
||||||
number-of-spaces))
|
|
||||||
|
|
||||||
(defun ac-slim--line-is-block-indicator ()
|
|
||||||
"Return t if line indicate a non slim block."
|
|
||||||
(let ((content-of-line (buffer-substring-no-properties
|
|
||||||
(line-beginning-position) (line-end-position))))
|
|
||||||
(numberp (string-match-p
|
|
||||||
"[ \t]*\\(ruby\\|javascript\\|coffee\\):[ \t]*"
|
|
||||||
content-of-line))))
|
|
||||||
|
|
||||||
(defun ac-slim--line-is-empty ()
|
|
||||||
"Return t if line is empty."
|
|
||||||
(s-matches-p "^[ \t]*$" (buffer-substring-no-properties
|
|
||||||
(line-beginning-position)
|
|
||||||
(line-end-position))))
|
|
||||||
|
|
||||||
(defun ac-slim-inside-non-slim-block ()
|
|
||||||
"Return t if inside ruby block, coffee block."
|
|
||||||
(catch 'blk
|
|
||||||
(save-excursion
|
|
||||||
(let ((min-number-of-leading-spaces (ac-slim--line-leading-spaces)))
|
|
||||||
(if (ac-slim--line-is-block-indicator)
|
|
||||||
(throw 'blk t))
|
|
||||||
(while (not (or (= min-number-of-leading-spaces 0)
|
|
||||||
(= 1 (line-number-at-pos))))
|
|
||||||
(forward-line -1)
|
|
||||||
(if (ac-slim--line-is-empty)
|
|
||||||
nil
|
|
||||||
(if (< (ac-slim--line-leading-spaces) min-number-of-leading-spaces)
|
|
||||||
(progn
|
|
||||||
(setq min-number-of-leading-spaces (ac-slim--line-leading-spaces))
|
|
||||||
(if (ac-slim--line-is-block-indicator)
|
|
||||||
(throw 'blk t))))))))))
|
|
||||||
|
|
||||||
(defun ac-slim-tag-prefix ()
|
|
||||||
(and (not (ac-slim-inside-ruby-code))
|
|
||||||
(not (ac-slim-inside-non-slim-block))
|
|
||||||
(save-match-data
|
|
||||||
(save-excursion
|
|
||||||
(re-search-backward "\\(^[\t ]*\\|:[\t ]*\\)\\([a-zA-Z]*\\)" nil t)
|
|
||||||
(match-beginning 2)))))
|
|
||||||
|
|
||||||
(defun ac-slim-attr-prefix ()
|
|
||||||
(and (not (ac-slim-inside-ruby-code))
|
|
||||||
(not (ac-slim-inside-non-slim-block))
|
|
||||||
(not (ac-slim-attrv-prefix))
|
|
||||||
(save-match-data
|
|
||||||
(save-excursion
|
|
||||||
(re-search-backward " \\(.*\\)" nil t)
|
|
||||||
(match-beginning 1)))))
|
|
||||||
|
|
||||||
(defun ac-slim-attrv-prefix ()
|
|
||||||
(and (not (ac-slim-inside-ruby-code))
|
|
||||||
(not (ac-slim-inside-non-slim-block))
|
|
||||||
(let (mb2 me2)
|
|
||||||
(save-excursion
|
|
||||||
(save-match-data
|
|
||||||
(if (re-search-backward
|
|
||||||
"\\w *= *[\"']\\([^\"']+[ ]\\|\\)\\([^\"']*\\)"
|
|
||||||
(line-beginning-position) t)
|
|
||||||
(progn
|
|
||||||
(setq mb2 (match-beginning 2))
|
|
||||||
(setq me2 (match-end 2))))))
|
|
||||||
(if (and mb2 (>= me2 (point)))
|
|
||||||
mb2))))
|
|
||||||
|
|
||||||
(defun ac-slim-class-prefix ()
|
|
||||||
(and (not (ac-slim-inside-ruby-code))
|
|
||||||
(not (ac-slim-inside-non-slim-block))
|
|
||||||
(save-match-data
|
|
||||||
(save-excursion
|
|
||||||
(re-search-backward "\\(^[\t ]*\\|:[\t ]*\\)\\([a-zA-Z0-9#.]*\\.\\)\\([a-zA-Z0-9]\\)" nil t)
|
|
||||||
(match-beginning 3)))))
|
|
||||||
|
|
||||||
(defun ac-slim-id-prefix ()
|
|
||||||
(and (not (ac-slim-inside-ruby-code))
|
|
||||||
(not (ac-slim-inside-non-slim-block))
|
|
||||||
(save-match-data
|
|
||||||
(save-excursion
|
|
||||||
(re-search-backward "\\(^[\t ]*\\|:[\t ]*\\)\\([a-zA-Z0-9.]*#\\)\\([a-zA-Z0-9]\\)" nil t)
|
|
||||||
(match-beginning 3)))))
|
|
||||||
|
|
||||||
(defun ac-slim-current-tag ()
|
|
||||||
"Return current slim tag user is typing on."
|
|
||||||
(let* ((line (buffer-substring-no-properties (line-beginning-position)
|
|
||||||
(line-end-position)))
|
|
||||||
(match-result (s-match "\\(^[\t ]*\\|:[\t ]*\\)\\(\\w+\\)" line)))
|
|
||||||
(if match-result
|
|
||||||
(nth 2 match-result)
|
|
||||||
"div")))
|
|
||||||
|
|
||||||
(defun ac-slim-current-attr ()
|
|
||||||
"Return current html tag's attribute user is typing on."
|
|
||||||
(save-excursion (re-search-backward "[^a-z-]\\([a-z-]+\\) *=" nil t))
|
|
||||||
(match-string 1))
|
|
||||||
|
|
||||||
(ac-html-define-ac-source "slim"
|
|
||||||
:tag-prefix ac-slim-tag-prefix
|
|
||||||
:attr-prefix ac-slim-attr-prefix
|
|
||||||
:attrv-prefix ac-slim-attrv-prefix
|
|
||||||
:class-prefix ac-slim-class-prefix
|
|
||||||
:id-prefix ac-slim-id-prefix
|
|
||||||
:current-tag-func ac-slim-current-tag
|
|
||||||
:current-attr-func ac-slim-current-attr)
|
|
||||||
|
|
||||||
(provide 'ac-slim)
|
|
||||||
;;; ac-slim.el ends here
|
|
Binary file not shown.
|
@ -1 +0,0 @@
|
||||||
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes
|
|
|
@ -1,15 +0,0 @@
|
||||||
download
|
|
||||||
href
|
|
||||||
media
|
|
||||||
ping
|
|
||||||
rel
|
|
||||||
target
|
|
||||||
datafld
|
|
||||||
datasrc
|
|
||||||
hreflang
|
|
||||||
methods
|
|
||||||
name
|
|
||||||
rev
|
|
||||||
shape
|
|
||||||
type
|
|
||||||
urn
|
|
|
@ -1,15 +0,0 @@
|
||||||
align
|
|
||||||
alt
|
|
||||||
archive
|
|
||||||
code
|
|
||||||
codebase
|
|
||||||
datafld
|
|
||||||
datasrc
|
|
||||||
height
|
|
||||||
hspace
|
|
||||||
mayscript
|
|
||||||
name
|
|
||||||
object
|
|
||||||
src
|
|
||||||
vspace
|
|
||||||
width
|
|
|
@ -1,10 +0,0 @@
|
||||||
alt
|
|
||||||
coords
|
|
||||||
download
|
|
||||||
href
|
|
||||||
hreflang
|
|
||||||
media
|
|
||||||
rel
|
|
||||||
shape
|
|
||||||
target
|
|
||||||
type
|
|
|
@ -1,11 +0,0 @@
|
||||||
autoplay
|
|
||||||
autobuffer
|
|
||||||
buffered
|
|
||||||
controls
|
|
||||||
loop
|
|
||||||
mosCurrentSampleOffset
|
|
||||||
muted
|
|
||||||
played
|
|
||||||
preload
|
|
||||||
src
|
|
||||||
volume
|
|
|
@ -1,2 +0,0 @@
|
||||||
href
|
|
||||||
target
|
|
|
@ -1,3 +0,0 @@
|
||||||
color
|
|
||||||
face
|
|
||||||
size
|
|
|
@ -1 +0,0 @@
|
||||||
dir
|
|
|
@ -1,4 +0,0 @@
|
||||||
balance
|
|
||||||
loop
|
|
||||||
src
|
|
||||||
volume
|
|
|
@ -1 +0,0 @@
|
||||||
cite
|
|
|
@ -1,18 +0,0 @@
|
||||||
onafterprint
|
|
||||||
onbeforeprint
|
|
||||||
onbeforeunload
|
|
||||||
onblur
|
|
||||||
onerror
|
|
||||||
onfocus
|
|
||||||
onhashchange
|
|
||||||
onlanguagechange
|
|
||||||
onload
|
|
||||||
onmessage
|
|
||||||
onoffline
|
|
||||||
ononline
|
|
||||||
onpopstate
|
|
||||||
onredo
|
|
||||||
onresize
|
|
||||||
onstorage
|
|
||||||
onundo
|
|
||||||
onunload
|
|
|
@ -1,12 +0,0 @@
|
||||||
autofocus
|
|
||||||
autocomplete
|
|
||||||
disabled
|
|
||||||
form
|
|
||||||
formaction
|
|
||||||
formenctype
|
|
||||||
formmethod
|
|
||||||
formnovalidate
|
|
||||||
formtarget
|
|
||||||
name
|
|
||||||
type
|
|
||||||
value
|
|
|
@ -1,3 +0,0 @@
|
||||||
height
|
|
||||||
moz-opaque
|
|
||||||
width
|
|
|
@ -1,2 +0,0 @@
|
||||||
bgcolor
|
|
||||||
span
|
|
|
@ -1,2 +0,0 @@
|
||||||
bgcolor
|
|
||||||
span
|
|
|
@ -1 +0,0 @@
|
||||||
value
|
|
|
@ -1 +0,0 @@
|
||||||
nowrap
|
|
|
@ -1,2 +0,0 @@
|
||||||
cite
|
|
||||||
datetime
|
|
|
@ -1 +0,0 @@
|
||||||
open
|
|
|
@ -1 +0,0 @@
|
||||||
open
|
|
|
@ -1 +0,0 @@
|
||||||
compact
|
|
|
@ -1,4 +0,0 @@
|
||||||
height
|
|
||||||
src
|
|
||||||
type
|
|
||||||
width
|
|
|
@ -1,3 +0,0 @@
|
||||||
disabled
|
|
||||||
form
|
|
||||||
name
|
|
|
@ -1,9 +0,0 @@
|
||||||
accept-charset
|
|
||||||
action
|
|
||||||
autocapitalize
|
|
||||||
autocomplete
|
|
||||||
enctype
|
|
||||||
method
|
|
||||||
name
|
|
||||||
novalidate
|
|
||||||
target
|
|
|
@ -1,7 +0,0 @@
|
||||||
src
|
|
||||||
name
|
|
||||||
noresize
|
|
||||||
scrolling
|
|
||||||
marginheight
|
|
||||||
marginwidth
|
|
||||||
frameborder
|
|
|
@ -1,2 +0,0 @@
|
||||||
cols
|
|
||||||
rows
|
|
|
@ -1,20 +0,0 @@
|
||||||
accesskey
|
|
||||||
class
|
|
||||||
contenteditable
|
|
||||||
contextmenu
|
|
||||||
data-
|
|
||||||
dir
|
|
||||||
draggable
|
|
||||||
dropzone
|
|
||||||
hidden
|
|
||||||
id
|
|
||||||
itemid
|
|
||||||
itemprop
|
|
||||||
itemref
|
|
||||||
itemscope
|
|
||||||
itemtype
|
|
||||||
lang
|
|
||||||
spellcheck
|
|
||||||
style
|
|
||||||
tabindex
|
|
||||||
title
|
|
|
@ -1 +0,0 @@
|
||||||
color
|
|
|
@ -1 +0,0 @@
|
||||||
manifest
|
|
|
@ -1,8 +0,0 @@
|
||||||
allowfullscreen
|
|
||||||
height
|
|
||||||
name
|
|
||||||
sandbox
|
|
||||||
seamless
|
|
||||||
src
|
|
||||||
srcdoc
|
|
||||||
width
|
|
|
@ -1,9 +0,0 @@
|
||||||
alt
|
|
||||||
crossorigin
|
|
||||||
height
|
|
||||||
ismap
|
|
||||||
src
|
|
||||||
sizes
|
|
||||||
srcset
|
|
||||||
width
|
|
||||||
usemap
|
|
|
@ -1,38 +0,0 @@
|
||||||
type
|
|
||||||
accept
|
|
||||||
autocapitalize
|
|
||||||
mozactionhint
|
|
||||||
autocomplete
|
|
||||||
autocorrect
|
|
||||||
autofocus
|
|
||||||
autosave
|
|
||||||
checked
|
|
||||||
disabled
|
|
||||||
form
|
|
||||||
formaction
|
|
||||||
formenctype
|
|
||||||
formmethod
|
|
||||||
formnovalidate
|
|
||||||
formtarget
|
|
||||||
height
|
|
||||||
incremental
|
|
||||||
inputmode
|
|
||||||
list
|
|
||||||
max
|
|
||||||
maxlength
|
|
||||||
min
|
|
||||||
minlength
|
|
||||||
multiple
|
|
||||||
name
|
|
||||||
pattern
|
|
||||||
placeholder
|
|
||||||
readonly
|
|
||||||
required
|
|
||||||
selectionDirection
|
|
||||||
size
|
|
||||||
spellcheck
|
|
||||||
src
|
|
||||||
step
|
|
||||||
value
|
|
||||||
width
|
|
||||||
x-moz-errormessage
|
|
|
@ -1,2 +0,0 @@
|
||||||
cite
|
|
||||||
datetime
|
|
|
@ -1,2 +0,0 @@
|
||||||
prompt
|
|
||||||
action
|
|
|
@ -1,6 +0,0 @@
|
||||||
autofocus
|
|
||||||
challenge
|
|
||||||
disabled
|
|
||||||
form
|
|
||||||
keytype
|
|
||||||
name
|
|
|
@ -1,3 +0,0 @@
|
||||||
accesskey
|
|
||||||
for
|
|
||||||
form
|
|
|
@ -1 +0,0 @@
|
||||||
value
|
|
|
@ -1,11 +0,0 @@
|
||||||
crossorigin
|
|
||||||
use-credentials
|
|
||||||
disabled
|
|
||||||
href
|
|
||||||
hreflang
|
|
||||||
media
|
|
||||||
methods
|
|
||||||
rel
|
|
||||||
sizes
|
|
||||||
target
|
|
||||||
type
|
|
|
@ -1 +0,0 @@
|
||||||
name
|
|
|
@ -1,16 +0,0 @@
|
||||||
behavior
|
|
||||||
bgcolor
|
|
||||||
direction
|
|
||||||
height
|
|
||||||
hspace
|
|
||||||
loop
|
|
||||||
scrollamount
|
|
||||||
scrolldelay
|
|
||||||
truespeed
|
|
||||||
vspace
|
|
||||||
width
|
|
||||||
onbounce
|
|
||||||
onfinish
|
|
||||||
onstart
|
|
||||||
start
|
|
||||||
stop
|
|
|
@ -1,2 +0,0 @@
|
||||||
label
|
|
||||||
type
|
|
|
@ -1,8 +0,0 @@
|
||||||
checked
|
|
||||||
command
|
|
||||||
default
|
|
||||||
disabled
|
|
||||||
icon
|
|
||||||
label
|
|
||||||
radiogroup
|
|
||||||
type
|
|
|
@ -1,5 +0,0 @@
|
||||||
name
|
|
||||||
charset
|
|
||||||
itemprop
|
|
||||||
http-equiv
|
|
||||||
content
|
|
|
@ -1,7 +0,0 @@
|
||||||
value
|
|
||||||
min
|
|
||||||
max
|
|
||||||
low
|
|
||||||
high
|
|
||||||
optimum
|
|
||||||
form
|
|
|
@ -1,8 +0,0 @@
|
||||||
data
|
|
||||||
form
|
|
||||||
height
|
|
||||||
name
|
|
||||||
type
|
|
||||||
typemustmatch
|
|
||||||
usemap
|
|
||||||
width
|
|
|
@ -1,4 +0,0 @@
|
||||||
compact
|
|
||||||
reversed
|
|
||||||
start
|
|
||||||
type
|
|
|
@ -1,2 +0,0 @@
|
||||||
disabled
|
|
||||||
label
|
|
|
@ -1,4 +0,0 @@
|
||||||
disabled
|
|
||||||
label
|
|
||||||
selected
|
|
||||||
value
|
|
|
@ -1,3 +0,0 @@
|
||||||
for
|
|
||||||
form
|
|
||||||
name
|
|
|
@ -1 +0,0 @@
|
||||||
name
|
|
|
@ -1,2 +0,0 @@
|
||||||
max
|
|
||||||
value
|
|
|
@ -1 +0,0 @@
|
||||||
cite
|
|
|
@ -1,5 +0,0 @@
|
||||||
async
|
|
||||||
src
|
|
||||||
type
|
|
||||||
defer
|
|
||||||
crossorigin
|
|
|
@ -1,7 +0,0 @@
|
||||||
autofocus
|
|
||||||
disabled
|
|
||||||
form
|
|
||||||
multiple
|
|
||||||
name
|
|
||||||
required
|
|
||||||
size
|
|
|
@ -1,5 +0,0 @@
|
||||||
sizes
|
|
||||||
src
|
|
||||||
srcset
|
|
||||||
type
|
|
||||||
media
|
|
|
@ -1,5 +0,0 @@
|
||||||
type
|
|
||||||
size
|
|
||||||
width
|
|
||||||
height
|
|
||||||
align
|
|
|
@ -1,5 +0,0 @@
|
||||||
type
|
|
||||||
media
|
|
||||||
scoped
|
|
||||||
title
|
|
||||||
disabled
|
|
|
@ -1,3 +0,0 @@
|
||||||
colspan
|
|
||||||
headers
|
|
||||||
rowspan
|
|
|
@ -1,18 +0,0 @@
|
||||||
autocapitalize
|
|
||||||
autocomplete
|
|
||||||
autofocus
|
|
||||||
cols
|
|
||||||
disabled
|
|
||||||
form
|
|
||||||
maxlength
|
|
||||||
minlength
|
|
||||||
name
|
|
||||||
placeholder
|
|
||||||
readonly
|
|
||||||
required
|
|
||||||
rows
|
|
||||||
selectionDirection
|
|
||||||
selectionEnd
|
|
||||||
selectionStart
|
|
||||||
spellcheck
|
|
||||||
wrap
|
|
|
@ -1,4 +0,0 @@
|
||||||
colspan
|
|
||||||
headers
|
|
||||||
rowspan
|
|
||||||
scope
|
|
|
@ -1 +0,0 @@
|
||||||
datetime
|
|
|
@ -1,5 +0,0 @@
|
||||||
default
|
|
||||||
kind
|
|
||||||
label
|
|
||||||
src
|
|
||||||
srclang
|
|
|
@ -1,12 +0,0 @@
|
||||||
autoplay
|
|
||||||
buffered
|
|
||||||
controls
|
|
||||||
crossorigin
|
|
||||||
height
|
|
||||||
loop
|
|
||||||
muted
|
|
||||||
played
|
|
||||||
preload
|
|
||||||
poster
|
|
||||||
src
|
|
||||||
width
|
|
|
@ -1,7 +0,0 @@
|
||||||
charset [Obsolete since HTML5]
|
|
||||||
|
|
||||||
This attribute defines the character encoding of the linked resource. The value is a space- and/or comma-delimited list of character sets as defined in RFC 2045. The default value is ISO-8859-1.
|
|
||||||
|
|
||||||
Usage note:
|
|
||||||
|
|
||||||
This attribute is obsolete in HTML5 and should not be used by authors. To achieve its effect, use the HTTP Content-Type header on the linked resource.
|
|
|
@ -1,3 +0,0 @@
|
||||||
coords [HTML4 only] [Obsolete since HTML5]
|
|
||||||
|
|
||||||
For use with object shapes, this attribute uses a comma-separated list of numbers to define the coordinates of the object on the page.
|
|
|
@ -1,10 +0,0 @@
|
||||||
download [HTML5]
|
|
||||||
|
|
||||||
This attribute, if present, indicates that the author intends the hyperlink to be used for downloading a resource so that when the user clicks on the link they will be prompted to save it as a local file. If the attribute has a value, the value will be used as the pre-filled file name in the Save prompt that opens when the user clicks on the link (the user can change the name before actually saving the file of course). There are no restrictions on allowed values (though / and \ will be converted to underscores, preventing specific path hints), but you should consider that most file systems have limitations with regard to what punctuation is supported in file names, and browsers are likely to adjust file names accordingly.
|
|
||||||
|
|
||||||
Note:
|
|
||||||
|
|
||||||
Can be used with blob: URLs and data: URLs, to make it easy for users to download content that is generated programmatically using JavaScript (e.g. a picture created using an online drawing Web app).
|
|
||||||
If the HTTP header Content-Disposition: is present and gives a different filename than this attribute, the HTTP header has priority over this attribute.
|
|
||||||
If this attribute is present and Content-Disposition: is set to inline, Firefox gives priority to Content-Disposition, like for the filename case, while Chrome gives priority to the download attribute.
|
|
||||||
In Firefox 20 this attribute is only honored for links to resources with the same-origin.
|
|
|
@ -1,5 +0,0 @@
|
||||||
This was the single required attribute for anchors defining a hypertext source link, but is no longer required in HTML5. Omitting this attribute creates a placeholder link. The href attribute indicates the link target, either a URL or a URL fragment. A URL fragment is a name preceded by a hash mark (#), which specifies an internal target location (an ID) within the current document. URLs are not restricted to Web (HTTP)-based documents. URLs might use any protocol supported by the browser. For example, file, ftp, and mailto work in most user agents.
|
|
||||||
|
|
||||||
Note:
|
|
||||||
|
|
||||||
You can use the special fragment "top" to create a link back to the top of the page; for example <a href="#top">Return to top</a>. This behavior is specified by HTML5.
|
|
|
@ -1,3 +0,0 @@
|
||||||
hreflang
|
|
||||||
|
|
||||||
This attribute indicates the language of the linked resource. It is purely advisory. Allowed values are determined by BCP47 for HTML5 and by RFC1766 for HTML4. Use this attribute only if the href attribute is present.
|
|
|
@ -1,8 +0,0 @@
|
||||||
media [html5]
|
|
||||||
|
|
||||||
This attribute specifies the media which the linked resource applies to. Its value must be a media query. This attribute is mainly useful when linking to external stylesheets by allowing the user agent to pick the best adapted one for the device it runs on.
|
|
||||||
|
|
||||||
Usage note:
|
|
||||||
|
|
||||||
In HTML 4, only simple white-space-separated list of media description literals, i.e. media types and groups, where defined and allowed as values for this attribute, like print, screen, aural, braille, ... HTML 5 extended this to any kind of media queries, which are a superset of the allowed values of HTML 4.
|
|
||||||
Browsers not supporting the CSS3 Media Queries won't necessarily recognize the adequate link; do not forget to set fallback links, the restricted set of media queries defined in HTML 4.
|
|
|
@ -1,3 +0,0 @@
|
||||||
methods [!]
|
|
||||||
|
|
||||||
The value of this attribute provides information about the functions that might be performed on an object. The values generally are given by the HTTP protocol when it is used, but it might (for similar reasons as for the title attribute) be useful to include advisory information in advance in the link. For example, the browser might choose a different rendering of a link as a function of the methods specified; something that is searchable might get a different icon, or an outside link might render with an indication of leaving the current site. This attribute is not well understood nor supported, even by the defining browser, Internet Explorer 4. Methods Property (MSDN)
|
|
|
@ -1,7 +0,0 @@
|
||||||
name [HTML4 only] [Obsolete since HTML5]
|
|
||||||
|
|
||||||
This attribute is required in an anchor defining a target location within a page. A value for name is similar to a value for the id core attribute and should be an alphanumeric identifier unique to the document. Under the HTML 4.01 specification, id and name both can be used with the <a> element as long as they have identical values.
|
|
||||||
|
|
||||||
Usage note:
|
|
||||||
|
|
||||||
This attribute is obsolete in HTML5, use global attribute id instead.
|
|
|
@ -1,3 +0,0 @@
|
||||||
ping [html5]
|
|
||||||
|
|
||||||
The 'ping' attribute, if present, sends the URLs of the resources a notification/ping if the user follows the hyperlink.
|
|
|
@ -1,3 +0,0 @@
|
||||||
rel
|
|
||||||
|
|
||||||
For anchors containing the href attribute, this attribute specifies the relationship of the target object to the link object. The value is a comma-separated list of link types values. The values and their semantics will be registered by some authority that might have meaning to the document author. The default relationship, if no other is given, is void. Use this attribute only if the href attribute is present.
|
|
|
@ -1,3 +0,0 @@
|
||||||
rev [HTML4 only] [Obsolete since HTML5]
|
|
||||||
|
|
||||||
This attribute specifies a reverse link, the inverse relationship of the rel attribute. It is useful for indicating where an object came from, such as the author of a document.
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue