Silhouette.nvim
はSilhouetteをNeovimプラグインとして移植を試みるプロジェクトです。プラグインの思想についてはSilhouetteのREADMEをご覧ください。
Denoのインストールが必要です。
denops.vimに依存します。
lazy.nvimの場合は以下のような設定をします。
{
"tadashi-aikawa/silhouette.nvim",
ft = "markdown",
dependencies = {
"vim-denops/denops.vim",
},
keys = {
{ "<Space>sp", ":SilhouetteMoveToProgress<CR>", silent = true },
},
config = function()
-- denops.nvimが起動し終わる前に実行されるとエラーになるためwaitを入れる
-- マシンスペックや環境によって1000(ms)の値を調整する必要あり
vim.defer_fn(function()
require("silhouette").setup({
-- デフォルト
task = {
repetition_tasks_path = "./repetition-tasks.md",
holidays_path = "./holidays.md",
},
timer = {
-- デフォルト
time_storage_path = "./time-storage.json",
-- デフォルト
check_box_mark: {
-- デフォルト
recording: "~",
-- デフォルトでは未指定
-- stop: " ",
},
},
})
end, 1000)
end,
}
以下のファイルを作成してください。
ファイル | ファイルパス(デフォルト) |
---|---|
繰り返しタスクファイル | ./repetition-tasks.md |
休日設定ファイル | ./holidays.md |
Tip
ファイルパスは設定で変更できます。
:SilhouetteInsertTasks
:SilhouetteInsertTasks 2024-08-20
進行中タスク(- [~]
)が最初に出現する行に移動します。
繰り返しタスクファイルでカーソル配下のタスクファイルの実行予定日を表示します。
:SilhouetteShowTaskDates
:SilhouetteShowTaskDates 365
カーソル配下のタスク状態に応じて、タスクの計測を開始/終了します。
:SilhouettePushTimer
[!INFO] 詳細は Silhouette: Push timer を参照
強制的に現在計測中のタスク計測を停止します。
SilhouetteForceStopRecording
[!INFO] 詳細は Silhouette: Force stop recording を参照
configの timer.check_box_mark.recording
を指定しないようにしてください。
configの timer.check_box_mark.stop
に任意のマークを設定してください。( -
x
など)
markdown-toggle.nvim のキーバインドでtoggle後に特定条件下のときだけ SilhouettePushTimer
を実行するようにします。コメントが書かれている箇所がポイント。
{
"roodolv/markdown-toggle.nvim",
config = function()
require("markdown-toggle").setup({
cycle_box_table = true,
box_table = { "x" },
list_before_box = true,
})
vim.api.nvim_create_autocmd("FileType", {
desc = "markdown-toggle.nvim keymaps",
pattern = { "markdown", "markdown.mdx" },
callback = function(args)
local opts = { silent = true, noremap = true, buffer = args.buf }
local toggle = require("markdown-toggle")
vim.keymap.set({ "n", "v" }, "<F12>", function()
toggle.checkbox()
-- 現在行を取得し
local cline = vim.api.nvim_get_current_line()
-- 計測中かつ完了マークになっているときだけ
if string.find(cline, "- %[x%] .+ ``") then
-- SilhouettePushTimer を実行 -> 計測完了となる
vim.cmd("SilhouettePushTimer")
end
end, opts)
end,
})
end,
}
Important
このプラグインはSilhouetteの機能全てを実装するわけではありません。移植中の機能もあれば移植しない機能もあります。
以下でhooksの場所を変更する。
git config core.hooksPath hooks
Release Action を実行。