Code overview - minsuk-jang/teamproject GitHub Wiki
๋ค์์ ์์ค ์ฝ๋๋ฅผ ๋๋ฌ ๋ณผ ์ ์๋ ๋ช ๊ฐ์ง ํํธ์
๋๋ค.
์ด๊ฒ์ ๊ทธ๋ค์ง ๋ณต์กํ์ง๋ ์์ง๋ง, ์ฌ๋ฌ๋ถ๋ค์ ์์ํ๊ฒ ๋ง๋ค๊ฒ์
๋๋ค.
ctags -R
์ ์ฌ์ฉํ์ฌ : tag
๋ช
๋ น์ ๋ํ ํ๊ทธ ํ์ผ์ ์์ฑํ์ญ์์ค.
(๋๋ถ๋ถ์ ๋ฐฐํฌํ์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ 'ctags'๋์ universal-ctags๋ฅผ ๊ถ์ฅํฉ๋๋ค. Development-tips๋ ์ฐธ์กฐํ์ญ์์ค.
ํจ์ ๋๋ ๋ณ์ ์ ์๋ก ์ด๋ํ๋ ค๋ฉด ์ปค์๋ฅผ ์ด๋ฆ์ผ๋ก ์ด๋ํ๊ณ CTRL-]
๋ช
๋ น์ ์ฌ์ฉํ์ญ์์ค.
๋ค๋ก ์ด๋ํ๋ ค๋ฉด CTRL-T
๋๋ CTRL-O
๋ฅผ ์ฌ์ฉํ์ญ์์ค.
ํ์ผ๋ก ๊ฑด๋ ๋ฐ๋ ค๋ฉด ์ด๋ฆ์ ์ปค์๋ฅผ ๋๊ณ gf
๋ช
๋ น์ ์ฌ์ฉํ์ญ์์ค.
๋๋ถ๋ถ์ ์ฝ๋๋ ๋ช ๋ฐฑํ ์ด๋ฆ (๋ถ์์ ํ ๋ชฉ๋ก)์ด ์๋ ํ์ผ์์ ์ฐพ์ ์ ์์ต๋๋ค.
- buffer.c ๋ฒํผ ์กฐ์ (๋ก๋ ๋ ํ์ผ)
- diff.c diff ๋ชจ๋ (vimdiff)
- eval.c ํํ ํ๊ฐ
- fileio.c ํ์ผ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ
- fold.c folding
- getchar.c ๋ฌธ์ ๋ฐ ํค mapping ๊ฐ์ ธ ์ค๊ธฐ
- mark.c ๋ถํธ
- mbyte.c multi-byte ๋ฌธ์์ฒ๋ฆฌ
- memfile.c swapfile์ ๋ฒํผ์ฉ lines ์ ์ฅํ๊ธฐ
- memline.c memory์ ๋ฒํผ์ฉ lines ์ ์ฅํ๊ธฐ
- menu.c ๋ฉ๋ด
- message.c (์ค๋ฅ) ๋ฉ์ธ์ง
-
ops.c ์ฐ์ฐ์ ์ทจ๊ธ (
d
,y
,p
) - option.c ์ต์
-
quickfix.c quickfix ๋ช
๋ น (
: make
,: cn
) - regexp.c pattern ๋์กฐ
- screen.c ์๋์ฐ ์ ๋ฐ์ดํธ
- search.c pattern ๊ฒ์
- spell.c ๋ง์ถค๋ฒ ๊ฒ์ฌ
- syntax.c ๊ตฌ๋ฌธ ๋ฐ ๊ธฐํ ๊ฐ์กฐ ํ์
- tag.c ํ๊ทธ
- terminal.c ํตํฉ ํฐ๋ฏธ๋ emulator
- undo.c ์คํ ์ทจ์ ๋ฐ ๋ค์ ์คํ
- window.c ๋ถํ ์๋์ฐ ์ฒ๋ฆฌ
ํ์ฌ ๋ชจ๋๋ State
์ ์ ์ฅ๋ฉ๋๋ค.
๊ทธ๊ฒ์ด ๊ฐ์ง ์ ์๋ ๊ฐ์ NORMAL
,INSERT
,CMDLINE
๋ฑ์
๋๋ค.
ํ์ฌ ์ฐฝ์ curwin
์
๋๋ค. ํ์ฌ ๋ฒํผ๋ curbuf
์
๋๋ค.
์ด๊ฒ์ ์ฐฝ์์ ์ปค์ ์์น, ์ต์
๊ฐ, ํ์ผ ์ด๋ฆ ๋ฑ์ ๊ฐ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
๋ชจ๋ ์ ์ญ ๋ณ์๋ globals.h์ ์ ์ธ๋์ด ์์ต๋๋ค.
์ด๊ฒ์ ํธ๋ฆฌํ๊ฒmain_loop ()
๋ผ๊ณ ๋ถ๋ฆฝ๋๋ค.
๋ช ๊ฐ์ง๋ฅผ ์
๋ฐ์ดํธ ํ ๋ค์ ๋ช
๋ น์ ์ฒ๋ฆฌํ๊ธฐ ์ํด normal_cmd ()
๋ฅผ ํธ์ถํฉ๋๋ค.
๋ช
๋ น์ด ์๋ฃ๋๋ฉด ๋ฆฌํด๋ฉ๋๋ค.
๊ธฐ๋ณธ์ ์ธ ์๊ฐ์ Vim์ด ์ฌ์ฉ์๊ฐ ๋ฌธ์๋ฅผ ์
๋ ฅ ํ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ค๋ฅธ ๋ฌธ์๊ฐ ํ์ํ ๋๊น์ง ์ฒ๋ฆฌํ๋ค๋ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ Vim์ด ๋ฌธ์ ์
๋ ฅ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ณณ์ด ๋ช ๊ตฐ๋ฐ ์์ต๋๋ค.
์ด๋ฅผ ์ํด vgetc ()
ํจ์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ํ mapping์ ์ฒ๋ฆฌํฉ๋๋ค.
ํ๋ฉด ์
๋ฐ์ดํธ๋ ๋๋ถ๋ถ ๋ช
๋ น์ด๋ ์ผ๋ จ์ ๋ช
๋ น์ด ๋๋ ๋๊น์ง ์ฐ๊ธฐ๋ฉ๋๋ค.
์ด ์์
์ update_screen ()
์ ์ํด ์ํ๋ฉ๋๋ค.
win_update ()
๋ ๋ชจ๋ ์๋์ฐ์ ๋ํด win_line ()
์ ํธ์ถํฉ๋๋ค.
์์ธํ ์ค๋ช
์ screen.c์ ์์ ๋ถ๋ถ์ ์ฐธ์กฐํ์ญ์์ค.
:
๋ฅผ ํ์ดํ โโํ ๋, normal_cmd ()
๋ getcmdline ()
์ ํธ์ถํ์ฌ Ex ๋ช
๋ น์ผ๋ก ๋ผ์ธ์ ์ป์ต๋๋ค.
getcmdline ()
์ ๊ฐ ์
๋ ฅ ๋ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌ ํ ๋ฃจํ๋ฅผ ํฌํจํฉ๋๋ค.
<CR>
, `' ๋๋ ๋ช
๋ น ํ ๋ชจ๋๋ฅผ ๋๋ด๋ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ์น๋ฉด ๋๋์์ต๋๋ค.
Ex ๋ช
๋ น์ do_cmdline ()
ํจ์์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค.
:
๋ช
๋ น ํ์ ์ผ๋ฐ ๊ตฌ๋ฌธ ๋ถ์์ ์ํํ๊ณ ๊ฐ๊ฐ์ ๋ณ๋ ๋ช
๋ น์ ๋ํด do_one_cmd ()
๋ฅผ ํธ์ถํฉ๋๋ค.
while ๋ฃจํ๋ ์ฒ๋ฆฌํฉ๋๋ค.
do_one_cmd ()
๋ ๋ฒ์์ ์ผ๋ฐ ์ธ์๋ฅผ ํ์ฑํ์ฌ exarg_t์ ๋ฃ๊ณ ๋ช
๋ น์ ์ฒ๋ฆฌํ๋ ํจ์์ ๋๊น๋๋ค.
:
๋ช
๋ น์ ex_cmds_defs.h์ ๋์ด๋์ด ์์ต๋๋ค.
๊ฐ ํญ๋ชฉ์ ์ธ ๋ฒ์งธ ํญ๋ชฉ์ ๋ช
๋ น์ ์ฒ๋ฆฌํ๋ ํจ์์ ์ด๋ฆ์
๋๋ค.
๋ง์ง๋ง ํญ๋ชฉ์ ๋ช
๋ น์ ์ฌ์ฉ๋๋ flag์
๋๋ค.
ํ์ค ๋ชจ๋ ๋ช
๋ น์ normal_cmd ()
ํจ์์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค.
๋ํ ์ ํ์ ๋ช
๋ น ์์ ์ผ๋ถ ๋ช
๋ น์ ๋ํ ์ถ๊ฐ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์ด๊ฒ๋ค์ ๋ช
๋ น์ ์ฒ๋ฆฌํ๋ ํจ์์ cmdarg_t
๋ก ์ ๋ฌ๋ฉ๋๋ค.
normal.c์ nv_cmds
ํ
์ด๋ธ์ด ์์ต๋๋ค.
์ด ํ
์ด๋ธ์ ๋ชจ๋ ๋ช
๋ น์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ฅผ ๋์ดํฉ๋๋ค.
๊ฐ ํญ๋ชฉ์ ๋ ๋ฒ์งธ ํญ๋ชฉ์ ๋ช
๋ น์ ์ฒ๋ฆฌํ๋ ํจ์์ ์ด๋ฆ์
๋๋ค.
i
๋๋ a
๋ช
๋ น์ ์ํ ํ ๋, normal_cmd ()
๋ edit ()
ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
๋ค์ ๋ฌธ์๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ๋ฃจํ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์ฝ์
๋ชจ๋๋ฅผ ์ข
๋ฃํ๋ฉด ๋๋์๊ฐ๋๋ค.
options.c์๋ options []๊ณผ ๊ฐ์ ๋ชจ๋ ์ต์ ์ด๋ฆ ๋ชฉ๋ก์ด ์์ต๋๋ค.