From 93fe791dac7782163a9a58255ea8409efa07558d Mon Sep 17 00:00:00 2001 From: Wang Shidong Date: Mon, 23 Nov 2020 22:26:58 +0800 Subject: [PATCH] Update doc for lang#sml layer (#3977) --- autoload/SpaceVim/layers/lang/sml.vim | 24 +++++--- doc/SpaceVim.txt | 84 +++++++++++++++++++++------ docs/cn/layers.md | 1 + docs/cn/layers/lang/sml.md | 66 +++++++++++++++++++++ docs/layers.md | 3 +- docs/layers/lang/sml.md | 69 ++++++++++++++++++++++ 6 files changed, 221 insertions(+), 26 deletions(-) create mode 100644 docs/cn/layers/lang/sml.md create mode 100644 docs/layers/lang/sml.md diff --git a/autoload/SpaceVim/layers/lang/sml.vim b/autoload/SpaceVim/layers/lang/sml.vim index 44ae824fc..b5f9aee71 100644 --- a/autoload/SpaceVim/layers/lang/sml.vim +++ b/autoload/SpaceVim/layers/lang/sml.vim @@ -6,6 +6,7 @@ " License: GPLv3 "============================================================================= +scriptencoding utf-8 "" " @section lang#sml, layer-lang-sml " @parentsection layers @@ -54,11 +55,22 @@ " smlnj_path = "/usr/local/smlnj/bin/sml" " mlton_path = "/usr/local/bin/mlton" " repl_options = '' -" conceal = 1 -" conceal_show_tick = 1 +" enable_conceal = 1 +" enable_conceal_show_tick = 1 " auto_create_def_use = 'always' " < +if exists('s:sml_file_head') + finish +else + let s:sml_file_head = [''] + let s:sml_repl_options = '' + let s:sml_enable_conceal = 0 +endif + + + + function! SpaceVim#layers#lang#sml#plugins() abort let l:plugins = [] call add(l:plugins, ['jez/vim-better-sml', { 'on_ft' : 'sml', 'build' : 'make' }]) @@ -96,10 +108,10 @@ function! s:language_specified_mappings() abort let g:_spacevim_mappings_space.l.s = {'name' : '+Send'} call SpaceVim#mapping#space#langSPC('nmap', ['l','s', 'i'], \ "call SpaceVim#plugins#repl#start('sml')", - \ "start REPL process", 1) + \ 'start REPL process', 1) call SpaceVim#mapping#space#langSPC('nmap', ['l','s', 'l'], \ "call SpaceVim#plugins#repl#send('raw', getline('.') . ';')", - \ "send line and keep code buffer focused", 1) + \ 'send line and keep code buffer focused', 1) call SpaceVim#mapping#space#langSPC('nmap', ['l','s', 'b'], \ 'call SpaceVim#plugins#repl#send("raw", join(getline(1, "$"), "\n") . ";")', \ 'send buffer and keep code buffer focused', 1) @@ -108,10 +120,6 @@ function! s:language_specified_mappings() abort \ 'send selection and keep code buffer focused', 1) endfunction -let s:sml_file_head = [''] -let s:sml_repl_options = '' -let s:sml_enable_conceal = 0 - function! SpaceVim#layers#lang#sml#set_variable(var) abort let g:sml_smlnj_executable = get(a:var, 'smlnj_path', 'sml') let g:sml_mlton_executable = get(a:var, 'mlton_path', 'mlton') diff --git a/doc/SpaceVim.txt b/doc/SpaceVim.txt index f47c1def5..7bcb8d0a1 100644 --- a/doc/SpaceVim.txt +++ b/doc/SpaceVim.txt @@ -153,23 +153,24 @@ CONTENTS *SpaceVim-contents* 68. lang#scala...............................|SpaceVim-layer-lang-scala| 69. lang#scheme.............................|SpaceVim-layer-lang-scheme| 70. lang#sh.....................................|SpaceVim-layer-lang-sh| - 71. lang#swig................................|SpaceVim-layer-lang-swift| - 72. lang#swig.................................|SpaceVim-layer-lang-swig| - 73. lang#tcl...................................|SpaceVim-layer-lang-tcl| - 74. lang#toml.................................|SpaceVim-layer-lang-toml| - 75. lang#typescript.....................|SpaceVim-layer-lang-typescript| - 76. lang#v.......................................|SpaceVim-layer-lang-v| - 77. lang#vbnet...............................|SpaceVim-layer-lang-vbnet| - 78. lang#xml...................................|SpaceVim-layer-lang-xml| - 79. lang#xquery.............................|SpaceVim-layer-lang-xquery| - 80. language server protocol........................|SpaceVim-layer-lsp| - 81. leaderf.....................................|SpaceVim-layer-leaderf| - 82. operator...................................|SpaceVim-layer-operator| - 83. shell.........................................|SpaceVim-layer-shell| - 84. test...........................................|SpaceVim-layer-test| - 85. tmux...........................................|SpaceVim-layer-tmux| - 86. tools#dash...............................|SpaceVim-layer-tools-dash| - 87. tools#zeal...............................|SpaceVim-layer-tools-zeal| + 71. lang#sml...................................|SpaceVim-layer-lang-sml| + 72. lang#swig................................|SpaceVim-layer-lang-swift| + 73. lang#swig.................................|SpaceVim-layer-lang-swig| + 74. lang#tcl...................................|SpaceVim-layer-lang-tcl| + 75. lang#toml.................................|SpaceVim-layer-lang-toml| + 76. lang#typescript.....................|SpaceVim-layer-lang-typescript| + 77. lang#v.......................................|SpaceVim-layer-lang-v| + 78. lang#vbnet...............................|SpaceVim-layer-lang-vbnet| + 79. lang#xml...................................|SpaceVim-layer-lang-xml| + 80. lang#xquery.............................|SpaceVim-layer-lang-xquery| + 81. language server protocol........................|SpaceVim-layer-lsp| + 82. leaderf.....................................|SpaceVim-layer-leaderf| + 83. operator...................................|SpaceVim-layer-operator| + 84. shell.........................................|SpaceVim-layer-shell| + 85. test...........................................|SpaceVim-layer-test| + 86. tmux...........................................|SpaceVim-layer-tmux| + 87. tools#dash...............................|SpaceVim-layer-tools-dash| + 88. tools#zeal...............................|SpaceVim-layer-tools-zeal| 7. Usage....................................................|SpaceVim-usage| 1. custom_plugins........................|SpaceVim-usage-custom_plugins| 2. repl............................................|SpaceVim-usage-repl| @@ -3262,6 +3263,55 @@ disabled by default, to enable this layer, add following snippet to your < +============================================================================== +LANG#SML *SpaceVim-layer-lang-sml* + +This layer is for Standard ML development. This layer provides basic syntax +highlighting and code completion , and it is disabled by default, to enable +this layer, add following snippet to your |SpaceVim-options| file. +> + [[layers]] + name = 'lang#sml' +< + +You can run `:SMLCheckHealth` to check whether the environment if OK. + +LAYER OPTIONS + +`smlnj_path`: Set the path to the smlnj executable, by default, it is `sml`. + +`mlton_path`: Set the path to the mlton executable, by default, it is `mlton`. + +`repl_options`: Options used for REPL, by default, it is ''. + +`auto_create_def_use`: Whether to build def-use files on save automatically. +By default, it is `mlb`. Valid values is: +> + 'mlb': Auto build def-use if there's a *.mlb file + 'always': Always build def-use file + 'never': Never build def-use file +< + +`enable_conceal`: `0`/`1`. Whether to enable concealing for SML files. `0` by +defaults. `'a` becomes `α` (or `'α`). `fn` becomes `λ.` + +`enable_conceal_show_tick`: `0`/`1`. When conceal is enabled, show `'α` for +`'a` instead of `α`. Helps for alignment. `0` by default. + +`sml_file_head`: Template for new sml file. + +Here is an example how to use above options: +> + [[layers]] + name = "lang#sml" + smlnj_path = "/usr/local/smlnj/bin/sml" + mlton_path = "/usr/local/bin/mlton" + repl_options = '' + enable_conceal = 1 + enable_conceal_show_tick = 1 + auto_create_def_use = 'always' +< + ============================================================================== LANG#SWIG *SpaceVim-layer-lang-swift* diff --git a/docs/cn/layers.md b/docs/cn/layers.md index d1e32c6f7..630b28c41 100644 --- a/docs/cn/layers.md +++ b/docs/cn/layers.md @@ -156,6 +156,7 @@ Vim 插件以及相关配置。而 SpaceVim 是以模块的方式来组织和管 | [lang#scheme](lang/scheme/) | 这一模块为 SpaceVim 提供了 Scheme 语言开发支持,包括语法高亮、语言服务器支持。 | | [lang#sh](lang/sh/) | 这一模块为 SpaceVim 提供了 Shell Script 的开发支持,包括代码补全、语法检查、代码格式化等特性。 | | [lang#slim](lang/slim/) | 这一模块为 slim 开发提供支持,主要包括了语法高亮。 | +| [lang#sml](lang/sml/) | 这一模块为 Standard ML 开发提供支持,包括交互式编程、一键运行等特性。 | | [lang#swift](lang/swift/) | 这一模块为 SpaceVim 提供了 Swift 的开发支持,包括语法高亮、语法检查等特性。 | | [lang#tcl](lang/tcl/) | 这一模块为 Tcl 开发提供支持,包括交互式编程、一键运行等特性。 | | [lang#toml](lang/toml/) | 这一模块为 toml 开发提供支持,主要包括语法高亮、对齐等特性 | diff --git a/docs/cn/layers/lang/sml.md b/docs/cn/layers/lang/sml.md new file mode 100644 index 000000000..ceba550cc --- /dev/null +++ b/docs/cn/layers/lang/sml.md @@ -0,0 +1,66 @@ +--- +title: "SpaceVim lang#sml 模块" +description: "这一模块为 Standard ML 开发提供支持,包括交互式编程、一键运行等特性。" +lang: zh +--- + +# [可用模块](../../) >> lang#sml + + + +- [模块简介](#模块简介) +- [启用模块](#启用模块) +- [模块选项](#模块选项) +- [快捷键](#快捷键) + - [交互式编程](#交互式编程) + - [运行当前脚本](#运行当前脚本) + + + +## 模块简介 + +这一模块为在 SpaceVim 中进行 Standard ML 开发提供了支持。 + +## 启用模块 + +可通过在配置文件内加入如下配置来启用该模块: + +```toml +[[layers]] + name = "lang#sml" +``` + +## 模块选项 + +- `smlnj_path`: 设置 `smlnj` 可执行文件路径, 默认是 `sml` +- `mlton_path`: 设置 `mlton` 可执行文件路径, 默认是 `mlton` +- `repl_options`: 设置交互式命令启动选项,默认为 `''` +- `auto_create_def_use`: 设置保存文件时,是否自动生成 `def-use` 文件,默认的值为 `mlb`。 + 可以使用的值包括: + - `mlb`: 仅当有 `*.mlb` 文件时,自动生成 `def-use` 文件 + - `always`: 总是生成 `def-use` 文件 + - `never`: 从不生成 `def-use` 文件 +- `enable_conceal`: `true`/`false`. 设置是否为SML 文件启用 concealing 特性,默认为禁用。 + `'a` 显示为 `α` (或者 `'α`). `fn` 显示为 `λ.` +- `enable_conceal_show_tick`: `true`/`false`,当启用 conceal 时,将 `'a` 显示为 `'α` 而非 `α`,默认为 `false` +- `sml_file_head`: 设置新建 sml 文件时的默认文件头模板 + +## 快捷键 + +### 交互式编程 + +启动 `sml` 交互进程,快捷键为: `SPC l s i`。 + +将代码传输给 REPL 进程执行: + +| 快捷键 | 功能描述 | +| ----------- | ----------------------- | +| `SPC l s b` | 发送整个文件内容至 REPL | +| `SPC l s l` | 发送当前行内容至 REPL | +| `SPC l s s` | 发送已选中的内容至 REPL | + +### 运行当前脚本 + +在编辑 sml 文件时,可通过快捷键 `SPC l r` 快速异步运行当前文件,运行结果会展示在一个独立的执行窗口内。 + + diff --git a/docs/layers.md b/docs/layers.md index 0b7ce8896..c4bd42c6c 100644 --- a/docs/layers.md +++ b/docs/layers.md @@ -84,7 +84,7 @@ Some layers are enabled by default. The following example shows how to disable ` | [edit](edit/) | Improve code edit expr in SpaceVim, provide more text opjects. | | [floobits](floobits/) | This layer adds support for the peer programming tool floobits to SpaceVim. | | [foldsearch](foldsearch/) | This layer provides functions that fold away lines that don't match a specific search pattern. | -| [format](format/) | Code formatting support for SpaceVim | +| [format](format/) | Code formatting layer for SpaceVim, includes a variety of formatters for many filetypes | | [fzf](fzf/) | This layers provide a heavily customized fzf centric work-flow | | [git](git/) | This layers adds extensive support for git | | [github](github/) | This layer provides GitHub integration for SpaceVim | @@ -166,6 +166,7 @@ Some layers are enabled by default. The following example shows how to disable ` | [lang#scheme](lang/scheme/) | This layer adds Scheme language support to SpaceVim | | [lang#sh](lang/sh/) | Shell script development layer, provides autocompletion, syntax checking, code format for bash and zsh script. | | [lang#slim](lang/slim/) | This layer is for slim development, includes syntax highlighting for slim file. | +| [lang#sml](lang/sml/) | This layer is for Standard ML development, provide syntax highlighting and repl support for sml file. | | [lang#swift](lang/swift/) | swift language support for SpaceVim, includes code completion, syntax highlighting | | [lang#tcl](lang/tcl/) | This layer is for Tcl development, provide syntax checking, code runner and repl support for tcl file. | | [lang#toml](lang/toml/) | This layer is for toml development, provide syntax checking, indent etc. | diff --git a/docs/layers/lang/sml.md b/docs/layers/lang/sml.md new file mode 100644 index 000000000..17235e92f --- /dev/null +++ b/docs/layers/lang/sml.md @@ -0,0 +1,69 @@ +--- +title: "SpaceVim lang#sml layer" +description: "This layer is for Standard ML development, provide syntax highlighting and repl support for sml file." +--- + +# [Available Layers](../../) >> lang#sml + + + +- [Description](#description) +- [Install](#install) +- [Layer options](#layer-options) +- [Key bindings](#key-bindings) + - [Running current script](#running-current-script) + - [Inferior REPL process](#inferior-repl-process) + + + +## Description + +This layer is for Standard ML development. + +## Install + +To use this configuration layer, update custom configuration file with: + +```toml +[[layers]] + name = "lang#sml" +``` + +## Layer options + +- `smlnj_path`: Set the path to the smlnj executable, by default, it is `sml`. +- `mlton_path`: Set the path to the mlton executable, by default, it is `mlton`. +- `repl_options`: Options used for REPL, by default, it is ''. +- `auto_create_def_use`: Whether to build def-use files on save automatically. + By default, it is `mlb`. Valid values is: + - `mlb`: Auto build def-use if there's a `*.mlb` file + - `always`: Always build def-use file + - `never`: Never build def-use file +- `enable_conceal`: `true`/`false`. Whether to enable concealing for SML files. `false` by defaults. + `'a` becomes `α` (or `'α`). `fn` becomes `λ.` +- `enable_conceal_show_tick`: `true`/`false`. When conceal is enabled, show `'α` for `'a` instead of `α`. + Helps for alignment. `false` by default. +- `sml_file_head`: Template for new sml file. + + +## Key bindings + +### Running current script + +The key binding for running current sml file is `SPC l r`. +It will run current file without loss focus, +and the result will be shown in a runner buffer. + +### Inferior REPL process + +Start a `sml` inferior REPL process with `SPC l s i`. + +Send code to inferior process commands: + +| Key Bindings | Descriptions | +| ------------ | ------------------------------------------------ | +| `SPC l s b` | send buffer and keep code buffer focused | +| `SPC l s l` | send line and keep code buffer focused | +| `SPC l s s` | send selection text and keep code buffer focused | + +