Waypoint - Automatic Table of Contents Generator for Obsidian.md

Overview

Waypoint - Automatic Table of Contents Generator for Obsidian.md

Do you use folders to categorize your notes and wish that Obsidian would show certain folders in the graph view? Do you hate having to keep track of tags and links every time a file is created? Do you want to decide what folders should be categories without creating index files for every folder?

Waypoint is an Obsidian plugin that automatically generates tables of contents/MOCs within your folder notes. Once a waypoint is generated, it'll automatically link to every note within the folder and its subfolders. The Waypoint plugin will detect when you create/rename/move/delete a note and automatically stay up-to-date. No more dealing with loads of tags or manually updating your own content maps!

Features

  • Automatically generated tables of contents!
    • Waypoints are created whenever you type the magic word (default is %% Waypoint %%) within a folder note. A folder note is any note with the same name as its parent folder.
  • Instant updates whenever files/folders are created, renamed, moved, or deleted
    • File path changes trigger a scan for any waypoints that might be affected. If a waypoint is found, it is instantly updated in real-time.
  • Folders can now appear on the graph view
    • Just create a waypoint in a note with the same name as the folder and it'll automatically link to every file within, including files in subfolders!
    • Waypoints can be "nested" to avoid unnecessary links
      • Say your folders go from A -> B -> C. If you put a waypoint in the folder note of folder A, it'd include every file within folders A, B, and C. But if you create another waypoint in folder B, the first waypoint would only link to that folder note.
  • Fine-grained control over which folders are considered categories
    • Since you decide when and where a waypoint is generated in your folder tree, you can decide which folders could be considered "categories" and which are just for organizing.
    • Say you have a folder tree like Latin -> Chapter I -> Vocab -> .... "Latin" and "Chapter I" might be considered important enough to be called categories, but the "Vocab" folder within each chapter is just used to keep things organized. Other plugins might require that an index file is made in every folder, but Waypoint allows you to pick and choose what folder notes contain tables of contents. This means you can avoid creating a waypoint in each "Vocab" folder while still having the waypoints in each chapter folder like directly to each term. And because of how Waypoint prioritizes folder hierarchy, the waypoint in the folder note for "Latin" will only link to the chapter folder notes to avoid creating unnecessary links!
  • Permanent and portable
    • Unlike other plugins, Waypoints are generated and saved as real markdown text within your folder notes. If you decide to switch to a different markdown editor that supports [[links]], all of your tables of contents will still be usable.
    • Note that the Waypoint plugin currently only works with Obsidian, so moving files around in another editor will cause your waypoints to be out-of-date.

How To Use

  • First, install the plugin. Waypoint is currently being reviewed for inclusion in the Community Plugins list. Once it is accepted, you'll be able to install it directly within Obsidian.
  • Generate a waypoint by editing a folder file (a file with the same name as its parent folder) and typing in the waypoint trigger text. By default, this is %% Waypoint %%. Make sure to include the double-percents on both sides!
    • This trigger flag can be changed in settings, but it will always require the double-percents as that is how Obsidian knows it's a comment and not real text.
  • And that's it! Waypoints will be automatically updated whenever the files or folders within that folder are changed. Be sure not to remove the %% Begin Waypoint %% or %% End Waypoint %% flags as this is what the plugin uses to locate the table of contents. Any changes made to the text between these flags will get removed once the waypoint is updated.

Note that since waypoints can only be generated in folder notes, it is highly recommended that you install a plugin like Folder Note to ensure that folder notes don't get lost after folder renames and other actions that change the file tree. If a folder note containing a waypoint is renamed to something other than the folder's name, the waypoint will no longer be updated.

Current Limitations

  • Waypoints can only be created within a folder note
    • A folder note is a note that has the exact same name as its parent folder.
    • Because scanning for waypoints every time a file/folder is changed is an intensive process, only folder notes are checked to avoid scanning every file in the vault.
  • Waypoints cannot be created on the top level of your vault
    • Waypoints are meant to categorize notes that are similar to one another. Adding a waypoint to the root node would cause every note in your vault to be linked and defeat the point of using waypoints in the first place.
  • Waypoint appearance can't be customized (yet)
  • Only notes with the same name as the folder they are in will be considered "folder notes"
  • Only one waypoint can be created per folder note

If your workflow would be improved by the removal of one of these limitations, feel free to reach out to me with your use case and I'll see what I can do!

FAQ

Why should I use this instead of just using tags?

