Skip to content

Utilities

hugomarins edited this page Jun 11, 2026 · 20 revisions

Queue Display Utilities

A collection of powerups and commands incorporated into Incremental Everything (originally from the standalone Hide in Queue plugin), plus two new powerups — Remove Parent and Remove Grandparent — that improve how parent/ancestor Rems are rendered during queue review.

Activation

The 5 powerups originally from the Hide in Queue plugin (Hide in Queue, Remove from Queue, No Hierarchy, Hide Parent, Hide Grandparent) are gated by the Enable Hide-in-Queue powerups and commands setting in Plugin Settings.

⚠️ Important. Only enable this setting if you do NOT have the standalone Hide in Queue plugin installed. The powerup codes are identical, and RemNote throws a fatal Duplicated powerup error if both plugins try to register the same code — Incremental Everything will fail to load. If you currently use the standalone plugin, uninstall it first, then enable the setting and reload RemNote.

The two new powerups — Remove Parent and Remove Grandparent — are always registered regardless of the setting, because the Cloze and Extract creators apply Remove Parent automatically to newly-created Rems.


Hide in Queue (hiq)

Tag any Rem with Hide in Queue (using the command). Its content will be replaced on the front of descendant flashcards with "Hidden in queue":

  • The content of the tagged Rem is hidden, but the bullet point itself remains visible.
  • Instead of the text, a ghosted/faded label saying "Hidden in queue" appears next to the bullet.
  • Visual result: The user still sees the structural indentation and knows that something is there, but the actual information is obscured during the question phase. Good for hiding hints, spoilers, or context that would make retrieving the answer trivial.

Editor:

Queue:


Remove from Queue (rfq)

Tag any Rem with Remove from Queue (using the command). Its content will be completely removed from the flashcard's visual hierarchy of its descendants.

  • Not only is the text gone, but any child Rems underneath it are pulled to the left, essentially collapsing the space.
  • Visual result: It looks exactly as if that intermediate Rem never existed in your document hierarchy at all.

Editor:

Queue:

Hide in Queue vs. Remove from Queue

  • Hide in Queue (hiq): content is hidden, but the bullet point structure remains visible with a "Hidden in queue" ghosted label. Use when you want to acknowledge the structural presence of a parent but obscure its text.
  • Remove from Queue (rfq): the Rem is completely removed from the visual hierarchy (display: none), and any children are shifted left to fill its space. Use to erase an intermediate parent level entirely as if it never existed.

No Hierarchy (nh)

Tag any Rem with No Hierarchy (using the command). Any ancestors will be hidden on the front and back of the flashcard.

Editor:

Queue:


Hide Parent (hp)

Tag any Rem with Hide Parent (using the command Hide Parent or /hp). Its immediate parent will be hidden on the front of the flashcard, but revealed on the back.

Similar to Hide in Queue, but instead of tagging the parent Rem, the user tags the specific flashcard Rem — so other flashcard descendants of the same parent Rem are not affected.

Editor:

Queue:


Hide Grandparent (hgp)

Tag any Rem with Hide Grandparent (using the command Hide Grandparent or /hgp). Its grandparent will be hidden on the front of the flashcard, but revealed on the back.

Editor:

Queue:


Remove Parent (rp) — New

Like Hide Parent, but more aggressive: the immediate parent is completely removed from the queue display on both the front and back of the card — no "Hidden in queue" placeholder, no indented blank space.

The cloze creator (Alt+Z) applies this powerup automatically to the newly-created cloze Rem, so the source Rem isn't shown redundantly during review without also affecting other descendant flashcards (e.g. Descriptor children) that need the parent visible for context.

The extract creator (Alt+Shift+X) uses Remove Parent only as a fallback, when the Remove from Queue powerup isn't available. See Create Extract behavior below for the full rule.

You can also apply Remove Parent manually to any flashcard via the Remove Parent command or /rp.


Remove Grandparent (rgp) — New

Same as Remove Parent, but one level higher: the grandparent is fully removed from the queue display on both front and back of the card.

Apply via the Remove Grandparent command or /rgp.


Create Extract — Source Rem Hiding Behavior

When you create an Extract (Alt+Shift+X), the source Rem is automatically tagged so it doesn't show up redundantly during review of the extract. The plugin picks one of two strategies depending on what's available:

  • Preferred path — Remove from Queue on the source. If the Remove from Queue powerup is registered (either via the Enable Hide-in-Queue powerups and commands setting above or via the standalone Hide in Queue plugin), it's applied directly to the source Rem. This survives extract relocation cleanly: if you later delete the source and let extracts stand on their own, the powerup goes with the source.
  • Fallback path — Remove Parent on the extract. If Remove from Queue isn't registered (neither integration enabled nor standalone plugin installed), Remove Parent is applied to the extract instead. This works for normal review, but has a caveat: if you later move the extract under a different parent, that new parent will also be hidden. To recover, remove the powerup manually from the extract — or enable the Hide-in-Queue integration so future extracts land in the preferred path.

The cloze creator (Alt+Z) does not branch like this — it always applies Remove Parent to the newly-created cloze Rem, because clozes are tightly bound to their source via the pinned reference and aren't typically relocated independently.


Queue Support

All commands above can be triggered directly while reviewing a flashcard in the Queue, without needing to switch to the editor:

  • No Hierarchy, Hide Parent, Hide Grandparent, Remove Parent, Remove Grandparent: automatically apply the powerup directly to the current card.
  • Hide in Queue and Remove from Queue: since these are designed to be applied to parent/ancestor Rems rather than the flashcard itself (applying them to the current card would make the card vanish), triggering them in the queue opens a confirmation prompt offering to apply the powerup to the card's parent instead.

Text Case Converter

This incorportated utility cycles selected text through three case styles with a single shortcut — just like Shift+F3 in Microsoft Word.

Text Case Converter demo


How it works / Como funciona

Press Shift+F3 with text selected to cycle through:

Step Style Example
1st press Title Case Cyclone in Tropical Latitudes
2nd press UPPERCASE CYCLONE IN TROPICAL LATITUDES
3rd press lowercase cyclone in tropical latitudes

The plugin auto-detects the current case of the selection and always advances to the next stage, so you never have to think about where you are in the cycle.


English Title Case rules / Regras do English Title Case

Title Case follows Chicago/APA style:

  • Always capitalised / Sempre maiúsculas:

    • The first and last word of the selection.
    • All nouns, verbs, adjectives and adverbs.
  • Kept lowercase / Mantidas em minúsculas (unless first or last word):

    • Articles / Artigos: a, an, the · o, a, os, as, um, uma…
    • Prepositions / Preposições: at, by, in, of, on, to, up, as, via · de, em, por, para, com, sem, sob, sobre…
    • Conjunctions / Conjunções: and, or, nor, but, for, yet, so · e, ou, mas, nem, que, se, como, pois, logo…
    • Portuguese contractions / Contrações portuguesas: do, da, dos, das, no, na, nos, nas, ao, aos, pelo, pela, pelos, pelas…

Examples / Exemplos

cyclone in tropical or subtropical latitudesCyclone in Tropical or Subtropical Latitudes

princípios das radiocomunicações marítimasPrincípios das Radiocomunicações Marítimas


Other features / Outras funcionalidades

  • Formatting preserved / Formatação preservada: bold, italic, highlight and all other rich-text styles are kept intact through every transformation.
  • Cross-element word boundaries / Palavras com formatação mista: words split across formatting runs (e.g. a bold first letter) are handled correctly — only the true first letter of each word is capitalised.
  • Multi-rem selections / Seleção de múltiplos rems: select one or more whole rems in the outline (instead of a text range) and Shift+F3 will cycle the case of each rem's text — and the back text of concept/descriptor rems — in a single shot. The current cycle stage is detected from the combined text of the batch so all rems advance together (Title → UPPER → lower), while Title Case is still computed per rem so each one's first/last-word rule is respected.

Restructure Outline by Headings

Re-nests a flat or mis-pasted document so that paragraphs and lower-level headings sit under their preceding higher-level heading. Built for the common case of pasting structured web content (with H1/H2/H3 headers) into RemNote, which often arrives either as a flat list of siblings or with mis-indented nesting (e.g. an H2 ending up under a paragraph instead of under its H1).

How to invoke

Run Restructure Outline by Headings (quick code roh) with one of the following selections:

  • Single rem selected → operates on all descendants of that rem. The selected rem stays in place as the container root.
  • Multiple rems selected (Shift+click in the outline) → operates on the selected rems plus all their descendants. The restructured subtree slots back into the selection's original position, preserving unselected sibling rems above and below it.
  • No selection / cursor inside a rem → falls back to the focused rem and operates on its descendants (same as single-rem case).

The command is also fully Omnibar-friendly: press Cmd+/ → search roh → Enter, and the selection you had before opening the palette is preserved (see Omnibar Selection Recovery below).

Preview popup

A side-by-side popup opens before any change is applied:

  • Left panel (Before): the current state of the selected subtree, exactly as it appears in RemNote.
  • Right panel (After): the proposed restructured tree. Each row that would move is marked with an amber left-border and tinted background so you can scan at a glance what's changing.

Each rem row is labelled with a colored heading badge (H1 through H6) or a paragraph marker. The status bar at the top reports counts: "N headings · M paragraphs · K would move".

Per-rem Preserve / Flatten toggle

Non-heading rems that already have children (lists, sub-paragraphs, etc.) get an inline button in the After panel:

  • ⏷ Preserve (default) — the rem keeps its existing children as an opaque subtree; they move with it when re-nested under a heading. Use this for legitimate nested content (e.g. bullet-list items that belong together).
  • ⏵ Flatten — the rem's children are pulled into the candidate flow as independent items and get re-organized by the heading rules along with everything else. Use this for mis-pasted nesting where children ended up under a non-heading rem by accident.

Toggling this button re-runs the algorithm and re-renders the After tree in place, so you can experiment before committing.

Apply / Cancel

  • Apply (bottom-right): runs the reparenting and captures an undo snapshot.
  • Cancel (or close the popup): no changes are made.

Algorithm

The restructure walks the candidate list in document order and tracks a heading stack:

  1. The smallest heading level present (e.g. H2 if there is no H1) becomes the implicit "top" — selections that don't start at H1 are not broken.
  2. Each heading Hn pops the stack until the top has a strictly lower level, then becomes a child of that heading (or the container root if the stack is empty), and is pushed onto the stack.
  3. Each paragraph attaches to whatever heading is currently on top of the stack (or the container root if no heading has been seen yet — "orphan paragraphs" before the first heading remain at the top level).
  4. Heading level skips are handled: an H1 → H3 jump (no H2 between) nests the H3 directly under the H1.

Heading levels supported

All six RemNote heading levels are recognized: H1, H2, H3, H4, H5, H6.

Undo

After applying, an Outline Restructured notification appears in the sidebar (left side, in the SidebarEnd region) with the affected scope name, the count of moved rems, and a red Undo Restructure button.

  • The Undo button restores every moved rem to its exact prior parent and position.
  • The notification stays visible until you click Undo or dismiss it with .
  • A second invocation is available as a command: Revert Last Outline Restructure (quick code rolr) — identical effect, same single snapshot slot.

The snapshot is session-scoped and single-slot: starting a new restructure overwrites the previous undo. (Multi-step undo isn't supported; for that, rely on RemNote's native history.)

Edge cases

  • No headings in the scope → the command shows the popup with an explanatory message ("no changes — no headings to anchor on") and disables the Apply button.
  • Powerup property rems (e.g. the auto-created Size rem RemNote attaches to every heading) are filtered out from both the walk and the preview, so they don't clutter the tree and aren't accidentally moved.
  • Portals, references, queries are treated as opaque paragraph candidates: they never get restructured internally and never get flattened.

