aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc/develop.txt
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-11-06 20:23:35 +0300
committerZyX <kp-pav@yandex.ru>2017-11-06 20:23:35 +0300
commit24a353364d6d186d528009fd0bb603d87183cf35 (patch)
treea4070dc00731475d6bbdd3c84e61806b33802f7a /runtime/doc/develop.txt
parentf2660bee6aca35be3d0ddb1d225784476c13cd27 (diff)
parent946c2a8ee85830c543e389724575ae531e89b170 (diff)
downloadrneovim-24a353364d6d186d528009fd0bb603d87183cf35.tar.gz
rneovim-24a353364d6d186d528009fd0bb603d87183cf35.tar.bz2
rneovim-24a353364d6d186d528009fd0bb603d87183cf35.zip
Merge branch 'master' into expression-parser
Diffstat (limited to 'runtime/doc/develop.txt')
-rw-r--r--runtime/doc/develop.txt44
1 files changed, 35 insertions, 9 deletions
diff --git a/runtime/doc/develop.txt b/runtime/doc/develop.txt
index 298f64bbee..36826e2479 100644
--- a/runtime/doc/develop.txt
+++ b/runtime/doc/develop.txt
@@ -142,6 +142,8 @@ shell The Vim application. This can cover the whole screen (e.g.,
window View on a buffer. There can be several windows in Vim,
together with the command line, menubar, toolbar, etc. they
fit in the shell.
+frame Windows are kept in a tree of frames. Each frame contains
+ a column, row, or window ("leaf" frame).
PROVIDERS *dev-provider*
@@ -230,23 +232,47 @@ _not_ a Buffer). The common {action} "list" indicates that it lists all
bufs (plural) in the global context.
+API-CLIENT *dev-api-client*
+
+Package Naming ~
+API client packages should NOT be named something ambiguous like "neovim" or
+"python-client". Use "nvim" as a prefix/suffix to some other identifier
+following ecosystem conventions.
+
+For example, Python packages tend to have "py" in the name, so "pynvim" is
+a good name: it's idiomatic and unambiguous. If the package is named "neovim",
+it confuses users, and complicates documentation and discussions.
+
+Examples of API-client package names:
+ GOOD: nvim-racket
+ GOOD: pynvim
+ BAD: python-client
+ BAD: neovim
+
+Implementation ~
+Consider using libmpack instead of the msgpack.org C/C++ library. libmpack is
+small, efficient, and C89-compatible. It can be easily inlined in your
+C project source, too. https://github.com/libmpack/libmpack/
+
+
EXTERNAL UI *dev-ui*
+Compatibility ~
External UIs should be aware of the |api-contract|. In particular, future
-versions of Nvim may add optional, new items to existing events. The API is
-strongly backwards-compatible, but clients must not break if new fields are
-added to existing events.
+versions of Nvim may add new items to existing events. The API is strongly
+backwards-compatible, but clients must not break if new fields are added to
+existing events.
-External UIs are expected to implement some common features.
+Common Features ~
+External UIs are expected to implement these common features:
+- Cursor style (shape, color) should respond to the 'guicursor' properties
+ delivered with the mode_info_set UI event.
+- Send the "super" key (Windows key, Apple key) as a |<D-| chord.
-- Users may want to configure UI-specific options. The UI should publish the
- |GUIEnter| autocmd after attaching to Nvim: >
- doautocmd GUIEnter
+Implementation ~
- Options can be monitored for changes by the |OptionSet| autocmd. E.g. if the
user sets the 'guifont' option, this autocmd notifies channel 42: >
autocmd OptionSet guifont call rpcnotify(42, 'option-changed', 'guifont', &guifont)
-- cursor-shape change: 'guicursor' properties are sent in the mode_info_set UI
- event.
vim:tw=78:ts=8:ft=help:norl: