Skip to content

feat: implement bookmark core plugin of obsidian#541

Open
neo451 wants to merge 53 commits intomainfrom
bookmarks
Open

feat: implement bookmark core plugin of obsidian#541
neo451 wants to merge 53 commits intomainfrom
bookmarks

Conversation

@neo451
Copy link
Copy Markdown
Member

@neo451 neo451 commented Dec 4, 2025

This PR only implement the viewing side of bookmarks, not adding them and grouping them.

  • test working for all pickers
  • proper config option for groups or not
  • proper tests
  • obsidian's search pattern? (not in this PR)

neo451 and others added 27 commits March 30, 2026 01:02
* feat: allow disabling sort_by

* chore: update CHANGELOG

* test: update test search opts from raw table

* refactor: use sort_by=false instead of new option

* docs: add search wiki page
* docs: update README.md

* docs: update .all-contributorsrc

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: zizhou teng (n451) <2020200706@ruc.edu.cn>
* feat: leverage lsp filewatch

* feat(lsp): auto rename handler and opts.link.auto_update

* some cleanups

* fix: redundant options

* chore: remove artifacts

* fix: rename, and tests

* finalize

---------

Co-authored-by: neo451 <412444506@qq.com>
* fix: apply note template in extract_note action

The extract_note action was not passing template or should_write to
Note.create, unlike the new action (line ~474). This meant notes created
via extract_note never had the configured note template applied.

Pass template = Obsidian.opts.note.template and should_write = true to
match the behavior of the new action.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* docs: add changelog entry for extract_note template fix

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* docs: update README.md

* docs: update .all-contributorsrc

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Both actions.toggle_checkbox and the toggle_checkbox command filter lines
with current_line:match '%S', which skips blank/whitespace-only lines.
This prevents _toggle_checkbox's create_new logic from ever running on
empty lines, even when checkbox.create_new is enabled.

Allow blank lines through when create_new is true so that pressing <CR>
on an empty line inserts a new '- [ ] ' checkbox as intended.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: neo451 <412444506@qq.com>
* fix: Properly disambiguate completion items with same stem.

* doc: remove doc for old limitation

* fix: typos

* typo

---------

Co-authored-by: neo451 <412444506@qq.com>
* ci: docgen

* fix: format

* doc: changelog

* use treesitter to simplify a bit

---------

Co-authored-by: neo451 <412444506@qq.com>
Co-authored-by: neo451 <412444506@qq.com>
* fix: definition will properly filter on anchors and blocks

it used to just load the anchors and blocks if there's a suffix,
but we were not filtering based on it

* changelog

---------

Co-authored-by: neo451 <412444506@qq.com>
* fix(blink): don't check blink.cmp markdown config isn't a list

blink.cmp supports an inherits_default key in its per_filetype sources

* feat(util): use vim.islist for neovim >=0.12

* docs: update changelog

* Revert "feat(util): use vim.islist for neovim >=0.12"

This reverts commit b564654.

---------

Co-authored-by: neo451 <111681693+neo451@users.noreply.github.com>
* docs: update README.md

* docs: update .all-contributorsrc

---------

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* feat: gf via includeexpr

* refactor(link): move to new module

* fix: move tests

* fix: cleanup

* CHANGELOG

* strip link to address lint

* lint

---------

Co-authored-by: neo451 <412444506@qq.com>
* feat: cli class for headless sync and future cli operations

* Finish most of the API

* docs and proper cmd logic

* todo

* wip: use inputsecret, doing more prompt to login

* cli

* use log.lua

* fix: remove the class approach, just a plain module

* feat: setup wizard and attaching to workspace

* changelog

* chores todos

* fix: bunch of chores

* check configured

* use local copy of the ob installation and checkhealth

* remove redudent, auto install works

* proper create remote result parse

* assert lint

* proper command menu and subcommand completion

* move status as separate file

* artifact

* bad import

* fix: bad imports and calls

* fix: gurad against no cmd and cache cmd results

* order of execution

* rebase artifact

* workspace switch cleanup, docs

* remove debug print

* fix: wording

* lazy load CLI

* types for local remote vaults

* types

* simplify a lot

* unlink action, full lifecycle working

* artifacts

* cache local vault results

* better status management, better names and docs

* handle multiple seesion log.info

* options handling before sync, and docs

* doc on usage

* test: a small test set

* simplify messy status module

* better status management and docs

---------

Co-authored-by: zizhou teng (n451) <2020200706@ruc.edu.cn>
Co-authored-by: neo451 <412444506@qq.com>
* feat(lsp): client side lsp commands that runs actions

* shorten

* CHANGELOG

---------

Co-authored-by: neo451 <412444506@qq.com>
neo451 and others added 15 commits April 18, 2026 18:56
…ion (#751)

* feat: add `Note.insert_text` for inserting text under a specific section

* refactor(text_insertion): split into functions that clearly communicate where future changes should go

* chore(text_insertion): make param/variable names consistent and self-documenting

* chore(note): use "cancel" as key rather than "abort"

* chore(note): fix outdated param/variable names

* refactor(text_insertion): gather important functions at top of file

* fix: add namespace to types and prefer `@param`/`@return` over `@type fun(...): ...`

* docs: satisfy emmylua-ls constraints
* fix(yaml): proper handle of dashes and null values

* lint

---------

Co-authored-by: neo451 <412444506@qq.com>
* feat(lsp): LSP workspace symbol

* doc: add docs for LSP implementation progress

* refactor: remove tags search

* chores

* fix: skip separate find headings call

* refactor: use WorkspaceSymbol type

* refactor: move as callable function for scripting usage

* fixes

* rename progress

* format LSP-Progress

* 2026-04-12 19:47

* doc

* fix: proper action function

* accept callback

* formalized metadata

* better docs

---------

Co-authored-by: neo451 <412444506@qq.com>
…809)

* fix(completion): use byte offsets consistently in completion sources

* changelog

---------

Co-authored-by: neo451 <412444506@qq.com>
…ven when it is empty. (#812)

* fix(note.insert_text): add blank-line when inserting at top of note even when it is empty

* style: fix one-expression-per-line issue
Co-authored-by: zizhou teng (n451) <2020200706@ruc.edu.cn>
* feat: completions for `:Obsidian help`

* fix: wrong usage api

* return all base names if query empty

* changelog

---------

Co-authored-by: zizhou teng (n451) <2020200706@ruc.edu.cn>
Co-authored-by: zizhou teng (n451) <2020200706@ruc.edu.cn>
@neo451 neo451 force-pushed the bookmarks branch 3 times, most recently from 753ab25 to 78a8d0c Compare April 18, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants