mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-08-23 20:48:39 +00:00
Better detection of cursor position when editing properties
This commit is contained in:
parent
c6cfd3cfd3
commit
30e3503b7b
|
@ -1,3 +1,14 @@
|
|||
2010-03-11 Mikael Fornius <mfo@abc.se>
|
||||
|
||||
* 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 <carsten.dominik@gmail.com>
|
||||
|
||||
* org-exp.el (org-export-attach-captions-and-attributes): Add the
|
||||
|
|
37
lisp/org.el
37
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]*\\)\\]")
|
||||
|
|
Loading…
Reference in a new issue