[Top][All Lists]
[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