From mboxrd@z Thu Jan 1 00:00:00 1970 From: suvayu ali Subject: org-element-drag-* broken Date: Wed, 4 Jul 2012 12:36:18 +0200 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: Received: from eggs.gnu.org ([208.118.235.92]:36108) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SmMwx-0002xM-Qr for emacs-orgmode@gnu.org; Wed, 04 Jul 2012 06:36:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SmMwr-0004aI-BU for emacs-orgmode@gnu.org; Wed, 04 Jul 2012 06:36:47 -0400 Received: from mail-ob0-f169.google.com ([209.85.214.169]:63264) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SmMwr-0004Zx-2L for emacs-orgmode@gnu.org; Wed, 04 Jul 2012 06:36:41 -0400 Received: by obhx4 with SMTP id x4so8482325obh.0 for ; Wed, 04 Jul 2012 03:36:39 -0700 (PDT) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: org-mode mailing list Cc: Nicolas Goaziou Hi Nicolas, I have been trying out the `org-element-drag-backward' and `org-element-drag-forward' navigation commands. I believe they stopped working yesterday when I updated my org-mode (Git: dab2505 -> a69f4b8). When I try to move list items, I get the backtrace shown below. FWIW, promotion and demotion works. I hope this helps. Debugger entered--Lisp error: (error "Cannot swap elements") signal(error ("Cannot swap elements")) error("Cannot swap elements") (if (and specialp (or (not (eq (org-element-type elem-B) (quote paragraph))) (/= (org-element-property :begin elem-B) (org-element-property :contents-begin elem-B)))) (error "Cannot swap elements")) (let ((specialp (not (bolp)))) (if (and specialp (or (not (eq (org-element-type elem-B) (quote paragraph))) (/= (org-element-property :begin elem-B) (org-element-property :contents-begin elem-B)))) (error "Cannot swap elements")) (let* ((ind-B (when specialp (goto-char (org-element-property :begin elem-B)) (org-get-indentation))) (beg-A (org-element-property :begin elem-A)) (end-A (save-excursion (goto-char (org-element-property :end elem-A)) (skip-chars-backward " \n") (point-at-eol))) (beg-B (org-element-property :begin elem-B)) (end-B (save-excursion (goto-char (org-element-property :end elem-B)) (skip-chars-backward " \n") (point-at-eol))) (overlays (cons (mapcar (lambda (ov) (list ov ... ...)) (overlays-in beg-A end-A)) (mapcar (lambda (ov) (list ov ... ...)) (overlays-in beg-B end-B)))) (body-A (buffer-substring beg-A end-A)) (body-B (delete-and-extract-region beg-B end-B))) (goto-char beg-B) (when specialp (setq body-B (replace-regexp-in-string "\\`[ ]*" "" body-B)) (org-indent-to-column ind-B)) (insert body-A) (mapc (lambda (ov) (move-overlay (car ov) (+ (nth 1 ov) (- beg-B beg-A)) (+ (nth 2 ov) (- beg-B beg-A)))) (car overlays)) (goto-char beg-A) (delete-region beg-A end-A) (insert body-B) (mapc (lambda (ov) (move-overlay (car ov) (+ (nth 1 ov) (- beg-A beg-B)) (+ (nth 2 ov) (- beg-A beg-B)))) (cdr overlays)) (goto-char (org-element-property :end elem-B)))) org-element-swap-A-B((paragraph (:begin 1258 :end 1268 :contents-begin 1258 :contents-end 1267 :post-blank 0)) (item (:bullet "- " :begin 1268 :end 1298 :contents-begin 1270 :contents-end 1298 :checkbox nil :counter nil :tag nil :hiddenp nil :structure ((1256 0 "- " nil nil nil 1268) (1268 0 "- " nil nil nil 1298) (1298 0 "- " nil nil nil 1307) (1307 0 "- " nil nil nil 1335) (1335 0 "- " nil nil nil 1344)) :post-blank 0))) (let ((size-next (- (save-excursion (goto-char (org-element-property :end next-elem)) (skip-chars-backward " \n") (forward-line) (if (and (eolp) (not ...)) (1+ (point)) (point))) (org-element-property :begin next-elem))) (size-blank (- (org-element-property :end elem) (save-excursion (goto-char (org-element-property :end elem)) (skip-chars-backward " \n") (forward-line) (point))))) (org-element-swap-A-B elem next-elem) (goto-char (+ pos size-next size-blank))) (let ((next-elem (org-element-at-point))) (when (or (org-element-nested-p elem next-elem) (and (eq (org-element-type next-elem) (quote headline)) (not (eq (org-element-type elem) (quote headline))))) (goto-char pos) (error "Cannot drag element forward")) (let ((size-next (- (save-excursion (goto-char (org-element-property :end next-elem)) (skip-chars-backward " \n") (forward-line) (if (and ... ...) (1+ ...) (point))) (org-element-property :begin next-elem))) (size-blank (- (org-element-property :end elem) (save-excursion (goto-char (org-element-property :end elem)) (skip-chars-backward " \n") (forward-line) (point))))) (org-element-swap-A-B elem next-elem) (goto-char (+ pos size-next size-blank)))) (let* ((pos (point)) (elem (org-element-at-point))) (when (= (point-max) (org-element-property :end elem)) (error "Cannot drag element forward")) (goto-char (org-element-property :end elem)) (let ((next-elem (org-element-at-point))) (when (or (org-element-nested-p elem next-elem) (and (eq (org-element-type next-elem) (quote headline)) (not (eq (org-element-type elem) (quote headline))))) (goto-char pos) (error "Cannot drag element forward")) (let ((size-next (- (save-excursion (goto-char ...) (skip-chars-backward " \n") (forward-line) (if ... ... ...)) (org-element-property :begin next-elem))) (size-blank (- (org-element-property :end elem) (save-excursion (goto-char ...) (skip-chars-backward " \n") (forward-line) (point))))) (org-element-swap-A-B elem next-elem) (goto-char (+ pos size-next size-blank))))) org-metadown() call-interactively(org-metadown nil nil) -- Suvayu Open source is the future. It sets us free.