mirror of https://github.com/Chizi123/.emacs.d.git

Joel Grunbaum
2020-10-20 16980b385c59f962ec205c841fa5af6fe0354f4d
config.org
@@ -106,7 +106,10 @@
  (require 'ispell)
  (setq-default ispell-program-name "aspell")
  (setq-default ispell-local-dictionary "en_AU")
  (add-hook 'tex-mode-hook 'flyspell-mode)
  (add-hook 'latex-mode-hook 'flyspell-mode)
  (add-hook 'TeX-mode-hook 'flyspell-mode)
  (add-hook 'LaTeX-mode-hook 'flyspell-mode)
  ;; (add-hook 'latex-mode-hook 'flyspell-buffer)
  (add-hook 'org-mode-hook 'flyspell-mode)
  ;; (add-hook 'org-mode-hook 'flyspell-buffer)
@@ -608,7 +611,9 @@
  (set-language-environment "UTF-8")
  (prefer-coding-system 'utf-8)
  (setq-default indent-tabs-mode t
            tab-width 4)
                tab-width 4
                c-basic-offset tab-width
                cperl-indent-level tab-width)
  (delete-selection-mode)
  (global-set-key (kbd "RET") 'newline-and-indent)
#+END_SRC
@@ -778,6 +783,28 @@
    (setq company-minimum-prefix-length 3))
#+END_SRC
** LSP Mode
Use LSP for completion suggestions
#+BEGIN_SRC emacs-lisp
  (use-package lsp-mode
    :ensure t
    :hook ((lsp-mode . lsp-enable-which-key-integration))
    :init
    (setq lsp-keymap-prefix "C-c l")
    :commands lsp
    :config
    (setq read-process-output-max (* 1024 1024))
    (setq lsp-completion-provider :capf)
    (add-to-list 'exec-path "~/.cargo/bin"))
  (use-package lsp-ui
    :ensure t
    :commands lsp-ui-mode)
  (use-package helm-lsp
    :ensure t
    :commands helm-lsp-workspace-symbol)
#+END_SRC
** Version control
Settings for emacs' own version control system.
*** Enable version control on the mode line
@@ -937,6 +964,12 @@
                                     company-irony)))
#+END_SRC
**** LSP
Allow completion with LSP.
#+BEGIN_SRC emacs-lisp
(add-hook 'c-mode-hook 'lsp)
(add-hook 'cpp-mode-hook 'lsp)
#+END_SRC
*** emacs-lisp
**** COMMENT yasnippet
Enable yasnippet.
@@ -1052,6 +1085,14 @@
  (add-hook 'latex-mode-hook (lambda () (define-key latex-mode-map (kbd "C-c c") 'texcount)))
#+END_SRC
**** LSP
Allow LSP completion
#+BEGIN_SRC emacs-lisp
  (add-hook 'tex-mode-hook 'lsp)
  (add-hook 'latex-mode-hook 'lsp)
  (add-hook 'TeX-mode-hook 'lsp)
  (add-hook 'LaTeX-mode-hook 'lsp)
#+END_SRC
*** PlantUML
Sets the PlantUML path for the mode to generate models.
#+BEGIN_SRC emacs-lisp
@@ -1098,54 +1139,55 @@
**** Integrate into emacs
Add updated version (based off auto-package-update) and integrate it with Emacs.
#+BEGIN_SRC emacs-lisp
    (defun verilog-read-file-as-string (file)
      "Read FILE contents."
      (when (file-exists-p file)
        (with-temp-buffer
          (insert-file-contents file)
          (buffer-string))))
    (defun verilog-write-string-to-file (file string)
      "Substitute FILE contents with STRING."
  (defun verilog-read-file-as-string (file)
    "Read FILE contents."
    (when (file-exists-p file)
      (with-temp-buffer
        (insert string)
        (when (file-writable-p file)
          (write-region (point-min)
                        (point-max)
                        file))))
        (insert-file-contents file)
        (buffer-string))))
    (defun verilog-today-day ()
      (time-to-days (current-time)))
  (defun verilog-write-string-to-file (file string)
    "Substitute FILE contents with STRING."
    (with-temp-buffer
      (insert string)
      (when (file-writable-p file)
        (write-region (point-min)
                      (point-max)
                      file))))
    (defun should-update-verilog-p ()
      "Return non-nil when an update is due."
      (and
       (or
        (not (file-exists-p "~/.emacs.d/.last-verilog-update-day"))
        (if (>= (/ (- (verilog-today-day) (verilog-read-last-update-day)) 7) 1)
            t
          nil))))
  (defun verilog-today-day ()
    (time-to-days (current-time)))
    (defun verilog-read-last-update-day ()
      "Read last update day."
      (string-to-number
       (verilog-read-file-as-string "~/.emacs.d/.last-verilog-update-day")))
  (defun should-update-verilog-p ()
    "Return non-nil when an update is due."
    (and
     (or
      (not (file-exists-p "~/.emacs.d/.last-verilog-update-day"))
      (if (>= (/ (- (verilog-today-day) (verilog-read-last-update-day)) 7) 1)
          t
        nil))))
    (defun verilog-write-current-day ()
      "Store current day."
      (verilog-write-string-to-file
       "~/.emacs.d/.last-verilog-update-day"
       (int-to-string (verilog-today-day))))
  (defun verilog-read-last-update-day ()
    "Read last update day."
    (string-to-number
     (verilog-read-file-as-string "~/.emacs.d/.last-verilog-update-day")))
    (use-package verilog-mode
      :init
      (when (should-update-verilog-p)
          (get-verilog-latest)
          (verilog-write-current-day))
      (add-to-list 'load-path "~/.emacs.d/elpa/verilog-mode/verilog-mode.el")
      :config
      (autoload 'verilog-mode "verilog-mode" "Verilog mode" t )
      (add-to-list 'auto-mode-alist '("\\.[ds]?vh?\\'" . verilog-mode)))
  (defun verilog-write-current-day ()
    "Store current day."
    (verilog-write-string-to-file
     "~/.emacs.d/.last-verilog-update-day"
     (int-to-string (verilog-today-day))))
  (use-package verilog-mode
    :hook (verilog-mode . lsp)
    :init
    (when (should-update-verilog-p)
        (get-verilog-latest)
        (verilog-write-current-day))
    (add-to-list 'load-path "~/.emacs.d/elpa/verilog-mode/verilog-mode.el")
    :config
    (autoload 'verilog-mode "verilog-mode" "Verilog mode" t )
    (add-to-list 'auto-mode-alist '("\\.[ds]?vh?\\'" . verilog-mode)))
#+END_SRC
*** COMMENT MATLAB
@@ -1184,6 +1226,7 @@
#+BEGIN_SRC emacs-lisp
  (use-package rust-mode
    :ensure t
    :hook (rust-mode . lsp)
    :config
    ;; style guide suggests spaces not tabs
    (add-hook 'rust-mode-hook (lambda () (setq indent-tabs-mode nil)))
@@ -1219,6 +1262,12 @@
    :init
    (setq racer-command "~/.cargo/bin/racer"))
#+END_SRC
*** Bash
**** LSP
Completion with LSP
#+BEGIN_SRC emacs-lisp
(add-hook 'sh-mode-hook 'lsp)
#+END_SRC
* Org mode
** Up to date org
Pull the latest org mode from the repository, rather than the org which comes with emacs.