(setq done t)))))))
(defun move-beginning-of-line (arg)
- "Move point to beginning of current line as displayed.
-\(If there's an image in the line, this disregards newlines
-that are part of the text that the image rests on.)
+ "Move point to visible beginning of current logical line.
+This disregards any invisible newline characters.
+ When moving from position that has no `field' property, this
+ command doesn't enter text which has non-nil `field' property.
+ In particular, when invoked in the minibuffer, the command will
+ stop short of entering the text of the minibuffer prompt.
+ See `inhibit-field-text-motion' for how to inhibit this.
+
With argument ARG not nil or 1, move forward ARG - 1 lines first.
If point reaches the beginning or end of buffer, it stops there.
\(But if the buffer doesn't end in a newline, it stops at the
(offsetof (type, lastlispfield) + word_size < header_size \
? 0 : (offsetof (type, lastlispfield) + word_size - header_size) / word_size)
-/* Compute A OP B, using the unsigned comparison operator OP. A and B
- should be integer expressions. This is not the same as
- mathematical comparison; for example, UNSIGNED_CMP (0, <, -1)
- returns true. For efficiency, prefer plain unsigned comparison if A
- and B's sizes both fit (after integer promotion). */
-#define UNSIGNED_CMP(a, op, b) \
- (max (sizeof ((a) + 0), sizeof ((b) + 0)) <= sizeof (unsigned) \
- ? ((a) + (unsigned) 0) op ((b) + (unsigned) 0) \
- : ((a) + (uintmax_t) 0) op ((b) + (uintmax_t) 0))
-
/* True iff C is an ASCII character. */
-#define ASCII_CHAR_P(c) UNSIGNED_CMP (c, <, 0x80)
+INLINE bool
+ASCII_CHAR_P (intmax_t c)
+{
+ return 0 <= c && c < 0x80;
+}
- /* A char-table is a kind of vectorlike, with contents are like a
- vector but with a few other slots. For some purposes, it makes
- sense to handle a char-table with type struct Lisp_Vector. An
- element of a char table can be any Lisp objects, but if it is a sub
- char-table, we treat it a table that contains information of a
- specific range of characters. A sub char-table is like a vector but
- with two integer fields between the header and Lisp data, which means
+ /* A char-table is a kind of vectorlike, with contents like a vector,
+ but with a few additional slots. For some purposes, it makes sense
+ to handle a char-table as type 'struct Lisp_Vector'. An element of
+ a char-table can be any Lisp object, but if it is a sub-char-table,
+ we treat it as a table that contains information of a specific
+ range of characters. A sub-char-table is like a vector, but with
+ two integer fields between the header and Lisp data, which means
that it has to be marked with some precautions (see mark_char_table
- in alloc.c). A sub char-table appears only in an element of a char-table,
- and there's no way to access it directly from Emacs Lisp program. */
+ in alloc.c). A sub-char-table appears only in an element of a
+ char-table, and there's no way to access it directly from a Lisp
+ program. */
enum CHARTAB_SIZE_BITS
{