Slide 1

Slide 1 text

Neovim 0.4.0 ৽ػೳ ϑϩʔτ΢Οϯυ΢ʹ͍ͭͯ gorilla.vim #4, 2019/05/14

Slide 2

Slide 2 text

About Me @Linda_pp @rhysd ࠷ۙ͸ git-messenger.vim ͱ͔ͭͬͯ͘·͢

Slide 3

Slide 3 text

ϑϩʔτ΢Οϯυ΢Λ࢖ͬͨ ϓϥάΠϯ

Slide 4

Slide 4 text

coc.nvim https://github.com/neoclide/coc.nvim

Slide 5

Slide 5 text

LanguageClient-neovim https://github.com/autozimu/LanguageClient- neovim

Slide 6

Slide 6 text

git-messenger.vim https://github.com/rhysd/git-messenger.vim

Slide 7

Slide 7 text

vim-iced https://github.com/liquidz/vim-iced

Slide 8

Slide 8 text

Neovim ϑϩʔτ΢Οϯυ΢ API

Slide 9

Slide 9 text

ϑϩʔτ΢Οϯυ΢ͱ͸ʁ λΠϧܕͰ͸ͳ͍ɼ৽͍͠ܗࣜͷ΢Οϯυ΢ɽ Neovim 0.4.0 Ͱ௥Ճ͞ΕΔ CSS Ͱ͍͏ position: absolute; ͳͲͷΑ͏ ʹɼطଘͷ΢Οϯυ΢ͷ্ʹΦʔόʔϥοϓ ͨ͠΢Οϯυ΢Λͭ͘Δ͜ͱ͕Ͱ͖Δ

Slide 10

Slide 10 text

Slide 11

Slide 11 text

call nvim_open_win(bufnr('%'), v:true, { \ 'relative': 'cursor', \ 'anchor': 'NW', \ 'row': 4, \ 'col': 4, \ 'width': 10, \ 'height': 10, \ })

Slide 12

Slide 12 text

Slide 13

Slide 13 text

call nvim_open_win(bufnr('%'), v:true, { \ 'relative': 'cursor', \ 'anchor': 'NW', \ 'row': 4, \ 'col': 4, \ 'width': 10, \ 'height': 10, \ }) ࠷ॳʹ։͘όοϑΝ ΢Οϯυ΢Λ։͍ͨޙ ͦͷதʹΧʔιϧΛҠ ಈ͢Δ͔Ͳ͏͔ ϑϩʔτ΢Οϯυ΢Λ Ͳ͏։͔͘Λࢦఆ͢Δ $POpHࣙॻ ʢޙड़ʣ ։͍ͨϑϩʔτ΢Οϯυ΢ ͷ8JOEPX*%Λฦ͢

Slide 14

Slide 14 text

