emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* outline-minor-mode and code editing / export
@ 2009-06-06 19:32 Dan Davison
  2009-06-06 19:45 ` Dan Davison
  2009-06-07 15:56 ` Carsten Dominik
  0 siblings, 2 replies; 7+ messages in thread
From: Dan Davison @ 2009-06-06 19:32 UTC (permalink / raw)
  To: emacs org-mode mailing list

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 ""))))

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: outline-minor-mode and code editing / export
  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
  1 sibling, 0 replies; 7+ messages in thread
From: Dan Davison @ 2009-06-06 19:45 UTC (permalink / raw)
  To: emacs org-mode mailing list

Yes, well I definitely git confused in the sense that the patch I
just sent was the inverse of what I intended (i.e. substitute - for +
and vice versa in the original). The patch I meant to submit is


diff --git a/lisp/org-exp.el b/lisp/org-exp.el
index 5f0ad88..0dcd956 100644
--- a/lisp/org-exp.el
+++ b/lisp/org-exp.el
@@ -2215,6 +2215,7 @@ 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 1eb5e74..d124b1a 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -6875,7 +6875,9 @@ 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 ""))
-  (if (re-search-forward "\n[ \t\n]*\\'" nil t) (replace-match ""))
+  (when (re-search-forward "\n[ \t\n]*\\'" nil t)
+    (replace-match "")
+    (setq line (min line (org-current-line))))
   (when (org-bound-and-true-p org-edit-src-force-single-line)
     (goto-char (point-min))
     (while (re-search-forward "\n" nil t)
@@ -6914,11 +6916,18 @@ 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)) msg)
+  (let ((p (point)) (m (mark))
+       (visibility org-cycle-global-status) 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 ""))))



Dan Davison <davison@stats.ox.ac.uk> writes:

> 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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: outline-minor-mode and code editing / export
  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
  1 sibling, 1 reply; 7+ messages in thread
From: Carsten Dominik @ 2009-06-07 15:56 UTC (permalink / raw)
  To: Dan Davison; +Cc: emacs org-mode mailing list

Hi Dan,

an alternative solution would be to turn off the major mode hook for
org-edit-src.  Would that be good or bad?  It is probably never a
good idea to have code folded in these snippet buffers?

- 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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: outline-minor-mode and code editing / export
  2009-06-07 15:56 ` Carsten Dominik
@ 2009-06-07 17:19   ` Dan Davison
  2009-06-08  6:54     ` Carsten Dominik
  0 siblings, 1 reply; 7+ messages in thread
From: Dan Davison @ 2009-06-07 17:19 UTC (permalink / raw)
  To: Carsten Dominik; +Cc: emacs org-mode mailing list

Carsten Dominik <carsten.dominik@gmail.com> writes:

> Hi Dan,
>
> an alternative solution would be to turn off the major mode hook for
> org-edit-src.  Would that be good or bad?  It is probably never a
> good idea to have code folded in these snippet buffers?

I think you're right that it's a personal customisation and it's not
really org's job to defend against it. I don't think the major mode hook
should be disabled, as there'll be other things that users might want to
configure, and retain in org-edit-src and htmlized versions. Do you
think it would be of sufficient general utility to add hooks to org to
cover this? (in which, e.g., outline-major-mode could be turned off?).
I.e. something like

1. org-edit-src-mode-hook *
2. org-export-preprocess-src-buffer-hook

Or maybe those should be the same hook?

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.


>
> - 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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: outline-minor-mode and code editing / export
  2009-06-07 17:19   ` Dan Davison
@ 2009-06-08  6:54     ` Carsten Dominik
  2009-06-09 13:22       ` Dan Davison
  0 siblings, 1 reply; 7+ messages in thread
From: Carsten Dominik @ 2009-06-08  6:54 UTC (permalink / raw)
  To: Dan Davison; +Cc: emacs org-mode mailing list


On Jun 7, 2009, at 7:19 PM, Dan Davison wrote:

> Carsten Dominik <carsten.dominik@gmail.com> writes:
>
>> Hi Dan,
>>
>> an alternative solution would be to turn off the major mode hook for
>> org-edit-src.  Would that be good or bad?  It is probably never a
>> good idea to have code folded in these snippet buffers?
>
> I think you're right that it's a personal customisation and it's not
> really org's job to defend against it. I don't think the major mode  
> hook
> should be disabled, as there'll be other things that users might  
> want to
> configure, and retain in org-edit-src and htmlized versions. Do you
> think it would be of sufficient general utility to add hooks to org to
> cover this? (in which, e.g., outline-major-mode could be turned off?).
> I.e. something like
>
> 1. org-edit-src-mode-hook *
> 2. org-export-preprocess-src-buffer-hook
>
> Or maybe those should be the same hook?

Yes, I would think so.  The hooks is called `org-src-mode-hook'.

>
> 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 :-)

- 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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: outline-minor-mode and code editing / export
  2009-06-08  6:54     ` Carsten Dominik
@ 2009-06-09 13:22       ` Dan Davison
  2009-06-09 17:29         ` Carsten Dominik
  0 siblings, 1 reply; 7+ messages in thread
From: Dan Davison @ 2009-06-09 13:22 UTC (permalink / raw)
  To: Carsten Dominik; +Cc: emacs org-mode mailing list

Carsten Dominik <carsten.dominik@gmail.com> writes:

> On Jun 7, 2009, at 7:19 PM, Dan Davison wrote:
>
>> Carsten Dominik <carsten.dominik@gmail.com> writes:
>>
>>> Hi Dan,
>>>
>>> an alternative solution would be to turn off the major mode hook for
>>> org-edit-src.  Would that be good or bad?  It is probably never a
>>> good idea to have code folded in these snippet buffers?
>>
>> I think you're right that it's a personal customisation and it's not
>> really org's job to defend against it. I don't think the major mode
>> hook
>> should be disabled, as there'll be other things that users might
>> want to
>> configure, and retain in org-edit-src and htmlized versions. Do you
>> think it would be of sufficient general utility to add hooks to org to
>> cover this? (in which, e.g., outline-major-mode could be turned off?).
>> I.e. something like
>>
>> 1. org-edit-src-mode-hook *
>> 2. org-export-preprocess-src-buffer-hook
>>
>> Or maybe those should be the same hook?
>
> Yes, I would think so.  The hooks is called `org-src-mode-hook'.

Great, thanks.

>
>>
>> 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.  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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: outline-minor-mode and code editing / export
  2009-06-09 13:22       ` Dan Davison
@ 2009-06-09 17:29         ` Carsten Dominik
  0 siblings, 0 replies; 7+ messages in thread
From: Carsten Dominik @ 2009-06-09 17:29 UTC (permalink / raw)
  To: Dan Davison; +Cc: emacs org-mode mailing list


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

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-06-09 17:29 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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

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).