Compare commits

...

6 Commits

3 changed files with 85 additions and 38 deletions

View File

@@ -251,25 +251,35 @@
#+end_src
* Org
I use a couple non-standard bits and pieces, but not a whole
bunch. I really like the =<s= to insert a source block thing (which
was deprecated); =org-tempo= brings that back.
** Code and Quote block shortcuts
I am a big fan of using =<s= for source blocks and =<q= for quotes;
these are enabled by the =org-tempo= module, which is included in
=org= but not loaded by default.
#+begin_src emacs-lisp
(use-package org
:config
(require 'org-tempo))
#+end_src
#+begin_src emacs-lisp
(use-package org :config (require 'org-tempo))
#+end_src
A keybinding to add a new heading is super useful
However, I have recently discovered, much to my despair, that these
shortcuts do not work if there are tabs in the line ahead of them!
Quite ridiculous. Easily worked around, however; I am going to
ensure that spaces are used for indentation when in org mode by
setting [[help:indent-tabs-mode][indent-tabs-mode]] to nil in a hook:
#+begin_src emacs-lisp
(add-hook 'org-mode-hook
(lambda ()
(define-key org-mode-map
(kbd "<C-M-return>")
'org-insert-heading-after-current)))
#+end_src
#+begin_src emacs-lisp
(add-hook 'org-mode-hook (lambda () (setq indent-tabs-mode nil)))
#+end_src
** Keybindings
A keybinding to add a new heading is super useful
#+begin_src emacs-lisp
(add-hook 'org-mode-hook
(lambda ()
(define-key org-mode-map
(kbd "<C-M-return>")
'org-insert-heading-after-current)))
#+end_src
** Journal Files
Sometimes I like to make a todo list for a day if I've a lot to do,
@@ -690,7 +700,7 @@
There's a lot of boilerplate in C, so I want YASnippet enabled.
#+begin_src emacs-lisp
(add-hook 'c-mode-hook (lambda () (yas-minor-mode)))
(add-hook 'c-mode-hook (lambda () (yas-minor-mode)))
#+end_src
** C++
@@ -1187,7 +1197,7 @@
I want to indent with tabs (set to 4 characters wide):
#+begin_src emacs-lisp
(setq lua-indent-level 4)
(setq lua-indent-level 4)
#+end_src
I also want to be able to run =lua-format= on files with =C-c f=
@@ -1196,51 +1206,77 @@
[[help:call-process-region][call-process-region]].
#+begin_src emacs-lisp
(defvar lua-format-binary "lua-format")
(defvar lua-format-binary "lua-format")
(defun lua-format ()
(interactive)
(if (executable-find lua-format-binary)
(let ((start (if (region-active-p) (region-beginning) (point-min)))
(end (if (region-active-p) (region-end) (point-max))))
(call-process-region start end lua-format-binary t '(t nil)))
(error "%s" (concat lua-format-binary " not found."))))
(defun lua-format ()
(interactive)
(if (executable-find lua-format-binary)
(let ((start (if (region-active-p) (region-beginning) (point-min)))
(end (if (region-active-p) (region-end) (point-max))))
(call-process-region start end lua-format-binary t '(t nil)))
(error "%s" (concat lua-format-binary " not found."))))
#+end_src
This then needs to be assigned to the keybinding:
#+begin_src emacs-lisp
(add-hook
'lua-mode-hook
(lambda () (define-key lua-mode-map (kbd "C-c f") 'lua-format)))
(add-hook
'lua-mode-hook
(lambda () (define-key lua-mode-map (kbd "C-c f") 'lua-format)))
#+end_src
** BASIC
=basic-mode= provides syntax highlighting and a few nice features:
#+begin_src emacs-lisp
(use-package basic-mode)
(use-package basic-mode)
#+end_src
As well as =.bas= files, I want to open all =.bbc= files in
=basic-mode=:
#+begin_src emacs-lisp
(add-to-list 'auto-mode-alist '("\\.bbc\\'" . basic-mode))
(add-to-list 'auto-mode-alist '("\\.bbc\\'" . basic-mode))
#+end_src
** Nix
Basic editing support comes from =nix-mode=:
#+begin_src emacs-lisp
(use-package nix-mode)
(use-package nix-mode)
#+end_src
And =nix-update= provides a convenient way to update ~fetch~
blocks:
#+begin_src emacs-lisp
(use-package nix-update)
(use-package nix-update)
#+end_src
** SCAD
There is a language server for OpenSCAD, but I think I'll just
stick to the basic mode:
#+begin_src emacs-lisp
(use-package scad-mode)
#+end_src
** Go
First of all, of course, install =go-mode=:
#+begin_src emacs-lisp
(use-package go-mode)
#+end_src
This package provides a convenient lil function to use gofmt to
format a buffer; I want to run this whenever I save a go source
file. This is pretty easily done by adding a =before-save-hook= in
a =go-mode-hook= (hey, I heard you like hooks...)
#+begin_src emacs-lisp
(add-hook 'go-mode-hook
(lambda ()
(add-hook 'before-save-hook 'gofmt-before-save)))
#+end_src
* Tool Integrations
@@ -1357,7 +1393,7 @@
ChatGPT.
#+begin_src emacs-lisp
(use-package chatgpt-shell)
(use-package chatgpt-shell)
#+end_src
[[help:chatgpt-shell-openai-key][chatgpt-shell-openai-key]] must also be set to a function that
@@ -1380,6 +1416,17 @@
(use-package graphviz-dot-mode)
#+end_src
** Man pages
Man page support is built in to Emacs but it's one of those
annoying things where it will open in the "other" window instead of
where you ran =M-x man= from. Thankfully, this behaviour can be
changed by setting [[help:Man-notify-method][Man-notify-method]]. The value ~'pushy~ makes the
man page open in the current window.
#+begin_src emacs-lisp
(setq Man-notify-method 'pushy)
#+end_src
* Backup and Autosave
** Keep $PWD Tidy
Emacs' default behaviour of dumping temporary files in the current
@@ -1645,6 +1692,6 @@
memory usage getting too high.
#+begin_src emacs-lisp
(setq gc-cons-threshold 1000000)
(setq gc-cons-percentage 0.2)
(setq gc-cons-threshold 1000000)
(setq gc-cons-percentage 0.2)
#+end_src

View File

@@ -1,6 +1,6 @@
# -*- mode: snippet -*-
# name: header-guard
# binding: C-c C-k C-l
# binding: C-c C-k C-h
# key: hdr
# --
#ifndef ${1:`(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`_H}

View File

@@ -4,8 +4,8 @@
# key: spdx
# --
/*
* SPDX-License-Identifier: $1
* Copyright (c) Camden Dixie O'Brien
* SPDX-License-Identifier: $1
*/
$0