Function: markdown-convert-wiki-link-to-filename

markdown-convert-wiki-link-to-filename is a byte-compiled function defined in markdown-mode.el.

Signature

(markdown-convert-wiki-link-to-filename NAME)

Documentation

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.

Source Code

;; Defined in ~/.emacs.d/elpa/markdown-mode-20260321.143/markdown-mode.el
(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."
  (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 (and (derived-mode-p 'gfm-mode) (not markdown-wiki-link-retain-case))
                         (concat (upcase (substring basename 0 1))
                                 (downcase (substring basename 1 nil)))
                       basename))
           (search-types (markdown--wiki-link-search-types))
           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 (memq 'sub-directories search-types)
             (setq candidates
                   (directory-files-recursively
                    directory (concat "^" default "$"))))
        (car candidates))
       ;; Possibly search in parent directories as a last resort.
       ((and (memq 'parent-directories search-types)
             (setq dir (locate-dominating-file directory default)))
        (concat dir default))
       ((and (memq 'project search-types)
             (setq candidates
                   (directory-files-recursively
                    (markdown--project-root) (concat "^" default "$"))))
        (car candidates))
       ;; If nothing is found, return default in current directory.
       (t default)))))