branch: elpa/markdown-mode
commit 9d2850ed58719778d3e76411242d112e54998fd3
Merge: d2d960bec1 f464a6fa68
Author: Shohei YOSHIDA <syo...@gmail.com>
Commit: GitHub <nore...@github.com>

    Merge pull request #861 from jayemar/jayemar/toggle-hiding-of-wiki-links
    
    Hide wiki markup as part of markdown-toggle-markup-hiding
---
 CHANGES.md             |   2 +
 README.md              |  42 +++++---
 markdown-mode.el       | 288 +++++++++++++++++++++++++++++++++----------------
 tests/markdown-test.el |  86 +++++++--------
 tests/wiki-links.text  |   2 +-
 5 files changed, 264 insertions(+), 156 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index b4171603c5..38b24bfa5f 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -11,12 +11,14 @@
 
 *   Bug fixes:
     - `markdown-export` should not output stderr content to output file
+    - Hide wikilink markup as part of `markdown-toggle-markup-hiding` 
[GH-847][]
 
 *   Improvements:
     - Support drag and drop features on Windows and multiple files' drag and 
drop
     - Added cmark and cmark-gfm to the markdown command list.
     - Disable `imenu-submenus-on-top` by default [GH-882][]
 
+  [gh-847]: https://github.com/jrblevin/markdown-mode/issues/847
   [gh-882]: https://github.com/jrblevin/markdown-mode/issues/882
   [gh-891]: https://github.com/jrblevin/markdown-mode/issues/891
 
diff --git a/README.md b/README.md
index 903a903d40..cfb62cf0fe 100644
--- a/README.md
+++ b/README.md
@@ -61,7 +61,7 @@ using `package.el`. First, configure `package.el` and the 
MELPA Stable
 repository by adding the following to your `.emacs`, `init.el`,
 or equivalent startup file:
 
-```lisp
+```emacs-lisp
 (require 'package)
 (add-to-list 'package-archives
              '("melpa-stable" . "https://stable.melpa.org/packages/";))
@@ -79,7 +79,7 @@ then you can automatically install and configure 
`markdown-mode` by
 adding a declaration such as this one to your init file (as an
 example; adjust settings as desired):
 
-```lisp
+```emacs-lisp
 (use-package markdown-mode
   :ensure t
   :mode ("README\\.md\\'" . gfm-mode)
@@ -99,7 +99,7 @@ save the file where Emacs can find it (i.e., a directory in 
your
 `load-path`). You can then configure `markdown-mode` and `gfm-mode`
 to load automatically by adding the following to your init file:
 
-```lisp
+```emacs-lisp
 (autoload 'markdown-mode "markdown-mode"
    "Major mode for editing Markdown files" t)
 (add-to-list 'auto-mode-alist
@@ -133,7 +133,7 @@ repository as above or install markdown-mode from
 If you clone the repository directly, then make sure that Emacs can
 find it by adding the following line to your startup file:
 
-```lisp
+```emacs-lisp
 (add-to-list 'load-path "/path/to/markdown-mode/repository")
 ```
 
@@ -350,7 +350,7 @@ prefix.  The most commonly used commands are described 
below.
     preview window to appear at the bottom or right, you can
     customize `markdown-split-window-direction`.
 
-      ```lisp
+      ```emacs-lisp
       ;; Set custom markdown preview function
       (setq markdown-live-preview-window-function 
#'my-markdown-preview-function)
 
@@ -952,18 +952,17 @@ customization screen.
 
 [Marked 2]: 
https://itunes.apple.com/us/app/marked-2/id890031187?mt=12&uo=4&at=11l5Vs&ct=mm
 
-## Extensions
-
+## Wiki Links Customization
 Besides supporting the basic Markdown syntax, Markdown Mode also
 includes syntax highlighting for `[[Wiki Links]]`.  This can be
 enabled by setting `markdown-enable-wiki-links` to a non-nil value.
-Wiki links may be followed by pressing <kbd>C-c C-o</kbd> when the point
-is at a wiki link.  Use <kbd>M-p</kbd> and <kbd>M-n</kbd> to quickly jump to 
the
-previous and next links (including links of other types).
+
 Aliased or piped wiki links of the form `[[link text|PageName]]`
-are also supported.  Since some wikis reverse these components, set
+are supported.  Since some wikis reverse these components, set
 `markdown-wiki-link-alias-first` to nil to treat them as
-`[[PageName|link text]]`.  If `markdown-wiki-link-fontify-missing`
+`[[PageName|link text]]`.
+
+If `markdown-wiki-link-fontify-missing`
 is also non-nil, Markdown Mode will highlight wiki links with
 missing target file in a different color.  By default, Markdown
 Mode only searches for target files in the current directory.
@@ -974,18 +973,31 @@ This value type is a symbol list. Possible values are
 - `parent-directories` : search in parent directories
 - `project` : search under project root
 
-[SmartyPants][] support is possible by customizing `markdown-command`.
+## Extensions
+### SmartyPants
+
+[SmartyPants][] is a free tool for easily translating plain ASCII punctuation
+characters into "smart" typographic punctuation HTML entities. It can perform
+the following transformations:
+- straight quotes ( " and ' ) into “curly” quote HTML entities
+- backticks-style quotes (``like this'') into “curly” quote HTML entities
+- dashes (“--” and “---”) into en- and em-dash entities
+- three consecutive dots (“...”) into an ellipsis entity
+
+SmartyPants support is possible by customizing `markdown-command`.
 If you install `SmartyPants.pl` at, say, `/usr/local/bin/smartypants`,
 then you can set `markdown-command` to `"markdown | smartypants"`.
 You can do this either by using <kbd>M-x customize-group markdown</kbd>
 or by placing the following in your `.emacs` file:
 
-```lisp
+```emacs-lisp
 (setq markdown-command "markdown | smartypants")
 ```
 
 [SmartyPants]: http://daringfireball.net/projects/smartypants/
 
+### LaTeX Mathematical Expressions
+
 Syntax highlighting for mathematical expressions written
 in LaTeX (only expressions denoted by `$..$`, `$$..$$`, or `\[..\]`)
 can be enabled by setting `markdown-enable-math` to a non-nil value,
@@ -1068,7 +1080,7 @@ by `markdown-mode` and `gfm-mode` as described below.
   for line wrapping in buffers.  You can do this with a
   `gfm-mode-hook` as follows:
 
-    ```lisp
+    ```emacs-lisp
     ;; Use visual-line-mode in gfm-mode
     (defun my-gfm-mode-hook ()
       (visual-line-mode 1))
diff --git a/markdown-mode.el b/markdown-mode.el
index 311050f44f..6987741a5b 100644
--- a/markdown-mode.el
+++ b/markdown-mode.el
@@ -263,11 +263,11 @@ This is the default search behavior of Ikiwiki."
   :package-version '(markdown-mode . "2.2"))
 
 (defcustom markdown-wiki-link-search-type nil
-  "Searching type for markdown wiki link.
+  "A list of options for searching for markdown wiki links.
 
-sub-directories: search for wiki link targets in sub directories
-parent-directories: search for wiki link targets in parent directories
-project: search for wiki link targets under project root"
+`sub-directories': search for wiki link targets in sub directories
+`parent-directories': search for wiki link targets in parent directories
+`project': search for wiki link targets under project root"
   :group 'markdown
   :type '(set
           (const :tag "search wiki link from subdirectories" sub-directories)
@@ -278,6 +278,16 @@ project: search for wiki link targets under project root"
 (make-obsolete-variable 'markdown-wiki-link-search-subdirectories 
'markdown-wiki-link-search-type "2.5")
 (make-obsolete-variable 'markdown-wiki-link-search-parent-directories 
'markdown-wiki-link-search-type "2.5")
 
+(make-obsolete 'markdown-match-wiki-link nil "2.8")
+(make-obsolete 'markdown-highlight-wiki-link nil "2.8")
+(make-obsolete 'markdown-unfontify-region-wiki-links nil "2.8")
+(make-obsolete 'markdown-fontify-region-wiki-links nil "2.8")
+(make-obsolete 'markdown-extend-changed-region nil "2.8")
+(make-obsolete 'markdown-check-change-for-wiki-link nil "2.8")
+(make-obsolete 'markdown-check-change-for-wiki-link-after-change nil "2.8")
+(make-obsolete 'markdown-fontify-buffer-wiki-links nil "2.8")
+(make-obsolete 'markdown-setup-wiki-link-hooks nil "2.8")
+
 (defcustom markdown-wiki-link-fontify-missing nil
   "When non-nil, change wiki link face according to existence of target files.
 This is expensive because it requires checking for the file each time the 
buffer
@@ -930,7 +940,6 @@ This matches typical bracketed [[WikiLinks]] as well as 
\\='aliased
 wiki links of the form [[PageName|link text]].
 The meanings of the first and second components depend
 on the value of `markdown-wiki-link-alias-first'.
-
 Group 1 matches the entire link.
 Group 2 matches the opening square brackets.
 Group 3 matches the first component of the wiki link.
@@ -2007,12 +2016,14 @@ inline code fragments and code blocks."
 
 (defface markdown-link-face
   '((t (:inherit link)))
-  "Face for links."
+  "Face for link text, ie the alias portion of a link.
+If a wiki link does not have an alias portion, use this face
+for the entire link."
   :group 'markdown-faces)
 
 (defface markdown-missing-link-face
   '((t (:inherit font-lock-warning-face)))
-  "Face for missing links."
+  "Face for the link text if the link points to a missing file."
   :group 'markdown-faces)
 
 (defface markdown-reference-face
@@ -2283,6 +2294,7 @@ Depending on your font, some reasonable choices are:
                                 (7 markdown-markup-properties)))
     (markdown-fontify-inline-links)
     (markdown-fontify-reference-links)
+    (markdown-fontify-wiki-links)
     (,markdown-regex-reference-definition . ((1 'markdown-markup-face) ; [
                                              (2 'markdown-reference-face) ; 
label
                                              (3 'markdown-markup-face)    ; ]
@@ -2319,8 +2331,7 @@ Depending on your font, some reasonable choices are:
     (markdown-fontify-sub-superscripts)
     (markdown-match-inline-attributes . ((0 markdown-markup-properties 
prepend)))
     (markdown-match-leanpub-sections . ((0 markdown-markup-properties)))
-    (markdown-fontify-blockquotes)
-    (markdown-match-wiki-link . ((0 'markdown-link-face prepend))))
+    (markdown-fontify-blockquotes))
   "Syntax highlighting for Markdown files.")
 
 ;; Footnotes
@@ -3422,7 +3433,8 @@ the buffer)."
               (markdown-code-block-at-pos begin))
           (progn (goto-char (min (1+ begin) last))
                  (when (< (point) last)
-                   (markdown-match-wiki-link last)))
+                   (with-no-warnings
+                     (markdown-match-wiki-link last))))
         (set-match-data (list begin end))
         t))))
 
@@ -5254,8 +5266,7 @@ Otherwise, do normal delete by repeating
         (back-to-indentation)
         (unless (looking-at-p "[ \t]*$")
           (setq mincol (min mincol (current-column))))
-        (forward-line 1)
-        ))
+        (forward-line 1)))
     mincol))
 
 (defun markdown-indent-region (beg end arg)
@@ -5730,7 +5741,39 @@ Assumes match data is available for 
`markdown-regex-italic'."
   "Keymap for `gfm-mode'.
 See also `markdown-mode-map'.")
 
-
+
+;;; Text Properties ===========================================================
+
+(defconst markdown--markup-props (list 'invisible 'markdown-markup
+                                       'rear-nonsticky t
+                                       'font-lock-multiline t))
+
+(defconst markdown--title-props (list 'invisible 'markdown-markup
+                                      'font-lock-multiline t))
+
+(defun markdown--url-props ()
+  (if markdown-mouse-follow-link
+      (list 'invisible 'markdown-markup
+            'keymap markdown-mode-mouse-map
+            'mouse-face 'markdown-highlight-face
+            'font-lock-multiline t)
+    (list 'invisible 'markdown-markup
+          'keymap markdown-mode-mouse-map
+          'font-lock-multiline t)))
+
+(defun markdown--link-props (url &optional title)
+  "Return a property list for URL with optional TITLE."
+  (let ((echo-text (if title (concat title "\n" url) url)))
+    (if markdown-mouse-follow-link
+        (list 'keymap markdown-mode-mouse-map
+              'mouse-face 'markdown-highlight-face
+              'font-lock-multiline t
+              'help-echo echo-text)
+      (list 'keymap markdown-mode-mouse-map
+            'font-lock-multiline t
+            'help-echo echo-text))))
+
+
 ;;; Menu ======================================================================
 
 (easy-menu-define markdown-mode-menu markdown-mode-map
@@ -8208,39 +8251,20 @@ Translate filenames using 
`markdown-filename-translate-function'."
            (title-start (match-beginning 7))
            (title-end (match-end 7))
            (title (match-string-no-properties 7))
-           ;; Markup part
-           (mp (list 'invisible 'markdown-markup
-                     'rear-nonsticky t
-                     'font-lock-multiline t))
-           ;; Link part (without face)
-           (lp (list 'keymap markdown-mode-mouse-map
-                     'font-lock-multiline t
-                     'help-echo (if title (concat title "\n" url) url)))
-           ;; URL part
-           (up (list 'keymap markdown-mode-mouse-map
-                     'invisible 'markdown-markup
-                     'font-lock-multiline t))
-           ;; URL composition character
-           (url-char (markdown--first-displayable markdown-url-compose-char))
-           ;; Title part
-           (tp (list 'invisible 'markdown-markup
-                     'font-lock-multiline t)))
-      (when markdown-mouse-follow-link
-        (setq lp (append lp '(mouse-face 'markdown-highlight-face)))
-        (setq up (append up '(mouse-face 'markdown-highlight-face))))
+           (url-char (markdown--first-displayable markdown-url-compose-char)))
       (dolist (g '(1 2 4 5 8))
         (when (match-end g)
-          (add-text-properties (match-beginning g) (match-end g) mp)
+          (add-text-properties (match-beginning g) (match-end g) 
markdown--markup-props)
           (add-face-text-property (match-beginning g) (match-end g) 
'markdown-markup-face)))
       ;; Preserve existing faces applied to link part (e.g., inline code)
       (when link-start
-        (add-text-properties link-start link-end lp)
+        (add-text-properties link-start link-end (markdown--link-props url 
title))
         (add-face-text-property link-start link-end 'markdown-link-face))
       (when url-start
-        (add-text-properties url-start url-end up)
+        (add-text-properties url-start url-end (markdown--url-props))
         (add-face-text-property url-start url-end 'markdown-url-face))
       (when title-start
-        (add-text-properties url-end title-end tp)
+        (add-text-properties url-end title-end markdown--title-props)
         (add-face-text-property url-end title-end 'markdown-link-title-face))
       (when (and markdown-hide-urls url-start)
         (compose-region url-start (or title-end url-end) url-char))
@@ -8253,11 +8277,7 @@ Translate filenames using 
`markdown-filename-translate-function'."
            (link-end (match-end 3))
            (ref-start (match-beginning 6))
            (ref-end (match-end 6))
-           ;; Markup part
-           (mp (list 'invisible 'markdown-markup
-                     'rear-nonsticky t
-                     'font-lock-multiline t))
-           ;; Link part
+           ;; Link properties
            (lp (list 'keymap markdown-mode-mouse-map
                      'font-lock-multiline t
                      'help-echo (lambda (_ __ pos)
@@ -8268,14 +8288,14 @@ Translate filenames using 
`markdown-filename-translate-function'."
                                           "Undefined reference"))))))
            ;; URL composition character
            (url-char (markdown--first-displayable markdown-url-compose-char))
-           ;; Reference part
+           ;; Reference properties
            (rp (list 'invisible 'markdown-markup
                      'font-lock-multiline t)))
       (when markdown-mouse-follow-link
         (setq lp (append lp '(mouse-face markdown-highlight-face))))
       (dolist (g '(1 2 4 5 8))
         (when (match-end g)
-          (add-text-properties (match-beginning g) (match-end g) mp)
+          (add-text-properties (match-beginning g) (match-end g) 
markdown--markup-props)
           (add-face-text-property (match-beginning g) (match-end g) 
'markdown-markup-face)))
       (when link-start
         (add-text-properties link-start link-end lp)
@@ -8287,6 +8307,75 @@ Translate filenames using 
`markdown-filename-translate-function'."
           (compose-region ref-start ref-end url-char)))
       t)))
 
+(defun markdown-fontify-wiki-links (last)
+  "Add text properties to next wiki link from point to LAST."
+  (when (and markdown-enable-wiki-links
+             (markdown-match-inline-generic markdown-regex-wiki-link last))
+    (let* ((begin (match-beginning 1))
+           (end (match-end 1))
+           (beg2 (match-beginning 2))
+           (end2 (match-end 2))
+           (beg3 (match-beginning 3))
+           (end3 (match-end 3))
+           (beg4 (match-beginning 4))
+           (end4 (match-end 4))
+           (beg5 (match-beginning 5))
+           (end5 (match-end 5))
+           (beg6 (match-beginning 6))
+           (end6 (match-end 6))
+           (part1 (match-string-no-properties 3))
+           (part2 (match-string-no-properties 5))
+           (aliasp (string-equal (match-string-no-properties 4) "|"))
+           (file-name (markdown-convert-wiki-link-to-filename 
(markdown-wiki-link-link)))
+           (file-missing-p (not (file-exists-p file-name))))
+      (if (or (markdown-in-comment-p begin)
+              (markdown-in-comment-p end)
+              (markdown-inline-code-at-pos-p begin)
+              (markdown-inline-code-at-pos-p end)
+              (markdown-code-block-at-pos begin))
+          (progn (goto-char (min (1+ begin) last))
+                 (when (< (point) last)
+                   (markdown-fontify-wiki-links last)))
+        ;; Add text properties for hiding markup
+        (progn
+          ;; Propertize opening and closing brackets
+          (add-text-properties    beg2 end2 markdown--markup-props)
+          (add-face-text-property beg2 end2 'markdown-markup-face)
+          (add-text-properties    beg6 end6 markdown--markup-props)
+          (add-face-text-property beg6 end6 'markdown-markup-face)
+          (if aliasp
+              (progn
+                ;; Propertize pipe separating URL from link text
+                (add-text-properties    beg4 end4 markdown--markup-props)
+                (add-face-text-property beg4 end4 'markdown-markup-face)
+                (if markdown-wiki-link-alias-first
+                    (progn
+                      ;; Properties alias portion of link
+                      (add-text-properties    beg3 end3 (markdown--link-props 
part2))
+                      (add-face-text-property beg3 end3 'markdown-link-face)
+                      (add-text-properties    beg5 end5 (markdown--url-props))
+                      (add-text-properties    beg5 end5 '(invisible 
markdown-markup))
+                      (add-face-text-property beg5 end5 'markdown-url-face)
+                      (when (and file-missing-p 
markdown-wiki-link-fontify-missing)
+                        (put-text-property beg3 end3 'face 
'markdown-missing-link-face)))
+                  (progn
+                    ;; Properties URL portion of link
+                    (add-text-properties    beg3 end3 (markdown--url-props))
+                    (add-text-properties    beg3 end3 '(invisible 
markdown-markup))
+                    (add-face-text-property beg3 end3 'markdown-url-face)
+                    (add-text-properties    beg5 end5 (markdown--link-props 
part1))
+                    (add-face-text-property beg5 end5 'markdown-link-face)
+                    (when (and file-missing-p 
markdown-wiki-link-fontify-missing)
+                      (put-text-property beg5 end5 'face 
'markdown-missing-link-face)))))
+            (progn
+              ;; Properties link as link text
+              (add-text-properties    beg3 end3 (markdown--link-props part1))
+              (add-face-text-property beg3 end3 'markdown-link-face)
+              (when (and file-missing-p markdown-wiki-link-fontify-missing)
+                (put-text-property beg3 end3 'face 
'markdown-missing-link-face)))))
+        (set-match-data (list begin end))
+        t))))
+
 (defun markdown-fontify-angle-uris (last)
   "Add text properties to angle URIs from point to LAST."
   (when (markdown-match-angle-uris last)
@@ -8294,19 +8383,14 @@ Translate filenames using 
`markdown-filename-translate-function'."
           (url-end (match-end 2)))
       (unless (or (markdown-in-inline-code-p url-start)
                   (markdown-in-inline-code-p url-end))
-        (let* (;; Markup part
-               (mp (list 'face 'markdown-markup-face
-                         'invisible 'markdown-markup
-                         'rear-nonsticky t
-                         'font-lock-multiline t))
-               ;; URI part
+        (let* (;; URI part
                (up (list 'keymap markdown-mode-mouse-map
                          'face 'markdown-plain-url-face
                          'font-lock-multiline t)))
           (when markdown-mouse-follow-link
             (setq up (append up '(mouse-face markdown-highlight-face))))
           (dolist (g '(1 3))
-            (add-text-properties (match-beginning g) (match-end g) mp))
+            (add-text-properties (match-beginning g) (match-end g) 
markdown--markup-props))
           (add-text-properties url-start url-end up)
           t)))))
 
@@ -8372,6 +8456,11 @@ The location of the alias component depends on the value 
of
     (or (match-string-no-properties 5) (match-string-no-properties 3))))
 
 (defun markdown--wiki-link-search-types ()
+  "Return a list of the currently selected search types.
+
+Due to deprecated variables, as of markdown-mode version 2.5, the return value
+of this function is the same as the value of the variable
+`markdown-wiki-link-search-type'."
   (let ((ret (and markdown-wiki-link-search-type
                   (cl-copy-list markdown-wiki-link-search-type))))
     (when (and markdown-wiki-link-search-subdirectories
@@ -8383,6 +8472,7 @@ The location of the alias component depends on the value 
of
     ret))
 
 (defun markdown--project-root ()
+  "Try various approaches to find the project root."
   (or (cl-loop for dir in '(".git" ".hg" ".svn")
                when (locate-dominating-file default-directory dir)
                return it)
@@ -8397,12 +8487,9 @@ The location of the alias component depends on the value 
of
 (defun markdown-convert-wiki-link-to-filename (name)
   "Generate a filename from the wiki link NAME.
 Spaces in NAME are replaced with `markdown-link-space-sub-char'.
+Search depth is determined by `markdown-wiki-link-search-type'.
 When in `gfm-mode', follow GitHub's conventions where [[Test Test]]
-and [[test test]] both map to Test-test.ext.  Look in the current
-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."
+and [[test test]] both map to Test-test.ext."
   (save-match-data
     ;; This function must not overwrite match data(PR #590)
     (let* ((basename (replace-regexp-in-string
@@ -8493,11 +8580,12 @@ and highlight accordingly."
               (file-name
                (markdown-convert-wiki-link-to-filename
                 (markdown-wiki-link-link))))
-          (if (condition-case nil (file-exists-p file-name) (error nil))
+          (with-no-warnings
+            (if (condition-case nil (file-exists-p file-name) (error nil))
+                (markdown-highlight-wiki-link
+                 highlight-beginning highlight-end 'markdown-link-face)
               (markdown-highlight-wiki-link
-               highlight-beginning highlight-end 'markdown-link-face)
-            (markdown-highlight-wiki-link
-             highlight-beginning highlight-end 
'markdown-missing-link-face)))))))
+               highlight-beginning highlight-end 
'markdown-missing-link-face))))))))
 
 (defun markdown-extend-changed-region (from to)
   "Extend region given by FROM and TO so that we can fontify all links.
@@ -8533,7 +8621,8 @@ newline after."
               ;; Extend the region to fontify so that it starts
               ;; and ends at safe places.
               (cl-multiple-value-bind (new-from new-to)
-                  (markdown-extend-changed-region from to)
+                  (with-no-warnings
+                    (markdown-extend-changed-region from to))
                 (goto-char new-from)
                 ;; Only refontify when the range contains text with a
                 ;; wiki link face or if the wiki link regexp matches.
@@ -8542,10 +8631,11 @@ newline after."
                            '(markdown-link-face markdown-missing-link-face))
                           (re-search-forward
                            markdown-regex-wiki-link new-to t))
-                  ;; Unfontify existing fontification (start from scratch)
-                  (markdown-unfontify-region-wiki-links new-from new-to)
-                  ;; Now do the fontification.
-                  (markdown-fontify-region-wiki-links new-from new-to))))))
+                  (with-no-warnings
+                   ;; Unfontify existing fontification (start from scratch)
+                   (markdown-unfontify-region-wiki-links new-from new-to)
+                   ;; Now do the fontification.
+                   (markdown-fontify-region-wiki-links new-from new-to)))))))
       (cursor-intangible-mode -1)
       (and (not modified)
            (buffer-modified-p)
@@ -8554,12 +8644,14 @@ newline after."
 (defun markdown-check-change-for-wiki-link-after-change (from to _)
   "Check region between FROM and TO for wiki links and re-fontify as needed.
 Designed to be used with the `after-change-functions' hook."
-  (markdown-check-change-for-wiki-link from to))
+  (with-no-warnings
+    (markdown-check-change-for-wiki-link from to)))
 
 (defun markdown-fontify-buffer-wiki-links ()
   "Refontify all wiki links in the buffer."
   (interactive)
-  (markdown-check-change-for-wiki-link (point-min) (point-max)))
+  (with-no-warnings
+    (markdown-check-change-for-wiki-link (point-min) (point-max))))
 
 (defun markdown-toggle-wiki-links (&optional arg)
   "Toggle support for wiki links.
@@ -8571,33 +8663,36 @@ and disable it otherwise."
             (not markdown-enable-wiki-links)
           (> (prefix-numeric-value arg) 0)))
   (when (called-interactively-p 'interactive)
-    (message "markdown-mode wiki link support %s" (if 
markdown-enable-wiki-links "enabled" "disabled")))
+    (message "markdown-mode wiki link support %s"
+             (if markdown-enable-wiki-links "enabled" "disabled")))
   (markdown-reload-extensions))
 
 (defun markdown-setup-wiki-link-hooks ()
   "Add or remove hooks for fontifying wiki links.
 These are only enabled when `markdown-wiki-link-fontify-missing' is non-nil."
   ;; Anytime text changes make sure it gets fontified correctly
-  (if (and markdown-enable-wiki-links
-           markdown-wiki-link-fontify-missing)
-      (add-hook 'after-change-functions
-                #'markdown-check-change-for-wiki-link-after-change t t)
-    (remove-hook 'after-change-functions
-                 #'markdown-check-change-for-wiki-link-after-change t))
-  ;; If we left the buffer there is a really good chance we were
-  ;; creating one of the wiki link documents. Make sure we get
-  ;; refontified when we come back.
-  (if (and markdown-enable-wiki-links
-           markdown-wiki-link-fontify-missing)
-      (progn
-        (add-hook 'window-configuration-change-hook
-                  #'markdown-fontify-buffer-wiki-links t t)
-        (markdown-fontify-buffer-wiki-links))
-    (remove-hook 'window-configuration-change-hook
-                 #'markdown-fontify-buffer-wiki-links t)
-    (markdown-unfontify-region-wiki-links (point-min) (point-max))))
+  (with-no-warnings
+    (if (and markdown-enable-wiki-links
+             markdown-wiki-link-fontify-missing)
+        (add-hook 'after-change-functions
+                  #'markdown-check-change-for-wiki-link-after-change t t)
+      (remove-hook 'after-change-functions
+                   #'markdown-check-change-for-wiki-link-after-change t))
+    ;; If we left the buffer there is a really good chance we were
+    ;; creating one of the wiki link documents. Make sure we get
+    ;; refontified when we come back.
+    (if (and markdown-enable-wiki-links
+             markdown-wiki-link-fontify-missing)
+        (progn
+          (add-hook 'window-configuration-change-hook
+                    #'markdown-fontify-buffer-wiki-links t t)
+          (markdown-fontify-buffer-wiki-links))
+      (remove-hook 'window-configuration-change-hook
+                   #'markdown-fontify-buffer-wiki-links t)
+      (with-no-warnings
+        (markdown-unfontify-region-wiki-links (point-min) (point-max)))))  )
+
 
-
 ;;; Following & Doing =========================================================
 
 (defun markdown-follow-thing-at-point (arg)
@@ -8784,9 +8879,7 @@ or span."
   (interactive)
   (when (derived-mode-p 'markdown-mode)
     ;; Refontify buffer
-    (font-lock-flush)
-    ;; Add or remove hooks related to extensions
-    (markdown-setup-wiki-link-hooks)))
+    (font-lock-flush)))
 
 (defun markdown-handle-local-variables ()
   "Run in `hack-local-variables-hook' to update font lock rules.
@@ -10090,6 +10183,19 @@ rows and columns and the column alignment."
                    (propertize link 'face 'markdown-reference-face)
                    (propertize "]" 'face 'markdown-markup-face))
                 (propertize link 'face 'markdown-url-face)))))
+   ;; Hidden URL for wiki links
+   ((and (and markdown-enable-wiki-links
+              (thing-at-point-looking-at markdown-regex-wiki-link))
+         (or markdown-hide-urls markdown-hide-markup))
+    (let* ((aliasp (string-equal (match-string-no-properties 4) "|"))
+           (part1 (match-string-no-properties 3))
+           (part2 (match-string-no-properties 5))
+           (link (if (and aliasp markdown-wiki-link-alias-first) part2 part1))
+           (edit-keys (markdown--substitute-command-keys
+                       "\\[markdown-insert-wiki-link]"))
+           (edit-str (propertize edit-keys 'face 'font-lock-constant-face)))
+      (format "Hidden URL (%s to edit): %s"
+              edit-str (propertize link 'face 'markdown-reference-face))))
    ;; Hidden language name for fenced code blocks
    ((and (markdown-code-block-at-point-p)
          (not (get-text-property (point) 'markdown-pre))
@@ -10224,8 +10330,6 @@ rows and columns and the column alignment."
   (if markdown-hide-markup
       (add-to-invisibility-spec 'markdown-markup)
     (remove-from-invisibility-spec 'markdown-markup))
-  ;; Wiki links
-  (markdown-setup-wiki-link-hooks)
   ;; Math mode
   (when markdown-enable-math (markdown-toggle-math t))
   ;; Add a buffer-local hook to reload after file-local variables are read
diff --git a/tests/markdown-test.el b/tests/markdown-test.el
index 999b76268a..79b8831552 100644
--- a/tests/markdown-test.el
+++ b/tests/markdown-test.el
@@ -151,7 +151,7 @@ This file is not saved."
                 (unless (eq vals value)
                   (throw 'fail loc))))))
     (when fail-loc
-      (message "Testing range (%d,%d) for property %s equal to %s."
+      (message "Testing that range (%d,%d) for property %s includes %s."
                begin end prop value)
       (message "Expected value (%s) not found in property (%s) at location %d" 
value prop fail-loc)
       (markdown-test-report-property-range begin end prop))
@@ -162,12 +162,12 @@ This file is not saved."
   (let ((fail-loc
          (catch 'fail
            (dolist (loc (number-sequence begin end))
-             (unless (eq (get-char-property loc prop) value)
+             (unless (equal (get-char-property loc prop) value)
                (throw 'fail loc))))))
     (when fail-loc
-      (message "Testing range (%d,%d) for property %s equal to %s."
+      (message "Testing that range (%d,%d) for property %s equal to %s."
                begin end prop value)
-      (message "Expected value (%s) not found in property (%s) at location %d" 
value prop fail-loc)
+      (message "Expected value (%s) does not equal property (%s) at location 
%d" value prop fail-loc)
       (markdown-test-report-property-range begin end prop))
     (should-not fail-loc)))
 
@@ -5766,39 +5766,24 @@ http://example.com \"title\"  )
 
 (ert-deftest test-markdown-wiki-link/font-lock ()
   "Test font lock faces for wiki links."
-  ;; If `temporary-file-directory' contains an inaccessible
-  ;; subdirectory, `markdown-fontify-buffer-wiki-links' fails because
-  ;; it calls `directory-files-recursively' on the directory, which
-  ;; fails because of
-  ;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28567>.  To fix
-  ;; this, we run the entire test in a new subdirectory of
-  ;; `temporary-file-directory', which is guaranteed to not contain
-  ;; any inaccessible directories.
-  (let ((temporary-file-directory
-         (file-name-as-directory (make-temp-file "markdown-test" :dir-flag))))
-    (markdown-test-temp-file "wiki-links.text"
-      (let* ((fn (concat (file-name-directory buffer-file-name)
-                         "inline.text"))
-             (markdown-enable-wiki-links t))
-        ;; Create inline.text in the same temp directory, refontify
-        (write-region "" nil fn nil 1)
-        (markdown-fontify-buffer-wiki-links)
-        ;; Confirm location of first wiki link
-        (should (eq (markdown-next-link) 8))
-        ;; First wiki link doesn't have a corresponding file
-        (markdown-test-range-has-property 8 20 'font-lock-face 
'markdown-missing-link-face)
-        ;; Second wiki link doesn't have a corresponding file
-        (should (eq (markdown-next-link) 73))
-        (markdown-test-range-has-property 73 88 'font-lock-face 
'markdown-missing-link-face)
-        ;; Move to third wiki link, and create the missing file
-        (should (eq (markdown-next-link) 155))
-        (should (string-equal (markdown-wiki-link-link) "inline"))
-        (markdown-test-range-has-property 155 164 'font-lock-face 
'markdown-link-face)
-        ;; Check wiki links in code blocks
-        (markdown-test-range-has-face 360 395 'markdown-pre-face)
-        ;; Remove temporary files
-        (delete-file fn)))
-    (delete-directory temporary-file-directory)))
+  (let ((markdown-wiki-link-alias-first nil)
+        (markdown-wiki-link-search-type '(project))
+        (markdown-wiki-link-fontify-missing t)
+        (markdown-enable-wiki-links t))
+    (markdown-test-file "wiki-links.text"
+      ;; Confirm location of first wiki link
+      (should (eq (markdown-next-link) 8))
+      ;; First wiki link doesn't have a corresponding file
+      (markdown-test-range-has-property 10 18 'face 
'markdown-missing-link-face)
+      ;; Second wiki link doesn't have a corresponding file
+      (should (eq (markdown-next-link) 73))
+      (markdown-test-range-has-property 81 86 'face 
'markdown-missing-link-face)
+      ;; Third link DOES have a corresponding file
+      (should (eq (markdown-next-link) 155))
+      (should (string-equal (markdown-wiki-link-link) "inline"))
+      (markdown-test-range-has-property 157 162 'face 
'markdown-missing-link-face)
+      ;; Check wiki links in code blocks
+      (markdown-test-range-has-face 370 405 'markdown-code-face))))
 
 (ert-deftest test-markdown-wiki-link/kill ()
   "Simple tests for `markdown-kill-thing-at-point' for wiki links."
@@ -7085,7 +7070,7 @@ x|"
     (markdown-indent-region (line-beginning-position) (line-end-position) nil)
     (should (string-equal (buffer-string) " #. abc\n    def\n"))))
 
-(ert-deftest test-markdown-ext/wiki-link-rules ()
+(ert-deftest test-markdown/wiki-link-rules ()
   "Test wiki link search rules and font lock for missing pages."
   (let ((markdown-enable-wiki-links t)
         (markdown-wiki-link-fontify-missing t)
@@ -7095,6 +7080,7 @@ x|"
       (unwind-protect
           (progn
             (markdown-mode)
+            (font-lock-ensure)
             ;; search rules
             (should (string-match-p
                      "/sub/foo$"
@@ -7103,16 +7089,20 @@ x|"
                      (markdown-convert-wiki-link-to-filename "doesnotexist")
                      "doesnotexist"))
             ;; font lock
-            (markdown-test-range-has-property 1 11 'font-lock-face 
'markdown-link-face)
-            (markdown-test-range-has-property 14 33 'font-lock-face 
'markdown-missing-link-face)
-            (markdown-test-range-has-property 36 42 'font-lock-face 
'markdown-link-face)
-            (markdown-test-range-has-property 45 60 'font-lock-face 
'markdown-missing-link-face))
+            (markdown-test-range-has-property  1  2 'face 
'markdown-markup-face)
+            (markdown-test-range-has-property  3  9 'face 'markdown-link-face)
+            (markdown-test-range-has-property 10 11 'face 
'markdown-markup-face)
+            (markdown-test-range-has-property 16 31 'face 
'markdown-missing-link-face)
+            (markdown-test-range-has-property 38 40 'face 'markdown-link-face)
+            (markdown-test-range-has-property 47 58 'face 
'markdown-missing-link-face)
+            (markdown-test-range-has-property 65 74 'face 'markdown-link-face))
         (kill-buffer)))
     (progn
       (find-file (expand-file-name "wiki/sub/foo" markdown-test-dir))
       (unwind-protect
           (progn
             (markdown-mode)
+            (font-lock-ensure)
             ;; search rules
             (should (string-match-p
                      "/wiki/root$"
@@ -7121,11 +7111,11 @@ x|"
                      (markdown-convert-wiki-link-to-filename "doesnotexist")
                      "doesnotexist"))
             ;; font lock
-            (markdown-test-range-has-property 1 16 'font-lock-face 
'markdown-missing-link-face)
-            (markdown-test-range-has-property 19 26 'font-lock-face 
'markdown-link-face))
+            (markdown-test-range-has-property  3 14 'face 
'markdown-missing-link-face)
+            (markdown-test-range-has-property 21 24 'face 'markdown-link-face))
         (kill-buffer)))))
 
-(ert-deftest test-markdown-ext/wiki-link-keep-match-data ()
+(ert-deftest test-markdown/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)
@@ -7142,7 +7132,7 @@ Detail: 
https://github.com/jrblevin/markdown-mode/pull/590";
             (should (string= (markdown-wiki-link-link) "Zettel Markdown")))
         (kill-buffer)))))
 
-(ert-deftest test-markdown-ext/wiki-link-search-under-project ()
+(ert-deftest test-markdown/wiki-link-search-under-project ()
   "Test that searching link under project root."
   (let ((markdown-enable-wiki-links t)
         (markdown-link-space-sub-char " ")
@@ -7180,7 +7170,7 @@ Detail: 
https://github.com/jrblevin/markdown-mode/pull/590";
             (should (string= "FOOBAR.md" (file-name-nondirectory 
link-file-name)))))
       (kill-buffer))))
 
-(ert-deftest test-markdown-ext/wiki-link-major-mode ()
+(ert-deftest test-markdown/wiki-link-major-mode ()
   "Test major-mode of linked page."
   (let ((markdown-enable-wiki-links t)
         (auto-mode-alist (cons '("bar\\.md" . gfm-mode) auto-mode-alist)))
@@ -7193,7 +7183,7 @@ Detail: 
https://github.com/jrblevin/markdown-mode/pull/590";
           (should (eq major-mode 'gfm-mode)))
       (kill-buffer))))
 
-(ert-deftest test-markdown-ext/wiki-link-nonexistent-file ()
+(ert-deftest test-markdown/wiki-link-nonexistent-file ()
   "Test following wiki link to nonexistent file visits the buffer."
   (let ((markdown-enable-wiki-links t))
     (find-file (expand-file-name "wiki/foo.md" markdown-test-dir))
diff --git a/tests/wiki-links.text b/tests/wiki-links.text
index 6c33349ba3..d5473c617c 100644
--- a/tests/wiki-links.text
+++ b/tests/wiki-links.text
@@ -9,7 +9,7 @@ point 155.
 Bracketed expressions in code blocks should not be matched as wiki
 links:
 
-```
+```clojure
 {
  :user {
    :repositories [["clojars" {:sign-releases false}]]


Reply via email to