When DataMind Oda answers a question about code, for example where a name is defined or where it is used, it asks a language server: a helper program on your computer that understands one programming language. This page explains how Oda chooses and sets up these servers, what their limits are, and what their messages mean. The questions Oda asks and the answers it shows are covered in Code navigation.
Oda picks the server by the file's type: the part of the file name after the last dot. One file type is handled by one server at most.
Some language servers are installed when they are first needed. The first question that needs one starts its installation, and installing needs an internet connection on the computer. Until the installation finishes, the question is answered with:
<language> code navigation is being set up: its language server is still installing.
The message begins with the language whose server is being installed. Ask again in a minute: the installation continues on its own, and questions that need the same server share that one installation.
Once installed, the server stays in Oda's own storage on the computer. Later questions and later starts of Oda reuse it, and changing which servers are set up does not remove it.
If the installation fails, the question is answered with:
<language> code navigation is unavailable: its language server could not be installed (<reason>).
The reason in brackets comes from the installation itself. The next question tries again; if it keeps failing, check the computer's internet connection, and if it still fails, contact your DataMind OS administrator with the message.
Some Oda setups do not install a language server: a program that is already on the computer serves the answers, and Oda starts that program and talks to it.
Before starting it, Oda filters the environment it passes to that program:
KEY, PASSWORD, SECRET or TOKEN, are not passed on.Apart from how they are set up, both kinds of server behave the same: Oda asks, the server answers.
A server that cannot answer does not guess; Oda reports the failure in the chat:
A server that failed is not reused.
A helper program on your computer that understands one programming language. When Oda answers a question about a code file, it asks the language server for that file's type, and the server works out the answer, for example where a name is defined or where it is used. See Code navigation.
By the file's type: the part of the file name after the last dot. Each type has one server at most, so every file of that type goes to the same server. If no server covers the type, Oda reports that code navigation is unavailable for the file.
For some file types, yes. The first question that needs a server downloads and installs it in Oda's own storage on the computer, and later questions and later starts of Oda reuse it. The first installation needs an internet connection.
The server for that file's type is still installing, and the question was answered before the installation finished. Ask again in a minute; the installation continues on its own.
The installation did not finish, and the message names the reason it reported. The next question tries to install it again. A first-time installation needs an internet connection on the computer; if it keeps failing, contact your DataMind OS administrator with the message.
Some Oda setups use a program that is already on the computer as the language server instead of installing one. That is arranged where Oda is set up, not from a chat; ask your DataMind OS administrator.
No. Language servers run as ordinary programs, outside the command sandbox; the file limits of the chat's access mode apply to commands, not to them. See Command sandboxing and approvals.
Questions that need the same language server in the same folder are answered one at a time, so a later question waits its turn. Questions for different folders can run side by side.
Normally a language server closes when Oda closes. If Oda is force-closed, a server it started can stay on the computer until it exits by itself.
No. Oda reads the file when the question runs and closes it again when the question is done; nothing stays open between questions.