vim-gitgutter auto refresh

# 커밋전 코드 변경을 표시하기 위해 vim-gitgutter 플러그인을 사용중이다.
# 원래 커밋 후에는 변경표시(-,+등)이 사라져야 한다.
# 그런데 언제부터인가 커밋 후에도 변경 표시가 남아 있다.
# 임시 방편으로 현재 버퍼(파일) 저장시 :GitgutterAll(모든 버퍼 내용을 갱신) 명령을 설정해 사용하고 있었다.
autocmd BufWritePost * GitGutterAll

# neovim(nvim) 에서는 커밋 후에는 정상적으로 변경 표시가 사라진다.
# vim, nvim 모두 같은 gitgutter 설정을 사용한다.
# 원인 파악을 위해 다음과 같이 설정하면 gitgutter 플러그인 소스 위치에 gitgutter.log 를 생성한다.
let g:gitgutter_log = 1

# 변경내용 커밋 후 nvim 에 포커스를 옮기면 다음과 같이 gitgutter#all 함수가 수행된다.

# 반면 vim 에서는 다음과 같이 FocusGained 이벤트가 발생되지 않아 gitgutter#all이 수행되지 않고 있었다.

# 다음과 같이 vim 에 포커스 이벤트 액션을 설정하면, nvim 에서는 동작하지만 vim 에서 동작하지 않는다.
autocmd FocusGained * echo 'Vim has gained focus'
autocmd FocusLost * echo 'Vim has lost focus'

# iterm 내에서는 vim 포커스 이벤트가 동작한다.
# 찾아 보니 alacritty 에서 focus 이벤트가 동작하지 않는다는 이슈가 있었다.
# 다음과 같이 alacritty 사용시 터미널코드를 별도 설정하면 된다.
# 참고로 :set termcap 으로 설정된 터미널 코드 확인
if &term =~ "alacritty"
  let &t_fe = "\<Esc>[?1004h"
  let &t_fd = "\<Esc>[?1004l"
endif

vim-go slow save

# vim 사용중 파일을 저장이 아주 느린 경우가 발생했다.
# :w 를 여러 번 시도했을때 어쩌다 한번은 시간이 오래 걸린다.
# 원인 파악을 위해 다음 프로파일링
nnoremap <leader>ps :profile start vim-profile.log<enter>:profile func *<enter>:profile file *<enter>
nnoremap <leader>pt :profile stop<enter>

# vim-profile.log 결과 vim-go 플러그인의 에서 시간이 오래걸린다.

# promise 함수에서 13초

# vim-go 다양한 기능을 위해 go#promise#New timeout(디폴트 10초)을 두고 사용하는데
# 위 프로파일 결과는 formatting, imports 부분에서 사용됐다.
let l:handleFormat = go#promise#New(function('s:handleFormat', [], l:state), 10000, '')
let l:handler = go#promise#New(function('s:handleCodeAction', ['source.organizeImports', ''], l:state), 10000, '')

# 포맷팅은 오래 걸리지 않을것 같고, imports 부분이 의심이 된다.
# 그래서 vim 을 처음 열고 .go > import {} 에서 패키지를 삭제하고 저장해보니 느려지는게 100% 재현 된다.
# 그뒤 부터는 수정 저장을 해도 빠르게 저장된다.

# argocd dependency 이슈를 해결하니 최초 저장시에도 1~2초로 빨라졌다.

2024 first snow


2024-11-27 올해 첫눈이 왔다.
(1~2월에 눈 온게 올해 첫눈 아닌가 라는 생각을 하지만 이런 딴지는 접어두고...)

제법 눈이 많이 쌓였다. 아침에 일어나 창밖을 보니 나무에 두툼한 눈 옷이 덥혀 있다.
졸린 눈으로 아들은 와~ 눈왔다 하면서 대뜸 소원을 빈다. 리코더 시험을 안보게 해달라고.. 흠..
리코더가 그렇게 싫을까? 개인적인 욕심은 피아노도, 플룻도, 바이올린도.. 배우게 하려 했는데.

아들 등교 시키고(또래와 달리 아직 내손을 잡고 학교 정문까지 가고 싶어하는 아들이 고맙기도 하고 왠지 안쓰럽기도 하다.) 책상 앞에 앉으니 창밖의 눈 때문일까? 평소보다 더 조용하고 차분한 기분이 든다.
자동으로 켜진 유튜브에는 임윤찬의 바흐 플레이 리스트가 보인다.
When You Need a Rest : Yunchan Lim, J.S.Bach Playlist
타이틀도 참 지금에 어울린다. 플레이를 누르고 오랫만에 알리에서 산 만원대 작은 스피커로 음악을 흘려 보낸다. 익숙한 선율이 편하다.

가끔 이런 꿈을 그린다. 춥고 매섭게 눈보라가 몰아치는 북유럽 어느 오두막 산장에서 밖에 휘날리는 눈보라와 타닥타닥 소리를 내는 모닥불을 배경삼아 일하고 있는 내 모습을.
눈이 주는 차가움도 있지만 그로 인해 따뜻한 곳을 찾아 모이는 몇몇의 온기가 그립고 소중한 산장이다.
평소엔 자연속에 가족의 일상으로 보내고 때론 친구들을 불러 화로 앞에 둘러 앉아 밤새워 얘기하는 생활.
생각만 해도 설렌다. 영화를 많이 봐서 그런지 이런 곳에서 살고 싶다.

아침엔 제법 먹구름으로 흐리지만 그래도 차분한 분위기 였는데, 이제 해가 조금씩 보이고 나뭇가지의 눈들도 조금씩 녹아 물방울을 떨군다.
아 짧은 감성의 시간이 이렇게 지나간다. 커텐이라도 치고 좀 어둡고 늘어지는 방을 만들고 싶다.

어라. 다시 눈이 더 오네^^;