Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
- Fix too indended list face issue [GH-569][]
- Fix creating imenu index issue when there is no level-1 header too[GH-571][]
- Fix highlighting consecutive HTML comments[GH-584][]
- Fix `markdown-follow-thing-at-point` failing on subdir search [GH-590][]

[gh-290]: https://github.com/jrblevin/markdown-mode/issues/290
[gh-311]: https://github.com/jrblevin/markdown-mode/issues/311
Expand All @@ -62,6 +63,7 @@
[gh-571]: https://github.com/jrblevin/markdown-mode/issues/571
[gh-584]: https://github.com/jrblevin/markdown-mode/issues/584
[gh-587]: https://github.com/jrblevin/markdown-mode/issues/587
[gh-590]: https://github.com/jrblevin/markdown-mode/pull/590

# Markdown Mode 2.4

Expand Down
60 changes: 31 additions & 29 deletions markdown-mode.el
Original file line number Diff line number Diff line change
Expand Up @@ -7839,35 +7839,37 @@ directory first, then in subdirectories if
`markdown-wiki-link-search-subdirectories' is non-nil, and then
in parent directories if
`markdown-wiki-link-search-parent-directories' is non-nil."
(let* ((basename (replace-regexp-in-string
"[[:space:]\n]" markdown-link-space-sub-char name))
(basename (if (derived-mode-p 'gfm-mode)
(concat (upcase (substring basename 0 1))
(downcase (substring basename 1 nil)))
basename))
directory extension default candidates dir)
(when buffer-file-name
(setq directory (file-name-directory buffer-file-name)
extension (file-name-extension buffer-file-name)))
(setq default (concat basename
(when extension (concat "." extension))))
(cond
;; Look in current directory first.
((or (null buffer-file-name)
(file-exists-p default))
default)
;; Possibly search in subdirectories, next.
((and markdown-wiki-link-search-subdirectories
(setq candidates
(directory-files-recursively
directory (concat "^" default "$"))))
(car candidates))
;; Possibly search in parent directories as a last resort.
((and markdown-wiki-link-search-parent-directories
(setq dir (locate-dominating-file directory default)))
(concat dir default))
;; If nothing is found, return default in current directory.
(t default))))
(save-match-data
;; 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)
(concat (upcase (substring basename 0 1))
(downcase (substring basename 1 nil)))
basename))
directory extension default candidates dir)
(when buffer-file-name
(setq directory (file-name-directory buffer-file-name)
extension (file-name-extension buffer-file-name)))
(setq default (concat basename
(when extension (concat "." extension))))
(cond
;; Look in current directory first.
((or (null buffer-file-name)
(file-exists-p default))
default)
;; Possibly search in subdirectories, next.
((and markdown-wiki-link-search-subdirectories
(setq candidates
(directory-files-recursively
directory (concat "^" default "$"))))
(car candidates))
;; Possibly search in parent directories as a last resort.
((and markdown-wiki-link-search-parent-directories
(setq dir (locate-dominating-file directory default)))
(concat dir default))
;; If nothing is found, return default in current directory.
(t default)))))

(defun markdown-follow-wiki-link (name &optional other)
"Follow the wiki link NAME.
Expand Down
17 changes: 17 additions & 0 deletions tests/markdown-test.el
Original file line number Diff line number Diff line change
Expand Up @@ -6352,6 +6352,23 @@ x|"
(markdown-test-range-has-property 19 26 'font-lock-face 'markdown-link-face))
(kill-buffer)))))

(ert-deftest test-markdown-ext/wiki-link-keep-match-data ()
"Test that markdown-wiki-link-p keeps expected match data.
Detail: https://github.com/jrblevin/markdown-mode/pull/590"
(let ((markdown-enable-wiki-links t)
(markdown-link-space-sub-char " ")
(markdown-wiki-link-search-subdirectories t))
(progn
(find-file "wiki/pr590/Guide.md")
(unwind-protect
(progn
(markdown-mode)
(re-search-forward "Zettel Markdown")
(goto-char (match-beginning 0))
(should (markdown-wiki-link-p))
(should (string= (markdown-wiki-link-link) "Zettel Markdown")))
(kill-buffer)))))

(ert-deftest test-markdown-ext/wiki-link-major-mode ()
"Test major-mode of linked page."
(let ((markdown-enable-wiki-links t)
Expand Down
1 change: 1 addition & 0 deletions tests/wiki/pr590/Guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
**Basics**: A neuron notebook is just a directory of [[Zettel Markdown]] files
2 changes: 2 additions & 0 deletions tests/wiki/pr590/Guide/Zettel Markdown.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Zettel files are written in Markdown

1 change: 1 addition & 0 deletions tests/wiki/pr590/Guide/Zettel Markdown/math.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Math support