;;; program-basic --- Some basic configuration ;;; Commentary: ;; None ;;; Code: (setq-default c-basic-offset 4 tab-width 4 indent-tabs-mode t) (defun execute-python-program () "Run current python script." (interactive) (save-buffer) (defvar foo) (setq foo (concat "python " (buffer-name))) (shell-command foo)) (defun execute-c-program () "Complie current c file and run it." (interactive) (save-buffer) (defvar foo) (setq foo (concat "gcc " (include-source-file (buffer-name)) " -o " (buffer-name) ".out && ./" (buffer-name) ".out" )) (shell-command foo)) (defun include-source-file (file-path) "Get transfer all include header file from FILE-PATH to source file(string)." (let (content) (setq content (format "%s" (get-c-source-file (get-string-from-file file-path)))) (if (string= nil content) file-path (substring content 1 -1)))) (defun get-c-source-file (content) "Get the header list of a string CONTENT, for instant a .c file." (defun header-to-source (header) "Whole line of header" (replace-regexp-in-string "[.]h" ".c " (substring header 10 -1))) (let (value) (dolist (element (split-string content "\n" t) value) (if (string-prefix-p "#include \"" element) (setq value (cons (header-to-source element) value)))))) (defun read-lines (file-path) "Return a list of lines of a file at FILE-PATH." (with-temp-buffer (insert-file-contents file-path) (split-string (buffer-string) "\n" t))) (defun get-string-from-file (file-path) "Return FILE-PATH's file content in list." (with-temp-buffer (insert-file-contents file-path) (buffer-string))) (provide 'init-program-basic) ;;; init-program-basic ends here