Rust에서 vim plugen(with deno)
demo is here
개시하다
최근vim/Neovim 두 가지 대응하는 플러그인의 기초denops.vim가 실현되고 있다.
내가 이 프로젝트를 기대하는 이유 중 하나는 덴오를 이용하여wasm을 읽을 수 있다는 것이다.
이 프로젝트의 판매 포인트는 "Deno(Type script)"입니다.
개인적으로는 "데노뿐만 아니라 wasm을 통해 원하는 언어로 플러그인을 써서 데노를 간단한 처리와 기초가 되는 IF로 만들 수 있다"고 말했다.
이것은 내가 이 때를 보았을 때의 최초의 소감이다.
최근
coc.nvim
이 플러그인은'vscode 플러그인을vim에 이식하기'가 유행입니다.마찬가지로'vscode,denops 양대응'과'vim,shell 양대응 도구'를 더욱 간단하게 실현할 수 있기를 기대하고 있다.
(저는viml의 함수와 최선의 실천에 대한 지식이 거의 없기 때문에 그중의 일부를rust와ts에 던져도 괜찮을 것 같습니다. 결과적으로viml도 함께 공부해야 한다는 점은 변함이 없습니다.)
그래서 몇 군데 매달린 곳에 발을 잡혀도 무사히
"rust->wasm->deno->vim
와 연결해 처리할 수 있어 여기서 공유하고 싶었다.rust to wasm
rust->wasm의 컴파일은 보통wasm-pack을 사용하는데저희가 아직 데노를 상대하지 못했어요. ssvmup을 사용해야 할지 고민입니다.
결과적으로 ssvmup의 컴파일링이라도 deno의 읽기에 많은 시간이 걸렸고 ssvmup은
wasm-bindgen
버전이 고정되어 있기 때문에wasm-pack으로 힘껏 누르는 방법을 선택했다.데노를wasm-pack의build로 읽는 방법
데노와 nodejs가 다르기 때문에 직접 사용할 수 없습니다tutorial 방법.
주요 문제는 다음과 같습니다.
deno는 API가 브라우저 API와 호환되기 때문에 웹의build가 필요합니다.(https://github.com/rustwasm/wasm-pack/issues/672#issuecomment-652296745(1패)
console.log
로 정의했다.각각 wasm-Ppack의 매개 변수, wasm의attribute, 잡색sed로 변환하면 deno에서 읽을 수 있습니다.
wasm-pack build
의 매개 변수에 --target web
+ wasm-pack build
- wasm-pack build --target web
추가#[wasm_bindgen(js_namespace = console, js_name = log)]
의attribute로 stdout에 출력src/main.rs
+ #[wasm_bindgen(js_namespace = console, js_name = log)]
fn alart(s: &str);
fetch(input)
로 바꾸기new WebAssembly.Module(await Deno.readFile(new URL(input).pathname));
pkg/index.ts+ input = fetch(input);
- new WebAssembly.Module(await Deno.readFile(new URL(input).pathname));
성과물
here
denops
와 마찬가지로vimruntimepath
에 추가 cargo run --manifest-path=utils/denops-builder/Cargo.toml
build를 통해vim부터 실행할 수 있음:DenopsRustEcho
.꼬일 때.
그나저나 vimmer가 아닌 사람도 build을 시도할 수 있기 때문에 "deno에서rust의wasm을 사용하고 싶은데 잘 쓰지 못한다"는 사람도 시도해 볼 수 있다.
Reference
이 문제에 관하여(Rust에서 vim plugen(with deno)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kkiyama117/articles/2021-03-01-denops-rust텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)