HGGMS7P6BRIGWP6DZS3KLRXQPRETMB2GUULCQZAED6IYD5ENK2DQC
W5P32Q4HUAIK2N2TYMRDYFGTOF6SD6OKBXGXSMIENEKBJY2K5RKAC
RXCY7LD6ZRIOIKZEYKLMCYPMQPXF4DOEEFBDLVR2B22BXLZJFFBQC
A3TVGLVHSVLMEHLHB3TPBSD3QGNVGX3DIK6BEBDTTHWBNW4ALMRAC
DWJHLZWVL7RM2WQXN3ZJTJXXKUEUNQLL37TMMTPL7NL375M2QJCQC
7JB5ULZTC6SV7BBMZYTE3XUCGM5OKUQALOYFATCDZWVWNHTL6P7QC
ODL5DR53CG3P5WJXH22CYRP2HDHT4BXK7ME3RGQYVXRH5EBEXU4QC
Y4BZOKUVFF553HW77QK6AXMSII7VDE4BQFVETTFIZKLIZPUW2MKAC
JN7KWJRJMW25JLL4VFNCJA4VJJVLTXPC5UICMCO6TSHOKKBJTVGQC
4WUPW3DVDVW4PIEGD6GX56NEKYDJZSJ5UNHOTKRO66FFKFLOQ3OQC
MVGZ575CHTEYOYZJ22DZDSVSYWHW7U3BFUKSQIPDDQYWVASSUQLQC
TGD23KBV2V7J7FFX7FDBENYMGDIOMS2JNOIZAYNXGQ52E4CQNJYAC
ZUBUVNSQIZVWXMCHYK2JTKFUSPVXNWFNNZ75IWY7MZHLGYF42A3AC
ZIZORUH6UNA67S6DRRGGCTSOCYENTHGODHJ5JP3UUPLIKGYU5UVAC
IOVPOFAVXEQIZ7BCFVVAWFW3RYFXPK2GOILDWA6N6QHQHLAJ4XTAC
XJLV3OIIPQ6V6YHJGFI7RRDYI5MXTXCXSVKPOZFUOGMV4B2DEJSQC
77GFHLOOX3JBBHHHSSR7TFOMOFUCIT5P6A7PQQOVNCZULXKMERMAC
NWXFEA3LHLS5YE6BUVB2IXMIA6ARTVH5PU3FD4I4M5UCDYMC6INAC
DZNNVEMP3EYFGAEFWMBSMPU55VQT7QVAVNNOG473CN3FAT4TTARQC
NLKO2HJ55FV76MQCUCSJBSSZFI4NK6ROLQ323F2RDFDTLU5IFLDQC
CQP5HB5FX2UYIDKYJ4DOF3J7QIM6466VLNO3IGY4CFVE5CKKFXQAC
echo foobar
(require 'cl)
(defun op--collect-args (body)
(cl-flet ((walker (body &optional args)
(if (null body)
args
(if (symbolp body)
(when (eql ?\_ (elt (symbol-name body) 0))
(cons body args))
(if (listp body)
(append (op--collect-args (car body))
(op--collect-args (cdr body))
))))))
(sort (walker body)
(lambda (a b)
(< (string-to-number (subseq (symbol-name a) 1))
(string-to-number (subseq (symbol-name b) 1)))))))
(defmacro op (&rest body)
`(lambda ,(op--collect-args body)
,@body))
(defun blank-line-p ()
(= (current-indentation)
(- (line-end-position) (line-beginning-position))))
(defun helm-generate-lisp-skeleton ()
(interactive)
(let ((skeletons '(("defunction" . skel-defun)
("defmacro" . skel-defmacro)
("defsystem" . skel-defsystem)
("defpackage" . skel-defpackage)
("defparameter" . skel-defparameter)
("defvar" . skel-defvar))))
(funcall (helm-comp-read "code template: " skeletons))
(evil-insert 1)))
(defun create-system-files ()
(interactive)
(mapcar (lambda (it) (save-buffer (find-file (format "%s.lisp" (cadr it)))))
(getf (cddar (read-from-string
(buffer-substring (point)
(mark))))
:components)))
(defun slime-ecl ()
(interactive)
(let ((inferior-lisp-program "ecl"))
(slime)))
(defun slime-cmucl ()
(interactive)
(let ((inferior-lisp-program "cmucl"))
(slime)))
(defun slime-sbcl ()
(interactive)
(let ((inferior-lisp-program "sbcl"))
(slime)))
(defun slime-ccl ()
(interactive)
(let ((inferior-lisp-program "ccl"))
(slime)))
(defun find-use-clause (current-form)
(when current-form
(destructuring-bind (discriminator . packages) current-form
(case discriminator
(:use (remove-if (op (or (eql :cl _)))
(cdr current-form)))
(defpackage (find-use-clause
(find-if (lambda (f)
(and (listp f)
(eql (car f) :use)))
'(defpackage :tracking-sim (:use :cl :alexandria :serapeum) (:export)))))))))
(defun load-package-uses ()
(interactive)
(slime-eval-async `(ql:quickload ',(find-use-clause (list-at-point)))))
(defun paredit-wiggle-back ()
(paredit-forward)
(paredit-backward))
(defmacro defparedit-wrapper (name invoked-wrapper)
`(defun ,name ()
(interactive)
(paredit-wiggle-back)
(,invoked-wrapper)))
(defun set-exec-path-from-shell-PATH ()
"Set up Emacs' `exec-path' and PATH environment variable to match
that used by the user's shell.
This is particularly useful under Mac OSX, where GUI apps are not
started from a shell."
(interactive)
(let ((path-from-shell
(replace-regexp-in-string "[ \t\n]*$" ""
(shell-command-to-string
"zsh -c 'source ~/.zsh.d/dependencies/utils.zsh;source ~/.zsh.d/dependencies/path-setup.zsh;echo $PATH'")
)))
(setenv "PATH" path-from-shell)
(setq exec-path (split-string path-from-shell path-separator))))
;;; cjpad.el --- Skeletons for interacting with cjpad
;; Copyright (C) 2017 Edward Langley
;; Author: Edward Langley <fwoar@elangley.org>
;; Keywords: cjpad
;; Version: 0.0.1
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; Put a description of the package here
;;; Code:
;; code goes here
(defun extract-pad-name (pad-url)
(replace-regexp-in-string "^https?://cjpad.cj.com/\\([^/]+\\)/?$"
"\\1"
pad-url))
(defun get-pad-url (name)
(format "http://cjpad.cj.com/ep/pad/export/%s/latest?format=txt"
name))
(defun convert-to-export (pad-url)
(format "http://cjpad.cj.com/ep/pad/export/%s/latest?format=txt"
(extract-pad-name pad-url)))
(defvar *cjpad-exports* "~/cjpad-imports/")
(defun get-cjpad (pad-name)
(interactive "M")
(let ((file-name (format "%s%s" *cjpad-exports* pad-name))
(pad-url (get-pad-url pad-name)))
(with-current-buffer (url-retrieve-synchronously (get-pad-url pad-name))
(write-region nil nil file-name))
(find-file file-name)))
(defun import-cjpad (s e)
(interactive "r")
(message "=============================")
(let* ((pad-url (buffer-substring s e)))
(get-cjpad (extract-pad-name pad-url))
(save-excursion
(end-of-line)
(insert " [" file-name "]")
(message "foo")))
(message "============================="))
(defun update-cjpad-file (fn)
(interactive "F")
(message fn)
(let* ((pad-name (file-name-base fn))
(pad-url (get-pad-url pad-name))
(file-name (format "%s%s" *cjpad-exports* pad-name)))
(with-current-buffer (url-retrieve-synchronously pad-url)
(write-region nil nil file-name))))
(defun update-cjpad ()
(interactive)
(update-cjpad-file (buffer-file-name (current-buffer))))
(defun browse-cjpad ()
(interactive)
(browse-url (format "http://cjpad.cj.com/%s"
(file-name-base (buffer-file-name (current-buffer))))))
(provide 'cjpad)
;;;; -*- mode: Emacs-Lisp;tab-width: 8;indent-tabs-mode: nil; -*-
;; -*- mode: Emacs-Lisp;tab-width: 8;indent-tabs-mode: nil; -*-
(setq gc-cons-threshold 100000000)
(message invocation-name)
(setq inhibit-splash-screen t)
(setq inhibit-startup-message t)
;;(let ((file-name-handler-alist nil))
(add-hook 'after-init-hook
(lambda ()
;; (require 'projectile)
;; (require 'evil-numbers)
(unless (fboundp 'server-running-p)
(require 'server))
(unless (server-running-p)
(server-start))
(projectile-mode)
(evil-mode)
(paredit-mode)
;;(global-company-mode)
(setq linum-format "%5d\u2502")
(global-linum-mode)
(set-exec-path-from-shell-PATH)
;; NOTE: this must be here...
(slime-setup)
(global-company-mode 1)
(define-key evil-insert-state-map (kbd "TAB") 'company-complete)
(define-key evil-insert-state-map (kbd "TAB") 'company-indent-or-complete-common)
(evil-mode)
(use-package evil-numbers
:ensure t
:config
(global-set-key (kbd "C-c +") 'evil-numbers/inc-at-pt)
(global-set-key (kbd "C-c -") 'evil-numbers/dec-at-pt))
;;(use-package evil-numbers
;; :ensure t
;; :config
;; (global-set-key (kbd "C-c +") 'evil-numbers/inc-at-pt)
;; (global-set-key (kbd "C-c -") 'evil-numbers/dec-at-pt))
(define-key evil-insert-state-map (kbd "C-c j") 'skeleton-next-position)
(define-key evil-insert-state-map (kbd "C-c k") 'skeleton-prev-position)
(define-key evil-normal-state-map " g" 'helm-generate-lisp-skeleton)
(define-key evil-visual-state-map " g" 'helm-generate-lisp-skeleton))
(defun helm-generate-lisp-skeleton ()
(interactive)
(let ((skeletons '(("defunction" . skel-defun)
("defmacro" . skel-defmacro)
("defsystem" . skel-defsystem)
("defpackage" . skel-defpackage)
("defparameter" . skel-defparameter)
("defvar" . skel-defvar))))
(funcall (helm-comp-read "code template: " skeletons))
(evil-insert 1)))
(define-key evil-insert-state-map (kbd "C-c j") 'skeleton-next-position)
(define-key evil-insert-state-map (kbd "C-c k") 'skeleton-prev-position)
(define-key evil-normal-state-map " g" 'helm-generate-lisp-skeleton)
(define-key evil-visual-state-map " g" 'helm-generate-lisp-skeleton))
(defun create-system-files ()
(interactive)
(mapcar (lambda (it) (save-buffer (find-file (format "%s.lisp" (cadr it)))))
(getf (cddar (read-from-string
(buffer-substring (point)
(mark))))
:components)))
(when (and (boundp 'common-lisp-hyperspec-root)
(string-prefix-p "/" common-lisp-hyperspec-root))
(setq common-lisp-hyperspec-root
(concat "file://" common-lisp-hyperspec-root)))
(defun slime-cmucl ()
(interactive)
(let ((inferior-lisp-program "cmucl"))
(slime)))
(add-hook 'lisp-mode-hook
'(lambda ()
;;(define-key evil-insert-state-map "^N" 'slime-fuzzy-indent-and-complete-symbol)
(unless (string= "*slime-scratch*" (buffer-name))
(paredit-mode)
(evil-paredit-mode))
(rainbow-delimiters-mode)))
(setq slime-contribs
'(slime-fancy
slime-company
slime-macrostep
slime-trace-dialog
slime-mdot-fu))
(defun slime-sbcl ()
(interactive)
(let ((inferior-lisp-program "sbcl"))
(slime)))
(modify-syntax-entry ?- "w" lisp-mode-syntax-table)
(modify-syntax-entry ?* "w" lisp-mode-syntax-table)
(modify-syntax-entry ?+ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?! "w" lisp-mode-syntax-table)
(modify-syntax-entry ?$ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?% "w" lisp-mode-syntax-table)
(modify-syntax-entry ?& "w" lisp-mode-syntax-table)
(modify-syntax-entry ?% "w" lisp-mode-syntax-table)
(modify-syntax-entry ?= "w" lisp-mode-syntax-table)
(modify-syntax-entry ?< "w" lisp-mode-syntax-table)
(modify-syntax-entry ?> "w" lisp-mode-syntax-table)
;;(modify-syntax-entry ?@ "w" lisp-mode-syntax-table)
(defun slime-ccl ()
(interactive)
(let ((inferior-lisp-program "ccl"))
(slime)))
(modify-syntax-entry ?^ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?_ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?~ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?. "w" lisp-mode-syntax-table)
(add-hook 'lisp-mode-hook
'(lambda ()
;;(define-key evil-insert-state-map "^N" 'slime-fuzzy-indent-and-complete-symbol)
(unless (string= "*slime-scratch*" (buffer-name))
(paredit-mode)
(evil-paredit-mode))
(rainbow-delimiters-mode)))
(setq slime-contribs
'(slime-fancy
slime-company
slime-macrostep
slime-trace-dialog
slime-mdot-fu)))
(use-package slime-company
:no-require t
:defer t
:ensure t)
))
;; (use-package jdee
;; :ensure t)
(use-package css-eldoc :ensure t)
(use-package ag :ensure t)
(use-package rainbow-delimiters :ensure t)
(use-package helm :ensure t)
(use-package helm-projectile :ensure t)
(use-package eldoc-eval :ensure t)
(use-package csv-mode :ensure t)
(use-package yaml-mode :ensure t)
(use-package web-mode :ensure t)
(use-package vue-mode :ensure t)
(use-package scss-mode :ensure t)
(use-package markdown-mode :ensure t)
(use-package magit :ensure t :defer 2)
(use-package highlight-parentheses :ensure t)
(use-package helm-projectile :ensure t)
(use-package helm-ls-git :ensure t)
(use-package helm-css-scss :ensure t)
;;(use-package ac-js2 :ensure t)
;;(use-package helm-cider :ensure t :defer 5)
(use-package helm-ag-r :ensure t)
(use-package helm-ag :ensure t)
(use-package project-explorer :ensure t)
(use-package css-eldoc
:ensure t)
(use-package ag
:ensure t)
(use-package evil-vimish-fold
:ensure t
:config
(evil-vimish-fold-mode 1))
(use-package zenburn-theme
:ensure t)
(use-package zeal-at-point
:ensure t)
(use-package rainbow-delimiters
:ensure t)
(use-package tabbar
:ensure t)
(use-package helm
:ensure t)
(use-package helm-projectile
:ensure t)
(progn ; helm
(require 'helm-config)
(helm-mode)
(global-set-key (kbd "C-x C-f") 'helm-find-files)
(define-key evil-normal-state-map " f" 'helm-projectile)
(define-key evil-normal-state-map " j" 'helm-buffers-list)
(global-set-key (kbd "M-x") 'helm-M-x))
(use-package csv-mode
:ensure t)
(use-package color-theme
:ensure t)
(use-package ansible
:ensure t)
(use-package alect-themes
:ensure t)
(use-package ac-js2
:ensure t)
(use-package yaml-mode
:ensure t)
(use-package web-mode
:ensure t)
(use-package vue-mode
:ensure t)
(use-package typescript-mode
:ensure t)
(use-package scss-mode
:ensure t)
(use-package rust-mode
:ensure t)
(use-package markdown-mode
:ensure t)
(use-package magit
:ensure t)
(use-package highlight-parentheses
:ensure t)
(use-package helm-projectile
:ensure t)
(use-package helm-ls-git
:ensure t)
;;(use-package helm-git
;; :ensure t)
(use-package helm-css-scss
:ensure t)
(use-package helm-cider
:ensure t)
(use-package helm-ag-r
:ensure t)
(use-package helm-ag
:ensure t)
(use-package emmet-mode
:ensure t
:config
(define-key evil-insert-state-map (kbd "C-c ,") 'emmet-expand-line)
)
(use-package project-explorer
:ensure t
)
(use-package ggtags
:ensure t
:config
(ggtags-mode 1)
(add-hook 'c-mode-common-hook
(lambda ()
(when (derived-mode-p 'c-mode 'c++-mode 'java-mode 'asm-mode)
(ggtags-mode 1)))))
(use-package pollen-mode
:config
(defun insert-lozenge ()
(interactive)
(insert-char 9674))
(define-key evil-insert-state-map (kbd "C-c C-l") 'insert-lozenge))
(progn ; helm
(require 'helm-config)
(helm-mode)
(global-set-key (kbd "C-x C-f") 'helm-find-files)
(define-key evil-normal-state-map " f" 'helm-projectile)
(define-key evil-normal-state-map " j" 'helm-buffers-list)
(global-set-key (kbd "M-x") 'helm-M-x))
(require 'js2-mode)
(require 'projectile)
(projectile-mode)
(add-hook 'after-init-hook
(lambda ()
(unless (server-running-p)
(server-start))
(evil-mode)
(paredit-mode)
(global-company-mode)
(global-linum-mode)))
(progn ; linum
(setq linum-format "%5d\u2502"))
(require 'evil-numbers)
(define-key evil-normal-state-map ",zz" 'zeal-at-point)
(modify-syntax-entry ?_ "w" js-mode-syntax-table)
(modify-syntax-entry ?- "w" lisp-mode-syntax-table)
(modify-syntax-entry ?* "w" lisp-mode-syntax-table)
(modify-syntax-entry ?+ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?! "w" lisp-mode-syntax-table)
(modify-syntax-entry ?$ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?% "w" lisp-mode-syntax-table)
(modify-syntax-entry ?& "w" lisp-mode-syntax-table)
(modify-syntax-entry ?% "w" lisp-mode-syntax-table)
(modify-syntax-entry ?= "w" lisp-mode-syntax-table)
(modify-syntax-entry ?< "w" lisp-mode-syntax-table)
(modify-syntax-entry ?> "w" lisp-mode-syntax-table)
(modify-syntax-entry ?@ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?[ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?] "w" lisp-mode-syntax-table)
(modify-syntax-entry ?^ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?_ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?~ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?{ "w" lisp-mode-syntax-table)
(modify-syntax-entry ?} "w" lisp-mode-syntax-table)
(modify-syntax-entry ?. "w" lisp-mode-syntax-table)
;;(modify-syntax-entry ?_ "w" js-mode-syntax-table)
(let ((default-directory "~/.emacs.d/lisp/"))
(make-directory default-directory t)
(normal-top-level-add-subdirs-to-load-path))
(setq erc-hide-list '("JOIN" "PART" "QUIT"))
;; (defun znc-erc ()
;; (interactive)
;; (erc-ssl :server "localhost" :port 6697 :nick "edwlan/freenode" :password "t31ch3rtb"))
(add-to-list 'auto-mode-alist '("\\.cljs\\.hl\\'" . clojurescript-mode))
(add-hook 'ruby-mode-hook
'(lambda ()
(eldoc-mode)
(robe-mode)))
(add-hook 'clojure-mode-hook
'(lambda ()
;; Hoplon functions and macros
(paredit-mode)
(define-key evil-insert-state-map "^N" 'helm-cider-apropos)
(dolist (pair '((page . 'defun)
(loop-tpl . 'defun)
(if-tpl . '1)
(for-tpl . '1)
(case-tpl . '1)
(cond-tpl . 'defun)))
(put-clojure-indent (car pair)
(car (last pair))))))
(setq tls-program '("openssl s_client -connect %h:%p -no_ssl2 -ign_eof"))
(global-auto-revert-mode t)
;;; Use auto-complete for ensime
(defun scala/enable-eldoc ()
"Show error message or type name at point by Eldoc."
(setq-local eldoc-documentation-function
#'(lambda ()
(when (ensime-connected-p)
(let ((err (ensime-print-errors-at-point)))
(or (and err (not (string= err "")) err)
(ensime-print-type-at-point))))))
(eldoc-mode +1))
(defun scala/completing-dot-company ()
(cond (company-backend
(company-complete-selection)
(scala/completing-dot))
(t
(insert ".")
(company-complete))))
(defun scala/completing-dot-ac ()
(insert ".")
(ac-trigger-key-command t))
(defun scala/completing-dot ()
"Insert a period and show company completions."
(interactive "*")
(eval-and-compile (require 'ensime))
(eval-and-compile (require 's))
(when (s-matches? (rx (+ (not space)))
(buffer-substring (line-beginning-position) (point)))
(delete-horizontal-space t))
(cond ((not (and (ensime-connected-p) ensime-completion-style))
(insert "."))
((eq ensime-completion-style 'company)
(scala/completing-dot-company))
((eq ensime-completion-style 'auto-complete)
(scala/completing-dot-ac))))
;; Initialization
(add-hook 'ensime-mode-hook #'scala/enable-eldoc)
(add-hook 'scala-mode-hook 'ensime-scala-mode-hook)
(add-hook 'scala-mode-hook 'flycheck-mode)
(add-hook 'haskell-mode-hook 'intero-mode)
(add-hook 'c-mode-common-hook
(lambda ()
(when (derived-mode-p 'c-mode 'c++-mode 'java-mode)
(semantic-mode 1)
(global-semanticdb-minor-mode 1)
(global-semantic-idle-scheduler-mode 1)
(global-semantic-stickyfunc-mode 1)
(helm-gtags-mode)
(ggtags-mode 1))))
(setq company-backends (delete 'company-semantic company-backends))
(defun alexott/cedet-hook ()
(local-set-key "\C-c\C-j" 'semantic-ia-fast-jump)
(local-set-key "\C-c\C-s" 'semantic-ia-show-summary))
(add-hook 'c-mode-common-hook 'alexott/cedet-hook)
(add-hook 'c-mode-hook 'alexott/cedet-hook)
(add-hook 'c++-mode-hook 'alexott/cedet-hook)
(defun set-exec-path-from-shell-PATH ()
"Set up Emacs' `exec-path' and PATH environment variable to match that used by the user's shell.
This is particularly useful under Mac OSX, where GUI apps are not started from a shell."
(interactive)
(let ((path-from-shell (replace-regexp-in-string "[ \t\n]*$" "" (shell-command-to-string "$SHELL --login -i -c 'echo $PATH'"))))
(setenv "PATH" path-from-shell)
(setq exec-path (split-string path-from-shell path-separator))))
(set-exec-path-from-shell-PATH)
(require 'ede)
(global-ede-mode)
(setq fwoar.is-ordinary (not (string= invocation-name "EmacsNotes")))
(unless fwoar.is-ordinary
(setq with-editor-emacsclient-executable "/usr/local/bin/emacsclient")
(require 'cjpad)
(find-file "~/notes.org"))
(require 'cl)
(defun op--collect-args (body)
(cl-flet ((walker (body &optional args)
(if (null body)
args
(if (symbolp body)
(when (eql ?\_ (elt (symbol-name body) 0))
(cons body args))
(if (listp body)
(append (op--collect-args (car body))
(op--collect-args (cdr body))
))))))
(sort (walker body)
(lambda (a b)
(< (string-to-number (subseq (symbol-name a) 1))
(string-to-number (subseq (symbol-name b) 1)))))))
(defmacro op (&rest body)
`(lambda ,(op--collect-args body)
,@body))
(defun blank-line-p ()
(= (current-indentation)
(- (line-end-position) (line-beginning-position))))
(defun helm-generate-lisp-skeleton ()
(interactive)
(let ((skeletons '(("defunction" . skel-defun)
("defmacro" . skel-defmacro)
("defsystem" . skel-defsystem)
("defpackage" . skel-defpackage)
("defparameter" . skel-defparameter)
("defvar" . skel-defvar))))
(funcall (helm-comp-read "code template: " skeletons))
(evil-insert 1)))
(defun create-system-files ()
(interactive)
(mapcar (lambda (it) (save-buffer (find-file (format "%s.lisp" (cadr it)))))
(getf (cddar (read-from-string
(buffer-substring (point)
(mark))))
:components)))
(defun slime-ecl ()
(interactive)
(let ((inferior-lisp-program "ecl"))
(slime)))
(defun slime-cmucl ()
(interactive)
(let ((inferior-lisp-program "cmucl"))
(slime)))
(defun slime-sbcl ()
(interactive)
(let ((inferior-lisp-program "sbcl"))
(slime)))
(defun slime-ccl ()
(interactive)
(let ((inferior-lisp-program "ccl"))
(slime)))
(defun find-use-clause (current-form)
(when current-form
(destructuring-bind (discriminator . packages) current-form
(case discriminator
(:use (remove-if (op (or (eql :cl _)))
(cdr current-form)))
(defpackage (find-use-clause
(find-if (lambda (f)
(and (listp f)
(eql (car f) :use)))
'(defpackage :tracking-sim (:use :cl :alexandria :serapeum) (:export)))))))))
(defun load-package-uses ()
(interactive)
(slime-eval-async `(ql:quickload ',(find-use-clause (list-at-point)))))
(defun paredit-wiggle-back ()
(paredit-forward)
(paredit-backward))
(defmacro defparedit-wrapper (name invoked-wrapper)
`(defun ,name ()
(interactive)
(paredit-wiggle-back)
(,invoked-wrapper)))
(defun set-exec-path-from-shell-PATH ()
"Set up Emacs' `exec-path' and PATH environment variable to match
that used by the user's shell.
This is particularly useful under Mac OSX, where GUI apps are not
started from a shell."
(interactive)
(let ((path-from-shell
(replace-regexp-in-string "[ \t\n]*$" ""
(shell-command-to-string
"zsh -c 'source ~/.zsh.d/dependencies/utils.zsh;source ~/.zsh.d/dependencies/path-setup.zsh;echo $PATH'")
)))
(setenv "PATH" path-from-shell)
(setq exec-path (split-string path-from-shell path-separator))))
;;; cjpad.el --- Skeletons for interacting with cjpad
;; Copyright (C) 2017 Edward Langley
;; Author: Edward Langley <fwoar@elangley.org>
;; Keywords: cjpad
;; Version: 0.0.1
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; Put a description of the package here
;;; Code:
;; code goes here
(defun extract-pad-name (pad-url)
(replace-regexp-in-string "^https?://cjpad.cj.com/\\([^/]+\\)/?$"
"\\1"
pad-url))
(defun get-pad-url (name)
(format "http://cjpad.cj.com/ep/pad/export/%s/latest?format=txt"
name))
(defun convert-to-export (pad-url)
(format "http://cjpad.cj.com/ep/pad/export/%s/latest?format=txt"
(extract-pad-name pad-url)))
(defvar *cjpad-exports* "~/cjpad-imports/")
(defun get-cjpad (pad-name)
(interactive "M")
(let ((file-name (format "%s%s" *cjpad-exports* pad-name))
(pad-url (get-pad-url pad-name)))
(with-current-buffer (url-retrieve-synchronously (get-pad-url pad-name))
(write-region nil nil file-name))
(find-file file-name)))
(defun import-cjpad (s e)
(interactive "r")
(message "=============================")
(let* ((pad-url (buffer-substring s e)))
(get-cjpad (extract-pad-name pad-url))
(save-excursion
(end-of-line)
(insert " [" file-name "]")
(message "foo")))
(message "============================="))
(defun update-cjpad-file (fn)
(interactive "F")
(message fn)
(let* ((pad-name (file-name-base fn))
(pad-url (get-pad-url pad-name))
(file-name (format "%s%s" *cjpad-exports* pad-name)))
(with-current-buffer (url-retrieve-synchronously pad-url)
(write-region nil nil file-name))))
(defun update-cjpad ()
(interactive)
(update-cjpad-file (buffer-file-name (current-buffer))))
(defun browse-cjpad ()
(interactive)
(browse-url (format "http://cjpad.cj.com/%s"
(file-name-base (buffer-file-name (current-buffer))))))
(provide 'cjpad)