emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Carsten Dominik <carsten.dominik@gmail.com>
To: Dan Davison <davison@stats.ox.ac.uk>
Cc: emacs org-mode mailing list <emacs-orgmode@gnu.org>
Subject: Re: outline-minor-mode and code editing / export
Date: Tue, 9 Jun 2009 19:29:05 +0200	[thread overview]
Message-ID: <198870E0-3A0D-4A2A-A4E9-4546E542A0CB@gmail.com> (raw)
In-Reply-To: <878wk1mtho.fsf@stats.ox.ac.uk>


On Jun 9, 2009, at 3:22 PM, Dan Davison wrote:
>
>>
>>>
>>> Dan
>>>
>>> * Btw, a trivial thing, but I wonder if it would be appropriate to
>>> rename
>>> org-exit-edit-mode as something like org-edit-src-mode; it now has  
>>> two
>>> keybindings only one of which is to do with exiting.
>>
>> I don't understand this point.  Please try again :-)
>
> No problem. We currently have this in org-src.el:
>
> (define-minor-mode org-exit-edit-mode
>  "Minor mode installing a single key binding, \"C-c '\" to exit  
> special edit.")
>
> However, the scope of that minor mode has now expanded, and as well as
> the docstring being out of date, its name is misleading, as it is now
> concerned with more than just *exit* (saving as well).
>
> What I propose is that we rename org-exit-edit-mode as org-src-mode,  
> and
> that that minor mode is turned on when editing source blocks with C- 
> c ',
> and when processing with htmlize.

I have applied this patch, thanks - still looking at the other one...

- Carsten

>  Because of the way you named the hook
> you just created, the minor mode would automatically inherit it as its
> minor mode hook. I think this would logically tie together your recent
> changes (expansion of functionality in the edit buffer, and addition  
> of
> org-src-mode-hook), and would leave the door open for future additions
> to org-src-mode.
>
> I've quickly made these changes, and tested that the minor mode hook  
> had
> the desired effect (for me) on export and source code editing.  
> Here's my
> patch that does what I propose.
>
> Dan
>
> diff --git a/lisp/org-exp.el b/lisp/org-exp.el
> index 4e98bb9..b8fb201 100644
> --- a/lisp/org-exp.el
> +++ b/lisp/org-exp.el
> @@ -2219,7 +2219,7 @@ INDENT was the original indentation of the  
> block."
> 				(funcall mode)
> 			      (fundamental-mode))
> 			    (font-lock-fontify-buffer)
> -			    (run-hooks 'org-src-mode-hook)
> +			    (org-src-mode)
> 			    (set-buffer-modified-p nil)
> 			    (org-export-htmlize-region-for-paste
> 			     (point-min) (point-max))))
> diff --git a/lisp/org-src.el b/lisp/org-src.el
> index 401c628..524f6d6 100644
> --- a/lisp/org-src.el
> +++ b/lisp/org-src.el
> @@ -116,9 +116,9 @@ This is needed for font-lock setup.")
>
> ;;; Editing source examples
>
> -(defvar org-exit-edit-mode-map (make-sparse-keymap))
> -(define-key org-exit-edit-mode-map "\C-c'" 'org-edit-src-exit)
> -(define-key org-exit-edit-mode-map "\C-x\C-s" 'org-edit-src-save)
> +(defvar org-src-mode-map (make-sparse-keymap))
> +(define-key org-src-mode-map "\C-c'" 'org-edit-src-exit)
> +(define-key org-src-mode-map "\C-x\C-s" 'org-edit-src-save)
> (defvar org-edit-src-force-single-line nil)
> (defvar org-edit-src-from-org-mode nil)
> (defvar org-edit-src-picture nil)
> @@ -127,8 +127,14 @@ This is needed for font-lock setup.")
> (defvar org-edit-src-overlay nil)
> (defvar org-edit-src-nindent nil)
>
> -(define-minor-mode org-exit-edit-mode
> -  "Minor mode installing a single key binding, \"C-c '\" to exit  
> special edit.")
> +(define-minor-mode org-src-mode
> +  "Minor mode for language major mode buffers generated by org.
> +This minor mode is turned on in two situations:
> +- when editing a source code snippet with \"C-c '\".
> +- When formatting a source code snippet for export with htmlize.
> +There is a mode hook, and keybindings for org-edit-src-exit and
> +org-edit-src-save
> +")
>
> (defun org-edit-src-code ()
>   "Edit the source code example at point.
> @@ -187,7 +193,7 @@ the edited version."
> 	(org-do-remove-indentation)
> 	(let ((org-inhibit-startup t))
> 	  (funcall lang-f)
> -	  (run-hooks 'org-src-mode-hook))
> +	  (org-src-mode))
> 	(set (make-local-variable 'org-edit-src-force-single-line) single)
> 	(set (make-local-variable 'org-edit-src-from-org-mode) org-mode-p)
> 	(when lfmt
> @@ -197,7 +203,6 @@ the edited version."
> 	  (while (re-search-forward "^," nil t)
> 	    (replace-match "")))
> 	(goto-line (1+ (- line begline)))
> -	(org-exit-edit-mode)
> 	(org-set-local 'org-edit-src-beg-marker beg)
> 	(org-set-local 'org-edit-src-end-marker end)
> 	(org-set-local 'org-edit-src-overlay ovl)
>
>
>
>
>>
>> - Carsten
>>
>>
>>>
>>>
>>>>
>>>> - Carsten
>>>>
>>>> On Jun 6, 2009, at 9:32 PM, Dan Davison wrote:
>>>>
>>>>> In turn on outline-minor-mode in the language major modes that I
>>>>> use, so
>>>>> that code starts up folded, via a call to org-content that is made
>>>>> in my
>>>>> major-mode hook. I'm finding that this has two undesirable
>>>>> consequences
>>>>> for org-mode, as follows. I have also described a possible  
>>>>> solution,
>>>>> as
>>>>> implemented by the patch at the end.
>>>>>
>>>>> 1. The code appears folded on HTML export
>>>>>
>>>>> solution: add this line to org-export-format-source-code-or- 
>>>>> example
>>>>> (if (fboundp 'show-all) (show-all))
>>>>>
>>>>> 2. org-edit-src-save does not remember the visibility state, so  
>>>>> C-x
>>>>> C-s
>>>>> causes a jump to a different visibility state
>>>>>
>>>>> solution: save the value of org-cycle-global-status and, when the
>>>>> edit buffer is re-entered, call one of {org-overview,
>>>>> org-content,show-all} accordingly
>>>>>
>>>>> Dan
>>>>>
>>>>> p.s. Carsten: the first hunk in the second diff (org.el) refers  
>>>>> to a
>>>>> patch that I submitted a few days ago and which you said had been
>>>>> applied. http://article.gmane.org/gmane.emacs.orgmode/14154
>>>>> However, I
>>>>> believe it is not in the current git. Apologies if I have got  
>>>>> (git)
>>>>> confused, but if not I do believe there is still a need for it  
>>>>> or an
>>>>> equivalent solution: without this change I go to end of edit  
>>>>> buffer,
>>>>> hit
>>>>> return a few times, and then C-x C-s fails (leaves me in org
>>>>> buffer).
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> diff --git a/lisp/org-exp.el b/lisp/org-exp.el
>>>>> index 0dcd956..5f0ad88 100644
>>>>> --- a/lisp/org-exp.el
>>>>> +++ b/lisp/org-exp.el
>>>>> @@ -2215,7 +2215,6 @@ INDENT was the original indentation of the
>>>>> block."
>>>>> 			    (if (functionp mode)
>>>>> 				(funcall mode)
>>>>> 			      (fundamental-mode))
>>>>> -			    (if (fboundp 'show-all) (show-all))
>>>>> 			    (font-lock-fontify-buffer)
>>>>> 			    (set-buffer-modified-p nil)
>>>>> 			    (org-export-htmlize-region-for-paste
>>>>> diff --git a/lisp/org.el b/lisp/org.el
>>>>> index d124b1a..1eb5e74 100644
>>>>> --- a/lisp/org.el
>>>>> +++ b/lisp/org.el
>>>>> @@ -6875,9 +6875,7 @@ the language, a switch telling of the  
>>>>> content
>>>>> should be in a single line."
>>>>> 	code)
>>>>> (goto-char (point-min))
>>>>> (if (looking-at "[ \t\n]*\n") (replace-match ""))
>>>>> -  (when (re-search-forward "\n[ \t\n]*\\'" nil t)
>>>>> -    (replace-match "")
>>>>> -    (setq line (min line (org-current-line))))
>>>>> +  (if (re-search-forward "\n[ \t\n]*\\'" nil t) (replace-match  
>>>>> ""))
>>>>> (when (org-bound-and-true-p org-edit-src-force-single-line)
>>>>>   (goto-char (point-min))
>>>>>   (while (re-search-forward "\n" nil t)
>>>>> @@ -6916,18 +6914,11 @@ the language, a switch telling of the
>>>>> content should be in a single line."
>>>>> (defun org-edit-src-save ()
>>>>> "Save parent buffer with current state source-code buffer."
>>>>> (interactive)
>>>>> -  (let ((p (point)) (m (mark))
>>>>> -       (visibility org-cycle-global-status) msg)
>>>>> +  (let ((p (point)) (m (mark)) msg)
>>>>>   (org-edit-src-exit)
>>>>>   (save-buffer)
>>>>>   (setq msg (current-message))
>>>>>   (org-edit-src-code)
>>>>> -    (when visibility
>>>>> -      (setq org-cycle-global-status visibility)
>>>>> -      (cond
>>>>> -       ((equal org-cycle-global-status 'overview) (org-overview))
>>>>> -       ((equal org-cycle-global-status 'contents) (org-content))
>>>>> -       ((equal org-cycle-global-status 'all) (show-all))))
>>>>>   (push-mark m 'nomessage)
>>>>>   (goto-char (min p (point-max)))
>>>>>   (message (or msg ""))))
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Emacs-orgmode mailing list
>>>>> Remember: use `Reply All' to send replies to the list.
>>>>> Emacs-orgmode@gnu.org
>>>>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Emacs-orgmode mailing list
>>>> Remember: use `Reply All' to send replies to the list.
>>>> Emacs-orgmode@gnu.org
>>>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>>
>>
>>
>> _______________________________________________
>> Emacs-orgmode mailing list
>> Remember: use `Reply All' to send replies to the list.
>> Emacs-orgmode@gnu.org
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

      reply	other threads:[~2009-06-09 17:29 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-06 19:32 outline-minor-mode and code editing / export Dan Davison
2009-06-06 19:45 ` Dan Davison
2009-06-07 15:56 ` Carsten Dominik
2009-06-07 17:19   ` Dan Davison
2009-06-08  6:54     ` Carsten Dominik
2009-06-09 13:22       ` Dan Davison
2009-06-09 17:29         ` Carsten Dominik [this message]

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=198870E0-3A0D-4A2A-A4E9-4546E542A0CB@gmail.com \
    --to=carsten.dominik@gmail.com \
    --cc=davison@stats.ox.ac.uk \
    --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).