diff --git a/autoload/SpaceVim/layers/lang/c.vim b/autoload/SpaceVim/layers/lang/c.vim index 9a84c9a89..ed5d48042 100644 --- a/autoload/SpaceVim/layers/lang/c.vim +++ b/autoload/SpaceVim/layers/lang/c.vim @@ -101,6 +101,8 @@ else endif " }}} +let s:format_on_save = 0 + " Load the APIs{{{ let s:SYSTEM = SpaceVim#api#import('system') let s:CPT = SpaceVim#api#import('vim#compatible') @@ -200,6 +202,26 @@ function! SpaceVim#layers#lang#c#config() abort else let s:highlight_cmd = 'ClighterEnable' endif + + " Format on save + if s:format_on_save + call SpaceVim#layers#format#add_filetype({ + \ 'filetype' : 'c', + \ 'enable' : 1, + \ }) + call SpaceVim#layers#format#add_filetype({ + \ 'filetype' : 'cpp', + \ 'enable' : 1, + \ }) + call SpaceVim#layers#format#add_filetype({ + \ 'filetype' : 'objc', + \ 'enable' : 1, + \ }) + call SpaceVim#layers#format#add_filetype({ + \ 'filetype' : 'objcpp', + \ 'enable' : 1, + \ }) + endif endfunction " }}} @@ -246,6 +268,10 @@ function! SpaceVim#layers#lang#c#set_variable(var) abort let s:enable_clang_syntax = get(a:var, 'enable_clang_syntax_highlight', s:enable_clang_syntax) + let s:format_on_save = get(a:var, + \ 'format_on_save', + \ s:format_on_save) + call extend(s:clang_std, get(a:var, 'clang_std', {})) endfunction " }}} diff --git a/docs/layers/lang/c.md b/docs/layers/lang/c.md index b1d8097a2..f0bc3dd99 100644 --- a/docs/layers/lang/c.md +++ b/docs/layers/lang/c.md @@ -92,6 +92,14 @@ defined in `.clang` file. For example: Note: If `.clang` file contains std configuration, it will override `clang_std` layer option. +`format_on_save`: Enable/disable file formatting when saving current file. By default, +it is disabled, to enable it: +```toml +[[layers]] + name = 'lang#c' + format_on_save = true + ``` + ## Key bindings | key bindings | Descriptions |