The challenge:
Provide dynamic web fonts that render acceptably across all major browsers, devices and Operating Systems
The story:
So I had used cufon or sifr in the past and had since abandoned both in favor of #font-face. After using #font-face in production for some time, I made a horrifying discovery. Many fonts (most?) look like crap in Windows XP, regardless of browser. Even in google chrome, XP renders the fonts unacceptably jagged and ugly.
I am aware of why this is happening. After reading many excellent posts on ye olde stack overflow, I understand the issue is NOT of font hinting, but of XP having clear-type set to off be default. So ALL fonts are jagged in XP by default regardless of application.
So... if #font-face works great everywhere BUT XP with clear-type off, and is still superior to cufon what should we be doing?
Possible solutions:
#font-face as default, Cufon with user agent sniffing for windows XP.
(currently using, and very much not loving it)
#font-face alone with yet unknown method of forcing clear-type
Cufon alone :(
Another paradigm all together
Failed solutions:
Adobe Typekit (jagged in XP on their own website!, even though they show a smooth specimen jpeg)
Google Webfonts (same problem with XP)
#font-face alone (same problem with XP)
Cufon so far works everywhere, but just sucks, and offers additional challenges if you are animating anything, or wish to update the text after the fact.
Do you have a solution that works completely cross browser and cross OS? What is the best way to handle this?
I'm pretty sure the web-fonts, which look ugly, are missing some hinting (edit: Nope, even though hinting is still required to make a font look good on windows, the real problem here was the disabled ClearType in XP. However, this answer has a solution anyway).
Unlike font renderers on other operating systems the windows engine relies on hinting information shipped with the font. If the hinting is missing, bad or broken the font will look ugly - simple as that. Luckly there's a way to add some automatically generated hinting to a ttf-font using ttfautohint. After adding the hinting you can generate the different web-font-formats (eof, woff, etc) you need from the enhanced TTF. Additionally you should try to use SVG fonts if font-smoothing is disabled, since they are always rendered with antialiasing.
I've written an article on how to create web-fonts on Pixels|Bytes, which explains how to add hinting to a font and how to use my Font Smoothie script to enable SVG fonts when necessary. Hope this helps :)
PS: I'm aware that linking to my own blog won't be appreciated here, but I think my post describes a good solution to the problem, so I posted it anyway. Please leave a comment if you want me to remove the link and I'll do so.
http://www.useragentman.com/blog/2009/11/29/how-to-detect-font-smoothing-using-javascript/
This is what I have found works so far. This solution detects jagged fonts, so then we can do something like this: #font-face as standard, and Cufon as fallback.
In my case, I found that the answer does not in fact center on enabling Clear Type in WinXP. Whether Clear Type is enabled or disabled, I find that some of my #font-face English fonts (especially BLACK, SANS-SERIF) look bad in IE7 and IE8. It's sometimes more than just being jagged or having bad anti-aliasing. The big problem I see is that the shape of the font itself (some fonts, not all) seems to squish into something quite unattractive. I found an acceptable solution by following the advice of Torben. Font Hinting was all I needed, and again, that solution has nothing to do with Clear Type being enabled. To get the font hinting app up and running, read the instructions here:
https://gist.github.com/davelab6/3783491
(I used the "ttfautohint-0.95.tar.gz" file here): http://sourceforge.net/projects/freetype/files/ttfautohint/0.95/
You should also review the documentation, and you need to also install MacPorts (or you will get an error in the Terminal during your build), but since my rep score prevents me from posting more than two URLs, you'll have to Google for that.
Better hinting doesn't mean your #font-face fonts will now look as perfectly smooth and great on IE in WinXP as they do on Macintosh browsers. But I found that the font hinting prevents nasty distortions in the shape of some fonts within IE7 and IE8. To me, that is an acceptable solution.
I can only add that it's rather troublesome to build the ttfautohintGUI on OSX. You have to installed hundreds of MB of software, downloading from multiple locations too, just to build the GUI app. But once done, the app allows you easily to hint your #Font-Face fonts and resolve many WinXP display issues. Just be sure to tick "Windows Compatibility" in the GUI (it's unticked by default). I also unticked the "Add ttfautohintinfo" and "Pre-hinting" options, leaving everything else as their defaults. Click "Browse..." to add your Input File (the font you want to hint), and then copy and paste that path in the Output File, changing the filename to whatever you want it to be. You won't enable the "Run" button unless there is something in both the Input File and Output File fields.
Best wishes.
Is it possible to make the code-completion on Netbeans automatic, like on Aptana or Visual Studio?
I've noticed that Netbeans can sometimes take a while to populate the list, so this might be asking a bit too much, but if possible, I'd like to somehow enable it.
The onlything I've found in the options is the ability to set a custom key-combo, but not to make this automatic.
I know that if you wait a bit, the auto-completion shows up anyway, but I want it to be without delay.
It appears there is a setting in some NetBeans versions that sets the delay for the popup window.
Choose Tools | Options
Choose Advanced Options
Open the Editing and then Editor Settings folders
Select Java Editor and find the Delay of Completion Window Auto Popup property
Enter a new Delay value in milliseconds (default is 250).
Article where I found it: http://www.informit.com/articles/article.aspx?p=519945&seqNum=5
The problem is that this article is a couple years old, so I opened NetBeans (6.1) on my computer and looked for the property but it didn't exist for the Java Editor (It did for other editors like the XML Editor). This leads me to believe my version is newer than the one in the article and the delay property no longer exists for the Java Editor (checking couldn't hurt though).
So instead, I decided to test the delay. I made a sample project, imported and instantiated a list, and then went to call a method. I stopped at the dot to let NetBeans offer suggestions and it was basically immediate (no noticeable delay). It is at this point, I am wondering if the delay you are experiencing is due purely to performance of the computer, especially since you indicate this occurs "sometimes". It is possible that you are looking at rather large classes, and NetBeans is taking extra time to look up the completions. You could try and test to see if this is true or not by testing code completion on a known large class. The other possibility is your computer is not as fast, or is doing work for another program at the same time. You can try and test this by restarting the computer, opening only NetBeans (to maximize resources to NetBeans), and try some code completions. If either exhibit noticeably faster delays, this is most likely the problem.
Hope this helps.
I think I found a solution. I set up autocomplete keyboard shortcuts for all letters and #, it seems to work. In some cases there is a small lag, but it doesn't prevent you from typing. It took about 5 minutes to add those shortcuts.
I tried to get the desired feature by adding the alphabet to the completion selectors. It worked somewhat, you can always try it.
This works for the first two characters you type This is updated one
Goto:
Tools -> Options -> Editor -> Code Completion
Select
Language: [C/C++]
Autopop Triggers for C/C++ Identifiers
.;->;.*;->*;::;new ; a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;aa;ab;ac;ad;ae;af;ag;ah;ai;aj;ak;al;am;an;ao;ap;aq;ar;as;at;au;av;aw;ax;ay;az;ba;bb;bc;bd;be;bf;bg;bh;bi;bj;bk;bl;bm;bn;bo;bp;bq;br;bs;bt;bu;bv;bw;bx;by;bz;ca;cb;cc;cd;ce;cf;cg;ch;ci;cj;ck;cl;cm;cn;co;cp;cq;cr;cs;ct;cu;cv;cw;cx;cy;cz;da;db;dc;dd;de;df;dg;dh;di;dj;dk;dl;dm;dn;do;dp;dq;dr;ds;dt;du;dv;dw;dx;dy;dz;ea;eb;ec;ed;ee;ef;eg;eh;ei;ej;ek;el;em;en;eo;ep;eq;er;es;et;eu;ev;ew;ex;ey;ez;fa;fb;fc;fd;fe;ff;fg;fh;fi;fj;fk;fl;fm;fn;fo;fp;fq;fr;fs;ft;fu;fv;fw;fx;fy;fz;ga;gb;gc;gd;ge;gf;gg;gh;gi;gj;gk;gl;gm;gn;go;gp;gq;gr;gs;gt;gu;gv;gw;gx;gy;gz;ha;hb;hc;hd;he;hf;hg;hh;hi;hj;hk;hl;hm;hn;ho;hp;hq;hr;hs;ht;hu;hv;hw;hx;hy;hz;ia;ib;ic;id;ie;if;ig;ih;ii;ij;ik;il;im;in;io;ip;iq;ir;is;it;iu;iv;iw;ix;iy;iz;ja;jb;jc;jd;je;jf;jg;jh;ji;jj;jk;jl;jm;jn;jo;jp;jq;jr;js;jt;ju;jv;jw;jx;jy;jz;ka;kb;kc;kd;ke;kf;kg;kh;ki;kj;kk;kl;km;kn;ko;kp;kq;kr;ks;kt;ku;kv;kw;kx;ky;kz;la;lb;lc;ld;le;lf;lg;lh;li;lj;lk;ll;lm;ln;lo;lp;lq;lr;ls;lt;lu;lv;lw;lx;ly;lz;ma;mb;mc;md;me;mf;mg;mh;mi;mj;mk;ml;mm;mn;mo;mp;mq;mr;ms;mt;mu;mv;mw;mx;my;mz;na;nb;nc;nd;ne;nf;ng;nh;ni;nj;nk;nl;nm;nn;no;np;nq;nr;ns;nt;nu;nv;nw;nx;ny;nz;oa;ob;oc;od;oe;of;og;oh;oi;oj;ok;ol;om;on;oo;op;oq;or;os;ot;ou;ov;ow;ox;oy;oz;pa;pb;pc;pd;pe;pf;pg;ph;pi;pj;pk;pl;pm;pn;po;pp;pq;pr;ps;pt;pu;pv;pw;px;py;pz;qa;qb;qc;qd;qe;qf;qg;qh;qi;qj;qk;ql;qm;qn;qo;qp;qq;qr;qs;qt;qu;qv;qw;qx;qy;qz;ra;rb;rc;rd;re;rf;rg;rh;ri;rj;rk;rl;rm;rn;ro;rp;rq;rr;rs;rt;ru;rv;rw;rx;ry;rz;sa;sb;sc;sd;se;sf;sg;sh;si;sj;sk;sl;sm;sn;so;sp;sq;sr;ss;st;su;sv;sw;sx;sy;sz;ta;tb;tc;td;te;tf;tg;th;ti;tj;tk;tl;tm;tn;to;tp;tq;tr;ts;tt;tu;tv;tw;tx;ty;tz;ua;ub;uc;ud;ue;uf;ug;uh;ui;uj;uk;ul;um;un;uo;up;uq;ur;us;ut;uu;uv;uw;ux;uy;uz;va;vb;vc;vd;ve;vf;vg;vh;vi;vj;vk;vl;vm;vn;vo;vp;vq;vr;vs;vt;vu;vv;vw;vx;vy;vz;wa;wb;wc;wd;we;wf;wg;wh;wi;wj;wk;wl;wm;wn;wo;wp;wq;wr;ws;wt;wu;wv;ww;wx;wy;wz;xa;xb;xc;xd;xe;xf;xg;xh;xi;xj;xk;xl;xm;xn;xo;xp;xq;xr;xs;xt;xu;xv;xw;xx;xy;xz;ya;yb;yc;yd;ye;yf;yg;yh;yi;yj;yk;yl;ym;yn;yo;yp;yq;yr;ys;yt;yu;yv;yw;yx;yy;yz;za;zb;zc;zd;ze;zf;zg;zh;zi;zj;zk;zl;zm;zn;zo;zp;zq;zr;zs;zt;zu;zv;zw;zx;zy;zz;Aa;Ab;Ac;Ad;Ae;Af;Ag;Ah;Ai;Aj;Ak;Al;Am;An;Ao;Ap;Aq;Ar;As;At;Au;Av;Aw;Ax;Ay;Az;Ba;Bb;Bc;Bd;Be;Bf;Bg;Bh;Bi;Bj;Bk;Bl;Bm;Bn;Bo;Bp;Bq;Br;Bs;Bt;Bu;Bv;Bw;Bx;By;Bz;Ca;Cb;Cc;Cd;Ce;Cf;Cg;Ch;Ci;Cj;Ck;Cl;Cm;Cn;Co;Cp;Cq;Cr;Cs;Ct;Cu;Cv;Cw;Cx;Cy;Cz;Da;Db;Dc;Dd;De;Df;Dg;Dh;Di;Dj;Dk;Dl;Dm;Dn;Do;Dp;Dq;Dr;Ds;Dt;Du;Dv;Dw;Dx;Dy;Dz;Ea;Eb;Ec;Ed;Ee;Ef;Eg;Eh;Ei;Ej;Ek;El;Em;En;Eo;Ep;Eq;Er;Es;Et;Eu;Ev;Ew;Ex;Ey;Ez;Fa;Fb;Fc;Fd;Fe;Ff;Fg;Fh;Fi;Fj;Fk;Fl;Fm;Fn;Fo;Fp;Fq;Fr;Fs;Ft;Fu;Fv;Fw;Fx;Fy;Fz;Ga;Gb;Gc;Gd;Ge;Gf;Gg;Gh;Gi;Gj;Gk;Gl;Gm;Gn;Go;Gp;Gq;Gr;Gs;Gt;Gu;Gv;Gw;Gx;Gy;Gz;Ha;Hb;Hc;Hd;He;Hf;Hg;Hh;Hi;Hj;Hk;Hl;Hm;Hn;Ho;Hp;Hq;Hr;Hs;Ht;Hu;Hv;Hw;Hx;Hy;Hz;Ia;Ib;Ic;Id;Ie;If;Ig;Ih;Ii;Ij;Ik;Il;Im;In;Io;Ip;Iq;Ir;Is;It;Iu;Iv;Iw;Ix;Iy;Iz;Ja;Jb;Jc;Jd;Je;Jf;Jg;Jh;Ji;Jj;Jk;Jl;Jm;Jn;Jo;Jp;Jq;Jr;Js;Jt;Ju;Jv;Jw;Jx;Jy;Jz;Ka;Kb;Kc;Kd;Ke;Kf;Kg;Kh;Ki;Kj;Kk;Kl;Km;Kn;Ko;Kp;Kq;Kr;Ks;Kt;Ku;Kv;Kw;Kx;Ky;Kz;La;Lb;Lc;Ld;Le;Lf;Lg;Lh;Li;Lj;Lk;Ll;Lm;Ln;Lo;Lp;Lq;Lr;Ls;Lt;Lu;Lv;Lw;Lx;Ly;Lz;Ma;Mb;Mc;Md;Me;Mf;Mg;Mh;Mi;Mj;Mk;Ml;Mm;Mn;Mo;Mp;Mq;Mr;Ms;Mt;Mu;Mv;Mw;Mx;My;Mz;Na;Nb;Nc;Nd;Ne;Nf;Ng;Nh;Ni;Nj;Nk;Nl;Nm;Nn;No;Np;Nq;Nr;Ns;Nt;Nu;Nv;Nw;Nx;Ny;Nz;Oa;Ob;Oc;Od;Oe;Of;Og;Oh;Oi;Oj;Ok;Ol;Om;On;Oo;Op;Oq;Or;Os;Ot;Ou;Ov;Ow;Ox;Oy;Oz;Pa;Pb;Pc;Pd;Pe;Pf;Pg;Ph;Pi;Pj;Pk;Pl;Pm;Pn;Po;Pp;Pq;Pr;Ps;Pt;Pu;Pv;Pw;Px;Py;Pz;Qa;Qb;Qc;Qd;Qe;Qf;Qg;Qh;Qi;Qj;Qk;Ql;Qm;Qn;Qo;Qp;Qq;Qr;Qs;Qt;Qu;Qv;Qw;Qx;Qy;Qz;Ra;Rb;Rc;Rd;Re;Rf;Rg;Rh;Ri;Rj;Rk;Rl;Rm;Rn;Ro;Rp;Rq;Rr;Rs;Rt;Ru;Rv;Rw;Rx;Ry;Rz;Sa;Sb;Sc;Sd;Se;Sf;Sg;Sh;Si;Sj;Sk;Sl;Sm;Sn;So;Sp;Sq;Sr;Ss;St;Su;Sv;Sw;Sx;Sy;Sz;Ta;Tb;Tc;Td;Te;Tf;Tg;Th;Ti;Tj;Tk;Tl;Tm;Tn;To;Tp;Tq;Tr;Ts;Tt;Tu;Tv;Tw;Tx;Ty;Tz;Ua;Ub;Uc;Ud;Ue;Uf;Ug;Uh;Ui;Uj;Uk;Ul;Um;Un;Uo;Up;Uq;Ur;Us;Ut;Uu;Uv;Uw;Ux;Uy;Uz;Va;Vb;Vc;Vd;Ve;Vf;Vg;Vh;Vi;Vj;Vk;Vl;Vm;Vn;Vo;Vp;Vq;Vr;Vs;Vt;Vu;Vv;Vw;Vx;Vy;Vz;Wa;Wb;Wc;Wd;We;Wf;Wg;Wh;Wi;Wj;Wk;Wl;Wm;Wn;Wo;Wp;Wq;Wr;Ws;Wt;Wu;Wv;Ww;Wx;Wy;Wz;Xa;Xb;Xc;Xd;Xe;Xf;Xg;Xh;Xi;Xj;Xk;Xl;Xm;Xn;Xo;Xp;Xq;Xr;Xs;Xt;Xu;Xv;Xw;Xx;Xy;Xz;Ya;Yb;Yc;Yd;Ye;Yf;Yg;Yh;Yi;Yj;Yk;Yl;Ym;Yn;Yo;Yp;Yq;Yr;Ys;Yt;Yu;Yv;Yw;Yx;Yy;Yz;Za;Zb;Zc;Zd;Ze;Zf;Zg;Zh;Zi;Zj;Zk;Zl;Zm;Zn;Zo;Zp;Zq;Zr;Zs;Zt;Zu;Zv;Zw;Zx;Zy;Zz;aaa;aab;aac;aad;aae;aaf;aag;aah;aai;aaj;aak;aal;aam;aan;aao;aap;aaq;aar;aas;aat;aau;aav;aaw;aax;aay;aaz;aba;abb;abc;abd;abe;abf;abg;abh;abi;abj;abk;abl;abm;abn;abo;abp;abq;abr;abs;abt;abu;abv;abw;abx;aby;abz;aca;acb;acc;acd;ace;acf;acg;ach;aci;acj;ack;acl;acm;acn;aco;acp;acq;acr;acs;act;acu;acv;acw;acx;acy;acz;ada;adb;adc;add;ade;adf;adg;adh;adi;adj;adk;adl;adm;adn;ado;adp;adq;adr;ads;adt;adu;adv;adw;adx;ady;adz;aea;aeb;aec;aed;aee;aef;aeg;aeh;aei;aej;aek;ael;aem;aen;aeo;aep;aeq;aer;aes;aet;aeu;aev;aew;aex;aey;aez;afa;afb;afc;afd;afe;aff;afg;afh;afi;afj;afk;afl;afm;afn;afo;afp;afq;afr;afs;aft;afu;afv;afw;afx;afy;afz;aga;agb;agc;agd;age;agf;agg;agh;agi;agj;agk;agl;agm;agn;ago;agp;agq;agr;ags;agt;agu;agv;agw;agx;agy;agz;aha;ahb;ahc;ahd;ahe;ahf;ahg;ahh;ahi;ahj;ahk;ahl;ahm;ahn;aho;ahp;ahq;ahr;ahs;aht;ahu;ahv;ahw;ahx;ahy;ahz;aia;aib;aic;aid;aie;aif;aig;aih;aii;aij;aik;ail;aim;ain;aio;aip;aiq;air;ais;ait;aiu;aiv;aiw;aix;aiy;aiz;aja;ajb;ajc;ajd;aje;ajf;ajg;ajh;aji;ajj;ajk;ajl;ajm;ajn;ajo;ajp;ajq;ajr;ajs;ajt;aju;ajv;ajw;ajx;ajy;ajz;aka;akb;akc;akd;ake;akf;akg;akh;aki;akj;akk;akl;akm;akn;ako;akp;akq;akr;aks;akt;aku;akv;akw;akx;aky;akz;ala;alb;alc;ald;ale;alf;alg;alh;ali;alj;alk;all;alm;aln;alo;alp;alq;alr;als;alt;alu;alv;alw;alx;aly;alz;ama;amb;amc;amd;ame;amf;amg;amh;ami;amj;amk;aml;amm;amn;amo;amp;amq;amr;ams;amt;amu;amv;amw;amx;amy;amz;ana;anb;anc;and;ane;anf;ang;anh;ani;anj;ank;anl;anm;ann;ano;anp;anq;anr;ans;ant;anu;anv;anw;anx;any;anz;aoa;aob;aoc;aod;aoe;aof;aog;aoh;aoi;aoj;aok;aol;aom;aon;aoo;aop;aoq;aor;aos;aot;aou;aov;aow;aox;aoy;aoz;apa;apb;apc;apd;ape;apf;apg;aph;api;apj;apk;apl;apm;apn;apo;app;apq;apr;aps;apt;apu;apv;apw;apx;apy;apz;aqa;aqb;aqc;aqd;aqe;aqf;aqg;aqh;aqi;aqj;aqk;aql;aqm;aqn;aqo;aqp;aqq;aqr;aqs;aqt;aqu;aqv;aqw;aqx;aqy;aqz;ara;arb;arc;ard;are;arf;arg;arh;ari;arj;ark;arl;arm;arn;aro;arp;arq;arr;ars;art;aru;arv;arw;arx;ary;arz;asa;asb;asc;asd;ase;asf;asg;ash;asi;asj;ask;asl;asm;asn;aso;asp;asq;asr;ass;ast;asu;asv;asw;asx;asy;asz;ata;atb;atc;atd;ate;atf;atg;ath;ati;atj;atk;atl;atm;atn;ato;atp;atq;atr;ats;att;atu;atv;atw;atx;aty;atz;aua;aub;auc;aud;aue;auf;aug;auh;aui;auj;auk;aul;aum;aun;auo;aup;auq;aur;aus;aut;auu;auv;auw;aux;auy;auz;ava;avb;avc;avd;ave;avf;avg;avh;avi;avj;avk;avl;avm;avn;avo;avp;avq;avr;avs;avt;avu;avv;avw;avx;avy;avz;awa;awb;awc;awd;awe;awf;awg;awh;awi;awj;awk;awl;awm;awn;awo;awp;awq;awr;aws;awt;awu;awv;aww;awx;awy;awz;axa;axb;axc;axd;axe;axf;axg;axh;axi;axj;axk;axl;axm;axn;axo;axp;axq;axr;axs;axt;axu;axv;axw;axx;axy;axz;aya;ayb;ayc;ayd;aye;ayf;ayg;ayh;ayi;ayj;ayk;ayl;aym;ayn;ayo;ayp;ayq;ayr;ays;ayt;ayu;ayv;ayw;ayx;ayy;ayz;aza;azb;azc;azd;aze;azf;azg;azh;azi;azj;azk;azl;azm;azn;azo;azp;azq;azr;azs;azt;azu;azv;azw;azx;azy;azz;
Good Luck!
I am a college student that has fallen in love with Emacs. I have used IDEs in the past, and although features like Intellisense made the switch to Emacs very hard, I now think that Emacs is much more powerful, and features like Intellisense can be pretty closely matched by various modes depending on language (and I am not referring to M-/). I am happily writing Elisp code for everything that I need that isn't provided by modes or by Emacs itself and I love the way that it adapts and molds to my needs.
However, I do think that its main disadvantage is the fact that it has a pretty steep learning curve and that most new programmers will not even begin to learn it out of many common misconceptions.
So, I want to know the opinions of young people (or any person who didn't start using Emacs before there were IDEs) that are Emacs users. Just to get some reassurance that Emacs is not dead within our Eclipse-loving generation =). (Opinions of users of any other highly extensible editor like Jedit are also welcome)
My "highly extensible editor" of choice is vim. Started using vi 10 years ago, at age 17, and I haven't really looked back. I like to stay away from my mouse as much as possible.
I rarely work in compiled languages these days, so the only thing I feel like I'm missing from an IDE is syntax-completion. Constantly switching to a browser to look up the order of arguments to various PHP functions gets a bit tedious.
PS: I don't want to start a vi/Emacs war here. I suspect that Emacs and vi[m] users have more in common with each other than either group has with IDErs.
I'm 62 and I've been using emacs for 21 years. I am capable of using vim in a pinch, but I really prefer emacs.
I used to use TECO a long time ago (in the 1970's) and I liked that one too.
First off, why do you care what other people think? It is clear that
Emacs has a vibrant community, as there are lots of extensions and
lots of people working on the core. There is plenty of support to be
had for it.
If you are "worried" that other editors are better, then you should
try those editors and make the decision yourself. Only you can know
what you like.
That said, I am young (23) and use Emacs. I have used it for almost
15 years. I have tried other editors, including Vim, Eclipse,
Netbeans, and Textmate. None of those editors work as well as Emacs
as far as I'm concerned, so I feel I made the right choice. I can't,
however, tell you which choice to make. You will have to figure it
out for yourself.
It is important to note that I am pretty "invested" in Emacs. I
maintain a lot of extensions, and have spent a lot of time
understanding the Emacs core... so if I switch editors, I am throwing
away a lot of time and experience. This could theoretically cloud my
judgment, but I don't think it does. Textmate works like Emacs, but
has fewer features. (I try not to use my mouse, so the eyecandy and
OS X integration don't buy me much.) Netbeans and Eclipse are nice
for managing Java projects, but on the rare occasion that I have to do
Java, I still find Emacs easier to use. I even find that writing Ant
files myself gets me closer to "where I want to be" than relying on
Eclipse's auto-builds. That leaves Vim, which is certainly
featureful, but is still a "lesser" Emacs. Emacs has all the features
of Vim -- if you want modal editing, you can just invoke Viper. The
only reason to use Vim is that you have already learned Vim, and you
can't stand the keybinding and editing model differences between Vim
and Viper. (No, Viper is not a Vim clone. It's Emacs with modal
editing.)
Anyway, JMHO. I think Emacs will serve you well throughout your
programming career. (Or any career that involves text. Emacs is
great for writing books... and email.)
When i was young i heard this:
A good hacker must be expert in 4 editors and 4 languages.
And have taken it to heart since then....
I routinely use vi(m), (x)emacs, eclipse , sed/awk/perl ( yeah .. they are text editors ).
IMHO, mastering a range of tools is essential. One should subject his brain to move
out of comfort zone every once in a while.
I now found it amazing that i have hundreds of key combinations at my fingertip , and rarely type key sequence of one into other.
I'm 21 and started using Emacs at 15, only moving away for Textmate/E in recent years. I personally can't stand IDEs, feeling they get in the way far more than they help. Give me a good straight-up text editor any day.
I'm 19, started using emacs last year, and I'm liking it. Even though I don't know how to use its "advanced" features yet, I'm comfortable with the fact that they exist and I could learn them when needed.
In my college, there shouldn't be much more than 5 students using Emacs or Vi, though.
Fear not, young programmer, and take courage from this Editor or IDE analysis. Powerful editors like Emacs will be around as long as there are language mavens. And IDE's will continue to serve the tool mavens. And each camp will continue to be amazed at how [un]productive the other is. ;-)
Well, I started using Emacs in college, and I'm only 30, so I think I count as part of the "Eclipse-loving generation".
I don't use it every day, but Emacs is certainly near the top of my tools list. (And much higher than Eclipse, I can tell you that.)
The first proper editor I used was Brief and then a number of IDE based ones before someone convinced me to try emacs (on Windows no less). I made the decision then that I was going to learn that one editor well and when I needed it to do something different I'd learn how to do it.
The real benefit of choosing one editor and sticking to it is consistency. Whatever language or task you're doing, if you're in your favourite editor, everything is easily remembered. Added to that the extensibility makes things possible that are often not on the slick IDEs.
Of course the downside is that your emacs session is a well crafted environment. If I don't have my .emacs loaded up it can seem like a foreign environment. Things work almost but not quite like I'm used to. Fortunately with DVCS systems my perfect environment is a git clone away.
I'm a university student age 19, but I started learning Emacs a good 2-3 years ago. I tried vi(m) for a bit, but I couldn't stand the modal editing model.
Prior to my introduction to Emacs, I was using Gedit and nano to do all my coding.
If you go to most grad schools, you will find your share of UNIX hackers who stick with emacs, so it's definitely there.
I'm 28 and switched from vim to emacs a month or so ago. I learnt a bit of emacs while learning lisp. I switched from vim because having compiler / debugger / shell integration made a lot of sense to me and I like the idea of the extensibility / customization.
I've got a few die-hard eclipse / intellij people I work with that are young and are rubbing their chins while thinking about making the switch. The buffer philosophy was almost enough to sell one person who was sick of tabs in IDEs.
It's not so much about age I don't think - those that are considering emacs are the ones that are forward thinking enough to realize that is has powerful enough features / ideas that the learning curve is / might be worth it.
I'm 22 year old emacs user and I cry whenever I have to leave it to do something on other IDEs.
I'm 21 and I use vim. It's a real step up from the other programming editors I had been using, and I would recommend anyone else in computer science courses to try it out.
I'm 23 and emacs was taught in our Operating Systems course as the "C editor you should use." I used it for the course, but have moved on to other IDEs that better suit my workflow and day to day development environment.
Edit Because my original post was not altogether helpful.
I used emacs through a command terminal inside of PuTTY and that is my extent of using it. I didn't mind it as an editor and got good enough with the shortcuts to be quite productive. I haven't really explored the emacs editor anymore than that because I was already using eclipse and really liked it.
Now, I use eclipse day to day because it is an extensible language that I have to develop with Java, ActionScript, JavaScript, PHP, CSS, HTML, and even Scheme. I also have a custom eclipse extension that I'm perfecting that helps me be more productive in my full time niche (WordPress development). Eclipse provides FTP and SSH services and I've been familiar with the interface for longer than any other IDE, and that is why I use it.
I was born in 1970*, but came (back) to programming about 6 years ago, starting with Visual Basic 6 (ay-yi-yi!). A co-worker would hard-code all his Perl in a text-editor (INCLUDING forms), which boggled my mind, but did not entrance. Slowly, I started using humble MS notepad for... notes while on the phone, open tasks throughout the day, etc. And slowly, I started wanting more. A number of other factors (desire to work closer to regexes, old desire to learn LISP [I came of age in the 80s, if you know what I mean]) lead me through a couple of editors, and finally to Emacs.
Now, I get frustrated in IDEs that I can't key-navigate and tweak to my heart's content.
*okay, so I may no longer be a "young people" -- but when I started using Emacs I was in my early-mid 30s, and identified as such.
I'm 26 and I'm using VIM for several years now for C++ development. All my team mates use either VIM or Emacs (50% vs 50%, we have great flames from time to time), our lead is also using VIM. It's a best choice for us on Solaris.
However for large MS APIs like DirectX I use VS... its sometimes pain to switch but it's much easier to tackle this kind of monster :)
I barely step out of my VIM these days and on those applications where I find myself forced into an IDE, I quickly remember why. I have become so accustomed to the VIM hotkeys for selection, replacement, folding, etc. that my productivity gets floored.
Like others, I rarely work in compiled languages anymore, so I've setup shortcuts that run my Perl/PHP paste the interpreters to find syntax errors. In some cases, I've even set up VIM to run available unit tests through the same interface. It's also very easy to alt-tab back to a browser (preferably on another monitor) and hit "Control-R" for a refresh, all without touching the mouse.
I'm 21 and I use vim for now 3 or 4 years...
I once tried emacs when one of my teacher told me it was better than Vim...but I prefered my workflow with vim...
I tried to use emacs last week because I had problem indenting html files...But my teamate lost me when he started talking about key combination or something like that. My guess is that vim or emacs are two great editor...It's better than most of the IDE I know.
Thumbs up to everyone.
I'm 20 and I started using Emacs last summer when I have to code c++ on linux, and Emacs was the only editor I can stand on openSUSE (Kate is horrible, horrible! - especially my work machine is kinda slow). Then I was won over; there is really nothing better in the world for a mouse-hater. Now I use emacs (yeah on Windows...) for all kind of thing including doing file operations with dired and playing tetris ;)
That being said I still code c# in Visual Studio (occasion switch to emacs for major refactoring and boilerplate work, which is much^100 easier in emacs). IF emacs has intellisense (that works) then I'll dump the text editor in VS studio (I will still use the GUI designer though, nothing replaces that); as of now, having to look up classes is too much a pain for me to code c#.NET in emacs.
I'm a 19 year old college student who uses Emacs - I started using it about a year ago and haven't looked back.
I've only been using emacs for about 10 years now. At one point I took a decided turn to learn it (and vi) to be more comfortable editing directly on servers.
When it comes to writing code quickly and with little red flags when the syntax is wrong in realtime, using an IDE is like wearing gloves when handling thorny plants: you don't have to be as careful. (It's also like using a word processor with automatic spelling fixes and grammar checks compared to using, well, emacs for writing.)
So, I mostly use Eclipse/Xcode/other-required-IDE except when it comes to quick changes, direct edits on a server, or other remote/fast editing scenarios.
What I haven't done is looked around to see if there are any good modes for emacs that allow it to provide such quick editing help as other IDEs (though, the default modes do help quite a bit, anyway -- this isn't raw text editing, really).
I also had a pleasant surprise recently when I realized much of the Mac OS UI can use emacs commands in a similar way to how unix command line editing can be done with emacs commands. How cool is that?
I am under 30 and I use emacs.
Currently, I has to interface with computer through software speech recognition.
Nothing beats emacs because various commands are easy to program for recognition and create aliases.
now, it took me some time to get comfortable with programming in elisp, but I think benefit was worth it. I have tried using eclipse, but there is something about emacs, particularly extensibility, that it's hard to replace.
Mostly I use gedit. Simple and sweet. I'm 20 and always hated IDEs (I got my start with Netbeans in high school).
Emacs is all right; it doesn't quite do everything I like jEdit to do, but I'm not interested in spending time writing macros and plug-ins for my editor - I like getting stuff done instead. If I needed my editor to do something that different, I'd get another editor or install someone else's plugin.
I've used jEdit, Visual Studio, notepad++, TextWrangler. I abhor VIM.
Ironic....
I use emacs full-time now. Several months after the above answer I was doing a lot of remote logins into Linux and nano got too constricting. And, yes, I've spent time writing macros and plug-ins for emacs. jEdit is still pretty good, but emacs is quite better. Still don't use vim(yet?).
I'm 17 and I started using Emacs when I was 14, and VIM when I was 15. I use Emacs for SLIME and ERC mostly now, preferring GVim for editing files and such.
Each time I approached a respected guru type about Emacs, they would warn me away. Most of them didn't like it, either. I took that as a clue.
OTOH, I was interested in TECO a long time ago (now you know my age), and I hear Emacs grew out of that. So, I still wonder...
You can have my copies of Eclipse, NetBeans and Visual Studio when you pry them from my cold, dead hands!
I tried to learn how to use Emacs when I started my degree, but I eventually gave up. Part of that is because I have a poor memory, and its keyboard shortcuts are unconventional compared to what I am use to.
I do almost all my coding in TextMate (which has been dubbed the Emacs of Macs). If I'm in a command-line environment then ViM does the trick.
I code J2me in Windows, where my company doesn't impose me on certain IDE. And guess what, I return to my Old friend, Emacs...
I am 31 now, and I first learning emacs ca 23. But, the situation makes me change IDE alots : Netbeans, VS.NET, Eclipse, etc.
You know, Emacs still beat other, in some perspective :)
Has anyone managed to get Vim integrated into Eclipse painlessly? I just want to use Vim for the editor while retaining the general Eclipse interface. I have tried using Eclim plugin but the editor seemed to crash more often than work (the site said that the editor replacement functionality is still beta).
On the flip side, is there any IDE which matches Eclipse's functionality—mainly the integration with SVN, ant, etc.—and is also able to use Vim?
I mostly use eclipse for SAS SCL, Java and Javascript programming and find the eclipse editor too "mouse-y".
I'd also like, in a perfect world, to use vimdiff as a diff viewer for SVN (we use TortoiseSVN) while checking for diffs or conflicts during merge etc. I admit I havent spent a lot of time trying to get these things to work. I feel guilty about spending too much time on potential wild-goose-chases while my other team members are working away at their code, perfectly content with all that Eclipse has to offer.
Edit: Just found this while desperately browsing around: Vim plugin. Any experience using this? From the claims on the site, it sounds perfect.
I've been using Vrapper for about 2 months and it works great. It is simple to install, and makes life much easier.
It doesn't integrate Vim with Eclipse, it just emulates Vim's behaviour so you don't need to have Vim installed.
EDIT:
I have been experiencing errors while refactoring methods in Eclipse (only when Vrapper was installed) so I stopped using it.
Now I'm using ViPlugin (very similar to vrapper). It works great (especially since version 2.0) and I recommend it, but it is not free (but cheap and has a trial version)
Edit
As the new post mentioned, if we always use the rename dialog to rename, it can be a work around for Varpper.
Preferences > Java > and uncheck "Rename in editor without dialog"
http://sourceforge.net/apps/trac/vrapper/ticket/96
The consensus seems summarized in that Wanted: VIM in Eclipse article.
No decent Vi plugin exists for eclipse, except viplugin which does not offer macro mechanisms.
Whereas on the NetBeans side... jvi does a killing job ;)
WOW, this is the one!
http://vrapper.sourceforge.net/home/
It just came out a few months ago, and seems much better than the other alternatives...and it is open source.
I use Viable, which is a new plugin for Eclipse providing Vi emulation. It is very similar to vrapper, but it doesn't have the same problem as vrapper with refactoring (as cysiek10 described.)
It's got some pretty cool features which none of the other Vim emulators in Eclipse seem to have (though jvi for NetBeans has a few of these) such as:
Visual block mode
External filters and commands
Command history
Window splits (love having this one!)
It is pay; however, you can try the full version for free just like viPlugin.
I never had much luck with vim integration into any IDE, be it Eclipse, Visual Studio, NetBeans, or sth else. Instead when stuck using an IDE, I just make the IDE launch a custom program: which passes the file onto vim using the client/server feature.
I.e. vim --servername SomeName --remote-{choice of how to open it: splits or tabs} {extra args like filename and +line#}
I just tried Eclim http://eclim.org/ and found it really good. I can still edit inside Vim, and enjoy most of the benefits of the eclipse IDE inside Vim (such as better omni completions).
The best thing about Eclim is we are still using the original Vim, so I can enjoy all the existing benefits (my own functions, macros, etc.) while having the extra convenience provided by an IDE.
http://vimplugin.org, which I found over the weekend was the closest I could come to a nice integration. Unfortunately when I opened more than 2 files in my IDE, it made my entire workstation unresponsive. And I didn't even use the "new process" option for the editor.
So bottom line it does seem that there is no decent integration available yet. Although with some it's close. I'm rooting for vimplugin to stabilize and I'll also some time (when I'm not eating up my employer's time like now) play some more with hte plugin to see if I can make it usable.
I tried Eclim and didn't like it at all. I ended using this plugin called "viPlugin," which actually works well enough to warrant using it every day. Here is the site for viPlugin:
http://www.viplugin.com
The big downside of this plugin is that it's not free. I paid for it, and I think it's worth it.
...is there any IDE which matches Eclipse's functionality -- mainly the integration with SVN, ant, etc. -- and is also able to use Vim?
IntelliJ IDEA has a very good VI plugin, but I didn't like it, although the plugin did it's work.
My problem was I have formed habits to use IDEA and those were harder and my experiment didn't it through. So I uninstall the plugin, and learned idea shortcuts instead.
But, is not free :(
Vrapper does the trick.
After installing Vrapper you need to remove CTRL+W key binding in Eclipse settings. Or else it keeps closing the editor when you actually meant Backspace.
It also comes with "surround" and split window plugins. Be sure to install those.
This is not 100% Vim, though. And nothing is 100% Vim except for Vim (doh!). You will find some commands missing (or you may not, depending on how "vimy" you are). But vrapper has :vim command, which opens up Vim editor with the current file in the buffer and places your cursor in the exact location in the file. This way you can continue editing from where you left off. When you're done in Vim just close the editor, and you return to your eclipse editor.
I hope this was helpful.