doomemacs/modules/lang/graphql
Henrik Lissner ba8bf1ab9f
bump: :lang
Alexander-Miller/company-shell@a77f4de759 -> Alexander-Miller/company-shell@5f959a63a6
Emacs-Kotlin-Mode-Maintainers/kotlin-mode@3e0c34087b -> Emacs-Kotlin-Mode-Maintainers/kotlin-mode@fddd747e5b
FStarLang/fstar-mode.el@c95c2a61a6 -> FStarLang/fstar-mode.el@ab0697b947
Fuco1/sphinx-mode@9d4075c106 -> Fuco1/sphinx-mode@77ca51adf9
Groovy-Emacs-Modes/groovy-emacs-modes@bf732d367b -> Groovy-Emacs-Modes/groovy-emacs-modes@c612ac1e9f
Khady/merlin-eldoc@db7fab1edd -> Khady/merlin-eldoc@bf8edc63d8
OVYA/php-cs-fixer@7e12a1af5d -> OVYA/php-cs-fixer@efe4368d89
ProofGeneral/PG@e1e29acb04 -> ProofGeneral/PG@8416875696
Wilfred/elisp-def@dfca043ec0 -> Wilfred/elisp-def@1d2e88a232
agda/agda@b612cabaae -> agda/agda@bb7603d197
amake/flutter.el@08138f8c95 -> amake/flutter.el@edd3f5eb3f
ananthakumaran/exunit.el@0715c2dc2d -> ananthakumaran/exunit.el@e0a8c2b81f
beancount/beancount-mode@ea8257881b -> beancount/beancount-mode@519bfd868f
bradyt/dart-mode@3bac14200f -> bradyt/dart-mode@9c846769ab
brantou/emacs-go-tag@59b243f2fa -> brantou/emacs-go-tag@33f2059551
cdominik/cdlatex@8e963c6853 -> cdominik/cdlatex@ac024ce293
clojure-emacs/cider@92c1b6de20 -> clojure-emacs/cider@1ed5163433
clojure-emacs/clj-refactor.el@db89b55871 -> clojure-emacs/clj-refactor.el@b5abe655e5
clojure-emacs/clojure-mode@414157c3e5 -> clojure-emacs/clojure-mode@3453cd229b
cpitclaudel/company-coq@a6e349e013 -> cpitclaudel/company-coq@5affe7a96a
crystal-lang-tools/emacs-crystal-mode@96a8058205 -> crystal-lang-tools/emacs-crystal-mode@9bfb9f0f56
davazp/graphql-mode@9740e4027b -> davazp/graphql-mode@1437b79006
diml/utop@bbd9a6ed45 -> diml/utop@ace481388a
dominikh/go-mode.el@3273fcece5 -> dominikh/go-mode.el@166dfb1e09
elixir-editors/emacs-elixir@e0d0466d83 -> elixir-editors/emacs-elixir@7641373f05
emacs-csharp/csharp-mode@856ecbc0a7 -> emacs-csharp/csharp-mode@02c61c219b
emacs-ess/ESS@39eba28300 -> emacs-ess/ESS@8b4664e4a7
emacs-lsp/lsp-dart@fda433671f -> emacs-lsp/lsp-dart@3db9f93c83
emacs-lsp/lsp-java@0968038b9a -> emacs-lsp/lsp-java@dbe448a886
emacs-lsp/lsp-sourcekit@f877659bab -> emacs-lsp/lsp-sourcekit@468c641e35
emacs-php/composer.el@7c7f89df22 -> emacs-php/composer.el@5af1707fef
emacs-php/php-mode@5f26bec865 -> emacs-php/php-mode@fb11df8268
emacs-php/phpactor.el@34195f1533 -> emacs-php/phpactor.el@9440005814
emacs-php/psysh.el@21250984ad -> emacs-php/psysh.el@796b26a5cd
emacs-straight/auctex@830e40a063 -> emacs-straight/auctex@3929d5408b
emacs-straight/csv-mode@43f6106f0d -> emacs-straight/csv-mode@d190a479b4
emacs-straight/rainbow-mode@949166cc01 -> emacs-straight/rainbow-mode@8e96388fb4
emacs-straight/sml-mode@0338e9729b -> emacs-straight/sml-mode@5426ff4738
emacsmirror/auctex-latexmk@4d35352265 -> emacsmirror/auctex-latexmk@b00a95e6b3
emacsmirror/paredit@e4a67f4f23 -> emacsmirror/paredit@9a2c4b37fc
emacsorphanage/macrostep@424e3734a1 -> emacsorphanage/macrostep@75ecd04121
erlang/otp@9ba9f6e60d -> erlang/otp@be7109f43b
ethereum/emacs-solidity@20fb77e089 -> ethereum/emacs-solidity@ddb4a901c3
factor/factor@1aeafdb87b -> factor/factor@76ac65649d
fsharp/emacs-fsharp-mode@c1e58c61f9 -> fsharp/emacs-fsharp-mode@09fec6c91f
fxbois/web-mode@efa853e5cf -> fxbois/web-mode@df97ab62c9
godotengine/emacs-gdscript-mode@4badcf6a0c -> godotengine/emacs-gdscript-mode@d392e8aa7e
greghendershott/racket-mode@af9b760e7b -> greghendershott/racket-mode@947d9806ee
hhvm/hack-mode@a522f61c08 -> hhvm/hack-mode@26f06ffe82
idris-hackers/idris-mode@65d6db1b75 -> idris-hackers/idris-mode@c96f45d1b8
immerrr/lua-mode@5a9bee8d5f -> immerrr/lua-mode@ad639c62e3
iyefrat/evil-tex@0fa85c3fc8 -> iyefrat/evil-tex@3e0a26b91a
jcollard/elm-mode@d4e434fa18 -> jcollard/elm-mode@5797500d74
joaotavora/sly@4513c382f0 -> joaotavora/sly@fa70fc8ab1
jorgenschaefer/emacs-buttercup@ceedad5efa -> jorgenschaefer/emacs-buttercup@07a52c9969
jrblevin/markdown-mode@1f709778ac -> jrblevin/markdown-mode@c765b73b37
jschaf/powershell.el@ce1f0ae0b2 -> jschaf/powershell.el@f2da15857e
jwiegley/emacs-async@c78bab7506 -> jwiegley/emacs-async@71cc50f27f
leanprover/lean-mode@c1c68cc946 -> leanprover/lean-mode@362bc6fa3e
ledger/ledger-mode@b55384d9cd -> ledger/ledger-mode@4b32f70173
midnightSuyama/shader-mode@d7dc8d0d6f -> midnightSuyama/shader-mode@fe5a1982ba
necaris/conda.el@667968184e -> necaris/conda.el@28f51e49fd
nlamirault/phpunit.el@fe6bc91c3b -> nlamirault/phpunit.el@4a36906344
ocaml-ppx/ocamlformat@9cbd8150c2 -> ocaml-ppx/ocamlformat@1ad4bdba9e
ocaml/dune@3df932f7f9 -> ocaml/dune@f5a5a9c17b
ocaml/merlin@be753d9412 -> ocaml/merlin@306af713e2
ocaml/tuareg@ad8a688b7e -> ocaml/tuareg@53ce2fdfdd
pashky/restclient.el@9e2cfa8652 -> pashky/restclient.el@0ba72816f9
polymode/polymode@2094c92403 -> polymode/polymode@15b6c1e94a
purcell/flycheck-package@615c1ed8c6 -> purcell/flycheck-package@3a6aaed29f
purescript-emacs/purescript-mode@0acd1af446 -> purescript-emacs/purescript-mode@cf113871f9
s-kostyaev/go-gen-test@35df36dcd5 -> s-kostyaev/go-gen-test@f84f4177af
seagle0128/grip-mode@6d6ddbe0af -> seagle0128/grip-mode@5809fb62f6
sebasmonia/sharper@96edd4a1db -> sebasmonia/sharper@496e90e337
smihica/emmet-mode@6b2e554f7f -> smihica/emmet-mode@63b6932603
swift-emacs/swift-mode@f4529efa45 -> swift-emacs/swift-mode@1244ee48de
technomancy/fennel-mode@5664357349 -> technomancy/fennel-mode@52da9715b0
vspinu/company-math@45778f5731 -> vspinu/company-math@3eb006874e
whirm/flycheck-kotlin@bf1b398bdd -> whirm/flycheck-kotlin@a2a6abb9a7
wwwjfy/emacs-fish@a7c953b149 -> wwwjfy/emacs-fish@d04478c0ab
xuchunyang/elisp-demos@01c301b516 -> xuchunyang/elisp-demos@792be709c8
yoshiki/yaml-mode@535273d5a1 -> yoshiki/yaml-mode@3fcb36d603
ziglang/zig-mode@aa20d630b8 -> ziglang/zig-mode@9c5e41d6a0
2023-02-21 19:32:39 -05:00
..
autoload.el module: add :lang graphql 2022-04-03 16:38:57 +02:00
config.el refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
packages.el bump: :lang 2023-02-21 19:32:39 -05:00
README.org docs: change link format 2022-10-05 01:01:19 +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.

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

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 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?