Re: [Orgmode] Need help exporting subtrees to html
Juan Reyero writes: > On Thu, Dec 31, 2009 at 6:15 PM, Eric Schulte wrote: >> Juan Reyero writes: >> >>> On Thu, Dec 31, 2009 at 9:15 AM, Carsten Dominik >>> wrote: On Dec 27, 2009, at 8:31 PM, Juan Reyero wrote: > On Sun, Dec 27, 2009 at 7:35 PM, Carsten Dominik > wrote: >> On Dec 27, 2009, at 5:34 PM, Juan Reyero wrote: >>> I have written a function to export org-mode subtrees as jekyll posts, >>> http://juanreyero.com/open/org-jekyll/ The idea is that any entry in >>> an org-publish project that has a :blog: keyword and an :on: property >>> with a timestamp should be exported to a _posts directory with the >>> year-month-day-title.html that jekyll expects, with the properties as >>> front-matter. >> If it helps, I've been doing something similar to support publishing >> updates on the org-babel development -- using the code shown here [1] >> under the "Development Updates" section. This generates a files in >> _posts for each subtree of of the "tasks" and "bugs" sections which have >> a time-stamp in their properties. It should be fairly straightforward >> to adapt this code to export all properties as YAML frontmatter. > > It is exactly what I did :-). I found your code here [1], and adapted > it so that it would use files in an org-publish project and would > export properties. Ah, I should have read the thread more carefully :) > So thank you very much for making it available. It does, however, > have the same problem I find: the header level with which the piece is > exported (h1, h2, etc) depends on the outline level on which the item > you export happened to be. I was hoping to export the chunks > independently of where they were written. > So this turned out to be somewhat tricky. I was able to adjust my previous code so that every subtree will be promoted to a top-level heading before export by adding the following (this change can also be seen in my published code here [1]). --8<---cut here---start->8--- (org-narrow-to-subtree) (let ((level (- (org-outline-level) 1)) (contents (buffer-substring (point-min) (point-max (dotimes (n level nil) (org-promote-subtree)) (setq html (org-export-as-html nil nil nil 'string t nil)) (set-buffer org-buffer) (delete-region (point-min) (point-max)) (insert contents) (save-buffer)) (widen) --8<---cut here---end--->8--- Hope this helps. Cheers -- Eric > > I will share it with Worg as soon as I manage to make it work. > > Best, > > Juan > > Footnotes: > [1] http://orgmode.org/worg/org-tutorials/org-jekyll.php (end of document). > >> >> Best -- Eric >> >> Footnotes: >> [1] http://eschulte.github.com/babel-dev/publish.html >> >> Footnotes: [1] http://eschulte.github.com/babel-dev/publish.html ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Need help exporting subtrees to html
On Thu, Dec 31, 2009 at 6:15 PM, Eric Schulte wrote: > Juan Reyero writes: > >> On Thu, Dec 31, 2009 at 9:15 AM, Carsten Dominik >> wrote: >>> On Dec 27, 2009, at 8:31 PM, Juan Reyero wrote: On Sun, Dec 27, 2009 at 7:35 PM, Carsten Dominik wrote: > On Dec 27, 2009, at 5:34 PM, Juan Reyero wrote: >> I have written a function to export org-mode subtrees as jekyll posts, >> http://juanreyero.com/open/org-jekyll/ The idea is that any entry in >> an org-publish project that has a :blog: keyword and an :on: property >> with a timestamp should be exported to a _posts directory with the >> year-month-day-title.html that jekyll expects, with the properties as >> front-matter. > If it helps, I've been doing something similar to support publishing > updates on the org-babel development -- using the code shown here [1] > under the "Development Updates" section. This generates a files in > _posts for each subtree of of the "tasks" and "bugs" sections which have > a time-stamp in their properties. It should be fairly straightforward > to adapt this code to export all properties as YAML frontmatter. It is exactly what I did :-). I found your code here [1], and adapted it so that it would use files in an org-publish project and would export properties. So thank you very much for making it available. It does, however, have the same problem I find: the header level with which the piece is exported (h1, h2, etc) depends on the outline level on which the item you export happened to be. I was hoping to export the chunks independently of where they were written. I will share it with Worg as soon as I manage to make it work. Best, Juan Footnotes: [1] http://orgmode.org/worg/org-tutorials/org-jekyll.php (end of document). > > Best -- Eric > > Footnotes: > [1] http://eschulte.github.com/babel-dev/publish.html > > -- http://juanreyero.com/ http://unarueda.com ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Speeding up agenda display
Shaved off half a second. So that's something! ajk org-agenda1 1.534166 1.534166 org-let 1 1.070332 1.070332 org-agenda-list 1 1.070318 1.070318 org-agenda-get-day-entries1 1.040049 1.040049 ajk/org-agenda-skip-if-not-due-soon 416 0.503560 0.0012104807 org-agenda-get-scheduled 1 0.478835 0.478835 org-agenda-get-restriction-and-command1 0.463795 0.463795 ajk/org-agenda-skip-if-due-soon 416 0.374392 0.0008999807 org-entry-get 425 0.366792 0.00086304 org-entry-properties 416 0.358245 0.0008611658 org-agenda-skip-entry-if 416 0.309056 0.0007429254 org-agenda-skip-if416 0.307708 0.0007396850 org-agenda-get-timestamps 1 0.302895 0.302895 org-agenda-get-deadlines 1 0.254305 0.254305 org-back-to-heading 991 0.179074 0.0001807003 ajk/org-skip-position 419 0.131751 0.0003144415 org-at-date-range-p 101 0.037735 0.0003736237 org-prepare-agenda1 0.022929 0.022929 org-prepare-agenda-buffers1 0.022543 0.022543 org-agenda-skip 416 0.019056 4.581...e-05 org-refresh-category-properties 1 0.011837 0.011837 org-get-tags-at 3 0.009567 0.003189 org-up-heading-safe 11 0.009437 0.000857 org-deadline-close177 0.008163 4.612...e-05 org-finalize-agenda 1 0.005829 0.005829 org-agenda-dim-blocked-tasks 1 0.005662 0.005662 org-get-property-block9 0.005145 0.000571 org-days-to-time 177 0.004461 2.520...e-05 org-get-todo-state119 0.004413 3.708...e-05 org-format-agenda-item3 0.003384 0.001127 org-get-effort3 0.003145 0.001048 org-block-todo-from-children-or-siblings-or-parent3 0.002877 0.000959 org-time-string-to-time 177 0.002153 1.216...e-05 org-agenda-get-blocks 1 0.002113 0.002113 org-entry-is-done-p 114 0.002066 1.813...e-05 org-agenda-get-sexps 1 0.001715 0.001715 ajk/org-agenda-skip-if-tagged-for-home11 0.001621 0.0001473636 org-parse-time-string 184 0.001281 6.961...e-06 org-get-priority 3 0.000973 0.000324 org-fit-window-to-buffer 1 0.000604 0.000604 org-get-category 420 0.000423 1.007...e-06 org-get-wdays 180 0.000419 2.333...e-06 org-trim 113 0.000367 3.256...e-06 org-finalize-agenda-entries 1 0.000337 0.000337 org-get-tags 11 0.000304 2.763...e-05 org-time-string-to-absolute 7 0.000292 4.185...e-05 org-agenda-mode 1 0.000236 0.000236 org-agenda-highlight-todo 3 0.000225 7.5e-05 org-agenda-files 3 0.000218 7.266...e-05 org-get-tags-string
[Orgmode] Re: Multiple column views for one file
Thomas Leitner writes: > I don't know if org-mode supports having multiple column views for one > file currently but I did not find a way to do the following. > > What I have is a journal file in org-mode in which I record, for > example, films I have seen, books I have read and kilometres I have > run. All of these entries have properties based on their type, for > example, films have the properties Genre, Year and Director. Now I > would like to get a sparse tree for all entries tagged with `film` and > use a special column view for the films. However, when I define the > #+COLUMNS variable at the top, this procedure only works for films, and > not for books or other entry types which have different properties. > > Therefore it would be nice to be able to define several column views > and the possibility to switch between them. It is currently possible to > disable column view by pressing `q` when the cursor is on a head line > in column view. It should probably be no problem to add another hotkey > like `s` for switching to a different column view. The different column > views could be defined like this: > > #+COLUMNS: films %70ITEM(Details) %TAGS(Context) %Genre %Year %Director > #+COLUMNS: books %70ITEM(Details) %TAGS(Context) %Author %Year %Pages > > It seems that org-mode currently ignores the column view names ("films" > and "books") so this would be backwards compatible. > > I'm still at the beginning of learning Elisp, so I'm not able to > implement this myself and would like to know if others find this > proposal useful and if it could be implemented? AFAIK, it is not possible to switch between multiple column overlays for the same subtree. One immediate solution, however, would be to keep all your film entries in a subtree and to define a local column view for the subtree. E.g., --8<---cut here---start->8--- * Films :PROPERTIES: :COLUMNS: %70ITEM(Details) %TAGS(Context) %Genre %Year %Director :END: ** Citizen Kane --8<---cut here---end--->8--- The same method could be used for books, running, etc. Another Best, Matt ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Need help exporting subtrees to html
Also, please share your results with Worg - http://orgmode.org/worg/org-tutorials/org-jekyll.php - http://orgmode.org/worg/org-blog-wiki.php Thanks -- Eric "Eric Schulte" writes: > Juan Reyero writes: > >> On Thu, Dec 31, 2009 at 9:15 AM, Carsten Dominik >> wrote: >>> On Dec 27, 2009, at 8:31 PM, Juan Reyero wrote: On Sun, Dec 27, 2009 at 7:35 PM, Carsten Dominik wrote: > On Dec 27, 2009, at 5:34 PM, Juan Reyero wrote: >> I have written a function to export org-mode subtrees as jekyll posts, >> http://juanreyero.com/open/org-jekyll/ The idea is that any entry in >> an org-publish project that has a :blog: keyword and an :on: property >> with a timestamp should be exported to a _posts directory with the >> year-month-day-title.html that jekyll expects, with the properties as >> front-matter. > [...] >> Looks like it is not going to be a small investment. For the time >> being I'll stick to writing blog posts as first-level entries, and >> I'll try to figure it out when I find some more time. Thank you very >> much for your answers. >> > > Hi, > > If it helps, I've been doing something similar to support publishing > updates on the org-babel development -- using the code shown here [1] > under the "Development Updates" section. This generates a files in > _posts for each subtree of of the "tasks" and "bugs" sections which have > a time-stamp in their properties. It should be fairly straightforward > to adapt this code to export all properties as YAML frontmatter. > > Best -- Eric > > Footnotes: > [1] http://eschulte.github.com/babel-dev/publish.html ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Need help exporting subtrees to html
Juan Reyero writes: > On Thu, Dec 31, 2009 at 9:15 AM, Carsten Dominik > wrote: >> On Dec 27, 2009, at 8:31 PM, Juan Reyero wrote: >>> On Sun, Dec 27, 2009 at 7:35 PM, Carsten Dominik >>> wrote: On Dec 27, 2009, at 5:34 PM, Juan Reyero wrote: > I have written a function to export org-mode subtrees as jekyll posts, > http://juanreyero.com/open/org-jekyll/ The idea is that any entry in > an org-publish project that has a :blog: keyword and an :on: property > with a timestamp should be exported to a _posts directory with the > year-month-day-title.html that jekyll expects, with the properties as > front-matter. [...] > Looks like it is not going to be a small investment. For the time > being I'll stick to writing blog posts as first-level entries, and > I'll try to figure it out when I find some more time. Thank you very > much for your answers. > Hi, If it helps, I've been doing something similar to support publishing updates on the org-babel development -- using the code shown here [1] under the "Development Updates" section. This generates a files in _posts for each subtree of of the "tasks" and "bugs" sections which have a time-stamp in their properties. It should be fairly straightforward to adapt this code to export all properties as YAML frontmatter. Best -- Eric Footnotes: [1] http://eschulte.github.com/babel-dev/publish.html ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Orgmode] Re: [PATCH] Log removal of deadline/scheduled dates
On Thu, Dec 31, 2009 at 09:12:10AM +0100, Carsten Dominik wrote: > Hi Paul, very nice, thank you. > > One question: > > What is the purpose of > > +(created . "CREATED %t") Mistake, please remove. This was part of a different patch set to automatically add a "CREATED" property for new tasks. I will send that separately as there are some issues with it still. -- Paul Holcomb *pholcomb\@ cpoint net* GPG key fingerprint 2B62 05AE EE74 845A 705F D716 28C4 FE1C 088F CFAC ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Orgmode] Multiple column views for one file
Hi, I don't know if org-mode supports having multiple column views for one file currently but I did not find a way to do the following. What I have is a journal file in org-mode in which I record, for example, films I have seen, books I have read and kilometres I have run. All of these entries have properties based on their type, for example, films have the properties Genre, Year and Director. Now I would like to get a sparse tree for all entries tagged with `film` and use a special column view for the films. However, when I define the #+COLUMNS variable at the top, this procedure only works for films, and not for books or other entry types which have different properties. Therefore it would be nice to be able to define several column views and the possibility to switch between them. It is currently possible to disable column view by pressing `q` when the cursor is on a head line in column view. It should probably be no problem to add another hotkey like `s` for switching to a different column view. The different column views could be defined like this: #+COLUMNS: films %70ITEM(Details) %TAGS(Context) %Genre %Year %Director #+COLUMNS: books %70ITEM(Details) %TAGS(Context) %Author %Year %Pages It seems that org-mode currently ignores the column view names ("films" and "books") so this would be backwards compatible. I'm still at the beginning of learning Elisp, so I'm not able to implement this myself and would like to know if others find this proposal useful and if it could be implemented? Best regards, Thomas ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Need help exporting subtrees to html
On Thu, Dec 31, 2009 at 9:15 AM, Carsten Dominik wrote: > On Dec 27, 2009, at 8:31 PM, Juan Reyero wrote: >> On Sun, Dec 27, 2009 at 7:35 PM, Carsten Dominik >> wrote: >>> On Dec 27, 2009, at 5:34 PM, Juan Reyero wrote: I have written a function to export org-mode subtrees as jekyll posts, http://juanreyero.com/open/org-jekyll/ The idea is that any entry in an org-publish project that has a :blog: keyword and an :on: property with a timestamp should be exported to a _posts directory with the year-month-day-title.html that jekyll expects, with the properties as front-matter. I was very happy with it, until I realized that the levels of the headers in the exported file (h2, h3, etc) depend on the indentation of the subtree in the outline. I wanted to be able to add a :blog: subtree anywhere in my project's files, and get it always exported the same, regardless of where in the outline it is. Is there any reasonably simple way to overcome this problem? I am using: (org-narrow-to-subtree) (setq html (org-export-as-html nil nil nil 'string t nil)) >>> >>> Hi Juan, >>> >>> Try this: >>> >>> (outline-mark-subtree) >>> (setq html (org-export-as-html nil nil nil 'string t nil)) >> >> Thanks for your answer. I've tried it, but now it exports the whole >> buffer, as if (outline-mark-subtree) didn't understand which subtree I >> am looking at. I am doing this from within an (org-map-entries). If >> I first narrow and then mark it doesn't work either: it complains of >> "Before first headline at position...". > > You are right, this does not work as I had hoped. What needs to be > done is that the tree must be selected, and the region needs to be *active* > when the export command is called. I am not quite sure right now > how to do this in the middle of a Lisp program Looks like it is not going to be a small investment. For the time being I'll stick to writing blog posts as first-level entries, and I'll try to figure it out when I find some more time. Thank you very much for your answers. Cheers, Juan >> I have updated the tests at http://github.com/juanre/org-jekyll to >> reflect the problem. -- http://juanreyero.com/ http://unarueda.com ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Orgmode] Issue with remember templates
Hello, I'd like to note my work's holidays using remember. For this, I have a org file (work.org for example) which contains the following headline: * Holidays #+CATEGORY: Holiday %%(diary-date 12 '(4 7) 2009) Day Off I also created the following template to speed up the process of entering a new holiday entri: ("Holidays" ?h "* %% (diary-date %?) Day Off" "work.org" "Holidays") But as you can notice, this doesn't exactly create the entry I described previously since it does: * %% (diary-date ) Day Off I had to insert some spaces otherwise Org tries to evaluate the Elisp SEXP. I tried to use some backslashes in several ways like '\%(diary-date )' but it has no effect. The other problem is that Org ensures that the new entry has a headline so I had to start the template with '*'. But I don't want this since I read that the sexp entries must start at the left margin. Could anybody give me some hints to solve these 2 issues ? Thanks -- Francis ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] How to change CREATED property value to inactive in org-expiry
Hi Bastien, I attached the two patches: - 0001: Use `org-time-string-to-time' to convert timestamps to time objects - 0002: Allow inactive timestamps I am currently pondering whether or not it could be useful to limit the creation of the created timestamp to todo headlines only. At least for me a created timestamp does not make sense for a headline that is, say, part of a document's outline. Regards -- David -- OpenPGP... 0x99ADB83B5A4478E6 Jabber dmj...@jabber.org Email. maus.da...@gmail.com ICQ... 241051416 0001-Use-org-time-string-to-time-to-convert-timestamp-to-.patch Description: Binary data 0002-Allow-inactive-timestamps-for-created-and-expired-ti.patch Description: Binary data pgpL2kH9D3cuP.pgp Description: PGP signature ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Request for guidance: Export ONLY headlines matching occur search?
On Dec 21, 2009, at 10:48 AM, Alan E. Davis wrote: I am keeping notes in a single file about several topics. I can isolate headlines about these topics/products, by an agenda occur search: C-a a / . I have made a template to print a memo about these products, but it seems I must copy the headlines by hand to a register or file, then massage them into shape. I would like to do something like export a PDF of all entries/subtrees within the region that have the product's key phrase in the heading. Is it possible to selectively export only the subtrees identified by the Occur agenda search, automagically? No. What you can do is to make a sparse tree showing only what you want, and then export with C-c C-e v b note the "v"... Since my notes start with an inactive time stamp, I would like to strip these out as well. I think I can easily write an elisp function to do this, but perhaps org-mode already has such capabilities built in, a regexp for an inactive time stamp. Strangely enough, there is not. But you can make it with (concat "\\[" (substring org-ts-regexp 1 -1) "\\]") HTH - Carsten Perhaps I'll spend some time over Christmas break on this. It's nice to easily make a memo, but it would be a big help to make it less laborious. In case there is interest, here are the template and the fragments for the head and tail of the memo. Remember template: ("Memo" ?Z "%[~/org/MEMO/Top.2.memo] %?\n %i %& %[~/org/MEMO/Bot.memo]" "~/or/MEMO/Memo.tex" top) The required files Top.2.memo and Bot.memo are attached. Top. 2.memo can be edited with any hard wired recipient and from lines. The class file, also included, is edited to change the header on the memo. All three must be in the directory ~/org/MEMO. I am using the sloppy approach of running LaTeX on the long Memo.tex file to which the current memo has been pre-pended. Only the topmost memo is printed. This approach works but it is currently a kluge, unpolished. The enhancements I have requested would make it possible to instantly fire off a memo about a specific product. Alan Davis products.cls>___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode - Carsten ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Need help exporting subtrees to html
On Dec 27, 2009, at 8:31 PM, Juan Reyero wrote: Hi Carsten, On Sun, Dec 27, 2009 at 7:35 PM, Carsten Dominik wrote: On Dec 27, 2009, at 5:34 PM, Juan Reyero wrote: I have written a function to export org-mode subtrees as jekyll posts, http://juanreyero.com/open/org-jekyll/ The idea is that any entry in an org-publish project that has a :blog: keyword and an :on: property with a timestamp should be exported to a _posts directory with the year-month-day-title.html that jekyll expects, with the properties as front-matter. I was very happy with it, until I realized that the levels of the headers in the exported file (h2, h3, etc) depend on the indentation of the subtree in the outline. I wanted to be able to add a :blog: subtree anywhere in my project's files, and get it always exported the same, regardless of where in the outline it is. Is there any reasonably simple way to overcome this problem? I am using: (org-narrow-to-subtree) (setq html (org-export-as-html nil nil nil 'string t nil)) Hi Juan, Try this: (outline-mark-subtree) (setq html (org-export-as-html nil nil nil 'string t nil)) Thanks for your answer. I've tried it, but now it exports the whole buffer, as if (outline-mark-subtree) didn't understand which subtree I am looking at. I am doing this from within an (org-map-entries). If I first narrow and then mark it doesn't work either: it complains of "Before first headline at position...". You are right, this does not work as I had hoped. What needs to be done is that the tree must be selected, and the region needs to be *active* when the export command is called. I am not quite sure right now how to do this in the middle of a Lisp program - Carsten I have updated the tests at http://github.com/juanre/org-jekyll to reflect the problem. Best, Juan -- http://juanreyero.com/ http://unarueda.com - Carsten ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Orgmode] Re: [PATCH] Log removal of deadline/scheduled dates
Hi Paul, very nice, thank you. One question: What is the purpose of +(created . "CREATED %t") ?? - Carsten On Dec 29, 2009, at 12:26 AM, Paul Holcomb wrote: Patch to record a note for removal of SCHEDULED or DEADLINE property. -- Paul Holcomb *pholcomb\@ cpoint net* GPG key fingerprint 2B62 05AE EE74 845A 705F D716 28C4 FE1C 088F CFAC ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Problem with export latex using v option
Hi Renger, this issue is now fixed, thanks. - Carsten On Dec 29, 2009, at 2:02 PM, Renger van Nieuwkoop wrote: Hi I tried to export to latex of an org file using C-c C-e v L (or l) but I get the message invalid-export-key. Am I doing something wrong? Thanks Renger ___ Renger van Nieuwkoop Ecoplan - Thunstrasse 22 3005 Bern Switzerland Tel. +41 31 356 61 61 Mail: ren...@ecoplan.ch ___ ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode - Carsten ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode