Faits:
A. Par arrêt du 29 septembre 2009, le Tribunal d'accusation du canton de Vaud a déclaré irrecevable, pour cause de tardiveté, le recours interjeté par X._ contre une ordonnance de refus de suivre rendue le 31 août 2009 par le Juge d'instruction de l'arrondissement de Lausanne.
B. X._ recourt au Tribunal fédéral contre ce dernier arrêt, dont il demande l'annulation avec renvoi de la cause à la cour cantonale.
Il conclut également à la jonction de deux causes pendantes devant les autorités vaudoises.
Il demande l'assistance judiciaire.

Considérant en droit:
1. Autorité de recours, le Tribunal fédéral a pour mission d'examiner si l'autorité précédente a, au regard des faits qu'elle a régulièrement constatés (cf. art. 97 et 105 LTF), statué conformément au droit (art. 95 et 96 LTF) sur les conclusions dont elle était saisie. Devant le Tribunal fédéral, toute conclusion nouvelle est irrecevable (<ref-law>).
En l'espèce, l'arrêt attaqué statue exclusivement sur un recours dirigé contre une ordonnance de refus de suivre. Les conclusions du recourant en jonction de causes sont dès lors irrecevables.
2. 2.1 L'arrêt attaqué retient que l'ordonnance du juge d'instruction a été expédiée en courrier B le 31 août 2009. Il en déduit qu'elle est parvenue dans la sphère du recourant avant le 8 septembre 2009 et, par conséquent, que le mémoire de celui-ci, mis à la poste le 18 septembre 2009, a été déposé après l'expiration du délai de recours, qui est de dix jours. Par surabondance, il retient qu'en expliquant, dans son mémoire cantonal, être parti à l'étranger quelques jours et avoir pris connaissance de l'ordonnance attaquée le 9 septembre 2009, le recourant admettait que celle-ci lui était parvenue plus tôt.
Contre cette appréciation, le recourant fait valoir que l'ordonnance du juge d'instruction a été expédiée le 2 septembre 2009, et non le 31 août, et qu'elle lui a été remise par la poste le 9 septembre 2009. Il conteste que l'on puisse, du fait qu'il admet avoir pris connaissance de l'ordonnance le 9 septembre 2009, tirer la conclusion que celle-ci lui était parvenue avant cette date. Ce faisant, il se plaint, avec toute la clarté exigible d'un justiciable non assisté (cf. <ref-ruling> consid. 2b p. 14), d'un déni de justice formel prohibé par l'art. 29 al. 1 Cst.
2.2 Le mémoire que le recourant a adressé à la cour cantonale débute par quelques explications relatives à la recevabilité. Les deux premières phrases en sont ainsi conçues: "Datée du 31 août 2009, l'ordonnance entreprise a été postée en courrier B le 2 septembre. Absent pour quelques jours à l'étranger, j'en ai eu connaissance le 9 septembre."
Il n'est pas arbitraire (sur cette notion: cf. <ref-ruling> consid. 1.3 p. 4/5; <ref-ruling> consid. 5.4 p.148; <ref-ruling> consid. 2.1 p. 9 et les arrêts cités) de déduire d'une telle formulation que l'ordonnance du juge d'instruction est parvenue dans la sphère juridique du recourant pendant que celui-ci était absent à l'étranger, soit avant le 9 septembre 2009. En déclarant tardif le recours cantonal, posté le 18 septembre 2009, l'arrêt attaqué ne commet dès lors pas un déni de justice formel.
Ainsi, le recours doit être rejeté dans la mesure où il est recevable.
3. Comme il est apparu d'emblée que ses conclusions étaient vouées à l'échec, le recourant doit être débouté de sa demande d'assistance judiciaire (<ref-law> a contrario) et supporter les frais de justice (<ref-law>), réduits à 800 fr. pour tenir compte de sa situation financière.

Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté dans la mesure où il est recevable.
2. La demande d'assistance judiciaire est rejetée.
3. Les frais judiciaires, arrêtés à 800 fr., sont mis à la charge du recourant.
4. Le présent arrêt est communiqué aux parties et au Tribunal d'accusation du canton de Vaud.
Lausanne, le 22 février 2010
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président: Le Greffier:
Favre Oulevey