tracyone / vinux

Swiss Army Knife,Dark power (neo)vim config
MIT License
244 stars 44 forks source link

Redefine session #65

Closed tracyone closed 1 year ago

tracyone commented 2 years ago

session 不仅需要记录文件位置,打开文件

我们还需要保存

  1. 类似ycm的py文件,或者其它补全所需要的配置文件
  2. 缩进和代码风格
  3. 主题
  4. 运行&调试&编译脚本

基于vim-startify的session功能来进行修改。

tracyone commented 1 year ago

所有文件不应该放在项目路径下,因为经常需要切换路径,所以应该放在.project下面。

tracyone commented 1 year ago
let g:startify_session_savecmds = []

< Include a list of cmdline commands which Vim will run upon loading the session. This can be useful to set various things (other than variables, |g:startify_session_savevars| above) which Vim may not normally save into the session file, as well as run external commands upon loading a session.

Example:

let g:startify_session_savecmds = [ \ 'silent !pdfreader ~/latexproject/main.pdf &' \ ] <

tracyone commented 1 year ago
diff --git a/after/ftplugin/c.vim b/after/ftplugin/c.vim
index 4d9d9dc..05890d2 100644
--- a/after/ftplugin/c.vim
+++ b/after/ftplugin/c.vim
@@ -67,6 +67,22 @@ setlocal cinoptions=:0,l1,t0,g0,(0)
 setlocal comments    =sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/
 setlocal cindent  "enable specific indenting for C code
 setlocal foldmethod=syntax
+
+if g:vinux_coding_style.cur_val == 'linux'
+    let g:vinux_tabwidth=8
+    set textwidth=80
+    set noexpandtab
+    set nosmarttab
+elseif g:vinux_coding_style.cur_val ==# 'mozilla'
+    let g:vinux_tabwidth=4
+elseif g:vinux_coding_style.cur_val ==# 'google'
+    let g:vinux_tabwidth=2
+elseif g:vinux_coding_style.cur_val ==# 'llvm'
+    let g:vinux_tabwidth=4
+elseif g:vinux_coding_style.cur_val ==# 'chromium'
+    let g:vinux_tabwidth=2
+endif
+
 execute 'setlocal tabstop='.g:vinux_tabwidth
 execute 'setlocal shiftwidth='.g:vinux_tabwidth
 execute 'setlocal softtabstop='.g:vinux_tabwidth
diff --git a/autoload/te/project.vim b/autoload/te/project.vim
index 179a8e4..9b7cf40 100644
--- a/autoload/te/project.vim
+++ b/autoload/te/project.vim
@@ -2,9 +2,31 @@

 function! te#project#clang_format(A,L,P) abort
     let l:temp=a:A.a:L.a:P
-    return ["LLVM", "GNU", "Google", "Chromium", "Microsoft", "Mozilla", "WebKit", "Linux"]
+    return ["llvm", "gnu", "google", "chromium", "microsoft", "mozilla", "webkit", "linux"]
 endfunction

+function! te#project#set_indent_options(coding_style)
+    let g:vinux_coding_style.cur_val = a:coding_style
+    if a:coding_style ==# 'linux'
+        let g:vinux_tabwidth=8
+        :silent! bufdo set textwidth=80
+        :silent! bufdo set noexpandtab
+        :silent! bufdo set nosmarttab
+    elseif a:coding_style ==# 'mozilla'
+        let g:vinux_tabwidth=4
+    elseif a:coding_style ==# 'google'
+        let g:vinux_tabwidth=2
+    elseif a:coding_style ==# 'llvm'
+        let g:vinux_tabwidth=4
+    elseif a:coding_style ==# 'chromium'
+        let g:vinux_tabwidth=2
+    else
+        let g:vinux_tabwidth=4
+    endif
+    execute 'silent! bufdo set tabstop='.g:vinux_tabwidth
+    execute 'silent! bufdo set shiftwidth='.g:vinux_tabwidth
+    execute 'silent! bufdo set softtabstop='.g:vinux_tabwidth
+endfunction
 "create a project
 "1. session
 "2. compile flag info
@@ -26,12 +48,6 @@ function! te#project#create_project() abort
             return -1
         endif
     endif
-    "session
-    if exists(":SSave") == 2
-        execute ":SSave ".l:name
-    elseif exists(":SaveSession") == 2
-        execute ":SaveSession ".l:name
-    endif
     "complete flag
     if get(g:, 'feat_enable_complete')
         if g:complete_plugin_type.cur_val ==# 'YouCompleteMe'
@@ -71,6 +87,7 @@ function! te#project#create_project() abort
                 else
                     call te#utils#run_command('clang-format -style='.l:coding_style.' -dump-config > .clang-format', function('te#file#copy_file'), ['.clang-format', l:project_name.'.clang-format'])
                 endif
+                call te#project#set_indent_options(l:coding_style)
             endif
         else
             let l:ret = te#file#copy_file('.clang-format', l:project_name.'.clang-format', 0)
@@ -92,6 +109,12 @@ function! te#project#create_project() abort
         call writefile([getcwd()], ".csdb", "a")
         let l:ret = te#file#copy_file('.csdb', l:project_name)
     endif
+    "session
+    if exists(":SSave") == 2
+        execute ":SSave ".l:name
+    elseif exists(":SaveSession") == 2
+        execute ":SaveSession ".l:name
+    endif
     return 0
 endfunction

diff --git a/rc/help.vim b/rc/help.vim
index 0b5b4eb..030ff63 100644
--- a/rc/help.vim
+++ b/rc/help.vim
@@ -24,6 +24,18 @@ let g:startify_change_to_vcs_root = 0
 let g:startify_session_sort = 1
 let g:startify_custom_header = []

+let g:startify_session_savevars = [
+            \ 'g:startify_session_savevars',
+            \ 'g:startify_session_savecmds',
+            \ 'g:vinux_coding_style.cur_val',
+            \ ]
+
+let g:startify_session_savecmds = [
+            \ 'call love#Apply()',
+            \ "call te#feat#source_rc('colors.vim')",
+            \ "call te#project#set_indent_options(g:vinux_coding_style.cur_val)"
+            \ ]
+
 let g:startify_commands = [
             \ {'o': [g:vinux_version, 'call te#utils#open_url("https://github.com/tracyone/vinux")']},
             \ {'v': ['Open vimrc', 'call feedkeys("\<Space>vc")']},
diff --git a/rc/options.vim b/rc/options.vim
index 9692f7b..aee2c33 100644
--- a/rc/options.vim
+++ b/rc/options.vim
@@ -92,20 +92,7 @@ endif
 set textwidth=160
 set expandtab
 set smarttab
-if g:vinux_coding_style.cur_val ==# 'linux'
-    let g:vinux_tabwidth=8
-    set textwidth=80
-    set noexpandtab
-    set nosmarttab
-elseif g:vinux_coding_style.cur_val ==# 'mozilla'
-    let g:vinux_tabwidth=4
-elseif g:vinux_coding_style.cur_val ==# 'google'
-    let g:vinux_tabwidth=2
-elseif g:vinux_coding_style.cur_val ==# 'llvm'
-    let g:vinux_tabwidth=4
-elseif g:vinux_coding_style.cur_val ==# 'chromium'
-    let g:vinux_tabwidth=2
-endif
+let g:vinux_tabwidth=4
 execute 'set tabstop='.g:vinux_tabwidth
 execute 'set shiftwidth='.g:vinux_tabwidth
 execute 'set softtabstop='.g:vinux_tabwidth

为.csdb指定一个路径???