-(defun pelican-mode-page-p ()
- "Return non-nil the current buffer is a Pelican page."
- (when-let (pelican-mode-base (pelican-mode-find-root))
- (let* ((relative (file-relative-name buffer-file-name pelican-mode-base))
- (components (split-string relative "/")))
- (equal "pages" (cadr components)))))
-
-(defun pelican-mode-default-slug ()
- "Generate a Pelican article/page slug for the current buffer."
- (if-let ((pelican-mode-base (pelican-mode-find-root))
- (file-name (file-name-sans-extension buffer-file-name)))
- (let* ((relative (file-relative-name file-name pelican-mode-base))
- (components (cdr (split-string relative "/")))
- (components (if (string= "pages" (car components))
- (cdr components) components)))
- (mapconcat 'identity components "/"))
- (when-let (file-name (file-name-sans-extension buffer-file-name))
- (file-name-base file-name))))
-
-(defun pelican-mode-find-in-parents (file-name)
- "Find FILE-NAME in the default directory or one of its parents, or nil."
- (let* ((parent (expand-file-name default-directory)))
- (while (and (not (file-readable-p (concat parent file-name)))
- (not (string= parent (directory-file-name parent))))
- (setq parent (file-name-directory (directory-file-name parent))))
- (let ((found (concat parent file-name)))
- (if (file-readable-p found) found nil))))
+(defun pelican-mode-insert-article-header (title tags)
+ "Insert a Pelican header for an article with a TITLE and TAGS."
+ (interactive "sArticle title: \nsTags: ")
+ (save-excursion
+ (goto-char 0)
+ (insert "\n")
+ (apply #'pelican-mode-set-fields
+ `(:title ,title
+ ,@pelican-mode-default-article-fields
+ :tags ,tags))))