diff options
| author | Chong Yidong | 2009-10-17 04:18:31 +0000 |
|---|---|---|
| committer | Chong Yidong | 2009-10-17 04:18:31 +0000 |
| commit | 67d3ffe4989e99079a69e1f7358b758c14cb519a (patch) | |
| tree | ef5228be15780a5eae1d81245c0b136e1101e123 | |
| parent | 2df48a87291564f460b159f94f622f88f6c40bfb (diff) | |
| download | emacs-67d3ffe4989e99079a69e1f7358b758c14cb519a.tar.gz emacs-67d3ffe4989e99079a69e1f7358b758c14cb519a.zip | |
* cedet/srecode/srt.el:
* cedet/srecode/compile.el:
* cedet/semantic/mru-bookmark.el:
* cedet/semantic/debug.el:
* cedet/semantic/complete.el:
* cedet/semantic/analyze.el: Require CL when compiling.
* cedet/semantic/scope.el
(semantic-analyze-scoped-inherited-tag-map): Wrap calculation of
tmpscope so that the regular scope will continue to work.
* cedet/semantic/idle.el (semantic-idle-tag-highlight): Use
semantic-idle-summary-highlight-face as the highlighting.
* emacs-lisp/eieio-base.el (eieio-persistent-save): If buffer
contains multibyte characters, choose first applicable coding
system automatically.
* cedet/ede/project-am.el (project-run-target): New method.
(project-run-target): New method.
* cedet/ede.el (ede-target): Add run target menu item.
(ede-project, ede-minor-keymap): Add ede-run-target binding.
(ede-run-target): New function.
(ede-target::project-run-target): New method.
* cedet/ede/proj.el (project-run-target): New method.
* cedet/ede/proj-shared.el (ede-gcc-libtool-shared-compiler)
(ede-g++-libtool-shared-compiler): Remove SHELL. Remove COMMANDS.
Add :rules.
(ede-proj-target-makefile-shared-object): Only libtool compilers
now available. Add linkers for libtool.
(ede-cc-linker-libtool, ede-g++-linker-libtool): New.
(ede-proj-makefile-target-name): Always use .la extension.
* cedet/ede/proj-prog.el (project-run-target): New method.
* cedet/ede/proj-obj.el (ede-cc-linker): Rename from
ede-gcc-linker.
(ede-g++-linker): Change Change link lines.
* cedet/ede/pmake.el (ede-pmake-insert-variable-shared): When
searching for old variables, go to the end of the buffer and
search backward from there.
(ede-proj-makefile-automake-insert-subdirs)
(ede-proj-makefile-automake-insert-extradist): New methods.
(ede-proj-makefile-create): Use them.
* cedet/ede/pconf.el (ede-proj-configure-test-required-file):
Force FILE to expand to the current target. Use file-exists-p to
check that it exists.
* cedet/ede/linux.el (ede-linux-version): Don't call "head".
(ede-linux-load): Wrap dir in file-name-as-directory. Set
:version slot.
* cedet/ede/files.el (ede-get-locator-object): When enabling
locate, do so on "top".
* cedet/ede/emacs.el (ede-emacs-file-existing): Wrap "dir" in
file-name-as-directory during compare.
(ede-emacs-version): Return Emacs/XEmacs differentiator. Get
version number from different places. Don't call egrep.
(ede-emacs-load): Set :version slot. Call file-name-as-directory
to set the directory.
* cedet/ede/shell.el: New file.
* cedet/inversion.el (inversion-decoders): Allow for stray . in
alpha/beta variants.
27 files changed, 407 insertions, 82 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0fcfead46e3..bb119085989 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,79 @@ | |||
| 1 | 2009-10-17 Chong Yidong <cyd@stupidchicken.com> | ||
| 2 | |||
| 3 | * cedet/srecode/srt.el: | ||
| 4 | * cedet/srecode/compile.el: | ||
| 5 | * cedet/semantic/mru-bookmark.el: | ||
| 6 | * cedet/semantic/debug.el: | ||
| 7 | * cedet/semantic/complete.el: | ||
| 8 | * cedet/semantic/analyze.el: Require CL when compiling. | ||
| 9 | |||
| 10 | 2009-10-17 Eric Ludlam <zappo@gnu.org> | ||
| 11 | |||
| 12 | * cedet/semantic/scope.el | ||
| 13 | (semantic-analyze-scoped-inherited-tag-map): Wrap calculation of | ||
| 14 | tmpscope so that the regular scope will continue to work. | ||
| 15 | |||
| 16 | * cedet/semantic/idle.el (semantic-idle-tag-highlight): Use | ||
| 17 | semantic-idle-summary-highlight-face as the highlighting. | ||
| 18 | |||
| 19 | * emacs-lisp/eieio-base.el (eieio-persistent-save): If buffer | ||
| 20 | contains multibyte characters, choose first applicable coding | ||
| 21 | system automatically. | ||
| 22 | |||
| 23 | * cedet/ede/project-am.el (project-run-target): New method. | ||
| 24 | (project-run-target): New method. | ||
| 25 | |||
| 26 | * cedet/ede.el (ede-target): Add run target menu item. | ||
| 27 | (ede-project, ede-minor-keymap): Add ede-run-target binding. | ||
| 28 | (ede-run-target): New function. | ||
| 29 | (ede-target::project-run-target): New method. | ||
| 30 | |||
| 31 | * cedet/ede/proj.el (project-run-target): New method. | ||
| 32 | |||
| 33 | * cedet/ede/proj-shared.el (ede-gcc-libtool-shared-compiler) | ||
| 34 | (ede-g++-libtool-shared-compiler): Remove SHELL. Remove COMMANDS. | ||
| 35 | Add :rules. | ||
| 36 | (ede-proj-target-makefile-shared-object): Only libtool compilers | ||
| 37 | now available. Add linkers for libtool. | ||
| 38 | (ede-cc-linker-libtool, ede-g++-linker-libtool): New. | ||
| 39 | (ede-proj-makefile-target-name): Always use .la extension. | ||
| 40 | |||
| 41 | * cedet/ede/proj-prog.el (project-run-target): New method. | ||
| 42 | |||
| 43 | * cedet/ede/proj-obj.el (ede-cc-linker): Rename from | ||
| 44 | ede-gcc-linker. | ||
| 45 | (ede-g++-linker): Change Change link lines. | ||
| 46 | |||
| 47 | * cedet/ede/pmake.el (ede-pmake-insert-variable-shared): When | ||
| 48 | searching for old variables, go to the end of the buffer and | ||
| 49 | search backward from there. | ||
| 50 | (ede-proj-makefile-automake-insert-subdirs) | ||
| 51 | (ede-proj-makefile-automake-insert-extradist): New methods. | ||
| 52 | (ede-proj-makefile-create): Use them. | ||
| 53 | |||
| 54 | * cedet/ede/pconf.el (ede-proj-configure-test-required-file): | ||
| 55 | Force FILE to expand to the current target. Use file-exists-p to | ||
| 56 | check that it exists. | ||
| 57 | |||
| 58 | * cedet/ede/linux.el (ede-linux-version): Don't call "head". | ||
| 59 | (ede-linux-load): Wrap dir in file-name-as-directory. Set | ||
| 60 | :version slot. | ||
| 61 | |||
| 62 | * cedet/ede/files.el (ede-get-locator-object): When enabling | ||
| 63 | locate, do so on "top". | ||
| 64 | |||
| 65 | * cedet/ede/emacs.el (ede-emacs-file-existing): Wrap "dir" in | ||
| 66 | file-name-as-directory during compare. | ||
| 67 | (ede-emacs-version): Return Emacs/XEmacs differentiator. Get | ||
| 68 | version number from different places. Don't call egrep. | ||
| 69 | (ede-emacs-load): Set :version slot. Call file-name-as-directory | ||
| 70 | to set the directory. | ||
| 71 | |||
| 72 | * cedet/ede/shell.el: New file. | ||
| 73 | |||
| 74 | * cedet/inversion.el (inversion-decoders): Allow for stray . in | ||
| 75 | alpha/beta variants. | ||
| 76 | |||
| 1 | 2009-10-17 Stefan Monnier <monnier@iro.umontreal.ca> | 77 | 2009-10-17 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 78 | ||
| 3 | * international/mule-cmds.el (select-safe-coding-system): If the file | 79 | * international/mule-cmds.el (select-safe-coding-system): If the file |
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el index 03abf93704e..3d05202e7aa 100644 --- a/lisp/cedet/ede.el +++ b/lisp/cedet/ede.el | |||
| @@ -239,6 +239,9 @@ which files this object is interested in." | |||
| 239 | (and ede-object | 239 | (and ede-object |
| 240 | (obj-of-class-p ede-object ede-target)) ] | 240 | (obj-of-class-p ede-object ede-target)) ] |
| 241 | ) | 241 | ) |
| 242 | [ "Run target" ede-run-target | ||
| 243 | (and ede-object | ||
| 244 | (obj-of-class-p ede-object ede-target)) ] | ||
| 242 | :documentation "Menu specialized to this type of target." | 245 | :documentation "Menu specialized to this type of target." |
| 243 | :accessor ede-object-menu) | 246 | :accessor ede-object-menu) |
| 244 | ) | 247 | ) |
| @@ -373,7 +376,8 @@ and target specific elements such as build variables.") | |||
| 373 | :group (settings) | 376 | :group (settings) |
| 374 | :documentation "Project local variables") | 377 | :documentation "Project local variables") |
| 375 | (keybindings :allocation :class | 378 | (keybindings :allocation :class |
| 376 | :initform (("D" . ede-debug-target)) | 379 | :initform (("D" . ede-debug-target) |
| 380 | ("R" . ede-run-target)) | ||
| 377 | :documentation "Keybindings specialized to this type of target." | 381 | :documentation "Keybindings specialized to this type of target." |
| 378 | :accessor ede-object-keybindings) | 382 | :accessor ede-object-keybindings) |
| 379 | (menu :allocation :class | 383 | (menu :allocation :class |
| @@ -565,6 +569,7 @@ Argument LIST-O-O is the list of objects to choose from." | |||
| 565 | (define-key pmap "c" 'ede-compile-target) | 569 | (define-key pmap "c" 'ede-compile-target) |
| 566 | (define-key pmap "\C-c" 'ede-compile-selected) | 570 | (define-key pmap "\C-c" 'ede-compile-selected) |
| 567 | (define-key pmap "D" 'ede-debug-target) | 571 | (define-key pmap "D" 'ede-debug-target) |
| 572 | (define-key pmap "R" 'ede-run-target) | ||
| 568 | ;; bind our submap into map | 573 | ;; bind our submap into map |
| 569 | (define-key map "\C-c." pmap) | 574 | (define-key map "\C-c." pmap) |
| 570 | map) | 575 | map) |
| @@ -1142,6 +1147,11 @@ Optional argument FORCE forces the file to be removed without asking." | |||
| 1142 | (interactive) | 1147 | (interactive) |
| 1143 | (ede-invoke-method 'project-debug-target)) | 1148 | (ede-invoke-method 'project-debug-target)) |
| 1144 | 1149 | ||
| 1150 | (defun ede-run-target () | ||
| 1151 | "Debug the current buffer's assocated target." | ||
| 1152 | (interactive) | ||
| 1153 | (ede-invoke-method 'project-run-target)) | ||
| 1154 | |||
| 1145 | (defun ede-make-dist () | 1155 | (defun ede-make-dist () |
| 1146 | "Create a distribution from the current project." | 1156 | "Create a distribution from the current project." |
| 1147 | (interactive) | 1157 | (interactive) |
| @@ -1381,6 +1391,10 @@ Argument COMMAND is the command to use for compiling the target." | |||
| 1381 | "Run the current project target OBJ in a debugger." | 1391 | "Run the current project target OBJ in a debugger." |
| 1382 | (error "debug-target not supported by %s" (object-name obj))) | 1392 | (error "debug-target not supported by %s" (object-name obj))) |
| 1383 | 1393 | ||
| 1394 | (defmethod project-run-target ((obj ede-target)) | ||
| 1395 | "Run the current project target OBJ." | ||
| 1396 | (error "run-target not supported by %s" (object-name obj))) | ||
| 1397 | |||
| 1384 | (defmethod project-make-dist ((this ede-project)) | 1398 | (defmethod project-make-dist ((this ede-project)) |
| 1385 | "Build a distribution for the project based on THIS project." | 1399 | "Build a distribution for the project based on THIS project." |
| 1386 | (error "Make-dist not supported by %s" (object-name this))) | 1400 | (error "Make-dist not supported by %s" (object-name this))) |
diff --git a/lisp/cedet/ede/emacs.el b/lisp/cedet/ede/emacs.el index edd499eb2b2..a38e6a0ef0d 100644 --- a/lisp/cedet/ede/emacs.el +++ b/lisp/cedet/ede/emacs.el | |||
| @@ -48,7 +48,8 @@ DIR is the directory to search from." | |||
| 48 | (ans nil)) | 48 | (ans nil)) |
| 49 | (while (and projs (not ans)) | 49 | (while (and projs (not ans)) |
| 50 | (let ((root (ede-project-root-directory (car projs)))) | 50 | (let ((root (ede-project-root-directory (car projs)))) |
| 51 | (when (string-match (concat "^" (regexp-quote root)) dir) | 51 | (when (string-match (concat "^" (regexp-quote root)) |
| 52 | (file-name-as-directory dir)) | ||
| 52 | (setq ans (car projs)))) | 53 | (setq ans (car projs)))) |
| 53 | (setq projs (cdr projs))) | 54 | (setq projs (cdr projs))) |
| 54 | ans)) | 55 | ans)) |
| @@ -70,19 +71,44 @@ DIR is the directory to search from." | |||
| 70 | base)))))) | 71 | base)))))) |
| 71 | 72 | ||
| 72 | (defun ede-emacs-version (dir) | 73 | (defun ede-emacs-version (dir) |
| 73 | "Find the Emacs version for the Emacs src in DIR." | 74 | "Find the Emacs version for the Emacs src in DIR. |
| 74 | (let ((buff (get-buffer-create " *emacs-query*"))) | 75 | Return a tuple of ( EMACSNAME . VERSION )." |
| 76 | (let ((buff (get-buffer-create " *emacs-query*")) | ||
| 77 | (emacs "Emacs") | ||
| 78 | (ver "")) | ||
| 75 | (save-excursion | 79 | (save-excursion |
| 76 | (set-buffer buff) | 80 | (set-buffer buff) |
| 77 | (erase-buffer) | 81 | (erase-buffer) |
| 78 | (setq default-directory (file-name-as-directory dir)) | 82 | (setq default-directory (file-name-as-directory dir)) |
| 79 | (call-process "egrep" nil buff nil "-n" "-e" "^version=" "Makefile") | 83 | ;(call-process "egrep" nil buff nil "-n" "-e" "^version=" "Makefile") |
| 84 | (call-process "egrep" nil buff nil "-n" "-e" "AC_INIT" "configure.in") | ||
| 80 | (goto-char (point-min)) | 85 | (goto-char (point-min)) |
| 81 | (re-search-forward "version=\\([0-9.]+\\)") | 86 | ;(re-search-forward "version=\\([0-9.]+\\)") |
| 82 | (prog1 | 87 | (cond |
| 83 | (match-string 1) | 88 | ;; Maybe XEmacs? |
| 84 | (kill-buffer buff) | 89 | ((file-exists-p "version.sh") |
| 85 | )))) | 90 | (setq emacs "XEmacs") |
| 91 | (insert-file-contents "version.sh") | ||
| 92 | (goto-char (point-min)) | ||
| 93 | (re-search-forward "emacs_major_version=\\([0-9]+\\) | ||
| 94 | emacs_minor_version=\\([0-9]+\\) | ||
| 95 | emacs_beta_version=\\([0-9]+\\)") | ||
| 96 | (setq ver (concat (match-string 1) "." | ||
| 97 | (match-string 2) "." | ||
| 98 | (match-string 3))) | ||
| 99 | ) | ||
| 100 | ;; Insert other Emacs here... | ||
| 101 | |||
| 102 | ;; Vaguely recent version of GNU Emacs? | ||
| 103 | (t | ||
| 104 | (insert-file-contents "configure.in") | ||
| 105 | (goto-char (point-min)) | ||
| 106 | (re-search-forward "AC_INIT(emacs,\\s-*\\([0-9.]+\\)\\s-*)") | ||
| 107 | (setq ver (match-string 1)) | ||
| 108 | ) | ||
| 109 | ) | ||
| 110 | ;; Return a tuple | ||
| 111 | (cons emacs ver)))) | ||
| 86 | 112 | ||
| 87 | (defclass ede-emacs-project (ede-project eieio-instance-tracker) | 113 | (defclass ede-emacs-project (ede-project eieio-instance-tracker) |
| 88 | ((tracking-symbol :initform 'ede-emacs-project-list) | 114 | ((tracking-symbol :initform 'ede-emacs-project-list) |
| @@ -97,11 +123,13 @@ Argument DIR is the directory it is created for. | |||
| 97 | ROOTPROJ is nil, since there is only one project." | 123 | ROOTPROJ is nil, since there is only one project." |
| 98 | (or (ede-emacs-file-existing dir) | 124 | (or (ede-emacs-file-existing dir) |
| 99 | ;; Doesn't already exist, so lets make one. | 125 | ;; Doesn't already exist, so lets make one. |
| 100 | (ede-emacs-project "Emacs" | 126 | (let* ((vertuple (ede-emacs-version dir))) |
| 101 | :name (concat "Emacs" (ede-emacs-version dir)) | 127 | (ede-emacs-project (car vertuple) |
| 102 | :directory dir | 128 | :name (car vertuple) |
| 103 | :file (expand-file-name "src/emacs.c" | 129 | :version (cdr vertuple) |
| 104 | dir)) | 130 | :directory (file-name-as-directory dir) |
| 131 | :file (expand-file-name "src/emacs.c" | ||
| 132 | dir))) | ||
| 105 | (ede-add-project-to-global-list this) | 133 | (ede-add-project-to-global-list this) |
| 106 | ) | 134 | ) |
| 107 | ) | 135 | ) |
diff --git a/lisp/cedet/ede/files.el b/lisp/cedet/ede/files.el index 2a886758a2f..980d98b3167 100644 --- a/lisp/cedet/ede/files.el +++ b/lisp/cedet/ede/files.el | |||
| @@ -396,7 +396,7 @@ Get it from the toplevel project. If it doesn't have one, make one." | |||
| 396 | ;; caching values, and for locating things more robustly. | 396 | ;; caching values, and for locating things more robustly. |
| 397 | (let ((top (ede-toplevel proj))) | 397 | (let ((top (ede-toplevel proj))) |
| 398 | (when (not (slot-boundp top 'locate-obj)) | 398 | (when (not (slot-boundp top 'locate-obj)) |
| 399 | (ede-enable-locate-on-project this)) | 399 | (ede-enable-locate-on-project top)) |
| 400 | (oref top locate-obj) | 400 | (oref top locate-obj) |
| 401 | )) | 401 | )) |
| 402 | 402 | ||
diff --git a/lisp/cedet/ede/linux.el b/lisp/cedet/ede/linux.el index 400aaa69977..c80902bf0be 100644 --- a/lisp/cedet/ede/linux.el +++ b/lisp/cedet/ede/linux.el | |||
| @@ -76,7 +76,7 @@ DIR is the directory to search from." | |||
| 76 | (set-buffer buff) | 76 | (set-buffer buff) |
| 77 | (erase-buffer) | 77 | (erase-buffer) |
| 78 | (setq default-directory (file-name-as-directory dir)) | 78 | (setq default-directory (file-name-as-directory dir)) |
| 79 | (call-process "head" nil buff nil "-n" "3" "Makefile") | 79 | (insert-file-contents "Makefile" nil 0 512) |
| 80 | (goto-char (point-min)) | 80 | (goto-char (point-min)) |
| 81 | (let (major minor sub) | 81 | (let (major minor sub) |
| 82 | (re-search-forward "^VERSION *= *\\([0-9.]+\\)") | 82 | (re-search-forward "^VERSION *= *\\([0-9.]+\\)") |
| @@ -104,8 +104,9 @@ ROOTPROJ is nil, since there is only one project." | |||
| 104 | (or (ede-linux-file-existing dir) | 104 | (or (ede-linux-file-existing dir) |
| 105 | ;; Doesn't already exist, so lets make one. | 105 | ;; Doesn't already exist, so lets make one. |
| 106 | (ede-linux-project "Linux" | 106 | (ede-linux-project "Linux" |
| 107 | :name (concat "Linux" (ede-linux-version dir)) | 107 | :name "Linux" |
| 108 | :directory dir | 108 | :version (ede-linux-version dir) |
| 109 | :directory (file-name-as-directory dir) | ||
| 109 | :file (expand-file-name "scripts/ver_linux" | 110 | :file (expand-file-name "scripts/ver_linux" |
| 110 | dir)) | 111 | dir)) |
| 111 | (ede-add-project-to-global-list this) | 112 | (ede-add-project-to-global-list this) |
diff --git a/lisp/cedet/ede/pconf.el b/lisp/cedet/ede/pconf.el index 7544f85405d..216da94096f 100644 --- a/lisp/cedet/ede/pconf.el +++ b/lisp/cedet/ede/pconf.el | |||
| @@ -42,21 +42,22 @@ don't do it. A value of nil means to just do it.") | |||
| 42 | 42 | ||
| 43 | (defmethod ede-proj-configure-test-required-file ((this ede-proj-project) file) | 43 | (defmethod ede-proj-configure-test-required-file ((this ede-proj-project) file) |
| 44 | "For project THIS, test that the file FILE exists, or create it." | 44 | "For project THIS, test that the file FILE exists, or create it." |
| 45 | (when (not (ede-expand-filename (ede-toplevel this) file)) | 45 | (let ((f (ede-expand-filename (ede-toplevel this) file t))) |
| 46 | (save-excursion | 46 | (when (not (file-exists-p f)) |
| 47 | (find-file (ede-expand-filename (ede-toplevel this) file t)) | 47 | (save-excursion |
| 48 | (cond ((string= file "AUTHORS") | 48 | (find-file f) |
| 49 | (insert (user-full-name) " <" (user-login-name) ">")) | 49 | (cond ((string= file "AUTHORS") |
| 50 | ((string= file "NEWS") | 50 | (insert (user-full-name) " <" (user-login-name) ">")) |
| 51 | (insert "NEWS file for " (ede-name this))) | 51 | ((string= file "NEWS") |
| 52 | (t (insert "\n"))) | 52 | (insert "NEWS file for " (ede-name this))) |
| 53 | (save-buffer) | 53 | (t (insert "\n"))) |
| 54 | (when | 54 | (save-buffer) |
| 55 | (and (eq ede-pconf-create-file-query 'ask) | 55 | (when |
| 56 | (not (eq ede-pconf-create-file-query 'never)) | 56 | (and (eq ede-pconf-create-file-query 'ask) |
| 57 | (not (y-or-n-p | 57 | (not (eq ede-pconf-create-file-query 'never)) |
| 58 | (format "I had to create the %s file for you. Ok? " file))) | 58 | (not (y-or-n-p |
| 59 | (error "Quit")))))) | 59 | (format "I had to create the %s file for you. Ok? " file))) |
| 60 | (error "Quit"))))))) | ||
| 60 | 61 | ||
| 61 | 62 | ||
| 62 | (defmethod ede-proj-configure-synchronize ((this ede-proj-project)) | 63 | (defmethod ede-proj-configure-synchronize ((this ede-proj-project)) |
| @@ -100,6 +101,7 @@ don't do it. A value of nil means to just do it.") | |||
| 100 | ;; Now save | 101 | ;; Now save |
| 101 | (save-buffer) | 102 | (save-buffer) |
| 102 | (setq postcmd "autoreconf -i;") | 103 | (setq postcmd "autoreconf -i;") |
| 104 | |||
| 103 | ;; Verify a bunch of files that are required by automake. | 105 | ;; Verify a bunch of files that are required by automake. |
| 104 | (ede-proj-configure-test-required-file this "AUTHORS") | 106 | (ede-proj-configure-test-required-file this "AUTHORS") |
| 105 | (ede-proj-configure-test-required-file this "NEWS") | 107 | (ede-proj-configure-test-required-file this "NEWS") |
diff --git a/lisp/cedet/ede/pmake.el b/lisp/cedet/ede/pmake.el index a8b16dce139..6ded4be2834 100644 --- a/lisp/cedet/ede/pmake.el +++ b/lisp/cedet/ede/pmake.el | |||
| @@ -44,6 +44,7 @@ | |||
| 44 | ;; 1) Insert distribution source variables for targets | 44 | ;; 1) Insert distribution source variables for targets |
| 45 | ;; 2) Insert user requested rules | 45 | ;; 2) Insert user requested rules |
| 46 | 46 | ||
| 47 | (eval-when-compile (require 'cl)) | ||
| 47 | (require 'ede/proj) | 48 | (require 'ede/proj) |
| 48 | (require 'ede/proj-obj) | 49 | (require 'ede/proj-obj) |
| 49 | (require 'ede/proj-comp) | 50 | (require 'ede/proj-comp) |
| @@ -205,6 +206,9 @@ MFILENAME is the makefile to generate." | |||
| 205 | (error "Makefile.in is not supported")) | 206 | (error "Makefile.in is not supported")) |
| 206 | ((eq (oref this makefile-type) 'Makefile.am) | 207 | ((eq (oref this makefile-type) 'Makefile.am) |
| 207 | (require 'ede/pconf) | 208 | (require 'ede/pconf) |
| 209 | ;; Basic vars needed: | ||
| 210 | (ede-proj-makefile-automake-insert-subdirs this) | ||
| 211 | (ede-proj-makefile-automake-insert-extradist this) | ||
| 208 | ;; Distribution variables | 212 | ;; Distribution variables |
| 209 | (let ((targ (if isdist (oref this targets) mt))) | 213 | (let ((targ (if isdist (oref this targets) mt))) |
| 210 | (ede-compiler-begin-unique | 214 | (ede-compiler-begin-unique |
| @@ -240,8 +244,11 @@ MFILENAME is the makefile to generate." | |||
| 240 | "Add VARNAME into the current Makefile. | 244 | "Add VARNAME into the current Makefile. |
| 241 | Execute BODY in a location where a value can be placed." | 245 | Execute BODY in a location where a value can be placed." |
| 242 | `(let ((addcr t) (v ,varname)) | 246 | `(let ((addcr t) (v ,varname)) |
| 243 | (if (re-search-backward (concat "^" v "\\s-*=") nil t) | 247 | (if (save-excursion |
| 248 | (goto-char (point-max)) | ||
| 249 | (re-search-backward (concat "^" v "\\s-*=") nil t)) | ||
| 244 | (progn | 250 | (progn |
| 251 | (goto-char (match-end 0)) | ||
| 245 | (ede-pmake-end-of-variable) | 252 | (ede-pmake-end-of-variable) |
| 246 | (if (< (current-column) 40) | 253 | (if (< (current-column) 40) |
| 247 | (if (and (/= (preceding-char) ?=) | 254 | (if (and (/= (preceding-char) ?=) |
| @@ -502,6 +509,18 @@ Argument THIS is the target that should insert stuff." | |||
| 502 | (ede-proj-makefile-insert-dist-dependencies this) | 509 | (ede-proj-makefile-insert-dist-dependencies this) |
| 503 | ) | 510 | ) |
| 504 | 511 | ||
| 512 | (defmethod ede-proj-makefile-automake-insert-subdirs ((this ede-proj-project)) | ||
| 513 | "Insert a SUBDIRS variable for Automake." | ||
| 514 | (proj-comp-insert-variable-once "SUBDIRS" | ||
| 515 | (ede-map-subprojects | ||
| 516 | this (lambda (sproj) | ||
| 517 | (insert " " (ede-subproject-relative-path sproj)) | ||
| 518 | )))) | ||
| 519 | |||
| 520 | (defmethod ede-proj-makefile-automake-insert-extradist ((this ede-proj-project)) | ||
| 521 | "Insert the EXTRADIST variable entries needed for Automake and EDE." | ||
| 522 | (proj-comp-insert-variable-once "EXTRA_DIST" (insert "Project.ede"))) | ||
| 523 | |||
| 505 | (defmethod ede-proj-makefile-insert-dist-rules ((this ede-proj-project)) | 524 | (defmethod ede-proj-makefile-insert-dist-rules ((this ede-proj-project)) |
| 506 | "Insert distribution rules for THIS in a Makefile, such as CLEAN and DIST." | 525 | "Insert distribution rules for THIS in a Makefile, such as CLEAN and DIST." |
| 507 | (let ((junk (ede-proj-makefile-garbage-patterns this)) | 526 | (let ((junk (ede-proj-makefile-garbage-patterns this)) |
diff --git a/lisp/cedet/ede/proj-comp.el b/lisp/cedet/ede/proj-comp.el index 376c48f9c10..4d462727281 100644 --- a/lisp/cedet/ede/proj-comp.el +++ b/lisp/cedet/ede/proj-comp.el | |||
| @@ -44,6 +44,7 @@ | |||
| 44 | ;; To write a method that inserts a variable or rule for a compiler | 44 | ;; To write a method that inserts a variable or rule for a compiler |
| 45 | ;; based object, wrap the body of your call in `ede-compiler-only-once' | 45 | ;; based object, wrap the body of your call in `ede-compiler-only-once' |
| 46 | 46 | ||
| 47 | (eval-when-compile (require 'cl)) | ||
| 47 | (require 'ede) ;source object | 48 | (require 'ede) ;source object |
| 48 | (require 'ede/autoconf-edit) | 49 | (require 'ede/autoconf-edit) |
| 49 | 50 | ||
diff --git a/lisp/cedet/ede/proj-misc.el b/lisp/cedet/ede/proj-misc.el index 5907dcd5d47..498e9a43c0f 100644 --- a/lisp/cedet/ede/proj-misc.el +++ b/lisp/cedet/ede/proj-misc.el | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | ;; This misc target lets the user link in custom makefiles to an EDE | 27 | ;; This misc target lets the user link in custom makefiles to an EDE |
| 28 | ;; project. | 28 | ;; project. |
| 29 | 29 | ||
| 30 | (eval-when-compile (require 'cl)) | ||
| 30 | (require 'ede/pmake) | 31 | (require 'ede/pmake) |
| 31 | (require 'ede/proj-comp) | 32 | (require 'ede/proj-comp) |
| 32 | 33 | ||
diff --git a/lisp/cedet/ede/proj-obj.el b/lisp/cedet/ede/proj-obj.el index f3ededad893..85ba47fb47e 100644 --- a/lisp/cedet/ede/proj-obj.el +++ b/lisp/cedet/ede/proj-obj.el | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | ;; Handles a superclass of target types which create object code in | 26 | ;; Handles a superclass of target types which create object code in |
| 27 | ;; and EDE Project file. | 27 | ;; and EDE Project file. |
| 28 | 28 | ||
| 29 | (eval-when-compile (require 'cl)) | ||
| 29 | (require 'ede/proj) | 30 | (require 'ede/proj) |
| 30 | (declare-function ede-pmake-varname "ede/pmake") | 31 | (declare-function ede-pmake-varname "ede/pmake") |
| 31 | 32 | ||
| @@ -46,7 +47,7 @@ | |||
| 46 | ;; fortran or pascal can be added here | 47 | ;; fortran or pascal can be added here |
| 47 | )) | 48 | )) |
| 48 | (availablelinkers :initform (ede-g++-linker | 49 | (availablelinkers :initform (ede-g++-linker |
| 49 | ede-gcc-linker | 50 | ede-cc-linker |
| 50 | ede-gfortran-linker | 51 | ede-gfortran-linker |
| 51 | ede-ld-linker | 52 | ede-ld-linker |
| 52 | ;; Add more linker thingies here. | 53 | ;; Add more linker thingies here. |
| @@ -108,10 +109,10 @@ file.") | |||
| 108 | :uselinker t) | 109 | :uselinker t) |
| 109 | "Compiler for C sourcecode.") | 110 | "Compiler for C sourcecode.") |
| 110 | 111 | ||
| 111 | (defvar ede-gcc-linker | 112 | (defvar ede-cc-linker |
| 112 | (ede-linker | 113 | (ede-linker |
| 113 | "ede-gcc-linker" | 114 | "ede-cc-linker" |
| 114 | :name "gcc" | 115 | :name "cc" |
| 115 | :sourcetype '(ede-source-c) | 116 | :sourcetype '(ede-source-c) |
| 116 | :variables '(("C_LINK" . "$(CC) $(CFLAGS) $(LDFLAGS) -L.")) | 117 | :variables '(("C_LINK" . "$(CC) $(CFLAGS) $(LDFLAGS) -L.")) |
| 117 | :commands '("$(C_LINK) -o $@ $^") | 118 | :commands '("$(C_LINK) -o $@ $^") |
diff --git a/lisp/cedet/ede/proj-prog.el b/lisp/cedet/ede/proj-prog.el index da99acd6f9d..4b0843e1408 100644 --- a/lisp/cedet/ede/proj-prog.el +++ b/lisp/cedet/ede/proj-prog.el | |||
| @@ -25,9 +25,12 @@ | |||
| 25 | ;; | 25 | ;; |
| 26 | ;; Handle building programs from object files in and EDE Project file. | 26 | ;; Handle building programs from object files in and EDE Project file. |
| 27 | 27 | ||
| 28 | (eval-when-compile (require 'cl)) | ||
| 28 | (require 'ede/pmake) | 29 | (require 'ede/pmake) |
| 29 | (require 'ede/proj-obj) | 30 | (require 'ede/proj-obj) |
| 30 | 31 | ||
| 32 | (declare-function ede-shell-run-something "ede/shell") | ||
| 33 | |||
| 31 | ;;; Code: | 34 | ;;; Code: |
| 32 | (defclass ede-proj-target-makefile-program | 35 | (defclass ede-proj-target-makefile-program |
| 33 | (ede-proj-target-makefile-objectcode) | 36 | (ede-proj-target-makefile-objectcode) |
| @@ -107,6 +110,26 @@ Note: Not currently used. This bug needs to be fixed.") | |||
| 107 | (funcall ede-debug-program-function cmd)) | 110 | (funcall ede-debug-program-function cmd)) |
| 108 | (kill-buffer tb)))) | 111 | (kill-buffer tb)))) |
| 109 | 112 | ||
| 113 | (defmethod project-run-target ((obj ede-proj-target-makefile-program) &optional command) | ||
| 114 | "Run a program target OBJ. | ||
| 115 | Optional COMMAND is the command to run in place of asking the user." | ||
| 116 | (require 'ede/shell) | ||
| 117 | (let ((tb (get-buffer-create " *padt*")) | ||
| 118 | (dd (if (not (string= (oref obj path) "")) | ||
| 119 | (oref obj path) | ||
| 120 | default-directory)) | ||
| 121 | (cmd nil)) | ||
| 122 | (unwind-protect | ||
| 123 | (progn | ||
| 124 | (set-buffer tb) | ||
| 125 | (setq default-directory dd) | ||
| 126 | (setq cmd (or command | ||
| 127 | (read-from-minibuffer | ||
| 128 | "Run (like this): " | ||
| 129 | (concat "./" (ede-target-name obj))))) | ||
| 130 | (ede-shell-run-something obj cmd) | ||
| 131 | ) | ||
| 132 | (kill-buffer tb)))) | ||
| 110 | 133 | ||
| 111 | (provide 'ede/proj-prog) | 134 | (provide 'ede/proj-prog) |
| 112 | 135 | ||
diff --git a/lisp/cedet/ede/proj-shared.el b/lisp/cedet/ede/proj-shared.el index 37aeb723042..2db616cfebf 100644 --- a/lisp/cedet/ede/proj-shared.el +++ b/lisp/cedet/ede/proj-shared.el | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | ;; Tries to deal with libtool and non-libtool situations. | 26 | ;; Tries to deal with libtool and non-libtool situations. |
| 27 | 27 | ||
| 28 | (require 'ede/pmake) | 28 | (require 'ede/pmake) |
| 29 | (require 'ede/proj-obj) | ||
| 29 | (require 'ede/proj-prog) | 30 | (require 'ede/proj-prog) |
| 30 | 31 | ||
| 31 | ;;; THIS NEEDS WORK. SEE ede-proj-obj. | 32 | ;;; THIS NEEDS WORK. SEE ede-proj-obj. |
| @@ -33,11 +34,15 @@ | |||
| 33 | ;;; Code: | 34 | ;;; Code: |
| 34 | (defclass ede-proj-target-makefile-shared-object | 35 | (defclass ede-proj-target-makefile-shared-object |
| 35 | (ede-proj-target-makefile-program) | 36 | (ede-proj-target-makefile-program) |
| 36 | ((availablecompilers :initform (ede-gcc-shared-compiler | 37 | ((availablecompilers :initform (ede-gcc-libtool-shared-compiler |
| 37 | ede-gcc-libtool-shared-compiler | 38 | ;;ede-gcc-shared-compiler |
| 38 | ede-g++-shared-compiler | ||
| 39 | ede-g++-libtool-shared-compiler | 39 | ede-g++-libtool-shared-compiler |
| 40 | ;;ede-g++-shared-compiler | ||
| 40 | )) | 41 | )) |
| 42 | (availablelinkers :initform (ede-cc-linker-libtool | ||
| 43 | ede-g++-linker-libtool | ||
| 44 | ;; Add more linker thingies here. | ||
| 45 | )) | ||
| 41 | (ldflags :custom (repeat (string :tag "Libtool flag")) | 46 | (ldflags :custom (repeat (string :tag "Libtool flag")) |
| 42 | :documentation | 47 | :documentation |
| 43 | "Additional flags to add when linking this shared library. | 48 | "Additional flags to add when linking this shared library. |
| @@ -65,16 +70,37 @@ Use ldlibs to add addition libraries.") | |||
| 65 | (clone ede-gcc-shared-compiler | 70 | (clone ede-gcc-shared-compiler |
| 66 | "ede-c-shared-compiler-libtool" | 71 | "ede-c-shared-compiler-libtool" |
| 67 | :name "libtool" | 72 | :name "libtool" |
| 68 | :variables '(("LIBTOOL" . "$(SHELL) libtool") | 73 | :variables '(("LIBTOOL" . "libtool") |
| 69 | ("LTCOMPILE" . "$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)") | 74 | ("LTCOMPILE" . "$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)") |
| 70 | ("LTLINK" . "$(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -L. -o $@") | 75 | ("LTLINK" . "$(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -L. -o $@") |
| 71 | ) | 76 | ) |
| 72 | :commands '("$(LTLINK) $^" | 77 | :rules (list (ede-makefile-rule |
| 73 | ) | 78 | "cc-inference-rule-libtool" |
| 79 | :target "%.o" | ||
| 80 | :dependencies "%.c" | ||
| 81 | :rules '("@echo '$(LTCOMPILE) -o $@ $<'; \\" | ||
| 82 | "$(LTCOMPILE) -o $@ $<" | ||
| 83 | ) | ||
| 84 | )) | ||
| 74 | :autoconf '("AC_PROG_LIBTOOL") | 85 | :autoconf '("AC_PROG_LIBTOOL") |
| 75 | ) | 86 | ) |
| 76 | "Compiler for C sourcecode.") | 87 | "Compiler for C sourcecode.") |
| 77 | 88 | ||
| 89 | (defvar ede-cc-linker-libtool | ||
| 90 | (clone ede-cc-linker | ||
| 91 | "ede-cc-linker-libtool" | ||
| 92 | :name "cc shared" | ||
| 93 | ;; Only use this linker when c++ exists. | ||
| 94 | :sourcetype '(ede-source-c++) | ||
| 95 | :variables '( | ||
| 96 | ("LIBTOOL" . "libtool") | ||
| 97 | ("LTLINK" . "$(LIBTOOL) --tag=CPP --mode=link $(CPP) $(CFLAGS) $(LDFLAGS) -L. -o $@") | ||
| 98 | ) | ||
| 99 | :commands '("$(LTLINK) -o $@ $^") | ||
| 100 | :autoconf '("AC_PROG_LIBTOOL") | ||
| 101 | :objectextention ".la") | ||
| 102 | "Linker needed for c++ programs.") | ||
| 103 | |||
| 78 | (defvar ede-g++-shared-compiler | 104 | (defvar ede-g++-shared-compiler |
| 79 | (clone ede-g++-compiler | 105 | (clone ede-g++-compiler |
| 80 | "ede-c++-shared-compiler" | 106 | "ede-c++-shared-compiler" |
| @@ -92,16 +118,36 @@ Use ldlibs to add addition libraries.") | |||
| 92 | "ede-c++-shared-compiler-libtool" | 118 | "ede-c++-shared-compiler-libtool" |
| 93 | :name "libtool" | 119 | :name "libtool" |
| 94 | :variables '(("CXX" "g++") | 120 | :variables '(("CXX" "g++") |
| 95 | ("LIBTOOL" . "$(SHELL) libtool") | 121 | ("LIBTOOL" . "libtool") |
| 96 | ("LTCOMPILE" . "$(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)") | 122 | ("LTCOMPILE" . "$(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)") |
| 97 | ("LTLINK" . "$(LIBTOOL) --mode=link $(CXX) $(CFLAGS) $(LDFLAGS) -L. -o $@") | ||
| 98 | ) | 123 | ) |
| 99 | :commands '("$(LTLINK) $^" | 124 | :rules (list (ede-makefile-rule |
| 100 | ) | 125 | "c++-inference-rule-libtool" |
| 126 | :target "%.o" | ||
| 127 | :dependencies "%.c" | ||
| 128 | :rules '("@echo '$(LTCOMPILE) -o $@ $<'; \\" | ||
| 129 | "$(LTCOMPILE) -o $@ $<" | ||
| 130 | ) | ||
| 131 | )) | ||
| 101 | :autoconf '("AC_PROG_LIBTOOL") | 132 | :autoconf '("AC_PROG_LIBTOOL") |
| 102 | ) | 133 | ) |
| 103 | "Compiler for C sourcecode.") | 134 | "Compiler for C sourcecode.") |
| 104 | 135 | ||
| 136 | (defvar ede-g++-linker-libtool | ||
| 137 | (clone ede-g++-linker | ||
| 138 | "ede-g++-linker-libtool" | ||
| 139 | :name "g++" | ||
| 140 | ;; Only use this linker when c++ exists. | ||
| 141 | :sourcetype '(ede-source-c++) | ||
| 142 | :variables '( | ||
| 143 | ("LIBTOOL" . "libtool") | ||
| 144 | ("LTLINK" . "$(LIBTOOL) --tag=CXX --mode=link $(CXX) $(CFLAGS) $(LDFLAGS) -L. -o $@") | ||
| 145 | ) | ||
| 146 | :commands '("$(LTLINK) -o $@ $^") | ||
| 147 | :autoconf '("AC_PROG_LIBTOOL") | ||
| 148 | :objectextention ".la") | ||
| 149 | "Linker needed for c++ programs.") | ||
| 150 | |||
| 105 | ;;; @TODO - C++ versions of the above. | 151 | ;;; @TODO - C++ versions of the above. |
| 106 | 152 | ||
| 107 | (when nil | 153 | (when nil |
| @@ -150,11 +196,7 @@ We need to override -program which has an LDADD element." | |||
| 150 | "Return the name of the main target for THIS target." | 196 | "Return the name of the main target for THIS target." |
| 151 | ;; We need some platform gunk to make the .so change to .sl, or .a, | 197 | ;; We need some platform gunk to make the .so change to .sl, or .a, |
| 152 | ;; depending on the platform we are going to compile against. | 198 | ;; depending on the platform we are going to compile against. |
| 153 | (concat "lib" (ede-name this) | 199 | (concat "lib" (ede-name this) ".la")) |
| 154 | (if (eq (oref (ede-target-parent this) makefile-type) | ||
| 155 | 'Makefile.am) | ||
| 156 | ".la" | ||
| 157 | ".so"))) | ||
| 158 | 200 | ||
| 159 | (defmethod ede-proj-makefile-sourcevar ((this ede-proj-target-makefile-shared-object)) | 201 | (defmethod ede-proj-makefile-sourcevar ((this ede-proj-target-makefile-shared-object)) |
| 160 | "Return the variable name for THIS's sources." | 202 | "Return the variable name for THIS's sources." |
diff --git a/lisp/cedet/ede/proj.el b/lisp/cedet/ede/proj.el index bf50fe63608..046567fe831 100644 --- a/lisp/cedet/ede/proj.el +++ b/lisp/cedet/ede/proj.el | |||
| @@ -498,6 +498,10 @@ Optional argument COMMAND is the s the alternate command to use." | |||
| 498 | "Run the current project target OBJ in a debugger." | 498 | "Run the current project target OBJ in a debugger." |
| 499 | (error "Debug-target not supported by %s" (object-name obj))) | 499 | (error "Debug-target not supported by %s" (object-name obj))) |
| 500 | 500 | ||
| 501 | (defmethod project-run-target ((obj ede-proj-target)) | ||
| 502 | "Run the current project target OBJ." | ||
| 503 | (error "Run-target not supported by %s" (object-name obj))) | ||
| 504 | |||
| 501 | (defmethod ede-proj-makefile-target-name ((this ede-proj-target)) | 505 | (defmethod ede-proj-makefile-target-name ((this ede-proj-target)) |
| 502 | "Return the name of the main target for THIS target." | 506 | "Return the name of the main target for THIS target." |
| 503 | (ede-name this)) | 507 | (ede-name this)) |
diff --git a/lisp/cedet/ede/project-am.el b/lisp/cedet/ede/project-am.el index 4c480271e0e..50436f214f6 100644 --- a/lisp/cedet/ede/project-am.el +++ b/lisp/cedet/ede/project-am.el | |||
| @@ -392,6 +392,7 @@ Argument COMMAND is the command to use for compiling the target." | |||
| 392 | (cmd nil)) | 392 | (cmd nil)) |
| 393 | (unwind-protect | 393 | (unwind-protect |
| 394 | (progn | 394 | (progn |
| 395 | (require 'ede/shell) | ||
| 395 | (set-buffer tb) | 396 | (set-buffer tb) |
| 396 | (setq default-directory dd) | 397 | (setq default-directory dd) |
| 397 | (setq cmd (read-from-minibuffer | 398 | (setq cmd (read-from-minibuffer |
| @@ -401,6 +402,21 @@ Argument COMMAND is the command to use for compiling the target." | |||
| 401 | (funcall project-am-debug-target-function cmd)) | 402 | (funcall project-am-debug-target-function cmd)) |
| 402 | (kill-buffer tb)))) | 403 | (kill-buffer tb)))) |
| 403 | 404 | ||
| 405 | (defmethod project-run-target ((obj project-am-objectcode)) | ||
| 406 | "Run the current project target in comint buffer." | ||
| 407 | (let ((tb (get-buffer-create " *padt*")) | ||
| 408 | (dd (oref obj path)) | ||
| 409 | (cmd nil)) | ||
| 410 | (unwind-protect | ||
| 411 | (progn | ||
| 412 | (set-buffer tb) | ||
| 413 | (setq default-directory dd) | ||
| 414 | (setq cmd (read-from-minibuffer | ||
| 415 | "Run (like this): " | ||
| 416 | (concat (ede-target-name obj)))) | ||
| 417 | (ede-shell-run-something obj cmd)) | ||
| 418 | (kill-buffer tb)))) | ||
| 419 | |||
| 404 | (defmethod project-make-dist ((this project-am-target)) | 420 | (defmethod project-make-dist ((this project-am-target)) |
| 405 | "Run the current project in the debugger." | 421 | "Run the current project in the debugger." |
| 406 | (require 'compile) | 422 | (require 'compile) |
diff --git a/lisp/cedet/ede/shell.el b/lisp/cedet/ede/shell.el new file mode 100644 index 00000000000..0d05d238e39 --- /dev/null +++ b/lisp/cedet/ede/shell.el | |||
| @@ -0,0 +1,83 @@ | |||
| 1 | ;;; ede/shell.el --- A shell controlled by EDE. | ||
| 2 | ;; | ||
| 3 | ;; Copyright (C) 2009 Free Software Foundation, Inc. | ||
| 4 | ;; | ||
| 5 | ;; Author: Eric M. Ludlam <eric@siege-engine.com> | ||
| 6 | |||
| 7 | ;; This file is part of GNU Emacs. | ||
| 8 | |||
| 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 10 | ;; it under the terms of the GNU General Public License as published by | ||
| 11 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 12 | ;; (at your option) any later version. | ||
| 13 | |||
| 14 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | ;; GNU General Public License for more details. | ||
| 18 | |||
| 19 | ;; You should have received a copy of the GNU General Public License | ||
| 20 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | ||
| 21 | |||
| 22 | ;;; Commentary: | ||
| 23 | ;; | ||
| 24 | ;; Run commands through a specialized EDE shell buffer. Commands will | ||
| 25 | ;; be run as shell commands so users can type in their own thing in | ||
| 26 | ;; the shells for testing purposes. | ||
| 27 | ;; | ||
| 28 | ;; Each thing that EDE wants to use will create a shell to interact with it. | ||
| 29 | |||
| 30 | ;;; Code: | ||
| 31 | |||
| 32 | (require 'ede) | ||
| 33 | |||
| 34 | (declare-function comint-send-input "comint") | ||
| 35 | |||
| 36 | (defmethod ede-shell-run-something ((target ede-target) command) | ||
| 37 | "Create a shell to run stuff for TARGET. | ||
| 38 | COMMAND is a text string representing the thing to be run." | ||
| 39 | (let* ((buff (ede-shell-buffer target)) | ||
| 40 | (cp (ede-target-parent target)) | ||
| 41 | (dd (oref cp :directory))) | ||
| 42 | ;; Show the new buffer. | ||
| 43 | (when (not (get-buffer-window buff)) | ||
| 44 | (switch-to-buffer-other-window buff t)) | ||
| 45 | ;; Force a shell into the buffer. | ||
| 46 | (shell buff) | ||
| 47 | (while (eq (point-min) (point)) | ||
| 48 | (accept-process-output)) | ||
| 49 | ;; Change the default directory | ||
| 50 | (if (not (string= (file-name-as-directory (expand-file-name default-directory)) | ||
| 51 | (file-name-as-directory (expand-file-name dd)))) | ||
| 52 | ;; Go there. | ||
| 53 | (setq command (concat (concat "cd " dd ";" command)))) | ||
| 54 | ;; Run the command itself. | ||
| 55 | (ede-shell-run-command command) | ||
| 56 | )) | ||
| 57 | |||
| 58 | (defun ede-shell-run-command (command) | ||
| 59 | "Run the COMMAND in the current shell-buffer." | ||
| 60 | (require 'comint) | ||
| 61 | ;; go to end | ||
| 62 | (goto-char (point-max)) | ||
| 63 | ;; Insert the stuff. | ||
| 64 | (goto-char (point-max)) | ||
| 65 | (insert command) | ||
| 66 | ;; Send the command. | ||
| 67 | (comint-send-input) | ||
| 68 | ) | ||
| 69 | |||
| 70 | (defmethod ede-shell-buffer ((target ede-target)) | ||
| 71 | "Get the buffer for running shell commands for TARGET." | ||
| 72 | (let ((name (ede-name target))) | ||
| 73 | (get-buffer-create (format "*EDE Shell %s" name)))) | ||
| 74 | |||
| 75 | (provide 'ede/shell) | ||
| 76 | |||
| 77 | ;; Local variables: | ||
| 78 | ;; generated-autoload-file: "loaddefs.el" | ||
| 79 | ;; generated-autoload-feature: ede/loaddefs | ||
| 80 | ;; generated-autoload-load-name: "ede/shell" | ||
| 81 | ;; End: | ||
| 82 | |||
| 83 | ;;; ede/shell.el ends here | ||
diff --git a/lisp/cedet/ede/speedbar.el b/lisp/cedet/ede/speedbar.el index 93bb50137c7..cc54128a097 100644 --- a/lisp/cedet/ede/speedbar.el +++ b/lisp/cedet/ede/speedbar.el | |||
| @@ -27,6 +27,8 @@ | |||
| 27 | ;; | 27 | ;; |
| 28 | 28 | ||
| 29 | ;;; Code: | 29 | ;;; Code: |
| 30 | |||
| 31 | (eval-when-compile (require 'cl)) | ||
| 30 | (require 'speedbar) | 32 | (require 'speedbar) |
| 31 | (require 'eieio-speedbar) | 33 | (require 'eieio-speedbar) |
| 32 | (require 'ede) | 34 | (require 'ede) |
diff --git a/lisp/cedet/inversion.el b/lisp/cedet/inversion.el index 271f3d0d2fe..d7e4417d23d 100644 --- a/lisp/cedet/inversion.el +++ b/lisp/cedet/inversion.el | |||
| @@ -80,10 +80,10 @@ | |||
| 80 | 80 | ||
| 81 | (defconst inversion-decoders | 81 | (defconst inversion-decoders |
| 82 | '( | 82 | '( |
| 83 | (alpha "^\\([0-9]+\\)\\.\\([0-9]+\\)\\s-*alpha\\([0-9]+\\)?$" 3) | 83 | (alpha "^\\([0-9]+\\)\\.\\([0-9]+\\)\\s-*\\.?alpha\\([0-9]+\\)?$" 3) |
| 84 | (beta "^\\([0-9]+\\)\\.\\([0-9]+\\)\\s-*beta\\([0-9]+\\)?$" 3) | 84 | (beta "^\\([0-9]+\\)\\.\\([0-9]+\\)\\s-*\\.?beta\\([0-9]+\\)?$" 3) |
| 85 | (beta "^\\([0-9]+\\)\\.\\([0-9]+\\)\\s-*(beta\\([0-9]+\\)?)" 3) | 85 | (beta "^\\([0-9]+\\)\\.\\([0-9]+\\)\\s-*(beta\\([0-9]+\\)?)" 3) |
| 86 | (prerelease "^\\([0-9]+\\)\\.\\([0-9]+\\)\\s-*pre\\([0-9]+\\)?$" 3) | 86 | (prerelease "^\\([0-9]+\\)\\.\\([0-9]+\\)\\s-*\\.?pre\\([0-9]+\\)?$" 3) |
| 87 | (full "^\\([0-9]+\\)\\.\\([0-9]+\\)$" 2) | 87 | (full "^\\([0-9]+\\)\\.\\([0-9]+\\)$" 2) |
| 88 | (fullsingle "^\\([0-9]+\\)$" 1) | 88 | (fullsingle "^\\([0-9]+\\)$" 1) |
| 89 | (patch "^\\([0-9]+\\)\\.\\([0-9]+\\) (patch \\([0-9]+\\))" 3) | 89 | (patch "^\\([0-9]+\\)\\.\\([0-9]+\\) (patch \\([0-9]+\\))" 3) |
diff --git a/lisp/cedet/semantic/analyze.el b/lisp/cedet/semantic/analyze.el index 98c0665f842..a4d5664f226 100644 --- a/lisp/cedet/semantic/analyze.el +++ b/lisp/cedet/semantic/analyze.el | |||
| @@ -64,6 +64,7 @@ | |||
| 64 | ;; constant. These need to be returned as there would be no | 64 | ;; constant. These need to be returned as there would be no |
| 65 | ;; other possible completions. | 65 | ;; other possible completions. |
| 66 | 66 | ||
| 67 | (eval-when-compile (require 'cl)) | ||
| 67 | (require 'semantic) | 68 | (require 'semantic) |
| 68 | (require 'semantic/format) | 69 | (require 'semantic/format) |
| 69 | (require 'semantic/ctxt) | 70 | (require 'semantic/ctxt) |
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el index 6744e2cd336..154defb417a 100644 --- a/lisp/cedet/semantic/complete.el +++ b/lisp/cedet/semantic/complete.el | |||
| @@ -107,6 +107,7 @@ | |||
| 107 | ;; `semantic-complete-inline-tag-engine' will complete text in | 107 | ;; `semantic-complete-inline-tag-engine' will complete text in |
| 108 | ;; a buffer. | 108 | ;; a buffer. |
| 109 | 109 | ||
| 110 | (eval-when-compile (require 'cl)) | ||
| 110 | (require 'semantic) | 111 | (require 'semantic) |
| 111 | (require 'eieio-opt) | 112 | (require 'eieio-opt) |
| 112 | (require 'semantic/analyze) | 113 | (require 'semantic/analyze) |
diff --git a/lisp/cedet/semantic/debug.el b/lisp/cedet/semantic/debug.el index 6d88e9962a8..ac8b4b1314e 100644 --- a/lisp/cedet/semantic/debug.el +++ b/lisp/cedet/semantic/debug.el | |||
| @@ -36,6 +36,7 @@ | |||
| 36 | ;; Each parser must implement the interface and override any methods as needed. | 36 | ;; Each parser must implement the interface and override any methods as needed. |
| 37 | ;; | 37 | ;; |
| 38 | 38 | ||
| 39 | (eval-when-compile (require 'cl)) | ||
| 39 | (require 'semantic) | 40 | (require 'semantic) |
| 40 | (require 'eieio) | 41 | (require 'eieio) |
| 41 | (eval-when-compile (require 'semantic/find)) | 42 | (eval-when-compile (require 'semantic/find)) |
diff --git a/lisp/cedet/semantic/idle.el b/lisp/cedet/semantic/idle.el index 83ac3b27e7d..45f804b62a7 100644 --- a/lisp/cedet/semantic/idle.el +++ b/lisp/cedet/semantic/idle.el | |||
| @@ -905,7 +905,7 @@ Call `semantic-symref-hits-in-region' to identify local references." | |||
| 905 | target (lambda (start end prefix) | 905 | target (lambda (start end prefix) |
| 906 | (when (/= start (car Hbounds)) | 906 | (when (/= start (car Hbounds)) |
| 907 | (pulse-momentary-highlight-region | 907 | (pulse-momentary-highlight-region |
| 908 | start end)) | 908 | start end semantic-idle-summary-highlight-face)) |
| 909 | (semantic-throw-on-input 'symref-highlight) | 909 | (semantic-throw-on-input 'symref-highlight) |
| 910 | ) | 910 | ) |
| 911 | (semantic-tag-start tag) | 911 | (semantic-tag-start tag) |
diff --git a/lisp/cedet/semantic/mru-bookmark.el b/lisp/cedet/semantic/mru-bookmark.el index d57aa194b98..da508a67553 100644 --- a/lisp/cedet/semantic/mru-bookmark.el +++ b/lisp/cedet/semantic/mru-bookmark.el | |||
| @@ -45,6 +45,7 @@ | |||
| 45 | 45 | ||
| 46 | ;;; Code: | 46 | ;;; Code: |
| 47 | 47 | ||
| 48 | (eval-when-compile (require 'cl)) | ||
| 48 | (require 'semantic) | 49 | (require 'semantic) |
| 49 | (require 'eieio-base) | 50 | (require 'eieio-base) |
| 50 | (require 'ring) | 51 | (require 'ring) |
diff --git a/lisp/cedet/semantic/scope.el b/lisp/cedet/semantic/scope.el index 99d410a6b3e..b7833e30a5f 100644 --- a/lisp/cedet/semantic/scope.el +++ b/lisp/cedet/semantic/scope.el | |||
| @@ -602,28 +602,29 @@ whose tags can be searched when needed, OR it may be a scope object." | |||
| 602 | ;; for recycling later? Should this become a helpful | 602 | ;; for recycling later? Should this become a helpful |
| 603 | ;; extra routine? | 603 | ;; extra routine? |
| 604 | (when (and parents (semantic-tag-with-position-p type)) | 604 | (when (and parents (semantic-tag-with-position-p type)) |
| 605 | ;; If TYPE has a position, go there and get the scope. | 605 | (save-excursion |
| 606 | (semantic-go-to-tag type) | 606 | ;; If TYPE has a position, go there and get the scope. |
| 607 | 607 | (semantic-go-to-tag type) | |
| 608 | ;; We need to make a mini scope, and only include the misc bits | 608 | |
| 609 | ;; that will help in finding the parent. We don't really need | 609 | ;; We need to make a mini scope, and only include the misc bits |
| 610 | ;; to do any of the stuff related to variables and what-not. | 610 | ;; that will help in finding the parent. We don't really need |
| 611 | (setq tmpscope (semantic-scope-cache "mini")) | 611 | ;; to do any of the stuff related to variables and what-not. |
| 612 | (let* (;; Step 1: | 612 | (setq tmpscope (semantic-scope-cache "mini")) |
| 613 | (scopetypes (semantic-analyze-scoped-types (point))) | 613 | (let* ( ;; Step 1: |
| 614 | (parents (semantic-analyze-scope-nested-tags (point) scopetypes)) | 614 | (scopetypes (semantic-analyze-scoped-types (point))) |
| 615 | ;;(parentinherited (semantic-analyze-scope-lineage-tags parents scopetypes)) | 615 | (parents (semantic-analyze-scope-nested-tags (point) scopetypes)) |
| 616 | (lscope nil) | 616 | ;;(parentinherited (semantic-analyze-scope-lineage-tags parents scopetypes)) |
| 617 | ) | 617 | (lscope nil) |
| 618 | (oset tmpscope scopetypes scopetypes) | 618 | ) |
| 619 | (oset tmpscope parents parents) | 619 | (oset tmpscope scopetypes scopetypes) |
| 620 | ;;(oset tmpscope parentinheritance parentinherited) | 620 | (oset tmpscope parents parents) |
| 621 | 621 | ;;(oset tmpscope parentinheritance parentinherited) | |
| 622 | (when (or scopetypes parents) | 622 | |
| 623 | (setq lscope (semantic-analyze-scoped-tags scopetypes tmpscope)) | 623 | (when (or scopetypes parents) |
| 624 | (oset tmpscope scope lscope)) | 624 | (setq lscope (semantic-analyze-scoped-tags scopetypes tmpscope)) |
| 625 | (oset tmpscope fullscope (append scopetypes lscope parents)) | 625 | (oset tmpscope scope lscope)) |
| 626 | )) | 626 | (oset tmpscope fullscope (append scopetypes lscope parents)) |
| 627 | ))) | ||
| 627 | ;; END creating tmpscope | 628 | ;; END creating tmpscope |
| 628 | 629 | ||
| 629 | ;; Look up each parent one at a time. | 630 | ;; Look up each parent one at a time. |
diff --git a/lisp/cedet/srecode/compile.el b/lisp/cedet/srecode/compile.el index 626d8c8d0d0..0e7dfe7d34b 100644 --- a/lisp/cedet/srecode/compile.el +++ b/lisp/cedet/srecode/compile.el | |||
| @@ -31,6 +31,7 @@ | |||
| 31 | ;; The output are a series of EIEIO objects which represent the | 31 | ;; The output are a series of EIEIO objects which represent the |
| 32 | ;; templates in a way that could be inserted later. | 32 | ;; templates in a way that could be inserted later. |
| 33 | 33 | ||
| 34 | (eval-when-compile (require 'cl)) | ||
| 34 | (require 'semantic) | 35 | (require 'semantic) |
| 35 | (require 'eieio) | 36 | (require 'eieio) |
| 36 | (require 'eieio-base) | 37 | (require 'eieio-base) |
diff --git a/lisp/cedet/srecode/dictionary.el b/lisp/cedet/srecode/dictionary.el index 76d6181349c..4536a3e8478 100644 --- a/lisp/cedet/srecode/dictionary.el +++ b/lisp/cedet/srecode/dictionary.el | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | 28 | ||
| 29 | ;;; CLASSES | 29 | ;;; CLASSES |
| 30 | 30 | ||
| 31 | (eval-when-compile (require 'cl)) | ||
| 31 | (require 'eieio) | 32 | (require 'eieio) |
| 32 | (require 'srecode) | 33 | (require 'srecode) |
| 33 | (require 'srecode/table) | 34 | (require 'srecode/table) |
diff --git a/lisp/cedet/srecode/srt.el b/lisp/cedet/srecode/srt.el index 045c55bd04f..41d8d8dbe38 100644 --- a/lisp/cedet/srecode/srt.el +++ b/lisp/cedet/srecode/srt.el | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | 25 | ||
| 26 | ;;; Code: | 26 | ;;; Code: |
| 27 | 27 | ||
| 28 | (eval-when-compile (require 'cl)) | ||
| 28 | (require 'eieio) | 29 | (require 'eieio) |
| 29 | (require 'srecode/dictionary) | 30 | (require 'srecode/dictionary) |
| 30 | (require 'srecode/insert) | 31 | (require 'srecode/insert) |
diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el index b530131e72b..f624714f8a6 100644 --- a/lisp/emacs-lisp/eieio-base.el +++ b/lisp/emacs-lisp/eieio-base.el | |||
| @@ -273,7 +273,11 @@ instance." | |||
| 273 | (eieio-persistent-path-relative this file) | 273 | (eieio-persistent-path-relative this file) |
| 274 | (file-name-nondirectory cfn))) | 274 | (file-name-nondirectory cfn))) |
| 275 | (object-write this (oref this file-header-line))) | 275 | (object-write this (oref this file-header-line))) |
| 276 | (let ((backup-inhibited (not (oref this do-backups)))) | 276 | (let ((backup-inhibited (not (oref this do-backups))) |
| 277 | (cs (car (find-coding-systems-region | ||
| 278 | (point-min) (point-max))))) | ||
| 279 | (unless (eq cs 'undecided) | ||
| 280 | (setq buffer-file-coding-system cs)) | ||
| 277 | ;; Old way - write file. Leaves message behind. | 281 | ;; Old way - write file. Leaves message behind. |
| 278 | ;;(write-file cfn nil) | 282 | ;;(write-file cfn nil) |
| 279 | 283 | ||