commit
d40eb4bc36
3413 changed files with 133841 additions and 0 deletions
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
ac-comphist.dat |
||||
.mc-lists.el |
||||
auto-save-list/* |
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
This global minor mode provides a simple way to switch between layouts and |
||||
the buffers you left open before you switched (unless you closed it). |
||||
|
||||
It doesn't require any setup at all more than: |
||||
(0blayout-mode) |
||||
|
||||
When you start Emacs with 0blayout loaded, you will have a default layout |
||||
named "default", and then you can create new layouts (<prefix> C-c), switch |
||||
layouts (<prefix> C-b), and kill the current layout (<prefix> C-k). |
||||
The default <prefix> is (C-c C-l), but you can change it using: |
||||
(0blayout-add-keybindings-with-prefix "<your prefix>") |
||||
|
||||
You can also customize-variable to change the name of the default session. |
||||
|
||||
The project is hosted at https://github.com/etu/0blayout |
||||
There you can leave bug-reports and suggestions. |
||||
|
||||
Another comparable mode is eyebrowse which have been developed for longer. |
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
;;; -*- no-byte-compile: t -*- |
||||
(define-package "ac-emmet" "20131015.1558" "auto-complete sources for emmet-mode's snippets" '((emmet-mode "1.0.2") (auto-complete "1.4")) :commit "88f24876ee3b759978d4614a758280b5d512d543" :keywords '("completion" "convenience" "emmet") :authors '(("Yasuyuki Oka" . "yasuyk@gmail.com")) :maintainer '("Yasuyuki Oka" . "yasuyk@gmail.com") :url "https://github.com/yasuyk/ac-emmet") |
@ -0,0 +1,131 @@
@@ -0,0 +1,131 @@
|
||||
;;; ac-emmet.el --- auto-complete sources for emmet-mode's snippets |
||||
|
||||
;; Copyright (C) 2013 Yasuyuki Oka <yasuyk@gmail.com> |
||||
|
||||
;; Author: Yasuyuki Oka <yasuyk@gmail.com> |
||||
;; Version: DEV |
||||
;; Package-Version: 20131015.1558 |
||||
;; Package-Commit: 88f24876ee3b759978d4614a758280b5d512d543 |
||||
;; URL: https://github.com/yasuyk/ac-emmet |
||||
;; Package-Requires: ((emmet-mode "1.0.2") (auto-complete "1.4")) |
||||
;; Keywords: completion, convenience, emmet |
||||
|
||||
;; 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: |
||||
|
||||
;; Provides auto-complete sources for emmet-mode. |
||||
|
||||
;;; Usage: |
||||
|
||||
;; (require 'ac-emmet) ;; Not necessary if using ELPA package |
||||
;; (add-hook 'sgml-mode-hook 'ac-emmet-html-setup) |
||||
;; (add-hook 'css-mode-hook 'ac-emmet-css-setup) |
||||
|
||||
;;; Code: |
||||
|
||||
(require 'auto-complete) |
||||
(require 'emmet-mode) |
||||
|
||||
;;;###autoload |
||||
(defface ac-emmet-candidate-face |
||||
'((t (:inherit ac-candidate-face))) |
||||
"Face for emmet candidates." |
||||
:group 'auto-complete) |
||||
|
||||
;;;###autoload |
||||
(defface ac-emmet-selection-face |
||||
'((t (:inherit ac-selection-face))) |
||||
"Face for the emmet selected candidate." |
||||
:group 'auto-complete) |
||||
|
||||
(defvar ac-emmet-html-snippets-hash |
||||
(gethash "snippets" (gethash "html" emmet-snippets))) |
||||
|
||||
(defvar ac-emmet-html-snippets-keys |
||||
(loop for k being hash-key in ac-emmet-html-snippets-hash collect k)) |
||||
|
||||
(defvar ac-emmet-html-aliases-hash |
||||
(gethash "aliases" (gethash "html" emmet-snippets))) |
||||
|
||||
(defvar ac-emmet-html-aliases-keys |
||||
(loop for k being hash-key in ac-emmet-html-aliases-hash collect k)) |
||||
|
||||
(defvar ac-emmet-css-snippets-hash |
||||
(gethash "snippets" (gethash "css" emmet-snippets))) |
||||
|
||||
(defvar ac-emmet-css-snippets-keys |
||||
(loop for k being hash-key in ac-emmet-css-snippets-hash collect k)) |
||||
|
||||
(defun ac-emmet-document (candidate hash) |
||||
(let ((snippet (gethash candidate hash))) |
||||
(if (functionp snippet) |
||||
(funcall snippet "") |
||||
snippet))) |
||||
|
||||
;;;###autoload |
||||
(defconst ac-emmet-source-defaults |
||||
'((candidate-face . ac-emmet-candidate-face) |
||||
(selection-face . ac-emmet-selection-face) |
||||
(symbol . "a") |
||||
(requires . 1) |
||||
(action . (lambda () (call-interactively 'emmet-expand-line)))) |
||||
"Defaults common to the various completion sources.") |
||||
|
||||
;;;###autoload |
||||
(defvar ac-source-emmet-html-snippets |
||||
(append |
||||
'((candidates . ac-emmet-html-snippets-keys) |
||||
(document . (lambda (s) (ac-emmet-document s ac-emmet-html-snippets-hash)))) |
||||
ac-emmet-source-defaults) |
||||
"Auto-complete source for emmet-mode's html snippet completion.") |
||||
|
||||
;;;###autoload |
||||
(defvar ac-source-emmet-html-aliases |
||||
(append |
||||
'((candidates . ac-emmet-html-aliases-keys) |
||||
(document . (lambda (s) (ac-emmet-document s ac-emmet-html-aliases-hash)))) |
||||
ac-emmet-source-defaults) |
||||
"Auto-complete source for emmet-mode's html alias completion.") |
||||
|
||||
;;;###autoload |
||||
(defvar ac-source-emmet-css-snippets |
||||
(append |
||||
'((candidates . ac-emmet-css-snippets-keys) |
||||
(document . (lambda (s) (ac-emmet-document s ac-emmet-css-snippets-hash)))) |
||||
ac-emmet-source-defaults) |
||||
"Auto-complete source for emmet-mode's css snippet completion.") |
||||
|
||||
;;;###autoload |
||||
(defun ac-emmet-html-setup () |
||||
"Add the emmet-mode's html completion source to the front of `ac-sources'. |
||||
This affects only the current buffer." |
||||
(interactive) |
||||
(add-to-list 'ac-sources 'ac-source-emmet-html-snippets) |
||||
(add-to-list 'ac-sources 'ac-source-emmet-html-aliases)) |
||||
|
||||
;;;###autoload |
||||
(defun ac-emmet-css-setup () |
||||
"Add the emmet-mode's css completion source to the front of `ac-sources'. |
||||
This affects only the current buffer." |
||||
(interactive) |
||||
(add-to-list 'ac-sources 'ac-source-emmet-css-snippets)) |
||||
|
||||
(provide 'ac-emmet) |
||||
|
||||
;; Local Variables: |
||||
;; coding: utf-8 |
||||
;; End: |
||||
|
||||
;;; ac-emmet.el ends here |
Binary file not shown.
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
Provides auto-complete sources for emmet-mode. |
@ -0,0 +1,103 @@
@@ -0,0 +1,103 @@
|
||||
;;; 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.
@ -0,0 +1,263 @@
@@ -0,0 +1,263 @@
|
||||
;;; 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.
@ -0,0 +1,139 @@
@@ -0,0 +1,139 @@
|
||||
(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.
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
(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: |
@ -0,0 +1,17 @@
@@ -0,0 +1,17 @@
|
||||
(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.
@ -0,0 +1,89 @@
@@ -0,0 +1,89 @@
|
||||
;;; 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.
@ -0,0 +1,52 @@
@@ -0,0 +1,52 @@
|
||||
;;; 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.
@ -0,0 +1,154 @@
@@ -0,0 +1,154 @@
|
||||
;;; 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.
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
download |
||||
href |
||||
media |
||||
ping |
||||
rel |
||||
target |
||||
datafld |
||||
datasrc |
||||
hreflang |
||||
methods |
||||
name |
||||
rev |
||||
shape |
||||
type |
||||
urn |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
align |
||||
alt |
||||
archive |
||||
code |
||||
codebase |
||||
datafld |
||||
datasrc |
||||
height |
||||
hspace |
||||
mayscript |
||||
name |
||||
object |
||||
src |
||||
vspace |
||||
width |
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
alt |
||||
coords |
||||
download |
||||
href |
||||
hreflang |
||||
media |
||||
rel |
||||
shape |
||||
target |
||||
type |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
autoplay |
||||
autobuffer |
||||
buffered |
||||
controls |
||||
loop |
||||
mosCurrentSampleOffset |
||||
muted |
||||
played |
||||
preload |
||||
src |
||||
volume |
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
href |
||||
target |
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
color |
||||
face |
||||
size |
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
dir |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
balance |
||||
loop |
||||
src |
||||
volume |
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
cite |
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
onafterprint |
||||
onbeforeprint |
||||
onbeforeunload |
||||
onblur |
||||
onerror |
||||
onfocus |
||||
onhashchange |
||||
onlanguagechange |
||||
onload |
||||
onmessage |
||||
onoffline |
||||
ononline |
||||
onpopstate |
||||
onredo |
||||
onresize |
||||
onstorage |
||||
onundo |
||||
onunload |
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
autofocus |
||||
autocomplete |
||||
disabled |
||||
form |
||||
formaction |
||||
formenctype |
||||
formmethod |
||||
formnovalidate |
||||
formtarget |
||||
name |
||||
type |
||||
value |
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
height |
||||
moz-opaque |
||||
width |
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
bgcolor |
||||
span |
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
bgcolor |
||||
span |
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
value |
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
nowrap |
@ -0,0 +1,2 @@
@@ -0,0 +1,2 @@
|
||||
cite |
||||
datetime |
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
open |
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
open |
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
compact |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
height |
||||
src |
||||
type |
||||
width |