adt-nvim
A Neovim plugin that drives SAP's adt-ls language server, so an ABAP object opens in a buffer without leaving the terminal.
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 CodeABAP Development Tools for VS CodeSAP's ABAP tools in VS Code: editing, debugging, ABAP Unit, ATC and transports for classes, CDS and RAP objects, over RFC to an on-premise or Private Cloud system and HTTP to a cloud one, with Joule's ADT MCP server and code completion behind an AI-unit licence.sap official, abap: 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.
Facts
Where it sits
Who is behind it
In the atlas: maintains 2, contributes to 8@albertminkmaintainer
What it declares
Every artifact
- Type
- IDE extension
- Origin
- Independently maintained
As an IDE extension
- Installs into
- does not say
- Distributed through
- does not say
Connections
Editor help with source: completion, navigation, errors, refactoring
SAP's ABAP tools in VS Code for editing, debugging, ATC and transports
A terminal text editor with a built-in language server client. For the things here it is the editor an ABAP plugin is installed into and run from.
SAP's ABAP tools in VS Code for editing, debugging, ATC and transports
Download
README
quoted from albertmink/adt-nvim under MIT, readadt-nvim
A Neovim client for the ADT Language Server — browse and navigate ABAP without leaving the terminal.

- A personal study — a hands-on way to learn how an LSP client actually works.
- A years-old dream — never leaving the terminal to edit ABAP code.
- Just fun — built for the joy of it, nothing more.
- ...and maybe — run Neovim headless and hand its
M.apito an AI agent as tools. 😉
Requirements
- Neovim 0.10+
- The
adt-lsbinary. It ships with the SAP ADT extension for VSCode — install that once, and adt-nvim finds the binary automatically under~/.vscode/extensions/. Alternatively, point theADT_LS_PATHenvironment variable at the binary yourself. python3on yourPATH(used to hand credentials to the language server securely).- Optional: telescope.nvim for a nicer object picker, nvim-navic for breadcrumbs. Both are used if present, and plain
vim.uifallbacks kick in if they aren't.
Install
With lazy.nvim:
{
"albertmink/adt-nvim",
dependencies = {
"nvim-telescope/telescope.nvim", -- optional
"SmiteshP/nvim-navic", -- optional
},
config = function()
require("adt").setup()
end,
}
Authentication
On first use you'll pick a SAP destination. Depending on how it authenticates, supply credentials in one of these ways:
- SSO (SAP Secure Login Client) — works out of the box;
SNC_LIBis resolved automatically. - Password via
setup()—require("adt").setup({ password = "..." }). - Password via environment — export
ADT_PASSWORDbefore launching Neovim.
You can also pre-select a destination with require("adt").setup({ destination = "MY_DEST" }).
Destination store
Destinations aren't managed by adt-nvim — they live in a store owned by the language server, under ~/.adtls/ (holding destinations.json). 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.
This means the store is shared across sessions but not with your VSCode ADT setup unless both point at the same directory — VSCode's ADT extension typically uses its own location, so destinations configured there won't appear in Neovim automatically.
Usage
Run :AdtOpen to search for and open an ABAP object. Once a buffer is open, these keymaps are active:
| Key | Action |
|---|---|
gd | Go to definition |
gD | Go to declaration |
gr | Find references |
gi | Go to implementation |
go | Document symbols |
K | Hover info |
gth | Type hierarchy |
Other commands: :AdtSwitch (change destination), and :AdtApi — the programmatic entry point behind the "hand M.api to an AI agent" idea above.
Others providing
Compare all 20 on the Editor support page →- abap-adt-apiabap-adt-apiA JS/TS client for the ADT resources an ABAP system exposes, so a program outside the system can do against it what the maintainer calls a good share of what the Eclipse tools do.independent, abapJS/TS client for the ADT resources of an ABAP system
- abap2UI5 Playgroundabap2UI5 PlaygroundABAP in the editor on the left and the abap2UI5 app it builds on the right, both inside one browser tab: the framework is transpiled to JavaScript at build time and the class in the editor is compiled when Run is pressed.community org, abapIn-browser ABAP editor beside the abap2UI5 app it builds
- abap2UI5 for VS Codeabap2UI5 for VS CodeA VS Code extension for abap2UI5 apps: F9 starts the app class in a preview beside the source, Ctrl+F3 activates the class and reloads it, and the abap2UI5 linter runs in the editor while you type.community org, abapVS Code extension to preview, activate and lint abap2UI5 apps
- vscode-tabl-ddicvscode-tabl-ddicA VS Code extension that registers .tabl.ddic files, the DDIC DDL form of an ABAP table definition, as a language of their own with a TextMate grammar for syntax highlighting, and nothing more.community org, abapVS Code syntax highlighting for .tabl.ddic table definitions
- HammerHammerA native macOS code editor for ABAP and CDS, with an Object Navigator, Transport Organizer, Data Browser and Gateway Client in the same app as the editor.independent, abapNative macOS code editor for ABAP and CDS
- @arc-mcp/adt-ls@arc-mcp/adt-lsA TypeScript SDK over adt-ls, the headless language server SAP ships inside ABAP Development Tools for VS Code, so a program drives it without the discovery, JVM and handshake work.independent, abapTypeScript SDK over SAP's headless adt-ls language server
- abapthemesabapthemesThree colour themes for ABAP source in ABAP Development Tools for Eclipse, shipped as an Eclipse plugin and installed from the maintainer's own update site.independent, abapThree colour themes for ABAP source in ADT for Eclipse
- Cloud ALM Link for ADTCloud ALM Link for ADTAn Eclipse plugin that shows the transports and SAP Cloud ALM features behind an ABAP object, and turns Cloud ALM IDs in source comments into links.independent, abapEclipse plugin linking ABAP transports to SAP Cloud ALM features
- ABAP Call HierarchyABAP Call HierarchyAn Eclipse plugin that shows which members a class method, function module or subroutine calls, read from its own ADT backend in the system and published on a beta update site only.independent, abapEclipse plugin showing the call hierarchy of ABAP members
- abap-call-hierarchyabap-call-hierarchyThe ADT backend needed by the separate ABAP Call Hierarchy Eclipse plugin, installed in the ABAP system with abapGit and still in beta, which its maintainer calls not feature complete.independent, abapADT backend for the ABAP Call Hierarchy Eclipse plugin
- abap-tags-backendabap-tags-backendThe ADT backend needed by the separate ABAP Tags Eclipse plugin, installed in the ABAP system with abapGit; an upgrade to v2.0.0 or later runs a migration program for its new database tables.independent, abapADT backend for the ABAP Tags Eclipse plugin
- ABAP TagsABAP TagsAn Eclipse plugin for putting arbitrary tags on repository objects, with a Tag Manager view, tagged object search and tag import and export, served by its own ADT backend in the system.independent, abapEclipse plugin for tagging ABAP repository objects
- BellaBellaAn Eclipse plugin that puts Claude into ABAP Development Tools: explain, generate, rework and implement from the editor's context menu, completion as ghost text, and a chat whose tools reach the system through the developer's existing ADT logon.independent, abapEclipse plugin bringing Claude into ABAP Development Tools
- ABAP Syntax HighlightingABAP Syntax HighlightingA VS Code extension that registers .abap files as the language abap and colours them with a TextMate grammar.independent, abapVS Code syntax highlighting for .abap files
- abapfs_extensionsabapfs_extensionsABAP imported with abapGit that sets the stateful session flag on systems older than 7.51, so an HTTP client of the ADT resources can update objects there.independent, abapABAP objects enabling ADT updates on systems older than 7.51
- ABAP remote filesystemABAP remote filesystemA Visual Studio Code extension that opens an ABAP system over ADT as an editable filesystem and exposes system tools to GitHub Copilot and external MCP clients.independent, abapVS Code extension editing ABAP systems over ADT as a filesystem
- ABAP Development Tools for EclipseABAP Development Tools for EclipseSAP's Eclipse plugins for ABAP: source, dictionary and CDS editors, Project Explorer, Outline and ABAP Unit, calling ADT resources on the connected system.sap official, abapSAP's Eclipse plugins for ABAP development over ADT
- ABAP Development Tools for VS CodeABAP Development Tools for VS CodeSAP's ABAP tools in VS Code: editing, debugging, ABAP Unit, ATC and transports for classes, CDS and RAP objects, over RFC to an on-premise or Private Cloud system and HTTP to a cloud one, with Joule's ADT MCP server and code completion behind an AI-unit licence.sap official, abapSAP's ABAP tools in VS Code for editing, debugging, ATC and transports
- my-ide-actionsmy-ide-actionsA collection of eight ABAP Development Tools IDE Actions covering class creation, conversion of classic Open SQL to ABAP SQL, code snippets and RAP tooling.independent, abapCollection of ABAP Development Tools IDE Actions
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
History in the atlas
- First seen.
For your agent
- Ref
artifact:albertmink-adt-nvim- JSON
- /artifacts/albertmink-adt-nvim.json
- MCP
- Connecting an agent