diff options
Diffstat (limited to 'src/data.c')
| -rw-r--r-- | src/data.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/data.c b/src/data.c index fbfbb141d48..a4d865f681e 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -1927,23 +1927,26 @@ indirect_function (object) | |||
| 1927 | return hare; | 1927 | return hare; |
| 1928 | } | 1928 | } |
| 1929 | 1929 | ||
| 1930 | DEFUN ("indirect-function", Findirect_function, Sindirect_function, 1, 1, 0, | 1930 | DEFUN ("indirect-function", Findirect_function, Sindirect_function, 1, 2, 0, |
| 1931 | doc: /* Return the function at the end of OBJECT's function chain. | 1931 | doc: /* Return the function at the end of OBJECT's function chain. |
| 1932 | If OBJECT is a symbol, follow all function indirections and return the final | 1932 | If OBJECT is not a symbol, just return it. Otherwise, follow all |
| 1933 | function binding. | 1933 | function indirections to find the final function binding and return it. |
| 1934 | If OBJECT is not a symbol, just return it. | 1934 | If the final symbol in the chain is unbound, signal a void-function error. |
| 1935 | Signal a void-function error if the final symbol is unbound. | 1935 | Optional arg NOERROR non-nil means to return nil instead of signalling. |
| 1936 | Signal a cyclic-function-indirection error if there is a loop in the | 1936 | Signal a cyclic-function-indirection error if there is a loop in the |
| 1937 | function chain of symbols. */) | 1937 | function chain of symbols. */) |
| 1938 | (object) | 1938 | (object, noerror) |
| 1939 | register Lisp_Object object; | 1939 | register Lisp_Object object; |
| 1940 | Lisp_Object noerror; | ||
| 1940 | { | 1941 | { |
| 1941 | Lisp_Object result; | 1942 | Lisp_Object result; |
| 1942 | 1943 | ||
| 1943 | result = indirect_function (object); | 1944 | result = indirect_function (object); |
| 1944 | 1945 | ||
| 1945 | if (EQ (result, Qunbound)) | 1946 | if (EQ (result, Qunbound)) |
| 1946 | return Fsignal (Qvoid_function, Fcons (object, Qnil)); | 1947 | return (NILP (noerror) |
| 1948 | ? Fsignal (Qvoid_function, Fcons (object, Qnil)) | ||
| 1949 | : Qnil); | ||
| 1947 | return result; | 1950 | return result; |
| 1948 | } | 1951 | } |
| 1949 | 1952 | ||