diff --git a/README.md b/README.md index 0cd9ac7..a17c3fc 100644 --- a/README.md +++ b/README.md @@ -1 +1,95 @@ -# Classy +# nvim-classy +nvim-classy hides your HTML `class` attributes so your code goes from looking +like this: +```html +
+

"Text"

+
+``` +to this: +```html +
+

Text

+
+``` +Of course, when you put your cursor on one of lines, the `"."`s will expand +into their normal form. + +Multiple filetypes are supported and its incredibly easy to configure your own! + +This plugin was heavily inspired by the VSCode plugin, +[Inline Fold](https://github.com/moalamri/vscode-inline-fold). + +## Installation +Install with your favorite package manager! + +For example, with [packer.nvim](https://github.com/wbthomason/packer.nvim): +```lua +use { + 'dzfrias/nvim-classy', + requires = 'nvim-treesitter/nvim-treesitter', +} +``` +This plugin has out-of-the-box configuration, so just install it and it should +work! + +### Treesitter +It will not work without +[nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) and the +appropriate grammar must be installed. + +For example, to use it with HTML, make sure treesitter is installed and run +`:TSInstall html`. + +## Commands +nvim-classy has two main commands: +- `:ClassyConceal` +- `:ClassyUnconceal` + +These commands allow for fine-grained control over the plugin. + +### ClassyConceal +ClassyConceal turns on concealing for the current file. It is updated every +time the buffer is modified. This is run automatically by classy if the +`auto_start` option is set to `true` (the default). + +### ClassyUnconceal +This command wipes every conceal set by nvim-classy from the buffer. + +## Configuration +The behavior of nvim-classy can be fully customized. + +Here are the available options and their default values: +```lua +{ + conceal_char = ".", + conceal_hl_group = "", + filetypes = { + html = [[ ((attribute_name) @attr_name (#eq? @attr_name "class") (quoted_attribute_value (attribute_value) @attr_value)) ]], + javascript = [[ + ;; jsx + ((property_identifier) @attr_name (#eq? @attr_name "class") [(jsx_expression (_)?) (string)] @attr_value) ]], + svelte = [[ ((attribute_name) @attr_name (#eq? @attr_name "class") (quoted_attribute_value (attribute_value) @attr_value)) ]], + }, + auto_start = true, +} +``` +**conceal_char**: +The character to conceal the classes. Note that this can only be a single +character due to the limitations of nvim, so setting it to a string will use +the first character. + +**conceal_hl_group**: +The highlight group of the conceal character. Set it to `string` if you'd like +the `conceal_char` to be the same color as the expanded classes. + +**filetypes**: +Contains queries of the filetypes that classy supports. To write your own, make +sure to include an `@attr_value` capture so classy knows what to conceal! +Make sure to read about writing treesitter queries! + +**auto_start**: +If `true`, runs `:ClassyConceal` when you start editing the file. + +## License +This plugin is licensed under the MIT license.