System Crafters

System Crafters Live! - September 10, 2021

Watch the recording on YouTube!

News

  • Tomorrow (Saturday the 11th) marks 1 year since the first Emacs From Scratch stream + 100 videos!
  • Sunday Sep 12, 1pm Pacific / 8pm UTC, Emacs/Nushell stream with Systems with JT
  • Submit a proposal for EmacsConf 2021! Deadline Sep 30 - https://emacsconf.org/2021/cfp/

~/Pictures/efs_1_year.png

Channel Brainstorming

  • Move Friday streams one hour earlier to 8am Pacific / 3pm UTC?
  • Create a second channel for Hack Sessions?
  • Which video series next? Finish an older one? Something new?

Emacs Package Potluck

Just like last time, let's try a bunch of Emacs packages.

I want to try your package suggestions, they can be any of the following:

  • A package you wrote (preferrable!)
  • A package you love
  • A package that doesn't get enough attention
  • A package you've never got working

Suggestions

  • TitanOfOld: beacon
  • Appenzell, garjola: ement.el (try it with System Crafters Matrix bridge)
  • Drishal: shackle
  • karthik: consult-dir, popper, ytel (YouTube via elfeed)
  • Zel: Vuiet
  • Mayush: ranger
  • dean: selectric-mode (thanks Abin!)
  • Tae Eun Kim: org-special-block-extras
  • Charlie McMackin: esup
  • Appenzell: org-roam-ui
  • Shubham: evil-replace-with-register
  • Eddas: org-sidebar
  • Noble&Savage: vue-mode
  • Abin Simon: evil-textobj-tree-sitter, fancy-narrow
  • Thomas Birkmaier - org-gantt
  • Tyler Grinn: org-real
  • ZW Wang: company-tabnine

Final Config


(use-package beacon
  :straight t)

(use-package plz
  :straight (plz :host github :repo "alphapapa/plz.el"))

;; Install Ement.
(use-package ement
  :straight (ement :host github :repo "alphapapa/ement.el"))

(use-package shackle
  :straight t
  :config
  (shackle-mode 1)
  (setq ;shackle-rules '((help-mode :noselect t))
        shackle-default-rule '(:same t)))

(use-package popper
  :straight t
  :bind (("C-`"   . popper-toggle-latest)
         ("M-`"   . popper-cycle)
         ("C-M-`" . popper-toggle-type))
  :init
  (setq popper-reference-buffers
        '("\\*Messages\\*"
          "Output\\*$"
          "*eshell*"
          help-mode
          compilation-mode))
  (popper-mode +1))

(use-package ytel
  :straight t
  :config
  (setq ytel-invidious-api-url "https://invidious.snopyta.org"))

(defun ytel-watch ()
  "Stream video at point in mpv."
  (interactive)
  (let* ((video (ytel-get-current-video))
       (id    (ytel-video-id video)))
    (start-process "ytel mpv" nil
       "mpv"
       (concat "https://www.youtube.com/watch?v=" id))
    "--ytdl-format=bestvideo[height<=?720]+bestaudio/best")
  (message "Starting streaming..."))

(use-package vuiet
  :straight t)

(use-package ranger
  :straight t)

(use-package selectric-mode
  :straight t)

;; https://github.com/benoitj/dotfiles/blob/main/private_dot_irssi/notify.wav
(defun selectric-type-sound ()
  "Make the sound of the printing element hitting the paper."
  (selectric-make-sound (expand-file-name "~/Downloads/notify.wav")))

Ashraz's Random Package Picker

Ashraz offered up this little gem before the stream but I didn't get to use it (yet!):


(defun potluck--show-winner (name)
  "Use animation to anounce the winner of a potluck draw.

See `potluck-random-package' for more information."
  ;; Heavily inspired by `butterfly'.
  (switch-to-buffer (get-buffer-create "*potluck*"))
  (erase-buffer)
  (sit-for 0)
  (animate-string "And the winner is..."
                  (/ (window-height) 2)
                  (- (/ (window-width) 2) 11))
  (animate-string name
                  (+ 3 (/ (window-height) 2))
                  (- (/ (window-width) 2) (/ (length name) 2))))

(defun potluck--random-element (sequence)
  "Pick one of the elements out of SEQUENCE randomly."
  (seq-elt sequence (random (length sequence))))

(defun potluck-random-package (&optional include-installed print-only)
  "Show a random not installed package.

If INCLUDE-INSTALLED is not nil, then also include installed packages.
If PRINT-ONLY is `t' the don't use any animation."
  (interactive)
  (let ((all-names (mapcar 'car package-archive-contents)))
    (unless include-installed
      (setq all-names (seq-difference all-names (mapcar 'car package-alist))))
    (let ((winner (symbol-name (potluck--random-element all-names))))
      (if print-only
          (princ winner)
        (potluck--show-winner winner)))))