All Projects → eraserhd → Parinfer Rust

eraserhd / Parinfer Rust

Licence: isc
A Rust port of parinfer.

Programming Languages

rust
11053 projects
clojure
4091 projects
scheme
763 projects
lisp
113 projects

Labels

Projects that are alternatives of or similar to Parinfer Rust

Webpack Fix Style Only Entries
Webpack plugin to solve the problem of having a style only entry (css/sass/less) generating an extra js file.
Stars: ✭ 250 (-7.41%)
Mutual labels:  plugin
Damnwebscanner
Another web vulnerabilities scanner, this extension works on Chrome and Opera
Stars: ✭ 254 (-5.93%)
Mutual labels:  plugin
Android Mvp Mvvm Flytour
🔥🔥🔥 FlyTour是Android MVVM+MVP+Dagger2+Retrofit+RxJava+组件化+插件组成的双编码架构+双工程架构+双语言Android应用开发框架,通过不断的升级迭代该框架已经有了十个不同的版本,5.0之前工程架构采用gradle配置实现组件化,5.0之后的工程架构采用VirtualAPK实现了插件化,5.0之前采用Java编码实现,5.0之后采用Kotlin编码实现,编码架构由MVVM和MVP组成,工程架构和编码架构及编码语言开发者可根据自己具体的项目实际需求去决定选择使用,该框架是Android组件化、Android插件化、Android MVP架构、Android MVVM架构的集大成者,帮助你快速的搭建自己的App项目开发框架,以便把主要的精…
Stars: ✭ 2,948 (+991.85%)
Mutual labels:  plugin
Webpack Ops
📁 webpack bundle visualization // optimization // config tool
Stars: ✭ 251 (-7.04%)
Mutual labels:  plugin
S2s
Coding time Compile. A tool to write code fastest.
Stars: ✭ 254 (-5.93%)
Mutual labels:  plugin
Excel2unity
一个为Unity3D编写的插件,可以快速地将Excel文件转换为JSON、CSV和XML
Stars: ✭ 255 (-5.56%)
Mutual labels:  plugin
Pytest Selenium
Plugin for running Selenium with pytest
Stars: ✭ 246 (-8.89%)
Mutual labels:  plugin
Octoprint Enclosure
OctoPrint Enclosure Plugin
Stars: ✭ 267 (-1.11%)
Mutual labels:  plugin
Cathook
Training Software for the game Team Fortress 2
Stars: ✭ 256 (-5.19%)
Mutual labels:  plugin
Nocheatplus
Anti cheating plugin for Minecraft (Bukkit/Spigot).
Stars: ✭ 260 (-3.7%)
Mutual labels:  plugin
Disintegrate
A small JS library to break DOM elements into animated Canvas particles.
Stars: ✭ 251 (-7.04%)
Mutual labels:  plugin
Al usdmaya
This repo is no longer updated. Please see https://github.com/Autodesk/maya-usd
Stars: ✭ 253 (-6.3%)
Mutual labels:  plugin
Motrix Webextension
A chrome extension for the Motrix Download Manager
Stars: ✭ 253 (-6.3%)
Mutual labels:  plugin
Gdbghidra
gdbghidra - a visual bridge between a GDB session and GHIDRA
Stars: ✭ 251 (-7.04%)
Mutual labels:  plugin
Cordova Plugin Admob
Basic Cordova Plugin for AdMob
Stars: ✭ 263 (-2.59%)
Mutual labels:  plugin
Grunt Webpack
integrate webpack into grunt build process
Stars: ✭ 249 (-7.78%)
Mutual labels:  plugin
Juce
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.
Stars: ✭ 3,841 (+1322.59%)
Mutual labels:  plugin
Clangformat Xcode
Xcode plug-in to to use clang-format from in Xcode and consistently format your code with Clang
Stars: ✭ 2,852 (+956.3%)
Mutual labels:  plugin
Vim Crystalline
Functions for taking the monotony out of building your own fancy statusline in Vim
Stars: ✭ 264 (-2.22%)
Mutual labels:  plugin
Runtimeunityeditor
In-game inspector and debugging tools for applications made with Unity3D game engine
Stars: ✭ 254 (-5.93%)
Mutual labels:  plugin

= parinfer-rust

Infer parentheses for Clojure, Lisp and Scheme.

https://github.com/eraserhd/parinfer-rust

A full-featured, super fast implementation of https://shaunlebron.github.io/parinfer/[Shaun Lebron’s parinfer]. This repo has Vim, Neovim, and Kakoune plugins, and an https://github.com/justinbarclay/parinfer-rust-mode[Emacs plugin] is available. The Rust library can be called from other editors that can load dynamic libraries.

