[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
~`symbol-function' to get code as list even when byte-compiled?
From: |
Emanuel Berg |
Subject: |
~`symbol-function' to get code as list even when byte-compiled? |
Date: |
Mon, 25 May 2015 04:52:55 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) |
(re-search-forward "^Question")
Here is some interesting code. What's interesting is:
when this code executes, it changes itself, i.e.
the code changes the code!
But it isn't a macro which is a program that produces
a new program based on its own logic and non-evaluated
input data.
On the contrary, here we deal all with ordinary
functions (defuns) where one changes the other.
Does that always happen? No - only when it is needed!
See the entire code here [1]. Go there if you want to
see this in execution as it probably is based on some
other functions as well. The below code is for display
purposes ONLY!
Question: this is all working thanks to
`symbol-function' which is used to get the code of the
function as data, so it can be examined and
manipulated. However, if I byte-compile the code
(which I always do), `symbol-function' doesn't return
a lambda function which is also a list, but instead
just a function #[...] which isn't a list. So then it
doesn't work!
I was able to do a workaround with `load-file' in
.emacs to get all the functions in the file in
evaluated form. But, can I do that specifically for
a named function, *or*, can I extract the code in list
format somehow even if compiled?
(symbol-function jump)
(defun enable-jump (jump)
(add-hook 'w3m-display-hook jump)
(let*((code (symbol-function jump))
(remove-code `(remove-hook 'w3m-display-hook (quote ,jump)))
(remove-code-index 2)
(current-code (nth remove-code-index code)) )
(unless (equal current-code remove-code)
(push remove-code (nthcdr remove-code-index code)) )))
(defun web-search ()
(interactive)
(let ((search (get-search-string "Google")))
(unless (empty-string-p search)
(w3m-new-tab (format "Google: %s" search))
(w3m-search w3m-search-default-engine search) ))
(enable-jump 'number-one-jump) )
(defun number-one-jump (&optional not-used) ; Google, Youtube
(when (re-search-forward "^ 1." (point-max) t)
(recenter-top-bottom 0)
(w3m-next-anchor) ))
[1] http://user.it.uu.se/~embe8573/conf/emacs-init/w3m/w3m-unisearch.el
--
underground experts united
http://user.it.uu.se/~embe8573
- ~`symbol-function' to get code as list even when byte-compiled?,
Emanuel Berg <=
- Re: ~`symbol-function' to get code as list even when byte-compiled?, Barry Margolin, 2015/05/24
- Re: ~`symbol-function' to get code as list even when byte-compiled?, Pascal J. Bourguignon, 2015/05/24
- Re: ~`symbol-function' to get code as list even when byte-compiled?, Emanuel Berg, 2015/05/25
- Re: ~`symbol-function' to get code as list even when byte-compiled?, Pascal J. Bourguignon, 2015/05/25
- Message not available
- Re: ~`symbol-function' to get code as list even when byte-compiled?, Emanuel Berg, 2015/05/25
- Re: ~`symbol-function' to get code as list even when byte-compiled?, Pascal J. Bourguignon, 2015/05/25
- Message not available
- Re: ~`symbol-function' to get code as list even when byte-compiled?, Emanuel Berg, 2015/05/25
- Re: ~`symbol-function' to get code as list even when byte-compiled?, Emanuel Berg, 2015/05/25