Initial Commit
[temp.git] / site-lisp / cedet-1.0pre4 / ecb-2.32 / html-help / Conflicts.html
blob8e48dfe0cb0f4ac617d258e4b50895eb492986a6
1 <html lang="en">
2 <head>
3 <title>ECB - the Emacs Code Browser</title>
4 <meta http-equiv="Content-Type" content="text/html">
5 <meta name=description content="ECB - the Emacs Code Browser">
6 <meta name=generator content="makeinfo 4.2">
7 <link href="http://www.gnu.org/software/texinfo/" rel=generator-home>
8 </head>
9 <body>
10 <p>
11 Node:<a name="Conflicts">Conflicts</a>,
12 Next:<a rel=next accesskey=n href="Bugs.html#Bugs">Bugs</a>,
13 Previous:<a rel=previous accesskey=p href="Conflicts-and-bugs.html#Conflicts%20and%20bugs">Conflicts and bugs</a>,
14 Up:<a rel=up accesskey=u href="Conflicts-and-bugs.html#Conflicts%20and%20bugs">Conflicts and bugs</a>
15 <hr><br>
17 <h3>Conflicts with other packages</h3>
19 <p>This chapter contains a list of already known conflict between ECB and
20 other packages and how to solve them - in most cases ECB already
21 contains a suitable workaround.
23 <p>That is followed by a general recipe what you can do when you have
24 detected a conflict between ECB and a package is not listed in the
25 know-conflicts-section.
27 <h4>Proved workarounds or recommendations for other packages</h4>
29 <p>Here is a list of packages which are proved to work properly with ECB
30 and if not (i.e. there are conflicts) then helpful
31 solutions/hints/workarounds are offered:
33 <h5>Package bs.el</h5>
35 <p>The package bs.el offers a nifty buffer-selection buffer. The main
36 command of this package is <code>bs-show</code>. With ECB &lt; 2.20 this
37 command does not really working well within activated ECB. But as of
38 version 2.20 of ECB there should be no problems using this package.
40 <p>If you add "*buffer-selection*" as buffer-name to the option
41 <code>ecb-compilation-buffer-names</code> then ECB will always display the
42 buffer-selection buffer of bs in the compile-window (if there is one).
43 Otherwise bs will use the edit-area to do its job.
45 <h5>Package BBDB</h5>
47 <p>As of ECB 2.21 there should be no conflicts between BBDB and ECB, so
48 BBDB can be used even when the ECB-windows are visible.
50 <p>But if you encounter problems then it is recommened to use one of the
51 window-managers escreen.el or winring.el (see <a href="Window-managers-and-ECB.html#Window-managers%20and%20ECB">Window-managers and ECB</a>). With such a window-manager ECB and BBDB should work together
52 very well under all circumstances!
54 <h5>Package calendar.el</h5>
56 <p>With activated ECB <code>calendar</code> does not shrink it´s window to the small
57 size but splits the window equally. But if you add this to your
58 <code>.emacs</code> it works:
60 <br><pre>(add-hook 'initial-calendar-window-hook
61 (function (lambda ()
62 (when (and ecb-minor-mode
63 (ecb-point-in-edit-window))
64 ;; if no horizontal split then nothing
65 ;; special to do
66 (or (= (frame-width) (window-width))
67 (shrink-window (- (window-height) 9))))
68 )))
69 </pre>
71 <h5>Package cygwin-mount.el</h5>
73 <p>There can be a conflict between ECB and cygwin-mount.el if the
74 following conditions are true:
76 <ul>
77 <li>You are working with cygwin-mount.el (sounds clear :-)
78 <li>You have set <code>cygwin-mount-build-mount-table-asynch</code> to not
79 nil
80 <li>ECB is automatically started after starting Emacs (e.g. with
81 <code>ecb-auto-activate</code> or calling <code>ecb-activate</code> in
82 <code>window-setup-hook</code>)
83 <li>Your Emacs-setup contains a call of <code>cygwin-mount-activate</code>.
84 </ul>
86 <p>Under these circumstances Emacs 21.X sometimes eats up the whole CPU (at
87 least with Windows XP) and the cygwin-mount-table is never build.
89 <p>But there is an easy work-around: Call <code>cygwin-mount-activate</code>
90 first *AFTER* ECB is activated. This can be done with the hook
91 <code>ecb-activate-hook</code>:
93 <br><pre>(add-hook 'ecb-activate-hook
94 (function (lambda ()
95 (require 'cygwin-mount)
96 (setq cygwin-mount-build-mount-table-asynch t)
97 (cygwin-mount-activate))))
98 </pre>
100 <h5>Package desktop.el</h5>
102 <p>ECB works perfectly with the desktop-saver desktop.el. But to ensure
103 this the option <code>desktop-minor-mode-table</code> <strong>MUST</strong> contain
104 the following entry:
106 <br><pre>(ecb-minor-mode nil)
107 </pre>
109 <p>Without this entry desktop.el tries for each buffer it loads after
110 Emacs-start to enable <code>ecb-minor-mode</code> and therefore to start
111 ECB. This conflicts with ECB! Therefore you must add the entry above
112 to <code>desktop-minor-mode-table</code>!
114 <p>Further it is strongly recommended to add entries for all the
115 minor-mode of the semantic-package to <code>desktop-minor-mode-table</code>,
116 so for example add also:
118 <br><pre>(semantic-show-unmatched-syntax-mode nil)
119 (semantic-stickyfunc-mode nil)
120 (senator-minor-mode nil)
121 (semantic-idle-scheduler-mode nil)
122 </pre>
124 <p>Which modes you have to add depends on which modes of semantic you
125 use. But to get sure you should add all minor-modes of the
126 semantic-package because these modes are normally activated by the
127 related "global" command (e.g.
128 <code>global-semantic-show-unmatched-syntax-mode</code>) or by adding the
129 minor-mode to the related major-mode-hook.
131 <p>It has also been reported that just disabling the Tip-Of-The-Day
132 (option: <code>ecb-tip-of-the-day</code>) fixes the compatibility-problems
133 with desktop.el. Just try it out!
135 <h5>Package edebug (Lisp Debugger)</h5>
137 <p>It is strongly recommended to run edebug only when the ECB-windows are
138 hidden. With visible ECB-windows there will probably serious conflicts
139 between the ECB-layout and the edebug-window-manager.
141 <h5>Package ediff.el</h5>
143 <p>In most cases ECB works very well with ediff (see option
144 <code>ecb-run-ediff-in-ecb-frame</code>). But currently suspending ediff
145 with <code>ediff-suspend</code> and restoring the ediff-session (e.g. with
146 command <code>eregistry</code>) does confuse the window-management of ECB.
148 <p>If you often use ediff in a scenario where you suspend ediff and
149 reactivate it later then it is recommended to exit ECB first
150 (<code>ecb-deactivate</code> or <code>ecb-minor-mode</code>)!
152 <h5>Package func-menu.el</h5>
154 <p>This package has been reported to produce some conflicts under some
155 circumstances when ECB is activated. Some of them could be reproduced
156 by the ECB-maintainer. So the recommendation is to disable
157 func-menu-support when using ECB. Normally using func-menu makes no
158 sense in combination with ECB because ECB provides the same and even
159 more informations as func-menu - so func-menu is redundant ;-)
161 <h5>Package Gnus (Newsreader)</h5>
163 <p>As of ECB 2.21 there should be no conflicts between Gnus and ECB, so
164 Gnus can be used even when the ECB-windows are visible.
166 <p>But if you encounter problems then it is recommened to use one of the
167 window-managers escreen.el or winring.el (see <a href="Window-managers-and-ECB.html#Window-managers%20and%20ECB">Window-managers and ECB</a>). With such a window-manager ECB and Gnus should work together
168 very well under all circumstances!
170 <h5>Package JDEE (Java Development Environment)</h5>
172 <p>JDEE has a lot of "dialogs" where the user can select among several
173 choices. An example is importing classes via the command
174 <code>jde-import-find-and-import</code>. These dialogs are strongly designed
175 to work in an environment where a new temporary window is created, the
176 contents of the dialog are displayed in the new window, the user
177 select his choice and hits [OK]. After that the new window is deleted
178 and the selection is performed (for example the chosen import
179 statement are inserted in the source-buffer.
181 <p><strong>Caution</strong>: ECB can work very well with this dialogs but only if
182 the buffer-name of these dialog-buffers (normally "Dialog") is not
183 contained in the option <code>ecb-compilation-buffer-names</code>. So do not
184 add the string "Dialog" to this option!
186 <p><strong>Please Note</strong>: Regardless if a persistent compile-window is used
187 (i.e. <code>ecb-compile-window-height</code> is not nil) or not, these
188 JDEE-dialogs will always being displayed by splitting the edit-window
189 of ECB and not within the compile-window.
191 <h5>Package scroll-all.el (scroll-all-mode)</h5>
193 <p>ECB advices <code>scroll-all-mode</code> so it is working correct during
194 running ECB. This means if point stays in an edit-window and the
195 edit-window is splitted then all edit-windows are scrolled by
196 <code>scroll-all-mode</code> and no other window! If point stays in any
197 other window just this selected window is scrolled. This is the only
198 senseful behavior of <code>scroll-all-mode</code> with ECB.
200 <h5>Package VC (Version Control)</h5>
202 <p>The variable <code>vc-delete-logbuf-window</code> must be set to nil during
203 active ECB. This can be done with the hooks mentioned in <a href="Elisp-programming.html#Elisp%20programming">Elisp programming</a>.
205 <h5>Package VM (Emacs Mail-Client)</h5>
207 <p>As of ECB 2.21 there should be no conflicts between VM and ECB, so
208 VM can be used even when the ECB-windows are visible.
210 <p>But if you encounter problems then it is recommened to use one of the
211 window-managers escreen.el or winring.el (see <a href="Window-managers-and-ECB.html#Window-managers%20and%20ECB">Window-managers and ECB</a>). With such a window-manager ECB and VM should work together very
212 well under all circumstances!
214 <h5>Package winner.el (winner-mode)</h5>
216 <p><code>winner-mode</code> is autom. disabled as long as ECB is running. ECB
217 has its own window-management which is completely incompatible with
218 <code>winner-mode</code>! But <code>winner-mode</code> makes also not really sense
219 with ECB.
221 <h5>Package wb-line-number.el</h5>
223 <p>Do not use the package wb-line-number.el in combination with ECB - it
224 will not work and it will not work under any circumstances and there
225 is no way to make it work together and there will be no way in the
226 future!
228 <p>The reason behind that is: wb-line-number.el uses additional dedicated
229 windows to display the line-numbers. And ECB can not work if there
230 there are additional dedicated windows - additional to that ones
231 created by ECB.
233 <h5>Application xrefactory</h5>
235 <p>Xrefactory (also known as Xref, X-ref and Xref-Speller), the
236 refactoring browser for (X)Emacs<a rel=footnote href="#fn-1"><sup>1</sup></a>, can be used during running ECB regardless if the ECB-windows are
237 visible or not. There should be no conflicts as of ECB versions &gt;=
238 2.21.
240 <p>If there are conflicts with the Xref-browser then the most recommended
241 way is to use one of the window-manager escreen.el or winring.el (and
242 then use different escreens or window-configurations for ECB and
243 Xrefactory-browsing - <a href="Window-managers-and-ECB.html#Window-managers%20and%20ECB">Window-managers and ECB</a>).
245 <h4>What to do for unknown conflicts with other packages</h4>
247 <p>As of version 2.20 the layout-engine of ECB is so flexible that
248 normally there should be no conflicts with other packages unless these
249 packages have their own complete window-layout-management (e.g. Gnus,
250 BBDB, Xrefactory). But these packages can and should be handled very
251 well with the window-manager-support of ECB (see <a href="Window-managers-and-ECB.html#Window-managers%20and%20ECB">Window-managers and ECB</a>).
253 <p>So if you detect an unknown (i.e. not listed in the conflicts-list in
254 the next subsection) conflict with a small package and some of its
255 commands and you have installed an ECB-version &lt; 2.20 the first task
256 you have to do is to upgrade to a version &gt;= 2.20!
258 <p>If this doesn't solve the problem a very probable reason for the
259 conflict is that the command fails if called from another window than
260 an edit-window of the ecb-frame. So please check if the problem
261 disappears if you call the failing command from an edit-window of ECB.
262 If this is true then you you can add the following code to your
263 .emacs (and of course replace the XXX with the failing command):
265 <br><pre>(defadvice XXX (before ecb activate)
266 "Ensures `XXX' works well when called from another window
267 as an edit-window. Does nothing if called in another frame
268 as the `ecb-frame'."
269 (when (equal (selected-frame) ecb-frame)
270 (unless (ecb-point-in-edit-window)
271 (ecb-select-edit-window))))
272 </pre>
274 <p>This before-advice runs before the command XXX and ensures that the
275 XXX is called from within an edit-window if the current selected
276 window is not an edit-window. It does nothing if called for another
277 frame as the ecb-frame.
279 <p>If such an advice solves the problem then please send a note with the
280 solution to the ECB-mailing-list or direct to the ECB-maintainer so
281 the solution can be integrated in the next ECB-release
283 <p>If calling from an edit-window fails too then please file a complete
284 bug-report to the ECB-mailing-list (see <a href="Submitting-problem-report.html#Submitting%20problem%20report">Submitting problem report</a>). This report should contain a detailed description which
285 command of which package fails under which circumstances!
287 <hr><h4>Footnotes</h4>
288 <ol type="1">
289 <li><a name="fn-1"></a>
290 <p>Xrefactory is available at
291 <a href="http://www.xref-tech.com">http://www.xref-tech.com</a>
292 </p>
294 </ol><hr>
296 </body></html>