始めに ここ数ヵ月力を入れてddc.vimの開発をしていて、ようやく一通りの機能がそろいましたので、広くユーザーに使ってもらうフェーズに進めたいと考えています。 ユーザーからの要望やバグ報告に対応が終わってから正式版の1.0となりますのでよろしくお願いします。 私が以前に作成した自動補完プラグインであるdeoplete.nvimは既に開発を終了しました。 私自身は既にdeoplete.nvimからddc.vimに移行しており、もはや何の不便も感じていません。動作も最初から安定していますし、自信をもってユーザーに使用を推奨することができます。 自動補完フレームワーク開発の歴史 私はこれまで数々の自動補完フレームワークを開発してきました。ここでその歴史を簡単に振り返ってみましょう。 neocomplcache.vim 2008/12 頃開発 私が始めて作成した自動補完フレームワークは neoc
この記事は Vim 駅伝 の 10/07 の記事です。 前回の記事は mikoto2000 さんによる、 10/04 の「devcontainer.vim で、コンテナ上の Vim に引きこもって作業を行う(ゼロから環境構築をしてみよう編)」という記事でした。 次回は 10/09 に投稿される予定です。 はじめに Vimmer が日々入力する文書やコードには、アルファベットの大文字が頻繁に登場します。大文字だけで構成された単語も珍しくありません。たとえば "JSON" や "CAPTCHA" といった一部の技術用語 PYTHONPATH や JAVA_HOME といった多くの環境変数 多くの言語における定数リテラル は大文字で構成されています。こういった単語をShiftキーで打つのは面倒ですし、手指に負担がかかります。小さな不便ですが、頻度を考えると案外バカにもできません。 こういった小さ
100万ファイルあるホームディレクトリでファイル一覧を出すのに私の環境で2秒、vimのバッファ[1]に書き込んだり開いたりするのに10秒以上かかります。これはwebの文脈でさえ遅い[2]といえる数値です。こうした状況下で速さを求めたことについて書きます。 この記事を読まずともREADMEのコピペでプラグインを試すことができます。 導入 人間は横着なので頭を使いタイピングするより限られた選択肢から選ぶことを望みます。多くの人が使うwebページはそのように最適化されています。テキスト入力を目的とするテキストエディタにおいても、多くの人にはこのことが当てはまるでしょう。テキスト入力における入力補完もセレクタの一種ですが、今回は[3]プログラミング中におけるファイルを選択して開いたりといった操作に焦点をあてます。 こうした動作を行うファインダは数多くあり戦国時代呼ばれるほど選択肢があります[4]。
Neovimで愛用しているプラグインの解説 普段使いしてるNeovimのスクリーンショットなど こんにちは!食パン🍞と申します🏜 普段はフロントエンドを中心にパソコンをカタカタしている者です💻 私は普段のコーディングのメインエディタとして、Neovimを用いています。 (Neo)Vimは、その独特な操作体系ゆえ慣れるまでが大変ですが、一度習熟すると非常に効率よくテキスト操作を行えるため、日々愛用しています。 ところで(Neo)Vimは、非常にカスタマイズ性が高く、自分好みの様々な設定を書いたり、OSSの多様なプラグインを利用することができます。一方で、その高いカスタマイズ性ゆえに設定の難しい側面も多々あり、最初はどのようにNeovimをカスタマイズしていけば悩むことも珍しくありません…。 そこで今回の記事では、私が現在使用しているNeovimのセッティングのうち、特に愛用しているプラ
Lua の代替スクリプト言語 組み込み用のスクリプト言語として使える Lua はライトな反面、動的型付けや 1-based index といった仕様がボトルネックになりがちです。そうした状況の中、相応の短所も抱えた Lua の代替となりえる C/C++ 開発用組み込み用のスクリプト言語が多く開発されています。しかしながら、それらを横並びで比較及び評価した記事をあまり見かけませんでした。そこで、本記事では AltLua となりうる言語を取り上げ、それぞれの特徴を検証していきます。 Lua 向けトランスパイラ言語 コンパイルして Lua を出力するトランスパイラ言語について。Lua VM 上で動作するため、既存の Lua ライブラリの利用が可能な他、軽量で高速な強みを十分に生かせることが期待できます。 github stars やリリースなどの情報は 2025 年現時点のものを記載します。 M
Nelua Programming Language Minimal, simple, efficient, statically typed, compiled, metaprogrammable, safe, and extensible systems programming language with a Lua flavor. Overview Download What is Nelua? Nelua is a systems programming language for performance sensitive applications, like real-time applications and game engines. Its syntax and semantics are similar to Lua, but its garbage collection
GWは、ゲートウェイじゃなくゴールデンウィークです。 タイトルの通り、連休の多くの空き時間を言語実装に費やしてしまった...。 github.com とにかく、スターがついて承認されたいという気持ちが強いです(結論ファースト)。 今のところ、この辺りの機能はできている。 四則演算 Rustでの/Luaでのグローバル関数定義 関数内ローカル変数 if/then/else文 配列ベースの繰り返し(ただ、配列操作ができない) フィボナッチ数を求めるとこんな感じ。 2.4 GHz / 8コア Intel Core i9 のMacで実行した。といってもシングルコアしか使わないのだが。 function dofib(n) if n < 2 then return 1 else return dofib(n-1) + dofib(n-2) end print("Unreachable!\n") end
// Give points to all friends around the target position function onAbilityCast(caster: Unit, targetPos: Vector) { const units = findUnitsInRadius(targetPos, 500); const friends = units.filter(unit => caster.isFriend(unit)); for (const friend of friends) { friend.givePoints(50); } } -- Give points to all friends around the target position function onAbilityCast(caster, targetPos) local units = fin
Writing a minimal Lua implementation with a virtual machine from scratch in Rust By the end of this guide we'll have a minimal, working implementation of a small part of Lua from scratch. It will be able to run the following program (among others): function fib(n) if n < 2 then return n; end local n1 = fib(n-1); local n2 = fib(n-2); return n1 + n2; end print(fib(30)); This is my second project in
Luau Luau (lowercase u, /ˈlu.aʊ/) is a fast, small, safe, gradually typed embeddable scripting language derived from Lua. Around 2006, Roblox started using Lua 5.1 as a scripting language for games. Over the years we ended up substantially evolving the implementation and the language; to support growing sophistication of games on the Roblox platform, growing team sizes and large internal teams wri
26 Dec, 2024 IntroductionThe more I learn about Lua's design and implementation, the more impressed I am. It's very rare to see software that does so much with so little code. Unfortunately, Lua doesn’t have the same level of marketing and hype as some other languages. This lack of promotion means that fewer developers are aware of Lua’s capabilities and benefits. It is often perceived as a niche
Piccolo - A Stackless Lua Interpreter 2024-05-01 History of piccolo A "Stackless" Interpreter Design Benefits of Stackless Cancellation Pre-emptive Concurrency Fuel, Pacing, and Custom Scheduling "Symmetric" Coroutines and coroutine.yieldto The "Big Lie" Rust Coroutines, Lua Coroutines, and Snarfing Zooming Out piccolo is an interpreter for the Lua language written in pure, mostly safe Rust with a
Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。佐伯氏は、WebAssemblyのWebの外の応用について発表しました。全2回。前半は、Wasmがアツい理由とデザインゴールについて。 今回のテーマは「Kernel/VM的WebAssembly入門」佐伯学哉氏(以下、佐伯):佐伯が『WebAssemblyのWeb以外のこと全部話す』というタイトルで発表します。 まず、WebAssemblyとは何ぞや? という一般的な話なのですが、「Wikipedia」からの引用によれば、「Webブラウザーのクライアントサイドスクリプトとして動作する低水準言語である。ブラウザー上でバイナリフォーマットのかたちで実行可能であることを特徴とする」とあります。 実際の応用例としては、WebでGoogle Meetの背景ぼかしに使われていたり
0.10 になって便利な機能が増えたからみんなも使おうよ、という趣旨の記事です。 Neovim 0.10 になって増えた機能 News-0.10 - Neovim docs というページに 0.10 になっての変更点がまとまっているのですが、これだけでは多過ぎて把握できないと思います。「dotfiles やプラグインを書く時に便利な機能」という括りで抜き出してみても以下のようなものが挙げられます(多過ぎるので畳んであります)。 0.10 で追加された機能(一部) nvim_create_autocmd() のコールバック関数が true を返すと、自動コマンド自身が削除されるようになりました。 vim.islist() がちゃんと「配列」の時だけ true になるようになりました。 今までは歯抜けのテーブル({ [1] = "hoge", [3] = "fuga" } みたいなの)でも t
ABEMAの広告システムのバックエンド開発をしている黒崎 (@kuro_m88) です。 GoでLuaのユニットテストの実装を試みた事例をご紹介します。 GoでLuaのユニットテストを書くモチベーション 端的に言うとGoで書いているアプリケーションサーバでValkeyを使っており、Valkeyの機能を拡張するのにLuaで処理を記述する必要が出たためです。 Valkeyとは Valkeyはインメモリデータベースで、2024年に諸般の事情からRedisをforkする形でLinux Foundation傘下で開発がはじまりました。 ValkeyはRedisからforkされたため大半の機能はRedisと互換性がありますが、AWS, Google Cloud, Oracle Cloudなどの大手企業が開発に参加しており、積極的にサポートする姿勢が見てとれます。 Amazon ElastiCache
The real 0.5 was the friends we made along the way The long-awaited release of Neovim v0.5.0 finally happened on July 2, 2021. It took longer than everybody had hoped for, but it was worth the wait: With over 4000 commits, it is so big that it broke some of the release tooling. So these notes will not be able to touch on each of the many changes that were made over the course of development and on
この記事は Vim advent calendar 2022 その1 の12日目の記事です。 昨日は@isobe_mochiさんの記事「tataku.vim というプラグインを作っている話」でした。 明日は @hanlio さんの記事が公開される予定です。 はじめに 2022年ももうすぐ終わりそうですね。今年は Vim に関するお仕事がいただけたり、設定ファイルを Vim script から Lua に移行したりと、Vimmer としては非常に充実した一年となりました。これも Vim/Neovim コントリビュータの方々と、数多のプラグイン開発者のおかげです。本当にありがとうございます。 そこで本記事では、私が普段使っている Vim (Neovim) プラグインを主観強めで紹介します。私が普段メインで使っている Neovim には 2022/12/11 現在 91 個のプラグインが入ってい
Hi there! This is Oleg from Luden.io. We decided to have a deep and meaningful conversation about Lua programming language with Ivan Trusov, lead programmer of the video game Craftomation 101. It contains ~60,000 lines of Lua code and is made with Defold game engine. I asked Ivan to talk about the real issues and show real code, not the “hypothetical code, carefully prepared for the public to illu
The following is a chronicle of implementing a general purpose zero-instrumentation BPF based profiler for LuaJIT. Some assumptions are made about what this entails and it may be helpful to read some of our other work in this area. One major change from prior efforts is that instead of working with the original Parca unwinder we are now working with the OpenTelemetry eBPF profiler. If you missed t
過去に書いたもの luaを使用してpluginを開発する方法について学びたいと思います。 この記事は前回の記事の続きからになっています。 先に読んでおくと理解しやすいと思います。 対象者 vimの基本操作を理解していること,入力方法,検索方法,コマンドモード,visualモード等 luaでneovimのpluginを作成したい人 luaのpluginを読んでみたい人 lazyvimを使い始めた人 動作環境 Arch系 Linux (garuda linux) OS詳細情報 $ uname -a Linux tosi 6.6.9-zen1-1-zen #1 ZEN SMP PREEMPT_DYNAMIC Tue, 02 Jan 2024 02:28:04 +0000 x86_64 GNU/Linux $ cat /etc/os-release File: /etc/os-release NA
VSCode Neovimとの遭遇 Vimmerの方には、VSCodeでVSCode Vimを使っている方も多いかと思います。筆者もその一人でしたが、Undoがどうにも壊れたり、vim-surround相当の機能の挙動にやや不満があったり等の理由で、完全なVimの書き心地を得るには至っていませんでした。 先日、Undoが壊れている件のissueを読んでいたところ、VSCode Neovimというエクステンションを知りました。これに移行して割と快適になったので、導入のために行ったことを紹介します。 VSCode VimとVSCode Neovimの違い VSCode VimはVSCode上でVimの操作感をエミュレートするエクステンションです。基本的なVimのノーマルモードの操作を懸命にサポートしているエクステンションですが、ネイティブのVimと比べると物足りなさを感じるのは事実です。 VS
Luon is a high-level programming language with a syntax similar to Oberon+, Oberon-07 and Oberon-2, integrating concepts from Lua, and targeting the LuaJIT VM. Luon can be regarded as a statically typed version of Lua. The name is thus a combination of "Lua" and "Oberon". Luon procedures can be declared "external" and be implemented in Lua. This allows the re-use of libraries written in Lua, and a
はじめに 最初に重要事項を発表します。私 Shougo はテキストエディタプラグイン開発に力を入 れていくために、github sponsors を有効にすることにしました。 これは大きな方針転換となります。これまでの私はオープンソース活動に対する寄付を 受け付けていなかったからです。なぜかというと、もっと自由にオープンソース活動を やりたかった、寄付を受けるとそこに責任が発生するのではないか、テキストエディタ との関係性が変わってしまうのではないかという懸念があったからです。 しかし、私もプラグイン開発を始めてからはやくも 10 年以上たちました。 昔とは完全に状況が変わってきています。プラグインやそれに使われる技術も複雑化、 高度化しかなり開発期間をかけないといけなくなりました。プラグイン開発に時間を費 すには資金が多いにこしたことはありません。 モチベーションの確保も課題です。通常の
This is the Part 2 of a series. Feel free to read the prequel for more context: Building the fastest Lua interpreter automatically Building a good VM for a dynamic language takes a ton of engineering. The best-performing VMs (e.g., JavaScriptCore, V8, SpiderMonkey) employ at least 3 VM tiers (interpreter, baseline JIT[1] and optimizing JIT), and pervasively use hand-coded assembly in every VM tier
This is Part 1 of a series of posts. Part 2 is available here: Building a baseline JIT for Lua automatically It is well-known that writing a good VM for a dynamic language is never an easy job. High-performance interpreters, such as the JavaScript interpreter in Safari, or the Lua interpreter in LuaJIT, are often hand-coded in assembly. If you want a JIT compiler for better performance, well, you’
redbean single-file distributable web server redbean is an open source webserver in a single-file that runs natively on six OSes for both AMD64 and ARM64. Basic idea is if you want to build a web app that runs anywhere, then you download the redbean.com file, put your .html and .lua files inside it using the zip command, and you've got a hermetic app you deploy and share. redbean embeds Lua, SQLit
2022/12/3 本日公開の 爆速で起動する Neovim を packer.nvim で作る - Qiita に合わせ、最新の情報を含めて修正しました。 0. 前置き 昔々、NeoBundle から dein.vim に乗り換える話を書きました。 NeoBundle から dein.vim に乗り換えたら爆速だった話 - Qiita しかし 5 年も経てば世の中色々変わります。Neovim も色々変わりましたが、最近一番ホットな話題といえばなんと言っても Lua でしょう。プラグインを書くための言語としてだけではなく、設定ファイルである init.vim すら Lua で書くことが可能になったのです。 [RFC] add init.lua as an alternative user config by dm1try · Pull Request #12235 · neovim/neo
luaでのoption設定が2021年7月時点の情報です。それ以外は、2021年2月上旬時点から更新していません。そのため、Neovim v0.5.1以上に対応していません。 HEADのBreaking Changesはこのissueにまとまっています。 NeovimのLuaプラグインを作成する場合、次のtemplateが役に立つはずです。lintとtestの設定をしているtemplate達です。 luacheck(linter)なし Neovim plugin boilerplate 他とは違いドキュメント生成、自動リリースがある ellisonleao/nvim-plugin-template luacheck(linter)あり nvim-lua-plugin-template m00qek/plugin-template.nvim Newslettersもあります。 設定フレームワ
Lua is probably my favourite “little language” - a language designed to have low cognitive load, and be easy to learn and use. It’s embedded in a lot of software, such as Redis, NGINX via OpenResty and Wireshark. It’s also used as a scripting language in games such as World of Warcraft and Roblox via Luau. This post is a brief love letter to the language, with some examples of why I like it so muc
この記事はVim Advent Calender2022の21日目の記事です。 去年の年末にVimからNeovimに移行してから、もうすぐで1年くらい経つので、気づいたことをまとめてみることにしました。 以下に該当する方は読んでいただくと何か発見があるかもしれません。 VimとNeovimの違いがよくわかっていない人 Neovimの特徴をざっと知りたい人 VimからNeovimに移行したいと考えている人 そもそもNeovimって何ぞや? Neovimとは、簡単に説明すると先進的な機能や拡張性を取り入れたVimから派生したエディタです。 目立ったVimとの違いとして以下の点が挙げられます。 Vimの設定にLuaというスクリプト言語が使用できる 本体の起動速度がVimより僅かに速い Neovimでしか使用できないプラグインを使用できる Neovimが誕生した経緯ですが、後方互換を大事にする保守
はじめに Lua好きですか? ええ、そうですよね、好きでも嫌いでもないですよね。わかります。 Luaが好きで好きでしょうがないという人はいません。ごめん、言い過ぎた。大抵は自分の使っているアプリのスクリプティング機能がLuaだからAPIを叩くために仕方なく使うという人が多いのではないでしょうか。 私のよく使うDTM分野のアプリでもReaperのReaScript、FalconのUVI Script、KONTAKTのCREATOR TOOLS、HALionのHALion ScriptなどLuaによるスクリプティングができるものがあります。Synthesizer Vも音程や表現の自動調整のためにLuaが使えます。その他Robloxのようなゲームエンジン、画像・動画編集アプリなどでもLuaによるスクリプティング機能が搭載されることが増えてきました。 Lua公式サイト、公式リファレンスの内容は充実
Posted on August 17, 2023 Lua, in the realm of Neovim, is a curious companion. For personal configuration tweaks, it’s incredibly responsive, giving me immediate feedback. Moreover, when I’m uncertain about an idea’s potential, Lua offers a forgiving platform for prototyping without commitment. Yet, as the maintainer of a few plugins, who otherwise works with Haskell professionally, I have mixed f
romus204/referencer.nvim - Lightweight, asynchronous that uses the LSP to show references to functions, methods, types and other. Dan7h3x/signup.nvim - a little smart lsp_signature helper with awesome features. neovim/nvim-lspconfig - Quickstart configurations for the LSP client. nvim-lua/lsp-status.nvim - This is a plugin/library for generating statusline components from the built-in LSP client.
Preface This series was written in Chinese originally. This English version is mainly translated by Google Translate. So please forgive me for the terrible writing. This series of articles introduces the implementation of a Lua interpreter from scratch in the Rust language. The Rust language has a distinctive personality and is also widely popular, however the learning curve is steep. After I fini
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く