;; use fira code font if available ;; https://github.com/tonsky/FiraCode (let ((font-family "Fira Code")) (when (and (display-graphic-p) (member font-family (font-family-list))) (set-face-attribute 'default nil :family (concat font-family " Retina")) (set-face-attribute 'default nil :height 140) ;; configure ligatures ;; https://github.com/tonsky/FiraCode/wiki/Emacs-instructions (let ((alist '((33 . ".\\(?:\\(?:==\\|!!\\)\\|[!=]\\)") (35 . ".\\(?:###\\|##\\|_(\\|[#(?[_{]\\)") (36 . ".\\(?:>\\)") (37 . ".\\(?:\\(?:%%\\)\\|%\\)") (38 . ".\\(?:\\(?:&&\\)\\|&\\)") (42 . ".\\(?:\\(?:\\*\\*/\\)\\|\\(?:\\*[*/]\\)\\|[*/>]\\)") (43 . ".\\(?:\\(?:\\+\\+\\)\\|[+>]\\)") (45 . ".\\(?:\\(?:-[>-]\\|<<\\|>>\\)\\|[<>}~-]\\)") (46 . ".\\(?:\\(?:\\.[.<]\\)\\|[.=-]\\)") (47 . ".\\(?:\\(?:\\*\\*\\|//\\|==\\)\\|[*/=>]\\)") (48 . ".\\(?:x[a-zA-Z]\\)") (58 . ".\\(?:::\\|[:=]\\)") (59 . ".\\(?:;;\\|;\\)") (60 . ".\\(?:\\(?:!--\\)\\|\\(?:~~\\|->\\|\\$>\\|\\*>\\|\\+>\\|--\\|<[<=-]\\|=[<=>]\\||>\\)\\|[*$+~/<=>|-]\\)") (61 . ".\\(?:\\(?:/=\\|:=\\|<<\\|=[=>]\\|>>\\)\\|[<=>~]\\)") (62 . ".\\(?:\\(?:=>\\|>[=>-]\\)\\|[=>-]\\)") (63 . ".\\(?:\\(\\?\\?\\)\\|[:=?]\\)") (91 . ".\\(?:]\\)") (92 . ".\\(?:\\(?:\\\\\\\\\\)\\|\\\\\\)") (94 . ".\\(?:=\\)") (119 . ".\\(?:ww\\)") (123 . ".\\(?:-\\)") (124 . ".\\(?:\\(?:|[=|]\\)\\|[=>|]\\)") (126 . ".\\(?:~>\\|~~\\|[>=@~-]\\)") ) )) (dolist (char-regexp alist) (set-char-table-range composition-function-table (car char-regexp) `([,(cdr char-regexp) 0 font-shape-gstring]))))) ;; fira code retina at 14 pt may result in (window-total-height) being exactly ;; 80 which makes sensible splitting less sensible ;; ;; increment split-height-threshold so that vertical splits are still ;; preferred in most cases (setq split-height-threshold (1+ split-height-threshold))) ;; configure modifiers (setq mac-option-modifier 'super) (setq mac-command-modifier 'meta) (setq ns-function-modifier 'hyper) ;; Norwegian mac-keyboard (define-key key-translation-map (kbd "s-8") (kbd "[")) (define-key key-translation-map (kbd "s-(") (kbd "{")) (define-key key-translation-map (kbd "s-9") (kbd "]")) (define-key key-translation-map (kbd "s-)") (kbd "}")) (define-key key-translation-map (kbd "s-7") (kbd "|")) (define-key key-translation-map (kbd "s-/") (kbd "\\")) (define-key key-translation-map (kbd "M-s-7") (kbd "M-|")) ;; don't open files from the workspace in a new frame (setq ns-pop-up-frames nil) ;; use old-style fullscreen (setq ns-use-native-fullscreen nil) ;; move deleted files to ~/.Trash (setq trash-directory "~/.Trash") ;; use paths from shell (use-package exec-path-from-shell :init (setq exec-path-from-shell-variables '("PATH" "MANPATH" "GOPATH")) :config (exec-path-from-shell-initialize)) ;; add binding for toggling fullscreen (global-set-key (kbd "M-RET") 'toggle-frame-fullscreen) ;; use gls if available (which supports --dired option) (when (executable-find "gls") (setq insert-directory-program "gls")) ;; use gdf if available as it provides more correct output. When apfs is used, ;; the ifree column of bsd df seems to be incorrect (when (executable-find "gdf") (setq directory-free-space-program "gdf")) (provide 'init-mac)