Monday, November 5, 2012

Difficulty in using VIM

People from a law firm use a somewhat large program written in Common Lisp (sbcl). The program fetch laws from Internet, comments them with input from books about law interpretation or civil/criminal procedures, and prepare specialized text for each civil or criminal action the lawyer is bringing in a court of law. The specialized text is used to generate an ebook, that can be read using the Amazon's Kindle or Rakuten's Kobo.

The program is also supposed to generate specialized Internet pages that a client can browse to follow his/her defense. If the client is in jail and has only a cell phone to talk to his lawyers, the program detects his situation, and generates a page that is mobile compliant. However, if the client is a large corporation, the page may be well designed and full of images and video clips to impress the CEO.

The program also provides annotations from legal doctrines. A legal doctrine is a framework often established through precedent in the common law, or books written in Latin or French, in the case of civil law tradition. Finally, the program must handle emails; it doesn't matter which email address an associate lawyer uses, a possible client may write to the firm's email address.

Courts handle civil and criminal procedures electronically. However, there are a lot of paperwork around. The program must use an OCR to digitize the paperwork, and present it as a pdf document to the lawyer (or epub format for Kobo, or mobi format for the Kindle).

The program that I described is written in Emacs lisp, sbcl Common Lisp, Bigloo scheme, and a small portion in C (the public key stuff is in C). Emacs lisp uses call-process-region to trigger a Common Lisp program, that processes the text, and returns the result to the buffer that the lawyer is editing. In fact, the text looks more like a form, than a text. The lawyer fills the blanks.

By the way, most of text processing in a law firm is computational intensive, and Emacs Lisp is not fast enough. Therefore, the designers of the program wrote part of the code in SBCL Common Lisp, that Emacs triggers with call-process-region.

Basically, the lawyers need a text editor, that can run a process in a separate buffer/window, and call Common Lisp in another buffer/window. Internet server, Internet scripting, email handling, databases, everything is in Common Lisp.

Since people say that Emacs is obsolete, difficult to use, and weird, I decided to investigate how well other IDE/editors handles the lawyers' program. I started with Eclipse. As you can guess, it didn't work. Eclipse proved to be full of bugs, and very difficult to find and install appropriate plugins, etc. Besides this, Eclipse does not call a shell box as well as Emacs.

Right now, I am trying VIM. The first thing I need is to open two windows in VIM. One of them must contain the text that the lawyer is editing. The other window runs the Lisp REPL. The lawyer switches from one windows to the other as the need may arise (in Emacs he does so with "Ctrl-x o").

Here is what I tried:

1 -- I installed a program called SLIMV. The programs claims that it is as good as SLIME, the very same script that the law firm is using to run Common Lisp. However, SLIMV proved to be very ugly, and it is not working properly. When there is an error, I am not able to abort the debugger. In fact, slimv does not handle errors gracefully. That is the problem I found with slimv.

2 -- A vim user told me that vim is not supposed to handle screens, windows, shells, etc. I should use a program called SCREEN for this kind of tasks. Therefore, I downloaded the last version of SCREEN, compiled it, and installed it. I learned how to write a script in SCREEN. My script opens two screens, splits the terminal in two regions, put "rlwrap sbcl" in a region, and vim in the other. However, vim does not seem to behaved well within SCREEN. In other words, vim scrambles the text.

I also tried other solutions, that work so well in Emacs. For instance, I tried the :shell command, a program called conque, and another program called tmux.

My expectations were quite high when I started to work with vim. I still hope that a seasoned vim user will teach me how to open a shell that works well inside a vim (text) terminal.

By the way, I am not a lawyer myself. I too hate lawyers. Therefore, if you help me, you are not helping a lawyer directly. In fact, your answer will be used mostly for my own edification.




--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

No comments: