(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(setq inhibit-startup-message t)
(prefer-coding-system 'utf-8)
(setq backup-directory-alist `(("." . "~/.emacs-saves")))
(setq auto-save-file-name-transforms `((".*" "~/.emacs-saves/" t)))
(make-directory "~/.emacs-saves" t)
(use-package vertico
:init (vertico-mode))
(use-package orderless
:custom (completion-styles '(orderless)))
(use-package marginalia
:init (marginalia-mode))
(use-package consult
:bind (("C-s" . consult-line)
("C-x b" . consult-buffer)
("M-g g" . consult-goto-line)
("M-g i" . consult-imenu)))
(use-package corfu
:custom
(corfu-auto t)
(corfu-cycle t)
:init
(global-corfu-mode))
(use-package cape
:init
(add-to-list 'completion-at-point-functions #'cape-file)
(add-to-list 'completion-at-point-functions #'cape-dabbrev)
(add-to-list 'completion-at-point-functions #'cape-symbol))
(setq inferior-lisp-program "ros run")
(use-package sly
:init (setq sly-lisp-implementations '((roswell ("ros" "run"))))
:config (setq sly-symbol-completion-mode t))
(use-package eglot
:hook ((python-mode . eglot-ensure)
(c-mode . eglot-ensure)
(c++-mode . eglot-ensure)))
(use-package which-key
:init (which-key-mode))
(use-package evil
:init (evil-mode 1))
(use-package general
:config
(general-create-definer my/leader-keys
:keymaps '(normal insert visual emacs)
:prefix "SPC"
:global-prefix "C-SPC")
(my/leader-keys
"f" '(:ignore t :which-key "fichier")
"f f" '(find-file :which-key "ouvrir fichier")
"f s" '(save-buffer :which-key "sauver")
"b" '(:ignore t :which-key "buffer")
"b b" '(consult-buffer :which-key "changer buffer")
"w" '(:ignore t :which-key "fenêtres")
"w v" '(split-window-right :which-key "split vertical")
"w s" '(split-window-below :which-key "split horizontal")
"w d" '(delete-window :which-key "fermer fenêtre")
"h" '(:ignore t :which-key "aide")
"h f" '(describe-function :which-key "fonction")
"h v" '(describe-variable :which-key "variable")
"h k" '(describe-key :which-key "touche")
"p" '(:ignore t :which-key "projet")
"p p" '(projectile-switch-project :which-key "changer projet")
"d" '(:ignore t :which-key "Dired")
"d d" '(dirvish :which-key "ouvrir Dired")
"g" '(:ignore t :which-key "Magit")
"g g" '(magit-status :which-key "status git")))
(use-package projectile
:diminish projectile-mode
:config (projectile-mode)
:custom ((projectile-completion-system 'default))
:bind-keymap ("C-c p" . projectile-command-map)
:init
(when (file-directory-p "~/projects")
(setq projectile-project-search-path '("~/projects")))
(setq projectile-switch-project-action #'projectile-dired))
(use-package dirvish
:init (dirvish-override-dired-mode))
(use-package solarized-theme)
(load-theme 'solarized-light t)
(defun toggle-solarized-theme ()
(interactive)
(let ((current (car custom-enabled-themes)))
(mapc #'disable-theme custom-enabled-themes)
(load-theme (if (eq current 'solarized-light)
'solarized-dark
'solarized-light) t)))
(global-set-key (kbd "<f6>") #'toggle-solarized-theme)
(use-package perspective
:custom
(persp-mode-prefix-key (kbd "C-c M-p"))
:init
(persp-mode)
:config
(setq persp-state-default-file "~/.emacs.d/perspectives")
(add-hook 'kill-emacs-hook #'persp-state-save))
(use-package org-auto-tangle
:hook (org-mode . org-auto-tangle-mode))
(message "✅ Emacs avec complétion moderne, workspaces, Solarized et raccourcis SPC")