summary refs log tree commit diff stats
path: root/doc/nimsuggest.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/nimsuggest.rst')
-rw-r--r--doc/nimsuggest.rst167
1 files changed, 0 insertions, 167 deletions
diff --git a/doc/nimsuggest.rst b/doc/nimsuggest.rst
deleted file mode 100644
index c5c0c7518..000000000
--- a/doc/nimsuggest.rst
+++ /dev/null
@@ -1,167 +0,0 @@
-================================
-  Nim IDE Integration Guide
-================================
-
-:Author: Unknown
-:Version: |nimversion|
-
-.. contents::
-
-
-Nim differs from many other compilers in that it is really fast,
-and being so fast makes it suited to provide external queries for
-text editors about the source code being written. Through the
-``nimsuggest`` tool, any IDE
-can query a ``.nim`` source file and obtain useful information like
-definition of symbols or suggestions for completion.
-
-This document will guide you through the available options. If you
-want to look at practical examples of nimsuggest support you can look
-at the
-`various editor integrations <https://github.com/Araq/Nim/wiki/Editor-Support>`_
-already available.
-
-
-Installation
-============
-
-Nimsuggest is part of Nim's core. Build it via::
-
-  koch nimsuggest
-
-
-Nimsuggest invocation
-=====================
-
-Run it via ``nimsuggest --stdin --debug --v2 myproject.nim``. Nimsuggest is a
-server that takes queries that are related to ``myproject``. There is some
-support so that you can throw random ``.nim`` files which are not part
-of ``myproject`` at Nimsuggest too, but usually the query refer to modules/files
-that are part of ``myproject``.
-
-``--stdin`` means that Nimsuggest reads the query from ``stdin``. This is great
-for testing things out and playing with it but for an editor communication
-via sockets is more reasonable so that is the default. It listens to port 6000
-by default.
-
-
-Specifying the location of the query
-------------------------------------
-
-Nimsuggest than waits for queries to process. A query consists of a
-cryptic 3 letter "command" ``def`` or ``con`` or ``sug`` or ``use`` followed by
-a location. A query location consists of:
-
-
-``file.nim``
-    This is the name of the module or include file the query refers to.
-
-``dirtyfile.nim``
-    This is optional.
-
-    The ``file`` paramater is enough for static analysis, but IDEs
-    tend to have *unsaved buffers* where the user may still be in
-    the middle of typing a line. In such situations the IDE can
-    save the current contents to a temporary file and then use the
-    ``dirtyfile.nim`` option to tell Nimsuggest that ``foobar.nim`` should
-    be taken from ``temporary/foobar.nim``.
-
-
-``line``
-    An integer with the line you are going to query. For the compiler
-    lines start at **1**.
-
-``col``
-    An integer with the column you are going to query. For the
-    compiler columns start at **0**.
-
-
-Definitions
------------
-
-The ``def`` Nimsuggest command performs a query about the definition
-of a specific symbol. If available, Nimsuggest will answer with the
-type, source file, line/column information and other accessory data
-if available like a docstring. With this information an IDE can
-provide the typical *Jump to definition* where a user puts the
-cursor on a symbol or uses the mouse to select it and is redirected
-to the place where the symbol is located.
-
-Since Nim is implemented in Nim, one of the nice things of
-this feature is that any user with an IDE supporting it can quickly
-jump around the standard library implementation and see exactly
-what a proc does, learning about the language and seeing real life
-examples of how to write/implement specific features.
-
-Nimsuggest will always answer with a single definition or none if it
-can't find any valid symbol matching the position of the query.
-
-
-Suggestions
------------
-
-The ``sug`` Nimsuggest command performs a query about possible
-completion symbols at some point in the file.
-
-The typical usage scenario for this option is to call it after the
-user has typed the dot character for `the object oriented call
-syntax <tut2.html#method-call-syntax>`_. Nimsuggest will try to return
-the suggestions sorted first by scope (from innermost to outermost)
-and then by item name.
-
-
-Invocation context
-------------------
-
-The ``con`` Nimsuggest command is very similar to the suggestions
-command, but instead of being used after the user has typed a dot
-character, this one is meant to be used after the user has typed
-an opening brace to start typing parameters.
-
-
-Symbol usages
--------------
-
-The ``use`` Nimsuggest command lists all usages of the symbol at
-a position. IDEs can use this to find all the places in the file
-where the symbol is used and offer the user to rename it in all
-places at the same time.
-
-For this kind of query the IDE will most likely ignore all the
-type/signature info provided by Nimsuggest and concentrate on the
-filename, line and column position of the multiple returned answers.
-
-
-
-Parsing nimsuggest output
-=========================
-
-Nimsuggest output is always returned on single lines separated by
-tab characters (``\t``). The values of each column are:
-
-1. Three characters indicating the type of returned answer (e.g.
-   ``def`` for definition, ``sug`` for suggestion, etc).
-2. Type of the symbol. This can be ``skProc``, ``skLet``, and just
-   about any of the enums defined in the module ``compiler/ast.nim``.
-3. Full qualitifed path of the symbol. If you are querying a symbol
-   defined in the ``proj.nim`` file, this would have the form
-   ``proj.symbolName``.
-4. Type/signature. For variables and enums this will contain the
-   type of the symbol, for procs, methods and templates this will
-   contain the full unique signature (e.g. ``proc (File)``).
-5. Full path to the file containing the symbol.
-6. Line where the symbol is located in the file. Lines start to
-   count at **1**.
-7. Column where the symbol is located in the file. Columns start
-   to count at **0**.
-8. Docstring for the symbol if available or the empty string. To
-   differentiate the docstring from end of answer,
-   the docstring is always provided enclosed in double quotes, and
-   if the docstring spans multiple lines, all following lines of the
-   docstring will start with a blank space to align visually with
-   the starting quote.
-
-   Also, you won't find raw ``\n`` characters breaking the one
-   answer per line format. Instead you will need to parse sequences
-   in the form ``\xHH``, where *HH* is a hexadecimal value (e.g.
-   newlines generate the sequence ``\x0A``).