I'm a heavy user of emacs. I switched about 2 years ago after using vim for a few years. Prior to that, I was using the IDE of whatever language I'm in.
Emacs has a steep learning curve, but it's become the perfect environment for me. I use the various modules for each of the languages I program in. Most are built on top of the comint mode. The j-mode is quite good. The syntax highlighting and matching is very nice. It works the same way on linux or windows. I also had wrist pain after becoming a heavy emacs user. I also had pain with vim, but just pain in different fingers. Emacs has largely solved the problem for me with two modules - key-chord mode and ace-jump mode. I use key-chords on the home row for common tasks (jw for save). I've mapped a bunch of bindings to ctrl+l, which is more natural than ctrl+c for me. With ace-jump mode, I can hit two keys jw to jump to any word on the screen or jk to jump to any character. When my fingers start to burn, I switch my bindings out to use different fingers. Emacs evil-mode mode is really good too for modal editing, which sometimes I enjoy when I'm doing a bunch of maintenance work (modifying text vs composing text). It emulates the vim key bindings nearly perfectly Org-mode is fantastic for literate programming or just keeping an executable notebook. I also use it to track my time. I can even run j from within my org-mode snippets with the org-babel-j plugin I wrote: https://github.com/joebo/org-babel-j Emacs macros have saved me a ton of time too over the years. Vim macros were ok too, I just found the emacs ones to be much easier to work with. Just wanted to share my perspective on emacs. Definitely not intended to start a vim/emacs comparison "war" On Wed, Jan 29, 2014 at 9:28 AM, Raul Miller <[email protected]> wrote: > Nowadays we seem to be plagued with a surplus of code that almost no > one understands how to use. > > For myself, my wrists have recovered (you've seen how much text I dump > on the lists here) but I spend most of my coding time trying to > connect the dots - coding possibilities I see with [hopefully] useful > results for other people. > > Put differently, one "virtue" of a good coder is "do not repeat > yourself" but there are two related virtues: "repeat yourself" and "do > not do it at all". Needless to say, this can get confusing to reason > about - if you try to do that in isolation - but they are all > worthwhile approaches, when used judiciously. > > Thanks, > > -- > Raul > > > On Wed, Jan 29, 2014 at 9:15 AM, Roger Hui <[email protected]> wrote: >> Arthur Whitney was talking about a common colleague one time. "E can >> program faster than I can type!" (E is probably not anybody any of you >> would know.) >> >> >> On Wed, Jan 29, 2014 at 5:58 AM, Raul Miller <[email protected]> wrote: >> >>> I've dabbled in elisp - I wrote a minor mode for APL back in the '90s. >>> It was a fun challenge, but physically painful, and I had to give up >>> emacs. >>> >>> See... a problem with emacs is the keyboard chording system - if you >>> are typing alt-shift A, control-P, ... or whatever, and are going 80 >>> words per minute, and your posture isn't the greatest? I was doing >>> something like that and my wrists started hurting terribly. I was >>> afraid I would not be able to type at all. >>> >>> So I switched to vi, and switched my coding style from being prolific >>> to thinking a lot and typing just a bit. This gave me a lot of >>> appreciation to "old school style" and also gave my wrists a chance to >>> recover. You can do a lot with small bits of shell script (or other >>> coding), some careful thought, and working with people. >>> >>> So that is my signature, nowadays - I do not code a lot, and I put a >>> lot of thought (perhaps too much thought) into the code I do write. My >>> wrists thank me (usually - sometimes they still grumble), though >>> sometimes I envy people who can comfortably crank out tons of code. >>> >>> Thanks, >>> >>> -- >>> Raul >>> >>> On Wed, Jan 29, 2014 at 7:01 AM, David Lambert <[email protected]> >>> wrote: >>> > I have a quarter million lines of FORTRAN written over the years in the >>> > various versions. Mostly f77 using ! comments, but not entirely. My >>> goal: >>> > convert the entire code to f2008. Parts A, B, and C are continuation >>> mark, >>> > code, and comment. At this stage I'm addressing various forms of >>> > continuation lines, an example: >>> > >>> > call s( ! comment maybe >>> > ! intervening remarks >>> > *arg) >>> > character*8 a=/'hi'/ ! or whatever >>> > >>> > becomes >>> > >>> > call s& ! comment maybe >>> > ! intervening remarks >>> > &arg) >>> > character(len=8) :: a = (/'hi'/) ! fixed with sed >>> > >>> > Later I'll have emacs reindent the whole thing. Such transformations >>> ignore >>> > replacing common blocks with modules. A build with gfortran will catch >>> > problems that our current compiler does not. Transforming the code with >>> j >>> > makes my job fun, whereas becoming an elisp expert hasn't ever grabbed my >>> > attention. >>> > >>> > On 01/28/2014 07:00 AM, [email protected] wrote: >>> > Message: 1 >>> > Date: Mon, 27 Jan 2014 22:30:14 -0500 >>> > From: David Lambert <[email protected]> >>> > To: chat <[email protected]> >>> > Subject: [Jchat] FSM enhancement proposal >>> > Message-ID: <[email protected]> >>> > Content-Type: text/plain; charset=ISO-8859-1; format=flowed >>> > >>> > >>> > I have information of the forms ABC, AB, BC, AC, A, B, C which I'd like >>> > to separate into 3 boxes. If a part is missing the box should be >>> > empty. I think it is impossible with the current FSM implementation >>> > because it must read a character to yield output. With only one >>> > character on input I cannot obtain '';'';C as output, or any three >>> > boxes. I haven't investigated emit vector but I don't see how it will >>> > help. The 3 boxes preserve the classification work that's already been >>> > accomplished, and I can use _3&([\) to generate a useful array. >>> > >>> > We could enhance the FSM retaining backward compatibility. I'd prefer >>> > to pass a gerund as an additional part of x, have the Function code >>> > specify to use it as an agenda determined by the output code. The agenda >>> > would monadically process the matched items. It seems to me that such a >>> > j FSM would have the full capability of the gnu flex program, excepting >>> > the automatic generation of the state table. >>> > >>> > Perhaps a new output code to emit something ( ace if F is 0 otherwise >>> > i.0 ? ) and change state without reading the next input item would be a >>> > simpler solution to treat the case I've presented. >>> > >>> > Or this may be far too complicated and I need to write my own function. >>> > It would surprise me if the gerund concept were not part of the original >>> > implementation debate. And it would surprise me to learn that I >>> > understand the FSM. For now I'll use a flex bison program. >>> > >>> > >>> > >>> > ------------------------------ >>> > >>> > Message: 2 >>> > Date: Mon, 27 Jan 2014 22:39:23 -0500 >>> > From: Raul Miller <[email protected]> >>> > To: Chat forum <[email protected]> >>> > Subject: Re: [Jchat] FSM enhancement proposal >>> > Message-ID: >>> > <CAD2jOU_tfv6mDdU0o_E5nteCf0k9=v1x_isiaph1omscsud...@mail.gmail.com> >>> > Content-Type: text/plain; charset=UTF-8 >>> > >>> > >>> > I am having trouble understanding your specification. >>> > >>> > Do you mean that you have a sequence of letters, such as: >>> > >>> > BBBCCCACBBBCBBAAAAABAABACACACC >>> > >>> > And you want to separate them into boxes whose letters are lexically >>> > increasing? >>> > >>> > I'd not bother with ;: for that, I'd do something like this: >>> > >>> > (] <;.1~ 1 , 2 >:/\ 'ABC' i. ]) 'BBBCCCACBBBCBBAAAAABAABACACACC' >>> > >>> > Though if you prefer gnu flex and bison, I'm sure you can do it that >>> > way too, with a little time and effort. >>> > >>> > Thanks, >>> > ---------------------------------------------------------------------- >>> > For information about J forums see http://www.jsoftware.com/forums.htm >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >>> >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
