 In particular you can specify nil, meaning that the locked zone is not represented at the screen"
   )
 
+(defvar merlin-automatically-garbage-processes t
+  "If set to t, deletes a process when it has no more users. If set to nil, keep it")
 
 ;; Internal variables
 
 
 ; Process / Reception related variables
 (defvar merlin-process nil
-  "The merlin process associated to the current buffer")
+  "The global merlin process.")
+(defvar merlin-local-process nil
+  "The local merlin process (buffer local in every process buffer)"
+)
+(defvar merlin-process-users nil
+  "Buffer that uses the process (local to a process buffer)")
+(defvar merlin-process-last-user nil
+  "Last buffer that used the process")
 (defvar merlin-result nil
   "Temporary variables to store command results")
 (defvar merlin-lock-zone-highlight-overlay nil 

    (forward-line)
    (merlin-check-synchronize))
  (setq merlin-idle-point (point))
  (if (equal merlin-last-point-type (point))
      (if (> arg 1)
          (merlin-type-enclosing-go-down)
        (merlin-type-enclosing-go-up))

    (setq merlin-lock-zone-margin-overlay (make-overlay (point) (point)))
    (set-window-margins nil 1)
    (merlin-put-margin-overlay merlin-lock-zone-margin-overlay
                               merlin-margin-lock-string)))

(defun merlin-update-highlight-lock-zone ()
  "Marks the position of the lock zone by highlighting the zone"
