]> git.wincent.com - docvim.git/log
docvim.git
6 years agoAdd bin/repl
Greg Hurrell [Sat, 26 Mar 2016 00:24:02 +0000 (17:24 -0700)] 
Add bin/repl

6 years agoAdd basic list item parsing
Greg Hurrell [Sat, 26 Mar 2016 00:23:20 +0000 (17:23 -0700)] 
Add basic list item parsing

Single-line items only for now, and no parsing of nested nodes (like
links and such).

6 years agoGet rid of more tokens
Greg Hurrell [Sat, 26 Mar 2016 00:07:19 +0000 (17:07 -0700)] 
Get rid of more tokens

Of dubious value.

6 years agoKill off some useless tokens
Greg Hurrell [Sat, 26 Mar 2016 00:04:11 +0000 (17:04 -0700)] 
Kill off some useless tokens

6 years agoSwitch back to old restOfLine approach
Greg Hurrell [Sat, 26 Mar 2016 00:02:48 +0000 (17:02 -0700)] 
Switch back to old restOfLine approach

And use it in one other place.

6 years agoShow alternate restOfLine implementation
Greg Hurrell [Sat, 26 Mar 2016 00:02:07 +0000 (17:02 -0700)] 
Show alternate restOfLine implementation

Kind of sort of works, but is horridly unreadable. Probably going to
stick with what I had before but make it more efficient.

6 years agoRemove commented out code
Greg Hurrell [Fri, 25 Mar 2016 04:50:40 +0000 (21:50 -0700)] 
Remove commented out code

I tried to make the lookahead solution work, but is was pretty darn
ugly. Let's just get rid of this comment for now.

6 years agoTrim trailing whitespace on headings
Greg Hurrell [Fri, 25 Mar 2016 04:36:11 +0000 (21:36 -0700)] 
Trim trailing whitespace on headings

Horribly inefficient but easy-to-read `strip` implementation taken from:

http://stackoverflow.com/questions/6270324/in-haskell-how-do-you-trim-whitespace-from-the-beginning-and-end-of-a-string

The commented out bits are a sketch of a lookahead-based alternative
that I was in the process of writing when it occurred to me that I could
strip instead. I think I will go ahead and do that anyway, but for now I
wanted to put this in here to reflect my intermediate state.

6 years agoAdd test fixtures that I meant to include earlier
Greg Hurrell [Fri, 25 Mar 2016 04:21:35 +0000 (21:21 -0700)] 
Add test fixtures that I meant to include earlier

6 years agoReveal intentions
Greg Hurrell [Fri, 25 Mar 2016 04:17:39 +0000 (21:17 -0700)] 
Reveal intentions

6 years agoGet subheadings parsing
Greg Hurrell [Fri, 25 Mar 2016 04:11:01 +0000 (21:11 -0700)] 
Get subheadings parsing

6 years agoDeal with trailing empty comment lines
Greg Hurrell [Fri, 25 Mar 2016 03:54:51 +0000 (20:54 -0700)] 
Deal with trailing empty comment lines

I really, really don't like the `try` at the start of `blockElement`
(could lead to some pretty expensive back-tracking), but for now that is
how I've been able to make the tests pass.

6 years agoAdd convenience wrappers
Greg Hurrell [Fri, 25 Mar 2016 01:46:38 +0000 (18:46 -0700)] 
Add convenience wrappers

Because I am too lazy to type out the full commands.

6 years agoHandle blank lines and multiple link targets
Greg Hurrell [Fri, 25 Mar 2016 01:37:09 +0000 (18:37 -0700)] 
Handle blank lines and multiple link targets

6 years agoAdd basic link target support
Greg Hurrell [Fri, 25 Mar 2016 01:10:10 +0000 (18:10 -0700)] 
Add basic link target support

Parses a single target. Next up: permit multiple targets on a single
line.

6 years agoFix broken tests
Greg Hurrell [Fri, 25 Mar 2016 00:49:58 +0000 (17:49 -0700)] 
Fix broken tests

