diff options
author | Sean Allred <code@seanallred.com> | 2014-11-14 11:11:00 -0500 |
---|---|---|
committer | Sean Allred <code@seanallred.com> | 2014-11-14 11:11:00 -0500 |
commit | ea5583db069afa160d2cea1c07d9f46d5f97e30b (patch) | |
tree | 427a40cdea5159c3d586ae9d5bc6eb0429e354a5 | |
parent | 77e519de7b1219767a25399b727c2aece6189e6c (diff) |
Implement basic site switching
-rw-r--r-- | sx-question-list.el | 13 | ||||
-rw-r--r-- | sx-site.el | 35 |
2 files changed, 48 insertions, 0 deletions
diff --git a/sx-question-list.el b/sx-question-list.el index ff1bdaa..2f877cc 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 (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) + (call-interactively #'sx-question-list-refresh)) + (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..20f184f --- /dev/null +++ b/sx-site.el @@ -0,0 +1,35 @@ +;;; sx-site.el --- site functions + +;; Copyright (C) 2014 Sean Allred + +;; Author: Sean Allred <code@seanallred.com> +;; Keywords: + +;; 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 " + (mapcar + (lambda (site) (cdr (assoc 'api_site_parameter site))) + (sx-method-call "sites" '((pagesize . 9999))))) + +(provide 'sx-site) +;;; sx-site.el ends here |