• Stars
    star
    7
  • Rank 2,294,772 (Top 46 %)
  • Language
    Perl
  • License
    MIT License
  • Created over 8 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Offline Elm documentation access in your editor

Vim Elm Help

This plugin allows you to view documentation for any Elm dependencies your project has, both directly from within Vim as well as offline.

I wrote this plugin at elm-conf because I was working on some Elm code on the plane on my way to elm-conf, and I didn't like having to view the source of my dependencies to remember how to use certain functions. I also don't like viewing reference documentation in a web browser; I much prefer the offline, in-editor experience that plugins like manpageview and perlhelp provide when I'm working in C and Perl, respectively.

Since I wrote this hurriedly at a conference, it was rather hastily put together. It works for me, but your mileage may vary. That being said, I would love it if people played around with this and helped me out with contributions or comments!

Usage

Generate Docs

IMPORTANT: You need to do this part while online! After it's done, you're freeeeeee

The :ElmBuildDocs command will build a documentation database and put it into elm-docs.json at your project root.

Alternatively, you may do this from the command line, like so...

Run bin/build-docs.pl from the top level of your Elm project, and direct its output to elm-docs.json:

$ build-docs.pl > elm-docs.json

Use :ElmHelp

Install plugin/elm-help.vim however you like.

If you run the ElmHelp command with an argument, the documentation for that argument will be pulled up in a new window. For example, :ElmHelp Keyboard.

If you don't provide an argument, ElmHelp will use whatever word is under the cursor.

Ideas for improvement

There are many!

  • You need to be online to build the docs themselves, which is less than ideal
  • (related to above) Each module you use has its dependencies fetched, even if you have it in elm-stuff already
  • Doesn't generate docs for modules in your current project (this would be easy)
    • Don't cache the current module, though
  • Render markdown as text for docs pane (including transclusion of @docs)
  • Make links to other docs followable via Ctrl-] in docs pane
  • Tab complete symbols on Vim command line
  • Parse import statements in current buffer to find out what unqualified or alias-qualified identifiers resolve to, keeping in mind which symbols are imported from core by default
  • Hovering over a symbol could automatically show its documentation
  • Showing the docs in a preview window would be nice
  • Using the same window for show docs (instead of opening up a new one for each query) would be a fine alternative to the preview window
  • Offer omnicompletion for imports, exposing, after a dot
  • You could potentially provide gd and gD with this information
  • Write help file

More Repositories

1

lua-repl

A Lua REPL implemented in Lua for embedding in other programs
Lua
157
star
2

lua-term

Terminal operations for Lua
Lua
134
star
3

linotify

Inotify bindings for Lua
C
95
star
4

pluto

Heavy Duty Persistence for Lua
C
79
star
5

obvious

Widget library for the awesome window manager
Lua
65
star
6

lua-linenoise

Lua bindings for linenoise with UTF-8 support (https://github.com/yhirose/linenoise/tree/utf8-support)
C
47
star
7

linux-fake-battery-module

Fake Battery Module for the Linux kernel
C
41
star
8

tw-full-text-search

Full text search plugin for TiddlyWiki powered by lunr.js
JavaScript
25
star
9

ansicolors

ANSI terminal color manipulation for Lua.
Lua
23
star
10

lunr-mutable-indexes

Mutable indexes for lunr.js 2.1.x
JavaScript
20
star
11

git-pisect

Parallel regression finder for Git
Perl
20
star
12

sqlite-lua-extension

A SQLite extension that embeds a Lua interpreter into SQLite
C
19
star
13

lua-procure

A Pure Lua implementation of require()
Perl
18
star
14

idea-fight

A web application for helping you decide the priorities of your ideas
Elm
17
star
15

useful-scripts

Scripts from my private ~/bin-tage
Perl
16
star
16

vim-split-navigate

An experimental method for jumping to lines on screen
Vim Script
11
star
17

ruby-keepass

Ruby binding for libkpass
C
11
star
18

lua-typical

Fancy type names for Lua
Lua
10
star
19

awesome-config

My Awesome configuration
Lua
10
star
20

dotfiles

My dotfiles
Perl
9
star
21

queqiao

A higher-level interface for writing Vim plugins in Lua
Lua
9
star
22

twitter-reply-tracker

Provides a mechanism for tracking replies to a tweet, as well as a UI for searching them
TypeScript
8
star
23

term-drawille

Draw to your terminal using Braille characters
Perl
8
star
24

luabdb

A Berkeley DB binding for Lua.
C
8
star
25

vimfiles

My $HOME/.vim directory
Vim Script
7
star
26

sahara-sync

A free software (AGPL) alternative to Dropbox
Perl
7
star
27

luaperl

A Lua-Perl bridge for Lua
C
7
star
28

luael

Libedit bindings for Lua.
C
7
star
29

tiddlywiki-first-class-urls

An experimental plugin to make importing tiddlers easier
JavaScript
7
star
30

elm-drag

Track dragging motions when the mouse is down
Elm
6
star
31

tw-progress-bar

Progress bar widget for TiddlyWiki
JavaScript
6
star
32

elm-typing-tutor

A typing tutor for Russian written in Elm
Elm
6
star
33

language-of-the-month

Programming projects for language of the month (http://hoelz.ro/blog/language-of-the-month)
Elixir
6
star
34

firefox-keepass-autofill

Automatically fill in username/password combinations from a Keepass database.
JavaScript
5
star
35

semantic-diff

Semantic diff tool for Python 2
Python
5
star
36

autopilot

A daemon that allows you to automate actions to occur on changes in your computer's state
C
4
star
37

p6-xapian

Xapian bindings for Perl 6
Perl 6
4
star
38

vim-temporal-marks

Temporal marks for Vim
Vim Script
4
star
39

harbour-sudoku

Sudoku application for SailfishOS
QML
4
star
40

lua-proctitle

Set your process' name from Lua so that it shows up differently in programs like ps or netstat
C
4
star
41

p6-io-string

IO::String for Perl6
Perl 6
4
star
42

zsh-config

My ZSH configuration
Shell
4
star
43

inline-lua

Perl extension for embedding Lua scripts into Perl code
C
4
star
44

app-musicfind

Musicfind is a tool similar to find(1), but for manipulating music files
Perl
3
star
45

tw-modern-jasmine

Jasmine 3.x plugin for TiddlyWiki
JavaScript
3
star
46

dist-zilla-plugin-test-localbrew

Verify that your distribution tests well in a fresh perlbrew
Perl
3
star
47

plack-middleware-options

Implements HTTP OPTIONS method for Plack
Perl
3
star
48

Mac-FSEvents

Release history of Mac-FSEvents
C
3
star
49

sqlite-attribute-vtable

Attributes virtual table extension for SQLite
C
3
star
50

sqlite-lua-vtable

Implement SQLite virtual tables using Lua
C
3
star
51

p6-native-resources

Boilerplate helper for bundling native code
Perl 6
3
star
52

lua-tracer

Reload-free print debugging for Lua
Lua
3
star
53

bashrc

Bash configuration
Shell
3
star
54

hexe

An XMPP chatbot written in Perl 6
Perl 6
3
star
55

devel-repl-plugin-editor

Drop into your favorite editor from Devel::REPL
Perl
3
star
56

wwid

A todo list manager that tells you what to do
Perl
2
star
57

text-dokuwiki

Perl implementation of the DokuWiki parser
Perl
2
star
58

p6-priorityqueue

A priority queue data structure for Perl 6
Perl 6
2
star
59

lua-iterators

A Lua library for manipulating iterators
2
star
60

bash-completion-plugins-perlbrew

Perlbrew completion for bash
Perl
2
star
61

plack-test-anyevent

Test streaming PSGI-based applications using AnyEvent
Perl
2
star
62

plack-middleware-recorder

PSGI middleware for recording requests
Perl
2
star
63

p6-test-meta

A test library for testing test libraries
Perl
2
star
64

advent-of-code

Solutions to Advent of Code
Go
2
star
65

perl6-syntax

Editor support for Perl 6
Vim Script
2
star
66

elm-jargon

A repository of terminology used by the Elm community.
2
star
67

p6-algorithm-lcs

Implementation of longest common subsequence in Perl 6
Perl 6
2
star
68

p6-pod-eod

Moves declarative POD blocks to the end of the POD
Perl 6
2
star
69

devel-trace-syscall

Print a stack trace whenever a system call is made
Perl
2
star
70

track-spotify-plays

Lambda function to log my recently played songs from Spotify
Python
2
star
71

dzil-config

My Dist::Zilla configuration
Perl
1
star
72

mytrace

strace for MySQL
C
1
star
73

devel-repl-plugin-lazyload

Lazily load modules in your Devel::REPL
Perl
1
star
74

app-intelligentsia

Intelligentsia is a Identica/Twitter client written in Perl.
Perl
1
star
75

cpan-highlight

Google Chrome extension to highlight source code viewed on the CPAN
JavaScript
1
star
76

bash-completion-plugins-dzil

Bash::Completion support for Dist::Zilla
Perl
1
star
77

smart-alloc

A memory allocator for C
C
1
star
78

perl-power-tools

Slides for my Perl Power Tools Talk
JavaScript
1
star
79

xmpp-talk

The XMPP presentation I'm giving at MadMongers in December
TeX
1
star
80

bash-completion-plugin-test

Module for testing Bash::Completion plugins
Perl
1
star
81

perl-objectivec

Objective-C bridge for Perl
C
1
star
82

p6-class-contract

Class invariants for Perl 6
Perl 6
1
star
83

dzil-talk

The Dist::Zilla talk I'm giving at MadMongers in September
1
star
84

elm-tetris

An implementation of Tetris in Elm
Elm
1
star
85

pyweek-2014

PyWeek entry for 2014
Python
1
star
86

dev-study

Implementations of algorithms for study exercises
C
1
star
87

term-emulator

A Perl module to interpret and handle terminal escape sequences
Perl
1
star
88

blog

Source code and pages for my blog
JavaScript
1
star
89

plack-middleware-acme-yadayada

Middleware for handling the yada yada operator
Perl
1
star
90

luarepl-evlib

Use luarepl with an asynchronous event loop
C
1
star
91

vimlint

A lint-style tool for Vimscript
1
star
92

p6-algorithm-elo

Implementation of the Elo chess algorithm for Perl 6
Perl 6
1
star
93

mazes-for-programmers

https://pragprog.com/titles/jbmaze/mazes-for-programmers/
PostScript
1
star
94

mail-scripts

Perl scripts for organizing my e-mail
Perl
1
star
95

fx-zoom-lock

Prevents zooming on webpages
JavaScript
1
star
96

plack-middleware-setaccept

Sets the Accept header based on the suffix or query params of a request
Perl
1
star
97

lua-talk

The sources for the talk I'm giving to HackersNL in November 2012
Lua
1
star
98

ghoti

An offline issue browser for GitHub
Ruby
1
star
99

dancer-plugin-couchdb

CouchDB plugin for Dancer
Perl
1
star
100

anyevent-webservice-tracks

Access Tracks' API from AnyEvent
Perl
1
star