diff options
| author | Lars Ingebrigtsen | 2016-05-01 16:53:38 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2016-05-01 16:53:38 +0200 |
| commit | bf0b6fab032bd35fae36f7371b7cd1fe3bfaaac7 (patch) | |
| tree | 4bbed3f5de389fea0f5f66a78a100d623accee2d /src | |
| parent | 8cfd9ba1a97a02157c6b730cca9d61b0fb7de53b (diff) | |
| download | emacs-bf0b6fab032bd35fae36f7371b7cd1fe3bfaaac7.tar.gz emacs-bf0b6fab032bd35fae36f7371b7cd1fe3bfaaac7.zip | |
Allow minibuffer prompts to use faces
* doc/lispref/minibuf.texi (Text from Minibuffer): Document
`minibuffer-prompt-properties' and explain how faces work in
the minibuffer prompt.
* src/minibuf.c (read_minibuf): If `face' is in
`minibuffer-prompt-properties', apply it to the end of the
face list to allow users to have their own faces on the
prompts (bug#16136).
Diffstat (limited to 'src')
| -rw-r--r-- | src/minibuf.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/minibuf.c b/src/minibuf.c index 0b8b00ce2c9..d2a4c9b9538 100644 --- a/src/minibuf.c +++ b/src/minibuf.c | |||
| @@ -630,8 +630,31 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt, | |||
| 630 | Qrear_nonsticky, Qt, Qnil); | 630 | Qrear_nonsticky, Qt, Qnil); |
| 631 | Fput_text_property (make_number (BEG), make_number (PT), | 631 | Fput_text_property (make_number (BEG), make_number (PT), |
| 632 | Qfield, Qt, Qnil); | 632 | Qfield, Qt, Qnil); |
| 633 | Fadd_text_properties (make_number (BEG), make_number (PT), | 633 | if (Fconsp (Vminibuffer_prompt_properties)) |
| 634 | Vminibuffer_prompt_properties, Qnil); | 634 | { |
| 635 | /* We want to apply all properties from | ||
| 636 | `minibuffer-prompt-properties' to the region normally, | ||
| 637 | but if the `face' property is present, add that | ||
| 638 | property to the end of the face properties to avoid | ||
| 639 | overwriting faces. */ | ||
| 640 | Lisp_Object list = Vminibuffer_prompt_properties; | ||
| 641 | while (CONSP (list)) | ||
| 642 | { | ||
| 643 | Lisp_Object key = XCAR (list); | ||
| 644 | list = XCDR (list); | ||
| 645 | if (CONSP (list)) | ||
| 646 | { | ||
| 647 | Lisp_Object val = XCAR (list); | ||
| 648 | list = XCDR (list); | ||
| 649 | if (EQ (key, Qface)) | ||
| 650 | Fadd_face_text_property (make_number (BEG), | ||
| 651 | make_number (PT), val, Qt, Qnil); | ||
| 652 | else | ||
| 653 | Fput_text_property (make_number (BEG), make_number (PT), | ||
| 654 | key, val, Qnil); | ||
| 655 | } | ||
| 656 | } | ||
| 657 | } | ||
| 635 | } | 658 | } |
| 636 | unbind_to (count1, Qnil); | 659 | unbind_to (count1, Qnil); |
| 637 | } | 660 | } |