JSON 완성을위한 사용자 지정 확장이 큰 따옴표에서 작동하지 않음

Corristo

추가 코드 완성으로 JSON 편집을 향상시켜야하는 VSCode 확장을 개발 중입니다. 그러므로 나는 (네 더미 제안을 추가 foo, foo1, foo2, foo3) 테스트를 시작합니다. JSON 키 뒤에 콜론을 입력하면 예상대로 작동합니다.

예상되는 행동

또한 빈 개체에서 완료를 트리거하면 원하는대로 작동합니다 (다른 확장 프로그램의 제안 포함).

여기에 이미지 설명 입력

그러나 큰 따옴표 내에서 완료를 트리거하면 (텍스트 포함 여부에 관계없이) 내 제안이 누락되었습니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

When I set a breakpoint in my CompletionItemProvider execution pauses as expected in both cases. So it is called correctly and it returns my suggestions for sure. I looked in existing JSON editor extensions (even VSCodes default one) to get advice how to implement it correctly and to see if the default JSON extension maybe overwrites all suggestions within double quotes (even though that would break the whole extensibility idea in my opinion) but couldn't find anything.

To reproduce it is enough to scaffold an empty extension as described here.

Here is my extension.ts:

// The module 'vscode' contains the VS Code extensibility API
// Import the module and reference it with the alias vscode in your code below
import * as vscode from 'vscode';

class OpenApiCompletionItemProvider implements vscode.CompletionItemProvider {
    public provideCompletionItems(
        document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken):
        Thenable<vscode.CompletionItem[]> {
        return Promise.resolve([
            new vscode.CompletionItem('foo', vscode.CompletionItemKind.Class),
            new vscode.CompletionItem('foo1', vscode.CompletionItemKind.Property),
            new vscode.CompletionItem('foo2', vscode.CompletionItemKind.Interface),
            new vscode.CompletionItem('foo3', vscode.CompletionItemKind.Class),
        ]);
    }
}

export function activate(ctx: vscode.ExtensionContext): void {
    ctx.subscriptions.push(
        vscode.languages.registerCompletionItemProvider(
            { pattern: '**/*.openapi.json' },
            new OpenApiCompletionItemProvider(),
            ':',
            '"'
        )
    );
}

// this method is called when your extension is deactivated
export function deactivate() { }
Gama11

The starting quote " is part of what VSCode considers the current "word". Consequently, the completion items you return don't match the current filter string " and are not displayed.

삽입 텍스트에 전체 단어 (따옴표 포함)를 포함하여이 문제를 해결할 수 있습니다.

new vscode.CompletionItem('"foo"', vscode.CompletionItemKind.Class)

( label문자열을 동일 하게 유지하고 insertText완료 팝업에 따옴표가 표시되지 않도록 하려면 사용 )

또는 range그에 따라 조정할 수 있습니다 .

var item = new vscode.CompletionItem('foo', vscode.CompletionItemKind.Class);
item.range = new vscode.Range(position, position);

참고 : document.getWordRangeAtPosition()유용 할 수 있습니다 . 여기 에서 JSON의 "단어"정의를 찾을 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JSON 완성을위한 사용자 지정 확장이 큰 따옴표에서 작동하지 않음

분류에서Dev

큰 따옴표를 사용하여 생성 된 문자열이 문자열 풀에서 생성되지 않음

분류에서Dev

PHP / JavaScript에서 큰 따옴표 작은 따옴표가 작동하지 않음

분류에서Dev

JSON 이스케이프 큰 따옴표가 작동하지 않음

분류에서Dev

messages.properties에서 큰 따옴표가있는 문자열이 올바르게 표시되지 않음

분류에서Dev

큰 따옴표가 작동하지 않는 것을 허용하지 않는 RegEx

분류에서Dev

Python을 사용하여 JSON 값에서 큰 따옴표 자르기

분류에서Dev

큰 따옴표 사이에 나타나지 않는 문자에 대한 정규식

분류에서Dev

문자열이 javscript에서 큰 따옴표로 인쇄되지 않습니까?

분류에서Dev

timepicker에 대한 angularJS 사용자 지정 지시문이 작동하지 않음

분류에서Dev

minLength 0 및 사용자 지정 스타일에서 JQuery 자동 완성이 작동하지 않음

분류에서Dev

문자열이 큰 따옴표 및 작은 따옴표와 함께 작동하지 않습니다.

분류에서Dev

정규식을 사용하여 링크에서 작은 따옴표 및 큰 따옴표 URL 추출

분류에서Dev

java-공백을 사용하여 문자열을 분할하지만 큰 따옴표 나 작은 따옴표는 고려하지 않는 정규식

분류에서Dev

Bash에서 큰 따옴표와 작은 따옴표에 백틱을 사용할 때의 차이점

분류에서Dev

Awk는 큰 따옴표 안에있을 때 작동하지 않습니다.

분류에서Dev

