aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Allred <code@seanallred.com>2014-11-14 14:26:29 -0500
committerSean Allred <code@seanallred.com>2014-11-14 14:26:29 -0500
commit5691471569cba78418e7b53856a77948949b81d9 (patch)
tree8c5e3da092a8485bb3f0be505e0eebc6f54b7bc9
parent77e519de7b1219767a25399b727c2aece6189e6c (diff)
parent9f50150b87d8b1bdd62fec30983f45b0d03de22f (diff)
Merge pull request #47 from vermiculus/switching-networks
Implement basic site switching
-rw-r--r--sx-question-list.el13
-rw-r--r--sx-site.el34
2 files changed, 47 insertions, 0 deletions
diff --git a/sx-question-list.el b/sx-question-list.el
index ff1bdaa..a1dec7a 100644
--- a/sx-question-list.el
+++ b/sx-question-list.el
@@ -25,6 +25,7 @@
(require 'sx)
(require 'sx-time)
+(require 'sx-site)
(require 'sx-question)
(require 'sx-question-mode)
@@ -133,6 +134,7 @@ Letters do not insert themselves; instead, they are commands.
("j" sx-question-list-view-next)
("k" sx-question-list-view-previous)
("g" sx-question-list-refresh)
+ (":" sx-question-list-switch-site)
("v" sx-question-list-visit)
([?\r] sx-question-list-display-question)))
@@ -297,6 +299,17 @@ focus the relevant window."
(select-window sx-question-mode--window)
(switch-to-buffer sx-question-mode--buffer))))
+(defun sx-question-list-switch-site (site)
+ "Switch the current site to SITE and display its questions"
+ (interactive
+ (list (funcall (if ido-mode #'ido-completing-read #'completing-read)
+ "Switch to site: " (sx-site-get-api-tokens)
+ (lambda (site)
+ (not (equal site sx-question-list--current-site)))
+ t)))
+ (setq sx-question-list--current-site site)
+ (sx-question-list-refresh 'redisplay))
+
(defvar sx-question-list--buffer nil
"Buffer where the list of questions is displayed.")
diff --git a/sx-site.el b/sx-site.el
new file mode 100644
index 0000000..8775542
--- /dev/null
+++ b/sx-site.el
@@ -0,0 +1,34 @@
+;;; sx-site.el --- site functions
+
+;; Copyright (C) 2014 Sean Allred
+
+;; Author: Sean Allred <code@seanallred.com>
+
+;; 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 <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;
+
+;;; Code:
+
+;;; @TODO use new caching system implemented in branch `network-list'
+(defun sx-site-get-api-tokens ()
+ "Return a list of all known site tokens."
+ (mapcar
+ (lambda (site) (cdr (assoc 'api_site_parameter site)))
+ (sx-method-call "sites" '((pagesize . 9999)))))
+
+(provide 'sx-site)
+;;; sx-site.el ends here