From 65da6656c8eb76efd70df79669c67c755a0fe430 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Sat, 28 Jan 2017 17:30:40 +0100 Subject: emacs: use C-p for ERC too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miquel Sabaté Solà --- emacs/init.html | 132 ++++++++++++++++++++++++++++++++------------------------ emacs/init.org | 32 +++++++++++--- 2 files changed, 102 insertions(+), 62 deletions(-) diff --git a/emacs/init.html b/emacs/init.html index 7ebb0a7..804df77 100644 --- a/emacs/init.html +++ b/emacs/init.html @@ -4,7 +4,7 @@ mssola's GNU Emacs configuration - + @@ -718,7 +718,7 @@ require it here on the very top.
-
(use-package diminish
+
(use-package diminish
   :ensure t)
 
@@ -736,7 +736,7 @@ Ayo silver!
-
(use-package ag
+
(use-package ag
   :ensure t
   :config
 
@@ -758,14 +758,14 @@ Then, for keeping up with my projects I use the Projectile + Helm combination.
 
 
-
(use-package projectile
+
(use-package projectile
   :ensure t
   :config
   (projectile-mode 1)
   (setq projectile-mode-line
     '(:eval (format " %s" (projectile-project-name)))))
 
-(use-package helm
+(use-package helm
   :ensure t
   :config
   (setq projectile-completion-system 'helm)
@@ -797,10 +797,10 @@ Then, for keeping up with my projects I use the Projectile + Helm combination.
   (define-key helm-map (kbd "C-j") 'helm-next-line)
   (define-key helm-map (kbd "C-k") 'helm-previous-line)
 
-  (use-package helm-ag
+  (use-package helm-ag
     :ensure t))
 
-(use-package helm-projectile
+(use-package helm-projectile
   :ensure t
   :config
   (helm-projectile-on))
@@ -814,15 +814,35 @@ Finally, I've added a couple of bindings in evil mode. First of all, I want
 
 
-
(defun mssola-find-file ()
+
(defun erc-helm-buffer-list ()
+  "Returns a list with the ERC buffers."
+  (mapcar 'buffer-name (erc-buffer-list)))
+
+(setq helm-source-erc-channel-list
+      '((name . "ERC Channels")
+        (candidates . erc-helm-buffer-list)
+        (action . helm-switch-to-buffer)))
+
+(defun erc-helm-switch-buffer ()
+  "Use helm to select an active ERC buffer.  Replaces erc-iswitchb, which
+doesn't work for me."
+
+  (interactive)
+
+  (helm :sources '(helm-source-erc-channel-list)
+        :buffer "*helm-erc-channels*"))
+
+(defun mssola-find-file ()
   "Call the proper Helm function for finding files."
 
   (interactive)
 
-  (condition-case nil
-      (helm-projectile-find-file)
-    (error
-     (helm-find-files nil))))
+  (if (string= major-mode "erc-mode")
+      (erc-helm-switch-buffer)
+    (condition-case nil
+        (helm-projectile-find-file)
+      (error
+       (helm-find-files nil)))))
 
 (with-eval-after-load 'evil
   (define-key evil-normal-state-map (kbd "C-p") 'mssola-find-file))
@@ -887,10 +907,10 @@ extension. This works with lots of languages with proper glue code.
 
 
-
(use-package let-alist
+
(use-package let-alist
   :ensure t)
 
-(use-package flycheck
+(use-package flycheck
   :ensure t
   :diminish
   :config
@@ -913,7 +933,7 @@ with your editor, you have to increase/decrease the fonts. I use the
 
 
-
(use-package default-text-scale
+
(use-package default-text-scale
   :ensure t
   :config
   (global-set-key (kbd "C-+") 'default-text-scale-increase)
@@ -930,7 +950,7 @@ supports it).
 
 
-
(use-package rainbow-delimiters
+
(use-package rainbow-delimiters
   :ensure t)
 
@@ -941,7 +961,7 @@ I never use the mouse.
-
(use-package disable-mouse
+
(use-package disable-mouse
   :ensure t
   :diminish
   :config
@@ -957,7 +977,7 @@ commands for the current chord as a list.
 
 
-
(use-package which-key
+
(use-package which-key
   :ensure t)
 
@@ -969,7 +989,7 @@ this, we have wc-mode.
-
(use-package wc-mode
+
(use-package wc-mode
   :ensure t)
 
@@ -981,7 +1001,7 @@ that often, but it's cool to have a distraction-free screen from time to time.
-
(use-package writeroom-mode
+
(use-package writeroom-mode
   :ensure t)
 
@@ -994,7 +1014,7 @@ most of my uses, it's convenient to have this tool anyways.
-
(use-package expand-region
+
(use-package expand-region
   :ensure t
   :config
 
@@ -1029,7 +1049,7 @@ snippets in another buffer.
 
 
-
(use-package yasnippet
+
(use-package yasnippet
   :ensure t
   :diminish yas-minor-mode
   :init (yas-global-mode)
@@ -1167,7 +1187,7 @@ Evil extensions.
   (define-key evil-insert-state-map (kbd "C-s")
     (lambda () (interactive) (save-buffer) (evil-force-normal-state))))
 
-(use-package evil
+(use-package evil
   :ensure t
   :config
 
@@ -1186,7 +1206,7 @@ Evil extensions.
   (evil-set-initial-state 'describe-mode 'normal)
   (evil-set-initial-state 'Buffer-menu-mode 'normal)
 
-  (use-package evil-leader
+  (use-package evil-leader
     :ensure t
     :config
     (global-evil-leader-mode)
@@ -1203,17 +1223,17 @@ Evil extensions.
       "b" 'view-buffer
       "o" 'browse-url-at-point))
 
-  (use-package evil-surround
+  (use-package evil-surround
     :ensure t
     :config
     (global-evil-surround-mode 1))
 
-  (use-package evil-commentary
+  (use-package evil-commentary
     :ensure t
     :config
     (evil-commentary-mode t))
 
-  (use-package evil-args
+  (use-package evil-args
     :ensure t
     :config
     ; Configuration taken from the documentation of evil-args.
@@ -1228,7 +1248,7 @@ Evil extensions.
     (define-key evil-motion-state-map "L" 'evil-forward-arg)
     (define-key evil-motion-state-map "H" 'evil-backward-arg))
 
-  (use-package evil-numbers
+  (use-package evil-numbers
     :ensure t
     :config
     (define-key evil-normal-state-map (kbd "C-a") 'evil-numbers/inc-at-pt)
@@ -1248,7 +1268,7 @@ certainly useful for some common tasks (I guess that I still need some learning)
 
 
-
(use-package magit
+
(use-package magit
   :ensure t
   :config
 
@@ -1268,7 +1288,7 @@ certainly useful for some common tasks (I guess that I still need some learning)
   (with-eval-after-load 'evil-leader
     (evil-leader/set-key "s" 'magit-status)
 
-    (use-package evil-magit
+    (use-package evil-magit
       :ensure t
       :config
 
@@ -1616,7 +1636,7 @@ I want desktop notifications when receiving email.
 
 
-
(use-package mu4e-alert
+
(use-package mu4e-alert
   :ensure t
   :config
 
@@ -1632,7 +1652,7 @@ I want desktop notifications when receiving email.
 
 ; Evil mode in mu4e
 (with-eval-after-load 'evil
-  (use-package evil-mu4e
+  (use-package evil-mu4e
     :ensure t
     :config
 
@@ -1764,7 +1784,7 @@ blocks to be converted into HTML as well, so we can properly colorize it).
 
 
-
(use-package htmlize
+
(use-package htmlize
   :ensure t)
 
@@ -1933,7 +1953,7 @@ I'm giving ERC a chance. First of all, I'm setting up basic stuff.
-
(use-package erc
+
(use-package erc
   :config
 
   (erc-track-mode t)
@@ -2004,16 +2024,16 @@ Add some helper packages and update the loaded ERC modules.
 
(add-hook 'erc-connect-pre-hook
           (lambda (x) (erc-update-modules)))
 
-(use-package erc-hl-nicks
+(use-package erc-hl-nicks
   :ensure t)
 
-(use-package erc-yt
+(use-package erc-yt
   :ensure t
   :init
   (with-eval-after-load 'erc
     (add-to-list 'erc-modules 'youtube)))
 
-(use-package erc-image
+(use-package erc-image
   :ensure t
   :init
   (with-eval-after-load 'erc
@@ -2151,18 +2171,18 @@ And now my Go configuration. This includes stuff like the usage of goimpor
   (flyspell-prog-mode)
 
   ; eldoc support
-  (use-package go-eldoc
+  (use-package go-eldoc
     :ensure t
     :config
     (require 'go-eldoc))
 
-  (use-package go-add-tags
+  (use-package go-add-tags
     :ensure t
     :config
     (evil-leader/set-key "t" 'go-add-tags)))
 
 ;; Go
-(use-package go-mode
+(use-package go-mode
   :ensure t
   :pin melpa-stable
   :config
@@ -2181,7 +2201,7 @@ usings tabs for indentation (C, C++ and Go).
 
 
-
(use-package smart-tabs-mode
+
(use-package smart-tabs-mode
   :ensure t
   :config
   (smart-tabs-add-language-support golang go-mode-hook
@@ -2198,7 +2218,7 @@ Inferior markup languages.
 
;; Markdown mode with preview mode in the browser.
-(use-package markdown-mode
+(use-package markdown-mode
   :ensure t
   :config
 
@@ -2208,14 +2228,14 @@ Inferior markup languages.
 
   ; Preview mode does its things through websockets, so it's a requirement.
   ; After that, we can safely require it.
-  (use-package websocket
+  (use-package websocket
     :ensure t
     :config
-    (use-package markdown-preview-mode
+    (use-package markdown-preview-mode
       :ensure t)))
 
 ; YAML
-(use-package yaml-mode
+(use-package yaml-mode
   :ensure t
   :config
 
@@ -2229,20 +2249,20 @@ Web-related stuff.
 
 
-
(use-package slim-mode
+
(use-package slim-mode
   :ensure t)
 
-(use-package scss-mode
+(use-package scss-mode
   :ensure t
   :config
 
   (setq scss-compile-at-save nil)
   (add-hook 'yaml-mode-hook 'warnings-mode-hook))
 
-(use-package php-mode
+(use-package php-mode
   :ensure t)
 
-(use-package web-mode
+(use-package web-mode
   :ensure t
   :config
 
@@ -2264,7 +2284,7 @@ CMake for y'all.
 
 
-
(use-package cmake-mode
+
(use-package cmake-mode
   :ensure t
   :config
 
@@ -2274,7 +2294,7 @@ CMake for y'all.
          '(("\\.cmake\\'" . cmake-mode))
          auto-mode-alist))
 
-  (use-package cmake-font-lock
+  (use-package cmake-font-lock
     :ensure t
     :config
 
@@ -2290,19 +2310,19 @@ now because it's buggy, but I still have hope.
 
 
-
(use-package dockerfile-mode
+
(use-package dockerfile-mode
   :ensure t
   :config
 
   (add-to-list 'auto-mode-alist '("Dockerfile\\'" . dockerfile-mode)))
 
-(use-package terraform-mode
+(use-package terraform-mode
   :ensure t
   :config
 
   (terraform-format-on-save-mode))
 
-(use-package hcl-mode
+(use-package hcl-mode
   :ensure t)
 
 ;(use-package salt-mode
@@ -2340,7 +2360,7 @@ too many things into my leader and these shortcuts look sensible to me).
 
 
-
(use-package crux
+
(use-package crux
   :ensure t
   :bind (("C-c d" . crux-delete-file-and-buffer)
          ("C-c r" . crux-rename-file-and-buffer)
@@ -2402,7 +2422,7 @@ along with this program.  If not, see <
 
diff --git a/emacs/init.org b/emacs/init.org index 8e70291..9392a95 100644 --- a/emacs/init.org +++ b/emacs/init.org @@ -477,18 +477,38 @@ Finally, I've added a couple of bindings in evil mode. First of all, I want @@html:C-p@@ to use the proper function for finding files. #+BEGIN_SRC elisp - (defun mssola-find-file () - "Call the proper Helm function for finding files." +(defun erc-helm-buffer-list () + "Returns a list with the ERC buffers." + (mapcar 'buffer-name (erc-buffer-list))) - (interactive) +(setq helm-source-erc-channel-list + '((name . "ERC Channels") + (candidates . erc-helm-buffer-list) + (action . helm-switch-to-buffer))) + +(defun erc-helm-switch-buffer () + "Use helm to select an active ERC buffer. Replaces erc-iswitchb, which +doesn't work for me." + + (interactive) + + (helm :sources '(helm-source-erc-channel-list) + :buffer "*helm-erc-channels*")) +(defun mssola-find-file () + "Call the proper Helm function for finding files." + + (interactive) + + (if (string= major-mode "erc-mode") + (erc-helm-switch-buffer) (condition-case nil (helm-projectile-find-file) (error - (helm-find-files nil)))) + (helm-find-files nil))))) - (with-eval-after-load 'evil - (define-key evil-normal-state-map (kbd "C-p") 'mssola-find-file)) +(with-eval-after-load 'evil + (define-key evil-normal-state-map (kbd "C-p") 'mssola-find-file)) #+END_SRC Similarly, =helm-ag= has two functions for applying =ag= on the project. I'm -- cgit v1.2.3