Change/Fix: (helm-org-ql.el) Wrap in eval-and-compile
This avoids errors when Helm is not installed, and it seems to work correctly when Helm is installed. This should be an improvement until this file is put in its own package.
This commit is contained in:
parent
11a0466f92
commit
0648196076
1 changed files with 136 additions and 134 deletions
|
|
@ -28,45 +28,47 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
;;;; Requirements
|
||||
(eval-and-compile
|
||||
|
||||
(require 'org)
|
||||
(eval-when-compile
|
||||
;; Require these when compiling, but not necessarily on load.
|
||||
(require 'org)
|
||||
|
||||
(require 'org-ql)
|
||||
(require 'org-ql-search)
|
||||
|
||||
;; (require 'helm)
|
||||
;; (require 'helm-org)
|
||||
(require 'org-ql)
|
||||
(require 'org-ql-search))
|
||||
|
||||
;;;; Compatibility
|
||||
|
||||
;; Declare Helm functions since Helm may not be installed.
|
||||
(declare-function helm "ext:helm")
|
||||
(declare-function helm-run-after-exit "ext:helm")
|
||||
(declare-function helm-window "ext:helm-lib")
|
||||
(declare-function helm-buffer-get "ext:helm-lib")
|
||||
(declare-function helm-make-source "ext:helm-source")
|
||||
(declare-function helm-org-goto-marker "ext:helm-org")
|
||||
;; Declare Helm functions since Helm may not be installed.
|
||||
(declare-function helm "ext:helm")
|
||||
(declare-function helm-run-after-exit "ext:helm")
|
||||
(declare-function helm-window "ext:helm-lib")
|
||||
(declare-function helm-buffer-get "ext:helm-lib")
|
||||
(declare-function helm-make-source "ext:helm-source")
|
||||
(declare-function helm-org-goto-marker "ext:helm-org")
|
||||
|
||||
;; Silence byte-compiler about variables.
|
||||
(defvar helm-map)
|
||||
(defvar helm-pattern)
|
||||
(defvar helm-input-idle-delay)
|
||||
;; Silence byte-compiler about variables.
|
||||
(defvar helm-map)
|
||||
(defvar helm-pattern)
|
||||
(defvar helm-input-idle-delay)
|
||||
|
||||
(when (require 'helm nil 'noerror)
|
||||
|
||||
;; Requirements.
|
||||
(require 'helm-org)
|
||||
|
||||
;;;; Variables
|
||||
|
||||
(defvar helm-org-ql-map
|
||||
(defvar helm-org-ql-map
|
||||
(let ((map (make-sparse-keymap))
|
||||
(mappings '(
|
||||
"C-x C-s" helm-org-ql-save
|
||||
)))
|
||||
(mappings '("C-x C-s" helm-org-ql-save)))
|
||||
(cl-loop for (key fn) on mappings by #'cddr
|
||||
do (define-key map (kbd key) fn))
|
||||
(make-composed-keymap map helm-map))
|
||||
"Keymap for `helm-org-ql' sessions.
|
||||
Based on `helm-map'.")
|
||||
|
||||
(defvar helm-source-org-ql-views
|
||||
(defvar helm-source-org-ql-views
|
||||
(helm-make-source "Org QL Views" 'helm-source-sync
|
||||
:candidates (lambda ()
|
||||
(->> org-ql-views
|
||||
|
|
@ -75,24 +77,24 @@ Based on `helm-map'.")
|
|||
:action (list (cons "Show view" #'org-ql-view)))
|
||||
"Helm source for `org-ql-views'.")
|
||||
|
||||
(defvar-local helm-org-ql-buffers-files nil
|
||||
(defvar-local helm-org-ql-buffers-files nil
|
||||
"Used for `helm-org-ql-save'.")
|
||||
|
||||
;;;; Customization
|
||||
|
||||
(defgroup helm-org-ql nil
|
||||
(defgroup helm-org-ql nil
|
||||
"Options for `helm-org-ql'."
|
||||
:group 'org-ql)
|
||||
|
||||
(defcustom helm-org-ql-reverse-paths t
|
||||
(defcustom helm-org-ql-reverse-paths t
|
||||
"Whether to reverse Org outline paths in `helm-org-ql' results."
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom helm-org-ql-input-idle-delay 0.25
|
||||
(defcustom helm-org-ql-input-idle-delay 0.25
|
||||
"Seconds to wait after typing stops before running query."
|
||||
:type 'number)
|
||||
|
||||
(defcustom helm-org-ql-actions
|
||||
(defcustom helm-org-ql-actions
|
||||
(list (cons "Show heading in source buffer" 'helm-org-ql-show-marker)
|
||||
(cons "Show heading in indirect buffer" 'helm-org-ql-show-marker-indirect))
|
||||
"Alist of actions for `helm-org-ql' commands."
|
||||
|
|
@ -102,7 +104,7 @@ Based on `helm-map'.")
|
|||
;;;; Commands
|
||||
|
||||
;;;###autoload
|
||||
(cl-defun helm-org-ql (buffers-files
|
||||
(cl-defun helm-org-ql (buffers-files
|
||||
&key (boolean 'and) (name "helm-org-ql"))
|
||||
"Display results in BUFFERS-FILES for an `org-ql' non-sexp query using Helm.
|
||||
Interactively, search the current buffer. Note that this command
|
||||
|
|
@ -138,19 +140,19 @@ Is transformed into this query:
|
|||
:sources (helm-org-ql-source buffers-files :name name))))
|
||||
|
||||
;;;###autoload
|
||||
(defun helm-org-ql-agenda-files ()
|
||||
(defun helm-org-ql-agenda-files ()
|
||||
"Search agenda files with `helm-org-ql', which see."
|
||||
(interactive)
|
||||
(helm-org-ql (org-agenda-files) :name "Org Agenda Files"))
|
||||
|
||||
;;;###autoload
|
||||
(defun helm-org-ql-org-directory ()
|
||||
(defun helm-org-ql-org-directory ()
|
||||
"Search Org files in `org-directory' with `helm-org-ql'."
|
||||
(interactive)
|
||||
(helm-org-ql (org-ql-search-directories-files)
|
||||
:name "Org Directory Files"))
|
||||
|
||||
(defun helm-org-ql-show-marker (marker)
|
||||
(defun helm-org-ql-show-marker (marker)
|
||||
"Show heading at MARKER."
|
||||
(interactive)
|
||||
;; This function is necessary because `helm-org-goto-marker' calls
|
||||
|
|
@ -161,13 +163,13 @@ Is transformed into this query:
|
|||
(goto-char marker)
|
||||
(org-show-entry))
|
||||
|
||||
(defun helm-org-ql-show-marker-indirect (marker)
|
||||
(defun helm-org-ql-show-marker-indirect (marker)
|
||||
"Show heading at MARKER with `org-tree-to-indirect-buffer'."
|
||||
(interactive)
|
||||
(helm-org-ql-show-marker marker)
|
||||
(org-tree-to-indirect-buffer))
|
||||
|
||||
(defun helm-org-ql-save ()
|
||||
(defun helm-org-ql-save ()
|
||||
"Show `helm-org-ql' search in an `org-ql-search' buffer."
|
||||
(interactive)
|
||||
(let ((buffers-files (with-current-buffer (helm-buffer-get)
|
||||
|
|
@ -176,14 +178,14 @@ Is transformed into this query:
|
|||
(helm-run-after-exit #'org-ql-search buffers-files query)))
|
||||
|
||||
;;;###autoload
|
||||
(defun helm-org-ql-views ()
|
||||
(defun helm-org-ql-views ()
|
||||
"Show an `org-ql' view selected with Helm."
|
||||
(interactive)
|
||||
(helm :sources helm-source-org-ql-views))
|
||||
|
||||
;;;; Functions
|
||||
|
||||
(cl-defun helm-org-ql-source (buffers-files &key (name "helm-org-ql"))
|
||||
(cl-defun helm-org-ql-source (buffers-files &key (name "helm-org-ql"))
|
||||
"Return Helm source named NAME that searches BUFFERS-FILES with `helm-org-ql'."
|
||||
;; Expansion of `helm-build-sync-source' macro.
|
||||
(helm-make-source name 'helm-source-sync
|
||||
|
|
@ -205,7 +207,7 @@ Is transformed into this query:
|
|||
:keymap helm-org-ql-map
|
||||
:action helm-org-ql-actions))
|
||||
|
||||
(defun helm-org-ql--heading (window-width)
|
||||
(defun helm-org-ql--heading (window-width)
|
||||
"Return string for Helm for heading at point.
|
||||
WINDOW-WIDTH should be the width of the Helm window."
|
||||
(font-lock-ensure (point-at-bol) (point-at-eol))
|
||||
|
|
@ -223,7 +225,7 @@ WINDOW-WIDTH should be the width of the Helm window."
|
|||
(path (if helm-org-ql-reverse-paths
|
||||
(concat heading "\\" (s-join "\\" (nreverse path)))
|
||||
(concat (s-join "/" path) "/" heading))))
|
||||
(cons (concat prefix path) (point-marker))))
|
||||
(cons (concat prefix path) (point-marker))))))
|
||||
|
||||
;;;; Footer
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue