Mercurial > hg > xemacs-beta
view nt/PROBLEMS @ 1292:f3437b56874d
[xemacs-hg @ 2003-02-13 09:57:04 by ben]
profile updates
profile.c: Major reworking. Keep track of new information -- total
function timing (includes descendants), GC usage, total GC usage
(includes descendants). New functions to be called appropriately
from eval.c, alloc.c to keep track of this information. Keep track
of when we're actually in a function vs. in its profile, for more
accurate timing counts. Track profile overhead separately. Create
new mechanism for specifying "internal sections" that are tracked
just like regular Lisp functions and even appear in the backtrace
if `backtrace-with-internal-sections' is non-nil (t by default
for error-checking builds). Add some KKCC information for the
straight (non-Elisp) hash table used by profile, which contains
Lisp objects in its keys -- but not used yet. Remove old ad-hoc
methods for tracking garbage collection, redisplay (which was
incorrect anyway when Lisp was called within these sections).
Don't record any tick info when blocking under MS Windows, since
the timer there is in real time rather than in process time.
Make `start-profiling', `stop-profiling' interactive. Be consistent
wrt. recursive functions and functions currently on the stack when
starting or stopping -- together these make implementing the
`total' values extremely difficult. When we start profiling, we
act as if we just entered all the functions currently on the stack.
Likewise when exiting. Create vars in_profile for tracking
time spent inside of profiling, and profiling_lock for setting
exclusive access to the main hash table when reading from it or
modifying it. (protects against getting screwed up by the signal
handle going off at the same time.
profile.h: New file.
Create macros for declaring internal profiling sections.
lisp.h: Move profile-related stuff to profile.h.
alloc.c: Keep track of total consing, for profile.
Tell profile when we are consing.
Use new profile-section method for noting garbage-collection.
alloc.c: Abort if we attempt to call the allocator reentrantly.
backtrace.h, eval.c: Add info for use by profile in the backtrace frame and transfer
PUSH_BACKTRACE/POP_BACKTRACE from eval.c, for use with profile.
elhash.c: Author comment.
eval.c, lisp.h: New Lisp var `backtrace-with-internal-sections'. Set to t when
error-checking is on.
eval.c: When unwinding,
eval.c: Report to profile when we are about-to-call and just-called wrt. a
function.
alloc.c, eval.c: Allow for "fake" backtrace frames, for internal sections (used by
profile and `backtrace-with-internal-sections'.
event-Xt.c, event-gtk.c, event-msw.c, event-tty.c: Record when we are actually blocking on an event, for profile's sake.
event-stream.c: Record internal profiling sections for getting, dispatching events.
extents.c: Record internal profiling sections for map_extents.
hash.c, hash.h: Add pregrow_hash_table_if_necessary(). (Used in profile code
since the signal handler is the main grower but can't allow
a realloc(). We make sure, at critical points, that the table
is large enough.)
lread.c: Create internal profiling sections for `load' (which may be triggered
internally by autoload, etc.).
redisplay.c: Remove old profile_redisplay_flag. Use new macros to declare
internal profiling section for redisplay.
text.c: Use new macros to declare internal profiling sections for
char-byte conversion and internal-external conversion.
SEMI-UNRELATED CHANGES:
-----------------------
text.c: Update the long comments.
author | ben |
---|---|
date | Thu, 13 Feb 2003 09:57:08 +0000 |
parents | abe6d1db359e |
children |
line wrap: on
line source
-*- mode:outline -*- This file describes various problems that have been encountered in running XEmacs on Windows 95, 98 and NT. It has been updated for XEmacs 21.0. This is the first release of XEmacs on Windows. In testing it has proved to be extremely stable in general use (but see the gnus and subprocess problems below), but not all features or packages work correctly yet. Use `C-c C-f' to move to the next equal level of outline, and `C-c C-b' to move to previous equal level. `C-h m' will give more info about the Outline mode. Also, Try finding the things you need using one of the search commands XEmacs provides (e.g. `C-s'). General advice: Remember your .emacs file! ~\.emacs is your Emacs init file. If you observe strange problems, invoke XEmacs with the `-q' option and see if you can repeat the problem. * Problems with running XEmacs ============================== ** Conflicts with FSF NTEmacs Depending on how it is installed, FSF NTEmacs may setup various EMACS* variables in your environment. The presence of these variables may cause XEmacs to fail at startup, cause you to see corrupted doc-strings, or cause other random problems. You should remove these variables from your environment. These variables are not required to run FSF NTEmacs if you start it by running emacs.bat. ** XEmacs can't find my .emacs file XEmacs looks for your .emacs in your "home" directory. XEmacs decides that your "home" directory is, in order of preference: - The value of the HOME environment variable, if the variable exists. - The value of the HOMEDRIVE and HOMEPATH environment variables, if these variables both exist. - The directory that XEmacs was started from. ** XEmacs can't find any packages XEmacs looks for your packages in subdirectories of a directory which is set at compile-time, and defaults to C:\Program Files\XEmacs. The variable configure-package-path holds the actual path that was compiled into your copy of XEmacs. The compile-time default location can be overridden by the EMACSPACKAGEPATH environment variable or by the SOFTWARE\GNU\XEmacs\EMACSPACKAGEPATH registry entry. You should check that these variables, if they exist, point to the actual location of your package tree. ** XEmacs sometimes crashes when using gnus This is a known bug in this release of XEmacs on Windows. If you want to use gnus anyway, you should minimize any possible data loss by saving any modified buffers before you start and ensuring that you haven't set gnus-use-dribble-file to nil or disabled the normal XEmacs auto-save mechanism. ** XEmacs doesn't die when shutting down Windows 95 or 98 When shutting down Windows 95 or 98 you may see a dialog that says "xemacs / You must quit this program before you quit Windows". It is safe to "Click OK to quit the program and Windows", but you won't be offered a chance to save any modified XEmacs buffers. * Look and feel =============== ** Key bindings The C-z, C-x, C-c, and C-v keystrokes have traditional uses in both emacs and Windows programs. XEmacs binds these keys to their traditional emacs uses, and provides Windows 3.x style bindings for the Cut, Copy and Paste functions. Function XEmacs binding -------- -------------- Undo C-_ Cut Sh-Del Copy C-Insert Paste Sh-Insert You can rebind keys to make XEmacs more Windows-compatible; for example, to bind C-z to undo: (global-set-key [(control z)] 'undo) Rebindind C-x and C-c is trickier because by default these are prefix keys in XEmacs. See the "Key Bindings" node in the XEmacs manual. ** Behavior of selected regions Selected regions behave differently in XEmacs from typical Windows programs. The pc-select package provides various functions to enable the standard Windows behavior for selected regions (eg mark via shift-arrow, self-inserting deletes region, etc). ** Limitations on the use of the AltGr key. In some locale and OS combinations you can't generate M-AltGr-key or C-M-AltGr-key sequences at all. To generate C-AltGr-key or C-M-AltGr-key sequences you must use the right-hand Control key and you must press it *after* AltGr. These limitations arise from fundamental problems in the way that the win32 API reports AltGr key events. There isn't anything that XEmacs can do to work round these problems that it isn't already doing. You may want to create alternative bindings if any of the standard XEmacs bindings require you to use some combination of Control or Meta and AltGr. * Features not fully supported in this release ============================================== ** Limited support for subprocesses Attempting to use call-process to run a 16bit program gives a "Spawning child process: Exec format error". For example shell-command fails under Windows 95 and 98 if you use command.com or any other 16bit program as your shell. XEmacs may incorrectly quote your call-process command if it contains double quotes, backslashes or spaces. start-process and functions that rely on it are supported under Windows 95, 98 and NT. However, starting a 16bit program that requires keyboard input may cause XEmacs to hang or crash under Windows 95 and 98, and will leave the orphaned 16bit program consuming all available CPU time. Sending signals to subprocesses started by call-process or by start-process fails with a "Cannot send signal to process" error under Windows 95 and 98. As a side effect of this, quitting XEmacs while it is still running subprocesses causes it to crash under Windows 95 and 98. ** Changing fonts from the Options menu The "Font" and "Size" entries on the Options menu don't work yet. This will be fixed in a future release. In the meantime, you can either change face fonts with customize or manually; for example: (set-face-font 'default "Lucida Console:Regular:10::Western") (set-face-font 'modeline "MS Sans Serif:Regular:10::Western") Font weight and style and character set must be supplied in English as above. Common weights and styles are "Regular", "Regular Italic", "Bold" and "Bold Italic". Common character sets are "Western", "Central European" and "OEM/DOS". Windows 95 only comes with one fixed-width font that is suitable for use by XEmacs, namely "Courier New". ** No MULE support This release of XEmacs on Windows does not contain MULE support. MULE support has not been a priority for the XEmacs on Windows developers. ** Printing This release of XEmacs on Windows does not support printing natively. You can use the lpr-command and lpr-switches variables to specify an external print program.