#+TITLE: Org-vscode Demo Walkthrough #+FILETAGS: :DEMO:ORG_VSCODE: # Tag groups (used by Tagged Agenda match strings) # - Group tags: [ GROUP : MEMBER1 MEMBER2 ] # - Mutually exclusive groups: { GROUP : MEMBER1 MEMBER2 } #+TAGS: [ GTD : WORK HOME ] { CONTEXT : @WORK @HOME } # File-level properties (used as fallback for inherited lookups) #+PROPERTY: OWNER Demo Owner # This file is designed as a quick “tour” of Org-vscode. # Follow sections top-to-bottom for a demo video. # Lines starting with "#" are narration prompts. * [2026-01-05 Mon] Core Editing ---------------------------------------------------------------- # 1) TODO status cycling (single line) # Cursor on the keyword and use Ctrl+Left / Ctrl+Right. * TODO Cycle me through keywords :INTRO: # 2) Multi-line selection editing (status cycling) # Select the next 3 task lines and cycle together. * TODO Multi-line status change #1 :MULTILINE: * TODO Multi-line status change #2 :MULTILINE: * TODO Multi-line status change #3 :MULTILINE: # 3) Move blocks up/down (Shift+Alt+Up/Down) # Works from anywhere inside the task block and keeps child tasks/drawers/checklists together. * TODO Move this task block around :EDITING: Some indented notes move with the task. - [ ] And checkboxes move too # 4) Folding / unfolding (Ctrl+Shift+[ / ]) * TODO Fold me Hidden notes… # 5) Emphasis rendering (*bold* /italic/ _underline_ +strike+) * TODO Emphasis demo :STYLE: Here is *bold*, /italic/, _underline_, and +strike+. * [2026-01-06 Tue] Org-Mode Compatibility + Tags ------------------------------------------------ # 6) Emacs-style end-of-headline tags * TODO Tags live at end-of-headline :WORK:HOME: # 7) Inline tag insertion (Ctrl+Shift+T) * TODO Add a tag to me (end-of-headline) :TAGS: # 8) FILETAGS inheritance (used by Tagged Agenda match strings) # (This file already has #+FILETAGS at the top.) * TODO Inherits :DEMO:ORG_VSCODE: via FILETAGS * [2026-01-07 Wed] Planning (SCHEDULED / DEADLINE / CLOSED) ------------------------------------- # 9) Planning lines live under the headline (v2 format) # Use Ctrl+Alt+S to toggle SCHEDULED. Use Ctrl+Alt+D to toggle DEADLINE. * TODO Schedule + deadline demo :PLANNING: SCHEDULED: <2026-01-07> DEADLINE: <2026-01-20> # 10) Align Scheduled Tasks (Alt+Shift+A) # This is intentionally misaligned spacing; run Align Scheduled Tasks. * TODO Misaligned planning line :ALIGN: SCHEDULED: <2026-01-07> DEADLINE: <2026-01-25> # 11) Date tools # - Smart date forward/backward (Alt+Shift+Right/Left) # - Deadline date forward/backward (Ctrl+Shift+Right/Left) * TODO Try date adjustments here :DATES: SCHEDULED: <2026-01-07> DEADLINE: <2026-01-21> * [2026-01-08 Thu] Checkboxes + Statistics Cookies ---------------------------------------------- # 12) Checkbox toggling (Ctrl+Alt+X) + hierarchical parent completion * TODO Checkbox basics [/] :CHECKBOX: - [ ] Parent item - [ ] Child 1 - [ ] Child 2 - [ ] Standalone item # Tip: multi-line selection is supported. # Select multiple checkbox lines and press Ctrl+Alt+X to bulk-toggle them: # - if all selected are checked, they’ll all be unchecked # - otherwise they’ll all be checked # 13) Percent cookie (same stats, different display) * TODO Checkbox percent [%] :CHECKBOX: - [ ] A - [X] B - [ ] C # 14) List-item cookie scope # Put a cookie on a list item to scope to that item’s subtree. * TODO List-item cookie scope :CHECKBOX: - [-] Release checklist [/] - [X] Write changelog - [ ] Package VSIX - [ ] Publish * [2026-01-09 Fri] Subtree TODO Completion Stats ------------------------------------------------- # 15) Subtree completion cookie on a heading includes: # - checkbox completion under the subtree # - TODO subtree completion (DONE/ABANDONED count as complete) * TODO Subtree completion overview [/] :SUBTREE: SCHEDULED: <2026-01-09> DEADLINE: <2026-01-31> ** DONE Child task complete #1 CLOSED: [2026-01-05 Mon 09:00] ** ABANDONED Child task counts complete too CLOSED: [2026-01-05 Mon 09:05] ** IN_PROGRESS Child task incomplete ** TODO Child task incomplete ** Checklist under subtree (also counts toward the cookie) - [X] Checkbox complete - [ ] Checkbox incomplete * [2026-01-10 Sat] Views (Agenda / Tagged Agenda / Calendar) -------------------------------------- # 16) Create a few scheduled tasks with tags so you can demo: # - Agenda View (scheduled items) # - Tagged Agenda (filter by tags / match strings) # - Calendar View * TODO Prep demo video outline :WORK:DEMO: SCHEDULED: <2026-01-10> * TODO Record the demo :WORK:DEMO: SCHEDULED: <2026-01-10> DEADLINE: <2026-01-11> * TODO Publish to both marketplaces :RELEASE:DEMO: SCHEDULED: <2026-01-10> # 16a) Open Agenda View # Command Palette: Org-vscode: Agenda View # - Click a task (or filename) in the webview to reveal the exact line in this file. # - Optional: the last clicked row can be highlighted (outline-only). # Settings: # Org-vscode.agendaRevealTaskOnClick = true/false # Org-vscode.agendaHighlightTaskOnClick = true/false # 16b) Open Tagged Agenda + try match strings # Keybinding: Ctrl+Shift+G # Try these inputs at the prompt: # - AND: +WORK+DEMO (or: WORK,DEMO or: all:work,demo) # - OR: WORK|HOME (or: any:work,home) # - NOT: -RELEASE # - Group tag: +GTD (matches tasks tagged WORK or HOME based on #+TAGS group) # 16c) Open Calendar View + drag/drop reschedule # Keybinding: Ctrl+Shift+C # - Drag a task to another day to rewrite the SCHEDULED date. # - Click a task to reveal it in the source file. * TODO Calendar drag-drop demo :@WORK:WORK: SCHEDULED: <2026-01-10> * TODO Tagged Agenda group demo (matches +GTD) :@HOME:HOME: SCHEDULED: <2026-01-10> * CONTINUED Optional includeContinued demo :WORK: SCHEDULED: <2026-01-10> # By default, Tagged Agenda omits CONTINUED tasks to avoid duplicates. # To include them, set: Org-vscode.includeContinuedInTaggedAgenda = true * [2026-01-10 Sat] Preview (Live HTML) ----------------------------------------------------------- # 16b) Live preview (MVP) + scroll sync # Use Ctrl+Alt+P to open preview to the side. # Then scroll the editor: the preview should follow. * TODO Open the Org Preview :PREVIEW: Tip: Command Palette also has: - Org-vscode: Open Preview - Org-vscode: Open Preview to Side * [2026-01-11 Sun] Tables + Exports ------------------------------------------------------------- # 17) Insert Org Table command / snippet | Column A | Column B | |----------+----------| | A1 | B1 | | A2 | B2 | # 18) Reporting # - Export Current Tasks # - Export Yearly Summary # - Generate Executive Report # - Year-In-Review Dashboard * TODO Try the reporting commands from Command Palette :REPORTS: * [2026-01-12 Mon] Org Syntax Parity (Links / Blocks / Math / Properties) ------------------------ # 19) Priorities (Org-style cookies) * TODO [#A] Priority demo (A/B/C) :PRIORITY: # 20) More emphasis: inline code and verbatim * TODO Inline code/verbatim demo :STYLE: Use =inline code= and ~verbatim~ for literal text. # 21) Attributes / directives (used by exporters and previews) #+CAPTION: Example caption (directive) #+ATTR_HTML: :width 600 # 22) Links: external, file, heading, id, and internal targets * TODO Link navigation demo :LINKS: - Bare URL: https://orgmode.org - Bracket link with description: [[https://orgmode.org][Org manual]] - Mail link: mailto:someone@example.com - File link (relative): [[file:../docs/howto.md][Open the How-To]] - Internal heading link: [[*Tables + Exports][Jump to the tables section]] This heading has a global ID and a CUSTOM_ID (anchor-like): :PROPERTIES: :ID: 11111111-2222-3333-4444-555555555555 :CUSTOM_ID: demo-custom-id :END: - ID link (cross-file capable): [[id:11111111-2222-3333-4444-555555555555][Jump via ID]] - Anchor link (targets / CUSTOM_ID): [[#demo-custom-id][Jump via #anchor]] A classic Org target looks like this (link to it with [[#demo-target]]): <> * [2026-01-12 Mon] Properties + IDs (Commands) --------------------------------------------------- # 22a) Property and ID commands (Command Palette) # Commands: # - Org-vscode: Set Property # - Org-vscode: Get Property (with inheritance) # - Org-vscode: Delete Property # - Org-vscode: Get or Create ID # - Org-vscode: Set ID # 22b) Inheritance demo: # - This heading defines OWNER locally. # - The child heading inherits OWNER unless it overrides it. * TODO Parent property (OWNER=Parent) :PROPERTIES: :OWNER: Parent :END: ** TODO Child inherits OWNER ** TODO Child overrides OWNER :PROPERTIES: :OWNER: Child :END: # Try: run “Get Property (with inheritance)” on each heading for OWNER. # Also try “Delete Property” on the child override and re-run “Get Property”. # 22c) ID commands demo: # - Run “Get or Create ID” on a heading without an :ID: (it will add one and copy it). # - Run “Set ID” and paste a custom UUID (or submit empty input to auto-generate). # 23) Lists: ordered, unordered, and checkboxes * IN_PROGRESS List syntax demo :LISTS: - Unordered bullet + Alternate unordered bullet 1. Ordered item (1.) 2) Ordered item (2)) - [ ] Checkbox unchecked - [-] Checkbox partial - [X] Checkbox checked # 24) Blocks: SRC blocks and other BEGIN/END blocks * TODO Block syntax demo :BLOCKS: # 24a) SRC block execution (Org-babel-style MVP) # Put your cursor anywhere inside a SRC block and execute it: # - Click the CodeLens above #+BEGIN_SRC: “Execute src block” # - OR right-click → “Execute Src Block” # - OR run from Command Palette: Org-vscode: Execute Src Block # # After execution, Org-vscode will insert/update a #+RESULTS: block immediately after #+END_SRC. # Notes: # - Execution is disabled in untrusted workspaces (VS Code Workspace Trust). # - Some languages require external tools on PATH (e.g., C++ needs a compiler). # - You can configure per-language executables in Settings: Org-vscode.srcExecution.* #+BEGIN_SRC javascript console.log("Hello from JavaScript"); #+END_SRC #+RESULTS: : Hello from JavaScript #+BEGIN_SRC python print("Hello from Python") #+END_SRC #+RESULTS: : Hello from Python #+BEGIN_SRC powershell Write-Output "Hello from PowerShell" #+END_SRC #+RESULTS: : Hello from PowerShell #+BEGIN_SRC bash echo "Hello from Bash" #+END_SRC #+RESULTS: : Hello from Bash #+BEGIN_SRC cpp #include int main() { std::cout << "Hello from C++" << std::endl; return 0; } #+END_SRC #+RESULTS: : Hello from C++ #+BEGIN_QUOTE Quoted block text. #+END_QUOTE #+BEGIN_EXAMPLE Example block text (no markup processing). #+END_EXAMPLE # 25) Math: inline and display fragments * TODO Math demo :MATH: Inline math: $E = mc^2$ # 25a) Math symbol rendering (decorations) # LaTeX commands like \alpha and \sum should render as symbols in the editor. Inline with commands: $\alpha + \beta = \gamma$ Operators: $a \leq b \Rightarrow a \neq b$ Display math: $$ \sum_{i=1}^{n} i = \frac{n(n+1)}{2} \int_0^1 x^2\,dx = \frac{1}{3} $$ # If you want to see the raw commands instead of symbols, set: # Org-vscode.decorateMath = false * [2026-01-13 Tue] Navigation + Tooling ---------------------------------------------------------- # 26) Open-by-tag / open-by-title helpers # Command Palette: # - Org-vscode: Open By Tag # - Org-vscode: Open By Title # 27) Smart insert new element (Alt+Enter) # Try Alt+Enter in a few places: # - On a heading line: inserts a new heading # - On a list item: inserts a new list item # - In a table row: inserts a new row * TODO Try Alt+Enter on this heading :EDITING: - List item A - List item B | Table A | Table B | |---------+---------| | A | B | # 28) Customization tools # Command Palette: # - Org-vscode: Open Syntax Color Customizer # - Org-vscode: Open Keybinding Customizer * [2026-01-14 Wed] Timestamps (Active vs Inactive) ---------------------------------------------- # 29) Timestamp formats # Org uses two timestamp bracket styles: # - Active: <...> (appears in Agenda/Calendar scans) # - Inactive: [...] (reference only, used for CLOSED and history) # # This extension supports the full Emacs timestamp shape, including time ranges, # repeaters (+1w, ++1m, .+1d) and warning offsets (-2d). * TODO Timestamp parsing demo :TIMESTAMPS: SCHEDULED: <2026-01-20 Tue 10:00-11:00 +1w -2d> DEADLINE: <2026-01-30 Fri -3d> This is a plain active timestamp in body text (it can show up in views): <2026-01-22 Thu> This is an inactive timestamp in body text (reference only): [2026-01-22 Thu] # Optional: there is also a setting to treat only <...> as active for agenda scans. * [2026-01-15 Thu] LOGBOOK Drawer (State Change History) ---------------------------------------- # 30) LOGBOOK # When enabled, completing tasks can record state-change history inside a drawer. # Settings: # Org-vscode.logIntoDrawer # Org-vscode.logDrawerName (default: LOGBOOK) * TODO Complete me to generate a LOGBOOK entry :LOGBOOK: SCHEDULED: <2026-01-20> * DONE LOGBOOK example (pre-filled) :LOGBOOK: CLOSED: [2026-01-17 Sat 19:09] :LOGBOOK: - State "DONE" from "TODO" [2026-01-17 Sat 19:09] :END: Notes under the drawer stay normal text.