diff --git a/core/core-popups.el b/core/core-popups.el index 3c57fbe5b..a7631bf65 100644 --- a/core/core-popups.el +++ b/core/core-popups.el @@ -367,6 +367,10 @@ the command buffer." (advice-add 'evil-window-move-far-right :around 'doom*popups-save-neotree)) +(after! twittering-mode + (setq twittering-pop-to-buffer-function 'pop-to-buffer)) + + ;; Ensure these settings are attached to org-load-hook as late as possible, ;; giving other modules to add their own hooks. (add-hook! 'after-init-hook diff --git a/modules/app/twitter/autoload.el b/modules/app/twitter/autoload.el new file mode 100644 index 000000000..1165de32f --- /dev/null +++ b/modules/app/twitter/autoload.el @@ -0,0 +1,35 @@ +;;; app/twitter/autoload.el + +;;;###autoload +(defun =twitter () + (interactive) + (+workspace-switch "Twitter" t) + (delete-other-windows) + (call-interactively 'twit) + (switch-to-buffer (car twittering-initial-timeline-spec-string)) + (dolist (name (cdr twittering-initial-timeline-spec-string)) + (split-window-horizontally) + (switch-to-buffer name)) + (balance-windows)) + +;;;###autoload +(defun +twitter/quit () + (interactive) + (call-interactively 'twittering-kill-buffer) + (+workspace/close-window-or-workspace)) + +;;;###autoload +(defun +twitter/quit-all () + (interactive) + (if (equal (+workspace-current-name) "Twitter") + (+workspace/delete "Twitter") + (dolist (buf (doom-buffers-in-mode 'twittering-mode)) + (with-current-buffer buf + (twittering-kill-buffer))))) + +;;;###autoload +(defun +twitter/rerender-all () + (interactive) + (dolist (buf (doom-buffers-in-mode 'twittering-mode)) + (with-current-buffer buf + (twittering-rerender-timeline-all buf)))) diff --git a/modules/app/twitter/config.el b/modules/app/twitter/config.el new file mode 100644 index 000000000..03cf4cb9f --- /dev/null +++ b/modules/app/twitter/config.el @@ -0,0 +1,40 @@ +;;; app/twitter/config.el + +(def-package! twittering-mode + :commands twit + :config + (setq twittering-use-master-password t + twittering-icon-mode nil + ;; twittering-use-icon-storage t + ;; twittering-icon-storage-file (concat doom-cache-dir "twittering-mode-icons.gz") + ;; twittering-convert-fix-size 12 + twittering-timeline-header "" + twittering-timeline-footer "" + twittering-edit-skeleton 'inherit-any + twittering-status-format + "%RT{%FACE[bold]{RT }}%S (%FACE[bold]{@%s}), %@%r%R:\n%FOLD[ ]{%t %QT{\n+----\n%FOLD[|]{ %S (@%s), %@:\n%FOLD[ ]{%t}}\n+----}}\n " + twittering-initial-timeline-spec-string + '(":home" ":mentions" ":direct_messages")) + + (set! :popup "*twittering-edit*" :size 12 :select t :modeline nil) + + (add-hook 'twittering-edit-mode-hook 'doom-hide-modeline-mode) + (after! doom-themes + (add-hook 'twittering-mode-hook 'doom-buffer-mode)) + + (add-hook! twittering-mode + (setq header-line-format (doom-modeline 'twitter) + mode-line-format nil)) + + (map! :map twittering-mode-map + [remap twittering-kill-buffer] '+twitter/quit + "Q" '+twitter/quit-all + "o" 'ace-link-addr + "j" 'evil-next-visual-line + "k" 'evil-previous-visual-line + "J" 'twittering-goto-next-status + "K" 'twittering-goto-previous-status) + + (def-modeline! twitter + (bar matches " %b " selection-info) + ())) diff --git a/modules/app/twitter/packages.el b/modules/app/twitter/packages.el new file mode 100644 index 000000000..c824062b5 --- /dev/null +++ b/modules/app/twitter/packages.el @@ -0,0 +1,4 @@ +;; -*- no-byte-compile: t; -*- +;;; app/twitter/packages.el + +(package! twittering-mode)