Tags are an easy way to sort and organize different notes by a type or category, but they have a few drawbacks that limit their usability. My personal reasons for not using tags extensively are that they need to be added or removed from a note manually and they cannot be nested in a meaningful way. Folders on the other hand are a clear and easy way to lump a bunch of notes into a specific category. And the ability to nest folders makes it a lot easier to document the relationship between individual categories. Using this plugin, you can easily link files in the same folder together without any manual bookkeeping (beyond creating the intial waypoint). I still find myself using tags for defining different types of notes since those are not likely to change even if I move them around.

How is this different from indexing plugins like Zoottelkeeper?

Zoottelkeeper and other related plugins are more complex and try to solve different problems. Zoottelkeeper automatically creates index files for every single folder in your repository (with customizable blacklists and whitelists). This means that each folder shows up on the graph view and only links to the index file in the folder immediately below the current one. This is great if you use folders sparingly and each folder has a significant and specific meaning, but if you use folders as your main method of organization then your graph will quickly become messy.

Waypoint was created to give users fine-grained control over what folders are significant enough to be considered a "category" of notes. It allows you to create tables of content that link not only to the files in the same folder but to files in subfolders as well. And if you decide that certain subfolders are worthy of a subcategory of their own, creating a waypoint there will automatically prune the parent waypoint and update it to link only to that folder's folder note. If you prefer to have your waypoints only link to the nearest folder note (whether or not they contain a waypoint), you can enable that functionality within the settings.

Get In Touch

Got any questions, comments, or concerns? Feel free to raise an issue through GitHub or get in touch with me @IdreesInc. If you want to see some of my other projects, check out my website idreesinc.com.