Config ࣙॻ Ωʔ ஋ આ໌ σϑΥϧτ஋ SFMBUJWF FEJUPS DVSTPS XJOͷ͏ͪͷ͍ ͣΕ͔ ΢Οϯυ΢ͷى఺ ͷҐஔʢޙड़ʣ FEJUPS BODIPS /& /8 4& 48ͷ͍ͣΕ͔ ى఺ʹͯ͠ํ޲ͷ Ͳ͜ʹ΢Οϯυ΢ Λग़͔͢ʢޙड़ʣ /8 GPDVTBCMF CPPMFBO Ϣʔβ͕΢Οϯυ ΢಺ʹΧʔιϧΛ ҠಈͰ͖Δ͔ WUSVF FYUFSOBM CPPMFBO (6*ଆ͕ϑϩʔτ ΢Οϯυ΢Λදࣔ ͢Δ͔ WGBMTF

Slide 15

Slide 15 text

"relative" (row: 2, col: 3 ͷͱ͖ʣ • "editor" εΫϦʔϯ • "cursor" Χʔιϧ ΢Οϯυ΢෼ׂ • "relative" ˞ର৅΢Οϯυ΢͸ XJOΩʔͰࢦఆ͢Δ "row": 2, "col": 3 ͷͱ͖ ϑϩʔτ΢Οϯυ΢

Slide 16

Slide 16 text

"anchor" "relative": "cursor", "row": 0, "col": 0 ͷͱ͖ Χʔιϧ • "NE" • "NW" • "SW" • "SE" Χʔιϧ Χʔιϧ Χʔιϧ

Slide 17

Slide 17 text

։͘Ҏ֎ͷૢ࡞ • ด͡Δ → ී௨ͷ Vim ͷ΢Οϯυ΢ͱಉ ͡ɽ:close ΍ :wincmd c ΍ nvim_close_win() ͳͲ޷͖ʹด͡ΒΕΔ • αΠζมߋɾҠಈ → nvim_win_set_config(win_id, config) Ͱίϯ ϑΟάࣙॻΛηοτ͠ͳ͓͢͜ͱͰ൓ө͞ΕΔ

Slide 18

Slide 18 text

ϑϩʔτ΢Οϯυ΢ͷ࣮૷ • ࣮૷ऀɿ@bfredl ͞Μ • ଍ֻ͚໿2೥͔͚࣮ͯ૷ 1. ϑϩʔτ΢Οϯυ΢ͷ࢓૊ΈΛ࣮૷ɽnvim_open_win() ͳͲͰϓϥάΠϯ͔Β ΋ࣗ༝ʹ࢖͑ΔΑ͏ʹ͢Δʢ#6619ʣ 2. ૊ΈࠐΈͷิ׬΢Οϯυ΢Λϑϩʔτ΢Οϯυ΢Ͱ࠶࣮૷͠ɼϑϦοΧϦϯά Λܰݮ͢Δʢ#9530ʣ 3. ίϚϯυϥΠϯϞʔυͷϙοϓΞοϓิ׬ wildoptions=pum Λ࣮૷ʢ#9607ʣ 4. ॏͳ͍ͬͯΔ΢Οϯυ΢ͷ৭ΛϒϨϯυ͢Δػೳͷ࣮૷ͳͲվળதʢ#9923ʣ • ϕʔεͱͳΔ࢓૊ΈΛ࣮૷͠ɼͦΕΛ࢖ͬͯ಺෦ΛϦϑΝΫλϦϯάɾϢʔβ͔Β΋ ར༻Ͱ͖ΔΑ͏ʹ͍ͯ͠Δ

Slide 19

Slide 19 text

ϑϩʔτ΢Οϯυ΢͸Ͳ͕͜ ྑ͍ͷ͔

Slide 20

Slide 20 text

৽نػೳΛ΢Οϯυ΢ͷϨΠΞ΢τͷΈʹߜ Γɼैདྷͷ Vim ΢Οϯυ΢ͱಉ౳ʹ࢖͑Δ • ΢Οϯυ΢ͷத਎͸ී௨ͷ Vim ͷόοϑΝ • ৭Λ෇͚͚ͨΕ͹ߏจϋΠϥΠτΛॻ͍ͯ filetype Λ΢Οϯυ΢಺Ͱηοτ͢Ε͹ྑ͍ • ดͨ͡ΓΧʔιϧҠಈͨ͠Γ΋ :wincmd ͳͲ ͷैདྷͷ΍ΓํͰͰ͖Δ

Slide 21

Slide 21 text

ଥڠ͠ͳ͍࣮૷ • ΢Οϯυ΢ͷαΠζ͸ 1x1 ͔ΒࢦఆͰ͖Δ • ͍ͭ͘Ͱ΋ੜ੒Ͱ͖Δʢz-index ͸ޙউͪʣ • ϑϩʔτ΢Οϯυ΢͕εΫϦʔϯ͔Β͸Έग़ Δ࣌͸ࣗಈͰௐ੔ͯ͘͠ΕΔͷͰϓϥάΠϯ ࡞ऀ͸ؾʹ͠ͳͯ͘ྑ͍

Slide 22

Slide 22 text

ϓϥάΠϯ࡞ऀ͸͜ΕΛ౔୆ʹ༷ʑͳ UI ΛߏஙͰ͖Δ • ΠϯλϥΫςΟϒͳϙοϓΞοϓϝχϡʔ • ิ׬ϝχϡʔࣗ࡞ • υΩϡϝϯτͳͲͷϓϨϏϡʔ΢Οϯυ΢΍πʔϧνοϓ • ςΩετϥϕϧʢEasyMotion ͷΑ͏ͳʣ • ௨஌ • ...

Slide 23

Slide 23 text

ϑϩʔτ΢Οϯυ΢஫ҙ఺ • ΢Οϯυ΢Λ࢖͍ऴΘͬͨΒϓϥάΠϯଆͰ࣮֬ʹด͡Δɽಛʹ "enter": v:false ʹ͢ΔͱϢʔβ͔Β͸༰қʹด͡ΒΕͳ͍ • git-messenger.vim Ͱ͸όοϑΝ಺ͰΧʔιϧ͕ಈ͍ͨΓ৽͍͠΢Οϯυ΢ʹ Ҡಈ͢ΔλΠϛϯάΛϑοΫͯ͠ด͍ͯ͡Δ • σϑΥϧτͰ NormalFloat ͱ͍͏ϋΠϥΠτ͕ Normal ͷ୅ΘΓʹ࢖ΘΕΔʢม ߋ͢Δʹ͸ 'winhightlight' ΦϓγϣϯΛ࢖͏ʣ • ίϯςϯπ͕΢Οϯυ΢಺ʹऩ·ΔΑ͏ʹ͢Δɽऩ·Γ͖Βͳ͍৔߹͸Ϣʔβ͕ εΫϩʔϧͰ͖ΔΑ͏ʹ͢ΔͳͲ޻෉͢Δ • Vim ͱͷޓ׵ੑΛอͭʹ͸ɼVim Ͱ͸ϓϨϏϡʔ΢Οϯυ΢Λ࢖͏Α͏ʹ͢Δͱ ͏·͍͘͘৔߹͕͋Δʢgit-messenger.vimʣ

Slide 24

Slide 24 text

·ͱΊ • ϑϩʔτ΢Οϯυ΢͸ඇৗʹ 'ے͕ྑ͍' ػೳ • ϓϥάΠϯ࡞ऀ͸ࠓ·Ͱʹ͸࣮ݱ͕ࠔ೉ͩͬ ͨ UI ΛߏஙͰ͖Δ • Neovim ϓϥάΠϯΛ͍ͭͬͯ͘Δํ͸ੋඇར ༻Λݕ౼ͯ͠Έ͍ͯͩ͘͞