This plugin, unlike others available for Vim, implements "smart" mode. Rather than switching between "paren" mode and "indent" mode, parinfer uses information about how the user is changing the file to decide what to do.

== Installing

Dependencies:

=== Stand-alone CLI

If you just want to run parinfer-rust from the command-line:

.... $ cargo build --release $ cargo install ....

=== Vim and Neovim

==== +pathogen+

If you are using Tim Pope’s +pathogen+:

.... $ cd ~/.vim/bundle $ git clone [email protected]:eraserhd/parinfer-rust.git $ cd ~/.vim/bundle/parinfer-rust $ cargo build --release ....

==== +vim-plug+

[source,viml]

Plug 'eraserhd/parinfer-rust'

Then, build project using cargo:

.... $ cd /path/to/parinfer-rust $ cargo build --release ....

Or, with optional automatic recompilation on update:

[source,viml]

Plug 'eraserhd/parinfer-rust', {'do': \ 'cargo build --release'}

If you are a NixOS user, you can use this command instead: [source,viml]

Plug 'eraserhd/parinfer-rust', {'do': \ 'nix-shell --run "cargo build --release "'}

=== Kakoune

==== +plug.kak+

Add this to your +kakrc+

[source,kak]

plug "eraserhd/parinfer-rust" do %{ cargo install --force --path . } config %{ hook global WinSetOption filetype=(clojure|lisp|scheme|racket) %{ parinfer-enable-window -smart } }

Re-source your +kakrc+ or restart Kakoune. Then run +:plug-install+. +plug.kak+ will download, build and install plugin for you. Optionally add +cargo clean+ line to the +do+ block to clean plugin from build files, thus making it load a bit faster.

==== Manual

.... $ cd ~/my-projects $ git clone [email protected]:eraserhd/parinfer-rust.git $ cd parinfer-rust $ make install $ cargo build --release $ cargo install ....

Add this to your +kakrc+

[source,kak]

hook global WinSetOption filetype=(clojure|lisp|scheme|racket) %{ parinfer-enable-window -smart }

==== NixOS or nix-darwin

[source,nix]

{ environment.systemPackages = let myKakoune = pkgs.wrapKakoune pkgs.kakoune-unwrapped { configure = { plugins = with self.kakounePlugins; [ parinfer-rust ]; }; }; in [ myKakoune ]; }

Alternately, you can add your plugins as an overlay:

[source,nix]

{ nixpkgs.overlays = [ (self: super: { kakoune = super.wrapKakoune self.kakoune-unwrapped { configure = { plugins = with self.kakounePlugins; [ parinfer-rust ]; }; }; }) ];

environment.systemPackages = [ pkgs.kakoune ]; }

=== Emacs

To install parinfer-rust for Emacs follow the instructions at https://github.com/justinbarclay/parinfer-rust-mode#installing[parinfer-rust-mode.el]

== Building WebAssembly

WebAssembly currently needs the ``nigthly'' toolchain:

.... $ rustup update $ rustup install nightly $ rustup target add wasm32-unknown-unknown --toolchain nightly $ cargo +nightly install cargo-web ....

It can then be built with:

.... $ cargo +nightly web build --release ....

== Tests

The CI server uses Nix to make reproducible build and test environments. It's a good idea to run tests with it.

.... $ nix-build release.nix # Build and test everything $ cargo test # Run the native tests $ cargo +nightly web test # Test the WebAssembly version $ vim --clean -u tests/vim/run.vim # Test against locally-installed Vim $ ( cd tests/kakoune && ./run.sh ) # Test against locally-installed Kakoune $ nix-build release.nix -A vim-tests # Test against Nix Vim package $ nix-build release.nix -A neovim-tests # Test against Nix Neovim package $ nix-build release.nix -A kakoune-tests # Test against Nix Kakoune package ....

Vim tests are in a nice, readable format in +tests/vim/test-cases.md+. Please add tests for any new features (or even old ones!). You can set the +VIM_TO_TEST+ environment variable to Vim’s path to test weird or different builds.

== Contributors

This wouldn’t be possible without the work of others:

  • Shaun Lebron - Inventing parinfer and doing the math.
  • Case Nelson - Writing the nvim-parinfer, from which VimL code and some inspiration was stolen.
  • Justin Barclay - Emacs module.
  • Michael Camilleri - User-defined comments.
  • Mitsuhiro Nakamura - Support for Common Lisp and Scheme.

== License

link:LICENSE.md[ISC License]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].