From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mikael Fornius Subject: Re: [PATCH] org-at-property-p and related Date: Thu, 11 Mar 2010 14:06:50 +0100 Message-ID: <87mxyfj9cl.fsf@eee.lan> References: <878w9zkopt.fsf@eee.lan> <874oknkoka.fsf@eee.lan> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Npi2S-0007G3-3A for emacs-orgmode@gnu.org; Thu, 11 Mar 2010 08:02:56 -0500 Received: from [140.186.70.92] (port=42451 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Npi2P-0007FY-B4 for emacs-orgmode@gnu.org; Thu, 11 Mar 2010 08:02:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Npi2N-0007zT-GC for emacs-orgmode@gnu.org; Thu, 11 Mar 2010 08:02:52 -0500 Received: from violet.abc.se ([62.80.200.155]:43297) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Npi2N-0007zK-5I for emacs-orgmode@gnu.org; Thu, 11 Mar 2010 08:02:51 -0500 In-Reply-To: <874oknkoka.fsf@eee.lan> (Mikael Fornius's message of "Thu, 11 Mar 2010 13:52:53 +0100") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org --=-=-= Oh man! That was old. Sorry. Third attempt: This is the one: --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=org-at-property-p-2.diff Content-Description: here diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6d30f08..d6a0f76 100755 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,14 @@ +2010-03-11 Mikael Fornius + + * org.el (org-at-property-p): Check if we are inside a property + drawer not just any drawer. + (org-set-property, org-delete-property): When cursor is on a + property key value pair do not prompt for property name instead + use name at cursor. + (org-ctrl-c-ctrl-c): Still do org-property-action when cursor is + on the first line of a property drawer. + (org-property-end-re): Spell check. + 2010-03-11 Carsten Dominik * org-exp.el (org-export-attach-captions-and-attributes): Add the diff --git a/lisp/org.el b/lisp/org.el index 463ae46..ad15d5e 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -12469,7 +12469,7 @@ Being in this list makes sure that they are offered for completion.") "Regular expression matching the first line of a property drawer.") (defconst org-property-end-re "^[ \t]*:END:[ \t]*$" - "Regular expression matching the first line of a property drawer.") + "Regular expression matching the last line of a property drawer.") (defconst org-clock-drawer-start-re "^[ \t]*:CLOCK:[ \t]*$" "Regular expression matching the first line of a property drawer.") @@ -12546,13 +12546,16 @@ allowed value." (message "%s is now %s" prop val))) (defun org-at-property-p () - "Is the cursor in a property line?" - ;; FIXME: Does not check if we are actually in the drawer. - ;; FIXME: also returns true on any drawers..... - ;; This is used by C-c C-c for property action. + "Is cursor inside a property drawer?" (save-excursion (beginning-of-line 1) - (looking-at (org-re "^[ \t]*\\(:\\([[:alpha:]][[:alnum:]_-]*\\):\\)[ \t]*\\(.*\\)")))) + (when (looking-at (org-re "^[ \t]*\\(:\\([[:alpha:]][[:alnum:]_-]*\\):\\)[ \t]*\\(.*\\)")) + (let ((match (match-data)) ;; Keep match-data for use by calling + (p (point)) ;; procedures. + (range (unless (org-before-first-heading-p) + (org-get-property-block)))) + (prog1 (and range (<= (car range) p) (< p (cdr range))) + (set-match-data match)))))) (defun org-get-property-block (&optional beg end force) "Return the (beg . end) range of the body of the property drawer. @@ -12983,7 +12986,8 @@ in the current file." (interactive (let* ((completion-ignore-case t) (keys (org-buffer-property-keys nil t t)) - (prop0 (org-icompleting-read "Property: " (mapcar 'list keys))) + (prop0 (or (progn (org-at-property-p) (org-match-string-no-properties 2)) + (org-icompleting-read "Property: " (mapcar 'list keys)))) (prop (if (member prop0 keys) prop0 (or (cdr (assoc (downcase prop0) @@ -12991,18 +12995,17 @@ in the current file." keys))) prop0))) (cur (org-entry-get nil prop)) + (prompt (concat prop " value" + (if (and cur (string-match "\\S-" cur)) + (concat " [" cur "]") "") ": ")) (allowed (org-property-get-allowed-values nil prop 'table)) (existing (mapcar 'list (org-property-values prop))) (val (if allowed - (org-completing-read "Value: " allowed nil + (org-completing-read prompt allowed nil (not (get-text-property 0 'org-unrestricted (caar allowed)))) (let (org-completion-use-ido org-completion-use-iswitchb) - (org-completing-read - (concat "Value" (if (and cur (string-match "\\S-" cur)) - (concat " [" cur "]") "") - ": ") - existing nil nil "" nil cur))))) + (org-completing-read prompt existing nil nil "" nil cur))))) (list prop (if (equal val "") cur val)))) (unless (equal (org-entry-get nil property) value) (org-entry-put nil property value))) @@ -13011,8 +13014,9 @@ in the current file." "In the current entry, delete PROPERTY." (interactive (let* ((completion-ignore-case t) - (prop (org-icompleting-read - "Property: " (org-entry-properties nil 'standard)))) + (prop (or (progn (org-at-property-p) (org-match-string-no-properties 2)) + (org-icompleting-read + "Property: " (org-entry-properties nil 'standard))))) (list prop))) (message "Property %s %s" property (if (org-entry-delete nil property) @@ -16010,7 +16014,8 @@ This command does many different things, depending on context: (fboundp org-finish-function)) (funcall org-finish-function)) ((run-hook-with-args-until-success 'org-ctrl-c-ctrl-c-hook)) - ((org-at-property-p) + ((or (looking-at (org-re org-property-start-re)) + (org-at-property-p)) (call-interactively 'org-property-action)) ((org-on-target-p) (call-interactively 'org-update-radio-target-regexp)) ((and (org-in-regexp "\\[\\([0-9]*%\\|[0-9]*/[0-9]*\\)\\]") --=-=-= -- Mikael Fornius --=-=-= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --=-=-=--