clojure-socketrepl.nvim


Ⅰ. 插件描述

A Neovim plugin for interacting with a Clojure Socket REPL

Ⅱ. 基本信息

创建日期:  2016-10-17
使用用户:  1
Github星:  40
插件作者:  Jeb Beich

Ⅲ. 安装方法

使用Vundle管理器安装

在你的.vimrc下添加:
Plugin 'jebberjeb/clojure-socketrepl-nvim'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall

对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。

使用NeoBundle管理器安装

在你的.vimrc下添加:
NeoBundle 'jebberjeb/clojure-socketrepl-nvim'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall

使用VimPlug管理器安装

在你的.vimrc下添加:
Plug 'jebberjeb/clojure-socketrepl-nvim'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall

使用Pathogen管理器安装

在终端中运行以下命令:
cd ~/.vim/bundle
git clone https://github.com/jebberjeb/clojure-socketrepl.nvim

Ⅳ. 文档说明

# Neovim Socket Repl Plugin

A Neovim plugin for Clojure which uses the built in socket repl introduced in version 1.8 of Clojure.

This plugin uses the Neovim Clojure plugin host. While intended to be a demonstration of the plugin host library, it may also be suitable for daily Clojure development.

Simply, this plugin uses a socket connection to send code to the repl. Nothing (very little) more. All (most) of the plugin code is written using Clojure. There's no (some) VimScript to sift through. This plugin is probably a bit too transparent. You see absolutely everything that's sent to the repl. If you eval an entire buffer...

Usage

Start a Clojure program with a socket repl server. This can be done by
adding the following JVM options to any Clojure application.

-Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}"

Connect to a socket repl. This connection is shared by all Neovim buffers.
Optionally, provide a host:port argument. Default is localhost:5555.

:Connect

Eval any buffer or form under cursor.

<leader>eb

or

<leader>ef

The results of all repl activity are logged, and displayed in a buffer. To
dismiss that log buffer, use q from within the log buffer, or
<leader>drlog from any buffer.

After dismissing the log, it may be resurrected.

<leader>rlog

Docs for the expression under the cursor are available.

<leader>doc

Note that the above leader-based mappings can be disabled by setting
g:disable_socket_repl_mappings to 1 in your .vimrc. The following commands
are available to create your own mappings:

:Connect
:EvalBuffer
:EvalForm
:Doc
:ReplLog
:DismissReplLog

Installation

Install however you normally do it. For example, using Vundle you'd add the
following line to your .vimrc:

Plugin 'jebberjeb/clojure-socketrepl.nvim'

Then (after sourcing .vimrc), from neovim:

:VundleInstall

Dependencies

This plugin requires a version of the Java version 1.6 or higher. You've probably already got this if you're using Clojure.

Plugin Architecture

Architecture

Developing

Tmux

The tmux-run-dev.sh script launches Neovim, starts the plugin process and
a repl, as well as a second Clojure process running a socket repl server. After
using this script, simply run the :Connect command from Neovim to connect
to the socket repl server.

Without Tmux

Start Neovim sourcing the debug plugin script. Make it listen for plugin
connections using a socket on port 7777.

NVIM_LISTEN_ADDRESS=127.0.0.1:7777 nvim -S plugin/socketrepl.vim.debug

Start the plugin. Then you'll need to connect to Neovim from the repl.

$> lein repl
$> (go)

You can now use plugin commands from within Neovim :Connect, :EvalBuffer,
etc.

Note that you'll probably want to rely heavily on the asynchronous
neovim-client functions when you want (the plugin) to make a request
of neovim. This is because the Neovim function rpcrequest blocks until
it has received a response (from your plugin). Using async on the plugin
side is the easiest way to avoid deadlock.

Changes

0.1.0

  • Use tools.reader for parsing source to eval
  • Fix bug namespaced keys using ::kw form were expanded using the wrong
  1. when read by the plugin's reader

添加新评论