티스토리 뷰
우리 회사는 한글 변수명을 굉장히 많이 활용하는데,
이번에 새로 시작한 프로젝트에서 한글 변수명을 어디까지 사용해야 하는것에 대한 논의가 있었다.
개인적으로는 한글변수명을 굉장히 좋아하는데, 한글 변수명을 좋아하지 않는 이유중에선 자동완성이 초성으로 되지 않는 것도 있었다.
생각지도 못한 부분이었는데 재밌는 포인트였고, vs code에서 플러그인을 만들면 되지 않을까? 해서 혼자 열심히 api 문서를 찾아보면서 만들었다 ㅠㅠ
설명하는건 다음에 하고 간단히 밑에 코드만 첨부한다
yo로 만들었고, javascript extention 옵션 선택해 만들었다. 아직 코드를 정리하거나 한건 아니라서 추후 쓴당 ㅠ
// The module 'vscode' contains the VS Code extensibility API
// Import the module and reference it with the alias vscode in your code below
const vscode = require('vscode');
// this method is called when your extension is activated
// your extension is activated the very first time the command is executed
/**
* @param {vscode.ExtensionContext} context
*/
const 초성추출 = (str) => {
const cho = ["ㄱ","ㄲ","ㄴ","ㄷ","ㄸ","ㄹ","ㅁ","ㅂ","ㅃ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"]
let 초성 = ""
for(let i=0; i<str.length; i++) {
let code = str.charCodeAt(i)-44032
if(code>-1 && code<11172) 초성 += cho[Math.floor(code/588)]
}
return 초성
}
const 변수세트배열 = (document) => {
const 변수배열 = document
.split("\n") // 문장 나누기
.map((문장) => 문장.replace(/^\s+|\s+$/g,''))
.filter((문장) => { // 문장이 const나 let이나, var로 시작해야함
if(문장.startsWith("const ")) return true
if(문장.startsWith("let ")) return true
if(문장.startsWith("var ")) return true
return false
})
.map((문장) => { // const, let, var 지우기
if(문장.startsWith("const ")) return 문장.substring(문장.indexOf("const ")+ 6, 문장.length)
if(문장.startsWith("let ")) return 문장.substring(문장.indexOf("let ") + 4, 문장.length)
if(문장.startsWith("var ")) return 문장.substring(문장.indexOf("let ") + 4, 문장.length)
return 문장
})
.map((문장) => { // 변수명으로 자르기, 초성 찾기
const 타입선택자 = 문장.indexOf(":")
const 값할당자 = 문장.indexOf("=")
const 땀땀 = 문장.indexOf(";")
const 자를위치 = Math.min(Math.min(타입선택자 < 0 ? 문장.length : 타입선택자, 값할당자 < 0 ? 문장.length : 값할당자), 땀땀 < 0 ? 문장.length : 땀땀)
const 변수 = 문장.substring(0, 자를위치).replace(/^\s+|\s+$/g,'')
return {
변수,
초성: 초성추출(변수)
}
})
.filter((변수세트) => { // 한글포함한 변수명만 찾기
if(변수세트.초성.length === 0) return false
return true
})
.map(변수세트 => { // 변수 만들기
return {
label: 변수세트.변수,
kind: vscode.CompletionItemKind.Variable,
filterText: 변수세트.초성
}
})
return 변수배열
}
function activate(context) {
// Use the console to output diagnostic information (console.log) and errors (console.error)
// This line of code will only be executed once when your extension is activated
console.log('Congratulations, your extension "bb" is now active!');
const b = vscode.languages.registerCompletionItemProvider('typescript', {
provideCompletionItems(doc) {
const documentText = doc.getText()
const 힌트세트 = 변수세트배열(documentText)
return 힌트세트
}
})
// The command has been defined in the package.json file
// Now provide the implementation of the command with registerCommand
// The commandId parameter must match the command field in package.json
let disposable = vscode.commands.registerCommand('bb.helloWorld', function () {
// The code you place here will be executed every time your command is executed
// Display a message box to the user
vscode.window.showInformationMessage('Hello World from bb!');
});
context.subscriptions.push(disposable);
context.subscriptions.push(b);
}
// this method is called when your extension is deactivated
function deactivate() {}
module.exports = {
activate,
deactivate
}
'Javascript' 카테고리의 다른 글
Cannot find module svg or its corresponding type declarations (0) | 2021.03.08 |
---|---|
터미널용 게임 - 똥피하기 (0) | 2021.03.08 |
터미널용 게임 - 똥피하기 만들기 (1) | 2021.02.16 |
VSCODE plugin 배포하기 (0) | 2021.02.05 |
tsconfig-paths-webpack-plugin (0) | 2021.02.02 |
ts-loader, typescript 적용 (0) | 2021.02.01 |
React Native에서 WebView에서 Android 백버튼 처리(히스토리 백처리)에 대하여 (1) | 2021.01.28 |
Webpack에서 이미 있는 index.html 수정 (0) | 2021.01.27 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- npm
- react
- 알고리즘
- Game
- 한글 자동 완성
- Javascript
- java #하노이 #알고리즘 #백준
- java #퀵소트 #quicksort #알고리즘 #백준
- javascript #백준 #알고리즘 #LCS
- Terminal
- java #오르막수 #백준 #알고리즘
- javascript #연속합 #알고리즘 #백준
- 중간거리 #야만나 #약속장소추천 #중간위치 #웹 #리액트 #React #reactjs #kakao지도 #kakaoapi
- java #알고리즘 #백준 #패션왕신해빈
- 백준
- java #백준 #알고리즘 #로또 #6603
- webpack
- javascript #백준 #회의실배정 #알고리즘
- webspider
- 백준 #알고리즘 #전깃줄 #NodeJs #javascript
- java #알고리즘 #백준 #퇴사
- 1992번
- java #백준 #알고리즘 #2805 #나무자르기
- 2630번
- 색종이자르기
- java #알고리즘 #백준
- TypeScript
- 백준 #java #알고리즘
- java #알고리즘 #백준 #N과M #백트래킹
- 쿼드트리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함