Fred Mitchell, Atomlogik
3.0.2.0
This is an extensive Emacs configuration system that has been in development for about 15 years. It encompasses many different programming languages, features an IDE-like interface, and includes Org mode, Evil mode, and more.
The configuration files have been split into individual task-based init files to facilitate easier management of your settings. Additionally, the master config file allows you to selectively require the task-based init files simply by commenting them out if they are no longer needed.
Furthermore, the master config can distinguish between Emacs being run in the command line versus as a GUI, as many configurations may only make sense in a GUI context.
- Always use the tagged version for the “stable” versions. The latest can be pulled from master, but no guarantees.
- 3.0.0.2 – An overhaul is in progress to make everything use use-package. You will no longer have to install dependencies by hand. Some functionality is currently broken, like updating the Org TOC. It will be addressed eventually.
- 3.0.0.4 – bug fixes and tweaks. Ellama now works. C-c e ? for keyboard shortcuts
- 3.0.0.5 – paren mismatch caught
- 3.0.0.6 – Window Layout init cleanup
- 3.0.0.7 – toggle syntax hilighting with C-c z
- 3.0.0.8 – Fixed isssues with Org Tab mode. At issue here were some old cruft in init-el which I had to eliminate. Also, only org-superstar is being used, and the old defunct prettifier has been removed.
- 3.0.1.0 – cleaned up the C++ support and added clangd LSP to
it. You need to install clangd and semgrep-ls
clangd (check your distro) semver-ls pipx install semgrep Add this early in your CMakeLists.txt set(CMAKE_EXPORT_COMPILE_COMMANDS ON) Also, various cleanups, such as:
- fixed font-lock syntax hilighting problem
It appears to be a bug in Emacs’ JIT, so a workaround has been employed.
- Some issues with Haskell Language Server apparently
resolved, but I moved to the latest ghc and installed hlint, as well as the latest HLS. There are some remaining issues with LSP automatically starting for C++ files, to be resolved shortly.
- 3.0.2.0 – Haskell alignment tools for alignment of your Haskell code.
First, you highlight the region you wish to align. Then:
- align record fields (C-c :)
data Window = Window { address :: Text , workspace :: Text , at :: (Int, Int) , size :: (Int, Int) , title :: Text , class_ :: Text , floating :: Bool } deriving (Show, Eq, Generic) -- becomes data Window = Window { address :: Text , workspace :: Text , at :: (Int, Int) , size :: (Int, Int) , title :: Text , class_ :: Text , floating :: Bool } deriving (Show, Eq, Generic)
- align initializers (C-c =)
defaultConfig = LayoutConfig { defaultLayout = "master" , workspaceRules = [] , masterWidth = 0.6 , masterCount = 1 , gapSize = 8 , borderSize = 2 } -- becomes defaultConfig = LayoutConfig { defaultLayout = "master" , workspaceRules = [] , masterWidth = 0.6 , masterCount = 1 , gapSize = 8 , borderSize = 2 }
- align left arrows (C-c <)
getHyprEventSocketPath = do runtimeDir <- getEnv "XDG_RUNTIME_DIR" instanceSig <- getEnv "HYPRLAND_INSTANCE_SIGNATURE" return $ runtimeDir ++ "/hypr/" ++ instanceSig ++ "/.socket2.sock" -- becomes getHyprEventSocketPath = do runtimeDir <- getEnv "XDG_RUNTIME_DIR" instanceSig <- getEnv "HYPRLAND_INSTANCE_SIGNATURE" return $ runtimeDir ++ "/hypr/" ++ instanceSig ++ "/.socket2.sock"
- align right arrows (C-c >)
getActiveMonitor = do response <- hyprlandCommand "j/monitors" case response of Nothing -> return 0 Just json -> do let monitors = fromMaybe [] (decode $ BL.pack $ T.unpack json) :: [Monitor] return $ fromMaybe 0 $ listToMaybe [mon_id m | m <- monitors] -- becomes getActiveMonitor = do response <- hyprlandCommand "j/monitors" case response of Nothing -> return 0 Just json -> do let monitors = fromMaybe [] (decode $ BL.pack $ T.unpack json) :: [Monitor] return $ fromMaybe 0 $ listToMaybe [mon_id m | m <- monitors]
TODO: Later, I may combine all the above into one operation. But TODO: I have to make sure that there is no possibility of doing something TODO: unwanted. So, as they say, digression is the better part TODO: of valor. Or something like that.
- align record fields (C-c :)
The root of emacs-config contains the .emacs config that emacs normally looks for. It is strongly recommended that you do a soft link to this file in your home directory.
You may want to merge your current .emacs file with this one to preserve your present settings.
Schlau Compile is a utility to allow you to configure compilation for nearly any git project at the press of a button.
The documentation for Schlau Compile can be found at:
Schlau Compile really should be in the Melpa, but there were some issues with me putting it there since this is a derivative work of Smart Compile. The functionality of Schlau Compile has diverged greately and the namespace changes that was needed to be made did not make it a good canidate for merging. So for all intents and purposes, this is a different project that stands alone.