def run_build_commands_with(msg, cmds): """Run general build commands""" window, view, file_shown_in_view = get_haskell_command_window_view_file_project() if not file_shown_in_view: return syntax_file_for_view = view.settings().get('syntax').lower() if 'haskell' not in syntax_file_for_view: return cabal_project_dir, cabal_project_name = get_cabal_project_dir_and_name_of_view(view) if not cabal_project_dir: return run_chain_build_thread(view, cabal_project_dir, msg(cabal_project_name), cmds)
def run_ghcmods(cmds, msg, alter_messages_cb=None): """ Run several ghcmod commands, concats result messages with callback and show output. alter_messages_cb accepts dictionary (cmd => list of output messages) """ window, view, file_shown_in_view = get_haskell_command_window_view_file_project() if not file_shown_in_view: return file_dir, file_name = os.path.split(file_shown_in_view) ghc_mod_args = [] for cmd in cmds: ghc_mod_args.append((cmd, cmd + [file_shown_in_view])) def show_current_file_first_and_alter(msgs): if alter_messages_cb: alter_messages_cb(msgs) def compare(l, r): # sort by file equality to file_name res = cmp(l[1].filename != file_shown_in_view, r[1].filename != file_shown_in_view) if res == 0: # then by file res = cmp(l[1].filename, r[1].filename) if res == 0: # then by line res = cmp(l[1].line, r[1].line) if res == 0: # then by column res = cmp(l[1].column, r[1].column) return res def sort_key(a): return ( a[1].filename != file_shown_in_view, a[1].filename, a[1].line, a[1].column ) msgs.sort(key=sort_key) run_ghcmods_thread(view, file_shown_in_view, 'Ghc-Mod: ' + msg + ' ' + file_name, ghc_mod_args, show_current_file_first_and_alter)
def run_ghcmods(cmds, msg, alter_messages_cb=None): """ Run several ghcmod commands, concats result messages with callback and show output. alter_messages_cb accepts dictionary (cmd => list of output messages) """ window, view, file_shown_in_view = get_haskell_command_window_view_file_project() if not file_shown_in_view: return file_dir, file_name = os.path.split(file_shown_in_view) ghc_mod_args = [] for cmd in cmds: ghc_mod_args.append((cmd, cmd + [file_shown_in_view])) def show_current_file_first_and_alter(msgs): if alter_messages_cb: alter_messages_cb(msgs) def compare(l, r): # sort by file equality to file_name res = cmp(l[1].filename != file_shown_in_view, r[1].filename != file_shown_in_view) if res == 0: # then by file res = cmp(l[1].filename, r[1].filename) if res == 0: # then by line res = cmp(l[1].line, r[1].line) if res == 0: # then by column res = cmp(l[1].column, r[1].column) return res def sort_key(a): return ( a[1].filename != file_shown_in_view, a[1].filename, a[1].line, a[1].column ) msgs.sort(key=sort_key) run_ghcmods_thread(view, file_shown_in_view, 'Ghc-Mod: ' + msg + ' ' + file_name, ghc_mod_args, show_current_file_first_and_alter)