From a7774cbd6a07e1a1520c50300c7149d872e528e7 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Wed, 11 Mar 2020 16:50:23 +0330 Subject: [PATCH 01/68] add fg42--startup-optimize function" --- lib/fg42.el | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/lib/fg42.el b/lib/fg42.el index ad6ecc8..d8a10f8 100644 --- a/lib/fg42.el +++ b/lib/fg42.el @@ -35,6 +35,44 @@ (defvar fg42-after-initialize-hook nil "This hook will be called after FG42 initilization process.") +(defvar fg42-gc-cons-threshold 16777216 "Value of GC threshold of FG42.") + + + + +(defun defer-garbage-collection () + "Disable garbage collection." + (setq gc-cons-threshold fg42-gc-cons-threshold)) + +(defun restore-garbage-collection () + "Restore garbage collection to it's default value." + (run-at-time + 1 nil (lambda () (setq gc-cons-threshold most-positive-fixnum)))) + +(defun fg42--startup-optimization () + "Optimize FG42 startup." + (setq gc-cons-threshold most-positive-fixnum ; 2^61 bytes + gc-cons-percentage 0.6) ;; by setting gc threshold to the largest number Emacs can understand we are basically disabling it :). + + (add-hook 'emacs-startup-hook + (lambda () + (setq gc-cons-threshold fg42-gc-cons-threshold ; 16mb + gc-cons-percentage 0.1))) ;; after initilization phase restore cons threshold to normal + + (setq package-enable-at-startup nil) ;; disable auto initilization of package.el + + (add-hook 'minibuffer-setup-hook #'defer-garbage-collection) ;; disable gc when we are in minibuffer using the same method we use for initilization time + (add-hook 'minibuffer-exit-hook #'restore-garbage-collection) ;; just enable gc when exiting minibuffer + (defvar --file-name-handler-alist file-name-handler-alist) ;; we dont need Emacs to check every file type and look for file handlers when we are initializing so we backup the original value and set it to nil + + (setq file-name-handler-alist nil) + + (add-hook 'emacs-startup-hook + (lambda () + (setq file-name-handler-alist --file-name-handler-alist))) ;; after initialization we can restore that file-name-handler-alist to original value. + + (setq initial-major-mode 'fundamental-mode) ;; initial mode for emacs can be fundamental mode we have nothing to lose + ) (require 'fpkg) (require 'fg42/base) @@ -44,12 +82,14 @@ (defun fg42-initialize () "Initialize FG42 editor." + (fg42--startup-optimization) (run-hooks 'fg42-before-initialize-hook) (mkdir fg42-tmp t) (setq package-user-dir (concat fg42-home "/packages")) (fpkg-initialize) (initialize-extensions) - (run-hooks 'fg42-after-initialize-hook)) + (run-hooks 'fg42-after-initialize-hook) + (message "startup time: %s" (- (float-time) start))) (provide 'fg42) ;; fg42.el ends here From 31f033b1f65571dc3f83b78f07d6c80174f58a49 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Wed, 11 Mar 2020 17:03:56 +0330 Subject: [PATCH 02/68] add start variable for startup time measuring --- config/fg42.user.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/fg42.user.el b/config/fg42.user.el index aca9dd7..f6ada33 100644 --- a/config/fg42.user.el +++ b/config/fg42.user.el @@ -9,7 +9,7 @@ ;; (theme themes/color-theme-doom-dracula) (theme themes/color-theme-doom-one) ;; (theme themes/color-theme-doom-molokai) - +(setq start (float-time)) ;; ABILITIES ;; ========= ;; Disable abilities which you don't want. From a9b926d95c9f0843989db7b06b502548f4191944 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Wed, 11 Mar 2020 17:57:51 +0330 Subject: [PATCH 03/68] fix discussions --- lib/fg42.el | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/fg42.el b/lib/fg42.el index d8a10f8..cf4b532 100644 --- a/lib/fg42.el +++ b/lib/fg42.el @@ -58,12 +58,14 @@ (lambda () (setq gc-cons-threshold fg42-gc-cons-threshold ; 16mb gc-cons-percentage 0.1))) ;; after initilization phase restore cons threshold to normal - - (setq package-enable-at-startup nil) ;; disable auto initilization of package.el - - (add-hook 'minibuffer-setup-hook #'defer-garbage-collection) ;; disable gc when we are in minibuffer using the same method we use for initilization time - (add-hook 'minibuffer-exit-hook #'restore-garbage-collection) ;; just enable gc when exiting minibuffer - (defvar --file-name-handler-alist file-name-handler-alist) ;; we dont need Emacs to check every file type and look for file handlers when we are initializing so we backup the original value and set it to nil + ;; disable auto initilization of package.el + (setq package-enable-at-startup nil) + ;; disable gc when we are in minibuffer using the same method we use for initilization time + (add-hook 'minibuffer-setup-hook #'defer-garbage-collection) + ;; just enable gc when exiting minibuffer + (add-hook 'minibuffer-exit-hook #'restore-garbage-collection) + ;; we dont need Emacs to check every file type and look for file handlers when we are initializing so we backup the original value and set it to nil + (setq --file-name-handler-alist file-name-handler-alist) (setq file-name-handler-alist nil) @@ -82,6 +84,7 @@ (defun fg42-initialize () "Initialize FG42 editor." + (setq start (float-time)) (fg42--startup-optimization) (run-hooks 'fg42-before-initialize-hook) (mkdir fg42-tmp t) From b913b3766bb918b082d6f4460095870c4fc13f11 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Wed, 11 Mar 2020 17:59:27 +0330 Subject: [PATCH 04/68] fix discussions --- config/fg42.user.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/fg42.user.el b/config/fg42.user.el index f6ada33..aca9dd7 100644 --- a/config/fg42.user.el +++ b/config/fg42.user.el @@ -9,7 +9,7 @@ ;; (theme themes/color-theme-doom-dracula) (theme themes/color-theme-doom-one) ;; (theme themes/color-theme-doom-molokai) -(setq start (float-time)) + ;; ABILITIES ;; ========= ;; Disable abilities which you don't want. From ddcf016e936c0bc7f6dee0adc835a4d76aa4e582 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Wed, 11 Mar 2020 18:01:23 +0330 Subject: [PATCH 05/68] fix discussions --- lib/fg42.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/fg42.el b/lib/fg42.el index cf4b532..820e311 100644 --- a/lib/fg42.el +++ b/lib/fg42.el @@ -84,7 +84,7 @@ (defun fg42-initialize () "Initialize FG42 editor." - (setq start (float-time)) + (setq fg42-start-timestamp (float-time)) (fg42--startup-optimization) (run-hooks 'fg42-before-initialize-hook) (mkdir fg42-tmp t) @@ -92,7 +92,7 @@ (fpkg-initialize) (initialize-extensions) (run-hooks 'fg42-after-initialize-hook) - (message "startup time: %s" (- (float-time) start))) + (message "startup time: %s" (- (float-time) fg42-start-timestamp))) (provide 'fg42) ;; fg42.el ends here From 6c6e4b27def6d7b07549e8d4284e4507b588050e Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Wed, 11 Mar 2020 18:05:33 +0330 Subject: [PATCH 06/68] fix discussions --- lib/fg42.el | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/fg42.el b/lib/fg42.el index 820e311..18d8d95 100644 --- a/lib/fg42.el +++ b/lib/fg42.el @@ -51,13 +51,15 @@ (defun fg42--startup-optimization () "Optimize FG42 startup." - (setq gc-cons-threshold most-positive-fixnum ; 2^61 bytes - gc-cons-percentage 0.6) ;; by setting gc threshold to the largest number Emacs can understand we are basically disabling it :). - + ;; by setting gc threshold to the largest number Emacs can understand we are basically disabling it :). + (setq gc-cons-threshold most-positive-fixnum + gc-cons-percentage 0.6) + ;; after initilization phase restore cons threshold to normal (add-hook 'emacs-startup-hook (lambda () (setq gc-cons-threshold fg42-gc-cons-threshold ; 16mb - gc-cons-percentage 0.1))) ;; after initilization phase restore cons threshold to normal + gc-cons-percentage 0.1))) + ;; disable auto initilization of package.el (setq package-enable-at-startup nil) ;; disable gc when we are in minibuffer using the same method we use for initilization time @@ -68,12 +70,12 @@ (setq --file-name-handler-alist file-name-handler-alist) (setq file-name-handler-alist nil) - + ;; after initialization we can restore that file-name-handler-alist to original value. (add-hook 'emacs-startup-hook (lambda () - (setq file-name-handler-alist --file-name-handler-alist))) ;; after initialization we can restore that file-name-handler-alist to original value. - - (setq initial-major-mode 'fundamental-mode) ;; initial mode for emacs can be fundamental mode we have nothing to lose + (setq file-name-handler-alist --file-name-handler-alist))) + ;; initial mode for emacs can be fundamental mode we have nothing to lose + (setq initial-major-mode 'fundamental-mode) ) (require 'fpkg) From 79866f3871990d9ca7caa49ca52f60e34f80090f Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Wed, 11 Mar 2020 14:58:32 +0000 Subject: [PATCH 07/68] Fixed few styling issues in fg42.el --- lib/fg42.el | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/lib/fg42.el b/lib/fg42.el index 18d8d95..6e9ea25 100644 --- a/lib/fg42.el +++ b/lib/fg42.el @@ -29,16 +29,20 @@ (defvar fg42-tmp (concat fg42-home "/tmp")) +(require 'fpkg) +(require 'fg42/base) +(require 'fg42/splash) +(require 'fg42/race) +(require 'fg42/utils) + (defvar fg42-before-initialize-hook nil "This hook will be called before FG42 initilization process.") (defvar fg42-after-initialize-hook nil "This hook will be called after FG42 initilization process.") -(defvar fg42-gc-cons-threshold 16777216 "Value of GC threshold of FG42.") - - - +(defvar fg42-gc-cons-threshold 16777216 + "Value of GC threshold of FG42.") (defun defer-garbage-collection () "Disable garbage collection." @@ -51,7 +55,8 @@ (defun fg42--startup-optimization () "Optimize FG42 startup." - ;; by setting gc threshold to the largest number Emacs can understand we are basically disabling it :). + ;; by setting gc threshold to the largest number + ;; Emacs can understand we are basically disabling it :). (setq gc-cons-threshold most-positive-fixnum gc-cons-percentage 0.6) ;; after initilization phase restore cons threshold to normal @@ -62,27 +67,26 @@ ;; disable auto initilization of package.el (setq package-enable-at-startup nil) - ;; disable gc when we are in minibuffer using the same method we use for initilization time + ;; disable gc when we are in minibuffer using the same method we + ;; use for initilization time (add-hook 'minibuffer-setup-hook #'defer-garbage-collection) ;; just enable gc when exiting minibuffer (add-hook 'minibuffer-exit-hook #'restore-garbage-collection) - ;; we dont need Emacs to check every file type and look for file handlers when we are initializing so we backup the original value and set it to nil + ;; we dont need Emacs to check every file type and look for file + ;; handlers when we are initializing so we backup the original + ;; value and set it to nil (setq --file-name-handler-alist file-name-handler-alist) (setq file-name-handler-alist nil) - ;; after initialization we can restore that file-name-handler-alist to original value. + ;; after initialization we can restore that file-name-handler-alist + ;; to original value. (add-hook 'emacs-startup-hook (lambda () - (setq file-name-handler-alist --file-name-handler-alist))) + (setq file-name-handler-alist + --file-name-handler-alist))) ;; initial mode for emacs can be fundamental mode we have nothing to lose - (setq initial-major-mode 'fundamental-mode) - ) + (setq initial-major-mode 'fundamental-mode)) -(require 'fpkg) -(require 'fg42/base) -(require 'fg42/splash) -(require 'fg42/race) -(require 'fg42/utils) (defun fg42-initialize () "Initialize FG42 editor." @@ -96,5 +100,6 @@ (run-hooks 'fg42-after-initialize-hook) (message "startup time: %s" (- (float-time) fg42-start-timestamp))) + (provide 'fg42) ;; fg42.el ends here From cac46dec349ae4c8b6f4442f1aab75f8f041b963 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Thu, 12 Mar 2020 02:56:25 +0330 Subject: [PATCH 08/68] WIP: improved -defkey-evil --- lib/fg42/key-bindings.el | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/fg42/key-bindings.el b/lib/fg42/key-bindings.el index c590703..3c83cb8 100644 --- a/lib/fg42/key-bindings.el +++ b/lib/fg42/key-bindings.el @@ -35,9 +35,10 @@ (define-key map (kbd key) fn)) -(defun -defkey-evil (map key fn) - "Set the given KEY on key map MAP to FN." - (define-key map (kbd key) fn)) +(defun -defkey-evil (map state-keys fn) + "Set the given STATE-KEYS on key map MAP to FN." + (mapcar (lambda (state) + (evil-define-key state map (kbd key) fn)) states)) (defmacro defkey (map keys fn) @@ -49,12 +50,16 @@ KEYS should be a plist in the following format: \(:god :human :evil Date: Thu, 12 Mar 2020 03:05:50 +0330 Subject: [PATCH 09/68] WIP: still working on -defkey-evil --- lib/fg42/key-bindings.el | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/fg42/key-bindings.el b/lib/fg42/key-bindings.el index 3c83cb8..13e5997 100644 --- a/lib/fg42/key-bindings.el +++ b/lib/fg42/key-bindings.el @@ -37,8 +37,11 @@ (defun -defkey-evil (map state-keys fn) "Set the given STATE-KEYS on key map MAP to FN." - (mapcar (lambda (state) - (evil-define-key state map (kbd key) fn)) states)) + (message "%s" state-keys) + (mapcar (lambda (k) (message "k=>%s" k)) state-keys) + ) + ;;(mapcar (lambda (state) + ;; (evil-define-key state map (kbd key) fn)) states)) (defmacro defkey (map keys fn) @@ -59,7 +62,7 @@ KEYS should be a plist in the following format: ((is-evil?) `(-defkey-evil ,map ,evil-state-key ,fn))))) -(macroexpand '(defkey python-map (:evil (:normal "g s" :visual "v")) foo)) +(macroexpand (defkey 'python-map (:evil '(:normal "g s" :visual "v") :god "who cares") 'foo)) (provide 'fg42/key-bindings) ;;; key-bindings.el ends here From 7f8f62c02afa92339ce7ce420f2b1fbbc303170b Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Thu, 12 Mar 2020 03:20:57 +0330 Subject: [PATCH 10/68] WIP: naive solution for -defkey-evil --- lib/fg42/key-bindings.el | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/fg42/key-bindings.el b/lib/fg42/key-bindings.el index 13e5997..2bce921 100644 --- a/lib/fg42/key-bindings.el +++ b/lib/fg42/key-bindings.el @@ -37,8 +37,12 @@ (defun -defkey-evil (map state-keys fn) "Set the given STATE-KEYS on key map MAP to FN." - (message "%s" state-keys) - (mapcar (lambda (k) (message "k=>%s" k)) state-keys) + (let ( + (normal-key (plist-get state-keys :normal)) + (visual-key (plist-get state-keys :visual)) + (insert-key (plist-get state-keys :insert)) + ) + (message "%s" normal-key)) ) ;;(mapcar (lambda (state) ;; (evil-define-key state map (kbd key) fn)) states)) From 50114c2686b6137aa81f998e9691900dc228fafc Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Thu, 12 Mar 2020 05:38:05 +0330 Subject: [PATCH 11/68] fix -defkey-evil function. --- lib/fg42/key-bindings.el | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/fg42/key-bindings.el b/lib/fg42/key-bindings.el index 2bce921..3825672 100644 --- a/lib/fg42/key-bindings.el +++ b/lib/fg42/key-bindings.el @@ -41,11 +41,13 @@ (normal-key (plist-get state-keys :normal)) (visual-key (plist-get state-keys :visual)) (insert-key (plist-get state-keys :insert)) - ) - (message "%s" normal-key)) + (emacs-key (plist-get state-keys :emacs))) + (when (not (null normal-key)) (evil-define-key 'normal map normal-key fn)) + (when (not (null visual-key)) (evil-define-key 'normal map normal-key fn)) + (when (not (null insert-key)) (evil-define-key 'normal map normal-key fn)) + (when (not (null emacs-key)) (evil-define-key 'normal map normal-key fn)) + ) ) - ;;(mapcar (lambda (state) - ;; (evil-define-key state map (kbd key) fn)) states)) (defmacro defkey (map keys fn) From b6149629cb9bd9a0fbc760997cb9099fff075459 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Thu, 12 Mar 2020 05:40:09 +0330 Subject: [PATCH 12/68] remove test macroexpand --- lib/fg42/key-bindings.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/fg42/key-bindings.el b/lib/fg42/key-bindings.el index 3825672..c0659fe 100644 --- a/lib/fg42/key-bindings.el +++ b/lib/fg42/key-bindings.el @@ -68,7 +68,6 @@ KEYS should be a plist in the following format: ((is-evil?) `(-defkey-evil ,map ,evil-state-key ,fn))))) -(macroexpand (defkey 'python-map (:evil '(:normal "g s" :visual "v") :god "who cares") 'foo)) (provide 'fg42/key-bindings) ;;; key-bindings.el ends here From 57fd2e7cc24dedc87c1a38981bd4f01b43190e8a Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Thu, 12 Mar 2020 10:22:26 +0330 Subject: [PATCH 13/68] some improvements and bug fixes --- lib/fg42/key-bindings.el | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/fg42/key-bindings.el b/lib/fg42/key-bindings.el index c0659fe..6f5fa67 100644 --- a/lib/fg42/key-bindings.el +++ b/lib/fg42/key-bindings.el @@ -43,9 +43,9 @@ (insert-key (plist-get state-keys :insert)) (emacs-key (plist-get state-keys :emacs))) (when (not (null normal-key)) (evil-define-key 'normal map normal-key fn)) - (when (not (null visual-key)) (evil-define-key 'normal map normal-key fn)) - (when (not (null insert-key)) (evil-define-key 'normal map normal-key fn)) - (when (not (null emacs-key)) (evil-define-key 'normal map normal-key fn)) + (when (not (null visual-key)) (evil-define-key 'visual map normal-key fn)) + (when (not (null insert-key)) (evil-define-key 'insert map normal-key fn)) + (when (not (null emacs-key)) (evil-define-key 'emacs map normal-key fn)) ) ) @@ -67,7 +67,5 @@ KEYS should be a plist in the following format: ((is-human?) `(-defkey-human ,map ,human-key ,fn)) ((is-evil?) `(-defkey-evil ,map ,evil-state-key ,fn))))) - - (provide 'fg42/key-bindings) ;;; key-bindings.el ends here From 75955eee1925544a7706d08b8c393a31502a6e2b Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Thu, 12 Mar 2020 11:04:03 +0330 Subject: [PATCH 14/68] every thing works almost --- lib/fg42/key-bindings.el | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/fg42/key-bindings.el b/lib/fg42/key-bindings.el index 6f5fa67..38876b5 100644 --- a/lib/fg42/key-bindings.el +++ b/lib/fg42/key-bindings.el @@ -42,10 +42,10 @@ (visual-key (plist-get state-keys :visual)) (insert-key (plist-get state-keys :insert)) (emacs-key (plist-get state-keys :emacs))) - (when (not (null normal-key)) (evil-define-key 'normal map normal-key fn)) - (when (not (null visual-key)) (evil-define-key 'visual map normal-key fn)) - (when (not (null insert-key)) (evil-define-key 'insert map normal-key fn)) - (when (not (null emacs-key)) (evil-define-key 'emacs map normal-key fn)) + (when (not (null normal-key)) (evil-define-key 'normal map (kbd normal-key) fn)) + (when (not (null visual-key)) (evil-define-key 'visual map (kbd visual-key) fn)) + (when (not (null insert-key)) (evil-define-key 'insert map (kbd insert-key) fn)) + (when (not (null emacs-key)) (evil-define-key 'emacs map (kbd emacs-key) fn)) ) ) @@ -60,12 +60,10 @@ KEYS should be a plist in the following format: (let ((god-key (plist-get keys :god)) (human-key (plist-get keys :human)) (evil-state-key (plist-get keys :evil))) - - (cond - ((is-god?) `(-defkey-god ,map ,god-key ,fn)) - ((is-human?) `(-defkey-human ,map ,human-key ,fn)) - ((is-evil?) `(-defkey-evil ,map ,evil-state-key ,fn))))) + ((is-god?) `(-defkey-god ,map ,god-key (quote ,fn))) + ((is-human?) `(-defkey-human ,map ,human-key (quote ,fn))) + ((is-evil?) `(-defkey-evil ,map (quote ,evil-state-key) (quote ,fn)))))) (provide 'fg42/key-bindings) ;;; key-bindings.el ends here From 579b50c317aa1c1b8783b2418ffed9f24aedc404 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Thu, 12 Mar 2020 11:10:33 +0330 Subject: [PATCH 15/68] add example usage of macro --- lib/fg42/key-bindings.el | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/fg42/key-bindings.el b/lib/fg42/key-bindings.el index 38876b5..d57ec75 100644 --- a/lib/fg42/key-bindings.el +++ b/lib/fg42/key-bindings.el @@ -45,18 +45,17 @@ (when (not (null normal-key)) (evil-define-key 'normal map (kbd normal-key) fn)) (when (not (null visual-key)) (evil-define-key 'visual map (kbd visual-key) fn)) (when (not (null insert-key)) (evil-define-key 'insert map (kbd insert-key) fn)) - (when (not (null emacs-key)) (evil-define-key 'emacs map (kbd emacs-key) fn)) - ) - ) + (when (not (null emacs-key)) (evil-define-key 'emacs map (kbd emacs-key) fn)))) + + (defmacro defkey (map keys fn) "Defines a key binding for FG42 for different types. Defines a keybinding in the given MAP for the given KEYS that maps to the given FN with the given DOCSTRING. +Example usage : (defkey `global-map` (:evil (:normal \"SPC s u\") :god \"C-x C-y\") counsel-M-x)" -KEYS should be a plist in the following format: -\(:god :human :evil Date: Thu, 12 Mar 2020 21:02:22 +0330 Subject: [PATCH 16/68] resolve discussions --- lib/fg42/key-bindings.el | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/fg42/key-bindings.el b/lib/fg42/key-bindings.el index d57ec75..973aeab 100644 --- a/lib/fg42/key-bindings.el +++ b/lib/fg42/key-bindings.el @@ -37,32 +37,32 @@ (defun -defkey-evil (map state-keys fn) "Set the given STATE-KEYS on key map MAP to FN." - (let ( - (normal-key (plist-get state-keys :normal)) + (let ((normal-key (plist-get state-keys :normal)) (visual-key (plist-get state-keys :visual)) (insert-key (plist-get state-keys :insert)) (emacs-key (plist-get state-keys :emacs))) - (when (not (null normal-key)) (evil-define-key 'normal map (kbd normal-key) fn)) - (when (not (null visual-key)) (evil-define-key 'visual map (kbd visual-key) fn)) - (when (not (null insert-key)) (evil-define-key 'insert map (kbd insert-key) fn)) - (when (not (null emacs-key)) (evil-define-key 'emacs map (kbd emacs-key) fn)))) + (cond + ((not (null normal-key)) (evil-define-key 'normal map (kbd normal-key) fn)) + ((not (null visual-key)) (evil-define-key 'visual map (kbd visual-key) fn)) + ((not (null insert-key)) (evil-define-key 'insert map (kbd insert-key) fn)) + ((not (null emacs-key)) (evil-define-key 'emacs map (kbd emacs-key) fn))))) -(defmacro defkey (map keys fn) + +(defmacro defkey (map fn &rest keys) "Defines a key binding for FG42 for different types. Defines a keybinding in the given MAP for the given KEYS that maps to the given FN with the given DOCSTRING. -Example usage : (defkey `global-map` (:evil (:normal \"SPC s u\") :god \"C-x C-y\") counsel-M-x)" +Example usage : (defkey `'global-map`' 'counsel-M-x :evil (:normal \"SPC s u\") :god \"C-x C-n\")" (let ((god-key (plist-get keys :god)) (human-key (plist-get keys :human)) (evil-state-key (plist-get keys :evil))) (cond - ((is-god?) `(-defkey-god ,map ,god-key (quote ,fn))) - ((is-human?) `(-defkey-human ,map ,human-key (quote ,fn))) - ((is-evil?) `(-defkey-evil ,map (quote ,evil-state-key) (quote ,fn)))))) - + ((is-god?) `(-defkey-god ,map ,god-key ,fn)) + ((is-human?) `(-defkey-human ,map ,human-key ,fn)) + ((is-evil?) `(-defkey-evil ,map (quote ,evil-state-key) ,fn))))) (provide 'fg42/key-bindings) ;;; key-bindings.el ends here From 0c82c80c1864ba8aa8bba13038283b0b0c018c67 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Sun, 15 Mar 2020 11:53:06 +0000 Subject: [PATCH 17/68] Some styling issues in key-bindings.el have been fixed --- lib/fg42/key-bindings.el | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/fg42/key-bindings.el b/lib/fg42/key-bindings.el index 973aeab..02680be 100644 --- a/lib/fg42/key-bindings.el +++ b/lib/fg42/key-bindings.el @@ -42,20 +42,20 @@ (insert-key (plist-get state-keys :insert)) (emacs-key (plist-get state-keys :emacs))) (cond - ((not (null normal-key)) (evil-define-key 'normal map (kbd normal-key) fn)) - ((not (null visual-key)) (evil-define-key 'visual map (kbd visual-key) fn)) - ((not (null insert-key)) (evil-define-key 'insert map (kbd insert-key) fn)) - ((not (null emacs-key)) (evil-define-key 'emacs map (kbd emacs-key) fn))))) - - - + ((not (null normal-key)) (evil-define-key 'normal map (kbd normal-key) fn)) + ((not (null visual-key)) (evil-define-key 'visual map (kbd visual-key) fn)) + ((not (null insert-key)) (evil-define-key 'insert map (kbd insert-key) fn)) + ((not (null emacs-key)) (evil-define-key 'emacs map (kbd emacs-key) fn))))) (defmacro defkey (map fn &rest keys) "Defines a key binding for FG42 for different types. Defines a keybinding in the given MAP for the given KEYS that maps to the given FN with the given DOCSTRING. -Example usage : (defkey `'global-map`' 'counsel-M-x :evil (:normal \"SPC s u\") :god \"C-x C-n\")" +Example usage : +\\(defkey `'global-map`' 'goto-line + :evil \\(:normal \"SPC s u\"\\) + :god \"\"\\)" (let ((god-key (plist-get keys :god)) (human-key (plist-get keys :human)) @@ -64,5 +64,6 @@ Example usage : (defkey `'global-map`' 'counsel-M-x :evil (:normal \"SPC s u\") ((is-god?) `(-defkey-god ,map ,god-key ,fn)) ((is-human?) `(-defkey-human ,map ,human-key ,fn)) ((is-evil?) `(-defkey-evil ,map (quote ,evil-state-key) ,fn))))) + (provide 'fg42/key-bindings) ;;; key-bindings.el ends here From 9f52c19e772aad14733fad11802613f67b8b6612 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Sun, 15 Mar 2020 22:49:32 +0330 Subject: [PATCH 18/68] fix fg42-font-size applying issue --- lib/extensions/editor/init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/extensions/editor/init.el b/lib/extensions/editor/init.el index 6e0073a..045f3e8 100644 --- a/lib/extensions/editor/init.el +++ b/lib/extensions/editor/init.el @@ -58,7 +58,7 @@ ;; Font Configuration ----------------------------------- (ability font () "Sets the default font to fg42 font" - (add-to-list 'default-frame-alist (cons 'font fg42-font)) + (add-to-list 'default-frame-alist (cons 'font (format "%s-%d" fg42-font fg42-font-size))) (set-face-attribute 'default t :font fg42-font)) ;; ------------------------------------------------------ From 6d7d35409b2e735d26057b0f821df1f67c6f5dc0 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Sun, 15 Mar 2020 23:38:57 +0330 Subject: [PATCH 19/68] new devops extension with support for k8s, docker and ansible --- lib/extensions/development.el | 2 +- lib/extensions/devops.el | 19 +++++++++++++++++++ lib/extensions/devops/init.el | 12 ++++++++++++ lib/extensions/editor.el | 2 +- 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 lib/extensions/devops.el create mode 100644 lib/extensions/devops/init.el diff --git a/lib/extensions/development.el b/lib/extensions/development.el index d0560c0..42f5281 100644 --- a/lib/extensions/development.el +++ b/lib/extensions/development.el @@ -9,7 +9,7 @@ (depends-on 'yasnippet) (depends-on 'yasnippet-snippets) (depends-on 'smart-mode-line) -(depends-on 'dockerfile-mode) + (depends-on 'quickrun) (depends-on 'dash) (depends-on 'websocket) diff --git a/lib/extensions/devops.el b/lib/extensions/devops.el new file mode 100644 index 0000000..0b43bac --- /dev/null +++ b/lib/extensions/devops.el @@ -0,0 +1,19 @@ +;;; DevopsExtension --- Enable Devops support in FG42 +;;; Commentary: +;;; Code: +(require 'fpkg) +(require 'fg42/extension) +(require 'extensions/devops/init) + +;; dependencies +(depends-on 'kubel) +(depends-on 'ansible) +(depends-on 'docker) +(depends-on 'dockerfile-mode) + +(extension devops + :version 0.0.1 + :on-initialize extensions/devops + :docs "lib/extensions/devops/readme.org") +(provide 'extensions/devops) +;; devops ends here diff --git a/lib/extensions/devops/init.el b/lib/extensions/devops/init.el new file mode 100644 index 0000000..b38f84c --- /dev/null +++ b/lib/extensions/devops/init.el @@ -0,0 +1,12 @@ +;;; devops-init --- The entry point for devops extension +;;; Commentary: +;;; Code: + +(defun extensions/devops-initialize () + "Initialize devops extension." + (exec-path-from-shell-initialize) + (add-to-list 'auto-mode-alist '("Dockerfile\\'" . dockerfile-mode)) + (add-hook 'yaml-mode-hook (lambda () (ansible)))) + +(provide 'extensions/devops/init) +;;; init ends here. diff --git a/lib/extensions/editor.el b/lib/extensions/editor.el index 7f003e1..d8a7459 100644 --- a/lib/extensions/editor.el +++ b/lib/extensions/editor.el @@ -25,7 +25,7 @@ (depends-on 'eyebrowse) -;; general for simpler keybindin +;; general for simpler keybinding (depends-on 'general) ;; Themes From ed3f95f84437c3e6377f4eab8d9ee118e6848102 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 00:24:00 +0330 Subject: [PATCH 20/68] fix stupid bug and add devops extension to user default config --- config/fg42.user.el | 1 + lib/extensions/devops.el | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/config/fg42.user.el b/config/fg42.user.el index aca9dd7..23bb7c7 100644 --- a/config/fg42.user.el +++ b/config/fg42.user.el @@ -37,6 +37,7 @@ 'arduino 'java 'racket + 'devops 'irc 'latex) diff --git a/lib/extensions/devops.el b/lib/extensions/devops.el index 0b43bac..3854d1b 100644 --- a/lib/extensions/devops.el +++ b/lib/extensions/devops.el @@ -13,7 +13,7 @@ (extension devops :version 0.0.1 - :on-initialize extensions/devops + :on-initialize extensions/devops-initialize :docs "lib/extensions/devops/readme.org") (provide 'extensions/devops) ;; devops ends here From 98fa76b0ba07da9e7e99117dd3aab7549647b858 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Sun, 15 Mar 2020 22:21:30 +0000 Subject: [PATCH 21/68] Straight installation funciton has been added Signed-off-by: Sameer Rahmani --- .gitignore | 3 ++- lib/fg42.el | 2 ++ lib/fpkg.el | 58 +++++++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 54 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index b1409d6..41255ae 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ nohup.out lib/**/*.elc *.elc tmp/ -test-runner/ \ No newline at end of file +test-runner/ +.fpkg/ \ No newline at end of file diff --git a/lib/fg42.el b/lib/fg42.el index 6e9ea25..d534305 100644 --- a/lib/fg42.el +++ b/lib/fg42.el @@ -30,6 +30,8 @@ (defvar fg42-tmp (concat fg42-home "/tmp")) (require 'fpkg) +(fpkg-initialize-once) + (require 'fg42/base) (require 'fg42/splash) (require 'fg42/race) diff --git a/lib/fpkg.el b/lib/fpkg.el index 5c4d8c6..0676f8b 100644 --- a/lib/fpkg.el +++ b/lib/fpkg.el @@ -1,7 +1,7 @@ ;;; fpkg --- a simple package manager for FG42 -*- lexical-binding: t; -*- - -;; Copyright (C) 2010-2019 Sameer Rahmani - +;; +;; Copyright (C) 2010-2012 Sameer Rahmani +;; ;; Author: Sameer Rahmani ;; Keywords: lisp fg42 IDE package manager ;; Version: 1.0.0 @@ -36,6 +36,18 @@ (path nil) (source 'elpa)) + +(defvar bootstrap-version nil + "Bootstrap version of straight. This var is used in straight's installer.") + + +(defvar fpkg-packages-path + (expand-file-name ".fpkg/" fg42-home) + "The path to the directory which FPKG will use to store that packages.") + +(defvar fpkg-initilized-p nil + "A boolean flag that indicates whether FPKG is initialized or not.") + (defvar required-packages (make-hash-table) "A hash of `fg42-package structure representing required packages.") @@ -49,8 +61,9 @@ (setq result nil))) result)) + (defun install--package (pkg) - "Intall a package via its propreate source." + "Install a package via its propreate source." (let* ((source (fpkg-dependency-source pkg)) (func-name (concat "install-package-via-" (symbol-name source))) (install-func @@ -58,7 +71,8 @@ (intern func-name)))) (funcall install-func pkg))) -(defun fpkg-initialize () + +(defun fpkg-initialize-old () "Initilize the package.el and related stuff to be used in FG42" (let ((packages (hash-table-values required-packages))) @@ -86,11 +100,39 @@ (install--package pkg)))))) +(defun fpkg-initialize () + "Initilize the straight.e package manager and setup necessary hooks." + (let ((bootstrap-file (concat fpkg-packages-path + "straight/repos/straight.el/bootstrap.el")) + (bootstrap-version 5)) -(defun depends-on (pkgname &rest args) - "Global function to specify a single dependency" + (make-directory fpkg-packages-path t) + (setq straight-base-dir fpkg-packages-path) + (if (not (file-exists-p bootstrap-file)) + (with-current-buffer + (url-retrieve-synchronously + "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el" + 'silent 'inhibit-cookies) + (goto-char (point-max)) + (eval-print-last-sexp)) + (load bootstrap-file nil 'nomessage)))) + + +(defun fpkg-initialize-once () + "Initilize FPKG only once." + (when (not fpkg-initilized-p) + (fpkg-initialize))) + + +(defun depends-on-old (pkgname &rest args) + "Install the given PKGNAME if it isn't installed. Ignore ARGS for now." (let ((pkg (apply 'make-fpkg-dependency :name pkgname args))) (puthash pkgname pkg required-packages))) -(message "FPKG has been initialized.") +(defun depends-on (pkgname) + "Install the given PKGNAME if it isn't installed." + (straight-use-package pkgname)) + + (provide 'fpkg) +;;; fpkg.el ends here From 24f839bb7863a566cacefff7147fd5b51f6036ab Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Sun, 15 Mar 2020 22:38:51 +0000 Subject: [PATCH 22/68] Old functions have been removed from fpkg.el Signed-off-by: Sameer Rahmani --- lib/fpkg.el | 53 ----------------------------------------------------- 1 file changed, 53 deletions(-) diff --git a/lib/fpkg.el b/lib/fpkg.el index 0676f8b..ea1cfb6 100644 --- a/lib/fpkg.el +++ b/lib/fpkg.el @@ -52,54 +52,6 @@ "A hash of `fg42-package structure representing required packages.") ;; Functions ---------------------------------- -(defun all-dependencies-installed? () - "Return t if all the dependencies installed." - (let ((result t)) - (dolist (pkg (hash-table-keys required-packages)) - (when (not (package-installed-p pkg)) - (message "'%s' package is not installed" pkg) - (setq result nil))) - result)) - - -(defun install--package (pkg) - "Install a package via its propreate source." - (let* ((source (fpkg-dependency-source pkg)) - (func-name (concat "install-package-via-" (symbol-name source))) - (install-func - (symbol-function - (intern func-name)))) - (funcall install-func pkg))) - - -(defun fpkg-initialize-old () - "Initilize the package.el and related stuff to be used in FG42" - (let ((packages (hash-table-values required-packages))) - - (require 'package) - - (add-to-list 'package-archives - '("melpa" . "http://melpa.org/packages/") t) - (when (< emacs-major-version 24) - ;; For important compatibility libraries like cl-lib - (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))) - - ;; Initialize package.el - (package-initialize) - - (setq url-http-attempt-keepalives nil) - - (unless (all-dependencies-installed?) - ;; check for new packages (package versions) - (message "%s" "Refreshing package database...") - (package-refresh-contents) - - ;; install the missing packages - (dolist (pkg packages) - (when (not (package-installed-p (fpkg-dependency-name pkg))) - (install--package pkg)))))) - - (defun fpkg-initialize () "Initilize the straight.e package manager and setup necessary hooks." (let ((bootstrap-file (concat fpkg-packages-path @@ -124,11 +76,6 @@ (fpkg-initialize))) -(defun depends-on-old (pkgname &rest args) - "Install the given PKGNAME if it isn't installed. Ignore ARGS for now." - (let ((pkg (apply 'make-fpkg-dependency :name pkgname args))) - (puthash pkgname pkg required-packages))) - (defun depends-on (pkgname) "Install the given PKGNAME if it isn't installed." (straight-use-package pkgname)) From dd5209d56565c2ffa8c76e8b14db005b3d4a86a8 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 03:44:39 +0330 Subject: [PATCH 23/68] add gitlabCI file --- .gitlab-ci.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..793c996 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,12 @@ +stages: + - build + +build: + image: ubuntu + stage: build + before_script: + apt install emacs + make install + touch empty.el + script: + fg42 --script empty.el From ed6df5d24d62c869a45bc3096ea43a08b923a95d Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 03:45:47 +0330 Subject: [PATCH 24/68] fix --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 793c996..c8a7e1f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,8 +5,8 @@ build: image: ubuntu stage: build before_script: - apt install emacs - make install - touch empty.el + - apt install emacs + - make install + - touch empty.el script: - fg42 --script empty.el + - fg42 --script empty.el From 14977ad68fc823052045f7eeb74f0a2e88f6a0c6 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 03:46:58 +0330 Subject: [PATCH 25/68] add apt update --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c8a7e1f..91dfeed 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ build: image: ubuntu stage: build before_script: - - apt install emacs + - sudo apt update && sudo apt install emacs - make install - touch empty.el script: From 10db5f80afbc74f87af09a114e604d88ea85e5a8 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 03:48:04 +0330 Subject: [PATCH 26/68] another fix --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 91dfeed..0efdeb6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ build: image: ubuntu stage: build before_script: - - sudo apt update && sudo apt install emacs + - apt update && apt install emacs - make install - touch empty.el script: From 7a785c55dccb7e0dfdc4a574ca09190c987f405f Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 03:49:44 +0330 Subject: [PATCH 27/68] another fix --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0efdeb6..3a37808 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ build: image: ubuntu stage: build before_script: - - apt update && apt install emacs + - apt update && apt install -y emacs - make install - touch empty.el script: From e80f00bcbf462ad062921e56dbb9b621bbb0a15f Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 03:57:28 +0330 Subject: [PATCH 28/68] add make to installation --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3a37808..3442007 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ build: image: ubuntu stage: build before_script: - - apt update && apt install -y emacs + - apt update && apt install -y make emacs - make install - touch empty.el script: From d86d470039fc7f9319e5663ce65d0e4007c37af2 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 04:00:10 +0330 Subject: [PATCH 29/68] add wget --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3442007..218c1a6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ build: image: ubuntu stage: build before_script: - - apt update && apt install -y make emacs + - apt update && apt install -y make wget emacs - make install - touch empty.el script: From d903426e210dcd7e6f57c1a8a1556eb1e13f6602 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 04:03:02 +0330 Subject: [PATCH 30/68] add sudo as well --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 218c1a6..546cdb0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ build: image: ubuntu stage: build before_script: - - apt update && apt install -y make wget emacs + - apt update && apt install -y make wget sudo emacs - make install - touch empty.el script: From 34b17b1f412a6f59af9dac5484681a33d269cfcc Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 04:05:58 +0330 Subject: [PATCH 31/68] add git --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 546cdb0..0cb6798 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ build: image: ubuntu stage: build before_script: - - apt update && apt install -y make wget sudo emacs + - apt update && apt install -y make wget sudo git emacs - make install - touch empty.el script: From 414cca7f871841749a8147077025d054322ccb6d Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 04:18:58 +0330 Subject: [PATCH 32/68] some changes --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0cb6798..96097f0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,7 +6,7 @@ build: stage: build before_script: - apt update && apt install -y make wget sudo git emacs - - make install - - touch empty.el + - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ + - cd .fg42 && make install && touch empty.el script: - fg42 --script empty.el From 0a4ecd38c5dbf6295197c46c99cb4a460ee37132 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 04:21:56 +0330 Subject: [PATCH 33/68] some changes --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 96097f0..8ce14ea 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,7 +6,6 @@ build: stage: build before_script: - apt update && apt install -y make wget sudo git emacs - - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ - - cd .fg42 && make install && touch empty.el + - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd .fg42 && make install && touch empty.el script: - fg42 --script empty.el From af1d5ab1afffc2413cf1327022c857a7db97479b Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 04:26:23 +0330 Subject: [PATCH 34/68] another fix --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8ce14ea..3a646cd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,6 +6,6 @@ build: stage: build before_script: - apt update && apt install -y make wget sudo git emacs - - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd .fg42 && make install && touch empty.el + - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el script: - fg42 --script empty.el From aec7d4d38f778f178dd05eeaf802f2193967a982 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 06:18:07 +0330 Subject: [PATCH 35/68] change --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3a646cd..bb9ea67 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,4 +8,4 @@ build: - apt update && apt install -y make wget sudo git emacs - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el script: - - fg42 --script empty.el + - cd ~/.fg42/ && emacs --name FG42 --no-site-file --no-site-lisp --no-splash --title FG42 -l ./fg42-config.el --debug-init --script empty.el From d1a1b367aca610f634e16aefbab8a73bde0f3be0 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 06:20:05 +0330 Subject: [PATCH 36/68] change --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bb9ea67..6692048 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,4 +8,4 @@ build: - apt update && apt install -y make wget sudo git emacs - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el script: - - cd ~/.fg42/ && emacs --name FG42 --no-site-file --no-site-lisp --no-splash --title FG42 -l ./fg42-config.el --debug-init --script empty.el + - ls -al && emacs --name FG42 --no-site-file --no-site-lisp --no-splash --title FG42 -l ./fg42-config.el --debug-init --script empty.el From e078f31c3df53cdb9fd67b21a162a6c51f2aea58 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 06:22:53 +0330 Subject: [PATCH 37/68] change --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6692048..20b0cc5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,4 +8,4 @@ build: - apt update && apt install -y make wget sudo git emacs - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el script: - - ls -al && emacs --name FG42 --no-site-file --no-site-lisp --no-splash --title FG42 -l ./fg42-config.el --debug-init --script empty.el + - ls -al && emacs --name FG42 --no-site-file --no-site-lisp --no-splash --title FG42 -l ~/.fg42/fg42-config.el --debug-init --script empty.el From 0328d71fa8d1c94f4f89667ddd8ed6c701f26529 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 06:26:04 +0330 Subject: [PATCH 38/68] back --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 20b0cc5..3a646cd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,4 +8,4 @@ build: - apt update && apt install -y make wget sudo git emacs - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el script: - - ls -al && emacs --name FG42 --no-site-file --no-site-lisp --no-splash --title FG42 -l ~/.fg42/fg42-config.el --debug-init --script empty.el + - fg42 --script empty.el From 0f341bcf9b98e4fdb25facb47be8c0d9b67923cf Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Mon, 16 Mar 2020 06:28:24 +0330 Subject: [PATCH 39/68] change --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3a646cd..2bde44b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,4 +8,4 @@ build: - apt update && apt install -y make wget sudo git emacs - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el script: - - fg42 --script empty.el + - fg42 -nw --script empty.el From 9c28be4b82a83e5c706b299c106c573aa2c35c05 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 17:51:59 +0000 Subject: [PATCH 40/68] Fixed the void value for fg42-font-size problem --- lib/extensions/editor/init.el | 8 ++++++++ lib/fg42/utils.el | 4 ---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/extensions/editor/init.el b/lib/extensions/editor/init.el index 045f3e8..dd2c9d3 100644 --- a/lib/extensions/editor/init.el +++ b/lib/extensions/editor/init.el @@ -10,6 +10,14 @@ (defvar fg42-before-open-todo-hook nil) (defvar fg42-after-open-todo-hook nil) +;; Vars ----------------------------------------------------------------------- +(defvar fg42-font "Fira Mono" + "The default font to be used with FG42.") + +(defvar fg42-font-size 12 + "The default font to be used with FG42.") + + ;; Functions ------------------------------------------------- (defun fg42-reload () "Reload the entire FG42." diff --git a/lib/fg42/utils.el b/lib/fg42/utils.el index c28c165..175d9e1 100644 --- a/lib/fg42/utils.el +++ b/lib/fg42/utils.el @@ -7,10 +7,6 @@ (require 'fg42/vars) (require 'fg42/utils/json) -;; Vars ----------------------------------------------------------------------- -(defvar fg42-font "Fira Mono" - "The default font to be used with FG42.") - ;;; Buffer helpers ------------------------------------------------------------ (defun buffer-mode (buffer-or-string) "Return the major mode associated with a the given BUFFER-OR-STRING." From aeae8b5f06474d6422a962aad850f2be885071ed Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 18:32:42 +0000 Subject: [PATCH 41/68] install-ci target has been added to make file --- .gitlab-ci.yml | 6 +++--- Makefile | 23 ++++++++++++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2bde44b..9e91d5f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,10 +2,10 @@ stages: - build build: - image: ubuntu + image: debian:stable-slim stage: build before_script: - - apt update && apt install -y make wget sudo git emacs - - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el + - apt update && apt install -y make wget git emacs + - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install-ci && touch empty.el script: - fg42 -nw --script empty.el diff --git a/Makefile b/Makefile index 667102f..e538a7d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,22 @@ +.PHONY: update update: @git remote set-url origin git://gitlab.com/FG42/FG42.git @git pull origin master + +.PHONY: install-cli +install-ci: + @echo "Downloading and installing fonts..." + @mkdir -p ~/.fonts + @wget "https://github.com/FG42/fonts/archive/0.1.0.tar.gz" -O ~/.fonts/fg42.tar.gz + @tar zxf ~/.fonts/fg42.tar.gz -C ~/.fonts --strip 1 + @cp ./config/fg42.user.el ${HOME}/.fg42.el + @echo "Creating the link..." + @echo "#! /bin/sh" > ./fg42 + @echo "export FG42_HOME=$(shell pwd)" >> ./fg42 + @echo 'emacs --name FG42 --no-site-file --no-site-lisp --no-splash --title FG42 -l $$FG42_HOME/fg42-config.el "$$@"' >> ./fg42 + @chmod +x ./fg42 + +.PHONY: install install: @echo "Downloading and installing fonts..." @mkdir -p ~/.fonts @@ -21,11 +37,8 @@ install: @echo "------------------------------------------------------------------------------------" @echo "Make sure to install external dependencies of FG42. For more info checkout README.md" @echo "Enjoy the bless of GNU/Emacs and FG42 :)" + +.PHONY: install-fonts install-fonts: @mkdir -p ~/.fonts/ @cp -rv ./share/fonts/vazir/* ~/.fonts/ -build-image: - docker build . -t fg42:1 --build-arg emacs_version=26.3 - -clean-image: - docker rmi fg42:1 From e0d2de1592cbd3265d58ffc9ead594e6292282f5 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 18:44:45 +0000 Subject: [PATCH 42/68] Path to fg42 executable has been fixed in gitlab-ci --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9e91d5f..8af11bd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,4 +8,4 @@ build: - apt update && apt install -y make wget git emacs - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install-ci && touch empty.el script: - - fg42 -nw --script empty.el + - ~/.fg42/.fg42 -nw --script empty.el From 4e2a210914b12f86a45237039a238b618afead87 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 18:55:13 +0000 Subject: [PATCH 43/68] Path to fg42 executable has been fixed in gitlab-ci --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8af11bd..84f25f7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,4 +8,4 @@ build: - apt update && apt install -y make wget git emacs - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install-ci && touch empty.el script: - - ~/.fg42/.fg42 -nw --script empty.el + - ~/.fg42/fg42 -nw --script empty.el From 7075846b7f2b4e4b9cb2debc758f19e0dcc5ba64 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 19:07:38 +0000 Subject: [PATCH 44/68] Changed the install target back ot install instead of install-ci --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 84f25f7..8173a41 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,6 +6,6 @@ build: stage: build before_script: - apt update && apt install -y make wget git emacs - - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install-ci && touch empty.el + - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el script: - - ~/.fg42/fg42 -nw --script empty.el + - fg42 -nw --script empty.el && echo "Done" From 59f6e3c56fe62b2efbf1efe62320443a24e221eb Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 19:11:48 +0000 Subject: [PATCH 45/68] Added back 'sudo' to the dependency list --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8173a41..3bcf772 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ build: image: debian:stable-slim stage: build before_script: - - apt update && apt install -y make wget git emacs + - apt update && apt install -y make wget git emacs suod - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el script: - fg42 -nw --script empty.el && echo "Done" From ea2ede68a39f84220e3785894ec225a1672f0385 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 19:12:59 +0000 Subject: [PATCH 46/68] Fixed a typo in dependencies list --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3bcf772..f6a4655 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ build: image: debian:stable-slim stage: build before_script: - - apt update && apt install -y make wget git emacs suod + - apt update && apt install -y make wget git emacs sudo - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el script: - fg42 -nw --script empty.el && echo "Done" From 0dbebb14bfd72051a85ac506ad8e8301eb3d4008 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 19:38:52 +0000 Subject: [PATCH 47/68] Added -l flag to the fg42 command on gitlab ci script --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f6a4655..09f01d8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,6 +6,6 @@ build: stage: build before_script: - apt update && apt install -y make wget git emacs sudo - - git clone https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el + - git clone -b fpkg-v2 https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el script: - - fg42 -nw --script empty.el && echo "Done" + - fg42 -nw -l ~/.fg42/fg42-config.el --script empty.el From bafd15460b49d64fd8df88ca9d2cbcbf8cb86c88 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 20:58:56 +0000 Subject: [PATCH 48/68] build.el has been added --- .gitlab-ci.yml | 4 ++-- build.el | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 build.el diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 09f01d8..9d3fceb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,6 +6,6 @@ build: stage: build before_script: - apt update && apt install -y make wget git emacs sudo - - git clone -b fpkg-v2 https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && touch empty.el + - git clone -b fpkg-v2 https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install script: - - fg42 -nw -l ~/.fg42/fg42-config.el --script empty.el + - fg42 -nw --script build.el diff --git a/build.el b/build.el new file mode 100644 index 0000000..b005646 --- /dev/null +++ b/build.el @@ -0,0 +1,21 @@ +(add-to-list 'load-path (concat (getenv "HOME") ".fg42/lib")) + +(defvar bootstrap-version nil + "Bootstrap version of straight. This var is used in straight's installer.") + +(defun fpkg-initialize () + "Initilize the straight.e package manager and setup necessary hooks." + (let ((bootstrap-file "~/.fg42/.fpkg/straight/repos/straight.el/bootstrap.el") + (bootstrap-version 5)) + + (setq straight-base-dir "~/.fg42/.fpkg/") + (if (not (file-exists-p bootstrap-file)) + (with-current-buffer + (url-retrieve-synchronously + "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el" + 'silent 'inhibit-cookies) + (goto-char (point-max)) + (eval-print-last-sexp)) + (load bootstrap-file nil 'nomessage)))) + +(fpkg-initialize) From e7f9456790c7c8704e9441ad332fda5de5ce62ca Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 21:34:29 +0000 Subject: [PATCH 49/68] build-package task has been added to the CI pipeline --- .gitlab-ci.yml | 15 ++++++++++++++- build.el | 26 ++++++++++++++++++++++++++ lib/fpkg.el | 2 +- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9d3fceb..64278bf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,6 +6,19 @@ build: stage: build before_script: - apt update && apt install -y make wget git emacs sudo - - git clone -b fpkg-v2 https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install + - git clone -b fpkg-v2 https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && cd script: - fg42 -nw --script build.el + +build-package: + extends: build + script: + - fg42 -nw --script build.el + - tar zcf fg42.$CI_COMMIT_TAG.tar.gz ~/.fg42/ + artifacts: + when: on_success + paths: + - ~/fg42.$CI_COMMIT_TAG.tar.gz + only: + - tags + - master diff --git a/build.el b/build.el index b005646..8eb8c20 100644 --- a/build.el +++ b/build.el @@ -1,3 +1,26 @@ +;;; build --- build script for FG42 +;; +;; Copyright (C) 2010-2020 Sameer Rahmani +;; +;; Author: Sameer Rahmani +;; Keywords: lisp fg42 IDE package manager +;; Version: 1.0.0 +;; +;; 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 . +;; +;;; Commentary: +;;; Code: (add-to-list 'load-path (concat (getenv "HOME") ".fg42/lib")) (defvar bootstrap-version nil @@ -19,3 +42,6 @@ (load bootstrap-file nil 'nomessage)))) (fpkg-initialize) + +(provide 'build) +;;; build.el ends here diff --git a/lib/fpkg.el b/lib/fpkg.el index ea1cfb6..866e1d6 100644 --- a/lib/fpkg.el +++ b/lib/fpkg.el @@ -1,6 +1,6 @@ ;;; fpkg --- a simple package manager for FG42 -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2010-2012 Sameer Rahmani +;; Copyright (C) 2010-2020 Sameer Rahmani ;; ;; Author: Sameer Rahmani ;; Keywords: lisp fg42 IDE package manager From a06bc3ecb1c97de169da45865c8c053183124de4 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 21:39:03 +0000 Subject: [PATCH 50/68] Added explicit path change to build scripts of CI --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 64278bf..cdb7e39 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,15 +6,15 @@ build: stage: build before_script: - apt update && apt install -y make wget git emacs sudo - - git clone -b fpkg-v2 https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && cd + - git clone -b fpkg-v2 https://gitlab.com/FG42/FG42 ~/.fg42/ && cd ~/.fg42/ && make install && script: - - fg42 -nw --script build.el + - cd ~/.fg42/ && fg42 -nw --script build.el build-package: extends: build script: - - fg42 -nw --script build.el - - tar zcf fg42.$CI_COMMIT_TAG.tar.gz ~/.fg42/ + - cd ~/.fg42/ && fg42 -nw --script build.el + - cd && tar zcf fg42.$CI_COMMIT_TAG.tar.gz ~/.fg42/ artifacts: when: on_success paths: From ff1d87ee7fccad54f7f9023cbdc054752061c430 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 16 Mar 2020 21:57:57 +0000 Subject: [PATCH 51/68] master conditional has been removed from build-package job --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cdb7e39..a8fcc71 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,4 +21,3 @@ build-package: - ~/fg42.$CI_COMMIT_TAG.tar.gz only: - tags - - master From fcd4829e3c1470c0ec30c6911b9bec6e7f67f175 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Tue, 17 Mar 2020 11:55:13 +0330 Subject: [PATCH 52/68] new lua extension --- lib/extensions/lua.el | 17 +++++++++++++++++ lib/extensions/lua/init.el | 9 +++++++++ 2 files changed, 26 insertions(+) create mode 100644 lib/extensions/lua.el create mode 100644 lib/extensions/lua/init.el diff --git a/lib/extensions/lua.el b/lib/extensions/lua.el new file mode 100644 index 0000000..860d435 --- /dev/null +++ b/lib/extensions/lua.el @@ -0,0 +1,17 @@ +;;; LuaExtention --- Enable Lua support in FG42 +;;; Commentary: +;;; Code: +(require 'fpkg) +(require 'fg42/extension) +(require 'extensions/lua/init) + +;; dependencies +(depends-on 'lua-mode) + + +(extension lua + :version 0.0.1 + :on-initialize extensions/lua-initialize + :docs "lib/extensions/lua/readme.org") +(provide 'extensions/lua) +;;; lua.el ends here diff --git a/lib/extensions/lua/init.el b/lib/extensions/lua/init.el new file mode 100644 index 0000000..9d31bd4 --- /dev/null +++ b/lib/extensions/lua/init.el @@ -0,0 +1,9 @@ +;;; lua-init --- The entry point for lua extension +;;; Commentary: +;;; Code: +(defun extensions/lua-initialize () + "Initialize lua extension.") + + +(provide 'extensions/lua/init) +;;; init ends here. From 6a24ba3430a19f1796bc3507ce8be7a97ba714e6 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Tue, 17 Mar 2020 10:56:25 +0000 Subject: [PATCH 53/68] converted build job to a template job --- .gitlab-ci.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a8fcc71..a36add6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ stages: - build -build: +.build: image: debian:stable-slim stage: build before_script: @@ -10,11 +10,18 @@ build: script: - cd ~/.fg42/ && fg42 -nw --script build.el +build-branches: + extends: .build + only: + - branches + except: + - tags + build-package: - extends: build + extends: .build script: - cd ~/.fg42/ && fg42 -nw --script build.el - - cd && tar zcf fg42.$CI_COMMIT_TAG.tar.gz ~/.fg42/ + - cd && tar zcf ~/fg42.$CI_COMMIT_TAG.tar.gz ~/.fg42/ artifacts: when: on_success paths: From 84225a72b9c5307a1554921877b614e2dd113d49 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Tue, 17 Mar 2020 22:27:12 +0000 Subject: [PATCH 54/68] Changed the approach to packaging in the CI script --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a36add6..b9eb3f7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,10 +21,10 @@ build-package: extends: .build script: - cd ~/.fg42/ && fg42 -nw --script build.el - - cd && tar zcf ~/fg42.$CI_COMMIT_TAG.tar.gz ~/.fg42/ artifacts: when: on_success + name: fg42.$CI_COMMIT_TAG paths: - - ~/fg42.$CI_COMMIT_TAG.tar.gz + - ~/.fg42 only: - tags From d30e7219f9ac0ca9610cf2072abf3f970e70a1ef Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Tue, 17 Mar 2020 22:42:06 +0000 Subject: [PATCH 55/68] Changed the artifact path to absolute path --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b9eb3f7..dff38b3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,11 +20,11 @@ build-branches: build-package: extends: .build script: - - cd ~/.fg42/ && fg42 -nw --script build.el + - cd /root/.fg42/ && fg42 -nw --script build.el && cd / artifacts: when: on_success name: fg42.$CI_COMMIT_TAG paths: - - ~/.fg42 + - /root/.fg42/ only: - tags From 10e283b9d82c4820b99544410be097be94d56b7d Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Tue, 17 Mar 2020 22:56:23 +0000 Subject: [PATCH 56/68] Moved the .fg42 dir to the 'build' dir of gitlab ci for the runner to pick it up. --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dff38b3..e1e8a64 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,11 +20,12 @@ build-branches: build-package: extends: .build script: - - cd /root/.fg42/ && fg42 -nw --script build.el && cd / + - cd /root/.fg42/ && fg42 -nw --script build.el + - mv -v /root/.fg42/ /builds/$CI_PROJECT_PATH/ artifacts: when: on_success name: fg42.$CI_COMMIT_TAG paths: - - /root/.fg42/ + - .fg42/ only: - tags From 682f47d2224f237746bb34d843a9abb912dd7898 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Tue, 17 Mar 2020 23:12:49 +0000 Subject: [PATCH 57/68] Tarball version of artifact has been added --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e1e8a64..4e32ab6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,11 +21,11 @@ build-package: extends: .build script: - cd /root/.fg42/ && fg42 -nw --script build.el - - mv -v /root/.fg42/ /builds/$CI_PROJECT_PATH/ + - tar zcf ~/fg42.$CI_COMMIT_TAG.tar.gz ~/.fg42/ + - mv ~/fg42.$CI_COMMIT_TAG.tar.gz /builds/$CI_PROJECT_PATH/ artifacts: when: on_success - name: fg42.$CI_COMMIT_TAG paths: - - .fg42/ + - fg42.$CI_COMMIT_TAG.tar.gz only: - tags From 82dd3057fc3e804d7970320570a2c9ec83724882 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Wed, 18 Mar 2020 14:01:55 +0330 Subject: [PATCH 58/68] new rust extension --- lib/extensions/rust.el | 16 ++++++++++++++++ lib/extensions/rust/init.el | 9 +++++++++ 2 files changed, 25 insertions(+) create mode 100644 lib/extensions/rust.el create mode 100644 lib/extensions/rust/init.el diff --git a/lib/extensions/rust.el b/lib/extensions/rust.el new file mode 100644 index 0000000..dba504a --- /dev/null +++ b/lib/extensions/rust.el @@ -0,0 +1,16 @@ +;;; RustExtention --- Enable Rust support in FG42 +;;; Commentary: +;;; Code: +(require 'fpkg) +(require 'fg42/extension) +(require 'extensions/rust/init) + +;; dependencies +(depends-on 'rust-mode) + +(extension rust + :version 0.0.1 + :on-initialize extensions/rust-initialize + :docs "lib/extensions/rust/readme.org") +(provide 'extensions/rust) +;;; rust.el ends here diff --git a/lib/extensions/rust/init.el b/lib/extensions/rust/init.el new file mode 100644 index 0000000..427dc8a --- /dev/null +++ b/lib/extensions/rust/init.el @@ -0,0 +1,9 @@ +;;; rust-init --- The entry point for Rust extension +;;; Commentary: +;;; Code: + +(defun extensions/rust-initialize () + "Initialize Rust extension.") + +(provide 'extensions/rust/init) +;;; init ends here. From 228d5f58bf64910896a0ad2a5760b361ecfcf68b Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Wed, 18 Mar 2020 15:41:20 +0330 Subject: [PATCH 59/68] fix flycheck for rust, add lsp and cargo support --- lib/extensions/rust.el | 3 ++- lib/extensions/rust/init.el | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/extensions/rust.el b/lib/extensions/rust.el index dba504a..d9ead04 100644 --- a/lib/extensions/rust.el +++ b/lib/extensions/rust.el @@ -7,7 +7,8 @@ ;; dependencies (depends-on 'rust-mode) - +(depends-on 'cargo) +(depends-on 'flycheck-rust) (extension rust :version 0.0.1 :on-initialize extensions/rust-initialize diff --git a/lib/extensions/rust/init.el b/lib/extensions/rust/init.el index 427dc8a..7d6ee7a 100644 --- a/lib/extensions/rust/init.el +++ b/lib/extensions/rust/init.el @@ -3,7 +3,9 @@ ;;; Code: (defun extensions/rust-initialize () - "Initialize Rust extension.") - + "Initialize Rust extension." + (add-hook 'rust-mode-hook #'lsp) + (add-hook 'rust-mode-hook #'cargo-minor-mode) + (add-hook 'flycheck-mode-hook #'flycheck-rust-setup)) (provide 'extensions/rust/init) ;;; init ends here. From 7467c0f839d0442aed1d06975860b754e50d5a32 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Fri, 20 Mar 2020 02:37:44 +0330 Subject: [PATCH 60/68] some error handling in defkey macro --- lib/fg42/key-bindings.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/fg42/key-bindings.el b/lib/fg42/key-bindings.el index 02680be..f7f1224 100644 --- a/lib/fg42/key-bindings.el +++ b/lib/fg42/key-bindings.el @@ -23,7 +23,6 @@ ;;; Commentary: ;;; Code: -(require 'fg42/race) (defun -defkey-god (map key fn) "Set the given KEY on key map MAP to FN." @@ -56,10 +55,12 @@ Example usage : \\(defkey `'global-map`' 'goto-line :evil \\(:normal \"SPC s u\"\\) :god \"\"\\)" - (let ((god-key (plist-get keys :god)) (human-key (plist-get keys :human)) (evil-state-key (plist-get keys :evil))) + (when (and (is-evil?) (null evil-state-key)) (error "You should pass :evil keys when you are evil user")) + (when (and (is-god?) (null god-key)) (error "You should pass :god keys when you are a god user")) + (when (and (is-human?) (null human-key)) (error "You should pass :evil keys when you are a human user")) (cond ((is-god?) `(-defkey-god ,map ,god-key ,fn)) ((is-human?) `(-defkey-human ,map ,human-key ,fn)) From 79a24331c40b81d8145133172f4b4daa4f7e63ab Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Fri, 20 Mar 2020 02:38:00 +0330 Subject: [PATCH 61/68] load keybinding helpers on startup --- lib/fg42.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fg42.el b/lib/fg42.el index d534305..d03e23b 100644 --- a/lib/fg42.el +++ b/lib/fg42.el @@ -36,7 +36,7 @@ (require 'fg42/splash) (require 'fg42/race) (require 'fg42/utils) - +(require 'fg42/key-bindings) (defvar fg42-before-initialize-hook nil "This hook will be called before FG42 initilization process.") From a0b1bdba8157cc768c1e1884bdcc3ca593114f01 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Fri, 20 Mar 2020 02:38:20 +0330 Subject: [PATCH 62/68] use new defkey macro instead of general package --- lib/extensions/editor/init.el | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/lib/extensions/editor/init.el b/lib/extensions/editor/init.el index dd2c9d3..5cb836e 100644 --- a/lib/extensions/editor/init.el +++ b/lib/extensions/editor/init.el @@ -107,17 +107,10 @@ (global-hl-line-mode t)) ;; enhance evil mode with space leader keybindings - (ability space-keys + (ability space-keys () "evil mode with space leader keybindings" (when (is-evil?) - (general-define-key - :states '(normal visual insert emacs) - :prefix "SPC" - :non-normal-prefix "C-SPC" - "bl" 'switch-to-buffer - "ff" 'find-file - "sv" 'split-window-vertically - "sh" 'split-window-horizontally))) + (defkey global-map 'split-window-below :evil (:normal "SPC w s v")))) (ability flycheck () From ca4307e6cc1153441f01839062a5990041e65b06 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Fri, 20 Mar 2020 02:39:56 +0330 Subject: [PATCH 63/68] remove general package --- lib/extensions/editor.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/extensions/editor.el b/lib/extensions/editor.el index d8a7459..8db71a8 100644 --- a/lib/extensions/editor.el +++ b/lib/extensions/editor.el @@ -25,9 +25,6 @@ (depends-on 'eyebrowse) -;; general for simpler keybinding -(depends-on 'general) - ;; Themes (depends-on 'spacemacs-theme) (depends-on 'doom-themes) From a4b7fe999b41851c37688ee0eec1a150cd827c6b Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Fri, 20 Mar 2020 02:48:17 +0330 Subject: [PATCH 64/68] add which key to get help in evil mode --- lib/extensions/editor.el | 2 ++ lib/extensions/editor/init.el | 13 ++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/extensions/editor.el b/lib/extensions/editor.el index 8db71a8..f31c6fe 100644 --- a/lib/extensions/editor.el +++ b/lib/extensions/editor.el @@ -80,6 +80,8 @@ (with-ability tabbar (depends-on 'tabbar)) +(with-ability which-key + (depends-on 'which-key)) (if (eq system-type 'darwin) (depends-on 'exec-path-from-shell)) diff --git a/lib/extensions/editor/init.el b/lib/extensions/editor/init.el index 5cb836e..59895a5 100644 --- a/lib/extensions/editor/init.el +++ b/lib/extensions/editor/init.el @@ -106,12 +106,19 @@ "Highlights the current line." (global-hl-line-mode t)) + (ability which-key () + (when (is-evil?) + (which-key-mode t))) + ;; enhance evil mode with space leader keybindings - (ability space-keys () + (ability space-keys (which-key) "evil mode with space leader keybindings" (when (is-evil?) - (defkey global-map 'split-window-below :evil (:normal "SPC w s v")))) - + (defkey global-map 'split-window-below :evil (:normal "SPC w s v")) + (defkey global-map 'split-window-right :evil (:normal "SPC w s h")) + (defkey global-map 'other-window :evil (:normal "SPC w o")) + (defkey global-map 'delete-window :evil (:normal "SPC w d")) + (defkey global-map 'delete-other-windwo :evil (:normal "SPC w m")))) (ability flycheck () "Check syntax on the fly using flycheck." From 499c5bac71937903e5ffaa56910d0f21323421e9 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Fri, 20 Mar 2020 02:58:29 +0330 Subject: [PATCH 65/68] add evil magit for better evil compatibility --- lib/extensions/development.el | 3 ++- lib/extensions/development/init.el | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/extensions/development.el b/lib/extensions/development.el index 42f5281..14762de 100644 --- a/lib/extensions/development.el +++ b/lib/extensions/development.el @@ -34,7 +34,8 @@ (with-ability git (depends-on 'diff-hl) (depends-on 'magit) - (depends-on 'gh)) + (depends-on 'gh) + (depends-on 'evil-magit)) (with-ability github (depends-on 'magithub)) diff --git a/lib/extensions/development/init.el b/lib/extensions/development/init.el index 7a21d9a..f1dab33 100644 --- a/lib/extensions/development/init.el +++ b/lib/extensions/development/init.el @@ -180,7 +180,11 @@ (cheatsheet-add :group '--Development-- :key "C-x g" :description "Rise up MAGIT. Git interface for FG42") - (global-set-key (kbd "C-x g") 'magit-status)) + (global-set-key (kbd "C-x g") 'magit-status) + (when (is-evil?) + (add-hook 'magit-mode-hook (lambda () (require 'evil-magit))) + (defkey global-map 'magit-status :evil (:normal "SPC g s")))) + (ability github () "Github support" From 8edd51788bbcde7a131f9d485570d8842c52c4f9 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Fri, 20 Mar 2020 03:02:35 +0330 Subject: [PATCH 66/68] add more keybindings for spacekeys ability --- lib/extensions/editor/init.el | 42 ++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/lib/extensions/editor/init.el b/lib/extensions/editor/init.el index 59895a5..52f4fd7 100644 --- a/lib/extensions/editor/init.el +++ b/lib/extensions/editor/init.el @@ -70,6 +70,31 @@ (set-face-attribute 'default t :font fg42-font)) ;; ------------------------------------------------------ + (ability which-key () + (when (is-evil?) + (which-key-mode t))) + + ;; enhance evil mode with space leader keybindings + (ability space-keys (which-key) + "evil mode with space leader keybindings" + (when (is-evil?) + (defkey global-map 'find-file :evil (:normal "SPC f f")) + (defkey global-map 'kill-buffer :evil (:normal "SPC b k")) + (defkey global-map 'save-buferr :evil (:normal "SPC b s")) + (defkey global-map 'next-buffer :evil (:normal "SPC b n")) + (defkey global-map 'previous-buffer :evil (:normal "SPC b p")) + (defkey global-map 'switch-to-buffer :evil (:normal "SPC b l")) + (defkey global-map 'other-window :evil (:normal "SPC w o")) + (defkey global-map 'delete-window :evil (:normal "SPC w d")) + (defkey global-map 'delete-other-windows :evil (:normal "SPC w m")) + (defkey global-map 'split-window-vertically :evil (:normal "SPC w s v")) + (defkey global-map 'eval-last-sexp :evil (:normal "SPC e e")) + (defkey global-map 'eval-buffer :evil (:normal "SPC e b")) + (defkey global-map 'comment-line :evil (:normal "SPC l c")) + (defkey global-map 'describe-key :evil (:normal "SPC d k")) + (defkey global-map 'describe-function :evil (:normal "SPC d f")) + (defkey global-map 'describe-variable :evil (:normal "SPC d v")) + (cheatsheet-add :group '--HELP-- :key "C-?" :description "Show this cheatsheet") @@ -105,22 +130,7 @@ (ability highligh-current-line () "Highlights the current line." (global-hl-line-mode t)) - - (ability which-key () - (when (is-evil?) - (which-key-mode t))) - - ;; enhance evil mode with space leader keybindings - (ability space-keys (which-key) - "evil mode with space leader keybindings" - (when (is-evil?) - (defkey global-map 'split-window-below :evil (:normal "SPC w s v")) - (defkey global-map 'split-window-right :evil (:normal "SPC w s h")) - (defkey global-map 'other-window :evil (:normal "SPC w o")) - (defkey global-map 'delete-window :evil (:normal "SPC w d")) - (defkey global-map 'delete-other-windwo :evil (:normal "SPC w m")))) - - (ability flycheck () + (ability flycheck () "Check syntax on the fly using flycheck." (require 'flycheck) From 069766f635cd12b5de0f18a3e742ca5f7df03943 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Fri, 20 Mar 2020 03:04:25 +0330 Subject: [PATCH 67/68] fix silly paren bug --- lib/extensions/editor/init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/extensions/editor/init.el b/lib/extensions/editor/init.el index 52f4fd7..fef0dfc 100644 --- a/lib/extensions/editor/init.el +++ b/lib/extensions/editor/init.el @@ -93,7 +93,7 @@ (defkey global-map 'comment-line :evil (:normal "SPC l c")) (defkey global-map 'describe-key :evil (:normal "SPC d k")) (defkey global-map 'describe-function :evil (:normal "SPC d f")) - (defkey global-map 'describe-variable :evil (:normal "SPC d v")) + (defkey global-map 'describe-variable :evil (:normal "SPC d v")))) (cheatsheet-add :group '--HELP-- :key "C-?" From 4f8e00f208a05ede3c7ac74d768de6726fcf8d32 Mon Sep 17 00:00:00 2001 From: amirrezaask Date: Fri, 20 Mar 2020 18:06:45 +0330 Subject: [PATCH 68/68] add new lines to fg42.el, wrap evil-magit for only evil users --- lib/extensions/development.el | 3 ++- lib/fg42.el | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/extensions/development.el b/lib/extensions/development.el index 14762de..53b4faf 100644 --- a/lib/extensions/development.el +++ b/lib/extensions/development.el @@ -35,7 +35,8 @@ (depends-on 'diff-hl) (depends-on 'magit) (depends-on 'gh) - (depends-on 'evil-magit)) + (when (is-evil?) + (depends-on 'evil-magit))) (with-ability github (depends-on 'magithub)) diff --git a/lib/fg42.el b/lib/fg42.el index d03e23b..a873e13 100644 --- a/lib/fg42.el +++ b/lib/fg42.el @@ -37,6 +37,8 @@ (require 'fg42/race) (require 'fg42/utils) (require 'fg42/key-bindings) + + (defvar fg42-before-initialize-hook nil "This hook will be called before FG42 initilization process.")