Table of Contents

1. Programming Configuration Loader

This file serves as the main entry point for all programming-related configurations. It loads language-specific modules and platform-specific tools.

1.1. Purpose

The loader (prog-conf.el) is responsible for:

  • Loading general programming settings (prog-general-conf)
  • Loading language-specific configurations (web, Python, Ruby, Lua)
  • Conditionally loading platform-specific tools
  • Managing Clojure, SQL, and tree-sitter integrations

1.2. Architecture

The programming configuration is modular:

prog-conf.el (this file)
├── prog-general-conf.el   → General programming settings
├── prog-web-conf.el       → Web development (HTML/CSS/JS/TS)
├── prog-python-conf.el    → Python development
├── prog-ruby-conf.el      → Ruby development
└── prog-lua-conf.el       → Lua development

1.3. Loader Implementation

;;; prog-conf.el --- Programming configuration loader -*- lexical-binding: t; -*-
;;; Commentary:
;;; Main programming configuration file that loads language-specific modules
;;; and platform-specific programming tools.
;;; Code:

;; Load general programming configuration
(require 'prog-general-conf)

;; Load language-specific configurations
(require 'prog-web-conf)
(require 'prog-python-conf)
(require 'prog-ruby-conf)
(require 'prog-lua-conf)

;; Platform-specific and additional tools
(unless (eq system-type 'windows-nt)
  ;; Clojure development (non-Windows only)
  ;; TODO: finish https://clojure-doc.org/articles/tutorials/introduction/
  (use-package cider
      :custom
      (nrepl-use-ssh-fallback-for-remote-hosts t))

  ;; SQL database interaction
  (use-package ejc-sql
      ;; Github: https://github.com/kostafey/ejc-sql?tab=readme-ov-file#mariadbconnection
      ;; M-x ejc-connect
      ;; M-x ejc-quit-connection -> it refreshes the connection
      :config
      (load (expand-file-name ".local/ejc-config.el" user-emacs-directory) 'noerror 'nomessage))

  ;; Tree-sitter support
  (use-package tree-sitter
      :config
      (global-tree-sitter-mode 1))
  (use-package tree-sitter-langs)
  (use-package treesit-auto
      :config
      (global-treesit-auto-mode 1)))

(provide 'prog-conf)
;;; prog-conf.el ends here

1.4. Non-Windows Tools

Several tools are only loaded on non-Windows systems:

1.4.1. Clojure Development (CIDER)

  • Interactive Clojure development environment
  • REPL integration
  • SSH support for remote development

1.4.2. SQL Database Interaction (ejc-sql)

  • Connect to databases directly from Emacs
  • Execute SQL queries
  • Load local configuration from ~/.emacs.d/.local/ejc-config.el

1.4.3. Tree-sitter

  • Fast, incremental parsing library
  • Better syntax highlighting
  • More accurate code navigation
  • Language grammar support via tree-sitter-langs
  • Automatic mode activation via treesit-auto