emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 048f479 13/19: Add four more commands


From: Oleh Krehel
Subject: [elpa] master 048f479 13/19: Add four more commands
Date: Thu, 16 Apr 2015 12:18:13 +0000

branch: master
commit 048f4794bf1798ec5391bef6c89457303dbc6692
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>

    Add four more commands
    
    * counsel.el (counsel-describe-variable): New defun.
    (counsel-describe-function): New defun.
    (counsel-info-lookup-symbol): New defun.
    (counsel-unicode-char): New defun.
    
    * Makefile: Compile counsel.el as well.
---
 Makefile   |    2 +-
 counsel.el |   81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 82 insertions(+), 1 deletions(-)

diff --git a/Makefile b/Makefile
index 453f709..7c9910e 100644
--- a/Makefile
+++ b/Makefile
@@ -10,7 +10,7 @@ test:
        $(emacs) -batch $(LOAD) -l ivy-test.el -f ert-run-tests-batch-and-exit
 
 compile:
-       $(emacs) -batch $(LOAD) --eval "(mapc #'byte-compile-file '(\"ivy.el\" 
\"swiper.el\"))"
+       $(emacs) -batch $(LOAD) --eval "(mapc #'byte-compile-file '(\"ivy.el\" 
\"swiper.el\" \"counsel.el\"))"
 
 clean:
        rm -f *.elc
diff --git a/counsel.el b/counsel.el
index 22884ea..24e9d6d 100644
--- a/counsel.el
+++ b/counsel.el
@@ -40,6 +40,87 @@
   (counsel--generic
    (lambda (str) (all-completions str obarray))))
 
+(defun counsel-describe-variable (variable &optional buffer frame)
+  "Forward to (`describe-variable' VARIABLE BUFFER FRAME)."
+  (interactive
+   (let ((v (variable-at-point))
+         (enable-recursive-minibuffers t)
+         val)
+     (setq val (ivy-read
+                (if (symbolp v)
+                    (format
+                     "Describe variable (default %s): " v)
+                  "Describe variable: ")
+                (let (cands)
+                  (mapatoms
+                   (lambda (vv)
+                     (when (or (get vv 'variable-documentation)
+                               (and (boundp vv) (not (keywordp vv))))
+                       (push (symbol-name vv) cands))))
+                  cands)))
+     (list (if (equal val "")
+               v
+             (intern val)))))
+  (describe-variable variable buffer frame))
+
+(defun counsel-describe-function (function)
+  "Forward to (`describe-function' FUNCTION) with ivy completion."
+  (interactive
+   (let ((fn (function-called-at-point))
+         (enable-recursive-minibuffers t)
+         val)
+     (setq val (ivy-read (if fn
+                             (format "Describe function (default %s): " fn)
+                           "Describe function: ")
+                         (let (cands)
+                           (mapatoms
+                            (lambda (x)
+                              (when (fboundp x)
+                                (push (symbol-name x) cands))))
+                           cands)))
+     (list (if (equal val "")
+               fn (intern val)))))
+  (describe-function function))
+
+(defvar info-lookup-mode)
+(declare-function info-lookup->completions "info-look")
+(declare-function info-lookup->mode-value "info-look")
+(declare-function info-lookup-select-mode "info-look")
+(declare-function info-lookup-change-mode "info-look")
+(declare-function info-lookup "info-look")
+
+(defun counsel-info-lookup-symbol (symbol &optional mode)
+  "Forward to (`info-describe-symbol' SYMBOL MODE) with ivy completion."
+  (interactive
+   (progn
+     (require 'info-look)
+     (let* ((topic 'symbol)
+            (mode (cond (current-prefix-arg
+                         (info-lookup-change-mode topic))
+                        ((info-lookup->mode-value
+                          topic (info-lookup-select-mode))
+                         info-lookup-mode)
+                        ((info-lookup-change-mode topic))))
+            (completions (info-lookup->completions topic mode))
+            (enable-recursive-minibuffers t)
+            (value (ivy-read
+                    "Describe symbol: "
+                    (mapcar #'car completions))))
+       (list value info-lookup-mode))))
+  (info-lookup 'symbol symbol mode))
+
+(defun counsel-unicode-char ()
+  "Insert a Unicode character at point."
+  (interactive)
+  (let* ((minibuffer-allow-text-properties t)
+         (char (ivy-read "Unicode name: "
+                         (mapcar (lambda (x)
+                                   (propertize
+                                    (format "% -60s%c" (car x) (cdr x))
+                                    'result (cdr x)))
+                                 (ucs-names)))))
+    (insert-char (get-text-property 0 'result char))))
+
 (defun counsel-clj ()
   "Clojure completion at point."
   (interactive)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]