You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.9 KiB
74 lines
1.9 KiB
;;; utils.el --- The utility collections |
|
;;; Version: 0.1.0 |
|
;;; Package-Version 0.1.0 |
|
;;; Commentary: |
|
;;; Code: |
|
|
|
(defmacro comment (&rest body) |
|
"Ignore the given BODY." |
|
nil) |
|
|
|
|
|
(defun prod-p () |
|
"Return non-nil if we're in development mode." |
|
(when (getenv "LXHOME_PROD") |
|
t)) |
|
|
|
|
|
(defun get-buffer-global-props (prop) |
|
"Get a plists of global org properties PROP of current buffer." |
|
(car |
|
(org-element-map |
|
(org-element-parse-buffer) |
|
'keyword |
|
(lambda (el) |
|
(when (string-match prop (org-element-property :key el)) |
|
(org-element-property :value el)))))) |
|
|
|
|
|
(defun get-file-global-props (file prop) |
|
"Return the value of the given global PROP in the given org FILE." |
|
(with-temp-buffer |
|
(insert-file-contents file) |
|
(message (get-buffer-global-props prop)))) |
|
|
|
|
|
(comment |
|
(setq org-directory "~/src/lxhome/orgs/") |
|
(let ((f "./orgs/index.org")) |
|
(get-file-global-props f "CATEGORY"))) |
|
|
|
|
|
(defun ->epoch (date-str) |
|
"Convert the given DATE-STR to epoch seconds." |
|
;; Just because it's easier to deal with date in bash rather than elisp |
|
(string-to-number |
|
(shell-command-to-string (concat (format "date -d %s" date-str) " +%s")))) |
|
|
|
|
|
(defun replace-in-buffer (str replacement) |
|
"Replace the given STR with its REPLACEMENT in current buffer." |
|
(with-current-buffer (current-buffer) |
|
(goto-char (point-min)) |
|
(while (search-forward str nil t) |
|
(replace-match replacement)))) |
|
|
|
|
|
(defun copy-template (src dest content &optional title) |
|
"Replace the placeholder in SRC with CONTENT and write it to DEST." |
|
(with-temp-file dest |
|
(insert-file-contents src) |
|
(when title |
|
(replace-in-buffer "<<<title>>>" title)) |
|
(replace-in-buffer "<<<links>>>" content))) |
|
|
|
|
|
(defun get-file-tags (file) |
|
"Returna list of tags for the given FILE." |
|
(with-temp-buffer |
|
(insert-file-contents file) |
|
(mapcar #'car (org-get-buffer-tags)))) |
|
|
|
|
|
(provide 'lisp/utils) |
|
;;; utils.el ends here
|
|
|