README file from
GithubBlock Link Plus
Block links + multi-line ranges + a Logseq-like outliner workflow for Obsidian: copy links/embeds/URIs to blocks & headings, create multi-line range blocks, and use blp-view (Dataview-backed) to query/render list blocks in scoped files.
🚀 Key Features
- Multi-line Block References - Create precise range blocks with the
^abc123-abc123format - Outliner (Logseq-like) +
blp-view- Treat list items as blocks in scoped files; keep stable^id+ hidden system metadata; query/render withblp-view(Dataview required) - Journal Feed (Logseq-like Journals) - Open a marked anchor note to view/edit multiple Daily Notes in one continuous feed (uses core Daily Notes settings)
- Inline Editing - Edit embedded blocks/headings directly in Live Preview (when enabled)
- Smart Aliases - Content-based link descriptions when copying links
demo
base
https://github.com/user-attachments/assets/5a0f0a32-42a3-4c23-8b38-17542c5ec072
inline edit
https://github.com/user-attachments/assets/d34b9be4-9a1b-4d00-9a87-1b70463dc8d7
outliner
https://github.com/user-attachments/assets/ea7f1d24-7845-4957-aa9c-7309af0a3514
📦 Installation
Community Plugins (Recommended)
- Open Obsidian Settings → Community Plugins
- Search "Block Link Plus" → Install → Enable
Manual Installation
- Download latest release
- Extract to
.obsidian/plugins/block-link-plus/ - Restart Obsidian and enable
🔧 Quick Start
- Select a block/heading → Right-click → Choose link type (link / embed / URI), or use Command Palette: "Copy Block Link" / "Copy Block as Embed" / "Copy Block as Obsidian URI"
- Multi-line: Select multiple lines → (Settings: pick a multi-line handling mode) → create a range block (
^id-id) - Outliner &
blp-view: enable scope (Settings: enabled folders/files, or frontmatterblp_outliner: true) → use ablp-viewcode block to query/render - Journal Feed: create an anchor note with frontmatter
blp_journal_view: true→ open it to enter the continuous daily-notes feed view
📖 Documentation
Complete documentation available at: https://block-link-plus.jasper1024.com/
Language Support
Community
🆕 What's New in 2.0
- Outliner becomes the main workflow (Logseq-like list blocks in scoped files)
- Outliner edit mode supports core editor shortcuts (Ctrl+B, etc.) via an editor command bridge (strict allowlist)
- Unified scope model: enabled folders/files + per-file frontmatter
blp_outliner: true/false blp-viewaligns with the Outliner scope model (no more “silent cross-scope” reads)- Removed legacy Timeline / Time Section features
📋 Changelog
2.0.15
- Fix: Outliner structural edits (
Enter,Tab,Shift+Tab) now preserve viewport position instead of jumping back to the top of the file - Fix: Outliner focus restoration after structural edits now keeps long-outline editing stable near the bottom of the note
2.0.14
- Fix: embedded Outliner cards in Journal Feed no longer show a nested inner leaf header, so the editor content aligns with the outer day header on narrow/mobile layouts
- Fix: embedded Outliner cards in Journal Feed no longer keep the standalone Outliner bottom spacer, making long notes easier to position inside the feed
- Fix: embedded Outliner cards in Journal Feed now use a tighter left gutter/bullet column, removing the oversized left boundary on phones
2.0.13
- Fix: Outliner block editing now keeps focus/scroll stable when clicking tabs or working near the bottom of a long outline
- Fix: Outliner
Tab/Shift+Tabnow preserve visible block order whenever possible instead of moving the block to the target parent's tail
2.0.12
- Fix: hide TaskNotes widgets inside inline embeds to avoid extra UI noise in embedded editors
2.0.11
- Improved: Journal Feed now mounts outliner-enabled daily notes as embedded Outliner views for a consistent editing experience
- Fix: the embedded Outliner editor command bridge now follows real editor focus, so suggests and editor commands stay reliable inside Journal Feed embeds
2.0.10
- Fix: Journal Feed now hides Outliner system tail lines in the embedded editors (same as Outliner)
2.0.9
- Improved: Journal Feed now always discovers Daily Notes by recursively scanning the Daily Notes folder, using the configured date format (supports arbitrary subfolders)
2.0.8
- Fix: Journal Feed now discovers Daily Notes stored in subfolders (e.g. format
YYYY/M/YYYY-M-D)
2.0.7
- New: Journal Feed view (anchor-only) for a continuous Daily Notes feed (Logseq-like Journals)
2.0.6
- Improved: Outliner V1 structural undo/redo now covers split, multiline paste, indent/outdent, merge, and drag/drop
- Improved:
Escnow closes suggests first; otherwise it exits block edit mode or clears the current block-range selection
2.0.5
- Fix: Outliner block-range selection now supports right-click on selected blocks to open the bullet menu (no handle aiming)
2.0.4
- Outliner: drag-select across blocks now selects a block range (whole-block highlight)
2.0.3
- Fix: Outliner multi-line blocks no longer render with extra blank lines (strict line breaks)
2.0.2
- Fix: Outliner display-mode embed preview (
![[...]]) now renders closer to the inline editor (spacing/indent; avoid clipped list markers)
2.0.1
- Outliner: editor command bridge (core shortcuts like Ctrl+B) + strict plugin allowlist
- New settings:
fileOutlinerEditorCommandBridgeEnabled,fileOutlinerEditorCommandAllowedPlugins(keepcorefor core shortcuts)
2.0.0
- Outliner becomes the main workflow (Logseq-like list blocks in scoped files)
- Unified scope model: enabled folders/files + per-file frontmatter
blp_outliner: true/false blp-viewaligns with the Outliner scope model- Removed legacy Timeline / Time Section features
1.8.1
- Fix: Inline Edit preserves list item children when embedding list-item block references (e.g.,
#^123) - Fix: Inline Edit no longer shows the embedded backlinks panel ("Link to current file")
1.8.0
- Inline Edit migrated to a native leaf-based engine (ported from sync-embeds)
- Removed legacy
!![[...]]embed syntax - Multi-line blocks: improved
^id-idrange creation and rendering stability - Fix: list item range markers stay scoped; IDs inserted at item end when needed (#22/#27)
- Fix: reading-mode postprocessor no longer blanks notes/embeds (#29)
- New: show a What's New modal once after upgrade
1.7.5
- Enhanced multi-line block handling by extracting actual links without aliases in markdown processing and flow editor
- Update regex patterns to support both alias and non-alias formats
- Fix typo in settings for block ID prefix and update localization files for Chinese and Traditional Chinese
- Add new command for copying blocks as editable embeds
- Update UIMultilineBlock to conditionally create line click handler based on showEditIcon prop
1.5.3
- Improved Timeline output format for better readability and organization
- Added file links as entry points for each file group
- Added separators between file groups and empty lines between content
- Preserved user customizations to embedded links
- Updated documentation with new format examples
- Fixed link matching issues in Timeline filtering
1.5.0
- Added Debug Mode to Timeline feature for troubleshooting filtering issues
- Fixed section extraction in Timeline to properly match links
- Improved Timeline filtering accuracy with basename matching
- Added hash-based optimization to prevent unnecessary file updates
- Fixed various edge cases in Timeline functionality
1.4.0
- Added Embed Block Editing feature for a seamless inline editing experience
- Added Timeline feature (
blp-timeline) to dynamically query and aggregate sections from your vault - Migrated project to a standardized structure with source code in the
srcdirectory - Refactored major components like Flow Editor into separate modules for better maintainability
1.3.0
- Added Time Section feature for inserting timestamps as headings
- Added automatic heading level determination for time sections
- Added special handling for daily notes with customizable pattern matching
- Added option to display time sections as plain text in preview mode
- Improved heading analysis with better level detection
- Fixed cursor positioning after inserting elements
1.2.4
- Added validation for edge cases in heading analysis to improve stability
- Enhanced error handling for the analyzeHeadings function
- Fixed potential issues when start_line and end_line are both zero
1.2.3
- Improved multi-line block handling, especially for list items
- Enhanced alias generation for multi-line blocks
- Added configurable notifications for block link copying
- Fixed list block ID handling and positioning
- Improved selected text handling for aliases
1.2.0
- Reorganized settings menu structure for better usability
- Fixed heading block handling when text contains headings
- Added experimental option: heading_id_newline for controlling heading block ID newline behavior
- Improved settings text clarity and organization
1.1.3
- Fixed block ID handling for list items
- Optimized block ID insertion position for list type blocks
- Improved list block handling logic
1.1.2
- Added new block link alias type: Selected text
- Improved alias handling for heading blocks
- Fixed alias generation for single-line blocks
- Enhanced alias type configuration options
- Improved documentation and settings descriptions
1.1.0
- Added support for Obsidian URI links
- Added customizable block link alias types:
- First x characters of block content
- Nearest heading title
- Improved command and menu text for better clarity
- Fixed consistency between command palette and right-click menu functionality
🔗 Link Types
| Format | Type | Usage |
|---|---|---|
[[file#^id]] |
Regular | Normal block reference |
![[file#^id]] |
Embed | Display block content (editable in Live Preview when enabled) |
![[file#^id-id]] |
Range | Display multi-line range |
obsidian://... |
URI | External app access |
📋 Requirements
- Obsidian 0.15.0+
- Dataview plugin (for
blp-viewQuery/View)
🙏 Acknowledgments
Built with inspiration from excellent open-source projects:
- sync-embeds - Leaf-based inline edit engine foundation
- Obsidian-Basics - Legacy editable block foundation
- copy-block-link - Block reference basics
- Text Transporter - Multi-block processing
📄 License
GNU GPLv3 License - see LICENSE file for details.