Skip to content

django templates (htmldjango) extension for coc.nvim. Provides "formatter", "linter", "completion" and more...

License

Notifications You must be signed in to change notification settings

yaegassy/coc-htmldjango

Repository files navigation

coc-htmldjango

django templates (htmldjango) extension for coc.nvim. Provides "formatter", "linter", "completion" and more...

coc-htmldjango-demo

Features

  • Format
  • Lint
    • by djLint (Find common formatting issues) | DEMO
  • Completion
    • Completion of snippets data via completionItemProvider
  • Hover | DEMO
  • CodeAction | DEMO
  • Commands
  • Built-in installer (djLint, DjHTML)

Install

CocInstall:

:CocInstall coc-htmldjango

vim-plug:

Plug 'yaegassy/coc-htmldjango', {'do': 'yarn install --frozen-lockfile'}

Recommended coc-extensions to install together

Tool (linter & formatter) detection

Detection order:

  • htmldjango.djlint.commandPath and htmldjango.djhtml.commandPath settings
  • current python environment (e.g. djlint and djhtml in "venv")
  • builtin djlint and djhtml (Installation commands are also provided)

Configuration options for coc-htmldjango

  • htmldjango.enable: Enable coc-htmldjango extension, default: true
  • htmldjango.completion.enable: Enable snippets completion, default: true
  • htmldjango.completion.exclude: Exclude specific key in snippet completion, default: ["autoescape_paste", "comment_paste", "comment_selection", "for_paste", "forempty_paste", "if_paste", "ifelse_paste", "spaceless_paste", "verbatim_paste", "with_selection", "with_paste", "trans_paste", "blocktrans_paste", "blocktrans_with_paste", "translate_paste", "blocktranslate_paste", "blocktranslate_with_paste"]
  • htmldjango.builtin.pythonPath: Python 3.x path (Absolute path) to be used for built-in install, default: ""
  • htmldjango.formatting.provider: Provider for formatting. Possible options include 'djlint', 'djhtml' and 'none', default: "djlint"
  • htmldjango.djlint.commandPath: The custom path to the djlint (Absolute path), default: ""
  • htmldjango.djlint.enableLint: Enable djLint lint (diagnostics), default: true
  • htmldjango.djlint.lintOnOpen: Lint file on opening, default: true
  • htmldjango.djlint.lintOnChange: Lint file on change, default: true
  • htmldjango.djlint.lintOnSave: Lint file on save, default: true
  • htmldjango.djlint.include: Codes to include (--include), ex: "H014,H017", default: ""
  • htmldjango.djlint.ignore: Codes to ignore (--ignore), ex: "W013,W014", default: ""
  • htmldjango.djlint.ignoreCase: Do not fix case on known html tags (--ignore-case), default: false
  • htmldjango.djlint.ignoreBlocks: Comma list of template blocks to not indent (--ignore-blocks), default: ""
  • htmldjango.djlint.indent: Indent spacing (--indent), default: 4
  • htmldjango.djlint.profile: Enable defaults by template language. ops: html, django, jinja, nunjucks, handlebars, golang and angular, default: ["django"]
  • htmldjango.djlint.useGitIgnore: Use .gitignore file to extend excludes (--use-gitignore), default: false
  • htmldjango.djlint.preserveLeadingSpace: Attempt to preserve leading space on text (--preserve-leading-space), default: false
  • htmldjango.djlint.preserveBlankLines: Attempt to preserve blank lines (--preserve-blank-lines), default: false
  • htmldjango.djlint.formatCss: Also format contents of style tags (--format-css), default: false
  • htmldjango.djlint.formatJs: Also format contents of script tags (--format-js), default: false
  • htmldjango.djlint.addLinterArgs: Additional arguments passed to djlint linter, example: ["--max-line-length", "250", "--max-attribute-length", "80"], default: []
  • htmldjango.djlint.addFormatterArgs: Additional arguments passed to djlint formatter, example: ["--max-line-length", "250", "--max-attribute-length", "80"], default: []
  • htmldjango.djhtml.commandPath: The custom path to the djhtml (Absolute path), default: ""
  • htmldjango.djhtml.tabWidth: Set tabwidth (--tabwidth), default: 4

Commands

  • htmldjango.showOutput: Show htmldjango output channel
  • htmldjango.builtin.installTools: Install htmldjango related tools
  • htmldjango.djlint.format: Run djLint format
  • htmldjango.djhtml.format: Run DjHTML format
  • htmldjango.showReferences: Show Variables Block ({{ ... }}) or TemplateTags Block ({% ... %}) location information for the current file

Code Actions

Example key mapping (Code Action related):

nmap <silent> ga <Plug>(coc-codeaction-line)

Actions:

  • If htmldjango.formatting.provider is djlint or If htmldjango.djlint.enableLint is true
    • Add <!-- djlint:off --> for this line
    • Add <!-- djlint:on --> for this line
  • If htmldjango.formatting.provider is djhtml
    • Add {# fmt:off #} for this line
    • Add {# fmt:on #} for this line

Bult-in install (djLint, DjHTML)

coc-htmldjango allows you to create an extension-only "venv" and install "djlint" and "djhtml".

:CocCommand htmldjango.builtin.installTools

Thanks

License

MIT


This extension is built with create-coc-extension