From 022b7e68c1ddf88afb8e3ee82a324aa083501403 Mon Sep 17 00:00:00 2001 From: John Doty Date: Thu, 26 Nov 2015 22:37:12 -0800 Subject: [PATCH] Compilation functions and VS environment stuff --- .emacs.d/core.el | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/.emacs.d/core.el b/.emacs.d/core.el index ae68578..2843463 100644 --- a/.emacs.d/core.el +++ b/.emacs.d/core.el @@ -648,3 +648,70 @@ ;; ================================================================= (add-to-list 'auto-mode-alist '("\\.appx\\'" . archive-mode)) (add-to-list 'auto-coding-alist '("\\.appx\\'" . no-conversion)) + +;; ================================================================= +;; Some build stuff; I swiped this from handmade-hero +;; ================================================================= +(when (featurep 'w32) + (setq doty-makescript "build.bat")) + +(when (featurep 'aquamacs) + (setq doty-makescript "./build.macosx")) + +(when (featurep 'x) + (setq doty-makescript "./build.linux")) + +(setq compilation-directory-locked nil) +(setq compilation-context-lines 0) +(setq compilation-error-regexp-alist + (cons '("^\\([0-9]+>\\)?\\(\\(?:[a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)) : \\(?:fatal error\\|warnin\\(g\\)\\) C[0-9]+:" 2 3 nil (4)) + compilation-error-regexp-alist)) + +(defun find-project-directory-recursive () + "Recursively search for a makefile." + (interactive) + (if (file-exists-p doty-makescript) t + (cd "../") + (find-project-directory-recursive))) + +(defun lock-compilation-directory () + "The compilation process should NOT hunt for a makefile" + (interactive) + (setq compilation-directory-locked t) + (message "Compilation directory is locked.")) + +(defun unlock-compilation-directory () + "The compilation process SHOULD hunt for a makefile" + (interactive) + (setq compilation-directory-locked nil) + (message "Compilation directory is roaming.")) + +(defun find-project-directory () + "Find the project directory." + (interactive) + (setq find-project-from-directory default-directory) + (switch-to-buffer-other-window "*compilation*") + (if compilation-directory-locked (cd last-compilation-directory) + (cd find-project-from-directory) + (find-project-directory-recursive) + (setq last-compilation-directory default-directory))) + +(defun make-without-asking () + "Make the current build." + (interactive) + (if (find-project-directory) (compile doty-makescript)) + (other-window 1)) +(define-key global-map "\C-c\C-m" 'make-without-asking) + +(defun set-vs-environment () + "Load the VS environment variables into the current emacs process." + (interactive) + (dolist + (ev (split-string + (shell-command-to-string "cmd /c \" \"%ProgramFiles(x86)%\\Microsoft Visual Studio 14.0\\Common7\\Tools\\VsDevCmd.bat\" && set \"") + "[\n]+")) + (letrec ((spev (split-string ev "=")) + (vn (car spev)) + (vv (cadr spev))) + (setenv vn vv)))) + )