Browse Source
It was taken from the EmacsWiki, and is superseded by org-jekyll and hyde.gerrit-package
2 changed files with 0 additions and 114 deletions
@ -1,112 +0,0 @@
|
||||
;; Configuration for Jekyll (http://jekyllrb.com/) |
||||
|
||||
(defun jekyll-timestamp () |
||||
"Update existing date: timestamp on a Jekyll page or post." |
||||
(interactive) |
||||
(save-excursion (goto-char 1) |
||||
(re-search-forward "^date:") |
||||
(let ((beg (point))) |
||||
(end-of-line) |
||||
(delete-region beg (point))) |
||||
(insert (concat " " (format-time-string "%Y-%m-%d %H:%M:%S %z")))) |
||||
) |
||||
;; TODO: Make the function add a date variable if none exists. |
||||
|
||||
;; (defun jekyll-timestamp () |
||||
;; "Insert a time stamp suitable for use in a Jekyll page or post. Replaces current text selection." |
||||
;; (interactive) |
||||
;; (when (region-active-p) (delete-region (region-beginning) (region-end) ) ) |
||||
;; (insert (format-time-string "%Y-%m-%d %H:%M:%S %z"))) |
||||
|
||||
;; All of the below is taken from http://www.gorgnegre.com/linux/using-emacs-orgmode-to-blog-with-jekyll.html |
||||
;; (Later tweaked a bit.) |
||||
|
||||
(global-set-key (kbd "C-c j n") 'jekyll-draft-post) |
||||
(global-set-key (kbd "C-c j p") 'jekyll-publish-post) |
||||
(global-set-key (kbd "C-c j t") 'jekyll-timestamp) |
||||
(global-set-key (kbd "C-c j o") (lambda () (interactive) (find-file "~/web/"))) |
||||
|
||||
(defcustom jekyll-directory |
||||
"~/web/" |
||||
"Path to Jekyll blog. It must end " |
||||
:type '(directory) |
||||
:group 'jekyll) |
||||
(defcustom jekyll-drafts-dir |
||||
"_drafts/" |
||||
"Path to article drafts. Relative to jekyll-directory." |
||||
:type '(string) |
||||
:group 'jekyll) |
||||
(defcustom jekyll-posts-dir |
||||
"_posts/" |
||||
"Path to articles. Relative to jekyll-directory." |
||||
:type '(string) |
||||
:group 'jekyll) |
||||
(defcustom jekyll-post-ext |
||||
".md" |
||||
"File extension of Jekyll posts." |
||||
:type '(string) |
||||
:group 'jekyll) |
||||
(defcustom jekyll-post-template |
||||
"---\nlayout: post\ntitle: %s\ntags:\ndate: %t\n---\n" |
||||
"Default template for Jekyll posts. %s will be replace by the post title, %t will be replaced with the current timestamp" |
||||
:type '(string) |
||||
:group 'jekyll) |
||||
|
||||
(defun jekyll-make-slug (s) "Turn a string into a slug." |
||||
(replace-regexp-in-string " " |
||||
"-" |
||||
(downcase |
||||
(replace-regexp-in-string "[^A-Za-z0-9 ]" |
||||
"" s)))) |
||||
|
||||
(defun jekyll-yaml-escape (s) "Escape a string for YAML." |
||||
(if |
||||
(or |
||||
(string-match ":" s) |
||||
(string-match "\"" s)) |
||||
(concat "\"" (replace-regexp-in-string "\"" "\\\\\"" s) "\"") s)) |
||||
|
||||
(defun jekyll-draft-post (title) "Create a new Jekyll blog post." |
||||
(interactive "sPost Title: ") |
||||
(let ((draft-file (concat |
||||
(file-name-as-directory jekyll-directory) |
||||
jekyll-drafts-dir |
||||
(jekyll-make-slug title) |
||||
jekyll-post-ext))) |
||||
(if (file-exists-p draft-file) |
||||
(find-file draft-file) |
||||
(find-file draft-file) |
||||
(insert (format jekyll-post-template (jekyll-yaml-escape title)))))) |
||||
|
||||
(defun jekyll-publish-post () |
||||
"Move a draft post to the posts directory, and rename it so that it contains the date." |
||||
(interactive) |
||||
(cond |
||||
((not (equal |
||||
(file-name-directory (buffer-file-name (current-buffer))) |
||||
(expand-file-name (concat |
||||
(file-name-as-directory jekyll-directory) |
||||
jekyll-drafts-dir)))) |
||||
(message "This is not a draft post.") |
||||
(insert (file-name-directory (buffer-file-name (current-buffer))) "\n" |
||||
(concat |
||||
(file-name-as-directory jekyll-directory) |
||||
jekyll-drafts-dir))) |
||||
((buffer-modified-p) |
||||
(message "Can't publish post; buffer has modifications.")) |
||||
(t |
||||
(let ((filename |
||||
(concat |
||||
(file-name-as-directory jekyll-directory) |
||||
jekyll-posts-dir |
||||
(format-time-string "%Y-%m-%d-") |
||||
(file-name-nondirectory |
||||
(buffer-file-name (current-buffer))))) |
||||
(old-point (point))) |
||||
(rename-file (buffer-file-name (current-buffer)) |
||||
filename) |
||||
(kill-buffer nil) |
||||
(find-file filename) |
||||
(set-window-point (selected-window) old-point))))) |
||||
|
||||
(provide 'setup-jekyll) |
Loading…
Reference in new issue