-
Notifications
You must be signed in to change notification settings - Fork 0
/
IDEmacs-helpers.el
86 lines (71 loc) · 3.16 KB
/
IDEmacs-helpers.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
;;; IDEmacs-helpers.el --- Helper functions for IDEmacs -*- lexical-binding: t -*-
;; Author Jachin Minyard
;; Maintainer: Jachin Minyard
;; Version: 0.0.1
;;; Commentary:
;; Helper functions for IDEmacs.
;;; Code:
(defconst idemacs/time_regex
"\\([01][0-9]\\|2[0-3]\\):[0-5][0-9]\\(:[0-5][0-9]\\)?"
"This is a regex string to allow HH:MM:SS time formats
It is in the 24hr time format and will accept the formats
HH:MM:SS or HH:MM")
(defun idemacs/helper-make-face (name &rest args)
"Creates a face with the name `name' and the properties `args'."
(list name `((t, args))))
(defun idemacs/helper-create-file (file template)
"Creates a file with the name `file' and writes the string `template' to the file."
(if (y-or-n-p (format "File %s does not exist. Would you like to create it?" file))
(progn (find-file file)
;(idemacs/helper-create-dir)
(insert template)
(save-buffer)
(kill-buffer))
(message "File %s not created" file)))
(defun idemacs/helper-create-dir (file)
"If the directory to the path does not exisit create it"
(let ((dir (file-name-directory file)))
(when dir
(unless (file-exists-p dir)
(make-directory dir t)))))
(defun idemacs/helper-create-classtime-string (time)
"creates a string from the time format passed in"
(format-time-string "<%Y-%m-%d %H:%M +1w>" time))
(defun idemacs/helper-replace-time-fields (string)
"this function takes in a time string that that is in the format of <yyyy-mm-dd HH:MM +ni -ni>
If any of these fields are empty this function removes the spaces from the string ie: <yyyy-mm-dd >
will become <yyyy-mm-dd>."
(replace-regexp-in-string "[ \t>]*$" ">" string))
(defun idemacs/helper-validate-org-mode ()
"Validates that the current buffer is in org-mode"
(unless (eq major-mode 'org-mode)
(error "This function can only be used in org-mode"))
(message "The current buffer is in org-mode"))
(defun idemacs/helper-validate-time (string)
"Validates the time string in the form of HH:MM:SS"
(if (string-match-p idemacs/time_regex string)
t
nil))
(defun idemacs/helper-get-headers (&optional level)
" This function returns a list of all the headers in the current buffer.
If `level' is provided, only headers of that level are returned."
(let ((headings '()))
(org-element-map (org-element-parse-buffer) 'headline
(lambda (headline)
(when (or (not level) (= (org-element-property :level headline) level))
(push (org-element-property :raw-value headline) headings))))
headings))
(defun idemacs/helper-select-header (&optional level)
"This function prompts the user to select a header a list of headings.
This list is generated by the function `idemacs/helper-get-headers'."
(let ((choice ""))
(if level
(setq choice (completing-read "Select a header: " (idemacs/helper-get-headers level) nil t))
(setq choice (completing-read "Select a header: " (idemacs/helper-get-headers) nil t)))))
(defun idemacs/helper-kill-calendar ()
"Kills the calendar buffer if it is open."
(let ((calendar-buffer (get-buffer "*Calendar*")))
(when calendar-buffer
(kill-buffer calendar-buffer))))
(provide 'IDEmacs-helpers)
;;; IDEmacs-helpers.el ends here