home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / alt / lucidem / help / 251 < prev    next >
Encoding:
Internet Message Format  |  1992-08-12  |  16.3 KB

  1. Date: Wed, 12 Aug 1992 22:16:34 +0200
  2. From: girou%circe.fr@lucid.com (Denis GIROU)
  3. Message-ID: <9208122016.AA10980@lumiere.circe.fr>
  4. Subject: lemacs 19.2
  5. Newsgroups: alt.lucid-emacs.help
  6. Path: sparky!uunet!wendy-fate.uu.net!help-lucid-emacs
  7. Sender: help-lucid-emacs-request@lucid.com
  8. Lines: 431
  9.  
  10.  
  11.   Hello everybody.
  12.  
  13.   I install Lucid 19.2 on a DEC 3100 workstation since some weeks, and it's
  14. work fine! It's clear that it's a fine and impressive work...
  15.  
  16.   Here I want to summarize my problems, modifications and (very little!)
  17. improvements. I hope that this can be useful to somebody.
  18.  
  19.  
  20.   1 - Installation on a DEC 3100 workstation (Ultrix 4.1) with DEC compiler :
  21.       ---------------------------------------------------------------------
  22.  
  23.       I succeed to install Lucid 19.2, but I obtain three severe errors that I
  24. must correct (I'm sure that I don't do that in the right way!). I dont' know
  25. if these problems are already reported and corrected in 19.3.
  26.  
  27.     The problems are in screen.c, xterm.c and indent.c
  28.  
  29. cc -g -Demacs  -I./lwlib -DNEED_STRDUP -c screen.c
  30. ccom: Error: ./extents.h, line 187: function declaration in bad context
  31.        int from, int to, int maparg, int closed_end);
  32.       ----------------------------------------------^
  33. ccom: Error: ./extents.h, line 190: function declaration in bad context
  34.       (int extent_obj, int flag);
  35.       --------------------------^
  36. ccom: Error: ./extents.h, line 192: function declaration in bad context
  37.       (int extent_obj, int flag);
  38.       --------------------------^
  39. ccom: Error: ./extents.h, line 193: function declaration in bad context
  40.       extern int Fextent_start_position (int extent_obj);
  41.       --------------------------------------------------^
  42. ccom: Error: ./extents.h, line 194: function declaration in bad context
  43.       extern int Fextent_end_position (int extent_obj);
  44.       ------------------------------------------------^
  45. ccom: Error: ./extents.h, line 195: function declaration in bad context
  46.       extern int Fextent_length (int extent_obj);
  47.       ------------------------------------------^
  48. ccom: Error: ./extents.h, line 196: function declaration in bad context
  49.       extern int Fextent_buffer (int extent_obj);
  50.       ------------------------------------------^
  51. ccom: Error: ./extents.h, line 197: function declaration in bad context
  52.       extern int Fextent_to_generic_id (int extent_obj);
  53.       -------------------------------------------------^
  54. *** Error code 1
  55.  
  56. Stop.
  57.  
  58. cc -g -Demacs  -I./lwlib -DNEED_STRDUP -c xterm.c
  59. cpp: warning ./m/m-mips.h:119: DATA_START redefined
  60. ccom: Error: xterm.c, line 2489: syntax error
  61.         int (*prev_handler) (Display*, XErrorEvent*);
  62.       -------------------------------------------^
  63. ccom: Error: xterm.c, line 2491: illegal lhs of assignment operator
  64.         (x_input_blocked++);
  65.       -------------------^
  66. (ccom): xterm.c, line 2491: cannot recover from earlier errors: goodbye!
  67.         (x_input_blocked++);
  68.       -------------------^
  69. *** Error code 1
  70.  
  71. Stop.
  72.  
  73. cc -g -Demacs  -I./lwlib -DNEED_STRDUP -c indent.c
  74. ccom: Error: indent.c, line 72: nonunique name demands struct/union or struct/union pointer
  75.         thisbuf = buffer->display_table;
  76.       --------------------------------^
  77. *** Error code 1
  78.  
  79. Stop.
  80.  
  81.   2 - 8 bits characters :
  82.       -----------------
  83.  
  84.       It's clear that it's a very important aspect for European people. And
  85. there are still several problems with 8 bits characters in Lucid (in Epoch,
  86. with the keriven contrib - patches and additions - I believe that the
  87. different aspects of the 8 bits requirement are near solved). I believe that
  88. some parts of this contrib are to report on Lucid.
  89.  
  90.     2.1 - Problem of delimiters :
  91.  
  92.       The 8 bits characters are falsely used as delimeters for functions
  93. like forward-word, backward-word, kill-word, etc.
  94.  
  95.     2.2 - Problems with uppercase and downcase :
  96.  
  97.       The uppercase, lowercase and capitalize functions doesn't work with 8
  98. bits characters.
  99.  
  100.     2.3 - Problem in isearch.el :
  101.  
  102.       The isearch function exit anormally when we input a character superior
  103. to 128. I must do the following modifications :
  104.  
  105. lumiere (13:49) [1643]> diff isearch.el isearch.el~
  106. 134,143c134,140
  107. < ; Modification Denis GIROU - 31 Jul. 1992
  108. <        (cond
  109. <          ;; Meta character no longer means exit search.
  110. < ;;;         ((and (or (not (integerp char))
  111. < ;;;                (and (>= char 128)
  112. < ;;;                 (not (= char search-ring-advance-char))
  113. < ;;;                 (not (= char search-ring-retreat-char))))
  114. < ;;;                search-exit-option)
  115. < ;;;           (setq unread-command-event event)
  116. < ;;;           (throw 'search-done t))
  117. ---
  118. >        (cond ((and (or (not (integerp char))
  119. >                (and (>= char 128)
  120. >                 (not (= char search-ring-advance-char))
  121. >                 (not (= char search-ring-retreat-char))))
  122. >                search-exit-option)
  123. >           (setq unread-command-event event)
  124. >           (throw 'search-done t))
  125. 286,289c283
  126. < ;;; Modification Denis GIROU - 31 Jul. 1992
  127. <                    (or
  128. < ;;;                    (>= char ?\177)
  129. <                    (= char ?\177)
  130. ---
  131. >                    (or (>= char ?\177)
  132. 305,308c299
  133. < ;;; Modification Denis GIROU - 31 Jul. 1992
  134. < ;;;                               (text-char-description char)
  135. <                                (char-to-string char)
  136. <                                ))))
  137. ---
  138. >                                (text-char-description char)))))
  139.  
  140.     2.4 - Input of composed characters :
  141.  
  142.       I look an eye to the proposed solution in lisp/X11/x-compose.el for
  143. input of accentued characters not accessible by the keyboard. In fact, like
  144. most of people, I haven't a compose key on my keyboard, so the proposed
  145. solution is not satisfaying for me. Nevertheless, those proposed in the 8 bits
  146. contrib of Epoch (iso-latin-1.el from Matthieu Herrb inside the Keriven
  147. contrib) work well with only one modification to reflect the change in the
  148. this-command-keys function :
  149.         (substring (this-command-keys) -1 nil)
  150.     ==> (substring (format "%s" (aref (this-command-keys) 0)) 17 18)
  151.  
  152.       I found that this solution for compose characters is transparent and
  153. very satisfaying.
  154.  
  155.   3 - Problem with dired-nstd.el
  156.       --------------------------
  157.  
  158.       In fact, there is no connection with Lucid (I had the same problem with
  159. Emacs and Epoch since my first use of dired-nstd), but it's Jamie Zawinski who
  160. write it!
  161.  
  162.     I also believe that it's "the Right Thing" to do (and cannot understand why
  163. it's not the default). But I have a dangerous bug : when I put an u, m, d (!!)
  164. for the first file off a subdirectory, all the files of this subdirectory are
  165. marked. It's clear that it's specially dangerous with the delete subcommand...
  166. - I have (setq dired-listing-switches "-Alt")
  167.  
  168.     To avoid that, I introduce the following modification in dired-get-subdir
  169. (I believe that it's not the right way, but it's work... In fact, there are
  170. still sometimes some problems : the screen is not updated correctly after some
  171. commands on the first file of a subdirectory) :
  172.  
  173. ;;; Modification Denis GIROU -  3 Aug. 1992
  174. ;;; Problem whith d, u, m, w, etc. when it's the first file of a directory
  175. (defun dired-get-subdir ()
  176.   ;;"Return the subdir name on this line, or nil if not on a headerline."
  177.   ;; Look up in the alist whether this is a headerline.
  178.   (save-excursion
  179.     (let ((cur-dir (dired-current-directory)))
  180.       (beginning-of-line)        ; alist stores b-o-l positions
  181.       (and
  182. ;;;    (zerop (- (point)
  183. ;;;              (dired-get-subdir-min (assoc cur-dir
  184. ;;;                           dired-subdir-alist))))
  185.        (zerop (1+ (- (point)
  186.              (dired-get-subdir-min (assoc cur-dir
  187.                           dired-subdir-alist)))))
  188.        cur-dir))))
  189.  
  190.  
  191.   4 - LaTeX mode on Nelson Beebe :
  192.       --------------------------
  193.  
  194.       The Mon, 8 Jun 92 08:30:32 EDT, Fritz Zaucker
  195. <fritzz@lamont.ldgo.columbia.edu> writes :
  196.  
  197. >  3) latex.el from Nelson Beebe doesn't work with lemacs. It complains
  198. >  about TeX-mode-map being undefined. Neither epoch nor GNU Emacs 18.58
  199. >  have a problem there.
  200.  
  201.   I only comment the following lines (for GNU Emacs), and everything seems
  202. working well (I suppose that the problem of Fritz is a problem in the way he
  203. load his different TeX mode) :
  204.  
  205. (if (and (boundp 'window-system)
  206.      (equal window-system 'x)
  207.      (load "x-mouse" t t nil)) ;needed for following mouse-map bindings
  208.     (progn
  209.       (define-key mouse-map x-button-right    'x-LaTeX-index-start)
  210.       (define-key mouse-map x-button-right-up 'x-LaTeX-index-end))
  211.   )
  212.  
  213.   5 - Highlighting support for emerge.el :
  214.       ----------------------------------
  215.  
  216.       I like emerge, but it's infinitely better if highlighting is use in
  217. place of insertion of lines of characters. It's seems very easy to do :
  218.  
  219. ;;; Denis GIROU -  3 Aug. 1992
  220. ;;; emerge : these functions redefined for Lucid highlighting support
  221. (defun emerge-place-flags-in-buffer1 (buffer before after)
  222.   (set-extent-face (make-extent (goto-char before) (goto-char after)) 'bold-italic))
  223. (defun emerge-remove-flags-in-buffer (buffer before after)
  224.   (map-extents (function (lambda (x y) (delete-extent x)))
  225.                (current-buffer) (goto-char before) (goto-char after) nil))
  226.  
  227.   6 - Mouse support in Dired mode :
  228.       ---------------------------
  229.  
  230.       It's easy to add some very useful capabilities of editing a file or
  231. expanding/deexpanding a subdirectory with a single click in Dired mode :
  232.  
  233. ;;; Denis GIROU - 30 Jul. 1992
  234. ;;; From an idea of Russell Ritchie, Scottish HCI Centre,
  235. ;;;      <russell@uk.ac.strath.hci> (July 88) 
  236. (defun x-mouse-inspect-file (arg)
  237.   "Inspect the file or the subdirectory the mouse is pointing at."
  238.   (interactive "@e")
  239.   (mouse-set-point arg)
  240.   (let ((filename (dired-get-filename)))
  241.        (if (save-excursion
  242.            (beginning-of-line)
  243.        (looking-at " *d"))    ; If it's a directory use dired on it.
  244.        (dired-insert-subdir-inline filename)
  245.        (find-file filename))))
  246.  
  247. (defun x-mouse-dired-kill-subdir (event)
  248.   "Kill the sub-directory pointed."
  249.   (interactive "@e")
  250.   (mouse-set-point event)
  251.   (dired-kill-subdir))
  252.  
  253. ;;; And we just have to add (in dired-mode-hook by example) 
  254. (define-key dired-mode-map 'button2 'x-mouse-dired-kill-subdir)
  255. (define-key dired-mode-map 'button3 'x-mouse-inspect-file)
  256.  
  257.  
  258.   7 - Mouse functions in modelines and minibuffer :
  259.       -------------------------------------------
  260.  
  261.       I haven't found the possibility to define some mouse button functions
  262. when the mouse is in the minibuffer or one of the modelines of the screen.
  263. It's seem that the location returned is always nil in that cases. How to do
  264. that?
  265.  
  266.   8 - Dynamic menus for Kill Ring, History and Shell Commands :
  267.       ------------------------------------------------------- 
  268.  
  269.       Obviously it's a good thing to have the possibility to choice the buffer
  270. with the "Buffers" option in the menubar. But I found useful to have the same
  271. thing in other cases, so I modify the functions which are used for the
  272. "Buffers" option for the case of the yank function in the kill ring, the
  273. repetition of emacs-lisp function in the command history, and the repetition
  274. of a previous function in the shell and telnet modes. I'm sure that we can
  275. easily do better (I'm not a lisp expert...), but I found it useful like
  276. that...
  277.  
  278.       N.B. : - In build-history-menu-hook the 'edit-and-eval-command function
  279. will be better, but I didn't succeed to use it...
  280.              - The display of occurrences of the kill ring is not perfect
  281. because the control characters are visualize in a rather strange way... How to
  282. correct that?
  283.  
  284.      (setq default-menubar
  285.            ...
  286.          ("Buffers"    "")
  287.          ("KillRing" "")
  288.          ("History" "")
  289.          ("ShellCmds" "")
  290.            ...)
  291.      (set-screen-menubar default-menubar)
  292.  
  293. ;;; For the Kill Ring ("KillRing" entry in the menubar)
  294. (defun build-killring-menu-hook (menubar)
  295.   "For use as a value of activate-menubar-hook.
  296. This function changes the contents of the \"KillRing\" menu to correspond
  297. to the current set of killring.  You can control how the text of the menu
  298. items are generated by redefining the function `format-killring-menu-line'."
  299.   (let ((killring-menu (car (find-menu-item menubar '("KillRing"))))
  300.     name
  301.     killring)
  302.     (if (not killring-menu)
  303.     nil
  304.       (setq killring kill-ring)
  305.       (if (> (length killring) 0)
  306.       (progn (if (> (length killring) kill-ring-max)
  307.              (setcdr (nthcdr kill-ring-max killring) nil))
  308.          (setq killring
  309.                (mapcar (function
  310.                 (lambda (entry)
  311.                   (if (setq name (format-killring-menu-line entry))
  312.                       (vector name (list 'insert entry) t))))
  313.                    killring)))
  314.       (setq killring '("Empty Kill Ring!")))
  315.       ;; slightly (only slightly) more efficient to not install the menubar
  316.       ;; if it hasn't visibly changed.
  317.       (if (equal killring (cdr killring-menu))
  318.       t  ; return t meaning "no change"
  319.     (setcdr killring-menu killring)
  320.     ;; return the now-modified menubar to install.
  321.     menubar)
  322.       )))
  323.  
  324. (defun format-killring-menu-line (entry)
  325.   (substring entry 0 (min (length entry) 30)))
  326.  
  327. (or (memq 'build-killring-menu-hook activate-menubar-hook)
  328.     (setq activate-menubar-hook
  329.       (cons 'build-killring-menu-hook activate-menubar-hook)))
  330.  
  331. ;;; For the History ("History" entry in the menubar)
  332. (defun build-history-menu-hook (menubar)
  333.   "For use as a value of activate-menubar-hook.
  334. This function changes the contents of the \"History\" menu to correspond
  335. to the current set of history.  You can control how the text of the menu
  336. items are generated by redefining the function `format-history-menu-line'."
  337.   (let ((history-menu (car (find-menu-item menubar '("History"))))
  338.     name
  339.     history
  340.     (command-history-max 30))
  341.     (if (not history-menu)
  342.     nil
  343.       (setq history command-history)
  344.       (if (> (length history) 0)
  345.       (progn (if (> (length history) command-history-max)
  346.              (setcdr (nthcdr command-history-max history) nil))
  347.          (setq history
  348.                (mapcar (function
  349.                 (lambda (entry)
  350.                   (if
  351.                       (setq name (format-history-menu-line entry))
  352.                       (vector name
  353. ;;; edit-and-eval-command will be better, but I didn't succeed to use it
  354.                           (list 'eval-expression entry)
  355.                           t))))
  356.                    history)))
  357.     (setq history '("Empty history list!")))
  358.       ;; slightly (only slightly) more efficient to not install the menubar
  359.       ;; if it hasn't visibly changed.
  360.       (if (equal history (cdr history-menu))
  361.       t  ; return t meaning "no change"
  362.     (setcdr history-menu history)
  363.     ;; return the now-modified menubar to install.
  364.     menubar)
  365.       )))
  366.  
  367. (defun format-history-menu-line (entry)
  368.   (let ((entry (format "%s" entry)))
  369.     (substring entry 0 (min (length entry) 40))))
  370.  
  371. (or (memq 'build-history-menu-hook activate-menubar-hook)
  372.     (setq activate-menubar-hook
  373.       (cons 'build-history-menu-hook activate-menubar-hook)))
  374.  
  375. ;;; For the Shell Commands ("ShellCmds" entry in the menubar)
  376. (defun build-shellcmds-menu-hook (menubar)
  377.   "For use as a value of activate-menubar-hook.
  378. This function changes the contents of the \"ShellCmds\" menu to correspond
  379. to the current set of shellcmds.  You can control how the text of the menu
  380. items are generated by redefining the function `format-shellcmds-menu-line'."
  381.   (let ((shellcmds-menu (car (find-menu-item menubar '("ShellCmds"))))
  382.     name
  383.     shellcmds
  384.     (shellcmds-max 30))
  385.     (if (not shellcmds-menu)
  386.     nil
  387.       (setq shellcmds
  388.          (let* ((ring (get-input-ring))
  389.                 (len (ring-length ring))
  390.                 (i (1+ len))
  391.             rep)
  392.            (if (= len 0)
  393.          nil
  394.          (while (> i 1)
  395.            (setq rep (cons (format "%s" (ring-ref ring (- i 2))) rep))
  396.            (setq i (1- i)))
  397.          rep)))
  398.       (if shellcmds
  399.       (progn
  400.             (if (> (length shellcmds) shellcmds-max)
  401.             (setcdr (nthcdr shellcmds-max shellcmds) nil))
  402.                 (setq shellcmds
  403.                    (mapcar (function
  404.                  (lambda (entry)
  405.                                  (if
  406.                        (setq name (format-shellcmds-menu-line entry))
  407.                        (vector name (list 'insert entry) t))))
  408.                    shellcmds)))
  409.     (setq shellcmds '("Not in shell mode!")))
  410.       ;; slightly (only slightly) more efficient to not install the menubar
  411.       ;; if it hasn't visibly changed.
  412.       (if (equal shellcmds (cdr shellcmds-menu))
  413.       t  ; return t meaning "no change"
  414.     (setcdr shellcmds-menu shellcmds)
  415.     ;; return the now-modified menubar to install.
  416.     menubar)
  417.       )))
  418.  
  419. (defun format-shellcmds-menu-line (entry)
  420.   (format "%s" (substring entry 0 (min (length entry) 40))))
  421.  
  422. (or (memq 'build-shellcmds-menu-hook activate-menubar-hook)
  423.     (setq activate-menubar-hook
  424.       (cons 'build-shellcmds-menu-hook activate-menubar-hook)))
  425.  
  426.  
  427.  
  428.   Thanks for attention.
  429.  
  430.   And many thanks to Lucid team for his work...
  431.  
  432.   Best regards,
  433.  
  434. --
  435.  
  436. ------------------------------------------------------
  437. Denis Girou (C.N.R.S./C.I.R.C.E.)                    |
  438. Batiment 506 - B.P. 167 - 91403 Orsay Cedex - France |
  439. E-mail : girou@circe.fr - Tel.  : 33. 1. 69.82.41.52 |
  440. ------------------------------------------------------
  441.