6 years agoUse --build-watch and document how to use it
Greg Hurrell [Thu, 24 Mar 2016 16:04:13 +0000 (09:04 -0700)] 
Use --build-watch and document how to use it

Along with some other tricks that I've learned.

6 years agoRemove an unreferenced import
Greg Hurrell [Thu, 24 Mar 2016 16:03:42 +0000 (09:03 -0700)] 
Remove an unreferenced import

6 years agoAdd .tmux file
Greg Hurrell [Thu, 24 Mar 2016 16:02:28 +0000 (09:02 -0700)] 
Add .tmux file

Which I run conveniently using this dotfile magic:

https://github.com/wincent/wincent/blob/3be6a3b840dec48ab/roles/dotfiles/files/.zsh/functions#L41-L80

6 years agoAdd FAQ
Greg Hurrell [Thu, 24 Mar 2016 15:57:34 +0000 (08:57 -0700)] 
Add FAQ

6 years agoMake it really obvious that Docvim is not ready for use yet
Greg Hurrell [Thu, 24 Mar 2016 15:40:10 +0000 (08:40 -0700)] 
Make it really obvious that Docvim is not ready for use yet

6 years agoRemove Lex module
Greg Hurrell [Thu, 24 Mar 2016 15:32:20 +0000 (08:32 -0700)] 
Remove Lex module

It was an experiment and it looks like I am going to continue with the
Parse module instead now.

6 years agoRecommend shorthand for running linter
Greg Hurrell [Thu, 24 Mar 2016 15:02:27 +0000 (08:02 -0700)] 
Recommend shorthand for running linter

6 years agoSwitch to Stack
Greg Hurrell [Thu, 24 Mar 2016 14:54:04 +0000 (07:54 -0700)] 
Switch to Stack

6 years agoRun `cabal freeze`
Greg Hurrell [Thu, 24 Mar 2016 14:06:58 +0000 (07:06 -0700)] 
Run `cabal freeze`

To get a reproducible build. Learnt about this while reading up on
Stack (which I will probably switch to anyway):

- https://www.fpcomplete.com/blog/2015/06/why-is-stack-not-cabal
- https://www.reddit.com/r/haskell/comments/3iush6/stack_vs_cabal/

6 years agoWrap Plaintext in Paragraph nodes
Greg Hurrell [Thu, 24 Mar 2016 13:53:46 +0000 (06:53 -0700)] 
Wrap Plaintext in Paragraph nodes

6 years agoStart thinking about "plaintext"
Greg Hurrell [Thu, 24 Mar 2016 13:45:45 +0000 (06:45 -0700)] 
Start thinking about "plaintext"

Markdown content. Will actually start with a paragraph node, I think,
but this was what I did first.

6 years agoFavor shorter applicative forms
Greg Hurrell [Thu, 24 Mar 2016 07:13:07 +0000 (00:13 -0700)] 
Favor shorter applicative forms

6 years agoGet multiple annotations working a bit more nicely
Greg Hurrell [Thu, 24 Mar 2016 05:44:00 +0000 (22:44 -0700)] 
Get multiple annotations working a bit more nicely

6 years agoTry to handle multiple annotations in a single doc block
Greg Hurrell [Thu, 24 Mar 2016 05:30:06 +0000 (22:30 -0700)] 
Try to handle multiple annotations in a single doc block

What to handle stuff like:

  let g:x=1 "Unset!
  "" @plugin foo bar
  " @dedent
  let g:y=1

But currently we just parse `@plugin` and the `@dedent` doesn't show up
in the AST.

6 years agoFix lint
Greg Hurrell [Thu, 24 Mar 2016 05:14:09 +0000 (22:14 -0700)] 
Fix lint

6 years agoMake DocBlocks contain lists of Nodes
Greg Hurrell [Thu, 24 Mar 2016 05:12:49 +0000 (22:12 -0700)] 
Make DocBlocks contain lists of Nodes

