(defvar sokestreng "" "String used by search-forward-with repeat and search-backward-with-repeat as default argument.") (global-set-key (quote [?\M-S]) 'swap-line) (global-set-key [f11] 'jj-load-dotemacs) (global-set-key [f1] 'rpg-free-ins) (global-set-key (quote [?\C-\.]) 'duplicate-line) (global-set-key (quote [?\M-d]) 'jjj-delete-line) (global-set-key [(shift f3)] 'sok-frem) (global-set-key [f3] 'repeat-sok-frem) (fset 'duplicate-line [1 11 25 return 25 1]) (defun sok-frem (s) "Save search string for repetition ." (interactive "sLook for: ") (setq sokestreng s) (search-forward s) ) (defun repeat-sok-frem () "Repeat search forward." (interactive) (search-forward sokestreng) ) (defun jj-load-dotemacs () "Load ~/.emacs." (interactive) (load-file "~/.emacs") ) (defun rpg-c-ins () "Insert C-spec" (interactive) (forward-line 1) (beginning-of-line) (insert " C*0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq....Comments++++++++++++\n") (insert " C \n") (forward-line -1) (end-of-line 1) ) (defun rpg-free-ins () "Insert free-spec" (interactive) (forward-line 1) (beginning-of-line) (insert " /Free\n") (insert "\t\t\t\n") (insert " /End-Free\n") (forward-line -1) (end-of-line 1) ) (defun swap-line () "Swap current line with previous" (interactive) (beginning-of-line) (kill-line 1) (forward-line -1) (beginning-of-line) (yank) ) (defun rexec-as400 (inn) "Execute command on AS." (interactive "sCommand to execute: ") (set-variable 'cmd inn) ;; (set-variable 'buff1 (generate-new-buffer "hovedmelding")) ;; (set-variable 'buff2 (generate-new-buffer "kompliste")) ;; (switch-to-buffer-other-frame buff) (shell-command (concat "rexec -l username -p password computer.domain " cmd " >& kompresultat &") ) (accept-process-output (get-process "Shell") ) (find-file-other-frame "kompresultat") (del-crtl-M) ) (defun kb-getas400 (inn) "Get source from AS." (interactive "sMember to download: ") (set-variable 'mbr inn) (shell-command (concat "/home/username/as400src/getfrmqrpgsrc " mbr) nil ) (find-file-other-frame (concat mbr ".mbr")) ) (defun kb-putas400 () "Put source to AS." (interactive) (set-variable 'mbr (buffer-name)) (shell-command (concat "/home/username/as400src/puttorpgsrc " mbr) nil ) ) (defun kb-putsql () "Put sqlsource to AS." (interactive) (set-variable 'mbr (buffer-name)) (shell-command (concat "/home/username/as400src/puttosqlsrc " mbr) nil ) ) (defun kb-put-cgi-bin-utv () "Put script to utv." (interactive) (set-variable 'mbr (buffer-name)) (shell-command (concat "sudo scp " mbr " root@computer.domain:/srv/www/cgi-bin/") nil ) ) (defun crtsqlrpgi () "Create bound sql rpg." (interactive) (set-variable 'mbr (car(split-string (buffer-name) "[.]"))) (rexec-as400 (concat"'" "CRTSQLRPGI obj(objlib/" mbr ") srcfile(srclib/qrpgsrc) srcmbr(*obj) objtype(*pgm) replace(*YES)" "'")) ) (defun crtsqlrpgm () "Create bound sql rpg." (interactive) (set-variable 'mbr (car(split-string (buffer-name) "[.]"))) (rexec-as400 (concat"'" "CRTSQLRPGI obj(objlib/" mbr ") srcfile(srclib/qrpgsrc) srcmbr(*obj) objtype(*module) replace(*YES)" "'")) ) (defun crtpgm () "Create PGM" (interactive) (set-variable 'mbr (car(split-string (buffer-name) "[.]"))) (rexec-as400 (concat"'" "CRTPGM PGM(objlib/" mbr ") module(*pgm) bnddir(bnd001) actgrp(*caller) replace(*YES)" "'")) ) (defun del-crtl-M () "Delete all ^M (dos line endings)." (interactive) (progn (save-excursion (goto-line 1) (replace-regexp " " "") ) ) ) (define-generic-mode 'rpg-mode () '("If" "EndIf" "Else" "Select" "When" "DoU" "DoW" "EndDo" "EndSl" "BegSr" "EndSr") '(("^ .\\*.*" . 'font-lock-comment-face)) '("\\.mbr\\'") (list (lambda () (setq comment-start " *"))) "Major mode for very simple RPG highlighting.") ;; ;; (defun jjj-insert-comment (s) "Insert S at begin of line to comment line out." (interactive) (progn (beginning-of-line) (insert s) (end-of-line 0) (jjj-insert-date) (end-of-line 1) (insert "Programmer name") (beginning-of-line 2) (insert s) (end-of-line 0)) ) (global-set-key [?\C-\,] '(lambda () (interactive) (jjj-insert-comment " * \n"))) (defun jjj-match-paren () "Move to the parenthesis matching the one under the cursor." (interactive) (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1) t) ((looking-at "\\s\)") (forward-char 1) (backward-list 1) t))) (defun jjj-insert-date () "Insert date at point." (interactive) (shell-command "date +'%Y-%m-%d' | tr '\n' ' ' " (quote (4)) nil) ) ;; (defun jjj-insert-date-time () "Insert date and time at point." (interactive) (shell-command "date +'%Y-%m-%d (%H:%M)' | tr -d '\n' " (quote (4)) nil) ) ;; (defun jjj-delete-line () "Delete current line." (interactive) (progn (beginning-of-line) (kill-line 1))) ;;(require 'menu-bar) ;; add entry to menu-bar: ;;(defvar menu-bar-kb-menu (make-sparse-keymap "kbmenu")) (define-key global-map [menu-bar kbmenu] (cons "KBmenu" (make-sparse-keymap "KBmenu"))) ;; First entry here is lowest in menu. ;; The numbers [item-NN] don't affect the order (define-key global-map [menu-bar kbmenu dotReload] '("Load dotEmacs" . jj-load-dotemacs)) (define-key global-map [menu-bar kbmenu crtpgm] '("Create PGM" . crtpgm)) (define-key global-map [menu-bar kbmenu csqlrpgm] '("Create SQLRPG module" . crtsqlrpgm)) (define-key global-map [menu-bar kbmenu csqlrpgi] '("Create bound SQLRPG" . crtsqlrpgi)) (define-key global-map [menu-bar kbmenu getas400] '("Get source from AS400" . kb-getas400)) (define-key global-map [menu-bar kbmenu swaplin] '("Swap lines" . swap-line)) (define-key global-map [menu-bar kbmenu delCM] '("Delete DOS ^M" . del-crtl-M)) (define-key global-map [menu-bar kbmenu duplin] '("Duplicate line" . duplicate-line)) (define-key global-map [menu-bar kbmenu inscomm] '("Insert comment" . (lambda () (interactive) (jjj-insert-comment " * \n")))) (define-key global-map [menu-bar kbmenu insC] '("Insert C spec" . rpg-c-ins)) (define-key global-map [menu-bar kbmenu insFree] '("Insert free spec" . rpg-free-ins)) (define-key global-map [menu-bar kbmenu rSok] '("Repeat search" . repeat-sok-frem)) (define-key global-map [menu-bar kbmenu Sok] '("Start search" . sok-frem)) (define-key global-map [menu-bar kbmenu putsqlsrc] '("Put source to QSQLSRC" . kb-putsql)) (define-key global-map [menu-bar kbmenu putas400] '("Put source to QRPGSRC" . kb-putas400))