From: Ryan Thompson <rct@thompsonclan.org>
To: Stefano Zacchiroli <zack@upsilon.cc>
Cc: emacs-orgmode@gnu.org
Subject: Re: org-remember-AFTER-finalize-hook , anyone?
Date: Sun, 28 Mar 2010 14:12:25 -0700 [thread overview]
Message-ID: <2a4ba2fd1003281412u615ce90do49748a7cc49e6769@mail.gmail.com> (raw)
In-Reply-To: <20100130234501.GA16336@usha.takhisis.invalid>
Ok, I finally recreated my setup. There's some bug in emacs daemon
where if no X frame currently exist and you use emacsclient -e
'(some-function-that-creates-a-frame)', then the frame that is created
will immediately be deleted when the command terminates. (Note: this
is only a problem with an emacs that wasn't started originally with an
X frame, i.e. either emacs -nw or emacs --daemon) To fix this, the key
is to use emacsclient -c to create a new frame, and then use -e to
eval some code that creates the frame you actually want, and then
deletes the first frame. Here's my script:
#!/bin/sh
exec emacsclient -c -e '
(let ((sacframe (selected-frame))) ; the frame create by the -c
options is the "sacrificial frame"
(make-frame-invisible sacframe t)
(remember-other-frame)
(delete-frame sacframe t))
'
Put that in a script in your $PATH somewhere and add a keybinding
using e.g. xbindkeys. Personally, I use Windows Key + R.
On Sat, Jan 30, 2010 at 4:45 PM, Stefano Zacchiroli <zack@upsilon.cc> wrote:
> On Sat, Jan 30, 2010 at 10:23:20AM -0800, Ryan Thompson wrote:
>> Ooh, I solved this problem before, but then I accidentally deleted all my
>> files. I have a backup, but I haven't gotten around to restoring everything
>> yet. I'll get back to you later.
>
> In the meantime, I've implemented a workaround, based on the following
> idea:
>
> (add-hook 'org-remember-mode-hook 'delete-other-windows)
> (defadvice org-remember-finalize (after delete-frame-at-end activate)
> "Delete frame at remember finalization"
> (delete-frame))
> (defadvice org-remember-kill (after delete-frame-at-end activate)
> "Delete frame at remember abort"
> (delete-frame))
>
> It works properly, but it assumes that org-remember is invoked only
> externally via org-protocol (i.e. if I invoke org-remember by hand I
> risk my frame).
>
> So I've conceived the following horror to constraint the effect to
> org-protocol invocation (yes, with a serious race condition involved):
>
> (add-hook 'org-remember-mode-hook 'delete-other-windows)
> (setq my-org-protocol-flag nil)
> (defadvice org-remember-finalize (after delete-frame-at-end activate)
> "Delete frame at remember finalization"
> (progn
> (if my-org-protocol-flag (delete-frame))
> (setq my-org-protocol-flag nil)))
> (defadvice org-remember-kill (after delete-frame-at-end activate)
> "Delete frame at remember abort"
> (progn
> (if my-org-protocol-flag (delete-frame))
> (setq my-org-protocol-flag nil)))
> (defadvice org-protocol-remember (before set-org-protocol-flag activate)
> (setq my-org-protocol-flag t))
>
> Any suggestions on how to achieve the same result in a more proper way
> will be appreciated ...
>
> Cheers.
>
> --
> Stefano Zacchiroli -o- PhD in Computer Science \ PostDoc @ Univ. Paris 7
> zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
> Dietro un grande uomo c'è ..| . |. Et ne m'en veux pas si je te tutoie
> sempre uno zaino ...........| ..: |.... Je dis tu à tous ceux que j'aime
>
>
> _______________________________________________
> 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
>
next prev parent reply other threads:[~2010-03-28 21:12 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-30 16:54 org-remember-AFTER-finalize-hook , anyone? Stefano Zacchiroli
2010-01-30 18:23 ` Ryan Thompson
2010-01-30 23:45 ` Stefano Zacchiroli
2010-03-28 21:12 ` Ryan Thompson [this message]
2010-03-28 21:13 ` Ryan Thompson
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2a4ba2fd1003281412u615ce90do49748a7cc49e6769@mail.gmail.com \
--to=rct@thompsonclan.org \
--cc=emacs-orgmode@gnu.org \
--cc=zack@upsilon.cc \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.