<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/src, branch scratch/fcr</title>
<subtitle>Emacs is the extensible, customizable, self-documenting real-time display editor. 
</subtitle>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/'/>
<entry>
<title>Replace uniquify.el's advice with direct calls</title>
<updated>2021-12-28T00:47:23+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2021-12-28T00:47:23+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=b3f407a2f9cd322114f3cfe112a13170acf3ad55'/>
<id>b3f407a2f9cd322114f3cfe112a13170acf3ad55</id>
<content type='text'>
* src/buffer.c (Frename_buffer): Call `uniquify--rename-buffer-advice`.
* lisp/files.el (create-file-buffer):
Call`uniquify--create-file-buffer-advice`.

* lisp/uniquify.el (uniquify--rename-buffer-advice)
(uniquify--create-file-buffer-advice): Don't add them as advice any more.
Adjust their calling convention accordingly.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/buffer.c (Frename_buffer): Call `uniquify--rename-buffer-advice`.
* lisp/files.el (create-file-buffer):
Call`uniquify--create-file-buffer-advice`.

* lisp/uniquify.el (uniquify--rename-buffer-advice)
(uniquify--create-file-buffer-advice): Don't add them as advice any more.
Adjust their calling convention accordingly.
</pre>
</div>
</content>
</entry>
<entry>
<title>fcr.el (accessor): New type</title>
<updated>2021-12-22T15:06:17+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2021-12-22T15:06:17+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=59f542ef4fb04bc829f5af1728070a1a22c4fd55'/>
<id>59f542ef4fb04bc829f5af1728070a1a22c4fd55</id>
<content type='text'>
* lisp/emacs-lisp/fcr.el (accessor): New (FCR) type.
(fcr-defstruct): Mark the accessor functions
as being of type `accessor`.
(fcr--accessor-cl-print, fcr--accessor-docstring): New functions.

* src/doc.c (store_function_docstring): Improve message and fix check.
* lisp/simple.el (function-docstring) &lt;accessor&gt;: New method.
* lisp/emacs-lisp/cl-print.el (cl-print-object) &lt;accessor&gt;: New method.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/emacs-lisp/fcr.el (accessor): New (FCR) type.
(fcr-defstruct): Mark the accessor functions
as being of type `accessor`.
(fcr--accessor-cl-print, fcr--accessor-docstring): New functions.

* src/doc.c (store_function_docstring): Improve message and fix check.
* lisp/simple.el (function-docstring) &lt;accessor&gt;: New method.
* lisp/emacs-lisp/cl-print.el (cl-print-object) &lt;accessor&gt;: New method.
</pre>
</div>
</content>
</entry>
<entry>
<title>cl-print.el: Dispatch on `advice` type</title>
<updated>2021-12-19T00:20:25+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2021-12-19T00:20:25+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=cf3e2fb8afe88badfcde8aa8545dbd01cf533311'/>
<id>cf3e2fb8afe88badfcde8aa8545dbd01cf533311</id>
<content type='text'>
* test/lisp/emacs-lisp/nadvice-tests.el (advice-test-print): New test.

* src/doc.c (store_function_docstring): Don't overwrite an FCR type.

* lisp/simple.el (function-docstring): Don't return FCRs's type.

* lisp/emacs-lisp/nadvice.el (advice--cl-print-object): New function,
extracted from `cl-print-object`.

* lisp/emacs-lisp/cl-print.el (cl-print-object) &lt;advice&gt;: Use the
`advice` type for the dispatch.  Use `advice--cl-print-object`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* test/lisp/emacs-lisp/nadvice-tests.el (advice-test-print): New test.

* src/doc.c (store_function_docstring): Don't overwrite an FCR type.

* lisp/simple.el (function-docstring): Don't return FCRs's type.

* lisp/emacs-lisp/nadvice.el (advice--cl-print-object): New function,
extracted from `cl-print-object`.

* lisp/emacs-lisp/cl-print.el (cl-print-object) &lt;advice&gt;: Use the
`advice` type for the dispatch.  Use `advice--cl-print-object`.
</pre>
</div>
</content>
</entry>
<entry>
<title>(interactive-form, function-docstring): New generic functions</title>
<updated>2021-12-17T04:58:17+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2021-12-17T04:58:17+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=febe7acf5a9556fcc792a8576b4b8cf91ffa7654'/>
<id>febe7acf5a9556fcc792a8576b4b8cf91ffa7654</id>
<content type='text'>
Change `interactive-form` to be a generic function, and
change `documentation` to delegate to a new `function-docstring`
generic function so that we can use `cl-defmethod` to construct
the docstrings and interactive forms of FCRs.

* src/eval.c (Fcommandp): Rewrite to delegate to `interactive-form`
when potentially necessary.

* src/doc.c (Fdocumentation): Delegate to `function-docstring` in
most cases.

* src/data.c (Finternal__interactive_form): Rename from
`Finteractive_form` and simplify to only handle the cases we can't (yet)
handle from Lisp.
(syms_of_data): Adjust accordingly.

* src/callint.c (Fcall_interactively): `interactive-form` is now
defined in Lisp.

* lisp/simple.el: Require `subr-x`.
(function-docstring, interactive-form): New generic functions.

* lisp/loadup.el ("simple"): Postpone loading it after `cl-generic`.

* lisp/emacs-lisp/macroexp.el (internal-macroexpand-for-load):
Don't neuter eager macroexpansion errors.

* lisp/emacs-lisp/cl-generic.el (cl--generic-lambda):
Avoid `interactive-form` to avoid breaking bootstrap since it's now
defined as a generic function.
(cl-defmethod): Simplify.
(cl--generic-compiler): New var.
(cl--generic-get-dispatcher): Use it.
(cl--generic-prefill-dispatchers): Rebind it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change `interactive-form` to be a generic function, and
change `documentation` to delegate to a new `function-docstring`
generic function so that we can use `cl-defmethod` to construct
the docstrings and interactive forms of FCRs.

* src/eval.c (Fcommandp): Rewrite to delegate to `interactive-form`
when potentially necessary.

* src/doc.c (Fdocumentation): Delegate to `function-docstring` in
most cases.

* src/data.c (Finternal__interactive_form): Rename from
`Finteractive_form` and simplify to only handle the cases we can't (yet)
handle from Lisp.
(syms_of_data): Adjust accordingly.

* src/callint.c (Fcall_interactively): `interactive-form` is now
defined in Lisp.

* lisp/simple.el: Require `subr-x`.
(function-docstring, interactive-form): New generic functions.

* lisp/loadup.el ("simple"): Postpone loading it after `cl-generic`.

* lisp/emacs-lisp/macroexp.el (internal-macroexpand-for-load):
Don't neuter eager macroexpansion errors.

* lisp/emacs-lisp/cl-generic.el (cl--generic-lambda):
Avoid `interactive-form` to avoid breaking bootstrap since it's now
defined as a generic function.
(cl-defmethod): Simplify.
(cl--generic-compiler): New var.
(cl--generic-get-dispatcher): Use it.
(cl--generic-prefill-dispatchers): Rebind it.
</pre>
</div>
</content>
</entry>
<entry>
<title>FCR: Hybrids between functions and defstructs</title>
<updated>2021-12-12T17:12:30+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2021-12-12T17:12:30+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=780957c915824fd01924415a6ed73d7dac35630c'/>
<id>780957c915824fd01924415a6ed73d7dac35630c</id>
<content type='text'>
* lisp/emacs-lisp/fcr.el: New file.
* test/lisp/emacs-lisp/fcr-tests.el: New file.
* src/eval.c (Ffunction): Allow :documentation to return a symbol.
* lisp/emacs-lisp/cconv.el (cconv--convert-function): Tweak ordering of
captured variables.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/emacs-lisp/fcr.el: New file.
* test/lisp/emacs-lisp/fcr-tests.el: New file.
* src/eval.c (Ffunction): Allow :documentation to return a symbol.
* lisp/emacs-lisp/cconv.el (cconv--convert-function): Tweak ordering of
captured variables.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix overline display over stretch glyphs with box on NS</title>
<updated>2021-12-12T13:33:56+00:00</updated>
<author>
<name>Po Lu</name>
</author>
<published>2021-12-12T13:33:56+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=0ee1a46e6c7fa159584a9c04f5ab9bf694d6de3b'/>
<id>0ee1a46e6c7fa159584a9c04f5ab9bf694d6de3b</id>
<content type='text'>
* src/nsterm.m (ns_dumpglyphs_stretch): Don't draw text
decorations when there is a box.
(ns_draw_glyph_string): Draw text decorations after the box
in stretch glyph that have one.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/nsterm.m (ns_dumpglyphs_stretch): Don't draw text
decorations when there is a box.
(ns_draw_glyph_string): Draw text decorations after the box
in stretch glyph that have one.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix overline display when there is a box</title>
<updated>2021-12-12T13:05:35+00:00</updated>
<author>
<name>Po Lu</name>
</author>
<published>2021-12-12T13:05:35+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=5bc785d81c01e00e187bd129d86f47fc89ff3b3b'/>
<id>5bc785d81c01e00e187bd129d86f47fc89ff3b3b</id>
<content type='text'>
* src/w32term.c (w32_draw_glyph_string):
* src/xterm.c (x_draw_glyph_string): Draw box before any text
decorations.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/w32term.c (w32_draw_glyph_string):
* src/xterm.c (x_draw_glyph_string): Draw box before any text
decorations.
</pre>
</div>
</content>
</entry>
<entry>
<title>* src/xterm.c (x_detect_focus_change): Fix XI2 focus on GTK builds.</title>
<updated>2021-12-12T06:20:18+00:00</updated>
<author>
<name>Po Lu</name>
</author>
<published>2021-12-12T06:20:18+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=11b2dfca287dee4b4520d07e3ad6432870059100'/>
<id>11b2dfca287dee4b4520d07e3ad6432870059100</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix last change</title>
<updated>2021-12-12T06:14:23+00:00</updated>
<author>
<name>Po Lu</name>
</author>
<published>2021-12-12T06:13:05+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=4f987e189d129523a93b21427c24f761e7fb4c00'/>
<id>4f987e189d129523a93b21427c24f761e7fb4c00</id>
<content type='text'>
* src/xterm.c (x_detect_focus_change): Test against
FOCUS_EXPLICIT.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/xterm.c (x_detect_focus_change): Test against
FOCUS_EXPLICIT.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix frame focus on X Toolkit builds with XInput 2</title>
<updated>2021-12-12T06:01:45+00:00</updated>
<author>
<name>Po Lu</name>
</author>
<published>2021-12-12T06:00:09+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=eff1bb78bd3bfa60cbf4982e90217d00887ea0c8'/>
<id>eff1bb78bd3bfa60cbf4982e90217d00887ea0c8</id>
<content type='text'>
* src/xterm.c (x_detect_focus_change): Allow focus_state to not
be FOCUS_EXPLICIT when handling FocusIn and FocusOut events.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* src/xterm.c (x_detect_focus_change): Allow focus_state to not
be FOCUS_EXPLICIT when handling FocusIn and FocusOut events.
</pre>
</div>
</content>
</entry>
</feed>
