Skip to content

flajann2/emacs-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

emacs-config by Fred Mitchell

Author

Fred Mitchell, Atomlogik

Version

3.0.2.0

Synopsis

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.

Documentation

Installation notes

  • Always use the tagged version for the “stable” versions. The latest can be pulled from master, but no guarantees.

Release notes

  • 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-lspipx install semgrep
    Add this early in your CMakeLists.txtset(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.

Organization

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 Documentation

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

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.

About

My Emacs config, many many years in the making.

Resources

License

Stars

Watchers

Forks

Packages

No packages published