{"ref":"artifact:albertmink-adt-nvim","page":"/artifacts/albertmink-adt-nvim","json":"/artifacts/albertmink-adt-nvim.json","generated":"2026-10-30","drafted_with_ai":true,"entity":{"id":"albertmink-adt-nvim","name":"adt-nvim","artifact_type":"ide-extension","ecosystem":"abap","domain":"developer-experience","origin_ring":"independent","use_as":"starting-point","description":{"one_line":"A Neovim plugin that drives SAP's adt-ls language server, so an ABAP object opens in a buffer without leaving the terminal.","short":"Neovim client for SAP's ADT language server","what_it_solves":"A Neovim client for the ADT Language Server. `:AdtOpen` searches for an ABAP object and opens it in a buffer, where `gd` goes to the definition, `gD` to the declaration, `gr` to the references, `gi` to the implementation, `go` to document symbols, `K` to hover info, `gth` to the type hierarchy. The server it drives is SAP's `adt-ls`, which ships inside [ABAP Development Tools for VS Code](artifact:sap-adt-vscode): the plugin finds the binary under `~/.vscode/extensions/` or at the path `ADT_LS_PATH` names, and calls `python3` to hand credentials over. Destinations are not the plugin's. They live in a store owned by the language server under `~/.adtls/`, the plugin points the server at that directory and reads the list back into `:AdtOpen` and `:AdtSwitch` without writing one, and the store is not shared with a VSCode ADT setup unless both point at the same place. Logon is SSO through SAP Secure Login Client with `SNC_LIB` resolved automatically, a password passed to `setup()`, or `ADT_PASSWORD` exported before Neovim starts.","to_build_on_it":"The README names the next step itself, as a maybe: Neovim run headless with its `M.api` handed to an AI agent as tools, for which `:AdtApi` is the programmatic entry point. The plugin carries no language server, so anything built on it still takes the `adt-ls` binary from the VS Code extension's installation or from a path supplied by hand. The object picker and the breadcrumbs use telescope.nvim and nvim-navic where those are installed and fall back to plain `vim.ui` where they are not, so either side can be swapped."},"links":{"repo":"https://github.com/albertmink/adt-nvim"},"maintainers":["actor:albertmink"],"provides":[{"capability":"capability:editor-support","what_it_does":"Searches for and opens an ABAP object in a Neovim buffer and binds the language server's navigation to keys: go to definition, go to declaration, find references, go to implementation, document symbols, hover info, type hierarchy.","sources":[{"url":"https://github.com/albertmink/adt-nvim","title":"albertmink/adt-nvim — README","checked":"2026-10-29","quote":"A Neovim client for the ADT Language Server — browse and navigate ABAP without leaving the terminal."},{"url":"https://github.com/albertmink/adt-nvim","title":"albertmink/adt-nvim — README, Usage","checked":"2026-10-29","quote":"Run `:AdtOpen` to search for and open an ABAP object. Once a buffer is open, these keymaps are active:"}]}],"requires":[{"ref":"external:neovim","requirement":"required","basis":"binding","role":"framework","for":"the editor the plugin is installed into, at 0.10 or newer, loaded in the README's example through lazy.nvim","sources":[{"url":"https://github.com/albertmink/adt-nvim","title":"albertmink/adt-nvim — README, Requirements","checked":"2026-10-29","quote":"- **Neovim 0.10+**"}]},{"ref":"artifact:sap-adt-vscode","requirement":"conditional","basis":"binding","condition":"the `adt-ls` binary is not already on the machine with `ADT_LS_PATH` pointing at it","role":"language-server","for":"ships the `adt-ls` binary the plugin talks to; installed once, the plugin finds it automatically under `~/.vscode/extensions/`","sources":[{"url":"https://github.com/albertmink/adt-nvim","title":"albertmink/adt-nvim — README, Requirements","checked":"2026-10-29","quote":"**The `adt-ls` binary.** It ships with the [SAP ADT extension for VSCode](https://marketplace.visualstudio.com/items?itemName=SAPSE.adt-vscode) — install that once, and adt-nvim finds the binary automatically under `~/.vscode/extensions/`. Alternatively, point the `ADT_LS_PATH` environment variable at the binary yourself."}]}],"connects":[{"ref":"artifact:sap-adt-vscode","kind":"data","direction":"outbound","for":"speaks to the `adt-ls` language server shipped in that extension as its client, and fetches the destination list from it fresh on every use instead of holding one","sources":[{"url":"https://github.com/albertmink/adt-nvim","title":"albertmink/adt-nvim — README, Destination store","checked":"2026-10-29","quote":"The plugin only points the server at that directory and reads the list back; it never writes destinations itself. Whatever destinations exist in the store show up in `:AdtOpen` and `:AdtSwitch` automatically, since the list is always fetched fresh from the server."}]}],"interfaces":[{"key":"api","kind":"api","direction":"in","for":"`:AdtApi`, the programmatic entry point the README names for handing `M.api` to an AI agent as tools","sources":[{"url":"https://github.com/albertmink/adt-nvim","title":"albertmink/adt-nvim — README, Usage","checked":"2026-10-29","quote":"Other commands: `:AdtSwitch` (change destination), and `:AdtApi` — the programmatic entry point behind the \"hand `M.api` to an AI agent\" idea above."}]}],"provenance":{"discovered_via":[{"source":"source:github"}],"first_seen":"2026-10-29"},"drafted_with_ai":true,"contributors":["actor:albertmink"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-09, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"fair","evidence":"none found in the tree"},{"label":"Docs","tier":"fair","evidence":"README 3 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":3,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-29","npm":"not published under this name","stars":3,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-09-08","license_spdx":"MIT","org_owned":false,"default_branch":"main","created_at":"2026-09-07T13:10:35Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":3190,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2026-09-07","last_commit":"2026-09-08","commits":6,"contributors":1,"readme_path":"README.md","readme_sha":"f233f93bad0a20628f6dbe48c8a53441c615dc7e","repo_read":"2026-10-29"},"edges":{"maintainers":[{"ref":"actor:albertmink","name":"Albert Mink","json":"/actors/albertmink.json"}],"contributors":[{"ref":"actor:albertmink","name":"Albert Mink","json":"/actors/albertmink.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}