Showing posts with label emacs. Show all posts
Showing posts with label emacs. Show all posts

12/12/2017

Install emacs25 on Ubuntu 16.04

sudo add-apt-repository ppa:kelleyk/emacs
sudo apt update
sudo apt remove --purge emacs24
sudo apt remove --purge emacs24-lucid
sudo apt install emacs25

11/02/2017

emacs vimdiff equivalent function is ediff

Use Shift + | to turn of side by side view.

emacs paste text wrong indent

It turned out that I was using emacs version 24.5.1, which has a bug that caused the wrong paste indent.
The solution to it:
  Install Emacs 25.3 by using the following command:
sudo add-apt-repository ppa:kelleyk/emacs
sudo apt update
sudo apt remove --purge emacs24
sudo apt install emacs25


3/20/2017

Commonly used Mac OS Aliases

alias ew='/Applications/Emacs.app/Contents/MacOS/Emacs'

11/11/2016

Use emacs on windows

Get Emacs from http://www.gnu.org/software/emacs/download.html
Create a command alias e.bat under C:/bin/e.bat, with content:
@echo off
chcp 437
@echo on

C:\emacs\bin\emacs.exe -nw %1

Add HOME to environment variable: HOME: C:\Users\liangzou.
Add .emacs to this folder. (See the content here)

How to customize the emacs application (GUI version):
Open regedit, find HKEY_CURRENT_USER\SOFTWARE\Classes\Applications\runemacs.exe\shell\open\command, change the value to:
"C:\emacs\bin\runemacs.exe" -fh -geometry 120x59 --load "C:\Users\liangzou\.emacs" "%1"

How to use it in MobaXterm/Cygwin:
===========================
Copy the same .emacs file from C:\Users\liangzou\.emacs to the home directory of MobaXterm.
Add the alias: 
alias ew='/drives/c/emacs/bin/runemacs.exe -fh -geometry 120x53' to the MobaXterm .bashrc file.
Or
/cygdrive/c/emacs/bin/runemacs.exe for Cygwin

7/18/2016

Make emacs settings better

For Aquamacs:
The way to change starting window (a.k.a frame) position and size:
Click Preferences | search for default-frame-alist, add var left 300, width 125, height 60, top 0 | Click the state and save for future
Do the same for initial-frame-alist

Command to have a better default GUI:
emacs -fh -geometry 180x160 {file}

sudo apt install xclip
wget http://www.emacswiki.org/emacs-en/download/xclip.el /home/$USER/.emacs.d/xclip.el

==== (Copy to ~/.emacs)
;; 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.
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)

;; (require 'py-yapf)

(add-hook 'python-mode-hook 'py-yapf-enable-on-save)

(setq-default indent-tabs-mode nil)
(setq default-tab-width 4)
(setq column-number-mode t)
(set-background-color "#F5E7D1")
(setq-default cursor-type '(bar . 2))
;;(add-to-list 'auto-mode-alist '("BUILD" . python-mode))
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(blink-cursor-mode nil)
 '(column-number-mode t)
 '(inhibit-startup-screen t)
 '(package-selected-packages '(yaml-mode py-yapf clang-format fill-column-indicator))
 '(py-yapf-options '("--style" "{based_on_style: google}"))
 '(show-paren-mode t))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(default ((t (:family "ConsolasHigh" :foundry "PfEd" :slant normal :weight normal :height 105 :width normal))))
 '(c-annotation-face ((t (:inherit font-lock-constant-face :foreground "yellow"))))
 '(cursor ((t (:background "red"))))
 '(font-lock-comment-delimiter-face ((t (:inherit font-lock-comment-face :foreground "forest green"))))
 '(font-lock-comment-face ((t (:foreground "forest green"))))
 '(font-lock-constant-face ((t (:foreground "black"))))
 '(font-lock-doc-face ((t (:foreground "forest green"))))
 '(font-lock-function-name-face ((t (:foreground "black"))))
 '(font-lock-keyword-face ((t (:foreground "royal blue" :weight bold))))
 '(font-lock-string-face ((t (:foreground "#A52A2A"))))
 '(font-lock-type-face ((t (:foreground "medium blue" :weight bold))))
 '(font-lock-variable-name-face ((t (:foreground "black"))))
 '(isearch ((t (:background "#ff7f00" :foreground "white"))))
 '(lazy-highlight ((t (:background "#00F" :foreground "#FFF"))))
 '(show-paren-match ((t (:background "dark gray" :foreground "blue")))))
