Skip to main content

Language Server Protocol implementation for hx-requests Django library

Project description

hx-requests-lsp

Language Server Protocol implementation for the hx-requests Django library.

VS Code Extension PyPI

Features

  • Autocomplete: Get suggestions for hx_request names in Django templates (prioritizes current app, works with or without quotes)
  • Go-to-Definition: Jump from template usage to the Python class definition
  • Find References: Find all template usages of an hx_request
  • Diagnostics: Warnings for undefined hx_request names
  • Hover Information: View details about an hx_request on hover

Installation

VS Code (Recommended)

Install the hx-requests-lsp extension from the VS Code Marketplace. The extension bundles the language server - no additional setup required.

Other Editors

Install the language server via pip/pipx:

pip install hx-requests-lsp
# or
pipx install hx-requests-lsp

Neovim Configuration

Note: hx-requests-lsp is not yet in nvim-lspconfig's built-in server list, so you need to define it as a custom server.

Vanilla Neovim with nvim-lspconfig:

-- Define the custom server first
vim.lsp.config('hx_requests_lsp', {
  cmd = { 'hx-requests-lsp', '--stdio' },
  filetypes = { 'html', 'htmldjango', 'python' },
  root_markers = { 'manage.py', '.git' },
})

-- Then enable it
vim.lsp.enable('hx_requests_lsp')

LazyVim:

Add this to your lua/plugins/lspconfig.lua:

return {
  "neovim/nvim-lspconfig",
  opts = function(_, opts)
    -- Define the custom server
    vim.lsp.config("hx_requests_lsp", {
      cmd = { "hx-requests-lsp", "--stdio" },
      filetypes = { "html", "htmldjango", "python" },
      root_markers = { "manage.py", ".git" },
    })

    -- Add to server list
    return vim.tbl_deep_extend("force", opts or {}, {
      servers = {
        hx_requests_lsp = {},
      },
    })
  end,
}

NvChad / LunarVim / AstroNvim:

Add the vim.lsp.config() definition to your configuration file before setting up lspconfig, then add hx_requests_lsp = {} to your servers list.

Other Editors

Configure your editor to use hx-requests-lsp --stdio as the language server command for html, htmldjango, and python filetypes in Django projects (detected by manage.py in the root directory).

Usage

Once installed, the LSP provides these features in your editor:

Feature Description
Go to Definition Jump to hx_request class from template usage
Find References Find all template usages of an hx_request
Hover Info View details about an hx_request on hover
Autocomplete Get suggestions when typing {% hx_get or {% hx_post
Diagnostics Warnings for undefined hx_request names

Supported Patterns

Python (definitions)

from hx_requests.hx_requests import BaseHxRequest, ModalHxRequest

class MyRequest(BaseHxRequest):
    name = "my_request"  # This name is indexed
    GET_template = "partials/my.html"

Templates (usages)

{% load hx_tags %}

<!-- hx_post with name as first argument -->
<button {% hx_post 'my_request' object=item %}>Click</button>

<!-- hx_get -->
<div {% hx_get 'another_request' %}>Load</div>

<!-- hx_vals with hx_request_name keyword -->
<div {% hx_vals hx_request_name='my_request' title='Modal' %}>Open</div>

Requirements

  • Python 3.11+

Troubleshooting

Server not found

  1. Verify it's installed: which hx-requests-lsp
  2. Make sure you're in the correct virtualenv or used pipx for global install
  3. For Neovim, check if the LSP is running with :LspInfo

No autocompletion or diagnostics

  1. Ensure your template files are properly recognized by your editor
  2. Restart your editor to reload the extension
  3. Check that hx_request classes have a name attribute

License

MIT License - see LICENSE file for details

Contributing

Contributions are welcome! See CONTRIBUTING.md for development setup instructions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hx_requests_lsp-1.2.4.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hx_requests_lsp-1.2.4-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file hx_requests_lsp-1.2.4.tar.gz.

File metadata

  • Download URL: hx_requests_lsp-1.2.4.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hx_requests_lsp-1.2.4.tar.gz
Algorithm Hash digest
SHA256 8704e3311906e91aacdd91b8c49efb2fdc4f954a0d3352b32bf48b22913f0936
MD5 1878e6804515202ecb3dc1021648fafe
BLAKE2b-256 14c8887b1090510ba30b52577f6463cff7f006317426b97faf59d4a01824f6dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for hx_requests_lsp-1.2.4.tar.gz:

Publisher: workflow.yml on jordannpenn/hx-requests-lsp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hx_requests_lsp-1.2.4-py3-none-any.whl.

File metadata

  • Download URL: hx_requests_lsp-1.2.4-py3-none-any.whl
  • Upload date:
  • Size: 18.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hx_requests_lsp-1.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 de6a42af2bb0ba72f5311fbe7cea07a9be0994804b644d8507e572fda84ba87d
MD5 4b85d93d0eebff6ff633bba76402b609
BLAKE2b-256 11c384f1ffc42dbc37a924e5f5a3649b6adb9c9a22617c1e60a807b9f09e6bf8

See more details on using hashes here.

Provenance

The following attestation bundles were made for hx_requests_lsp-1.2.4-py3-none-any.whl:

Publisher: workflow.yml on jordannpenn/hx-requests-lsp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page