{"id":37042879,"url":"https://github.com/wsdjeg/calendar.nvim","last_synced_at":"2026-01-21T06:01:05.425Z","repository":{"id":331333691,"uuid":"1126211055","full_name":"wsdjeg/calendar.nvim","owner":"wsdjeg","description":"A minimal calendar plugin for Neovim.","archived":false,"fork":false,"pushed_at":"2026-01-16T00:51:18.000Z","size":70,"stargazers_count":12,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-16T06:34:11.005Z","etag":null,"topics":["neovim-plugin"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wsdjeg.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-01T11:52:13.000Z","updated_at":"2026-01-16T05:41:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wsdjeg/calendar.nvim","commit_stats":null,"previous_names":["wsdjeg/calendar.nvim"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/wsdjeg/calendar.nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wsdjeg%2Fcalendar.nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wsdjeg%2Fcalendar.nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wsdjeg%2Fcalendar.nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wsdjeg%2Fcalendar.nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wsdjeg","download_url":"https://codeload.github.com/wsdjeg/calendar.nvim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wsdjeg%2Fcalendar.nvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28628700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["neovim-plugin"],"created_at":"2026-01-14T05:00:26.177Z","updated_at":"2026-01-21T06:01:05.419Z","avatar_url":"https://github.com/wsdjeg.png","language":"Lua","readme":"# calendar.nvim\r\n\r\nA minimal calendar plugin for Neovim.\r\n\r\n[![GitHub License](https://img.shields.io/github/license/wsdjeg/calendar.nvim)](LICENSE)\r\n[![GitHub Issues or Pull Requests](https://img.shields.io/github/issues/wsdjeg/calendar.nvim)](https://github.com/wsdjeg/calendar.nvim/issues)\r\n[![GitHub commit activity](https://img.shields.io/github/commit-activity/m/wsdjeg/calendar.nvim)](https://github.com/wsdjeg/calendar.nvim/commits/master/)\r\n[![GitHub Release](https://img.shields.io/github/v/release/wsdjeg/calendar.nvim)](https://github.com/wsdjeg/calendar.nvim/releases)\r\n[![luarocks](https://img.shields.io/luarocks/v/wsdjeg/calendar.nvim)](https://luarocks.org/modules/wsdjeg/calendar.nvim)\r\n\r\n\u003cimg width=\"660\" height=\"653\" alt=\"image\" src=\"https://github.com/user-attachments/assets/64ec7e8f-d5aa-4265-974a-9f56f0214527\" /\u003e\r\n\r\n\u003c!-- vim-markdown-toc GFM --\u003e\r\n\r\n- [✨ Features](#-features)\r\n- [📦 Installation](#-installation)\r\n- [🔧 Configuration](#-configuration)\r\n    - [locales](#locales)\r\n- [🧩 Custom extensions](#-custom-extensions)\r\n    - [register extension manually](#register-extension-manually)\r\n    - [automatically extensions](#automatically-extensions)\r\n- [🖼️ Screenshots](#-screenshots)\r\n- [📣 Self-Promotion](#-self-promotion)\r\n- [💬 Feedback](#-feedback)\r\n- [🙏 Credits](#-credits)\r\n- [📄 License](#-license)\r\n\r\n\u003c!-- vim-markdown-toc --\u003e\r\n\r\n## ✨ Features\r\n\r\n- Monthly calendar view in Neovim\r\n- Vim-style keyboard navigation\r\n- Today highlighting and custom day highlights\r\n- Marked days support\r\n- Extensible architecture\r\n- Configurable setup and keymaps\r\n- Pure Lua, lightweight, no dependencies\r\n\r\n## 📦 Installation\r\n\r\n```lua\r\nreturn {\r\n  'wsdjeg/calendar.nvim',\r\n}\r\n```\r\n\r\n## 🔧 Configuration\r\n\r\n```lua\r\nrequire('calendar').setup({\r\n  mark_icon = '•',\r\n  -- locale currently affects UI language only.\r\n  locale = 'en-US', -- en-US | de-DE | en-GB | es-ES | fr-FR | it-IT | ja-JP | ko-KR | zh-CN | zh-TW | ru-RU\r\n  show_adjacent_days = true,\r\n  -- calendar.nvim support vim style keyboard navigation, hjkl.\r\n  keymap = {\r\n    next_month = 'L',\r\n    previous_month = 'H',\r\n    next_day = 'l',\r\n    previous_day = 'h',\r\n    next_week = 'j',\r\n    previous_week = 'k',\r\n    today = 't',\r\n    close = 'q',\r\n  },\r\n  highlights = {\r\n    current = 'Visual',\r\n    today = 'Todo',\r\n    mark = 'Todo',\r\n    adjacent_days = 'Comment',\r\n  },\r\n  locales = {} -- See `## Locales`\r\n})\r\n```\r\n\r\n### locales\r\n\r\n`locales` config is extendable.\r\n\r\n(e.g. Add `my-LC` locale based on `en-US`)\r\n```lua\r\nrequire('calendar').setup({\r\n  locale = 'my-LC',\r\n  locales = {\r\n    ['my-LC'] = {\r\n       -- stylua: ignore\r\n       months = { 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' },\r\n       weekdays = { 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun' },\r\n       year_month = function(year, month, months)\r\n         return string.format('%s %d', months[month], year)\r\n       end,\r\n     },\r\n  },\r\n})\r\n```\r\n\r\n## 🧩 Custom extensions\r\n\r\ncalendar.nvim supports extensions which can be used to mark specific date.\r\n\r\n### register extension manually\r\n\r\nfor example:\r\n\r\nhere is a simple extension to add [zettelkasten.nvim](https://github.com/wsdjeg/zettelkasten.nvim) support to calendar.nvim\r\n\r\n```lua\r\nlocal zk_ext = {}\r\n\r\nfunction zk_ext.get(year, month)\r\n  local notes = require('zettelkasten.browser').get_notes()\r\n  local marks = {}\r\n  for _, note in ipairs(notes) do\r\n    local t = vim.split(note.id, '-')\r\n    if tonumber(t[1]) == year and tonumber(t[2]) == month then\r\n      table.insert(\r\n        marks,\r\n        {\r\n          year = tonumber(t[1]),\r\n          month = tonumber(t[2]),\r\n          day = tonumber(t[3]),\r\n        }\r\n      )\r\n    end\r\n  end\r\n\r\n  return marks\r\nend\r\n\r\nrequire('calendar.extensions').register('zettelkasten', zk_ext)\r\n```\r\n\r\n### automatically extensions\r\n\r\ncreate `lua/calendar/extensions/zettelkasten.lua`\r\n\r\n```lua\r\nlocal extension = {}\r\n\r\nfunction extension.get(year, month)\r\n  local notes = require('zettelkasten.browser').get_notes()\r\n  local marks = {}\r\n  for _, note in ipairs(notes) do\r\n    local t = vim.split(note.id, '-')\r\n    if tonumber(t[1]) == year and tonumber(t[2]) == month then\r\n      table.insert(marks, {\r\n        year = tonumber(t[1]),\r\n        month = tonumber(t[2]),\r\n        day = tonumber(t[3]),\r\n      })\r\n    end\r\n  end\r\n\r\n  return marks\r\nend\r\n\r\nextension.actions = {\r\n  create_daily_note = function(year, month, day) end,\r\n  view_daily_notes = function(year, month, day) end,\r\n}\r\n\r\nreturn extension\r\n```\r\n\r\n## 🖼️ Screenshots\r\n\r\n![calendar-intro](https://github.com/user-attachments/assets/cc774407-92f7-490b-b9b3-34d62886fbf8)\r\n\r\n## 📣 Self-Promotion\r\n\r\nLike this plugin? Star the repository on\r\nGitHub.\r\n\r\nLove this plugin? Follow [me](https://wsdjeg.net/) on\r\n[GitHub](https://github.com/wsdjeg).\r\n\r\n## 💬 Feedback\r\n\r\nIf you encounter any bugs or have suggestions, please file an issue in the [issue tracker](https://github.com/wsdjeg/calendar.nvim/issues)\r\n\r\n## 🙏 Credits\r\n\r\n- [calendar](https://github.com/itchyny/calendar.vim)\r\n\r\n## 📄 License\r\n\r\nLicensed under GPL-3.0.\r\n","funding_links":[],"categories":["UI"],"sub_categories":["OS-specific"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwsdjeg%2Fcalendar.nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwsdjeg%2Fcalendar.nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwsdjeg%2Fcalendar.nvim/lists"}