Vscode-ng-language-service: ๊ธฐ๋Šฅ ์š”์ฒญ: ํ…œํ”Œ๋ฆฟ์—์„œ ์ฐธ์กฐ ๊ฐ€์ ธ์˜ค๊ธฐ(getReferencesAtPosition)

์— ๋งŒ๋“  2016๋…„ 12์›” 19์ผ  ยท  16์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: angular/vscode-ng-language-service

์•ˆ๋…•,

์ง€๊ธˆ์€ ctrl+ํด๋ฆญ ๋˜๋Š” ์ •์˜ ์—ฟ๋ณด๊ธฐ๋กœ ์†Œ์Šค๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฉ”์„œ๋“œ ๋˜๋Š” ์†์„ฑ์— ๋Œ€ํ•œ ๋ชจ๋“  ์šฉ๋„ ์ฐพ๊ธฐ ํ…œํ”Œ๋ฆฟ ๋ฐœ์ƒ์€ ๊ฒฐ๊ณผ ์ฐฝ์— ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด VsCode์—์„œ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์‹ ์ด ์„œ์ง€ ์•Š์ง€๋งŒ, ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :). ํŠนํžˆ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๋™์•ˆ ์ง€๊ธˆ์€ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ์žŠ์–ด๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

feature ivy lib

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

Ivy ๋ฒ„์ „์˜ ์–ธ์–ด ์„œ๋น„์Šค๋ฅผ ๋ฒ„์ „ 11(2020๋…„ 11์›”)์— ์ถœ์‹œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด View Engine ์–ธ์–ด ์„œ๋น„์Šค์™€ ๊ธฐ๋Šฅ ํŒจ๋ฆฌํ‹ฐ๋ฅผ ๋‹ฌ์„ฑํ•˜๋ฉด ์ด ๊ธฐ๋Šฅ์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค! Ivy ๋ฐฑ์—”๋“œ๋กœ ์ „ํ™˜ํ•˜๋ฉด ์ด์ „์—๋Š” ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  16 ๋Œ“๊ธ€

์ด๊ฒƒ์€ ๋˜ํ•œ ํ…œํ”Œ๋ฆฟ์—์„œ ๊ธฐํ˜ธ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: F2 ์‚ฌ์šฉ)

๋ˆ„๊ตฐ๊ฐ€ ์ด๊ฑธ๋กœ ๋ญ”๊ฐ€๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค?!

์ƒˆ๋กœ์šด ๊ฒƒ?

Language Service์˜ TypeScript ํ”Œ๋Ÿฌ๊ทธ์ธ ์— getReferencesAtPosition ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ธ์–ด ์„œ๋น„์Šค๊ฐ€ Angular์˜ ์ƒˆ๋กœ์šด Ivy ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋‹ค์‹œ ์ž‘์„ฑ๋  ๋•Œ๊นŒ์ง€ ์ด ์ž‘์—…์„ ๋ณด๋ฅ˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ…œํ”Œ๋ฆฟ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค ์†์„ฑ์„ ๋” ์‰ฝ๊ฒŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(์ฐธ๊ณ : ์•„๋งˆ๋„ Angular ์ธ๋ฑ์‹ฑ API ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)

@kukjevov @kyliau ์ด ๋ฌธ์ œ์˜ ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ฒ€์ƒ‰์— ํ‘œ์‹œ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ค‘๋ณต์„ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ์•ˆ: typescript์—์„œ ํ…œํ”Œ๋ฆฟ์˜ ์†์„ฑ ์ฐธ์กฐ ์ฐพ๊ธฐ

๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค . ๊ธฐ๋Šฅ ์š”์ฒญ: ๋ณด๊ธฐ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์‚ฌ์šฉ ์œ„์น˜ ์ฐพ๊ธฐ๋Š” ํ…œํ”Œ๋ฆฟ์—์„œ๋„ ๋ฐœ์ƒ ํ•ญ๋ชฉ์„ ํ‘œ์‹œํ•˜์ง€๋งŒ @kyliau ์— ์˜ํ•ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ ๊ทธ์™€ ๋™์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค :).

