Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yaegassy/coc-sqlfluff

SQLFluff (A SQL linter and auto-formatter for Humans) extension for coc.nvim
https://github.com/yaegassy/coc-sqlfluff

coc coc-extensions coc-nvim formatter linter neovim sql vim

Last synced: 19 days ago
JSON representation

SQLFluff (A SQL linter and auto-formatter for Humans) extension for coc.nvim

Awesome Lists containing this project

README

        

# coc-sqlfluff

[SQLFluff](https://pypi.org/project/sqlfluff/) (A SQL linter and auto-formatter for Humans) extension for [coc.nvim](https://github.com/neoclide/coc.nvim)

coc-sqlfluff-demo

## Features

- Lint
- Format
- Code Action
- Built-in installer

## Install

**CocInstall**:

```vim
:CocInstall coc-sqlfluff
```

**vim-plug**:

```vim
Plug 'yaegassy/coc-sqlfluff', {'do': 'yarn install --frozen-lockfile'}
```

## Detect: sqlfluff

1. `sqlfluff.commandPath` setting
1. PATH environment (e.g. system global PATH or venv, etc ...)
1. builtin: extension-only "venv" (Installation commands are also provided)

## Bult-in install

coc-sqlfluff allows you to create an extension-only "venv" and install "sqlfluff".

The first time you use coc-sqlfluff, if sqlfluff is not detected, you will be prompted to do a built-in installation.

You can also run the installation command manually.

```vim
:CocCommand sqlfluff.install
```

## SQLFluff configuration file (setup.cfg, tox.ini, pep8.ini, .sqlfluff, pyproject.toml)

SQLFluff is able to read project-specific default values for its command line options, or from a configuration file.

SQLFluff will look for the following files in order. Later files will (if found) will be used to overwrite any vales read from earlier files.

1. `setup.cfg`
1. `tox.ini`
1. `pep8.ini`
1. `.sqlfluff`
1. `pyproject.toml`

**REF**:

-

## Configuration options

- `sqlfluff.enable`: Enable coc-sqlfluff extension, default: `true`
- `sqlfluff.commandPath`: The path to the sqlfluff command (Absolute path), default: `""`
- `sqlfluff.builtin.pythonPath`: Python 3.x path (Absolute path) to be used for built-in install, default: `""`
- `sqlfluff.dialect`: The dialect of SQL to lint, valid option: `["ansi", "bigquery", "clickhouse", "databricks", "db2", "duckdb", "exasol", "hive", "mysql", "oracle", "postgres", "redshift", "snowflake", "soql", "sparksql", "sqlite", "teradata", "tsql"]`, default: `"ansi"`
- `sqlfluff.linter.ignoreParsing`: Whether the sql linter should ignore parsing errors, default: `true`
- `sqlfluff.lintOnOpen`: Lint file on opening, default: `true`
- `sqlfluff.lintOnChange`: Lint file on change, default: `true`
- `sqlfluff.lintOnSave`: Lint file on save, default: `true`
- `sqlfluff.formatEnable`: Whether the document formatter is enabled or not, default: `true`
- `sqlfluff.formatIgnoreStderrAlert`: Ignore stderr message output when formatting is executed, e.g. `Unfixable violations detected`, default: `true`

## Commands

- `sqlfluff.install`: Install sqlfluff
- It will be installed in this path:
- Mac/Linux: `~/.config/coc/extensions/coc-sqlfluff-data/sqlfluff/venv/bin/sqlfluff`
- Windows: `~/AppData/Local/coc/extensions/coc-sqlfluff-data/sqlfluff/venv/Scripts/sqlfluff.exe`
- `sqlfluff.fix`: Run sqlfluff fix file
- `sqlfluff.format`: Run sqlfluff format file (Available in sqlfluff `v2.0.0` and later)
- `sqlfluff.showOutput`: Show sqlfluff output channel

## Code Actions

**Example key mapping (Code Action related)**:

```vim
nmap ga (coc-codeaction-line)
```

**Usage**:

In the line with diagnostic message, enter the mapped key (e.g. `ga`) and you will see a list of code actions that can be performed.

**Actions**:

- `Ignoring Errors for current line (-- noqa)`
- `Ignoring Errors for current line (-- noqa: disable=all)`
- `Ignoring Errors for current line (-- noqa: enable=all)`
- `Show web documentation for {RULE_ID}`

## Thanks

- [sqlfluff/sqlfluff](https://github.com/sqlfluff/sqlfluff)

## License

MIT

---

> This extension is built with [create-coc-extension](https://github.com/fannheyward/create-coc-extension)