Add flattening imenu functions. Make it so that init.el sections are recognized by imenu.
This commit is contained in:
parent
f0067856bf
commit
4c68b4f2ae
53
init.el
53
init.el
@ -1,3 +1,4 @@
|
|||||||
|
;; -*- lexical-binding: t; -*-
|
||||||
;; =============================================================================
|
;; =============================================================================
|
||||||
;; ___ _ __ ___ __ _ ___ ___
|
;; ___ _ __ ___ __ _ ___ ___
|
||||||
;; / _ \ '_ ` _ \ / _` |/ __/ __|
|
;; / _ \ '_ ` _ \ / _` |/ __/ __|
|
||||||
@ -22,7 +23,7 @@
|
|||||||
(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
|
(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
|
||||||
|
|
||||||
;; =============================================================================
|
;; =============================================================================
|
||||||
;;;; Load Path Configuration
|
;; Load Path Configuration
|
||||||
;; =============================================================================
|
;; =============================================================================
|
||||||
|
|
||||||
(setq custom-file "~/.emacs.d/custom.el")
|
(setq custom-file "~/.emacs.d/custom.el")
|
||||||
@ -31,7 +32,7 @@
|
|||||||
(add-to-list 'load-path "~/.emacs.d/lisp")
|
(add-to-list 'load-path "~/.emacs.d/lisp")
|
||||||
|
|
||||||
;; =============================================================================
|
;; =============================================================================
|
||||||
;;;; ELPA/package.el/MELPA
|
;; ELPA/package.el/MELPA
|
||||||
;; =============================================================================
|
;; =============================================================================
|
||||||
|
|
||||||
(require 'package)
|
(require 'package)
|
||||||
@ -58,7 +59,7 @@
|
|||||||
(require 'use-package)
|
(require 'use-package)
|
||||||
(put 'use-package 'lisp-indent-function 1) ;; reduce indentation for use-package
|
(put 'use-package 'lisp-indent-function 1) ;; reduce indentation for use-package
|
||||||
|
|
||||||
;;; =============================================================================
|
;; =============================================================================
|
||||||
;; Disables
|
;; Disables
|
||||||
;; =============================================================================
|
;; =============================================================================
|
||||||
|
|
||||||
@ -126,8 +127,13 @@
|
|||||||
(column-number-mode t)
|
(column-number-mode t)
|
||||||
(global-linum-mode t)
|
(global-linum-mode t)
|
||||||
(setq visible-bell t)
|
(setq visible-bell t)
|
||||||
|
|
||||||
|
;; Make buffer names unique.
|
||||||
(setq uniquify-buffer-name-style 'forward)
|
(setq uniquify-buffer-name-style 'forward)
|
||||||
|
|
||||||
|
;; We want closures.
|
||||||
|
(setq lexical-binding t)
|
||||||
|
|
||||||
;; Don't disable downcase and upcase region.
|
;; Don't disable downcase and upcase region.
|
||||||
(put 'upcase-region 'disabled nil)
|
(put 'upcase-region 'disabled nil)
|
||||||
(put 'downcase-region 'disabled nil)
|
(put 'downcase-region 'disabled nil)
|
||||||
@ -137,6 +143,9 @@
|
|||||||
(add-hook 'after-init-hook '(lambda () (setq debug-on-error t)))
|
(add-hook 'after-init-hook '(lambda () (setq debug-on-error t)))
|
||||||
(add-hook 'after-init-hook #'flycheck-mode)
|
(add-hook 'after-init-hook #'flycheck-mode)
|
||||||
|
|
||||||
|
;; Don't popup frames in OSX.
|
||||||
|
(setq ns-pop-up-frames nil)
|
||||||
|
|
||||||
(require 'tramp)
|
(require 'tramp)
|
||||||
(setq tramp-default-method "ssh")
|
(setq tramp-default-method "ssh")
|
||||||
|
|
||||||
@ -250,7 +259,7 @@
|
|||||||
(use-package smex :ensure t)
|
(use-package smex :ensure t)
|
||||||
|
|
||||||
;; =============================================================================
|
;; =============================================================================
|
||||||
;;;; emacs-lisp
|
;; elisp
|
||||||
;; =============================================================================
|
;; =============================================================================
|
||||||
|
|
||||||
(use-package elisp-slime-nav
|
(use-package elisp-slime-nav
|
||||||
@ -265,9 +274,13 @@
|
|||||||
(defun imenu-elisp-sections ()
|
(defun imenu-elisp-sections ()
|
||||||
(setq imenu-prev-index-position-function nil)
|
(setq imenu-prev-index-position-function nil)
|
||||||
(setq imenu-space-replacement nil)
|
(setq imenu-space-replacement nil)
|
||||||
(add-to-list 'imenu-generic-expression '("Sections" "^;;;; *\\(.+\\)$" 1) t))
|
(add-to-list 'imenu-generic-expression
|
||||||
|
`("Sections"
|
||||||
|
,(concat ";\\{1,4\\} =\\{10,80\\}\n;\\{1,4\\} \\{10,80\\}"
|
||||||
|
"\\(.+\\)$") 1) t))
|
||||||
|
|
||||||
(add-hook 'emacs-lisp-mode-hook 'imenu-elisp-sections)
|
(add-hook 'emacs-lisp-mode-hook 'imenu-elisp-sections)
|
||||||
|
(add-hook 'emacs-lisp-mode-hook 'flatten-current-imenu-index-function)
|
||||||
(add-hook 'emacs-lisp-mode-hook (lambda () (setq indent-tabs-mode nil)))
|
(add-hook 'emacs-lisp-mode-hook (lambda () (setq indent-tabs-mode nil)))
|
||||||
(define-key lisp-mode-shared-map (kbd "C-c C-c") 'eval-defun)
|
(define-key lisp-mode-shared-map (kbd "C-c C-c") 'eval-defun)
|
||||||
(define-key lisp-mode-shared-map (kbd "C-c C-f") 'find-function-at-point)
|
(define-key lisp-mode-shared-map (kbd "C-c C-f") 'find-function-at-point)
|
||||||
@ -319,7 +332,10 @@
|
|||||||
(progn
|
(progn
|
||||||
(use-package jedi
|
(use-package jedi
|
||||||
:commands jedi:goto-definition
|
:commands jedi:goto-definition
|
||||||
:config (setq jedi:complete-on-dot t)
|
:config
|
||||||
|
(progn
|
||||||
|
(setq jedi:complete-on-dot t)
|
||||||
|
(setq jedi:install-imenu t))
|
||||||
:ensure t
|
:ensure t
|
||||||
:bind ("C-c g" . jedi:goto-definition))
|
:bind ("C-c g" . jedi:goto-definition))
|
||||||
(use-package pytest
|
(use-package pytest
|
||||||
@ -469,8 +485,13 @@ buffer is not visiting a file."
|
|||||||
(frame-list)))
|
(frame-list)))
|
||||||
|
|
||||||
(defun make-frame-if-none-exists ()
|
(defun make-frame-if-none-exists ()
|
||||||
(unless (frame-exists)
|
(let* ((existing-frame (frame-exists)))
|
||||||
(make-frame-on-display (getenv "DISPLAY"))))
|
(if existing-frame
|
||||||
|
existing-frame
|
||||||
|
(make-frame-on-display (getenv "DISPLAY")))))
|
||||||
|
|
||||||
|
(defun make-frame-if-none-exists-and-focus ()
|
||||||
|
(make-frame-visible (select-frame (make-frame-if-none-exists))))
|
||||||
|
|
||||||
(defun os-copy (&optional b e)
|
(defun os-copy (&optional b e)
|
||||||
(interactive "r")
|
(interactive "r")
|
||||||
@ -509,6 +530,19 @@ buffer is not visiting a file."
|
|||||||
(error (message "Invalid expression")
|
(error (message "Invalid expression")
|
||||||
(insert (current-kill 0)))))
|
(insert (current-kill 0)))))
|
||||||
|
|
||||||
|
(defun flatten-imenu-index (index)
|
||||||
|
(cl-mapcan (lambda (x) (if (listp (cdr x))
|
||||||
|
(cl-mapcar (lambda (item)
|
||||||
|
`(,(concat (car x) "/" (car item)) . ,(cdr item)))
|
||||||
|
(flatten-imenu-index (cdr x)))
|
||||||
|
(list x))) index))
|
||||||
|
|
||||||
|
(defun flatten-imenu-index-function (function)
|
||||||
|
(lambda () (flatten-imenu-index (funcall function))))
|
||||||
|
|
||||||
|
(defun flatten-current-imenu-index-function ()
|
||||||
|
(setq imenu-create-index-function (flatten-imenu-index-function imenu-create-index-function)))
|
||||||
|
|
||||||
;; =============================================================================
|
;; =============================================================================
|
||||||
;; Custom Key Bindings
|
;; Custom Key Bindings
|
||||||
;; =============================================================================
|
;; =============================================================================
|
||||||
@ -603,9 +637,6 @@ buffer is not visiting a file."
|
|||||||
(progn (load-theme appropriate-theme t)
|
(progn (load-theme appropriate-theme t)
|
||||||
(setq current-theme appropriate-theme)))))
|
(setq current-theme appropriate-theme)))))
|
||||||
|
|
||||||
;;(defvar fonts '("DejaVu Sans Mono-10" "monaco-11" "Inconsolata-12" "menlo-10"))
|
|
||||||
(defvar fonts '("monaco-10"))
|
|
||||||
|
|
||||||
(defun set-my-font-for-frame (frame)
|
(defun set-my-font-for-frame (frame)
|
||||||
(condition-case exp
|
(condition-case exp
|
||||||
(set-frame-font (random-choice fonts) nil t)
|
(set-frame-font (random-choice fonts) nil t)
|
||||||
|
Loading…
Reference in New Issue
Block a user