モチベーション
neovimをはじめ、様々なOSSを利用させていただいています。
ある時、 このままでいいのか。使うだけの人なってはいけないのでは。。
と思い、
自分なりに何か還元できないかと思い、ひとまずneovimのプラグインを作ってみようと
思い立ちました。
プラグイン概要
github
zettelkastenを用いたタグで管理するノート管理です。(タグ周りは今後実装予定)
初期段階では、最小構成として以下の機能を実装しました。
-
;nn
で新規ノート作成 -
;nf
でノートのディレクトリを表示
次段階で、タグ検索機能を実装します。
ノート作成
元々、obsidianで管理していたのもあって、デフォルト値をyaml形式で設定しました。
---
id: YYYYmmddhhmmss
date: YYYYmmdd
tags:
- ""
---
ディレクトリ表示
telescopeと拡張機能のfile_browserを使用して、ディレクトリを表示します。
作成してみて
weztermやneovimの設定でluaは触ったことあるのですが、今回初めてちゃんとluaを書きました。
普段からアプリ開発はしているので、そんなに苦戦することはありませんでしたが、lua特有(?)の書き方はちょっと慣れが必要でした。
local M = {
config = {
vault = "$HOME/.config/note/",
keymap = {
new_file = ";nn",
fazzy = ";nf"
}
}
}
local function create_new_file()
local path = file.create_new_note_file(M.config.vault)
file.open_new_file(path)
end
local function open_fazzy()
fazzy.open_note_filer(M.config.vault)
end
function M.setup(config)
if config ~= nil then
M.config = vim.tbl_deep_extend('force', M.config, config)
end
vim.keymap.set("n", M.config.keymap.fazzy, function() open_fazzy() end)
vim.keymap.set("n", M.config.keymap.new_file, function() create_new_file() end)
end
return M
M
は、モジュールというみたいですね。
JSのオブジェクトや、PHPの連想配列みたいなものだと思えば、受け入れ難いことはありませんでした。
今回、とりあえず作ってみた状態なので、luaについてまだまだ潜る必要がありますね。