dotfiles/.myemacs
2019-11-19 09:22:07 +01:00

109 lines
3.5 KiB
Plaintext

;******************************************************************************;
; ;
; ::: :::::::: ;
; .myemacs :+: :+: :+: ;
; +:+ +:+ +:+ ;
; By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ ;
; +#+#+#+#+#+ +#+ ;
; Created: 2018/07/09 18:59:05 by tmaze #+# #+# ;
; Updated: 2019/11/05 10:45:00 by tmaze ### ########.fr ;
; ;
;******************************************************************************;
(load "package")
(require 'package)
(let* ((no-ssl (and (memq system-type '(windows-nt ms-dos))
(not (gnutls-available-p))))
(proto (if no-ssl "http" "https")))
(when no-ssl
(warn "\
Your version of Emacs does not support SSL connections,
which is unsafe because it allows man-in-the-middle attacks.
There are two things you can do about this warning:
1. Install an Emacs version that does support SSL and be safe.
2. Remove this warning from your init file so you won't see it again."))
;; Comment/uncomment these two lines to enable/disable MELPA and MELPA Stable as desired
(add-to-list 'package-archives (cons "melpa" (concat proto "://melpa.org/packages/")) t)
;;(add-to-list 'package-archives (cons "melpa-stable" (concat proto "://stable.melpa.org/packages/")) t)
(when (< emacs-major-version 24)
;; For important compatibility libraries like cl-lib
(add-to-list 'package-archives (cons "gnu" (concat proto "://elpa.gnu.org/packages/")))))
(package-initialize)
(setq package-initialize-at-startup nil)
(defvar tmaze/packages '(lsp-treemacs
flycheck
ccls
rust-mode
company
use-package
lsp-mode
lsp-ui
company-lsp
column-enforce-mode
magit
treemacs
treemacs-magit
jinja2-mode
ox-twbs
dakrone-theme)
"Default packages")
(defun tmaze/packages-installed-p ()
(cl-loop for pkg in tmaze/packages
when (not (package-installed-p pkg)) do (cl-return nil)
finally (cl-return t)))
(unless (tmaze/packages-installed-p)
(message "%s" "Refreshing package database...")
(package-refresh-contents)
(dolist (pkg tmaze/packages)
(when (not (package-installed-p pkg))
(package-install pkg))))
(load-theme 'dakrone t)
(global-set-key (kbd "C-x g") 'magit-status)
(global-set-key (kbd "C-x t") 'treemacs)
(menu-bar-mode -1)
(xterm-mouse-mode 1)
(global-git-commit-mode)
(global-undo-tree-mode)
(line-number-mode 1)
(column-number-mode 1)
(use-package rust-mode
:mode "\\.rs\\'"
:init
(setq rust-format-on-save t))
(use-package lsp-mode
:init
(add-hook 'prog-mode-hook 'lsp-mode)
:hook (rust-mode . (lambda () (lsp))))
(use-package ccls
:hook ((c-mode c++-mode objc-mode cuda-mode) .
(lambda () (require 'ccls) (lsp))))
(use-package lsp-ui
:hook (lsp-mode . lsp-ui-mode))
(use-package flycheck
:hook ((rust-mode c-mode c++-mode objc-mode cuda-mode) .
flycheck-mode))
(use-package lsp-treemacs
:commands lsp-treemacs-errors-list)
(use-package cargo
:hook (rust-mode . (lambda () (cargo-minor-mode))))
(setq lsp-prefer-flymake nil)
(setenv "ESHELL" (expand-file-name "~/.emacs.d/eshell"))