doom-emacs/modules/lang/graphql
carehabit af331643a7
docs: remove unintended repetition
Signed-off-by: carehabit <shenyuting@outlook.com>
2024-05-21 17:17:07 +02:00
..
autoload.el
config.el refactor!: replace all-the-icons with nerd-icons 2024-05-21 17:15:56 +02:00
packages.el bump: :lang 2024-05-21 17:16:40 +02:00
README.org docs: remove unintended repetition 2024-05-21 17:17:07 +02:00

:lang graphql

Description   unfold

This module adds GraphQL support to Doom Emacs.

It includes:

  • Code completion
  • LSP support (doom-module:+lsp)

    • Diagnostics (GraphQL syntax linting/validations) (spec-compliant)
    • Autocomplete suggestions (spec-compliant)
    • Hyperlink to fragment definitions and named types (type, input, enum) definitions (spec-compliant)
    • Outline view support for queries and SDL
    • Symbols support across the workspace
  • Local schema viewer
  • Org-babel exporter (requires doom-module::lang org)

Module flags

+lsp
Enable LSP support for graphql-mode. Requires doom-module::tools lsp and a langserver (graphql-language-service-cli).

Hacks

TODO Changelog

This module does not have a changelog yet.

Installation

Enable this module in your doom! block.

LSP

This module has no direct requirements, but the +lsp flag requires a supported LSP server.

Formatter

Formatting is handled using the doom-module::editor format module via prettier.

Usage

Sending queries

When visiting a graphql buffer, you have access to the ability to send the current query with C-c C-c which will prompt you for an optional variables file, then execute the query and return a buffer of the results.

It's also possible to send queries using org-babel using a block such as the ones below (executing correctly will require :lang org)

{
    "continentCode": "AF"
}
query GetContinents($continentCode: String!) {
  continent(code: $continentCode) {
    name
    code
  }
}
{
  "data": {
    "continent": {
      "name": "Africa",
      "code": "AF"
    }
  }
}

Viewing docs

With this module, there are 3 ways to view schemas:

  • +graphql-doc-open-config which uses a local .graphqlconfig file to seed endpoints to query
  • graphql-doc which prompts you to select an endpoint based on ones added manually by graphql-doc-add-api
  • graphql-doc-open-url which prompts to manually enter an endpoint url

When using the doc viewer, there are a few bindings for navigating around.

Key Command Description
C-j forward-button Follow a forward button
C-k backward-button Follow a backward button
<backspace> graphql-doc-go-back Go back to a previous page
mouse-1 - Follow the next label under point
RET - Follow the next label under point

Configuration

Most of the "magic" in the module relies on a properly configured .graphqlconfig file, so follow the examples linked to create an appropriate setup.

LSP configuration is handled through GraphQL Config to handle custom directives/documents/validation etc.

These files will also be useful to other editors, so it would be worth checking them into version control.

Frequently asked questions

This module has no FAQs yet. Ask one?

TODO Appendix

󱌣 This module has no appendix yet. Write one?