(set-face-attribute 'region nil :background "#ff7f00" :foreground "#fff")
(put 'upcase-region 'disabled nil)
;;(setq linum-format "%03d ")
(global-display-line-numbers-mode 1)
(setq backup-directory-alist
      `((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
      `((".*" ,temporary-file-directory t)))
;; disable auto indent in c/c++
(setq-default c-electric-flag nil)
(setq-default c-syntactic-indentation nil)
;; Bottom status bar
;;(setq-default mode-line-format nil)
(setq-default python-indent-offset 4)
(setq-default python-indent 4)
(add-hook 'before-save-hook 'delete-trailing-whitespace)
(electric-indent-mode -1)
(global-set-key (kbd "RET") 'newline-and-indent)
;; Windows postion
(setq initial-frame-alist '((left . 650) (top . 0)))
(if (functionp 'tool-bar-mode) (tool-bar-mode -1))
;; better scrolling
(setq mouse-wheel-scroll-amount '(4 ((shift) . 8))) ;; one line at a time
(setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling
(setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse
(setq scroll-step 1) ;; keyboard scroll one line at a time
(setq scroll-conservatively 10000)

(setq auto-window-vscroll nil)
(require 'dired)
(defun dired-mouse-find-file (event)
  "In Dired, visit the file or directory name you click on."
  (interactive "e")
  (let (window pos file)
    (save-excursion
      (setq window (posn-window (event-end event))
            pos (posn-point (event-end event)))
      (if (not (windowp window))
          (error "No file chosen"))
      (set-buffer (window-buffer window))
      (goto-char pos)
      (setq file (dired-get-file-for-visit)))
    (if (file-directory-p file)
        (or (and (cdr dired-subdir-alist)
                 (dired-goto-subdir file))
            (progn
              (select-window window)
              (dired file)))
      (select-window window)
      (find-file-other-window (file-name-sans-versions file t)))))
(define-key dired-mode-map [mouse-2] 'dired-mouse-find-file)

(defun dired-open-file ()
  "In dired, open the file named on this line."
  (interactive)
  (let* ((file (dired-get-filename nil t)))
    (message "Opening %s..." file)
    (call-process "open" nil 0 nil file)
    (message "Opening %s done" file)))
;; Use o to open a file with external apps
(add-hook 'dired-mode-hook
          (lambda ()
            (define-key dired-mode-map (kbd "o") 'dired-open-file)
            (define-key dired-mode-map (kbd "j") 'dired-next-line)
            (define-key dired-mode-map (kbd "k") 'dired-previous-line)
            (define-key dired-mode-map (kbd "u") 'dired-up-directory)))

(setq split-height-threshold nil)

(setq split-width-threshold 160)

;;Matching parenthesis
(require 'paren)
(show-paren-mode 1)
(set-face-attribute 'show-paren-match nil :weight 'extra-bold)
(setq ring-bell-function 'ignore)
; Ctrl+right   => forward word
(global-set-key "\M-[1;5C"    'forward-word)
; Ctrl+left    => backward word
(global-set-key "\M-[1;5D"    'backward-word)
(global-set-key (kbd "C-x k") 'kill-current-buffer)
(define-key input-decode-map "\e[1;5A" [C-up])

(define-key input-decode-map "\e[1;5B" [C-down])

(defalias 'yes-or-no-p 'y-or-n-p)
(setq frame-title-format
    (list (format "%s %%S: %%j " (system-name))

    '(buffer-file-name "%f" (dired-directory dired-directory "%b"))))

(require 'clang-format)
(defun clang-format-buffer-smart ()
  "Enable clang when the mode is C++"
  (when (eq major-mode 'c++-mode)
    (clang-format-buffer))
  (when (eq major-mode 'c-mode)
    (clang-format-buffer)))

(add-hook 'before-save-hook 'buildifier)
(add-hook 'before-save-hook 'clang-format-buffer-smart)

(defcustom buildifier-bin "buildifier"
  "Location of the buildifier binary."
  :type 'string
  :group 'buildifier)

(defcustom buildifier-path-regex
  "BUILD\\|WORKSPACE"
  "Regular expression describing base paths that need buildifier."
  :type 'string
  :group 'buildifier)

(defun buildifier ()
  "Run buildifier on current buffer."
  (interactive)
  (when (and (string-match buildifier-path-regex
                           (file-name-nondirectory
                            (buffer-file-name)))
             (executable-find buildifier-bin))
    (let ((p (point))
          (tmp (make-temp-file "buildifier")))
      (write-region nil nil tmp)
      (let ((result (with-temp-buffer
                      (cons (call-process buildifier-bin tmp t nil)
                            (buffer-string)))))
        (if (= (car result) 0)
            (save-excursion
              (erase-buffer)
              (insert (cdr result)))
          (warn "%s failed: %s" buildifier-bin (cdr result)))
        (goto-char p)
        (delete-file tmp nil)))))

;; Column ruler, edge
(setq-default fill-column 80)
(define-globalized-minor-mode global-fci-mode fci-mode (lambda () (fci-mode 1)))
(global-fci-mode 1)
(setq fci-handle-truncate-lines nil)
(setq fci-rule-color "#606060")
;; Column ruler end
; Source - https://stackoverflow.com/a/6853629
; Posted by tototoshi
; Retrieved 2026-05-08, License - CC BY-SA 3.0

(setq delete-by-moving-to-trash t)



6/15/2016

EMACS frequently commonly used commands

ctrl-g quit the current operation
ctrl-x ctrl-s: save
ctrl-x ctrl-w: save as
ctrl-x ctrl-c: exit
ctrl-x b: change buffer or type in a name to new a buffer
ctrl-x k: kill buffer
alt-x revert-buffer: reload buffer from file
alt-x goto-line: go to line
ctrl space: copy mode
ctrl-w: cut
alt-w: copy
ctrl-y: paste
ctrl-x u: undo
ctrl-x 3: split window
ctrl-x f: open file
ctrl-s: search

alt-e: to edit the search string
alt-% (alt-shift-3): find/replace
ctrl-v: scroll down
alt-v: scroll up
alt-x customize-face: change the color of the syntax coloring of the current cursor word
alt-x list-faces-display: to change different colors
alt-x linum-mode: show line number
ctrl-c ctrl-c: to comment a block
alt-;: to uncomment a block
ctrl space to select region, then ctrl-x tab: to indent a block. ctrl-x tab again to indent again
ctrl space to select region, then ctrl-u -2 then ctrl-x tab: to unindent a block
alt-x python-mode: to turn on python, text-mode or c++-mode etc
ctrl-u: repeat the following commands 4 times
ctrl-u 2: repeat the following commands 2 times
To give a command a numeric argument of, say, 12, type C-u 12 before typing the command. If you type slowly, you'll see: C-u 1 2-
# Comment a block
alt-x python-mode, select region, then alt-x comment-region
ctrl-j: new line and auto indent
alt-/: auto complete words

alt-d: delete a word forward
alt-delete: delete a word backward
ctrl-k: delete a line
ctrl-shift-backspace: delete the current whole line
alt-f: move a word forward
alt-b: move a word backward
alt-x toggle-truncate-lines: wrap text off
ctrl-x ctrl-+: increase font size
ctrl-x ctrl--: decrease font size
whitespace-mode: toggle whitespace mode
alt-x ediff: diff two files
ctrl-x z: continue once the previous command
alt-x zap-to-char: delete everything up to a specific character
vc-annotate: display the git blame information

# Change split windows size:
C-x } (enlarge-window-horizontally) does likewise, horizontally.
C-x { (shrink-window-horizontally) is also bound by default

Following one of these commands with repeat (C-x z to initiate, and just z for continued repetition).


Navigating Parentheses:
  ctrl-alt-n     forward-list  Move forward over a parenthetical group 
  ctrl-alt-p     backward-list  Move backward over a parenthetical group 
  ctrl-alt-f     forward-sexp Move forward over a balanced expression
  ctrl-alt-b     backward-sexp  Move backward over a balanced expression
  ctrl-alt-k     kill-sexp  Kill balanced expression forward
  ctrl-alt-SPC   mark-sexp  Put the mark at the end of the sexp.

Set comment region charactert:
Alt-: (setq comment-start "#~")

In the directory view mode: (dired)
C: copy file
D: delete file or folder
R: rename file or folder
+: create a folder
q: quit the dir mode
m: mark file
u: unmark file
U: unmark all files
%m: regexp mark files
^: go to parent dir
>: move to the next subdir
<: font="" move="" prev="" subdir="" the="" to="">