From 38c7c3e8f062dc8f0f61136312d8bccdb78f8f2e Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Sun, 4 Jan 2015 11:36:36 -0200 Subject: Rename to sx-switchto.el --- sx-switchto.el | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 sx-switchto.el (limited to 'sx-switchto.el') diff --git a/sx-switchto.el b/sx-switchto.el new file mode 100644 index 0000000..064ba82 --- /dev/null +++ b/sx-switchto.el @@ -0,0 +1,56 @@ +;;; sx-switchto.el --- Keymap for navigating between pages. -*- lexical-binding: t; -*- + +;; Copyright (C) 2014 Artur Malabarba + +;; Author: Artur Malabarba + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;;; Code: + +(require 'sx) +(require 'sx-filter) +(require 'sx-method) +(require 'sx-question-list) + + +;;; Keybinds +;;;###autoload +(define-prefix-command 'sx-switchto-map) + +(mapc (lambda (x) (define-key sx-switchto-map (car x) (cadr x))) + '( + ;; These immitate the site's G hotkey. + ("m" sx-tab-meta-or-main) + ("a" sx-ask) + ("h" sx-tab-frontpage) + ;; This is `n' on the site. + ("u" sx-tab-unanswered) + ;; These are extra things we can do, because we're awesome. + ("i" sx-inbox) + ("f" sx-tab-featured) + ("U" sx-tab-unanswered-my-tags) + ("n" sx-tab-newest) + ("w" sx-tab-week) + ("v" sx-tab-topvoted) + )) + +(provide 'sx-switchto) +;;; sx-switchto.el ends here + +;; Local Variables: +;; indent-tabs-mode: nil +;; End: -- cgit v1.2.3 From 7792498420eeb3c1ba8de447b90ae19a9b9e5410 Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Sun, 4 Jan 2015 11:42:01 -0200 Subject: Alphabetical sort. --- sx-switchto.el | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'sx-switchto.el') diff --git a/sx-switchto.el b/sx-switchto.el index 064ba82..8305644 100644 --- a/sx-switchto.el +++ b/sx-switchto.el @@ -34,18 +34,18 @@ (mapc (lambda (x) (define-key sx-switchto-map (car x) (cadr x))) '( ;; These immitate the site's G hotkey. - ("m" sx-tab-meta-or-main) ("a" sx-ask) ("h" sx-tab-frontpage) + ("m" sx-tab-meta-or-main) ;; This is `n' on the site. ("u" sx-tab-unanswered) ;; These are extra things we can do, because we're awesome. - ("i" sx-inbox) ("f" sx-tab-featured) - ("U" sx-tab-unanswered-my-tags) + ("i" sx-inbox) ("n" sx-tab-newest) - ("w" sx-tab-week) + ("U" sx-tab-unanswered-my-tags) ("v" sx-tab-topvoted) + ("w" sx-tab-week) )) (provide 'sx-switchto) -- cgit v1.2.3 From bab11dd61c08f3522d874166d7033dd867492d11 Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Sun, 4 Jan 2015 11:42:30 -0200 Subject: ADd sx-tab-switch --- sx-switchto.el | 1 + 1 file changed, 1 insertion(+) (limited to 'sx-switchto.el') diff --git a/sx-switchto.el b/sx-switchto.el index 8305644..46a085e 100644 --- a/sx-switchto.el +++ b/sx-switchto.el @@ -43,6 +43,7 @@ ("f" sx-tab-featured) ("i" sx-inbox) ("n" sx-tab-newest) + ("t" sx-tab-switch) ("U" sx-tab-unanswered-my-tags) ("v" sx-tab-topvoted) ("w" sx-tab-week) -- cgit v1.2.3 From 191dc355ae2ca00cdb84d01298a8caea14dbe8da Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Sun, 4 Jan 2015 11:43:03 -0200 Subject: Add sx-question-list-switch-site --- sx-switchto.el | 1 + 1 file changed, 1 insertion(+) (limited to 'sx-switchto.el') diff --git a/sx-switchto.el b/sx-switchto.el index 46a085e..e5889e1 100644 --- a/sx-switchto.el +++ b/sx-switchto.el @@ -43,6 +43,7 @@ ("f" sx-tab-featured) ("i" sx-inbox) ("n" sx-tab-newest) + ("s" sx-question-list-switch-site) ("t" sx-tab-switch) ("U" sx-tab-unanswered-my-tags) ("v" sx-tab-topvoted) -- cgit v1.2.3 From 25cf5bf2e784ac870fa4c6f00502eda6dc8e7f22 Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Sun, 4 Jan 2015 12:06:23 -0200 Subject: Define some keys conditionally --- sx-switchto.el | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'sx-switchto.el') diff --git a/sx-switchto.el b/sx-switchto.el index e5889e1..1a2c3a0 100644 --- a/sx-switchto.el +++ b/sx-switchto.el @@ -43,13 +43,31 @@ ("f" sx-tab-featured) ("i" sx-inbox) ("n" sx-tab-newest) - ("s" sx-question-list-switch-site) ("t" sx-tab-switch) ("U" sx-tab-unanswered-my-tags) ("v" sx-tab-topvoted) ("w" sx-tab-week) )) + +;;; These are keys which depend on context. +;;;; For instance, it makes no sense to have `switch-site' bound to a +;;;; key on a buffer with no `sx-question-list--site' variable. +(defmacro sx--define-conditional-key (keymap key def &rest body) + "In KEYMAP, define key sequence KEY as DEF conditionally. +This is like `define-key', except the definition \"disapears\" +whenever BODY evaluates to nil." + (declare (indent 3) + (debug (form form form &rest sexp))) + `(define-key ,keymap ,key + '(menu-item + ,(format "maybe-%s" (or (car (cdr-safe def)) def)) ignore + :filter (lambda (&optional _) + (when (progn ,@body) ,def))))) + +(sx--define-conditional-key sx-switchto-map "s" #'sx-question-list-switch-site + (and (boundp 'sx-question-list--site) sx-question-list--site)) + (provide 'sx-switchto) ;;; sx-switchto.el ends here -- cgit v1.2.3