From 937b4484c6a825b42529b774b8a98206119e5cd8 Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Wed, 17 Apr 2013 20:25:02 +0200 Subject: [PATCH] org-agenda.el: New commands for dragging a line forward/backward * org-agenda.el (org-agenda-drag-line-forward) (org-agenda-drag-line-backward): New commands. (org-agenda-mode-map): Bind the new commands to M- and M- respectively. * org.texi (Agenda commands): Add a table heading for dragging agenda lines forward/backward. --- doc/org.texi | 11 +++++++++++ lisp/org-agenda.el | 28 ++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/doc/org.texi b/doc/org.texi index 4e6c2db62..69d70bdf1 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -8913,6 +8913,17 @@ the default behavior of @code{org-capture}. @cindex capturing, from agenda @vindex org-capture-use-agenda-date +@tsubheading{Dragging agenda lines forward/backward} +@cindex dragging, agenda lines + +@orgcmd{M-,org-agenda-drag-line-backward} +Drag the line at point backward one line. With a numeric prefix argument, +drag backward by that many lines. + +@orgcmd{M-,org-agenda-drag-line-forward} +Drag the line at point forward one line. With a numeric prefix argument, +drag forward by that many lines. + @tsubheading{Bulk remote editing selected entries} @cindex remote editing, bulk, from agenda @vindex org-agenda-bulk-custom-functions diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index f13e6ede1..607269d39 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -2182,6 +2182,8 @@ The following commands are available: (org-defkey org-agenda-mode-map "\C-m" 'org-agenda-switch-to) (org-defkey org-agenda-mode-map "\C-k" 'org-agenda-kill) (org-defkey org-agenda-mode-map "\C-c\C-w" 'org-agenda-refile) +(org-defkey org-agenda-mode-map [(meta down)] 'org-agenda-drag-line-forward) +(org-defkey org-agenda-mode-map [(meta up)] 'org-agenda-drag-line-backward) (org-defkey org-agenda-mode-map "m" 'org-agenda-bulk-mark) (org-defkey org-agenda-mode-map "\M-m" 'org-agenda-bulk-toggle) (org-defkey org-agenda-mode-map "*" 'org-agenda-bulk-mark-all) @@ -9880,6 +9882,32 @@ current HH:MM time." (org-get-cursor-date (equal with-time 1)))) (call-interactively 'org-capture)))) +;;; Dragging agenda lines forward/backward + +(defun org-agenda-drag-line-forward (arg) + "Drag an agenda line forward by ARG lines." + (interactive "p") + (let ((inhibit-read-only t) lst) + (if (save-excursion + (dotimes (n arg) + (beginning-of-line 2) + (push (not (get-text-property (point) 'txt)) lst)) + (delq nil lst)) + (message "Cannot move line forward") + (org-drag-line-forward arg)))) + +(defun org-agenda-drag-line-backward (arg) + "Drag an agenda line backward by ARG lines." + (interactive "p") + (let ((inhibit-read-only t) lst) + (if (save-excursion + (dotimes (n arg) + (beginning-of-line 0) + (push (not (get-text-property (point) 'txt)) lst)) + (delq nil lst)) + (message "Cannot move line backward") + (org-drag-line-backward arg)))) + ;;; Flagging notes (defun org-agenda-show-the-flagging-note () -- 2.11.4.GIT