Improve wakatime module; add +wakatime/setup
+ +wakatime/setup prompts for API key, after asking if you want to open a browser to the wakatime api-key page. + wakatime-api-key is saved to a cache file in doom-cache-dir. + Fixed wakatime not starting on the first buffer when passing a file to Emacs directly. Suggested by @freddian
This commit is contained in:
parent
be44b1ae8a
commit
6e3afb0249
1 changed files with 32 additions and 5 deletions
|
@ -1,17 +1,44 @@
|
||||||
;;; tools/wakatime/autoload.el -*- lexical-binding: t; -*-
|
;;; tools/wakatime/autoload.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(defvar +wakatime-api-file (concat doom-cache-dir "wakatime.el")
|
||||||
|
"Where the wakatime api key is cached.")
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(add-hook 'doom-after-switch-buffer-hook #'+wakatime|autostart)
|
(add-hook 'doom-after-switch-buffer-hook #'+wakatime|autostart)
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defalias '+wakatime/start '+wakatime|autostart)
|
(advice-add 'after-find-file :before #'wakatime|autostart)
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun +wakatime|autostart ()
|
(defun +wakatime/setup ()
|
||||||
|
"Setup Wakatime in Emacs and start `global-wakatime-mode'.
|
||||||
|
|
||||||
|
This will prompt you for your api key. You only need to run this when your api
|
||||||
|
changes."
|
||||||
|
(interactive)
|
||||||
|
(when (y-or-n-p "No API key is registered. Open a browser on the wakatime api key page?")
|
||||||
|
(browse-url "https://wakatime.com/settings/api-key"))
|
||||||
|
(let ((api-key (read-string "Enter your wakatime API key: ")))
|
||||||
|
(unless api-key
|
||||||
|
(user-error "No api key was received."))
|
||||||
|
(setq wakatime-api-key api-key)
|
||||||
|
(with-temp-file +wakatime-api-file
|
||||||
|
(princ `(setq wakatime-api-key ,api-key)
|
||||||
|
(current-buffer)))
|
||||||
|
(require 'wakatime-mode)
|
||||||
|
(global-wakatime-mode +1)))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +wakatime|autostart (&rest _)
|
||||||
"Initialize wakatime (if `wakatime-api-key' is set, otherwise no-op with a
|
"Initialize wakatime (if `wakatime-api-key' is set, otherwise no-op with a
|
||||||
warning)."
|
warning)."
|
||||||
(interactive)
|
(interactive)
|
||||||
(if (boundp 'wakatime-api-key)
|
(when (and (not (bound-and-true-p wakatime-api-key))
|
||||||
|
(file-exists-p +wakatime-api-file))
|
||||||
|
(load +wakatime-api-file nil t))
|
||||||
|
(if (bound-and-true-p wakatime-api-key)
|
||||||
(global-wakatime-mode +1)
|
(global-wakatime-mode +1)
|
||||||
(message "No `wakatime-api-key' set! wakaktime-mode will stay disabled."))
|
(message "wakatime-mode isn't set up. Run `M-x +wakatime/start' to do so (only necessary once)."))
|
||||||
(remove-hook 'doom-after-switch-buffer-hook #'+wakatime-init))
|
;;
|
||||||
|
(remove-hook 'doom-after-switch-buffer-hook #'+wakatime|autostart)
|
||||||
|
(advice-remove 'after-find-file #'wakatime|autostart))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue