From: "Michael Weber" <xmw@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] dev/xmw:master commit in: x11-misc/dmenu/files/, x11-misc/dmenu/
Date: Tue, 31 May 2011 02:42:13 +0000 (UTC) [thread overview]
Message-ID: <6d24833ef40e86559961355d215b610a11457742.xmw@gentoo> (raw)
commit: 6d24833ef40e86559961355d215b610a11457742
Author: Michael Weber <xmw <AT> gentoo <DOT> org>
AuthorDate: Tue May 31 02:42:03 2011 +0000
Commit: Michael Weber <xmw <AT> gentoo <DOT> org>
CommitDate: Tue May 31 02:42:03 2011 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=dev/xmw.git;a=commit;h=6d24833e
x11-misc/dmenu: Initial import w/ xft patch
(Portage version: 2.1.9.42/git/Linux x86_64, signed Manifest commit with key 62EEF090)
---
| 10 +
| 15 +
| 48 ++++
| 381 ++++++++++++++++++++++++++++
| 9 +
5 files changed, 463 insertions(+), 0 deletions(-)
--git a/x11-misc/dmenu/ChangeLog b/x11-misc/dmenu/ChangeLog
new file mode 100644
index 0000000..3594f0a
--- /dev/null
+++ b/x11-misc/dmenu/ChangeLog
@@ -0,0 +1,10 @@
+# ChangeLog for x11-misc/dmenu
+# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
+# $Header: $
+
+*dmenu-4.3.1 (31 May 2011)
+
+ 31 May 2011; Michael Weber <xmw@gentoo.org> +dmenu-4.3.1.ebuild,
+ +files/dmenu-4.3.1-xft.patch, +metadata.xml:
+ Initial import w/ xft patch
+
--git a/x11-misc/dmenu/Manifest b/x11-misc/dmenu/Manifest
new file mode 100644
index 0000000..b2f2437
--- /dev/null
+++ b/x11-misc/dmenu/Manifest
@@ -0,0 +1,15 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+AUX dmenu-4.3.1-xft.patch 11711 RMD160 43c39e128d6fbe07e81945ef5567153d709fe2a4 SHA1 0f893f21406e4d292b0c1e9b96efe31957103bd6 SHA256 61ef78f8b6105828e4120cb3a15c994f92bbec8b909c7a34fa9fda24f7dd17e7
+DIST dmenu-4.3.1.tar.gz 8905 RMD160 61675030c88c31bce88c6d2a2e408b28f622b68c SHA1 c22c468f9383ff485feacb9662571c4d1601aca3 SHA256 7da646228b52a2a5966b27190701e9514c08ee16ac538404b5dfa13b10b3c0ca
+EBUILD dmenu-4.3.1.ebuild 1256 RMD160 9e1d2448873906c9ca449dff1443ffd8978235cd SHA1 7f20eea3ea0394cb26dd7fde942a31c32cbe6c65 SHA256 63e98a85ed550a57ca3216a969e209567b7dc53d445186a5338f217203ed723a
+MISC ChangeLog 288 RMD160 e5d48ca2feecd9cfc201e090fec3821686dad480 SHA1 985d395d023bf3a8ebeaa9446e9a07936e5a2407 SHA256 96d1993dbba93014471ab60b0554446cb3c3023b63b4a21b0209f05c0e4e12b9
+MISC metadata.xml 244 RMD160 ba31bc851ce5d8e007b223b4f799d84d4c6699d0 SHA1 2192e855054fb7016488afba3eda6d938fdf925d SHA256 1022f65be1952b5197408dfbf61543b61557601ce3a9f15acabeb3e9d84a0fbe
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.17 (GNU/Linux)
+
+iF4EAREIAAYFAk3kVXoACgkQknrdDGLu8JASHwD/VvMI0QKhOw5HwkJFGwZiPBb3
+GtKV7gP1zEwZ1vqAYjMA/2shEGPOyLqRNaTLsShI/gdfK9Xkun4LyQeDD3SClXyP
+=rcB5
+-----END PGP SIGNATURE-----
--git a/x11-misc/dmenu/dmenu-4.3.1.ebuild b/x11-misc/dmenu/dmenu-4.3.1.ebuild
new file mode 100644
index 0000000..aa06b5e
--- /dev/null
+++ b/x11-misc/dmenu/dmenu-4.3.1.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-misc/dmenu/dmenu-4.2.1.ebuild,v 1.5 2011/03/16 21:17:05 xarthisius Exp $
+
+EAPI="2"
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="a generic, highly customizable, and efficient menu for the X Window System"
+HOMEPAGE="http://www.suckless.org/programs/dmenu.html"
+SRC_URI="http://dl.suckless.org/tools/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~hppa ~ppc ~ppc64 ~x86 ~x86-fbsd"
+IUSE="xft xinerama"
+
+DEPEND="x11-libs/libX11
+ xinerama? ( x11-libs/libXinerama )"
+RDEPEND=${DEPEND}
+
+src_prepare() {
+ if use xft ; then
+ epatch "${FILESDIR}/${P}-xft.patch"
+ fi
+
+ sed -i \
+ -e "s/CFLAGS = -ansi -pedantic -Wall -Os/CFLAGS += -ansi -pedantic -Wall/" \
+ -e "s/LDFLAGS = -s/LDFLAGS += -g/" \
+ -e "s/XINERAMALIBS =/XINERAMALIBS ?=/" \
+ -e "s/XINERAMAFLAGS =/XINERAMAFLAGS ?=/" \
+ config.mk || die "sed failed"
+}
+
+src_compile() {
+ if use xinerama; then
+ emake CC=$(tc-getCC) || die "emake failed"
+ else
+ emake CC=$(tc-getCC) XINERAMAFLAGS="" XINERAMALIBS="" \
+ || die "emake failed"
+ fi
+}
+
+src_install() {
+ emake DESTDIR="${D}" PREFIX="/usr" install || die "emake install failed"
+
+ dodoc README
+}
--git a/x11-misc/dmenu/files/dmenu-4.3.1-xft.patch b/x11-misc/dmenu/files/dmenu-4.3.1-xft.patch
new file mode 100644
index 0000000..0a2d7fb
--- /dev/null
+++ b/x11-misc/dmenu/files/dmenu-4.3.1-xft.patch
@@ -0,0 +1,381 @@
+diff -rup dmenu-4.3.1/config.mk dmenu-xft/config.mk
+--- dmenu-4.3.1/config.mk 2011-05-18 21:32:16.000000000 +0530
++++ dmenu-xft/config.mk 2011-05-20 03:14:15.000000000 +0530
+@@ -2,19 +2,24 @@
+ VERSION = 4.3.1
+
+ # paths
+-PREFIX = /usr/local
+-MANPREFIX = ${PREFIX}/share/man
++PREFIX = /usr
++MANPREFIX = ${PREFIX}/share
+
+ X11INC = /usr/X11R6/include
+ X11LIB = /usr/X11R6/lib
+
++# Xft, comment if you don't want it
++XFTINC = /usr/include/freetype2
++XFTLIBS = -lXft -lXrender -lfreetype -lz -lfontconfig
++
++
+ # Xinerama, comment if you don't want it
+ XINERAMALIBS = -lXinerama
+ XINERAMAFLAGS = -DXINERAMA
+
+ # includes and libs
+-INCS = -I${X11INC}
+-LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS}
++INCS = -I${X11INC} -I${XFTINC}
++LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${XFTLIBS}
+
+ # flags
+ CPPFLAGS = -D_BSD_SOURCE -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
+diff -rup dmenu-4.3.1/dmenu.c dmenu-xft/dmenu.c
+--- dmenu-4.3.1/dmenu.c 2011-05-18 21:32:16.000000000 +0530
++++ dmenu-xft/dmenu.c 2011-05-20 03:12:16.000000000 +0530
+@@ -16,6 +16,8 @@
+ #define INRECT(x,y,rx,ry,rw,rh) ((x) >= (rx) && (x) < (rx)+(rw) && (y) >= (ry) && (y) < (ry)+(rh))
+ #define MIN(a,b) ((a) < (b) ? (a) : (b))
+ #define MAX(a,b) ((a) > (b) ? (a) : (b))
++#define DEFFONT "fixed" /* xft example: "Monospace-11" */
++
+
+ typedef struct Item Item;
+ struct Item {
+@@ -49,8 +51,8 @@ static const char *normbgcolor = "#ccccc
+ static const char *normfgcolor = "#000000";
+ static const char *selbgcolor = "#0066ff";
+ static const char *selfgcolor = "#ffffff";
+-static unsigned long normcol[ColLast];
+-static unsigned long selcol[ColLast];
++static ColorSet *normcol;
++static ColorSet *selcol;
+ static Atom utf8;
+ static Bool topbar = True;
+ static DC *dc;
+@@ -99,7 +101,9 @@ main(int argc, char *argv[]) {
+ usage();
+
+ dc = initdc();
+- initfont(dc, font);
++ initfont(dc, font ? font : DEFFONT);
++ normcol = initcolor(dc, normfgcolor, normbgcolor);
++ selcol = initcolor(dc, selfgcolor, selbgcolor);
+
+ if(fast) {
+ grabkeyboard();
+@@ -151,7 +155,8 @@ drawmenu(void) {
+ dc->x = 0;
+ dc->y = 0;
+ dc->h = bh;
+- drawrect(dc, 0, 0, mw, mh, True, BG(dc, normcol));
++ drawrect(dc, 0, 0, mw, mh, True, normcol->BG);
++
+
+ if(prompt) {
+ dc->w = promptw;
+@@ -161,7 +166,7 @@ drawmenu(void) {
+ dc->w = (lines > 0 || !matches) ? mw - dc->x : inputw;
+ drawtext(dc, text, normcol);
+ if((curpos = textnw(dc, text, cursor) + dc->h/2 - 2) < dc->w)
+- drawrect(dc, curpos, 2, 1, dc->h - 4, True, FG(dc, normcol));
++ drawrect(dc, curpos, 2, 1, dc->h - 4, True, normcol->FG);
+
+ if(lines > 0) {
+ dc->w = mw - dc->x;
+@@ -495,11 +500,12 @@ setup(void) {
+ XineramaScreenInfo *info;
+ #endif
+
++ /*
+ normcol[ColBG] = getcolor(dc, normbgcolor);
+ normcol[ColFG] = getcolor(dc, normfgcolor);
+ selcol[ColBG] = getcolor(dc, selbgcolor);
+ selcol[ColFG] = getcolor(dc, selfgcolor);
+-
++*/
+ utf8 = XInternAtom(dc->dpy, "UTF8_STRING", False);
+
+ /* menu geometry */
+Only in dmenu-4.3.1: dmenu_path
+Only in dmenu-4.3.1: dmenu_run
+diff -rup dmenu-4.3.1/draw.c dmenu-xft/draw.c
+--- dmenu-4.3.1/draw.c 2011-05-18 21:32:16.000000000 +0530
++++ dmenu-xft/draw.c 2011-05-20 03:16:36.000000000 +0530
+@@ -5,13 +5,11 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <X11/Xlib.h>
++#include <X11/Xft/Xft.h>
+ #include "draw.h"
+
+ #define MAX(a, b) ((a) > (b) ? (a) : (b))
+ #define MIN(a, b) ((a) < (b) ? (a) : (b))
+-#define DEFAULTFN "fixed"
+-
+-static Bool loadfont(DC *dc, const char *fontstr);
+
+ void
+ drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsigned long color) {
+@@ -23,7 +21,7 @@ drawrect(DC *dc, int x, int y, unsigned
+ }
+
+ void
+-drawtext(DC *dc, const char *text, unsigned long col[ColLast]) {
++drawtext(DC *dc, const char *text, ColorSet *col) {
+ char buf[BUFSIZ];
+ size_t mn, n = strlen(text);
+
+@@ -35,19 +33,25 @@ drawtext(DC *dc, const char *text, unsig
+ if(mn < n)
+ for(n = MAX(mn-3, 0); n < mn; buf[n++] = '.');
+
+- drawrect(dc, 0, 0, dc->w, dc->h, True, BG(dc, col));
++drawrect(dc, 0, 0, dc->w, dc->h, True, col->BG);
++
+ drawtextn(dc, buf, mn, col);
+ }
+
+ void
+-drawtextn(DC *dc, const char *text, size_t n, unsigned long col[ColLast]) {
++drawtextn(DC *dc, const char *text, size_t n, ColorSet *col) {
+ int x = dc->x + dc->font.height/2;
+ int y = dc->y + dc->font.ascent+1;
+
+- XSetForeground(dc->dpy, dc->gc, FG(dc, col));
+- if(dc->font.set)
+- XmbDrawString(dc->dpy, dc->canvas, dc->font.set, dc->gc, x, y, text, n);
+- else {
++ XSetForeground(dc->dpy, dc->gc, col->FG);
++ if(dc->font.xft_font) {
++ if (!dc->xftdraw)
++ eprintf("error, xft drawable does not exist");
++ XftDrawStringUtf8(dc->xftdraw, &col->FG_xft,
++ dc->font.xft_font, x, y, (unsigned char*)text, n);
++ } else if(dc->font.set) {
++ XmbDrawString(dc->dpy, dc->canvas, dc->font.set, dc->gc, x, y, text, n);
++ } else {
+ XSetFont(dc->dpy, dc->gc, dc->font.xfont->fid);
+ XDrawString(dc->dpy, dc->canvas, dc->gc, x, y, text, n);
+ }
+@@ -68,19 +72,53 @@ eprintf(const char *fmt, ...) {
+ exit(EXIT_FAILURE);
+ }
+
++ void
++freecol(DC *dc, ColorSet *col) {
++ if(col) {
++ if(&col->FG_xft)
++ XftColorFree(dc->dpy, DefaultVisual(dc->dpy, DefaultScreen(dc->dpy)),
++ DefaultColormap(dc->dpy, DefaultScreen(dc->dpy)), &col->FG_xft);
++ free(col);
++ }
++}
++
++
+ void
+ freedc(DC *dc) {
++ if(dc->font.xft_font) {
++ XftFontClose(dc->dpy, dc->font.xft_font);
++ XftDrawDestroy(dc->xftdraw);
++ }
+ if(dc->font.set)
+ XFreeFontSet(dc->dpy, dc->font.set);
+ if(dc->font.xfont)
+ XFreeFont(dc->dpy, dc->font.xfont);
+ if(dc->canvas)
+ XFreePixmap(dc->dpy, dc->canvas);
+- XFreeGC(dc->dpy, dc->gc);
+- XCloseDisplay(dc->dpy);
+- free(dc);
++ if(dc->gc)
++ XFreeGC(dc->dpy, dc->gc);
++ if(dc->dpy)
++ XCloseDisplay(dc->dpy);
++ if(dc)
++ free(dc);
++
+ }
+
++ColorSet *
++initcolor(DC *dc, const char * foreground, const char * background) {
++ ColorSet * col = (ColorSet *)malloc(sizeof(ColorSet));
++ if(!col)
++ eprintf("error, cannot allocate memory for color set");
++ col->BG = getcolor(dc, background);
++ col->FG = getcolor(dc, foreground);
++ if(dc->font.xft_font)
++ if(!XftColorAllocName(dc->dpy, DefaultVisual(dc->dpy, DefaultScreen(dc->dpy)),
++ DefaultColormap(dc->dpy, DefaultScreen(dc->dpy)), foreground, &col->FG_xft))
++ eprintf("error, cannot allocate xft font color '%s'\n", foreground);
++ return col;
++}
++
++
+ unsigned long
+ getcolor(DC *dc, const char *colstr) {
+ Colormap cmap = DefaultColormap(dc->dpy, DefaultScreen(dc->dpy));
+@@ -95,12 +133,16 @@ DC *
+ initdc(void) {
+ DC *dc;
+
+- if(!setlocale(LC_CTYPE, "") || !XSupportsLocale())
++ if(!setlocale(LC_CTYPE, "") || !XSupportsLocale())
+ fprintf(stderr, "no locale support\n");
+ if(!(dc = calloc(1, sizeof *dc)))
+ eprintf("cannot malloc %u bytes:", sizeof *dc);
+ if(!(dc->dpy = XOpenDisplay(NULL)))
+ eprintf("cannot open display\n");
++ dc->font.xft_font = NULL;
++ dc->xftdraw = NULL;
++
++
+
+ dc->gc = XCreateGC(dc->dpy, DefaultRootWindow(dc->dpy), 0, NULL);
+ XSetLineAttributes(dc->dpy, dc->gc, 1, LineSolid, CapButt, JoinMiter);
+@@ -109,23 +151,13 @@ initdc(void) {
+
+ void
+ initfont(DC *dc, const char *fontstr) {
+- if(!loadfont(dc, fontstr ? fontstr : DEFAULTFN)) {
+- if(fontstr != NULL)
+- fprintf(stderr, "cannot load font '%s'\n", fontstr);
+- if(fontstr == NULL || !loadfont(dc, DEFAULTFN))
+- eprintf("cannot load font '%s'\n", DEFAULTFN);
+- }
+- dc->font.height = dc->font.ascent + dc->font.descent;
+-}
+-
+-Bool
+-loadfont(DC *dc, const char *fontstr) {
+- char *def, **missing;
++ char *def, **missing=NULL;
+ int i, n;
+
+- if(!*fontstr)
+- return False;
+- if((dc->font.set = XCreateFontSet(dc->dpy, fontstr, &missing, &n, &def))) {
++ if((dc->font.xfont = XLoadQueryFont(dc->dpy, fontstr))) {
++ dc->font.ascent = dc->font.xfont->ascent;
++ dc->font.descent = dc->font.xfont->descent;
++ } else if((dc->font.set = XCreateFontSet(dc->dpy, fontstr, &missing, &n, &def))) {
+ char **names;
+ XFontStruct **xfonts;
+
+@@ -134,14 +166,16 @@ loadfont(DC *dc, const char *fontstr) {
+ dc->font.ascent = MAX(dc->font.ascent, xfonts[i]->ascent);
+ dc->font.descent = MAX(dc->font.descent, xfonts[i]->descent);
+ }
+- }
+- else if((dc->font.xfont = XLoadQueryFont(dc->dpy, fontstr))) {
+- dc->font.ascent = dc->font.xfont->ascent;
+- dc->font.descent = dc->font.xfont->descent;
+- }
++ } else if((dc->font.xft_font = XftFontOpenName(dc->dpy,
++ DefaultScreen(dc->dpy), fontstr))) {
++ dc->font.ascent = dc->font.xft_font->ascent;
++ dc->font.descent = dc->font.xft_font->descent;
++ } else {
++ eprintf("cannot load font '%s'\n", fontstr);
++ }
+ if(missing)
+ XFreeStringList(missing);
+- return (dc->font.set || dc->font.xfont);
++ dc->font.height = dc->font.ascent + dc->font.descent;
+ }
+
+ void
+@@ -151,6 +185,7 @@ mapdc(DC *dc, Window win, unsigned int w
+
+ void
+ resizedc(DC *dc, unsigned int w, unsigned int h) {
++ int screen = DefaultScreen(dc->dpy);
+ if(dc->canvas)
+ XFreePixmap(dc->dpy, dc->canvas);
+
+@@ -158,18 +193,30 @@ resizedc(DC *dc, unsigned int w, unsigne
+ DefaultDepth(dc->dpy, DefaultScreen(dc->dpy)));
+ dc->w = w;
+ dc->h = h;
++ if(dc->font.xft_font && !(dc->xftdraw)) {
++ dc->xftdraw = XftDrawCreate(dc->dpy, dc->canvas, DefaultVisual(dc->dpy,screen), DefaultColormap(dc->dpy,screen));
++ if(!(dc->xftdraw))
++ eprintf("error, cannot create xft drawable\n");
++ }
++
+ }
+
+ int
+ textnw(DC *dc, const char *text, size_t len) {
+- if(dc->font.set) {
++ if(dc->font.xft_font) {
++ XGlyphInfo gi;
++ XftTextExtentsUtf8(dc->dpy, dc->font.xft_font, (const FcChar8*)text, len, &gi);
++ return gi.width;
++ } else if(dc->font.set) {
+ XRectangle r;
+
+ XmbTextExtents(dc->font.set, text, len, NULL, &r);
+ return r.width;
+- }
+- return XTextWidth(dc->font.xfont, text, len);
+-}
++ } else {
++ return XTextWidth(dc->font.xfont, text, len);
++ }
++
++ }
+
+ int
+ textw(DC *dc, const char *text) {
+diff -rup dmenu-4.3.1/draw.h dmenu-xft/draw.h
+--- dmenu-4.3.1/draw.h 2011-05-18 21:32:16.000000000 +0530
++++ dmenu-xft/draw.h 2011-05-20 03:01:58.000000000 +0530
+@@ -1,28 +1,34 @@
+ /* See LICENSE file for copyright and license details. */
+
+-#define FG(dc, col) ((col)[(dc)->invert ? ColBG : ColFG])
+-#define BG(dc, col) ((col)[(dc)->invert ? ColFG : ColBG])
+-
+-enum { ColBG, ColFG, ColBorder, ColLast };
++#include <X11/Xft/Xft.h>
+
+ typedef struct {
+ int x, y, w, h;
+- Bool invert;
+ Display *dpy;
+ GC gc;
+ Pixmap canvas;
++ XftDraw *xftdraw;
+ struct {
+ int ascent;
+ int descent;
+ int height;
+ XFontSet set;
+ XFontStruct *xfont;
++ XftFont *xft_font;
+ } font;
+ } DC; /* draw context */
+
++typedef struct {
++ unsigned long FG;
++ XftColor FG_xft;
++ unsigned long BG;
++} ColorSet;
++
++
+ void drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsigned long color);
+-void drawtext(DC *dc, const char *text, unsigned long col[ColLast]);
+-void drawtextn(DC *dc, const char *text, size_t n, unsigned long col[ColLast]);
++void drawtext(DC *dc, const char *text, ColorSet *col);
++void drawtextn(DC *dc, const char *text, size_t n, ColorSet *col);
++void freecol(DC *dc, ColorSet *col);
+ void eprintf(const char *fmt, ...);
+ void freedc(DC *dc);
+ unsigned long getcolor(DC *dc, const char *colstr);
+@@ -32,3 +38,5 @@ void mapdc(DC *dc, Window win, unsigned
+ void resizedc(DC *dc, unsigned int w, unsigned int h);
+ int textnw(DC *dc, const char *text, size_t len);
+ int textw(DC *dc, const char *text);
++ColorSet *initcolor(DC *dc, const char *foreground, const char *background);
++
--git a/x11-misc/dmenu/metadata.xml b/x11-misc/dmenu/metadata.xml
new file mode 100644
index 0000000..32c2cb5
--- /dev/null
+++ b/x11-misc/dmenu/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>no-herd</herd>
+<maintainer>
+<email>xmw@gentoo.org</email>
+<name>Michael Weber</name>
+</maintainer>
+</pkgmetadata>
next reply other threads:[~2011-05-31 2:42 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-31 2:42 Michael Weber [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-01-10 2:41 [gentoo-commits] dev/xmw:master commit in: x11-misc/dmenu/files/, x11-misc/dmenu/ Michael Weber
2012-03-05 11:59 Michael Weber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6d24833ef40e86559961355d215b610a11457742.xmw@gentoo \
--to=xmw@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox