First commit.

This commit is contained in:
kj 2020-08-02 01:57:21 -04:00
commit d40eb4bc36
3413 changed files with 133841 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
ac-comphist.dat
.mc-lists.el
auto-save-list/*

18
elpa/0blayout-readme.txt Normal file
View File

@ -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.

View File

@ -0,0 +1,52 @@
;;; ac-emmet-autoloads.el --- automatically extracted autoloads
;;
;;; Code:
(add-to-list 'load-path (directory-file-name
(or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "ac-emmet" "ac-emmet.el" (0 0 0 0))
;;; Generated autoloads from ac-emmet.el
(defface ac-emmet-candidate-face '((t (:inherit ac-candidate-face))) "\
Face for emmet candidates." :group (quote auto-complete))
(defface ac-emmet-selection-face '((t (:inherit ac-selection-face))) "\
Face for the emmet selected candidate." :group (quote auto-complete))
(defconst ac-emmet-source-defaults '((candidate-face . ac-emmet-candidate-face) (selection-face . ac-emmet-selection-face) (symbol . "a") (requires . 1) (action lambda nil (call-interactively 'emmet-expand-line))) "\
Defaults common to the various completion sources.")
(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.")
(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.")
(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 'ac-emmet-html-setup "ac-emmet" "\
Add the emmet-mode's html completion source to the front of `ac-sources'.
This affects only the current buffer.
\(fn)" t nil)
(autoload 'ac-emmet-css-setup "ac-emmet" "\
Add the emmet-mode's css completion source to the front of `ac-sources'.
This affects only the current buffer.
\(fn)" t nil)
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "ac-emmet" '("ac-emmet-")))
;;;***
;; Local Variables:
;; version-control: never
;; no-byte-compile: t
;; no-update-autoloads: t
;; coding: utf-8
;; End:
;;; ac-emmet-autoloads.el ends here

View File

@ -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")

View File

@ -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.

1
elpa/ac-emmet-readme.txt Normal file
View File

@ -0,0 +1 @@
Provides auto-complete sources for emmet-mode.

View File

@ -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.

View File

@ -0,0 +1,90 @@
;;; 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

View File

@ -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.

View File

@ -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

View File

@ -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:

View File

@ -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)

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -0,0 +1 @@
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes

View File

@ -0,0 +1,15 @@
download
href
media
ping
rel
target
datafld
datasrc
hreflang
methods
name
rev
shape
type
urn

View File

@ -0,0 +1,15 @@
align
alt
archive
code
codebase
datafld
datasrc
height
hspace
mayscript
name
object
src
vspace
width

View File

@ -0,0 +1,10 @@
alt
coords
download
href
hreflang
media
rel
shape
target
type

View File

@ -0,0 +1,11 @@
autoplay
autobuffer
buffered
controls
loop
mosCurrentSampleOffset
muted
played
preload
src
volume

View File

@ -0,0 +1,2 @@
href
target

View File

@ -0,0 +1,3 @@
color
face
size

View File

@ -0,0 +1 @@
dir

View File

@ -0,0 +1,4 @@
balance
loop
src
volume

View File

@ -0,0 +1,18 @@
onafterprint
onbeforeprint
onbeforeunload
onblur
onerror
onfocus
onhashchange
onlanguagechange
onload
onmessage
onoffline
ononline
onpopstate
onredo
onresize
onstorage
onundo
onunload

View File

@ -0,0 +1,12 @@
autofocus
autocomplete
disabled
form
formaction
formenctype
formmethod
formnovalidate
formtarget
name
type
value

View File

@ -0,0 +1,3 @@
height
moz-opaque
width

View File

@ -0,0 +1,2 @@
bgcolor
span

View File

@ -0,0 +1,2 @@
bgcolor
span

View File

@ -0,0 +1 @@
value

View File

@ -0,0 +1 @@
nowrap

View File

@ -0,0 +1,2 @@
cite
datetime

View File

@ -0,0 +1 @@
compact

View File

@ -0,0 +1,4 @@
height
src
type
width

View File

@ -0,0 +1,3 @@
disabled
form
name

View File

@ -0,0 +1,9 @@
accept-charset
action
autocapitalize
autocomplete
enctype
method
name
novalidate
target

View File

@ -0,0 +1,7 @@
src
name
noresize
scrolling
marginheight
marginwidth
frameborder

View File

@ -0,0 +1,2 @@
cols
rows

View File

@ -0,0 +1,20 @@
accesskey
class
contenteditable
contextmenu
data-
dir
draggable
dropzone
hidden
id
itemid
itemprop
itemref
itemscope
itemtype
lang
spellcheck
style
tabindex
title

View File

@ -0,0 +1 @@
color

View File

@ -0,0 +1 @@
manifest

View File

@ -0,0 +1,8 @@
allowfullscreen
height
name
sandbox
seamless
src
srcdoc
width

View File

@ -0,0 +1,9 @@
alt
crossorigin
height
ismap
src
sizes
srcset
width
usemap

View File

@ -0,0 +1,38 @@
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

View File

@ -0,0 +1,2 @@
cite
datetime

View File

@ -0,0 +1,2 @@
prompt
action

View File

@ -0,0 +1,6 @@
autofocus
challenge
disabled
form
keytype
name

View File

@ -0,0 +1,3 @@
accesskey
for
form

View File

@ -0,0 +1 @@
value

View File

@ -0,0 +1,11 @@
crossorigin
use-credentials
disabled
href
hreflang
media
methods
rel
sizes
target
type

View File

@ -0,0 +1 @@
name

View File

@ -0,0 +1,16 @@
behavior
bgcolor
direction
height
hspace
loop
scrollamount
scrolldelay
truespeed
vspace
width
onbounce
onfinish
onstart
start
stop

View File

@ -0,0 +1,2 @@
label
type

View File

@ -0,0 +1,8 @@
checked
command
default
disabled
icon
label
radiogroup
type

View File

@ -0,0 +1,5 @@
name
charset
itemprop
http-equiv
content

View File

@ -0,0 +1,7 @@
value
min
max
low
high
optimum
form

View File

@ -0,0 +1,8 @@
data
form
height
name
type
typemustmatch
usemap
width

View File

@ -0,0 +1,4 @@
compact
reversed
start
type

View File

@ -0,0 +1,2 @@
disabled
label

View File

@ -0,0 +1,4 @@
disabled
label
selected
value

View File

@ -0,0 +1,3 @@
for
form
name

View File

@ -0,0 +1,2 @@
max
value

View File

@ -0,0 +1 @@
cite

View File

@ -0,0 +1,5 @@
async
src
type
defer
crossorigin

View File

@ -0,0 +1,7 @@
autofocus
disabled
form
multiple
name
required
size

View File

@ -0,0 +1,5 @@
sizes
src
srcset
type
media

View File

@ -0,0 +1,5 @@
type
size
width
height
align

View File

@ -0,0 +1,5 @@
type
media
scoped
title
disabled

View File

@ -0,0 +1,3 @@
colspan
headers
rowspan

View File

@ -0,0 +1,18 @@
autocapitalize
autocomplete
autofocus
cols
disabled
form
maxlength
minlength
name
placeholder
readonly
required
rows
selectionDirection
selectionEnd
selectionStart
spellcheck
wrap

View File

@ -0,0 +1,4 @@
colspan
headers
rowspan
scope

View File

@ -0,0 +1 @@
datetime

View File

@ -0,0 +1,5 @@
default
kind
label
src
srclang

View File

@ -0,0 +1,12 @@
autoplay
buffered
controls
crossorigin
height
loop
muted
played
preload
poster
src
width

View File

@ -0,0 +1,7 @@
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.

View File

@ -0,0 +1,3 @@
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.

View File

@ -0,0 +1,10 @@
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.

View File

@ -0,0 +1,5 @@
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.

Some files were not shown because too many files have changed in this diff Show More