aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2014-11-18 19:35:39 +0000
committerArtur Malabarba <bruce.connor.am@gmail.com>2014-11-18 19:35:39 +0000
commit336e842a4b955f738fb1ca5f9336151d030c4daa (patch)
tree68d4fae8c8430e867912690ffbeacadc272d85dc
parent0b2a393bb232c3da5362b45def6371d2c7d72b27 (diff)
parentd0be11905aea5d86705e86c6b5eed57d2f6bc218 (diff)
Merge pull request #72 from jleechpe/sx-questions-show-favorite
Implements indication of starred questions in question-list
-rw-r--r--sx-question-list.el64
1 files changed, 38 insertions, 26 deletions
diff --git a/sx-question-list.el b/sx-question-list.el
index 72eabd3..dead68f 100644
--- a/sx-question-list.el
+++ b/sx-question-list.el
@@ -28,6 +28,7 @@
(require 'sx-site)
(require 'sx-question)
(require 'sx-question-mode)
+(require 'sx-favorites)
;;; Customization
@@ -86,6 +87,11 @@
""
:group 'sx-question-list-faces)
+(defface sx-question-list-favorite
+ '((t :inherit sx-question-list-score-upvoted))
+ ""
+ :group 'sx-question-list-faces)
+
;;; Mode Definition
(define-derived-mode sx-question-list-mode tabulated-list-mode "Question List"
@@ -219,32 +225,38 @@ Used in the questions list to indicate a question was updated \"4d ago\"."
(defun sx-question-list--print-info (data)
"Convert `json-read' DATA into tabulated-list format."
(sx-assoc-let data
- (list
- data
- (vector
- (list (int-to-string .score)
- 'face (if .upvoted 'sx-question-list-score-upvoted
- 'sx-question-list-score))
- (list (int-to-string .answer_count)
- 'face (if (sx-question--accepted-answer-id data)
- 'sx-question-list-answers-accepted
- 'sx-question-list-answers))
- (concat
- (propertize
- .title
- 'face (if (sx-question--read-p data)
- 'sx-question-list-read-question
- ;; Increment `sx-question-list--unread-count' for the mode-line.
- (cl-incf sx-question-list--unread-count)
- 'sx-question-list-unread-question))
- (propertize " " 'display "\n ")
- (propertize (concat (sx-time-since .last_activity_date)
- sx-question-list-ago-string)
- 'face 'sx-question-list-date)
- " "
- (propertize (mapconcat #'sx-question--tag-format .tags " ")
- 'face 'sx-question-list-tags)
- (propertize " " 'display "\n"))))))
+ (let ((favorite (if (member .question_id
+ (assoc .site
+ sx-favorites--user-favorite-list))
+ (if (char-displayable-p ?\x2b26) "\x2b26" "*") " ")))
+ (list
+ data
+ (vector
+ (list (int-to-string .score)
+ 'face (if .upvoted 'sx-question-list-score-upvoted
+ 'sx-question-list-score))
+ (list (int-to-string .answer_count)
+ 'face (if (sx-question--accepted-answer-id data)
+ 'sx-question-list-answers-accepted
+ 'sx-question-list-answers))
+ (concat
+ (propertize
+ .title
+ 'face (if (sx-question--read-p data)
+ 'sx-question-list-read-question
+ ;; Increment `sx-question-list--unread-count' for the mode-line.
+ (cl-incf sx-question-list--unread-count)
+ 'sx-question-list-unread-question))
+ (propertize " " 'display "\n ")
+ (propertize favorite 'face 'sx-question-list-favorite)
+ " "
+ (propertize (concat (sx-time-since .last_activity_date)
+ sx-question-list-ago-string)
+ 'face 'sx-question-list-date)
+ " "
+ (propertize (mapconcat #'sx-question--tag-format .tags " ")
+ 'face 'sx-question-list-tags)
+ (propertize " " 'display "\n")))))))
(defun sx-question-list-view-previous (n)
"Hide this question, move to previous one, display it."