Compare commits
No commits in common. "master" and "ab1503d2e851ce96aba74329c825ca99aa6f7e55" have entirely different histories.
master
...
ab1503d2e8
14 changed files with 3132 additions and 120 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,4 +1,2 @@
|
||||||
elpa
|
|
||||||
eshell
|
|
||||||
backup/
|
backup/
|
||||||
*.elc
|
*.elc
|
||||||
|
|
|
||||||
6
.gitmodules
vendored
6
.gitmodules
vendored
|
|
@ -1,3 +1,9 @@
|
||||||
[submodule "stuff/go-mode.el"]
|
[submodule "stuff/go-mode.el"]
|
||||||
path = stuff/go.el
|
path = stuff/go.el
|
||||||
url = https://github.com/dominikh/go-mode.el.git
|
url = https://github.com/dominikh/go-mode.el.git
|
||||||
|
[submodule "stuff/dockerfile-mode"]
|
||||||
|
path = stuff/dockerfile-mode
|
||||||
|
url = https://github.com/spotify/dockerfile-mode
|
||||||
|
[submodule "stuff/sass-mode"]
|
||||||
|
path = stuff/sass-mode
|
||||||
|
url = https://github.com/nex3/sass-mode
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,20 @@
|
||||||
; Delete trailing whitespaces on save
|
; Delete trailing whitespaces on save
|
||||||
(add-hook 'before-save-hook 'delete-trailing-whitespace)
|
(add-hook 'write-file-hooks 'delete-trailing-whitespace)
|
||||||
|
|
||||||
;; Mode to collapse code block
|
;; Mode to collapse code block
|
||||||
(add-hook 'c-mode-common-hook (lambda () (hs-minor-mode 1)))
|
(add-hook 'c-mode-common-hook (lambda () (hs-minor-mode 1)))
|
||||||
(add-hook 'lisp-mode-hook (lambda () (hs-minor-mode 1)))
|
(add-hook 'lisp-mode-hooks (lambda () (hs-minor-mode 1)))
|
||||||
(add-hook 'java-mode-hook (lambda () (hs-minor-mode 1)))
|
(add-hook 'java-mode-hooks (lambda () (hs-minor-mode 1)))
|
||||||
(add-hook 'python-mode-hook (lambda () (hs-minor-mode 1)))
|
(add-hook 'python-mode-hooks (lambda () (hs-minor-mode 1)))
|
||||||
|
|
||||||
; Auto insert C/C++ header guard
|
; Auto insert C/C++ header guard
|
||||||
(add-hook 'find-file-hook
|
(add-hook 'find-file-hooks
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(when (and (memq major-mode '(c-mode c++-mode)) (equal (point-min) (point-max)) (string-match ".*\\.hh?" (buffer-file-name)))
|
(when (and (memq major-mode '(c-mode c++-mode)) (equal (point-min) (point-max)) (string-match ".*\\.hh?" (buffer-file-name)))
|
||||||
(insert-header-guard)
|
(insert-header-guard)
|
||||||
(goto-line 3)
|
(goto-line 3)
|
||||||
(insert "\n"))))
|
(insert "\n"))))
|
||||||
(add-hook 'find-file-hook
|
(add-hook 'find-file-hooks
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(when (and (memq major-mode '(c-mode c++-mode)) (equal (point-min) (point-max)) (string-match ".*\\.cc?" (buffer-file-name)))
|
(when (and (memq major-mode '(c-mode c++-mode)) (equal (point-min) (point-max)) (string-match ".*\\.cc?" (buffer-file-name)))
|
||||||
(insert-header-inclusion))))
|
(insert-header-inclusion))))
|
||||||
|
|
@ -28,7 +28,18 @@
|
||||||
(insert-shebang-if-empty "/usr/bin/ruby")))
|
(insert-shebang-if-empty "/usr/bin/ruby")))
|
||||||
|
|
||||||
; Golang
|
; Golang
|
||||||
; Modern Go configuration now in packages.el using eglot and go-mode
|
|
||||||
(add-hook 'go-mode-hook
|
(add-hook 'go-mode-hook
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(set (make-local-variable 'compile-command) "go build")))
|
(set (make-local-variable 'compile-command) "go build")))
|
||||||
|
|
||||||
|
(add-hook 'go-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(when (buffer-empty-p)
|
||||||
|
(save-excursion
|
||||||
|
(goto-char (point-min))
|
||||||
|
(insert "package \n\nimport (\n\t\n)\n")))))
|
||||||
|
|
||||||
|
(add-hook 'before-save-hook 'gofmt-before-save)
|
||||||
|
|
||||||
|
(eval-after-load "go-mode"
|
||||||
|
'(require 'flymake-go))
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,10 @@
|
||||||
(global-set-key (kbd "C-c k") 'kill-this-buffer)
|
(global-set-key (kbd "C-c k") 'kill-this-buffer)
|
||||||
(put 'narrow-to-region 'disabled nil)
|
(put 'narrow-to-region 'disabled nil)
|
||||||
|
|
||||||
|
;; Magit
|
||||||
|
(global-set-key (kbd "C-x g") 'magit-status)
|
||||||
|
(global-set-key (kbd "C-x M-g") 'magit-dispatch-popup)
|
||||||
|
|
||||||
;; Don't shift-selection
|
;; Don't shift-selection
|
||||||
(setq shift-select-mode nil)
|
(setq shift-select-mode nil)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,76 +18,18 @@
|
||||||
(add-to-list 'auto-mode-alist '("\\.bbclass$" . conf-mode))
|
(add-to-list 'auto-mode-alist '("\\.bbclass$" . conf-mode))
|
||||||
(add-to-list 'auto-mode-alist '("\\.bbappend$" . conf-mode))
|
(add-to-list 'auto-mode-alist '("\\.bbappend$" . conf-mode))
|
||||||
|
|
||||||
|
;; Go mode
|
||||||
|
(require 'go-mode-autoloads)
|
||||||
|
|
||||||
;; Changelog mode
|
;; Changelog mode
|
||||||
(add-to-list 'auto-mode-alist '("COMMIT_EDITMSG" . change-log-mode))
|
(add-to-list 'auto-mode-alist '("COMMIT_EDITMSG" . change-log-mode))
|
||||||
|
|
||||||
;; web-mode
|
;; Edje-mode
|
||||||
;; Now configured in packages.el with LSP support and prettier auto-formatting
|
(require 'edje-mode)
|
||||||
;(require 'web-mode)
|
(add-to-list 'auto-mode-alist '("\\.edc$" . edje-mode))
|
||||||
;(add-to-list 'auto-mode-alist '("\\.svelte$" . web-mode))
|
|
||||||
;(setq web-mode-code-indent-offset 4)
|
|
||||||
;(setq web-mode-css-indent-offset 4)
|
|
||||||
;(setq web-mode-markup-indent-offset 4)
|
|
||||||
;(setq web-mode-script-padding 4)
|
|
||||||
;(setq web-mode-style-padding 4)
|
|
||||||
;(setq web-mode-void-elements
|
|
||||||
; '("area" "base" "br" "command" "embed" "hr" "img" "input" "keygen"
|
|
||||||
; "link" "meta" "param" "source" "track" "wbr" "tmpl_var"))
|
|
||||||
|
|
||||||
;; Vue.js-mode
|
|
||||||
(require 'vue-mode)
|
|
||||||
(add-to-list 'auto-mode-alist '("\\.vue$" . vue-mode))
|
|
||||||
;(setq mmm-js-mode-enter-hook (lambda () (setq syntax-ppss-table nil)))
|
|
||||||
;(setq mmm-typescript-mode-enter-hook (lambda () (setq syntax-ppss-table nil)))
|
|
||||||
(defun fix-mmm-syntax ()
|
|
||||||
(save-restriction
|
|
||||||
(setq-local syntax-ppss-table typescript-mode-syntax-table)
|
|
||||||
))
|
|
||||||
(add-hook 'mmm-typescript-mode-enter-hook 'fix-mmm-syntax)
|
|
||||||
;; js-indent-level now configured in packages.el (set to 4 spaces)
|
|
||||||
;(setq js-indent-level 2)
|
|
||||||
(setq vue-html-extra-indent 2)
|
|
||||||
(setq-default indent-tabs-mode nil)
|
|
||||||
|
|
||||||
(add-hook 'mmm-mode-hook
|
|
||||||
(lambda ()
|
|
||||||
(set-face-background 'mmm-default-submode-face nil)
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-col" \n ("cols" "6") ("sm" "6") ("md" "6") ("lg" "6") ("xl" "6") ("offset" "6") ("offset-sm" "6") ("offset-md" "6") ("offset-lg" "6") ("offset-xl" "6") ("order" "1") ("order-sm" "1") ("order-md" "1") ("order-lg" "1") ("order-xl" "1") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-container" \n ("fluid") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-row" \n ("no-gutters") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-form-row" \n ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-alert" \n ("variant" "info") ("dismissible") ("dismiss-label" "Close") ("show") ("fade") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-badge" \n ("href" "#") ("rel" "") ("target" "_self") ("active") ("disabled") ("to" "") ("append") ("replace") ("event" "click") ("active-class" "") ("exact") ("exact-active-class" "") ("router-tag" "a") ("no-prefetch") ("tag" "span") ("variant" "info") ("pill") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-breadcrumb" \n ("items" "") (":items" "{}") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-button" \n ("href" "#") ("rel" "") ("target" "_self") ("active") ("disabled") ("to" "") ("append") ("replace") ("event" "click") ("active-class" "") ("exact") ("exact-active-class" "") ("router-tag" "a") ("no-prefetch") ("block") ("size" "sm") ("variant" "info") ("type" "button") ("tag" "button") ("pill") ("squared") ("pressed") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-button-group" \n ("vertical") ("size" "sm") ("tag" "div") ("aria-role" "group") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-button-toolbar" \n ("justify") ("key-nav") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-calendar" \n ("id" "") ("value" "") ("value-as-date") ("initial-date" "") ("disabled") ("readonly") ("min" "") ("max" "") ("date-disabled-fn" "") ("start-weekday" "0") ("locale" "") ("direction" "") ("selected-variant" "primary") ("today-variant" "") ("no-highlight-today") ("date-info-fn" "") ("width" "270px") ("block") ("hide-header") ("show-decade-nav") ("hidden") ("aria-controls" "") ("role-description" "") ("label-prev-decade" "Previous decade") ("label-prev-year" "Previous year") ("label-prev-month" "Previous month") ("label-current-month" "Current month") ("label-next-month" "Next month") ("label-next-year" "Next year") ("label-next-decade" "Next decade") ("label-today" "Today") ("label-selected" "Selected date") ("label-no-date-selected" "No date selected") ("label-calendar" "Calendar") ("label-nav" "Calendar navigation") ("label-help" "Use cursor keys to navigate calendar dates") ("date-format-options" "{}") ("weekday-header-format" "short") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-form" \n ("id" "") ("inline") ("novalidate") ("validated") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-form-text" \n ("id" "") ("tag" "small") ("inline") ("text-variant" "muted") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-form-invalid-feedback" \n ("id" "") ("tag" "small") ("tooltip") ("force-show") ("state") ("aria-live" "") ("role" "") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-form-valid-feedback" \n ("id" "") ("tag" "small") ("tooltip") ("force-show") ("state") ("aria-live" "") ("role" "") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-form-datalist" \n (":options" "{}") ("value-field" "value") ("text-field" "text") ("html-field" "html") ("disabled-field" "disabled") ("id" "") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-form-input" \n ("id" "") ("name" "") ("disabled") ("required") ("form" "") ("autofocus") ("size" "sm") ("state") ("value" "") ("aria-invalid") ("readonly") ("plaintext") ("autocomplete" "") ("placeholder" "") ("formatter" "") ("lazy-formatter") ("trim") ("number") ("lazy") ("debounce" "0") ("type" "text") ("no-wheel") ("min" "") ("max" "") ("step" "") ("list" "{}") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-input-group" \n ("id" "") ("size" "sm") ("prepend" "") ("prepend-html" "") ("append" "") ("append-html" "") ("tag" "div") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-input-group-prepend" \n ("id" "") ("tag" "div") ("is-text") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-input-group-append" \n ("id" "") ("tag" "div") ("is-text") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-input-group-text" \n ("tag" "div") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-input-group-addon" \n ("id" "") ("tag" "div") ("is-text") ("append") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-nav" \n ("tag" "ul") ("fill") ("justified") ("align" "") ("tabs") ("pills") ("vertical") ("small") ("card-header") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-nav-item" \n ("href" "") ("rel" "") ("target" "") ("active") ("disabled") ("to" "") ("append") ("replace") ("event" "") ("active-class" "") ("exact") ("exact-active-class" "") ("router-tag" "a") ("no-prefetch") ("link-attrs" "{}") ("link-classes" "") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-nav-text" \n ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-nav-form" \n ("id" "") ("novalidate") ("validated") ("form-class" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-nav-item-dropdown" \n ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-navbar" \n ("tag" "nav") ("type" "light") ("variant" "") ("toggleable") ("fixed" "") ("sticky") ("print") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-navbar-nav" \n ("tag" "ul") ("fill") ("justified") ("align" "") ("small") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-navbar-brand" \n ("href" "#") ("ref" "") ("target" "_self") ("active") ("disabled") ("to" "") ("replace") ("event" "click") ("active-class" "") ("exact") ("exact-active-class" "") ("router-tag" "a") ("no-prefetch") ("tag" "div") ("v-model" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-navbar-toggle" \n ("label" "") ("target" "") ("v-if" "") ("v-for" "")))
|
|
||||||
(add-to-list 'sgml-tag-alist '("b-spinner" \n ("type" "border") ("label" "") ("variant" "primary") ("small") ("role" "status") ("tag" "span") ("v-if" "") ("v-for" "")))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
;; Org-mode
|
;; Org-mode
|
||||||
|
(require 'org-install)
|
||||||
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
|
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
|
||||||
(define-key global-map "\C-cl" 'org-store-link)
|
(define-key global-map "\C-cl" 'org-store-link)
|
||||||
(define-key global-map "\C-ca" 'org-agenda)
|
(define-key global-map "\C-ca" 'org-agenda)
|
||||||
|
|
@ -101,3 +43,22 @@
|
||||||
|
|
||||||
;; Markdown-mode
|
;; Markdown-mode
|
||||||
(add-to-list 'auto-mode-alist '("\\.md$" . markdown-mode))
|
(add-to-list 'auto-mode-alist '("\\.md$" . markdown-mode))
|
||||||
|
|
||||||
|
;; Python-mode
|
||||||
|
;(when (load "flymake" t)
|
||||||
|
; (defun flymake-pyflakes-init ()
|
||||||
|
; (let* ((temp-file (flymake-init-create-temp-buffer-copy
|
||||||
|
; 'flymake-create-temp-inplace))
|
||||||
|
; (local-file (file-relative-name
|
||||||
|
; temp-file
|
||||||
|
; (file-name-directory buffer-file-name))))
|
||||||
|
; (list "pyflakes" (list local-file))))
|
||||||
|
;
|
||||||
|
; (add-to-list 'flymake-allowed-file-name-masks
|
||||||
|
; '("\\.py\\'" flymake-pyflakes-init)))
|
||||||
|
;(add-hook 'find-file-hook 'flymake-find-file-hook)
|
||||||
|
|
||||||
|
;; mmm-mode
|
||||||
|
(add-hook 'mmm-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(set-face-background 'mmm-default-submode-face nil)))
|
||||||
|
|
|
||||||
17
configs/project.el
Normal file
17
configs/project.el
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
(setq project-roots
|
||||||
|
`(("Django project"
|
||||||
|
:root-contains-files ("manage.py")
|
||||||
|
:filename-regex ,(regexify-ext-list '(py html css js sh))
|
||||||
|
:exclude-paths '("contrib"))))
|
||||||
|
|
||||||
|
(global-set-key (kbd "C-c p f") 'project-root-find-file)
|
||||||
|
(global-set-key (kbd "C-c p g") 'project-root-grep)
|
||||||
|
(global-set-key (kbd "C-c p a") 'project-root-ack)
|
||||||
|
(global-set-key (kbd "C-c p d") 'project-root-goto-root)
|
||||||
|
(global-set-key (kbd "C-c p l") 'project-root-browse-seen-projects)
|
||||||
|
|
||||||
|
(global-set-key (kbd "C-c p s")
|
||||||
|
(lambda () (interactive)
|
||||||
|
(with-project-root
|
||||||
|
(ansi-term (getenv "SHELL")
|
||||||
|
(concat (car project-details) "-shell")))
|
||||||
49
init.el
49
init.el
|
|
@ -3,45 +3,6 @@
|
||||||
;;
|
;;
|
||||||
;; Made by Némunaire <nemunaire@nemunai.re>
|
;; Made by Némunaire <nemunaire@nemunai.re>
|
||||||
|
|
||||||
(require 'site-gentoo)
|
|
||||||
|
|
||||||
(require 'package)
|
|
||||||
(add-to-list 'package-archives
|
|
||||||
'("MELPA Stable" . "https://stable.melpa.org/packages/") t)
|
|
||||||
|
|
||||||
;; Added by Package.el. This must come before configurations of
|
|
||||||
;; installed packages. Don't delete this line. If you don't want it,
|
|
||||||
;; just comment it out by adding a semicolon to the start of the line.
|
|
||||||
;; You may delete these explanatory comments.
|
|
||||||
|
|
||||||
;; Initialize package system but don't activate packages yet
|
|
||||||
(setq package-enable-at-startup nil)
|
|
||||||
(package-initialize)
|
|
||||||
|
|
||||||
;; Register system-installed vterm in package-alist
|
|
||||||
;; (site-gentoo only adds to load-path, not package-alist)
|
|
||||||
(unless (assq 'vterm package-alist)
|
|
||||||
(let ((desc (package-desc-create
|
|
||||||
:name 'vterm
|
|
||||||
:version '(0 0 2)
|
|
||||||
:summary "Emulation of a terminal"
|
|
||||||
:reqs '((emacs (25 1)))
|
|
||||||
:kind 'dir
|
|
||||||
:dir "/usr/share/emacs/site-lisp/vterm")))
|
|
||||||
(push (cons 'vterm (list desc)) package-alist)))
|
|
||||||
|
|
||||||
;; Now activate all packages (including claude-code which will find vterm)
|
|
||||||
(package-activate-all)
|
|
||||||
|
|
||||||
;; Bootstrap use-package
|
|
||||||
(unless (package-installed-p 'use-package)
|
|
||||||
(package-refresh-contents)
|
|
||||||
(package-install 'use-package))
|
|
||||||
(require 'use-package)
|
|
||||||
(setq use-package-always-ensure t)
|
|
||||||
|
|
||||||
(setq flymake-allowed-file-name-masks nil)
|
|
||||||
|
|
||||||
(defun may-load (path)
|
(defun may-load (path)
|
||||||
"Load a file if it exists."
|
"Load a file if it exists."
|
||||||
(when (file-readable-p path)
|
(when (file-readable-p path)
|
||||||
|
|
@ -81,10 +42,11 @@
|
||||||
(require 'my-layout)
|
(require 'my-layout)
|
||||||
(require 'my-lisp-mode)
|
(require 'my-lisp-mode)
|
||||||
(require 'my-python-mode)
|
(require 'my-python-mode)
|
||||||
|
(require 'vue-mode)
|
||||||
|
|
||||||
;; load my configuration files
|
;; load my configuration files
|
||||||
(toc:load-config-file '("packages" ; Modern package management (load first)
|
(toc:load-config-file '("key-binding"
|
||||||
"key-binding"
|
;; "project"
|
||||||
"editing"
|
"editing"
|
||||||
"coding-style"
|
"coding-style"
|
||||||
"tags"
|
"tags"
|
||||||
|
|
@ -94,8 +56,3 @@
|
||||||
"custom"
|
"custom"
|
||||||
"perso"
|
"perso"
|
||||||
))
|
))
|
||||||
(custom-set-variables
|
|
||||||
'(package-selected-packages nil)
|
|
||||||
'(python-indent 4)
|
|
||||||
'(query-user-mail-address nil)
|
|
||||||
'(user-mail-address "nemunaire@nemunai.re"))
|
|
||||||
|
|
|
||||||
512
stuff/edje-mode.el
Normal file
512
stuff/edje-mode.el
Normal file
|
|
@ -0,0 +1,512 @@
|
||||||
|
;;; edje-mode-el -- Major mode for editing Edje files
|
||||||
|
|
||||||
|
;; Author: Gustavo Sverzut Barbieri <barbieri@gmail.com>
|
||||||
|
;; Created: 2007-07-23
|
||||||
|
;; Keywords: Edje major-mode
|
||||||
|
;; Url: http://barbieri-playground.googlecode.com/svn/dot-files/edje-mode.el
|
||||||
|
;; (if you find this file have problems, check that Url and request update)
|
||||||
|
|
||||||
|
;; Copyright (C) 2007 Gustavo Sverzut Barbieri <barbieri@gmail.com>
|
||||||
|
|
||||||
|
;; 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 2 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, write to the Free
|
||||||
|
;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||||
|
;; MA 02111-1307 USA
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; This mode is based on tutorial from Scott Andrew Borton:
|
||||||
|
;; http://two-wugs.net/emacs/mode-tutorial.html
|
||||||
|
|
||||||
|
|
||||||
|
(defvar edje-mode-hook nil)
|
||||||
|
|
||||||
|
(defun number-or-nil-to-string (v &optional default)
|
||||||
|
(cond ((numberp v) (number-to-string v))
|
||||||
|
((stringp v) (if (string= v "") (number-to-string default) v))
|
||||||
|
(t (number-to-string default))))
|
||||||
|
|
||||||
|
(defun non-empty-string (s)
|
||||||
|
(and (not (eq 'nil s))
|
||||||
|
(not (string= "" s))))
|
||||||
|
|
||||||
|
(defun edje-new-program-action-signal-emit (source emission)
|
||||||
|
"Insert new program SIGNAL_EMIT"
|
||||||
|
(interactive "ssource: \nsemission: ")
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" action: SIGNAL_EMIT \"" source "\" \"" emission "\";\n"
|
||||||
|
)))
|
||||||
|
|
||||||
|
(defun edje-new-program-action-state-set (state value target)
|
||||||
|
"Insert new program STATE_SET"
|
||||||
|
(interactive "sstate: \nsvalue (0.0): \nstarget: ")
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" action: STATE_SET \"" state "\" "
|
||||||
|
(number-or-nil-to-string value 0.0) ";\n"
|
||||||
|
" target: \"" target "\";\n"
|
||||||
|
)))
|
||||||
|
|
||||||
|
(defun edje-new-program-action (action)
|
||||||
|
"Insert new program action"
|
||||||
|
(interactive "saction: ")
|
||||||
|
(setq action (upcase action))
|
||||||
|
(cond ((string= action "STATE_SET")
|
||||||
|
(edje-new-program-action-state-set "" 0.0 ""))
|
||||||
|
((string= action "SIGNAL_EMIT")
|
||||||
|
(edje-new-program-action-signal-emit "" ""))
|
||||||
|
))
|
||||||
|
|
||||||
|
(defun edje-new-program (name signal source action)
|
||||||
|
"Insert new program block"
|
||||||
|
(interactive "sname: \nssignal: \nssource: \nsaction: ")
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
"\n"
|
||||||
|
" program {\n"
|
||||||
|
" name: \"" name "\";\n"
|
||||||
|
|
||||||
|
(if (non-empty-string signal)
|
||||||
|
(concat " signal: \"" signal "\";\n"))
|
||||||
|
|
||||||
|
(if (non-empty-string source)
|
||||||
|
(concat " source: \"" source "\";\n"))
|
||||||
|
))
|
||||||
|
|
||||||
|
(edje-new-program-action action)
|
||||||
|
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" }\n"
|
||||||
|
"\n"
|
||||||
|
)))
|
||||||
|
|
||||||
|
(defun edje-new-desc-relative (x y &optional defx defy)
|
||||||
|
"Insert new part description 'relative' line"
|
||||||
|
(interactive "sx: \nsy: ")
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" relative: "
|
||||||
|
(number-or-nil-to-string x defx) " "
|
||||||
|
(number-or-nil-to-string y defy) ";\n"
|
||||||
|
)))
|
||||||
|
|
||||||
|
(defun edje-new-desc-offset (x y &optional defx defy)
|
||||||
|
"Insert new part description 'offset' line"
|
||||||
|
(interactive "sx: \nsy: ")
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" offset: "
|
||||||
|
(number-or-nil-to-string x defx) " "
|
||||||
|
(number-or-nil-to-string y defy) ";\n"
|
||||||
|
)))
|
||||||
|
|
||||||
|
(defun edje-new-desc-inherit (name val)
|
||||||
|
"Insert new part description 'inherit' line"
|
||||||
|
(interactive "sname: \nsvalue: ")
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" inherit: \"" name "\" "
|
||||||
|
(number-or-nil-to-string val 0.0) ";\n"
|
||||||
|
)))
|
||||||
|
|
||||||
|
(defun edje-new-desc-text (font size text)
|
||||||
|
"Insert new part description 'text' block"
|
||||||
|
(interactive "sfont: \nssize: \nstext: ")
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" text {\n"
|
||||||
|
" font: \"" font "\";\n"
|
||||||
|
" size: " (number-or-nil-to-string size) ";\n"
|
||||||
|
" text: \"" text "\";\n"
|
||||||
|
" }\n"
|
||||||
|
)))
|
||||||
|
|
||||||
|
(defun edje-new-desc-image (name)
|
||||||
|
"Insert new part description 'image' block"
|
||||||
|
(interactive "sname: ")
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" image {\n"
|
||||||
|
" normal: \"" name "\";\n"
|
||||||
|
" }\n"
|
||||||
|
)))
|
||||||
|
|
||||||
|
(defun edje-new-desc-color (r g b a &optional defr defg defb defa)
|
||||||
|
"Insert new part description 'color' line"
|
||||||
|
(interactive "sred: \nsgreen: \nsblue: \nsalpha: ")
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" color: "
|
||||||
|
(number-or-nil-to-string r defr) " "
|
||||||
|
(number-or-nil-to-string g defg) " "
|
||||||
|
(number-or-nil-to-string b defb) " "
|
||||||
|
(number-or-nil-to-string a defa) ";\n"
|
||||||
|
)))
|
||||||
|
|
||||||
|
(defun edje-new-desc (name val &optional
|
||||||
|
r1_rx r1_ry
|
||||||
|
r2_rx r2_ry
|
||||||
|
r1_ox r1_oy
|
||||||
|
r2_ox r2_oy
|
||||||
|
part_type)
|
||||||
|
"Insert new part description block"
|
||||||
|
(interactive "sName: \nsValue: ")
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" description {\n"
|
||||||
|
" state: \"" name "\" " (number-or-nil-to-string val 0.0) ";\n"))
|
||||||
|
(if (string= part_type "RECT") (edje-new-desc-color 255 255 255 255))
|
||||||
|
(insert " rel1 {\n")
|
||||||
|
(edje-new-desc-relative r1_rx r1_ry 0.0 0.0)
|
||||||
|
(edje-new-desc-offset r1_ox r1_oy 0 0)
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" }\n"
|
||||||
|
" rel2 {\n"
|
||||||
|
))
|
||||||
|
(edje-new-desc-relative r2_rx r2_ry 1.0 1.0)
|
||||||
|
(edje-new-desc-offset r2_ox r2_oy -1 -1)
|
||||||
|
(insert " }\n")
|
||||||
|
(cond ((string= part_type "IMAGE") (edje-new-desc-image ""))
|
||||||
|
((string= part_type "TEXT") (edje-new-desc-text "" 10 "contents"))
|
||||||
|
)
|
||||||
|
(insert " }\n")
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun edje-new-part (name type &optional
|
||||||
|
r1_rx r1_ry
|
||||||
|
r2_rx r2_ry
|
||||||
|
r1_ox r1_oy
|
||||||
|
r2_ox r2_oy)
|
||||||
|
"Insert new part"
|
||||||
|
(interactive "sName: \nsType: ")
|
||||||
|
(setq type (upcase type))
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
"\n"
|
||||||
|
" part {\n"
|
||||||
|
" name: \"" name "\";\n"
|
||||||
|
" type: " type ";\n"
|
||||||
|
" mouse_events: 0;\n"
|
||||||
|
))
|
||||||
|
(edje-new-desc "default" 0.0 r1_rx r1_ry r2_rx r2_ry r1_ox r1_oy r2_ox r2_oy type)
|
||||||
|
(insert
|
||||||
|
(concat
|
||||||
|
" }\n"
|
||||||
|
)))
|
||||||
|
|
||||||
|
(defun edje-setup-compile ()
|
||||||
|
(set (make-local-variable 'compile-command)
|
||||||
|
(concat "edje_cc " (buffer-file-name))
|
||||||
|
))
|
||||||
|
|
||||||
|
(defun edje-cc ()
|
||||||
|
"Runs edje_cc with current buffer."
|
||||||
|
(interactive)
|
||||||
|
(compile (edje-setup-compile)))
|
||||||
|
|
||||||
|
(defvar edje-mode-map
|
||||||
|
(let ((edje-mode-map (make-sparse-keymap)))
|
||||||
|
(define-key edje-mode-map "\C-j" 'newline-and-indent)
|
||||||
|
(define-key edje-mode-map "\C-cp" 'edje-new-part)
|
||||||
|
(define-key edje-mode-map "\C-cd" 'edje-new-desc)
|
||||||
|
(define-key edje-mode-map "\C-cr" 'edje-new-desc-relative)
|
||||||
|
(define-key edje-mode-map "\C-co" 'edje-new-desc-offset)
|
||||||
|
(define-key edje-mode-map "\C-ch" 'edje-new-desc-inherit)
|
||||||
|
(define-key edje-mode-map "\C-cc" 'edje-new-desc-color)
|
||||||
|
(define-key edje-mode-map "\C-ci" 'edje-new-desc-image)
|
||||||
|
(define-key edje-mode-map "\C-ct" 'edje-new-desc-text)
|
||||||
|
(define-key edje-mode-map "\C-cg" 'edje-new-program)
|
||||||
|
(define-key edje-mode-map "\C-ca" 'edje-new-program-action)
|
||||||
|
(define-key edje-mode-map "\C-cs" 'edje-new-program-action-state-set)
|
||||||
|
(define-key edje-mode-map "\C-ce" 'edje-new-program-action-signal-emit)
|
||||||
|
edje-mode-map)
|
||||||
|
"Keymap for Edje major mode")
|
||||||
|
|
||||||
|
(add-hook 'c-mode-hook 'edje-setup-compile)
|
||||||
|
(add-to-list 'auto-mode-alist '("\\.edc$" . edje-mode))
|
||||||
|
|
||||||
|
(defconst edje-font-lock-keywords-1
|
||||||
|
(eval-when-compile
|
||||||
|
(list
|
||||||
|
(list (concat "[ \t]*\\<"
|
||||||
|
(regexp-opt
|
||||||
|
'(
|
||||||
|
"collections"
|
||||||
|
"data"
|
||||||
|
"description"
|
||||||
|
"dragable"
|
||||||
|
"fill"
|
||||||
|
"fonts"
|
||||||
|
"group"
|
||||||
|
"image"
|
||||||
|
"images"
|
||||||
|
"origin"
|
||||||
|
"part"
|
||||||
|
"parts"
|
||||||
|
"program"
|
||||||
|
"programs"
|
||||||
|
"rel1"
|
||||||
|
"rel2"
|
||||||
|
"script"
|
||||||
|
"spectra"
|
||||||
|
"style"
|
||||||
|
"styles"
|
||||||
|
"text"
|
||||||
|
) t) "\\>\\([ \t]*{\\|\\.\\)")
|
||||||
|
'(1 font-lock-function-name-face))
|
||||||
|
|
||||||
|
))
|
||||||
|
"Major keywords")
|
||||||
|
|
||||||
|
(defconst edje-font-lock-keywords-2
|
||||||
|
(eval-when-compile
|
||||||
|
(append edje-font-lock-keywords-1
|
||||||
|
(list
|
||||||
|
(list
|
||||||
|
(concat "^\\([ \t]*\\|[ \t]*[a-z]+\\.\\|\\)\\<"
|
||||||
|
(regexp-opt
|
||||||
|
'("action"
|
||||||
|
"after"
|
||||||
|
"alias"
|
||||||
|
"align"
|
||||||
|
"angle"
|
||||||
|
"aspect"
|
||||||
|
"aspect_preference"
|
||||||
|
"base"
|
||||||
|
"border"
|
||||||
|
"clip_to"
|
||||||
|
"collections"
|
||||||
|
"color"
|
||||||
|
"color2"
|
||||||
|
"color3"
|
||||||
|
"color_class"
|
||||||
|
"color_classes"
|
||||||
|
"confine"
|
||||||
|
"data"
|
||||||
|
"description"
|
||||||
|
"dragable"
|
||||||
|
"effect"
|
||||||
|
"elipsis"
|
||||||
|
"events"
|
||||||
|
"fill"
|
||||||
|
"fit"
|
||||||
|
"fixed"
|
||||||
|
"font"
|
||||||
|
"fonts"
|
||||||
|
"gradient"
|
||||||
|
"group"
|
||||||
|
"ignore_flags"
|
||||||
|
"image"
|
||||||
|
"images"
|
||||||
|
"in"
|
||||||
|
"inherit"
|
||||||
|
"item"
|
||||||
|
"max"
|
||||||
|
"middle"
|
||||||
|
"min"
|
||||||
|
"mouse_events"
|
||||||
|
"name"
|
||||||
|
"normal"
|
||||||
|
"offset"
|
||||||
|
"origin"
|
||||||
|
"part"
|
||||||
|
"parts"
|
||||||
|
"pointer_mode"
|
||||||
|
"precise_is_inside"
|
||||||
|
"program"
|
||||||
|
"programs"
|
||||||
|
"rel1"
|
||||||
|
"rel2"
|
||||||
|
"relative"
|
||||||
|
"repeat_events"
|
||||||
|
"signal"
|
||||||
|
"size"
|
||||||
|
"smooth"
|
||||||
|
"source"
|
||||||
|
"spectra"
|
||||||
|
"spectrum"
|
||||||
|
"spread"
|
||||||
|
"state"
|
||||||
|
"step"
|
||||||
|
"style"
|
||||||
|
"styles"
|
||||||
|
"tag"
|
||||||
|
"target"
|
||||||
|
"text"
|
||||||
|
"text_class"
|
||||||
|
"text_source"
|
||||||
|
"to"
|
||||||
|
"to_x"
|
||||||
|
"to_y"
|
||||||
|
"transition"
|
||||||
|
"tween"
|
||||||
|
"type"
|
||||||
|
"use_alternate_font_metrics"
|
||||||
|
"visible"
|
||||||
|
"x"
|
||||||
|
"y"
|
||||||
|
) t) "\\>[ \t]*[:,]")
|
||||||
|
'(2 font-lock-keyword-face))
|
||||||
|
)))
|
||||||
|
"Minor keywords")
|
||||||
|
|
||||||
|
(defconst edje-font-lock-keywords-3
|
||||||
|
(eval-when-compile
|
||||||
|
(append edje-font-lock-keywords-2
|
||||||
|
(list
|
||||||
|
(list
|
||||||
|
(concat "\\<"
|
||||||
|
(regexp-opt
|
||||||
|
'(; image options (st_images_image)
|
||||||
|
"RAW"
|
||||||
|
"COMP"
|
||||||
|
"LOSSY"
|
||||||
|
"USER"
|
||||||
|
; part types (st_collections_group_parts_part_type)
|
||||||
|
"NONE"
|
||||||
|
"RECT"
|
||||||
|
"TEXT"
|
||||||
|
"IMAGE"
|
||||||
|
"SWALLOW"
|
||||||
|
"TEXTBLOCK"
|
||||||
|
"GRADIENT"
|
||||||
|
"GROUP"
|
||||||
|
; ignore flags (st_collections_group_parts_part_ignore_flags)
|
||||||
|
;"NONE"
|
||||||
|
"ON_HOLD"
|
||||||
|
; pointer mode (st_collections_group_parts_part_pointer_mode)
|
||||||
|
"AUTOGRAB"
|
||||||
|
"NOGRAB"
|
||||||
|
; aspect (st_collections_group_parts_part_description_aspect_preference)
|
||||||
|
"NONE"
|
||||||
|
"VERTICAL"
|
||||||
|
"HORIZONTAL"
|
||||||
|
"BOTH"
|
||||||
|
; text effect (st_collections_group_parts_part_effect)
|
||||||
|
"NONE"
|
||||||
|
"PLAIN"
|
||||||
|
"OUTLINE"
|
||||||
|
"SOFT_OUTLINE"
|
||||||
|
"SHADOW"
|
||||||
|
"SOFT_SHADOW"
|
||||||
|
"OUTLINE_SHADOW"
|
||||||
|
"OUTLINE_SOFT_SHADOW"
|
||||||
|
"FAR_SHADOW"
|
||||||
|
"FAR_SOFT_SHADOW"
|
||||||
|
"GLOW"
|
||||||
|
; image fill (st_collections_group_parts_part_description_fill_type)
|
||||||
|
"SCALE"
|
||||||
|
"TILE"
|
||||||
|
; program action (st_collections_group_programs_program_action)
|
||||||
|
"STATE_SET"
|
||||||
|
"ACTION_STOP"
|
||||||
|
"SIGNAL_EMIT"
|
||||||
|
"DRAG_VAL_SET"
|
||||||
|
"DRAG_VAL_STEP"
|
||||||
|
"DRAG_VAL_PAGE"
|
||||||
|
"SCRIPT"
|
||||||
|
; program transition (st_collections_group_programs_program_transition)
|
||||||
|
"LINEAR"
|
||||||
|
"SINUSOIDAL"
|
||||||
|
"ACCELERATE"
|
||||||
|
"DECELERATE"
|
||||||
|
) t) "\\>")
|
||||||
|
'(1 font-lock-builtin-face))
|
||||||
|
)))
|
||||||
|
"Enumerate values")
|
||||||
|
|
||||||
|
(defconst edje-font-lock-keywords-4
|
||||||
|
(eval-when-compile
|
||||||
|
(append edje-font-lock-keywords-3
|
||||||
|
(list
|
||||||
|
(list
|
||||||
|
(concat "[ \t]*#"
|
||||||
|
(regexp-opt
|
||||||
|
'("if"
|
||||||
|
"ifdef"
|
||||||
|
"ifndef"
|
||||||
|
"define"
|
||||||
|
"else"
|
||||||
|
"endif"
|
||||||
|
"include"
|
||||||
|
"undef") t) "[ \t]*")
|
||||||
|
'(1 font-lock-builtin-face))
|
||||||
|
)))
|
||||||
|
"CPP directives")
|
||||||
|
|
||||||
|
(defconst edje-font-lock-keywords-5
|
||||||
|
(eval-when-compile
|
||||||
|
(append edje-font-lock-keywords-4
|
||||||
|
(list
|
||||||
|
(list "[ \t]*#undef[ \t]+\\([a-zA-Z_][a-zA-Z0-9_]*\\)"
|
||||||
|
'(1 font-lock-variable-name-face))
|
||||||
|
(list "[ \t]*#define[ \t]+\\([a-zA-Z_][a-zA-Z0-9_]*\\)("
|
||||||
|
'(1 font-lock-function-name-face))
|
||||||
|
(list "[ \t]*#define[ \t]+\\([a-zA-Z_][a-zA-Z0-9_]*\\)"
|
||||||
|
'(1 font-lock-variable-name-face))
|
||||||
|
)))
|
||||||
|
"CPP directives that define constants")
|
||||||
|
|
||||||
|
|
||||||
|
(defvar edje-font-lock-keywords edje-font-lock-keywords-5)
|
||||||
|
|
||||||
|
(defvar edje-mode-syntax-table
|
||||||
|
(let ((edje-mode-syntax-table (make-syntax-table)))
|
||||||
|
; This is added so entity names with underscores can be more easily parsed
|
||||||
|
(modify-syntax-entry ?_ "w" edje-mode-syntax-table)
|
||||||
|
(modify-syntax-entry ?/ ". 124b" edje-mode-syntax-table)
|
||||||
|
(modify-syntax-entry ?* ". 23" edje-mode-syntax-table)
|
||||||
|
(modify-syntax-entry ?\n "> b" edje-mode-syntax-table)
|
||||||
|
|
||||||
|
edje-mode-syntax-table)
|
||||||
|
"Syntax table for edje-mode")
|
||||||
|
|
||||||
|
(c-add-style
|
||||||
|
"edje"
|
||||||
|
'("gnu"
|
||||||
|
(indent-tabs-mode . nil)
|
||||||
|
(tab-width . 8)
|
||||||
|
(c-basic-offset . 3)
|
||||||
|
(c-backslash-column . 72)
|
||||||
|
(c-hanging-braces-alist .
|
||||||
|
((block-open after)
|
||||||
|
(brace-list-open after)
|
||||||
|
(substatement-open after))
|
||||||
|
)
|
||||||
|
(c-offsets-alist .
|
||||||
|
((statement-block-intro . +)
|
||||||
|
(defun-open . 0)
|
||||||
|
(substatement-open . 0)
|
||||||
|
(defun-block-intro . +)
|
||||||
|
(block-open . 0)
|
||||||
|
(label . +)
|
||||||
|
))))
|
||||||
|
|
||||||
|
|
||||||
|
(define-derived-mode edje-mode c-mode "Edje"
|
||||||
|
"Major mode for editing Edje files"
|
||||||
|
(interactive)
|
||||||
|
(use-local-map edje-mode-map)
|
||||||
|
(set-syntax-table edje-mode-syntax-table)
|
||||||
|
(set (make-local-variable 'font-lock-defaults) '(edje-font-lock-keywords))
|
||||||
|
(set (make-local-variable 'require-final-newline) t)
|
||||||
|
(c-set-style "edje")
|
||||||
|
(run-hooks 'edje-mode-hook)
|
||||||
|
)
|
||||||
|
|
||||||
|
(provide 'edje-mode)
|
||||||
|
|
||||||
|
;;; edje-mode.el ends here
|
||||||
242
stuff/find-cmd.el
Normal file
242
stuff/find-cmd.el
Normal file
|
|
@ -0,0 +1,242 @@
|
||||||
|
;;; find-cmd.el --- Build a valid find(1) command with sexps
|
||||||
|
|
||||||
|
;; Copyright (C) 2008, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
;; Author: Philip Jackson <phil@shellarchive.co.uk>
|
||||||
|
;; Version: 0.6
|
||||||
|
|
||||||
|
;; This file is part of GNU Emacs.
|
||||||
|
|
||||||
|
;; GNU Emacs 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.
|
||||||
|
|
||||||
|
;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
|
||||||
|
;; With this module you can build up a (hopefully) valid find(1)
|
||||||
|
;; string ready for the command line. For example:
|
||||||
|
|
||||||
|
;; (find-cmd '(prune (name ".svn" ".git" ".CVS"))
|
||||||
|
;; '(and (or (name "*.pl" "*.pm" "*.t")
|
||||||
|
;; (mtime "+1"))
|
||||||
|
;; (fstype "nfs" "ufs"))))
|
||||||
|
|
||||||
|
;; will become (un-wrapped):
|
||||||
|
|
||||||
|
;; "find '/home/phil/' \\( \\( -name '.svn' -or -name '.git' -or
|
||||||
|
;; -name '.CVS' \\) -prune -or -true \\) \\( \\( \\( -name '*.pl'
|
||||||
|
;; -or -name '*.pm' -or -name '*.t' \\) -or -mtime '+1' \\) -and \\(
|
||||||
|
;; -fstype 'nfs' -or -fstype 'ufs' \\) \\)"
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(defconst find-constituents
|
||||||
|
'((and . find-and)
|
||||||
|
(not . find-not)
|
||||||
|
(or . find-or)
|
||||||
|
|
||||||
|
(a . find-and)
|
||||||
|
(n . find-not)
|
||||||
|
(o . find-or)
|
||||||
|
|
||||||
|
(prune . find-prune)
|
||||||
|
|
||||||
|
;; switches
|
||||||
|
(L . (0))
|
||||||
|
(P . (0))
|
||||||
|
(H . (0))
|
||||||
|
|
||||||
|
;; generic tests
|
||||||
|
(amin . (1))
|
||||||
|
(anewer . (1))
|
||||||
|
(atime . (1))
|
||||||
|
(cmin . (1))
|
||||||
|
(cnewer . (1))
|
||||||
|
(ctime . (1))
|
||||||
|
(empty . (0))
|
||||||
|
(false . (0))
|
||||||
|
(fstype . (1))
|
||||||
|
(gid . (1))
|
||||||
|
(group . (1))
|
||||||
|
(ilname . (1))
|
||||||
|
(iname . (1))
|
||||||
|
(inum . (1))
|
||||||
|
(iwholename . (1))
|
||||||
|
(iregex . (1))
|
||||||
|
(links . (1))
|
||||||
|
(lname . (1))
|
||||||
|
(mmin . (1))
|
||||||
|
(mtime . (1))
|
||||||
|
(name . (1))
|
||||||
|
(newer . (1))
|
||||||
|
(nouser . (0))
|
||||||
|
(nogroup . (0))
|
||||||
|
(path . (1))
|
||||||
|
(perm . (0))
|
||||||
|
(regex . (1))
|
||||||
|
(wholename . (1))
|
||||||
|
(size . (1))
|
||||||
|
(true . (0))
|
||||||
|
(type . (1))
|
||||||
|
(uid . (1))
|
||||||
|
(used . (1))
|
||||||
|
(user . (1))
|
||||||
|
(xtype . (nil))
|
||||||
|
|
||||||
|
;; normal options (always true)
|
||||||
|
(depth . (0))
|
||||||
|
(maxdepth . (1))
|
||||||
|
(mindepth . (1))
|
||||||
|
(mount . (0))
|
||||||
|
(noleaf . (0))
|
||||||
|
(xdev . (0))
|
||||||
|
(ignore_readdir_race . (0))
|
||||||
|
(noignore_readdir_race . (0))
|
||||||
|
|
||||||
|
;; actions
|
||||||
|
(delete . (0))
|
||||||
|
(print0 . (0))
|
||||||
|
(printf . (1))
|
||||||
|
(fprintf . (2))
|
||||||
|
(print . (0))
|
||||||
|
(fprint0 . (1))
|
||||||
|
(fprint . (1))
|
||||||
|
(ls . (0))
|
||||||
|
(fls . (1))
|
||||||
|
(prune . (0))
|
||||||
|
(quit . (0))
|
||||||
|
|
||||||
|
;; these need to be terminated with a ;
|
||||||
|
(exec . (1 find-command t))
|
||||||
|
(ok . (1 find-command t))
|
||||||
|
(execdir . (1 find-command t))
|
||||||
|
(okdir . (1 find-command t)))
|
||||||
|
"Holds details of each of the find options. The car of each
|
||||||
|
alist is the name. The cdr is minimum args, the function used
|
||||||
|
to join many occurences of the argument together, and whether or
|
||||||
|
not to leave quotes off the string (non-nil means the string will
|
||||||
|
be quoted).")
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun find-cmd (&rest subfinds)
|
||||||
|
"Initiate the building of a find command. For exmple:
|
||||||
|
|
||||||
|
\(find-cmd '\(prune \(name \".svn\" \".git\" \".CVS\"\)\)
|
||||||
|
'\(and \(or \(name \"*.pl\" \"*.pm\" \"*.t\"\)
|
||||||
|
\(mtime \"+1\"\)\)
|
||||||
|
\(fstype \"nfs\" \"ufs\"\)\)\)\)
|
||||||
|
|
||||||
|
`default-directory' is used as the initial search path. The
|
||||||
|
result is a string that should be ready for the command line."
|
||||||
|
(concat
|
||||||
|
"find " (shell-quote-argument (expand-file-name default-directory)) " "
|
||||||
|
(cond
|
||||||
|
((cdr subfinds)
|
||||||
|
(mapconcat 'find-to-string subfinds ""))
|
||||||
|
(t
|
||||||
|
(find-to-string (car subfinds))))))
|
||||||
|
|
||||||
|
(defun find-and (form)
|
||||||
|
"And FORMs together, so:
|
||||||
|
\(and \(mtime \"+1\"\) \(name \"something\"\)\)
|
||||||
|
will produce:
|
||||||
|
find . \\\( -mtime '+1' -and -name 'something' \\\)"
|
||||||
|
(if (< (length form) 2)
|
||||||
|
(find-to-string (car form))
|
||||||
|
(concat "\\( "
|
||||||
|
(mapconcat 'find-to-string form "-and ")
|
||||||
|
"\\) ")))
|
||||||
|
|
||||||
|
(defun find-or (form)
|
||||||
|
"Or FORMs together, so:
|
||||||
|
\(or \(mtime \"+1\"\) \(name \"something\"\)\)
|
||||||
|
will produce:
|
||||||
|
find . \\\( -mtime '+1' -or -name 'something' \\\)"
|
||||||
|
(if (< (length form) 2)
|
||||||
|
(find-to-string (car form))
|
||||||
|
(concat "\\( "
|
||||||
|
(mapconcat 'find-to-string form "-or ")
|
||||||
|
"\\) ")))
|
||||||
|
|
||||||
|
(defun find-not (form)
|
||||||
|
"Or FORMs together and prefix with a -not, so:
|
||||||
|
\(not \(mtime \"+1\"\) \(name \"something\"\)\)
|
||||||
|
will produce:
|
||||||
|
-not \\\( -mtime '+1' -or -name 'something' \\\)
|
||||||
|
If you wanted the FORMs -and(ed) together instead then this would
|
||||||
|
suffice:
|
||||||
|
\(not \(and \(mtime \"+1\"\) \(name \"something\"\)\)\)"
|
||||||
|
(concat "-not " (find-or (mapcar 'find-to-string form))))
|
||||||
|
|
||||||
|
(defun find-prune (form)
|
||||||
|
"-or together FORM(s) postfix '-prune' and then -or that with a
|
||||||
|
-true, so:
|
||||||
|
\(prune \(name \".svn\" \".git\"\)\) \(name \"*.pm\"\)
|
||||||
|
will produce (unwrapped):
|
||||||
|
\\\( \\\( \\\( -name '.svn' -or -name '.git' \\\) /
|
||||||
|
-prune -or -true \\\) -and -name '*.pm' \\\)"
|
||||||
|
(find-or
|
||||||
|
(list
|
||||||
|
(concat (find-or (mapcar 'find-to-string form)) (find-generic "prune"))
|
||||||
|
(find-generic "true"))))
|
||||||
|
|
||||||
|
(defun find-generic (option &optional oper argcount args dont-quote)
|
||||||
|
"This function allows an arbitrary string to be used as a
|
||||||
|
form. OPTION is the name of the form, OPER is the function used
|
||||||
|
to either OR or AND multiple results together. ARGCOUNT is the
|
||||||
|
minimum of args that OPTION can receive and ARGS are the
|
||||||
|
arguments for OPTION."
|
||||||
|
(when (and (numberp argcount) (< (length args) argcount))
|
||||||
|
(error "'%s' needs at least %d arguments" option argcount))
|
||||||
|
(let ((oper (or oper 'find-or)))
|
||||||
|
(if (and args (length args))
|
||||||
|
(funcall oper (mapcar (lambda (x)
|
||||||
|
(concat "-" option
|
||||||
|
(if dont-quote
|
||||||
|
(concat " " x " ")
|
||||||
|
(concat " "
|
||||||
|
(shell-quote-argument x)
|
||||||
|
" "))))
|
||||||
|
args))
|
||||||
|
(concat "-" option " "))))
|
||||||
|
|
||||||
|
(defun find-command (form)
|
||||||
|
"For each item in FORM add a terminating semi-colon and turn
|
||||||
|
them into valid switches. The result is -and(ed) together."
|
||||||
|
(find-and (mapcar (lambda (x)
|
||||||
|
(concat (find-to-string x) "\\; "))
|
||||||
|
form)))
|
||||||
|
|
||||||
|
(defun find-to-string (form)
|
||||||
|
"Parse FORM to produce a set of valid find arguments."
|
||||||
|
(cond
|
||||||
|
((stringp form)
|
||||||
|
form)
|
||||||
|
((consp form)
|
||||||
|
(let ((option (cdr (assoc (car form) find-constituents))))
|
||||||
|
(cond
|
||||||
|
((and (symbolp option) (fboundp option))
|
||||||
|
(funcall option (cdr form)))
|
||||||
|
((consp option)
|
||||||
|
(let ((option (symbol-name (car form)))
|
||||||
|
(argcnt (car option))
|
||||||
|
(oper (cadr option))
|
||||||
|
(dont-quote (car (cddr option))))
|
||||||
|
(find-to-string
|
||||||
|
(find-generic option oper argcnt (cdr form) dont-quote))))
|
||||||
|
(t
|
||||||
|
(error "Sorry I don't know how to handle '%s'" (car form))))))))
|
||||||
|
|
||||||
|
(provide 'find-cmd)
|
||||||
|
|
||||||
|
;; arch-tag: 9687fd9e-4e90-4022-864a-f904526e2046
|
||||||
|
;;; find-cmd.el ends here
|
||||||
167
stuff/flymake-cursor.el
Normal file
167
stuff/flymake-cursor.el
Normal file
|
|
@ -0,0 +1,167 @@
|
||||||
|
;;; flymake-cursor.el --- displays flymake error msg in minibuffer after delay
|
||||||
|
;;
|
||||||
|
;; Author : ??
|
||||||
|
;; origin : http://paste.lisp.org/display/60617,1/raw
|
||||||
|
;; Maintainer : Dino Chiesa <dpchiesa@hotmail.com>
|
||||||
|
;; : Donald Curtis <dcurtis@milkbox.net>
|
||||||
|
;; Created : May 2011
|
||||||
|
;; Modified : December 2012
|
||||||
|
;; Version : 0.1.5
|
||||||
|
;; Keywords : languages mode flymake
|
||||||
|
;; X-URL : http://www.emacswiki.org/emacs/flymake-cursor.el
|
||||||
|
;; Last-saved : <2012-Dec-20 09:49:28>
|
||||||
|
;;
|
||||||
|
;; -------------------------------------------------------
|
||||||
|
;;
|
||||||
|
;; License: None. This code is in the Public Domain.
|
||||||
|
;;
|
||||||
|
;;
|
||||||
|
;; Additional functionality that makes flymake error messages appear
|
||||||
|
;; in the minibuffer when point is on a line containing a flymake
|
||||||
|
;; error. This saves having to mouse over the error, which is a
|
||||||
|
;; keyboard user's annoyance.
|
||||||
|
;; -------------------------------------------------------
|
||||||
|
;;
|
||||||
|
;; This flymake-cursor module displays the flymake error in the
|
||||||
|
;; minibuffer, after a short delay. It is based on code I found roaming
|
||||||
|
;; around on the net, unsigned and unattributed. I suppose it's public
|
||||||
|
;; domain, because, while there is a "License" listed in it, there
|
||||||
|
;; is no license holder, no one to own the license.
|
||||||
|
;;
|
||||||
|
;; This version is modified slightly from that code. The post-command fn
|
||||||
|
;; defined in this code does not display the message directly. Instead
|
||||||
|
;; it sets a timer, and when the timer fires, the timer event function
|
||||||
|
;; displays the message.
|
||||||
|
;;
|
||||||
|
;; The reason to do this: the error message is displayed only if the
|
||||||
|
;; user doesn't do anything, for about one second. This way, if the user
|
||||||
|
;; scrolls through a buffer and there are myriad errors, the minibuffer
|
||||||
|
;; is not constantly being updated.
|
||||||
|
;;
|
||||||
|
;; If the user moves away from the line with the flymake error message
|
||||||
|
;; before the timer expires, then no error is displayed in the minibuffer.
|
||||||
|
;;
|
||||||
|
;; I've also updated the names of the defuns. They all start with flyc now.
|
||||||
|
;;
|
||||||
|
;; To use this, include this line in your .emacs:
|
||||||
|
;;
|
||||||
|
;; ;; enhancements for displaying flymake errors
|
||||||
|
;; (require 'flymake-cursor)
|
||||||
|
;;
|
||||||
|
;; You can, of course, put that in an eval-after-load clause.
|
||||||
|
;;
|
||||||
|
;; -------------------------------------------------------
|
||||||
|
;;
|
||||||
|
;; Update 2012-03-06 by Donald Curtis
|
||||||
|
;; --
|
||||||
|
;; Added some autoload statements and the closing comment to make
|
||||||
|
;; compatible with package.el parser.
|
||||||
|
;;
|
||||||
|
;; Update 2012-12-20 by Jeremy Moore
|
||||||
|
;; --
|
||||||
|
;; Alter post-command-hook's local value via add-hook so that it plays
|
||||||
|
;; nicely with other packages.
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
(require 'cl)
|
||||||
|
|
||||||
|
(defvar flyc--e-at-point nil
|
||||||
|
"Error at point, after last command")
|
||||||
|
|
||||||
|
(defvar flyc--e-display-timer nil
|
||||||
|
"A timer; when it fires, it displays the stored error message.")
|
||||||
|
|
||||||
|
(defun flyc/maybe-fixup-message (errore)
|
||||||
|
"pyflake is flakey if it has compile problems, this adjusts the
|
||||||
|
message to display, so there is one ;)"
|
||||||
|
(cond ((not (or (eq major-mode 'Python) (eq major-mode 'python-mode) t)))
|
||||||
|
((null (flymake-ler-file errore))
|
||||||
|
;; normal message do your thing
|
||||||
|
(flymake-ler-text errore))
|
||||||
|
(t ;; could not compile error
|
||||||
|
(format "compile error, problem on line %s" (flymake-ler-line errore)))))
|
||||||
|
|
||||||
|
(defun flyc/show-stored-error-now ()
|
||||||
|
"Displays the stored error in the minibuffer."
|
||||||
|
(interactive)
|
||||||
|
(let ((editing-p (= (minibuffer-depth) 0)))
|
||||||
|
(if (and flyc--e-at-point editing-p)
|
||||||
|
(progn
|
||||||
|
(message "%s" (flyc/maybe-fixup-message flyc--e-at-point))
|
||||||
|
(setq flyc--e-display-timer nil)))))
|
||||||
|
|
||||||
|
|
||||||
|
(defun flyc/-get-error-at-point ()
|
||||||
|
"Gets the first flymake error on the line at point."
|
||||||
|
(let ((line-no (line-number-at-pos))
|
||||||
|
flyc-e)
|
||||||
|
(dolist (elem flymake-err-info)
|
||||||
|
(if (eq (car elem) line-no)
|
||||||
|
(setq flyc-e (car (second elem)))))
|
||||||
|
flyc-e))
|
||||||
|
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun flyc/show-fly-error-at-point-now ()
|
||||||
|
"If the cursor is sitting on a flymake error, display
|
||||||
|
the error message in the minibuffer."
|
||||||
|
(interactive)
|
||||||
|
(if flyc--e-display-timer
|
||||||
|
(progn
|
||||||
|
(cancel-timer flyc--e-display-timer)
|
||||||
|
(setq flyc--e-display-timer nil)))
|
||||||
|
(let ((error-at-point (flyc/-get-error-at-point)))
|
||||||
|
(if error-at-point
|
||||||
|
(progn
|
||||||
|
(setq flyc--e-at-point error-at-point)
|
||||||
|
(flyc/show-stored-error-now)))))
|
||||||
|
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun flyc/show-fly-error-at-point-pretty-soon ()
|
||||||
|
"If the cursor is sitting on a flymake error, grab the error,
|
||||||
|
and set a timer for \"pretty soon\". When the timer fires, the error
|
||||||
|
message will be displayed in the minibuffer.
|
||||||
|
|
||||||
|
This allows a post-command-hook to NOT cause the minibuffer to be
|
||||||
|
updated 10,000 times as a user scrolls through a buffer
|
||||||
|
quickly. Only when the user pauses on a line for more than a
|
||||||
|
second, does the flymake error message (if any) get displayed.
|
||||||
|
|
||||||
|
"
|
||||||
|
(if flyc--e-display-timer
|
||||||
|
(cancel-timer flyc--e-display-timer))
|
||||||
|
|
||||||
|
(let ((error-at-point (flyc/-get-error-at-point)))
|
||||||
|
(if error-at-point
|
||||||
|
(setq flyc--e-at-point error-at-point
|
||||||
|
flyc--e-display-timer
|
||||||
|
(run-at-time "0.9 sec" nil 'flyc/show-stored-error-now))
|
||||||
|
(setq flyc--e-at-point nil
|
||||||
|
flyc--e-display-timer nil))))
|
||||||
|
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(eval-after-load "flymake"
|
||||||
|
'(progn
|
||||||
|
|
||||||
|
(defadvice flymake-goto-next-error (after flyc/display-message-1 activate compile)
|
||||||
|
"Display the error in the mini-buffer rather than having to mouse over it"
|
||||||
|
(flyc/show-fly-error-at-point-now))
|
||||||
|
|
||||||
|
(defadvice flymake-goto-prev-error (after flyc/display-message-2 activate compile)
|
||||||
|
"Display the error in the mini-buffer rather than having to mouse over it"
|
||||||
|
(flyc/show-fly-error-at-point-now))
|
||||||
|
|
||||||
|
(defadvice flymake-mode (before flyc/post-command-fn activate compile)
|
||||||
|
"Add functionality to the post command hook so that if the
|
||||||
|
cursor is sitting on a flymake error the error information is
|
||||||
|
displayed in the minibuffer (rather than having to mouse over
|
||||||
|
it)"
|
||||||
|
(add-hook 'post-command-hook 'flyc/show-fly-error-at-point-pretty-soon t t))))
|
||||||
|
|
||||||
|
|
||||||
|
(provide 'flymake-cursor)
|
||||||
|
|
||||||
|
;;; flymake-cursor.el ends here
|
||||||
98
stuff/go-mode-autoloads.el
Normal file
98
stuff/go-mode-autoloads.el
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
;;; go-mode-autoloads.el --- automatically extracted autoloads
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
|
||||||
|
;;;### (autoloads (go-download-play godoc gofmt-before-save go-mode)
|
||||||
|
;;;;;; "go-mode" "go-mode.el" (21514 38760 682820 85000))
|
||||||
|
;;; Generated autoloads from go-mode.el
|
||||||
|
|
||||||
|
(autoload 'go-mode "go-mode" "\
|
||||||
|
Major mode for editing Go source text.
|
||||||
|
|
||||||
|
This mode provides (not just) basic editing capabilities for
|
||||||
|
working with Go code. It offers almost complete syntax
|
||||||
|
highlighting, indentation that is almost identical to gofmt and
|
||||||
|
proper parsing of the buffer content to allow features such as
|
||||||
|
navigation by function, manipulation of comments or detection of
|
||||||
|
strings.
|
||||||
|
|
||||||
|
In addition to these core features, it offers various features to
|
||||||
|
help with writing Go code. You can directly run buffer content
|
||||||
|
through gofmt, read godoc documentation from within Emacs, modify
|
||||||
|
and clean up the list of package imports or interact with the
|
||||||
|
Playground (uploading and downloading pastes).
|
||||||
|
|
||||||
|
The following extra functions are defined:
|
||||||
|
|
||||||
|
- `gofmt'
|
||||||
|
- `godoc'
|
||||||
|
- `go-import-add'
|
||||||
|
- `go-remove-unused-imports'
|
||||||
|
- `go-goto-imports'
|
||||||
|
- `go-play-buffer' and `go-play-region'
|
||||||
|
- `go-download-play'
|
||||||
|
- `godef-describe' and `godef-jump'
|
||||||
|
- `go-coverage'
|
||||||
|
|
||||||
|
If you want to automatically run `gofmt' before saving a file,
|
||||||
|
add the following hook to your emacs configuration:
|
||||||
|
|
||||||
|
\(add-hook 'before-save-hook #'gofmt-before-save)
|
||||||
|
|
||||||
|
If you want to use `godef-jump' instead of etags (or similar),
|
||||||
|
consider binding godef-jump to `M-.', which is the default key
|
||||||
|
for `find-tag':
|
||||||
|
|
||||||
|
\(add-hook 'go-mode-hook (lambda ()
|
||||||
|
(local-set-key (kbd \"M-.\") #'godef-jump)))
|
||||||
|
|
||||||
|
Please note that godef is an external dependency. You can install
|
||||||
|
it with
|
||||||
|
|
||||||
|
go get github.com/rogpeppe/godef
|
||||||
|
|
||||||
|
|
||||||
|
If you're looking for even more integration with Go, namely
|
||||||
|
on-the-fly syntax checking, auto-completion and snippets, it is
|
||||||
|
recommended that you look at flycheck
|
||||||
|
\(see URL `https://github.com/flycheck/flycheck') or flymake in combination
|
||||||
|
with goflymake (see URL `https://github.com/dougm/goflymake'), gocode
|
||||||
|
\(see URL `https://github.com/nsf/gocode'), go-eldoc
|
||||||
|
\(see URL `github.com/syohex/emacs-go-eldoc') and yasnippet-go
|
||||||
|
\(see URL `https://github.com/dominikh/yasnippet-go')
|
||||||
|
|
||||||
|
\(fn)" t nil)
|
||||||
|
|
||||||
|
(add-to-list 'auto-mode-alist (cons "\\.go\\'" 'go-mode))
|
||||||
|
|
||||||
|
(autoload 'gofmt-before-save "go-mode" "\
|
||||||
|
Add this to .emacs to run gofmt on the current buffer when saving:
|
||||||
|
(add-hook 'before-save-hook 'gofmt-before-save).
|
||||||
|
|
||||||
|
Note that this will cause go-mode to get loaded the first time
|
||||||
|
you save any file, kind of defeating the point of autoloading.
|
||||||
|
|
||||||
|
\(fn)" t nil)
|
||||||
|
|
||||||
|
(autoload 'godoc "go-mode" "\
|
||||||
|
Show Go documentation for a query, much like M-x man.
|
||||||
|
|
||||||
|
\(fn QUERY)" t nil)
|
||||||
|
|
||||||
|
(autoload 'go-download-play "go-mode" "\
|
||||||
|
Downloads a paste from the playground and inserts it in a Go
|
||||||
|
buffer. Tries to look for a URL at point.
|
||||||
|
|
||||||
|
\(fn URL)" t nil)
|
||||||
|
|
||||||
|
;;;***
|
||||||
|
|
||||||
|
(provide 'go-mode-autoloads)
|
||||||
|
;; Local Variables:
|
||||||
|
;; version-control: never
|
||||||
|
;; no-byte-compile: t
|
||||||
|
;; no-update-autoloads: t
|
||||||
|
;; coding: utf-8
|
||||||
|
;; End:
|
||||||
|
;;; go-mode-autoloads.el ends here
|
||||||
2009
stuff/go-mode.el
Normal file
2009
stuff/go-mode.el
Normal file
File diff suppressed because it is too large
Load diff
1
stuff/go.el
Submodule
1
stuff/go.el
Submodule
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 64be4a31390a62d248da5c0509aaa0de09b8e4f4
|
||||||
|
|
@ -1,4 +1,33 @@
|
||||||
(custom-set-variables
|
(custom-set-variables
|
||||||
'(python-indent 4))
|
'(python-indent 4))
|
||||||
|
|
||||||
|
(defun python-mode-setup ()
|
||||||
|
|
||||||
|
;; ------------- ;;
|
||||||
|
;; CONFIGURATION ;;
|
||||||
|
;; ------------- ;;
|
||||||
|
|
||||||
|
;; Comment boxing style
|
||||||
|
(set 'my-rebox-style 423)
|
||||||
|
|
||||||
|
;; -------- ;;
|
||||||
|
;; BINDINGS ;;
|
||||||
|
;; -------- ;;
|
||||||
|
|
||||||
|
;; comment
|
||||||
|
(define-key
|
||||||
|
py-mode-map
|
||||||
|
[(control c) (control c)]
|
||||||
|
'comment-region)
|
||||||
|
|
||||||
|
;; rebox
|
||||||
|
(define-key
|
||||||
|
py-mode-map
|
||||||
|
[(meta q)]
|
||||||
|
'my-rebox-comment)
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
(add-hook 'python-mode-hook 'python-mode-setup)
|
||||||
|
|
||||||
(provide 'my-python-mode)
|
(provide 'my-python-mode)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue