Add jekyll related things
This commit is contained in:
parent
7b70991618
commit
59c094fad6
4
init.el
4
init.el
@ -47,7 +47,8 @@
|
|||||||
(files
|
(files
|
||||||
(".#*" "*.so" "*~")))))
|
(".#*" "*.so" "*~")))))
|
||||||
'(magit-auto-revert-mode nil)
|
'(magit-auto-revert-mode nil)
|
||||||
'(magit-last-seen-setup-instructions "1.4.0"))
|
'(magit-last-seen-setup-instructions "1.4.0")
|
||||||
|
'(jekyll-directory "~/Projektek/jekyll/gergely.polonkai.eu"))
|
||||||
|
|
||||||
(custom-set-faces
|
(custom-set-faces
|
||||||
;; custom-set-faces was added by Custom.
|
;; custom-set-faces was added by Custom.
|
||||||
@ -88,6 +89,7 @@
|
|||||||
(load (concat user-emacs-directory "transpose-windows.el"))
|
(load (concat user-emacs-directory "transpose-windows.el"))
|
||||||
(load (concat user-emacs-directory "zim.el"))
|
(load (concat user-emacs-directory "zim.el"))
|
||||||
(load (concat user-emacs-directory "clearcase.el"))
|
(load (concat user-emacs-directory "clearcase.el"))
|
||||||
|
(load (concat user-emacs-directory "jekyll.el"))
|
||||||
|
|
||||||
(add-hook 'c-mode-hook
|
(add-hook 'c-mode-hook
|
||||||
(lambda ()
|
(lambda ()
|
||||||
|
112
jekyll.el
Normal file
112
jekyll.el
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
;; 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
Block a user