4๋…„?) WebStorm์ด ์–ด๋–ป๊ฒŒ VScode O_o๋ณด๋‹ค ๋” ๋นจ๋ผ์กŒ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ๊ธฐ๋Šฅ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ผ์ •์ด๋‚˜ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๋Š” #252์™€๋„ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์„ ๋“ฃ๊ณ ! @ayazhafiz ์™€ ์ €๋Š” Angular ์–ธ์–ด ์„œ๋น„์Šค์—์„œ ์ด๊ฒƒ์„ ์ง€์›ํ•  ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. @ayazhafiz ๋Š” ์ด๋ฏธ ์ด ๊ธฐ๋Šฅ์„ ๋ถ€๋ถ„์ ์œผ๋กœ* ์ง€์›ํ•˜๋Š” PR์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฐฑ์—”๋“œ๋ฅผ Ivy๋กœ ์ „ํ™˜ํ•˜๋ฉด ์ด ์ฝ”๋“œ์˜ ๋Œ€๋ถ€๋ถ„์ด ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ๋„ˆ๋ฌด ๋งŽ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ์ฐธ์กฐ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ€๋ถ„ ์ง€์›:
ํ…œํ”Œ๋ฆฟ์˜ ์ฐธ์กฐ๋Š” ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ TS์˜ ์ฐธ์กฐ(์˜ˆ: ํด๋ž˜์Šค์˜ ํ•„๋“œ)๋Š” ํ…œํ”Œ๋ฆฟ์„ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ „์ž๋Š” Ayaz์˜ PR์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ชจ๋“  ๊ณผ์ •์— ๋Œ€ํ•ด ๋งค์šฐ ๊ฐ์‚ฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ? PR์ด ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

์ด ๊ธฐ๋Šฅ์ด ์ •๋ง ๊ธฐ๋Œ€๋ฉ๋‹ˆ๋‹ค. ๊ด€๋ จ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?
typescript ํŒŒ์ผ์—์„œ ๊ธฐํ˜ธ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๋™์•ˆ ํ…œํ”Œ๋ฆฟ์—์„œ ๊นจ์ง„ ์ฐธ์กฐ๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

Ivy ๋ฒ„์ „์˜ ์–ธ์–ด ์„œ๋น„์Šค๋ฅผ ๋ฒ„์ „ 11(2020๋…„ 11์›”)์— ์ถœ์‹œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด View Engine ์–ธ์–ด ์„œ๋น„์Šค์™€ ๊ธฐ๋Šฅ ํŒจ๋ฆฌํ‹ฐ๋ฅผ ๋‹ฌ์„ฑํ•˜๋ฉด ์ด ๊ธฐ๋Šฅ์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค! Ivy ๋ฐฑ์—”๋“œ๋กœ ์ „ํ™˜ํ•˜๋ฉด ์ด์ „์—๋Š” ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ์ด์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” v11.1.0 ์—์„œ ์ถœ์‹œ๋œ ์ƒˆ๋กœ์šด Ivy-native ์–ธ์–ด ์„œ๋น„์Šค์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
ํ˜„์žฌ๋กœ์„œ๋Š” ์˜ตํŠธ์ธ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•ด ๋ณด์‹œ๊ณ  ํ”ผ๋“œ๋ฐฑ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.
์ตœ์ƒ์˜ ํŽธ์ง‘๊ธฐ ๊ฒฝํ—˜์„ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ์— angularCompilerOptions ์—์„œ $ strictTemplates ๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
์œ ์‚ฌํ•œ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค. ์ง€๊ธˆ์€ ๋‹ซ๊ฒ ์Šต๋‹ˆ๋‹ค.

CodeLens๋ฅผ ํ†ตํ•ด์„œ๋„ ์˜ฌ๋ฐ”๋ฅธ ์ฐธ์กฐ ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? Ctrl-ํด๋ฆญ/๋ชจ๋“  ์ฐธ์กฐ ์ฐพ๊ธฐ๊ฐ€ ์ž‘๋™ํ•˜์ง€๋งŒ codelens ์ฐธ์กฐ ๋ฐ ํด๋ฆญํ•˜๋ฉด ํ…œํ”Œ๋ฆฟ ์ฐธ์กฐ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. CodeLens๊ฐ€ ์ด๋Ÿฌํ•œ ์ฐธ์กฐ๋ฅผ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์–ด๋”˜๊ฐ€์— ๊ตฌ์„ฑ ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

CodeLens๋ฅผ ํ†ตํ•ด์„œ๋„ ์˜ฌ๋ฐ”๋ฅธ ์ฐธ์กฐ ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค! CodeLens์™€ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ๋‹น์‚ฌ ์ธก์—์„œ ์ถ”๊ฐ€ ๊ตฌ์„ฑ ์ด ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด โ€‹โ€‹์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํŽธ์ง‘: #162 ๋‹ค์‹œ ์—ด๊ธฐ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