From: Tassilo Horn <tassilo@member.fsf.org>
To: Carsten Dominik <dominik@science.uva.nl>
Cc: emacs-orgmode@gnu.org
Subject: Re: Using orgstruct-mode to structure source code
Date: Wed, 03 Sep 2008 12:20:32 +0200 [thread overview]
Message-ID: <87k5dtfs3z.fsf@thinkpad.tsdh.de> (raw)
In-Reply-To: <A08442C1-E228-4EEF-9C4B-A63B89583C86@uva.nl> (Carsten Dominik's message of "Wed, 3 Sep 2008 11:36:59 +0200")
Carsten Dominik <dominik@science.uva.nl> writes:
Hi Carsten,
> "?..." is not a correct regular expression in Emacs. You are using
> wildcard synax, it seems.
No, I used (concat comment-starter "?...") to make the comment starter
optional. But that's not fully correct. In elisp the comment starter
may be there multiple times. So now I go with this:
--8<---------------cut here---------------start------------->8---
(defun org-context-p (&rest contexts)
(let* ((pos (point))
(comment-starter (replace-regexp-in-string "[ ]+$" "" (or comment-start "")))
(regexp-start (if (string= "" comment-start)
""
(concat comment-start "*"))))
(goto-char (point-at-bol))
(let ((ret (prog1
(or (and (memq 'table contexts)
(looking-at (concat regexp-start "[ \t]*|")))
(and (memq 'headline contexts)
(looking-at (concat regexp-start "\\*+")))
(and (memq 'item contexts)
(looking-at (concat regexp-start
"[ \t]*\\([-+*] \\|[0-9]+[.)] \\)"))))
(goto-char pos))))
(message "org-context-p with regexp-start = %s ==> %s" regexp-start ret))))
--8<---------------cut here---------------end--------------->8---
Here's a short elisp test file:
--8<---------------cut here---------------start------------->8---
;;* First Headline ; org-context-p ==> t, no visible action
; org-context-p ==> nil, no visible action
(defun foo ()
nil) ; org-context-p ==> nil, TAB deletes indentation!
; org-context-p ==> nil, TAB indents to nil's column
;;** Level2 ; org-context-p ==> t, TAB indents heading to nil's column
(+ 1 2 3)
;;** Another Level2
(- 1 1)
;;*** Three
;;* Second part
(progn
(list 1 2 3) ; org-context-p ==> nil, TAB deletes indentation!
(* 1 2 3)) ; org-context-p ==> nil, TAB deletes indentation!
;;* Third part ; org-context-p ==> t, TAB indents heading to
; column of (* 1 2 3)
--8<---------------cut here---------------end--------------->8---
Behind the lines I've written what my redefinition of `org-context-p'
returns and what TAB does (*without* these comments). As you can see
`org-context-p' seems to work correctly, but TAB doesn't cycle through
the visibility states but instead breakes indentation.
And if I invoke `M-x org-cycle' on a headline nothing happens. As it
seems, `org-context-p' is not the only function which has to be adapted
to do the right thing if headlines are inside comments.
> If you want to allow extra characters # and ; at the begin of the line, try
> something like
>
> "[;#]*..."
Yes, see the code above.
> I am not sure if this will work, in particular if it will make
> structure editing work.
Sadly, it's not that easy.
> Give it a try and send us a report, ok?
Done!
Bye,
Tassilo
next prev parent reply other threads:[~2008-09-03 10:22 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-03 8:32 Using orgstruct-mode to structure source code Tassilo Horn
2008-09-03 9:36 ` Carsten Dominik
2008-09-03 10:20 ` Tassilo Horn [this message]
2008-09-03 14:39 ` Eric Schulte
2008-09-03 15:39 ` Tassilo Horn
2008-09-05 7:15 ` Carsten Dominik
2008-09-05 8:02 ` Tassilo Horn
2008-09-05 9:07 ` Carsten Dominik
2008-09-05 9:41 ` Tassilo Horn
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=87k5dtfs3z.fsf@thinkpad.tsdh.de \
--to=tassilo@member.fsf.org \
--cc=dominik@science.uva.nl \
--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).