Giter Club home page Giter Club logo

idris2-vim's Introduction

Idris 2 mode for vim

This is an Idris2 mode for vim which features interactive editing, syntax highlighting, indentation and optional syntax checking via Syntastic. If you need a REPL I recommend using Vimshell. It is mostly cloned from the original idris-mode. Unlike the Idris 1 mode, there is no need to have an Idris REPL running - it invokes Idris 2 directly.

If there is a .ipkg file in any of the parent directories, the mode will use that as the root of the source tree, and process any options declared in it (for example, to load packages).

Not all of the commands work yet. Note that the keyboard shortcuts have been updated since Idris 1 to be consistent with the Atom mode (e.g. <LocalLeader>a to add definition, rather than <LocalLeader>d) although the old shortcuts still work.

Screenshot

Installation

I recommend using Pathogen for installation. Simply clone this repo into your ~/.vim/bundle directory and you are ready to go.

cd ~/.vim/bundle
git clone https://github.com/edwinb/idris2-vim.git

Manual Installation

Copy content into your ~/.vim directory.

Be sure that the following lines are in your .vimrc

syntax on
filetype on
filetype plugin indent on

Features

Apart from syntax highlighting, indentation, and unicode character concealing, idris-vim offers some neat interactive editing features. For more information on how to use it, read this blog article by Edwin Brady on Interactive Idris editing with vim.

Interactive Editing Commands

Idris2 mode for vim offers interactive editing capabilities, the following commands are supported.

<LocalLeader>r reload file

<LocalLeader>t show type

<LocalLeader>a Create an initial clause for a type declaration.

<LocalLeader>c case split

<LocalLeader>mc make case

<LocalLeader>w add with clause

<LocalLeader>e evaluate expression

<LocalLeader>l make lemma

<LocalLeader>m add missing clause

<LocalLeader>f refine item

<LocalLeader>o obvious proof search

<LocalLeader>s proof search

<LocalLeader>i open idris response window

<LocalLeader>d show documentation

Configuration

Indentation

To configure indentation in idris-vim you can use the following variables:

  • let g:idris_indent_if = 3

      if bool
      >>>then ...
      >>>else ...
    
  • let g:idris_indent_case = 5

      case xs of
      >>>>>[]      => ...
      >>>>>(y::ys) => ...
    
  • let g:idris_indent_let = 4

      let x = 0 in
      >>>>x
    
  • let g:idris_indent_where = 6

      where f : Int -> Int
      >>>>>>f x = x
    
  • let g:idris_indent_do = 3

      do x <- a
      >>>y <- b
    
  • let g:idris_indent_rewrite = 8

      rewrite prf in expr
      >>>>>>>>x
    

Concealing

Concealing with unicode characters is off by default, but let g:idris_conceal = 1 turns it on.

Tab Characters

If you simply must use tab characters, and would prefer that the ftplugin not set expandtab add let g:idris_allow_tabchar = 1.

idris2-vim's People

Contributors

edwinb avatar shinkage avatar buzden avatar ziman avatar mrkgnao avatar neriglissar avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.