emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] using org-mode and screen


From: Rick Moynihan
Subject: Re: [Orgmode] using org-mode and screen
Date: Tue, 05 Feb 2008 10:24:10 +0000
User-agent: Thunderbird 2.0.0.9 (X11/20071031)

If you're using gnu screen primarily for it's detach capability then you may want to consider 'dtach', which is pretty much just the feature of screen. Consequently it has less keybindings etc, and is more compatible with various programs. I've not really used it with emacs, but you might consider it unless you use screens other features.

R.

Andrew Hyatt wrote:
Hi everyone,
I use org-mode religiously these days.  I blogged about my use here (
http://technical-dresese.blogspot.com/2007/08/org-mode.html) (please excuse
the fact that when I wrote this I didn't know about the existing org-mode
functionality to jump to the current clock).

I generally have a problem of integrating the work I do in the shell with
the tasks in org-mode.   Plus, I often need access to the shells at home I
started from work.  I thought I'd combine these problems into a little
org-mode extension that ties screen and org-mode together, via ansi-term.

For these to work, you have to load ansi-term, which my hack is based on.

If there's enough interest, I'll make a real .el file out of this.

The general idea is that you start a task in which all the work will take
place in a shell.  This usually is not a leaf-task for me, but usually the
parent of a leaf task.  From a task in your org-file, M-x ash-org-screen
will prompt for the name of a session.  Give it a name, and it will insert a
link.  Open the link at any time to go the screen session containing your
work!

It works pretty well for me.  The only problem is that I often run emacs in
a screen session itself, and I can never get scrolling to work right in
screen-in-screen.

(defun ash-org-screen-buffer-name (name)

  "Returns the buffer name corresponding to the screen name given."

  (concat "*screen " name "*"))



(defun ash-org-screen-helper (name arg)

  ;; Pick the name of the new buffer.

  (let ((term-ansi-buffer-name (generate-new-buffer-name
(ash-org-screen-buffer-name name))))
    (setq term-ansi-buffer-name

          (term-ansi-make-term term-ansi-buffer-name "/usr/bin/screen" nil

                               arg name))



    (set-buffer term-ansi-buffer-name)

    (term-mode)

    (term-char-mode)



    (term-set-escape-char ?\C-x)

    term-ansi-buffer-name))



(defun ash-org-screen (name)

  "Start a screen session with name"

  (interactive "MScreen name: ")



  (save-excursion

    (ash-org-screen-helper name "-S"))

  (insert-string (concat "[[screen:" name "]]")))

And don't forget to add ("screen" . "elisp:(ash-org-goto-screen \"%s\")") to
org-link-abbrev-alist.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]