큰 따옴표 나 작은 따옴표를 사용하지 않고 특정 문자열을 인쇄하는 방법은 무엇입니까?

분류에서Dev

사용자 지정 화살표 키 탐색이 제대로 작동하지 않음 (한 부분이 작동 함)

분류에서Dev

파이썬에서 구분 된 큰 따옴표와 부울을 사용하여 JSON 문자열 표현 구문 분석

분류에서Dev

파이썬에서 정규식을 사용하여 제외와 함께 큰 따옴표 제거

분류에서Dev

특정 상자에서 Rust 자동 완성이 작동하지 않음

분류에서Dev

큰 따옴표와 작은 따옴표가있는 문자열을 EF에서 SQL로 저장

분류에서Dev

큰 따옴표를 사용해야하는 JSON 문자열이 포함 된 데이터 설정 값 주위에 작은 따옴표를 추가하는 방법은 무엇입니까?

분류에서Dev

따옴표 R에서 큰 따옴표와 문자열을 추출하는 정규식

분류에서Dev

하위 문자열 캡처에 대한 정규식 (하위 문자열이 이스케이프 된 큰 따옴표로 묶일 수도 있고 묶이지 않을 수도 있음)

분류에서Dev

Jersey의 AbstractHttpContextInjectable을 사용하는 사용자 지정 메서드 주석이 작동하지 않음

분류에서Dev

zsh에서 Bazel 탭 자동 완성이 작동하지 않음

분류에서Dev

jQuery에서 자동 완성이 작동하지 않음

분류에서Dev

Outlook 2007에서 자동 완성이 작동하지 않음

Related 관련 기사

  1. 1

    JSON 완성을위한 사용자 지정 확장이 큰 따옴표에서 작동하지 않음

  2. 2

    큰 따옴표를 사용하여 생성 된 문자열이 문자열 풀에서 생성되지 않음

  3. 3

    PHP / JavaScript에서 큰 따옴표 작은 따옴표가 작동하지 않음

  4. 4

    JSON 이스케이프 큰 따옴표가 작동하지 않음

  5. 5

    messages.properties에서 큰 따옴표가있는 문자열이 올바르게 표시되지 않음

  6. 6

    큰 따옴표가 작동하지 않는 것을 허용하지 않는 RegEx

  7. 7

    Python을 사용하여 JSON 값에서 큰 따옴표 자르기

  8. 8

    큰 따옴표 사이에 나타나지 않는 문자에 대한 정규식

  9. 9

    문자열이 javscript에서 큰 따옴표로 인쇄되지 않습니까?

  10. 10

    timepicker에 대한 angularJS 사용자 지정 지시문이 작동하지 않음

  11. 11

    minLength 0 및 사용자 지정 스타일에서 JQuery 자동 완성이 작동하지 않음

  12. 12

    문자열이 큰 따옴표 및 작은 따옴표와 함께 작동하지 않습니다.

  13. 13

    정규식을 사용하여 링크에서 작은 따옴표 및 큰 따옴표 URL 추출

  14. 14

    java-공백을 사용하여 문자열을 분할하지만 큰 따옴표 나 작은 따옴표는 고려하지 않는 정규식

  15. 15

    Bash에서 큰 따옴표와 작은 따옴표에 백틱을 사용할 때의 차이점

  16. 16

    Awk는 큰 따옴표 안에있을 때 작동하지 않습니다.

  17. 17

    큰 따옴표 나 작은 따옴표를 사용하지 않고 특정 문자열을 인쇄하는 방법은 무엇입니까?

  18. 18

    사용자 지정 화살표 키 탐색이 제대로 작동하지 않음 (한 부분이 작동 함)

  19. 19

    파이썬에서 구분 된 큰 따옴표와 부울을 사용하여 JSON 문자열 표현 구문 분석

  20. 20

    파이썬에서 정규식을 사용하여 제외와 함께 큰 따옴표 제거

  21. 21

    특정 상자에서 Rust 자동 완성이 작동하지 않음

  22. 22

    큰 따옴표와 작은 따옴표가있는 문자열을 EF에서 SQL로 저장

  23. 23

    큰 따옴표를 사용해야하는 JSON 문자열이 포함 된 데이터 설정 값 주위에 작은 따옴표를 추가하는 방법은 무엇입니까?

  24. 24

    따옴표 R에서 큰 따옴표와 문자열을 추출하는 정규식

  25. 25

    하위 문자열 캡처에 대한 정규식 (하위 문자열이 이스케이프 된 큰 따옴표로 묶일 수도 있고 묶이지 않을 수도 있음)

  26. 26

    Jersey의 AbstractHttpContextInjectable을 사용하는 사용자 지정 메서드 주석이 작동하지 않음

  27. 27

    zsh에서 Bazel 탭 자동 완성이 작동하지 않음

  28. 28

    jQuery에서 자동 완성이 작동하지 않음

  29. 29

    Outlook 2007에서 자동 완성이 작동하지 않음

뜨겁다태그

보관