branch: elpa/markdown-mode
commit 819ab2a212508062edfd57e0c2d5ab3ffe8feda6
Merge: 5bebb44f7f 7659bc470d
Author: Joe Reinhart <joseph.reinh...@gmail.com>
Commit: Joe Reinhart <joseph.reinh...@gmail.com>

    Merge branch 'master' into jayemar/toggle-hiding-of-wiki-links
---
 CHANGES.md             |  6 ++++++
 README.md              |  3 +++
 markdown-mode.el       | 14 +++++++++++++-
 tests/markdown-test.el | 43 +++++++++++++++++++++++++++++++++++++++----
 4 files changed, 61 insertions(+), 5 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index 55e63f647d..58748f5ace 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -14,6 +14,7 @@
     - Trailing whitespace characters for line breaks are hidden when using
       `markdown-hide-markup`
     - `fill-paragraph` considers GFM alert syntax [GH-838][]
+    - Add new flag `markdown-wiki-link-retain-case` [GH-839][]
 
 *   Bug fixes:
     - Don't highlight superscript/subscript in math inline/block [GH-802][]
@@ -22,6 +23,7 @@
     - Don't hide backslashes in code blocks when using `markdown-hide-markup`
       and `markdown-fontify-code-blocks-natively` together [GH-766][]
     - Fix `markdown-fontify-whole-heading-line` regression [GH-848][]
+    - Fix using fundamental-mode issue when editting code block [GH-868][]
 
 *   Improvements:
     - Apply url-unescape against URL in an inline link [GH-805][]
@@ -31,6 +33,7 @@
     - Mark `markdown-css-paths` safe as file local variables [GH-834][]
     - Resolve style sheets in `markdown-css-paths` relative to the Markdown 
file
       (if the path starts with `./` or `../`) [GH-855][] [GH-870][]
+    - Don't insert list item in code block [GH-841][]
 
   [gh-780]: https://github.com/jrblevin/markdown-mode/issues/780
   [gh-802]: https://github.com/jrblevin/markdown-mode/issues/802
@@ -40,9 +43,12 @@
   [gh-827]: https://github.com/jrblevin/markdown-mode/issues/827
   [gh-834]: https://github.com/jrblevin/markdown-mode/issues/834
   [gh-838]: https://github.com/jrblevin/markdown-mode/issues/838
+  [gh-839]: https://github.com/jrblevin/markdown-mode/issues/839
+  [gh-841]: https://github.com/jrblevin/markdown-mode/issues/841
   [gh-845]: https://github.com/jrblevin/markdown-mode/issues/845
   [gh-848]: https://github.com/jrblevin/markdown-mode/issues/848
   [gh-855]: https://github.com/jrblevin/markdown-mode/issues/855
+  [gh-868]: https://github.com/jrblevin/markdown-mode/issues/868
   [gh-870]: https://github.com/jrblevin/markdown-mode/issues/870
 
 # Markdown Mode 2.6
diff --git a/README.md b/README.md
index b6bd29823a..62b5c3d306 100644
--- a/README.md
+++ b/README.md
@@ -772,6 +772,9 @@ provides an interface to all of the possible customizations:
     (default: `t`).  When set to nil, they will be treated as
     `[[PageName|link text]]`.
 
+  * `markdown-wiki-link-retain-case nil` - set a non-nil value not to
+     change wiki link file name case
+
   * `markdown-uri-types` - a list of protocol schemes (e.g., "http")
     for URIs that `markdown-mode` should highlight.
 
diff --git a/markdown-mode.el b/markdown-mode.el
index a7c36b1276..e9dd0c43e6 100644
--- a/markdown-mode.el
+++ b/markdown-mode.el
@@ -287,6 +287,13 @@ cause lag when typing on slower machines."
   :safe 'booleanp
   :package-version '(markdown-mode . "2.2"))
 
