==== 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?