6 years agoHandle trailing comments
Greg Hurrell [Thu, 24 Mar 2016 04:14:42 +0000 (21:14 -0700)] 
Handle trailing comments

6 years agoFix lint
Greg Hurrell [Thu, 24 Mar 2016 02:04:10 +0000 (19:04 -0700)] 
Fix lint

6 years agoStart fleshing out docblock side of things
Greg Hurrell [Thu, 24 Mar 2016 02:02:30 +0000 (19:02 -0700)] 
Start fleshing out docblock side of things

6 years agoResolve ambiguity between comments and doc block comments
Greg Hurrell [Thu, 24 Mar 2016 01:56:14 +0000 (18:56 -0700)] 
Resolve ambiguity between comments and doc block comments

Without the `try` we fail to parse because `comment` sees '"' and then
dies when it `notFollowedBy` bails on seeing the '"'.

6 years agoBe explicit about Tasty imports
Greg Hurrell [Thu, 24 Mar 2016 01:53:48 +0000 (18:53 -0700)] 
Be explicit about Tasty imports

6 years agoAdd more fixtures
Greg Hurrell [Thu, 24 Mar 2016 01:33:41 +0000 (18:33 -0700)] 
Add more fixtures

The experience here is pretty delightful. Just add the `*.vim` files,
then run `cabal test`; it will create the files for you:

  Golden tests
    empty-function:                OK (0.02s)
    empty:                         OK (0.02s)
    function-bang:                 OK
      Golden file did not exist; created
    function-command-variants:     OK
      Golden file did not exist; created
    function-with-nested-contents: OK
      Golden file did not exist; created
    functions-with-attributes:     OK
      Golden file did not exist; created
    just-whitespace:               OK (0.02s)

Then you inspect them and commit.

6 years agoMake newline a little more greedy
Greg Hurrell [Thu, 24 Mar 2016 01:24:03 +0000 (18:24 -0700)] 
Make newline a little more greedy

I guess I am lying in the `newline` name now, but this is needed to make
stuff like this parse:

  fu Hi()
    " Contents
    unlet g:thing
  endf

Previously only this would pass:

  fu Hi()
  " Contents
  unlet g:thing
  endf

6 years agoAlphabetize
Greg Hurrell [Thu, 24 Mar 2016 01:17:20 +0000 (18:17 -0700)] 
Alphabetize

6 years agoParse comments
Greg Hurrell [Thu, 24 Mar 2016 01:16:48 +0000 (18:16 -0700)] 
Parse comments

6 years agoHorrible fix for colorization issue
Greg Hurrell [Wed, 23 Mar 2016 16:02:49 +0000 (09:02 -0700)] 
Horrible fix for colorization issue

Probably totally specific to my `$TERM` but can't think of anything
better for now.

6 years agoStrip diff headers
Greg Hurrell [Wed, 23 Mar 2016 15:44:21 +0000 (08:44 -0700)] 
Strip diff headers

This is a gross hack, probably at the wrong layer of abstraction (ie.
inside `goldenVsStringDiff'`, which supposedly doesn't know about the
program being used to make the diff).

Note that I had to temporarily turn off color in order to get my "@@"
prefix test to work (because otherwise we have a color escape sequence
at the start of the line with prevents it from being considered a
suffix).

Will think about whether I want to keep this in.

6 years agoCustomize golden test diff output
Greg Hurrell [Wed, 23 Mar 2016 15:09:33 +0000 (08:09 -0700)] 
Customize golden test diff output

Strip the verbose preface to the diff output.

6 years agoUse Git for diffs in order to get color
Greg Hurrell [Wed, 23 Mar 2016 04:01:16 +0000 (21:01 -0700)] 
Use Git for diffs in order to get color

