diff options
| -rw-r--r-- | doc/misc/org.texi | 293 |
1 files changed, 152 insertions, 141 deletions
diff --git a/doc/misc/org.texi b/doc/misc/org.texi index 60647e65e88..873ce4d2cdb 100644 --- a/doc/misc/org.texi +++ b/doc/misc/org.texi | |||
| @@ -325,7 +325,6 @@ Jambunathan K, Dan Davison, Thomas Dye, David O'Toole, and Philip Rooke. | |||
| 325 | * Working with source code:: Export, evaluate, and tangle code blocks | 325 | * Working with source code:: Export, evaluate, and tangle code blocks |
| 326 | * Miscellaneous:: All the rest which did not fit elsewhere | 326 | * Miscellaneous:: All the rest which did not fit elsewhere |
| 327 | * Hacking:: How to hack your way around | 327 | * Hacking:: How to hack your way around |
| 328 | * MobileOrg:: Viewing and capture on a mobile device | ||
| 329 | * History and acknowledgments:: How Org came into being | 328 | * History and acknowledgments:: How Org came into being |
| 330 | * GNU Free Documentation License:: The license for this documentation. | 329 | * GNU Free Documentation License:: The license for this documentation. |
| 331 | * Main Index:: An index of Org's concepts and features | 330 | * Main Index:: An index of Org's concepts and features |
| @@ -760,12 +759,19 @@ Miscellaneous | |||
| 760 | * TTY keys:: Using Org on a tty | 759 | * TTY keys:: Using Org on a tty |
| 761 | * Interaction:: With other Emacs packages | 760 | * Interaction:: With other Emacs packages |
| 762 | * org-crypt:: Encrypting Org files | 761 | * org-crypt:: Encrypting Org files |
| 762 | * Org Mobile:: Viewing and capture on a mobile device | ||
| 763 | 763 | ||
| 764 | Interaction with other packages | 764 | Interaction with other packages |
| 765 | 765 | ||
| 766 | * Cooperation:: Packages Org cooperates with | 766 | * Cooperation:: Packages Org cooperates with |
| 767 | * Conflicts:: Packages that lead to conflicts | 767 | * Conflicts:: Packages that lead to conflicts |
| 768 | 768 | ||
| 769 | Org Mobile | ||
| 770 | |||
| 771 | * Setting up the staging area:: For the mobile device | ||
| 772 | * Pushing to the mobile application:: Uploading Org files and agendas | ||
| 773 | * Pulling from the mobile application:: Integrating captured and flagged items | ||
| 774 | |||
| 769 | Hacking | 775 | Hacking |
| 770 | 776 | ||
| 771 | * Hooks:: How to reach into Org's internals | 777 | * Hooks:: How to reach into Org's internals |
| @@ -788,12 +794,6 @@ Tables and lists in arbitrary syntax | |||
| 788 | * Translator functions:: Copy and modify | 794 | * Translator functions:: Copy and modify |
| 789 | * Radio lists:: Sending and receiving lists | 795 | * Radio lists:: Sending and receiving lists |
| 790 | 796 | ||
| 791 | MobileOrg | ||
| 792 | |||
| 793 | * Setting up the staging area:: For the mobile device | ||
| 794 | * Pushing to MobileOrg:: Uploading Org files and agendas | ||
| 795 | * Pulling from MobileOrg:: Integrating captured and flagged items | ||
| 796 | |||
| 797 | @end detailmenu | 797 | @end detailmenu |
| 798 | @end menu | 798 | @end menu |
| 799 | 799 | ||
| @@ -17253,6 +17253,7 @@ emacs -Q --batch --eval " | |||
| 17253 | * TTY keys:: Using Org on a tty | 17253 | * TTY keys:: Using Org on a tty |
| 17254 | * Interaction:: With other Emacs packages | 17254 | * Interaction:: With other Emacs packages |
| 17255 | * org-crypt:: Encrypting Org files | 17255 | * org-crypt:: Encrypting Org files |
| 17256 | * Org Mobile:: Viewing and capture on a mobile device | ||
| 17256 | @end menu | 17257 | @end menu |
| 17257 | 17258 | ||
| 17258 | 17259 | ||
| @@ -18187,6 +18188,150 @@ Suggested Org crypt settings in Emacs init file: | |||
| 18187 | Excluding the crypt tag from inheritance prevents encrypting previously | 18188 | Excluding the crypt tag from inheritance prevents encrypting previously |
| 18188 | encrypted text. | 18189 | encrypted text. |
| 18189 | 18190 | ||
| 18191 | @node Org Mobile | ||
| 18192 | @section Org Mobile | ||
| 18193 | |||
| 18194 | @cindex smartphone | ||
| 18195 | |||
| 18196 | Org Mobile is a protocol for synchronizing Org files between Emacs and | ||
| 18197 | other applications, e.g., on mobile devices. It enables offline-views | ||
| 18198 | and capture support for an Org mode system that is rooted on a ``real'' | ||
| 18199 | computer. The external application can also record changes to | ||
| 18200 | existing entries. | ||
| 18201 | |||
| 18202 | This appendix describes Org's support for agenda view formats | ||
| 18203 | compatible with Org Mobile. It also describes synchronizing changes, | ||
| 18204 | such as to notes, between the mobile application and the computer. | ||
| 18205 | |||
| 18206 | To change tags and TODO states in the mobile application, first | ||
| 18207 | customize the variables @code{org-todo-keywords} and @code{org-tag-alist}. | ||
| 18208 | These should cover all the important tags and TODO keywords, even if | ||
| 18209 | Org files use only some of them. Though the mobile application is | ||
| 18210 | expected to support in-buffer settings, it is required to understand | ||
| 18211 | TODO states @emph{sets} (see @ref{Per-file keywords}) and | ||
| 18212 | @emph{mutually exclusive} tags (see @ref{Setting tags}) only for those set in | ||
| 18213 | these variables. | ||
| 18214 | |||
| 18215 | @menu | ||
| 18216 | * Setting up the staging area:: For the mobile device | ||
| 18217 | * Pushing to the mobile application:: Uploading Org files and agendas | ||
| 18218 | * Pulling from the mobile application:: Integrating captured and flagged items | ||
| 18219 | @end menu | ||
| 18220 | |||
| 18221 | @node Setting up the staging area | ||
| 18222 | @subsection Setting up the staging area | ||
| 18223 | |||
| 18224 | @vindex org-mobile-directory | ||
| 18225 | The mobile application needs access to a file directory on | ||
| 18226 | a server@footnote{For a server to host files, consider using a WebDAV server, | ||
| 18227 | such as @uref{https://nextcloud.com, Nextcloud}. Additional help is at this @uref{https://orgmode.org/worg/org-faq.html#mobileorg_webdav, FAQ entry}.} to interact with Emacs. Pass its location through | ||
| 18228 | the @code{org-mobile-directory} variable. If you can mount that directory | ||
| 18229 | locally just set the variable to point to that directory: | ||
| 18230 | |||
| 18231 | @lisp | ||
| 18232 | (setq org-mobile-directory "~/orgmobile/") | ||
| 18233 | @end lisp | ||
| 18234 | |||
| 18235 | @noindent | ||
| 18236 | Alternatively, by using TRAMP (see @ref{Top,TRAMP User Manual,,tramp,}), | ||
| 18237 | @code{org-mobile-directory} may point to a remote directory accessible | ||
| 18238 | through, for example, SSH and SCP: | ||
| 18239 | |||
| 18240 | @lisp | ||
| 18241 | (setq org-mobile-directory "/scpc:user@@remote.host:org/webdav/") | ||
| 18242 | @end lisp | ||
| 18243 | |||
| 18244 | @vindex org-mobile-encryption | ||
| 18245 | With a public server, consider encrypting the files. Org also | ||
| 18246 | requires OpenSSL installed on the local computer. To turn on | ||
| 18247 | encryption, set the same password in the mobile application and in | ||
| 18248 | Emacs. Set the password in the variable | ||
| 18249 | @code{org-mobile-use-encryption}@footnote{If Emacs is configured for safe storing of passwords, then | ||
| 18250 | configure the variable @code{org-mobile-encryption-password}; please read | ||
| 18251 | the docstring of that variable.}. Note that even after the mobile | ||
| 18252 | application encrypts the file contents, the file name remains visible | ||
| 18253 | on the file systems of the local computer, the server, and the mobile | ||
| 18254 | device. | ||
| 18255 | |||
| 18256 | @node Pushing to the mobile application | ||
| 18257 | @subsection Pushing to the mobile application | ||
| 18258 | |||
| 18259 | @findex org-mobile-push | ||
| 18260 | @vindex org-mobile-files | ||
| 18261 | The command @code{org-mobile-push} copies files listed in | ||
| 18262 | @code{org-mobile-files} into the staging area. Files include agenda files | ||
| 18263 | (as listed in @code{org-agenda-files}). Customize @code{org-mobile-files} to | ||
| 18264 | add other files. File names are staged with paths relative to | ||
| 18265 | @code{org-directory}, so all files should be inside this directory@footnote{Symbolic links in @code{org-directory} need to have the same name | ||
| 18266 | as their targets.}. | ||
| 18267 | |||
| 18268 | Push creates a special Org file @samp{agendas.org} with custom agenda views | ||
| 18269 | defined by the user@footnote{While creating the agendas, Org mode forces ID properties on | ||
| 18270 | all referenced entries, so that these entries can be uniquely | ||
| 18271 | identified if Org Mobile flags them for further action. To avoid | ||
| 18272 | setting properties configure the variable | ||
| 18273 | @code{org-mobile-force-id-on-agenda-items} to @code{nil}. Org mode then relies | ||
| 18274 | on outline paths, assuming they are unique.}. | ||
| 18275 | |||
| 18276 | Finally, Org writes the file @samp{index.org}, containing links to other | ||
| 18277 | files. The mobile application reads this file first from the server | ||
| 18278 | to determine what other files to download for agendas. For faster | ||
| 18279 | downloads, it is expected to only read files whose checksums@footnote{Checksums are stored automatically in the file | ||
| 18280 | @samp{checksums.dat}.} | ||
| 18281 | have changed. | ||
| 18282 | |||
| 18283 | @node Pulling from the mobile application | ||
| 18284 | @subsection Pulling from the mobile application | ||
| 18285 | |||
| 18286 | @findex org-mobile-pull | ||
| 18287 | The command @code{org-mobile-pull} synchronizes changes with the server. | ||
| 18288 | More specifically, it first pulls the Org files for viewing. It then | ||
| 18289 | appends captured entries and pointers to flagged or changed entries to | ||
| 18290 | the file @samp{mobileorg.org} on the server. Org ultimately integrates its | ||
| 18291 | data in an inbox file format, through the following steps: | ||
| 18292 | |||
| 18293 | @enumerate | ||
| 18294 | @item | ||
| 18295 | @vindex org-mobile-inbox-for-pull | ||
| 18296 | Org moves all entries found in @samp{mobileorg.org}@footnote{The file will be empty after this operation.} and appends | ||
| 18297 | them to the file pointed to by the variable | ||
| 18298 | @code{org-mobile-inbox-for-pull}. It should reside neither in the | ||
| 18299 | staging area nor on the server. Each captured entry and each | ||
| 18300 | editing event is a top-level entry in the inbox file. | ||
| 18301 | |||
| 18302 | @item | ||
| 18303 | @cindex @samp{FLAGGED}, tag | ||
| 18304 | After moving the entries, Org processes changes to the shared | ||
| 18305 | files. Some of them are applied directly and without user | ||
| 18306 | interaction. Examples include changes to tags, TODO state, | ||
| 18307 | headline and body text. Entries requiring further action are | ||
| 18308 | tagged as @samp{FLAGGED}. Org marks entries with problems with an error | ||
| 18309 | message in the inbox. They have to be resolved manually. | ||
| 18310 | |||
| 18311 | @item | ||
| 18312 | Org generates an agenda view for flagged entries for user | ||
| 18313 | intervention to clean up. For notes stored in flagged entries, Org | ||
| 18314 | displays them in the echo area when point is on the corresponding | ||
| 18315 | agenda item. | ||
| 18316 | |||
| 18317 | @table @asis | ||
| 18318 | @item @kbd{?} | ||
| 18319 | Pressing @kbd{?} displays the entire flagged note in | ||
| 18320 | another window. Org also pushes it to the kill ring. To | ||
| 18321 | store flagged note as a normal note, use @kbd{? z C-y C-c C-c}. Pressing @kbd{?} twice does these things: first | ||
| 18322 | it removes the @samp{FLAGGED} tag; second, it removes the flagged | ||
| 18323 | note from the property drawer; third, it signals that manual | ||
| 18324 | editing of the flagged entry is now finished. | ||
| 18325 | @end table | ||
| 18326 | @end enumerate | ||
| 18327 | |||
| 18328 | @kindex ? @r{(Agenda dispatcher)} | ||
| 18329 | From the agenda dispatcher, @kbd{?} returns to the view to finish | ||
| 18330 | processing flagged entries. Note that these entries may not be the | ||
| 18331 | most recent since the mobile application searches files that were last | ||
| 18332 | pulled. To get an updated agenda view with changes since the last | ||
| 18333 | pull, pull again. | ||
| 18334 | |||
| 18190 | @node Hacking | 18335 | @node Hacking |
| 18191 | @appendix Hacking | 18336 | @appendix Hacking |
| 18192 | @cindex hacking | 18337 | @cindex hacking |
| @@ -19151,140 +19296,6 @@ The following example counts the number of entries with TODO keyword | |||
| 19151 | (length (org-map-entries t "/+WAITING" 'agenda)) | 19296 | (length (org-map-entries t "/+WAITING" 'agenda)) |
| 19152 | @end lisp | 19297 | @end lisp |
| 19153 | 19298 | ||
| 19154 | @node MobileOrg | ||
| 19155 | @appendix MobileOrg | ||
| 19156 | @cindex iPhone | ||
| 19157 | @cindex MobileOrg | ||
| 19158 | |||
| 19159 | MobileOrg is a companion mobile app that runs on iOS and Android devices. | ||
| 19160 | MobileOrg enables offline-views and capture support for an Org mode system | ||
| 19161 | that is rooted on a ``real'' computer. MobileOrg can record changes to | ||
| 19162 | existing entries. | ||
| 19163 | |||
| 19164 | The @uref{https://github.com/MobileOrg/, iOS implementation} for the | ||
| 19165 | @emph{iPhone/iPod Touch/iPad} series of devices, was started by Richard | ||
| 19166 | Moreland and is now in the hands Sean Escriva. Android users should check | ||
| 19167 | out @uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg | ||
| 19168 | Android} by Matt Jones. Though the two implementations are not identical, | ||
| 19169 | they offer similar features. | ||
| 19170 | |||
| 19171 | This appendix describes Org's support for agenda view formats compatible with | ||
| 19172 | MobileOrg. It also describes synchronizing changes, such as to notes, | ||
| 19173 | between MobileOrg and the computer. | ||
| 19174 | |||
| 19175 | To change tags and TODO states in MobileOrg, first customize the variables | ||
| 19176 | @code{org-todo-keywords} and @code{org-tag-alist}. These should cover all | ||
| 19177 | the important tags and TODO keywords, even if Org files use only some of | ||
| 19178 | them. Though MobileOrg has in-buffer settings, it understands TODO states | ||
| 19179 | @emph{sets} (@pxref{Per-file keywords}) and @emph{mutually exclusive} tags | ||
| 19180 | (@pxref{Setting tags}) only for those set in these variables. | ||
| 19181 | |||
| 19182 | @menu | ||
| 19183 | * Setting up the staging area:: For the mobile device | ||
| 19184 | * Pushing to MobileOrg:: Uploading Org files and agendas | ||
| 19185 | * Pulling from MobileOrg:: Integrating captured and flagged items | ||
| 19186 | @end menu | ||
| 19187 | |||
| 19188 | @node Setting up the staging area | ||
| 19189 | @section Setting up the staging area | ||
| 19190 | |||
| 19191 | MobileOrg needs access to a file directory on a server to interact with | ||
| 19192 | Emacs. With a public server, consider encrypting the files. MobileOrg | ||
| 19193 | version 1.5 supports encryption for the iPhone. Org also requires | ||
| 19194 | @file{openssl} installed on the local computer. To turn on encryption, set | ||
| 19195 | the same password in MobileOrg and in Emacs. Set the password in the | ||
| 19196 | variable @code{org-mobile-use-encryption}@footnote{If Emacs is configured for | ||
| 19197 | safe storing of passwords, then configure the variable, | ||
| 19198 | @code{org-mobile-encryption-password}; please read the docstring of that | ||
| 19199 | variable.}. Note that even after MobileOrg encrypts the file contents, the | ||
| 19200 | file names will remain visible on the file systems of the local computer, the | ||
| 19201 | server, and the mobile device. | ||
| 19202 | |||
| 19203 | For a server to host files, consider options like | ||
| 19204 | @uref{http://dropbox.com,Dropbox.com} account@footnote{An alternative is to | ||
| 19205 | use webdav server. MobileOrg documentation has details of webdav server | ||
| 19206 | configuration. Additional help is at | ||
| 19207 | @uref{https://orgmode.org/worg/org-faq.html#mobileorg_webdav, FAQ entry}.}. | ||
| 19208 | On first connection, MobileOrg creates a directory @file{MobileOrg/} on | ||
| 19209 | Dropbox. Pass its location to Emacs through an init file variable as | ||
| 19210 | follows: | ||
| 19211 | |||
| 19212 | @lisp | ||
| 19213 | (setq org-mobile-directory "~/Dropbox/MobileOrg") | ||
| 19214 | @end lisp | ||
| 19215 | |||
| 19216 | Org copies files to the above directory for MobileOrg. Org also uses the | ||
| 19217 | same directory for sharing notes between Org and MobileOrg. | ||
| 19218 | |||
| 19219 | @node Pushing to MobileOrg | ||
| 19220 | @section Pushing to MobileOrg | ||
| 19221 | |||
| 19222 | Org pushes files listed in @code{org-mobile-files} to | ||
| 19223 | @code{org-mobile-directory}. Files include agenda files (as listed in | ||
| 19224 | @code{org-agenda-files}). Customize @code{org-mobile-files} to add other | ||
| 19225 | files. File names will be staged with paths relative to | ||
| 19226 | @code{org-directory}, so all files should be inside this | ||
| 19227 | directory@footnote{Symbolic links in @code{org-directory} should have the | ||
| 19228 | same name as their targets.}. | ||
| 19229 | |||
| 19230 | Push creates a special Org file @file{agendas.org} with custom agenda views | ||
| 19231 | defined by the user@footnote{While creating the agendas, Org mode will force | ||
| 19232 | ID properties on all referenced entries, so that these entries can be | ||
| 19233 | uniquely identified if MobileOrg flags them for further action. To avoid | ||
| 19234 | setting properties configure the variable | ||
| 19235 | @code{org-mobile-force-id-on-agenda-items} to @code{nil}. Org mode will then | ||
| 19236 | rely on outline paths, assuming they are unique.}. | ||
| 19237 | |||
| 19238 | Org writes the file @file{index.org}, containing links to other files. | ||
| 19239 | MobileOrg reads this file first from the server to determine what other files | ||
| 19240 | to download for agendas. For faster downloads, MobileOrg will read only | ||
| 19241 | those files whose checksums@footnote{Checksums are stored automatically in | ||
| 19242 | the file @file{checksums.dat}.} have changed. | ||
| 19243 | |||
| 19244 | @node Pulling from MobileOrg | ||
| 19245 | @section Pulling from MobileOrg | ||
| 19246 | |||
| 19247 | When MobileOrg synchronizes with the server, it pulls the Org files for | ||
| 19248 | viewing. It then appends to the file @file{mobileorg.org} on the server the | ||
| 19249 | captured entries, pointers to flagged and changed entries. Org integrates | ||
| 19250 | its data in an inbox file format. | ||
| 19251 | |||
| 19252 | @enumerate | ||
| 19253 | @item | ||
| 19254 | Org moves all entries found in | ||
| 19255 | @file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this | ||
| 19256 | operation.} and appends them to the file pointed to by the variable | ||
| 19257 | @code{org-mobile-inbox-for-pull}. Each captured entry and each editing event | ||
| 19258 | is a top-level entry in the inbox file. | ||
| 19259 | @item | ||
| 19260 | After moving the entries, Org attempts changes to MobileOrg. Some changes | ||
| 19261 | are applied directly and without user interaction. Examples include changes | ||
| 19262 | to tags, TODO state, headline and body text. Entries for further action are | ||
| 19263 | tagged as @code{:FLAGGED:}. Org marks entries with problems with an error | ||
| 19264 | message in the inbox. They have to be resolved manually. | ||
| 19265 | @item | ||
| 19266 | Org generates an agenda view for flagged entries for user intervention to | ||
| 19267 | clean up. For notes stored in flagged entries, MobileOrg displays them in | ||
| 19268 | the echo area when the cursor is on the corresponding agenda item. | ||
| 19269 | |||
| 19270 | @table @kbd | ||
| 19271 | @kindex ? | ||
| 19272 | @item ? | ||
| 19273 | Pressing @kbd{?} displays the entire flagged note in another window. Org | ||
| 19274 | also pushes it to the kill ring. To store flagged note as a normal note, use | ||
| 19275 | @kbd{? z C-y C-c C-c}. Pressing @kbd{?} twice does these things: first it | ||
| 19276 | removes the @code{:FLAGGED:} tag; second, it removes the flagged note from | ||
| 19277 | the property drawer; third, it signals that manual editing of the flagged | ||
| 19278 | entry is now finished. | ||
| 19279 | @end table | ||
| 19280 | @end enumerate | ||
| 19281 | |||
| 19282 | @kindex C-c a ? | ||
| 19283 | @kbd{C-c a ?} returns to the agenda view to finish processing flagged | ||
| 19284 | entries. Note that these entries may not be the most recent since MobileOrg | ||
| 19285 | searches files that were last pulled. To get an updated agenda view with | ||
| 19286 | changes since the last pull, pull again. | ||
| 19287 | |||
| 19288 | @node History and acknowledgments | 19299 | @node History and acknowledgments |
| 19289 | @appendix History and acknowledgments | 19300 | @appendix History and acknowledgments |
| 19290 | @cindex acknowledgments | 19301 | @cindex acknowledgments |