160 |
= {"", "point", "mark", "region-beginning", "region-end"}; |
= {"", "point", "mark", "region-beginning", "region-end"}; |
161 |
|
|
162 |
static void |
static void |
163 |
check_mark () |
check_mark (for_region) |
164 |
|
int for_region; |
165 |
{ |
{ |
166 |
Lisp_Object tem; |
Lisp_Object tem; |
167 |
tem = Fmarker_buffer (current_buffer->mark); |
tem = Fmarker_buffer (current_buffer->mark); |
168 |
if (NILP (tem) || (XBUFFER (tem) != current_buffer)) |
if (NILP (tem) || (XBUFFER (tem) != current_buffer)) |
169 |
error ("The mark is not set now"); |
error (for_region ? "The mark is not set now, so there is no region" |
170 |
|
: "The mark is not set now"); |
171 |
if (!NILP (Vtransient_mark_mode) && NILP (Vmark_even_if_inactive) |
if (!NILP (Vtransient_mark_mode) && NILP (Vmark_even_if_inactive) |
172 |
&& NILP (current_buffer->mark_active)) |
&& NILP (current_buffer->mark_active)) |
173 |
Fsignal (Qmark_inactive, Qnil); |
Fsignal (Qmark_inactive, Qnil); |
611 |
break; |
break; |
612 |
|
|
613 |
case 'm': /* Value of mark. Does not do I/O. */ |
case 'm': /* Value of mark. Does not do I/O. */ |
614 |
check_mark (); |
check_mark (0); |
615 |
/* visargs[i] = Qnil; */ |
/* visargs[i] = Qnil; */ |
616 |
args[i] = current_buffer->mark; |
args[i] = current_buffer->mark; |
617 |
varies[i] = 2; |
varies[i] = 2; |
666 |
break; |
break; |
667 |
|
|
668 |
case 'r': /* Region, point and mark as 2 args. */ |
case 'r': /* Region, point and mark as 2 args. */ |
669 |
check_mark (); |
check_mark (1); |
670 |
set_marker_both (point_marker, Qnil, PT, PT_BYTE); |
set_marker_both (point_marker, Qnil, PT, PT_BYTE); |
671 |
/* visargs[i+1] = Qnil; */ |
/* visargs[i+1] = Qnil; */ |
672 |
foo = marker_position (current_buffer->mark); |
foo = marker_position (current_buffer->mark); |