* multiple indirect buffers, and limiting to a drawer @ 2013-10-01 13:44 Matt Price 2013-10-01 17:19 ` Thorsten Jolitz ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Matt Price @ 2013-10-01 13:44 UTC (permalink / raw) To: Org Mode [-- Attachment #1: Type: text/plain, Size: 1480 bytes --] Hi, I am returning to my long-languishing idea of an "org writer's room" (https://github.com/titaniumbones/org-writers-room , see also gmail archives for a brief discussion about a year ago). Coming to terms with some of my own coding limitations(!), I want to keep this relatively simple -- just a 3-paneled interface that shows (1) in a narrow window on the left, an outline of the whole org-file, which I take to represent a major writing project (2) in the main window, a heading element in an indirect buffer (3) in the right-hand panel, I'd like to just show the properties drawer of the currently active heading. Can someone suggest the best way to create that third buffer (or more precisely, that second indirect buffer)? I guess I don't know the best way to limit to a drawer, nor do I really understand how to make multiple indirect buffers ( from what I can see, org-tree-to-indirect-buffer will only permit one indirect buffer at a time to be crate, which is fine, but which takes away the only tool I sort of understand). Another question: does emacs allow indirect buffers to have different modes than their parents If so, I would like to write some trivial minor modes that remap keybindings in each of the three windows, and .e.g I would like to prohibit full unfolding of the outline in the left-hand window if that's possible. Thanks as always! I'm attaching a screenshot but I guess I'm not sure if it will come through on the mailing list. Matt [-- Attachment #2: writers-room.jpg --] [-- Type: image/jpeg, Size: 59451 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: multiple indirect buffers, and limiting to a drawer 2013-10-01 13:44 multiple indirect buffers, and limiting to a drawer Matt Price @ 2013-10-01 17:19 ` Thorsten Jolitz 2013-10-02 10:13 ` Matt Price 2013-10-01 21:37 ` Myles English [not found] ` <87mwmskcyp.fsf@bobnewell.net> 2 siblings, 1 reply; 7+ messages in thread From: Thorsten Jolitz @ 2013-10-01 17:19 UTC (permalink / raw) To: emacs-orgmode Matt Price <moptop99@gmail.com> writes: Hi, > (1) in a narrow window on the left, an outline of the whole org-file, > which I take to represent a major writing project > > (2) in the main window, a heading element in an indirect buffer > > > (3) in the right-hand panel, I'd like to just show the properties > drawer of the currently active heading. > > > Can someone suggest the best way to create that third buffer (or more > precisely, that second indirect buffer)? I guess I don't know the > best way to limit to a drawer, nor do I really understand how to make > multiple indirect buffers ( from what I can see, > org-tree-to-indirect-buffer will only permit one indirect buffer at a > time to be crate, which is fine, but which takes away the only tool I > sort of understand). > > > Another question: does emacs allow indirect buffers to have different > modes than their parents If so, I would like to write some trivial > minor modes that remap keybindings in each of the three windows, and > .e.g I would like to prohibit full unfolding of the outline in the > left-hand window if that's possible. Much of this is possible with [[https://github.com/tj64/navi][navi-mode.el]] (see screencast on [[http://www.youtube.com/watch?v%3DII-xYw5VGFM:][youtube]]), although you won't have 3 buffers, just 2: the Org file and the associated *Navi-buffer*, but the latter is very flexibel: with one key commands you can switch rapidly between multiple views of your Org file, change the visibility of the Org buffer, and more 'remote-control' like stuff. Just to give you an example using Bernt Hansen org-mode.org tutorial: 1. M-s n -> fire up navi buffer showing level 1 headlines: ,---------------------------------------------------- | 19 matches for "^\* " in buffer: org-mode.org | 39:* Getting Started | 411:* Tasks and States | 566:* Adding New Tasks Quickly with Org Capture | 712:* Refiling Tasks ... `---------------------------------------------------- 2. move up and down with n an p, narrow and widen subtrees with r and w, change visibility of headline at point (whole buffer) with TAB (BACKTAB). use d to see the element at point in the Org-buffer, o (or s) to switch to it. use M-s M-s to switch back from Org-buffer to the navi-buffer. 3. type 2 or 3 to see headlines up to level 2 (3) ,-------------------------------------------------- | 122 matches for "^\*\*? " in buffer: org-mode.org | 39:* Getting Started | 42:** Org-Mode Setup | 130:** Organizing Your Life Into Org Files | 184:** Agenda Setup | 233:** Org File Structure | 291:** Key bindings | 411:* Tasks and States | 425:** TODO keywords | 510:** Fast Todo Selection | 533:** TODO state triggers `-------------------------------------------------- 4. type h to see all (currently) possible keyword-searches (and q to quit the help page) ,------------------------------------------------ | [KEY] : [SEARCH] | ================ | b : srcblock | x : time | I : inline-srcblock | W : srcname-w-name | M : multilineheader | Y : priority | T : target | R : radiotarget | D : drawer | S : timestamp | N : srcname | U : result | Z : result-w-name | O : options | P : propertydrawer | A : deadline | H : scheduled-time-hour `------------------------------------------------ 5. play around with the keyword searches, e.g. type b ,----------------------------------------------------- | 51:#+begin_src emacs-lisp :tangle no | 65:#+begin_src emacs-lisp :tangle yes :exports none | 86:#+begin_src emacs-lisp :tangle yes | 103:#+begin_src emacs-lisp :tangle yes | 190:#+begin_src emacs-lisp :tangle no `----------------------------------------------------- type S ,------------------------------------------------ | 2130: , SCHEDULED: <2009-05-18 Mon ++1w> | 3771: , DEADLINE: <2009-07-01 Wed +1m -0d> | 3843: , SCHEDULED: <2009-06-16 Tue +1w> | 4081: , DEADLINE: <2009-07-01 Wed +1m -0d> | 4265: , SCHEDULED: <2009-11-21 Sat .+7d/30d> `------------------------------------------------ and - for your use case - type P: ,---------------------------- | 43::PROPERTIES: | ::CUSTOM_ID: Setup | ::END: | 131::PROPERTIES: | ::CUSTOM_ID: OrgFiles | ::END: | 185::PROPERTIES: | ::CUSTOM_ID: AgendaSetup | ::END: `---------------------------- 6. finally, combine headline and keyword searches: type C-1 S ,------------------------------------------------ | 2100:* GTD stuff | 2130: , SCHEDULED: <2009-05-18 Mon ++1w> | 2397:* Archiving | 2490:* Publishing and Exporting | 3090:* Reminders | 3125:* Productivity Tools | 3771: , DEADLINE: <2009-07-01 Wed +1m -0d> | 3843: , SCHEDULED: <2009-06-16 Tue +1w> | 4081: , DEADLINE: <2009-07-01 Wed +1m -0d> | 4265: , SCHEDULED: <2009-11-21 Sat .+7d/30d> | 5031:* Things I Don't Use (Anymore) `------------------------------------------------ type C-3 P ,------------------------------------------- | 39:* Getting Started | 42:** Org-Mode Setup | 43::PROPERTIES: | ::CUSTOM_ID: Setup | ::END: | 130:** Organizing Your Life Into Org Files | 131::PROPERTIES: | ::CUSTOM_ID: OrgFiles | ::END: | 184:** Agenda Setup | 185::PROPERTIES: | ::CUSTOM_ID: AgendaSetup | ::END: `------------------------------------------- Although navigation inside the Org-modes buffers is quite convenient, its somehow even more convenient to have a splitted screen and switch to the read-only navi-buffer and use 1-key bindings for navigation, visibility changes, all kinds of buffer views, and even a kind of remote control for common copy, edit and search commands. -- cheers, Thorsten ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: multiple indirect buffers, and limiting to a drawer 2013-10-01 17:19 ` Thorsten Jolitz @ 2013-10-02 10:13 ` Matt Price 2013-10-02 11:19 ` Thorsten Jolitz 0 siblings, 1 reply; 7+ messages in thread From: Matt Price @ 2013-10-02 10:13 UTC (permalink / raw) To: Thorsten Jolitz; +Cc: Org Mode On Tue, Oct 1, 2013 at 1:19 PM, Thorsten Jolitz <tjolitz@gmail.com> wrote: > Matt Price <moptop99@gmail.com> writes: > > Hi, > >> (1) in a narrow window on the left, an outline of the whole org-file, >> which I take to represent a major writing project >> >> (2) in the main window, a heading element in an indirect buffer >> >> >> (3) in the right-hand panel, I'd like to just show the properties >> drawer of the currently active heading. >> >> >> Can someone suggest the best way to create that third buffer (or more >> precisely, that second indirect buffer)? I guess I don't know the >> best way to limit to a drawer, nor do I really understand how to make >> multiple indirect buffers ( from what I can see, >> org-tree-to-indirect-buffer will only permit one indirect buffer at a >> time to be crate, which is fine, but which takes away the only tool I >> sort of understand). >> >> >> Another question: does emacs allow indirect buffers to have different >> modes than their parents If so, I would like to write some trivial >> minor modes that remap keybindings in each of the three windows, and >> .e.g I would like to prohibit full unfolding of the outline in the >> left-hand window if that's possible. > > Much of this is possible with > [[https://github.com/tj64/navi][navi-mode.el]] (see screencast on > [[http://www.youtube.com/watch?v%3DII-xYw5VGFM:][youtube]]), although > you won't have 3 buffers, just 2: the Org file and the associated > *Navi-buffer*, but the latter is very flexibel: with one key commands > you can switch rapidly between multiple views of your Org file, change > the visibility of the Org buffer, and more 'remote-control' like stuff. > > Just to give you an example using Bernt Hansen org-mode.org tutorial: > > 1. M-s n -> fire up navi buffer showing level 1 headlines: > > ,---------------------------------------------------- > | 19 matches for "^\* " in buffer: org-mode.org > | 39:* Getting Started > | 411:* Tasks and States > | 566:* Adding New Tasks Quickly with Org Capture > | 712:* Refiling Tasks ... > `---------------------------------------------------- > > 2. move up and down with n an p, narrow and widen subtrees with r and w, > change visibility of headline at point (whole buffer) with TAB (BACKTAB). > use d to see the element at point in the Org-buffer, o (or s) to switch to > it. use M-s M-s to switch back from Org-buffer to the navi-buffer. > > 3. type 2 or 3 to see headlines up to level 2 (3) > > ,-------------------------------------------------- > | 122 matches for "^\*\*? " in buffer: org-mode.org > | 39:* Getting Started > | 42:** Org-Mode Setup > | 130:** Organizing Your Life Into Org Files > | 184:** Agenda Setup > | 233:** Org File Structure > | 291:** Key bindings > | 411:* Tasks and States > | 425:** TODO keywords > | 510:** Fast Todo Selection > | 533:** TODO state triggers > `-------------------------------------------------- > > 4. type h to see all (currently) possible keyword-searches (and q to quit the > help page) > > ,------------------------------------------------ > | [KEY] : [SEARCH] > | ================ > | b : srcblock > | x : time > | I : inline-srcblock > | W : srcname-w-name > | M : multilineheader > | Y : priority > | T : target > | R : radiotarget > | D : drawer > | S : timestamp > | N : srcname > | U : result > | Z : result-w-name > | O : options > | P : propertydrawer > | A : deadline > | H : scheduled-time-hour > `------------------------------------------------ > > 5. play around with the keyword searches, e.g. type b > > ,----------------------------------------------------- > | 51:#+begin_src emacs-lisp :tangle no > | 65:#+begin_src emacs-lisp :tangle yes :exports none > | 86:#+begin_src emacs-lisp :tangle yes > | 103:#+begin_src emacs-lisp :tangle yes > | 190:#+begin_src emacs-lisp :tangle no > `----------------------------------------------------- > > type S > > ,------------------------------------------------ > | 2130: , SCHEDULED: <2009-05-18 Mon ++1w> > | 3771: , DEADLINE: <2009-07-01 Wed +1m -0d> > | 3843: , SCHEDULED: <2009-06-16 Tue +1w> > | 4081: , DEADLINE: <2009-07-01 Wed +1m -0d> > | 4265: , SCHEDULED: <2009-11-21 Sat .+7d/30d> > `------------------------------------------------ > > and - for your use case - type P: > > ,---------------------------- > | 43::PROPERTIES: > | ::CUSTOM_ID: Setup > | ::END: > | 131::PROPERTIES: > | ::CUSTOM_ID: OrgFiles > | ::END: > | 185::PROPERTIES: > | ::CUSTOM_ID: AgendaSetup > | ::END: > `---------------------------- > > 6. finally, combine headline and keyword searches: > > type C-1 S > > ,------------------------------------------------ > | 2100:* GTD stuff > | 2130: , SCHEDULED: <2009-05-18 Mon ++1w> > | 2397:* Archiving > | 2490:* Publishing and Exporting > | 3090:* Reminders > | 3125:* Productivity Tools > | 3771: , DEADLINE: <2009-07-01 Wed +1m -0d> > | 3843: , SCHEDULED: <2009-06-16 Tue +1w> > | 4081: , DEADLINE: <2009-07-01 Wed +1m -0d> > | 4265: , SCHEDULED: <2009-11-21 Sat .+7d/30d> > | 5031:* Things I Don't Use (Anymore) > `------------------------------------------------ > > type C-3 P > > ,------------------------------------------- > | 39:* Getting Started > | 42:** Org-Mode Setup > | 43::PROPERTIES: > | ::CUSTOM_ID: Setup > | ::END: > | 130:** Organizing Your Life Into Org Files > | 131::PROPERTIES: > | ::CUSTOM_ID: OrgFiles > | ::END: > | 184:** Agenda Setup > | 185::PROPERTIES: > | ::CUSTOM_ID: AgendaSetup > | ::END: > `------------------------------------------- > > Although navigation inside the Org-modes buffers is quite convenient, its > somehow even more convenient to have a splitted screen and switch to the > read-only navi-buffer and use 1-key bindings for navigation, visibility > changes, all kinds of buffer views, and even a kind of remote control for > common copy, edit and search commands. > Wow, that is very cool. I had never seen navi-mode before. I am looking at it and hoping I might be able to modify navi-narrow-to-subtree in a way that allows me to add a third window which will contain an indirect buffer, itself narrowed to the properties drawer for the current headline. It seems like that might be possible? I would need to figure out how navi-mode manages the window layouts, which I haven't looked at yet. Thanks veyr much. Matt > -- > cheers, > Thorsten > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: multiple indirect buffers, and limiting to a drawer 2013-10-02 10:13 ` Matt Price @ 2013-10-02 11:19 ` Thorsten Jolitz 0 siblings, 0 replies; 7+ messages in thread From: Thorsten Jolitz @ 2013-10-02 11:19 UTC (permalink / raw) To: emacs-orgmode Matt Price <moptop99@gmail.com> writes: >> Although navigation inside the Org-modes buffers is quite convenient, its >> somehow even more convenient to have a splitted screen and switch to the >> read-only navi-buffer and use 1-key bindings for navigation, visibility >> changes, all kinds of buffer views, and even a kind of remote control for >> common copy, edit and search commands. >> > > Wow, that is very cool. I had never seen navi-mode before. I am > looking at it and hoping I might be able to modify > navi-narrow-to-subtree in a way that allows me to add a third window > which will contain an indirect buffer, itself narrowed to the > properties drawer for the current headline. It seems like that might > be possible? I would need to figure out how navi-mode manages the > window layouts, which I haven't looked at yet. navi-mode only sets "twin-markers" in the code/org buffer and the navi-buffer for quick buffer-switching. Its based on occur (i.e. replace.el), and there I find something like: #+begin_src emacs-lisp (win (or (get-buffer-window buf) (display-buffer buf '(nil (inhibit-same-window . t) (inhibit-switch-frame . t))))) #+end_src and thats how its behaves: navi-buffer is not displayed in another frame, and not in the same window as the code/org buffer. maybe my (constant) gnus window config (stolen somewhere) is helpful for you? #+begin_src emacs-lisp ; 3 part window for Gnus (gnus-add-configuration '(article (horizontal 1.0 (vertical 65 (group 1.0) ) (vertical 1.0 (summary 0.15 point) (article 1.0) )))) (gnus-add-configuration '(summary (horizontal 1.0 (vertical 65 (group 1.0) ) (vertical 1.0 (summary 1.0 point) )))) #+end_src `gnus-add-configuration' is defined in gnus-win.el. Here is what C-1 a (in *Navi-buffer*) shows me about this library, I guess there are quite a lot of things to copy/reuse for you: ,------------------------------------------------------------------------- | 1:;;; gnus-win.el --- window configuration functions for Gnus | 23:;;; Commentary: | 25:;;; Code: | 32:(defgroup gnus-windows nil | 36:(defcustom gnus-use-full-window t | 41:(defcustom gnus-window-min-width 2 | 46:(defcustom gnus-window-min-height 1 | 51:(defcustom gnus-always-force-window-configuration nil | 56:(defcustom gnus-use-frames-on-any-display nil | 64:(defvar gnus-buffer-configuration | 173:(defvar gnus-window-to-buffer | 197:(defcustom gnus-configure-windows-hook nil | 203:;;; Internal variables. | 205:(defvar gnus-current-window-configuration nil | 208:(defvar gnus-created-frames nil) | 209:(defvar gnus-window-frame-focus nil) | 211:(defun gnus-kill-gnus-frames () | 222:(defun gnus-add-configuration (conf) | 228:(defvar gnus-frame-list nil) | 230:(defun gnus-window-to-buffer-helper (obj) | 240:(defun gnus-configure-frame (split &optional window) | 358:(defvar gnus-frame-split-p nil) | 360:(defun gnus-configure-windows (setting &optional force) | 420:(defun gnus-delete-windows-in-gnusey-frames () | 438:(defun gnus-all-windows-visible-p (split) | 479:(defun gnus-window-top-edge (&optional window) | 483:(defun gnus-remove-some-windows () | 507: (defalias 'gnus-frames-on-display-list 'frames-on-display-list)) | 509: (defun gnus-frames-on-display-list () | 512: (defalias 'gnus-frames-on-display-list 'frame-list)))) | 514:(defun gnus-get-buffer-window (buffer &optional frame) | 527:;;; gnus-win.el ends here `------------------------------------------------------------------------- -- cheers, Thorsten ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: multiple indirect buffers, and limiting to a drawer 2013-10-01 13:44 multiple indirect buffers, and limiting to a drawer Matt Price 2013-10-01 17:19 ` Thorsten Jolitz @ 2013-10-01 21:37 ` Myles English 2013-10-02 9:54 ` Matt Price [not found] ` <87mwmskcyp.fsf@bobnewell.net> 2 siblings, 1 reply; 7+ messages in thread From: Myles English @ 2013-10-01 21:37 UTC (permalink / raw) To: Matt Price; +Cc: Org Mode Hi Matt, moptop99@gmail.com writes: > I am returning to my long-languishing idea of an "org writer's room" > (https://github.com/titaniumbones/org-writers-room , see also gmail > archives for a brief discussion about a year ago). Coming to terms > with some of my own coding limitations(!), I want to keep this > relatively simple -- just a 3-paneled interface that shows > > (1) in a narrow window on the left, an outline of the whole org-file, > which I take to represent a major writing project > > (2) in the main window, a heading element in an indirect buffer > > > (3) in the right-hand panel, I'd like to just show the properties > drawer of the currently active heading. > > > Can someone suggest the best way to create that third buffer (or more > precisely, that second indirect buffer)? I can't, but your description of a windowed layout sounds like workgroups ( https://github.com/tlh/workgroups.el ), may be you can reuse some code? Myles ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: multiple indirect buffers, and limiting to a drawer 2013-10-01 21:37 ` Myles English @ 2013-10-02 9:54 ` Matt Price 0 siblings, 0 replies; 7+ messages in thread From: Matt Price @ 2013-10-02 9:54 UTC (permalink / raw) To: Myles English; +Cc: Org Mode On Tue, Oct 1, 2013 at 5:37 PM, Myles English <mylesenglish@gmail.com> wrote: > > Hi Matt, > > moptop99@gmail.com writes: > >> (3) in the right-hand panel, I'd like to just show the properties >> drawer of the currently active heading. >> >> >> Can someone suggest the best way to create that third buffer (or more >> precisely, that second indirect buffer)? > > I can't, but your description of a windowed layout sounds like > workgroups ( https://github.com/tlh/workgroups.el ), may be you can > reuse some code? that looks interesting and certainly more sophisticateed than what I had put together, I'll check it out. > > Myles > > ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <87mwmskcyp.fsf@bobnewell.net>]
* Re: multiple indirect buffers, and limiting to a drawer [not found] ` <87mwmskcyp.fsf@bobnewell.net> @ 2013-10-02 9:50 ` Matt Price 0 siblings, 0 replies; 7+ messages in thread From: Matt Price @ 2013-10-02 9:50 UTC (permalink / raw) To: Bob Newell, Org Mode On Tue, Oct 1, 2013 at 3:28 PM, Bob Newell <bobnewell@bobnewell.net> wrote: > Aloha Matt, > > For some while I've been also working on my "writer-mode" for org-mode, > and run into similar problems. (However, I don't think I ever intend > writer-mode for general release; it will probably just remain something > I use myself.) > > I ran into similar problems, trying to emulate Scrivener and others. I > only seem to be able to figure out a thin nav panel on the left and a > bigger text panel on the right. I didn't get around the problem with > virtual buffers having the same modal properties as the main buffer. In > particular, buffer-local key bindings carry over from the index buffer > to the main buffer, which is A Royal Pain. This in particular is something I wish could be solved. Just reading the documentation it looks as though using "mike-indirect-buffer" instead of "clone-indirect-buffer" will permit one to set all the modal properties of the new buffer independently, though it may be frustrating to address the indirect bufffer in a function called from the first buffer (maybe not, though?). cf. http://www.gnu.org/software/emacs/manual/html_node/elisp/Indirect-Buffers.html and http://www.emacswiki.org/emacs/IndirectBuffers > > But perhaps I'm looking for different features than you are. Mainly, I > wanted a template system for scenes, characters, etc. (easy enough), a > lot of statistics, both global and per-story (not conceptually difficult > but took much time), and a good darkroom mode (much more of a challenge > than I expected, and seems to vary among environments/releases, etc.; > that is to say, most of the published emacs darkroom code didn't work > for me). > > I've also got some fluff such as typing sounds, word frequency analysis, > a name generator, etc. > > It's nothing special but I use it every day. However, I'm more than > willing to throw it over and use your code once it's developed! I'm sure > you're coding it much, much better and with concepts that are better > thought through. That sounds pretty great, actually. So, I would love to see what you have. > > A hui hou, > > -- > Bob Newell > Honolulu, Hawai`i lucky! ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-10-02 11:20 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-10-01 13:44 multiple indirect buffers, and limiting to a drawer Matt Price 2013-10-01 17:19 ` Thorsten Jolitz 2013-10-02 10:13 ` Matt Price 2013-10-02 11:19 ` Thorsten Jolitz 2013-10-01 21:37 ` Myles English 2013-10-02 9:54 ` Matt Price [not found] ` <87mwmskcyp.fsf@bobnewell.net> 2013-10-02 9:50 ` Matt Price
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).