summaryrefslogtreecommitdiffstats
path: root/doc/haskell-vim.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/haskell-vim.txt')
-rw-r--r--doc/haskell-vim.txt163
1 files changed, 163 insertions, 0 deletions
diff --git a/doc/haskell-vim.txt b/doc/haskell-vim.txt
new file mode 100644
index 00000000..d2083ca5
--- /dev/null
+++ b/doc/haskell-vim.txt
@@ -0,0 +1,163 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
+
+*haskell-vim.txt* Last Change 2016 March 14
+===============================================================================
+===============================================================================
+
+===============================================================================
+CONTENTS *haskell-vim-contents*
+
+ 1. Features |haskell-vim-features|
+ 2. Configuration |haskell-vim-configuration|
+ 3. Highlighting |haskell-vim-indentation|
+
+===============================================================================
+FEATURES *haskell-vim-features*
+
+ * Covers a broader spectrum of keywords
+ * Highlighting for new features like type families, pattern synonyms,
+ arrow syntax, recursive do, role annotations, QuasiQuotation
+ * More contextual highlighting
+ (e.g. highlight "as" or "family" only in appropriate places)
+ * Smarter indentation
+ * Better Cabal support
+
+===============================================================================
+CONFIGURATION *haskell-vim-configuration*
+
+To enable the features you would like to use, just add the according line to
+your `.vimrc`.
+
+===============================================================================
+HIGHLIGHTING *haskell-vim-highlighting*
+
+`haskell-vim` can highlight additional keywords. This is enabled by setting
+the according variable to 1 in the `.vimrc`.
+
+ * |haskell-vim-enable-quantification|
+ * |haskell-vim-enable-recursivedo|
+ * |haskell-vim-enable-arrowsyntax|
+ * |haskell-vim-enable-pattern-synonyms|
+ * |haskell-vim-enable-typeroles|
+ * |haskell-vim-enable-static-pointers|
+ * |haskell-vim-classic-highlighting|
+ * |haskell-vim-disable-TH|
+
+ *haskell-vim-enable-quantification*
+`g:haskell_enable_quantification` Enables highlighting of `forall`.
+
+ *haskell-vim-enable-recursivedo*
+`g:haskell_enable_recursivedo` Enables highlighting of `mdo` and `rec`.
+
+ *haskell-vim-enable-arrowsyntax*
+`g:haskell_enable_arrowsyntax` Enables highlighting of `proc`.
+
+ *haskell-vim-enable-pattern-synonyms*
+`g:haskell_enable_pattern_synonyms` Enables highlighting of the `pattern` keyword.
+
+ *haskell-vim-enable-typeroles*
+`g:haskell_enable_typeroles` Enables highlighting of the `role` keyword, as
+ well as `phantom`, `norminal` and
+ `representational`.
+
+ *haskell-vim-enable-static-pointers*
+`g:haskell_enable_static_pointers` Enables highlighting of the `static` keyword.
+
+ *haskell-vim-classic-highlighting*
+`haskell-vim` has an opinionated highlighting. If you do not like that you can
+switch to a more traditional mode by setting `g:haskell_classic_highlighting`
+to 1.
+
+ *haskell-vim-disable-TH*
+Disabling Template Haskell and Quasiquoting syntax is possible by setting
+`g:haskell_disable_TH` to `1`.
+
+===============================================================================
+INDENTATION *haskell-vim-indentation*
+
+To configure indentation in `haskell-vim` you can use the following variables to
+change indentation depth, just add the according line to your `.vimrc`.
+
+You can disable the indentation by setting `g:haskell_indent_disable` to `1`.
+
+Haskell~
+
+ * |haskell-vim-indent-if|
+ * |haskell-vim-indent-case|
+ * |haskell-vim-indent-let|
+ * |haskell-vim-indent-where|
+ * |haskell-vim-indent-before-where|
+ * |haskell-vim-indent-after-bare-where|
+ * |haskell-vim-indent-do|
+ * |haskell-vim-indent-in|
+ * |haskell-vim-indent-guard|
+ *haskell-vim-indent-if*
+* let g:haskell_indent_if = 3 >
+
+ if bool
+ >>>then ...
+ >>>else ...
+<
+
+ *haskell-vim-indent-case*
+* let g:haskell_indent_case = 2 >
+
+ case xs of
+ >>[] -> ...
+ >>(y:ys) -> ...
+<
+ *haskell-vim-indent-let*
+* let g:haskell_indent_let = 4 >
+
+ let x = 0 in
+ >>>>x
+<
+ *haskell-vim-indent-where*
+* let g:haskell_indent_where = 6 >
+
+ where f :: Int -> Int
+ >>>>>>f x = x
+<
+ *haskell-vim-indent-before-where*
+* let g:haskell_indent_before_where = 2 >
+
+ foo
+ >>where
+<
+ *haskell-vim-indent-after-bare-where*
+* let g:haskell_indent_after_bare_where = 2 >
+
+ where
+ >>foo
+<
+ *haskell-vim-indent-do*
+* let g:haskell_indent_do = 3 >
+
+ do x <- a
+ >>>y <- b
+<
+ *haskell-vim-indent-in*
+* let g:haskell_indent_in = 1 >
+
+ let x = 1
+ >in x
+<
+ *haskell-vim-indent-guard*
+* let g:haskell_indent_guard = 2 >
+
+ f x y
+ >>|
+<
+
+Cabal~
+
+ * |cabal-vim-indent-section|
+
+ *cabal-vim-indent-section*
+* let g:cabal_indent_section = 2 (limited to max. 4 spaces) >
+
+ executable name
+ >>main-is: Main.hs
+<
+
+endif