diff --git a/pre/editing.el b/config/editing.el similarity index 79% rename from pre/editing.el rename to config/editing.el index 04540e65d..116a990d5 100644 --- a/pre/editing.el +++ b/config/editing.el @@ -10,5 +10,3 @@ ;; highlight current line (global-hl-line-mode t) (set-face-background 'hl-line "#073642") -;; relative line number -(load-file (concat user-extensions-directory "linum-relativenumber.el")) diff --git a/pre/navigating.el b/config/navigating.el similarity index 100% rename from pre/navigating.el rename to config/navigating.el diff --git a/pre/session.el b/config/session.el similarity index 100% rename from pre/session.el rename to config/session.el diff --git a/pre/ui.el b/config/ui.el similarity index 100% rename from pre/ui.el rename to config/ui.el diff --git a/extensions.el b/extensions.el new file mode 100644 index 000000000..fba2d7322 --- /dev/null +++ b/extensions.el @@ -0,0 +1,23 @@ +(defvar syl:extensions + '( + emacs-eclim + flymake + linum-relativenumber + pymacs + )) + +;; load extensions +(dolist (ext syl:extensions) + (add-to-list 'load-path + (expand-file-name (concat user-extensions-directory ext "/")))) + +;; initialize extensions +(setq syl:extension-init-dir (concat user-emacs-directory "init-extension/")) +(message (format "initializing extensions out of %s" syl:extension-init-dir)) +(dolist (ext syl:extensions) + (let* ((initfile (concat syl:extension-init-dir (format "init-%s.el" ext)))) + (if (file-exists-p initfile) + (progn (load initfile) + (message (format "loaded %s" initfile)))))) + +(provide 'extensions) diff --git a/extensions/emacs-eclim b/extensions/emacs-eclim new file mode 160000 index 000000000..22d7952de --- /dev/null +++ b/extensions/emacs-eclim @@ -0,0 +1 @@ +Subproject commit 22d7952dec8f2518af18f28ff6dd47e24109072c diff --git a/extensions/flymake-cursor.el b/extensions/flymake/flymake-cursor.el similarity index 100% rename from extensions/flymake-cursor.el rename to extensions/flymake/flymake-cursor.el diff --git a/extensions/flymake-patch.el b/extensions/flymake/flymake-patch.el similarity index 100% rename from extensions/flymake-patch.el rename to extensions/flymake/flymake-patch.el diff --git a/extensions/linum-relativenumber.el b/extensions/linum-relativenumber/linum-relativenumber.el similarity index 100% rename from extensions/linum-relativenumber.el rename to extensions/linum-relativenumber/linum-relativenumber.el diff --git a/extensions/pymacs.el b/extensions/pymacs/pymacs.el similarity index 100% rename from extensions/pymacs.el rename to extensions/pymacs/pymacs.el diff --git a/funcs-virga.el b/host/funcs-virga.el similarity index 100% rename from funcs-virga.el rename to host/funcs-virga.el diff --git a/keybindings-virga.el b/host/keybindings-virga.el similarity index 100% rename from keybindings-virga.el rename to host/keybindings-virga.el diff --git a/init-extension/init-emacs-eclim.el b/init-extension/init-emacs-eclim.el new file mode 100644 index 000000000..a2f3a621a --- /dev/null +++ b/init-extension/init-emacs-eclim.el @@ -0,0 +1,27 @@ +;; Variables +(setq eclim-auto-save t + eclim-executable "~/Apps/eclipse4/eclim" + eclimd-executable "~/Apps/eclipse4/eclimd" + eclimd-wait-for-process nil + eclimd-default-workspace "~/dev/eclimd-workspace" + help-at-pt-display-when-idle t + help-at-pt-timer-delay 0.1 + ) + +;; Load both eclim and eclimd (so that we can control eclimd from +;; within Emacs) +(require 'eclim) +(require 'eclimd) + +;; Call the help framework with the settings above & activate +;; eclim-mode +(help-at-pt-set-timer) +(global-eclim-mode) + +;; Hook eclim up with auto complete mode +(require 'auto-complete-config) +(ac-config-default) +(require 'ac-emacs-eclim-source) +(add-hook 'eclim-mode-hook (lambda () + (add-to-list 'ac-sources 'ac-source-emacs-eclim) + (add-to-list 'ac-sources 'ac-source-emacs-eclim-c-dot))) diff --git a/init-extension/init-flymake.el b/init-extension/init-flymake.el new file mode 100644 index 000000000..7203dca92 --- /dev/null +++ b/init-extension/init-flymake.el @@ -0,0 +1,35 @@ +(defun flymake-create-copy-file () + "Create a copy local file" + (let* ((temp-file (flymake-init-create-temp-buffer-copy + 'flymake-create-temp-inplace))) + (file-relative-name + temp-file + (file-name-directory buffer-file-name)))) + +(defun flymake-command-parse (cmdline) + "Parses the command line CMDLINE in a format compatible + with flymake, as:(list cmd-name arg-list) + +The CMDLINE should be something like: + + flymake %f python custom.py %f + +%f will be substituted with a temporary copy of the file that is + currently being checked. +" + (let ((cmdline-subst (replace-regexp-in-string "%f" (flymake-create-copy-file) cmdline))) + (setq cmdline-subst (split-string-and-unquote cmdline-subst)) + (list (first cmdline-subst) (rest cmdline-subst)) + )) + + +(when (load-file (concat user-extensions-directory "flymake-patch.el")) + (setq flymake-info-line-regex + (append flymake-info-line-regex '("unused$" "^redefinition" "used$"))) + (load-library "flymake-cursor")) + +(defun epy-setup-checker (cmdline) + (add-to-list 'flymake-allowed-file-name-masks + (list "\\.py\\'" (apply-partially 'flymake-command-parse cmdline))) + ) +(epy-setup-checker "pyflakes %f") diff --git a/init-extension/init-pymacs.el b/init-extension/init-pymacs.el new file mode 100644 index 000000000..d8d1f1ca0 --- /dev/null +++ b/init-extension/init-pymacs.el @@ -0,0 +1,31 @@ +(setq ropemacs-global-prefix "C-x /") ;; avoid conflict with p4 global prefix +(require 'pymacs (concat user-extensions-directory "pymacs.el")) +(defun setup-ropemacs () + (pymacs-load "ropemacs" "rope-") + ;; Stops from erroring if there's a syntax err + (setq ropemacs-codeassist-maxfixes 3) + ;; Configurations + (setq ropemacs-guess-project t) + (setq ropemacs-enable-autoimport t) + (setq ropemacs-autoimport-modules '("os" "shutil" "sys" "logging")) + ;; Adding hook to automatically open a rope project if there is one + ;; in the current or in the upper level directory + (add-hook 'python-mode-hook + (lambda () + (cond ((file-exists-p ".ropeproject") + (rope-open-project default-directory)) + ((file-exists-p "../.ropeproject") + (rope-open-project (concat default-directory ".."))) + ))) + ) + +(eval-after-load 'python + '(progn + ;; Ropemacs Configuration + (setup-ropemacs) + ;; Not on all modes, please + ;; Be careful of mumamo, buffer file name nil + (add-hook 'python-mode-hook (lambda () (if (buffer-file-name) + (flymake-mode)))) + ) + ) diff --git a/init.el b/init.el index 0c06ef767..3e7b62913 100644 --- a/init.el +++ b/init.el @@ -5,18 +5,22 @@ (expand-file-name (concat user-emacs-directory "../")) "Emacs home directory.") -(defvar user-pre-directory - (expand-file-name (concat user-emacs-directory "pre/")) - "Pre-configuration scripts.") - -(defvar user-post-directory - (expand-file-name (concat user-emacs-directory "post/")) - "Post-configuration setup.") +(defvar user-config-directory + (expand-file-name (concat user-emacs-directory "config/")) + "Configuration scripts.") (defvar user-extensions-directory (expand-file-name (concat user-emacs-directory "extensions/")) "Additional extensions.") +(defvar user-init-extension-directory + (expand-file-name (concat user-emacs-directory "init-extension/")) + "Extension initialization.") + +(defvar user-init-package-directory + (expand-file-name (concat user-emacs-directory "init-package/")) + "Package initialization.") + (defvar host-directory (expand-file-name (concat user-emacs-directory "host/" system-name "/")) "Host specific configurations") @@ -24,25 +28,18 @@ (add-to-list 'load-path user-emacs-directory) (add-to-list 'load-path user-extensions-directory) -;; Pre-config ================================================================= -(progn (when (file-exists-p user-pre-directory) - (dolist (l (directory-files user-pre-directory nil "^[^#].*el$")) - (load (concat user-pre-directory l))))) +;; Configuration ============================================================== +(progn (when (file-exists-p user-config-directory) + (dolist (l (directory-files user-config-directory nil "^[^#].*el$")) + (load (concat user-config-directory l))))) -;; Package setup ============================================================== +;; Setup ====================================================================== (require 'funcs) -(require 'funcs-virga) (require 'packages) +(require 'extensions) (require 'keybindings) -;; Post-config ================================================================ -(progn (when (file-exists-p user-post-directory) - (dolist (l (directory-files user-post-directory nil "^[^#].*el$")) - (load (concat user-post-directory l))))) - ;; Host config ================================================================ (progn (when (file-exists-p host-directory) (dolist (l (directory-files host-directory nil "^[^#].*el$")) (load (concat host-directory l))))) - -;; TODO refactor auto-loading functions for configuration files diff --git a/keybindings.el b/keybindings.el index f2ccf5dd7..3576627aa 100644 --- a/keybindings.el +++ b/keybindings.el @@ -1,4 +1,6 @@ ;; Key Bindings ================================================================ (global-set-key (kbd "C-x x") 'kill-this-buffer) +(add-hook 'python-mode-hook (lambda () + (local-set-key "\C-c\C-c" 'syl-python-compile))) (provide 'keybindings) diff --git a/post/python.el b/post/python.el deleted file mode 100644 index 6fa4cf480..000000000 --- a/post/python.el +++ /dev/null @@ -1,73 +0,0 @@ - -;; flymake ------------------------------------------------------------------- -(defun flymake-create-copy-file () - "Create a copy local file" - (let* ((temp-file (flymake-init-create-temp-buffer-copy - 'flymake-create-temp-inplace))) - (file-relative-name - temp-file - (file-name-directory buffer-file-name)))) - -(defun flymake-command-parse (cmdline) - "Parses the command line CMDLINE in a format compatible - with flymake, as:(list cmd-name arg-list) - -The CMDLINE should be something like: - - flymake %f python custom.py %f - -%f will be substituted with a temporary copy of the file that is - currently being checked. -" - (let ((cmdline-subst (replace-regexp-in-string "%f" (flymake-create-copy-file) cmdline))) - (setq cmdline-subst (split-string-and-unquote cmdline-subst)) - (list (first cmdline-subst) (rest cmdline-subst)) - )) - - -(when (load-file (concat user-extensions-directory "flymake-patch.el")) - (setq flymake-info-line-regex - (append flymake-info-line-regex '("unused$" "^redefinition" "used$"))) - (load-library "flymake-cursor")) - -(defun epy-setup-checker (cmdline) - (add-to-list 'flymake-allowed-file-name-masks - (list "\\.py\\'" (apply-partially 'flymake-command-parse cmdline))) - ) -(epy-setup-checker "pyflakes %f") - -;; pymacs -------------------------------------------------------------------- -(setq ropemacs-global-prefix "C-x /") ;; avoid conflict with p4 global prefix -(require 'pymacs (concat user-extensions-directory "pymacs.el")) -(defun setup-ropemacs () - (pymacs-load "ropemacs" "rope-") - ;; Stops from erroring if there's a syntax err - (setq ropemacs-codeassist-maxfixes 3) - ;; Configurations - (setq ropemacs-guess-project t) - (setq ropemacs-enable-autoimport t) - (setq ropemacs-autoimport-modules '("os" "shutil" "sys" "logging")) - ;; Adding hook to automatically open a rope project if there is one - ;; in the current or in the upper level directory - (add-hook 'python-mode-hook - (lambda () - (cond ((file-exists-p ".ropeproject") - (rope-open-project default-directory)) - ((file-exists-p "../.ropeproject") - (rope-open-project (concat default-directory ".."))) - ))) - ) - -(eval-after-load 'python - '(progn - ;; Ropemacs Configuration - (setup-ropemacs) - ;; Not on all modes, please - ;; Be careful of mumamo, buffer file name nil - (add-hook 'python-mode-hook (lambda () (if (buffer-file-name) - (flymake-mode)))) - ) - ) - -(add-hook 'python-mode-hook (lambda () - (local-set-key "\C-c\C-c" 'syl-python-compile)))