nvim-ghost.nvim icon indicating copy to clipboard operation
nvim-ghost.nvim copied to clipboard

:ghost: GhostText plugin for Neovim with zero dependencies :tada: Supports neovim running inside WSL too! :partying_face: Windows/Linux/macOS supported out-of-the-box! :smile: (Other OSes need python3...

nvim-ghost.nvim

This is a neovim-only plugin for GhostText

Installation

Install it using your favourite plugin manager, and execute :call nvim_ghost#installer#install()
E.g. for vim-plug -

Plug 'subnut/nvim-ghost.nvim', {'do': ':call nvim_ghost#installer#install()'}

:warning: NOTE: After installing for the first time, you need to restart neovim for the plugin to start properly

Usage

  • Open neovim
  • Use GhostText

Really, it's that simple!

Features

  • Zero dependencies! Does not even need python installed!
  • Supports neovim running inside WSL (Windows Subsystem for Linux)
  • Supports Linux, macOS, Windows out-of-the-box (for other OSes, please see below)

Customization

Specifying a different port

The default is 4001, which corresponds to the default value set in the browser extension. If you want to use a different value, simply add the following line to your init.vim -

let $GHOSTTEXT_SERVER_PORT = 4001

Replace 4001 with the port number you have set in the browser extension

Custom settings according to website

When you trigger GhostText, nvim-ghost triggers an User autocommand. You can listen for that autocommand and run your own commands (e.g. setting filetype)

NOTE: All the autocommands should be in the nvim_ghost_user_autocommands augroup

Some examples -

" Autocommand for a single website (i.e. stackoverflow.com)
au nvim_ghost_user_autocommands User www.stackoverflow.com set filetype=markdown

" Autocommand for a multiple websites
au nvim_ghost_user_autocommands User www.reddit.com,www.github.com set filetype=markdown

" Autocommand for a domain (i.e. github.com)
au nvim_ghost_user_autocommands User *github.com set filetype=markdown

" Multiple autocommands can be specified like so -
augroup nvim_ghost_user_autocommands
  au User www.reddit.com,www.stackoverflow.com set filetype=markdown
  au User www.reddit.com,www.github.com set filetype=markdown
  au User *github.com set filetype=markdown
augroup END

Suppressing all messages

If you want to suppress all messages from nvim-ghost, then add the following to your init.vim -

let g:nvim_ghost_super_quiet = 1

Other Operating Systems

Please understand my situation. This plugin primarily uses a binary with it's own packaged version of python3 and comes with the required packages pre-installed, but the binary itself needs to be made on a machine running the same OS as the target machine. (i.e. the Linux binary needs to be built on a Linux machine, macOS binary on macOS, etc.)

The binaries are made using GitHub Actions, which only provides Linux, Windows and macOS containers. So, it is impossible for me to distribute binaries for other OSes.

So, to use this plugin, you shall need to install python3 (with pip) in your system. Then, head off to this plugin's directory, and run -

python -m pip install -r requirements.txt

This needs to be done only once. This command installs the required packages from pip.

Next, add the following two lines to your init.vim -

let g:nvim_ghost_use_script = 1
let g:nvim_ghost_python_executable = '/usr/bin/python'

Replace /usr/bin/python with the absolute path of the python executable installed in your system. Now, restart neovim, and the plugin should work.

If you face any problems, please open an issue. I will try my best to work out a solution for you.