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