+(defcustom markdown-wiki-link-retain-case nil
+  "When non-nil, wiki link file names do not have their case changed."
+  :group 'markdown
+  :type 'boolean
+  :safe 'booleanp
+  :package-version '(markdown-mode . "2.7"))
+
 (defcustom markdown-uri-types
   '("acap" "cid" "data" "dav" "fax" "file" "ftp"
     "geo" "gopher" "http" "https" "imap" "ldap" "mailto"
@@ -5165,6 +5172,7 @@ list simply adds a blank line)."
    (markdown-indent-on-enter
     (let (bounds)
       (if (and (memq markdown-indent-on-enter '(indent-and-new-item))
+               (not (markdown-code-block-at-point-p))
                (setq bounds (markdown-cur-list-item-bounds)))
           (let ((beg (cl-first bounds))
                 (end (cl-second bounds))
@@ -8425,7 +8433,7 @@ and [[test test]] both map to Test-test.ext."
     ;; This function must not overwrite match data(PR #590)
     (let* ((basename (replace-regexp-in-string
                       "[[:space:]\n]" markdown-link-space-sub-char name))
-           (basename (if (derived-mode-p 'gfm-mode)
+           (basename (if (and (derived-mode-p 'gfm-mode) (not 
markdown-wiki-link-retain-case))
                          (concat (upcase (substring basename 0 1))
                                  (downcase (substring basename 1 nil)))
                        basename))
@@ -9041,6 +9049,10 @@ LANG is a string, and the returned major mode is a 
symbol."
   (and mode
        (fboundp mode)
        (or
+        (not (string-match-p "ts-mode\\'" (symbol-name mode)))
+        ;; Don't load tree-sitter mode if the mode is in neither 
auto-mode-alist nor major-mode-remap-alist
+        ;; Because some ts-mode overwrites auto-mode-alist and it might break 
user configurations
+
         ;; https://github.com/jrblevin/markdown-mode/issues/787
         ;; major-mode-remap-alist was introduced at Emacs 29.1
         (cl-loop for pair in (bound-and-true-p major-mode-remap-alist)
diff --git a/tests/markdown-test.el b/tests/markdown-test.el
index 5b0c825388..6f3703538f 100644
--- a/tests/markdown-test.el
+++ b/tests/markdown-test.el
@@ -2109,6 +2109,17 @@ See GH-245."
       (should (string-equal (buffer-string) "   -   [X] item\n\n"))
       (should (= (point) 18)))))
 
+(ert-deftest test-markdown-indentation/not-insert-list-item-in-code-block ()
+  "Don't insert new item if here is in code."
+  (let ((markdown-indent-on-enter 'indent-and-new-item))
+    (markdown-test-string "```
+  - foo
+```"
+      (forward-line)
+      (end-of-line)
+      (call-interactively #'markdown-enter-key)
+      (should-not (looking-back "- ")))))
+
 ;;; Markup hiding tests:
 
 (ert-deftest test-markdown-markup-hiding/italics-1 ()
@@ -4379,12 +4390,17 @@ x: x
 
 (ert-deftest test-markdown-parsing/get-lang-mode ()
   "Test `markdown-get-lang-mode'.
-Do not load major-mode function if it isn't in auto-mode-alist.
-Details: https://github.com/jrblevin/markdown-mode/issues/761";
+Do not load tree-sitter-mode function if it is in neither auto-mode-alist nor 
major-mode-remap-alist.
+Details:
+- https://github.com/jrblevin/markdown-mode/issues/761
+- https://github.com/jrblevin/markdown-mode/issues/868";
   (should (eq (markdown-get-lang-mode "emacs-lisp") 'emacs-lisp-mode))
 
-  (let ((auto-mode-alist nil))
-    (should (null (markdown-get-lang-mode "emacs-lisp")))))
+  (when (and (fboundp 'treesit-language-available-p)
+             (funcall 'treesit-language-available-p 'python))
+    (let ((auto-mode-alist nil)
+          (major-mode-remap-alist nil))
+      (should (null (markdown--lang-mode-predicate 'python-ts-mode))))))
 
 (ert-deftest test-markdown-parsing/get-lang-mode-from-remap-alist ()
   "Test `markdown-get-lang-mode' from major-mode-remap-alist.
@@ -7113,6 +7129,25 @@ Detail: 
https://github.com/jrblevin/markdown-mode/pull/590";
               (should (string= (expand-file-name link) expected))))
         (kill-buffer)))))
 
+(ert-deftest test-markdown-ext/wiki-link-retain-case ()
+  "Test that searching link under project root."
+  (let ((markdown-wiki-link-retain-case nil))
+    (find-file "wiki/pr666/jump_wiki_link.md")
+    (unwind-protect
+        (progn
+          (gfm-mode)
+          (let ((link-file-name (markdown-convert-wiki-link-to-filename 
"FOOBAR")))
+            (should (string= "Foobar.md" (file-name-nondirectory 
link-file-name)))))
+      (kill-buffer)))
+  (let ((markdown-wiki-link-retain-case t))
+    (find-file "wiki/pr666/jump_wiki_link.md")
+    (unwind-protect
+        (progn
+          (gfm-mode)
+          (let ((link-file-name (markdown-convert-wiki-link-to-filename 
"FOOBAR")))
+            (should (string= "FOOBAR.md" (file-name-nondirectory 
link-file-name)))))
+      (kill-buffer))))
+
 (ert-deftest test-markdown/wiki-link-major-mode ()
   "Test major-mode of linked page."
   (let ((markdown-enable-wiki-links t)

Reply via email to