By forward function declarations I mean what is needed when a function defined later in the file is called from a preceding one.

By circular I mean file A requires a function in file B which requires a function in file A. Something along those lines

PS. Apologies for inquiring about this again. I am sure I enquired sometime in the past and forgotten the actual question and the response to it.

You are viewing a single thread.
View all comments
1 point

As elisp is a dynamic language, it looks up these functions when needed. You can try it: E.g., evaluate this in the scratch buffer (C-x C-e):

(defun testfn1 ()
  (testfn2 "Test123"))

This works even though testfn2 is not defined. However, evaluating (testfn1) (actually calling the function) will give you an error as testfn2 is not found.

When you define testfn2, it is added to the global scope and thus becomes available for testfn1.

(defun testfn2 (text)
  (message "Msg: %s" text))

Now, (testfn1) works.

You can even define a new version of testfn2 which does something different. This way you can change any function in a lisp environment (this generally applies for scripting languages). This way also circular references are no problem. There may be warnings, when byte compiling functions with undefined references, but these are just warnings and compiling still works. If you look at a byte-compiled elisp file, you still see symbolic references to the called functions.

permalink
report
reply

Emacs

!emacs@communick.news

Create post

A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!

Get Emacs

  • Windows
  • Mac OS X
  • GNU/Linux and BSD (Just get it from your distribution’s package manager)

Rules

  1. Posts should be emacs related
  2. Be kind please
  3. Yes, we already know: Google results for “emacs” and “vi” link to each other. We good.

Emacs Resources

Emacs Tutorials

Useful Emacs configuration files and distributions

Quick pain-saver tip

Community stats

  • 18

    Monthly active users

  • 562

    Posts

  • 2.4K

    Comments