mirror of
https://github.com/larstvei/Focus.git
synced 2024-11-26 11:38:32 +00:00
Add special support for org mode
This commit is contained in:
parent
5f3f20e7f2
commit
35ff92764a
15
focus.el
15
focus.el
@ -31,6 +31,7 @@
|
|||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(require 'cl-lib)
|
(require 'cl-lib)
|
||||||
|
(require 'org-element)
|
||||||
(require 'thingatpt)
|
(require 'thingatpt)
|
||||||
|
|
||||||
(defgroup focus ()
|
(defgroup focus ()
|
||||||
@ -38,7 +39,9 @@
|
|||||||
:group 'font-lock
|
:group 'font-lock
|
||||||
:prefix "focus-")
|
:prefix "focus-")
|
||||||
|
|
||||||
(defcustom focus-mode-to-thing '((prog-mode . defun) (text-mode . sentence))
|
(defcustom focus-mode-to-thing '((prog-mode . defun)
|
||||||
|
(text-mode . paragraph)
|
||||||
|
(org-mode . org-element))
|
||||||
"An associated list between mode and thing.
|
"An associated list between mode and thing.
|
||||||
|
|
||||||
A thing is defined in thingatpt.el; the thing determines the
|
A thing is defined in thingatpt.el; the thing determines the
|
||||||
@ -101,7 +104,13 @@ The timer calls `focus-read-only-hide-cursor' after
|
|||||||
|
|
||||||
(defun focus-bounds ()
|
(defun focus-bounds ()
|
||||||
"Return the current bounds, based on `focus-get-thing'."
|
"Return the current bounds, based on `focus-get-thing'."
|
||||||
(bounds-of-thing-at-point (focus-get-thing)))
|
(let ((thing (focus-get-thing)))
|
||||||
|
(cond ((eq thing 'org-element)
|
||||||
|
(let* ((elem (org-element-at-point))
|
||||||
|
(beg (org-element-property :begin elem))
|
||||||
|
(end (org-element-property :end elem)))
|
||||||
|
(cons beg end)))
|
||||||
|
(t (bounds-of-thing-at-point (focus-get-thing))))))
|
||||||
|
|
||||||
(defun focus-move-focus ()
|
(defun focus-move-focus ()
|
||||||
"Move the focused section according to `focus-bounds'.
|
"Move the focused section according to `focus-bounds'.
|
||||||
@ -165,7 +174,7 @@ according to major-mode. If `focus-current-thing' is set, this
|
|||||||
default is overwritten. This function simply helps set the
|
default is overwritten. This function simply helps set the
|
||||||
`focus-current-thing'."
|
`focus-current-thing'."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let* ((candidates '(defun line list paragraph sentence sexp symbol word))
|
(let* ((candidates '(defun line list org-element paragraph sentence sexp symbol word))
|
||||||
(thing (completing-read "Thing: " candidates)))
|
(thing (completing-read "Thing: " candidates)))
|
||||||
(setq focus-current-thing (intern thing))))
|
(setq focus-current-thing (intern thing))))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user