Files
nuwiki/development/calendar-vim-integration.md
T
gffranco 21f583beef
CI / cargo fmt --check (push) Successful in 15s
CI / cargo clippy (push) Successful in 23s
CI / cargo test (push) Successful in 31s
CI / editor keymaps (push) Successful in 1m21s
docs(calendar): fix stale comments and integration docs
- diary.vim: correct calendar_action doc comment (dir is used for split
  direction; only week is unused)
- calendar-vim-integration.md: use real nuwiki var names
  (g:nuwiki_use_calendar / g:nuwiki_no_calendar / g:nuwiki_wikis), document
  auto-detect wiring and calendar-window close behavior; drop the
  non-existent refresh-on-close autocmd
- vimwiki-gap.md: remove stale 'no calendar.vim integration' entry now
  that the integration is implemented
2026-05-31 21:58:06 -03:00

2.4 KiB

Calendar-Vim Integration Use Case Specification

Overview

This document describes how nuwiki (vimwiki) integrates with calendar-vim to provide graphical calendar navigation for wiki diary entries.

Integration Mechanism

Nuwiki auto-detects calendar-vim on the runtimepath (via a FileType vimwiki autocmd in plugin/nuwiki.vim) and wires calendar-vim's hook variables, unless the integration is disabled (default: enabled):

  • g:calendar_action = 'vimwiki#diary#calendar_action'
  • g:calendar_sign = 'vimwiki#diary#calendar_sign'

These hooks are only set when unset or still at calendar-vim's own defaults (calendar#diary / calendar#sign), so a user-chosen custom hook is preserved.

Primary Use Case: Viewing/Create Diary Entries

  1. User executes :Calendar command
  2. Calendar-vim displays navigable calendar interface
  3. User navigates to target date using arrow keys
  4. User presses <Enter> on selected date
  5. vimwiki#diary#calendar_action function executes:
    • Formats date as YYYY-MM-DD
    • Opens existing diary file or creates new one (split/vsplit per dir)
    • Applies the vimwiki filetype to a brand-new entry
    • Closes the calendar window once the diary entry is open
  6. User views/edits diary entry for selected date

Date Marking Functionality

  • vimwiki#diary#calendar_sign function determines which dates show markers (*)
  • Returns true if diary file exists for that date using wiki's path configuration
  • Provides visual indication of dates with existing diary entries

Key Features

  • Seamless navigation between calendar and diary entries
  • Automatic file creation/opening for selected dates
  • Visual indicators for dates with existing content
  • Proper window splitting based on calendar orientation
  • Calendar window closed automatically once the diary entry opens

Configuration

Controlled by:

  • use_calendar Lua option (Neovim setup()), default true
  • g:nuwiki_use_calendar / g:nuwiki_no_calendar (VimL global toggles)
  • Individual wiki configurations in g:nuwiki_wikis (root, diary_rel_path, file_extension), or the scalar g:nuwiki_wiki_root / g:nuwiki_diary_rel_path / g:nuwiki_file_extension fallbacks
  • Standard calendar-vim variables for appearance/customization

This integration leverages calendar-vim's strong date presentation while using nuwiki's diary system for file management, creating a cohesive experience for journal-style wiki usage.