From ea5583db069afa160d2cea1c07d9f46d5f97e30b Mon Sep 17 00:00:00 2001 From: Sean Allred Date: Fri, 14 Nov 2014 11:11:00 -0500 Subject: Implement basic site switching --- sx-question-list.el | 13 +++++++++++++ sx-site.el | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 sx-site.el 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 +;; 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 . + +;;; 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 -- cgit v1.2.3 From eaba0d1595836812d38081fd049185d795dd57bb Mon Sep 17 00:00:00 2001 From: Sean Allred Date: Fri, 14 Nov 2014 14:11:12 -0500 Subject: Fix documentation --- sx-site.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sx-site.el b/sx-site.el index 20f184f..8775542 100644 --- a/sx-site.el +++ b/sx-site.el @@ -3,7 +3,6 @@ ;; Copyright (C) 2014 Sean Allred ;; Author: Sean Allred -;; 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 @@ -26,7 +25,7 @@ ;;; @TODO use new caching system implemented in branch `network-list' (defun sx-site-get-api-tokens () - "Return a list of all known " + "Return a list of all known site tokens." (mapcar (lambda (site) (cdr (assoc 'api_site_parameter site))) (sx-method-call "sites" '((pagesize . 9999))))) -- cgit v1.2.3 From fd3f074b21738e3305c620325323f7f952318e53 Mon Sep 17 00:00:00 2001 From: Sean Allred Date: Fri, 14 Nov 2014 14:15:17 -0500 Subject: Use Ido when it is enabled --- sx-question-list.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sx-question-list.el b/sx-question-list.el index 2f877cc..9c03405 100644 --- a/sx-question-list.el +++ b/sx-question-list.el @@ -302,7 +302,7 @@ focus the relevant window." (defun sx-question-list-switch-site (site) "Switch the current site to SITE and display its questions" (interactive - (list (completing-read + (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))) -- cgit v1.2.3 From 9f50150b87d8b1bdd62fec30983f45b0d03de22f Mon Sep 17 00:00:00 2001 From: Sean Allred Date: Fri, 14 Nov 2014 14:16:07 -0500 Subject: Use function call instead of `call-interactively' --- sx-question-list.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sx-question-list.el b/sx-question-list.el index 9c03405..a1dec7a 100644 --- a/sx-question-list.el +++ b/sx-question-list.el @@ -308,7 +308,7 @@ focus the relevant window." (not (equal site sx-question-list--current-site))) t))) (setq sx-question-list--current-site site) - (call-interactively #'sx-question-list-refresh)) + (sx-question-list-refresh 'redisplay)) (defvar sx-question-list--buffer nil "Buffer where the list of questions is displayed.") -- cgit v1.2.3 From ff9298fdf3f35a6c110375445639f9e7bb41ec7f Mon Sep 17 00:00:00 2001 From: Jonathan Leech-Pepin Date: Fri, 14 Nov 2014 14:49:28 -0500 Subject: Set `sx-request-api-root` to use `https` instead of `http`. This will prevent loss of authentication token when using authentication. --- sx-request.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sx-request.el b/sx-request.el index b16fd9a..6dc54e7 100644 --- a/sx-request.el +++ b/sx-request.el @@ -41,7 +41,7 @@ "The current version of the API.") (defconst sx-request-api-root - (format "http://api.stackexchange.com/%s/" sx-request-api-version) + (format "https://api.stackexchange.com/%s/" sx-request-api-version) "The base URL to make requests from.") (defcustom sx-request-silent-p -- cgit v1.2.3 From 2d8c61963146ee8fc32684c47b3a3761320e671a Mon Sep 17 00:00:00 2001 From: Jonathan Leech-Pepin Date: Fri, 14 Nov 2014 15:18:34 -0500 Subject: Change `access-token` to `access_token` to match api key. --- sx-auth.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sx-auth.el b/sx-auth.el index 7912508..f32e7aa 100644 --- a/sx-auth.el +++ b/sx-auth.el @@ -64,7 +64,7 @@ questions)." (if (string-equal "" sx-auth-access-token) (progn (setq sx-auth-access-token nil) (error "You must enter this code to use this client fully")) - (sx-cache-set 'auth `((access-token . ,sx-auth-access-token))))) + (sx-cache-set 'auth `((access_token . ,sx-auth-access-token))))) (provide 'sx-auth) ;;; sx-auth.el ends here -- cgit v1.2.3