ivy: use post-init to add hook for org-ctrl-c-ctrl-c
This commit is contained in:
parent
fcf33be0f7
commit
14b206492b
|
@ -301,6 +301,43 @@ To prevent this error we just wrap `describe-mode' to defeat the
|
||||||
(unless (eq ivy-exit 'done)
|
(unless (eq ivy-exit 'done)
|
||||||
(swiper--cleanup)
|
(swiper--cleanup)
|
||||||
(swiper--add-overlays (ivy--regex ivy-text)))))))
|
(swiper--add-overlays (ivy--regex ivy-text)))))))
|
||||||
|
|
||||||
|
;; org
|
||||||
|
|
||||||
|
;; see https://github.com/abo-abo/swiper/issues/177
|
||||||
|
(defun spacemacs//counsel-org-ctrl-c-ctrl-c-org-tag ()
|
||||||
|
"Hook for `org-ctrl-c-ctrl-c-hook' to use `counsel-org-tag'."
|
||||||
|
(if (save-excursion (beginning-of-line) (looking-at "[ \t]*$"))
|
||||||
|
(or (run-hook-with-args-until-success 'org-ctrl-c-ctrl-c-final-hook)
|
||||||
|
(user-error "C-c C-c can do nothing useful at this location"))
|
||||||
|
(let* ((context (org-element-context))
|
||||||
|
(type (org-element-type context)))
|
||||||
|
(case type
|
||||||
|
;; When at a link, act according to the parent instead.
|
||||||
|
(link (setq context (org-element-property :parent context))
|
||||||
|
(setq type (org-element-type context)))
|
||||||
|
;; Unsupported object types: refer to the first supported
|
||||||
|
;; element or object containing it.
|
||||||
|
((bold code entity export-snippet inline-babel-call inline-src-block
|
||||||
|
italic latex-fragment line-break macro strike-through subscript
|
||||||
|
superscript underline verbatim)
|
||||||
|
(setq context
|
||||||
|
(org-element-lineage
|
||||||
|
context '(radio-target paragraph verse-block table-cell)))))
|
||||||
|
;; For convenience: at the first line of a paragraph on the
|
||||||
|
;; same line as an item, apply function on that item instead.
|
||||||
|
(when (eq type 'paragraph)
|
||||||
|
(let ((parent (org-element-property :parent context)))
|
||||||
|
(when (and (eq (org-element-type parent) 'item)
|
||||||
|
(= (line-beginning-position)
|
||||||
|
(org-element-property :begin parent)))
|
||||||
|
(setq context parent type 'item))))
|
||||||
|
|
||||||
|
;; Act according to type of element or object at point.
|
||||||
|
(case type
|
||||||
|
((headline inlinetask)
|
||||||
|
(save-excursion (goto-char (org-element-property :begin context))
|
||||||
|
(call-interactively 'counsel-org-tag)) t)))))
|
||||||
|
|
||||||
;; Ivy
|
;; Ivy
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
ivy
|
ivy
|
||||||
ivy-hydra
|
ivy-hydra
|
||||||
(ivy-spacemacs-help :location local)
|
(ivy-spacemacs-help :location local)
|
||||||
|
org
|
||||||
persp-mode
|
persp-mode
|
||||||
projectile
|
projectile
|
||||||
smex
|
smex
|
||||||
|
@ -295,6 +296,9 @@
|
||||||
"h r" 'ivy-spacemacs-help-docs
|
"h r" 'ivy-spacemacs-help-docs
|
||||||
"h t" 'ivy-spacemacs-help-toggles)))
|
"h t" 'ivy-spacemacs-help-toggles)))
|
||||||
|
|
||||||
|
(defun ivy/post-init-org ()
|
||||||
|
(add-hook 'org-ctrl-c-ctrl-c-hook 'spacemacs//counsel-org-ctrl-c-ctrl-c-org-tag))
|
||||||
|
|
||||||
(defun ivy/init-swiper ()
|
(defun ivy/init-swiper ()
|
||||||
(use-package swiper
|
(use-package swiper
|
||||||
:config
|
:config
|
||||||
|
|
|
@ -44,37 +44,3 @@
|
||||||
(defun spacemacs//evil-org-mode ()
|
(defun spacemacs//evil-org-mode ()
|
||||||
(evil-org-mode)
|
(evil-org-mode)
|
||||||
(evil-normalize-keymaps))
|
(evil-normalize-keymaps))
|
||||||
|
|
||||||
(defun spacemacs//org-ctrl-c-ctrl-c-counsel-org-tag ()
|
|
||||||
"Hook for `org-ctrl-c-ctrl-c-hook' to use `counsel-org-tag'."
|
|
||||||
(if (save-excursion (beginning-of-line) (looking-at "[ \t]*$"))
|
|
||||||
(or (run-hook-with-args-until-success 'org-ctrl-c-ctrl-c-final-hook)
|
|
||||||
(user-error "C-c C-c can do nothing useful at this location"))
|
|
||||||
(let* ((context (org-element-context))
|
|
||||||
(type (org-element-type context)))
|
|
||||||
(case type
|
|
||||||
;; When at a link, act according to the parent instead.
|
|
||||||
(link (setq context (org-element-property :parent context))
|
|
||||||
(setq type (org-element-type context)))
|
|
||||||
;; Unsupported object types: refer to the first supported
|
|
||||||
;; element or object containing it.
|
|
||||||
((bold code entity export-snippet inline-babel-call inline-src-block
|
|
||||||
italic latex-fragment line-break macro strike-through subscript
|
|
||||||
superscript underline verbatim)
|
|
||||||
(setq context
|
|
||||||
(org-element-lineage
|
|
||||||
context '(radio-target paragraph verse-block table-cell)))))
|
|
||||||
;; For convenience: at the first line of a paragraph on the
|
|
||||||
;; same line as an item, apply function on that item instead.
|
|
||||||
(when (eq type 'paragraph)
|
|
||||||
(let ((parent (org-element-property :parent context)))
|
|
||||||
(when (and (eq (org-element-type parent) 'item)
|
|
||||||
(= (line-beginning-position)
|
|
||||||
(org-element-property :begin parent)))
|
|
||||||
(setq context parent type 'item))))
|
|
||||||
|
|
||||||
;; Act according to type of element or object at point.
|
|
||||||
(case type
|
|
||||||
((headline inlinetask)
|
|
||||||
(save-excursion (goto-char (org-element-property :begin context))
|
|
||||||
(call-interactively 'counsel-org-tag)) t)))))
|
|
||||||
|
|
|
@ -344,12 +344,7 @@ Will work on both org-mode and any mode that accepts plain html."
|
||||||
(org-eval-in-calendar '(calendar-backward-year 1))))
|
(org-eval-in-calendar '(calendar-backward-year 1))))
|
||||||
(define-key org-read-date-minibuffer-local-map (kbd "M-J")
|
(define-key org-read-date-minibuffer-local-map (kbd "M-J")
|
||||||
(lambda () (interactive)
|
(lambda () (interactive)
|
||||||
(org-eval-in-calendar '(calendar-forward-year 1)))))
|
(org-eval-in-calendar '(calendar-forward-year 1))))))))
|
||||||
|
|
||||||
;; Default `org-set-tags' does not work well with ivy.
|
|
||||||
(when (configuration-layer/layer-usedp 'ivy)
|
|
||||||
(add-hook 'org-ctrl-c-ctrl-c-hook
|
|
||||||
'spacemacs//org-ctrl-c-ctrl-c-counsel-org-tag)))))
|
|
||||||
|
|
||||||
(defun org/init-org-agenda ()
|
(defun org/init-org-agenda ()
|
||||||
(use-package org-agenda
|
(use-package org-agenda
|
||||||
|
|
Loading…
Reference in a new issue