2017-02-28 2 views
0

저는 https://github.com/atom/autocomplete-plus/wiki/Provider-API에 설명 된 Provider API에 따라 Atom의 자동 완성 + 플러그인 확장을 작성하고 있습니다.Atom autocomplete +로 삽입 할 텍스트/스 니펫을 비동기 적으로 제공 할 수 있습니까?

getSuggestions 함수는 약속을 반환하여 비동기 적으로 구현할 수 있습니다.

사용자가 자동 ​​완성 항목을 비동기 적으로 선택한 후에도 text 또는 snippet을 가져 와서 편집기에 삽입 할 수 있습니까?

내 경우에는 사용자가 선택한 후에 만 ​​편집기에 삽입하려면 text을 가져오고 getSuggestions에는 제안 (아마도 더 많은 수의)을 가져올 때가 아닙니다.

답변

0

늦은 응답이지만 이것이 가능하다고 생각합니다.

일반적인 생각은 Atom이 텍스트와 함께 추천 삽입을 정상적으로 수행하도록하는 것입니다 (텍스트는 중요하지 않으며, 자리 표시 자일 수 있음). 그런 다음 즉시 삽입을 취소하려면 onDidInsertSuggestion()을 처리하십시오. 그런 다음 Promise를 사용하여 실제 텍스트를 비동기로 가져 와서 수동으로 삽입하십시오. 이렇게하려면 setTextInBufferRange()을 사용할 수 있습니다.

제안 삽입을 수동으로 처리하는 것과 유사한 작업을 수행했습니다 (비동기 부분 제외). 아마도 이것은 시작하는 데 도움이 될 수 있습니다. https://github.com/lonekorean/atom-autocomplete-math/blob/master/lib/provider.js#L92

주의 할 점은 async은 텍스트 요청과 삽입되는 텍스트 사이에 지연이있을 수 있음을 의미합니다. 사용자가 빠른 타이 퍼이거나 인터넷 연결이 끔찍한 경우 이상한 일이 발생할 수 있습니다.