annotate etc/CODING-STANDARDS @ 558:ed498ef2108b

[xemacs-hg @ 2001-05-23 09:59:33 by ben] xemacs.mak: call `ver' to get the exact os version and put it in the installation; suggestion from adrian. behavior-defs.el: Add scroll-in-place, jka-compr, efs, fix up some things. pop.c: Remove BROKEN_CYGWIN. etc\sample.init.el: Rewrite to be much more careful about loading features -- now it decays gracefully even in the complete absence of packages. Also avoid doing obnoxious things when loading efs. configure.in: add some support for eventually turning on file coding by default. Fix numerous places where AC_MSG_WARN had quotes around its arg, which is bad. Replace with []. Same for AC_MSG_ERROR. s\cygwin32.h, s\mingw32.h: remove support for way old beta versions of cygwin. don't put -Wno-sign-compare in the system switches; this isn't a system issue. define BROKEN_SIGIO for cygwin to get C-g support. device-msw.c: signal an error rather than crash with an unavailable network printer (from Mike Alexander). event-msw.c: cleanup headers. fix (hopefully) an error with data corruption when sending to a network connection. fileio.c: Fix evil code that attempts to handle the ~user prefix by (a) always assuming we're referencing ourselves and not even verifying the user -- hence any file with a tilde as its first char is invalid! (b) if there wasn't a slash following the filename, the pointer was set *past* the end of file and we started reading from uninitialized memory. Now we simply treat these as files, always. optionally for 21.4 (doc fix): lread.c: cambia de pas_de_lache_ici -- al minimo usa la palabra certa. frame.c: fix warnings. emacs.c, nt.c, ntproc.c, process-nt.c, realpath.c, unexnt.c: rename MAX_PATH to standard PATH_MAX. process-nt.c, realpath.c: cleanup headers. process-unix.c, sysdep.c, systime.h, syswindows.h: kill BROKEN_CYGWIN and support for way old beta versions of cygwin. sysfile.h: use _MAX_PATH (Windows) preferentially for PATH_MAX if defined. include io.h on Cygwin (we need get_osfhandle()). include sys/fcntl.h always, since we were including it in various header files anyway. unexcw.c: fix up style to conform to standard. remove duplicate definition of PERROR. buffer.c: comment change. database.c, debug.h, device-tty.c, dired-msw.c, glyphs-msw.c: header cleanups (remove places that directly include a system header file, because we have our own layer to do this more cleanly and portably); indentation fixes.
author ben
date Wed, 23 May 2001 09:59:48 +0000
parents 376386a54a3c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 XEMACS CODING STANDARDS
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 Ben Wing
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 Copyright (c) 1996 Ben Wing.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 This file documents the coding standards used in the XEmacs source
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 code. Note that XEmacs follows the GNU coding standards, which are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 documented separately in ../man/standards.texi. This file only
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 documents standards that are not included in that document; typically
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 this consists of standards that are specifically relevant to the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 XEmacs code itself.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 First, a recap of the GNU standards:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 -- Put a space after every comma.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 -- Put a space before the parenthesis that begins a function call,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 macro call, function declaration or definition, or control
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 statement (if, while, switch, for). (DO NOT do this for macro
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 definitions; this is invalid preprocessor syntax.)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25 -- The brace that begins a control statement (if, while, for, switch,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 do) or a function definition should go on a line by itself.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 -- In function definitions, put the return type and all other
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 qualifiers on a line before the function name. Thus, the function
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 name is always at the beginning of a line.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30 -- Indentation level is two spaces. (However, the first and following
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31 statements of a while/for/if/etc. block are indented four spaces
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 from the while/for/if keyword. The opening and closing braces are
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 indented two spaces.)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34 -- Variable and function names should be all lowercase, with underscores
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 separating words, except for a prefixing tag, which may be in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 uppercase. Do not use the mixed-case convention (e.g.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 SetVariableToValue ()) and *especially* do not use Microsoft
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 Hungarian notation (char **rgszRedundantTag).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 -- preprocessor and enum constants should be all uppercase, and should
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 be prefixed with a tag that groups related constants together.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 Now, the XEmacs coding standards:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 **** Specially-prefixed functions/variables:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 -- All global C variables whose value is constant and is a symbol begin
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 with a capital Q, e.g. Qkey_press_event. (The type will always be
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 Lisp_Object.)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 -- All other global C variables whose value is a Lisp_Object (this
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 includes variables that forward into Lisp variables plus others like
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 Vselected_console) begin with a capital V.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 -- No C variables whose value is other than a Lisp_Object should begin
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 with a capital V. (This includes C variables that forward into
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 integer or boolean Lisp variables.)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56 -- All global C variables whose value is a struct Lisp_Subr begin with a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 capital S. (This only occurs in connection with DEFUN ()).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 -- All C functions that are Lisp primitives begin with a capital F,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 and no others should begin this way.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 **** Functions for manipulating Lisp types:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 -- Any function that creates an empty or mostly empty Lisp object
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 should begin allocate_(). (*Not* make_().) (Except, of course,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 for Lisp primitives, which usually begin Fmake_()).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 -- Any function that converts a pointer into an equivalent Lisp_Object
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 should begin make_().
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 -- Any function that converts a Lisp_Object into its equivalent pointer
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69 and checks the type and validity of the object (e.g. making sure
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70 it's not dead) should begin decode_().
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 -- Any function that looks up a Lisp object (e.g. buffer, face) given
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 a symbol or string should begin get_(). (Except, of course, for
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 Lisp primitives, which usually begin Fget_()).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 **** Other:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77 -- Any header-file declarations of the sort
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 struct foobar;
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81 go into the "types" section of lisp.h.