They look like this:

  Golden tests
    empty-function:             FAIL (0.02s)
      Test output was different from 'tests/fixtures/parser/empty-function.golden'. Output of ["git","diff","--color","tests/fixtures/parser/empty-function.golden","/var/folders/wf/h41r9yss4_x42p080xqn5xtsjt0h71/T/empty-function.golden16807282475249.actual"]:
      diff --git a/tests/fixtures/parser/empty-function.golden b/var/folders/wf/h41r9yss4_x42p080xqn5xtsjt0h71/T/empty-function.golden16807282475249.actual
      index f8fcbc6..d117a50 100644
      --- a/tests/fixtures/parser/empty-function.golden
      +++ b/var/folders/wf/h41r9yss4_x42p080xqn5xtsjt0h71/T/empty-function.golden16807282475249.actual
      @@ -1,9 +1,3 @@
      -Unit
      -  [ FunctionDeclaration
      -      { functionBang = False
      -      , functionName = "Foo"
      -      , functionArguments = ()
      -      , functionAttributes = []
      -      , functionBody = []
      -      }
      -  ]
      +"(eval)" (line 2, column 3):
      +unexpected "l"
      +expecting endfunction
    empty:                      OK (0.02s)
    just-whitespace:            OK (0.02s)

I still might want to use `goldenTest` to make something custom that
strips the darn header, which is super verbose.

6 years agoMake golden output somewhat readable
Greg Hurrell [Wed, 23 Mar 2016 03:51:57 +0000 (20:51 -0700)] 
Make golden output somewhat readable

Instead of:

  Golden tests
    empty-function:             FAIL
      Test output was different from 'tests/fixtures/parser/empty-function.golden'. It was: "\"(eval)\" (line 2, column 3):\nunexpected \"l\"\nexpecting endfunction\n"
    empty:                      OK
    just-whitespace:            OK

We have:

  Golden tests
    empty-function:             FAIL
      Test output was different from 'tests/fixtures/parser/empty-function.golden'. Output of ["diff","-u","-d","--label","empty-function.expected","tests/fixtures/parser/empty-function.golden","--label","empty-function.actual","/var/folders/wf/h41r9yss4_x42p080xqn5xtsjt0h71/T/empty-function.golden16807282475249.actual"]:
      --- empty-function.expected
      +++ empty-function.actual
      @@ -1,9 +1,3 @@
      -Unit
      -  [ FunctionDeclaration
      -      { functionBang = False
      -      , functionName = "Foo"
      -      , functionArguments = ()
      -      , functionAttributes = []
      -      , functionBody = []
      -      }
      -  ]
      +"(eval)" (line 2, column 3):
      +unexpected "l"
      +expecting endfunction
    empty:                      OK
    just-whitespace:            OK

Still might consider using `git diff` to force color, and maybe some
fancy override to get rid of that ugly long "Test output was different
from" line.

6 years agoSet up cabal sandbox
Greg Hurrell [Wed, 23 Mar 2016 03:36:15 +0000 (20:36 -0700)] 
Set up cabal sandbox

To try to hopefully avoid some clowntownery later on.

Reference: http://coldwa.st/e/blog/2013-08-20-Cabal-sandbox.html

6 years agoAdd fixture files
Greg Hurrell [Wed, 23 Mar 2016 03:26:17 +0000 (20:26 -0700)] 
Add fixture files

6 years agoGet golden tests working properly
Greg Hurrell [Wed, 23 Mar 2016 02:04:26 +0000 (19:04 -0700)] 
Get golden tests working properly

Some trickiness here:

- Having to use `pack` to get a `ByteString` from a `String`.
- Having to nest a `do` block because you can't mix and match monads (in
this case, "List" and `IO` in a single block).

6 years agoStart sketching out "golden" testing
Greg Hurrell [Wed, 23 Mar 2016 01:40:55 +0000 (18:40 -0700)] 
Start sketching out "golden" testing

6 years agoHook up pretty-show
Greg Hurrell [Tue, 22 Mar 2016 16:01:08 +0000 (09:01 -0700)] 
Hook up pretty-show

I am going to need this for my "tasty-golden" tests, so that I can put
an input fixture in one file and an expected pretty-printed AST in
another.

