From 1cb83c61e9093f3aa806f47c2d390035d66a29ea Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Tue, 16 Jan 2018 16:04:22 -0800 Subject: [PATCH] remove repos which are no longer required because we use elpa --- emacs_el/configuration/don-helm.org | 25 - emacs_el/configuration/don-hydra.el | 70 - emacs_el/configuration/ess_configuration.el | 12 - emacs_el/configuration/ess_remote_eval.el | 8 - emacs_el/configuration/mode-line-cleaner.el | 43 - .../configuration/org-mode-configuration.el | 0 emacs_el/configuration/procmail_mode.el | 5 - .../configuration/web_mode_configuration.el | 12 - emacs_el/f.el | 1 - emacs_el/helm-bibtex.el | 1 - emacs_el/mode-compile.el | 2648 ----------------- emacs_el/org-element-debug.el | 89 - emacs_el/s.el | 1 - emacs_el/vc-svn17.el | 78 - 14 files changed, 2993 deletions(-) delete mode 100644 emacs_el/configuration/don-helm.org delete mode 100644 emacs_el/configuration/don-hydra.el delete mode 100644 emacs_el/configuration/ess_configuration.el delete mode 100644 emacs_el/configuration/ess_remote_eval.el delete mode 100644 emacs_el/configuration/mode-line-cleaner.el delete mode 100644 emacs_el/configuration/org-mode-configuration.el delete mode 100644 emacs_el/configuration/procmail_mode.el delete mode 100644 emacs_el/configuration/web_mode_configuration.el delete mode 120000 emacs_el/f.el delete mode 120000 emacs_el/helm-bibtex.el delete mode 100644 emacs_el/mode-compile.el delete mode 100644 emacs_el/org-element-debug.el delete mode 120000 emacs_el/s.el delete mode 100644 emacs_el/vc-svn17.el diff --git a/emacs_el/configuration/don-helm.org b/emacs_el/configuration/don-helm.org deleted file mode 100644 index 6e3a28d..0000000 --- a/emacs_el/configuration/don-helm.org +++ /dev/null @@ -1,25 +0,0 @@ -#+TITLE: Helm Configuration -#+AUTHOR: Don Armstrong - -* Introduction -** requires -Require helm-config - - -#+BEGIN_SRC emacs-lisp :tangle don-helm.el - (add-to-list 'load-path "~/lib/emacs_el/helm/") - (require 'helm-config) -#+END_SRC - -* Configuration - -#+BEGIN_SRC emacs-lisp :tangle don-helm.el -#+END_SRC - - -* END - -#+BEGIN_SRC emacs-lisp :tangle don-helm.el - (provide 'don-helm) -#+END_SRC - diff --git a/emacs_el/configuration/don-hydra.el b/emacs_el/configuration/don-hydra.el deleted file mode 100644 index 64c7363..0000000 --- a/emacs_el/configuration/don-hydra.el +++ /dev/null @@ -1,70 +0,0 @@ - -(require 'hydra) -(require 'outline) - -;; org mode files -(defhydra my/hydra-orgmodes (:color blue :hint nil) - " -_n_: notes _c_: chaim _w_: wildman _o_: ool -_u_: uddin _s_: steve _r_: refile _f_: fh -_p_: read papers _R_: paper notes -_h_: hpcbio -_q_: quit -_z_: quit -" - ("n" (find-file "~/projects/org-notes/notes.org")) - ("c" (find-file "~/projects/org-notes/chaim.org")) - ("w" (find-file "~/projects/org-notes/wildman.org")) - ("u" (find-file "~/projects/org-notes/uddin.org")) - ("o" (find-file "~/projects/org-notes/ool.org")) - ("f" (find-file "~/projects/org-notes/fh.org")) - ("s" (find-file "~/projects/org-notes/sndservers.org")) - ("r" (find-file "~/projects/org-notes/refile.org")) - ("p" (find-file "~/projects/research/papers_to_read.org")) - ("R" (find-file "~/projects/research/paper_notes.org")) - ("h" (find-file "~/projects/org-notes/hpcbio.org")) - ("q" nil "quit") - ("z" nil "quit") - ) -(global-set-key (kbd "C-c 2") 'my/hydra-orgmodes/body) -(global-set-key (kbd "C-c @") 'my/hydra-orgmodes/body) - - -;; from https://github.com/abo-abo/hydra/wiki/Emacs -(defhydra my/hydra-outline (:color pink :hint nil) - " -^Hide^ ^Show^ ^Move -^^^^^^------------------------------------------------------ -_q_: sublevels _a_: all _u_: up -_t_: body _e_: entry _n_: next visible -_o_: other _i_: children _p_: previous visible -_c_: entry _k_: branches _f_: forward same level -_l_: leaves _s_: subtree _b_: backward same level -_d_: subtree - -" - ;; Hide - ("q" hide-sublevels) ; Hide everything but the top-level headings - ("t" hide-body) ; Hide everything but headings (all body lines) - ("o" hide-other) ; Hide other branches - ("c" hide-entry) ; Hide this entry's body - ("l" hide-leaves) ; Hide body lines in this entry and sub-entries - ("d" hide-subtree) ; Hide everything in this entry and sub-entries - ;; Show - ("a" show-all) ; Show (expand) everything - ("e" show-entry) ; Show this heading's body - ("i" show-children) ; Show this heading's immediate child sub-headings - ("k" show-branches) ; Show all sub-headings under this heading - ("s" show-subtree) ; Show (expand) everything in this heading & below - ;; Move - ("u" outline-up-heading) ; Up - ("n" outline-next-visible-heading) ; Next - ("p" outline-previous-visible-heading) ; Previous - ("f" outline-forward-same-level) ; Forward - same level - ("b" outline-backward-same-level) ; Backward - same level - ("z" nil "leave")) - -(global-set-key (kbd "C-c #") 'my/hydra-outline/body) ; by example -(global-set-key (kbd "C-c 3") 'my/hydra-outline/body) ; by example - -(provide 'don-hydra) diff --git a/emacs_el/configuration/ess_configuration.el b/emacs_el/configuration/ess_configuration.el deleted file mode 100644 index 7335cd4..0000000 --- a/emacs_el/configuration/ess_configuration.el +++ /dev/null @@ -1,12 +0,0 @@ -; (eval-after-load "ess" -; '(mapcar 'ess-noweb-make-variable-permanent-local -; '(ess-noweb-mode -; ess-local-process-name ;; also made permanent in ess-mode, but let it be -; ess-dialect -; ess-language -; ess-noweb-narrowing -; ess-noweb-chunk-vector -; ess-noweb-doc-mode -; ess-noweb-code-mode -; ess-noweb-default-code-mode -; ess-noweb-last-chunk-index))) diff --git a/emacs_el/configuration/ess_remote_eval.el b/emacs_el/configuration/ess_remote_eval.el deleted file mode 100644 index 7ce80c9..0000000 --- a/emacs_el/configuration/ess_remote_eval.el +++ /dev/null @@ -1,8 +0,0 @@ -(defun dla/ess-region-remote-eval (start end) - "Evaluate region in a remote ESS instance" - (interactive "r") - (shell-command-on-region start end "eval_r" (get-buffer-create "***essregionremoteeval***")) - (kill-buffer "***essregionremoteeval***") -) - -(provide 'ess_remote_eval) diff --git a/emacs_el/configuration/mode-line-cleaner.el b/emacs_el/configuration/mode-line-cleaner.el deleted file mode 100644 index 654809c..0000000 --- a/emacs_el/configuration/mode-line-cleaner.el +++ /dev/null @@ -1,43 +0,0 @@ -(require 'cl-lib) -; clean-mode-line from http://www.masteringemacs.org/articles/2012/09/10/hiding-replacing-modeline-strings/ -(require 'cl) -(defvar mode-line-cleaner-alist - `((auto-complete-mode . " α") - (yas/minor-mode . " υ") - (paredit-mode . " π") - (eldoc-mode . "") - (abbrev-mode . "") - (my-keys-minor-mode . "") - (helm-mode . "☸") - ;; Major modes - (lisp-interaction-mode . "λ") - (hi-lock-mode . "") - (python-mode . "Py") - (cperl-mode . "ρ") - (auctex-mode . "Lχ") - (org-agenda-mode . "øα") - (org-mode . "ø") - (emacs-lisp-mode . "EL") - (nxhtml-mode . "nx")) - "Alist for `clean-mode-line'. - -When you add a new element to the alist, keep in mind that you -must pass the correct minor/major mode symbol and a string you -want to use in the modeline *in lieu of* the original.") - - -(defun clean-mode-line () - (interactive) - (cl-loop for cleaner in mode-line-cleaner-alist - do (let* ((mode (car cleaner)) - (mode-str (cdr cleaner)) - (old-mode-str (cdr (assq mode minor-mode-alist)))) - (when old-mode-str - (setcar old-mode-str mode-str)) - ;; major mode - (when (eq mode major-mode) - (setq mode-name mode-str))))) - - -(add-hook 'after-change-major-mode-hook 'clean-mode-line) - diff --git a/emacs_el/configuration/org-mode-configuration.el b/emacs_el/configuration/org-mode-configuration.el deleted file mode 100644 index e69de29..0000000 diff --git a/emacs_el/configuration/procmail_mode.el b/emacs_el/configuration/procmail_mode.el deleted file mode 100644 index 6ca7f78..0000000 --- a/emacs_el/configuration/procmail_mode.el +++ /dev/null @@ -1,5 +0,0 @@ -(autoload 'tinyprocmail-mode "tinyproooocmail" "" t) -(autoload 'aput "assoc") -;; Treat ~/.procmailrc and all pm-*.rc files as Procmail files -(push (cons "\\.procmailrc\\|pm-.*\\.rc$" - 'turn-on-tinyprocmail-mode ) auto-mode-alist) diff --git a/emacs_el/configuration/web_mode_configuration.el b/emacs_el/configuration/web_mode_configuration.el deleted file mode 100644 index a98ce44..0000000 --- a/emacs_el/configuration/web_mode_configuration.el +++ /dev/null @@ -1,12 +0,0 @@ -(require 'web-mode) -(add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode)) -(add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode)) -(add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode)) -(add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode)) -(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode)) -(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode)) -(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode)) -(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode)) -(setq web-mode-engines-alist '(("php" . "\\.phtml\\'") - ("blade" . "\\.blade\\.") - ) ) diff --git a/emacs_el/f.el b/emacs_el/f.el deleted file mode 120000 index 2a0ea14..0000000 --- a/emacs_el/f.el +++ /dev/null @@ -1 +0,0 @@ -f-el/f.el \ No newline at end of file diff --git a/emacs_el/helm-bibtex.el b/emacs_el/helm-bibtex.el deleted file mode 120000 index ef769fe..0000000 --- a/emacs_el/helm-bibtex.el +++ /dev/null @@ -1 +0,0 @@ -helm-bibtex/helm-bibtex.el \ No newline at end of file diff --git a/emacs_el/mode-compile.el b/emacs_el/mode-compile.el deleted file mode 100644 index b83e1ba..0000000 --- a/emacs_el/mode-compile.el +++ /dev/null @@ -1,2648 +0,0 @@ -;;; mode-compile.el --- Smart command for compiling files -;; according to major-mode. -;; -;; Copyright (c) 1994 - 2003 heddy Boubaker C.E.N.A. -;; -;; Author: Heddy Boubaker -;; Maintainer: Heddy Boubaker -;; Created: June 1994 -;; Last modified: 2003/04/01 13:52:47 -;; Version: 2.28 -;; Keywords: compile, compilation, modes, languages -;; Tested for: -;; XEmacs (Lucid GNU Emacs) >= 19.10 -;; Must work with FSF GNU Emacs > 19.31 ;-) -;; Do not work anymore for Emacses <= 18 -;; Ftp access: -;; archive.cis.ohio-state.edu:pub/gnu/emacs/elisp-archive/misc/mode-compile.el.Z -;; WWW access: -;; -;; -;; LCD Archive Entry: -;; mode-compile|Heddy Boubaker|boubaker@cena.fr| -;; Smart command for compiling files according to major-mode and more.| -;; 2003/04/01 13:52:47|2.28|~/misc/mode-compile.el.Z| -;; -;;; This file is NOT part of GNU Emacs but the same permissions apply. -;; -;; GNU Emacs 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 2, or (at your option) any later -;; version. -;; -;; GNU Emacs 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, 675 Mass Ave, Cambridge, MA 02139, USA. -;; -;; @ Purpose: -;; ========== -;; -;; Provide `mode-compile' function as a replacement for the use of `compile' -;; command which is very dumb for creating it's compilation command (use -;; "make -k" by default). `mode-compile' is a layer above `compile'; Its -;; purpose is mainly to build a smart compile-command for `compile' to -;; execute it. This compile-command is built according to number of -;; parameters: -;; - the major-mode. -;; - presence or not of a makefile in current directory. -;; - the buffer-file-name and extension. -;; - what is in the current buffer (`main' function,"#!/path/shell", ...). -;; - and more ... (see Commentary section below). -;; Most of these parameters are higly customizable throught Emacs Lisp -;; variables (to be set in your .emacs or through Customization menu). -;; Running mode-compile after an universal-argument (C-u) allows remote -;; compilations, user is prompted for a host name to run the compilation -;; command on. Another function provided is `mode-compile-kill' which -;; terminate a running compilation session launched by `mode-compile'. -;; -;; @ Installation: -;; =============== -;; -;; Byte compile this file (*) somewhere in your `load-path' and add in -;; your .emacs: -;; (autoload 'mode-compile "mode-compile" -;; "Command to compile current buffer file based on the major mode" t) -;; (global-set-key "\C-cc" 'mode-compile) -;; (autoload 'mode-compile-kill "mode-compile" -;; "Command to kill a compilation launched by `mode-compile'" t) -;; (global-set-key "\C-ck" 'mode-compile-kill) -;; -;; By default mode-compile is very verbose and waits a few seconds (1 by -;; default) after each message for the user to have time to read it. You -;; could set variables `mode-compile-expert-p' and -;; `mode-compile-reading-time' to change this behaviour. On X-Windows -;; systems setting the variable `mode-compile-other-frame-p' will create a -;; new frame and launch the compilation command in it. -;; -;; (*) Don't take care of messages: -;; ** reference to free variable efs-remote-shell-file-name -;; This is perfectly normal ;-}. But if you know a way to avoid it let me -;; know. -;; -;; @ Bug Reports: -;; ============== -;; -;; To report a bug please use function `mode-compile-submit-bug-report' -;; Please note that this bug-report facility uses Barry Warsaw's reporter.el -;; which is part of GNU Emacs v19 and bundled with many other packages. If -;; needed, you can obtain a copy of reporter.el at the elisp-archive. -;; -;; @ Documentation: -;; ================ -;; -;; This section will explain how the `compile-command' are built according to -;; the `major-mode' and how to customize it. The major modes `mode-compile' -;; currently known are: -;; - c-mode, c++-mode, makefile-mode, dired-mode, ada-mode, emacs-lisp-mode, -;; lisp-interaction-mode, sh-mode, csh-mode, fundamental-mode, text-mode, -;; indented-text-mode compilation-mode, fortran-mode, c?perl-mode, -;; zsh-mode java-mode, tcl-mode, python-mode -;; For other modes a default behaviour is provided. -;; -;; When running `mode-compile' or `mode-compile-kill' the hooks -;; `mode-compile-(before|after)-(compile|kill)-hook' are executed. The -;; current buffer could be automaticaly saved if variable -;; `mode-compile-always-save-buffer-p' is set to `t'. ALL the modified -;; buffers could be automaticaly saved if variable `mode-compile-save-all-p' -;; is set to `t'. -;; -;; @@ fundamental-mode, text-mode, indented-text-mode & UNKNOWN MODES: -;; *** THIS IS TOO THE DEFAULT BEHAVIOR FOR UNKNOWN MODES *** -;; Try to guess what the file is by: -;; - 1st looking at it's name and extension (see variable -;; `mode-compile-filename-regexp-alist'). -;; - 2nd looking at string "#!/path/shell" at first line to extract shell -;; to run the script with (see variable `mode-compile-shell-alist'). -;; - 3rd looking at a makefile in current directory. -;; - then calling `compile' with the last compile command which is -;; asked to be edited by user ... -;; The `kill-compile' command is then bound dynamically (buffer-local). -;; -;; @@ compilation-mode: -;; Call `compile' with the last compile command. -;; -;; @@ makefile-mode: -;; The makefile is run with make throught `compile' (user is prompted -;; for the rule to run, see variable -;; `mode-compile-prefered-default-makerule' to see how a default choice -;; could be selected). -;; -;; @@ emacs-lisp-mode, lisp-interaction-mode: -;; If the buffer is a .el file byte-compile it to produce a .elc file, -;; else just byte-compile the buffer (this don't use `compile' but -;; `byte-compile'). -;; -;; @@ dired-mode: -;; Find a makefile in the directory and run make with it (like in -;; makefile-mode), else try to byte-recompile all .el files olders than -;; their associated .elc files (unlike `byte-recompile-directory' this is -;; not recursive), finally if no .el files are present ask compilation -;; command to user by calling `default-compile'. To find a makefile a -;; regexp is provided which name is `mode-compile-makefile-regexp'. -;; -;; @@ sh-mode, csh-mode, zsh-mode: -;; Run "[cz]?sh" with debugging arguments as specified in -;; `[cz]?sh-dbg-flags' on the currently edited file. -;; -;; @@ c?perl-mode: -;; Run file with "perl -w" (can step throught errors with compile's -;; `next-error' command). -;; -;; @@ tcl-mode: -;; Run file with "wish" (can step throught errors with compile's -;; `next-error' command). -;; -;; @@ c-mode, c++-mode: -;; First it try to see if there is a makefile in the directory, makefiles to -;; look for are specified by the variable `mode-compile-makefile-regexp'. -;; If yes two cases could happen: there is only one makefile so use it, or -;; there is more than one (sometimes when you need to write portable soft -;; you could have some makefiles by system: SunOs.make, HP.make ...), in -;; that case prompt to user for choice (with smart completion). Once the -;; makefile has been selected it extract the rules from it and ask to user -;; to choose a rule to make (with smart completion, see variable -;; `mode-compile-prefered- default-makerule' to see how a default choice -;; could be selected). -;; -;; There are some cases where no makefiles are presents (YES I KNOW this is -;; bad practice but you sometimes have no needs to write a Makefile). In -;; that case the function try to build the most intelligent compilation -;; command by using the favourite user C/C++ compiler: value of environment -;; variable "CC" or "CXX" or first found, in the PATH, of compilers -;; specified in variable `cc-compilers-list' or `c++-compilers-list'. Then -;; it look for the varenv "CFLAGS" of "CXXFLAGS" to append to the compiler -;; command, find the file to compile: -;; .(c|cc|C|cpp) (see *) and ask for -;; confirmation. If you really trust mode-compile will build the right -;; command and want to bypass confirmation you could set the variable -;; `mode-compile-never-edit-command-p' to t. -;; -;; (*) How to find : -;; In both case the command try to guess which file has to be compiled: -;; It's a trivial choice when current buffer file is a -;; .(c|C|cc|cpp... -any file with extension specified in -;; `cc-source-file-ext-list' or `c++-source-file-ext-list') file but -;; when it's a .(h|H|hh) file what to do? The variable -;; `cc-companion-file-regexp' or `c++-companion-file-regexp' specify -;; how to find a .(c|C|cc|cpp...) file from a .(h|H|hh...); This is -;; done by appending .(c|C|cc|cpp) to -;; . In c-mode with default value -;; it produce: -;; file.h, file_[Pp].h -> file.c -;; I sometimes use files _p.h to indicate that the file is a private header -;; file for a .c file. -;; In c++-mode with default value it produce: -;; file.hh, file_[Pp].hh -> file.cc -;; I sometimes use files _p.cc to indicate that the file is a private header -;; file for a .cc file. -;; The output of compilation will be a -;; .o file if no `main' function is -;; found inside or a EXECUTABLE file -;; if `main' function found. -;; -;; @@ ada-mode: -;; Same as c/c++-mode but run Ada compiler on the Ada file. There are no -;; companion file and no way to find a main function in Ada. -;; -;; @@ fortran-mode: -;; Same as c-mode but run Fortran compiler on .[Ff](or)? files. -;; -;; @@ java-mode: -;; Same as c-mode but call "javac" without the -o option on .java files -;; -;; @@ python-mode: -;; Run file with "python" (can step throught errors with compile's -;; `next-error' command). -;; -;; @@ message-mode: -;; Run `message-send'. -;; -;; @ WhatsNew: -;; =========== -;; -;; Support for cperl-mode -;; Require cl -;; -;; @ Contributors/Helpers: -;; ======================= -;; -;; Adrian Aichner -;; "William A. Perkins" -;; Bin Mu -;; Gael MARZIOU -;; Christian Motschke -;; boris -;; Edward Hartnett . -;; Hartmut MANZ . -;; Henry Guillaume . -;; Ian Young -;; Ilya Zakharevich . -;; Kevin Broadey . -;; Lawrence R. Dodd . -;; Martin Jost . -;; Michael Welsh Duggan . -;; Rolf EBERT . -;; Scott Hofmann . -;; Stefan Schoef . -;; John W. Harwell - JWH. -;; -;; @ ToDo: -;; ======= -;; -;; Extending this to some others programming languages (modes). -;; Writting an Info documentation. -;; Contributors are greatly accepted (send me diffs and don't forget to -;; update documentation and all comments too please). -;; Maybe Using ange-ftp parse .netrc utilities for remote host and -;; user infos. -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - -;; @ Requirements ;;; - -;; mode-compile is not a replacement for compile -;; it is just a layer above it. -(require 'compile) -;;; For Emacs-Lisp files compilations -(require 'byte-compile "bytecomp") -;;; For easy macros -(require 'backquote) -(require 'cl) -(load-library "cl-macs") -;; Pretty print elisp -(require 'pp) -;;; Setting obsolete vars -(eval-and-compile - (condition-case () - (require 'obsolete) - (error nil)) - (if (and (featurep 'obsolete) (fboundp 'define-obsolete-variable-alias)) - nil ;; We've got what we needed - (defmacro define-obsolete-variable-alias (old new) - (` (progn (defalias (, old) (, new)) - (put (, old) 'byte-obsolete-variable (, new))) - )))) -;;; For using custom - stolen from w3-cus.el - -(eval-and-compile - (condition-case () - (require 'custom) - (error nil)) - (if (and (featurep 'custom) (fboundp 'custom-declare-variable)) - nil ;; We've got what we needed - ;; We have the old custom-library, hack around it! - (defmacro defgroup (&rest args) - nil) - (defmacro defcustom (var value doc &rest args) - (` (defvar (, var) (, value) (, doc)))))) - -;; Custom groups -(defgroup compilation nil - "Compilations from within Emacs variables." - :link '(url-link :tag "Author's Emacs Page" - "http://www.tls.cena.fr/~boubaker/Emacs/") - :group 'tools - :group 'development) -(defgroup compilation-lang nil - "Language specific compilation options." - :group 'languages - :group 'compilation) -(defgroup compilation-script nil - "Scripts compilation options." - :group 'compilation) -(defgroup compilation-elisp nil - "Emacs developpement compilation options." - :group 'lisp - :group 'compilation) - -;; @ User variables ;;; -;; @@ Common variables to mode-compile for all modes ;;; - -(defcustom mode-compile-modes-alist - '((c-mode . (cc-compile kill-compilation)) - (java-mode . (java-compile kill-compilation)) - (c++-mode . (c++-compile kill-compilation)) - (ada-mode . (ada-compile kill-compilation)) - (fortran-mode . (f77-compile kill-compilation)) - (dired-mode . (dired-compile kill-compilation)) - (emacs-lisp-mode . (elisp-compile keyboard-quit)) ; I'm SURE IT'S NOT the best way - (lisp-interaction-mode . (elisp-compile keyboard-quit)) ; to kill a byte-compilation. - (makefile-mode . (makefile-compile kill-compilation)) - (sh-mode . (sh-compile kill-compilation)) - (csh-mode . (csh-compile kill-compilation)) - (zsh-mode . (zsh-compile kill-compilation)) - (perl-mode . (perl-compile kill-compilation)) - (cperl-mode . (perl-compile kill-compilation)) - (tcl-mode . (tcl-compile kill-compilation)) ; JWH - (python-mode . (python-compile kill-compilation)) ; BM - ;(message-mode . (message-compile kill-compilation)) - (fundamental-mode . (guess-compile nil)) ; bound dynamically - (text-mode . (guess-compile nil)) ; itou - (indented-text-mode . (guess-compile nil)) ; itou - (compilation-mode . (default-compile kill-compilation))) - "Assoc list of compile/kill functions for some known modes. - -Each element look like (MODE . (COMPILE-FUNCTION KILL-FUNCTION)) - `mode-compile' will call COMPILE-FUNCTION and `mode-compile-kill' - KILL-FUNCTION if current major-mode is MODE. - -If you want to add or modify a COMPILE-FUNCTION and it's associated -KILL-FUNCTION for MODE and don't want to hack `mode-compile' you could -do the following (it exists however a more subtle method for -modifying, this is left as an exercice for the reader :-): - (defun my-mode-compile() ...) - (defun my-mode-compile-kill() ...) - (setq mode-compile-modes-alist - (append '((my-mode . (my-mode-compile my-mode-compile-kill))) - mode-compile-modes-alist))" - :type '(repeat - (cons :tag "Association: mode/compilation functions" - (function :tag "Mode") - (list :tag "Compilation functions" - (choice :tag "Function to run the compilation" - (function-item :tag "Default" :value default-compile) - (function-item :tag "Guess" :value guess-compile) - (function-item :tag "Emacs lisp byte compilation" :value elisp-compile) - (function :tag "Your choice, take care...")) - (choice :tag "Function to kill a running compilation" - (function-item :tag "Just kill" :value kill-compilation) - (const :tag "Nothing -- use with guess-compile --" :value nil) - (function-item :tag "To use with elisp-compile" :value keyboard-quit) - ;; This item could not be selected due to a custom (hum) feature ... - (function :tag "Your choice, take care..." :value nil))))) - :group 'compilation) - -(defcustom mode-compile-filename-regexp-alist - ;; These could be in auto-mode-alist. But if you are like me - ;; and don't like these modes (prefear to edit these kind of - ;; files in text-mode) this is a nice way to compile them - ;; without to be bored with their associated modes. - '((mode-compile-makefile-regexp . makefile-mode) - ("\\.sh$" . sh-mode) - ("\\.csh$" . csh-mode) - ("\\.zsh$" . zsh-mode)) - "Assoc list of major-modes for some filenames regexp. - -Each element look like (REGEXP . MODE) This variable is really similar -to `auto-mode-alist' in the fact that it associate a MODE to a REGEXP -matching a filename. The only differences is that you are not obliged -to have the specified MODE available to use it (`guess-compile' use -it), the MODE is only a pointer to an assoq in -`mode-compile-modes-alist' to get the COMPILE-FUNCTION and the -KILL-FUNCTION. The REGEXP could be a form wich evaluate to a string. - -To add a new filename regexp do the following: - (setq mode-compile-filename-regexp-alist - (append '((my-filename-regexp . some-mode-mode-compile-know) - mode-compile-modes-alist))" - :type '(repeat - (cons :tag "Association: filename/mode" - (choice :tag "Filename regexp match" - (regexp :tag "Regexp as a string") - (symbol :tag "Variable containing the regexp") - (sexp :tag "Form wich evaluate to a string")) - ;; I need to bind dynamicaly this with const, ideas?? - ;;`(choice - ;; ,@(mapcar (lambda (x) `(const ,(car x))) mode-compile-modes-alist)))) - (function :tag "Mode to use -- should be a valid assoq in mode-compile-modes-alist --"))) - :group 'compilation) - -(defcustom mode-compile-shell-alist - '(("sh" . sh-mode) - ("csh" . csh-mode) - ("zsh" . zsh-mode) - ("perl" . perl-mode) - ("tcl" . tcl-mode) ; JWH - ("python" . python-mode)) ; BM - "Assoc list of compile function for some known shells. - -Each element look like (SHELL . MODE) This variable look like -`auto-mode-alist' in the fact that it associate a MODE to a name; A -SHELL name here. The main difference is that you are not obliged to -have the specified MODE available to use it (`guess-compile' use it), -the MODE is only a pointer to an assoq in `mode-compile-modes-alist' -to get the COMPILE-FUNCTION and the KILL-FUNCTION. - -To add a new shell do the following: - (setq mode-compile-filename-shell-alist - (append '((my-shell-name . some-mode-mode-compile-know) - mode-compile-modes-alist))" - :type '(repeat - (cons :tag "Association: shell name/mode" - (string :tag "Shell name") - ;; I need to bind dynamicaly this with const, ideas?? - ;;`(choice - ;; ,@(mapcar (lambda (x) `(const ,(car x))) mode-compile-modes-alist)))) - (function :tag "Mode to use -- should be a valid assoq in mode-compile-modes-alist --"))) - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-make-program "make" - "*The `make' program used to process makefiles. - -If you have GNU make installed with name \"gmake\" use it." - :type 'string - :group 'compilation) - -(defcustom mode-compile-makefile-regexp - "\\(^[Mm]akefile\\|.*\\.[mM][aA]?[kK][eE]?\\.?.*$\\)" - "Regexp matching 'could be' makefiles filenames." - :type 'regexp - :group 'compilation) - -(defcustom mode-compile-makefile-backups-regexp - "\\(\\(~\\|\\.[bB][aA][cC]?[kK]\\)$\\)\\|\\(\\(^\\|/\\)[.,][^/]+$\\)" - "Regexp to find if a Makefile is a backup or not" - :type 'regexp - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-ignore-makefile-backups t - "*Tell mode compile to ignore makefiles backup files when selecting the Makefile to use." - :type 'boolean - :group 'compilation) - -;;;###autoload -(defvar mode-compile-default-make-options "-k" - "Default options to give to `make'.") -;;;###autoload -(defcustom mode-compile-make-options (eval mode-compile-default-make-options) - "*Options to give to `make'. -This could be any form evaluating to a string. - -Some people asked me a way to modify the make options everytime a -compilation command is launched, do that: - (defun my-mode-compile-ask-make-options() - \"*Hook called by mode-compile, asking for make options.\" - (interactive) - (read-string \"Make options: \" - mode-compile-default-make-options)) - (setq mode-compile-make-options - 'my-mode-compile-ask-make-options)" - :type '(choice - string - (sexp :tag "Form evaluating to a string")) - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-prefered-default-makerule 'none - "*Default makerule you would like to see in minibuffer as a default choice -when selecting the make rule to build. - -Possible values are: -'none -- let mode-compile deciding for you. -'all -- try hard to show you the \"all\" rule. -'default -- try hard to show you the \"default\" rule. -'file -- try to show you the name of the file which will be - result of compilation. -The 'none action is taken as default is something fail." - :type '(radio :tag "Symbol" - (const :tag "None - Let mode compile made the choice" :value none) - (const :tag "All - Show the \"all\" rule" :value all) - (const :tag "Default - Show the \"default\" rule" :value default) - (const :tag "File - Show the \"result file name\" rule" :value file)) - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-ignore-makerule-regexp nil - "*Makefile rules which must be ignored when building completion list. - -For example if you want to remove all `files rules' set -it to: \"\\\\.\\\\([aoc]\\\\|s[ao][.0-9]*\\\\)\". " - :type '(choice (const :tag "none" :value nil) - (const :tag "The `all files' rule" :value "\\.\\([aoc]\\|s[ao][.0-9]*\\)") - regexp) - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-save-all-p nil - "*Non-nil means save ALL the modified buffers without asking -before launching compilation command." - :type 'boolean - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-always-save-buffer-p nil - "*Non-nil means save the current buffer without asking -before launching compilation command." - :type 'boolean - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-never-edit-command-p nil - "*Non-nil means never ask to user to edit the compile command." - :type 'boolean - :group 'compilation) - -;; @@ Compilation in other frame vars ;;; -(defgroup compilation-frame nil - "Compile in another frame variables." - :group 'frames - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-other-frame-p nil - "*Non-nil means compile in another frame. - -A new Emacs FRAME is created and the compilation command is executed -in this other frame. To specify the frame parameters see also -variable `mode-compile-frame-parameters-alist'." - :type 'boolean - :group 'compilation-frame) - -(defcustom mode-compile-other-frame-name "COMPILATION" - "Name of mode-compile's other frame. - -This name could be used in your .Xdefault or .Xresources file as: -Emacs.MODE-COMPILE-OTHER-FRAME-NAME.resource_to_be_set: ..." - :type 'string - :group 'compilation-frame) - -(defconst mode-compile-default-frame-parameters - (list - (cons 'name mode-compile-other-frame-name) - (cons 'width 85) ; columns - (cons 'height 30)) ; lines - "Default parameters for mode-compile's other frame.") - -(defvar mode-compile-frame-parameters-alist - (purecopy mode-compile-default-frame-parameters) - "Parameters for the new Compilation Screen created -if variable `mode-compile-other-frame-p' is non nil.. - -See also variable `mode-compile-default-frame-parameters' and -`mode-compile-other-frame-name'. - -For informations about Screen/Frame parameters see: -- Info, Nodes: Lispref::Screen::Screen Parameters -- GNU Emacs Lisp Reference Manual, chapter 26 p375: Frames.") - -;; @@ Hooks ;;; - -;;;###autoload -(defcustom mode-compile-before-compile-hook nil - "Hook to be run before compile command is executed -when `mode-compile' is invoked." - :type 'hook - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-after-compile-hook nil - "Hook to be run after compile command is executed -when `mode-compile' is invoked." - :type 'hook - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-before-kill-hook nil - "Hook to be run before killing compile command is executed -when `mode-compile-kill' is invoked." - :type 'hook - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-after-kill-hook nil - "Hook to be run after killing compile command is executed -when `mode-compile-kill' is invoked." - :type 'hook - :group 'compilation) - -;; @@ System dependencies ;;; - -(defvar mode-compile-exe-file-ext - (cond - ((memq system-type '(ms-dos emx windows-95 windows-98 windows-nt)) ".exe") - (t "")) - "*Extension of executable files (with dot included)") - -(defvar mode-compile-dir-separator-char - (cond - ;; MSDOSish file systems - ((memq system-type '(ms-dos emx windows-95 windows-98 windows-nt)) "\\") - ;; Unixish file systems - (t "/")) - "*Separator char between directories") - -;; @@ Facilities variables ;;; - -;;;###autoload -(defvar mode-compile-choosen-compiler nil - "*Global variable containing the name of the compiler -which will be used for compiling without makefile. - - Could be used in combination with - (cc|c++|ada|f77)-default-compiler-options -to automaticaly choose the compiler specific options. - -example: - (defun my-compiler-get-options() - (cond - ((string= mode-compile-choosen-compiler \"gcc\") - \"-Wall -pedantic-errors\") - ((string= mode-compile-choosen-compiler \"cc\") - \"cc options whatever they are...\") - (t - (message \"Don't know this compiler: %s\" mode-compile-choosen-compiler) - (read-string - (format \"Options for %s compiler: \" mode-compile-choosen-compiler))))) - - (setq cc-default-compiler-options 'my-compiler-get-options)") - -;; @@ User level ;;; - -;;;###autoload -(defcustom mode-compile-expert-p nil - "*Non nil means `mode-compile' will not speaks too much. - -See also variable variable mode-compile-reading-time." - :type 'boolean - :group 'compilation) - -;;;###autoload -(defcustom mode-compile-reading-time 1 - "*Seconds to wait in verbose mode after printing a message. - -In verbose mode mode-compile print too much messages that it is -allmost impossible to read them. Just setting this delay leave you the -time to read all the messages. If you don't want any delay set it to -`0'. - -See also function sit-for." - :type 'integer - :group 'compilation) - - -;; @@ Remote compilation vars ;;; -(defgroup compilation-remote nil - "Remote compilations options." - :group 'compilation) - -(defcustom mode-compile-remote-hosts-alist '() - "Alist of favourites hosts names and the username -to use to log on (HOSTNAME . USERNAME). - -If USERNAME is a function it will be called with HOSTNAME as argument -and should return an USERNAME string (for example you could use -something like efs-get-user - not tested -), if it is nil the function -user-login-name will be used." - :type '(repeat - (cons - (string :tag "Hostname") - (choice - (const :tag "We'll use \'user-login-name" :value nil) - (string :tag "Username") - (function :tag "Function which return USERNAME given a HOSTNAME" :value efs-get-user)))) - :group 'compilation-remote) - -(defcustom mode-compile-remote-execute-command "rsh" - "The shell command used to run a command remotely. -\"rsh\" is the only choice I know but I'm far to know everything... - - This variable is set automaticaly with the value of -remote-shell-program or efs-remote-shell-file-name at load time." - :type 'string - :group 'compilation) -(eval-when 'load - (cond - ((not (string= mode-compile-remote-execute-command "rsh")) - ;; user changed default - nil) - ;; Try to not multiply definitions of the same stuff - ;; in too many emacs lisp packages ... - ((and (boundp 'remote-shell-program) remote-shell-program) - (setq mode-compile-remote-execute-command remote-shell-program)) - ((and (boundp 'efs-remote-shell-file-name) efs-remote-shell-file-name) - (setq mode-compile-remote-execute-command efs-remote-shell-file-name)) - )) - -(defcustom mode-compile-remote-execute-set-host-arg "" - "Argument To set the remote host name to the -mode-compile-remote-execute-command, - -None is required for \"rsh\"." - :type 'string - :group 'compilation-remote) - -(defcustom mode-compile-remote-execute-set-command-arg "" - "Argument to set the command to be run remotely to the -mode-compile-remote-execute-command. - -None is required for \"rsh\"." - :type 'string - :group 'compilation-remote) - -(defcustom mode-compile-remote-execute-set-username-arg "-l" - "Argument to set the username under which we will log on -on the remote host, to give to mode-compile-remote-execute-command." - :type 'string - :group 'compilation-remote) - -(defcustom mode-compile-remote-execute-misc-args "" - "Misc additionnals arguments to give to the -mode-compile-remote-execute-command." - :type 'string - :group 'compilation-remote) - - - -;; @@ c-mode compile variables ;;; -(defgroup compile-c nil - "C Compilation options." - :group 'c - :group 'compilation-lang) - -(defcustom cc-compilers-list '( "gcc" "c89" "acc" "cc" ) - "List of user's favourites C compilers in order of preferencies." - :type '(repeat (string :tag "C Compiler name")) - :group 'compile-c) - -(defcustom cc-companion-file-regexp "\\(_[Pp]\\)?\\.[pP]?h" - "Regexp to find associated .c file from a .h." - :type 'regexp - :group 'compile-c) - -(defcustom cc-default-compiler "cc" - "*Default C compiler to use when everything else fails. - -This could be any form evaluating to a string, so you could map it to -a function asking you interactively to choose the compiler. - -example: - (defun my-choose-compiler() - (read-string \"C compiler: \")) - (setq cc-compilers-list '() - cc-default-compiler 'my-choose-compiler)" - :type '(choice string function) - :group 'compile-c) - -(defcustom cc-compiler-varenv "CC" - "Varenv indicating the C compiler to use." - :type 'string - :group 'compile-c) - -(defcustom cc-cflags-varenv "CFLAGS" - "Varenv indicating the C compiler flags to use." - :type 'string - :group 'compile-c) - -(defcustom cc-source-ext-list '( "c" ) - "Extensions for C compileable source files." - :type '(repeat string) - :group 'compile-c) - -(defcustom cc-headers-ext-list '( "h" ) - "Extensions for C headers source files." - :type '(repeat string) - :group 'compile-c) - -(defcustom cc-default-compiler-options "-g" - "*Default options to give to the C compiler. - -This could be any form evaluating to a string. -See `mode-compile-choosen-compiler' variable." - :type '(choice - string - (sexp :tag "Form evaluating to a string")) - :group 'compile-c) - -(defcustom cc-source-file-ext-regexp "\\.c" - "Regexp to find, from it's name, if a C file is compileable." - :type 'string - :group 'compile-c) - -(defcustom cc-build-output-args t - "Build output-args for c-mode." - :type 'boolean - :group 'compile-c) - -(defcustom cc-object-file-ext "o" - "Extension of objects file (result of compilation) -in c mode." - :type 'string - :group 'compile-c) - - - -;; @@ java-mode compile variables ;;; -(defgroup compile-java nil - "Java compilation options." - :group 'compilation-lang) - -(defcustom java-compilers-list '( "javac" ) - "List of user's favourites java compilers in order of preferencies." - :type '(repeat (string :tag "Java Compiler name")) - :group 'compile-java) - -(defcustom java-companion-file-regexp "" - "Regexp to find associated compileable Java companion file. - -This is useless in Java because there do not exists uncompileable files." - :type 'regexp - :group 'compile-java) - -(defcustom java-default-compiler "javac" - "*Default C compiler to use when everything else fails. - -This could be any form evaluating to a string, so you could map it to -a function asking you interactively to choose the compiler. - -example: - (defun my-choose-compiler() - (read-string \"Java compiler: \")) - (setq java-default-compiler 'my-choose-compiler)." - :type '(choice string function) - :group 'compile-java) - -(defcustom java-compiler-varenv "JAVAC" - "Varenv indicating the C compiler to use." - :type 'string - :group 'compile-java) - -(defcustom java-cflags-varenv "JAVAC_FLAGS" - "Varenv indicating the C compiler flags to use." - :type 'string - :group 'compile-java) - -(defcustom java-source-ext-list '( "java" ) - "Extensions for Java compileable source files." - :type '(repeat string) - :group 'compile-java) - -(defcustom java-headers-ext-list '( "java" ) - "Extensions for Java source files." - :type '(repeat string) - :group 'compile-java) - -(defcustom java-default-compiler-options "-O" - "*Default options to give to the Java compiler. - -This could be any form evaluating to a string. See -`mode-compile-choosen-compiler' variable." - :type '(choice - string - (sexp :tag "Form evaluating to a string")) - :group 'compile-java) - -(defcustom java-source-file-ext-regexp "\\.java" - "Regexp to find, from it's name, if a Java file is compileable." - :type 'regexp - :group 'compile-java) - -(defcustom java-build-output-args nil - "Dont build output-args for Java-mode." - :type 'boolean - :group 'compile-java) - -(defcustom java-object-file-ext "class" - "Extension of objects file (result of compilation) -in java mode." - :type 'string - :group 'compile-java) - - - -;; @@ c++-mode compile variables ;;; -(defgroup compile-c++ nil - "C++ compilation options" - :group 'compilation-lang) - -(defcustom c++-compilers-list '( "g++" "gcc" "CC" ) - "List of user's favourites C++ compilers in order of preferencies." - :type '(repeat (string :tag "C++ Compiler name")) - :group 'compile-c++) - -(defcustom c++-companion-file-regexp "\\(_[Pp]\\)?\\.\\([pP]?[Hh][Hh]?\\|[Hh]\\+\\+?\\)" - "Regexp to find associated compileable C++ companion file -from a header file." - :type 'regexp - :group 'compile-c++) - -(defcustom c++-default-compiler "CC" - "*Default C++ compiler to use when everything else fails.. - -This could be any form evaluating to a string, so you could map it to -a function asking you interactively to choose the compiler. - -example: - (defun my-choose-compiler() - (read-string \"C++ compiler: \")) - (setq c++-default-compiler 'my-choose-compiler)" - :type '(choice string function) - :group 'compile-c++) - -(defcustom c++-compiler-varenv "CXX" - "Varenv indicating the C++ compiler to use." - :type 'string - :group 'compile-c++) - -(defcustom c++-cflags-varenv "CXXFLAGS" - "Varenv indicating the C++ compiler flags to use." - :type 'string - :group 'compile-c++) - -(defcustom c++-source-ext-list '( "cc" "C" "CC" "cpp" "cxx" "c++" "c+" ) - "Extensions for C++ compileable source files." - :type '(repeat string) - :group 'compile-c++) - -(defcustom c++-headers-ext-list '( "H" "hh" "HH" "h++" "h+" "h" "hpp" "hxx" ) - "Extensions for C++ headers source files." - :type '(repeat string) - :group 'compile-c++) - -(defcustom c++-default-compiler-options "-g" - "*Default options to give to the C++ compiler. -This could be any form evaluating to a string. See -`mode-compile-choosen-compiler' variable." - :type '(choice - string - (sexp :tag "Form evaluating to a string")) - :group 'compile-c++) - -(defcustom c++-source-file-ext-regexp "\\.\\(cc\\|CC?\\|c\\+\\+?\\|cpp\\|cxx\\)" - "Regexp to find, from it's name, if a C++ file is compileable." - :type 'regexp - :group 'compile-c++) - -(defcustom c++-build-output-args t - "Build output-args for c++-mode." - :type 'boolean - :group 'compile-c++) - -(defcustom c++-object-file-ext "o" - "Extension of objects file (result of compilation) -in c++ mode." - :type 'string - :group 'compile-c++) - - - -;; @@ ada-mode compile variables ;;; -(defgroup compile-ada nil - "Ada compilation options" - :group 'compilation-lang) - -(defcustom ada-compilers-list - '( "gcc" "gnat" "ada" ) - "List of user's favourites Ada compilers in order of preferencies." - :type '(repeat (string :tag "Ada Compiler name")) - :group 'compile-ada) - -(defcustom ada-companion-file-regexp "" - "Regexp to find associated compileable Ada companion file from a spec file. - -This is useless in Ada because there do not exists uncompileable files." - :type 'regexp - :group 'compile-ada) - -(defcustom ada-default-compiler "ada" - "*Default Ada compiler to use when everything else fails. - -This could be any form evaluating to a string, so you could map it to -a function asking you interactively to choose the compiler. - -example: - (defun my-choose-compiler() - (read-string \"Ada compiler: \")) - (setq ada-default-compiler 'my-choose-compiler)" - :type '(choice string function) - :group 'compile-ada) - -(defcustom ada-compiler-varenv "ADA" - "Varenv indicating the Ada compiler to use." - :type 'string - :group 'compile-ada) - -(defcustom ada-aflags-varenv "AFLAGS" - "Varenv indicating the Ada compiler flags to use." - :type 'string - :group 'compile-ada) - -(defcustom ada-source-ext-list '( "ads" "adb" "ada" "a" ) - "Extensions for Ada compileable source files." - :type '(repeat string) - :group 'compile-ada) - -(defcustom ada-headers-ext-list '( "ads" "ada" "a" ) - "Extensions for Ada spec source files." - :type '(repeat string) - :group 'compile-ada) - -(defcustom ada-default-compiler-options "-g" - "*Default options to give to the Ada compiler. - -This could be any form evaluating to a string. See -`mode-compile-choosen-compiler' variable." - :type '(choice - string - (sexp :tag "Form evaluating to a string")) - :group 'compile-ada) - -(defcustom ada-source-file-ext-regexp "\\.\\(ad[abs]\\|a\\)" - "Regexp to find, from it's name, if an Ada file is compileable. - -This is useless in Ada because there do not exists uncompileable files." - :type 'regexp - :group 'compile-ada) - -(defcustom ada-build-output-args t - "Build output-args for ada-mode." - :type 'boolean - :group 'compile-ada) - -(defcustom ada-object-file-ext "o" - "Extension of objects file (result of compilation) -in ada mode." - :type 'string - :group 'compile-ada) - - - -;; @@ fortran-mode compile variables ;;; -(defgroup compile-fortran nil - "Fortran compilation options" - :group 'compilation-lang) - -(defcustom f77-compilers-list '( "f77" "fc" ) - "List of user's favourite Fortran compilers in order of preferencies." - :type '(repeat (string :tag "C Compiler name")) - :group 'compile-fortran) - -(defcustom f77-companion-file-regexp "\\(_[Pp]\\)?\\.[pP]?inc" - "Regexp to find associated .f file from a .inc." - :type 'regexp - :group 'compile-fortran) - -(defcustom f77-default-compiler "f77" - "*Default fortran compiler to use when everything else fails.. - -This could be any form evaluating to a string, so you could map it to -a function asking you interactively to choose the compiler. - -example: - (defun my-choose-compiler() - (read-string \"Fortran compiler: \")) - (setq f77-default-compiler 'my-choose-compiler)" - :type '(choice string function) - :group 'compile-fortran) - -(defcustom f77-compiler-varenv "F77" - "Varenv indicating the fortran compiler to use." - :type 'string - :group 'compile-fortran) - -(defcustom f77-cflags-varenv "FCOPTS" - "Varenv indicating the fortran compiler flags to use." - :type 'string - :group 'compile-fortran) - -(defcustom f77-source-ext-list '( "f" "F" "for" "For" ) - "Extensions for fortran compileable source files." - :type '(repeat string) - :group 'compile-fortran) - -(defcustom f77-headers-ext-list '( "inc" "h") - "Extensions for fortran include files." - :type '(repeat string) - :group 'compile-fortran) - -(defcustom f77-default-compiler-options "-w66 -a" - "*Default options to give to the fortran compiler. - -This could be any form evaluating to a string. See -`mode-compile-choosen-compiler' variable." - :type '(choice - string - (sexp :tag "Form evaluating to a string")) - :group 'compile-fortran) - -(defcustom f77-source-file-ext-regexp "\\.\\([Ff]\\|for\\)" - "Regexp to find, from it's name, if a fortran file is compileable." - :type 'regexp - :group 'compile-fortran) - -(defcustom f77-build-output-args t - "Build output-args for f77-mode." - :type 'boolean - :group 'compile-fortran) - -(defcustom f77-object-file-ext "o" - "Extension of objects file (result of compilation) -in Fortran mode." - :type 'string - :group 'compile-fortran) - - - -;; @@ sh-mode compile variables ;;; -(defgroup compile-sh nil - "Sh (Bourne Shell scripts) compilation options" - :group 'compilation-script) - -(defcustom sh-command "sh" - "Command to run sh scripts" - :type 'string - :group 'compile-sh) - -(defcustom sh-dbg-flags "-fvx" - "*Flags to give to sh for debugging a Bourne Shell script. - -The -f flag must always be present." - :type 'string - :group 'compile-sh) - -(defvar sh-compilation-error-regexp-alist nil - ;; I'd never seen a Bourne shell returning file+line where a syntax - ;; error occured. - "Alist that specifies how to match errors in sh output. - -See variable compilation-error-regexp-alist for more details.") - - -;; @@ csh-mode compile variables ;;; -(defgroup compile-csh nil - "Csh (C Shell) compilation options" - :group 'compilation-script) - -(defcustom csh-command "csh" - "Command to run csh scripts" - :type 'string - :group 'compile-csh) - -(defcustom csh-dbg-flags "-fVX" - "*Flags to give to csh for debugging a C Shell script. - -The -f flag must always be present." - :type 'string - :group 'compile-csh) - -(defvar csh-compilation-error-regexp-alist nil - ;; I'd never seen a C shell returning file+line where a syntax - ;; error occured. - "Alist that specifies how to match errors in csh output. - -See variable compilation-error-regexp-alist for more details.") - - -;; @@ zsh-mode compile variables ;;; -(defgroup compile-zsh nil - "Zsh (Z Shell scripts) compilation options" - :group 'compilation-script) - -(defcustom zsh-command "zsh" - "Command to run zsh scripts" - :type 'string - :group 'compile-zsh) - -(defcustom zsh-dbg-flags "-nCvx" - "*Flags to give to zsh for debugging a Z Shell script." - :type 'string - :group 'compile-zsh) - -(defvar zsh-compilation-error-regexp-alist nil - ;; I'd never seen a Z shell returning file+line where a syntax - ;; error occured. - "Alist that specifies how to match errors in csh output. - -See variable compilation-error-regexp-alist for more details.") - - -;; @@ tcl-mode compile variables - JWH ;;; -(defgroup compile-tcl nil - "Tcl compilation options" - :group 'compilation-script) - -(defcustom tcl-command "wish" - "Command to run tcl scripts" - :type 'string - :group 'compile-tcl) - -(defcustom tcl-dbg-flags "" - "*Flags to give to tcl -- none." - :type 'string - :group 'compile-tcl) - -(defvar tcl-compilation-error-regexp-alist - ;; TK (file "/directory-path/filename.tcl" line XY) - '( - ("file \"\\([^ ]+\\)\" line \\([0-9]+\\)[)]" 1 2) - ) - "Alist that specifies how to match errors in tcl output. - -See variable compilation-error-regexp-alist for more details.") - - -;; @@ python-mode compile variables - BM ;;; -(defgroup compile-python nil - "Python compilation options" - :group 'compilation-script) - -(defcustom python-command "python" - "Command to run python scripts" - :type 'string - :group 'compile-python) - -(defcustom python-dbg-flags "" - "*Flags to give to python -- none." - :type 'string - :group 'compile-phthon) - -(defvar python-compilation-error-regexp-alist - ;; TK (file "/directory-path/filename.tcl" line XY in ZZZ) - '( - ("File \"\\([^ ]+\\)\", line \\([0-9]+\\).*" 1 2) - ) - "Alist that specifies how to match errors in python output. - -See variable compilation-error-regexp-alist for more details.") - - -;; @@ perl-mode compile variables ;;; -(defgroup compile-perl nil - "Perl compilation options" - :group 'compilation-script) - -(defcustom perl-command "perl" - "Command to run perl." - :type 'string - :group 'compile-perl) - -(defcustom perl-dbg-flags "-w" - "*Flags to give to perl for debugging a Perl script." - :type 'string - :group 'compile-perl) - -(defvar perl-compilation-error-regexp-alist - ;; Contributed by Martin Jost - '( - ;; PERL 4 - ("in file \\([^ ]+\\) at line \\([0-9]+\\).*" 1 2) - ;; PERL 5 Blubber at FILE line XY, line ab. - ("at \\([^ ]+\\) line \\([0-9]+\\)," 1 2) - ;; PERL 5 Blubber at FILE line XY. - ("at \\([^ ]+\\) line \\([0-9]+\\)." 1 2) - ) - ;; This look like a paranoiac regexp: could anybody find a better one? (which WORK). - ;;'(("^[^\n]* \\(file\\|at\\) \\([^ \t\n]+\\) [^\n]*line \\([0-9]+\\)[\\.,]" 2 3)) - "Alist that specifies how to match errors in perl output. - -See variable compilation-error-regexp-alist for more details.") - - -;; @@ emacs lisp compile variables ;;; - -;;;###autoload -(defcustom emacs-lisp-byte-compile-dir-interactive-p t - "*Non-nil means when byte-compiling a directory ask for each file -needing to be recompiled or not." - :type 'boolean - :group 'compilation-elisp) -(define-obsolete-variable-alias - 'mode-compile-byte-compile-dir-interactive-p - 'emacs-lisp-byte-compile-dir-interactive-p) - -(defcustom emacs-lisp-sources-regexp - (cond - ((boundp 'emacs-lisp-file-regexp) - emacs-lisp-file-regexp) - (t - "\\.el$")) - "Regexp to find emacs lisp sources files." - :type 'regexp - :group 'compilation-elisp) - -(defcustom emacs-lisp-bytecomp-ext "c" - "Extension added to byte-compiled emacs sources files." - :type 'string - :group 'compilation-elisp) - - -;; @@ Misc declarations ;;; - -;;;###autoload -(defconst mode-compile-version "2.28" - "Current version of mode-compile package. - -mode-compile.el,v 2.28 2003/04/01 13:52:47 boubaker Exp -Please send bugs-fixes/contributions/comments to boubaker@cena.fr") - -(defconst mode-compile-help-address "heddy.Boubaker@cena.fr" - "E-Mail address of mode-compile maintainer.") - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; @ No user modifiable stuff below this line ;;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; Save old compile function. In case someone will bound -;; mode-compile on 'compile. -(or (fboundp 'mc--compile-sav) - (if (fboundp 'compile) - (progn - (fset 'mc--compile-sav (symbol-function 'compile)) - (put 'compile 'compile-saved-on-mc--compile-sav t)) - (error "`compile' function not known to be defined..."))) - -;; @@ Internals variables and constants ;;; - -;; Mode specific -(defvar mc--comp-lst nil) ; c-mode,c++-mode,ada-mode,fortran-mode -(defvar mc--def-comp nil) ; itou -(defvar mc--compfile-regexp nil) ; itou -(defvar mc--comp-varenv nil) ; itou -(defvar mc--comp-options nil) ; itou -(defvar mc--cflags-varenv nil) ; itou -(defvar mc--source-ext-lst nil) ; itou -(defvar mc--head-ext-lst nil) ; itou -(defvar mc--source-ext-regexp nil) ; itou -(defvar mc--build-op-args nil) ; itou -(defvar mc--outfile-ext nil) ; itou - -;; remote stuff -(defvar mc--efs-path-list nil) -(defvar mc--remote-host nil) -(defvar mc--remote-host-history nil) -(defvar mc--remote-username nil) -(defvar mc--remote-command nil) -(defvar mc--remote-pathname nil) - -;; Frames/Windows stuff -(defvar mc--other-frame nil) -(defvar mc--ws (or - (and (fboundp 'console-type) (console-type)) - (and (fboundp 'device-type) (device-type)) - window-system)) - -(defvar mc--compile-command nil) -;; Compile command used when no makefile has been found. -;; This variable is buffer local to keep history for read-string. -;; Unfortunately not a real history, keep only memory of -;; the last compile command used. -(make-variable-buffer-local 'mc--compile-command) - -(defvar mc--kill-compile nil) -;; kill-compile command bound dynamically by `guess-compile'. -(make-variable-buffer-local 'mc--kill-compile) - -(defvar mc--selected-makefile nil) -(defvar mc--selected-makefile-history nil) -;; User selected makefile among the list, to run make with. -;; This variable is buffer local to keep history for completing-read -;; Unfortunately not a real history, keep only memory of -;; the last makefile used. -(make-variable-buffer-local 'mc--selected-makefile) - -(defvar mc--selected-makerule nil) -(defvar mc--selected-makerule-history nil) -;; User selected make rule to rebuild. -;; This variable is buffer local to keep history for completing-read -;; Unfortunately not a real history, keep only memory of -;; the last makerule used. -(make-variable-buffer-local 'mc--selected-makerule) - -(defconst mc--find-C-main-regexp - "^[ \t]*\\(int\\|void\\)?[ \t\n]*main[ \t\n]*\(+" ) -;; Regexp to find the main() function in a C/C++ file - -(defconst mc--makefile-rules-regexp - "^\n*\\([^.$ \t#\n][^$ \t#\n:]*\\)[ \t]*:") -;; Regexp to extract makefiles rules. -;; But only those not containing references to $(VARIABLES) -;; and not starting with `.' - -(defvar mc--makefile-rules nil) -;; List of all rules extracted from makefile -(make-variable-buffer-local 'mc--makefile-rules) - -(defvar mc--mkfl-buffer-tick nil) -;; Tick counter for the buffer at the time of the rules extraction. -(make-variable-buffer-local 'mc--mkfl-buffer-tick) - -(defvar mc--shell-args nil) -;; Shell arguments for the script to debug. -;; This variable is buffer local to keep history for read-string. -;; Unfortunately not a real history, keep only memory of -;; the last shell arguments used. -(make-variable-buffer-local 'mc--shell-args) - -;; nil in GNU FSF Emacs, >= 0 in GNU Lucid Emacs/XEmacs -(defconst mc--lucid-emacs-p (or (string-match "Lucid" emacs-version) - (string-match "XEmacs" emacs-version))) - -;; @@ Internals functions and macros ;;; - -(if (not (fboundp 'defsubst)) - ;; Emacs 18 - (fset 'defsubst (symbol-function 'defun))) - -(defun mc--compile (compile-command) - ;; Call compile with the compile command - ;; but append the remote-command before - (if (null mc--remote-command) - ;; local compile - (mc--compile-sav compile-command) - ;; remote compile - (let ((thisdir (expand-file-name (or default-directory "~")))) - (mc--compile-sav - (concat - ;; The command to lauch remote commands - mc--remote-command - ;; Change to this buffer directory ... - "'( cd " thisdir " ; " - ;; then run the compile command - compile-command " )'"))))) - -(defsubst mc--msg (msg &rest args) - ;; Print MSG with ARGS and wait to let time to user - ;; to read the message in minibuffer. - (cond ((not mode-compile-expert-p) - (apply 'message (concat "mode-compile: " msg) args) - (sit-for mode-compile-reading-time)))) - -(cond - ;; Check availaibles frames functions - ((fboundp 'make-frame) - ;; GNU Emacs - (fset 'mc--make-frame (symbol-function 'make-frame)) - (fset 'mc--select-frame (symbol-function 'select-frame)) - (fset 'mc--frame-live-p (symbol-function 'frame-live-p)) - (fset 'mc--make-frame-visible (symbol-function 'make-frame-visible)) - (fset 'mc--raise-frame (symbol-function 'raise-frame))) - ((fboundp 'make-screen) - ;; XEmacs - (fset 'mc--make-frame (symbol-function 'make-screen)) - (fset 'mc--select-frame (symbol-function 'select-screen)) - (fset 'mc--frame-live-p (symbol-function 'screen-live-p)) - (fset 'mc--make-frame-visible (symbol-function 'make-screen-visible)) - (fset 'mc--raise-frame (symbol-function 'raise-screen))) - ((fboundp 'new-screen) - ;; Lucid Emacs/obsolete - (fset 'mc--make-frame (symbol-function 'new-screen)) - (fset 'mc--select-frame (symbol-function 'select-screen)) - (fset 'mc--frame-live-p (symbol-function 'screen-live-p)) - (fset 'mc--make-frame-visible (symbol-function 'make-screen-visible)) - (fset 'mc--raise-frame (symbol-function 'raise-screen)))) - -(defsubst mc--funcall (command &rest params) - ;; Run command with params in another frame or not: - ;; only if user ask for it and if window system is X - ;; (maybe test window-system is set will be enought?). - (cond ((and (eq mc--ws 'x) - mode-compile-other-frame-p) - ;; switch to another frame - (mc--msg "Switching to another frame to compile...") - (let ((buffer (current-buffer)) - (win-attr (or mode-compile-frame-parameters-alist - mode-compile-default-frame-parameters)) - (frame (cond ((fboundp 'mc--frame-live-p) - (if (mc--frame-live-p mc--other-frame) - mc--other-frame - nil)) - (t - (mc--msg "Don't know how to check frame existence.") - nil)))) - (cond ((fboundp 'mc--make-frame) - (mc--select-frame (or frame - (setq mc--other-frame - (mc--make-frame win-attr)))) - ;; I really don't understand why the 3 following - ;; are necessary (raise-frame must be enought?). - (mc--make-frame-visible mc--other-frame) - (mc--raise-frame mc--other-frame) - (switch-to-buffer buffer)) - (t - (mc--msg "Don't know how to create a new frame.")))))) - ;; Just run the command with it's parameters - (apply command params)) - -(defun mc--byte-compile-buffer() - (if (fboundp 'byte-compile-buffer) (byte-compile-buffer) - ;; No byte-compile-buffer - ;; Save current-buffer in a temporary file and byte-compile it. - (let ((tmp-file (concat (or (getenv "TMPDIR") - (concat mode-compile-dir-separator-char "tmp")) - mode-compile-dir-separator-char (make-temp-name "mc--")))) - (save-restriction - (widen) - (write-region (point-min) (point-max) tmp-file) - (condition-case err - (byte-compile-file tmp-file) - ;; handler - (error (mc--msg "Failing to byte-compile %s, #error %s" - (buffer-name) err))) - (delete-file tmp-file) - (let ((elc-file (concat tmp-file emacs-lisp-bytecomp-ext))) - (if (file-writable-p elc-file) - (condition-case err - (delete-file elc-file) - ;; handler - (error (mc--msg "Failing to delete %s, #error %s" - elc-file err))))) - (message nil))))) ; to clean minibuffer - -(fset 'mc--member - (if (fboundp 'member) - (symbol-function 'member) - ;; No member function - (function - (lambda (elt list) - (catch 'elt-is-member - (while list - (if (equal elt (car list)) - (throw 'elt-is-member list)) - (setq list (cdr list)))))))) - -(fset 'mc--run-hooks - (if (fboundp 'run-hooks) - (symbol-function 'run-hooks) - ;; No run-hooks - (function - (lambda (hooklist) - (mapcar '(lambda (x) - ;; report an error if x not a function - (funcall x)) - hooklist))))) - -(defsubst mc--read-string (prompt &optional initial-contents) - ;; On Lucid Emacs I use compile-history as 3rd argument but - ;; no history is possible with GNU emacs. - (if mc--lucid-emacs-p - (read-string prompt initial-contents 'compile-history) - (read-string prompt initial-contents))) - -(defmacro mc--eval (sym &optional arg) - ;; Evaluate symbol - (` (cond - ((and (symbolp (, sym)) - (fboundp (, sym))) - (funcall (, sym) (, arg))) - (t - (eval (, sym)))))) - -(defmacro mc--common-completion (alist) - ;; Return the greatest common string for all - ;; possible completions in alist. - (` (try-completion "" (, alist)))) - -(defun mc--byte-recompile-files (files) - ;; Byte recompile all FILES which are older than their - ;; .elc files in the current directory - (let ((tmp-fl files)) - (while (car-safe tmp-fl) - (let* ((el-file (car tmp-fl)) - (elc-file (concat el-file emacs-lisp-bytecomp-ext))) - (mc--msg "Checking file %s ..." el-file) - ;; is el-file newer than elc-file (if exists) - (if (and (file-newer-than-file-p el-file elc-file) - (or (not emacs-lisp-byte-compile-dir-interactive-p) - (y-or-n-p (format "byte-recompile file %s? " el-file)))) - (condition-case err - (byte-compile-file el-file) - ;; handler - (error (mc--msg "Failing to byte-compile %s, #error %s" - el-file err)))) - (setq tmp-fl (cdr-safe tmp-fl)))) - (mc--msg "All files processed"))) - -(defun mc--which (file) - ;; Find an executable FILE in exec-path - (if (not (stringp file)) - (error "mc--which: nil FILE arg")) - (if mc--lucid-emacs-p - ;; Some emacses don't have locate-file some have... - ;; Lucid have it in standard, some others (GNU) have it - ;; (add-on pkg) but the syntax is not always consistent... -; (locate-file file exec-path nil 1) - (locate-file file exec-path mode-compile-exe-file-ext 1) - (let ((tmp-p-lst exec-path) - (found nil) - (file-found nil)) - (while (and (car-safe tmp-p-lst) - (not (setq found - (file-executable-p - (setq file-found - (concat (car tmp-p-lst) - mode-compile-dir-separator-char - file - mode-compile-exe-file-ext)))))) - (setq tmp-p-lst (cdr-safe tmp-p-lst))) - (if found file-found nil)))) - -(defun mc--find-compiler () - ;; Find user's favourite mode compiler - (mc--msg "Searching for your favourite %s compiler ..." mode-name) - (let ((tmp-comp-lst mc--comp-lst) - (compiler nil)) - (or (getenv mc--comp-varenv) - (progn - (while (and tmp-comp-lst - (not (setq compiler - (mc--which (car tmp-comp-lst))))) - (setq tmp-comp-lst (cdr tmp-comp-lst))) - (file-name-nondirectory (or compiler (mc--eval mc--def-comp))))))) - -(defun mc--find-to-compile-file (&optional fname) - ;; Find the name of the file to compile. - (let ((file-name (or fname - (buffer-file-name) - (error "Compilation abort: Buffer %s has no filename." - (buffer-name)))) - (assoc-file nil) - (found nil) - (pos 0)) - (cond - ((string-match mc--source-ext-regexp file-name) - ;; buffer is a compileable file - (file-name-nondirectory file-name)) - - ((setq pos (string-match mc--compfile-regexp file-name)) - ;; Buffer is not a compileable file, try to find associated - ;; compileable file. - (let ((tmp-ext-lst mc--source-ext-lst)) - (mc--msg "Looking for a compileable companion file for %s..." - (file-name-nondirectory file-name)) - (while (and tmp-ext-lst - (not (setq found - (file-readable-p - (setq assoc-file - (concat - (substring file-name 0 pos) - "." (car tmp-ext-lst))))))) - (setq tmp-ext-lst (cdr tmp-ext-lst)))) - (if found - ;; A compileable companion source file found - (file-name-nondirectory assoc-file) - ;; No compileable companion source file found - (mc--msg "Couldn't find any compileable companion file for %s ..." - (file-name-nondirectory file-name)) - nil)) - - (t - ;; Buffer has an unknown file extension - ;; Could I be more cool? - (error "Compilation abort: Don't know how to compile %s." - (file-name-nondirectory file-name)))))) - -(defun mc--guess-compile-result-fname (infile) - ;; Try to guess if outfile will be an object file or - ;; an executable file by grepping for `main()' in INFILE. - (let ((base-fname - (substring infile 0 - (string-match mc--source-ext-regexp infile)))) - (save-excursion - ;; Create a temporary buffer containing infile contents - (set-buffer (find-file-noselect infile)) - (save-excursion - (save-restriction - (widen) - (goto-char (point-min)) - ;; Grep into tmp buffer for main function - ;; THIS WILL NOT WORK FOR PROGRAMMING LANGAGES - ;; WHICH ARE NOT C DIALECTS: - ;; In non C-ish modes I hope this regexp will never be found :-( - (if (re-search-forward mc--find-C-main-regexp (point-max) t) - (concat base-fname mode-compile-exe-file-ext) - (concat base-fname "." mc--outfile-ext))))))) - -(defun mc--build-output-args (infile) - ;; Build output arguments for compile command by scanning INFILE. - (mc--msg "Looking into %s to build compile command ..." infile) - (let ((out-file (mc--guess-compile-result-fname infile))) - (concat (if (string-match - (concat "\\." mc--outfile-ext "$") - out-file) - ;; outfile will be an object file - " -c " - ;; outfile will be an executable file - " ") - infile " -o " out-file ))) - -(defun mc--set-remote-cmd (remote-host &optional username pathname) - ;; Check validity of remote-host or ask one to user - ;; Then build the first part of the remote command - (if (stringp remote-host) - ;; Arg is the remote host name - (let ((host-infos (assoc remote-host - mode-compile-remote-hosts-alist))) - (setq mc--remote-host - remote-host) - (setq mc--remote-username - (or username - (let ((usrnam (cdr host-infos))) - (if usrnam - (cond - ((stringp usrnam) - usrnam) - ((functionp usrnam) - ;; usrnam is a function call it with hostname arg - (funcall usrnam mc--remote-host)) - (t - ;; What's that?? - (mc--msg "%s is not a valid option using user-login-name" (pp-to-string usrnam)) - (user-login-name))) - (user-login-name))))) - (setq mc--remote-pathname pathname) - ;; Add host to the user's list - (or host-infos - (setq mode-compile-remote-hosts-alist - (append (list (list remote-host)) - mode-compile-remote-hosts-alist))) - ;; Prepare the command - (setq mc--remote-command - (concat - ;; "rsh host -l username" - mode-compile-remote-execute-command " " - mode-compile-remote-execute-set-host-arg " " - mc--remote-host " " - mode-compile-remote-execute-set-username-arg " " - mc--remote-username " " - mode-compile-remote-execute-misc-args " " - mode-compile-remote-execute-set-command-arg " " - ))) - ;; Arg is: Ask to user then check - (let ((rhost (completing-read - "Remote host to compile to: " - mode-compile-remote-hosts-alist - nil nil - ;; Initial contents - (or mc--remote-host - (car-safe (car-safe mode-compile-remote-hosts-alist))) - mc--remote-host-history))) - (or (string= rhost "") - (mc--set-remote-cmd rhost))))) - -;(defmacro mc--makefile-test-p (makefile) -; (` (and (, makefile) -; (not (string-equal (, makefile) "")) -; (not (file-directory-p (, makefile))) -; (file-readable-p (, makefile))))) -(defun mc--makefile-test-p (makefile) - (cond - ((or (not makefile) - (string-equal makefile "")) - (mc--msg "Empty makefile selection") - nil) - ((file-directory-p makefile) - (mc--msg "Makefile selection %s is a directory !!" makefile) - nil) - ((not (file-readable-p makefile)) - (mc--msg "Makefile %s unreadable" makefile) - nil) - (t))) - - -(if (not (fboundp 'buffer-modified-tick)) - (fset 'buffer-modified-tick - ;; allways indicate modified - (function - (lambda() - (if mc--mkfl-buffer-tick - (+ mc--mkfl-buffer-tick 1) - 1))))) - -(defun mc--get-makefile-rules (makefile) - ;; Try to find if makefile's buffer has been modified - ;; since last rule extraction - (if (or (not mc--mkfl-buffer-tick) - (not (equal mc--mkfl-buffer-tick - (buffer-modified-tick)))) - (save-excursion - (save-restriction - (widen) - (goto-char (point-min)) - (setq mc--mkfl-buffer-tick (buffer-modified-tick)) - (setq mc--makefile-rules nil) - (mc--msg "Extracting rules from %s ..." makefile) - ;; Grep into tmp buffer for makefile rules - (while (re-search-forward mc--makefile-rules-regexp nil t) - (let ((rule (buffer-substring - (match-beginning 1) - (match-end 1)))) - ;; add rule to list if it don't match the ignore regexp - ;; and if not allready in rules list. - (if (and - (or (not mode-compile-ignore-makerule-regexp) - (not (string-match - mode-compile-ignore-makerule-regexp - rule))) - (not (mc--member rule mc--makefile-rules))) - (setq mc--makefile-rules - (append mc--makefile-rules - (list rule)))))))) - (mc--msg "Rules had already been extracted from %s ..." makefile)) - ;; Always add an empty rule to allow `default' choice. - (append mc--makefile-rules '([]))) - -(defun mc--makerule-completion (alist outfile &optional pref) - ;; Return the makerule completion according to the prefered - ;; default makerule - (let ((preference (or pref - mode-compile-prefered-default-makerule))) - (mc--msg "Prefered makerule choice is '%s" preference) - (cond - ((eq preference 'none) - ;; Just show max common completion string to user - (or (mc--common-completion alist) "")) - - ((eq preference 'all) - ;; Find the all rule or 'none - (if (assoc "all" alist) "all" - (mc--makerule-completion alist outfile 'none))) - - ((eq preference 'file) - ;; The out file is prefered or 'none - (or outfile (mc--makerule-completion alist outfile 'none))) - - ((eq preference 'default) - ;; Find the default rule or "" - (if (assoc "default" alist) "default" "")) - - (t - ;; Invalid preference return 'none - (mc--msg "Invalid `mode-compile-prefered-default-makerule': '%s" - mode-compile-prefered-default-makerule) - (mc--makerule-completion alist outfile 'none))))) - -(defun mc--choose-makefile-rule (makefile &optional outfile) - ;; Choose the makefile rule and set it makefile local - (save-excursion - ;; Switch to makefile buffer - (set-buffer (find-file-noselect makefile)) - (setq mc--selected-makerule - ;; Add the name of the out file to the makefile - ;; rules list if not allready in. - (let* ((mk-rules-alist (mc--get-makefile-rules makefile)) - (choices (mapcar '(lambda (x) (list x)) - (if (or (not outfile) - (mc--member outfile - mk-rules-alist)) - mk-rules-alist - (append mk-rules-alist - (list outfile)))))) - (completing-read - (if mode-compile-expert-p - "Make rule: " - "Using `make', enter rule to rebuild ([TAB] to complete): ") - choices - nil nil - ;; initial contents - (or mc--selected-makerule - (mc--makerule-completion choices outfile - (if outfile 'file))) - mc--selected-makerule-history - ))))) - -(defmacro mc--cleanup-makefile-list (makefile-list) - ;; Remove unusable and/or backups makefiles from list - (` (let ((newlist)) - (mapcar - '(lambda (x) - (if (and (mc--makefile-test-p x) - (or (not mode-compile-ignore-makefile-backups) - (not (string-match - mode-compile-makefile-backups-regexp - x)))) - (setq newlist (cons x newlist)) - (mc--msg "Removing makefile \"%s\" from completion list" - x))) - (, makefile-list)) - newlist))) - -(defun mc--makefile-to-use (&optional directory) - ;; Find the makefile to use in the current directory - (let ((makefile-list (mc--cleanup-makefile-list - (directory-files - ;; I do not use the 5th parameter in Lucid Emacs - ;; to be compatible with GNU Emacs which accept - ;; only 4 parameters - no NOSORT -. - (or directory default-directory) - nil mode-compile-makefile-regexp t)))) - (cond - ((not makefile-list) - ;; No makefile found - nil) - - ((and (not (cdr-safe makefile-list)) - (mc--makefile-test-p (car makefile-list))) - ;; Only one valid makefile - (car makefile-list)) - - (t - ;; Many makefiles in directory ask user to select one - (let ((choices (mapcar - '(lambda (x) (list x)) - makefile-list)) - (makefile nil)) - (while - ;; While the makefile do not pass the test. - (not (mc--makefile-test-p - (setq makefile - (completing-read - (if mode-compile-expert-p - "Makefile: " - "Using `make', select makefile to use ([TAB] to complete): ") - choices - nil t - ;; initial contents - (or mc--selected-makefile - (mc--common-completion choices)) - mc--selected-makefile-history - ))))) - makefile))))) - -(defun mc--set-command (&optional file) - ;; Return a compilation command, built according to the existence - ;; of a makefile or not, to compile FILE . - (setq completion-ignore-case nil) ; let completion be case sensitive - (let ((to-compile-fname (or file (mc--find-to-compile-file)))) - (if (setq mc--selected-makefile (mc--makefile-to-use)) - (progn - ;; A makefile found in the directory: - ;; using make to compile - (let ((out-fname (if to-compile-fname - (mc--guess-compile-result-fname - to-compile-fname) - nil))) - ;; build make command by asking rule to user - (concat mode-compile-make-program " " - (or (mc--eval mode-compile-make-options) "") - " -f " mc--selected-makefile " " - (mc--choose-makefile-rule - mc--selected-makefile out-fname)))) - ;; else - ;; No makefile: build compile command asking for confirmation to user. - ;; Should this be replaced by the creation of a makefile (and then - ;; running it) as rms proposed me? - (or mc--compile-command - (setq mc--compile-command - (concat (setq mode-compile-choosen-compiler - (mc--find-compiler)) " " - (or (getenv mc--cflags-varenv) - (mc--eval mc--comp-options)) - (if to-compile-fname - (if mc--build-op-args - (mc--build-output-args to-compile-fname) - (concat " " to-compile-fname) - ) - " ")))) - (if (not mode-compile-never-edit-command-p) - (setq mc--compile-command - (mc--read-string - (if mode-compile-expert-p - "Compile command: " - (if to-compile-fname - (format "Edit command to compile %s: " - to-compile-fname) - "Edit compile command: " )) - mc--compile-command)) - mc--compile-command)))) - -(defun mc--shell-compile (shell dbgflags &optional errors-regexp-alist) - ;; Run SHELL with debug flags DBGFLAGS on current-buffer - (let* ((shcmd (or (mc--which shell) - (error "Compilation abort: command %s not found" shell))) - (shfile (or mc--remote-pathname (buffer-file-name) - (error "Compilation abort: Buffer %s has no filename" - (buffer-name)))) - (run-cmd (concat shcmd " " dbgflags " " shfile " " - (setq mc--shell-args - (read-string (if mode-compile-expert-p - "Argv: " - (format "Arguments to %s %s script: " - shfile shell)) - mc--shell-args))))) - ;; Modify compilation-error-regexp-alist if needed - (if errors-regexp-alist - (progn - ;; Set compilation-error-regexp-alist from compile - (or (listp errors-regexp-alist) - (error "Compilation abort: In mc--shell-compile errors-regexp-alist not a list.")) - ;; Add new regexp alist to compilation-error-regexp-alist - (mapcar '(lambda(x) - (if (mc--member x compilation-error-regexp-alist) nil - (setq compilation-error-regexp-alist - (append (list x) - compilation-error-regexp-alist)))) - errors-regexp-alist))) - ;; Run compile with run-cmd - (mc--compile run-cmd))) - -(defmacro mc--assq-get-fcomp (asq) - ;; Return compile-function associated to ASQ - (` (let* ((mode (cdr (, asq))) - (massq (assq mode mode-compile-modes-alist))) - (if massq (car-safe (cdr massq)))))) - -(defmacro mc--assq-get-fkill (asq) - ;; Return kill-compile-function associated to ASQ - (` (let* ((mode (cdr (, asq))) - (massq (assq mode mode-compile-modes-alist))) - (if massq (car-safe (cdr-safe (cdr massq))))))) - -(defun mc--lookin-for-shell () - ;; Look into current-buffer to see if it is a shell script - ;; and return function to compile it or nil. - (mc--msg "Looking if buffer %s is a shell script..." (buffer-name)) - (save-excursion - (save-restriction - (widen) - (goto-char (point-min)) - (if (looking-at "#![ \t]*/\\([^ \t\n]+/\\)\\([^ \t\n]+\\)") - (let* ((shell-name (buffer-substring (match-beginning 2) - (match-end 2))) - (shell-assq (assoc shell-name mode-compile-shell-alist))) - (if shell-assq - (progn - (mc--msg "Buffer is a %s script" shell-name) - (setq mc--kill-compile (mc--assq-get-fkill shell-assq)) - (mc--assq-get-fcomp shell-assq)) - nil)))))) - -(defun mc--lookat-name () - ;; Lookat buffer file name to see if it can return a function - ;; to compile it or nil. - (mc--msg "Trying to guess compile command from buffer %s file name..." - (buffer-name)) - (let ((fname (buffer-file-name))) - (if (not fname) nil - ;; try regexp from mode-compile-filename-regexp-alist - (let ((tmp-al mode-compile-filename-regexp-alist) - (found nil)) - (while (and tmp-al (car tmp-al) (not found)) - ;; evaluate to string - (let ((regxp (mc--eval (car (car tmp-al))))) - (if (string-match regxp fname) - (setq found (car tmp-al))) - (setq tmp-al (cdr tmp-al)))) - (if (not found) - nil - (mc--msg "File %s matches regexp %s" fname (car found)) - (setq mc--kill-compile (mc--assq-get-fkill found)) - (mc--assq-get-fcomp found)))))) - - -;; @ mode specific functions ;;; - -(defun cc-compile () - "Run `compile' with a dynamically built command for `c-mode'. - -The command is built depending of the existence of a makefile (which could -be specified by changing value of variable mode-compile-makefile-regexp) in -the current directory or not. -If no makefile is found try to run a C compiler on the file or it's companion. - -See also variables: - -- cc-compilers-list - -- cc-default-compiler - -- cc-companion-file-regexp - -- cc-compiler-varenv - -- cc-cflags-varenv - -- cc-source-ext-list - -- cc-headers-ext-list - -- cc-source-file-ext-regexp" - (setq - mc--comp-lst cc-compilers-list - mc--def-comp cc-default-compiler - mc--compfile-regexp cc-companion-file-regexp - mc--comp-varenv cc-compiler-varenv - mc--comp-options cc-default-compiler-options - mc--cflags-varenv cc-cflags-varenv - mc--source-ext-lst cc-source-ext-list - mc--head-ext-lst cc-headers-ext-list - mc--source-ext-regexp cc-source-file-ext-regexp - mc--build-op-args cc-build-output-args - mc--outfile-ext cc-object-file-ext - ) - (mc--compile (mc--set-command))) - -(defun java-compile () - "Run `compile' with a dynamically built command for `java-mode'. - -The command is built depending of the existence of a makefile (which could -be specified by changing value of variable mode-compile-makefile-regexp) in -the current directory or not. -If no makefile is found try to run a Java compiler on the file or it's -companion. - -See also variables: - -- java-compilers-list - -- java-default-compiler - -- java-companion-file-regexp - -- java-compiler-varenv - -- java-cflags-varenv - -- java-source-ext-list - -- java-headers-ext-list - -- java-source-file-ext-regexp" - (setq - mc--comp-lst java-compilers-list - mc--def-comp java-default-compiler - mc--compfile-regexp java-companion-file-regexp - mc--comp-varenv java-compiler-varenv - mc--comp-options java-default-compiler-options - mc--cflags-varenv java-cflags-varenv - mc--source-ext-lst java-source-ext-list - mc--head-ext-lst java-headers-ext-list - mc--source-ext-regexp java-source-file-ext-regexp - mc--build-op-args java-build-output-args - mc--outfile-ext java-object-file-ext - ) - (mc--compile (mc--set-command))) - -(defun c++-compile () - "Run `compile' with a dynamically built command for `c++-mode'. - -The command is built depending of the existence of a makefile (which could -be specified by changing value of variable mode-compile-makefile-regexp) in -the current directory or not. -If no makefile is found try to run a C++ compiler on the file or it's companion. - -See also variables: - -- c++-compilers-list - -- c++-default-compiler - -- c++-companion-file-regexp - -- c++-compiler-varenv - -- c++-cflags-varenv - -- c++-source-ext-list - -- c++-headers-ext-list - -- c++-source-file-ext-regexp" - (setq - mc--comp-lst c++-compilers-list - mc--def-comp c++-default-compiler - mc--compfile-regexp c++-companion-file-regexp - mc--comp-varenv c++-compiler-varenv - mc--comp-options c++-default-compiler-options - mc--cflags-varenv c++-cflags-varenv - mc--source-ext-lst c++-source-ext-list - mc--head-ext-lst c++-headers-ext-list - mc--source-ext-regexp c++-source-file-ext-regexp - mc--build-op-args c++-build-output-args - mc--outfile-ext c++-object-file-ext - ) - (mc--compile (mc--set-command))) - - -(defun ada-compile () - "Run `compile' with a dynamically built command for `ada-mode'. - -The command is built depending of the existence of a makefile (which could -be specified by changing value of variable mode-compile-makefile-regexp) in -the current directory or not. -If no makefile is found try to run an Ada compiler on the file. - -See also variables: - -- ada-compilers-list - -- ada-default-compiler - -- ada-companion-file-regexp - -- ada-compiler-varenv - -- ada-aflags-varenv - -- ada-source-ext-list - -- ada-headers-ext-list - -- ada-source-file-ext-regexp)" - (setq - mc--comp-lst ada-compilers-list - mc--def-comp ada-default-compiler - mc--compfile-regexp ada-companion-file-regexp - mc--comp-varenv ada-compiler-varenv - mc--comp-options ada-default-compiler-options - mc--cflags-varenv ada-aflags-varenv - mc--source-ext-lst ada-source-ext-list - mc--head-ext-lst ada-headers-ext-list - mc--source-ext-regexp ada-source-file-ext-regexp - mc--build-op-args ada-build-output-args - mc--outfile-ext ada-object-file-ext - ) - (mc--compile (mc--set-command))) - - -(defun f77-compile () - "Run `compile' with a dynamically built command for `fortran-mode'. - -The command is built depending of the existence of a makefile (which could -be specified by changing value of variable mode-compile-makefile-regexp) in -the current directory or not. -If no makefile is found try to run a Fortran compiler on the file or it's companion.. - -See also variables: - -- f77-compilers-list - -- f77-default-compiler - -- f77-companion-file-regexp - -- f77-compiler-varenv - -- f77-cflags-varenv - -- f77-source-ext-list - -- f77-headers-ext-list - -- f77-source-file-ext-regexp)" - (setq - mc--comp-lst f77-compilers-list - mc--def-comp f77-default-compiler - mc--compfile-regexp f77-companion-file-regexp - mc--comp-varenv f77-compiler-varenv - mc--cflags-varenv f77-cflags-varenv - mc--comp-options f77-default-compiler-options - mc--source-ext-lst f77-source-ext-list - mc--head-ext-lst f77-headers-ext-list - mc--source-ext-regexp f77-source-file-ext-regexp - mc--build-op-args f77-build-output-args - mc--outfile-ext f77-object-file-ext - ) - (mc--compile (mc--set-command))) - - -(defun elisp-compile () - "Run `byte-compile' on the current Emacs lisp buffer. -For `emacs-lisp-mode' and `lisp-interaction-mode'. - -Produce a `.elc' file if possible or `byte-compile' only the buffer." - (let ((comp-file (or (buffer-file-name) ""))) - (if (string-match emacs-lisp-sources-regexp comp-file) - (progn - (mc--msg "Byte compiling file %s ..." comp-file) - (byte-compile-file comp-file)) - (mc--msg "Byte compiling buffer %s #No .elc produced ..." (buffer-name)) - (mc--byte-compile-buffer)))) - - -(defun makefile-compile (&optional makefile) - "Run `make' on the current-buffer (`makefile-mode'). - -The user is prompted for a selection of make rules to build." - (let ((mkfile (or makefile (buffer-file-name) - (error - "Compilation abort: buffer %s has no file name" - (buffer-name))))) - (setq mc--selected-makefile mkfile) - (setq mc--compile-command - (concat mode-compile-make-program " " - (or (mc--eval mode-compile-make-options) "") - " -f " mkfile " " - (mc--choose-makefile-rule mkfile)))) - (mc--compile mc--compile-command)) - - -(defun dired-compile () - "Run `make' if a Makefile is present in current directory (`dired-mode'). - -The user is prompted for a selection of a makefile to choose if many -matching `mode-compile-makefile-regexp' are present in the directory and -for the make rules to build. If directory contain no makefile the function -try to find if there are some un-byte-compiled .el files and recompile them -if needed. -Ask for the complete `compile-command' if no makefile and no .el files found." - (let ((makefile (mc--makefile-to-use))) - (if makefile - ;; Makefile exists compile with it - (makefile-compile makefile) - ;; No makefile found look for some .el files - (mc--msg "No makefile found, looking for .el files ...") - (let ((el-files (directory-files - default-directory nil emacs-lisp-sources-regexp))) - (if el-files - ;; Some .el files found byte-recompile them - (mc--byte-recompile-files el-files) - ;; No .el files ask compile command to user - (mc--msg "No .el files found in directory %s" default-directory) - (default-compile)))))) - - -(defun sh-compile () - "Run `sh-command' (Bourne Shell) with `sh-dbg-flags' on current-buffer (`sh-mode'). - -User is prompted for arguments to run his sh program with. -If you want to step throught errors set the variable `sh-compilation-error-regexp-alist' -to a value understandable by compile's `next-error'. -See variables compilation-error-regexp-alist or sh-compilation-error-regexp-alist." - (mc--shell-compile sh-command sh-dbg-flags sh-compilation-error-regexp-alist)) - - -(defun csh-compile () - "Run `csh-command' (C Shell) with `csh-dbg-flags' on current-buffer (`csh-mode'). - -User is prompted for arguments to run his csh program with. -If you want to step throught errors set the variable `csh-compilation-error-regexp-alist' -to a value understandable by compile's `next-error'. -See variables compilation-error-regexp-alist or csh-compilation-error-regexp-alist." - (mc--shell-compile csh-command csh-dbg-flags csh-compilation-error-regexp-alist)) - - -(defun zsh-compile () - "Run `zsh-command' (Z Shell) with `zsh-dbg-flags' on current-buffer (`zsh-mode'). - -User is prompted for arguments to run his zsh program with. -If you want to step throught errors set the variable `zsh-compilation-error-regexp-alist' -to a value understandable by compile's `next-error'. -See variables compilation-error-regexp-alist or zsh-compilation-error-regexp-alist." - (mc--shell-compile zsh-command zsh-dbg-flags zsh-compilation-error-regexp-alist)) - - -(defun perl-compile () - "Run Perl with `perl-dbg-flags' on current-buffer (`perl-mode'). - -User is prompted for arguments to run his perl program with. -If you want to step throught errors set the variable `perl-compilation-error-regexp-alist' -to a value understandable by compile's `next-error'. -See variables compilation-error-regexp-alist or perl-compilation-error-regexp-alist." - (mc--shell-compile perl-command perl-dbg-flags perl-compilation-error-regexp-alist)) - - -(defun tcl-compile () - ;; JWH - "Run `tcl-command' with `tcl-dbg-flags' on current-buffer (`tcl-mode'). - -User is prompted for arguments to run his Tcl/Tk program with. -If you want to step throught errors set the variable `tcl-compilation-error-regexp-alist' -to a value understandable by compile's `next-error'. -See variables compilation-error-regexp-alist or tcl-compilation-error-regexp-alist." - (mc--shell-compile tcl-command tcl-dbg-flags tcl-compilation-error-regexp-alist)) - - -(defun python-compile () - ;; BM - "Run `python-command' with `python-dbg-flags' on current-buffer (`python-mode'). - -User is prompted for arguments to run his Python program with. -If you want to step throught errors set the variable `python-compilation-error-regexp-alist' -to a value understandable by compile's `next-error'. -See variables compilation-error-regexp-alist or python-compilation-error-regexp-alist." - (mc--shell-compile python-command python-dbg-flags python-compilation-error-regexp-alist)) - - -(defun default-compile () - "Default function invoked by `mode-compile' (\\[mode-compile]) -when everything else failed. - -Ask to user to edit `compile-command' and run `compile' (\\[compile]) with it." - (setq mc--compile-command - (mc--read-string - (if mode-compile-expert-p - "Compile command: " - (format "Edit command to compile %s : " (buffer-name))) - (or mc--compile-command compile-command))) - (mc--compile mc--compile-command)) - -(defvar mc--makefile) ;; Just to avoid compiler warning -(defun guess-compile () - "Try to guess how to compile current-buffer. - -When the compile command could not be extrapolated from major-mode this function -is called which try to guess from number of parameters which command to build. -The steps to guess which command to use to compile are: - 1st : Look into the file to check if it is a shell script - See variable mode-compile-shell-alist - 2nd : Try to guess from the file name - See variable mode-compile-filename-regexp-alist - 3rd : Look for a makefile in the current directory - See variable mode-compile-makefile-regexp - Last: Give up and ask user for the command to use - See function default-compile" - (mc--msg "Trying to guess how to compile buffer %s ..." (buffer-name)) - (let ((mc--makefile)) - (funcall - (or - ;; step 1 - (mc--lookin-for-shell) - ;; step 2 - (mc--lookat-name) - ;; step 3 - (progn - (mc--msg "Looking for a makefile in current directory...") - (if (setq mc--makefile (mc--makefile-to-use - (and (buffer-file-name) - (file-name-directory (buffer-file-name))))) - (progn - (setq mc--kill-compile 'kill-compilation) - ;; Byte-compiling says `makefile' is not referenced. - '(lambda () (makefile-compile mc--makefile))))) - ;; step 4 - (progn - (mc--msg "Don't know how to compile %s, giving up..." - (buffer-name)) - (setq mc--kill-compile 'kill-compilation) - 'default-compile))))) - - -;; @ user accessible/exported function ;;; - -;; get reporter-submit-bug-report when byte-compiling -(and (fboundp 'eval-when-compile) - (eval-when-compile (require 'reporter))) - -;;;###autoload -(defun mode-compile-submit-bug-report () - "*Submit via mail a bug report on mode-compile v2.27." - (interactive) - (and - (y-or-n-p "Do you REALLY want to submit a report on mode-compile? ") - (require 'reporter) - (reporter-submit-bug-report - mode-compile-help-address - (concat "mode-compile " mode-compile-version) - (list - ;; Interesting mode-compile variables - 'mode-compile-modes-alist - 'mode-compile-filename-regexp-alist - 'mode-compile-shell-alist - 'mode-compile-makefile-regexp - 'mode-compile-make-program - 'mode-compile-default-make-options - 'mode-compile-make-options - 'mode-compile-reading-time - 'mode-compile-expert-p - 'mode-compile-never-edit-command-p - 'mode-compile-save-all-p - 'mode-compile-always-save-buffer-p - 'mode-compile-before-compile-hook - 'mode-compile-after-compile-hook - 'mode-compile-before-kill-hook - 'mode-compile-after-kill-hook - 'mode-compile-other-frame-p - 'mode-compile-other-frame-name - 'mode-compile-frame-parameters-alist - 'mode-compile-prefered-default-makerule - 'emacs-lisp-byte-compile-dir-interactive-p - ;; others variables - 'features - 'compilation-error-regexp-alist - 'compile-command - ) - nil - nil - "Dear Heddy,"))) - - -;;;###autoload -(defun mode-compile (&optional remote-host) - "*Compile the file in the current buffer with a dynamically built command. - -The command is built according to the current major mode the function -was invoked from. - -Running this command preceded by universal-argument (\\[universal-argument]) -allows remote compilation, the user is prompted for a host name to run the -compilation command on. - -Currently know how to compile in: - `c-mode' , -- function cc-compile. - `java-mode' , -- function java-compile. - `c++-mode', -- function c++-compile. - `ada-mode', -- function ada-compile. - `fortran-mode', -- function f77-compile. - `emacs-lisp-mode' -- function elisp-compile. - `lisp-interaction-mode' -- function elisp-compile. - `makefile-mode' -- function makefile-compile. - `dired-mode' -- function dired-compile. - `sh-mode' -- function sh-compile. - `csh-mode' -- function csh-compile. - `zsh-mode' -- function zsh-compile. - `perl-mode' -- function perl-compile. - `cperl-mode' -- function perl-compile. - `tcl-mode' -- function tcl-compile. - `python-mode' -- function python-compile. - `fundamental-mode' -- function guess-compile. - `text-mode' -- function guess-compile. - `indented-text-mode' -- function guess-compile. - `compilation-mode' -- function default-compile. - The function `guess-compile' is called when mode is unknown. - -The variable `mode-compile-modes-alist' contain description of known -modes. The hooks variables `mode-compile-before-compile-hook' and -`mode-compile-after-compile-hook' are run just before and after -invoking the compile command of the mode. - -Use the command `mode-compile-kill' (\\[mode-compile-kill]) to abort a -running compilation. - -Bound on \\[mode-compile]." - (interactive "P") - ;; reinit - (setq - mc--efs-path-list nil - mc--remote-command nil) - (if remote-host - ;; Remote compilation asked - ;; prepare remote command - (mc--set-remote-cmd remote-host) - ;; Not asked but check buffer-file-name to see - ;; if it is not an efs file - (setq mc--efs-path-list (and (fboundp 'efs-ftp-path) - (buffer-file-name) - (efs-ftp-path (buffer-file-name)))) - (and mc--efs-path-list (mc--set-remote-cmd - (car mc--efs-path-list) - (nth 1 mc--efs-path-list) - (nth 2 mc--efs-path-list)))) - (if (and mode-compile-always-save-buffer-p - (buffer-file-name)) - ;; save-buffer allready check if buffer had been modified - (save-buffer)) - (if mode-compile-save-all-p (save-some-buffers t)) - ;; Check if compile-command set as local variable - (if (and - (boundp 'compile-command) - (local-variable-p 'compile-command (current-buffer)) - compile-command ; not null - (if mc--compile-command - (equal compile-command mc--compile-command) - t) - ) - ;; Just ask user and go - (progn - (mc--run-hooks 'mode-compile-before-compile-hook) - (default-compile) - (mc--run-hooks 'mode-compile-after-compile-hook) - ) - ;; Here is the real work - (let ((mode-elem (assq major-mode mode-compile-modes-alist))) - (if mode-elem - ;; known mode - (progn - (mc--msg (substitute-command-keys - "Compiling in %s mode ... \\[mode-compile-kill] to kill.") - mode-name) - (mc--run-hooks 'mode-compile-before-compile-hook) - ;; mc--funcall can launch the compilation - ;; in another frame. - (mc--funcall (car (cdr mode-elem))) - (mc--run-hooks 'mode-compile-after-compile-hook)) - ;; unknown mode: try to guess - (mc--msg (substitute-command-keys - "Don't know how to compile in %s mode, guessing... \\[mode-compile-kill] to kill.") - mode-name) - (mc--run-hooks 'mode-compile-before-compile-hook) - ;; mc--funcall can launch the compilation - ;; in another frame. - (mc--funcall 'guess-compile) - (mc--run-hooks 'mode-compile-after-compile-hook))))) - -(provide 'mode-compile) - - -;;;###autoload -(defun mode-compile-kill() - "*Kill the running compilation launched by `mode-compile' (\\[mode-compile]) \ -command. - -The compilation command is killed according to the current major mode -the function was invoked from. - -Currently know how to kill compilations from: - `c-mode' , -- function kill-compilation. - `java-mode' , -- function kill-compilation. - `c++-mode' , -- function kill-compilation. - `ada-mode' , -- function kill-compilation. - `fortran-mode' , -- function kill-compilation. - `emacs-lisp-mode' -- function keyboard-quit. - `lisp-interaction-mode' -- function keyboard-quit. - `makefile-mode' -- function kill-compilation. - `dired-mode' -- function kill-compilation. - `sh-mode' -- function kill-compilation. - `csh-mode' -- function kill-compilation. - `zsh-mode' -- function kill-compilation. - `perl-mode' -- function kill-compilation. - `cperl-mode' -- function kill-compilation. - `tcl-mode' -- function kill-compilation. - `python-mode' -- function kill-compilation. - `fundamental-mode' -- Bound dynamically. - `text-mode' -- Bound dynamically. - `indented-text-mode' -- Bound dynamically. - `compilation-mode' -- function kill-compilation. - -The variable `mode-compile-modes-alist' contain description of ALL -known modes. The hooks variables `mode-compile-before-kill-hook' and -`mode-compile-after-kill-hook' are run just before and after invoking -the kill compile command of the mode. - -Bound on \\[mode-compile-kill]." - (interactive) - (let ((mode-elem (assq major-mode mode-compile-modes-alist))) - (if mode-elem - ;; known mode - (progn - (mc--run-hooks 'mode-compile-before-kill-hook) - (mc--msg "Killing compilation in %s mode..." mode-name) - (let ((killfun (or (car-safe (cdr (cdr mode-elem))) - mc--kill-compile - nil))) - (if killfun - ;; I don't call mc--funcall here caus' we don't need - ;; to switch to another frame to kill a compilation. - (funcall killfun) - (mc--msg "Unable to kill compilation in %s mode..." mode-name)) - (mc--run-hooks 'mode-compile-after-kill-hook))) - ;; unknown mode - (mc--msg "Don't know how to kill compilation in %s mode" - mode-name)))) - -(provide 'mode-compile-kill) - - - -;;; Local variables: -;;; outline-regexp: ";; @+" -;;; eval: (outline-minor-mode 1) -;;; End: - -;;; mode-compile.el ends here diff --git a/emacs_el/org-element-debug.el b/emacs_el/org-element-debug.el deleted file mode 100644 index 8de62ad..0000000 --- a/emacs_el/org-element-debug.el +++ /dev/null @@ -1,89 +0,0 @@ -;;; element-debug-mode by Nicolas, see: -;; -;; (notmuch-show "id:87d21dsvox.fsf@nicolasgoaziou.fr") -;; -;; -;; (notmuch-show "id:87ioaqsaz2.fsf@nicolasgoaziou.fr") -;; - -(defun element-check-cache (&rest ignore) - (when (org-element--cache-active-p) - (save-match-data - (let ((cache (copy-tree org-element--cache t)) - (requests (copy-tree org-element--cache-sync-requests t)) - (buffer-contents (org-with-wide-buffer (buffer-string))) - (translations (make-hash-table :test #'eq)) - (structures (make-hash-table :test #'eq)) - (keys (make-hash-table :test #'eq))) - ;; Fix parents. - (loop for key in (avl-tree-flatten org-element--cache) - for value in (avl-tree-flatten cache) - do (let ((struct (and (memq (org-element-type key) - '(plain-list item)) - (gethash (org-element-property :structure key) - structures 'missing)))) - (progn - (puthash key value translations) - (let ((k (gethash key org-element--cache-sync-keys))) - (when k (puthash value k keys))) - (puthash - key - (org-element-put-property - value :parent - (gethash (org-element-property :parent key) - translations)) - translations) - (when (eq struct 'missing) - (setq struct - (puthash (org-element-property :structure key) - (org-element-property :structure value) - structures))) - (when struct - (puthash - key - (org-element-put-property value :structure struct) - translations))))) - ;; Fix requests. - (loop for original in org-element--cache-sync-requests - for copy in requests - do (aset copy 4 (gethash (aref original 4) translations))) - (with-temp-buffer - (let ((org-element-use-cache nil)) (insert buffer-contents)) - (let ((org-inhibit-startup t)) (org-mode)) - (setq org-element--cache cache - org-element--cache-sync-requests requests - org-element--cache-sync-keys keys) - (org-element--cache-sync (current-buffer) (point-max)) - (let ((seen '())) - (avl-tree-mapc - (lambda (element) - (let ((beg (org-element-property :begin element)) - (type (org-element-type element))) - (let ((real (let (org-element-use-cache) - (goto-char - (if (memq type '(item table-row)) (1+ beg) - beg)) - (org-element-at-point)))) - (cond - ((member real seen) - (message - "======\nWARNING. Two entries for the same element\n\n %s" - element)) - ((not (equal real element)) - (message - "======\nWARNING. Corrupted element (%s) at %d\n\nReal:\ - %s\n\nCached: %s\n\nLast request: %s" - (org-element-type element) beg real element (car requests))) - (t (push real seen)))))) - org-element--cache))))))) - -(define-minor-mode element-debug-mode - "Minor mode to debug Org Element cache." - nil " OrgCacheD" nil - (if element-debug-mode - (progn (setq org-element-cache-sync-idle-time 3600) - (add-hook 'after-change-functions 'element-check-cache t t)) - (setq org-element-cache-sync-idle-time 0.6) - (remove-hook 'after-change-functions 'element-check-cache t))) - -(provide 'org-element-debug) diff --git a/emacs_el/s.el b/emacs_el/s.el deleted file mode 120000 index 3e09ddf..0000000 --- a/emacs_el/s.el +++ /dev/null @@ -1 +0,0 @@ -s-el/s.el \ No newline at end of file diff --git a/emacs_el/vc-svn17.el b/emacs_el/vc-svn17.el deleted file mode 100644 index 94be20f..0000000 --- a/emacs_el/vc-svn17.el +++ /dev/null @@ -1,78 +0,0 @@ -;;; vc-svn17.el --- Subversion 1.7 support for vc-svn on Emacs23 - -;; Copyright (C) 2012 Taiki SUGAWARA - -;; Author: Taiki SUGAWARA -;; Maintainer: Taiki SUGAWARA -;; Version: 0.01 -;; URL: https://github.com/buzztaiki/vc-svn17-el - -;; 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 this program. If not, see . - -;;; Commentary: - -;; This package provides subversion 1.7 support for vc-svn on Emacs23. -;; -;; To use this package, put followings in your .emacs: -;; -;; (require 'vc-svn17) - -;;; Code: - -(require 'vc-svn) - -(defmacro vc-svn17-defun (name args &rest body) - (declare (indent defun)) - `(when (<= emacs-major-version 23) - ,(if (stringp (car body)) - `(defun ,name ,args ,(car body) ,@(cdr body)) - `(defun ,name ,args nil ,@body)))) - -(defmacro vc-svn17-repfun (name args &rest body) - (declare (indent defun)) - `(when (<= emacs-major-version 23) - (defadvice ,name (around vc-svn17 ,args activate) - (setq ad-return-value ,@body)))) - - -(vc-svn17-defun vc-svn-root (file) - (vc-find-root file vc-svn-admin-directory)) - -(vc-svn17-repfun vc-svn-registered (file) - (when (vc-svn-root file) - (with-temp-buffer - (cd (file-name-directory file)) - (let* (process-file-side-effects - (status - (condition-case nil - ;; Ignore all errors. - (vc-svn-command t t file "status" "-v") - (error nil)))) - (when (eq 0 status) - (let ((parsed (vc-svn-parse-status file))) - (and parsed (not (memq parsed '(ignored unregistered)))))))))) - -(vc-svn17-repfun vc-svn-responsible-p (file) - (vc-svn-root file)) - -(vc-svn17-repfun vc-svn-repository-hostname (dirname) - (with-temp-buffer - (let (process-file-side-effects) - (vc-svn-command t t dirname "info")) - (goto-char (point-min)) - (when (re-search-forward "^URL: *\\(.*\\)" nil t) - (match-string 1)))) - -(provide 'vc-svn17) -;;; vc-svn17.el ends here -- 2.39.2