krz/orgstar

A native macOS editor for org-mode files. editor org-mode swift

Commit d924123ec2

d924123ec2d6bf58446f39623ad2f689971d8c27

parent: bba622a330

Verified · cmc

cmc <hello@cleberg.net> · 2026-10-09 02:49 UTC

Update the manual for the closed gaps

Running C, C++, D, Java, Fortran and Clojure blocks, their header
arguments, results and missing-program messages; output list results.
Mac keys for Cancel Clock, Recalculate Table Row and the single tangles.
Open-clock resolution on agenda and capture clock-in. Doom snipe
character folding and counts, M-q in visual block state. iOS src block
highlighting, narrowed table columns, reader display settings and the
selection colour.

Layout: unified · split

docs/manual/guide/03-keys.org +8 −8
@@ -332,9 +332,9 @@ Motions move the caret in normal state, extend the selection in visual states, a
332| =$=, =<end>= | End of the line; with a count, of the line count − 1 lines down. | 332| =$=, =<end>= | End of the line; with a count, of the line count − 1 lines down. |
333| =g_= | Last non-blank of the line. | 333| =g_= | Last non-blank of the line. |
334| =gg=, =G= | First line, last line; with a count, that line. The column is kept (=evil-start-of-line= nil). | 334| =gg=, =G= | First line, last line; with a count, that line. The column is kept (=evil-start-of-line= nil). |
335| =f= /x/, =F= /x/, =t= /x/, =T= /x/ | To, or to just before, the next or previous /x/ on the line. These are one-character snipes, as Doom's =evil-snipe-override-mode= makes them: a lowercase /x/ matches either case, an uppercase one only itself; =t= and =T= skip a match right next to the caret; =f SPC= and =t SPC= skip a run of blanks after the caret and stop at the last blank before the next word, or just before it. Accented variants of /x/ don't match (=evil-snipe-char-fold= is not supported). | 335| =f= /x/, =F= /x/, =t= /x/, =T= /x/ | To, or to just before, the next or previous /x/ on the line. These are one-character snipes, as Doom's =evil-snipe-override-mode= makes them. /x/ also matches its accented and other variants, as Doom's =evil-snipe-char-fold= makes it: =a= matches =à=, =À=, =ª= and =a=. A lowercase /x/ matches either case, a capital only capitals; =t= and =T= skip a match right next to the caret; =f SPC= and =t SPC= skip a run of blanks after the caret and stop at the last blank before the next word, or just before it. |
336| =;=, =,= | Repeats the last snipe (=s=, =S=, =f=, =F=, =t= or =T=), forward or reversed. A repeat searches all the text the window shows, so it can go past the caret's line (=evil-snipe-repeat-scope=, as Doom sets it). Right after a snipe, its own key repeats it: =f= goes on in the same direction and =F= reverses, and the same for =t= and =T= and for =s= and =S=. A count before that repeating key is not supported. | 336| =;=, =,= | Repeats the last snipe (=s=, =S=, =f=, =F=, =t= or =T=), forward or reversed. A repeat searches all the text the window shows, so it can go past the caret's line (=evil-snipe-repeat-scope=, as Doom sets it). Right after a snipe, its own key repeats it: =f= goes on in the same direction and =F= reverses, and the same for =t= and =T= and for =s= and =S=. A count typed right after a snipe ends this: the key after the count starts a new snipe with that count, so =f a 2 f a= goes to the next /a/, then to the second /a/ after it. |
337| =s= /xy/, =S= /xy/ | evil-snipe: to the next or previous /xy/ on the line. All-lowercase /xy/ matches case-insensitively. Not available after an operator. | 337| =s= /xy/, =S= /xy/ | evil-snipe: to the next or previous /xy/ on the line. Each character matches its variants as for =f=, and /xy/ without a capital matches case-insensitively. =SPC= and =TAB= are read as a space and a tab. Not available after an operator. |
338| =%= | The bracket matching the next =()=, =[]= or ={}= on the line. | 338| =%= | The bracket matching the next =()=, =[]= or ={}= on the line. |
339| ={=, =}= | Previous, next blank line. | 339| ={=, =}= | Previous, next blank line. |
340| =/=, =?= | Asks in the echo area for a regular expression and searches forward or backward, wrapping around the file. | 340| =/=, =?= | Asks in the echo area for a regular expression and searches forward or backward, wrapping around the file. |
@@ -358,7 +358,7 @@ Search patterns are ICU regular expressions as macOS uses them, close to PCRE; E
358| =gc= /motion/ | Comments or uncomments lines with =#= (=evilnc-comment-operator=). =gcc= acts on lines. See [[*Commenting][Commenting]]. | 358| =gc= /motion/ | Comments or uncomments lines with =#= (=evilnc-comment-operator=). =gcc= acts on lines. See [[*Commenting][Commenting]]. |
359| =gq= /motion/, =gw= /motion/ | Fills the paragraphs in the motion's lines to the fill column, as Fill Paragraph does; other elements in the lines are left alone. =gq= leaves the caret on the first non-blank of the last line, =gw= where it was. Extra spaces between words and at the ends of lines are kept, as Doom fills without squeezing them. =gqq= and =gww= act on lines. | 359| =gq= /motion/, =gw= /motion/ | Fills the paragraphs in the motion's lines to the fill column, as Fill Paragraph does; other elements in the lines are left alone. =gq= leaves the caret on the first non-blank of the last line, =gw= where it was. Extra spaces between words and at the ends of lines are kept, as Doom fills without squeezing them. =gqq= and =gww= act on lines. |
360 360
361=M-q= runs Fill Paragraph in normal, insert and visual state. In visual and visual-line state it fills every paragraph the selection touches and leaves the caret where it was; if the text changed, the editor returns to normal state, otherwise the selection stays. 361=M-q= runs Fill Paragraph in normal, insert and visual state. In visual and visual-line state it fills every paragraph the selection touches and leaves the caret where it was. In visual-block state it fills the paragraph at the caret, as evil does with =transient-mark-mode= off. In each, if the text changed, the editor returns to normal state, otherwise the selection stays.
362 362
363Counts multiply: =2d3w= deletes six words. Doubling an operator with a count acts on that many lines: =3dd=. 363Counts multiply: =2d3w= deletes six words. Doubling an operator with a count acts on that many lines: =3dd=.
364 364
@@ -856,7 +856,7 @@ When a key appears in several rows, it runs the command whose condition holds at
856| Clock In to Recent Entry… (=app.clock.in-recent=) | — | =⌃⌥⌘I= | — | Asks for an entry from the clock history and clocks in to it (=org-clock-in= with =C-u=). | 856| Clock In to Recent Entry… (=app.clock.in-recent=) | — | =⌃⌥⌘I= | — | Asks for an entry from the clock history and clocks in to it (=org-clock-in= with =C-u=). |
857| Clock In to Last Entry (=app.clock.in-last=) | =C-c C-x C-x= | — | =SPC m c I= (N) | Clocks in to the most recently clocked entry (=org-clock-in-last=). | 857| Clock In to Last Entry (=app.clock.in-last=) | =C-c C-x C-x= | — | =SPC m c I= (N) | Clocks in to the most recently clocked entry (=org-clock-in-last=). |
858| Clock Out (=app.clock.out=) | =C-c C-x C-o= | =⌃⇧⌘I= | =SPC m c o= (N) | Stops the clock (=org-clock-out=). | 858| Clock Out (=app.clock.out=) | =C-c C-x C-o= | =⌃⇧⌘I= | =SPC m c o= (N) | Stops the clock (=org-clock-out=). |
859| Cancel Clock (=app.clock.cancel=) | =C-c C-x C-q= | — | =SPC m c c= (N) | Stops the clock and removes the running clock line (=org-clock-cancel=). | 859| Cancel Clock (=app.clock.cancel=) | =C-c C-x C-q= | =⌃⌘K= | =SPC m c c= (N) | Stops the clock and removes the running clock line (=org-clock-cancel=). |
860| Go to Clocked Entry (=app.clock.goto=) | =C-c C-x C-j= | =⌃⌘J= | =SPC m c g= (N) | Opens the entry the clock is running on, or the most recently clocked one (=org-clock-goto=). | 860| Go to Clocked Entry (=app.clock.goto=) | =C-c C-x C-j= | =⌃⌘J= | =SPC m c g= (N) | Opens the entry the clock is running on, or the most recently clocked one (=org-clock-goto=). |
861| Go to Recent Clocked Entry… (=app.clock.goto-recent=) | — | =⌃⌥⌘J= | =SPC m c G= (N) | Asks for an entry from the clock history and opens it (=org-clock-goto= with =C-u=). | 861| Go to Recent Clocked Entry… (=app.clock.goto-recent=) | — | =⌃⌥⌘J= | =SPC m c G= (N) | Asks for an entry from the clock history and opens it (=org-clock-goto= with =C-u=). |
862| Mark as Default Clock Task (=app.clock.default=) | — | — | =SPC m c d= (N) | Makes the current entry the default task, =d= in the clock selection (=org-clock-mark-default-task=). | 862| Mark as Default Clock Task (=app.clock.default=) | — | — | =SPC m c d= (N) | Makes the current entry the default task, =d= in the clock selection (=org-clock-mark-default-task=). |
@@ -882,7 +882,7 @@ When a key appears in several rows, it runs the command whose condition holds at
882| Insert Table Row (=org.table.insert-row=) | =M-S-<down>= | =⌃⌥⌘↓= | =M-J=, =SPC m b i r= (N) | In a table, inserts a row (=org-table-insert-row=). | 882| Insert Table Row (=org.table.insert-row=) | =M-S-<down>= | =⌃⌥⌘↓= | =M-J=, =SPC m b i r= (N) | In a table, inserts a row (=org-table-insert-row=). |
883| Delete Table Row (=org.table.kill-row=) | =M-S-<up>= | =⌃⌥⌘↑= | =M-K=, =SPC m b d r= (N) | In a table, deletes the row (=org-table-kill-row=). | 883| Delete Table Row (=org.table.kill-row=) | =M-S-<up>= | =⌃⌥⌘↑= | =M-K=, =SPC m b d r= (N) | In a table, deletes the row (=org-table-kill-row=). |
884| Insert Table Rule (=org.table.insert-hline=) | =C-c -= | =⌃⌘-= | =SPC m b -= (N), =SPC m b i h= (N) | In a table, inserts a horizontal rule (=org-table-insert-hline=). | 884| Insert Table Rule (=org.table.insert-hline=) | =C-c -= | =⌃⌘-= | =SPC m b -= (N), =SPC m b i h= (N) | In a table, inserts a horizontal rule (=org-table-insert-hline=). |
885| Recalculate Table Row (=org.table.recalc=) | =C-c *= | — | — | In a table, recalculates the current row (=org-table-recalculate=). | 885| Recalculate Table Row (=org.table.recalc=) | =C-c *= | =⌃⌘*= | — | In a table, recalculates the current row (=org-table-recalculate=). On a US keyboard, =⌃⌘*= is typed =⌃⇧⌘8=. |
886| Recalculate Table (=org.table.recalc-all=) | =C-c C-c= | =⌃⌘X= | =SPC m b r= (N) | Recalculates the whole table; =C-c C-c= and =⌃⌘X= run it on a =#+TBLFM= line (=org-table-recalculate= with =C-u=). | 886| Recalculate Table (=org.table.recalc-all=) | =C-c C-c= | =⌃⌘X= | =SPC m b r= (N) | Recalculates the whole table; =C-c C-c= and =⌃⌘X= run it on a =#+TBLFM= line (=org-table-recalculate= with =C-u=). |
887| Set Column Formula (=org.table.column-formula=) | ~C-c =~ | — | — | Asks for the column's formula, offering the stored one (=org-table-eval-formula=). | 887| Set Column Formula (=org.table.column-formula=) | ~C-c =~ | — | — | Asks for the column's formula, offering the stored one (=org-table-eval-formula=). |
888| Edit Table Field (=org.table.edit-field=) | =C-c `= | — | — | In a table, edits the field in a separate editor (=org-table-edit-field=). | 888| Edit Table Field (=org.table.edit-field=) | =C-c `= | — | — | In a table, edits the field in a separate editor (=org-table-edit-field=). |
@@ -906,6 +906,8 @@ When a key appears in several rows, it runs the command whose condition holds at
906| Act at Point (=org.dwim=) | — | — | =RET= (N) | Doom's =+org/dwim-at-point=: follows a link, runs a src block, recalculates or aligns a table, toggles a checkbox, or switches a heading between TODO and done. | 906| Act at Point (=org.dwim=) | — | — | =RET= (N) | Doom's =+org/dwim-at-point=: follows a link, runs a src block, recalculates or aligns a table, toggles a checkbox, or switches a heading between TODO and done. |
907| Run Source Block (=org.babel.execute=) | =C-c C-c= | =⌃⌘X= | — | In a src block, runs it and inserts the results (=org-babel-execute-src-block=). | 907| Run Source Block (=org.babel.execute=) | =C-c C-c= | =⌃⌘X= | — | In a src block, runs it and inserts the results (=org-babel-execute-src-block=). |
908| Tangle File (=org.babel.tangle=) | =C-c C-v t=, =C-c C-v C-t= | =⌃⌘V= | — | Writes the file's src blocks to their tangle targets (=org-babel-tangle=). | 908| Tangle File (=org.babel.tangle=) | =C-c C-v t=, =C-c C-v C-t= | =⌃⌘V= | — | Writes the file's src blocks to their tangle targets (=org-babel-tangle=). |
909| Tangle Block (=org.babel.tangle-block=) | — | =⌃⇧⌘V= | — | Tangles only the src block at point (=org-babel-tangle= with =C-u=). |
910| Tangle Block's Target (=org.babel.tangle-target=) | — | =⌃⌥⌘V= | — | Tangles every block that writes to the same file as the block at point (=org-babel-tangle= with =C-u C-u=). |
909| Insert Structure Template (=org.structure-template=) | =C-c C-,= | — | — | Asks for a block type and inserts the block, or wraps the selection (=org-insert-structure-template=). | 911| Insert Structure Template (=org.structure-template=) | =C-c C-,= | — | — | Asks for a block type and inserts the block, or wraps the selection (=org-insert-structure-template=). |
910| Edit Block (=org.edit-special=) | =C-c '= | =⌃⌘'= | =SPC m '= (N) | Edits the src, example or export block at point in a separate editor (=org-edit-special=). | 912| Edit Block (=org.edit-special=) | =C-c '= | =⌃⌘'= | =SPC m '= (N) | Edits the src, example or export block at point in a separate editor (=org-edit-special=). |
911 913
@@ -971,8 +973,6 @@ No preset binds these. Run them from the palette or a menu, or bind them in =key
971| Show or Hide Markup (=app.toggle-markup=) | Shows or hides link brackets and emphasis markers. View ▸ Show Markup, =⇧⌘M=. | 973| Show or Hide Markup (=app.toggle-markup=) | Shows or hides link brackets and emphasis markers. View ▸ Show Markup, =⇧⌘M=. |
972| Show or Hide Line Numbers (=app.toggle-line-numbers=) | Shows or hides line numbers. View ▸ Show Line Numbers, =⇧⌘L=. | 974| Show or Hide Line Numbers (=app.toggle-line-numbers=) | Shows or hides line numbers. View ▸ Show Line Numbers, =⇧⌘L=. |
973| Show or Hide Tab Bar (=app.toggle-tab-bar=) | Shows or hides the tab bar. View ▸ Show Tab Bar. | 975| Show or Hide Tab Bar (=app.toggle-tab-bar=) | Shows or hides the tab bar. View ▸ Show Tab Bar. |
974| Tangle Block (=org.babel.tangle-block=) | Tangles only the src block at point (=org-babel-tangle= with =C-u=). |
975| Tangle Block's Target (=org.babel.tangle-target=) | Tangles every block that writes to the same file as the block at point (=org-babel-tangle= with =C-u C-u=). |
976| Column View of File (=org.columns.global=) | Shows the column view of the whole file (=org-columns= with =C-u=). | 976| Column View of File (=org.columns.global=) | Shows the column view of the whole file (=org-columns= with =C-u=). |
977| Remove Schedule (=org.schedule.remove=) | Removes =SCHEDULED= (=org-schedule= with =C-u=). | 977| Remove Schedule (=org.schedule.remove=) | Removes =SCHEDULED= (=org-schedule= with =C-u=). |
978| Remove Deadline (=org.deadline.remove=) | Removes =DEADLINE= (=org-deadline= with =C-u=). | 978| Remove Deadline (=org.deadline.remove=) | Removes =DEADLINE= (=org-deadline= with =C-u=). |
docs/manual/guide/06-dates-and-clocking.org +6 −4
@@ -214,7 +214,7 @@ Clocking records the time you work on an entry as =CLOCK:= lines in its =LOGBOOK
214| Clock In to Recent Entry… | =org-clock-in= with =C-u= | | =⌃⌥⌘I= | | | 214| Clock In to Recent Entry… | =org-clock-in= with =C-u= | | =⌃⌥⌘I= | | |
215| Clock In to Last Entry | =org-clock-in-last= | =C-c C-x C-x= | | =SPC m c I= | | 215| Clock In to Last Entry | =org-clock-in-last= | =C-c C-x C-x= | | =SPC m c I= | |
216| Clock Out | =org-clock-out= | =C-c C-x C-o= | =⌃⇧⌘I= | =SPC m c o= | =O= | 216| Clock Out | =org-clock-out= | =C-c C-x C-o= | =⌃⇧⌘I= | =SPC m c o= | =O= |
217| Cancel Clock | =org-clock-cancel= | =C-c C-x C-q= | | =SPC m c c= | | 217| Cancel Clock | =org-clock-cancel= | =C-c C-x C-q= | =⌃⌘K= | =SPC m c c= | |
218| Go to Clocked Entry | =org-clock-goto= | =C-c C-x C-j= | =⌃⌘J= | =SPC m c g= | | 218| Go to Clocked Entry | =org-clock-goto= | =C-c C-x C-j= | =⌃⌘J= | =SPC m c g= | |
219| Go to Recent Clocked Entry… | =org-clock-goto= with =C-u= | | =⌃⌥⌘J= | =SPC m c G= | | 219| Go to Recent Clocked Entry… | =org-clock-goto= with =C-u= | | =⌃⌥⌘J= | =SPC m c G= | |
220| Mark as Default Clock Task | =org-clock-mark-default-task= | | | =SPC m c d= | | 220| Mark as Default Clock Task | =org-clock-mark-default-task= | | | =SPC m c d= | |
@@ -243,7 +243,7 @@ CLOCK: [2026-10-06 Tue 14:00]--[2026-10-06 Tue 15:30] => 1:30
243- Cancel Clock removes the running clock's line, and the drawer if it is left empty. 243- Cancel Clock removes the running clock's line, and the drawer if it is left empty.
244- Go to Clocked Entry opens the file and moves the caret to the running clock's line. With no clock running, it goes to the most recently clocked entry and says "No running clock, this is the most recently clocked task". 244- Go to Clocked Entry opens the file and moves the caret to the running clock's line. With no clock running, it goes to the most recently clocked entry and says "No running clock, this is the most recently clocked task".
245 245
246With no clock running, Clock In first asks about open clocks; see Open clocks below. 246With no clock running, Clock In first asks about open clocks; see Open clocks below. So do the agenda's =I= and a capture template's =clock-in=.
247 247
248Orgstar remembers the running clock and the clock history across restarts, in =clock.json= in =~/Library/Application Support/Orgstar=. If the open =CLOCK:= line is deleted from the file, Clock Out reports "Clock start time is gone" and forgets the clock. 248Orgstar remembers the running clock and the clock history across restarts, in =clock.json= in =~/Library/Application Support/Orgstar=. If the open =CLOCK:= line is deleted from the file, Clock Out reports "Clock start time is gone" and forgets the clock.
249 249
@@ -294,7 +294,9 @@ When you clock in with no clock running, Orgstar first looks for open clocks in
294Dangling clock started 95 mins ago [jkKtTgGSscCiq]? 294Dangling clock started 95 mins ago [jkKtTgGSscCiq]?
295#+END_EXAMPLE 295#+END_EXAMPLE
296 296
297Resolve Open Clocks… asks the same about every open clock, the running one included, and says "No open clocks" when there are none. Clocking in from the agenda or a capture template doesn't look for open clocks first. 297Clocking in from the agenda (=I=) or from a capture template with =clock-in= asks too, as =org-clock-in= does in Org. A capture template resolves open clocks as of when the capture began, which is when its clock starts. On the Mac, the questions for an agenda or capture clock-in are asked in the main window's echo area.
298
299Resolve Open Clocks… asks the same about every open clock, the running one included, and says "No open clocks" when there are none.
298 300
299Unlike Org, Orgstar doesn't show the clock's line while it asks; =j= opens it afterwards, except while clocking in. 301Unlike Org, Orgstar doesn't show the clock's line while it asks; =j= opens it afterwards, except while clocking in.
300 302
@@ -322,7 +324,7 @@ The answer is a key, as in =org-clock-resolve=. The idle time is the time since
322 324
323While clocking in, an answer never restarts the clock it resolves: where a key would start a new clock or keep one running, the line ends instead, and the clock you asked for starts. Resolving an open clock that isn't running with =k= and all the minutes, outside a clock-in, makes it the running clock. 325While clocking in, an answer never restarts the clock it resolves: where a key would start a new clock or keep one running, the line ends instead, and the clock you asked for starts. Resolving an open clock that isn't running with =k= and all the minutes, outside a clock-in, makes it the running clock.
324 326
325When =K=, =T= or =S= ends a clock outside a clock-in, the next clock-in asks: 327When =K=, =T= or =S= ends a clock outside a clock-in, the next clock-in, from the agenda or a capture template too, asks:
326 328
327#+BEGIN_EXAMPLE 329#+BEGIN_EXAMPLE
328You stopped another clock 12 mins ago; start this one from then? (y or n) 330You stopped another clock 12 mins ago; start this one from then? (y or n)
docs/manual/guide/07-agenda.org +2
@@ -383,6 +383,8 @@ Select a line with the arrow keys or the mouse. These keys work in the agenda wi
383 383
384=C-c C-w= brings the main window forward and asks for the target there, where the target list is searchable. 384=C-c C-w= brings the main window forward and asks for the target there, where the target list is searchable.
385 385
386=I= clocks in as Clock In does, so with no clock running it first asks about open clocks, in the main window's echo area. See [[file:06-dates-and-clocking.org][Dates, scheduling and clocking]].
387
386Each action finds the entry again by its heading line before it changes anything, so an action on a line whose entry has since moved or changed reports that rather than editing the wrong text. Edits go through the open buffer when the file is open, and through the file otherwise. 388Each action finds the entry again by its heading line before it changes anything, so an action on a line whose entry has since moved or changed reports that rather than editing the wrong text. Edits go through the open buffer when the file is open, and through the file otherwise.
387 389
388** Bulk actions 390** Bulk actions
docs/manual/guide/08-capture.org +1 −1
@@ -139,7 +139,7 @@ Placement follows =org-capture-place-entry= and its siblings, including how blan
139 139
140** Clocking while capturing 140** Clocking while capturing
141 141
142With =clock-in = true=, the captured entry gets a clock entry from when the template was filled to when you filed it, as Emacs clocks in while the capture buffer is open and out on finalize. With =clock-keep = true= as well, the clock keeps running in the new entry. With =clock-resume = true=, the clock that was running before the capture starts again after filing. See [[file:06-dates-and-clocking.org][Dates, scheduling and clocking]]. 142With =clock-in = true=, the captured entry gets a clock entry from when the template was filled to when you filed it, as Emacs clocks in while the capture buffer is open and out on finalize. With =clock-keep = true= as well, the clock keeps running in the new entry. With =clock-resume = true=, the clock that was running before the capture starts again after filing. With no clock running, clocking in to the entry first asks about open clocks, as Clock In does, as of when the capture began; on the Mac the questions are in the main window's echo area. See [[file:06-dates-and-clocking.org][Dates, scheduling and clocking]].
143 143
144* Template escapes 144* Template escapes
145 145
docs/manual/guide/10-tables.org +7 −2
@@ -142,6 +142,10 @@ A column without a width cookie shrinks to a bare =…= when toggled. Typing in
142field widens its column again, as editing Org's overlays does. =#+STARTUP: shrink= 142field widens its column again, as editing Org's overlays does. =#+STARTUP: shrink=
143narrows every column with a width cookie when the file opens. 143narrows every column with a width cookie when the file opens.
144 144
145The iOS editor narrows columns the same way, with =#+STARTUP: shrink= and the three
146commands, which are in Commands when the caret is in a table. The iOS reader shows
147tables at full width.
148
145* Importing and exporting 149* Importing and exporting
146 150
147| Command | Org command | 151| Command | Org command |
@@ -481,7 +485,7 @@ The formulas are stored sorted the way =org-table-formula-less-p= sorts them.
481| Command | Org command | Emacs | Mac | Doom | 485| Command | Org command | Emacs | Mac | Doom |
482|----------------------------------+-----------------------------------+-------------------------------+-----------------------------+-------------------------------------| 486|----------------------------------+-----------------------------------+-------------------------------+-----------------------------+-------------------------------------|
483| Recalculate Table | =org-table-recalculate= with =C-u= | =C-c C-c= on =#+TBLFM:= | =⌃⌘X= on =#+TBLFM:= | =SPC m b r=, =C-c C-c= on =#+TBLFM:= | 487| Recalculate Table | =org-table-recalculate= with =C-u= | =C-c C-c= on =#+TBLFM:= | =⌃⌘X= on =#+TBLFM:= | =SPC m b r=, =C-c C-c= on =#+TBLFM:= |
484| Recalculate Table Row | =org-table-recalculate= | =C-c *= | Org ▸ Recalculate Table Row | =C-c *= | 488| Recalculate Table Row | =org-table-recalculate= | =C-c *= | =⌃⌘*= (=⌃⇧⌘8= on a US keyboard) | =C-c *= |
485 489
486In Doom's normal state, =RET= in a table recalculates it when it has a =#+TBLFM:= 490In Doom's normal state, =RET= in a table recalculates it when it has a =#+TBLFM:=
487line and aligns it otherwise; on a =#+TBLFM:= line it recalculates. 491line and aligns it otherwise; on a =#+TBLFM:= line it recalculates.
@@ -565,5 +569,6 @@ plots (=org-plot/gnuplot= is not available).
565 569
566The iOS app evaluates formulas natively with the same engine. Tables that need Emacs 570The iOS app evaluates formulas natively with the same engine. Tables that need Emacs
567are not recalculated there; the app reports =This table needs Emacs, which runs on the 571are not recalculated there; the app reports =This table needs Emacs, which runs on the
568Mac= with the reason. Table import and export are Mac only. See 572Mac= with the reason. Table import and export are Mac only. Narrow columns work in the
573editor, as described under /Narrow columns/. See
569[[file:14-ios.org][iOS]]. 574[[file:14-ios.org][iOS]].
docs/manual/guide/11-code-blocks.org +71 −18
@@ -18,7 +18,7 @@ Lines inside a block that start with =*= or =#+= are protected with a leading co
18 18
19** Syntax highlighting 19** Syntax highlighting
20 20
21On the Mac, the code in a block is highlighted in the editor and in the block editor. Highlighting uses tree-sitter grammars for these language names: 21The code in a block is highlighted in the editor on the Mac and on iOS, in the iOS reader, and in the Mac's block editor, in the theme's =syntax-*= colours. Highlighting uses tree-sitter grammars for these language names:
22 22
23| Language names | Grammar | 23| Language names | Grammar |
24|---------------------------------+------------| 24|---------------------------------+------------|
@@ -41,7 +41,7 @@ On the Mac, the code in a block is highlighted in the editor and in the block ed
41| =toml=, =conf-toml= | TOML | 41| =toml=, =conf-toml= | TOML |
42| =lua= | Lua | 42| =lua= | Lua |
43 43
44Names are matched without regard to case. Blocks in any other language show as plain monospaced text. The iOS app does not highlight code. 44Names are matched without regard to case. Blocks in any other language show as plain monospaced text.
45 45
46* Editing a block apart 46* Editing a block apart
47 47
@@ -95,6 +95,7 @@ On the Mac, Orgstar starts each interpreter through =/usr/bin/env=. Because an a
95| =R= | =Rscript -= | 95| =R= | =Rscript -= |
96| =awk= | =awk -f /dev/stdin= | 96| =awk= | =awk -f /dev/stdin= |
97| =dot=, =plantuml=, =mermaid= | =dot=, =plantuml=, =mmdc=; see Graphics below | 97| =dot=, =plantuml=, =mermaid= | =dot=, =plantuml=, =mmdc=; see Graphics below |
98| =C=, =C++=, =cpp=, =D=, =java=, =fortran=, =clojure= | A compiler, or =bb= or =clojure=; see Compiled languages below |
98 99
99For =ruby=, =js=, =javascript=, =R= and =awk=, =:cmd= names a different program. These languages always return their standard output, and =:var= is refused for them. 100For =ruby=, =js=, =javascript=, =R= and =awk=, =:cmd= names a different program. These languages always return their standard output, and =:var= is refused for them.
100 101
@@ -102,6 +103,42 @@ Any other language is refused with "No way to run /language/ blocks yet."
102 103
103A run that takes longer than five minutes is stopped. Runs in a =:session= have no time limit. 104A run that takes longer than five minutes is stopped. Runs in a =:session= have no time limit.
104 105
106** Compiled languages
107
108On the Mac, =C=, =C++=, =cpp=, =D=, =java=, =fortran= and =clojure= blocks run as Org's =ob-C=, =ob-java=, =ob-fortran= and =ob-clojure= run them. Orgstar writes the body, expanded as tangling writes it (see Tangling below), to a source file in a temporary folder, compiles it and runs the program in the file's folder or =:dir=, with a newline on standard input. What the compiler prints is dropped.
109
110| Language | Commands |
111|-----------------+----------------------------------------------------------------------------------|
112| =C= | =gcc -o bin FLAGS src LIBS=, then =bin CMDLINE= |
113| =C++=, =cpp= | =g++ -o bin FLAGS src LIBS=, then =bin CMDLINE= |
114| =D= | =rdmd FLAGS src CMDLINE=, which compiles and runs |
115| =fortran= | =gfortran -o bin FLAGS src=, then =bin CMDLINE= |
116| =java= | =javac CMPFLAG Class.java=, then =java -cp dir CMDLINE Class CMDARGS= |
117| =clojure= | =bb src= (babashka) when =bb= is installed, otherwise =clojure -M src= |
118
119FLAGS is =:flags=, LIBS is =:libs= or the inherited =LIBS= property, and CMDLINE is =:cmdline=. A Lisp list works for =:flags= and =:libs=; its items are joined with spaces.
120
121| Argument | Languages | Effect |
122|---------------------+-----------------------+-----------------------------------------------------------------------------------------|
123| =:flags= | C, C++, D, Fortran | Compiler options. |
124| =:libs= | C, C++ | Libraries, after the source file, such as =-lm=. |
125| =:cmdline= | C, C++, D, Fortran | The program's arguments. |
126| =:cmdline= | Java | Options for =java=, before the class name. |
127| =:cmdargs= | Java | The program's arguments. |
128| =:cmpflag= | Java | Options for =javac=. |
129| =:javac=, =:java= | Java | The compiler and runtime commands, with options; =javac= and =java= by default. |
130| =:classname= | Java | The class to run; a dotted name gives its package. |
131| =:backend= | Clojure | =babashka= runs =bb=, =clojure-cli= runs =clojure -M=. |
132| =:includes=, =:defines=, =:namespaces=, =:imports=, =:main=, =:prologue=, =:epilogue=, =:ns=, =:var= | as for tangling | What the expansion writes; see Tangling below. |
133
134When =:imports= is absent, a D block reads the =IMPORTS= property where it is, and a Fortran block without =:includes= or =:defines= reads the =INCLUDES= and =DEFINES= properties, as Org does when it runs them. =:session= is ignored for these languages, as in Org.
135
136Java's defaults are =:results output= and =:dir .= (=org-babel-default-header-args:java=). The =.java= and =.class= files are written in the folder the block runs in, under folders for the class's package (=org/ex/Hello.java= for =:classname org.ex.Hello=), and are left there. The class is =:classname=, the body's own class with its =package=, or =Main=.
137
138Any other Clojure backend is refused: "The cider backend for clojure needs Emacs; Orgstar runs babashka or clojure-cli."
139
140Before a run, Orgstar checks that each program it needs is on the =PATH= described above. If not, the block fails with "gcc isn't installed, so C blocks can't run." (=g++= for C++, =rdmd=, =gfortran=, or the commands =:javac= and =:java= name). For Clojure without a =:backend=, the message is "Neither bb nor clojure is installed, so clojure blocks can't run."
141
105** The trust prompt 142** The trust prompt
106 143
107Before a block runs, Orgstar asks "Run this /language/ block? (yes, no, always)", as =org-confirm-babel-evaluate= does. 144Before a block runs, Orgstar asks "Run this /language/ block? (yes, no, always)", as =org-confirm-babel-evaluate= does.
@@ -170,6 +207,10 @@ What "value" means depends on the language:
170| Python in a =:session= | The value of the last expression. | 207| Python in a =:session= | The value of the last expression. |
171| Emacs Lisp | The value of the last form. | 208| Emacs Lisp | The value of the last form. |
172| =ruby=, =js=, =R=, =awk= | Standard output, always. | 209| =ruby=, =js=, =R=, =awk= | Standard output, always. |
210| C, C++, D | Standard output without its common indentation, read as a table as for shells. |
211| Fortran | The same, with blank space around the output trimmed. |
212| Java | With =:results value=, what the body returns; it runs as =main=, so it needs =return=. Lists and arrays become tables, with =null= rows as rules, and a returned string is written without its quotes. Java's default is =:results output=. |
213| Clojure | The value of the last form as Clojure prints it. A number, or a string without its quotes, is written as that; vectors, lists and maps are written as printed, not as tables. |
173 214
174Python lists of lists become tables, with =None= rows as rules. A flat list becomes a one-row table. Emacs Lisp lists become tables the same way, with =hline= for rules. Numbers are written the way Emacs prints them. 215Python lists of lists become tables, with =None= rows as rules. A flat list becomes a one-row table. Emacs Lisp lists become tables the same way, with =hline= for rules. Numbers are written the way Emacs prints them.
175 216
@@ -184,6 +225,18 @@ Python lists of lists become tables, with =None= rows as rules. A flat list beco
184 225
185=:results verbatim= on an Emacs Lisp value writes it as =prin1= would, with quotes around strings. 226=:results verbatim= on an Emacs Lisp value writes it as =prin1= would, with quotes around strings.
186 227
228With =:results output list=, the list made from the output is written as an example, in lines such as =: - a=, as Org writes it:
229
230#+BEGIN_SRC org
231,#+begin_src sh :results output list
232printf 'a\nb\n'
233,#+end_src
234
235,#+RESULTS:
236: - a
237: - b
238#+END_SRC
239
187** Result formats 240** Result formats
188 241
189| Word | Written as | 242| Word | Written as |
@@ -303,9 +356,9 @@ A string or number takes the place of the form. Lisp that the interpreter cannot
303| =:separator= | text | Column separator for tables in shell variables; a tab by default. | 356| =:separator= | text | Column separator for tables in shell variables; a tab by default. |
304| =:hline-string= | text | What a rule becomes in a shell variable with =:hlines yes=; =hline= by default. | 357| =:hline-string= | text | What a rule becomes in a shell variable with =:hlines yes=; =hline= by default. |
305| =:dir= | folder | Folder to run in, relative to the file's folder. It must exist. | 358| =:dir= | folder | Folder to run in, relative to the file's folder. It must exist. |
306| =:session= | name, =none= | Runs in a long-lived interpreter (see Sessions below). Shells and Python only. | 359| =:session= | name, =none= | Runs in a long-lived interpreter (see Sessions below). Shells and Python only; ignored for the compiled languages. |
307| =:stdin= | name of a table, list or block | Feeds the value to standard input. Shells only. | 360| =:stdin= | name of a table, list or block | Feeds the value to standard input. Shells only. |
308| =:cmdline= | arguments | Command-line arguments. Shells, =dot=, =plantuml= and =mermaid= only. | 361| =:cmdline= | arguments | Command-line arguments. Shells, =dot=, =plantuml=, =mermaid= and the compiled languages only. |
309| =:shebang= | =#!…= line | Runs the block as a script with this first line. Shells only; also used by tangling. | 362| =:shebang= | =#!…= line | Runs the block as a script with this first line. Shells only; also used by tangling. |
310| =:padline= | =no= | No blank line after the shebang of a script, or between tangled blocks. | 363| =:padline= | =no= | No blank line after the shebang of a script, or between tangled blocks. |
311| =:python= | program | Python interpreter to use. | 364| =:python= | program | Python interpreter to use. |
@@ -326,10 +379,10 @@ Orgstar does not run a block whose arguments it would handle differently from Em
326 379
327| Argument | Refused for | Message | 380| Argument | Refused for | Message |
328|-----------------------------+-------------------------------------------------+----------------------------------------------------------| 381|-----------------------------+-------------------------------------------------+----------------------------------------------------------|
329| =:prologue=, =:epilogue=, =:post= | every language when running (tangling uses =:prologue= and =:epilogue=) | "=:prologue= isn't supported yet; nothing was run." | 382| =:prologue=, =:epilogue=, =:post= | every language when running, except =:prologue= and =:epilogue= for the compiled languages (tangling uses =:prologue= and =:epilogue=) | "=:prologue= isn't supported yet; nothing was run." |
330| =:stdin=, =:shebang= | languages other than shells | "=:stdin= isn't supported yet; nothing was run." | 383| =:stdin=, =:shebang= | languages other than shells | "=:stdin= isn't supported yet; nothing was run." |
331| =:cmdline= | languages other than shells and graphics | "=:cmdline= isn't supported for /language/ yet; nothing was run." | 384| =:cmdline= | languages other than shells, graphics and the compiled languages | "=:cmdline= isn't supported for /language/ yet; nothing was run." |
332| =:session= | languages other than shells and Python | "=:session= isn't supported for /language/ yet; nothing was run." | 385| =:session= | languages other than shells, Python and the compiled languages, which ignore it | "=:session= isn't supported for /language/ yet; nothing was run." |
333| =:var= | =ruby=, =js=, =javascript=, =R=, =awk= | "=:var= isn't supported for /language/ yet." | 386| =:var= | =ruby=, =js=, =javascript=, =R=, =awk= | "=:var= isn't supported for /language/ yet." |
334 387
335* Variables 388* Variables
@@ -373,7 +426,7 @@ How a value reaches the code depends on the language:
373| Python | literal | list | list of lists, =None= for rules | 426| Python | literal | list | list of lists, =None= for rules |
374| Emacs Lisp | =let=-bound value | list | list of lists, =hline= for rules | 427| Emacs Lisp | =let=-bound value | list | list of lists, =hline= for rules |
375 428
376For =shell= blocks, the bash forms are used when =SHELL= is bash. 429For =shell= blocks, the bash forms are used when =SHELL= is bash. C, C++, D, Java, Fortran and Clojure blocks get declarations as their expansion writes them; see Tangling below.
377 430
378#+BEGIN_SRC org 431#+BEGIN_SRC org
379,#+NAME: kv 432,#+NAME: kv
@@ -393,7 +446,7 @@ A table passed as a variable loses some of its structure first (=org-babel-disas
393- The first row is taken off as column names when =:colnames yes=, or when the table's only rule is under the first row. =:colnames no= keeps it as data. 446- The first row is taken off as column names when =:colnames yes=, or when the table's only rule is under the first row. =:colnames no= keeps it as data.
394- The first column is taken off as row names when =:rownames yes=. 447- The first column is taken off as row names when =:rownames yes=.
395 448
396If the result is a table of the same width (for columns) or height (for rows), the names are put back on it (=org-babel-reassemble-table=). =:colnames= and =:rownames= can also be Lisp lists of names to put on the result, such as =:colnames '("x" "y")=. 449If the result is a table of the same width (for columns) or height (for rows), the names are put back on it (=org-babel-reassemble-table=). Clojure results don't get them back, as in Org. =:colnames= and =:rownames= can also be Lisp lists of names to put on the result, such as =:colnames '("x" "y")=.
397 450
398#+BEGIN_SRC org 451#+BEGIN_SRC org
399,#+NAME: tbl 452,#+NAME: tbl
@@ -445,7 +498,7 @@ With =:cache yes=, Orgstar computes a SHA-1 hash of the block's header arguments
445 498
446Change the block or its arguments and it runs again. Results inserted with =append= or =prepend= carry no hash. Inline blocks are not cached. A cached block that has Lisp in its header arguments the interpreter cannot evaluate is refused. 499Change the block or its arguments and it runs again. Results inserted with =append= or =prepend= carry no hash. Inline blocks are not cached. A cached block that has Lisp in its header arguments the interpreter cannot evaluate is refused.
447 500
448C, C++, D, Fortran and Clojure blocks don't run in Orgstar, but their hash is taken over the body as tangling expands it (see Tangling below), as Emacs does. A result Emacs wrote for such a block with =:cache yes= is recognised as current, and =C-c C-c= shows it. 501The hash of a C, C++, D, Java, Fortran or Clojure block is taken over the body as the language expands it (see Tangling below), with the =IMPORTS=, =INCLUDES= and =DEFINES= properties where the block is, and Java's default header arguments, as Emacs does. A result Emacs wrote for such a block with =:cache yes= is recognised as current, and =C-c C-c= shows it.
449 502
450* Noweb 503* Noweb
451 504
@@ -561,11 +614,11 @@ digraph { a -> b }
561 614
562Tangling writes source blocks to the files their =:tangle= argument names (=org-babel-tangle=). 615Tangling writes source blocks to the files their =:tangle= argument names (=org-babel-tangle=).
563 616
564| Command | Emacs and Doom | Mac | What it tangles | 617| Command | Emacs and Doom | Mac | What it tangles |
565|-------------------------+-----------------------------+--------+---------------------------------------------------| 618|-------------------------+-----------------------------+---------+---------------------------------------------------|
566| Tangle File | =C-c C-v t=, =C-c C-v C-t= | =⌃⌘V= | Every block in the file | 619| Tangle File | =C-c C-v t=, =C-c C-v C-t= | =⌃⌘V= | Every block in the file |
567| Tangle Block | none | none | The block at the caret (Emacs: =C-u C-c C-v t=) | 620| Tangle Block | none | =⌃⇧⌘V= | The block at the caret (Emacs: =C-u C-c C-v t=) |
568| Tangle Block's Target | none | none | Every block going to the same file as the one at the caret (Emacs: =C-u C-u C-c C-v t=) | 621| Tangle Block's Target | none | =⌃⌥⌘V= | Every block going to the same file as the one at the caret (Emacs: =C-u C-u C-c C-v t=) |
569 622
570All three are in the Org menu and the command palette. Tangling uses the text in the editor, saved or not, and the message area reports "Tangled /N/ code blocks from /file/". 623All three are in the Org menu and the command palette. Tangling uses the text in the editor, saved or not, and the message area reports "Tangled /N/ code blocks from /file/".
571 624
@@ -614,9 +667,9 @@ A table in =:var= loses its first row when its only rule is under that row, or w
614| Language | Written | 667| Language | Written |
615|----------------+--------------------------------------------------------------------------------------------------------------| 668|----------------+--------------------------------------------------------------------------------------------------------------|
616| =C=, =C++=, =cpp= | =#include= lines from =:includes=, =#define= lines from =:defines=, =using namespace= lines from =:namespaces=, the =:var= declarations with table sizes and column-name helpers, then the body between =:prologue= and =:epilogue=, wrapped in =int main()= unless it has a =main= or =:main no= is given. | 669| =C=, =C++=, =cpp= | =#include= lines from =:includes=, =#define= lines from =:defines=, =using namespace= lines from =:namespaces=, the =:var= declarations with table sizes and column-name helpers, then the body between =:prologue= and =:epilogue=, wrapped in =int main()= unless it has a =main= or =:main no= is given. |
617| =D= | =module mmm;=, =import= lines from =:imports= plus =std.stdio= and =std.conv=, the =:var= declarations, and the body wrapped in =int main()= as for C. | 670| =D= | =module mmm;=, =import= lines from =:imports= (or the =IMPORTS= property, except when tangling) plus =std.stdio= and =std.conv=, the =:var= declarations, and the body wrapped in =int main()= as for C. |
618| =java= | The body between =:prologue= and =:epilogue=, wrapped in a =main= method when it has no method and in a class when it has none. The class is named by =:classname= or the body's own class; a dotted =:classname= adds a =package= line. =:imports= adds =import= lines, and =:var= values become static fields. | 671| =java= | The body between =:prologue= and =:epilogue=, wrapped in a =main= method when it has no method and in a class when it has none. The class is named by =:classname= or the body's own class; a dotted =:classname= adds a =package= line. =:imports= adds =import= lines, and =:var= values become static fields. |
619| =fortran= | =#include= and =#define= lines from =:includes= and =:defines=, then the =:var= declarations and the body in =program main=, unless the body has its own =program= statement (then =:var= is refused) or =:main no= is given. | 672| =fortran= | =#include= and =#define= lines from =:includes= and =:defines= (or the =INCLUDES= and =DEFINES= properties, except when tangling), then the =:var= declarations and the body in =program main=, unless the body has its own =program= statement (then =:var= is refused) or =:main no= is given. |
620| =clojure= | =(ns …)= from =:ns=, the body in a =let= of the =:var= values, and a printer around it unless =:results output=. | 673| =clojure= | =(ns …)= from =:ns=, the body in a =let= of the =:var= values, and a printer around it unless =:results output=. |
621 674
622With =:hlines yes=, a table that keeps rules is refused for C, C++, D and Fortran; Java writes =null= for each rule. 675With =:hlines yes=, a table that keeps rules is refused for C, C++, D and Fortran; Java writes =null= for each rule.
@@ -657,7 +710,7 @@ Tangling stops, writes nothing and says why when:
657 710
658* On iOS 711* On iOS
659 712
660- Only Emacs Lisp blocks run, in Orgstar's own interpreter. Any other language fails with "/language/ blocks need the Mac to run.", and so does an Emacs Lisp block whose =:var= refers to a block in another language. 713- Only Emacs Lisp blocks run, in Orgstar's own interpreter. Any other language, compiled languages included, fails with "/language/ blocks need the Mac to run." (for example "C blocks need the Mac to run."), and so does an Emacs Lisp block whose =:var= refers to a block in another language.
661- There are no sessions and no graphics. 714- There are no sessions and no graphics.
662- The trust prompt works the same way, with its own =trusted.json= on the device. 715- The trust prompt works the same way, with its own =trusted.json= on the device.
663- There is no cancel command. 716- There is no cancel command.
docs/manual/guide/13-configuration.org +1 −1
@@ -559,4 +559,4 @@ The editor uses one font for everything: body text, headings, code and tables. C
559- Headings are bold. Level 1 is =font-size= plus three times =heading-size-step=, level 2 plus two times, level 3 plus one time; level 4 and deeper are body size. Set =heading-size-step = 0= for one size throughout. 559- Headings are bold. Level 1 is =font-size= plus three times =heading-size-step=, level 2 plus two times, level 3 plus one time; level 4 and deeper are body size. Set =heading-size-step = 0= for one size throughout.
560- =line-spacing= adds space between lines, in points. 560- =line-spacing= adds space between lines, in points.
561 561
562On iPhone and iPad, the editor and reader use the same theme, read from the synced configuration folder. =font= applies when the family is installed on the device, otherwise the system's monospaced font is used, and =font-size= is the size at the default Dynamic Type setting, scaled with the size chosen on the device. The =selection= color and the =syntax-*= colors aren't used there. See [[file:14-ios.org][iPhone and iPad]]. 562On iPhone and iPad, the editor and reader use the same theme, read from the synced configuration folder. =font= applies when the family is installed on the device, otherwise the system's monospaced font is used, and =font-size= is the size at the default Dynamic Type setting, scaled with the size chosen on the device. The =selection= color, the =cursor= color and the =syntax-*= colors apply there too. See [[file:14-ios.org][iPhone and iPad]].
docs/manual/guide/14-ios.org +10 −9
@@ -33,9 +33,9 @@ There is no way to open a single file from the Files app. Add the folder that co
33Tap a file in Folders, Search or the agenda to read it. 33Tap a file in Folders, Search or the agenda to read it.
34 34
35- Tap a heading to fold or unfold it, as =TAB= cycles it on the Mac. A chevron marks headings with content. 35- Tap a heading to fold or unfold it, as =TAB= cycles it on the Mac. A chevron marks headings with content.
36- The file opens with the visibility its =#+STARTUP= line and =VISIBILITY= properties ask for. Drawers and blocks are folded as =org-cycle-hide-drawer-startup= and =org-cycle-hide-block-startup= say, or as the file's =#+STARTUP= says (=hidedrawers=, =nohideblocks= and the like). 36- The file opens with the visibility its =#+STARTUP= line asks for, then each heading's =VISIBILITY= property when =#+STARTUP= sets a visibility. Drawers and blocks are folded as =org-cycle-hide-drawer-startup= and =org-cycle-hide-block-startup= say, or as the file's =#+STARTUP= says (=hidedrawers=, =nohideblocks= and the like).
37- Text is styled as in the editor, in the theme's colours, font, size, line spacing and heading sizes, on the theme's background: TODO keywords, priorities, tags, emphasis, code, timestamps and links. Text can be selected and copied. 37- Text is styled as in the editor, in the theme's colours, font, size, line spacing and heading sizes, on the theme's background: TODO keywords, priorities, tags, emphasis, code, timestamps, links, and the code in src blocks. Text can be selected and copied.
38- The reader doesn't apply =show-markup=, =org-pretty-entities=, =org-startup-indented=, inline images or truncated lines. Markup shows as typed, and bodies are indented by their heading's level. 38- The reader follows the editor's display settings (see Themes and display below): Show Markup, hidden emphasis markers, pretty entities, indentation, leading stars, inline images and truncated lines. Tables show at full width, without narrowed columns.
39- Tap a link to follow it. Links to headings and files in your folders open in the reader; web links open in the browser. 39- Tap a link to follow it. Links to headings and files in your folders open in the reader; web links open in the browser.
40- The toolbar has Outline (a list of headings to jump to), Export, and Edit. 40- The toolbar has Outline (a list of headings to jump to), Export, and Edit.
41 41
@@ -66,9 +66,9 @@ The editor and the reader use the theme set in the configuration folder's =confi
66- Font :: =font= when that family is installed on the device, otherwise the system's monospaced font. 66- Font :: =font= when that family is installed on the device, otherwise the system's monospaced font.
67- Size :: =font-size= is the size at the default Dynamic Type setting, 13 pt by default. Text grows and shrinks with the text size chosen in the system Settings app. 67- Size :: =font-size= is the size at the default Dynamic Type setting, 13 pt by default. Text grows and shrinks with the text size chosen in the system Settings app.
68- Line spacing and headings :: =line-spacing= and =heading-size-step= apply as on the Mac. 68- Line spacing and headings :: =line-spacing= and =heading-size-step= apply as on the Mac.
69- Caret and selection :: the caret and the selection highlight take the theme's =cursor= colour; =selection= isn't used. 69- Caret and selection :: the selection highlight takes the theme's =selection= colour, over block bands too; the caret and the selection handles take =cursor=.
70 70
71The editor applies these display settings; the reader applies only the drawer and block folding. The startup settings (=org-cycle-hide-*-startup=, =org-startup-*=, =org-hide-leading-stars=) apply when a file opens, and a =#+STARTUP= keyword in the file overrides them, as on the Mac. 71The editor and the reader apply these display settings; only the editor aligns tables when a file opens. The startup settings (=org-cycle-hide-*-startup=, =org-startup-*=, =org-hide-leading-stars=) apply when a file opens, and a =#+STARTUP= keyword in the file overrides them, as on the Mac.
72 72
73| Setting | In the iOS editor | =#+STARTUP= | 73| Setting | In the iOS editor | =#+STARTUP= |
74|----------------------------------+--------------------------------------------------------------------------------+----------------------------------| 74|----------------------------------+--------------------------------------------------------------------------------+----------------------------------|
@@ -83,13 +83,15 @@ The editor applies these display settings; the reader applies only the drawer an
83| =org-startup-align-all-tables= | Every table is aligned | =align=, =noalign= | 83| =org-startup-align-all-tables= | Every table is aligned | =align=, =noalign= |
84| =org-startup-truncated= | Long lines run off the right edge, and the editor scrolls sideways | | 84| =org-startup-truncated= | Long lines run off the right edge, and the editor scrolls sideways | |
85 85
86While markup is hidden, the line with the caret shows its markup, so you can edit it. More ▸ Show Markup, or Show or Hide Markup in Commands, switches markup in every editor. The switch lasts until =show-markup= in =config.toml= changes; then the file's value applies. 86While markup is hidden, the line with the caret shows its markup, so you can edit it. More ▸ Show Markup, or Show or Hide Markup in Commands, switches markup in every editor and in the reader. The switch lasts until =show-markup= in =config.toml= changes; then the file's value applies.
87 87
88The visibility from =#+STARTUP= applies first, then each heading's =VISIBILITY= property. As on the Mac, =VISIBILITY= properties apply only when =#+STARTUP= sets a visibility (=overview=, =content=, =showall= and the like). 88The visibility from =#+STARTUP= applies first, then each heading's =VISIBILITY= property. As on the Mac, =VISIBILITY= properties apply only when =#+STARTUP= sets a visibility (=overview=, =content=, =showall= and the like).
89 89
90An image line shows its image, and the link text is hidden except on the caret's line. =#+ATTR_ORG: :width N= sets the width in points; images are never wider than the editor. Show or Hide Inline Images in Commands, or =C-c C-x C-v= on a hardware keyboard, switches images in the open file. Truncate or Wrap Long Lines in Commands, or =C-x x t=, switches long lines. See [[file:02-the-editor.org][The editor]] for which lines show as images. 90An image line shows its image, and the link text is hidden except on the caret's line. =#+ATTR_ORG: :width N= sets the width in points; images are never wider than the editor. Show or Hide Inline Images in Commands, or =C-c C-x C-v= on a hardware keyboard, switches images in the open file. Truncate or Wrap Long Lines in Commands, or =C-x x t=, switches long lines. See [[file:02-the-editor.org][The editor]] for which lines show as images.
91 91
92The Mac editor's code highlighting in src blocks (the =syntax-*= colours) and =#+STARTUP: shrink= aren't on iOS. 92Code in src blocks is highlighted in the theme's =syntax-*= colours, as on the Mac (see [[file:11-code-blocks.org][Code blocks]]).
93
94Table columns with width cookies narrow as on the Mac: =#+STARTUP: shrink= narrows them when the file opens, and Shrink or Expand Table Column (=C-c TAB=), Shrink Table Columns with Widths and Expand Table Columns are in Commands when the caret is in a table. See [[file:10-tables.org][Tables]].
93 95
94** The key bar 96** The key bar
95 97
@@ -208,7 +210,7 @@ Clock in from the editor (More ▸ Clock In, or Clock In in Commands) or from an
208 210
209Recent Entries, in the bar and in the editor's More menu, lists the recently clocked entries; tap one to clock in to it. It also has Clock In to Recent Entry… and Go to Recent Clocked Entry…, and is disabled until you have clocked in once. Commands has Clock In to Recent Entry…, Clock In to Last Entry, Go to Recent Clocked Entry…, Mark as Default Clock Task and Resolve Open Clocks…. 211Recent Entries, in the bar and in the editor's More menu, lists the recently clocked entries; tap one to clock in to it. It also has Clock In to Recent Entry… and Go to Recent Clocked Entry…, and is disabled until you have clocked in once. Commands has Clock In to Recent Entry…, Clock In to Last Entry, Go to Recent Clocked Entry…, Mark as Default Clock Task and Resolve Open Clocks….
210 212
211Clock questions open in a sheet: the task selection and the resolution keys as lists to tap, and minutes or a date and time as a field. Cancel answers nothing, as =q= does. Clocking in with no clock running first asks about open clocks in your folders, except from the agenda or a capture template; Resolve Open Clocks… asks about every open clock. Both work as on the Mac. 213Clock questions open in a sheet: the task selection and the resolution keys as lists to tap, and minutes or a date and time as a field. Cancel answers nothing, as =q= does. Clocking in with no clock running first asks about open clocks in your folders, from the editor, an agenda entry's Clock In or a capture template with =clock-in=; Resolve Open Clocks… asks about every open clock. Both work as on the Mac.
212 214
213The iOS app has no idle detection, so =org-clock-idle-time= doesn't apply. =org-clock-history-length= does. 215The iOS app has no idle detection, so =org-clock-idle-time= doesn't apply. =org-clock-history-length= does.
214 216
@@ -300,7 +302,6 @@ Quick Look in the Files app shows org files as the HTML export renders them.
300- Running code blocks in languages other than Emacs Lisp, Emacs Lisp beyond Orgstar's interpreter, and tables that need Emacs. 302- Running code blocks in languages other than Emacs Lisp, Emacs Lisp beyond Orgstar's interpreter, and tables that need Emacs.
301- PDF, ODT, LaTeX and plain-text export. 303- PDF, ODT, LaTeX and plain-text export.
302- The Mac and Doom keymaps, Vim keys, and =keymap.toml=. 304- The Mac and Doom keymaps, Vim keys, and =keymap.toml=.
303- The =selection= colour, code highlighting in src blocks, and =#+STARTUP: shrink=.
304- Idle detection while a clock runs. 305- Idle detection while a clock runs.
305- Import from Emacs. 306- Import from Emacs.
306- The board, column view, the backlinks pane, and the buffer list and tab bar. 307- The board, column view, the backlinks pane, and the buffer list and tab bar.
docs/manual/guide/15-alongside-emacs.org +4 −3
@@ -203,9 +203,10 @@ Orgstar refuses some things with a message rather than doing something different
203 203
204Code blocks (see [[file:11-code-blocks.org][Code blocks]]): 204Code blocks (see [[file:11-code-blocks.org][Code blocks]]):
205 205
206- =:cmdline= is supported only for shells, =dot=, =plantuml= and =mermaid=. 206- =:cmdline= is supported only for shells, =dot=, =plantuml=, =mermaid= and C, C++, D, Java, Fortran and Clojure.
207- =:prologue=, =:epilogue= and =:post= aren't supported; =:stdin= and =:shebang= only for shells. 207- =:post= isn't supported; =:prologue= and =:epilogue= only for C, C++, D, Java, Fortran and Clojure; =:stdin= and =:shebang= only for shells.
208- =:session= is supported only for shells and Python. 208- =:session= is supported only for shells and Python. C, C++, D, Java, Fortran and Clojure ignore it, as in Org.
209- Clojure runs with babashka or the Clojure CLI only; other =:backend= values are refused.
209- =:var= isn't supported for some languages; references with arguments, as =block(x=1)=, and using another source block's result in =:var= aren't supported. 210- =:var= isn't supported for some languages; references with arguments, as =block(x=1)=, and using another source block's result in =:var= aren't supported.
210- Header arguments, =:var= values and =:cache= that need Lisp evaluated by Emacs are refused when Orgstar's interpreter can't evaluate them: "… is Lisp that only Emacs can evaluate; nothing was run." 211- Header arguments, =:var= values and =:cache= that need Lisp evaluated by Emacs are refused when Orgstar's interpreter can't evaluate them: "… is Lisp that only Emacs can evaluate; nothing was run."
211- Noweb references that run a block aren't supported. 212- Noweb references that run a block aren't supported.