Bulletize Inline Selected Text

Toggles a (bullet glyph + space) prefix at the start of each line within a single rem, across a multi-line selection. Built for the common case where a PDF highlight flattens a real bullet list into soft-wrapped text — RemNote keeps the visual lines inside one rem (joined by Shift+Enter soft line breaks) but drops the original bullet markers. Re-adding by hand at every line start is tedious, especially when you're prepping a highlight to become an Incremental Rem.

Bulletize Inline Selected Text demo

How to invoke

Run Bulletize Inline Selected Text (quick code bul) or press Opt+Shift+8 / Alt+Shift+8.

The default binding is Opt+Shift+8 because Opt+8 already types the glyph itself, and Ctrl/Cmd+Shift+8 is the "bulleted list" shortcut in Google Docs and Word — so Opt+Shift+8 is the natural analog. You can rebind it in RemNote's keyboard-shortcut settings.

What it does

It is a toggle, evaluated over the lines your selection touches:

  • If every non-empty selected line already starts with , the prefix is stripped from all of them.
  • Otherwise, is added to the selected lines that don't already have it (lines already bulleted are left as-is, so you never get a double bullet).

Empty lines (e.g. the blank line a \n\n produces between a heading and its list) are skipped.

Selection modes

  • Multi-line text selection → operates on every line the selection intersects. A partial selection still bulletizes whole lines: the start is expanded back to the beginning of its line, so you don't have to select from the exact line start.
  • Collapsed cursor (no selection) or a whole-rem selection → bulletizes the rem's entire front text in one shot. Handy for "bulletize this whole rem" — click into it and hit the shortcut.

Example

Before (one rem, soft line breaks; the first four lines were bulleted manually, the rest weren't):

a. Engine characteristics

• Type of engine and its BHP.
• Type of propeller – RH, LH or CPP.
• Critical RPM,
• Minimum number of consecutive start,
Astern power is %age of ahead power
Emergency full ahead to full astern time
...
RPM indicators in the bridge and outside bridge.

Select the list and press Opt+Shift+8 → the un-bulleted lines gain , so the whole list is uniform. Press it again on the same selection → all bullets are stripped.

Notes

  • Formatting preserved. The toggle rebuilds the rem's rich text by character offset, so highlights, colors, bold/italic, references and other inline nodes are left intact. The bullet itself is inserted as a plain node, so on a PDF-highlight rem (where the line text is highlighted yellow) the glyph is not highlighted. If you'd prefer the bullet to match the line's highlight/color, that's a small change — open an issue.
  • Front text only for the whole-rem gesture. A multi-line selection works in either the front or the back text (the plugin detects which contains the selection), but the collapsed-cursor "bulletize the whole rem" path acts on the front text.
  • Why and not a native bullet: native RemNote bullets require separate rems. Inside a single rem (which is what a PDF highlight produces), the only way to simulate a list is the literal prefix on each soft-wrapped line — which is exactly what this command automates.

Omnibar Selection Recovery

Internally, the plugin runs a small editor-selection cache so that commands invoked via the Cmd+/ Omnibar can still access the multi-rem selection you had before opening the palette. (Without this, RemNote blurs the editor when the Omnibar opens, and a plugin command's getSelection() call comes back empty — Add Tag-style internal commands sidestep this by capturing the selection synchronously when the palette opens, but plugins have no equivalent hook.)

Commands that benefit from this recovery:

  • Make Incremental (Extract) / Extract with Priority — multi-rem Make Incremental works from Cmd+/.
  • Dismiss Incremental Rem — multi-rem dismissal works from Cmd+/.
  • Paste Rem Sources — pasting onto multiple target rems works from Cmd+/.
  • Text Case Converter — multi-rem case cycling works from Cmd+/.
  • Restructure Outline by Headings — multi-rem restructure works from Cmd+/.

The cache has a 30-second TTL and is only written on positive selection events, so opening the Omnibar (which fires a clear-selection event) doesn't wipe what you just selected.

Clone this wiki locally