My config files
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Buddy Sandidge 5afc9df09b Squashed 'vim/bundle/jsx/' changes from d0ad98cf0..5b968dfa5
5b968dfa5 Merge pull request #143 from jez/master
f3fe4d865 Don't let <T> interfere with Flow generics
590356143 Don't let ':' terminate JSX classname
b0988275b Merge pull request #139 from BurningLutz/master
711e4a574 Merge pull request #132 from FranDias/patch-2
d96a4480f Fix g:jsx_pragma_required when g:jsx_ext_required=1
2083da6d2 Improved b:match_words to work-around an issue that when some tag is nested with same-name-self-closing tag, the % jump is broken. Here is a more detailed example:
7aea075d6 Make Pathogen install a 1 liner
eb656ed96 Merge pull request #114 from raushan802/master
6689560ce Update/fix references to the Vundle github repo
261114c92 Update README a bit more
5d69068d7 Merge pull request #90 from wyattanderson/master
31a25ff21 Add a FAQ explaining some frequent issues to the README
2ea2e1dcc Improve heuristic for detecting jsxRegion continuation across lines
f320f04b3 Parametrize the fallback JS indentexpr
acd2f77a1 Merge pull request #107 from bounceme/patch-1
af0c6cfc8 Fall back to default indentation
e65465ffb Update README
40bf4ef66 Merge pull request #105 from pdf/indenter_compat
92bd2d603 Remove dependency on pangloss/vim-javascript
52799a384 Enable spell checking on jsxRegion

git-subtree-dir: vim/bundle/jsx
git-subtree-split: 5b968dfa512c57c38ad7fe420f3e8ab75a73949a
8 years ago
after Squashed 'vim/bundle/jsx/' changes from d0ad98cf0..5b968dfa5 8 years ago
ftdetect Squashed 'vim/bundle/jsx/' changes from d0ad98cf0..5b968dfa5 8 years ago
README.md Squashed 'vim/bundle/jsx/' changes from d0ad98cf0..5b968dfa5 8 years ago

README.md

vim-jsx

Syntax highlighting and indenting for JSX. JSX is a JavaScript syntax transformer which translates inline XML document fragments into JavaScript objects. It was developed by Facebook alongside React.

vim-jsx is not a JavaScript syntax package, so in order to use it, you will also need to choose a base JS highlighter. pangloss/vim-javascript is the recommended package---it is vim-jsx's "official" dependency, and the only package against which it is regularly tested. However, vim-jsx makes a best effort to support other JavaScript syntax packages, including:

  • pangloss/vim-javascript
  • jelera/vim-javascript-syntax
  • othree/yajs

Notably, the system vim JavaScript syntax is not supported, due to its over-simplicity. However, the system XML syntax package is an implicit dependency.

Vim support for inline XML in JS is remarkably similar to the same for PHP, which you can find here.

Troubleshooting

If you're experiencing incorrect highlighting or indenting in your JSX code, please file a GitHub issue which includes the following:

  • A brief affirmation that you've read the README and have installed one of the supported dependencies (and the name of the one you're using).

  • A minimal ~/.vimrc which repros the issue you're having, as well as both a paste and a screenshot of the issue (a paste alone is insufficient, since it doesn't illustrate the specific highlighting or indenting problem). To obtain a minimal ~/.vimrc, simply bisect your ~/.vimrc by adding finish at various points in the file. (You can likewise bisect your included plugins by selectively including only half of them, then a quarter, etc.).

Most of the issues filed result from failures to install vim-javascript or conflicts with existing JS syntax or indent files---so failing to indicate that you've ruled those issues out may result in your issue being closed with minimal comment.

(Please feel free to disregard all this for feature requests.)

Usage

By default, JSX syntax highlighting and indenting will be enabled only for files with the .jsx extension. If you would like JSX in .js files, add

let g:jsx_ext_required = 0

to your .vimrc or somewhere in your include path. If you wish to restrict JSX to files with the pre-v0.12 @jsx React.DOM pragma, add

let g:jsx_pragma_required = 1

to your .vimrc or somewhere in your include path.

Frequently Asked Questions

  • How come syntax highlighting doesn't work at all?

This is the only question I'll answer with another question---Which do you think is more likely: (a) this package fails completely and utterly in serving its most fundamental purpose, or (b) user error?

  • Why are my end tags colored differently than my start tags?

vim-jsx is basically the glue that holds JavaScript and XML syntax packages together in blissful harmony. This means that any XML syntax defaults carry over to the XML portions of vim, and it's common for many colorschemes to highlight start and end tags differently due to the system XML syntax defaults.

  • Syntax highlighting seems to work, but breaks highlighting and indenting further down in the file. What's wrong?

This often results from trying to enable XML folding in one's ~/.vimrc (i.e., via let g:xml_syntax_folding = 1). vim-jsx does not support syntax folding, and is not tested with either JavaScript or XML folding enabled.

Installation

Pathogen

The recommended installation method is via Pathogen. Then simply execute

git clone https://github.com/mxw/vim-jsx.git ~/.vim/bundle/vim-jsx

(You can install vim-javascript in an analogous manner.)

Vundle

You can also add vim-jsx using Vundle---just add the following lines to your ~/.vimrc:

Plugin 'pangloss/vim-javascript'
Plugin 'mxw/vim-jsx'

To install from within vim, use the commands below.

:so ~/.vimrc
:PluginInstall

Alternatively, use the command below to install the plugins from the command line.

vim +PluginInstall +qall

Manual Installation

If you have no ~/.vim/after directory, you can download the tarball or zip and copy the contents to ~/.vim.

If you have existing ~/.vim/after files, copy the syntax and indent files directly into their respective destinations. If you have existing after syntax or indent files for Javascript, you'll probably want to do something like

mkdir -p ~/.vim/after/syntax/javascript
cp path/to/vim-jsx/after/syntax/jsx.vim ~/.vim/after/syntax/javascript/jsx.vim
mkdir -p ~/.vim/after/indent/javascript
cp path/to/vim-jsx/after/indent/jsx.vim ~/.vim/after/indent/javascript/jsx.vim