Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
71eda2d5
Commit
71eda2d5
authored
Dec 21, 1995
by
Karl Heuer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(Fcall_interactively): Handle an arg of form (FCN ARGS...).
(Fcall_interactively): Move have_prefix_arg label to 'p'.
parent
29ea9268
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
5 deletions
+29
-5
src/callint.c
src/callint.c
+29
-5
No files found.
src/callint.c
View file @
71eda2d5
...
...
@@ -174,13 +174,16 @@ See `interactive'.\n\
\n
\
Optional second arg RECORD-FLAG non-nil
\n
\
means unconditionally put this command in the command-history.
\n
\
Otherwise, this is done only if an arg is read using the minibuffer."
)
Otherwise, this is done only if an arg is read using the minibuffer.
\n\n
\
FUNCTION may be a list (FUNCTION ARGS...), which means to provide
\n
\
the arguments ARGS before the ones read by FUNCTION's interactive spec."
)
(
function
,
record
,
keys
)
Lisp_Object
function
,
record
,
keys
;
{
Lisp_Object
*
args
,
*
visargs
;
unsigned
char
**
argstrings
;
Lisp_Object
fun
;
Lisp_Object
given_args
;
Lisp_Object
funcar
;
Lisp_Object
specs
;
Lisp_Object
teml
;
...
...
@@ -219,6 +222,16 @@ Otherwise, this is done only if an arg is read using the minibuffer.")
/* Save this now, since use of minibuffer will clobber it. */
prefix_arg
=
Vcurrent_prefix_arg
;
/* Separate out any initial args specified by the caller. */
if
(
CONSP
(
function
)
&&
!
EQ
(
XCONS
(
function
)
->
car
,
Qlambda
)
&&
!
EQ
(
XCONS
(
function
)
->
car
,
Qautoload
))
{
given_args
=
XCONS
(
function
)
->
cdr
;
function
=
XCONS
(
function
)
->
car
;
}
else
given_args
=
Qnil
;
retry:
if
(
SYMBOLP
(
function
))
...
...
@@ -290,7 +303,7 @@ Otherwise, this is done only if an arg is read using the minibuffer.")
i
=
num_input_chars
;
input
=
specs
;
/* Compute the arg values using the user's expression. */
specs
=
Feval
(
specs
);
specs
=
nconc2
(
Fcopy_sequence
(
given_args
),
Feval
(
specs
)
)
;
if
(
i
!=
num_input_chars
||
!
NILP
(
record
))
{
/* We should record this command on the command history. */
...
...
@@ -403,7 +416,8 @@ Otherwise, this is done only if an arg is read using the minibuffer.")
else
tem
=
(
unsigned
char
*
)
""
;
}
count
=
j
;
/* Add in the number of args the caller specified. */
count
=
j
+
XINT
(
Flength
(
given_args
));
args
=
(
Lisp_Object
*
)
alloca
((
count
+
1
)
*
sizeof
(
Lisp_Object
));
visargs
=
(
Lisp_Object
*
)
alloca
((
count
+
1
)
*
sizeof
(
Lisp_Object
));
...
...
@@ -417,6 +431,16 @@ Otherwise, this is done only if an arg is read using the minibuffer.")
varies
[
i
]
=
0
;
}
/* Put any args that the caller specified
into the vector. */
i
=
1
;
while
(
!
NILP
(
given_args
))
{
visargs
[
i
]
=
args
[
i
]
=
XCONS
(
given_args
)
->
car
;
given_args
=
XCONS
(
given_args
)
->
cdr
;
i
++
;
}
GCPRO4
(
prefix_arg
,
function
,
*
args
,
*
visargs
);
gcpro3
.
nvars
=
(
count
+
1
);
gcpro4
.
nvars
=
(
count
+
1
);
...
...
@@ -425,7 +449,7 @@ Otherwise, this is done only if an arg is read using the minibuffer.")
specbind
(
Qenable_recursive_minibuffers
,
Qt
);
tem
=
string
;
for
(
i
=
1
;
*
tem
;
i
++
)
for
(;
*
tem
;
i
++
)
{
strncpy
(
prompt1
,
tem
+
1
,
sizeof
prompt1
-
1
);
prompt1
[
sizeof
prompt1
-
1
]
=
0
;
...
...
@@ -566,13 +590,13 @@ Otherwise, this is done only if an arg is read using the minibuffer.")
break
;
case
'P'
:
/* Prefix arg in raw form. Does no I/O. */
have_prefix_arg:
args
[
i
]
=
prefix_arg
;
/* visargs[i] = Qnil; */
varies
[
i
]
=
-
1
;
break
;
case
'p'
:
/* Prefix arg converted to number. No I/O. */
have_prefix_arg:
args
[
i
]
=
Fprefix_numeric_value
(
prefix_arg
);
/* visargs[i] = Qnil; */
varies
[
i
]
=
-
1
;
...
...
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