Mercurial > emacs
view lisp/url/url-about.el @ 107805:bcbdb43a80e2
Lucid menus can now use Xft for fonts.
* xsettings.c (current_font, SYSTEM_FONT, XSETTINGS_FONT_NAME): New.
(parse_xft_settings): Also check for XSETTINGS_FONT_NAME and save that
in current_font.
(init_gconf): Read value of SYSTEM_FONT and save it in current_font.
(Ffont_get_system_normal_font, xsettings_get_system_normal_font): New
functions.
(syms_of_xsettings): Initialize current_font. defsubr
Sfont_get_system_normal_font.
* xsettings.h (Ffont_get_system_normal_font,
xsettings_get_system_normal_font): Declare.
* xfns.c (extern xlwmenu_default_font): Remove.
(Fx_create_frame): Remove setting of xlwmenu_default_font, moved
to xlwmenu.c.
* menu.c (digest_single_submenu): If USE_LUCID and HAVE_XFT, encode
menu items in UTF-8.
* xmenu.c: include xsettings.h and xlwmenu.h if USE_LUCID.
(apply_systemfont_to_menu): New function.
(set_frame_menubar, create_and_show_popup_menu): Call
apply_systemfont_to_menu.
* xlwmenu.c (xlwmenu_default_font): Make static.
(xlwMenuResources): Add XtNfaceName and XtNdefaultFace.
(string_width): Use XftTextExtentsUtf8 if HAVE_XFT.
(MENU_FONT_HEIGHT, MENU_FONT_ASCENT): Add versions for
HAVE_XFT.
(size_menu): Set max_rest_width in window_state structure.
(display_menu_item): If HAVE_XFT and xft_draw is set, use
XftDrawRect and XftDrawStringUtf8 to draw text.
(make_windows_if_needed): Set max_rest_width and xft_draw
in windows[i].
(openXftFont): New.
(XlwMenuInitialize): Call openXftFont if HAVE_XFT. If mw->menu.font
is not set, load font fixed and save it in xlwmenu_default_font.
(XlwMenuInitialize): Set max_rest_width and xft_draw in windows[0].
(XlwMenuClassInitialize): Initialize xlwmenu_default_font.
(XlwMenuRealize): Set xft_fg, xft_bg, xft_disabled_fg and
windows[0].xft_draw if xft_font is set.
(XlwMenuDestroy): Destroy all xft_draw and close xft_font.
(facename_changed): New.
(XlwMenuSetValues): Call facename_changed. If face name did change,
close old fonts and destroy xft_draw:s. Then create new ones.
* xlwmenu.h (XtNfaceName, XtCFaceName, XtNdefaultFace,
XtCDefaultFace): New.
* xlwmenuP.h (_window_state): Add max_rest_width and xft_draw.
(_XlwMenu_part): Add faceName,xft_fg, xft_bg, xft_disabled_fg and
xft_font.
* xresources.texi (Lucid Resources): Mention faceName to set Xft fonts.
author | Jan D. <jan.h.d@swipnet.se> |
---|---|
date | Thu, 08 Apr 2010 18:21:25 +0200 |
parents | 1d1d5d9bd884 |
children | 376148b31b5e |
line wrap: on
line source
;;; url-about.el --- Show internal URLs ;; Copyright (C) 2001, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ;; Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia ;; This file is part of GNU Emacs. ;; ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. ;;; Commentary: ;;; Code: (require 'url-util) (require 'url-parse) (defun url-probe-protocols () "Return a list of all potential URL schemes." (or (get 'url-extension-protocols 'probed) (mapc (lambda (s) (url-scheme-get-property s 'name)) (or (get 'url-extension-protocols 'schemes) (let ((schemes '("info" "man" "rlogin" "telnet" "tn3270" "data" "snews"))) (mapc (lambda (d) (mapc (lambda (f) (if (string-match "url-\\(.*\\).el$" f) (push (match-string 1 f) schemes))) (directory-files d nil "^url-.*\\.el$"))) load-path) (put 'url-extension-protocols 'schemes schemes) schemes))))) (defvar url-scheme-registry) (defun url-about-protocols (url) (url-probe-protocols) (insert "<html>\n" " <head>\n" " <title>Supported Protocols</title>\n" " </head>\n" " <body>\n" " <h1>Supported Protocols - URL v" url-version "</h1>\n" " <table width='100%' border='1'>\n" " <tr>\n" " <td>Protocol\n" " <td>Properties\n" " <td>Description\n" " </tr>\n") (mapc (lambda (k) (if (string= k "proxy") ;; Ignore the proxy setting... its magic! nil (insert " <tr>\n") ;; The name of the protocol (insert " <td valign=top>" (or (url-scheme-get-property k 'name) k) "\n") ;; Now the properties. Currently just asynchronous ;; status, default port number, and proxy status. (insert " <td valign=top>" (if (url-scheme-get-property k 'asynchronous-p) "As" "S") "ynchronous<br>\n" (if (url-scheme-get-property k 'default-port) (format "Default Port: %d<br>\n" (url-scheme-get-property k 'default-port)) "") (if (assoc k url-proxy-services) (format "Proxy: %s<br>\n" (assoc k url-proxy-services)) "")) ;; Now the description... (insert " <td valign=top>" (or (url-scheme-get-property k 'description) "N/A")))) (sort (let (x) (maphash (lambda (k v) (push k x)) url-scheme-registry) x) 'string-lessp)) (insert " </table>\n" " </body>\n" "</html>\n")) (defun url-about (url) "Show internal URLs." (let* ((item (downcase (url-filename url))) (func (intern (format "url-about-%s" item)))) (if (fboundp func) (progn (set-buffer (generate-new-buffer " *about-data*")) (insert "Content-type: text/plain\n\n") (funcall func url) (current-buffer)) (error "URL does not know about `%s'" item)))) (provide 'url-about) ;; arch-tag: 65dd7fca-db3f-4cb1-8026-7dd37d4a460e ;;; url-about.el ends here