diff --git a/markdown-mode.el b/markdown-mode.el index a05a3ec6..ebce9789 100644 --- a/markdown-mode.el +++ b/markdown-mode.el @@ -1102,6 +1102,12 @@ curly braces. They may be of arbitrary capitalization, though." :group 'markdown :type 'boolean) +(defcustom markdown-gfm-downcase-languages t + "Downcase suggested languages when inserting them to code blocks with +`markdown-electric-backquote'." + :group 'markdown + :type 'boolean) + ;;; Regular Expressions ======================================================= @@ -3281,9 +3287,12 @@ already in `markdown-gfm-recognized-languages' or (defun markdown-gfm-get-corpus () "Create corpus of recognized GFM code block languages for the given buffer." - (append markdown-gfm-used-languages - markdown-gfm-additional-languages - markdown-gfm-recognized-languages)) + (let ((given-corpus (append markdown-gfm-additional-languages + markdown-gfm-recognized-languages))) + (append + markdown-gfm-used-languages + (if markdown-gfm-downcase-languages (cl-mapcar #'downcase given-corpus) + given-corpus)))) (defun markdown-add-language-if-new (lang) (let* ((cleaned-lang (markdown-clean-language-string lang)) @@ -3301,16 +3310,14 @@ the region boundaries are not on empty lines, these are added automatically in order to have the correct markup." (interactive (list (let ((completion-ignore-case nil)) - (condition-case _err + (condition-case nil (markdown-clean-language-string (completing-read (format "Programming language [%s]: " (or markdown-gfm-last-used-language "none")) (markdown-gfm-get-corpus) nil 'confirm nil - 'markdown-gfm-language-history - (or markdown-gfm-last-used-language - (car markdown-gfm-additional-languages)))) + 'markdown-gfm-language-history)) (quit ""))))) (unless (string= lang "") (markdown-add-language-if-new lang)) (when (> (length lang) 0) (setq lang (concat " " lang))) diff --git a/tests/markdown-test.el b/tests/markdown-test.el index 1e918ac7..67f4066e 100644 --- a/tests/markdown-test.el +++ b/tests/markdown-test.el @@ -3243,7 +3243,21 @@ indented the same amount." (markdown-insert-gfm-code-block "newlang") (should (equal markdown-gfm-used-languages (list "newlang" "MaDeUp" "LANGUAGES" "MADEUP"))) - (should (equal markdown-gfm-last-used-language "newlang")))) + (should (equal markdown-gfm-last-used-language "newlang")) + (let ((markdown-gfm-downcase-languages nil)) + (should + (equal (markdown-gfm-get-corpus) + (append markdown-gfm-used-languages + markdown-gfm-additional-languages + markdown-gfm-recognized-languages)))) + (let ((markdown-gfm-downcase-languages t)) + (should + (equal + (markdown-gfm-get-corpus) + (append markdown-gfm-used-languages + (cl-mapcar #'downcase + (append markdown-gfm-additional-languages + markdown-gfm-recognized-languages)))))))) (ert-deftest test-markdown-gfm/code-block-font-lock () "GFM code block font lock test."