Comments
  • Feature Request: Option to index other file extension types

    Feature Request: Option to index other file extension types

    I would like to use waypoint in place of zootelkeeper, but I depend on Zootelkeepers' indexing of .docx, pdf, and other file formats. Could this be enabled in waypoint? Some sort of way to indicate the filetype beyond an extension (i.e. by setting emoji or icons) would be excellent as well, but more minor :)

    enhancement 
    opened by brimwats 8
  • Waypoint plugin fails to load

    Waypoint plugin fails to load

    Hello! I just installed this plugin, but it fails to load when I try to enable it. I get the following error in the console:

    app.js:1 Plugin failure: waypoint SyntaxError: Unexpected token '<'
        at eval (<anonymous>)
        at app.js:1:1444405
        at e.<anonymous> (app.js:1:1444467)
        at app.js:1:127354
        at Object.next (app.js:1:127459)
        at s (app.js:1:126198)
    
    bug 
    opened by ekweible 4
  • Add Ability to Hide Waypoint Note

    Add Ability to Hide Waypoint Note

    Hiya there,

    I'd like to hide the note holding the Waypoint, from the list of Waypoints.

    E.g. the page contains itself, as a waypoint, and I'd like to hide that.

    enhancement 
    opened by martydingo 3
  • Fix regular markdown link generation

    Fix regular markdown link generation

    The regular markdown links are broken, and this fixes it.

    To verify that it was indeed broken before this patch, simply make nested folders (with folder notes) with waypoints. You can see that its broken in graph view, or simply by clicking the links (itll complain about folder existing rather than bring you to the file)

    I’ll probably open another PR for unit testing and a little more refactoring for this function.

    opened by HavinLeung 2
  • support writing markdown links

    support writing markdown links

    One of the best aspects of Waypoint is it focus on maintaining portability by writing links to the folder note markdown file. A big step in that direction would be to have the option to write markdown links instead of wikilinks. Ideally, the plugin would use the setting described under Obsidian's "Files & Links" settings page (specifically, "New link format", "Use [[Wikilinks]]" and "Detect all file extensions" and adjust its behavior accordingly. That would afford maximum portability and allow the behavior of Waypoint to stay consistent with the rest of a user's vault. Thanks so much for writing this.

    enhancement 
    opened by mgamble 2
  • Different behavior for subfolders in inside and outside notes

    Different behavior for subfolders in inside and outside notes

    After the inside and outside note were added (which I really hoped for, moving a big project dictionary to Obsidian, and happy that Waypoint exists and makes perfect alphabetization), there are some inconsistencies in Waypoint shows subfolders. In an folder note that is inside the folder, the subfolders are shown as follows:

    - [[ἀλλοίωσις]]
    	- **ἄλλος**
    	- [[ἄλλο ἄλλου]]
    	- [[ἄλλος καὶ ἄλλος]]
    	- [[πρὸς ἄλλο καὶ παρ' ἄλλου]]
    - [[ἄλλος]]
    - [[ἄλογος]]
    

    The folder note is duplicated, showing once as a folder which is not a link, and below as a link to the note

    In an outside note, they show as follows, without nested notes:

    - [[ἀλλοίωσις]]
    - **[[ἄλλος]]**
    - [[ἄλογος]]
    

    What I hope for, would look like that:

    - [[ἀλλοίωσις]]
    	- **[[ἄλλος]]**
    	- [[ἄλλο ἄλλου]]
    	- [[ἄλλος καὶ ἄλλος]]
    	- [[πρὸς ἄλλο καὶ παρ' ἄλλου]]
    - [[ἄλογος]]
    
    bug 
    opened by Bipodos 1
  • Feature Request: Support customized prefix of node

    Feature Request: Support customized prefix of node

    Thanks for your plugin! It's fantanstic !

    I wonder whether we can customize the prefix of the created list node like below :

    %% Begin Waypoint %%

    • [[folder_name]]
      • Children:: [[file1]]
      • Children:: [[file2]]
      • Children:: [[file3]]

    %% End Waypoint %%

    So that Waypoint can work with other excellent graph view plugins such as excalibrain perfectly! That make sense a lot !

    opened by Tony-zf1 1
  • Add support for

    Add support for "outside" folder note location.

    Maybe a duplicate of https://github.com/IdreesInc/Waypoint/issues/7, but it's a slightly different feature. It would be great to support folder notes that are outside of their folder. Eg:

    - a/
      - b.md
      - c.md
    - a.md <-- folder note
    

    It's described in this help doc: https://github.com/aidenlx/alx-folder-note/wiki/folder-note-pref

    enhancement 
    opened by xavdid 1
  • Feature Request: links to folder notes on their names

    Feature Request: links to folder notes on their names

    Now it's like this:

    Projects

    • Celeste
      • [[Celeste Video Script]]
      • [[Celeste]]
    • [[Projects]]

    According to me, it would be less messy and more efficient like this:

    [[Projects]]

    • [[Celeste]]
      • [[Celeste Video Script]]

    Great plugin, BTW!

    enhancement 
    opened by Cammagno 1
  • Fix markdown links

    Fix markdown links

    Original PR was #31, just cleaned up some things and reverted the Obsidian upgrade until I can be sure that won't block people on older versions of Obsidian from using this plugin.

    opened by IdreesInc 0
  • Support writing markdown links

    Support writing markdown links

    Adds support for standard markdown links (with proper URI encoding). The Obsidian plugin API does not support looking at user preferences, so the setting for link format has been added as a plugin setting instead. Defaults to WikiLinks because WikiLinks are cool.

    opened by IdreesInc 0
  • Create Link with definitive path instead of file name

    Create Link with definitive path instead of file name

    Waypoint links an incorrect file that are located in root folder when I have files have same titles. For example, in Folder note "Folder-A" Waypoint would link "root/File-1" instead of "root/Folder-A/File-1".

    Zoottelkeeper use pipe to solve this problem, discussion about the issue here

    Link would be like this in this way [[Folder-A/File-1 | File-1]]

    I really love the way this plugin works, so I hope that Waypoint have 'definitive path link'. Sorry if there is any intention not to use definitive link but file name. Thanks for your time!

    opened by Usuraipi 0
  • Option to Disable

    Option to Disable "Nesting"

    I started using Waypoint as a way to group different subjects together via folders etc. I was able to connect the primary subject to every note within it. Then connect a sub-subject by adding a waypoint into a sub-folder, etc. This made it so in graph view, I could see all the notes connected to one subject, then onto all the same notes that were also included in a sub-subject and which notes were not. And vise versa, I could hover over one note, and see all the subjects connected to it. However, this made it so that the waypoint of a higher folder, did not update new notes in lower folders, due to the "nesting". And if I deleted a higher folder note and refreshed it, it would then only show the folders, not the notes inside each folder. This then defeated the point of what I wanted. Is it possible to make the "nesting" part optional so that I can have those "unnecessary" which are quite necessary for the type of logic notes I'm doing? Thank you for your time!

    opened by TalisRune312 0
  • Include

    Include "excerpts" of notes in waypoints.

    I'm fairly new to using the Waypoint plugin, and already finding I'd love to include a short except from a note into the generated waypoint. Something like:

    %% Begin Waypoint %%
    - [[Dagger]] - Programmable CI/CD Pipelines using _real_ programming languages.
    %% End Waypoint %%
    

    and in the front matter of the target page, something like:

    summary: Programmable CI/CD Pipelines using _real_ programming languages.
    

    or

    summary-source: first-paragraph
    

    Has anyone suggested/thought about something similar before?

    enhancement 
    opened by talios 0
  • Feature request:

    Feature request: "refresh all waypoints"

    I'd like to see a command added that would go through my vault and refresh all Waypoints. This is sometimes necessary and I don't know why, but fairly often I come across a folder note that is improperly indexed. For example, perhaps I modified the files outside of Obsidian or who knows what the reason is. But I'd like to be able to say "rescan my vault and update all Waypoints."
    Thanks!

    enhancement 
    opened by wealthychef1 3
  • TOC

    TOC

    Can you add option to show automatically TOC of the file? Not just folder structure. Expanding the by this feature the plugin can really become the waypoint! Thanks for plugin

    opened by dxcore35 0
Releases(1.4.0)
Owner
Idrees
Making whatever distraction comes into my head next. To contact me, just visit the site below!
Idrees
Table of contents Trilium widget for editable and readonly text notes.

Trilium-TocWidget Table of contents Trilium widget for editable and readonly text notes. Screenshot Features The ToC is live and automatically updated

Antonio Tejada 25 Dec 29, 2022
jQuery plugin to generate a table of contents

jquery.contentify A jQuery plugin to generate a table of contents Usage The below code snippet shows how to create the table of contents in a containe

Johannes Marbach 1 Aug 24, 2021
A vanilla JavaScript library that automatically generates the "Table of Contents" of an HTML document.

DocumentOutline.js DocumentOutline is a vanilla JavaScript library that automatically generates the "Table of Contents" of an HTML document. See a liv

Angelo Faella 3 Jul 12, 2021
Add a table of contents to the sidebar of your GitHub issues and pull requests.

github-sidebar-jump-extension Getting started ?? Build locally Checkout the repository to your local machine Run npm install to install all required d

Jason Barry 11 Sep 7, 2022
Show floating sticky outline (table of contents) for Notion pages, powered by nbundle.

Notion Outline Show floating sticky outline (table of contents) for Notion pages, powered by nbundle. This is an nbundle-powered Notion app bootstrapp

nbundle 11 Nov 10, 2022
Creates a table of contents in a DOM element optionally linked to with anchors. No jQuery or other dependencies.

HTML-Contents Creates a table of contents in a DOM element optionally linked to with anchors. No dependencies. @psalmody Get It We're on npm: npm i ht

Michael Tallino 3 Oct 25, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Obsidian-dataview-table-filter-menu - Dynamically created filter menu for dataview tables in obsidian

Dataview table Filter Menu for Obsidian Dynamically created filter menu for data

shiro 17 Sep 24, 2022
A plugin for Obsidian (https://obsidian.md) that adds a button to its search view for copying the Obsidian search URL.

Copy Search URL This plugin adds a button to Obsidian's search view. Clicking it will copy the Obsidian URL for the current search to the clipboard. T

Carlo Zottmann 6 Dec 26, 2022
Obsidian text generator Plugin Text generator using GPT-3 (OpenAI)

is a handy plugin for Obsidian that helps you generate text content using the powerful language model GP

null 356 Dec 29, 2022
✏️ A small jQuery extension to turn a static HTML table into an editable one. For quickly populating a small table with JSON data, letting the user modify it with validation, and then getting JSON data back out.

jquery-editable-table A small jQuery extension to turn an HTML table editable for fast data entry and validation Demo ?? https://jsfiddle.net/torrobin

Tor 7 Jul 31, 2022
Another table select prompt plugin of inquirer.js, with powerful table render and filters.

inquirer-table-select-prompt Table row selection prompt for Inquirer.js 动机 现有的 inquirer.js 没有支持表格行选中的命令行交互的插件. 社区内能查找到的,只有一个二维数组的 checkbox,eduardobouc

锂电 3 Jan 7, 2023
Automatic documentation generator for ESLint plugins and rules.

eslint-doc-generator Automatic documentation generator for ESLint plugins and rules. Generates the following documentation based on ESLint and top ESL

Bryan Mishkin 64 Dec 27, 2022
Validate directory structure and file contents with an extension of JSON schema.

directory-schema-validator Description Validate directory structure and file contents with an extension of JSON schema. Install Install using NPM or s

Justin Poehnelt 5 Nov 1, 2022
Apinto document project, which includes the use tutorials, development documents and other related contents of apinto.

apinto-docs Apinto document project, which includes the use tutorials, development documents and other related contents of apinto. README 本文档由 VuePres

Eolink 5 Dec 1, 2022
This project scans yandex disk folders that are open to public sharing and allows you to download their contents.

kitapbar.com Development start mongodb server docker-compose -f docker-compose.dev.yaml up -d yandex service cd services/yandex create a .env file by

Xinor 14 Oct 15, 2022
An Obsidian plugin to paste Excel tables as Markdown tables in Obsidian editor.

Obsidian Excel to Markdown Table An Obsidian plugin to paste Excel tables as Markdown tables in Obsidian editor. Demo You can paste the copied Excel d

Ganessh Kumar 108 Jan 4, 2023