commit af1e68a7bcbc3a3f97cb033c964b8de056664e8b Author: Buddy Sandidge Date: Sat Jun 27 19:01:39 2015 -0700 Squashed 'vim/bundle/yajs/' content from commit 39deffbae git-subtree-dir: vim/bundle/yajs git-subtree-split: 39deffbaef29e40d8c3a9f2c73d64843a4864b2a diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/CHANGES.markdown b/CHANGES.markdown new file mode 100644 index 0000000..9b9f1fc --- /dev/null +++ b/CHANGES.markdown @@ -0,0 +1,62 @@ +CHANGE LOG +========== + +### Version 1.3 +- Add ServiceWorker +- Some code refactor +- Lots of bug fix + - Nesting block + - Multiline template string + - Negative integer + - Syntax not load second time + - Comment in object literal + - Reserved word not in all string type + + +### Version 1.2 + +- Embed JS in html/erb/haml +- fetch +- sendBeacon +- Improve init performance + +### Version 1.1.1 + +- Function brace in new line +- Web Crypto + +### Version 1.1 + +- JSDoc 3 +- ECMA-402: Intl +- async, await +- Event name +- String bugs fix +- Minor bug fix + +### Version 1.0 + +- New name +- Refactor Web API and DOM +- Remove old definitions +- Supports partial ES6 +- Work with js lib syntax + +### Version 0.9 + +- Add HTML interfaces +- Add CustomEvent +- Add custom element api + +### Version 0.8 + +- Use javascript as group name prefix, which makes SyntaxComplete can work for JavaScript +- Better support for JSDoc +- Support [closure compiler JSDoc annotation](https://developers.google.com/closure/compiler/docs/js-for-compiler) +- Support [Typed Array](http://www.khronos.org/registry/typedarray/specs/latest/) and [File API](http://www.w3.org/TR/FileAPI/) + +License +------- + +The same as Vim + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e8187cb --- /dev/null +++ b/Makefile @@ -0,0 +1,364 @@ +# vim:filetype=make:foldmethod=marker:fdl=0: +# +# Makefile: install/uninstall/link vim plugin files. +# Author: Cornelius +# Date: δΈ€ 3/15 22:49:26 2010 +# Version: 1.0 +# +# PLEASE DO NOT EDIT THIS FILE. THIS FILE IS AUTO-GENERATED FROM Makefile.tpl +# LICENSE {{{ +# Copyright (c) 2010 +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# }}} +# VIM RECORD FORMAT: {{{ +# { +# version => 0.2, # record spec version +# generated_by => 'Vimana-' . $Vimana::VERSION, +# install_type => 'auto', # auto , make , rake ... etc +# package => $self->package_name, +# files => \@e, +# } +# }}} + +# INTERNAL VARIABLES {{{ + +RECORD_FILE=.record +PWD=`pwd` +README_FILES=`ls -1 | grep -i readme` +WGET_OPT=-c -nv +CURL_OPT= +RECORD_SCRIPT=.mkrecord +TAR=tar czvf + +GIT_SOURCES= + +# INTERNAL FUNCTIONS {{{ +record_file = \ + PTYPE=`cat $(1) | perl -nle 'print $$1 if /^"\s*script\s*type:\s*(\S*)$$/i'` ;\ + echo $(VIMRUNTIME)/$$PTYPE/$(1) >> $(2) + +# }}} + +# PUBLIC FUNCTIONS {{{ + +GIT_SOURCES= +DEPEND_DIR=/tmp/vim-deps + +# Usage: +# +# $(call install_git_sources) +# + +install_git_source = \ + PWD=$(PWD) ; \ + mkdir -p $(DEPEND_DIR) ; \ + cd $(DEPEND_DIR) ; \ + for git_uri in $(GIT_SOURCES) ; do \ + OUTDIR=$$(echo $$git_uri | perl -pe 's{^.*/}{}') ;\ + echo $$OUTDIR ; \ + if [[ -e $$OUTDIR ]] ; then \ + cd $$OUTDIR ; \ + git pull origin master && \ + make install && cd .. ; \ + else \ + git clone $$git_uri $$OUTDIR && \ + cd $$OUTDIR && \ + make install && cd .. ; \ + fi; \ + done ; + + + + +# install file by inspecting content +install_file = \ + PTYPE=`cat $(1) | perl -nle 'print $$1 if /^"\s*script\s*type:\s*(\S*)$$/i'` ;\ + cp -v $(1) $(VIMRUNTIME)/$$PTYPE/$(1) + +link_file = \ + PTYPE=`cat $(1) | perl -nle 'print $$1 if /^"\s*script\s*type:\s*(\S*)$$/i'` ;\ + cp -v $(1) $(VIMRUNTIME)/$$PTYPE/$(1) + +unlink_file = \ + PTYPE=`cat $(1) | perl -nle 'print $$1 if /^"\s*script\s*type:\s*(\S*)$$/i'` ;\ + rm -fv $(VIMRUNTIME)/$$PTYPE/$(1) + +# fetch script from an url +fetch_url = \ + @if [[ -e $(2) ]] ; then \ + exit \ + ; fi \ + ; echo " => $(2)" \ + ; if [[ ! -z `which curl` ]] ; then \ + curl $(CURL_OPT) $(1) -o $(2) ; \ + ; elif [[ ! -z `which wget` ]] ; then \ + wget $(WGET_OPT) $(1) -O $(2) \ + ; fi \ + ; echo $(2) >> .bundlefiles + + +install_source = \ + for git_uri in $(GIT_SOURCES) ; do \ + OUTDIR=$$(echo $$git_uri | perl -pe 's{^.*/}{}') ;\ + echo $$OUTDIR ; \ + done + +# fetch script from github +fetch_github = \ + @if [[ -e $(5) ]] ; then \ + exit \ + ; fi \ + ; echo " => $(5)" \ + ; if [[ ! -z `which curl` ]] ; then \ + curl $(CURL_OPT) http://github.com/$(1)/$(2)/raw/$(3)/$(4) -o $(5) \ + ; elif [[ ! -z `which wget` ]] ; then \ + wget $(WGET_OPT) http://github.com/$(1)/$(2)/raw/$(3)/$(4) -O $(5) \ + ; fi \ + ; echo $(5) >> .bundlefiles + +# fetch script from local file +fetch_local = @cp -v $(1) $(2) \ + ; @echo $(2) >> .bundlefiles + +# 1: NAME , 2: URI +dep_from_git = \ + D=/tmp/$(1)-$$RANDOM ; git clone $(2) $$D ; cd $$D ; make install ; + +dep_from_svn = \ + D=/tmp/$(1)-$$RANDOM ; svn checkout $(2) $$D ; cd $$D ; make install ; + +# }}} +# }}} +# ======= DEFAULT CONFIG ======= {{{ + +# Default plugin name +NAME=`basename \`pwd\`` +VERSION=0.1 + +# Files to add to tarball: +DIRS=`ls -1F | grep / | sed -e 's/\///'` + +# Runtime path to install: +VIMRUNTIME=~/.vim + +# Other Files to be added: +FILES=`ls -1 | grep '.vim$$'` +MKFILES=Makefile `ls -1 | grep '.mk$$'` + +# ======== USER CONFIG ======= {{{ +# please write config in config.mk +# this will override default config +# +# Custom Name: +# +# NAME=[plugin name] +# +# Custom dir list: +# +# DIRS=autoload after doc syntax plugin +# +# Files to add to tarball: +# +# FILES= +# +# Bundle dependent scripts: +# +# bundle-deps: +# $(call fetch_github,[account id],[project],[branch],[source path],[target path]) +# $(call fetch_url,[file url],[target path]) +# $(call fetch_local,[from],[to]) + +SHELL=bash + +CONFIG_FILE=config.mk +-include ~/.vimauthor.mk +-include $(CONFIG_FILE) + +# }}} +# }}} +# ======= SECTIONS ======= {{{ +-include ext.mk + +all: install-deps install + +install-deps: + # check required binaries + [[ -n $$(which git) ]] + [[ -n $$(which bash) ]] + [[ -n $$(which vim) ]] + [[ -n $$(which wget) || -n $$(which curl) ]] + $(call install_git_sources) + +check-require: + @if [[ -n `which wget` || -n `which curl` || -n `which fetch` ]]; then echo "wget|curl|fetch: OK" ; else echo "wget|curl|fetch: NOT OK" ; fi + @if [[ -n `which vim` ]] ; then echo "vim: OK" ; else echo "vim: NOT OK" ; fi + +config: + @rm -f $(CONFIG_FILE) + @echo "NAME=" >> $(CONFIG_FILE) + @echo "VERSION=" >> $(CONFIG_FILE) + @echo "#DIRS=" + @echo "#FILES=" + @echo "" >> $(CONFIG_FILE) + @echo "bundle-deps:" >> $(CONFIG_FILE) + @echo " \$$(call fetch_github,ID,REPOSITORY,BRANCH,PATH,TARGET_PATH)" >> $(CONFIG_FILE) + @echo " \$$(call fetch_url,FILE_URL,TARGET_PATH)" >> $(CONFIG_FILE) + + +init-author: + @echo "AUTHOR=" > ~/.vimauthor.mk + +bundle-deps: + +bundle: bundle-deps + +dist: bundle mkfilelist + @$(TAR) $(NAME)-$(VERSION).tar.gz --exclude '*.svn' --exclude '.git' $(DIRS) $(README_FILES) $(FILES) $(MKFILES) + @echo "$(NAME)-$(VERSION).tar.gz is ready." + +init-runtime: + @mkdir -vp $(VIMRUNTIME) + @mkdir -vp $(VIMRUNTIME)/record + @if [[ -n "$(DIRS)" ]] ; then find $(DIRS) -type d | while read dir ; do \ + mkdir -vp $(VIMRUNTIME)/$$dir ; done ; fi + +release: + if [[ -n `which vimup` ]] ; then \ + fi + +pure-install: + @echo "Using Shell:" $(SHELL) + @echo "Installing" + @if [[ -n "$(DIRS)" ]] ; then find $(DIRS) -type f | while read file ; do \ + cp -v $$file $(VIMRUNTIME)/$$file ; done ; fi + @echo "$(FILES)" | while read vimfile ; do \ + if [[ -n $$vimfile ]] ; then \ + $(call install_file,$$vimfile) ; fi ; done + +install: init-runtime bundle pure-install record + + +uninstall-files: + @echo "Uninstalling" + @if [[ -n "$(DIRS)" ]] ; then find $(DIRS) -type f | while read file ; do \ + rm -fv $(VIMRUNTIME)/$$file ; done ; fi + @echo "$(FILES)" | while read vimfile ; do \ + if [[ -n $$vimfile ]] ; then \ + $(call unlink_file,$$vimfile) ; fi ; done + +uninstall: uninstall-files rmrecord + +link: init-runtime + @echo "Linking" + @if [[ -n "$(DIRS)" ]]; then find $(DIRS) -type f | while read file ; do \ + ln -sfv $(PWD)/$$file $(VIMRUNTIME)/$$file ; done ; fi + @echo "$(FILES)" | while read vimfile ; do \ + if [[ -n $$vimfile ]] ; then \ + $(call link_file,$$vimfile) ; fi ; done + +mkfilelist: + @echo $(NAME) > $(RECORD_FILE) + @echo $(VERSION) >> $(RECORD_FILE) + @if [[ -n "$(DIRS)" ]] ; then find $(DIRS) -type f | while read file ; do \ + echo $(VIMRUNTIME)/$$file >> $(RECORD_FILE) ; done ; fi + @echo "$(FILES)" | while read vimfile ; do \ + if [[ -n $$vimfile ]] ; then \ + $(call record_file,$$vimfile,$(RECORD_FILE)) ; fi ; done + +vimball-edit: + find $(DIRS) -type f > .tmp_list + vim .tmp_list + vim .tmp_list -c ":%MkVimball $(NAME)-$(VERSION) ." -c "q" + @rm -vf .tmp_list + @echo "$(NAME)-$(VERSION).vba is ready." + +vimball: + find $(DIRS) -type f > .tmp_list + vim .tmp_list -c ":%MkVimball $(NAME)-$(VERSION) ." -c "q" + @rm -vf .tmp_list + @echo "$(NAME)-$(VERSION).vba is ready." + +mkrecordscript: + @echo "" > $(RECORD_SCRIPT) + @echo "fun! s:mkmd5(file)" >> $(RECORD_SCRIPT) + @echo " if executable('md5')" >> $(RECORD_SCRIPT) + @echo " return system('cat ' . a:file . ' | md5')" >> $(RECORD_SCRIPT) + @echo " else" >> $(RECORD_SCRIPT) + @echo " return \"\"" >> $(RECORD_SCRIPT) + @echo " endif" >> $(RECORD_SCRIPT) + @echo "endf" >> $(RECORD_SCRIPT) + @echo "let files = readfile('.record')" >> $(RECORD_SCRIPT) + @echo "let package_name = remove(files,0)" >> $(RECORD_SCRIPT) + @echo "let script_version = remove(files,0)" >> $(RECORD_SCRIPT) + @echo "let record = { 'version' : 0.3 , 'generated_by': 'Vim-Makefile' , 'script_version': script_version , 'install_type' : 'makefile' , 'package' : package_name , 'files': [ ] }" >> $(RECORD_SCRIPT) + @echo "for file in files " >> $(RECORD_SCRIPT) + @echo " let md5 = s:mkmd5(file)" >> $(RECORD_SCRIPT) + @echo " cal add( record.files , { 'checksum': md5 , 'file': file } )" >> $(RECORD_SCRIPT) + @echo "endfor" >> $(RECORD_SCRIPT) + @echo "redir => output" >> $(RECORD_SCRIPT) + @echo "silent echon record" >> $(RECORD_SCRIPT) + @echo "redir END" >> $(RECORD_SCRIPT) + @echo "let content = join(split(output,\"\\\\n\"),'')" >> $(RECORD_SCRIPT) + @echo "let record_file = expand('~/.vim/record/' . package_name )" >> $(RECORD_SCRIPT) + @echo "cal writefile( [content] , record_file )" >> $(RECORD_SCRIPT) + @echo "cal delete('.record')" >> $(RECORD_SCRIPT) + @echo "echo \"Done\"" >> $(RECORD_SCRIPT) + + +record: mkfilelist mkrecordscript + vim --noplugin -V10install.log -c "so $(RECORD_SCRIPT)" -c "q" + @echo "Vim script record making log: install.log" +# @rm -vf $(RECORD_FILE) + +rmrecord: + @echo "Removing Record" + @rm -vf $(VIMRUNTIME)/record/$(NAME) + +clean: clean-bundle-deps + @rm -vf $(RECORD_FILE) + @rm -vf $(RECORD_SCRIPT) + @rm -vf install.log + @rm -vf *.tar.gz + +clean-bundle-deps: + @echo "Removing Bundled scripts..." + @if [[ -e .bundlefiles ]] ; then \ + rm -fv `echo \`cat .bundlefiles\``; \ + fi + @rm -fv .bundlefiles + +update: + @echo "Updating Makefile..." + @URL=http://github.com/c9s/vim-makefile/raw/master/Makefile ; \ + if [[ -n `which curl` ]]; then \ + curl $$URL -o Makefile ; \ + if [[ -n `which wget` ]]; then \ + wget -c $$URL ; \ + elif [[ -n `which fetch` ]]; then \ + fetch $$URL ; \ + fi + +version: + @echo version - $(MAKEFILE_VERSION) + +# }}} diff --git a/README.markdown b/README.markdown new file mode 100644 index 0000000..3baced8 --- /dev/null +++ b/README.markdown @@ -0,0 +1,49 @@ +YAJS: Yet Another JavaScript Syntax +=================================== + +Yet Another JavaScript Syntax file for Vim. Key differences: + +* Use 'javascript' as group name's prefix, not 'javaScript' nor 'JavaScript'. Works great with [SyntaxComplete](https://github.com/vim-scripts/SyntaxComplete). +* Recognize Web API and DOM keywords. Keep increase. +* Works perfect with [javascript-libraries-syntax.vim](https://github.com/othree/javascript-libraries-syntax.vim) +* Remove old, unused syntax definitions. +* Support ES6 new syntax, ex: arrow function `=>`. + +### Differences from jelera/vim-javascript-syntax + +I start a new project instead of send PR to jelera is because: jelera/vim-javascript-syntax is not so active. +And I want to do lots of changes, including ES6 and other not confirmed standard support. +Also, one of my goal is produce 100% correct syntax. +But it hurt performance, so I prefer to create a new one instead of merge back. + +Credits +------- + +- Jose Elera, [Enhanced Javascript syntax](http://www.vim.org/scripts/script.php?script_id=3425) +- Zhao Yi, Claudio Fleiner, Scott Shattuck (This file is based on their hard work) +- gumnos (From the #vim IRC Channel in Freenode) (Who helped me figured out the crazy Vim Regexes) + +Report Issue +------------ + +Please send issue report to [github](https://github.com/othree/yajs.vim/issues). Provde sample code to help me debug. + +Changes +------- + +### Version 1.5 +- Lots of bug Fix +- Support semantic highlight + +### Version 1.4 +- Better Array Comprehesion support +- Better Template highlight +- AngularJS JSDoc module +- Fix object literal syntax +- Don't break vim-jsx + +License +------- + +The same as Vim + diff --git a/config.mk b/config.mk new file mode 100644 index 0000000..c8ca3d1 --- /dev/null +++ b/config.mk @@ -0,0 +1,6 @@ +NAME=yajs.vim +VERSION=1.4 + +bundle-deps: + $(call fetch_github,ID,REPOSITORY,BRANCH,PATH,TARGET_PATH) + $(call fetch_url,FILE_URL,TARGET_PATH) diff --git a/data/css.yml b/data/css.yml new file mode 100644 index 0000000..ed9d9e3 --- /dev/null +++ b/data/css.yml @@ -0,0 +1,432 @@ +javascriptDOMStyle: + # - A + # - :active + # - ::after (:after) + - align-content + - align-items + - align-self + # - all + # - + - animation + - animation-delay + - animation-direction + - animation-duration + - animation-fill-mode + - animation-iteration-count + - animation-name + - animation-play-state + - animation-timing-function + # - attr() + # - auto + # - B + - backface-visibility + - background + - background-attachment + - background-blend-mode + - background-clip + - background-color + - background-image + - background-origin + - background-position + - background-repeat + - background-size + # - + # - ::before (:before) + # - + # - blur() + - border + - border-bottom + - border-bottom-color + - border-bottom-left-radius + - border-bottom-right-radius + - border-bottom-style + - border-bottom-width + - border-collapse + - border-color + - border-image + - border-image-outset + - border-image-repeat + - border-image-slice + - border-image-source + - border-image-width + - border-left + - border-left-color + - border-left-style + - border-left-width + - border-radius + - border-right + - border-right-color + - border-right-style + - border-right-width + - border-spacing + - border-style + - border-top + - border-top-color + - border-top-left-radius + - border-top-right-radius + - border-top-style + - border-top-width + - border-width + - bottom + - box-decoration-break + - box-shadow + - box-sizing + - break-after + - break-before + - break-inside + # - brightness() + # - C + # - calc() + - caption-side + # - ch + # - @charset + # - :checked + # - ::choices + # - circle() + - clear + - clip + - clip-path + # - cm + - color + # - + - columns + - column-count + - column-fill + - column-gap + - column-rule + - column-rule-color + - column-rule-style + - column-rule-width + - column-span + - column-width + - content + # - contrast() + # - + - counter-increment + - counter-reset + # - @counter-style + # - cross-fade() + # - cubic-bezier() + - cursor + # - + # - cycle() + # - D + # - :default + # - deg + # - :dir() + - direction + # - :disabled + - display + # - @document + # - dpcm + # - dpi + # - dppx + # - drop-shadow() + # - E + # - element() + # - ellipse() + # - em + # - :empty + - empty-cells + # - :enabled + # - ex + # - F + # - filter() + # - :first + # - :first-child + # - ::first-letter (:first-letter) + # - ::first-line (:first-line) + # - :first-of-type + - flex + - flex-basis + - flex-direction + - flex-flow + - flex-grow + - flex-shrink + - flex-wrap + - float + # - :focus + - font + # - @font-face + - font-family + - font-feature-settings + # - @font-feature-values + - font-kerning + - font-language-override + - font-size + - font-size-adjust + - font-stretch + - font-style + - font-synthesis + - font-variant + - font-variant-alternates + - font-variant-caps + - font-variant-east-asian + - font-variant-ligatures + - font-variant-numeric + - font-variant-position + - font-weight + # - + # - :fullscreen + # - G + - grad + # - + # - grayscale() + - grid + - grid-area + - grid-auto-columns + - grid-auto-flow + - grid-auto-position + - grid-auto-rows + - grid-column + - grid-column-start + - grid-column-end + - grid-row + - grid-row-start + - grid-row-end + - grid-template + - grid-template-areas + - grid-template-rows + - grid-template-columns + # - H + - height + # - :hover + # - hsl() + # - hsla() + # - hue-rotate() + - hyphens + # - hz + # - I + # - icon + # - + # - image()() + - image-rendering + - image-resolution + - image-orientation + - ime-mode + # - @import + # - in + # - :indeterminate + - inherit + # - initial + # - :in-range + # - inset() + # - + # - :invalid + # - invert() + # - isolation + # - J + - justify-content + # - K + # - @keyframes + # - khz + # - L + # - :lang() + # - :last-child + # - :last-of-type + - left + # - :left + # - + - letter-spacing + # - linear-gradient() + - line-break + - line-height + # - :link + - list-style + - list-style-image + - list-style-position + - list-style-type + # - M + - margin + - margin-bottom + - margin-left + - margin-right + - margin-top + - marks + - mask + - mask-type + # - matrix() + # - matrix3d() + - max-height + - max-width + # - @media + - min-height + # - minmax() + - min-width + - mix-blend-mode + # - mm + # - ms + # - N + # - @namespace + # - nav-down + # - nav-index + # - nav-left + # - nav-right + # - nav-up + # - none + # - normal + # - :not() + # - :nth-child() + # - :nth-last-child() + # - :nth-last-of-type() + # - :nth-of-type() + # - + # - O + - object-fit + - object-position + # - :only-child + # - :only-of-type + - opacity + # - opacity() + # - :optional + - order + - orphans + - outline + - outline-color + - outline-offset + - outline-style + - outline-width + # - :out-of-range + - overflow + - overflow-wrap + - overflow-x + - overflow-y + - overflow-clip-box + # - P + - padding + - padding-bottom + - padding-left + - padding-right + - padding-top + # - @page + - page-break-after + - page-break-before + - page-break-inside + # - pc + # - + - perspective + # - perspective() + - perspective-origin + - pointer-events + # - polygon() + - position + # - + # - pt + # - px + # - Q + - quotes + # - R + # - rad + # - radial-gradient() + # - + # - :read-only + # - :read-write + # - rect() + # - rem + # - repeat() + # - ::repeat-index + # - ::repeat-item + # - repeating-linear-gradient() + # - repeating-radial-gradient() + # - :required + - resize + # - + # - rgb() + # - rgba() + - right + # - :right + # - :root + # - rotate() + # - rotatex() + # - rotatey() + # - rotatez() + # - rotate3d() + # - S + # - s + # - saturate() + # - scale() + # - scalex() + # - scaley() + # - scalez() + # - scale3d() + # - :scope + # - ::selection + # - sepia() + # - + - shape-image-threshold + - shape-margin + - shape-outside + # - skew() + # - skewx() + # - skewy() + # - steps() + # - + # - @supports + # - T + - table-layout + - tab-size + # - :target + - text-align + - text-align-last + - text-combine-horizontal + - text-decoration + - text-decoration-color + - text-decoration-line + - text-decoration-style + - text-indent + - text-orientation + - text-overflow + - text-rendering + - text-shadow + - text-transform + - text-underline-position + # -