From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?utf-8?Q?S=C3=A9bastien_Vauban?= Subject: Re: org-style folding for a .emacs Date: Wed, 15 Jul 2009 17:52:25 +0200 Message-ID: <87zlb6vt8m.fsf@mundaneum.com> References: <87bpnonpvb.fsf@zeller.michaelzeller.com> <87tz1ftr6f.fsf@mundaneum.com> <87iqhu63mw.fsf@zeller.michaelzeller.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org-mXXj517/zsQ@public.gmane.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org-mXXj517/zsQ@public.gmane.org To: emacs-orgmode-mXXj517/zsQ@public.gmane.org Hello Michael, >>>> Does anyone have a recipe for easy org-style folding of an elisp file? >>>> I'd like to divide my .emacs into segments to make it easier to oversee >>>> and navigate. >> >> I asked myself this question a couple of days ago. Telepathy. For real. >> Good it has been asked, and answered. >> >>> In summary, add the following to your ~/.emacs.el: >>> >>> (defun th-outline-regexp () >>> "Calculate the outline regexp for the current mode." >>> (let ((comment-starter (replace-regexp-in-string >>> "[[:space:]]+" "" comment-start))) >>> (when (string=3D comment-start ";") >>> (setq comment-starter ";;")) >>> (concat "^" comment-starter "\\*+"))) >>> >>> [...] >>> >>> (add-hook 'outline-minor-mode-hook >>> 'th-outline-minor-mode-init) >>> >>> and add the following as the top line of your ~/.emacs.el: >>> >>> ; -*- mode: emacs-lisp; mode: outline-minor; -*- >>> >>> Now you can add ;;* and ;;**, etc as headings in your .emacs.el. >> >> Done. Though, is there a way to get the font used for org-levels in the >> Emacs config file? That would really greatly improve the readability, th= en! > > Try changing th-outline-minor-mode-init to: > > (defun th-outline-minor-mode-init () > (interactive) > (setq outline-regexp (th-outline-regexp)) > ;; highlight the headings > ;; see http://www.gnu.org/software/emacs/manual/html_node/emacs/Font-Loc= k.html > ;; use M-x customize-apropos face to customize faces > ;; to find the corresponding face for each outline level see org-faces.el > (let ((heading-1-regexp (concat (substring outline-regexp 0 -1) "\\{1\\}= \\(.*\\)")) > (heading-2-regexp (concat (substring outline-regexp 0 -1) "\\{2\\}= \\(.*\\)")) > (heading-3-regexp (concat (substring outline-regexp 0 -1) "\\{3,\\= } \\(.*\\)"))) > (font-lock-add-keywords > nil > `((,heading-1-regexp 1 font-lock-function-name-face t) > (,heading-2-regexp 1 font-lock-variable-name-face t) > (,heading-3-regexp 1 font-lock-keyword-face t))))) > > That should atleast highlight the first three headings properly and make > it more readable. I'm not quite sure how to make it cycle through the 8 > colors like org-mode does. You know what? You really are wonderful=C2=A0;-) This is making my month.= .. Though, I slightly adapted your code (that was in what's possible for me) so that I get exactly the same faces as within a real Org file: --8<---------------cut here---------------start------------->8--- (defun th-outline-minor-mode-init () (interactive) (setq outline-regexp (th-outline-regexp)) ;; highlight the headings ;; see http://www.gnu.org/software/emacs/manual/html_node/emacs/Font-Lock= .html ;; use M-x customize-apropos face to customize faces ;; to find the corresponding face for each outline level see org-faces.el (let ((heading-1-regexp (concat (substring outline-regexp 0 -1) "\\{1\\} = \\(.*\\)")) (heading-2-regexp (concat (substring outline-regexp 0 -1) "\\{2\\} = \\(.*\\)")) (heading-3-regexp (concat (substring outline-regexp 0 -1) "\\{3\\} = \\(.*\\)")) (heading-4-regexp (concat (substring outline-regexp 0 -1) "\\{4,\\}= \\(.*\\)")) ) (font-lock-add-keywords nil `((,heading-1-regexp 1 'org-level-1 t) (,heading-2-regexp 1 'org-level-2 t) (,heading-3-regexp 1 'org-level-3 t) (,heading-4-regexp 1 'org-level-4 t))))) --8<---------------cut here---------------end--------------->8--- That way, having those faces defined (inspired by the resistors color code): --8<---------------cut here---------------start------------->8--- (org-level-1 ((t (:foreground "cornflower blue" :weight bold :height 1.8 :f= amily "Arial")))) (org-level-2 ((t (:foreground "LimeGreen" :weight bold :height 1.6 :family = "Arial")))) (org-level-3 ((t (:foreground "orange" :weight bold :height 1.3 :family "Ar= ial")))) --8<---------------cut here---------------end--------------->8--- I get a much, much, much more readable emacs file -- nice, moreover as mine= is really huge! > Hope that helps, Oohhh yeeeessss! Best regards, Seb --=20 S=C3=A9bastien=C2=A0Vauban _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode-mXXj517/zsQ@public.gmane.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode