Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
ee107a89
Commit
ee107a89
authored
Nov 08, 2008
by
Kenichi Handa
Browse files
(Fget_byte): New function.
(syms_of_character): Defsubr Fget_byte.
parent
d73b58b5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
63 additions
and
0 deletions
+63
-0
src/ChangeLog
src/ChangeLog
+5
-0
src/character.c
src/character.c
+58
-0
No files found.
src/ChangeLog
View file @
ee107a89
2008-11-08 Kenichi Handa <handa@m17n.org>
* character.c (Fget_byte): New function.
(syms_of_character): Defsubr Fget_byte.
2008-11-07 Chong Yidong <cyd@stupidchicken.com>
* xdisp.c (try_window_reusing_current_matrix): Ensure that window
...
...
src/character.c
View file @
ee107a89
...
...
@@ -1027,6 +1027,63 @@ usage: (char-resolve-modifiers CHAR) */)
return
make_number
(
char_resolve_modifier_mask
(
c
));
}
DEFUN
(
"get-byte"
,
Fget_byte
,
Sget_byte
,
0
,
2
,
0
,
doc
:
/* Return a byte value of a character at point.
Optional 1st arg POSITION, if non-nil, is a position of a character to get
a byte value.
Optional 2nd arg STRING, if non-nil, is a string of which first
character is a target to get a byte value. In this case, POSITION, if
non-nil, is an index of a target character in the string.
If the current buffer (or STRING) is multibyte, and the target
character is not ASCII nor 8-bit character, an error is signalled. */
)
(
position
,
string
)
Lisp_Object
position
,
string
;
{
int
c
;
EMACS_INT
pos
;
unsigned
char
*
p
;
if
(
NILP
(
string
))
{
if
(
NILP
(
position
))
{
p
=
PT_ADDR
;
}
else
{
CHECK_NUMBER_COERCE_MARKER
(
position
);
if
(
XINT
(
position
)
<
BEGV
||
XINT
(
position
)
>=
ZV
)
args_out_of_range_3
(
position
,
make_number
(
BEGV
),
make_number
(
ZV
));
pos
=
XFASTINT
(
position
);
p
=
CHAR_POS_ADDR
(
pos
);
}
}
else
{
CHECK_STRING
(
string
);
if
(
NILP
(
position
))
{
p
=
SDATA
(
string
);
}
else
{
CHECK_NATNUM
(
position
);
if
(
XINT
(
position
)
>=
SCHARS
(
string
))
args_out_of_range
(
string
,
position
);
pos
=
XFASTINT
(
position
);
p
=
SDATA
(
string
)
+
string_char_to_byte
(
string
,
pos
);
}
}
c
=
STRING_CHAR
(
p
,
0
);
if
(
CHAR_BYTE8_P
(
c
))
c
=
CHAR_TO_BYTE8
(
c
);
else
if
(
!
ASCII_CHAR_P
(
c
))
error
(
"Not an ASCII nor an 8-bit character: %d"
,
c
);
return
make_number
(
c
);
}
void
init_character_once
()
{
...
...
@@ -1054,6 +1111,7 @@ syms_of_character ()
defsubr
(
&
Sstring
);
defsubr
(
&
Sunibyte_string
);
defsubr
(
&
Schar_resolve_modifiers
);
defsubr
(
&
Sget_byte
);
DEFVAR_LISP
(
"translation-table-vector"
,
&
Vtranslation_table_vector
,
doc:
/*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment