emacs-orgmode
[Top][All Lists]
Advanced

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

[Orgmode] Let tab do org-cycle only at special place.


From: Levin Du
Subject: [Orgmode] Let tab do org-cycle only at special place.
Date: Wed, 23 May 2007 17:56:52 +0800
User-agent: KMail/1.9.6

I've my busy tab key set to a super expand/indent function:

   (global-set-key "\t" 'ext-super-tab)

Currently in org-mode, tab is only doing indent in none headline/special 
place. I'd like to use tab only at the beginning of headline or buffer. So I 
put something like this in my org-conf.el :

(defun org-tab (&optional arg)
  "Do org-cycle only at the beginning of a headline, otherwise do
the job defined in global keymap."
  (interactive "P")
  (let* ((outline-regexp
          (if (and (org-mode-p) org-cycle-include-plain-lists)
              "\\(?:\\*+\\|\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) \\)"
            outline-regexp))
         (bob-special (and org-cycle-global-at-bob (bobp)
                           (not (looking-at outline-regexp)))))
    (if (or bob-special
            (eq arg t)
            (integerp arg)
            (org-at-table-p 'any)
            (looking-at outline-regexp))
        (org-cycle arg)
      (call-interactively (global-key-binding "\t")))))

(define-key org-mode-map [(tab)] 'org-tab)

Hope this is useful for someone else.

Levin




reply via email to

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