One reason to create a new buffer is to use it for making temporary
notes. If you try to save it, Emacs asks for the file name to use.
-The variable @code{default-major-mode} determines the new buffer's
-major mode; the default value is Fundamental mode. @xref{Major
+The default value of the variable @code{major-mode} determines the new
+buffer's major mode; the default value is Fundamental mode. @xref{Major
Modes}.
@kindex C-x @key{LEFT}
the left fringe, but no arrow bitmaps, use @code{((top . left)
(bottom . left))}.
-@vindex default-indicate-buffer-boundaries
- The value of the variable @code{default-indicate-buffer-boundaries}
-is the default value for @code{indicate-buffer-boundaries} in buffers
-that do not override it.
-
@node Useless Whitespace
@section Useless Whitespace
@code{magic-fallback-mode-alist} contains forms that check for image
files, HTML/XML/SGML files, and Postscript files.
-@vindex default-major-mode
When you visit a file that does not specify a major mode to use, or
-when you create a new buffer with @kbd{C-x b}, the variable
-@code{default-major-mode} specifies which major mode to use. Normally
+when you create a new buffer with @kbd{C-x b}, the default value of
+the variable @code{major-mode} specifies which major mode to use. Normally
its value is the symbol @code{fundamental-mode}, which specifies
-Fundamental mode. If @code{default-major-mode} is @code{nil}, the
-major mode is taken from the previously current buffer.
+Fundamental mode. If the default value of @code{major-mode} is @code{nil},
+the major mode is taken from the previously current buffer.
@findex normal-mode
If you change the major mode of a buffer, you can go back to the major
auto mode selection.
@vindex enable-multibyte-characters
-@vindex default-enable-multibyte-characters
@cindex environment variables, and non-@acronym{ASCII} characters
To turn off multibyte character support by default, start Emacs with
the @samp{--unibyte} option (@pxref{Initial Options}), or set the
-environment variable @env{EMACS_UNIBYTE}. You can also customize
-@code{enable-multibyte-characters} or, equivalently, directly set the
-variable @code{default-enable-multibyte-characters} to @code{nil} in
-your init file to have basically the same effect as @samp{--unibyte}.
+environment variable @env{EMACS_UNIBYTE}.
With @samp{--unibyte}, multibyte strings are not created during
initialization from the values of environment variables,
@file{/etc/passwd} entries etc., even if those contain
@xref{Mode Line}, for more details about this.
@findex toggle-enable-multibyte-characters
- To convert a unibyte session to a multibyte session, set
-@code{default-enable-multibyte-characters} to @code{t}. Buffers which
-were created in the unibyte session before you turn on multibyte
-support will stay unibyte. You can turn on multibyte support in a
-specific buffer by invoking the command
-@code{toggle-enable-multibyte-characters} in that buffer.
+You can turn on multibyte support in a specific buffer by invoking the
+command @code{toggle-enable-multibyte-characters} in that buffer.
@node Language Environments
@section Language Environments
An easy way to visit a file with no conversion is with the @kbd{M-x
find-file-literally} command. @xref{Visiting}.
-@vindex default-buffer-file-coding-system
- The variable @code{default-buffer-file-coding-system} specifies the
-choice of coding system to use when you create a new file. It applies
-when you find a new file, and when you create a buffer and then save it
-in a file. Selecting a language environment typically sets this
-variable to a good choice of default coding system for that language
+ The default value of the variable @code{buffer-file-coding-system}
+specifies the choice of coding system to use when you create a new file.
+It applies when you find a new file, and when you create a buffer and
+then save it in a file. Selecting a language environment typically sets
+this variable to a good choice of default coding system for that language
environment.
@kindex C-x RET r
search.
@vindex case-fold-search
-@vindex default-case-fold-search
If you set the variable @code{case-fold-search} to @code{nil}, then
all letters must match exactly, including case. This is a per-buffer
-variable; altering the variable affects only the current buffer, but
-there is a default value in @code{default-case-fold-search} that you
-can also set. @xref{Locals}. This variable applies to nonincremental
-searches also, including those performed by the replace commands
-(@pxref{Replace}) and the minibuffer history matching commands
-(@pxref{Minibuffer History}).
+variable; altering the variable normally affects only the current buffer,
+unless you change its default value. @xref{Locals}.
+This variable applies to nonincremental searches also, including those
+performed by the replace commands (@pxref{Replace}) and the minibuffer
+history matching commands (@pxref{Minibuffer History}).
Several related variables control case-sensitivity of searching and
matching for specific commands or activities. For instance,
@cindex Text Mode turned on
@smallexample
-(setq default-major-mode 'text-mode)
+(setq major-mode 'text-mode)
@end smallexample
@noindent
This line is a short, but complete Emacs Lisp expression.
We are already familiar with @code{setq}. It sets the following variable,
-@code{default-major-mode}, to the subsequent value, which is
-@code{text-mode}. The single quote mark before @code{text-mode} tells
-Emacs to deal directly with the @code{text-mode} variable, not with
-whatever it might stand for. @xref{set & setq, , Setting the Value of
-a Variable}, for a reminder of how @code{setq} works. The main point
-is that there is no difference between the procedure you use to set
-a value in your @file{.emacs} file and the procedure you use anywhere
-else in Emacs.
+@code{major-mode}, to the subsequent value, which is @code{text-mode}.
+The single quote mark before @code{text-mode} tells Emacs to deal directly
+with the @code{text-mode} symbol, not with whatever it might stand for.
+@xref{set & setq, , Setting the Value of a Variable},
+for a reminder of how @code{setq} works.
+The main point is that there is no difference between the procedure you
+use to set a value in your @file{.emacs} file and the procedure you use
+anywhere else in Emacs.
@need 800
Here is the next line:
This variable automatically becomes buffer-local when set in any fashion.
@end defopt
-@defvar default-abbrev-mode
-This is the value of @code{abbrev-mode} for buffers that do not
-override it. It is the same as @code{(default-value 'abbrev-mode)}.
-@end defvar
-
@node Abbrev Tables, Defining Abbrevs, Abbrev Mode, Abbrevs
@section Abbrev Tables
@end example
The major mode for a newly created buffer is set to Fundamental mode.
-(The variable @code{default-major-mode} is handled at a higher level;
-see @ref{Auto Major Mode}.) If the name begins with a space, the
+(The default value of the variable @code{major-mode} is handled at a higher
+level; see @ref{Auto Major Mode}.) If the name begins with a space, the
buffer initially disables undo information recording (@pxref{Undo}).
@end defun
@end group
@end example
-The major mode for the new buffer is set to Fundamental mode. The
-variable @code{default-major-mode} is handled at a higher level.
+The major mode for the new buffer is set to Fundamental mode. The default
+value of the variable @code{major-mode} is handled at a higher level.
@xref{Auto Major Mode}.
See the related function @code{generate-new-buffer-name} in @ref{Buffer
entire frame width).
@end defopt
-@defopt default-truncate-lines
-This variable is the default value for @code{truncate-lines}, for
-buffers that do not have buffer-local values for it.
-@end defopt
-
@defopt truncate-partial-width-windows
This variable controls line truncation in @dfn{partial-width} windows.
A partial-width window is one that does not occupy the entire frame
@vindex default-line-spacing
On graphical terminals, you can specify the line spacing for all
lines in a frame, using the @code{line-spacing} frame parameter
-(@pxref{Layout Parameters}). However, if the variable
-@code{default-line-spacing} is non-@code{nil}, it overrides the
+(@pxref{Layout Parameters}). However, if the default value of
+@code{line-spacing} is non-@code{nil}, it overrides the
frame's @code{line-spacing} parameter. An integer value specifies the
number of pixels put below lines. A floating point number specifies
the spacing relative to the frame's default line height.
fringe, and no arrow bitmaps, use @code{((top . left) (bottom . left))}.
@end defopt
-@defvar default-indicate-buffer-boundaries
-The value of this variable is the default value for
-@code{indicate-buffer-boundaries} in buffers that do not override it.
-@end defvar
-
@defvar fringe-indicator-alist
This buffer-local variable specifies the mapping from logical fringe
indicators to the actual bitmaps displayed in the window fringes.
When @code{fringe-indicator-alist} has a buffer-local value, and there
is no bitmap defined for a logical indicator, or the bitmap is
-@code{t}, the corresponding value from the (non-local)
-@code{default-fringe-indicator-alist} is used.
+@code{t}, the corresponding value from the default value of
+@code{fringe-indicator-alist} is used.
To completely hide a specific indicator, set the bitmap to @code{nil}.
@end defvar
-@defvar default-fringe-indicator-alist
-The value of this variable is the default value for
-@code{fringe-indicator-alist} in buffers that do not override it.
-@end defvar
-
Standard fringe bitmaps for indicators:
@example
left-arrow right-arrow up-arrow down-arrow
When @code{fringe-cursor-alist} has a buffer-local value, and there is
no bitmap defined for a cursor type, the corresponding value from the
-(non-local) @code{default-fringes-indicator-alist} is used.
-@end defvar
-
-@defvar default-fringes-cursor-alist
-The value of this variable is the default value for
-@code{fringe-cursor-alist} in buffers that do not override it.
+default value of @code{fringes-indicator-alist} is used.
@end defvar
Standard bitmaps for displaying the cursor in right fringe:
displayed as a backslash followed by three octal digits: @samp{\001}.
@end defopt
-@c Following may have overfull hbox.
-@defvar default-ctl-arrow
-The value of this variable is the default value for @code{ctl-arrow} in
-buffers that do not override it. @xref{Default Value}.
-@end defvar
-
@defopt tab-width
The value of this buffer-local variable is the spacing between tab
stops used for displaying tab characters in Emacs buffers. The value
The reason Emacs is designed this way is so that Lisp programs give
predictable results, regardless of how Emacs was started. In addition,
this enables programs that depend on using multibyte text to work even
-in a unibyte Emacs. Of course, such programs should be designed to
-notice whether the user prefers unibyte or multibyte text, by checking
-@code{default-enable-multibyte-characters}, and convert representations
-appropriately.
+in a unibyte Emacs.
In most Emacs Lisp programs, the fact that non-@acronym{ASCII} strings are
multibyte strings should not be noticeable, since inserting them in
@noindent
This tells Emacs that new buffers created while the current buffer is
-in Funny mode should not inherit Funny mode, in case
-@code{default-major-mode} is @code{nil}. Modes such as Dired, Rmail,
+in Funny mode should not inherit Funny mode, in case the default value
+of @code{major-mode} is @code{nil}. Modes such as Dired, Rmail,
and Buffer List use this feature.
The @code{define-derived-mode} macro automatically marks the derived
specifies a major mode, that mode overrides any mode chosen by
@code{set-auto-mode}. If neither @code{set-auto-mode} nor
@code{hack-local-variables} specify a major mode, the buffer stays in
-the major mode determined by @code{default-major-mode} (see below).
+the major mode determined by the default value of @code{major-mode}
+(see below).
@cindex file mode specification error
@code{normal-mode} uses @code{condition-case} around the call to the
have set.
@end defun
-@defopt default-major-mode
-This variable holds the default major mode for new buffers. The
-standard value is @code{fundamental-mode}.
+@defopt major-mode
+The buffer-local value of this variable holds the major mode
+currently active. The default value of this variable holds the
+default major mode for new buffers. The standard default value is
+@code{fundamental-mode}.
-If the value of @code{default-major-mode} is @code{nil}, Emacs uses
+If the default value of @code{major-mode} is @code{nil}, Emacs uses
the (previously) current buffer's major mode as the default major mode
of a new buffer. However, if that major mode symbol has a @code{mode-class}
property with value @code{special}, then it is not used for new buffers;
@end defopt
@defun set-buffer-major-mode buffer
-This function sets the major mode of @var{buffer} to the value of
-@code{default-major-mode}; if that variable is @code{nil}, it uses the
+This function sets the major mode of @var{buffer} to the default value of
+@code{major-mode}; if that is @code{nil}, it uses the
current buffer's major mode (if that is suitable). As an exception,
if @var{buffer}'s name is @samp{*scratch*}, it sets the mode to
@code{initial-major-mode}.
included in the mode line from @code{mode-line-format}.
@end defvar
- The variable @code{default-mode-line-format} is where
-@code{mode-line-format} usually gets its value:
-
-@defvar default-mode-line-format
-This variable holds the default @code{mode-line-format} for buffers
-that do not override it. This is the same as @code{(default-value
-'mode-line-format)}.
-
Here is a simplified version of the default value of
-@code{default-mode-line-format}. The real default value also
+@code{mode-line-format}. The real default value also
specifies addition of text properties.
@example
This variable, local in every buffer, specifies how to display the
header line, for windows displaying the buffer. The format of the value
is the same as for @code{mode-line-format} (@pxref{Mode Line Data}).
-@end defvar
-
-@defvar default-header-line-format
-This variable holds the default @code{header-line-format} for buffers
-that do not override it. This is the same as @code{(default-value
-'header-line-format)}.
-
It is normally @code{nil}, so that ordinary buffers have no header line.
@end defvar
You cannot set this variable directly; instead, use the function
@code{set-buffer-multibyte} to change a buffer's representation.
-@end defopt
-
-@defvar default-enable-multibyte-characters
-This variable's value is entirely equivalent to @code{(default-value
-'enable-multibyte-characters)}, and setting this variable changes that
-default value. Setting the local binding of
-@code{enable-multibyte-characters} in a specific buffer is not allowed,
-but changing the default value is supported, and it is a reasonable
-thing to do, because it has no effect on existing buffers.
The @samp{--unibyte} command line option does its job by setting the
default value to @code{nil} early in startup.
-@end defvar
+@end defopt
@defun position-bytes position
Buffer positions are measured in character units. This function
eol conversion is set to match it (e.g., DOS-style CRLF format will
imply @code{dos} eol conversion). For encoding, the eol conversion is
taken from the appropriate default coding system (e.g.,
-@code{default-buffer-file-coding-system} for
+default value of @code{buffer-file-coding-system} for
@code{buffer-file-coding-system}), or from the default eol conversion
appropriate for the underlying platform.
@end defun
also be a list of coding systems; then the function tries each of them
one by one. After trying all of them, it next tries the current
buffer's value of @code{buffer-file-coding-system} (if it is not
-@code{undecided}), then the value of
-@code{default-buffer-file-coding-system} and finally the user's most
+@code{undecided}), then the default value of
+@code{buffer-file-coding-system} and finally the user's most
preferred coding system, which the user can set using the command
@code{prefer-coding-system} (@pxref{Recognize Coding,, Recognizing
Coding Systems, emacs, The GNU Emacs Manual}).
Normally this variable is set by visiting a file; it is set to
@code{nil} if the file was visited without any actual conversion.
+
+Its default value is used to decide how to handle files for which
+@code{file-name-buffer-file-type-alist} says nothing about the type:
+If the default value is non-@code{nil}, then these files are treated as
+binary: the coding system @code{no-conversion} is used. Otherwise,
+nothing special is done for them---the coding system is deduced solely
+from the file contents, in the usual Emacs fashion.
@end defvar
@defopt file-name-buffer-file-type-alist
is used.
If no element in this alist matches a given file name, then
-@code{default-buffer-file-type} says how to treat the file.
-@end defopt
-
-@defopt default-buffer-file-type
-This variable says how to handle files for which
-@code{file-name-buffer-file-type-alist} says nothing about the type.
-
-If this variable is non-@code{nil}, then these files are treated as
-binary: the coding system @code{no-conversion} is used. Otherwise,
-nothing special is done for them---the coding system is deduced solely
-from the file contents, in the usual Emacs fashion.
+the default value of @code{buffer-file-type} says how to treat the file.
@end defopt
@node Input Methods
@item :filter @var{filter}
Initialize the process filter to @var{filter}.
-@item :filter-multibyte @var{bool}
-If @var{bool} is non-@code{nil}, strings given to the process filter
-are multibyte, otherwise they are unibyte. If you don't specify this
-keyword at all, the default is that the strings are multibyte if
-@code{default-enable-multibyte-characters} is non-@code{nil}.
-
@item :sentinel @var{sentinel}
Initialize the process sentinel to @var{sentinel}.
@code{case-fold-search} to @code{nil}. Then all letters must match
exactly, including case. This is a buffer-local variable; altering the
variable affects only the current buffer. (@xref{Intro to
-Buffer-Local}.) Alternatively, you may change the value of
-@code{default-case-fold-search}, which is the default value of
-@code{case-fold-search} for buffers that do not override it.
+Buffer-Local}.) Alternatively, you may change the default value of
+@code{case-fold-search}.
Note that the user-level incremental search feature handles case
distinctions differently. When the search string contains only lower
they do ignore case.
@end defopt
-@defvar default-case-fold-search
-The value of this variable is the default value for
-@code{case-fold-search} in buffers that do not override it. This is the
-same as @code{(default-value 'case-fold-search)}.
-@end defvar
-
@defopt case-replace
This variable determines whether the higher level replacement
functions should preserve case. If the variable is @code{nil}, that
read, you should set @code{fill-column} to no more than 70. Otherwise
the line will be too long for people to read comfortably, and this can
make the text seem clumsy.
-@end defopt
-
-@defvar default-fill-column
-The value of this variable is the default value for @code{fill-column} in
-buffers that do not override it. This is the same as
-@code{(default-value 'fill-column)}.
-The default value for @code{default-fill-column} is 70.
-@end defvar
+The default value for @code{fill-column} is 70.
+@end defopt
@deffn Command set-left-margin from to margin
This sets the @code{left-margin} property on the text from @var{from} to
buffer using @code{other-buffer}. If @var{buffer-or-name} is a string
that does not identify an existing buffer, then a new buffer by that
name is created. The major mode for the new buffer is set according to
-the variable @code{default-major-mode}; see @ref{Auto Major Mode}.
+the variable @code{major-mode}; see @ref{Auto Major Mode}.
When the selected window is the minibuffer window or is strongly
dedicated to its buffer (@pxref{Dedicated Windows}), this function calls
buffer, but you don't specify which. If @var{buffer-or-name} is a
string that does not name an existing buffer, a buffer by that name is
created. The major mode for the new buffer is set according to the
-variable @code{default-major-mode}. @xref{Auto Major Mode}.
+variable @code{major-mode}. @xref{Auto Major Mode}.
If either of the variables @code{display-buffer-reuse-frames} or
@code{pop-up-frames} is non-@code{nil}, @code{pop-to-buffer} looks for a
@section How do I change Emacs's idea of the @key{TAB} character's length?
@cindex Tab length
@cindex Length of tab character
-@cindex @code{default-tab-width}
-Set the variable @code{default-tab-width}. For example, to set
+Set the default value of the variable @code{tab-width}. For example, to set
@key{TAB} stops every 10 characters, insert the following in your
@file{.emacs} file:
@lisp
-(setq default-tab-width 10)
+(setq-default tab-width 10)
@end lisp
Do not confuse variable @code{tab-width} with variable
\f
* Lisp changes in Emacs 23.2
+** All the default-FOO variables that hold the default value of the FOO
+variable, are now declared obsolete.
+
** read-key is a function halfway between read-event and read-key-sequence.
It reads a single key, but obeys input and escape sequence decoding.
** start-process-shell-command start-file-process-shell-command only
+2009-08-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * cus-start.el (default-major-mode): Customize `major-mode' instead.
+ (enable-multibyte-characters): Not customizable any more.
+
+ * subr.el (default-mode-line-format, default-header-line-format)
+ (default-line-spacing, default-abbrev-mode, default-ctl-arrow)
+ (default-direction-reversed, default-truncate-lines)
+ (default-left-margin, default-tab-width, default-case-fold-search)
+ (default-left-margin-width, default-right-margin-width)
+ (default-left-fringe-width, default-right-fringe-width)
+ (default-fringes-outside-margins, default-scroll-bar-width)
+ (default-vertical-scroll-bar, default-indicate-empty-lines)
+ (default-indicate-buffer-boundaries, default-fringe-indicator-alist)
+ (default-fringe-cursor-alist, default-scroll-up-aggressively)
+ (default-scroll-down-aggressively, default-fill-column)
+ (default-cursor-type, default-buffer-file-type)
+ (default-cursor-in-non-selected-windows)
+ (default-buffer-file-coding-system, default-major-mode)
+ (default-enable-multibyte-characters): Mark as obsolete.
+
2009-08-27 Dan Nicolaescu <dann@ics.uci.edu>
* vc-cvs.el (vc-cvs-update-changelog): Fix typo.
(garbage-collection-messages alloc boolean)
;; buffer.c
(mode-line-format mode-line sexp) ;Hard to do right.
- (default-major-mode internal function)
- (enable-multibyte-characters mule boolean)
+ (major-mode internal function)
(case-fold-search matching boolean)
(fill-column fill integer)
(left-margin fill integer)
\f
;;;; Obsolescent names for functions.
+;; Special "default-FOO" variables which contain the default value of
+;; the "FOO" variable are nasty. Their implementation is brittle, and
+;; slows down several unrelated variable operations; furthermore, they
+;; can lead to really odd behavior if you decide to make them
+;; buffer-local.
+
+;; Not used at all in Emacs, last time I checked:
+(make-obsolete-variable 'default-mode-line-format 'mode-line-format "23.2")
+(make-obsolete-variable 'default-header-line-format 'header-line-format "23.2")
+(make-obsolete-variable 'default-line-spacing 'line-spacing "23.2")
+(make-obsolete-variable 'default-abbrev-mode 'abbrev-mode "23.2")
+(make-obsolete-variable 'default-ctl-arrow 'ctl-arrow "23.2")
+(make-obsolete-variable 'default-direction-reversed 'direction-reversed "23.2")
+(make-obsolete-variable 'default-truncate-lines 'truncate-lines "23.2")
+(make-obsolete-variable 'default-left-margin 'left-margin "23.2")
+(make-obsolete-variable 'default-tab-width 'tab-width "23.2")
+(make-obsolete-variable 'default-case-fold-search 'case-fold-search "23.2")
+(make-obsolete-variable 'default-left-margin-width 'left-margin-width "23.2")
+(make-obsolete-variable 'default-right-margin-width 'right-margin-width "23.2")
+(make-obsolete-variable 'default-left-fringe-width 'left-fringe-width "23.2")
+(make-obsolete-variable 'default-right-fringe-width 'right-fringe-width "23.2")
+(make-obsolete-variable 'default-fringes-outside-margins 'fringes-outside-margins "23.2")
+(make-obsolete-variable 'default-scroll-bar-width 'scroll-bar-width "23.2")
+(make-obsolete-variable 'default-vertical-scroll-bar 'vertical-scroll-bar "23.2")
+(make-obsolete-variable 'default-indicate-empty-lines 'indicate-empty-lines "23.2")
+(make-obsolete-variable 'default-indicate-buffer-boundaries 'indicate-buffer-boundaries "23.2")
+(make-obsolete-variable 'default-fringe-indicator-alist 'fringe-indicator-alist "23.2")
+(make-obsolete-variable 'default-fringe-cursor-alist 'fringe-cursor-alist "23.2")
+(make-obsolete-variable 'default-scroll-up-aggressively 'scroll-up-aggressively "23.2")
+(make-obsolete-variable 'default-scroll-down-aggressively 'scroll-down-aggressively "23.2")
+(make-obsolete-variable 'default-fill-column 'fill-column "23.2")
+(make-obsolete-variable 'default-cursor-type 'cursor-type "23.2")
+(make-obsolete-variable 'default-buffer-file-type 'buffer-file-type "23.2")
+(make-obsolete-variable 'default-cursor-in-non-selected-windows 'cursor-in-non-selected-windows "23.2")
+(make-obsolete-variable 'default-buffer-file-coding-system 'buffer-file-coding-system "23.2")
+(make-obsolete-variable 'default-major-mode 'major-mode "23.2")
+(make-obsolete-variable 'default-enable-multibyte-characters
+ "use enable-multibyte-characters or set-buffer-multibyte instead" "23.2")
+
(define-obsolete-function-alias 'window-dot 'window-point "22.1")
(define-obsolete-function-alias 'set-window-dot 'set-window-point "22.1")
(define-obsolete-function-alias 'read-input 'read-string "22.1")