Neovim plugin for Unicode character conceal via tree-sitter (



Tired of seeing ``->`` when you could be seeing ``→``?
Find coding ligatures to be a `misuse of font features`_?

nvim-tree-sitter-unicode-coneal is a Neovim_ plugin ðat uses tree-sitter_ to conceal operators & keywords into ðeir Unicode representation.
Ðis is great for languages ðat haven’t yet implemented Unicode support or where language maintainers have yet to be inlightened by Unicode in ðeir projects.

Goals of ðis project:

• Replace symbols wið ðose common in pseudocode, maþematics, or |APL|_
• Don’t consider any of ð above as final if ð meaning is too obscure—particuarly wiþ |APL|.
• Don’t create symbols meanings just for ð ‘fun’ of it
• Don’t use a symbol if ðere’s not a good way to represent variants ðat would ruin symmetry (e.g. OCaml uses ``*`` & ``*.`` for ints & floats, so while ``×`` would be preferred, ðere’s no way to represent ``×.`` as a single character & readers would lose ð connection)

.. _`misuse of font features`:
.. _Neovim:
.. _tree-sitter:
.. |APL| replace:: :ac:`APL`
.. _|APL|:

Repository & Mirrors

Ð nvim-tree-sitter-unicode-conceal plugin may be found on `darcs hub`_.
Currently ðere are no mirrors.

.. _`darcs hub`:


Ðis project is licensed under GNU Lesser General Public License, version 2.1 (LGPL-2.1-or-later_) – see ð ``COPYING.txt`` & ``COPYING.lesser.txt`` files in ðis project for details.

.. _LGPL-2.1-or-later:


You will need a plugin ðat can lead Tree-sitter grammars.
nvim-treesitter_ seems to be ð community default despite lacking ð “-” between “tree” & “sitter”.
Regardless, wiþ ð Neovim community, ðere likely is anoðer option if you boðer searching.

.. _nvim-treesitter:


Include ðis repository into your package manager (if your package manager doesn’t support non-Git, raise issues wið ðem).
Ðere should be no additional intallation steps.
One may

If using basic nix
	.. code-block:: nix

		  nvim-tree-sitter-unicode-conceal = vimUtils.buildVimPluginFrom2Nix {
		    pname = "nvim-tree-sitter-unicode-conceal";
		    version = "$PATCH_DATE_OR_VERSION";
		    src = fetchdarcs {
		      url = "";
		      rev = "$PATCH_HASH_OR_TAG_OR_BRANCH";
		      sha256 = "$SHA256_HASH";

But it may be easier using `flake.nix` input’s overlay
	.. code-block:: nix

		  input = {
		    # …
		    nvim-tree-sitter-unicode-conceal = {
		      url = "tarball+";
		      inputs.nixpkgs.follows = "nixpkgs";

		  outputs = { self, nixpkgs, ... }@inputs: {
		    # …wherever you do your overlays…
		    overlays = [

.. NOTE::

	You are responsible for setting your ``filetype`` as well as ``conceallevel`` > 0.


Send patches to ð mailing list:


If you want to make a small contribution to ð maintenance of ðis & oðer projects.

	• Liberapay: `@toastal <>`_

	• Bitcoin: 39nLVxrXPnD772dEqWFwfZZbfTv5BvV89y_ (`BTC verified on Keybase <>`_)
	• Zcash: t1a9pD1D2SDTTd7dbc15KnKsyYXtGcjHuZZ_ (`ZEC verified on Keybase <>`_)

.. _39nLVxrXPnD772dEqWFwfZZbfTv5BvV89y: bitcoin://39nLVxrXPnD772dEqWFwfZZbfTv5BvV89y?message=Funding%20toastal%E2%80%99s%20nvim-tree-sitter-unicode-conceal%20development
.. _t1a9pD1D2SDTTd7dbc15KnKsyYXtGcjHuZZ: zcash://t1a9pD1D2SDTTd7dbc15KnKsyYXtGcjHuZZ?message=Funding%20toastal%E2%80%99s%20nvim-tree-sitter-unicode-conceal%20development