diff options
-rw-r--r-- | .travis.yml | 2 | ||||
-rwxr-xr-x | bot/sx-bot.sh | 2 | ||||
-rw-r--r-- | sx-babel.el | 6 | ||||
-rw-r--r-- | sx-question-print.el | 23 | ||||
-rw-r--r-- | sx-request.el | 4 | ||||
-rw-r--r-- | test/test-printing.el | 57 |
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"))) |