6 years agoMake unit tests a little more real
Greg Hurrell [Tue, 22 Mar 2016 15:58:06 +0000 (08:58 -0700)] 
Make unit tests a little more real

Before going much further though I want to set up tasty-golden, so I can
take an input file, parse it, and compare the pretty-printed output.

Will need pretty printing before I do that though...

6 years agoParse `let x=1`
Greg Hurrell [Tue, 22 Mar 2016 15:28:04 +0000 (08:28 -0700)] 
Parse `let x=1`

Still doesn't come close to handling all the variants listed in `:help
:let`, but it's a start.

6 years agoAdd crude support for :let
Greg Hurrell [Tue, 22 Mar 2016 15:04:16 +0000 (08:04 -0700)] 
Add crude support for :let

Parses:

  let foo = 1

Doesn't yet parse:

  let foo=1

(Or a bunch of other forms mentioned under `:h :let`.)

6 years agoKill off some commented out code
Greg Hurrell [Tue, 22 Mar 2016 14:45:37 +0000 (07:45 -0700)] 
Kill off some commented out code

6 years agoHandle multiple lines of whitespace in a few places
Greg Hurrell [Tue, 22 Mar 2016 14:44:54 +0000 (07:44 -0700)] 
Handle multiple lines of whitespace in a few places

6 years agoLet EOF terminate statements as well
Greg Hurrell [Tue, 22 Mar 2016 14:37:16 +0000 (07:37 -0700)] 
Let EOF terminate statements as well

6 years agoMake docBlockStart error messages more readable
Greg Hurrell [Tue, 22 Mar 2016 14:36:52 +0000 (07:36 -0700)] 
Make docBlockStart error messages more readable

6 years agoRequire end-of-statement after :endf
Greg Hurrell [Tue, 22 Mar 2016 14:31:12 +0000 (07:31 -0700)] 
Require end-of-statement after :endf

Allows us to parse a trailing "endf\n".

Note that `:h :endf` says `:endf` must be on a line all by itself, but
this is not technically true. Vim will happily accept this:

  endf | echomsg "Hi!"

Even if it doesn't actually run the `:echomsg` call... It does, however,
complain with:

  E126: Missing :endfunction

if you try to give it something like:

  echo 1 | endf

I'm currently not handling that case, I think.

6 years agoAdd end-of-statement combinator
Greg Hurrell [Tue, 22 Mar 2016 14:21:52 +0000 (07:21 -0700)] 
Add end-of-statement combinator

Fixes the issue described in b52afe67bd403ef401c972c859093bbe.

6 years agoAdd initial support for parsing function bodies
Greg Hurrell [Tue, 22 Mar 2016 14:06:43 +0000 (07:06 -0700)] 
Add initial support for parsing function bodies

Some whitespace issues still to deal with. This won't parse:

  fu X()
  unlet g:thing
  endf

But this will:

  fu X()
  unlet g:thing endf

6 years agoFix lints
Greg Hurrell [Tue, 22 Mar 2016 13:59:10 +0000 (06:59 -0700)] 
Fix lints

6 years agoFix whitespace
Greg Hurrell [Tue, 22 Mar 2016 13:57:05 +0000 (06:57 -0700)] 
Fix whitespace

6 years agoParse :unlet
Greg Hurrell [Tue, 22 Mar 2016 13:55:39 +0000 (06:55 -0700)] 
Parse :unlet

6 years agoFlatten data types hierarchy more
Greg Hurrell [Tue, 22 Mar 2016 06:09:41 +0000 (23:09 -0700)] 
Flatten data types hierarchy more

6 years agoMove top-level whitespace skipping to unit combinator
Greg Hurrell [Tue, 22 Mar 2016 05:51:28 +0000 (22:51 -0700)] 
Move top-level whitespace skipping to unit combinator

6 years agoShow function attributes when pretty-printing FunctionDeclaration AST
Greg Hurrell [Tue, 22 Mar 2016 05:33:07 +0000 (22:33 -0700)] 
Show function attributes when pretty-printing FunctionDeclaration AST

6 years agoStart folding more things into Node data type
Greg Hurrell [Tue, 22 Mar 2016 03:43:48 +0000 (20:43 -0700)] 
Start folding more things into Node data type

6 years agoStart rejigging AST data types to make them flatter
Greg Hurrell [Tue, 22 Mar 2016 01:49:02 +0000 (18:49 -0700)] 
Start rejigging AST data types to make them flatter

The pseudo-inheritance thing is just not going to work out.

6 years agoHandle line continuation markers
Greg Hurrell [Tue, 22 Mar 2016 00:59:35 +0000 (17:59 -0700)] 
Handle line continuation markers

Probably horrible performance-wise, due to the `try` lookahead.

6 years agoUse terser syntax for newline combinator
Greg Hurrell [Tue, 22 Mar 2016 00:44:08 +0000 (17:44 -0700)] 
Use terser syntax for newline combinator

6 years agoParse function "attributes"
Greg Hurrell [Mon, 21 Mar 2016 15:56:40 +0000 (08:56 -0700)] 
Parse function "attributes"

`abort`, `range`, and `dict`.

Like Vim, we allow repetition, although it is kind of non-sensical, and
we also require the `:function` command to be on a line by itself.

Note the use of `sepEndBy` rather than `sepBy`, otherwise any trailing
whitespace will be taken to indicate that another attribute follows,
even though only a newline may follow.

6 years agoUse record syntax for FunctionDeclaration
Greg Hurrell [Mon, 21 Mar 2016 14:37:01 +0000 (07:37 -0700)] 
Use record syntax for FunctionDeclaration

Only at the `data` type declaration, not at the usage sites (yet).
Primarily do make it self-documenting, but as I add more options it will
become useful to use record accessors at usage sites as well.

6 years agoImprove a code comment
Greg Hurrell [Mon, 21 Mar 2016 14:31:06 +0000 (07:31 -0700)] 
Improve a code comment

6 years agoMake `command` function more readable at callsites
Greg Hurrell [Mon, 21 Mar 2016 14:27:39 +0000 (07:27 -0700)] 
Make `command` function more readable at callsites

At the cost of some internal complexity.

6 years agoIndicate declaration vs redeclaration with a Bool
Greg Hurrell [Mon, 21 Mar 2016 14:10:12 +0000 (07:10 -0700)] 
Indicate declaration vs redeclaration with a Bool

At the same time, switched from monadic to applicative style. I expect
I'll need to switch back to monadic before this is all over, but for
now, this is a simplification.

6 years agoFix a couple of whitespace-handling errors
Greg Hurrell [Mon, 21 Mar 2016 07:21:22 +0000 (00:21 -0700)] 
Fix a couple of whitespace-handling errors

6 years agoFix lints
Greg Hurrell [Mon, 21 Mar 2016 07:15:55 +0000 (00:15 -0700)] 
Fix lints

6 years agoPretty print arg lists
Greg Hurrell [Mon, 21 Mar 2016 07:08:18 +0000 (00:08 -0700)] 
Pretty print arg lists

6 years agoParse function arguments
Greg Hurrell [Mon, 21 Mar 2016 06:45:08 +0000 (23:45 -0700)] 
Parse function arguments

6 years agoDRY up function declaration constructors
Greg Hurrell [Mon, 21 Mar 2016 06:36:34 +0000 (23:36 -0700)] 
DRY up function declaration constructors

6 years agoTidy
Greg Hurrell [Mon, 21 Mar 2016 06:27:00 +0000 (23:27 -0700)] 
Tidy

6 years agoVariable function names
Greg Hurrell [Mon, 21 Mar 2016 06:18:10 +0000 (23:18 -0700)] 
Variable function names

6 years agoExpect function name
Greg Hurrell [Mon, 21 Mar 2016 06:16:12 +0000 (23:16 -0700)] 
Expect function name

Hardcoded "name" for now just to show that this can work.

6 years agoAdd preliminary support for :endfunction
Greg Hurrell [Mon, 21 Mar 2016 05:49:58 +0000 (22:49 -0700)] 
Add preliminary support for :endfunction

6 years agoProvide example custom show instance
Greg Hurrell [Sun, 20 Mar 2016 14:36:29 +0000 (07:36 -0700)] 
Provide example custom show instance

Prints "[VimL function]"/"[VimL function!]" instead of "[VimL
FunctionDeclaration]"/"[VimL FunctionRedeclaration]".

Not sure whether this is a pattern I want to follow, but I wanted an
example of it anyway.

6 years agoBetter error messages for `command` failure
Greg Hurrell [Sun, 20 Mar 2016 14:22:06 +0000 (07:22 -0700)] 
Better error messages for `command` failure

6 years agoFix precedence bug in command
Greg Hurrell [Sun, 20 Mar 2016 08:56:47 +0000 (01:56 -0700)] 
Fix precedence bug in command

Was matching "funcion" (note the missing "t").

6 years agoMake command helper
Greg Hurrell [Sun, 20 Mar 2016 08:48:34 +0000 (01:48 -0700)] 
Make command helper

6 years agoReturn FunctionDeclaration or FunctionRedeclaration conditionally
Greg Hurrell [Sun, 20 Mar 2016 08:17:26 +0000 (01:17 -0700)] 
Return FunctionDeclaration or FunctionRedeclaration conditionally

Based on absence/presence of trailing exclamation point.

6 years agoShow alternate means of matching fu, fun, func etc
Greg Hurrell [Sun, 20 Mar 2016 08:08:09 +0000 (01:08 -0700)] 
Show alternate means of matching fu, fun, func etc

6 years agoMake FunctionDeclaration simpler
Greg Hurrell [Sun, 20 Mar 2016 08:06:23 +0000 (01:06 -0700)] 
Make FunctionDeclaration simpler

No contents; just the abstract token.

6 years agoShow one way to match fu(n(c(t(i(o(n?)?)?)?)?)?)?
Greg Hurrell [Sun, 20 Mar 2016 08:02:39 +0000 (01:02 -0700)] 
Show one way to match fu(n(c(t(i(o(n?)?)?)?)?)?)?

All the backtracking via `try` is probably not very efficient, so I will
show another way to do this presently (or at least, I intend to).

6 years agoGradually start reworking VimL parsing
Greg Hurrell [Sun, 20 Mar 2016 07:57:50 +0000 (00:57 -0700)] 
Gradually start reworking VimL parsing

Starting at "function".

6 years agoSplit into executable and library
Greg Hurrell [Sun, 20 Mar 2016 07:26:47 +0000 (00:26 -0700)] 
Split into executable and library

Apparently all the cool kids are doing it.

6 years agoAdd tasty tests
Greg Hurrell [Sun, 20 Mar 2016 06:02:09 +0000 (23:02 -0700)] 
Add tasty tests

   cabal install --enable-tests
   cabal configure --enable-tests
   cabal test

6 years agoSet up test suite for running HLint from cabal
Greg Hurrell [Sun, 20 Mar 2016 05:44:23 +0000 (22:44 -0700)] 
Set up test suite for running HLint from cabal

With:

    cabal test

After one-time set-up:

    cabal configure --enable -tests

6 years agoFix hlint nits
Greg Hurrell [Sun, 20 Mar 2016 05:25:22 +0000 (22:25 -0700)] 
Fix hlint nits

Mostly unnecessary parens, plus one unnecessary `$`.

6 years agoUse parseTest
Greg Hurrell [Sun, 20 Mar 2016 05:00:51 +0000 (22:00 -0700)] 
Use parseTest

6 years agoStart really parsing VimL
Greg Hurrell [Sun, 20 Mar 2016 04:59:27 +0000 (21:59 -0700)] 
Start really parsing VimL