presentations:introduction_to_emacs

### Presentation

### Planning

#### Goals

Aiming for 30 minutes, so these have to fit within that.

- elisp/emacs primer
  - setq, types (t, nil), quote/unquote
  - major/minor modes, hooks
- Semi-comfortable
  - Good colorschemes
  - Annoyances handled
    - Code indentation
- Aware of basic keysequences and commands with pointers to learn more and practice.
- Aware of how to use the built-in help facilities to learn about the editor and remind themselves.
  - Help, Info, describe-*, …
- Aware of how to install/configure additional packages.
- Configs for particular languages
  - ??? Cover configuring the basics/general aspects of configuring the editor for a new language.
  - Have basic configs for popular languages, or at least mention the recommended packages for popular languages.
    - Target languages should be those taught in the CS courses
    - Java, C/C++, Rust, Racket, Python, OCaml, Ruby, Markdown, JS
- Compare and contrast to other editors audience may be familiar with.
  - Should probably compare to VS Code
- Big ideas
  - Everything is a buffer
    - Everything uses the same keybinds.
  - ??? Literate programming. We may be using a literate Org file for the config. Not an Emacs-specific idea so maybe don't go into too much detail.
  - ??? Interacting with REPLs? SLIME-style REPLs?
  - ??? Everything in Emacs. Maybe at least mention the possibilities, while emphasizing that it is not necessary to have a good experience.
    - Email

#### Inspiration

- https://karthinks.com/software/batteries-included-with-emacs/

#### Ideas for configs to cover

Might not cover all of them verbally, but should be in supplementary materials.

- setting indentation settings. Changing them per-mode. e.g. c-basic-offset variable. tab-width variable. indent-tabs-mode?
- custom-file variable? Storing config made through the customizations system in a different file than init.el?
- delete-by-moving-to-trash variable
- Backup files. I think the default is FILENAME~, which can be annoying.
- global-display-line-numbers-mode
- sentence-end-double-space variable
- Interactions with system clipboard.
- winner-mode?
- font configuration
- colorscheme
  - Have 2-6 good colorschemes configured by default in the sample config.
  - Prot's themes have gotten lots of attention recently due to their detail and accessibility:
    - ef-themes
    - modus-themes
    - standard-themes

#### Ideas for concepts to cover

- Managing, storing, version controlling, backing up configs and dotfiles?
  - Maybe out of scope but should at least mention it.
- Customization system
- Help system, info system, other docs.
- Built-in tutorial
- Recommended external information resources.
- Defining your own keybindings
- Installing and configuring packages.

#### Ideas for packages to cover

- use-package
- which-key
- Some search/completion package like Vertico and friends?
- magit
- org-mode
- evil-mode
- cua-mode
- eglot / LSP stuff (requires installing LSPs separately)
- tab-completion (corfu / company)
- tree-sitter (requires installing tree-sitter binaries separately)
- built-ins: eww, dired, tramp, games

#### Miscellaneous ideas

- Mention Wayland stuff in case people have blurriness? Linux users are rare but Ubuntu has Wayland as default so some might face this issue.
  - solution is to use PGTK build in emacs 29+
- Make sure instructions work or at least are likely to work for Windows and macOS.
  - TODO: Where are Emacs configs stored on Windows?

presentations/introduction_to_emacs.txt · Last modified: 2024/08/25 21:24 by admin