[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented
From: |
Julien Danjou |
Subject: |
Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented |
Date: |
Mon, 18 Oct 2010 16:37:12 +0200 |
User-agent: |
Gnus/5.110011 (No Gnus v0.11) Emacs/24.0.50 (gnu/linux) |
On Sun, Oct 17 2010, Carsten Dominik wrote:
> This is bad. As this problem does not exist in Emacs 23 and I have not
> changed anything in this part of the code, maybe a bug report to EMacs is
> in order. Will you file one, with the remark that this works fine in Emacs
> 23?
I'm not sure that will work fine. Well, I've started to debug this, any
help appreciated.
I'm adding emacs-devel in Cc since this is clearly a bug in Emacs 24.
For people not reading orgmode list, the problem is that when
org-startup-indented is set to t, the yanking does not yank the correct
text.
To test, this is what I've got:
* TODO Blalaundo
I copy "undo" with C-space on `u', C-e, M-w.
Then I press C-y (org-yank). Everything is fine, except that as that
moment:
Debugger entered--returning value: "* TODO Blala"
x-get-selection(PRIMARY UTF8_STRING)
* byte-code("\303 @\"\303\207" [type request-type text x-get-selection]
3)
* x-selection-value-internal(PRIMARY)
* x-selection-value()
* current-kill(0)
* (and kill-ring (current-kill 0))
* (or txt (and kill-ring (current-kill 0)) "")
* (let* ((kill (or txt (and kill-ring (current-kill 0)) "")) (start-level (and
kill (string-match (concat "\\`\\([ \n
]*?\n\\)?\\(" org-outline-regexp "\\)") kill) (- (match-end 2) (match-beginning
2) 1))) (re (concat "^" org-outline-regexp)) (start (1+ (or (match-beginning 2)
-1)))) (if (not start-level) (progn nil) (catch (quote exit) (while (setq start
(string-match re kill (1+ start))) (when (< (- (match-end 0) (match-beginning
0) 1) start-level) (throw (quote exit) nil))) t)))
* org-kill-is-subtree-p()
* (and (org-kill-is-subtree-p) (or (bolp) (and (looking-at "[ ]*$")
(string-match "\\`\\*+\\'" (buffer-substring (point-at-bol) (point))))))
* (let ((subtreep (and (org-kill-is-subtree-p) (or (bolp) (and (looking-at "[
]*$") (string-match "\\`\\*+\\'" (buffer-substring ... ...)))))) swallowp)
(cond ((and subtreep org-yank-folded-subtrees) (let ((beg (point)) end) (if
(and subtreep org-yank-adjusted-subtrees) (org-paste-subtree nil nil (quote
for-yank)) (call-interactively command)) (setq end (point)) (goto-char beg)
(when (and (bolp) subtreep (not (setq swallowp ...))) (or (looking-at
outline-regexp) (re-search-forward (concat "^" outline-regexp) end t)) (while
(and (< ... end) (looking-at outline-regexp)) (hide-subtree)
(org-cycle-show-empty-lines (quote folded)) (condition-case nil
(outline-forward-same-level 1) (error ...)))) (when swallowp (message "Inserted
text not folded because that would swallow text")) (goto-char end)
(skip-chars-forward " \n
") (beginning-of-line 1) (push-mark beg (quote nomsg)))) ((and subtreep
org-yank-adjusted-subtrees) (let ((beg (point-at-bol))) (org-paste-subtree nil
nil (quote for-yank)) (push-mark beg (quote nomsg)))) (t (call-interactively
command))))
* (if arg (call-interactively command) (let ((subtreep (and
(org-kill-is-subtree-p) (or (bolp) (and (looking-at "[ ]*$") (string-match
"\\`\\*+\\'" ...))))) swallowp) (cond ((and subtreep org-yank-folded-subtrees)
(let ((beg (point)) end) (if (and subtreep org-yank-adjusted-subtrees)
(org-paste-subtree nil nil (quote for-yank)) (call-interactively command))
(setq end (point)) (goto-char beg) (when (and (bolp) subtreep (not ...)) (or
(looking-at outline-regexp) (re-search-forward ... end t)) (while (and ... ...)
(hide-subtree) (org-cycle-show-empty-lines ...) (condition-case nil ... ...)))
(when swallowp (message "Inserted text not folded because that would swallow
text")) (goto-char end) (skip-chars-forward " \n
") (beginning-of-line 1) (push-mark beg (quote nomsg)))) ((and subtreep
org-yank-adjusted-subtrees) (let ((beg (point-at-bol))) (org-paste-subtree nil
nil (quote for-yank)) (push-mark beg (quote nomsg)))) (t (call-interactively
command)))))
* org-yank-generic(yank nil)
* org-yank(nil)
call-interactively(org-yank nil nil)
No clue why, but the PRIMARY selection seems to return the start of the
line.
I've done this then:
* TODO Blalaundo
I go on `u', press C-space, then C-e. The M-; and execute
(x-selection-value), which returns: "undo".
So far so good. But if I go on `u', press C-space, then C-e, then M-w,
then M-; to execute (x-selection-value), it returns "* TODO Blala".
So it seems that when the org-startup-indented is set to t, M-w goes
crazy and set the primary selection wrongly.
Hint?
--
Julien Danjou
// ᐰ <address@hidden> http://julien.danjou.info
- [Orgmode] Weird behaviour with org-yank and org-startup-indented, Julien Danjou, 2010/10/15
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented, Carsten Dominik, 2010/10/17
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented,
Julien Danjou <=
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented, Julien Danjou, 2010/10/20
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented, Chong Yidong, 2010/10/20
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented, Julien Danjou, 2010/10/20
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented, Andreas Röhler, 2010/10/20
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented, Chong Yidong, 2010/10/20
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented, Chong Yidong, 2010/10/20
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented, Lennart Borgman, 2010/10/20
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented, Stefan Monnier, 2010/10/20
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented, Chong Yidong, 2010/10/21
- Re: [Orgmode] Weird behaviour with org-yank and org-startup-indented, Carsten Dominik, 2010/10/21