Documentation
Commentary
TILES (Tagged Instant Lightweight Emacs Snippets) is a note-taking
system where each note is a title-less, single paragraph stored
in its own file. Notes are organized through tags and bold keywords
rather than hierarchies or titles. A dashboard offers a bird's-eye
view of notes and allows note manipulation: create, edit, delete,
stitch view mode, and more.
Note file format (TYYYYMMDDHHMMSS.org):
This is the paragraph. *Bold words* are searchable keywords.
/Italic/ and [[links]] are supported. Inline footnotes[fn:: like
this] are stripped from previews. Org Mode format is recommended.
&& This is a private paragraph. It is hidden from previews,
stitched views, and dynamic blocks. Only visible when expanding
a note with TAB in the dashboard or editing the file directly.
tag1/tag2/tag3
The last non-empty line is always the tag line; everything above it
(separated by a blank line) is content. Multi-paragraph notes work,
but they are discouraged and not considered to be in the spirit of
TILES. Paragraphs starting with && are private (hidden from all
views except TAB expansion and direct editing).
Features:
- Atomic notes: one paragraph per file, no titles required
- Timestamp naming: files named TYYYYMMDDHHMMSS.org
- Tag-based organization via slash-separated tag lines
- Keyword extraction: bold words (*word*) are searchable; hyphens
are normalized to spaces for matching (e.g. *Falcon-9* and
*Falcon 9* are the same keyword) but note content is unchanged
- Dashboard (tiles-show-notes): chronological listing with
color-coded timestamps, inline org preview, editable split,
tag/keyword filtering, tag exclusion, and date editing
- Moon phase in dashboard status line (days until next New/Full Moon)
- Tag search with AND/OR logic (/ = AND, space = OR)
- Keyword search with AND/OR/NOT (/ = AND, space = OR, ! = NOT)
- Two-panel search view with live preview
- Stitched view: search results as flowing text
- Quick capture via minibuffer (tiles-quick, tiles-yank)
- Touch command to bump a note's timestamp (tiles-touch)
- Private paragraphs: && prefix hides content from all views
except TAB expansion and direct file editing
- Focus mode: distraction-free editing with centered ~80-char
body, (tiles-focus-mode, enabled by default)
- Tag/keyword listing with occurrence counts, sorting, and keyword rename
- Tag-line fontification: tag line shown in red when editing notes
- Unicode box-drawing dashboard separators (tiles-fancy-separators)
- In-memory cache with mtime invalidation for fast repeated access
- Org dynamic blocks for embedding note lists/contents in org files
Global keybindings (under C-c m):
C-c m m - Dashboard (tiles-show-notes)
C-c m n - New note (tiles-new)
C-c m q - Quick capture via minibuffer (tiles-quick)
C-c m y - Quick capture from clipboard (tiles-yank)
C-c m t - Tag search (tiles-tag-search); insert tag at point in capture buffers
C-c m k - Keyword search (tiles-keyword-search)
Dashboard keybindings:
n/p - Navigate notes
SPC - Open editable preview split (updates on navigation)
RET - Open note file
M-RET - Open note file read-only
TAB - Toggle expanded view (private &&, keywords, stats)
M-up/down - Reorder notes
d - Change note date/timestamp
u - Touch (update timestamp to now)
D - Delete note (with confirmation)
t - Filter by tag
k - Filter by keyword
T - List all tags
K - List all keywords
F - Exclude tags (hide notes with specified tags)
c - Clear search filter (keeps exclusion)
C - Clear tag exclusion (keeps search filter)
f - Toggle raw preview (strip org formatting)
+ - Load next batch of notes
0 - Stitch displayed notes (respects reordering)
l - New note (same as C-c m n)
g - Refresh
q - Quit
Capture keybindings:
C-c C-c - Save note (prompts for tags if missing)
C-c C-k - Cancel and discard
Search view keybindings:
n/p - Navigate results
RET - Open note
SPC - Toggle to stitched view
r - Refine search
t/k - Switch to tag/keyword search
q - Quit
Stitched view keybindings:
n/p - Jump between note boundaries
RET/e - Open source file at point
SPC - Toggle back to two-panel view
r - Refine search
q - Quit
Tag search syntax:
/ - AND (all tags in group must match)
space - OR (any group matches)
Example: "b218/lx2026 misc" = (b218 AND lx2026) OR misc
Keyword search syntax:
/ - AND (all terms in group must match)
space - OR (any group matches)
!prefix - NOT (term must NOT match)
Example: "emacs Lisp" = Emacs OR Lisp
Example: "emacs/Lisp" = Emacs AND Lisp
Example: "emacs/!Lisp" = Emacs but not Lisp
Other commands (M-x):
tiles-touch - Update a note's timestamp to now (renames file)
tiles-focus-mode - Toggle distraction-free editing (~80-char centered)
tiles-list-tags - Browse all unique tags with occurrence counts
tiles-list-keywords - Browse all unique keywords with occurrence counts
tiles-list-rename - Rename keyword under cursor across all notes (R in keyword list)
tiles-clear-cache - Force reload of all note data from disk
tiles-show-notes - Open the dashboard (also C-c m m)
tiles-new - Create a new note (also C-c m n)
tiles-capture - Alias for tiles-new
tiles-quick - Quick capture via minibuffer (also C-c m q)
tiles-yank - Quick capture from clipboard (also C-c m y)
tiles-tag-search - Search by tags (also C-c m t)
tiles-keyword-search - Search by keywords (also C-c m k)
Org dynamic blocks:
#+BEGIN: tiles-notes :tags "b218/lx2026" :sort "newest" :limit 10
(generates a linked list of matching notes)
#+END:
#+BEGIN: tiles-files :tags "journal" :separator "\n-----\n"
(embeds note contents directly)
#+END:
Update blocks with C-c C-x C-u, insert with C-c C-x x.
Changelog:
0.5.2 - Keyword search now supports AND (/) and NOT (!) alongside the
existing space-as-OR. Tag rename: R in the tag list renames a
tag across all notes (parallel to keyword rename). New
dashboard key w copies the selected note (private && stripped)
to the kill ring. HTML anchor in tiles-files dblocks is now
opt-in via tiles-dblock-html-anchor, with per-tag suppression
via tiles-dblock-no-anchor-tags. Polish: g refresh preserves
cursor position; tiles--strip-org-markup also handles
underline/strikethrough/code/verbatim; touch logic deduplicated.
0.5.1 - Similar notes: press m in a read-only tile to list the top
tiles-similar-count notes most similar to it (TF-IDF over
shared content tokens, bold *keywords* boosted). q closes
the read-only buffer.
0.5 - Persistent on-disk cache (tiles-cache-file), reverse tag and
keyword indices for O(matching) search and dashboard filter,
file-notify watch (tiles-watch-files) to catch external edits.
0.4 - First MELPA release;
0.3.5 - Tag mode control: tiles-tag-mode can be `unrestricted' (default),
`inhibit' (no tags, tag search/filter disabled), a list of allowed
tag strings (completion-based, first element is default), or
(required-one-of TAG...) where any tags are accepted but at least
one from the list must be present.
Fix: deleting the last note now refreshes the dashboard to an empty
state instead of leaving the deleted note visible.
0.3.4 - Keyword rename: R in keyword list renames a keyword across all notes.
0.3.3 - Unicode box-drawing dashboard separators, tag-line fontification,
focus mode from stitched view.
0.3.2 - Focus mode for distraction-free editing (~80-char centered).
Interactive tag/keyword lists with occurrence counts and
sorting (alphabetical/occurrence, ascending/descending).
Dashboard keybindings: T list tags, K list keywords,
u touch, L new note with focus mode. Stitch confirmation
when no filter is active.
0.3.1 - Red & indicator for notes with private paragraphs.
0.3 - Private paragraphs: paragraphs starting with && are hidden
from dashboard previews, stitched views, search panels, and
dynamic blocks. Only visible when expanding a note with TAB
in the dashboard or editing the file directly.
0.2 - Initial public release.
Requires
Dependencies
Consumers
Reverse Dependencies
No reverse dependencies recorded.