emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Alan E. Davis" <lngndvs@gmail.com>
To: emacs-orgmode Mailinglist <emacs-orgmode@gnu.org>
Subject: Re: A crummy little popup for org keybindings help
Date: Sun, 1 Mar 2009 19:50:57 +1000	[thread overview]
Message-ID: <7bef1f890903010150wc12a337q5fd3fd75c46c92cf@mail.gmail.com> (raw)
In-Reply-To: <7bef1f890902281446k7a292a2bvb77c1522e7fa382@mail.gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 5518 bytes --]

Will you forgive me for drifting off topic for a moment?  John Wiegley just
posted a reference to "unfuddle".  I admit I have been a bit befuddled for a
couple of hours, diving into some simple elisp.  I have no idea what
unfuddle is about, but I think I just experienced it.  Immediately after
seeing his message, I stumbled upon his "momentary.el".  Just the ticket,
because I was trying to use my crummy popup to popup a screen full of
remember templates; and that apparently cannot be done because of the
control characters in that string.

Momentary.el can do it.

Perhaps I should put this together into something more polished, and I now
think I can.  But I will share what I have done now for three screenfuls of
instantaneous popups.  Only the template popup is now done with
momentary.el.  It will be interesting if some of the keys displayed are
bindings for a more comprehensive bunch of little screens full of help
screens from the org-mode reference card.

There's more than one way to skin a cat.  This could be done either with a
properly designed event function or with my crummy interface as the first
screen.  The event function is far to be preferred, since my function is
really flakey when the cursor is at in importune place on the window.

Attached.

Alan



On Sun, Mar 1, 2009 at 8:46 AM, Alan E. Davis <lngndvs@gmail.com> wrote:

> Some time ago, the idea of an instant reference card was bantered about on
> the list.  I presented a file called org-help.org.  I have worked on it
> from time to time, and it's changed quite a bit.  My most recent idea is to
> have it available on a keystroke, completely folded, and each line would
> instantly display some of the most commonly used keys for that topic, then
> by opening that headline, a tree would be revealed with more detailed
> keybindings.  I've played with it, and it's helpful, and I'll make it
> available RSN, hoping others will find ways to make it more useful.  My
> final touch would be to incorporate a link for each topic to the relevant
> topics in the org-mode info manual.  What's missing is the convenience of
> info mode, of being able to stuff it away with "q" and call it up again at
> the same point.  That would be more convenient.  I'm unable to go forth on
> that part of the quest, because I haven't gotten my head around texinfo
> (yet?).
>
> Meanwhile, I remembered a little help popup I made to remember all my
> keybindings, long years ago.  Here's a quick popup to get a transient
> display of some keybindings above the current line.  I didn't understand how
> to wire it into org-mode-map's keybindings, so I bound it, for now, to
> \C-cp.  The beauty of this gem is to be able to type the keys right away,
> and they work.
>
> Please feel free to improve it.  Maybe another two or three of these would
> provide a person with his own frequently used keys.
>
> ;;;;;; org-popup-help
> ;;----------------
> ;; Org Popup Help
> ;;----------------------
> (defun org-popup-help ()
>   "Inserts a reminder of my org keybindings momentarily
> above the current line, until the next keystroke."
>   (interactive)
>   (save-excursion
>     (momentary-string-display
>      org-keys (save-excursion (beginning-of-line) (point))
>      nil "Type SPC or any command to erase help.")))
> ;;
>
> (defvar org-keys
>   (concat "   |
> \n"
>           "   |
> \n"
> ;;;
>       "  | Visibility Cycling               TAB    C-i \n"
>       "  | Motion                           C-c C-n/p / C-c C-f/b / C-c C-u
> / C-c C-j \n"
>       "  | Structure Editing                M-RET  /   M-L/R  /  M-S-L/R
> \n"
>       "  | Sorting                          C-c ^ \n"
>       "  | Converting to headlines/removing stars     C-c * \n"
>       "  | Checkboxes                       M-S-RET\n"
>       "  | Archiving [manual]               C-c C-x a \n"
>       "  | Filtering and Sparse Trees       C-c / \n"
>       "  | Links                            C-c l    /    C-c C-l \n"
>       "  | TODO Items                       M-S-RET         C-c C-t \n"
>       "  | Tags                             C-c C-q  /  C-c C-c  /  C-c
> \\n"
>       "  | Properties and Column View       C-c C-x p \n"
>       "  | Timestamps                       C-c .  /   C-c ! \n"
>       "  | *Schedule and Deadline*          C-c C-s  /  C-c C-d\n"
>       "  | Clocking time                    C-c C-x C-i  /  C-c C-x C-o \n"
>       "  | Relative time clock              C-c C-x .  /  C-c C-x - \n"
>       "  | Exporting and Publishing         C-c C-e \n"
>       "  | Attachments Dispatcher Commands:  C-c C-a \n"
> )
>   "*String displayed above current line by \\org-popup-help].")
>
> ;(define-key org-mode-map "p" 'org-popup-help)
> (global-set-key "\C-cp" 'org-popup-help)
> ;;;;;;;;;;;;;END org-popup-help.
>
> I'll provide it as a file as well, in case the tabs/spaces get blown away
> in the mail.
>
> Alan
> --
> Alan Davis
>
> It is undesirable to believe a proposition when
> there is no ground whatsoever for supposing it is true.
>     ---- Bertrand Russell
> They are ill discoverers that think there is no land, when they can see
> nothing but sea.
>     ----   Sir Francis Bacon
>
>


-- 
Alan Davis

"An inviscid theory of flow renders the screw useless, but the need for one
non-existent."                     ---Lord Raleigh (John William Strutt), or
else his son, who was also a scientist.

It is undesirable to believe a proposition when
there is no ground whatsoever for supposing it is true.
    ---- Bertrand Russell

[-- Attachment #1.2: Type: text/html, Size: 6530 bytes --]

[-- Attachment #2: org-popup-help.el --]
[-- Type: text/x-emacs-lisp, Size: 6007 bytes --]



(global-set-key "\C-cp" 'org-popup-help)
(defun org-popup-help ()
  "Inserts a reminder of my org keybindings momentarily 
above the current line, until the next keystroke."
  (interactive)
  (save-excursion
    (momentary-string-display
     org-keys (save-excursion (beginning-of-line) (point))
     nil "Type SPC or any command to erase help.")))                      ;;

(defvar org-keys
  (concat "  |                                                             \n"
          "  |                                                             \n"
;;;
          "  | Visibility Cycling               TAB    C-i \n"
          "  | Motion                           C-c C-n/p / C-c C-f/b / C-c C-u / C-c C-j \n"
          "  | Structure Editing                M-RET  /   M-L/R  /  M-S-L/R \n"
          "  | Sorting                          C-c ^ \n"
          "  | Converting to headlines/removing stars     C-c * \n"
          "  | Checkboxes                       M-S-RET\n"
          "  | Archiving [manual]               C-c C-x a \n"
          "  | Filtering and Sparse Trees       C-c / \n"
          "  | Links                            C-c l    /    C-c C-l \n"
          "  | TODO Items                       M-S-RET         C-c C-t \n"
          "  | Tags                             C-c C-q  /  C-c C-c  /  C-c \\n"
          "  | Properties and Column View       C-c C-x p \n"
          "  | Timestamps                       C-c .  /   C-c ! \n"
          "  | *Schedule and Deadline*          C-c C-s  /  C-c C-d\n"
          "  | Clocking time                    C-c C-x C-i  /  C-c C-x C-o \n"
          "  | Relative time clock              C-c C-x .  /  C-c C-x - \n"
          "  | Exporting and Publishing         C-c C-e \n"
          "  | Attachments Dispatcher Commands:  C-c C-a \n"
	  "  |  `%'-escapes for org-remember-templates: C-c 8 \n"
	  )
  "*String displayed above current line by \\org-popup-help].")


(global-set-key "\C-c9" 'org-agenda-popup-help)
(defun org-agenda-popup-help ()
  "Inserts a reminder of my org keybindings momentarily 
above the current line, until the next keystroke."
  (interactive)
  (save-excursion
    (momentary-string-display
     org-agenda-keys (save-excursion (beginning-of-line) (point))
     nil "Type SPC or any command to erase help.")))                      ;;


(defvar org-agenda-keys
  (concat " |                                                             \n"
          " |                                                             \n"
;;;
	  " |Agenda Dispatcher (suggested)                      C-c a\n"
	  " |  compile agenda for the current week           C-c a a \n"
	  " |  compile global TODO list                      C-c a t \n"
	  " |  compile TODO list for specific keyword        C-c a T \n"
	  " |  match tags, TODO kwds, properties             C-c a m \n"
	  " |  match only in TODO entries                    C-c a M \n"
	  " |  show timeline view of current org file        C-c a L \n"
	  " |                                      (time-sorted view)\n"
	  " |  match boolean expression                       C-c a s\n"
	  " |  configure custom commands                      C-c a C\n"
	  " |  search agenda files for regular expression     C-c a /\n"
	  " |  find stuck projects                  C-c a # ; C-c a !\n"
	  " |  restrict to current buffer    C-c a < (then character)\n"
	  " |  agenda for date at cursor                     C-c C-o \n")
  "*String displayed above current line by \\org-popup-help].")



(defvar org-template-popup
  (concat " |                                                             \n"
          " |                                                             \n"
;
	  " | \%^{prompt}  prompt the user for a string and replace this sequence with it. \n"
	  " |             \%^{prompt|default|completion2|completion3...} \n"
	  " | \%a          annotation, normally the link created with `org-store-link' \n"
	  " | \%A          like `%a', but prompt for the description part \n"
	  " | \%i          the region when remember is called with C-u. \n"
	  " | \%t, \%T      time stamp,  (date only | date and time) \n"
	  " | \%u, \%U      inactive time stamps,  (date only | date and time)  \n"
	  " | \%^t,\%^u,\%^T,\%^U   prompt for date.  (idea:  `%^{Birthday}t') \n"
	  " | \%n          user name (taken from `user-full-name') \n"
	  " | \%c          Current kill ring head. \n"
	  " | \%x          Content of the X clipboard. \n"
	  " | \%^C         Interactive selection of which kill or clip to use. \n"
	  " | \%^L         Like `%^C',  insert as link. \n"
	  " | \%^g         prompt for tags, with completion on tags in target file. \n"
	  " | \%k          title of currently clocked task \n"
	  " | \%K          link to currently clocked task \n"
	  " | \%^G         prompt for tags, with completion on tags fr all agenda files. \n"
	  " | \%^{prop}p   Prompt the user for a value for property `prop' \n"
	  " | \%:keyword   specific information for certain link types \n"
	  " | \%[pathname] insert the contents of the file given by `pathname' \n"
	  " | \%(sexp)     evaluate elisp `(sexp)' and replace with the result \n"
	  " | \%!          skip 'C-c C-c': immediately store note  after completing template \n"
	  " | \%&          jump to target location immediately after storing note  \n")
  "*String displayed above current line by org-template-help.")
 


(global-set-key "\C-c8" 'display-templates-popup)  
(defun display-templates-popup ()
  "Doc String"
  (interactive)
 (with-output-to-momentary-buffer "*sample*"
     (princ org-template-popup)))

;(define-key org-mode-map "p" 'org-popup-help)




;   (function
;    (lambda (event)
;      (if (event-matches-key-specifier-p event ?q)
;          (message "Happy days are here again!"))))) 
;




















;(define-key org-mode-map "p" 'org-popup-help)
(global-set-key "\C-cp" 'org-popup-help)
(global-set-key "\C-c9" 'org-agenda-popup-help)
(global-set-key "\C-c8" 'org-remember-template-popup-help)

[-- Attachment #3: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

  reply	other threads:[~2009-03-01  9:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-28 22:46 Alan E. Davis
2009-03-01  9:50 ` Alan E. Davis [this message]
2009-03-02  0:30 ` Daniel Clemente

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7bef1f890903010150wc12a337q5fd3fd75c46c92cf@mail.gmail.com \
    --to=lngndvs@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).