Skip to content

Instantly share code, notes, and snippets.

@saptarshiguha
Created July 31, 2018 19:12
Show Gist options
  • Save saptarshiguha/f464a396ce7155d2b55c2ea9cc687872 to your computer and use it in GitHub Desktop.
Save saptarshiguha/f464a396ce7155d2b55c2ea9cc687872 to your computer and use it in GitHub Desktop.
(custom-set-variables '(package-archives
(quote
(
;; ("marmalade" . "http://marmalade-repo.org/packages/")
("melpa" . "http://melpa.org/packages/")
("gnu" . "http://elpa.gnu.org/packages/")))))
(setq package-enable-at-startup nil)
(package-initialize)
(message "Package Initialized")
;; load paths
;; http://zmjones.com/mac-setup.html
(require 'key-combo)
(key-combo-mode 1)
(add-hook 'ess-mode-hook
'(lambda()
(key-combo-mode t)))
(add-hook 'inferior-ess-mode-hook
'(lambda()
(key-combo-mode t)))
(defvar key-combo-ess-default
'((">" . (" > " " %>% "))
("$" . ("$" " %$% "))
("<>" . " %<>% ")
("*" . ("*" " * "))
("%" . ("%" "%*%" "%%"))
("^" . ("^" " ^ "))
("/" . ("/" " / "))
("~" . " ~ ")
(":" . (":" "::" ":::"))
(":=" . " := ") ; data.table
("->" . " -> ")))
(key-combo-define-hook '(ess-mode-hook inferior-ess-mode-hook)
'ess-key-combo-load-default
key-combo-ess-default)
(message "Key Hooks")
(unless (display-graphic-p)
(menu-bar-mode -1))
(define-derived-mode pydbx-mode
python-mode "PythonDatabricks"
"Syntax Highlight for Databricks."
)
(setq mybase "~/gd/mystuff")
(if (eq system-type 'darwin)
(progn
(setq mybase "~/mystuff")
(setq load-path (cons (expand-file-name (format "%s/site-lisp" mybase)) load-path))
)
(if (eq system-type 'windows-nt)
(progn
(setq mybase "~")
(setq load-path
(cons (expand-file-name (format "%s/site-lisp" mybase)) load-path)))))
(setq ispell-program-name "/usr/local/bin/aspell")
(message "Directories and aspell")
;; (eval-when-compile
;; (require 'use-package))
;;(require 'diminish) ;; if you use :diminish
(require 'bind-key)
;;(setq tramp-default-method 'ssh)
(add-hook 'markdown-mode-hook
(lambda ()
(when buffer-file-name
(add-hook 'after-save-hook
'check-parens
nil t))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; recentf
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;(run-at-time nil (* 5 60) 'recentf-save-list)
(setq recentf-max-saved-items 150)
(setq recentf-max-menu-items 75)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Matching Parentheses
;; see http://emacs-fu.blogspot.com/2009/01/balancing-your-parentheses.html
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq frame-title-format '("Emacs " "%b"))
(if window-system
(tool-bar-mode 1))
(setq make-backup-files nil)
(global-set-key (kbd "C-c o") 'occur)
(setq savehist-additional-variables ;; also save...
'(search-ring regexp-search-ring) ;; my search entries
savehist-file "~/.emacs.d/savehist") ;; keep my home clean
(savehist-mode t)
(setq flyspell-issue-message-flag nil)
(global-set-key (kbd "C-x 8") 'flyspell-check-previous-highlighted-word)
(message "Step 1")
;;-------------------------------------------------------------------------------
;; tabs as spaces
;;------------------------------------------------------------------------------
(setq-default indent-tabs-mode nil)
;;;;;;;;;;;;;;;;;;;;;;;
;; Bookmark Handling ;;
;;;;;;;;;;;;;;;;;;;;;;;
(require 'bm)
(global-set-key (kbd "M-'") 'bm-toggle)
(global-set-key (kbd "M-\"") 'bm-next)
;;(global-set-key (kbd "s-\"") 'bm-previous)
(message "Step 2")
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;; Usage Notes
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'ess)
(require 'helm)
(use-package helm-swoop
:bind (("M-i" . helm-swoop)
("M-I" . helm-swoop-back-to-last-point)
("C-c M-i" . helm-multi-swoop))
:config
;; When doing isearch, hand the word over to helm-swoop
(define-key isearch-mode-map (kbd "M-i") 'helm-swoop-from-isearch)
;; From helm-swoop to helm-multi-swoop-all
(define-key helm-swoop-map (kbd "M-i") 'helm-multi-swoop-all-from-helm-swoop)
;; Save buffer when helm-multi-swoop-edit complete
(setq helm-multi-swoop-edit-save t
;; If this value is t, split window inside the current window
helm-swoop-split-with-multiple-windows t
;; Split direcion. 'split-window-vertically or 'split-window-horizontally
helm-swoop-split-direction 'split-window-vertically
;; If nil, you can slightly boost invoke speed in exchange for text color
helm-swoop-speed-or-color nil))
;; (helm-mode t)
(require 'helm-dired-recent-dirs)
(setq helm-ff-file-name-history-use-recentf t
helm-buffers-fuzzy-matching t
helm-everywhere t
helm-autoresize-mode t
helm-recentf-fuzzy-match t)
(setq helm-mini-default-sources '(helm-source-buffers-list
helm-source-dired-recent-dirs
helm-source-recentf
helm-source-buffer-not-found))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; proper commenting and stuff like aquamacs
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun comment-or-uncomment-region-or-line ()
"Comments or uncomments the region or the current line if there's no active region."
(interactive)
(let (beg end)
(if (region-active-p)
(setq beg (region-beginning) end (region-end))
(setq beg (line-beginning-position) end (line-end-position)))
(comment-or-uncomment-region beg end)
(next-line)))
(global-set-key (kbd "s-;") 'comment-or-uncomment-region-or-line)
(defun new-empty-buffer ()
"Opens a new empty buffer."
(interactive)
(let ((buf (generate-new-buffer "untitled")))
(let ((mode major-mode))
(message "Mode is %s" mode)
(switch-to-buffer buf)
(funcall mode))
(setq buffer-offer-save t)))
(global-set-key (kbd "M-t") 'new-empty-buffer )
;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Edit server
;;;;;;;;;;;;;;;;;;;;;;;;;
(add-to-list 'auto-mode-alist '("md$" . markdown-mode))
(add-hook 'markdown-mode-hook (lambda()
(set-fill-column 80)
(auto-fill-mode 1)
(flyspell-mode 1)))
(if (eq system-type 'windows-nt)
(progn
(menu-bar-mode t)
(tool-bar-mode -1)))
(let ((alist '((33 . ".\\(?:\\(?:==\\)\\|[!=]\\)")
(35 . ".\\(?:[(?[_{]\\)")
(38 . ".\\(?:\\(?:&&\\)\\|&\\)")
(42 . ".\\(?:\\(?:\\*\\*\\)\\|[*/]\\)")
(43 . ".\\(?:\\(?:\\+\\+\\)\\|\\+\\)")
(45 . ".\\(?:\\(?:-[>-]\\|<<\\|>>\\)\\|[<>}~-]\\)")
(46 . ".\\(?:\\(?:\\.[.<]\\)\\|[.=]\\)")
(47 . ".\\(?:\\(?:\\*\\*\\|//\\|==\\)\\|[*/=>]\\)")
(58 . ".\\(?:[:=]\\)")
(59 . ".\\(?:;\\)")
(60 . ".\\(?:\\(?:!--\\)\\|\\(?:\\$>\\|\\*>\\|\\+>\\|--\\|<[<=-]\\|=[<=>]\\||>\\)\\|[/<=>|-]\\)")
(61 . ".\\(?:\\(?:/=\\|:=\\|<<\\|=[=>]\\|>>\\)\\|[<=>~]\\)")
(62 . ".\\(?:\\(?:=>\\|>[=>-]\\)\\|[=>-]\\)")
(63 . ".\\(?:[:=?]\\)")
(92 . ".\\(?:\\(?:\\\\\\\\\\)\\|\\\\\\)")
(94 . ".\\(?:=\\)")
(123 . ".\\(?:-\\)")
(124 . ".\\(?:\\(?:|[=|]\\)\\|[=>|]\\)")
(126 . ".\\(?:[=@~-]\\)")
)
))
(dolist (char-regexp alist)
(set-char-table-range composition-function-table (car char-regexp)
`([,(cdr char-regexp) 0 font-shape-gstring]))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Web Mode for HTML because plain HTML SUCKS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.css?\\'" . web-mode))
(defun my-web-mode-hook ()
"Hooks for Web mode."
(setq web-mode-markup-indent-offset 2)
(setq web-mode-css-indent-offset 2)
(setq web-mode-code-indent-offset 2)
(setq web-mode-enable-css-colorization t)
(setq web-mode-enable-block-face t)
(setq web-mode-enable-comment-keywords t)
(setq web-mode-enable-current-element-highlight t)
(setq web-mode-enable-current-column-highlight t)
)
(add-hook 'web-mode-hook 'my-web-mode-hook)
(delete-selection-mode 1)
(show-paren-mode 1)
(use-package undo-tree
:init (global-undo-tree-mode t)
:defer t
:diminish ""
:config
(progn
(define-key undo-tree-map (kbd "C-x u") 'undo-tree-visualize)
(define-key undo-tree-map (kbd "C-/") 'undo-tree-undo)))
(use-package ido
:config
(use-package flx-ido
:init (flx-ido-mode 1)
:config (setq ido-use-faces nil))
(use-package ido-vertical-mode
:init (ido-vertical-mode t))
(setq ido-use-virtual-buffers nil
;; this setting causes weird TRAMP connections, don't set it!
;;ido-enable-tramp-completion nil
ido-enable-flex-matching t
ido-auto-merge-work-directories-length nil
ido-create-new-buffer 'always
ido-use-filename-at-point 'guess
ido-max-prospects 10))
(message "Styep 4")
(use-package multiple-cursors
:bind (("C-S-c C-S-c" . mc/edit-lines)
("C->" . mc/mark-next-like-this)
("C-<" . mc/mark-previous-like-this)
("C-c C-<" . mc/mark-all-like-this)))
(defun beautify-json ()
(interactive)
(let ((b (if mark-active (min (point) (mark)) (point-min)))
(e (if mark-active (max (point) (mark)) (point-max))))
(shell-command-on-region b e "python -mjson.tool" (current-buffer) t)))
(defun xah-forward-block (&optional φn)
"Move cursor forward to the beginning of next text block.
A text block is separated by blank lines. In most major modes,
this is similar to `forward-paragraph', but this command's
behavior is the same regardless of syntax table."
(interactive "p")
(search-forward-regexp "\n[\t\n ]*\n+" nil "NOERROR" φn))
(defun xah-backward-block (&optional φn)
"Move cursor backward to previous text block.
See: `xah-forward-block'"
(interactive "p")
(dotimes (ξn φn) (if (search-backward-regexp "\n[\t\n ]*\n+" nil "NOERROR")
(progn
(skip-chars-backward "\n\t "))
(progn (goto-char (point-min))))))
(global-set-key (kbd "<C-up>") 'xah-backward-block)
(global-set-key (kbd "<C-down>") 'xah-forward-block)
;;Use M-{ and M-} to activate the abbove(opt+shift+{)
(require 'gist)
(set-face-attribute 'fringe nil
:foreground (face-foreground 'default)
:background (face-background 'default))
(require 'poly-R)
(require 'poly-markdown)
(add-to-list 'auto-mode-alist '("\\.md" . poly-markdown-mode))
(add-to-list 'auto-mode-alist '("\\.Snw" . poly-noweb+r-mode))
(add-to-list 'auto-mode-alist '("\\.Rnw" . poly-noweb+r-mode))
(add-to-list 'auto-mode-alist '("\\.Rmd" . poly-markdown+r-mode))
;;(add-to-list 'ibuffer-never-show-predicates ".*\\[.*\\]$")
(defun send-to-tmux (beg end &optional arg)
"message region or \"empty string\" if none highlighted"
(interactive (if (use-region-p)
(list (region-beginning)
(region-end)
(if current-prefix-arg
(read-from-minibuffer "tmux buffer name: ")
"zillabilla")
)
(progn
(move-beginning-of-line nil)
(set-mark-command nil)
(move-end-of-line nil)
(setq deactivate-mark nil)
(list (region-beginning) (region-end) "zillabilla"))))
(let ( (fname (make-temp-file "foo")))
(if ( and beg end )
(progn
( write-region beg end fname)
;;https://www.gnu.org/software/emacs/manual/html_node/elisp/Synchronous-Processes.html
( call-process "~/sendtmux.py" nil nil nil fname arg)
)
)
)
(goto-char (region-end))
(deactivate-mark)
)
(global-set-key (kbd "C-x ,") 'send-to-tmux)
(defun send-to-dbx (beg end &optional arg)
"message region or \"empty string\" if none highlighted"
(interactive (if (use-region-p)
(list (region-beginning)
(region-end)
(if current-prefix-arg
(read-from-minibuffer "tmux buffer name: ")
"zillabilla")
)
(progn
(move-beginning-of-line nil)
(set-mark-command nil)
(move-end-of-line nil)
(setq deactivate-mark nil)
(list (region-beginning) (region-end) "zillabilla"))))
(let ( (fname (make-temp-file "foo")))
(if ( and beg end )
(progn
( write-region beg end fname)
;;https://www.gnu.org/software/emacs/manual/html_node/elisp/Synchronous-Processes.html
( call-process "~/sendtmuxdbx.py" nil nil "*Messages*" fname arg)
)
)
)
(goto-char (region-end))
(deactivate-mark)
)
(global-set-key (kbd "C-x .") 'send-to-dbx)
(defun fling (beg end &optional arg)
"message region or \"empty string\" if none highlighted"
(interactive (if (use-region-p)
(list (region-beginning)
(region-end)
(if current-prefix-arg
(read-from-minibuffer "tmux buffer name: ")
"zillabilla")
)
(progn
(move-beginning-of-line nil)
(set-mark-command nil)
(move-end-of-line nil)
(setq deactivate-mark nil)
(list (region-beginning) (region-end) "zillabilla"))))
(let ( (fname (make-temp-file "loo")))
(if ( and beg end )
(progn
( write-region beg end fname)
;;https://www.gnu.org/software/emacs/manual/html_node/elisp/Synchronous-Processes.html
( start-process "foo" "foo2" "~/fling_sender.py" fname)
)
)
)
(goto-char (region-end))
(deactivate-mark)
)
(xterm-mouse-mode)
(global-set-key (kbd "S-C-<up>") 'enlarge-window)
(global-set-key (kbd "S-C-<down>") 'shrink-window)
(global-set-key (kbd "S-C-<left>") 'shrink-window-horizontally)
(global-set-key (kbd "S-C-<right>") 'enlarge-window-horizontally)
(global-unset-key [double-mouse-3])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment