@k2works/claude-code-booster 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/assets/.gitattributes +4 -0
- package/lib/assets/Dockerfile +112 -104
- package/lib/assets/docs/reference/Vim/346/223/215/344/275/234/343/203/236/343/203/213/343/203/245/343/202/242/343/203/253.md +140 -0
- package/lib/assets/docs/reference//350/250/200/350/252/236/345/210/245/351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +390 -0
- package/lib/assets/flake.nix +32 -22
- package/lib/assets/ops/nix/environments/clojure/shell.nix +21 -0
- package/lib/assets/ops/nix/environments/dotnet/shell.nix +15 -0
- package/lib/assets/ops/nix/environments/elixir/shell.nix +18 -0
- package/lib/assets/ops/nix/environments/go/shell.nix +20 -0
- package/lib/assets/ops/nix/environments/haskell/shell.nix +20 -0
- package/lib/assets/ops/nix/environments/java/shell.nix +19 -0
- package/lib/assets/ops/nix/environments/node/shell.nix +20 -20
- package/lib/assets/ops/nix/environments/php/shell.nix +19 -0
- package/lib/assets/ops/nix/environments/python/shell.nix +20 -20
- package/lib/assets/ops/nix/environments/ruby/shell.nix +19 -0
- package/lib/assets/ops/nix/environments/rust/shell.nix +20 -0
- package/lib/assets/ops/nix/environments/scala/shell.nix +21 -0
- package/lib/assets/ops/nix/shells/.vimrc +550 -0
- package/lib/assets/ops/nix/shells/shell.nix +34 -21
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{ packages ? import <nixpkgs> {} }:
|
|
2
|
+
let
|
|
3
|
+
baseShell = import ../../shells/shell.nix { inherit packages; };
|
|
4
|
+
in
|
|
5
|
+
packages.mkShell {
|
|
6
|
+
inherit (baseShell) pure;
|
|
7
|
+
buildInputs = baseShell.buildInputs ++ (with packages; [
|
|
8
|
+
rustc
|
|
9
|
+
cargo
|
|
10
|
+
rustfmt
|
|
11
|
+
clippy
|
|
12
|
+
rust-analyzer
|
|
13
|
+
]);
|
|
14
|
+
shellHook = ''
|
|
15
|
+
${baseShell.shellHook}
|
|
16
|
+
echo "Rust development environment activated"
|
|
17
|
+
echo " - rustc: $(rustc --version)"
|
|
18
|
+
echo " - cargo: $(cargo --version)"
|
|
19
|
+
'';
|
|
20
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{ packages ? import <nixpkgs> {} }:
|
|
2
|
+
let
|
|
3
|
+
baseShell = import ../../shells/shell.nix { inherit packages; };
|
|
4
|
+
in
|
|
5
|
+
packages.mkShell {
|
|
6
|
+
inherit (baseShell) pure;
|
|
7
|
+
buildInputs = baseShell.buildInputs ++ (with packages; [
|
|
8
|
+
scala
|
|
9
|
+
sbt
|
|
10
|
+
metals
|
|
11
|
+
scala-cli
|
|
12
|
+
]);
|
|
13
|
+
shellHook = ''
|
|
14
|
+
${baseShell.shellHook}
|
|
15
|
+
echo "Scala development environment activated"
|
|
16
|
+
echo " - Scala: $(scala -version 2>&1 | head -n 1)"
|
|
17
|
+
echo " - sbt: $(sbt --version | head -n 1)"
|
|
18
|
+
echo " - Metals: $(metals --version 2>&1 | head -n 1)"
|
|
19
|
+
echo " - Scala CLI: $(scala-cli --version 2>&1 | head -n 1)"
|
|
20
|
+
'';
|
|
21
|
+
}
|
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
" set encoding=utf-8
|
|
2
|
+
scriptencoding utf-8
|
|
3
|
+
" ↑1行目は読み込み時の文字コードの設定
|
|
4
|
+
" ↑2行目はVim Script内でマルチバイトを使う場合の設定
|
|
5
|
+
" Vim scritptにvimrcも含まれるので、日本語でコメントを書く場合は先頭にこの設定が必要になる
|
|
6
|
+
set autowrite " 自動保存モード
|
|
7
|
+
let mapleader = "," "リーダーキーマップ
|
|
8
|
+
noremap \ ,
|
|
9
|
+
|
|
10
|
+
"----------------------------------------------------------
|
|
11
|
+
" 文字
|
|
12
|
+
"----------------------------------------------------------
|
|
13
|
+
set fileencoding=utf-8 " 保存時の文字コード
|
|
14
|
+
set fileencodings=ucs-boms,utf-8,euc-jp,cp932 " 読み込み時の文字コードの自動判別. 左側が優先される
|
|
15
|
+
set fileformats=unix,dos,mac " 改行コードの自動判別. 左側が優先される
|
|
16
|
+
set ambiwidth=double " □や○文字が崩れる問題を解決
|
|
17
|
+
|
|
18
|
+
"----------------------------------------------------------
|
|
19
|
+
" ステータスライン
|
|
20
|
+
"----------------------------------------------------------
|
|
21
|
+
set laststatus=2 " ステータスラインを常に表示
|
|
22
|
+
set showmode " 現在のモードを表示
|
|
23
|
+
set showcmd " 打ったコマンドをステータスラインの下に表示
|
|
24
|
+
set ruler " ステータスラインの右側にカーソルの位置を表示する
|
|
25
|
+
|
|
26
|
+
"----------------------------------------------------------
|
|
27
|
+
" コマンドモード
|
|
28
|
+
"----------------------------------------------------------
|
|
29
|
+
set wildmenu " コマンドモードの補完
|
|
30
|
+
set history=5000 " 保存するコマンド履歴の数
|
|
31
|
+
|
|
32
|
+
"----------------------------------------------------------
|
|
33
|
+
" タブ・インデント
|
|
34
|
+
"----------------------------------------------------------
|
|
35
|
+
set expandtab " タブ入力を複数の空白入力に置き換える
|
|
36
|
+
set tabstop=2 " 画面上でタブ文字が占める幅
|
|
37
|
+
set softtabstop=2 " 連続した空白に対してタブキーやバックスペースキーでカーソルが動く幅
|
|
38
|
+
set autoindent " 改行時に前の行のインデントを継続する
|
|
39
|
+
set smartindent " 改行時に前の行の構文をチェックし次の行のインデントを増減する
|
|
40
|
+
set shiftwidth=2 " smartindentで増減する幅
|
|
41
|
+
|
|
42
|
+
"----------------------------------------------------------
|
|
43
|
+
" 文字列検索
|
|
44
|
+
"----------------------------------------------------------
|
|
45
|
+
set incsearch " インクリメンタルサーチ. 1文字入力毎に検索を行う
|
|
46
|
+
set ignorecase " 検索パターンに大文字小文字を区別しない
|
|
47
|
+
set smartcase " 検索パターンに大文字を含んでいたら大文字小文字を区別する
|
|
48
|
+
set hlsearch " 検索結果をハイライト
|
|
49
|
+
|
|
50
|
+
" ESCキー2度押しでハイライトの切り替え
|
|
51
|
+
nnoremap <silent><Esc><Esc> :<C-u>set nohlsearch!<CR>
|
|
52
|
+
|
|
53
|
+
"----------------------------------------------------------
|
|
54
|
+
" カーソル
|
|
55
|
+
"----------------------------------------------------------
|
|
56
|
+
set whichwrap=b,s,h,l,<,>,[,],~ " カーソルの左右移動で行末から次の行の行頭への移動が可能になる
|
|
57
|
+
set number " 行番号を表示
|
|
58
|
+
set cursorline " カーソルラインをハイライト
|
|
59
|
+
|
|
60
|
+
" 行が折り返し表示されていた場合、行単位ではなく表示行単位でカーソルを移動する
|
|
61
|
+
nnoremap j gj
|
|
62
|
+
nnoremap k gk
|
|
63
|
+
nnoremap <down> gj
|
|
64
|
+
nnoremap <up> gk
|
|
65
|
+
|
|
66
|
+
" バックスペースキーの有効化
|
|
67
|
+
set backspace=indent,eol,start
|
|
68
|
+
|
|
69
|
+
" 入力モード時のカーソル移動
|
|
70
|
+
noremap! <C-p> <Up>
|
|
71
|
+
noremap! <C-n> <Down>
|
|
72
|
+
noremap! <C-b> <Left>
|
|
73
|
+
noremap! <C-f> <Right>
|
|
74
|
+
|
|
75
|
+
" 入力モードでカーソルの形状を変える
|
|
76
|
+
let &t_ti.="\e[1 q"
|
|
77
|
+
let &t_SI.="\e[5 q"
|
|
78
|
+
let &t_EI.="\e[1 q"
|
|
79
|
+
let &t_te.="\e[0 q"
|
|
80
|
+
|
|
81
|
+
"----------------------------------------------------------
|
|
82
|
+
" バッファリスト
|
|
83
|
+
"----------------------------------------------------------
|
|
84
|
+
nnoremap <silent> [b :bprevious<CR>
|
|
85
|
+
nnoremap <silent> ]b :bnext<CR>
|
|
86
|
+
nnoremap <silent> [B :bfirst<CR>
|
|
87
|
+
nnoremap <silent> ]B :blast<CR>
|
|
88
|
+
|
|
89
|
+
"----------------------------------------------------------
|
|
90
|
+
" カッコ・タグの対応
|
|
91
|
+
"----------------------------------------------------------
|
|
92
|
+
set showmatch " 括弧の対応関係を一瞬表示する
|
|
93
|
+
source $VIMRUNTIME/macros/matchit.vim " Vimの「%」を拡張する
|
|
94
|
+
|
|
95
|
+
"----------------------------------------------------------
|
|
96
|
+
" マウスでカーソル移動とスクロール
|
|
97
|
+
"----------------------------------------------------------
|
|
98
|
+
if has('mouse')
|
|
99
|
+
set mouse=a
|
|
100
|
+
if has('mouse_sgr')
|
|
101
|
+
set ttymouse=sgr
|
|
102
|
+
elseif v:version > 703 || v:version is 703 && has('patch632')
|
|
103
|
+
"set ttymouse=sgr
|
|
104
|
+
else
|
|
105
|
+
set ttymouse=xterm2
|
|
106
|
+
endif
|
|
107
|
+
endif
|
|
108
|
+
|
|
109
|
+
"----------------------------------------------------------
|
|
110
|
+
" クリップボードからのペースト
|
|
111
|
+
"----------------------------------------------------------
|
|
112
|
+
" 挿入モードでクリップボードからペーストする時に自動でインデントさせないようにする
|
|
113
|
+
if &term =~ "xterm"
|
|
114
|
+
let &t_SI .= "\e[?2004h"
|
|
115
|
+
let &t_EI .= "\e[?2004l"
|
|
116
|
+
let &pastetoggle = "\e[201~"
|
|
117
|
+
|
|
118
|
+
function XTermPasteBegin(ret)
|
|
119
|
+
set paste
|
|
120
|
+
return a:ret
|
|
121
|
+
endfunction
|
|
122
|
+
|
|
123
|
+
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin("")
|
|
124
|
+
endif
|
|
125
|
+
|
|
126
|
+
"----------------------------------------------------------
|
|
127
|
+
" ファイル保存
|
|
128
|
+
"----------------------------------------------------------
|
|
129
|
+
nnoremap <C-s> :w<CR>
|
|
130
|
+
inoremap <C-s> <ESC>:w<CR>
|
|
131
|
+
|
|
132
|
+
"----------------------------------------------------------
|
|
133
|
+
" パッケージマネージャ
|
|
134
|
+
"----------------------------------------------------------
|
|
135
|
+
let $CACHE = expand('~/.cache')
|
|
136
|
+
if !isdirectory($CACHE)
|
|
137
|
+
call mkdir($CACHE, 'p')
|
|
138
|
+
endif
|
|
139
|
+
if &runtimepath !~# '/dein.vim'
|
|
140
|
+
let s:dein_dir = fnamemodify('dein.vim', ':p')
|
|
141
|
+
if !isdirectory(s:dein_dir)
|
|
142
|
+
let s:dein_dir = $CACHE .. '/dein/repos/github.com/Shougo/dein.vim'
|
|
143
|
+
if !isdirectory(s:dein_dir)
|
|
144
|
+
execute '!git clone https://github.com/Shougo/dein.vim' s:dein_dir
|
|
145
|
+
endif
|
|
146
|
+
endif
|
|
147
|
+
execute 'set runtimepath^=' .. substitute(
|
|
148
|
+
\ fnamemodify(s:dein_dir, ':p') , '[/\\]$', '', '')
|
|
149
|
+
endif
|
|
150
|
+
|
|
151
|
+
if &compatible
|
|
152
|
+
set nocompatible
|
|
153
|
+
endif
|
|
154
|
+
|
|
155
|
+
let s:dein_dir = expand('~/.cache/dein')
|
|
156
|
+
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
|
|
157
|
+
|
|
158
|
+
" dein.vimが存在していない場合はgithubからclone
|
|
159
|
+
if &runtimepath !~# '/dein.vim'
|
|
160
|
+
if !isdirectory(s:dein_repo_dir)
|
|
161
|
+
execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
|
|
162
|
+
endif
|
|
163
|
+
execute 'set runtimepath^=' . fnamemodify(s:dein_repo_dir, ':p')
|
|
164
|
+
endif
|
|
165
|
+
|
|
166
|
+
if dein#load_state(s:dein_dir)
|
|
167
|
+
call dein#begin(s:dein_dir)
|
|
168
|
+
|
|
169
|
+
call dein#add('Shougo/dein.vim')
|
|
170
|
+
|
|
171
|
+
" カラースキーム
|
|
172
|
+
call dein#add('tomasr/molokai')
|
|
173
|
+
call dein#add('raphamorim/lucario')
|
|
174
|
+
call dein#add('jacoborus/tender.vim')
|
|
175
|
+
" ステータスライン表示
|
|
176
|
+
call dein#add('vim-airline/vim-airline')
|
|
177
|
+
call dein#add('vim-airline/vim-airline-themes')
|
|
178
|
+
call dein#add('itchyny/lightline.vim')
|
|
179
|
+
" インデントの可視化
|
|
180
|
+
call dein#add('Yggdroot/indentLine')
|
|
181
|
+
" 末尾の全角半角空白文字を赤くハイライト
|
|
182
|
+
call dein#add('bronson/vim-trailing-whitespace')
|
|
183
|
+
" 構文エラーチェック
|
|
184
|
+
call dein#add('scrooloose/syntastic')
|
|
185
|
+
" 多機能セレクタ
|
|
186
|
+
call dein#add('ctrlpvim/ctrlp.vim')
|
|
187
|
+
call dein#add('tacahiroy/ctrlp-funky')
|
|
188
|
+
call dein#add('suy/vim-ctrlp-commandline')
|
|
189
|
+
call dein#add('rking/ag.vim')
|
|
190
|
+
call dein#add('mattn/ctrlp-matchfuzzy')
|
|
191
|
+
" 開発
|
|
192
|
+
call dein#add('airblade/vim-gitgutter')
|
|
193
|
+
call dein#add('tpope/vim-fugitive')
|
|
194
|
+
call dein#add('neoclide/coc.nvim', {'merged': 0, 'rev': 'release'})
|
|
195
|
+
call dein#add('fatih/vim-go')
|
|
196
|
+
call dein#add('AndrewRadev/splitjoin.vim')
|
|
197
|
+
call dein#add('puremourning/vimspector')
|
|
198
|
+
call dein#add('vim-test/vim-test')
|
|
199
|
+
call dein#add('tpope/vim-dispatch')
|
|
200
|
+
call dein#add('github/copilot.vim')
|
|
201
|
+
call dein#add('rust-lang/rust.vim')
|
|
202
|
+
call dein#add('OmniSharp/omnisharp-vim')
|
|
203
|
+
call dein#add('OrangeT/vim-csharp')
|
|
204
|
+
call dein#add('uiiaoo/java-syntax.vim')
|
|
205
|
+
call dein#add('neovimhaskell/haskell-vim')
|
|
206
|
+
call dein#add('vim-ruby/vim-ruby')
|
|
207
|
+
call dein#add('stanangeloff/php.vim')
|
|
208
|
+
call dein#add('phpactor/phpactor', {'type': 'lua', 'on_ft': 'php'})
|
|
209
|
+
call dein#add('Olical/conjure')
|
|
210
|
+
call dein#add('clojure-vim/clojure.vim')
|
|
211
|
+
call dein#add('tpope/vim-fireplace', {'on_ft': 'clojure'})
|
|
212
|
+
call dein#add('elixir-editors/vim-elixir')
|
|
213
|
+
call dein#add('derekwyatt/vim-scala')
|
|
214
|
+
|
|
215
|
+
call dein#end()
|
|
216
|
+
call dein#save_state()
|
|
217
|
+
endif
|
|
218
|
+
|
|
219
|
+
filetype plugin indent on
|
|
220
|
+
syntax enable
|
|
221
|
+
|
|
222
|
+
" If you want to install not installed plugins on startup.
|
|
223
|
+
if dein#check_install()
|
|
224
|
+
call dein#install()
|
|
225
|
+
endif
|
|
226
|
+
"----------------------------------------------------------
|
|
227
|
+
" カラースキーム
|
|
228
|
+
"----------------------------------------------------------
|
|
229
|
+
colorscheme lucario " カラースキームにlucarioを設定する
|
|
230
|
+
set t_Co=256 " iTerm2など既に256色環境なら無くても良い
|
|
231
|
+
syntax enable " 構文に色を付ける
|
|
232
|
+
|
|
233
|
+
"----------------------------------------------------------
|
|
234
|
+
" ステータスライン表示
|
|
235
|
+
"----------------------------------------------------------
|
|
236
|
+
set showtabline=2
|
|
237
|
+
let g:airline_powerline_fonts = 1
|
|
238
|
+
let g:airline_theme = 'luna'
|
|
239
|
+
let g:airline#extensions#tabline#enabled = 1
|
|
240
|
+
let g:airline#extensions#tabline#buffer_idx_mode = 1
|
|
241
|
+
|
|
242
|
+
"----------------------------------------------------------
|
|
243
|
+
" 構文エラーチェック
|
|
244
|
+
"----------------------------------------------------------
|
|
245
|
+
" 構文エラー行に「>>」を表示
|
|
246
|
+
let g:syntastic_enable_signs = 1
|
|
247
|
+
" 他のVimプラグインと競合するのを防ぐ
|
|
248
|
+
let g:syntastic_always_populate_loc_list = 1
|
|
249
|
+
" 構文エラーリストを非表示
|
|
250
|
+
let g:syntastic_auto_loc_list = 0
|
|
251
|
+
" ファイルを開いた時に構文エラーチェックを実行する
|
|
252
|
+
let g:syntastic_check_on_open = 1
|
|
253
|
+
" 「:wq」で終了する時も構文エラーチェックする
|
|
254
|
+
let g:syntastic_check_on_wq = 1
|
|
255
|
+
|
|
256
|
+
" Javascript用. 構文エラーチェックにESLintを使用
|
|
257
|
+
let g:syntastic_javascript_checkers=['eslint']
|
|
258
|
+
" Javascript以外は構文エラーチェックをしない
|
|
259
|
+
let g:syntastic_mode_map = { 'mode': 'passive',
|
|
260
|
+
\ 'active_filetypes': ['javascript'],
|
|
261
|
+
\ 'passive_filetypes': [] }
|
|
262
|
+
|
|
263
|
+
"----------------------------------------------------------
|
|
264
|
+
" 多機能セレクタ
|
|
265
|
+
"----------------------------------------------------------
|
|
266
|
+
let g:ctrlp_match_window = 'order:ttb,min:20,max:20,results:100' " マッチウインドウの設定. 「下部に表示, 大きさ20行で固定, 検索結果100件」
|
|
267
|
+
let g:ctrlp_show_hidden = 1 " .(ドット)から始まるファイルも検索対象にする
|
|
268
|
+
let g:ctrlp_types = ['fil'] "ファイル検索のみ使用
|
|
269
|
+
let g:ctrlp_extensions = ['funky', 'commandline'] " CtrlPの拡張として「funky」と「commandline」を使用
|
|
270
|
+
|
|
271
|
+
" CtrlPCommandLineの有効化
|
|
272
|
+
command! CtrlPCommandLine call ctrlp#init(ctrlp#commandline#id())
|
|
273
|
+
|
|
274
|
+
" CtrlPFunkyの絞り込み検索設定
|
|
275
|
+
let g:ctrlp_funky_matchtype = 'path'
|
|
276
|
+
|
|
277
|
+
if executable('ag')
|
|
278
|
+
let g:ctrlp_use_caching=0 " CtrlPのキャッシュを使わない
|
|
279
|
+
let g:ctrlp_user_command='ag %s -i --hidden -g ""' " 「ag」の検索設定
|
|
280
|
+
endif
|
|
281
|
+
|
|
282
|
+
"----------------------------------------------------------
|
|
283
|
+
" 開発
|
|
284
|
+
"----------------------------------------------------------
|
|
285
|
+
"vim-fugitive
|
|
286
|
+
nnoremap <leader>ga :Git add %:p<CR><CR>
|
|
287
|
+
nnoremap <leader>gc :Git commit<CR><CR>
|
|
288
|
+
nnoremap <leader>gs :Git<CR>
|
|
289
|
+
nnoremap <leader>gp :Git push<CR>
|
|
290
|
+
nnoremap <leader>gd :Gdiffsplit<CR>
|
|
291
|
+
nnoremap <leader>gl :Gclog<CR>
|
|
292
|
+
nnoremap <leader>gb :Git blame<CR>
|
|
293
|
+
|
|
294
|
+
"coc-nvim
|
|
295
|
+
" May need for Vim (not Neovim) since coc.nvim calculates byte offset by count
|
|
296
|
+
" utf-8 byte sequence
|
|
297
|
+
set encoding=utf-8
|
|
298
|
+
" Some servers have issues with backup files, see #649
|
|
299
|
+
set nobackup
|
|
300
|
+
set nowritebackup
|
|
301
|
+
|
|
302
|
+
" Having longer updatetime (default is 4000 ms = 4s) leads to noticeable
|
|
303
|
+
" delays and poor user experience
|
|
304
|
+
set updatetime=300
|
|
305
|
+
|
|
306
|
+
" Always show the signcolumn, otherwise it would shift the text each time
|
|
307
|
+
" diagnostics appear/become resolved
|
|
308
|
+
set signcolumn=yes
|
|
309
|
+
|
|
310
|
+
" Use tab for trigger completion with characters ahead and navigate
|
|
311
|
+
" NOTE: There's always complete item selected by default, you may want to enable
|
|
312
|
+
" no select by `"suggest.noselect": true` in your configuration file
|
|
313
|
+
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
|
|
314
|
+
" other plugin before putting this into your config
|
|
315
|
+
inoremap <silent><expr> <TAB>
|
|
316
|
+
\ coc#pum#visible() ? coc#pum#next(1) :
|
|
317
|
+
\ CheckBackspace() ? "\<Tab>" :
|
|
318
|
+
\ coc#refresh()
|
|
319
|
+
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
|
|
320
|
+
|
|
321
|
+
" Make <CR> to accept selected completion item or notify coc.nvim to format
|
|
322
|
+
" <C-g>u breaks current undo, please make your own choice
|
|
323
|
+
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
|
|
324
|
+
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
|
|
325
|
+
|
|
326
|
+
function! CheckBackspace() abort
|
|
327
|
+
let col = col('.') - 1
|
|
328
|
+
return !col || getline('.')[col - 1] =~# '\s'
|
|
329
|
+
endfunction
|
|
330
|
+
|
|
331
|
+
" Use <c-space> to trigger completion
|
|
332
|
+
if has('nvim')
|
|
333
|
+
inoremap <silent><expr> <c-space> coc#refresh()
|
|
334
|
+
else
|
|
335
|
+
inoremap <silent><expr> <c-@> coc#refresh()
|
|
336
|
+
endif
|
|
337
|
+
|
|
338
|
+
" Use `[g` and `]g` to navigate diagnostics
|
|
339
|
+
" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list
|
|
340
|
+
nmap <silent> [g <Plug>(coc-diagnostic-prev)
|
|
341
|
+
nmap <silent> ]g <Plug>(coc-diagnostic-next)
|
|
342
|
+
|
|
343
|
+
" GoTo code navigation
|
|
344
|
+
nmap <silent> gd <Plug>(coc-definition)
|
|
345
|
+
nmap <silent> gy <Plug>(coc-type-definition)
|
|
346
|
+
nmap <silent> gi <Plug>(coc-implementation)
|
|
347
|
+
nmap <silent> gr <Plug>(coc-references)
|
|
348
|
+
|
|
349
|
+
" Use K to show documentation in preview window
|
|
350
|
+
nnoremap <silent> K :call ShowDocumentation()<CR>
|
|
351
|
+
|
|
352
|
+
function! ShowDocumentation()
|
|
353
|
+
if CocAction('hasProvider', 'hover')
|
|
354
|
+
call CocActionAsync('doHover')
|
|
355
|
+
else
|
|
356
|
+
call feedkeys('K', 'in')
|
|
357
|
+
endif
|
|
358
|
+
endfunction
|
|
359
|
+
|
|
360
|
+
" Highlight the symbol and its references when holding the cursor
|
|
361
|
+
autocmd CursorHold * silent call CocActionAsync('highlight')
|
|
362
|
+
|
|
363
|
+
" Symbol renaming
|
|
364
|
+
nmap <leader>rn <Plug>(coc-rename)
|
|
365
|
+
|
|
366
|
+
" Formatting selected code
|
|
367
|
+
xmap <leader>f <Plug>(coc-format-selected)
|
|
368
|
+
nmap <leader>f <Plug>(coc-format-selected)
|
|
369
|
+
|
|
370
|
+
augroup mygroup
|
|
371
|
+
autocmd!
|
|
372
|
+
" Setup formatexpr specified filetype(s)
|
|
373
|
+
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
|
|
374
|
+
" Update signature help on jump placeholder
|
|
375
|
+
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
|
|
376
|
+
augroup end
|
|
377
|
+
|
|
378
|
+
" Applying code actions to the selected code block
|
|
379
|
+
" Example: `<leader>aap` for current paragraph
|
|
380
|
+
xmap <leader>a <Plug>(coc-codeaction-selected)
|
|
381
|
+
nmap <leader>a <Plug>(coc-codeaction-selected)
|
|
382
|
+
|
|
383
|
+
" Remap keys for applying code actions at the cursor position
|
|
384
|
+
nmap <leader>ac <Plug>(coc-codeaction-cursor)
|
|
385
|
+
" Remap keys for apply code actions affect whole buffer
|
|
386
|
+
nmap <leader>as <Plug>(coc-codeaction-source)
|
|
387
|
+
" Apply the most preferred quickfix action to fix diagnostic on the current line
|
|
388
|
+
nmap <leader>qf <Plug>(coc-fix-current)
|
|
389
|
+
|
|
390
|
+
" Remap keys for applying refactor code actions
|
|
391
|
+
nmap <silent> <leader>re <Plug>(coc-codeaction-refactor)
|
|
392
|
+
xmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
|
|
393
|
+
nmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
|
|
394
|
+
|
|
395
|
+
" Run the Code Lens action on the current line
|
|
396
|
+
nmap <leader>cl <Plug>(coc-codelens-action)
|
|
397
|
+
|
|
398
|
+
" Map function and class text objects
|
|
399
|
+
" NOTE: Requires 'textDocument.documentSymbol' support from the language server
|
|
400
|
+
xmap if <Plug>(coc-funcobj-i)
|
|
401
|
+
omap if <Plug>(coc-funcobj-i)
|
|
402
|
+
xmap af <Plug>(coc-funcobj-a)
|
|
403
|
+
omap af <Plug>(coc-funcobj-a)
|
|
404
|
+
xmap ic <Plug>(coc-classobj-i)
|
|
405
|
+
omap ic <Plug>(coc-classobj-i)
|
|
406
|
+
xmap ac <Plug>(coc-classobj-a)
|
|
407
|
+
omap ac <Plug>(coc-classobj-a)
|
|
408
|
+
|
|
409
|
+
" Remap <C-f> and <C-b> to scroll float windows/popups
|
|
410
|
+
if has('nvim-0.4.0') || has('patch-8.2.0750')
|
|
411
|
+
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
|
|
412
|
+
nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
|
|
413
|
+
inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
|
|
414
|
+
inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
|
|
415
|
+
vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
|
|
416
|
+
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
|
|
417
|
+
endif
|
|
418
|
+
|
|
419
|
+
" Use CTRL-R for selections ranges
|
|
420
|
+
" Requires 'textDocument/selectionRange' support of language server
|
|
421
|
+
nmap <silent> <C-r> <Plug>(coc-range-select)
|
|
422
|
+
xmap <silent> <C-r> <Plug>(coc-range-select)
|
|
423
|
+
|
|
424
|
+
" Add `:Format` command to format current buffer
|
|
425
|
+
command! -nargs=0 Format :call CocActionAsync('format')
|
|
426
|
+
|
|
427
|
+
" Add `:Fold` command to fold current buffer
|
|
428
|
+
command! -nargs=? Fold :call CocAction('fold', <f-args>)
|
|
429
|
+
|
|
430
|
+
" Add `:OR` command for organize imports of the current buffer
|
|
431
|
+
command! -nargs=0 OR :call CocActionAsync('runCommand', 'editor.action.organizeImport')
|
|
432
|
+
|
|
433
|
+
" Add (Neo)Vim's native statusline support
|
|
434
|
+
" NOTE: Please see `:h coc-status` for integrations with external plugins that
|
|
435
|
+
" provide custom statusline: lightline.vim, vim-airline
|
|
436
|
+
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
|
|
437
|
+
|
|
438
|
+
" Mappings for CoCList
|
|
439
|
+
" Show all diagnostics
|
|
440
|
+
nnoremap <silent><nowait> <space>a :<C-u>CocList diagnostics<cr>
|
|
441
|
+
" Manage extensions
|
|
442
|
+
nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr>
|
|
443
|
+
" Show commands
|
|
444
|
+
nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr>
|
|
445
|
+
" Find symbol of current document
|
|
446
|
+
nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr>
|
|
447
|
+
" Search workspace symbols
|
|
448
|
+
nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr>
|
|
449
|
+
" Do default action for next item
|
|
450
|
+
nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR>
|
|
451
|
+
" Do default action for previous item
|
|
452
|
+
nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR>
|
|
453
|
+
" Resume latest coc list
|
|
454
|
+
nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR>
|
|
455
|
+
|
|
456
|
+
"vim-go
|
|
457
|
+
map <C-n> :cnext<CR>
|
|
458
|
+
map <C-m> :cprevious<CR>
|
|
459
|
+
|
|
460
|
+
nnoremap <leader>a :cclose<CR>
|
|
461
|
+
function! s:build_go_files()
|
|
462
|
+
let l:file = expand('%')
|
|
463
|
+
if l:file =~# '^\f\+_test\.go$'
|
|
464
|
+
call go#test#Test(0, 1)
|
|
465
|
+
elseif l:file =~# '^\f\+\.go$'
|
|
466
|
+
call go#cmd#Build(0)
|
|
467
|
+
endif
|
|
468
|
+
endfunction
|
|
469
|
+
autocmd FileType go nmap <leader>b :<C-u>call <SID>build_go_files()<CR>
|
|
470
|
+
autocmd FileType go nmap <leader>r <Plug>(go-run)
|
|
471
|
+
let g:go_list_type = "quickfix"
|
|
472
|
+
|
|
473
|
+
autocmd FileType go nmap <leader>t <Plug>(go-test)
|
|
474
|
+
autocmd FileType go nmap <leader>T <Plug>(go-test-func)
|
|
475
|
+
autocmd FileType go nmap <Leader>c <Plug>(go-coverage-toggle)
|
|
476
|
+
|
|
477
|
+
let g:go_highlight_types = 1
|
|
478
|
+
let g:go_highlight_fields = 1
|
|
479
|
+
let g:go_highlight_functions = 1
|
|
480
|
+
let g:go_highlight_function_calls = 1
|
|
481
|
+
|
|
482
|
+
autocmd Filetype go command! -bang A call go#alternate#Switch(<bang>0, 'edit')
|
|
483
|
+
autocmd Filetype go command! -bang AV call go#alternate#Switch(<bang>0, 'vsplit')
|
|
484
|
+
autocmd Filetype go command! -bang AS call go#alternate#Switch(<bang>0, 'split')
|
|
485
|
+
autocmd Filetype go command! -bang AT call go#alternate#Switch(<bang>0, 'tabe')
|
|
486
|
+
|
|
487
|
+
let g:go_def_mode = 'godef'
|
|
488
|
+
let g:go_decls_includes = "func,type"
|
|
489
|
+
let g:go_auto_sameids = 1
|
|
490
|
+
|
|
491
|
+
let g:go_debug_windows = {
|
|
492
|
+
\ 'vars': '60vnew',
|
|
493
|
+
\ 'stack': '10new',
|
|
494
|
+
\ }
|
|
495
|
+
|
|
496
|
+
"vimspector
|
|
497
|
+
nnoremap <Leader>dd :call vimspector#Launch()<CR>
|
|
498
|
+
nnoremap <Leader>de :call vimspector#Reset()<CR>
|
|
499
|
+
nnoremap <Leader>dc :call vimspector#Continue()<CR>
|
|
500
|
+
|
|
501
|
+
nnoremap <Leader>dt :call vimspector#ToggleBreakpoint()<CR>
|
|
502
|
+
nnoremap <Leader>dT :call vimspector#ClearBreakpoints()<CR>
|
|
503
|
+
|
|
504
|
+
nmap <Leader>dk <Plug>VimspectorRestart
|
|
505
|
+
nmap <Leader>dh <Plug>VimspectorStepOut
|
|
506
|
+
nmap <Leader>dl <Plug>VimspectorStepInto
|
|
507
|
+
nmap <Leader>dj <Plug>VimspectorStepOver
|
|
508
|
+
|
|
509
|
+
"vim-test
|
|
510
|
+
nmap <silent> <leader>t :TestNearest<CR>
|
|
511
|
+
nmap <silent> <leader>T :TestFile<CR>
|
|
512
|
+
nmap <silent> <leader>a :TestSuite<CR>
|
|
513
|
+
nmap <silent> <leader>l :TestLast<CR>
|
|
514
|
+
nmap <silent> <leader>g :TestVisit<CR>
|
|
515
|
+
let g:test#strategy = 'dispatch'
|
|
516
|
+
|
|
517
|
+
"----------------------------------------------------------
|
|
518
|
+
" 言語別設定
|
|
519
|
+
"----------------------------------------------------------
|
|
520
|
+
" Rust
|
|
521
|
+
let g:rustfmt_autosave = 1
|
|
522
|
+
|
|
523
|
+
" .NET (OmniSharp)
|
|
524
|
+
let g:OmniSharp_server_use_mono = 0
|
|
525
|
+
let g:OmniSharp_selector_ui = 'ctrlp'
|
|
526
|
+
let g:OmniSharp_highlight_types = 3
|
|
527
|
+
|
|
528
|
+
" Java
|
|
529
|
+
" uiiaoo/java-syntax.vim はデフォルトで有効
|
|
530
|
+
|
|
531
|
+
" Haskell
|
|
532
|
+
let g:haskell_enable_quantification = 1 " enable highlighting of `forall`
|
|
533
|
+
let g:haskell_enable_recursivedo = 1 " enable highlighting of `mdo` and `rec`
|
|
534
|
+
let g:haskell_enable_arrowsyntax = 1 " enable highlighting of `proc`
|
|
535
|
+
let g:haskell_enable_pattern_synonyms = 1 " enable highlighting of `pattern`
|
|
536
|
+
let g:haskell_enable_typeroles = 1 " enable highlighting of type roles
|
|
537
|
+
let g:haskell_enable_static_pointers = 1 " enable highlighting of `static`
|
|
538
|
+
let g:haskell_backpack = 1 " enable highlighting of backpack keywords
|
|
539
|
+
|
|
540
|
+
" Ruby
|
|
541
|
+
autocmd FileType ruby setlocal expandtab shiftwidth=2 tabstop=2
|
|
542
|
+
|
|
543
|
+
" PHP
|
|
544
|
+
autocmd FileType php setlocal expandtab shiftwidth=4 tabstop=4
|
|
545
|
+
|
|
546
|
+
" Elixir
|
|
547
|
+
autocmd FileType elixir setlocal expandtab shiftwidth=2 tabstop=2
|
|
548
|
+
|
|
549
|
+
" Scala
|
|
550
|
+
autocmd FileType scala setlocal expandtab shiftwidth=2 tabstop=2
|
|
@@ -1,21 +1,34 @@
|
|
|
1
|
-
{ packages ? import <nixpkgs> {} }:
|
|
2
|
-
packages.mkShell {
|
|
3
|
-
buildInputs = with packages; [
|
|
4
|
-
git
|
|
5
|
-
curl
|
|
6
|
-
wget
|
|
7
|
-
vim
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
{ packages ? import <nixpkgs> {} }:
|
|
2
|
+
packages.mkShell {
|
|
3
|
+
buildInputs = with packages; [
|
|
4
|
+
git
|
|
5
|
+
curl
|
|
6
|
+
wget
|
|
7
|
+
vim-full
|
|
8
|
+
python3
|
|
9
|
+
tmux
|
|
10
|
+
zip
|
|
11
|
+
unzip
|
|
12
|
+
nodejs_22
|
|
13
|
+
gh
|
|
14
|
+
];
|
|
15
|
+
# ホスト環境から完全に分離する
|
|
16
|
+
pure = true;
|
|
17
|
+
shellHook = ''
|
|
18
|
+
# Git safe.directory 設定(コンテナ環境対応)
|
|
19
|
+
git config --global --add safe.directory /srv 2>/dev/null || true
|
|
20
|
+
git config --global --add safe.directory "$(pwd)" 2>/dev/null || true
|
|
21
|
+
|
|
22
|
+
# Vim 設定の反映
|
|
23
|
+
VIMRC_SRC="${./.vimrc}"
|
|
24
|
+
VIMRC_DEST="$HOME/.vimrc"
|
|
25
|
+
if [ -f "$VIMRC_SRC" ]; then
|
|
26
|
+
ln -sf "$VIMRC_SRC" "$VIMRC_DEST"
|
|
27
|
+
# Ensure dein.vim is installed and plugins are up to date
|
|
28
|
+
# coc.nvim 'release' branch contains pre-built index.js
|
|
29
|
+
echo "Linked $VIMRC_SRC to $VIMRC_DEST"
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
echo "Welcome to the common development environment"
|
|
33
|
+
'';
|
|
34
|
+
}
|