aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rwxr-xr-xbot/sx-bot.sh2
-rw-r--r--sx-babel.el6
-rw-r--r--sx-question-print.el23
-rw-r--r--sx-request.el4
-rw-r--r--test/test-printing.el57
6 files changed, 82 insertions, 12 deletions
diff --git a/.travis.yml b/.travis.yml
index d00ab46..067fa62 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -31,7 +31,7 @@ script:
notifications:
webhooks:
urls:
- - https://webhooks.gitter.im/e/07063bd143e35f54b1e8
+ - https://webhooks.gitter.im/e/77b562dfc62ea5cd545a
on_success: change # options: [always|never|change] default: always
on_failure: always # options: [always|never|change] default: always
on_start: false # default: false
diff --git a/bot/sx-bot.sh b/bot/sx-bot.sh
index 6a5df17..22c7284 100755
--- a/bot/sx-bot.sh
+++ b/bot/sx-bot.sh
@@ -1,6 +1,6 @@
#!/usr/bin/bash
-DESTINATION_BRANCH=gh-pages
+DESTINATION_BRANCH=data
function notify-done {
local title
diff --git a/sx-babel.el b/sx-babel.el
index 31c0924..7f84fe0 100644
--- a/sx-babel.el
+++ b/sx-babel.el
@@ -34,6 +34,12 @@
;; @TODO: Make shell-mode work here. Currently errors because it
;; needs a process. `sh-mode' isn't as nice.
(,(rx (or "$ " "# ")) sh-mode)
+ ;; Not sure if leaving out "[{" might lead to false positives.
+ (,(rx "\\" (+ alnum) (any "[{")) latex-mode)
+ ;; Right now, this will match a lot of stuff. Once we are capable
+ ;; of determining major-mode from tags, site, and comments, this
+ ;; will work as a last case fallback.
+ (,(rx (or (and "int" (+ space) "main" (* space) "("))) c-mode)
)
"List of cons cells determining which major-mode to use when.
Each car is a rule and each cdr is a major-mode. The first rule
diff --git a/sx-question-print.el b/sx-question-print.el
index 37fa238..7881b52 100644
--- a/sx-question-print.el
+++ b/sx-question-print.el
@@ -303,18 +303,22 @@ where `value' is given `face' as its face.
'face 'markdown-list-face)
"String to be displayed as the bullet of markdown list items.")
-(defvar sx-question-mode--reference-regexp
+(defconst sx-question-mode--reference-regexp
(rx line-start (0+ blank) "[%s]:" (0+ blank)
(group-n 1 (1+ (not blank))))
"Regexp used to find the url of labeled links.
E.g.:
[1]: https://...")
-(defvar sx-question-mode--link-regexp
+(defconst sx-question-mode--link-regexp
;; Done at compile time.
- (rx "[" (group-n 1 (1+ (not (any "]")))) "]"
- (or (and "(" (group-n 2 (1+ (not (any ")")))) ")")
- (and "[" (group-n 3 (1+ (not (any "]")))) "]")))
+ (rx (or (and "[" (group-n 1 (1+ (not (any "]")))) "]"
+ (or (and "(" (group-n 2 (1+ (not (any ")")))) ")")
+ (and "[" (group-n 3 (1+ (not (any "]")))) "]")))
+ (group-n 4 (and (or (and "http" (opt "s") "://") "")
+ (+ (any alnum "_%"))
+ "."
+ (+ (any alnum "/._%&#?=;"))))))
"Regexp matching markdown links.")
(defun sx-question-mode--fill-and-fontify (text)
@@ -358,6 +362,7 @@ E.g.:
(while (search-forward-regexp sx-question-mode--link-regexp nil t)
(let* ((text (match-string-no-properties 1))
(url (or (match-string-no-properties 2)
+ (match-string-no-properties 4)
(sx-question-mode-find-reference
(match-string-no-properties 3)
text)))
@@ -365,7 +370,7 @@ E.g.:
(when (stringp url)
(replace-match "")
(sx-question-mode--insert-link
- (if sx-question-mode-pretty-links text full-text)
+ (or (if sx-question-mode-pretty-links text full-text) url)
url))))))
(defun sx-question-mode--insert-link (text url)
@@ -443,9 +448,11 @@ font-locking."
(defun sx-question-mode--skip-references ()
"If there's a reference ahead, skip it and return non-nil."
- (while (looking-at-p (format sx-question-mode--reference-regexp ".+"))
+ (forward-line 0)
+ (when (looking-at-p (format sx-question-mode--reference-regexp ".+"))
;; Returns non-nil
- (forward-line 1)))
+ (forward-paragraph 1)
+ t))
(provide 'sx-question-print)
;;; sx-question-print.el ends here
diff --git a/sx-request.el b/sx-request.el
index f892367..9a788ca 100644
--- a/sx-request.el
+++ b/sx-request.el
@@ -217,8 +217,8 @@ Currently returns nil."
;;; Our own generated data
-(defvar sx-request--data-url-format
- "https://raw.githubusercontent.com/vermiculus/sx.el/data/data/%s.el"
+(defconst sx-request--data-url-format
+ "http://raw.githubusercontent.com/vermiculus/sx.el/data/data/%s.el"
"Url of the \"data\" directory inside the SX `data' branch.")
(defun sx-request-get-data (file)
diff --git a/test/test-printing.el b/test/test-printing.el
index 10b1d06..7384829 100644
--- a/test/test-printing.el
+++ b/test/test-printing.el
@@ -133,3 +133,60 @@ after being run through `sx-question--tag-format'."
'((answers . [something "answer"]))))
(should
(equal object '((answers . [something "answer"]))))))
+
+(ert-deftest sx-question-mode--fill-and-fontify ()
+ "Check complicated questions are filled correctly."
+ (should
+ (equal
+ (sx-question-mode--fill-and-fontify
+ "Creating an account on a new site requires you to log into that site using *the same credentials you used on existing sites.* For instance, if you used the Stack Exchange login method, you'd...
+
+1. Click the \"Log in using Stack Exchange\" button:
+
+ ![][1]
+
+2. Enter your username and password (yes, even if you *just did this* to log into, say, Stack Overflow) and press the \"Log In\" button:
+
+ ![][2]
+
+3. Confirm the creation of the new account:
+
+ ![][3]
+
+ some code block
+ some code block
+ some code block
+ some code block
+ some code block
+ some code block
+
+ [1]: http://i.stack.imgur.com/ktFTs.png
+ [2]: http://i.stack.imgur.com/5l2AY.png
+ [3]: http://i.stack.imgur.com/22myl.png")
+ "Creating an account on a new site requires you to log into that site
+using *the same credentials you used on existing sites.* For instance,
+if you used the Stack Exchange login method, you'd...
+
+1. Click the \"Log in using Stack Exchange\" button:
+
+ ![][1]
+
+2. Enter your username and password (yes, even if you *just did this*
+ to log into, say, Stack Overflow) and press the \"Log In\" button:
+
+ ![][2]
+
+3. Confirm the creation of the new account:
+
+ ![][3]
+
+ some code block
+ some code block
+ some code block
+ some code block
+ some code block
+ some code block
+
+ [1]: http://i.stack.imgur.com/ktFTs.png
+ [2]: http://i.stack.imgur.com/5l2AY.png
+ [3]: http://i.stack.imgur.com/22myl.png")))