From ad79192e2dd92a7ca813f53320b0a191edbe29c5 Mon Sep 17 00:00:00 2001 From: Bozhidar Batsov Date: Thu, 8 Oct 2020 10:13:05 +0300 Subject: [PATCH] Add extra configuration for WSL and Windows --- CHANGELOG.md | 1 + core/prelude-windows.el | 54 +++++++++++++++++++++++++++++++++++++ core/prelude-wsl.el | 42 +++++++++++++++++++++++++++++ init.el | 24 +++++++++++------ personal/prelude-modules.el | 42 +++++++++++++++++++++++++++++ 5 files changed, 155 insertions(+), 8 deletions(-) create mode 100644 core/prelude-windows.el create mode 100644 core/prelude-wsl.el create mode 100644 personal/prelude-modules.el diff --git a/CHANGELOG.md b/CHANGELOG.md index f5ed719..de23afa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ * Add the `ag` package. It provides a nice alternative to `grep` and has nice Projectile integration. * Auto-install `adoc-mode` for AsciiDoc files. * Added `transient/` to `.gitignore`. +* Added additional configuration modules for WSL (`prelude-wsl`) and Windows (`prelude-windows`). ### Bugs fixed diff --git a/core/prelude-windows.el b/core/prelude-windows.el new file mode 100644 index 0000000..1fefef6 --- /dev/null +++ b/core/prelude-windows.el @@ -0,0 +1,54 @@ +;;; prelude-windows.el --- Emacs Prelude: Windows-specific setup. +;; +;; Copyright © 2011-2020 Bozhidar Batsov +;; +;; URL: https://github.com/bbatsov/prelude + +;; This file is not part of GNU Emacs. + +;;; Commentary: + +;; Additional setup that's useful when running Emacs in Windows. + +;;; License: + +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License +;; as published by the Free Software Foundation; either version 3 +;; of the License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Code: + +;; Teach Emacs how to interpret various modifier keys +(setq w32-pass-lwindow-to-system nil) +(setq w32-lwindow-modifier 'super) ; Left Windows key + +(setq w32-pass-rwindow-to-system nil) +(setq w32-rwindow-modifier 'super) ; Right Windows key + +(setq w32-pass-apps-to-system nil) +(setq w32-apps-modifier 'hyper) ; Menu/App key + +;; Git setup (assuming you've installed Git for Windows) +(when (file-exists-p "C:/Program Files/Git/bin") + (add-to-list 'exec-path "C:/Program Files/Git/bin") + (add-to-list 'exec-path "C:/Program Files/Git/mingw64/bin") + (setenv "PATH" (concat "C:/Program Files/Git/bin;" "C:/Program Files/Git/mingw64/bin;" (getenv "PATH")))) + +;; needed for arc-mode (it allows you to open archives in Emacs) +(if (file-exists-p "C:/Program Files/7-Zip") + (add-to-list 'exec-path "C:/Program Files/7-Zip") + (message "7-Zip not found. It's a good idea to install it.")) + +(provide 'prelude-windows) +;;; prelude-windows.el ends here diff --git a/core/prelude-wsl.el b/core/prelude-wsl.el new file mode 100644 index 0000000..deef9ff --- /dev/null +++ b/core/prelude-wsl.el @@ -0,0 +1,42 @@ +;;; prelude-wsl.el --- Emacs Prelude: WSL-specific setup. +;; +;; Copyright © 2011-2020 Bozhidar Batsov +;; +;; URL: https://github.com/bbatsov/prelude + +;; This file is not part of GNU Emacs. + +;;; Commentary: + +;; Additional setup that's useful when running Emacs in WSL. + +;;; License: + +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License +;; as published by the Free Software Foundation; either version 3 +;; of the License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Code: + +;; teach Emacs how to open links with your default browser +(let ((cmd-exe "/mnt/c/Windows/System32/cmd.exe") + (cmd-args '("/c" "start"))) + (when (file-exists-p cmd-exe) + (setq browse-url-generic-program cmd-exe + browse-url-generic-args cmd-args + browse-url-browser-function 'browse-url-generic + search-web-default-browser 'browse-url-generic))) + +(provide 'prelude-wsl) +;;; prelude-wsl.el ends here diff --git a/init.el b/init.el index cceb1eb..7f61957 100644 --- a/init.el +++ b/init.el @@ -37,7 +37,7 @@ ;; installed packages. Don't delete this line. If you don't want it, ;; just comment it out by adding a semicolon to the start of the line. ;; You may delete these explanatory comments. -;(package-initialize) + ;(package-initialize) (defvar prelude-user (getenv @@ -77,13 +77,13 @@ by Prelude.") (make-directory prelude-savefile-dir)) (defun prelude-add-subfolders-to-load-path (parent-dir) - "Add all level PARENT-DIR subdirs to the `load-path'." - (dolist (f (directory-files parent-dir)) - (let ((name (expand-file-name f parent-dir))) - (when (and (file-directory-p name) - (not (string-prefix-p "." f))) - (add-to-list 'load-path name) - (prelude-add-subfolders-to-load-path name))))) + "Add all level PARENT-DIR subdirs to the `load-path'." + (dolist (f (directory-files parent-dir)) + (let ((name (expand-file-name f parent-dir))) + (when (and (file-directory-p name) + (not (string-prefix-p "." f))) + (add-to-list 'load-path name) + (prelude-add-subfolders-to-load-path name))))) ;; add Prelude's directories to Emacs's `load-path' (add-to-list 'load-path prelude-core-dir) @@ -122,6 +122,14 @@ by Prelude.") (when (eq system-type 'gnu/linux) (require 'prelude-linux)) +;; WSL specific setting +(when (getenv "WSLENV") + (require 'prelude-wsl)) + +;; Windows specific settings +(when (eq system-type 'windows-nt) + (require 'prelude-windows)) + (message "Loading Prelude's modules...") ;; the modules diff --git a/personal/prelude-modules.el b/personal/prelude-modules.el new file mode 100644 index 0000000..c06c113 --- /dev/null +++ b/personal/prelude-modules.el @@ -0,0 +1,42 @@ +;;; Uncomment the modules you'd like to use and restart Prelude afterwards + +;; Emacs IRC client +(require 'prelude-erc) +;; (require 'prelude-ido) ;; Super charges Emacs completion for C-x C-f and more +(require 'prelude-ivy) ;; A mighty modern alternative to ido +;; (require 'prelude-helm) ;; Interface for narrowing and search +;; (require 'prelude-helm-everywhere) ;; Enable Helm everywhere +(require 'prelude-company) +;; (require 'prelude-key-chord) ;; Binds useful features to key combinations +;; (require 'prelude-evil) + +;;; Programming languages support +(require 'prelude-c) +(require 'prelude-clojure) +;; (require 'prelude-coffee) +;; (require 'prelude-common-lisp) +(require 'prelude-css) +;; (require 'prelude-dart) +(require 'prelude-emacs-lisp) +;; (require 'prelude-erlang) +;; (require 'prelude-elixir) +;; (require 'prelude-go) +;; (require 'prelude-haskell) +(require 'prelude-js) +;; (require 'prelude-latex) +(require 'prelude-lisp) +(require 'prelude-lsp) +;; (require 'prelude-ocaml) +(require 'prelude-org) ;; Org-mode helps you keep TODO lists, notes and more +(require 'prelude-perl) +;; (require 'prelude-python) +(require 'prelude-ruby) +;; (require 'prelude-rust) +;; (require 'prelude-scala) +(require 'prelude-scheme) +(require 'prelude-shell) +(require 'prelude-scss) +(require 'prelude-ts) +(require 'prelude-web) ;; Emacs mode for web templates +(require 'prelude-xml) +(require 'prelude-yaml)